@L}5 _$% l0$)$$Hȱ$ UhL" `e$$%`$%`  R@W!( L(1   Y I`  d  Ld M * @  $ % CC$$)%1 Udߥ$9%: !0 S$% DD˙`  }J)Lr d M * @  $ % CC$$)%1 Udߥ$9%: !0 S$%} DD˙`  }J)Lr J  ((  p L ()   J}L= ( L 0q A    IB JC;? D W } LL  ` W )LA!  ߰")-݆ p" } $G@LL 08`Q")<2Q0 -G$Ș݆ UL# ; p8(()(0ʥ)NQ` }$GȘ݆LU )L ݆ L GȘ ݆LL )W>Z   HH)H }p h  hyhy D L> L JJ    ! LA*` BF }7'8  M HN H` 8 Z  \LdJJ!"! GFE@F (!L }EE !E^ ^ E E7EȩEdE/EȩE  D } .L }  ;F d  ;?F7F? ( .   Z D LL d } . D  L    p  E` , d)  D L) 0BM݊L݉} ML  N݆ L NLML [ TEqEHȱEqEh 0Gȹ G} HLL GɛL  LFREE SECTORS G) *Gȩ GȽG GȌ*jj >G} C8jJ3j2CD( C202C ԠBX` N 1? l LlD:RAMDISK}.COMLu L1 L ;LHL  T`  `8  ɐ     `TU  } L ? .  t`GBJ ~DEHI B V0dV!}QDEHI VF9 ,0 ,0 s0hhL  L` H hDHEh"}DEL8HI4 0 HI,0 0  9 .G VLO#},0 L4*IJ`llD1:AUTORUN.SYSNEED MEM.SAV TO LOAD THIS FILE.D8:MEM.SAV J y08 B|DEHI$} V0 0`B;DEL`?<0LV`@ʆ v s? F0Ξ05: [ BDEHI%} VY8 B V  @  /DE `E:D8:DUP.SYSERROR-SAVING USER MEMORY ON DISKTYPE Y TO &}STILL RUN DOS B;DE J  (` 9 V⪍ ઍ  -'}LLu ÝDEHILV 9 .l 9 .l  `` s$B BH(}I|DE V BLV nB,DE JLV B V BLVDEIʩ BꭝLu } 3E:}DISK OPERATING SYSTEM II VERSION COPYRIGHT 1984 ATARI CORP.A. DISK DIRECTORY I. FORMAT DISKB. RUN CARTRIDG*}E J. DUPLICATE DISKC. COPY FILE K. BINARY SAVED. DELETE FILE(S) L. BINARY LOADE. RENAME FILE M. RUN AT ADDRES+}SF. LOCK FILE N. CREATE MEM.SAVG. UNLOCK FILE O. DUPLICATE FILEH. WRITE DOS FILES P. FORMAT SINGLEL !N',}#"&))9(&*)/h)''-&؆莟R'S  vL/ˢ L }Insert DOS 2.0s, type Y Λx -}DEfHI 1莏#q! @ y0ɛ8A0,' ȅ 1 1ild! 1L!NO SUCH ITEMSELECT.} ITEM OR FOR MENU! 0 .z:*{}.|{ 1 0 0JB 18L%|DL/}%DIRECTORY--SEARCH SPEC,LIST FILE?[# 0 0 &|D3" 1L!NOT A DISK FILEN !B 1L!E# 1 !BD0}ED:}:1BJ|DE 1DEBHI 1 h0ߢ 0.1}  0?詛 1 y0YЛ 1 ;#L" ;#L! BL1TYPE "Y" TO DELETE...DELETE FILE SPEC2}COPY--FROM, TO?OPTION NOT ALLOWED697 FREE SECTORS COPYING---D8:COPY32.COMl# 0|D .L/%#3}##JB|DE 1BHID#E 1#0: B 1L!#͑### B 1#c$0SY4}S1}:## # # .#Ƚ# # 𩛙## 1,#PD#ELJ- <.BJD#E 5}1 1HH 0hh|DL%1}:̳# L% #D#EL% 1 0 . .0O% 1L!WILD CARDS NOT A6}LLOWED IN DESTINATION 0 <.|K}N 2 FORMAT. t* 5) 1L!`) 0NΞ 0 L1) 1 L!BAD LOAD FILELOAD FROM WHAT FILE?) 0 ?}0#B 1L!WHAT FILE TO LOCK?) 0 0$B 1L!WHAT FILE TO UNLOCK?DUP DISK-SOURCE,DEST DRIVES?TYPE "Y" IF OK TO US@}E PROGRAM AREACAUTION: A "Y" INVALIDATES MEM.SAV.FE! +L1   `*  70 2 2A} 0.* 1 y0 0)INSERT BOTH DISKS, TYPE RETURN^, 1 y038逍 N, 1L! ,B}C, t*  Lx+, 0 ^, 1 y0 , ,0,0 ,L+ ,I0 ,Vǭ0C}Ξ, 0 }, 1 y0C,ШC, 0K'!" H H 'h h Lx+!EF 5L1L!D,I,HhD}` NOT ENOUGH ROOMINSERT SOURCE DISK,TYPE RETURNINSERT DESTINATION DISK,TYPE RETURNE}`  `8 rL1`-* 1P* 1 y0Y`hhL!NAME OF FILE TO MOVE?- 0 0|DL% <.F},^ 1 70 0 .@L# .BJ 1  DEHIB V L1 ,} 1 70,L.  G}JB|,#P#DE 1 HI BDEHHII 1 B 1 ,^ 1 70,0La- B V,#PH},^ 1 70 0L#L!-* 1P* 1 y0Yj383}mm ݭI}}`8}``|* ? ɛ,`|:-)| / 1L!`DESTINATION CANT BE DOJ}S.SYS0 0H{ 24Δ 28/L!/) 2 Π 2 0 ξK}hAΞB,0 J 1 BDEHI,HÝDE 1HIHIDELSAVE-GIVE L}FILE,START,END(,INIT,RUN)O S0 1`BDEPHI V` S0H 1 L!M}0 0 1L~0`PLEASE TYPE 1 LETTER,0`hhL! 70 1L0L<1 ,;ɛ7,"ɛ:ݦ1ݥN}A"D|ݤD|ȩ:|ȩ|ɛ,,(/+.ީ1 1,ɛ`轤{NAMEO} TOO LONG B VL!` L1I H1EΝDL1|mDiE` V0`8d/8 i:222 1 LP}!ERROR- 164ɛ+,' 20*.. өr2 1``2TOO MANY DIGITSINVALID HEXAQ}DECIMAL PARAMETER800 0 8 00`,0'D800 H,ɛh`2L1NEED D1 THRU D8uR} ECIMAL PARAMETER800 0 8 00`,0'D800 H,ɛh`2L1NEED D1 THRU D8uLRS:H` B V`BDEhK)I JLVUVT`H 2` BHIhLV }}~ɛ  ;} 2T} ` RUN"D:MENU*.*"  \`bU}b U*.*"  \`b [ +'0@A0@[0@@29-@@ W}3( Π6(9(P++(#This Disk is full of ACTION! files,ZBB(marked with the Extender >:@4, X}.ACT>:@4,.d74(,ACTION! is required to access these files.7(n,,($So...get out your ACTION! cartridge x88 Y}(0and start to examine these great utilities.-@@!D:MENUet out your ACTION! cartridge x88 Z ;++++++++++++++++++++++++++++++++++++; EPSON/ATASCII PRINT FORMATTER ; Prints listed BASIC programs and; text using E[}pson bit mode graphics; to print non-ASCII characters;; With suitable changes to the Epson; specific variables immediatel\}y ; below, this program will work with; a number of other graphic printers.;; (c)1983 Leo G. Laporte; BOX 21248]}; San Jose, CA 95151; CIS PPN # 70215,1022; Placed in public domain 12/8/83.;++++++++++++++++++++++++++++^}++++++++ BYTE rts = [$60], ; OSA+ bug fix bank = $D500 ; Atari DOS bug fix MODULE DEFINE TR_}UE="1", FALSE="0", BOOL="BYTE", KEY = "0", FILE = "1", EPSON = "2", `} MAXLINE = "55" ; max # of lines per page ; Epson specific stuff CHAR ARRAY grmode = [4 27 75 8 0], ; ia}nitializes bit-mode graphics (ESC K 8 0) ; and tells printer that eight graphic ; data bytes will follob}w. italics_on = [2 27 '4], ; if you have an older Epson w/o italics italics_off = [2 27 '5] ; change c}these strings to another suitable font CHAR formfeed = [12] ;----------------------------------d}--; PROCEDURE DECLARATIONS;------------------------------------ PROC grprint(CHAR chr) ; does a graphic print of non-ASe}CII; characters BYTE ARRAY mask =[128 64 32 16 8 4 2 1], ; bit values D7 to D0 CHARSET = $E000, ; location f}of character set in ROM grdata(8) ; character data array BYTE offset, ; current character data byte bg}it, ; current bit in byte byt ; graphic data byte BOOL bit_set, ; is bit set? flag inv_flag ; inversh}e char? CARD charloc ; location of character data ; check for inverse character IF (chr & 128) THEN inv_flag i}= TRUE chr ==& 127 ; strip off inverse bit ELSE inv_flag = FALSE FI ; find character data in ROM IF cj}hr < 32 THEN charloc = (chr + 64) * 8 ELSEIF chr > 31 AND chr < 96 THEN charloc = (chr - 32) * 8 ELSE chak}rloc = chr * 8 FI ; rotate char data for Epson Zero(grdata, 8) ; clear character graphics data FOR offset = 0 l}TO 7 ; step through char data DO FOR bit = 0 TO 7 DO bit_set = CHARSET(charloc + offset) & maskm}(bit) IF inv_flag THEN IF bit_set = FALSE THEN grdata(bit) ==+ mask(offset) n} FI ELSEIF bit_set THEN grdata(bit) ==+ mask(offset) FI OD OD o}; dump character data PrintD(EPSON, grmode) FOR byt = 0 TO 7 DO IF grdata(byt) = 155 THEN ;prevent sendip}ng CR and thereby grdata(byt) = 151 ;cancelling graphics mode (only FI ; occurs duq}ring printing of inverse A) PutD(EPSON, grdata(byt)) OD RETURN ;----------------------------------- PROC feedr}(BYTE lines) ; feeds "lines" lines BYTE i FOR i = 1 TO lines DO PutDE(EPSON) OD RETURN ;-------s}----------------------------- PROC indent(BYTE col) ; tabs to col BYTE space = [32], i FOR i = 1 TO col DO PutD(t}EPSON, space) OD RETURN ;------------------------------------ BYTE FUNC PrintTEXT(CHAR ARRAY line) ; prints TEXT inpu}ut line CHAR eol = [155], chr BYTE cnt, col CARD linecnt ; number of lines output cnt = 1 ; current character v}in linecol = 0 ; current printer columnlinecnt = 0 ; lines printed chr = line(cnt) IF chr = eol THEN PutDE(EPw}SON) RETURN (1) FI WHILE chr <> eol DO IF ; printable character (chr > 31 AND chx}r < 123 AND chr <> 96) THEN PutD(EPSON, chr) col ==+ 1 ELSE grprint(chr) col ==+ 2 FIy} IF (col > 80) THEN PutDE(EPSON) linecnt ==+ 1 col = 0 FI cnt ==+ 1 chr = line(cnt)z} ; get next char OD PutDE(EPSON)linecnt ==+ 1 RETURN (linecnt) ;------------------------------------ BYTE FUNC Pri{}ntBASIC(CHAR ARRAY line) ; prints BASIC input line CHAR space = [32], invsp = [160], colon = [58],|} semic = [59], eol = [155], quote = [34], comma = [44], chr BYTE cnt, col, tab BOOL inqu}}otes CARD linecnt ; number of lines output cnt = 1 ; current character in linecol = 0 ; current printer columnli~}necnt = 0 ; lines printedinquotes = FALSE chr = line(cnt) IF chr = eol THEN RETURN (0) FI ; drop leading spaces...} WHILE chr = space DO cnt ==+ 1 chr = line(cnt) OD ; print line number... WHILE (chr >= '0 A}ND chr <= '9) DO PutD(EPSON, chr) col ==+ 1 cnt ==+ 1 chr = line(cnt) OD ; outp}ut a space... IF chr = space THEN PutD(EPSON, chr) cnt ==+ 1 chr = line(cnt) ELSE PutD(EPSON, space) FI } col ==+ 1 ; set tab... tab = col ; now print rest of line... WHILE chr <> eol DO } IF chr = quote THEN IF inquotes THEN inquotes = FALSE ELSE inquotes = TRUE FI FI} IF ; printable character (chr > 31 AND chr < 123 AND chr <> 96) THEN PutD(EPSON, chr) col ==+ 1 } ELSE grprint(chr) col ==+ 2 FI ; should we break line?... IF } (col > 65 AND ; close to R margin (chr = space OR ; break line chr = invsp OR ; at a logical c}hr = comma OR ; spot if chr = semic)) ; possible OR (chr = colon AND inquotes = }FALSE) ; separate BASIC commands OR (col > 80) ; unconditional line break ; yes... THEN PutDE(EP}SON) linecnt ==+ 1 indent(tab) col = tab ; no... FI cnt ==+ 1 chr = line(cn}t) ; get next char OD feed(2) ; end of input linelinecnt ==+ 2 RETURN (linecnt) ;-----------------------------------}-- PROC main() CHAR ARRAY source(20), title1(75), title2(75), choice(10), } line(255) BYTE consol = $D01F, ; start key invflg = $2B6, ; inverse off shflok = $2BE, ; shift} lock crsinh = $2F0, ; cursor off linecnt, linetot CARD page = [1] ; pages printed BOOL basic Bank} = 0 Put(125) ; clear screen Setcolor(2,12,2) PutE() PrintE(" EPSON/ATASCII PRETTY PRINTER") PrintE(" (c})1983 Leo G. Laporte") PutE() PrintE(" File must be LISTed BASIC or TEXT") PutE() Print("Enter source file > ") }invflg = 0 ; inverse off shflok = 64 ; caps lock InputS(source) PutE() PrintE("Enter header line #1 (max 75 char}s)") Print(">") InputMD(KEY, title1, 75) PutE() PrintE("Enter header line #2") Print(">") InputMD(KEY, title2, }75) PutE() Print("Is this a (B)ASIC or (T)ext file? ") invflg = 0 ; inverse off shflok = 64 ; caps lock Inpu}tMD(KEY, choice, 10) IF choice(1) = 'T THEN basic = FALSE ELSE basic = TRUE FI Position(2,22) crsinh =} 1 Print(" PRESS -START- TO BEGIN PRINTING") Position(2, 17) consol = 8 WHILE consol <> 6 ; wait for start D}O consol = 0 OD Close(FILE) Close(EPSON) Open(FILE, source, 4) Open(EPSON, "P:", 8) } PutDE(EPSON) PrintD(EPSON, italics_on) PrintDE(EPSON, title1) PrintDE(EPSON, title2) PrintD(EPS}ON,"Page ") PrintCDE(EPSON, page) PrintD(EPSON, italics_off) feed(2) linetot = 6 InputMD(FILE, lin}e, 255) WHILE EOF(FILE) = FALSE DO IF basic THEN linecnt = PrintBASIC(line) ELS}E linecnt = PrintTEXT(line) FI linetot ==+ linecnt IF linetot >= MAXLINE THEN ; n}ext page PutD(EPSON, formfeed) page ==+ 1 PrintD(EPSON, italics_on) PrintDE(E}PSON, title1) PrintDE(EPSON, title2) PrintD(EPSON,"Page ") PrintCDE(EPSON, page) PrintD(}EPSON, italics_off) feed(2) linetot = 6 FI Print(".") InputMD(FILE, lin}e, 255) OD PutDE(EPSON) ;flush buffer Close(FILE) Close(EPSON) crsinh = 0 Graphics(0)RETURN }  PutDE(EPSON) ;flush buffer Close(FILE) Close(EPSON) crsinh = 0 Graphics(0)RETURN ;; TODOS.ACT;; This little PROCedure allows you to exit any ACTION! program to the; ATARI DOS 2.0S DUP.SYS Menu.;; } WARNING: This PROC will work properly ONLY if you have WARM booted; your system with an ATARI 2.0S DOS.SYS file} on the diskette; in Drive #1. Furthermore, you must have a diskette with; with DUP.SYS on it in Dri}ve #1 before calling this PROC.;; You may return to the ACTION! environment by selecting option "B"; (Run Cartridge) fro}m the DUP.SYS Menu, but your ACTION! program will; have been wiped out by the exit to DUP.SYS!;;; Enjoy!;; Brad Paul}sen [CIS PPN 70035,1050]PROC ToDOS() [ $6C$0A$00 ]RETURN; Brad Paulp; Horizontal screen dump for EPSON printer; prepared on 30 Apr 84 by Jim Watson; Use par of Clinton Parker's PLOT; routin}e from ANALOG No.18, Apr84BYTE row=[40],y=[1],x=[1],j,k, Cvalue,LTR,INVFLGBYTE ARRAY SCRNstring(420)BYTE ARRAY d}iv8(320)BYTE POINTER posCARD ARRAY Line(192)CARD col=[0],i,l, ctr,start=[1],end=[59500], Screen=88,Offset,Cha}rsetBYTE FUNC ASCtoGR8(BYTE Ltr) IF Ltr>127 THEN Ltr==-128 FI IF Ltr<32 T}HEN RETURN(Ltr+64) ELSEIF Ltr<97 THEN RETURN(Ltr-32) FIRETURN (Ltr)PROC Gr8Txt()} y=125 x=20 Offset=Screen+y*40+x INVFLG=(') LTR=ASCtoGR8(INVFLG) Charset=57344+Ltr*8 FOR j=}0 TO 7 DO Cvalue=Peek(charset+j) IF INVFLG>127 THEN Cvalue== ! 255 FI } PokeC(Offset+j*40,Cvalue) ODRETURNPROC Frame() Plot (2,2) DrawTo (318,2) DrawTo (318,190) } Drawto (2,190) Drawto (2,2) Plot (4,4) Drawto (316,4) Drawto (316,188) Drawt}o (4,188) Drawto (4,4)RETURNPROC Isometric() PLOT (12+col,18+row) DRAWTO(39+col,3+row) DRAWTO(78+col,27}+row) DRAWTO(51+col,42+row) DRAWTO(12+col,18+row) PLOT (78+col,27+row) DRAWTO(78+col,57+row) DRAWTO(51+col,72+row) }DRAWTO(12+col,48+row) DRAWTO(12+col,18+row) PLOT (51+Col,42+Row) DRAWTO(51+col,72+row)RETURNPROC Cabinet() PLOT (}21+col,30+row) DRAWTO(39+col,18+row) DRAWTO(69+col,18+row) DRAWTO(51+col,30+row) DRAWTO(21+col,30+row) PLOT (69+col,}18+row) DRAWTO(69+col,48+row) DRAWTO(51+col,60+row) DRAWTO(21+col,60+row) DRAWTO(21+col,30+row) PLOT (51+Col,30+Row)} DRAWTO(51+col,60+row)RETURNPROC TwoPoint() PLOT (15+col,18+row) DRAWTO(37+col,13+row) DRAWTO(75+col,24+row) DRAWT}O(51+col,36+row) DRAWTO(15+col,18+row) PLOT (75+col,24+row) DRAWTO(75+col,50+row) DRAWTO(51+col,66+row) DRAWTO(15+co}l,36+row) DRAWTO(15+col,18+row) PLOT (51+Col,36+Row) DRAWTO(51+col,66+row)RETURNPROC Dumpinit() BYTE POINTER LineL}oc LineLoc=Screen FOR i=0 TO 191 DO Line(i)=LineLoc LineLoc==+40 OD FOR i=0 TO 319 DO d}iv8(i)=i/8 ODRETURNPROC Makestring(BYTE vertpos) BYTE vline BYTE ARRAY TEMP(6) FOR i=0 TO 319 DO k=(i&7}) vline==LSH 9 FOR j=0 TO 5 DO pos=line(j+vertpos)+div8(i) Temp(j)=pos^ Temp(j)==}LSH k Temp(j)==RSH 7 vline==% Temp(j) IF j<5 THEN vline==LSH 1 FI } OD SCRNstring(50+i)=vline ODRETURNPROC SCRNdmp() BYTE ctr,t,vertpos=[0] FOR i=0 TO 420 DO SC}RNstring(i)=' OD Dumpinit() Close(3) OPEN(3,"P:",8) PrintDE(3,"A") FOR ctr=0 TO 31 DO MakeSTRING(vert}pos) PrintD(3,"K") FOR i=1 to 420 DO PutD(3,SCRNstring(i)) OD PutDE(3) vertpos}==+6 OD PrintDE(3,"@") CLOSE(3)RETURNPROC Main() GRAPHICS(24) SetColor(2,8,0) SetColor(4,3,0) color=1 Fr}ame() col=10 TwoPoint() col=115 Isometric() col=220 Cabinet() Gr8Txt() FOR ctr=start TO end DO ;****** nul}l statement OD SCRNdmp()RETURN metric() col=220 Cabinet() Gr8Txt() FOR ctr=start TO end DO ;****** nul(; Side screen dump for EPSON printer; prepared on 30 Apr 84 by Jim Watson; Use part of Clinton Parker's PLOT; routine from} ANALOG No.18, Apr84BYTE row=[40],y=[1],x=[1],j, Cvalue,LTR,INVFLGBYTE ARRAY SCRNstring(420)BYTE ARRAY div8(320)}BYTE POINTER posCARD ARRAY Line(192)CARD col=[0],i, ctr,start=[1],end=[59500], Screen=88,Offset,CharsetBY}TE FUNC ASCtoGR8(BYTE Ltr) IF Ltr>127 THEN Ltr==-128 FI IF Ltr<32 THEN RETURN(Ltr}+64) ELSEIF Ltr<97 THEN RETURN(Ltr-32) FIRETURN (Ltr)PROC Gr8Txt() y=125 x=20 Offset=Screen+y}*40+x INVFLG=(') LTR=ASCtoGR8(INVFLG) Charset=57344+Ltr*8 FOR j=0 TO 7 DO Cvalue=Peek(charset+j) I}F INVFLG>127 THEN Cvalue== ! 255 FI PokeC(Offset+j*40,Cvalue) ODRETURNPROC Frame() Plot (2},2) DrawTo (318,2) DrawTo (318,190) Drawto (2,190) Drawto (2,2) Plot (4,4) Drawto (3}16,4) Drawto (316,188) Drawto (4,188) Drawto (4,4)RETURNPROC Isometric() PLOT (1}2+col,18+row) DRAWTO(39+col,3+row) DRAWTO(78+col,27+row) DRAWTO(51+col,42+row) DRAWTO(12+col,18+row) PLOT (78+col,27}+row) DRAWTO(78+col,57+row) DRAWTO(51+col,72+row) DRAWTO(12+col,48+row) DRAWTO(12+col,18+row) PLOT (51+Col,42+Row) }DRAWTO(51+col,72+row)RETURNPROC Cabinet() PLOT (21+col,30+row) DRAWTO(39+col,18+row) DRAWTO(69+col,18+row) DRAWTO(5}1+col,30+row) DRAWTO(21+col,30+row) PLOT (69+col,18+row) DRAWTO(69+col,48+row) DRAWTO(51+col,60+row) DRAWTO(21+col,6}0+row) DRAWTO(21+col,30+row) PLOT (51+Col,30+Row) DRAWTO(51+col,60+row)RETURNPROC TwoPoint() PLOT (15+col,18+row)} DRAWTO(37+col,13+row) DRAWTO(75+col,24+row) DRAWTO(51+col,36+row) DRAWTO(15+col,18+row) PLOT (75+col,24+row) DRAWT}O(75+col,50+row) DRAWTO(51+col,66+row) DRAWTO(15+col,36+row) DRAWTO(15+col,18+row) PLOT (51+Col,36+Row) DRAWTO(51+co}l,66+row)RETURNPROC Dumpinit() BYTE POINTER LineLoc LineLoc=Screen FOR i=0 TO 191 DO Line(i)=LineLoc } LineLoc==+40 OD FOR i=0 TO 319 DO div8(i)=i/8 ODRETURNPROC SCRNdmp() CARD t FOR i=0 TO 420 D}o SCRNstring(i)=' OD Dumpinit() Close(3) OPEN(3,"P:",8) PrintDE(3,"A") FOR t=0 TO 319 STEP 8 DO } FOR j=0 to 191 DO pos=line(j)+div8(t) SCRNstring(254-j)=POS^ OD PrintD(3,"K") FOR i=}1 TO 420 DO PutD(3,SCRNstring(i)) OD PutDE(3) OD PrintDE(3," ") PrintD(3,"@") CLOSE(3)R}ETURNPROC Main() BYTE jifclock=[0] GRAPHICS(24) SetColor(2,8,0) SetColor(4,3,0) color=1 Frame() col=10 TwoPo}int() col=115 Isometric() col=220 Cabinet() Gr8Txt() j=jifclock FOR ctr=start TO end DO ;****** null statem}ent OD SCRNdmp() PrintF("%E %U Jiffies",j)RETURN j=jifclock FOR ctr=start TO end DO ;****** null statem< ; Horizontal screen dump for EPSON; printer. Prepared on 30 Apr 84; by Jim Watson.; Use part of Clinton Parker's PLOT }; routine from ANALOG No.18, Apr84; ; | modified for®îծӮ by |; | P.L.Dell }'Era |; BYTE row=[84],y=[1],x=[1],j,k, Cvalue,LTR,INVFLG,EOL=[$9B]BYTE } ARRAY SCRNstring(420)BYTE ARRAY div8(320)BYTE POINTER posCARD ARRAY Line(192)CARD col=[0],i,l, ctr,start=[1],end }=[59500], Screen=88,Offset,CharsetBYTE FUNC ASCtoGR8(BYTE Ltr) IF Ltr>127 THEN Ltr==-128 } FI IF Ltr<32 THEN RETURN(Ltr+64) ELSEIF Ltr<97 THEN RETURN(Ltr-32) } FIRETURN (Ltr)PROC Gr8Txt() LTR=ASCtoGR8(INVFLG) Charset=57344+Ltr*8 FOR j=0 TO 7 DO Cval }ue=Peek(charset+j) IF INVFLG>127 THEN Cvalue== ! 255 FI PokeC(Offset+j*40,C }value) ODRETURNPROC Frame() Plot (2,2) DrawTo (318,2) DrawTo (318,190) Drawto (2,190) } Drawto (2,2) Plot (4,4) Drawto (316,4) Drawto (316,188) Drawto (4,188) D }rawto (4,4)RETURNPROC Isometric() PLOT (12+col,18+row) DRAWTO(39+col,3+row) DRAWTO(78+col,27+row) DRAWTO(51+col,42+ }row) DRAWTO(12+col,18+row) PLOT (78+col,27+row) DRAWTO(78+col,57+row) DRAWTO(51+col,72+row) DRAWTO(12+col,48+row) }DRAWTO(12+col,18+row) PLOT (51+Col,42+Row) DRAWTO(51+col,72+row)RETURNPROC Cabinet() PLOT (21+col,30+row) DRAWTO(3 }9+col,18+row) DRAWTO(69+col,18+row) DRAWTO(51+col,30+row) DRAWTO(21+col,30+row) PLOT (69+col,18+row) DRAWTO(69+col,4 }8+row) DRAWTO(51+col,60+row) DRAWTO(21+col,60+row) DRAWTO(21+col,30+row) PLOT (51+Col,30+Row) DRAWTO(51+col,60+row) }RETURNPROC TwoPoint() PLOT (15+col,18+row) DRAWTO(37+col,13+row) DRAWTO(75+col,24+row) DRAWTO(51+col,36+row) DRAWT }O(15+col,18+row) PLOT (75+col,24+row) DRAWTO(75+col,50+row) DRAWTO(51+col,66+row) DRAWTO(15+col,36+row) DRAWTO(15+co }l,18+row) PLOT (51+Col,36+Row) DRAWTO(51+col,66+row)RETURNPROC Dumpinit() BYTE POINTER LineLoc LineLoc=Screen } FOR i=0 TO 191 DO Line(i)=LineLoc LineLoc==+40 OD FOR i=0 TO 319 DO div8(i)=i/8 ODRETURN }PROC Makestring(BYTE vertpos) BYTE vline BYTE ARRAY TEMP(6) FOR i=0 TO 319 DO k=(i&7) vline==LSH 9 } FOR j=0 TO 5 DO pos=line(j+vertpos)+div8(i) Temp(j)=pos^ Temp(j)==LSH k Temp(j)= }=RSH 7 vline==% Temp(j) IF j<5 THEN vline==LSH 1 FI OD SCRNstri }ng(50+i)=vline ODRETURNPROC SCRNdmp() BYTE ctr,t,vertpos=[0] FOR i=0 TO 420 DO SCRNstring(i)=' OD } Dumpinit() Close(3) OPEN(3,"P:",8) PrintDE(3,"A") FOR ctr=0 TO 31 DO MakeSTRING(vertpos) PrintD(3,"K }") FOR i=1 to 420 DO PutD(3,SCRNstring(i)) OD PutDE(3) vertpos==+6 OD PrintDE( }3,"@") CLOSE(3)RETURNPROC PrintFile() BYTE w,XX CARD SAVE SAVE=Screen close(3) open(3,"D:S }CRNDMP3.ACT",4) y=0 x=0 FOR XX=0 TO 10 DO FOR W=2 TO 38 DO Offset=Screen+W } INVFLG=GetD(3) IF INVFLG=$9B THEN EXIT FI Gr8Txt() } OD Screen==+320 OD Screen=SAVE Close(3)RETURNPROC Main() GRAPHICS(24) } SetColor(2,8,0) SetColor(4,3,0) color=1 PrintFile() Frame() col=10 TwoPoint() col=115 Isometric() col=220 Cab }inet() y=178 x=20 Offset=Screen+y*40+x INVFLG=(') Gr8Txt() SCRNdmp()RETURN sometric() col=220 Cab ePROC DISKDIR()BYTE ARRAY FILES(30),FILE2(30)PRINT("FILE SPEC: ")INPUTS(FILES) IF FILES(0)=0 THEN ; JUST A RETURN PR$}ESSED SCOPY(FILES,"D:*.*") ; DEFAULT TO ALL FILES ON DISK 1ELSEIF FILES(1)='D AND (FILES(2)=': OR FILES(3)=':) THEN ; IT $}LOOKS OK ELSE ; INSERT "D:" IF NEEDED SCOPY(FILE2,"D:") SASSIGN(FILE2,FILES,3,30) SCOPY(FILES,FI$}LE2) FI CLOSE(1) ;JUST FOR SAFETY'S SAKEOPEN(1,FILES,6,0)DO INPUTSD(1,FILES) PRINTE(FILES) $}UNTIL EOF(1)ODCLOSE(1)RETURN ;JUST FOR SAFETY'S SAKEOPEN(1,FILES,6,0)DO INPUTSD(1,FILES) PRINTE(FILES) $# ; PROGRAM TO ACT AS SORT OF A MINI-DOS VERSION 1.0; DENNIS NEWTON -- 9/27/83BYTE RTS=[$60],BANK=$D500BYTE ARR(}AY FNAME(50) ; USED BY ALL ROUTINES;*******************************************************************************PROC G(}ETFNAME(BYTE ARRAY PROMPT) ; GETS AND FORMATS FILE NAME INTO FNAME BYTE ARRAY FN1(25),FN2(25) ; LOCAL FILE NAMES FOR BUILDI(}NG FNAME PRINT(PROMPT) : INPUTS(FN1) IF FN1(0)=0 THEN ; NO NAME TYPED SCOPY(FNAME,"D:*.*") ; SUBSTITUTE DEFAULT)} ELSE IF FN1(2)#': AND FN1(3)#': THEN SCOPY(FN2,"D:") SASSIGN(FN2,FN1,3,25) SCOPY(FN1,FN2) FI )} SCOPY(FNAME,FN1) FI PUTE()RETURN;*******************************************************************************PRO)}C DIR() BYTE ARRAY BUFFER(40) GETFNAME("Һ ") GRAPHICS(0) OPEN(3,FNAME,6,0) DO INPUTSD(3,BUFFER) PRINT)}(BUFFER): PRINT(" ") UNTIL EOF(3) : OD PUTE() RETURN;***************************************************************)}****************PROC CIO(BYTE CMD, BYTE ARRAY NAME) XIO(3,0,CMD,0,0,NAME)RETURN;************************************)}******************************************PROC RENAME() GETFNAME("ź ") CIO(32,FNAME) RETURN;*****)}**************************************************************************PROC ERASE() BYTE ANS BYTE ARRAY FTEMP(25))} GETFNAME("ź ") SCOPY(FTEMP,FNAME) IF SCOMPARE(FTEMP,"D:*.*") = 0 THEN PRINT("ERASE ALL FILES? ARE YOU SU)}RE?") ANS=GETD(2) IF ANS # 'Y THEN : RETURN : FI FI CIO(33,FNAME)RETURN;************************************) }*******************************************PROC PROTECT() GETFNAME("Ժ ") CIO(35,FNAME) RETURN;***) }****************************************************************************PROC UNPROTECT() GETFNAME("Ժ ") ) }CIO(36,FNAME)RETURN;*******************************************************************************PROC FORMAT() BYT) }E ANS PRINTE("Ժ ARE YOU SURE? ") ANS=GETD(2) IF ANS='Y THEN PRINT("INSERT CORRECT ) }DISK AND PRESS ANY KEY") ANS=GETD(2) CIO(254,"D:*.*") FIRETURN;************************************************)}*******************************PROC TYPETEXT() BYTE CH,KBD=764,DEVICE CLOSE(4) GETFNAME("ź ") PRINT("TO PRI)}NTER ALSO (Y/N)? ") : DEVICE=GETD(2) IF DEVICE='Y THEN OPEN(4,"P:",8,0) FI GRAPHICS(0) OPEN(3,FNAME,4,0) )}DO CH=GETD(3) IF DEVICE='Y THEN : PUTD(4,CH) : FI PUT(27) : PUT(CH) IF KBD # 255 THEN : KBD = 255 : EXIT : )}FI UNTIL EOF(3) : OD PUTE():CLOSE(4)RETURN;***************************************************************************)}****PROC WAIT() ; WAIT FOR KEY PRESS BYTE DUMMY PUTE() : PRINTE("٠٠ϠΠϠ") DUMMY=GETD(2)RETUR)}N ;*******************************************************************************PROC MENU() GRAPHICS(1) CLOSE)}(3) PRINTDE(6,"") PRINTDE(6," ") PRINTDE(6,"CHOOSE ONE OF THE FOLLOWING:") : PRINTDE(6," ")}) PRINTDE(6," dIRECTORY") PRINTDE(6," rENAME") PRINTDE(6," eRASE") PRINTDE(6," pROTECT") PRINTDE(6," )} uNPROTECT") PRINTDE(6," fORMAT DISK") PRINTDE(6," tYPE TEXT FILE") PRINTDE(6," ExIT TO ACTION!")RETURN;**)}*****************************************************************************PROC ADOS() ; MAIN CONTROL ROUTINE BYTE CHO)}ICE,LMRGN=82 BANK=0 : LMRGN=0 : CLOSE(2) : OPEN(2,"K:",4,0) DO MENU() CHOICE=GETD(2) IF CHOICE='D )}THEN : DIR() : WAIT() ELSEIF CHOICE='R THEN : RENAME() ELSEIF CHOICE='E THEN : ERASE() ELSEIF CHOICE='P THEN : PR)}OTECT() ELSEIF CHOICE='U THEN : UNPROTECT() ELSEIF CHOICE='F THEN : FORMAT() ELSEIF CHOICE='T THEN : TYPETEXT() :)} WAIT() FI CLOSE(3) UNTIL CHOICE='X : OD GRAPHICS(0) : CLOSE(2)RETURNCHOICE='T THEN : TYPETEXT() :(`PROC NEWLINES(BYTE N) BYTE I IF N>0 THEN FOR I=1 TO N DO PUTE() OD FIRETURNPROC FACT()CARD N,I,CCARD AR-}RAY A(200),B(200) FOR I=1 TO 200 DO A(I)=0 B(I)=0 OD A(200)=1FOR N=1 TO 100 DO I=200 : WHILE I<>200--}2*N+1 DO A(I)=A(I)*N : I==-1 OD I=200 WHILE I<>200-2*N+1 DO C=A(I)/10 A(I-1)=A(I-1)+C: A(I)=A(I)-10*C : I=-}=-1 OD PRINTF("%U FACTORIAL IS ",N) FOR I=200-2*N TO 200 DO B(I)=B(I)+A(I) IF B(I)<>0 THEN PRINTC(A(I)) FI OD- } NEWLINES(2) ODRETURNIS ",N) FOR I=200-2*N TO 200 DO B(I)=B(I)+A(I) IF B(I)<>0 THEN PRINTC(A(I)) FI OD, ; ATARI LOGO; TRANSLATED FROM THE BASIC; BY LEO LAPORTE, 10/19/83PROC FUJI() BYTE TOP, BOTTOM, XPOS, CNTR = [0] BY1"}TE ARRAY DATA = [ 37 41 43 45 46 29 48 35 49 37 50 39 51 41 52 43 53 44 54 45 55 46 55 47 56 48 57 48 57 49 58 491#} 58 50 59 50 59 51 59 51 59 52 60 52 60 52 60 52 60 52 60 52 60 52 60 ] CARD X COLOR = 1 TOP = 5 BOTTOM = 1$}61 FOR XPOS = 80 TO 84 DO PLOT(XPOS, TOP) DRAWTO(XPOS, BOTTOM) PLOT(160-XPOS, TOP) DRAWTO(160-1%}XPOS, BOTTOM) OD FOR XPOS = 86 TO 115 DO IF XPOS > 90 THEN TOP = DATA(CNT1&}R) CNTR ==+ 1 FI BOTTOM = DATA(CNTR) CNTR ==+ 1 PLOT(XPOS, TOP) DRAWTO(XPOS, BOTTOM) PLO1'}T(160-XPOS, TOP) DRAWTO(160-XPOS, BOTTOM) ODRETURNPROC LETTERS() BYTE X,Y,I CARD CNTR=[0] BYTE ARRA1(}Y ATARI = [ 49 55 61 76 81 87 93 104 0 48 56 61 76 80 88 93 105 0 47 57 61 76 79 89 93 106 0 46 58 61 76 1)}78 90 93 107 0 45 50 54 59 67 70 77 82 86 91 93 96 103 108 0 45 49 55 59 67 70 77 81 87 91 93 96 104 108 0 45 1*}48 56 59 67 70 77 80 88 91 93 96 104 108 0 45 48 56 59 67 70 77 80 88 91 93 96 104 108 0 45 48 56 59 67 70 77 80 881+} 91 93 96 104 108 0 45 48 56 59 67 70 77 80 88 91 93 96 103 108 0 45 59 67 70 77 91 93 107 0 45 59 67 70 77 911,} 93 106 0 45 59 67 70 77 91 93 105 0 45 59 67 70 77 91 93 104 0 45 48 56 59 67 70 77 80 88 91 93 96 100 105 01-} 45 48 56 59 67 70 77 80 88 91 93 96 101 106 0 45 48 56 59 67 70 77 80 88 91 93 96 102 107 0 45 48 56 59 67 70 1.}77 80 88 91 93 96 103 108 0 45 48 56 59 67 70 77 80 88 91 93 96 104 109 0 45 48 56 59 67 70 77 80 88 91 93 96 105 11/}09 0 1 1 ] I = 66 COLOR = 1 DO X = ATARI(CNTR) CNTR ==+ 1 IF X = 0 THEN X = 112 Y 10}= 115 PLOT(X,I) DRAWTO(Y,I) I ==+ 1 ELSE Y = ATARI(CNTR) CNTR ==+ 1 IF X = 1 AND Y = 1 11}THEN EXIT FI PLOT(X,I) DRAWTO(Y,I) IF X = 112 THEN I ==+ 1 FI FI ODRETURNPROC DELAY(BYTE 12}TIME) BYTE JIFS = 20 JIFS = 0 DO UNTIL (JIFS >= TIME) ODRETURNPROC JINGLE() BYTE ARRAY MUSIC= [ 12113} 121 121 121 91 96 108 121 0 ] BYTE NOTE, CNTR = [0] DO NOTE = MUSIC(CNTR) CNTR ==+ 1 IF NOTE =14} 0 THEN EXIT FI SNDRST() DELAY(2) SOUND(0, NOTE, 10, 8) DELAY(8) OD DELAY(12) SNDRST()RETURNPROC SC15}ROLL() BYTE WSYNC = 54282, VCOUNT = 54283, CLR = 53270, CH = 764, CNTR, CHGCLR = [0], I16}NCCLR, DELAY DO FOR CNTR = 1 TO 4 DO INCCLR = CHGCLR FOR DELAY = 1 TO 9 DO OD DO 17} WSYNC = 0 CLR = INCCLR INCCLR ==+ 1 UNTIL VCOUNT & 128 OD OD CHGC18}LR ==+ 1 UNTIL CH <> 255 ODRETURNPROC MAIN() GRAPHICS(23) FUJI() LETTERS() JINGLE() SCROLL()RETUR19}N ==+ 1 UNTIL CH <> 255 ODRETURNPROC MAIN() GRAPHICS(23) FUJI() LETTERS() JINGLE() SCROLL()RETUR0; FIRST.ACT -- a few odd PROCs/FUNCs;; LegalDrive - allows determining if; the specified drive number is; r5;}ecognized by DOS;; MaskInput - uses underlines as input; masking for user responses;; UnMask - cleans off exces5<}s masking; that the editor picks up;; Find - returns the position in a; CHAR ARRAY (string) where the; 5=}sub-string was found, returns; 0 if not found - search begins; at the position specified by; start;; ----5>}-------------------------------- BYTE FUNC LegalDrive(BYTE drive_num)BYTE drvbyt=$070A, bit, iBYTE ARRAY mask=[1 2 5?}4 8 16 32 64 128], drive(8) FOR bit=0 TO 7 DO drive(bit)=(drvbyt&mask(bit)) RSH bit ODRETURN(drive(drive_num-1))5@}PROC MaskInput(BYTE width)BYTE i FOR i=1 TO width DO Put('_) OD FOR i=1 TO width DO Put(') ODRETURNP5A}ROC UnMask(CHAR ARRAY source,destination)BYTE i FOR i=1 TO source(0) DO IF source(i)<>'_ THEN destination(i)=s5B}ource(i) ELSE EXIT FI OD destination(0)=i-1RETURNBYTE FUNC Find(CHAR ARRAY str,sub BYTE start)BYTE i, j5C}CHAR ARRAY tmp FOR i=start TO str(0) DO IF sub(1)=str(i) THEN tmp(0)=sub(0) FOR j=1 TO sub(0) DO 5D} tmp(j)=str(j+i-1) OD IF SCompare(tmp,sub)=0 THEN RETURN(i) FI FI ODRETURN(0) DO 4v; CIS NOTICE: ; I AM PROVIDING THE PROGRAM FOR YOU; TO LOOK AT AND MAYBE HELP YOU GET; STARTED WITH ACTION!. IT WA9F}S; WRITTEN 'QUICK AND DIRTY' AND AS; SUCH DOES NOT HAVE MANY COMMENTS; AND IS NOT THE BEST OF CODE IN MANY; PLACES. FEEL9G} FREE TO SHOW IT TO; ANYONE YOU LIKE AS LONG AS YOU KEEP; THE COPYRIGHT NOTICE.; IN CASE YOU ARE INTERESTED, THIS IS; TH9H}E COMPANY LOGO FOR ACTION; COMPUTER SERVICES (ACS).; - CLINTON PARKER 70435,625; PS: HIT ESC TO EXIT PROGRAM; CO9I}PYRIGHT 1983 BY ACTION COMPUTER SERVICES; LAST MODIFIED APRIL 13, 1983MODULE ; LOGO.ACTDEFINE RTI = "$40", PHA =9J} "$48", PLA = "$68", TXA = "$8A", TAX = "$AA", TYA = "$98", TAY = "$A8"BYTE STARTBYTE A9K}RRAY DISPLAYCARD ARRAY YLOC(96)PROC NMI() BYTE COLOR, CNT BYTE COLPF1=$D017, WSYNC=$D40A, VCOUNT=$D40B, COLPF29L}=$D018, COLPF0=$D016 BYTE ARRAY COL(0)=[$68 $C $96 $38] [PHA TXA PHA TYA PHA] IF VCOUNT=7 THEN COLOR = STA9M}RT START = START - 1 IF (START&$1F)=0 THEN CNT = CNT + 1 FI FI COLOR = COLOR - 2 WSYNC = 1 COLPF0 = COLOR 9N}COLPF1 = COLOR COLPF2 = COL((CNT + VCOUNT) & 3)[PLA TAY PLA TAX PLA RTI]PROC BACKGROUND() BYTE COLBK=$D01A, VCOUNT=$D9O}40B, WSYNC=$D40A [PHA TXA PHA TYA PHA] WSYNC = 0 IF VCOUNT>50 THEN COLBK = 0 ELSE COLBK = $D6 FI[PLA TAY 9P}PLA TAX PLA RTI]PROC INIT7() BYTE I CARD SCREEN, SCRLOC=88 GRAPHICS(23) SETCOLOR(0,2,10) SETCOLOR(1,0,12) SE9Q}TCOLOR(2,0,12) DISPLAY = SCRLOC SCREEN = SCRLOC I = 0 WHILE I<96 DO YLOC(I) = SCREEN SCREEN = SCREEN + 40 9R} I = I + 1 ODRETURNPROC PLOT7(BYTE X, Y) BYTE ARRAY POS, BM(0)=[$C0$30$C$3], CM(0)=[$0 $55 $AA $FF] POS = YLO9S}C(Y) POS(X RSH 2) ==% (BM(X&3)&CM(COLOR))RETURNPROC VLINE(BYTE X, Y1, Y2) WHILE Y1#Y2 DO PLOT7(X, Y1) Y1 = Y9T}1 + 1 ODRETURNPROC HLINE(BYTE X1, X2, Y) WHILE X1#X2 DO PLOT7(X1, Y) X1 = X1 + 1 ODRETURNPROC DLINE(BYT9U}E X1, X2, Y1) BYTE INCR INCR = 1 IF X2'PSMAGIC ACT60, 71, 25); FINGER 9 CONNECTION (D1) HLINE(16, 34, 53) DLINE(34, 55, 53) HLINE(55, 85, 74) DLINE(86, 84, 73) VLI9r}NE(86, 60, 73) LINEY(86, 60, 77, 25); FINGER 10 CONNECTION (D0) HLINE(16, 20, 59) DLINE(23, 19, 56) HLINE(24, 32, 59s}6) DLINE(32, 53, 56) HLINE(53, 91, 77) DLINE(92, 90, 76) VLINE(92, 60, 76) LINEY(92, 60, 83, 25); FINGER 11 CONNE9t}CTION (D6) HLINE(16, 24, 65) DLINE(27, 23, 62) DOT(26, 60); FINGER 12 CONNECTION (CS) DLINE(107, 92, 66) HLINE(509u}, 92, 80) DLINE(40, 50, 71) HLINE(16, 40, 71) VLINE(95, 66, 78); FINGER 13 CONNECTION (+5) PLOT(16, 76) DRAWTO(509v}, 86) PLOT(16, 77) DRAWTO(50, 87) PLOT(16, 78) DRAWTO(50, 88) HLINE(50, 149, 86) HLINE(50, 149, 87) HLINE(50, 19w}49, 88) CURVE(149, 86) I = 0 WHILE I<4 DO VLINE(153+I, 47, 82) DLINE(143+I, 153+I, 37) VLINE(143+I, 22, 37)9x} HLINE(142, 155, 62+I) VLINE(153+I, 5, 17) ; GROUND PAD I = I + 1 OD HLINE(143, 146, 21) PLOT7(141, 63)9y} PLOT7(141, 64) CURVE(149, 62) HLINE(149, 153, 66) VLINE(152, 66, 70) PLOT7(151, 67); FINGER 14 CONNECTION (CART. 9z}SELECT) HLINE(16, 35, 82) HLINE(16, 38, 83) HLINE(16, 41, 84); GROUND PADS DOT(153, 3) DOT(153, 16) HLINE(62, 9{}64, 23) HLINE(62, 64, 24)RETURNPROC LETTER(BYTE ARRAY PTS, BYTE X, Y, DELAY) BYTE I, DX, DY WHILE 1 DO DX = P9|}TS^ PTS = PTS + 1 DY = PTS^ PTS = PTS + 1 IF DX=$FF THEN EXIT FI PLOT7(X+DX, Y+DY); I = 0; WHILE I9}}31 THEN J==-32 ELSE J==+=}64 FI FI CURSOR^=J STRING==+1 CURSOR==+1 ODRETURNPROC MAIN() CARD VVBLKD=$224 CARD POINTER=} LMSPTR BYTE NMIEN=$D40E, COLOR1=$2C5,COLOR2=$2C6,COLOR4=$2C8 GRAPHICS(0) LMSPTR=DLISTVAL+4 LMSPTR^=SAVMSC^=} MOVEBLOCK(DLIST,DLISTVAL,29) NMIEN=0 VVBLKD=VBLIH SDLSTL=DLIST NMIEN=$C0 COLOR1=$0E COLOR2=$90 COLOR4=$=}90 ZERO(SAVMSC^,960) MYPRINT(14,"H O W D Y !!") MYPRINT(40+3,"THIS IS MODE 1") MYPRINT(40+20+8*40+8,"AND THIS IS MO=}DE 0 AGAIN") DO OD ;ENDLESS LOOPRETURND Y !!") MYPRINT(40+3,"THIS IS MODE 1") MYPRINT(40+20+8*40+8,"AND THIS IS MO<-MODULE; D:DIR.ACT BY BOB TURNER 04/10/84; AN EXAMPLE IN THE USE OF POINTERS; AND ARRAY MANIPULATION.BYTE POINTER PTR;PRA}OC FORMNAME(BYTE ARRAY DPTR,BUF)BYTE POINTER BPTRBYTE JJ=3 ; INIT INPUT BUFFER INDEXDPTR(0)=2 ; INIT STRING COUNTDPTR(1)A}='D : DPTR(2)=':BPTR=DPTR+3 ; POINT PAST :WHILE BUF(J) # $20 DO BPTR^=BUF(J) ; MOVE IN NEXT BYTE BPTR==+1 ; BUMP POA}INTER DPTR(0)==+1 ; UP STRING COUNT J==+1 ; BUMP INDEX TO INPUT BUFFER ; *** DONT EXCEED 8 CHARS IN PRIMARY NAME A} IF J=11 THEN EXIT FI OD; DEBLANK INPUT BUFFERWHILE BUF(J) = $20 DO J==+1 IF J = 14 THEN RETURN FI; NO EXT! ODBPTA}R^='. : BPTR==+1 : DPTR(0)==+1; FILL IN EXTWHILE BUF(J) # $20 DO BPTR^=BUF(J) : J==+1 BPTR==+1 : DPTR(0)==+1 ODRETUA}RNPROC MAIN()BYTE I=[0]BYTE ARRAY BUF(19)BYTE ARRAY DIR_STRING(960)CARD ARRAY DVECT(64) ; DOPE VECTORPTR = DIR_STRINA}G ; INIT POINTEROPEN(1,"D:*.*",6,0)INPUTSD(1,BUF) ; GET FIRST FILE; DONT FORMAT # OF SECTORS FREE MSG WHILE BUF(2) = $20A} ; A GOOD A STOPPER AS ANY OTHER DO DVECT(I) = PTR ; KEEP A DOPE VECTOR PRINT(BUF) : PRINT("-->") FORMNAME(PTR,A}BUF) PRINTE(PTR) ; PRINT FILE NAME FORMED PTR==+PTR(0)+1 ; POINT TO NEXT SUBSTRING INPUTSD(1,BUF) I==+1 ODA}DVECT(I)=0; MARK LAST FILE FOUNDCLOSE(1); CLOSE DIR; PRINT OUT USING CARD ARRAY AS POINTERSPRINTE("FILES FROM TABLE")I = A}0WHILE DVECT(I)#0 DO PRINTF("%I) %S%E",I,DVECT(I)) I==+1 ODRETURNAS POINTERSPRINTE("FILES FROM TABLE")I = @R;PROGRAMMED BY TOM MCCOMB, COMPUSERVE;72456,1042,ACTION BBS ACCOUT NUMBER 6;THIS PROGRAM WAS WRITTEN IN RESPONSE;TO HENRY E}HILLBRATH'S REQUEST IN HIS ;ACTION! NEWSLETTER, TOP LEVEL TARRY.;IT IS MY FIRST PROGRAMMING EFFORT IN;ACTION! AND AS SLOPPE}Y AS CAN BE!;HOPEFULLY THINGS WILL IMPROVE.;THIS IS THE SECOND EDITION...THE ;LETTERING HAS BEEN ADDED TO THE LOGO.E} ;IT ALSO GOES INTO ATTRACT MODE.;JUST TAP THE KEYBOARD TO RETURN TO ;THE ORIGINAL COLOR SCHEME(OSS ORANGE).;<<<<<<<>>>>>>>>>PROC LETTERS() BYTE L,H,R,C,E CARD P C=0 R=0 SETCOLOR(0,3,5) SETCOLOR(1,3E},7) SETCOLOR(2,3,3) COLOR=0 FOR H=1 TO 2 DO FOR L= 1 TO 5 DO PLOT(51+2*L,35-L);TOP OE}F 'T' PLOT(50+2*L,35-L);TOP OF 'T' PLOT(67+2*L+C,27-L+R);TOP OF 'O' PLOT(66+2*E}L+C,27-L+R);TOP OF 'O' PLOT(101+2*L,23-L);TOP OF 'T' PLOT(102+2*L,23-L);TOP OF 'T' OD C=C+7 E} R=R+3 OD PLOT(108,32) ; DRAWTO(104,43) ;LETTER PLOT(108,32) ; A DRAE}WTO(112,40) PLOT(105,41) DRAWTO(110,38) PLOT(104,69) ; LETTER DRAWTO(109,73) E}DRAWTO(112,66) ; Y FOR E=1 TO 9 DO PLOT(44,53-E); -LEVEL- PLOT(55,59-E); -E- PLOT(77,7E}0-E); -E- PLOT(88,75-E); -L- PLOT(108,30-E);-TARRY- PLOT(104,55-E);-R- PLOT(104,67-E);-R- E} OD FOR L=1 TO 4 DO PLOT(102+2*L,47-L);TOP OF 'R PLOT(103+2*L,47-L);TOP OF 'R' E} PLOT(102+2*L,51-L);MID OF 'R PLOT(103+2*L,51-L);MID OF 'R' PLOT(102+2*L,59-L);TOP OF 'R' E} PLOT(103+2*L,59-L);TOP OF 'R' PLOT(102+2*L,63-L);MID OF 'R' PLOT(103+2*L,63-L);MID OF 'R' PLOTE}(83+2*L,19-L);TOP OF 'P' PLOT(82+2*L,19-L);TOP OF 'P' PLOT(86+2*L,20-L);MID OF 'P' PLOT(87+2*L,20-L);MIE}D OF 'P' OD PLOT(109,48) DRAWTO(112,51) PLOT(109,60) DRAWTO(112,63) E} FOR E=1 TO 4 DO PLOT(111,60-E);-R- PLOT(109,78-E);-Y- PLOT(111,47-E);-R- E}OD FOR L=1 TO 3 DO PLOT(43+2*L,52+L);B OF 'L' PLOT(42+2*L,52+L);B OF 'L' PLOT(53+2*L,58+L);B OF 'E' E} PLOT(54+2*L,58+L);B OF 'E' PLOT(53+2*L,53+L);M OF 'E' PLOT(54+2*L,53+L);M OF 'E' PLOT(53+2*L,49+L);T OF 'E' E} PLOT(54+2*L,49+L);T OF 'E' PLOT(75+2*L,68+L);B OF 'E' PLOT(76+2*L,68+L);B OF 'E' PLOT(75+2*L,63+L);M OF 'E' E} PLOT(76+2*L,63+L);M OF 'E' PLOT(75+2*L,59+L);T OF 'E' PLOT(76+2*L,59+L);T OF 'E' PLOT(87+2*L,74+L);B OF 'L'E} PLOT(86+2*L,74+L);B OF 'L' OD PLOT(65,54) DRAWTO(68,65) DRAWTO(73,58) FOR L=1E} TO 4 DO PLOT(55+2*L,31+L);TOP PLOT(54+2*L,31+L);TOP PLOT(67+2*L,25+L);TOP PLOT(66+2*L,E}25+L);TOP PLOT(76+2*L,21+L);TOP PLOT(75+2*L,21+L);TOP PLOT(83+2*L,17+L);TOP PLOT(84+2*L,17+L)E};TOP OD FOR L=1 TO 2 DO PLOT(90+2*L,14+L);TOP PLOT(91+2*L,14+L);TOP ODFOR E=1 TE}O 10 DO FOR P=1 TO 60000 DO OD OD RETURN PROC COLORS() BYTE A,B,C,D,E,F CARD M,N,PASS A=1 E}B=2 C=5 D=3 E=7 F=9 FOR M= 1 TO 60000 DO SETCOLOR(0,B,E) SETCOLOR(1,D,C) SETCOLOR(2,A,F) A=BE} B=C C=D D=E E=F F=A OD PASS=PASS+1 IF PASS>2 THEN POKE($4D,$FE); SETS ATTRACT MODE FI RETE}URN PROC INTRO() CARD I,P GRAPHICS(2) SETCOLOR(2,0,0) POKE($2F0,1);TURNS CURSOR OFF PRINTE(" PUBLIE}SHED BY HENRY S. HILLBRATH") PUTE() PRINTE(" PROCEDURE BY THOMAS H. MCCOMB") PRINTDE(6,"") PRINTDE(6,"") E} PRINTDE(6,"") PRINTDE(6," TOP") PRINTDE(6," LEVEL") PRINTD(6," TARRY") FOR P=1 TO 5 DO E} FOR I=1 TO 40000 DO OD OD PRINT("}")RETURNPROC MAIN() BYTE I,L CARD C INTRO() GRE}APHICS(23) POKE($D40E,0) POKE($22F,0) SETCOLOR(0,3,5) SETCOLOR(1,3,7) SETCOLOR(2,3,3) E} COLOR=3 FOR I=10 TO 32 DO PLOT(46+2*I,47-I) DRAWTO(46+2*I,59-I) E} PLOT(47+2*I,47-I) DRAWTO(47+2*I,59-I) OD COLOR=1 FOR I=0 TO 22 E}DO PLOT(52+2*I,45+I) DRAWTO(52+2*I,31+I) PLOT(53+2*I,45+I) DRAWTO(53+2*IE},32+I) OD FOR I=0 TO 32 DO PLOT(38+2*I,38-I) DRAWTO(38+2*I,50-I) E} PLOT(39+2*I,38-I) DRAWTO(39+2*I,50-I) OD FOR I=1 TO 6 DO PLOE}T(102+2*I,6+I) DRAWTO(102+2*I,21-I) PLOT(103+2*I,6+I) DRAWTO(103+2*I,21-I) OD E} COLOR=2 FOR I=0 TO 32 DO PLOT(38+2*I,52+I) DRAWTO(38+2*I,38+I)E} PLOT(39+2*I,52+I) DRAWTO(39+2*I,39+I) OD FOR I=0 TO 6 DO E}PLOT(90+2*I,65+I) DRAWTO(90+2*I,38-I) PLOT(89+2*I,66+I) DRAWTO(89+2*I,38-I) ODE} COLOR=3 FOR I=0 TO 6 DO PLOT(102+2*I,84-I) DRAWTO(102+2*I,19-I) PLOT(103+2*I,84-I) E}DRAWTO(103+2*I,19-I) OD POKE($D40E,$40) POKE($22F,$22) FOR L=1 TO 5 DO FOR C= 1 TO 60000 E} DO OD OD LETTERS() COLORS() LETTERS() MAIN()$22F,$22) FOR L=1 TO 5 DO FOR C= 1 TO 60000 D<;PICTURE.ACT ; THIS IS A GTIA GRAPHICS 9 DEMO;WRITTEN IN ACTION! LANGUAGE.;THE PROGRAM DRAWS A PICTURE OF;EITHEI}R ABE LINCOLN OR MONA LISA.;THE SPEED IS APPROXIMATELY 6 TIMES;FASTER THAN ATARI 8K BASIC. ; THANKS TO BRUCE NELSON FOR I}HIS;ARTWORK DATA AND THE ORIGINAL;BASIC DEMO. ; -----------------------------; ******** JOHN DEMAR *********; ***I}***** 10/29/83 *********; ******** 71066, 337 *********; -----------------------------PROC DRAWIT() BYTE Y,Z,N I} BYTE X BYTE ARRAY SCREEN, A CARD ARRAY LD(48),MD(48)LD(0)="9::;;;;<<=<============>===>>>=============>===>====>=>>=>>>@I}@@@"LD(1)="9:;;;<<<<<=============>==;<<::=>>========>===>>=>>>>==>>>>>@@@@"LD(2)=":;<<<<<<<<=======>======:754533569<=>===I}======>==>>>>>>>>>>>@@@@"LD(3)=":;<<<;<;<<<=====>>==>=;5444543333337;<==>>>>=>===>>>>>>>>>>=@@@@"LD(4)=":;;;;;;<<<<<=====>=I}><94545555333333337;=>?>>>>>>>>?>>>>>>>==@@@@"LD(5)=":;;;;;<=<<=<====>>>=6444454443333333337:>>>>>????>??>>>>>>>>@@@@"LD(6)I}=":;:;;;<<<<==<<==>>>8444455534333333232347:=>?>?>??>?>>>>>>>>@@@@"LD(7)=":;:;;;<<<<===<===>944444443343335::75233359?>>>I}>>>>>>>>>>@@@@"LD(8)="::;;;;<<<<<<=<<==954444344434338?@@@@7233457<>>>>>>=>>>>>>>>@@@@"LD(9)=":;;;;;;;;;;<<====543444444434I}5:@@@@@@@4453245=>>>=>>>>>>>>>>@@@@"LD(10)=":;:;;;<;;;<=<<==144343334346:?@@@@@@@@>2322359>>>>>=>>>>>>>?@@@@"LD(11)=";;;;;;I};<<<<<=<=<54444334479=?@@@@@@@@@@8222355=>>>>>>>>>>>>>@@@@"LD(12)=";;;;;;;;;<<<<<<:448444448>?@@@@@@@@@@@@>3221378==>>>>>>>>I}>>>@@@@"LD(13)=";;;;;;;;;;<<<<<537744475>@@@@@@@@@@@@@@?:341275=>===>>=>>>>?@@@@"LD(14)=";;;;;;;;;;;;<<:44:743579??@@@@@@@@I}@????>=531154<>=>=>=>=>>>>@@@@"LD(15)=";;;:::;;;;;;;;936:;8548?????@?@????????=<842152<>>=======>=>@@@@"LD(16)=":;;;:::;;:;I}:::83:;<<:=>>???????????????<=<52112:=>=========>@@@@"LD(17)=":;;;;;::::::96549;<<=>>>>>>>????>>?????==<42111:===========>?@I}@@"LD(18)=":;:;;;:::9:984459;==>?>>>>>>?????>>>?>>::9432115=======>===>>@@@"LD(19)=":;:;::::::9:64449;<=>?>>>>>????=>>>>>>=I}989321101;=====>======@@@"LD(20)=":;;::;:::::866438<>>>>?>>=>><9756;==>=<8664211113;========>>>@@@"LD(21)=":;;::::::::78334I}79:<<=>=><:6333357<>==<743224<:212=========>>@@@"LD(22)="::;;:;:;::;:7353446548;;=:633233377<==<53223<52342;========>>@@@"LI}D(23)="::;:::;::;;;956333333349>;6432386249=><5222::53322<=<<<<<==>=@@@"LD(24)="::;:::;:;;;;;96533344339=<;432246754;=<82237I};;8563<<<=<======@@@"LD(25)="9::;;:;;;;;;;<;73334545>=;<974569;:8:<=;43653;;;94;<<<<====>>@@@"LD(26)="99::::::::::;;;;43456I}6;==<<<7679:<<<<<<<54<<39==75;;;<<<<===>@@@"LD(27)="999999::::9:9:::556675<=<<<<:8:;;<<=<<<<52<==5==23<;;<<<<<===?@@"LD(28)I}="8999999::9998999574559<<<;<<<;;;<<<<<;;824;<=;<:14<;;<;<<<===??@"LD(29)="8898999998888888589:9:<<;;;;<<;;<<<<;:8214:;<<;13I}<<;;;;<;<<<??"LD(33)="778I}7788877887878862312211227;:498655575328113488:;::;;;;;;;<<>??"LD(34)="777787777777787888123211269:;;:89858786536113689::::::I}:;;;;<<>??"LD(35)="7777777777787778884142135::::::959698:55662179:::::::::;;;;<<=>?"LD(36)="6677777777777887887122269999886I}8:9899:64452579:;::9::::::;;;;=>?"LD(37)="67777777777777778861111154578983698::84433399:::::::::::::;;<<>?"LD(38)="77776776I}777778877761212489887589687:983452599:::::::::::::;;;<>?"LD(39)="666666667777778777722211122248::969::5322489::::::::::::;:;I};;<>?"LD(40)="666666667777778788611333689999:86677922117899999:::::;::;:;;;;>?"LD(41)="666666666777777777611114578874621225I}321119499:9::::::::;;;;;;;>?"LD(42)="66666666677777777761011223432432211211113;68:::::::::;::;:;;;;>?"LD(43)="6666666677777I}7777771111111211121111111126<43:::::::::;:::;;;;;>?"LD(44)="66666666667777777872001110111111111111168<219::::::::::::;;;;;>?I}"LD(45)="566666666677777778861010001111111111117;;:111::::::::::::;;;:;>?"LD(46)="66666666667777777888610000111111110129;;?"LD(47)="566666666667777777888813000111100114;;;;<211118:;:::::::;;;;;;>?"LD(48)="566666666667777777I}88825731000001137;;;;<921111126::;:;;;;;;;;;>?"MD(0)="@@@@@3444444444554555656566565655666666666665666666655676665@@@@"MDI}(1)="@@@@@5566666666666666777777776433456778877777776666666778776@@@@"MD(2)="@@@@@766777777777777888888853321123247889887988I}8887788789987@@@@"MD(3)="@@@@@778898887888888899:9932222222322379:998:999888888889998@@@@"MD(4)="@@@@@78989898889999989::92I}212222223432389:9::9:999999999:998@@@@"MD(5)="@@@@@8899999:99999999:::2122222478897525:::::9::9999999::::8@@@@"MD(6)="@@@@@I}989999999:99:::::;311112248:;<<<:81::;;;:::::9:99::9::9@@@@"MD(7)="@@@@@99:9:9::9:9:::::;911111247:;<<<<=<54::;<;;;:::::::::I}::9@@@@"MD(8)="@@@@@9:::::::::;:::::;111111357:<<<<<<<718;:;;;<;:::::;;:9:9@@@@"MD(9)="@@@@@::9;::9:::99988681111125799;<<") N=INPUTB() IF N=0 THEN RETURN FI IF N<3 THEN EXIT FI PUT($FD) PUT($FD) J} PRINTE("ENTER 0, 1 OR 2 !") FOR A = 1 TO 32767 DO OD OD GRAPHICS(9) SETCOLOR(4,2,0); POKE($D40E,0J}) ;OPTIONAL FOR SPEED-; POKE($22F,0) ;UP W/BLANK SCREEN. SCREEN = PEEKC(88) + 960 + 7 FOR Y = 0 TO 47 DO J} IF N=1 THEN A = LD(Y+1) ELSE A = MD(Y) FI X = 59 WHILE X>6 DO Z = A(X)J} IF Z=64 THEN Z = $F0 ELSE Z = Z LSH 4 FI IF A(X-1)=64 THEN Z =J} Z % $F ELSE Z = Z % (A(X-1) & $F) FI SCREEN^ = Z SCREEN(40) = Z SCREEN(80)J} = Z X = X - 2 SCREEN = SCREEN + 1 OD SCREEN = SCREEN + 93 OD; POKE($D40E,$40) ;OPTIONALJ} FOR SPEED-; POKE($22F,$22) ;UP W/BLANK SCREEN. N = 255 WHILE N=255 DO N = PEEK(764) OD POKE(764J}, 255) ODRETURN($22F,$22) ;UP W/BLANK SCREEN. N = 255 WHILE N=255 DO N = PEEK(764) OD POKE(764HPROC MAIN()BYTE Z=[0],I,X=[0],ATRCT=77GRAPHICS(11)DO ATRCT=0 FOR I=1 TO 79 DO Z=Z+1 IF Z>15 THEN Z=1 FI N } COLOR=Z PLOT(I,X) DRAWTO(79-I,X) PLOT(I,190-X) DRAWTO (79-I,190-X) X=X+1 IF X>190 THEN X=0 FI OD FON!}R I=1 TO 79 DO Z=Z+1 IF Z>15 THEN Z=1 FI COLOR=Z PLOT (I,X) DRAWTO (79-I,190-X) X=X+1 IF X>190 THEN"}N X=0 FI ODODZ=Z+1 IF Z>15 THEN Z=1 FI COLOR=Z PLOT (I,X) DRAWTO (79-I,190-X) X=X+1 IF X>190 THELPROC MAIN()BYTE Z=[0],I,X=[0]GRAPHICS(9)SETCOLOR (4,4,2)DO FOR I=1 TO 79 DO Z=Z+1 IF Z>15 THEN Z=1 FI CR$}OLOR=Z PLOT(I,X) DRAWTO(79-I,X) PLOT(I,190-X) DRAWTO (79-I,190-X) X=X+1 IF X>190 THEN X=0 FI OD FOR R%}I=1 TO 79 DO Z=Z+1 IF Z>15 THEN Z=1 FI COLOR=Z PLOT (I,X) DRAWTO (79-I,190-X) X=X+1 IF X>190 THEN R&}X=0 FI OD I=RAND(14)+1SETCOLOR(4,I,2)ODOR=Z PLOT (I,X) DRAWTO (79-I,190-X) X=X+1 IF X>190 THEN P6;Print Shop Screen Magic;and Graphic Library ;File conversion utility;by Mike Collins;ver. 2;8/20/85;ŠΠŠV(}ŠŮBYTE ramtop=106, hitop, lotop,clear=[0], intact=[1], picflag=[0],overBYTE ARRAY fname, filenameCARD smem=88V)}, screen, dlhi, xpos, yposTYPE directory=[BYTE n0,n1,n2,n3,n4,n5,n6,n7,n8,n9,na,nb,nc,nd,ne,nfCARD startsec, PA, bytes]diV*}rectory POINTER file;************************************;Burst (Block) I/O routines to do;quick disk I/O, utilizing a calV+}l to;CIO;************************************PROC CIO=$E456(BYTE areg,xreg);************************************CARD V,}FUNC Burst(BYTE chan,mode, CARD addr,buflen) TYPE IOCB=[BYTE id,num,cmd,stat CARD badr,padr,bV-}len BYTE a1,a2,a3,a4,a5,a6] IOCB POINTER iptr chan==&$07 iptr=$340+(chan LSH 4) iptr.cmd=mode iptr.bV.}len=buflen iptr.badr=addr CIO(0,chan LSH 4)RETURN(iptr.stat);************************************BYTE FUNC BPut(BYTEV/} chan CARD addr,len)BYTE stat stat=Burst(chan,11,addr,len)RETURN(stat);*******************************V0}*****PROC DISKINV=$E453();************************************BYTE FUNC resdisk(BYTE drv, cmd CARD buf, V1}sec)TYPE DCB=[BYTE sbi, dnum, com, stat CARD addr, to, cnt, secnum]DCB POINTER diskdisk=$300disk.dnum=drvdisV2}k.com=cmddisk.addr=bufdisk.secnum=secDISKINV() RETURN(disk.stat) ;*******************************V3}*****BYTE FUNC GetSec(BYTE drv CARD buf, sec)BYTE statstat=resdisk(drv, 'R, buf, sec)RETURN(stat);*****V4}*******************************PROC shift(CARD buffer)PokeC($CB,buffer)[24 160 0 8 40 177 203 106 145 203 8 200 19V5}2 12 208 244 40]RETURN;************************************PROC overlay(CARD to, from, length)BYTE POINTER pointto, poV6}intfromCARD countFOR count=0 TO length-1DOpointto=count+to pointfrom=count+frompointto^=pointto^ OR pointfrom^ODRETURNV7};************************************PROC vdelay()BYTE jiffy, clock=20jiffy=clock ;This loop ensuresDO V8} ;that 1 vbl interuptUNTIL jiffy#clock;will occur. All OD ;hardware registersRETURN ;will be updaV9}ted.;************************************BYTE FUNC uppercase(BYTE chr)IF chr>='a AND chr<='z THEN RETURN(chr-$20)FIREV:}TURN(chr);************************************PROC nobreak() ;disable break keyPoke(16,64) Poke(53774,64)RETURN;********V;}****************************PROC ercheck(BYTE ernum)IF ernum#1 ;error check routineTHEN ;if ernum<>1 then reportrV<}amtop=lotop ;error to userGraphics(0) nobreak()vdelay()Position(8,11) Print("ERROR #")PrintBE(ernum)Position(8,13) PrintV=}("Press any key")ernum=1GetD(7)FIRETURN;************************************PROC init()hitop=ramtopGraphics(24) nobreV>}ak()screen=smemlotop=Peek(561)-1 dlhi=PeekC(560)Error=ercheckfilename="D1: "RETURN;*************************V?}***********BYTE FUNC menu()BYTE selectionramtop=lotop ;put menu under screenGraphics(0) nobreak()Position(9,8) PrintE("V@}oad Print Shop File")Position(9,10) PrintE("ave File(Atari DOS)") DOPosition(9,12) Print("Make Selection:")selection=GetVA}D(7) selection==&127selection=uppercase(selection)Put(selection)UNTIL selection='L OR selection='SODRETURN(selection);*VB}***********************************PROC showscreen(BYTE option)BYTE mode, jiffy, clock=20;clear screen if option=0ramtop=VC}hitop ;set ramtop for gr.8IF option=clear THEN Graphics(24) nobreak() picflag=0 ;erase pictureELSEPokeC(560,dlhi)FIvdVD}elay()RETURN;************************************CARD FUNC psdir()BYTE x, stat BYTE ARRAY dirbuf(129)CARD sectorrVE}amtop=lotopGraphics(0) nobreak() PrintE(" for next file, to load") PutE() Poke(85,6) PrintE("Filename VF} File Type") PutE() FOR sector=362 TO 392 DO ;read stat=GetSec(1,dirbuf+1,sector);directory IF stVG}at#1 THEN ercheck(stat) EXIT FI fname=dirbuf FOR x=1 TO 4 DO IF fname(1)=0 THEN RETURN(0) FI fnameVH}(0)=15 file=fname+1 Poke(85,6) Print(fname) ;print filenames Print(" ") IF file.bytes<641 THEN PrintE("GraphVI}ic") ELSE PrintE("Screen Magic") FI IF GetD(7)=155 THEN Poke(filename(1),'D) Poke(filename(3),':) VJ} filename(0)=15 MoveBlock(filename+4,fname+1,8) RETURN(file.startsec) FI fname==+32 OD ODRETURN(0);*VK}***********************************BYTE FUNC getcoord()BYTE optionramtop=lotopGraphics(0) nobreak()xpos=0 ypos=0PositioVL}n(8,5) Print("This is a graphic file.")DOPosition(6,7) Print("Enter X coordinate(0-232): ~~~~~~")xpos=InputC()UNTIL VM}xpos<233ODDOPosition(6,9) Print("Enter Y coordinate(0-140): ~~~~~~")ypos=InputC()UNTIL ypos<141OD IF picflag=1 TVN}HEN DO Position(6,11) Print("lear or xisting Screen?: ~~~~") option=GetD(7) option==&127 option=uppercase(option) UVO}NTIL option='C OR option='E OD Put(option) IF option='E THEN DO Position(6,13) Print("Overlay(Y/N)?:") over=GetD(7VP}) over==&127 over=uppercase(over) UNTIL over='Y OR over='N OD Put(over) FI ELSE option='C over='N FI IF optionVQ}='C THEN option=clear ELSE option=intact FIRETURN(option);************************************BYTE FUNC psload(CAVR}RD sector) ;return error #BYTE statCARD offset, seccntoffset=0showscreen(clear)FOR seccnt=1 TO 61DOstat=GetSec(1,screeVS}n+offset,sector) IF stat#1 THEN EXIT FIoffset==+126sector=PeekC(screen+offset);sector linkIF sector=0 OR sector>720THENVT} EXIT FIODercheck(stat)picflag=1RETURN(stat);************************************BYTE FUNC gfxload(CARD sector, option)VU} ;return error #BYTE stat, wait, bak=710, point=709, i, bitsBYTE ARRAY gfxbuf(640), shiftbuf(12)CARD offset, seccntoVV}ffset=0showscreen(option) bak=8 point=0vdelay()FOR seccnt=1 TO 5DO stat=GetSec(1,gfxbuf+offset,sector) IF stat#1 THEN VW}EXIT FI offset==+126 sector=PeekC(gfxbuf+offset);sector link IF sector=0 OR sector>720 THEN EXIT FIODercheck(stat)VX}picflag=1bits=xpos&7 xpos== RSH 3 FOR offset=0 TO 51 DO IF bits#0 THEN shiftbuf(11)=0 MoveBlock(shiftbuf,gfxbuf+offsVY}et*11,11) FOR i=1 TO bits DO shift(shiftbuf) OD IF over='Y THEN overlay(screen+offset*40+xpos+40*ypos,VZ}shiftbuf,12) ELSE MoveBlock(screen+offset*40+xpos+40*ypos,shiftbuf,12) FI ELSE IF over='Y THEN overlay(V[}screen+offset*40+xpos+40*ypos,gfxbuf+offset*11,11) ELSE MoveBlock(screen+offset*40+xpos+40*ypos,gfxbuf+offset*11,11)V\} FI FI ODGetD(7) ;wait for keypressRETURN(stat);************************************PROC saveit()BYTE statramtop=V]}lotopGraphics(0) nobreak()IF picflag THEN Position(15,8) Print("Save Screen") Position(8,10) Print("Insert disk with AtaV^}ri DOS") Position(8,12) Print("Enter filename or .") Position(8,14) Print(filename) Position(8,14) Print("") InputV_}S(filename) showscreen(intact) Close(2) ;just in case Open(2,filename,8,0) stat=BPut(2,screen,7680) IF stat#136 THEN erV`}check(stat) FI Close(2) ELSE Put(253) Position(8,10) Print("No Picture in Memory!") Position(11,12) Print("PressVa} any key") GetD(7)FIRETURN;************************************PROC main()BYTE choice, statCARD start, optioninit()Vb}DO choice=menu() IF choice='L THEN start=psdir() ;get first sector IF start#0 THEN IF file.bytes<641 Vc}THEN option=getcoord() gfxload(start,option);load graphic ELSE psload(start);load picture FI FI ELVd}SEIF choice='S THEN saveit() FI ODRETURNyyyyyyyload graphic ELSE psload(start);load picture FI FI ELT7