@L}5 _$% l0$)$$Hȱ$ UhL" `e$$%`$%`  R@W!( L(1   Y I`  d  Ld M * @  $ % CC$$)%1 Udߥ$9%: !0 S$% DD˙`  }J)Lr 92986921846922606923960127127   }     }   }  ')*,,*.'')*,,*.'')*,,*.'')*,,*.'35653}130.,5653535653130.,5653535653130.,5565353 }5653130.56533,,,,*)'%''' $%,,,,,,*)'%.0.8 }6568<:88865<<8:86568<88865<:855653130.,5565353  }" ,653130.56533,,,,*)'%''' $%,,,,,,*)'%.0.8 }6568<:88865<<8:86568<88865<:8')*,,*.'')*,,*.'')*,, }*.'')*,,*.'1111,,,,*)'%,,''' $%,,,,,,*)'%.0.86568}<88865<<8:86568<88865<:886568<:88865<::86568<8}8865<:8%,%%,$$)%%,$,1..*,*10,,,,,*1},.*,*1.10*1,.*)%1010010*1,.*)*}1010001111$$$$)) ))$$$$)).++111861111861}11861111863*1,.*)%1010010*1,.*)*10}10001111$$$$)) ))$$$$)).++111861111861118}61111863%,'%,$$)%%,$,,,,$$$$)) ))$$$$)).++1}11861111861118611118631118611118611186111186}3"*""* % "* *,,*%% ,,)'')' ,)*%% },*,,%,)*%% ,,,,,,, ,)*%%%,,,,,,},,,,%%%%%%+''...31...,31...31....310%,})*%% ,,,,,,, ,)*%%%,,,,,,,,,,%%%%%}%+''...31...,31...31....310"*""* % "* ))))}%%%%%%+''...31...,31...31....311...31...,}31 "$"}}}     }!} "}   #}$}    %}&}'}<<<<<x<<<<<<x<<<<<<x<<<<<<x<x<<xx<xxxx<x<<xxx(}xx<<xxxxxxxxxxxx<xxxxx<<<xxxxxxxxxxxx<x<xx)}xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx*}xxxxxxxxhxx<<xxxxxxx<<xxx<<xx<xxxxxxxxxx+}xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx,}xxxxxxxx<<<<<x<<<<<<x<<<<<<x<<<<<<x<xxxxx-}xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.}xxxxxxxxxxxxxxxxxxxxxx/}xxxxxxxxxxxxxx<<xxxx<<xxxxxxxxxxxxxxxxxxxx0}xxxxxxxxxxx<xxxx<<xxxxxxxxxxxxx<xxxx<xxxxxx1}xxxxxxxxxxxxxxxxxxxxxxxxxxhxxx2}xxxxxxxx<xxxx<<xxxxxxxxxxxxx<xxxx<xxxxxxxx3}xxxxxxxxxxxxxxxxxxxxxxxx4}xxxxxxxhxxxxxxxxxxxxxxxxxxx5}xxxxxxxxxxxxxxxxxxxxx6}xxxxxxxxxxxxxx<<xxxx<<xxxxxxxxxxxxxxxxxxxxx7}xxxxxx<xxxx<<xxxxxxxxxxx<xxxx<xxx8}xxxxxxxxxxxxxxxxxhxxxxxxxxxxx<xxxx<<9}xxxxxxxxxxx<xxxx<xxxxxxxxxxxx:}xxxxxxxxxxxxx;}xxxxxxxxxxxxxxxxxxxxxxxhxhxhxhx<}xx<xx<xx<xx<xx<xx<xx<xx<xxx<<xx<xxx<<xx<xxx<<xx<x=}xx<<xx<xxx<<xx<xxx<<xx<xxx<<xx<xxx<<xx<xxx<<xx<xxx<<xx<x>}xx<<xx<xxx<<xx<xxx<<xx<xxx<<xx<xxx<<xx<xxx<<xx<xxxx?}xxxxxxxxxxxxx<<xx<x<<xx<x<<xx<x<<xx<@}x<<xx<x<<xx<x<<xx<x<<xx<xxx<<xx<xxx<<xx<xxx<<xx<xxxA}<<xx<xxx<<xx<xxx<<xx<xxx<<xx<xxx<<xx<xxxxxxxxB}xxxxxxxxx<<xx<x<<xx<x<<xx<x<<xx<x<<xx<x<C}<xx<x<<xx<xxx<<xxxxxx<xx<xx<xx<xx<xx<xx<xx<xxxxD}xxxxxxxxxxxxx<<xx<x<<xx<x<<xx<x<<xx<E}x<<xx<x<<xx<x<<xx<xxx<<xxx<<xx<x<<xx<x<<xx<xxx<<xF}x<xxx<<xx<xxx<<xx<xxx<<xx<xxx<<xxNorma Williams 1986G}-)| / 1L!`DESTINATION CANT BE DOIOA@@O@AB L@)$HI}? ?(CG@< A@J}@C |M_Ӡ/@   K} IF`O@"C`(@ !G`( ,7/ AL}BБ"q@`% AV`&pj@#܈`, t('qkepHN~K**O^|BM}:?~ _[V0QQ_/f@ N}C|!@D n 8GD @E QK H(O}\},@$% /@pg @  wd0EP}0!D# -q3h02ф?? ???p@@(?@D >bH Q}~?O<ϘXDD숰p AedQG04d  0 |uT<@kz@$!R}yX?r_{B""@!)@(? a!\" 0` OdJDJhዱҖ`oS}=` T!D8eFD@b!>juy}D? 90" `^l}T}kwB@T" p9>@~,=DpC?{D$2HAz? P@ <n _U}@H/C+!xDs"V?5 #(A + ?V}@@K ~? 8)W@ >W}ˀ@!$  `@?!D}X}4W ` @xgI@%B@fA Y}  R@7 /H"#BJN Z}G _!@ 96r~AP#@~x;#P[}̉48D+`} AF >&@IE@@ G>? 8?\}  *@ q~vIȀLO B 88 ?? ]} p?@ 3 /!C P^}@??@? ?E$@  A`8PG !*qԀ_} !? hzp8@R<@l})A`Fn@`}Ȅ` H t-"^`ZD`9 I4dH%p  ? @?E0#0a}Eˆ /!~?!#? 0@||p@?ab}A? D?@ B("/1/ @R:?%<%>0$2)c}</~A}}|D HD?8hoo{~} -O!$@(}"@$ @x|X?}82?߀8?C p "_}]@p ,8R/7 0 YRP4 ڒy90GQuπ/` ;} < iGO|q# H6o%HT `$G;I@X}d ݵ&y4w! @?%}>(4 VHA@x?,tx@ ,P@#׎?}/Ã?(X^H/ P|}~?<rA?~|@t}~uyo @ ??CD@?8}G@?@$8G8}gߟ} ~nP(F~~݌@H"`7Y;@@<}^(>??@ K}Z? Q ^?߿@$dxx?0} 8?WA D8@r)??} hFZ^޿ @P}30 c0 ("Զݗ[?w_& W6&DFk@&#}>@   @ @O| @^"P}oxk֎@((hDA$ o@}P? D?0?"G }OPAgNI % C {0@ LOOJ@@3'}@ @*? ?@ 6>? x}@ D0À?}pO?@!q" $}q   ? 0@ a O@} 0 @7@p  "@HK}A ?v   @@@  NP !}$$ 3+"Tç"(B#"P58?P '}0rȠ |u FHgfA}'@$Hj@A@?G8}!p=i   cP l 5P&_/} xa@ @{dû@@H@ "PT3@} / | @}TD.APF} ǵ;0}AG͏,D$aA {DP" m } b (@! ?"!D?x@? o}"@ @ A? @?@q?(?}̀  <_ @?C? |C? F`Ȁ@d O 0Rǿ? 0}D@  ?LxA%? }?4_}>?? D`?2@P!%@B@.ց")/_0}?|($ @1?z(k$d V?p@*  }} <x@ _ @ }/ @98ϟ  b}w_O>w}R ^0O +]߈ @ oC!  Dᯧ3  }o@k~(@;a(LI B G{ױHPùA&Js @_@g}(LA B!ƾg߽?ޠF! !?0H&@P }c~( `<Oqwd|Q~?@`C}. ! O]~ &  >]}~oyyka R9'H(~ B,^? A}x@@e8@$4 ?v0)q`! u $B`}?A߀ {?H q}0?' O& A{aD=s+DE KŠX0d } Awp0 @!)4@?x$P}@ D@ Q0H7 !}D" @ߪ?"532)< @c@q nkb@ 0O?_'A$!} ?!?A {Ͽ?}| HuzB}B #1}D/! ^}w6,?y@o"T?~n{<,@+}@ _a?q t4.@0}#~]o~5(3@2h* @_}J@#  qnnP!?x }}^@G|w?_ )O ѽ,N@?}~I ?aOw}?"} @?a@3@H@Ep ?Q9 }ݞa? +|v$-* !zl?`Hg_`I1 X5! %o4?}&4;>;A`{ U? ?? @1!@,_A@?}@ ܟ@H KHJ@2'I @AP' 'p@}@OV&OaS-G=M]|s@wc@[#}@0@E M') _$ } }"K3?^ݿCD&"7аo  "w?HPA}D@ O$B@@" 8ǀa4}Ɖ(A€@ _"( $ O ?>Tæ!} }~0B_w @Lh }+w2=GH"0+_?pC%B,ńE1`@}߁c}<@ .X::!|| Ae10S<=ttBn2J`}P@$߿`/$`>cCP@~(0!>%xv|$~(KB} HPFo@Dh@( L%?~P} @ @@D0G! D@H``?F@@`@@ @}8(E P w#0p  ?K߿~!O}B/<Q :P, ?߇΀|@_90 L`0VoO) }A$ `$VF*K,BO |_<"/*O)# . @`#H O}A $bN0@ h":XnaA C}@dp)"DRp` HABP@0`" @@@A}EgF"\hbD&` @" 1@3H `"P@ @}  P@ B@$$@`&+&A!$Z@1` b!c}zpǀ )$0" !@ĈP@`(@(}a/ 83(!HH @B 4  H@PA8 } O1$@@@! GA 0  D  } ` ,Q *)h  @@@! O @ %   }  @aG$P @`@@D" B ` PR@J  @PtdF }yn C o%ePHH#!iLA& X`D'@ x`aaAD @ } @  D@ @!@@ P@}@ O$  @"(" "H@} P J@0@  @ }@ @ XX@F "E %a@A ( p  } A_@B }}}}?=w?_OK?Wg_7~z}￿'_?z\z?}]}yݷG } HP!B $ BP P!! f @3D$!}L P8@@@wA`!PC Eh PJ Ic!# PD @D& @F`P1 #XBU uA (H"}`0#}S?o{$}%}ߧ! % Ff@ED P&}1@`_*~BC@  `  , 0B@F`'}@@@ 8 #`O@@`H((} @@(@Q(@PA HЙ"N0IB@A Ӏ@ :B)}0  J!!$ HP"CD= "P@`@r@ZoP e @*}@  j T )+a #P@:`! $P)  pxt+} @O(0@a@B HPj+ %"P d&8N"DA 6BC~8}9}@oWr2_~Y~J=,߻*{`:}^z ;} "<}_W.r>H+  y}}~m =}>} EE$Eʱ)E ) b(j lw**p*wtsCO ݁(*݉ ?w@#wtpsO?? @}݂ #܃????w7 wtsCO? 3?݂܃? 0 w7 wtps A}O? ??݄ *܅?0 ? w7p wtsCO??? B} ݃ ݅??? ?30w7 wtpsO? ?? ́ C}  ܃? <??3w wtpsO0?  ? ̂0݁ ܅ D}? ς? ??3w7?????<?Á?݁ ? E}?? 00303wB (? ? <?? ݈*( F}? ? ??ρ?30 wtwtpsO?ς? 0?Ɓ ̅ G}?܃?0? ? ?30?wtsCO????& f& H}? ́݅???3?wsO?? ? I}?0f ́?݃?? ? <?3?wp?? J}0? <&fdBf&݁?ς?  <  w ? K}??&f`F&f@f&f&݁????  w? L}? ?FDB Fd`b`df ? ?  wt?&f M}  ? fd f@fdf& f`a`df   key momentarily to abort most functions - no need } to BREAK the program. If you should accidentally hit the BREAK key, you may effect a WARMSTART by typing, "GOTO 1250". You }r index data will still be intact! With FILE INDEX, you will now have a master record of all your programs, their }filetypes, and which disks they are on.************************************************************************************* }*'"A&67,.' A AAR@(,* Ap*@@ ANAMESSTRTLENGFILELINEFILEBUFINDEINFILOUTFILININBUFLENAMEOUTOUTINAPPNTMPCIOXISTAINDOU}LOCKRETRDRV2USEDUSEDNXTFILFILENFILESCIO2DN2DN1DNDNX@@} }@ !"#$%&}' + A@9;@,6.h V`9PLA/LDX #$10/JSR CIO/RTS9;@,6.h} V`9PLA/LDX #$20/JSR CIO/RTS&&;@,;@,;@ ,*( (*( COPYFILES FAST AND EASY ( (},,($Have you formatted and written a DOS!(file on the new disk! 0Y( Use 2 drivesL-#(Ente}r source disk(DRIVE #)'-6-Q4 4Y0(Enter destination disk(DRIVE #)4VG6.D :*.**67@<@,.=:},G@@`ZZ;@($@,;@(,9@(,9@(,;@0,;@,9@(,a6}/6-@P$P:+I:,&AV,'@P,6;,d.67@,. 67,. .67@,.e""(Enter Y to duplicate }file:j6-t A~@(**7@<@,4SECTORSA3&7@<@,4} DOS SYS)(3 AP3&7@<@,4 DUP SYS)(3 AP3&7@<@,4 MEM SAV)(3 AP}>+7@<@,4BAD AP>IGNORE BAD FILES( dupl(Y/N)? U#@@K:0)}@;@B(>:,U@:Y,AP6-%@7767$@&@<$@,.7@<@,6}7,.7@<@, APSTART UP COPY6-&@@ B(3-@ 68,-}/68,-3 6-@6-@6-77SET UP BUFFER FOR COPY FROM SOURCE TO DESTINATION}6-@x!!A !NO MORE FILES}38,!A3CONTINUE PREVIOUS FILE4 B4FILENO IS SMAL}LEST(ALPHA) FILE INDEX 68,-&&6.7$@&@<$@,;;(INPUT: 7@<@, 7@ <@}, BFIX FILE NAME67@<@,.=:, @@;8,!@}-6-@;6-&@ 68,-68,-COPY FILE TO MEMORY6-) B)READ CHARACT}ERS INTO BUF$"A6A#!%@ ( READ ERROR#&@A; @6-%@1}( ERROR - ; A/,($ERROR AFTER 5 RETRIES, COPY ABORTED./&@END-OF-FILEE (8,T@^6-}%@h!!%@&A%Ar< A <BUFFER DOES NOT HAVE ROOM FOR ANOTHER SECTORBUFFER FULL(}8,*@@%%COPY BUFFER TO DESTINATION DISK6-@&"@A0&BUFFER E}MPTY+ 0Y'(Enter destination disk+ -@8," 6- FIND FILE IN LIST&&6.7$@}&@<$@,::(OUTPUT: 7@<@, 7@ <@, BFIX FILE NAME67@<@},.=:,A! OPEN FILE FIRST TIME @@  A"4RE-OPEN FILE(AP}PEND)>C 0Y(@@ CAPPEND WHEN ONLY 1 DRIVECOPY FILES6- B WRITE }OUT FILEV)0Y@VCLOSE ONLY IF FILE FINISHED, LEAVE OPEN FOR APPEND(2 DRV)6-%@  A 0} CHECK IF FINISHED !A@ & 0Y"(Enter source disk& A!!FINISHED, NOW PROTECT FIL}ES4-@&7<,4*A@ * 4 AP/"@+(Enter destination disk/-@}7<,4 AA&&6.7$@&@<$@,(LOCK:  BFIX FILE NAME67@<@},.=:,((@5@  DONE(Copy complete.-@A %'FIX }FILE NAME' 6.$' 6.D :.'-@@8'7<,4 BB'67B:,%@,.7<,L' t'67B:,}%@,..~'((67B:,%@,.7@ <@,'$*READ INTO BUF$+'AP@'READ CHARACTERS +6}-C:7,,+;$AR&AV$P:'AV,;ASP:'AV, +6-%@&%+S6-A%$P:'A%,SDON'T RE}AD A PARTIAL SECTOR AT THE END OF THE BUFFER*+;$AV&AV$P:'AV,;AWP:'AV,4+6-?:C:,,>+%%6}-F:AV,%AV$F:AW,C++6-F:AQ,(!@*A6+$H+68,-8,%R+ 6-%f+$.WRITE FROM B}UF$.(Af@(WRITE CHARACTERS.6-C:7,,.;$Ah&AV$P:'AV,;AiP:'AV,/ 6-}8,/;$Ar&AV$P:'AV,;AsP:'AV,/6-?:C:,,&/.F:Ag,!@+( WRITE ERROR:.&}0/6-%8,:/$ NGET NEXT(ALPHA) FILE NAME*N##FILENO = INDEX OF LOWEST NAME4N#6-6@#6. ||||||||||||>N}-@HN8,B RN..27$@&@<$@,B \N&&6.7$@&@<$@,fN} 6-Q Q$ D:FILECOPY(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((}(7,,@@-@P 2s6-A $+",%@`$+",%@0$+"@,%@$+"@(* FILELIB.I - Routines to allow the use of standard ATARI I/O calls in KYAN Pascal programs. IOCBUsed - If called} immediately following a pascal Reset or Rewrite call this function will return the number of the IOCB that wa}s used. FileOpen - Exactly like the ATARI Basic OPEN command. FileClose - Exactly like the ATARI Basic CLOSE command}. FileGet - Replace the parameters REC and RECLEN with the name and length of your record and this rout}ine will read one record from the file. FilePut - The inverse of FileGet. FileNote - Exactly like }the ATARI Basic NOTE command. FilePoint - Exactly like the ATARI Basic POINT command. I don't recommend that you mi}x these routines with the standard Pascal I/O routines, though CLOSE might be useful. They were written for use in a } small database program the DEMANDED true random access files. Use them with care as none of the protection provided by }Pascal is present here. *) Function IOCBUsed : Integer; Begin #a LDA $2E ;Get IOCB # LSR} A ;Divide by 16 LSR A LSR A LSR A LDY #3 ;Store in IOCBnum STA (SP),Y I}NY LDA #0 STA (SP),Y # End; (* IOCBUsed *) Procedure FileOpen(IOCBnum,IOdir,Auxbyte : Integer; } Var FileName : String15); Begin #a ICHID EQU $0340 ICDNO EQU $0341 ICCMD EQU $0342 ICSTA EQU $0343 ICBA}L EQU $0344 ICBAH EQU $0345 ICPTL EQU $0346 ICPTH EQU $0347 ICBLL EQU $0348 ICBLH EQU $0349 ICAX1 EQU $034A ICAX2 EQU }$034B ICAX3 EQU $034C ICAX4 EQU $034D ICAX5 EQU $034E ICAX6 EQU $034F CIOV EQU $E456 ; T = LSB of 'FileName' ; }T+1 = MSB of 'FileName' ; T+2 = LSB of AuxByte ; T+3 = MSB of AuxByte (Unused) ; T+4 = LSB of IOdir ; T+5 = MSB of IOdir }(Unused) ; T+6 = LSB of IOCBnum ; T+7 = MSB of IOCBnum (Unused) TXA ;Save X register PHA LDX} #7 ;Copy heap LDY #10 CL1 LDA (SP),Y STA T,X DEY DEX BPL CL1 LDA T+6 ;G}et IOCB # ASL A ;Multiply by 16 ASL A ASL A ASL A TAX ;Move to X register } LDA #3 ;Open command STA ICCMD,X LDA T ;Filename address STA ICBAL,X LDA T+1 } STA ICBAH,X LDA T+4 ;Data direction STA ICAX1,X LDA T+2 ;Aux byte STA ICAX2,X } JSR CIOV ;Do the I/O PLA ;Restore X register TXA # End; (* FileOpen *) Procedure FileC}lose(IOCBnum : Integer); Begin #a ; T = LSB of IOCBnum ; T+1 = MSB of IOCBnum (Unused) TXA ;Save} X register PHA LDX #1 ;Copy heap LDY #4 CL2 LDA (SP),Y STA T,X DEY DEX B}PL CL2 LDA T ;Get IOCB # ASL A ;Multiply by 16 ASL A ASL A ASL A TAX } ;Move to X register LDA #12 ;Close command STA ICCMD,X JSR CIOV ;Do the I/O PLA} ;Restore X register TAX # End; (* FileClose *) Procedure FileGet(IOCBnum : Integer; } Var Rec : RecType; RecLen : Integer); Begin #a ; T = LSB of Length ; T+1 = MSB of Length }; T+2 = LSB of 'Word' ; T+3 = MSB of 'Word' ; T+4 = LSB of IOCBnum ; T+5 = MSB of IOCBnum (Unused) TXA };Saved X register PHA LDX #5 ;Copy heap LDY #8 CL3 LDA (SP),Y STA T,X DEY DEX } BPL CL3 LDA T+4 ;Get IOCB # ASL A ;Multiply by 16 ASL A ASL A ASL A }TAX ;Move to X register LDA #7 ;Get record command STA ICCMD,X LDA T+2 ;Data addr}ess STA ICBAL,X LDA T+3 STA ICBAH,X LDA T ;Data length STA ICBLL,X LDA T+1 } STA ICBLH,X JSR CIOV ;Do the I/O PLA ;Restore X register TAX # End; (* FileGet *) } Procedure FilePut(IOCBnum : Integer; Var Rec : RecType; RecLen : Integer); Begin } #a ; T = LSB of Length ; T+1 = MSB of Length ; T+2 = LSB of 'Word' ; T+3 = MSB of 'Word' ; T+4 = LSB of IOCBnum ; }T+5 = MSB of IOCBnum TXA ;Save X register PHA LDX #5 ;Copy heap LDY #8 CL4 LDA} (SP),Y STA T,X DEY DEX BPL CL4 LDA T+4 ;Get IOCB # ASL A ;Multiply by 16} ASL A ASL A ASL A TAX ;Move to X register LDA #11 ;Put record command }STA ICCMD,X LDA T+2 ;Data address STA ICBAL,X LDA T+3 STA ICBAH,X LDA T ;Data l}ength STA ICBLL,X LDA T+1 STA ICBLH,X JSR CIOV ;Do the I/O PLA ;Restore X regi}ster TAX # End; (* FilePut *) Procedure FileNote(IOCBnum : Integer; Var Sector,Byte : Inte}ger); Begin #a ; T = LSB of 'Byte' ; T+1 = MSB of 'Byte' (Unused) ; T+2 = LSB of 'Sector' ; T+3 = MSB of 'Sector'} ; T+4 = LSB of IOCBnum ; T+5 = MSB of IOCBnum (Unused) TXA ;Save X register PHA LDX #5 } ;Copy heap LDY #8 CL5 LDA (SP),Y STA T,X DEY DEX BPL CL5 LDA T+4 ;Get IOCB #} ASL A ;Multiply by 16 ASL A ASL A ASL A PHA ;Save for later TAX } ;Move to X register LDA #38 ;Note command STA ICCMD,X JSR CIOV ;Do the I/O PLA } ;Get IOCB # X 16 TAX ;Move to X register LDY #0 LDA ICAX5,X ;Get LSB of Byte S}TA (T),Y LDA ICAX3,X ;Get LSB of Sector STA (T+2),Y INY LDA #0 ;MSB of Byte STA (T),}Y LDA ICAX4,X ;Get MSB of Sector STA (T+2),Y PLA ;Restore X register TAX # End; (* }FileNote *) Procedure FilePoint(IOCBnum,Sector,Byte : Integer); Begin #a ; T = LSB of Byte ; T+1 = MSB of Byte} (Unused) ; T+2 = LSB of Sector ; T+3 = MSB of Sector ; T+4 = LSB of IOCBnum ; T+5 = MSB of IOCBnum (Unused) TXA } ;Save X register PHA LDX #5 ;Copy heap LDY #8 CL6 LDA (SP),Y STA T,X DEY } DEX BPL CL6 LDA T+4 ;Get IOCB # ASL A ;Multiply by 16 ASL A ASL A AS}L A TAX ;Move to X register LDA #37 ;Point command STA ICCMD,X LDA T+2 ;LSB }of Sector STA ICAX3,X LDA T+3 ;MSB of Sector STA ICAX4,X LDA T ;LSB of Byte STA} ICAX5,X JSR CIOV ;Do the I/O PLA ;Restore X register TAX # End; (* FilePoint *) TTTT}TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTrLHL`[`lQyff[̭lfUHl[Q}7 THEN IF SAV$(P,P+L-Q1)Q1 THEN 380460 POKE Q559,Q34:? :? "Ԡ}"470 GOSUB Q110:FOR Z=Q1 TO Q500:NEXT Z:GOTO Q820530 POKE Q752,Q1:? "} ϠՠȠϠҠ":? " Š}Šſ٠ҠΩ";:GOSUB Q100:INPUT D$560 IF D$="Y" THEN PSW=Q1:GOTO Q570565 IF D$<>"N" THEN GOTO Q530570 TRAP Q570:? :}? " ҠĢҠԠԠ ":? " ˠĠҠˠҮ";:GOSUB Q100595 INPUT D$:IF D$="END" THEN 830596 }IF LEN(D$)=Q7 THEN GOTO Q570597 IF D$(LEN(D$))<>"A" AND D$(LEN(D$))<>"B" THEN D$(LEN(D$)+Q1)=" "600 IF LEN(D$)<>Q2 THEN 610}605 D$(Q3,Q4)=D$(Q1,Q2):D$(Q1,Q2)=" "610 IF LEN(D$)<>Q3 THEN 625615 D$(Q4,Q4)=D$(Q3,Q3):D$(Q3,Q3)=D$(Q2,Q2):D$(Q2,Q2)=D$(}Q1,Q1):D$(Q1,Q1)=" "625 IF PSW=Q1 THEN ? :? " ҠϠӠŮ"630 DISKS=DISKS+Q1:TRAP Q780:FILE$="D":FILE$(}Q2)=STR$(D):FILE$(Q3)=":*.*":OPEN #Q1,Q6,Q7,FILE$650 FILE$(Q18,Q18)=" ":INPUT #Q1;FILE$:? FILE$,:IF FILE$(Q1,Q1)>"*" THEN GO}TO Q780670 IF FILE$(Q3,Q6)="DOS " OR FILE$(Q3,Q6)="DUP " OR FILE$(Q3,Q6)="Dup " THEN GOTO Q770680 IF FILE$(Q3,Q13)="AUTORUN} SYS" OR FILE$(Q3,Q13)="MENU " THEN GOTO Q770685 IF PSW=Q7 THEN ? 690 SAV$=" ":IF PSW=Q7 THEN 710700 TRAP Q8:POKE Q7}64,Q255:? "PROGRAM TYPE";:INPUT SAV$:IF SAV$="*" THEN 760710 COUNT=COUNT+Q1:LOC=COUNT*Q20-Q19:AREA$(LOC,LOC+Q3)=D$:IF SAV$="}" THEN SAV$=" "730 FILE$(Q19,Q19)=SAV$:FILE$(Q14,Q18)=FILE$(Q15,Q19):AREA$(LOC+Q4,LOC+Q19)=FILE$(Q3,Q18):GOTO Q650760 ? ,," }**Bypassed** ":GOTO Q650770 ? "**Bypassed**":GOTO Q650780 ? :? " ĠƠ٬Ӡˠ":? " TOTAL RECORDS IS N!}OW ";COUNT:POKE Q764,Q255:GOSUB Q110800 FOR X=Q1 TO Q200:NEXT X:CLOSE #Q1:GOTO Q570830 ? :? " Ӡĺ ";COUNT:? ""} ӠԺ ";DISKS:GOSUB Q110:PSW=Q7:FOR X=Q1 TO 400:NEXT X:GOTO Q820910 PG=Q7:LINES=Q7:IF COUNT=Q7 THEN GOTO Q1559#}12 POKE 82,2915 ? "}Position paper so that printing will begin 1/2 inch below perforation. Hit when ready.":IN$}PUT D$930 TRAP 1220:OPEN #Q3,Q17,Q7,"P:":? #Q3;CD$;LM$;LF$;940 GOSUB 1180:X=Q7955 Z=1500:IF COUNT<225*PG THEN Z=INT((COUNT%}-225*(PG-Q1))/Q3+0.7)*Q20965 FOR Y=Q1 TO Q2*Z+Q1 STEP Z:TRAP 1100:FILE$(Q1,Q20)=AREA$(X+Y,X+Y+Q19)990 ? #Q3;" ";FILE$(Q1,&}Q4);" ";FILE$(Q5,Q12);".";FILE$(Q13,Q15);" ";FILE$(Q16,Q19);" ";1000 D$=FILE$(Q20,Q20):IF D$=" " THEN SAV$=" "1010 SAV$=D$'}:GOSUB Q23:GOTO 10851015 IF D$="A" THEN SAV$="AMUSEMENT/GAMES"1017 IF D$="B" THEN SAV$="BUSINESS"1020 IF D$="C" THEN SAV$=(}"COMMUNICATIONS"1023 IF D$="D" THEN SAV$="DIRECTORY"1025 IF D$="E" THEN SAV$="EDUCATIONAL"1027 IF D$="F" THEN SAV$="DATAFI)}LE"1030 IF D$="G" THEN SAV$="GRAPHICS"1037 IF D$="H" THEN SAV$="HOME & PERSONAL"1041 IF D$="J" THEN SAV$="JOYSTICK"1043 I*}F D$="L" THEN SAV$="LANGUAGE"1045 IF D$="M" THEN SAV$="MUSIC"1050 IF D$="P" THEN SAV$="PRINTER PROGRAM"1055 IF D$="S" THEN+} SAV$="SOUND"1060 IF D$="T" THEN SAV$="TEXTFILE"1065 IF D$="U" THEN SAV$="UTILITY"1070 IF D$="W" THEN SAV$="WORD PROCESSOR,}"1075 IF D$="X" THEN SAV$="MISCELLANEOUS"1080 RETURN 1085 ? #Q3;SAV$;1090 IF LEN(SAV$) to continue";:GOSUB Q110:INPUT D$:GOTO Q2501170 FOR I=Q1 TO Q9:? #Q3:NE0}XT I:LINES=Q71180 PG=PG+Q1:IF PG>Q1 THEN ? #Q3;EX$;" Page ";PG:GOTO 12001190 ? #Q3;EX$;" INDEX TO1} PROGRAMS "1200 ? #Q3;CD$:LINES=LINES+Q21202 FOR Y=Q1 TO Q31203 ? #Q3;" DISK# FILENAME EXT SIZE FILETYPE ";:NEXT2} Y:? #Q31210 ? #Q3;" ";:FOR Y=Q1 TO 128:? #Q3;"-";:NEXT Y:? #Q3:LINES=LINES+Q2:RETURN 1220 ? "}":? ,"ΠŠҠΡ3}"1230 GOSUB Q120:FOR X=Q1 TO Q100:NEXT X1250 TRAP Q250:CLOSE #Q3:PSW=Q7:GOTO Q8201260 ? :? ,"ĠΠԠ":GOTO4} 12301300 IF COUNT=Q7 THEN GOTO Q1551305 GOSUB Q24:TRAP 1390:OPEN #Q2,Q9,Q7,FILE$1320 ? "} Type if you want records i5}n memory to replace those in ";FILE$;".":GOSUB Q1201340 INPUT D$:IF D$<>"Y" THEN ? " Closing file.":CLOSE #Q2:GOTO Q826}01345 GOTO Q4301350 C=Q7:FOR X=Q1 TO COUNT:IF PEEK(Q279)=Q3 THEN ? :? "ŠĠԠԠ":GOTO Q3811360 FILE$(Q1,Q7}20)=AREA$(X*Q20-Q19,X*Q20):IF FILE$(Q1,Q1)="*" THEN C=C+Q1:NEXT X:GOTO Q3811370 PRINT #Q2;FILE$:NEXT X1380 CLOSE #Q2:? "}8}";X-C-Q1;"RECORDS WRITTEN":? "";C;"RECORDS DROPPED":FOR X=Q1 TO Q500:NEXT X:GOTO Q8201390 IF PEEK(Q195)=170 THEN GOTO9} Q4301395 IF PEEK(Q195)=144 THEN ? ," 򠱴ˠˡ":GOSUB Q120:FOR X=Q1 TO Q200:NEXT X:CLOSE #Q2:GOTO Q2501400 :}IF PEEK(Q195)=129 THEN GOTO Q4301410 ? ," ɯϠҡ":GOSUB Q120:CLOSE #Q2:FOR X=Q1 TO Q200:NEXT X:GOTO Q25014;}30 TRAP 1390:CLOSE #Q2:OPEN #Q2,Q17,Q7,FILE$:TRAP Q8:GOTO 13501480 GOSUB Q24:TRAP 1580:OPEN #Q2,Q4,Q7,FILE$1500 TRAP 1610:P<}OKE Q559,Q7:SETCOLOR Q2,RND(Q7)*Q9,Q71530 INPUT #Q2;FILE$:COUNT=COUNT+Q1:AREA$(COUNT*Q20-Q19,COUNT*Q20)=FILE$1565 IF PEEK(Q=}279)=Q3 THEN POKE Q559,Q34:CLOSE #Q2:? :? ,"ĠĠԠԠ":GOTO 15901570 GOTO 15301580 TRAP Q8:CLOSE #Q2:POKE>} Q559,Q34:? :? ," ŠԠĠ"1590 GOSUB Q120:FOR X=Q1 TO Q200:NEXT X:GOTO Q2501610 IF PEEK(Q195)<>136 THEN POKE?} Q559,Q34:GOTO 14101620 POKE Q559,Q34:POKE Q752,Q1:? ," ĠƠŠ ":GOSUB Q110:FOR X=Q1 TO Q200:NEXT X1650@} CLOSE #Q2:CLOSE #Q3:GOTO 19401700 GRAPHICS Q2:POSITION Q3,Q3:? #Q6;"ARE YOU SURE??":GOSUB Q1201720 POKE Q752,Q1:INPUT D$:IA}F D$<>"Y" THEN GRAPHICS Q7:GOTO Q8201730 GOSUB Q24:TRAP 1770:XIO 33,#Q3,Q7,Q7,FILE$:? #Q6:? #Q6;"MISSION ACCOMPLISHED":GOSUBB} Q1101760 FOR X=Q1 TO 150:NEXT X:GRAPHICS Q7:GOTO Q8201770 ? #Q6:? #Q6;" FILE IS HIDING":GOSUB Q120:GOTO 17601820 SETCOLC}OR Q2,RND(Q7)*Q9,Q7:POKE Q82,Q7:? "}";:POKE Q752,Q1:? ," ͠٠"1850 ? " Which action do you wish to perform?"D}:? :? " Enter:̠TO LOAD INDEX FROM DISK":? "TO ADD FILES"1875 ? "TO ADD BOOT DISK":? "ĠTO DISPLAY FROM MEMORE}Y":? "РTO PRINT FROM MEMORY"1895 ? "TO SEARCH FOR A PROGRAM NAME":? "TO SORT IN MEMORY":? "TO SAVE INDEX F}TO DISK"1920 ? "TO DELETE DISK INDEX FILE":? "TO DELETE FROM MEMORY":? "ڠTO 'ZERO' MEMORY"1930 ? "TO DISG}PLAY DISK DIRECTORY":? "ŠTO EXIT PROGRAM":? :? "(Hold