' +JJJJ ?\>m0M='+l> /+l   d]@ŵLҦ]]L L}BBL] RͲʎRʎ]]]ɍuL͟ɍ}RLRɍg^H8 ^hZLɍR LͲɊRR% QLܤͲ Z@ -^ ş\[Z QY\[Z8`l6Lş_Ȍb_Ͳ] )Y h( ֝uW ԧ H h@ [_ /QSIRb_L`LLLL`ª`LQLYLeLXLeLee ўQH\(h0L& Ꝥ$`( R \ZLl8 ўR HH\`\Z[YS6`LxQɿu3'Ӝu`".Q`pNФbptťܥm2<(-Py0\|e<6e<g< JJJJj귍hI  aUL@ kU8  L  Q^R(jQ0l^l\  wU H8`?E Vk *f???0xE Hh D#-EEE8` D ܸx D - ܸx8`-0ݩ?ʥD EEE`   vLDcpq` [` ~  Lh@(LH9LHH/Hh/ H-З( ܸ(& ¸$8 H` *HVDP (ED Z $0x8x D- ܸDD#HIHHHHhHH݌hHhHh݌H6 h Լ ռ ռ ռ`HJ>݌h Hh݌`  1#"""  (9"1 ( ,.(0# 2  /#0/#0 *?'#07#00/0/'#07#0:"4<*55/**5/*%5/)1/)1/)1/)'#0/#0*5/*75/**5/*:5//#0/#0'#07#0:::*::'#07#0FG8`0($ p,&"_]` L/浍굺L  !"#$%&'()*+,-./0123456789:;<=>?&Y&&Y& 꽌ɪ\8`&&꽌ɪɖ'*&%&,E'зЮ꽌ɪФ`+*xS&x'8*3Ixix&& 8  '  & x)*++`>J>J>VU)?`8'x0|&HhHh VY)'&Y)xꪽ)' `Hh`V0^*^*>&` aI꽌ɪVɭ穎鷎귭෍ᷩ췩緈JJJJx Lȿ L8ᷭ緍췩 緍i 8 `巬 췌`x (`(8`I`B` `44`ͲLɍ [LLĦ__ ^ 9 LҦ3 9 a   0LjLY u< (_9 ˭ɠuɠK_9 ?LL[dmx-#(# @4͠٠ˠ@跻~!Wo*9~~~~ɬƬ~UVERIF!pppp p p p p`" t""#x"p0p@p@@@p@!y q q p@  LANGUAGE NOT AVAILABLRANGE ERROWRITE PROTECTEEND OF DATFILE NOT FOUNVOLUME MISMATCI/O ERRODISK FULFILE LOCKESYNTAX ERRONO BUFFERS @ȑ@hHȑ@Ȋ@ch8&ȑ@Hȑ@Ah@LHȑ@ȑ@ htphso`hMhL`9V8U897T6S67`INILOASAVRUCHAIDELETLOCUNLOCCLOSREAEXEWRITPOSITIOOPEAPPENRENAMCATALOMONOMOPRINMAXFILEFINBSAVBLOABR^?cqH şch`fhjõĵ@OAP`u@`@&`QR`E Ls  @DAE@u`8` %@ @A@`@`@A`Mµ ) LЦ`8@AWc@8@-@HAȑ@hHn 8ɍ` ^f\õL ^NR  RΩLҦ)\Z ʽ LHv 3h`0h8` [L NС õ`A@` ŵL^L iõ`  \ 濭0 \  ȟ Q ^\lZl3L e3L &RL &QL d L4 Ne)n `@-eff L f`L . tQLѤ LҦL` OPu d L Ne)nooõĵL LLЦ  #-µµ( zegehtpjigh q Ql` z8L`MaEK@>ˆʎõĵL õ ĵµ aµ`` L̦µ_bJLuLz`  ȟ QlXJ̥KlV  ȟ QlV eօ@ NL   L` -e L գsr ࣭ml ࣭srL -µLЦ գ ze)rs zrsLq ] Qlr L̦ գ8gh ࣥhgL գ8LʨM ࣥˤLµH hLħõµ µõL&E`( 80 0 DDLDLDL^ t^`,tP ȟpMt-^^`DH hWLԧ d@` Lꢩ  c ȢL LqLգcl mllm ꢥELȦAD@ C N cLuɠ% d: L ЌĪLR E( 8` R` ELRŪƪ`췌 յյI뷭鷭귭ⵍ㵍跬ª 뷰` Lf ݵܵߵ޵ ^`8ܵ i B8` 4L ֵȱB׵ ܯ䵍൭嵍 ` DȑB׵Bֵ  ַ յյ`굎뵎쵬 뵎쵌``õĵBCõĵ`µµ`L õBĵCصص Qƴ0"Bƴ 4u`浍국䵍뵩嵠Jm赍嵊mjnnn浈m浍浭m䵍䵐`"L ŵ8ŵH ~(`  d ֠4z# 󮜳` 0۰ϬBƴ8`i#`ЗLw!0>ﵭ` m ﳐ 7i볍 8 ЉLw`H h ݲL~ `,SPY'S ADVENTURE347426,24:IGNORE ERRORSZTK0:LT1:ST15:LS15:CDWR:FAST1w490:T1TK:LTTK1:1060610:(BUF)MBLT35LTLT1:TKTK1:1060:1025230:TKT1:LT35:490:610:(TRK)LT1050TK(TRK):ST(SCT):1020 :"DONE":+ $47445,212(TK2(TK2)):L SWAP CONTROLLER FOR MDIIEHTK3:LT35:ST15:LS15:CDWR:FAST1[360:490:610~360:490:610:(TRK)LT1050TK(TRK):ST(SCT):1020:"COPYDONE":'(4)"BLOAD RWTS.MD,A$1900" BLACK MAGIC CONTROLLERJTK1:LT17:ST15:LS15:CDWR:FAST1:MK0Ph190:210:490:610230:490:610:(TRK)LT1050TK(TRK):ST(SCT):1020MK0MK1:10601070$TK18:LT35:ST15:LS15:CDWR:FAST1:1020 .TK0:LT1:ST15:LS15:CDWR:FAST17 847413,255:490:610Z B230:490:610:(TRK)LT1300x VTK(TRK):ST(SCT):1080 :"COPYDONE": 213,170,173,213,170,150 o+J & S SOFTWARE APPLE GRADE BOOK V2.6MTK3:LT35:CDWR:MB151:550rST0:T1TK:490::190:210:170430:100:STST1:ST161030BF1060ST0:TKTK1:TKLT1030$230:TKT1:ST0:490.430:100:STST1:ST161070 8ST0:TKTK1:BF0TKLT1070+ BTKLT1020A L:A$"ALL DONE":n 213,170,150,213,170,173,228,170,228,1702 228, 170 ҠƠ®ύŮРؠƍ٠ŠōŮΠؠ٠ƍŠؠë٠ԫؠ٠àٍԠưٍٍŠÍàëàԫ؍ŠÍӍ Ӡ󮍪ͮͮҠƠӍ͠ѠԠѠҠѠϠѠҠѠ±ŠѠðƠѠӠѠŰɠѠư͠ѠĶҠѠĶÍ̠Ѡķ͠ѠōҠѠűҠѠŷ̠ѠčŠѠҠѠƵ̠ެԠҍР΍ Ӡō٠ЍɍҠӍЍӍ ӠӠӠӠˍӠҍҍҍӠӠčӠӠҠӠӠӠĸΠҠ͍ԍҠ̠ŠҠҠŠŠԧӠǍ٠ӱϩٍҬٍٍ̠ӱٍӲҫٍƫٍٍ٠ҍàӲӳҍƍҠ͍РѠűРѠŲРѠųŠҍűӠÍŲӠÍųÍŮͫŠōҠҍҠ͍Ҡ͍Ҡҍ͍ŮͫؠōͫŮͫҠɍōŮ͍ӠҍӍҠРҍҠҠōҠ̍РҍŮ͠ӠƍӠóӠŠōؠōӠ     ؠЫ٠ӍàҍҍҫàҫҠՍαÍàЍЍàαàЫαЍŠōٮ͠ӠƍŮ͠ӠӠԠŠƫ͠ҠǠϮ͠ӠƍӠӠŠōӠؠōӠӠӠčӠӯӍخ͠Ӡƍή͠ӠƍƍӠƠĮ͠ӠӠƠƍӠ΍Ӡ̠΍Ů͠ӠӠƠƍӠȍӠ̠΍Ů͠ӠӠƠӠ̍Ʈ͠ӠӠƠӠƍӠɭŠӠԠӠΠžȢӠčǠӠԺӠӠȺӠӠͺӠӠҠӍǠӠԠŠԠĢԠӠؠҢԠŠ٢Ԡˠ̢ԠԠƠԠɯϠҢԠŠŠҢԠŠĢŠǠΠ΍ŠȍӠƢŠҍƠΠƠРōӠԢРŠԠ٩ӠūūˠΠĠ٠ϩҠ±ĠӠ΍ƠӠΠҠǍؠ«ЍؠЫαؠ«ŠβРѠββҠιѠαβȍؠύγȍؠύδؠīŠεРčŠεӍεЍؠЫ٠Щٍ؍ٍЩٍЍٍЩٍàȍȍٍЩٍàύύЍ̠γɠγٍЩٍ٠̍ààЍЍàζàЫζؠЫηؠύŠθРȍѠδθҠιѠηιЩٍɠαٍЩٍ̠αٍιЩٍѠαٍЩٍ؍ٍЩٍҫؠҍРīѠαӠααٍٍЩٍÍЍӍàЩٍٍЩٍЍٍЫӫàЩٍЫÍύҠӍŮ͠ӠƍӠóčӠŠōӠؠŠĠөӠǠōӠŠōӠîЭ֠ӠԠŠΠӠРŠԩӠӠРŠԩàӠРӠӠРӠ٠ōŠӠĠ٠ԠŮͫŠōÍŮͫŮͫëŮͫؠŠÍŮͫҠɍōŮ͍àűРҍűҠɍ΍ή͍àŲРҍŲήͫƠŮͫҠɍōŮ͍РōӠҠҍҠҠ̍РѠҮЍРѠҮ΍РѠҮƍРѠҮƍРѠҮƍРѠҮЍРѠҮ̍РѠҮ̍РÍѠҮРčѠҮРѠҮ̍РѠҮЍŠҮύӠҠҍҮƠؠŠԠčӠÍҮΠؠ؍ӠÍҮРؠōӠÍҮ̠ؠˠ̍ӠÍҮؠԠƠӠÍҮϠؠɯϠҍӠÍҮŠؠŠŠȍӠÍҮРؠŠčԠǍ̠ұҠԠŠԍРҍұҠύ٠ƍҲٍǬٍ̠Ҳ؍ŠҲҠԍҳٍǬٍЍҠύЍɠҴРҳҴ΍РƍѠҵҠԍҵҠ̍РòůŠɯϠӍϠؠϱ̬؍Ь؍؍̠ϱӍϠؠϱЬ؍̬؍؍̠ϱӍРōƠҠčҠčҠōÍԍȍԫȍԫ͍ŠԠ͍͍ūŠōǍӍӠō ӠԠԠӍӠ¶ĠҠӍӠà΍Ӡ ύӠ·ōӠōӠ̍Ӡ¸ƍӠԍӠčӠčӠ̍ӠųčӠčӠӍӠƠ׍ӠĵҍӠ؍Ӡ³Ѝ îԭӠƠӍîĭîέîϭîŭîŭî̭îƭîԭîĭîĭî̭îέîĭîӭî׭îҭîЭҠɍčĮ͍Šà̠ƠĠ٬ȍРҍ̠ҠɍōŮ͍ӍŠŠԠìȠΠŮ͍ŠɍƍƮ͍ƮͫҠƍĮͫƮͫĮͫÍĮͫëĮͫƍà«©ٍà«̠ŠԠԍ٠̫Ѝ٠ЫӲ٠Ӳ̍٠̫РΠҠӠčЫР֍ӲЫЍЍ٠Ы̍٠̫РÍԠŠŠǠӍҠǠԠӮҠ̍ҠҠŠŠԧӠǍ٠αϩ٠ҠϠҠҍҬ٠ǠȠٍ̠αٍβҫ٠ĠǍĠƠҠɭԍРàβÍàԠíÍβРˠƠ̠ӠōӠγРҍγРƠӠ̱Ġōà̳ϬϠ̱̍РӠԠà̴ӡРӠԠڍӠ̲Ġōà̳ϬϠ̲̍Р ӠԠڿà̴ӡ̳Ϯ̴ƫٍٍ٠ƠؠȍѠδ٠ҠˠȠōàβŠԍҍƠŠȠƠōδҠԠˠԠԠҍРàӠŠѠӡŠζϮȠөҠ͍Ҡ͠ŠҍҠҠΠԠЍà̠̠ύӠڭŠԍζà̠ϠӍӍԠĠà٠ŠōàРŠĠōҠɍύϮ͍àñРҍñϮͫРЍѠòРҮōòϮͫÍϮͫëӍԠҠΠĠ؍͠ؠЍҠԠԠͬԠΠ؍ؠà͠ƠҍؠЍӠ͠ƠجҍӍ͠РҍԠנؠĠΠ֍ؠ֍ŮͫҠɍōŮ͍àűРנϠ֠΢ѠŲΠŠԠׯϠ֠РנɯϠҍѠŲΠŠƠ٠ōРҍűƫŠӠōĠƠΠԠ֠ƍàƠҠƠƫ٠٠ōҠɍ؍خ͍àŲРҍŲӍĠŠŠԠÍŠҠɍ΍ή͍ӠōήͫҠƠĮͫƮͫҠ̍ РנԍàƮͫРͺԫ΍ͫ«àƮͫ«ԠӠӠϿ٠٠ͫÍ٠ë٠ӠĠàӠӱϬȍРҮ΍ӱҠǠԠϠɭԍҠōÍ͠ƍ̫ӍĮϠ̩٠ҠРҍĮͫȠĮͫҠɍčĮ͍àĮϱҠҍҠōРҮ΍ĮϱƍŠĮϲƠԠԍҠҍҠōҠ̍РҮԠƠĮϲԠɠԍӍƠРŠƱҠҍРύƱӍĠũîĠРԠĠƠҍ̠Ţũî̠ҠҍҠɍٍٮ͍à̱Рҍ̱ӍΠŠȠƠԠͩîΠ٠ԢؠҠԍ٠ؠ͍Íčà Ġ͠ȍ͠ŠΠ͍īà«ͫҠԍؠ٠ƍҠԍРύԠǬٍѠԱҠύٍŠԍԱ؍ٍ؍؍ҠԠԠԠҍРÍĠԠĠŠũîĠؠԠŠҠ͍ؠϠҠō֍ĠҠĠŠ֍ÍҠԠϠԭԍҍ֍֍ĮŠҠؠȠϠנōҠ͠ŠҠԠčРȍӠԠĠŠԩîӠؠԠŠҠ͍֍ĠҠĠԠ֍̍̍̍̍֍֠ŠŠРĮōנԠϠТîנҠύױ٠ױ̍٠̫Рàԍױ̩٠ԠŠҍ͍٠͍ŠԠ͠Ϡ±٠ūҠύҠȍРòԍҠҠΠҠҩîҠҠ٠֍֍ӍТآŠؠנĩîРҠҍҠɍ؍خ͍àбРҍбӍРӠԠŠנĩîРҠɍԍԮ͍ˍԮ͠ӠӠӍĠà͍Ǡ٠«͍٠ͫҠҠԠŬנĠÍàŠӍҠÍ͠ɠԠנԠӠӍÍàÍ؍ͫàëث͍ĮͫƠԠҍĮͫƍĮͫĮύ̍Įύ̫ƍ̍ύӍĠŢîĠҠҍĠҠϠàРũҠàˠŠōҠɍ΍ή͍ήͫΠҠǍР΍ϠŢĠΩîϠ٠ō٠ƍϱūٍƫٍٍ̠ϱƠĠƢàϠ±ƍëҠōҠ΍٠ϳ¬٠ŠǠӍŬٍٍ̠ϳҠǍ«РūˠÍàϴРōàϴѠϴРҮ΍ϴ٠ϵŬٍ¬ٍٍ̠ϵҠԍРԍŠŢîŠҠҍ٠«Í٠ëÍčàŮͫԠŠȍīà«ŮͫàŠӍРōŠŢԬȠũîŠҠҍӠűĠӍРҮ΍ű͠ԠҍÍͫëҠԠȍ͍ŮͫԠĠȍͫŮͫŠ΍Рō̠ŢĠĩî̠ҠҍЍŠ΍ҠÍЍà̱ŠԠÍ٠Í٠ë̱РōƠŢŠŠˠԠũîƠҠҍӠƱԠŠŠ΍РҮΠȠԧӠĩƱŮͫŮͫ±ĠҠƠ±ŮͫҠɠŠԠōōҠɍōŮ͍àƲРҍƲӍԍîԠҠҍҠύҠàˠŠōҠɍ΍ή͍ήͫŮͫƠԠҍŮͫƍŮͫҠɠĠōƍƮ͍ҠɍˍƮ͠ĠōԮύ̍Ԯύ̫ҠϠԠΠǍ̍ҍ̫ӍԮϠŠӍĠƠԠӠŠɭԍƠ芊ōŮͫŮͫҠɍōŮ͍؍ٍӍҠŠӬŠύҠ̍ҠˠȠӍ٠ҩٍ؍ٍҩٍҠԍРύĠŢĠîĠҠǍРòΠŢĠƍҲàҲԠҠΠōٍԱҩٍҠԍٍ٠ҲàԱԠȮȠ٠ԠӠԠƠ͍àѠŠ͠ӠԍҠ³ƠӠΠРƍȠ٠ӱР¬ٍѠӲĠčٍ٠ĠƠӿŠӱԠԍ֠РƵӠĠ٠ҍӲٍ̍«٠РΠҍ¬ٍҠ̠ΠŠԠ̠΍РԠԠҍԠǩîԠРõӠԠŠԢѠԱӍРҮΠϬҍԱҠɍ؍خ͍ƠӠŠؿŠԲРҮύ٠ԲԬٍҠύٍ٠àԲҠɍ΍ή͍ήͫĮͫƮͫƍĮͫҍƍĮͫĮͫĠȍĮͫҠɍčĮ͍àԳРҍԳӍЍԠƠŠӍҲ΍΍ҠƠӯҍҍӍƫҍƫҫԴҠĠŠҠϠԠٍҠԠԠԍàЍŠԵҠΠԠҠٍӠ٠ӍЍԵàҲ̠ſŠԴϬŠǍҠ̠ŠӍРԍĠàҍѠԍҍÍà΍ҍҫàҫı٠ҩٍѠĠĬ٠΍ӍԠҠɍčĮ͠ĠҍàԱРҍԱƫҍƫҫӍҍŠıȠөԠ٠ӠŠٍҩٍРԍѠűР΍ѠŲРƠҍѠųРàӍѠŴРƠӍѠŵŠŶҠȠөűԫӠàԠŠРԍŲ«ӠÍųīӠÍŴӠÍŵӫӠÍŶҠϠԠҍҠÍ٠ԠƠӍҩٍ؍ٍҩٍٍŠͳԠȠǠӍ°ؠӠͱҠύͱؠӠͲҠύͲͳҠԍҠÍԠ٠ҩٍĠ̍٠̫РîנԠԍԲؠԳŬ؍̬؍؍̠ԳРĠРȠàōǠӠӠӠͮͮǠӠŠؿŠԠӬōҠؠŠŠؠԍԠؠԱ̬؍Ŭ؍؍̠ԱԲ٠ԲƍӠӠͮͮȠѠڭŠӍ̠Ѡ̠Ѡ̠Ѡ͠ѠҠѠؠѠō Ѡ Ѡ ѠĠѠčРѠƍŠѠΠѠ ѠƍӠѠҠѠҠѠРѠčȠѠƍԠѠ±ԠѠ·ϠѠĠѠƍǠѠĸǠѠƲҠѠҲѠÍҠѠōҲѠƍԠѠɠ̠ӍŠѠŠѠð٠ѠñϠѠôŠѠõؠѠöؠѠ÷ΠѠøĠѠŠѠŠѠÍˠѠōƠѠıӠѠӯΠԩ͠Ѡ±ƠѠ±ӠРũƠѠ°ӠΠũΠѠƫҠѠƫԠѠƫɠѠư֠ѠƳРѠƵǠѠƹĠѠðŠӍĠѠð͠Ѡð٠ѠóԠѠƵԠӍՠѠijˠҍҠѠĴҠҍ֠ѠĴƲϠԠӍȠѠĶ Ԡ׍ΠѠĵԠ΍àѠĶàԠҍԠѠĶԠҠϠǠԍԠѠķIJԠύàѠµԠōԠѠµԠΠˍϠѠµàԠҍϠѠ ԠҾ͠ѠĶŠΠөҠѠĶàŠΠҩ̠Ѡķ ŠΠ٩͠ѠŠˠҠΠҠàѠŰàԍòѠŰàԍҠѠűԠٍ̠ǠѠŴԠѠŶƸŠΠөҠѠŷԠàϠŠԍԠѠıԠˠΠآԠѠIJԠŠؠөԠѠ¶ƠҠӍ̠ѠčŠѠõΠѠİÍŠѠԠѠčĠѠŸĠѠŹҠѠƵРōҠƠӠРÍҍàŠ͠؍ҫϠ³٠٠Ҳ³ҲؠŠӍбҩٍҲٍٍŠбàҫàҲ؍ŠбؠҠӠРñ¸¹ƍЬ؍؍Ơ³·Ь؍؍ӠЬ؍؍̠Ӎ٠ƠЍ͍čòԠԬͬčƲòƳҠԍҠΠӠԠō٠ԠǬٍѠ؍ìٍٍŠԍؠ֍֍                                                        4z#???????? Ӡӳ ӳ !ҠĠ"ŮàҠĠӮŮԠqӮŮԠ  àҠĮԮήŠˠֲήˠàήҠӠŠή٧ӠŠήҠӠήɯǠԯ   ͠٠ˠŮŮӠ`ŮŮӠ Ӯ͠ ƠӮΠҠ8(ST6UVk,ȱk-`),-`G ::63000]Y140:"=";::qX;:5:A$(X):(" "X" ";:6:(A$(X),15):2X" ";:5:(NA$(X),8,15):<1:20:22:20:34,1:2:FP33,21:32,19:1:1:: U33,40:32,0:23:1::U Z85:23:"IS YOUR PROGRAM LISTED HERE? Y/";::"N";::" ";:A$:w dA$"Y"MAXN1:N105::2000 n23:958:34,1:35,21::35,24: 60:X0 N1105 ((NA$(N),8,1))652000 ((NA$(N),8,1))61N105:2000 ((NA$(N),8,1))942000! XX1: A$(X)(NA$(N),8,30)T T(X)((NA$(N),2,1))h X21İ30:2000 X21X61X101İ80 X41İ40:2000 $X41X81İ90 .X61İ30:2000 8X81İ40:2000 BX101İ30:2000 L40  MAXX 85:34,22 23:958T "SELECT A FILE BY NUMBER -->";A$:A(A$):AMAX2010_ A1Ĭ} :::T(A)66T$"BRUN " T(A)84T$"EXEC " T(A)65T(A)73T$"RUN " 23:T$A$(A) 23:D$T$A$(A)  NAME$(105),A$(105),T(105) "X138:B$B$"=":3 ,X10511:NAME$(X)B$:I 6NAME$(0)(B$,19)U @D$(4)} E12:12:"READING CATALOG ":12:29 Y63075 ^2054:D$"CATALOG" c216,0:D$"PR#0":D$"IN#0": h(NA$(0),1)" "Ģ12:868:"!!! ERROR - UNABLE TO READ DIRECTORY !!!": |:1000 SNOOPER TROOPS CONTROLLER9TK0:ST0:LT9:CDWRHT1TK:490Q220fTK2Ĺ47445,187{TK3Ĺ47505,237$430:100:STST1:STDOS1060.BF10908ST0:TKTK1:TKLT1030B490:230LTKT1:ST0 V430:100:STST1:STDOS1110* `ST0:TKTK1:BF0TKLT1110: jTKLT1020b tTK10:ST0:LT35:CDWR:ZV10ī1160r ~ZV10:1020 :"COPYDONE!":     YKSWL+1JMPC.NEWINITAPPLESOFT*EXIT2LDX#$03EXIT3LDAVARSAVE,XSTACSWL,XDEXBPLEXIT3(JMPBOOTREADSTARTUPWITHEXECFILE*5TITLEMSG.AS-"ProDOSRDOSv1.0byM.M.McFadden" .HS00**STARTOFPROGRAM] .LIF**ProDOSRDOS2.1**byM.M.McFadden*August1987v1.0*CH.EQ$24Z-PAGEEQUATESBASL.EQ$28CSWL.EQ$36KSWL.EQ$38LINNUM.EQ$50STRSCR.EQ$55INDEX.EQ$5ETEXTTAB.EQ$67VARTAB.EQ$69ARYTAB.EQ$6BSTREND.EQ$6DFRETOP.EQ$6FMEMSIZE.EQ$73CURLIN.EQ$76SCRUB.EQ$8FHIGHDS.EQ$94HIGHTR.EQ$96LOWTR.EQ$9BDSCTMP.EQ$9DFACMOH.EQ$9FCHRGET.EQ$B1CHRGOT.EQ$B7FACMO.EQ$A0PRGEND.EQ$AFERRFLG.EQ$D8TRACEFLG.EQ$F2 PTR.EQ$FA PTR2.EQ$FC CTR.EQ$FE CTR2.EQ$FF *!QUIT.EQ$65MLICALLNUMBERSGETTIME.EQ$82CREATE.EQ$C0DESTROY.EQ$C1GETINFO.EQ$C4ONLINE.EQ$C5SETPREFIX.EQ$C6GETPREFIX.EQ$C7OPEN.EQ$C8READ.EQ$CAWRITE.EQ$CBCLOSE.EQ$CCSETMARK.EQ$CEGETEOF.EQ$D1*+SCRFILES.EQ$1420FILES/SCREEN(&CAT)HIMEM.EQ$B100-DATBUF.EQ$B100$200BYTES(TMPSTORAGE), FILEBUF.EQ$BB00$400BYTES(OPENFILE)!NAMELEN.EQDATBUF+$23"FILESPER.EQDATBUF+$24#FILECOUNT.EQDATBUF+$25$MLI.EQ$BF00%LASTDEV.EQ$BF30&BITMAP.EQ$BF58'PREFLG.EQ$BF9A(*")KBD.EQ$C000FIRMWAREEQUATES*CLRKBD.EQ$C010+ROM.EQ$C082,EIGHTY.EQ$C300-*&.AMPVECT.EQ$3F5APPLESOFTEQUATES"/MBLTU.EQ$D39ABLOCKTRANSFER!0ERROR.EQ$D412ONERRHANDLER&1APCONV.EQ$D4F2REDOAPSOFTHOOKS2SCRTCH.EQ$D64BAPSOFTNEW3RUN.EQ$D566APSOFTRUN!4CLEARC.EQ$D66CAPSOFTCLEAR-5STXTPT.EQ$D697SETTXTPTRTOPROGSTART 6NEWSTT.EQ$D7D2APSOFTGOTO"7OUTSPC.EQ$DB57PRINTASPACE*8OUTQST.EQ$DB5APRINTAQUESTIONMARK%9OUTDO.EQ$DB5CPRINTACHARACTER:CRDO.EQ$DAFBPRINT.;FRMNUM.EQ$DD67EVALUATEEXPRESSION(#'S).<CHKSTR.EQ$DD6CEVALUATEEXPRESSION(STR).=FRMEVL.EQ$DD7BEVALUATEEXPRESSION(ANY)->CHKCOM.EQ$DEBELOOKFORANDEVOURCOMMA#?BASIC.EQ$E000BASICCOLDSTART$@BASIC2.EQ$E003BASICWARMSTART+AILLERR.EQ$E199PRINTILLEGALQUANTITYBGARBAG.EQ$E484.CGETBYT.EQ$E6F8EVALUATEEXPRESSION(#'S).DGETADR.EQ$E752CONVERTFACTO2-BYTEINT(EINPRT.EQ$ED19PRINT"BREAKINX".FLINPRT.EQ$ED24PRT2-BYTE#(X&A-REGS)G*&HSETRESET.EQ$FB6FMONITOREQUATESIBELL.EQ$FBDDJHOME.EQ$FC58KKEYIN.EQ$FD0CLPRBYTE.EQ$FDDAMCOUT.EQ$FDEDNSETKBD.EQ$FE89OSETVID.EQ$FE93PMONITOR.EQ$FF59Q*R*STARTUPCODES*T.OR$2000U.TFPDOS0VSTARTUPLDA#RELOC WSTAPTR#XLDA/RELOCRELOCATEFROM$20XXYSTAPTR+1TO$B300 ZLDY#0 [STYPTR2 \LDA#$B3]STAPTR2+1^LDX#$08RELOCATE8PAGES_*`STARTUP1LDA(PTR),YaSTA(PTR2),YbINYcBNESTARTUP1dINCPTR+1eINCPTR2+1fDEXgBNESTARTUP1h*iLDX#$17CLEARSYSBITMAPjLDA#$C1B8-B9,BFkSTABITMAP,XlDEXmLDA#$1FB3-B7nSTABITMAP,XoDEX pLDA#0qCLRBITSSTABITMAP,XrDEXsBPLCLRBITS#tLDA#0FORMERLY$CF(0-2,4-7)uSTABITMAPv* wLDAROMxLDACLRKBD$yLDA#BASIC2SETRESET,ROM,KBD zSTA$3F2{LDA/BASIC2 |STA$3F3}JSRSETRESET~JSRBEGINRDOSINITCODE LDY#0TITLEPRTLDATITLEMSG,YBEQISPREFIXSTA$52C,YINYBNETITLEPRT*ISPREFIXLDALASTDEVSTACURDEV"LDAPREFLGISTHEREAPREFIX?BNEEXITYES,CONTINUE'JSRNEWPREFIXMAKESUREPREFIXSET*EXITLDX#$03EXIT1LDACSWL,XSTAVARSAVE,XDEXBPLEXIT1LDA#EXIT2LDY/EXIT2 STAKSWLST                              LDAVARTABCMPVARSAVEBCCGOTO4BEQGOTO4JMPERR.SYN*GOTO4LDY#$07GOTO5LDAVARSAVE,YSTAVARTAB,YDEYBPLGOTO5JSRSTXTPTJMPNEWSTT**&SAVE"FILENAME"*C.SAVEJSRGETINSTRLDATEXTTBY&USR* DIS2TYAASLTAY'LDAJMPTAB+1,YSETUPRETURNVECTORPHALDAJMPTAB,YPHA)JSRCLOSEALLINCASETEXTSTILLOPENJMPCHRGETEATCHAR**&CAT(CATALOG)*$C.CATCMP#$C5ISNEXTONE"AT"?BEQCAT1YESJMPERR.SYNNO,ERRORCAT1JSRMLI.DA#GETPREFIX.DAPREFIX.PRM#LDANAMEBUFISTHEREAPREFIX? BNECAT2JMPERR.IO* LDY#0CAT2LDACATTEXT,YJSROUTDOINY CPY#$24 BCCCAT2* JSRMLI.DA#OPEN.DAOPEN.PRMLDAOPEN.PRM+5STAREAD.PRM+1STAGETEOF.PRM+1*LDA#DATBUFSTAREAD.PRM+2DATABUFFERLDA/DATBUFSTAREAD.PRM+3 LDA#0$STAREAD.PRM+4REQUESTEDLENGTH LDA#$02STAREAD.PRM+5* JSRMLI.DA#READ.DAREAD.PRM BCCCAT3JMPPROERR*CAT3LDA#SCRFILES STATEMP$LDAFILECOUNT#OFACTIVEFILES STACTR2LDANAMELENSTAHOLDLEN LDAFILESPER#OFFILES/DIR STACTRSTADIRFILESLDA#DATBUF+$04 STAPTRLDA/DATBUF+$04STAPTR+1*,CAT4JSRGETVALIDMOVEPTRTONEXTENTRYJSRFIPRINTPRINTIT DECTEMP BNECAT5JSRKEYINWAITFORKEY!LDA#SCRFILESEVERY18FILES STATEMPCAT5DECCTR2ALLDONE? BNECAT4NO,SOMEREMAININGJSRCLOSEALLCLOSEFILESJMPCHRGET*GETVALIDDECCTRBEQGETNEXT LDAPTRCLCADCHOLDLEN STAPTRLDAPTR+1 ADC#0STAPTR+1*GETVALID1LDY#0LDA(PTR),Y$BEQGETVALIDDELETED,TRYAGAIN RTS * GETNEXTJSRMLI .DA#READ .DAREAD.PRMREADANOTHERBCCGETNEXT1JMPPROERRGETNEXT1LDA#DATBUF+$04 STAPTRLDA/DATBUF+$04STAPTR+1LDADIRFILES STACTR"BNEGETVALID1(BRANCHALWAYS)*&FIPRINTLDY#$10PRINTSFILEENTRYLDA(PTR),YCMP#$04TXTBEQTYPE1CMP#$06BINBEQTYPE2CMP#$0FDIRBEQTYPE3 CMP#$FCBAS!BEQTYPE4"CMP#$FFSYS#BEQTYPE5$$BNETYPE6OTHER(BRANCHALWAYS)%TYPE1LDA#'T+$80"&.HS2CBITOPCODE-SKIPREST'TYPE2LDA#'B+$80 (.HS2C)TYPE3LDA#'D+$80 *.HS2C+TYPE4LDA#'A+$80 ,.HS2C-TYPE5LDA#'S+$80 ..HS2C/TYPE6LDA#'?+$800JSROUTDOPRINTCHARACTER1JSROUTSPC2*3LDY#$13GET#OFBLOCKS4LDA(PTR),Y5TAX6INY7LDA(PTR),Y8TAY(9BNEFORM3PRINTWITHLEADINGZEROES :LDA#$B0 ;CPX#$0A<BCSFORM1=JSROUTDO>FORM1CPX#$64?BCSFORM2@JSROUTDOAFORM2LDA#00BFORM3JSRLINPRTCJSROUTSPCD*ENAMEPRTLDY#0FLDA(PTR),Y GAND#$0F HSTAPTR2!IINCPTR2ADJUSTFORLENBYTEJINYKNAMEPRT1LDA(PTR),Y LORA#$80 MJSRCOUTNINY OCPYPTR2PBCCNAMEPRT1Q*RLDA#30PRINTLENGTH...%SSTACHMAYNOTWORKWITH80-COLS TLDY#$15ULDA(PTR),YVTAXWINYXLDA(PTR),YYJSRLINPRT ZJMPCRDO[*#\*&LOAD"FILENAME"{,LOADADDR}]*^C.LOADJSRGETBASPRG_JMPBASIC2`*"a*&RUN"FILENAME"{,LOADADDR}b*cC.RUNJSRGETBASPRG dJMPRUNe*+f*&GOTO"FILENAME"{,LOADADDR}(CHAIN)g*hC.GOTOLDYCHAINAMEiSTYNAMEBUFjGOTO1LDACHAINAME+1,YkSTANAMEBUF+1,YlDEYmBPLGOTO1n*"oLDA#DATBUFREAD"CHAINSTUFF"pSTALOADLOCINTO$B100qLDA/DATBUFrSTALOADLOC+1sJSRREADFILEt*uJSRCHAIN vLDY#$07)wGOTO3LDAVARTAB,YSAVEPROGPOINTERSxSTAVARSAVE,YyDEYzBPLGOTO3{JSRGETBASPRG|LDAVARTAB+1 }CMPVARSAVE+1CHECKLOADLOC~BCCGOTO4*(RELOC.EQ*RELOCATEFROMTHISPOINT.OR$B300.TFPDOS1BEGINJMPSETSTUFFDISPATCHLDY#00DIS1CMPCOMTAB,YBEQDIS2FOUNDCOMMANDINYCPY#19ENDOFCOMMANDS?BNEDIS1NOTYET)NOTSERVJMP$FF58RTSCHANGEDrJSROUTDOsINYtBNELENPRINTuLENPRT1LDA01,XvTAY wLDA00,XxTAXyTYA$zJSRLINPRTPRINT2-DIGITNUMBER{JMPOUTSPC|*(}*&D#,NEXTCOMMMAND(CHANGEDRIVE)~*C.DLDX#$03MUSTBE<3JSRGETSPNUMDEXZEROOTART,LENGTH(BSAVE)*C.STOREJSRGETINSTR"BCSSTORE1NEEDEXTRAGOODIESJMPERR.SYN STORE1LDALINNUMSTARTADDRSTALOADLOCLDALINNUM+1STALOADLOC+1JSRGETEXTRAGETLENGTHLDALINNUM)STAWRITE.PRM+4SETREQUESTEDLENGTHLDALINNUM+1STAWRITE.PRM+5LDA#$06TYPE=BINJMPWRITEFILE*-*&RECALL"FILENAME"{,LOADADDR}(BLOAD)*C.RECALLJSRGETINSTRPHPLDA#$06TYPE=BINJSRGETLDLOCPLP$BCCRECALL1USEDEFAULTLOADLOC LDA$50 LDY$51STALOADLOCSTYLOADLOC+1RECALL1JMPREADFILE*4*&DEF"FILENAME",SIZE(CREATEBLANKTEXTFILE)*C.DEFJSRGETINSTR"BCSDEF1MUSTHAVESIZE(EVEN%JMPERR.SYNTHOUGHIT'SIGNORED)DEF1LDA#$04STACREATE.PRM+4 LDA#0STACREATE.PRM+5 LDA#$B1LOADADDROF$B100STACREATE.PRM+6* JSRMLIUPDATECURRENTTIME.DA#GETTIME .DA$0 JSRMLI.DA#CREATE.DACREATE.PRM BCCDEF2JMPPROERR DEF2RTS* *&PRINT*C.PRINTJSRGETINSTRJSRSAVEIO LDA#$04!JSRGETLDLOCCHECKFILETYPE JSRMLI.DA#OPEN.DAOPEN.PRMLDAOPEN.PRM+5STAWRITE.PRM+1*LDA#DATBUFSETBUFFERSTAWRITE.PRM+2LDA/DATBUFSTAWRITE.PRM+3*JSRMLIAPPENDFILE.DA#GETEOF.DAGETEOF.PRM JSRMLI.DA#SETMARK.DAGETEOF.PRMAPPENDFILE*LDA#PRINT.IO STACSWLLDA/PRINT.IOSTACSWL+1'LDA#CLOSERRNOINPUTWHENWRITING STAKSWLLDA/CLOSERRSTAKSWL+1RTS*PRINT.IOPHASAVEREGS$AND#$7FTEXTFILESHAVEHI-BITSTADATBUFCLEAREDTYAPHATXAPHA*LDA#$01WRITEONEBYTESTAWRITE.PRM+4 LDA#0STAWRITE.PRM+5 JSRMLI.DA#WRITE.DAWRITE.PRM*PLATAXPLATAY PLA RTS *& CLOSERRPHACLOSEFILES,RETOREIO JSRCLOSEALLJSRRESTIOPLARTS**&READ"FILENAME"*C.READJSRGETINSTR+BOOTREADJSRSAVEIO(EXECSTARTUPFILE) LDA#$04!JSRGETLDLOCCHECKFILETYPE JSRMLI.DA#OPEN.DAOPEN.PRMLDAOPEN.PRM+5STAREAD.PRM+1*LDA#DATBUFSETBUFFERSTAREAD.PRM+2 LDA/DATBUF!STAREAD.PRM+3"*#LDA#READ.IO $STAKSWL%LDA/READ.IO&STAKSWL+1'LDA#CHECKEOF (STACSWL)LDA/CHECKEOF*STACSWL+1+RTS,*-READ.IOLDA#$A0.STA(BASL),YCOVERUPCHAR /LDA#$010STAREAD.PRM+4LENGTH=1 1LDA#02STAREAD.PRM+53* 4JSRMLI5.DA#READ6.DAREAD.PRM7BCCREAD.IO18JSRCLOSERR9JSRPRBYTE:JMPERR.SYN;*<READ.IO1LDADATBUF=BNEREAD.IO2EOFNOTHIT>JSRCLOSERR?JSRPRBYTE @JSRBELLAJMPERR.DATAOUTOFDATA BREAD.IO2ORA#$80SETHIBITCRTSD*ECHECKEOFCMP#0FBNECHECKEOF1GJSRCLOSERRHJMPRESTIOICHECKEOF1RTSJ*K*&END(CLOSE)L*MC.ENDLDA#0 NJMPCOUTSENDEOFCHARACTERO*P*&DEL"FILENAME"(DELETE)Q*RC.DELJSRGETINSTR SJSRMLIT.DA#DESTROYU.DADESTROY.PRM VBCCDEL1WJMPPROERR XDEL1RTSY*2Z*&LEN(DETERMINELENGTHOFAPPLESOFTPROGRAM)[*\C.LENLDY#0"START"]LDX#TEXTTAB^JSRLENPRINT_* `LDY#$07aLDX#LINNUMbSECcLDAPRGEND$dSBCTEXTTABFINDPROGRAMLENGTHeSTALINNUMSTOREINLINNUMfLDAPRGEND+1gSBCTEXTTAB+1hSTALINNUM+1iJSRLENPRINTj* kLDX#$69 lLDY#$0FmJSRLENPRINT nJMPCRDOo*pLENPRINTLDALENMSG,YqBEQLENPRT1ABLDYTEXTTAB+1STALOADLOCSTYLOADLOC+1SECLDAPRGENDSBCTEXTTAB$STAWRITE.PRM+4SETSAVELENGTHLDAPRGEND+1SBCTEXTTAB+1STAWRITE.PRM+5LDA#$FCTYPE=BASJMPWRITEFILE*,*&STORE"FILENAME",SFOO.DAGETINFO.PRMPBCCGETLDLOC1QJMPPROERRR*SGETLDLOC1LDAGETINFO.PRM+4 TCMPTEMPUBEQGETLDLOC2VJMPERR.TYPEWGETLDLOC2LDAGETINFO.PRM+5XSTALOADLOCYLDAGETINFO.PRM+6ZSTALOADLOC+1[RTS\* ]*GETNUMBER*&S#,NEXTCOMMAND(CHANGESLOT)*C.SLDX#$08MUSTBE<1JSRGETSPNUMLDACURDEVAND#$80CLEAROLDSLOT#STACURDEVTXAASLASLASLASLORACURDEVSTACURDEVASSUMEDRIVE1JMPSD.DONE**&NEW(EQUIVALENTTO"FP")*C.NEWJSRSAVEIOLDA#NEW1LDY/NEW1 STAKSWLSTYKSWL+1JMPBASICCOLDSTART**NEW1STA(BASL),YOUTPUTTHECHARACTERLDA#HIMEMLDY/HIMEM%STAMEMSIZERESETHIMEMTO$B100STYMEMSIZE+1*JSRRESTIOJSRSCRTCHJMPBASIC2WARMSTART*%*&USRADDR(CHAINUSER&VECTOR)*C.USRJSRGETEXTRA1STYNOTSERVSTANOTSERVRTS*.*&P"PREFIX"(CHANGEPREFIX-NEWCOMMAND)*C.PJSRGETINSTR JSRMLI.DA#SETPREFIX.DAPREFIX.PRM BCCP1JMPPROERR P1RTS*,*&STOP(PRODOSQUITCODE-NEWCOMMAND)*C.STOPJSRMLI.DA#QUIT.DAQUIT.PRMBRKQUIT.PRM.HS04 .HS 0**SUBROUTINES**READBASICPROGRAM*GETBASPRGLDATEXTTABLDYTEXTTAB+1STALINNUMSTYLINNUM+1(JSRGETINSTRGETNAME,NEWLOADLOC*LDA#$FCTYPE=BASJSRGETLDLOC(LDALINNUMIDONTKNOWWHATTHISISSECSBCLOADLOCSTAINDEXLDALINNUM+1SBCLOADLOC+1STAINDEX+1*LDALINNUMLDYLINNUM+1STALOADLOCSTYLOADLOC+1!CPY#$08ISLOADLOC<$800?BCSGETBAS1NO,BRANCHJMPERR.SYN**GETBAS1LSRERRFLGSHIFT1INTOHI-BITJSRREADFILECLCLDALINNUM STATEXTTABSETUPNEWSTART+ADCGETEOF.PRM+2SETUPLOMEM:START+LENSTAVARTABLDALINNUM+1STATEXTTAB+1ADCGETEOF.PRM+3STAVARTAB+1*LDA#0WHATDOESTHISDO?? LDY#$FFDECTEXTTAB+1STA(TEXTTAB),YINCTEXTTAB+1*LDACSWLSAVEINPUTVECTLDYCSWL+1STAIOKEEPSTYIOKEEP+1LDA#GETBAS2LDY/GETBAS2 STACSWLSTYCSWL+1PLA'STATEMPRETURNVECTORGETSKILLEDPLASTATEMP+1JMPAPCONV*GETBAS2LDATEMP+1 PHA LDATEMP PHA LDAIOKEEP LDYIOKEEP+1 STACSWLSTYCSWL+1JMPCLEARC***GETFILENAMESTRING&EXTRAGOODIES*GETINSTRLDA#$55&STA$52SOMETHINGABOUTSTRINGS..JSRFRMEVL'JSRCHKSTRMAKESUREIT'SASTRING* LDY#$022GETIN1LDA(FACMO),YPOINTERTOSTRDESCRIPTOR%STASTRSCR,YSTRINGSCRATCHAREADEYBPLGETIN1INY'GETIN2LDA(STRSCR+1),YREADSTRING AND#$7FCLEARHI-BIT !CMP#$60"BCCGETIN2.5#SEC$SBC#$20CONVERTLC->UC.%GETIN2.5CMP#$20CHECKIFLEGALRDOSNAME&BCSGETIN3'JMPILLERR(*)GETIN3CMP#$2F/-9?*BCSVAL1COULDBE+BCCVAL3NO,TOOSMALL,VAL1CMP#$3AISIT0-9?-BCCVAL4YES!.CMP#$41ISITA-Z/BCSVAL2COULDBE0BCCVAL3NO,TOOSMALL1VAL2CMP#$5BISITCMP#$2CISTHEREACOMMA??BEQGETEXTRAYES!#@BNEGETIN6NO.(BRANCHALWAYS)A*BGETEXTRAJSRCHKCOM(CGETEXTRA1JSRFRMNUMEVALUATENUMBERDJSRGETADRCLEANITUPESECSIGNALADDITIONALINFOF.HS24Z-PAGEBIT GGETIN6CLCSIGNALNONUMBERSHRTSI*%J*GETLOADLOC&VERIFYFILETYPEK*&LGETLDLOCSTATEMPSAVEWANTEDTYPE MJSRMLIN.DA#GETINRONELDACURDEVAND#$70CLEAROLDDRIVE#STACURDEVTXACLCRORSHIFTTOHIT-BITRORORACURDEVSTACURDEV-SD.DONEJSRNEWPREFIXSWITCHTONEWDRIVE(JSRCHKCOMPREPAREFORNEXTCOMMANDJMPDISPATCH*&EL=.HSE3END >.HS44D ?.HS53S@.HSBFNEWA.HSD5USRB.HS50PREFIXC.HSB3STOPD*,EJMPTAB.DAC.CAT-1LOCATIONSOFCOMMANDSF.DAC.LOAD-1G.DAC.RUN-1H.DAC.GOTO-1I.DAC.SAVE-1J.DAC.STORE-1K.DAC.RECACURDEVkSTAONLINE.PRM+1 lJSRMLIm.DA#ONLINEn.DAONLINE.PRMoBCCNEWPRE1 pCMP#$28ALLOW"NODEVCON"'qBEQNEWPRE2INCASESLOTW/ODRV2rCMP#$27ALLOWI/OERROR'sBEQNEWPRE2INCASEOFEMPTYDRIVEtJMPPROERR,uNEWPRE1LDANAMEBUF+1ONLINESHIFTSNAMEvAND#$0FSCREENOUTDEV#wSTANAMEBUFxINCNAMEBUF+1FOR"/"yLDA#$2F"/"%zSTANAMEBUF+1FULLYQUALIFYNAME {JSRMLI|.DA#SETPREFIX}.DAPREFIX.PRM~BCCNEWPRE2JMPPROERRNEWPRE2RTS*!*READENTIREFILEATLOADLOC*READFILEJSRMLI.DA#OPEN.DAOPEN.PRMBCSREADDONE"LDAOPEN.PRM+5TRANSFERREF#STAREAD.PRM+1STAGETEOF.PRM+1* JSRMLI.DA#GETEOF.DAGETEOF.PRM"LDAGETEOF.PRM+2TRANSFEREOFSTAREAD.PRM+4LDAGETEOF.PRM+3STAREAD.PRM+5LDALOADLOCSTAREAD.PRM+2LDALOADLOC+1STAREAD.PRM+3* JSRMLI.DA#READ.DAREAD.PRM.READDONEBCCCLOSEALLIFREADOKAY,BRANCHJMPPROERR*CLOSEALLJSRMLI.DA#CLOSE.DACLOSE.PRMRTS*0*WRITEFILEATLOADLOC,LENGTHINWRITE.PRM*(WRITEFILESTACREATE.PRM+4FILETYPELDALOADLOCSTACREATE.PRM+5STAWRITE.PRM+2LDALOADLOC+1(STACREATE.PRM+6AUXTYPE=LOADLOCSTAWRITE.PRM+3* JSRMLI.DA#CREATE.DACREATE.PRMBCCWRITFILE1JMPPROERR*WRITFILE1JSRMLI.DA#OPEN.DAOPEN.PRMBCCWRITFILE2JMPPROERR*"WRITFILE2LDAOPEN.PRM+5REF#STAWRITE.PRM+1 JSRMLI.DA#WRITE.DAWRITE.PRMJMPREADDONE**PRODOSERRORHANDLER*PROERRPHAJSRCLOSEALLPLA CMP#$2BBEQERR.WP CMP#$40BEQERR.SYN CMP#$44BEQERR.FNF CMP#$45BEQERR.FNF CMP#$46BEQERR.FNF CMP#$47BEQERR.DUP CMP#$48BEQERR.FULL CMP#$49BEQERR.FULL CMP#$4CBEQERR.DATA CMP#$4DBEQERR.DATA CMP#$55BEQERR.FULL CMP#$57BEQERR.DUPBNEERR.IO**RDOSERRORHANDLER*"ERR.FNFLDX#01FILENOTFOUND .HS2CERR.SYNLDX#$02SYNTAX .HS2CERR.DUPLDX#$03DUPLICATE .HS2CERR.FULLLDX#$04DISKFULL .HS2C!ERR.DATALDX#$05OUTOFDATA .HS2CERR.IOLDX#$06I/OERROR .HS2C(ERR.TYPELDX#$07FILETYPEMISMATCH .HS2C#ERR.WPLDX#$08WRITEPROTECTED*BITERRFLG$BPLERR1ONERRNOTACTIVEPRINTJMPERRORERR1JSRCRDO LDY#$FF ERR2INYLDAERRMSG,Y BPLERR2DEX BNEERR2JSROUTQST ERR3INYLDAERRMSG,YPHPJSROUTDOPLP BMIERR4 JMPERR3ERR4LDACURLIN CMP#$FF BEQERR5JSRINPRTERR5JSRBELLJMPBASIC2 * *SAVE/RESTOREI/OVECTORS * SAVEIOLDX#$03 SAVEIO1LDACSWL,XSTAIOKEEP,XDEXBPLSAVEIO1RTS*RESTIOLDX#$03RESTIO1LDAIOKEEP,XSTACSWL,XDEXBPLRESTIO1RTS**STARTUPCODE*SETSTUFFJSRSETKBDJSRSETVID JSRHOME* LDA#$4C!STAAMPVECT"LDA#DISPATCH#STAAMPVECT+1$LDA/DISPATCH%STAAMPVECT+2&*'LDA#HIMEM(STAMEMSIZESETHIMEM)LDA/HIMEM*STAMEMSIZE+1+LDA#0DISABLETRACE,STATRACEFLG-RTS.*/*DATASTARTSHERE0*(1COMTAB.HS43CAT-APPLESOFTTOKENS2.HSB6LOAD-FORCOMMANDS3.HSACRUN4.HSABGOTO5.HSB7SAVE6.HSA8STORE7.HSA7RECALL8.HSB8DEF9.HSBAPRINT:.HS87READ;.HS80END<.HS85DBETWEEN0ANDX^*_GETSPNUMSTXTEMP!`JSRGETBYTGETNUM,PUTINX aCPX#$01bBCCBADSPNUMIF<1,ERROR cCPXTEMPdBCSBADSPNUMIF>X,ERROReRTSfBADSPNUMJMPILLERRg*$h*GETNEWPREFIXBASEDONCURDEVi*jNEWPREFIXLDAGHTR LDALOWTR+1 ! ADC#0" STAHIGHTR+1# JSRMBLTU$ CHAIN11LDASCRUB% CLC& ADCDSCTMP' STADSCTMP( BCCCHAIN12) INCDSCTMP+1* CHAIN12LDADSCTMP+ LDXDSCTMP+1 , LDY#0- RTSGSCTMP+1 / LDY#00 RTSCSTORAGE(CAT)&[DIRFILES.HS00TEMPSTORAGE(CAT)\LOADLOC.BS2]IOKEEP.BS4HOLDS$36-39 ^TEMP.BS2TEMPORARYSTORAGE_VARSAVE.BS8USEDBY&GOTO`*a*PARAMETERLISTSb*cCREATE.PRM.HS07d.DANAMEBUFe.HSC3UNLOCKEDf.HS00FILETYPE$g.HS0AUXTYPE(LOADADDRESS)h.HS01SEEDLINGFILEi.HS0CREATEDATEj.HS0CREATETIMEk*lDESTROY.PRM.HS01m.DANAMEBUFn*oONLINE.PRM.HS02p.HS60SLOT6,DRIVE1'q.DANAMEBUF+1ROOMFORLEADING"/"r*sGETINFO.PRM.HS0At.DANAMEBUF u.HS00v.HS00FILETYPEw.BS2AUXTYPE x.HS00y.BS2BLOCKSUSEDz.BS8DATES/TIMES{*|PREFIX.PRM.HS01}.DANAMEBUF~*OPEN.PRM.HS03.DANAMEBUF.DAFILEBUF.HS00REF#*READ.PRM.HS04.HS00REF#.DADATBUF.BS2LEN.BS2ACTUALLEN*WRITE.PRM.HS04.HS00REF#.DADATBUF.BS2LENGTH.BS2ACTUALLEN*CLOSE.PRM.HS01 .HS00REF#-0CLOSESALL*GETEOF.PRM.HS02.HS00REF#.BS2EOF.HS00HI-BYTEALWAYS0*'CATTEXT.AS-"LEN--LENGTH" .HS8D*LENMSG.AS-"START:" .HS00.AS-"LENGTH:" .HS00.AS-"LOMEM:" .HS00**RDOSERRORMESSAGES*ERRMSG.HS80.AT"FILENOTFOUND".AT"DOSSYNTAXERROR".AT"DUPLICATEENTRY".AT"DISKFULL".AT"OUTOFDATA".AT"I/OERROR".AT"FILETYPEERROR".AT"WRITEPROTECTED"*'*FILECONTAININGCHAININFORMATION*CHAINAME.DA#10LENGTH.AS-"CHAINSTUFF"**PATHNAMEBUFFER*+NAMEBUF.DA#10LENOFSTARTUPFILENAME/.AS-"SYSTEMBOOT"STARTUPFILE(TEXTONLY) .BS53NAME+BYTE+BLANK=64**CHAIN(USEDBY&GOTO)*$.OR$B100ADAPTEDDOS3.3CHAIN.TFPDOS2CHAINJSRGARBAG LDA#$07STASCRUBLDAVARTABLDXVARTAB+1STADSCTMPSTXDSCTMP+1CHAIN1CPXARYTAB+1BNECHAIN2CMPARYTABBEQCHAIN2.5CHAIN2JSRCHAIN9BEQCHAIN1CHAIN2.5STAFACMOHSTXFACMO LDA#$03STASCRUBCHAIN3LDAFACMOHLDXFACMOCHAIN4CPXSTREND+1BNECHAIN5CMPSTRENDBNECHAIN5RTSCHAIN5STADSCTMPSTXDSCTMP+1 LDY#0LDA(DSCTMP),YTAXINYLDA(DSCTMP),YPHPINYLDA(DSCTMP),YADCFACMOHSTAFACMOHINYLDA(DSCTMP),YADCFACMOSTAFACMOPLPBPLCHAIN3TXABMICHAIN3INYLDA(DSCTMP),Y LDY#0ASL ADC#$05ADCDSCTMPSTADSCTMPBCCCHAIN6INCDSCTMP+1CHAIN6LDXDSCTMP+1CHAIN7CPXFACMOBNECHAIN8CMPFACMOHBEQCHAIN4CHAIN8JSRCHAIN9.5BEQCHAIN7CHAIN9LDA(DSCTMP),YBMICHAIN11INYLDA(DSCTMP),YBPLCHAIN11INYCHAIN9.5LDA(DSCTMP),Y BEQCHAIN11 INY LDA(DSCTMP),Y TAX INY LDA(DSCTMP),Y STALOWTR+1 STXLOWTR CMPPRGEND+1 BEQCHAIN10 BCSCHAIN11 CHAIN10DEY DEY LDA(DSCTMP),Y PHA SEC LDAFRETOP STAHIGHDS SBC(DSCTMP),Y INY STA(DSCTMP),Y STAFRETOP INY LDAFRETOP+1 STAHIGHDS+1  SBC#0 STA(DSCTMP),Y STAFRETOP+1 PLA CLC ADCLOWTR STAHIGHTR LDALOWTR+1 ! ADC#0" STAHIGHTR+1# JSRMBLTU$ CHAIN11LDASCRUB% CLC& ADCDSCTMP' STADSCTMP( BCCCHAIN12) INCDSCTMP+1* CHAIN12LDADSCTMP+ LDXDSCTMP+1 , LDY#0- RTS!TMP),Y STAFRETOP+1 PLA CLC ADCLOWTR STAHILL-1L.DAC.DEF-1M.DAC.PRINT-1N.DAC.READ-1O.DAC.END-1P.DAC.DEL-1Q.DAC.LEN-1R.DAC.D-1S.DAC.S-1T.DAC.NEW-1U.DAC.USR-1V.DAC.P-1W.DAC.STOP-1X*"YCURDEV.HS60CURRENTDEVICE#%ZHOLDLEN.HS00TEMP$**RDOSCopySubrs.**ByM.M.McFadden*August1987* .OR$300.TFTRANSUBSLINNUM.EQ$50LASTPT.EQ$52STRSCR.EQ$55FACMO.EQ$A0GETCHR.EQ$B1*CREATE.EQ$C0NAMEBUF.EQ$280RWTS.EQ$1E00MLI.EQ$BF00*FRMNUM.EQ$DD67CHKSTR.EQ$DD6CFRMEVL.EQ$DD7BCHKCOM.EQ$DEBEILLERR.EQ$E179GETADR.EQ$E752*BELL.EQ$FBDDPRBYTE.EQ$FDDAMONITOR.EQ$FF59*,*CALL768,"FILENAME",{A,B,T},STARTADDR*JMPBEGIN LDA/IOB;RWTSROUTINE LDY#IOB PHP SEI JSRRWTSPLPRTS*IOB.HS01 .HS6001 .HS00.HS01;TRACK.HS00;SECTOR.DADEVCHR.DA$2000;BUFFER .HS0.HS01;READ .HS00.HS006001DEVCHR.HS00 .HS01 .HSEFD8* BEGINJSRCHKCOM !LDA#$55"STALASTPT!#JSRFRMEVL;EVALUATEFORMULA($JSRCHKSTR;MAKESUREIT'SASTRING %LDY#$02&SUBS1LDA(FACMO),Y'STASTRSCR,Y(DEY)BPLSUBS1**+INY,SUBS2LDA(STRSCR+1),Y-STANAMEBUF+1,Y.INY/CPYSTRSCR0BCCSUBS21*2SUBS3LDASTRSCR3STANAMEBUF4JSRCHKCOM 5CMP#$426BEQTYPE1 7CMP#$548BEQTYPE2 9CMP#$41:BEQTYPE3;BNEERROR<TYPE1LDA#$06 =.HS2C>TYPE2LDA#$04 ?.HS2C@TYPE3LDA#$FC ASTACREATE.PRM+4;FILETYPEB*CJSRGETCHRDJSRCHKCOMEJSRFRMNUMFJSRGETADRG*HLDALINNUMISTACREATE.PRM+5;AUXTYPEJLDALINNUM+1KSTACREATE.PRM+6L* MJSRMLIN.DA#CREATEO.DACREATE.PRMPBCSPROERRQRTSR*SERRORJMPILLERRT*UPROERRJSRPRBYTE VJSRBELLWJMPMONITORX*YCREATE.PRM.HS07Z.DANAMEBUF [.HSC3\.HS00;FILETYPE].DA$0;AUXTYPE ^.HS01 _.DA$0 `.DA$0.DA$009ULTIMA I / RING QUEST / RINGS OF ZILFIN CONTROLLERSTK0:ST0:LT35:CDWRbT1TK:490sTK35ī1100430:100:STST1STDOS1030BF1060ST0:TKTK2:TKLT1030$490:TKT1:ST0:230.430:100:STST1:STDOS1070 8ST0:TKTK2:BF0TKLT1070. BTK35ī1095? CTK15ī1096P DTK29ī1097Z E1020 GTK1:ST0:LT35:CDWR::190:1020 HTK15:ST0:LT35:CDWR::190:1020 ITK29:ST0:LT35:CDWR::190:1020 L:"DONE WITH COPY": 212,170,150      XʩXʩXX o ,0 6ù 89Lù6LӠӠͮͮLZLX HH LL 𹭾L \$  L%#$   Lmi` Lߠ,,,,, \ W۠ȱ  \d \۩ $ W۠)ȱ $ȱ $L L Lfլ F iù jĹ iùLùi L tgh8ghL tLPQ ˷PQL t ط( PQLF tLϹйѹ ˹L` t D ط  6789`H)HH hhh`H Oh` t D ط ݅8967`( L L ` LO`L t ׹L`g TP8gPhQ Ti TLڹ4 \ $LWۢ ʭ)pjj  L ) L D89L(st O KL η` t L` eghPQ t طP8^Q_PQLF FPgm iQhmjhgh67_67hh¹Lԭ¹HH67Ll֩UR { lݠUȱV)`8 L/: A[? U̥U , g R8$` ޹LL 㹍乍` `L᭸۹ ڹ ("'L)/ L` -  L `Ϲйѹ ˹L L L{H h+C@-D&E"FG HILMUW,,,,,,,$L ڠȹJ ZȹJ \(0L'v  L6`6` XLst`CDSP"_ekݴC.kȶҶ`Ѐ` рƀΠžȍԺȺͺFILE NOT FOUNDOS SYNTAX ERRODUPLICATE ENTRDISK FULOUT OF DATI/O ERROFILE TYPE ERROWRITE PROTECTE 򍠠倠      ijlk q󅟆nm`ȱȱeȱe(Պ0ȱ ie枦ş {0FȱAȱ<ȱȱŰ+H8oȑoȥpphei ӥe枥`+ THIS REPLACES THE RDOS &LEN COMMANDK WITH A FILENAME TRUNCATORrdSU9183:JM9586:SU=46639:JM=47042n(4)"BLOAD PDOS.SYSTEM,A$2000,TSYS"xASUSU45:B:A,B:JM,32:JM1,48:JM2,182(4)"BSAVE PDOS.SYSTEM,A$2000,TSYS":P 96,169,0,133,80,172,190,186,185,190,186,201,47,240,8,136,208,246,173,190,186 208,8,132,80,173,190,186,56,229,80,201,16,144,8,169,15,24,101,80,141,190,186,76,183,0  34304:$8600 - NO GPLEd::nD$(4):V3.2!xD$"BLOADTRANSUBS":D$"BLOADRDOS"V:RW771:IOB782:TRIOB4:SCIOB5:BFIOB9:"RDOS TRANSFER - BY M.M. MCFADDEN":0}P$"/SSI/"eV3.2Ĺ6774,212:6795,183:MODIFIED ADDR HEADER"INSERT RDOS DISK AND HIT RETURN";:756:TR,1:A010:SC,A:BF,14A:RW::READ AT $E00-$18FFBS33:CE358432:BUFFER START = $2100, CURRENT ENTRY = $E00 (SKIP FIRST)K(CE)128(CE24)160240:BLANK ENTRYc1000:NAME$""300(34)NAME$(34);:41:"TYPE "T$", "BL" BLOCKS, START = "SBOL$NAME$ĺ"("OL$")"T(SB13):SSBT13:BBS:A1BL:TR,T:SC,S:BF,B:RW:BB1:SS1:S12S0:TT1ET$"A"Č768,P$NAME$,A,LD:TY$"BAS"nT$"B"Č768,P$NAME$,B,LD:TY$"BIN"T$"T"Č768,P$NAME$,T,LD:TY$"TXT"D$"BSAVE"P$NAME$",A"BS256",L"LN",T"TY$D$"FRE"CECE32:155,"DONE!"(7):/N$"":A023:N(CEA):N0N$N$(N128):GA0NAME$"":1060ROL$N$A24:N$(N$,15):A1511:(N$,A,1)" "N$(N$,A1):NAME$"":A1(N$):A$(N$,A,1):((A$)("A")(A$)("Z"))((A$)("0")(A$)("9"))A$"." NAME$NAME$A$:xT$((CE24)128):BL(CE25):LD(CE26)(CE27)256:LN(CE28)(CE29)256:SB(CE30)(CE31)256~$     L#x (`` ` ީUR { lݠUȱVUU B T A*,, g RPQ `Ly LY2>&JJJȱ>'JJJ3ȱ>*JJJfȱ>J&*J&'J&&ȱ>J&*J&'J&*)')3*)f>)JJJ`80|'x&Hh &    Y'&Yxꪽ'    `Hh` aI꽌ɪ򠚽ɭ&Y&&Y& 꽌ɪ\8`&&꽌ɪɵ'*&%&,E'зЮ꽌ɪФ`2JJJ'J&J>Ƚ3JJJJ&'J&&3>ȽfJJJJ&'J&&f>ȥ&)>ȥ')>JJJ >`+*xS&x'8*3Ixix&& 8 l {' o {& {x)*++`FG8`0($ p,&"USEDBY (0 8@ HPX !"#$`h%&px')*+,-./12345679:;<>p񩠅aL92DWbr:# LINE# > .STRING. .OLDSTR.NEWSTR. SOURCE FILE<#> # p 8e  Lȱ7 ) LhhLB  H hLL 0 LB  ȹ LB̅L9EFGhHhhJ)LHHEFG(l#.2J-97>EjNWbՑ]mAʄHIHHHHhHH݌hHh݌H6 J>J>VU)?`8'x0|&HhHh    VY)'&Y)xꪽ)'     `Hh`V0^*^*>&` aI꽌ɪVɭ&Y&&Y& 꽌ɪ\8`&&꽌ɪɖ'*&%&,E'зЮ꽌ɪФ`+*xS&x'8*3Ixix&& 8  '  & x)*++`NG8`0($ p,&" ۿ ۿڿL흍ٿ vLQ  !"#$%&'()*+,-./0123456789:;<=>?>>!80^݌Hh  ݌   A D ? AEDE?HJ>h    `HJ>݌h Hh݌`DF DF /L\HIHHHHhHH݌hHhHh݌H6 VDP (FD Z $0x8x D- DD#LHH`?F Vk *f???0x F Hh D#-FFF8` D x D - x8`- 0ݩ ?ʥD FFF`   LDcpq` [` ~  LNOT FOUNDOS SYNTAX ERRODUPLICATE ENTRDISK FULOUT OF DATI/O ERROFILE TYPE ERROWRITE PROTECTE 򍠠倠    UJ,COCO1:"POSITION PAPER, AND PRESS RETURN FOR NEXT COLOR. ";:"";A$Q-1j.CO$(CO)"BLUE"İ800/CO$(CO)"GREEN"İ8100CO$(CO)"RED"İ8201CO$(CO)"YELLOW"İ8302CO$(CO)"BLACK"İ840 (27)(75)(51): *(27)(75)(53):" 4(27)(75)(50):; >(27)(75)(49):T H(27)(75)(48):!! #.OR$41AB.TFGRAB.OMOVE.UPLDX#$4F LDY#$55 BNEMOVE$.MOVE.DNLDX#$55 8LDY#$4FBLMOVESTXSRC+2VSTYDST+2 `LDX#6 jLDY#0tSRCLDA$5500,Y~DSTSTA$4F00,YINY BNESRCINCSRC+2INCDST+2DEX BNESRCRTSN""