' +JJJJ ?\>m0M='+l> /+l   d]@ŵLҦ]]LF L}BBL] X  ` 鷎귭෍ᷩ췩緈JJJJx Lȿ L8ᷭ緍췩 緍i 8 `巬 췌`x (`(8`I`B` ``>J>J>VU)?`8'x0|&HhHh VY)'&Y)xꪽ)' `Hh`V0^*^*>&` aI꽌ɪVɭ&Y&&Y& 꽌ɪ\8`&&꽌ɪɖ'*&%&,E'зЮ꽌ɪФ`+*xS&x'8*3Ixix&& 8  '  & x)*++`FG8`0($ p,&"ųųೳŪŪųųij  !"#$%&'()*+,-./0123456789:;<=>?   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#0"):$(%"%:$(%"%$$2%4%$$2%4%$(2()!)E(!8b $!H(+ "@H !D)"E` @ $ C ` DQ &J80^݌Hh ü ü݌ ռ ռ ռA ļD ļ? ļAEDE?HJ>h Լ ռ ռ ռ`HJ>݌h Hh݌`葠葠ȔЖȔЖȠHIHHHHhHH݌hHhHh݌H6 VDP (ED Z $0x8x D- ܸDD# H8`?E Vk *f???0xE Hh D#-EEE8` D ܸx D - ܸx8`-0ݩ?ʥD EEE`   LDcpq` [` ~  LӜu`".Q`pNФbptťܥm2<(-Py0\|e<6e<g< JJJJj귍hI  aUL@ kU8  L  Q^R(jQ0l^l\  wUuW ԧ H h@ [_ /QSIRb_L`LLLL`ª`LQLYLeLXLeLee ўQH\(h0L& Ꝥ$`( R \ZLl8 ўR HH\`\Z[YS6`LxQɿu3'RͲʎRʎ]]]ɍuL͟ɍ}RLRɍg^H8 ^hZLɍR LͲɊRR% QLܤͲ Z@ -^ ş\[Z QY\[Z8`l6Lş_Ȍb_Ͳ] )Y h( ֭ͲLɍ [LLĦ__ ^ 9 LҦ3 9 a   0LjLY u< (_9 ˭ɠuɠK_9 ?LˆʎõĵL õ ĵµ aµ`` L̦µ_bJLuLz`  ȟ QlXJ̥KlV  ȟ QlV eօ3L e3L &RL &QL d L4 Ne)n `@-eff L f`L . tQLѤ LҦL` OPu d L Ne)noon 8ɍ` ^f\õL ^NR  RΩLҦ)\Z ʽ LHv 3h`0h8` [L NС õ`A@` ŵL^Lõ`  \ 濭0 \  ȟ Q ^\lZl^?cqH şch`fhjõĵ@OAP`u@`@&`QR`E Ls  @DAE@u`8` %@ @A@`@`@A`Mµ ) LЦ`8@AWc@8@-@HAȑ@hHȑ@ȑ@hHȑ@Ȋ@ch8&ȑ@Hȑ@Ah@LHȑ@ȑ@ htphso`hMhL`9V8U897T6S67`INILOASAVRUCHAIDELETLOCUNLOCCLOSREAEXEWRITPOSITIOOPEAPPENRENAMCATALOMONOMOPRINMAXFILEFINBSAVBLOABRUVERIF!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 AVAILABLFILE TYPE MISMATCPROGRAM TOO LARGNOT DIRECT COMMANč$3>L[dmx- (    Ϡ@跻~!Wo*9~~~~ɬƬ~_ j ʪHɪH`Lc (L ܫ㵮赎 ɱ^_ J QL_Ls贩紎 DǴҵԵƴѵӵµȴ 7 ַ :ŵƴѵǴҵȴµ納贍﵎ٵ്ᵭⳍڵL^ѵ-I `  4 ò-յ!  8صٵ紭ﵝ 7L (0+BC  7L HH`LgL{0 HH` õL H hBL BH [ h`Lo õ ڬL B ڬ LʬH hB@ յյ [L (ȴ) ȴ 7L L ( L (ȴL{ƴѵ洩ƴǴҵ 7 ^* B0 HȱBh ӵԵ 8 L8 ݲ` ܫ  / / ED B / / ]ƴS0Jȴ ȴ)  紅D贅E B ƴ  / 0L Ν `HD٤DEEhiHLGh ` ŵBѵ-` ѵB-` ܫ XI볩쳢8 DH E𳈈췍Ȍ X0 · JLǵBȵC`,յp` 䯩 R-յյ`յ0` K R-յյ`ɵʵӵԵ` 4 K ( ѵҵLBȱBL8` DBHBH : ַ޵BȭߵBhhӵԵ RBܵmڵ޵ȱBݵm۵ߵ` 䯩LR˵̵ֵ׵`êĪLR E( 8` R` ELRŪƪ`췌 յյI뷭鷭귭ⵍ㵍跬ª 뷰` Lf ݵܵߵ޵ ^`8ܵ i B8` 4L ֵȱB׵ ܯ䵍൭嵍 ` DȑB׵Bֵ  ַ յյ`굎뵎쵬 뵎쵌``õĵBCõĵ`µµ`L õBĵCصص Qƴ0"Bƴ 󮜳` 0۰ϬBƴ8`i#`ЗLw!0>ﵭ` m ﳐ 7i볍 8 ЉLw`H h ݲL~ `浍국䵍뵩嵠Jm赍嵊mjnnn浈ۭm浍浭m䵍䵩m嵍`"L ŵ8ŵH ~(` d ֠Ġz# u`~  :(0)$I110000:A$(I)9I50(I50)ĺI?T"START TIMING"_(X(0)u2"STOP TIMING":|<XI3,ɛL,O0 NOL LO08 L֥vL  ; ; ; ; ; CROUTDo a LOOP2 STRNLENGet length LOOP3 (A3L),YGet test byte STRNGBUF,YSame byte? NEXTBASENo, move the base up  LOOP3Yes, try next byte pair 'PRINTA3Success, print out address!! #NEXTBASEA3LIncrement start base to the top of the byte   STRNGBUF,XStore in buffer PUTFLAGToggle the putflag PARSEAnd do next character "DONPARS Leave for monitor #YSAVand fix up YSAV for monitor Get right value for X #STRNLENStore string length down PARSEelse do next character PUTSTRNGPUTFLAGShift it? SHIFTYes, so do so "STRNGBUF,XAdd the lower nybble STRNGBUF,XStore it down Move to next nybble PUTFLAGToggle the putflag PARSEAnd do next char SHIFT Shift the nybble YSAVGet INBUF offset PARSE INBUF,YGet next char incrementing Y #$8DA return? DONPARSYes, no more parsing #$B0What is it. #$0A'0' to '9'? PUTSTRNGYes, insert it  #$99'A' to 'F'? #$10 PUTSTRNGYes, insert it 40Start of search range A3H $41 ;  $D8B0  $300 ; ; ; ; ";SEARCH Routine. This addition to ;the FPBasic monitor allows a %;search of the memory for a specific ;set of bytes. ; %SEARCH #$00Set X to 0 for buffer PUTFLAGSet up flag cter $PRBYTE $FDDAPrint byte in A-reg CROUT $FD8EPrint a ; ; 'YSAV $34Offset into input buffer !PUTFLAG $3AUsed as a 0-1 flag &STRNLEN $3ALength of search string "A2L $3EEnd of search range A2H $3F $A3L $+ ****************** * * * SEARCH ROUTINE * * * ****************** ; ; INBUF $200Input buffer STRNGBUF $200Search string HOME $FF07HOME routine PRNTAX $F941Print A & X COUT $FDEDPrint chara     ; ;  $FB09  $909 ; TITLE "Apple ]["New title ; ;  $C607Check for a disk #$3Ccontroller !JMPBASICNone, coldstart Basic $C603Double check JMPBASIC $C600Yes, boot disk JMPBASIC$E000else goto Basic Fill in space ;  $FB02  $902 ; .DEAF 9FBFDFFFUsed to turn sound gen off ge 3 'SETPLP PWRCON-1,Xvectors for Basic BRKV-1,X  SETPLP FOURConvert to 40-columns APPLEIIHOME & show title "SONINT #$03Turn sound gen off $SOUND1 DEAF,Ywith a sequence of SOUNDGENbytes sent to it  SOUND1 !CHKDIS  EAEASpace fillers )NEWMON $3F3The old warmstart routine ; ; ; ;Routine PWRUP replaces the old ";coldstart routine in FPBasic. It #;sets 40-cols, and turns the sound ;generator off as well now. ;  $FAA6  $9A6 ; !PWRUP #$05Set up the paf keyboard BELLIssue a bell SW0Is SW0 depressed? PWRUPYes, do a coldstart NEWMONNo, do a warmstart #TIDYUP SETNORMSet normal chars INIT+4Set text, full screen SETVIDSet standard I/O SETKBDfrom kybd & screen and return ; ;Routine RESET replaces the old #;FPBasic reset handler, and allows ;coldstarts with the joystick ;button depressed. ; ;  $FA62  $962 ; RESET Clear decimal mode TIDYUPDo some tidying up CLRROMTurn off ext'n ROM KYBDSTRBTurn of page first COPYZPG $0000,Y $4000,Y  COPYZPG $00 %$02Now we can use zero page locns #$01 $01 #$41 $03 ,COPYREST($00),YNow for the non-zero page ($02),Y  COPYREST $01 $03 $03 #$80 COPYREST  ; ; MOD TXTMOD $A851Is DOS in memory? $A852 #$9C EXITNo, so exit $A851Yes, reconnect DOS $EXIT and return to the caller ; ; ; ";COPY1TO2 copies the 16K of Bank1 (;($0000-$3FFF) into Bank2 ($4000-$7FFF) ; $COPY1TO2#$00Save zeroY1TO2Copy Bank1 to Bank2 1RECOVER $4000,YYes, now recover the zero page $0000,Y  RECOVER #$00Replace ram 0 into Bank1 SBANK1 #$01and ram 1 into Bank2 SBANK2 #VZTX40Turn on 40-column display 'SETXTMOD#$04Set 40-column in TXTmode? #$10 #FBANKYes, continue with routine !SETXTMODElse, just set TXTMOD ' EAEA60Disable printer jump to $F80F .FBANK SETVIDReset I/O vectors to disable $SETKBD80-column display routines #$00Bring ram 2 into Bank 2 SBANK2 COP The new memory assignment ;will be 0,1,X,F. Ram 0, which ;contains the 40-column screen ";memory, is brought back into the ;virtual memory area. ; ;  $F800  $800 ; FOUR #$28Set 40-column WNDWTHregardless #TXTMODAre we in 80-column RM $FE84Set normal characters 'SETKBD $FE89Sets keyboard as input &SETVID $FE93Sets screen as output BELL $FF3AIssue a bell ; ; !;Routine FOUR is used to convert ;the memory assignment when in ";80-column mode back to 40-column !;mode.se are used to bring (SBANK2 $C07Din 16K blocks of memory )CLRROM $CFFFTurn $C800-$CFFF ROM off ; ;ROM routines ; 2PWRCON $FAFDTable used to set up break vector #APPLEII $FB60HOME & print title %INIT $FB2FSet text,full screen &SETNOector set up by reset &TXTMOD $57BStores state of screen ; ;Soft switches ; "KYBDSTRB $C010Turn keyboard off %VZTX40 $C04CTurns on 40-col mode $SW0 $C061Input from switch 0 *SOUNDGEN $C068Output to sound generator (SBANK1 $C07CTheA**************** * * * New Reset * * and * * PR#0 routine * * * **************** ; ; ; ;Zero page locations ; &WNDWTH $21Stores the screen width ; ;Main memory locations ; ,BRKV $3F0Break v     @p@@ @p~@@8`8`@@@x @@@  @@@ @@@|`p@@@ 0@@@`@@ @`@@@p`@@  p@@@p @@@8  @|p| |p@@p0@@8p `@ @@@p|`p@@@  @@ @`@@ @@@@@?``@@0  @@` @@@p  @0    00 0@@p@ ```@@@ | >x@@@8 0 @@@@@@8`@@@@``` @ 0 @@@ @@@@```@0 p   00 0@@`@L` @@@@|0 @O@~@@p `@@0@`@@0@@@@@ @@ L@ @@ xx@@@``@@p  <  00 0@@@@<` @@@x` 8@@@@` @@@`@ @@`@@@@  @ < @@ `@@@@`@@@0 pL| ||pL@@@L` @@@|@?` @@@@@`0@@`@ @@@@<@@@ @0  @@ `@@@`@@0 00@@p   @@@ @ @<@@@``8@@@@< @@@8@@@ @@ p@@@`@@@@` @| @@@   @@ | @x@@@x`@@@          0@@@`@p@?|0@0@xp@? @` @`@@`~?x|p0pp@@@p0p||p00p0pp00p@@|p0|p@ px|ppG? @p@p@@~|p`0@0  @|` 0 0@00 L @0p 0@0@0 @ @@x p X?@p@x@`0@0|<0|p 0~ xp0@00|L<@00 0p@`0@00|@0@x0`X?|~@@8@<@pp@0@L0@x|`@@p~?p|p@0@p L@00 0``p@0@|0@@p@@@ ||@@@@@80pL|  @8 p`  ~0pL|  pL| |pp0pL|@| `@~x0p~`@@`@@0  @0p`?  ~0   08p80 @ `p @@p@?|x`@p@@ |@|p @@p|`?pp~|@|p p@|@p|  0@p|@@8p`~?                   b@Ll  . $ ; &?1?=A>?I i`HH11`IJ듧ƙɾ5Ė+]̵h5`4ɺл1>@@A`41`>BD`8>6>) `LL u ?l:L``L@ 'A=?<) < `JJJ>Ie=?<=`K i! Ȉ2 ,`H h*:` `YE <Šӭpd`HVTQ PS 6" (!#%L" X`I`ɍ,,L8L,H ΰɐHJ) )h)i( ((`ɇ@ 0`$($$!fi#bZH&bTDThDt(ntJrtttrDh2"&&rr&HDDȅEhH 0l( Lh:h;l Le / XZ]_, :ILl `Ȇ׍숈l E@A  J 0,*i H/.  `0 .: VȘ L `8/;e:` T0 "T3  T3  T; "D3 D"D3 D"D3 "D3 &1!YMJؤ#]#)i#$S#$S[[i$$)|mi)S4`J G(i.&E0%.Q&&` , iH h-`/'-'0 (`HJ) 'h)i& &&`0i)0 00`J G&(JJJJ)`:; H:J jɢ )Jb y.)/) JJJ Ȉ` H:  J/Ȑh,--& W :L ` `  eȱe ` -L -La=?P<Ȅ> sʆ>PHt?QnLԅtp=hso< LeP>eQ? ॔<=`@ ߩL ʊ( (H hL$`JJJJӊ)IȄҤѢԆզ8eЅԐ e҅Ր JJJ`JJJJӊ)IȄҤѢԆզ8eЅԐ e҅Ր JJJ` g RQPHH, hh`L `*Uf&i'`'i,&i,&iPII&if&HhH8HӰ hIiHӅхhЅhIi҄f8Ъх e8e҅ԥձ&E%0Q&&bӰ eЅԥePفŴxaI1& ')*& 'JJ) e ʥ0)Je ~)`H)&JJ&&h' &' &' f&')'#i媽0J(` Q&%0Q&&`#0JI0`'0 I`0 I0ݩ()%%01&%0)&E%0Q&&e)j00',"&,i8i#H&ii&hizݥ􅸥uv >Lץڅuۅv܅݅ߚLLްij ֥`a, PQ ֥`a```aiśj地a`ʈjiLԭVSL@TL9 ʅPQ L PȱQL L,U,R@ ,T,SWP0,-`L ,- 0` (L ,(ʤL (L( Ld ʊL[ I`8f`?2`@ g RPmQnLԥPsoQtp` g RPsQtPiQj֥PiQjLl֩ ޥ8fإuv Lنަߥuڥvۥyܥ~L̑湭`: 808`ORXv( sL  񕰆򊅤TH کURPQQPIPPIPPPQ)stopgh֘gghgh K֩:ۅ<ԅl g RlP L L 0, c # p 祢H 祢0 I p h uL\ !  禎  b𩊠LfHL#IڢIڢ-(h#5ᆥ](IڢʥH HɁ fΠ \hɁf hL` vy{| g|S}dpL}Qz}c0~~D:ƀ1r۠ 饬iP z녒 f륝Ɉ + # i8H rh ` !멓  v禎L酭 뱭Ș殅 饭iȅ 穘ƣ`5Dzh(F 0ɠ 穦 驪 禡 .ɠL+f ck ^ƙ.șI)$Ъ0.ȩ+.8嚪-E/8 i:`  cd pLP袊 +륪 #쩊  UH A驊  hJ I`8;)q4X>Vt~w/z*|cYX ~u q80L>nk'nk(X 1vu8 4L:۠-$șȩ0LW     9ƙ U i 0 i8.ș0șylykyjyi00ڊIi i/ȄȪ) 芢 脤`)F 鄤`ɠ 넬I* L)腞` -+ [..E0 - +f \$8Lf$På8噅 U 9ƚ0`LH$ 9h80 LaH ch 륪EL祚 d$0L e_^^^^ ^`, r^_^^^ %^^`` r` L襝 *` 녞I*L)F``a`Ȫı`E0!` Şȱ`şȱ`Š ȩŬ`(IL륝J8$E ^`e0,iLR襫`I0hhLNL ci ` cP Li v r8坅 Ğğ Ġġ* e24(&&&0⨥塅堅埅垅L@ (LꢅLԥbcdeL.^vvvvvj`^Vy dv88; 54541r LᥝH- 2 f  \7 h < L bcde 饡 饠 饟 饞 LLJ eeededcecbebfbfcfdfefJ`^_^^^^W8Ie Ji `eeeeeLi&&&&8坰IiBfffff`IIIIII `ELԢai0ᦠL LN覸^e^`_a`H` Jh`` g R L楝ɑ 률PQ`PHQH RPhQhPL F犠P` F熅  L熆PE%`dL 饢IEL < LS리8$Ii0ǨV $` lݥ^_ 5^Hȱ^ȱ^h(po Heooph^_`T SRS` H hhhL* ьHH 㥌 hhe^^_ L* IL` ) ʊH񌰸Iš hhhhhhhHH` L ` ^LL g ^ ie^^__Ŕ #^05ȱ^0ȱ^+ȱ^ȱ^poŜ䛐^_e^^__`)Jeiop Ӥȥ敥ȑL䥡HH ` lhhqL 奌  奫  *LݠHȱȱh^_ H^qheqqr "e膮 㦫 R^LԥSR`FHI8eopnm opqrh`M0 䩀hЦstopmnU^_R #ij^_lk 󅔆nmLb^_^ȱ^ȱ^eȱ^e(ӊ0ȱL$8vС,L A  ީ j ީ HHHHH L  ߅Lj A㥋HH jhhȱ𙅄ȱH +륹HHȱHH ghh Lhhhhȑhȑhȑhȑ` jݠ 6hh R䆞`" ȱ ↭^e]eR Ӆmn殤ƕƮ8m因n圑bȱhhћȊћLLȥ e^eʅʥʆd ee`^de *& edeeƙ` 8ompn` gݥ0 ɐ ~LGHHHHH hhhHH ,҄ hh)klnm?Łћȱeȱeעk,5LԢx8` ћLK*L өȥʆȑ $PhihiȑȊLL(L<  } }$%0Ʃ 8(L$0pijlk"ћћliA[8`hH`klmniȅ ӥȅklȥȑȑȑȑȑiȅ` ieȅ q L H ϐ { lhHHH hHL? hυυ Ljݥ ,L mݰ % LߩƉ 慝 憨80 ў*%L L ު `  }LޢٹHH ޥLLޥШh^^h_H r륡HHHHHl^h#d j݄hJhhhhhhE` LJ }d.U"i L=8,LLTҐL {ݩ),(,,ѸLLԠhhL ߅` ȱLL  ߅ ei` 꺽  ' 8 uvL׊i , {$8$0`LԦƹƸ$HH `ީ 8ϐ*IEʼna Lݦ,{iweLi^ e^hٲаg jH hV_F*ƹƸٲаH $P )0 Z ۆ $1$P 膸 ": ,i = {LrH0h J c ,Lqۥ 3 LۥL Ȫ*ȱ_ȱ{ȱȅ| L+ܥLSؠߠL:`?EXTRA IGNORED ?REENTER  \I`$ !i)$ )L(ʊ$ L W 檠^ \ LD۩ ,? ɠ )H h`0{|uvLh$L :ۥyz` @ `" ީ; =L Z , ,խLc ZL,զ}~, ߅hL* ,h`PQ/ Q^ԥP &^ &^ePP^eQQP&QPe PQ L ߅ ޥHH {h* mh r ȥ`L'hpoj iLڠ 㥌 婝 5ȱȱ` = $)94,;D {$0 4 Lک?`gh<=ij>?`v(Le lL5٩ ӥHHvHuHH >L ٥vQ 8egh ֐` eӚɰ ,ZLLhhB;uhvhh ٘e`:,  "hhh` { ɫ ޥ L>L( HɰɫЉơe$v# \ۦuv $ W (Lb-逐@ HHLLF:L8gh}~`Ƀ` Sբ$L ) \ۥ$! ک$ȱȱж \L枱`8Єτ ,0 \ ,0 \ \۩ И F eihh eHiHvHuH j gݥ %ׅ^_L ީ  g ޥHHH XإvyzW4ȱuȱv Нƹ`ghȥQћ Pћ `֨gȑggiihij ֩*stopijklmn IآURhhHHz`gihi` ,  ,Є hhPQPQD X ȱȱQP- $_^ ijL<Ԡȱ^Șe^^_iȑ^^_Ң3 j )` )`ʠ$hh eL$p "tpM?E0<=Ѕυ 8ɀA N4O0Ťș98:I8xІșh0hhpo`M$L Z۽`H \h ֩P :ۤv  ڢ .ՆF v YLئij YՄ ֐D_i^aeii`jij圪8iae^_^`_a8stopiejȄ ӥPQmnij e֥gh^ DIRECTYPE MISMATCSTRING TOO LONFORMULA TOO COMPLECAN'T CONTINUUNDEF'D FUNCTIO ERROR IN BREAKɁ! i` Ӆmn8囅^圪#8^Ɨ8^ƕƗƕ` i65^^.`p(o"H H ANOҾSGINABUSFRSCRNPDPOSQRNLOEXCOSITAATPEELESTRVAASCHRLEFTRIGHTMIDNEXT WITHOUT FOSYNTARETURN WITHOUT GOSUOUT OF DATILLEGAL QUANTITOVERFLOOUT OF MEMORUNDEF'D STATEMENBAD SUBSCRIPREDIM'D ARRADIVISION BY ZERILLEGALPLOHLIVLIHGRHGHCOLORHPLODRAXDRAHTAHOMROTSCALESHLOATRACNOTRACNORMAINVERSFLASCOLORPOVTAHIMEMLOMEMONERRESUMRECALSTORSPEEDLEGOTRUIRESTORŦGOSURETURRESTOOWAILOASAVDEPOKPRINCONLISCLEAGENETABTFSPCTHEANOSTE0oeܔٱ0ۏ$1@hnW &tlnrvNjUaE=H jmكدzڕؤi֟H֐# A :dFZyy{{h}PTFNddENFONEXDATINPUDEDIREAGTEXPRINCAL                               FEB ;  BCMonitor ctrl-B jump patch ; ;  $FFF3 ;  ACMonitor W jump patch ; ;  $FFF5 ;  AFMonitor R jump patch ; ; ; ;  $FFFA  $300 ; NMIVCTR NMINMI vector patch ;  and return ; ' 'Warren K.T!'My name (space filler) ; ;  $FEB0 ; !MONRJMP RESTARTMonitor R jump ; ;  $FEC2 ; MONTJMP TOGGLEMonitor T jump ; ;  $FFCF ;  E0Monitor S patch ; ;  $FFE6 ;  C1Monitor T jump patch ; ;  $FCOPY1TO2Copy Ram2 back to Ram0 !SBANK1Restore Ram0 into Bank1  SBANK2and Ram1 into Bank1 Recover A & Y-reg   Grab PC & P, and restart ; ; ; TOGGLE A1LGet the Ram block #$0FConvert to 0-F SBANK2Move it into bank2  up HOMEClear the screen OLDBRKJump to the monitor ; ; RESTART SPNTReload S-reg  RESTOREGet X,Y,P-reg #$02Set Ram2 into Bank1 SBANK1 #$00and Ram0 into Bank2 SBANK2 RAMACCGet A-reg from ACC Push A & Y-reg   "#$00and Ram0 in Bank 1 SBANK1 "COPY1TO2Copy Bank1 & save regs XREGX-reg  YREGY-reg  ACCA-reg  SPNTS-reg  STATUSP-reg  PCLProgram counter  PCH #$01Move Ram2 out SBANK2 TIDYUPDo a bit of tidyingBANK1 $C07C SBANK2 $C07D ; ; COPY1TO2 $F847 HOME $FC58 OLDBRK $FA59 TIDYUP $FA76 RESTORE $FF3F ; ; ;  $F1EC  $800 ; ; ; NMI Clear decimal mode Save A & Y-regs   #$02Set Ram2 in Bank 2 SBANK2 *************** * * * NMI Handler * * * *************** ; ; ; ; PCL $3A PCH $3B A1L $3C ACC $45 XREG $46 YREG $47 STATUS $48 SPNT $49 ; ; RAMACC ACC+$4000 ; ; S  umns? #$10 HTAB4040 columns, skip HTAB80 CHStore posn in CH and return ; +HTAB40 #$28Check if posn is 40 or more HTAB80No, then store it Else subtract 40  #$28  HTAB80and store it ; ;   ************ * * * New HTAB * * Routine * * * ************ ; ; ; CH $24 TXTMOD $57B GETBYT $E6F8 ; ;  $F7E7  $800 ; ; %NEWHTAB GETBYTGet the posn wanted Decrement it once TXTMOD40 or 80 col ne CLSCRNand jump to it "C800IN $CFFFWe want 'slot 3's $C300$C800 ROMs  ; ; ;  $FFF8  $8F8 ; FEPoint monitor to new CRMON ;  N moved down   MONZ #NEWHOME TXTMOD40 or 80 columns? #$10 HOME8080-cols $22Do first two instructions $25of old HOME HOME+4and jump into HOME &HOME80 #$50set screen width to 80 WNDWTH %C800INBring in $C8 CLSCRN routiPBasic HOME $MONZ $FF69Monitor entry point ; ; ; #;New HOME Routine. Allows clearing #;of both 40 and 80-column screens. $;The monitor routine CRMON has been &;moved to allow for the new routines. ; ; ;  $FEFF  $8FF ; !CRMON $FE00CRMO**************** * * * HOME Routine * * * **************** ; ; ; !;Zero page vars & misc. routines ; WNDWTH $21Screen width TXTMOD $57BScreen state $CLSCRN $CA7680-col HOME routine !HOME $FC58Old FS 1,0 REM "MER" DATA "ATAD" ; ;  OTCOM #$BA COM #$A2 NOTCOM1 QUOTE GET #$A2 QUOTE NOTCOM1 ; ; ; GET LEN+1 FINISH BUFFER,Y #$A0 GET  GETSH STATUS GET GET #$E1 RETO #$FB RETO #$DF BUFFER,Y RETO STATU #$03 STATUS LOOPR GETSH REM-1,X NOTREM  LOOPR FINISH #$00  LEN #$00    EXIT ; ; ; NOTREM #$04 NOTCOM  LOOPD GETSH DATA-1,X NOTCOM  LOOPD STATUS NOTCOM1 GETSH N,X START,X ADD-1,X KSWL-1,X  LOOP1 DOSCON ADD START START KEYIN #$8D EXIT    LEN+1  FINISH+1 $76  GOON $33 #$DD FINISH GOON #$FF LOOPH GET #$B0 #$0A LOOPH  COM 4***************** * * * LOWER CASE * * INPUT ROUTINE * * * ***************** ; ; ; BUFFER $200 KSWL $38 DOSKSWL $AA55 DOSCON $3EA KEYIN $FD1B ; ; ;  $300 ; #$02 LOOP1 DOSKSWL-1   T7L ɍ9HHQNv3 ~I  ݢ hh` ݥ  ɺɢ ~ɢQɹɠ` ~0 )ߙ`? ch. Turns on graphics, $;without affecting the text window. ; ;  $FB40  $840 ; "SETGR TXTCLRTurn graphics on MIXSETwith 4 lines of text $WNDTOPLeave the text unaffected.    ; ; ;  ed yet, loop else return ; ; ; ; ; %;HGR Patch. Calls HGRCLR when screen ;is cleared to black. ; ;  $F3EC  $8EC ; TXTCLRTurn graphics on Space filler   #$00Set hcolor=0 HGRCLRand jump to HGRCLR ; ; ; ; ; ;GR pathe address HPAGEGet the screen to clear CLRBASE+1Put in the address ##$20Clear 20 pages of 256 bytes Set A-reg=0 #LOOP (CLRBASE),YClear memory  LOOPLoop back CLRBASE+1Move to next page Lower count in X LOOPNot finish else return a 0 ^1 #$01Return a 1  ; ; ; ; ; ; #;HGRCLR Routine. Clears the hi-res !;screen to black faster than the ;built in routine. ; ; "HGRCLR COLORMSKEnter with A=0 CLRBASEand set hcolor=0 %as well as the lsb of tCHKCLSTest for trailing ')' ; ; ; ; ;PIXON Routine. This tests if a ;given pixel is on of off ; ;  $F3B5  $8B5 ; &PIXON REGYGet the address offset %MASKGet the bit posn of the pixel (BASE),YTest if it is on >1Yes, return a 1 a hi-res pixel. ; ;  $DEF9  $8F9 ; &SCRN CHRGETGet SCRN's arguments %HFNSand convert to screen co-ords "HPOSNNow convert to an address PIXONTest if the pixel is on Transfer result to Y-reg %SNGFLTPlace the result on the FAC $F411Convert X-Y co-ords into address "HFNS $F6B9Parse X-Y co-ords ; ; ;Soft Switches ; !TXTCLR $C050Turn graphics on $MIXSET $C053Mixed text/graphics !;SCRN Routine. This replaces the ;old FPBasic routine, and now $;tests the state of $30Posn of a particular pixel (REGY $E5Offset of pixel from BASE HPAGE $E6Which hi-res page ; ; ;ROM routines ; *CHRGET $B1Get a char from Basic input CHKCLS $DEB8Test for a ')' #SNGFLT $E301Place Y-reg on FAC 1HPOSN  ************ * * * GRAPHICS * * ROUTINES * * * ************ ; ; ;Zero page variables ; CLRBASE $1AUsed to do HGR COLORMSK $1CColor mask &WNDTOP $22Top line of text screen #BASE $26Base addrs of a line )MASK ƸΠ ɠ荍Ԡ宍ƠԠIJӠŴ٠ŶԠŹӠ  ƳנƵҠԠõ÷ӠøҠ ŠҠ堠ŠĭƵƠưΠưƲŠ堠ĠĭƲéƲƲàΠİ©ƶƠԠİİ ŠıIJ٬΍IJƠijàĵĵŠҠ蠨쩍ķŠĸΠ°²Ҡòô°°Ġ´´Ҡ´נµƠ堠ӍùƵ 堠ҬԬŬōù󍭭РĴЍ°°Ơ堠Ġ°°ԬŬŬҬЬì̬ΠƸƸƸƸƠٱϲƸƸ̠卮ԍ󠠠蠠Ŭ̠ƳƭƳķƳñƳķҠ̍ƳàƳƵҠƷƷ±Π堠ĠƷƷ©Ʒ²Ʒ ȠƷ ƷƠƸƸҠ堠堠ӠƱíƲƲƠƲԠ堠ԬΠƲƲƲƲŠ堠ΠƲƲũƲ Ʋ堠ҠƲƭƲƳµƳð젧堠ŠİƠŠԠİĠıԠҍķķ Ԡĸ°ĹȠ堠ŬĬϬϠĸ°ĹĠưΠΠƹư©ƱàƲŠɠԠİŠİƠΠԠİŠİƠŠԠİİĠԠİİҽԠİŠİƠ̠ԠİİŠԠİàİĠĠԠĮҍҍ󠠠蠠󍭭Ԡİİ ԠԠİàİĠΠ     b@L(h` hhLi{"%L\P! Lvʍύ`,L5 LHHEFG(`EFGhHI` / :3 g 40 4Ls &>&?1?=A>?I i`HH11`쩻듧ƙǾ5Ė+]h5`4ɺл1>@@A`41`>BD`8>6>) `LL u ?l:LLCLLɀH)? @(hNO`HNOO) $ $(hHL֥vL=?<) < `JJJ>Ie=?<=`H{h!ɜɉ,( $,(L8 `YE<ӭpd`HVTQ PS"" (!#%L" X`I`ɍ,,L8L,H )ΰɐA@ A `HJ) )h)i( ((`ɇ@ 0`$($$!fi#bZH&bTDThDt(ntJrtttrDh2"&&rr&HDDȅEhH 0l( Lh:h;l Le v, :,a02 3 `ILl `h<LL E@A  J 0,*i H/.  `0 .: VȘ L `8/;e:` T0 "T3  T3  T; "D3 D"D3 D"D3 "D3 &1!YMJؤ#]#)i#$S#$S[[i$$)|mi)S4((!{L4` } G@|}L{QMRɜ Q`@Aɀ`e8?hJJJJ)`:; H:J jɢ )Jb y.)/) JJJ Ȉ` H:  J/Ȑh,--& W :L ` `  eȱe ` -L -LaO0NO L2,L2,),H%HHpH`eP>eQ? ॔<=`@ ߩL ʭ{$`(8z#   Ȯà ̠̮͠Ҡ ٮʠӠŨ Ůà®à ɮà Р2 ̠"Ҡ"ԠӮà ٮà Р à2Ӡ ؠӮà Юʠ ЮàϠǠŠK Р2ҮàԠҠ?Ԡʠ婮笠묠堧宠Ԡ嬠㠨Ԡ嬠ͧԠ͠ʠ宠Ҡ֟Ԡ۠嬠Ԡ嬠ŠՠŠ֠ŠĠׁŠàŠŠōŠƠƍŠѠŠРЍŠɠŠʠŠȠŠӠ׀ŠԠƛԍŠӀŠ Ӂҍ                       ""COPY THIS PROGRAM EXACTLY". A(100);J1100FA(J)JM(Jt2"NUMBER TO BE SEARCHED FOR IS ";K}<100FI100ĺ"A(";I;") EQUALS ";KPI100ĺK;" NOT IN A-ARRAY"ZdI1100nA(I)KıxIJ,240:828,3:829,173:830,128:4831,192:832,96:= 769[*"BLOAD INTBASIC,A$D000"z4 --WRITE PROTECT THE CARD>A(16254): $C082H254): $C082OHH19:799,74:800,141:801,0:802,208:803,205:804,0:805,208:806,208:807,10:808,173:809,129:810,192:811,173:812,129:813,192:814,169:815,1:816,208:817,2:818,169:819,0:820,141:821,0: 822,3:823,104:824,205:825,0:826,224:8270:771,224:772,72:773,173:774,129:775,192:776,104:777,72:778,205:779,0:780,224:781,208:782,35:783,173:784,131:785,192:786,173:787,131:788,192:789,169:790,165:791,141:792,0:793,208:794,205:-795,0:796,208:797,208:798,(4);"BLOAD "FP$",A$D000">L(16254): WRITE PROTECT RAMW768,141: ADDR $300d769,128q$770,192.771,141:772,128:773,1958774,76:775,3:776,224B(4);"EXEC FP"L(16255)L(16255)7768,0:769,173:770,FP":1000 FP$"AUTOFP":10008FP$"FPBASIC":1000B1998J10iD$;"BRUN LIST MASTER.OBJ"oD$;"RUN RENUM",D$;"RUN EPSON DUMP"6@D$;"RUN HOUDINI"L(16255)L(16255): WRITE ENABLE SOFT EMULATOR:&P"5) FPBASIC";21);"0) HOUDINI"AZ21:"ENTER CHOICE- ";QdA$:A(A$)aeA$"X"ė:iiA$}nA0A$"0"10xA0A10}D$(4)A140,160,180,200,220,240,260,280,300,320D$;"RUN DISK TEST"D$;"EXEC SPL": FP$"OLDL(16255)!L(16255)) :=16:"SOFTWARE"S16:"--------":~("1) DISK TEST ";21);"6) INTEGER"::2"2) SPEEDLOAD DOS";21);"7) LIST MASTER"::<"3) OLD FP";21);"8) RENUMBER"::F"4) AUTOFP";21);"9) EPSON DUMP":     󠠠󍍠嬠卍堤İƬ堤Ƭ󍍠婮堧뮠̠獍İ󍍠讍׮笠堨젠笠ɧ䠤宠宠묠堧묠堧묠䬠䠠蠠ᠠ򍠠䮍֍ʠ㬠Ԡ頠󠴰󮍍驠ɠɠ䬠ᠠ占堠󬠠䠠占󭍮驠󺠠嬠䠠렠㠠䠠占򮍍驠º 󍠠堠場򺠠蠠䠠堠䮠󍠠Ҭ蠠堠󮍍źŠ堠捠堠䮠󬍠欠堠򮠠占嬠󬍠笠䠠占󮍍驠堠􍠠殍驠䠠堠젠堠占Ԡ󮍠󺍍驠󺠠䬍Π󍠠ɠ䬠Ԡ嬠宠嬠笠Ԡ宠䬠嬠宠ҬҽԠ̠묠Ƴñ򮍍򠦠ʍԠ򮍠Ҡ報ҠҲ嬠ԠΨ殠Π䬠ΠĬΠ殠󮍍͠ʍԬήΠ栰򠱬笠ɠ䬠堠ɧ󠨴ɧάάĠ㩠󷰬ŠŠŠŠŠŠ̠č렦֍¨Ǡâ̽˨̽˨͠ŠŠōԠҤĠìİ̽˨͠ŠԠōŠŠŠ뮍֍ʠ宍ź䮠묠㡠֠䬠占ðİ͠㍠ð占ó묠堸Šì̤嬠򍍠ó堲àðԠ 䍠àƠҠ̠썍ԍƬ򍍠ĸĠƠƠàðƠ堠󠠠堠젠䠠􍍠ĸԠĠ占ҠРĠƠƠ͍͠㮠Ƞ̠宍Ʊ̠ƴԍƵҍƶңƷңƸ̠ﬠ宠䩬宠庍ƱԍƲ΍Ƴō堤ððƠ嬠묠嬠򮠛Ϡԛ֠ððơʍ󩠧İӠàƸø䬠󠧴àƸ宠󍍠ӠŠ󮠧ɧΧ쮠٠Ƹɠ㬠Ԡ̠䠧̧堨󠤳廠堧İƧ䠧ħŠɠŠõŠõàƠ笠ɠŠ䮍ʍŠưĠ󠴰򠸰󠴰Šõ嬠ԠΠԍР󠴰堧ۧ欠宍ʍ宠笠嬠䬠ʠԠ͠ˠùĬԠ宠Ҡ䮍ʍҠƸĠ󠣤場뮍謠ɠ宠ɠà쮠嬠笠쮠à쬠䍍İĺƠIJԍ㮠ԠҩŠΠŠɯϩİúĹĠɯϩİźĹŠɯϩİĹĠɯϩԠҠİúĹΠ󩍠İźĹΠ󩍠İĹҠ󩍠İźĹ̠ɯϩİĹ䮠󍍠İƠƷԠҠƸİźƠŠŠưӠĹ렱ᠧԧ뮍ʍİİƠ䠧ԧԧƮˠ렲렲ԧ󮍠ҧﮍԬ㬠嬠堲䮠嬠嬠ɠɠ䮍謠Ԯɠ謠ɠ䬠謠嬠ʠ󡍠Կ֠Ԡ箠Ԡ䬠ɠˠԠ͠쩮Ѭɮɠ嬠ɠ󠴰䠴破穬򮍍ɠʍ堶ԠԬᠿؠҬӠ䮠ɠ宍›ʍ 䠸蠴䠸Ʌ`L>L2LGߥHH)HمL! H hh0ΥHH )  ٺeم٪ Ԧٰ0L3 Ӡ)RS0,ȽGȽ : .ȱ`ii LDߥRTSU ieRRSȥSR LL"hLhL0 ` +֥mn`LLРeȱe` SLP8hg}~` ӢL$`00LUhh$`0y L6 M쨈H h8(i($`  {"a[A 0:=ݙ/% $ ( ƧĠTĠTͧĠYΠ٠O̠TŠHǠϠG`h ˭l82`ΧԠEƧĠNgiihijم؅zȑ Lhh` bѐ HLh eLLALȱL` )ɠ%2p` LHH Ohh`HH bѢ Lemen r$X08opee yzLL> թz` RLhh,HHHH`g LHԠԠRXΠԠBԠƠA̠YWԠƠYĠ8eeȑsotpikmjlnLIaʽ)`,hZhhHZH`L ؐL2߆$ 8f $0L,$ޢ  ڐ;% Ѱ0 .Lx P88$ P څuۅvܤݦ߅LХo` h /sotpLբMLUL> hst /ikmjln` ѥ$L L6eiij eiȑȥPQȑȦa`) L+`ȥ`klmn)ŁȱłL\ R䦞 op` M` L<ԥhg Ѱ LML2 Ѱ`hhEx0x0 P 4L- S x% Lihx0 P LihEx0x0 P Li S 2Lihx0 P Liҥx0 LiҠȥ` `ƕƔƗƖś地ƕ`HZ[ ZeZ[e[f[fZfSfRZ[h`L>ߥ` ע0 |LҢx 62)*$  Z,hŊ HH`H x0  HH HLh$x`hx0P P Lihx0B P Lihx04 P Lihx0& P iLiҥx0 Liҥ L'߭LUߪ ~݅P݅QlPƍƌk릍l ȑkiklLr  vQg Ӡ ȱȱPȱQP`` L LHHLѩ , ,H (" GҐ L A({) ذ$ ߥ 0L Ʌʩ8 ߅ $ ֆsght ש݅3v g`نa _ޢba ƸƹUa bѐ a 8ai BԠ թz  u v ئuv $  ɀ L+  #$`0 y ӺFX$` :L6L2                䬠㬠㮠Ԡ򡍍宍嬠ɧɠﬠ䮠ɠ宠ɠɠҮ箍͠֍ɠ嬠ɠ qLaɠɿL܁ 碈 0 `54 Ԥ e`LP ĥ8e 槰 ĥL 饥|xʊe0v,kiE    Lhh iL RPL  f E0 OLL;jI* 2 S LE0ŝ8 2 jEF`` ѥHFHɁ i(  hɁ # ƥƥ hL8壅`780 ƝL` H hPL .L @8ƘH 9 c h L + -ƙ 80 ` ` kPQ` 8 襛 V*`8`` 0 LL Lƥ 8坐 LS릡`LqօX ߥE )LLMhh  hhvhuh`hhLL2LLJ߅X$`0 " ;   K`$LYߦy Ӣ KLЩ3 oɃ 9բdc`X}c~d c}d~``L2 P L 4ب),(,,,, ` M` g 0#ȱ i } 0 }VWƥVWL*ȱoȱpZуȥ[Y`hh CP\Q] *\P\P]Q]Q bѠ ȥ\Ѹȥ] L6 LL2L5ߊi` iLӠHȱȱh  q`湠 iե0襁 Sृ iե0 Sȑ в  ` +8o哅oqppr` 8op`sotp $8oYopYZoȥoȥpLFiZj[kl0ȱ  } 0, }L䥃mnk &؆VWL6ИL *LU ߢ Ӣc ,: L: : { | Ƀ 奅)?H$` h ` |h n ,䨢c ,K L "  Ԑ L,(,0 M԰`L8ߠ# Ɲ` R䅝`LJL2LSLM$`0  ҥvHuHHH`H fHHHHLhh< A8[4 إ& SŃń$iݢLUߦ i i  4 Ԥ0i $ L+`   u vLƝ&&&&`L` >hh LLLnhh M셓 \ɫ ɰL2 D ƓF\ hh OѰ'LAhh Ӻ0HH`H OѐuHvHH HLL> ѥLhhFL M쨈 L[`L8L2LMhh i$0 S'0ŃńiLi н fH # L.`L(L< 4بCei8坰 )I, M SդĥLrL2L8jikl"Łȱł L} Lԩ }L[ 8mnL)Ѣ,[hZhH[L` L 4LԅUJ*ꅗQ&` L ɫ9 L;ᥝ Q=Vt~w/z*|cYX ~uƀ1r54^Vo ev88; 1r hHH tݨhh` ѥLL8 ѥmn L `Lڢ J0 ې ۘ ېL %1H E h0+Ii-  L祢 ࠐ`eu` 놝 L襫壅` LL| ҥ0L8J` ҩ,ŝ 륡` 쥘I*` 禙 " +Z U ReNeJ @ 襝`$Ii8囅H # 9 9 ff` MLd,  z ȥ % ` @` F`` PLԥ0`   (f`L` 4FF`_ۄ)捱0捱 (0` 覝f`LL;ߢLUL*UU*ժiLij,` c i 찶` 穄L> 饝🥥8坐0,iE * 0(H 2h&&&&0( L襥 L#L祝 *NEWCUR #$80Is it inverse or flashing? BLINKYes, do by BLINK #$E0Lowercase? BLINKYes, do by BLINK Save character #$3FMake it flashing #$40 (BASL),YStore on screen Get character back #RAND RNDLIncrement RNDL byte een CHStore cursor offset Space filler !KYBDGet the keypress in A-reg KBDSTRBTurn off keyboard and return ; ; ; ; ;NEWCUR routine. This gives a ;flashing or blinking cursor #;depending on the input character. ;  $FECB  $8CB ;Space fillers  ; ; ; #;KEYIN routine. This calls the new !;cursor routine, and waits for a #;keypress, which it returns in the ;accumulator. ; %KEYIN NEWCURGive the new cursor KYBDA keypress? KEYINNo, loop (BASL),YStore it on scret &(BASL),YGet a char from the screen '(KSWL)and jump to the input routine ; ; ; $;EOLBEL routine. This routine gives ;a bell, and passes to STOP to ";handle the end of line condition ; EOLBEL BELLGive a bell STOPand handle the eoln KEY patch. This routine places ";a cursor on the screen and waits ;for a keypress from the input ;routine. It now calls the new ;input routine, which does the $;cursor flashing iinstead of RDKEY. ;  $FD0C  $80C ; #RDKEY CHGet the cursor offss ; $INBUF $200Base of input buffer #TXTMOD $57BState of the screen ; ;ROM routines ; #ESCOLD $FB97Old escape handler &ESCNOW $FB9BAnothe escape handler %ADVANCE $FBF4Move 1 across screen BELL $FF3AOutput a bell ; ; ; ";RD $2CNo. of moves don in a tab +KSWL $38Address of the input routine $RNDL $4EBytes used as a delay !RNDH $4Ffor the new cursor ; ;Soft switches ; KYBD $C000Keyboard input #KBDSTRB $C010Turns keyboard off ; ;Other variable****************** * * * CURSOR & INPUT * * Routines * * * ****************** ; ; ; ; ;Zero page variables ; -CH $24Horizontal cursor displacement 'BASL $28Screen line address base (TABCNT      b@L-L-L- >&?>>55?>ݫ5` , L`L   L 2ɠ,ɍ6Ɉ ɊHɇL$ !$%"`L2L%2$(!$`ɓɃ$LJJJ ) DI`(!`2`?L}L 67`LL}l:H)J h`L-%$ 4LB Lvʍ̩ ^,O` @Lk,0*`$(L)(hl8L*ON(*`, ɛLȹɠ 5><5<=LCL 3 5ɘGɈ9ɍ$ɕ  L$( % Lu LL в Lg ύ` IDJLZIDLeꩇl6.5 B5.``H{LhHL^LH{L؄D D`8D% 4D`% e ()`LH "% h%L48L$D D`*" 4L(!芨 4#0`%#L2$LsL_IHIILL=?L˺ :3 L _hȹɍɠəRɂ<Ƀ;O > hL LLC L< =L 0 JFL JL FJ| f } g 膈Ąp008倅,0$Ƃ`Ƅ `i i w it ةL  I L ````                    0,80:490,95510,95I90,115430,115"Z430,60410,60Gd410,115410,145165,145165,105XnI7010010exJII4v390,J430,J~:80,7080,20500,20500,80500,95500,130410,130HCIRCLE(500,88),40,0.5SCIRCLE(410,130),5,0.5490,8051  3:3,0,0559,0559,1910,1910,0S10,45380,45310,13080,13010,45x#9,44381,44311,13179,1319,44(I8031057.52SCIRCLE(I,70),7,0.5:<I10930057.5FSCIRCLE(I,105),7,0.5:P195,70195,30410,30410,60390,603es, goto ESCOLD #$C9Less than 'I'? ESCOLDYes, goto ESCOLD #$CCIs it an 'L'? ESCOLDDo via ESCOLD ESCNOWDo remainder by ESCNOW ; ;  , go in EOLBELYes, handle it NOTCR1 ; ; ; !;ESCNEW patch. This patch allows !;escape sequences with lowercase ;characters e.g ESC i,j,k,m. ;  $FBA5  $8A5 ; $ESCNEW #$DFConvert to uppercase #$CEIs it an 'N' or greater? ESCOLDYgoto ADDINP  EAEAEA60Space fillers ; ; ; ; #;NOTCR patch. Normally a line will ;be ignored if it is too long. $;This patch allows only Returns and $;backspaces when a line becomes too ;long. ;  $FD58  $858 ; #$FEEnd of line? NOTCR1No #$F6Near end of line? NOTABYes, get a char & leave else move along input buffer ADVANCEMove 1 across screen CHGet Y-offset back TABCNTDecrement the count LOOPIf <>0, loop !NOTAB (BASL),YGet last char !NOTAB2 ADDINPand NOTAB2No tabs in 80-col, so leave #$9CIs it a ctrl-\? TABYes, do a tab #$89Is it a ctrl-I? NOTAB2No, so leave TAB #$07Do 8 advances TABCNTStore the count *LOOP (BASL),YGet a char from screen INBUF,XStore it in bufferich handles Returns. ; "ADDINP INBUF,XStore the input ; ; ; ; ; $;TESTTAB Routine. This handles tabs ;and does them if necessary. ;  $FCC9  $8C9 ; TESTTAB Save the character TXTMOD40 or 80 column? #$05 Get character back %When the end off a ;line is reached, STOP replaces $;the last keypress with a backspace #;and passes to ADDINP to handle it ; (STOP Compensate for DEX in BCKSPC $#$88and overwrite with backspace ; ; ; $;Execution always returns to ADDINP ;whNXTCHAR gets an #;input keypress, and handles right ;arrows and lower to upper-case ;conversion before passing to ;ADDINP. The patch passes it to ;TESTTAB to handle tabs. ;  $FD7E  $87E ; JMPTAB TESTTABTest for tabs ; ; ; ";STOP routine. CHYes we do #$FFIs the character the (BASL),Ycursor? PUTSCNNo, so leave Get the character back Push it to restore stack &PUTSCN (BASL),YStore it on screen "RTS2 Get the character back AND RETURN ; ; ; ;NXTCHAR patch. RTS1 RNDHIf 0, inc RNDH byte RTS1 Return !BLINK Save screen character RNDLIncrement RNDL byte RTS2If 0, inc RNDH byte RNDH RNDHUse RNDH to test if #$20we need to swap the CHcharacters around. RTS2No, so leave 1 sL L L2L2!L,`<`I`WL {L  sL `L L s$` s%L"` s bȥ` LT 7  bL Pi`" LR biȥi bL]  L ^ L  L1 syy8 jYYE0`8LB  L8` $L   . ` $L5 e2ILeD s8 8咅 sL`LȄ` 7 L  T LL  L HH  bȥhhLTȱ;  $    ƆƤ$( 5Ƀз`Ӯ sLe@ s   iɺi襒  `&*͝撈`PI` Pyy` P8`    Lɠ ɍ `HH  hh`H@ LP Lh`HhL 0 s`U s sL `b s# s"% s! s L"z $0    `  脊 seHehLhihiHHL ɍɠ   L3膥L,hihi sȱ6_2`?2`hh  Șel $0 L`   V9  ɠ ŧ  򩬅ݱe拥HH#L ΠĠL I sʎi`SLjLr $`   L ȥee`hh脊$0 L sȊ`hhȍ ɠɩ膥`ź , L  TLhh s eil L  T    $0 `M ` ƠL bȥ`LL ~ sDž89 ` `HH hh`hhƤ" G gɩȱLȹVɿ L7  L7lʮұ  s ɍ  `n o sɍ`L s s sƗʱ` ɜɤɰ3ɺɺ)8͝!HH hheL$ 8唅啅`ei ,0LRL s L{   L ` ̢L LL  啅`&& ee楖`&&&8咪哐攈`șȄ``Ȉ`Ȋ`Ȉ ` Ȋ `HL h LH h 捥L ` LTȱɭƤ%H  h%L"ō88ȱ``  ɍ ɠ    ɨ  ɠ$Ʀ$H h$LoԠŠԠĠΩ`8农`Ɯ 8唅ɺ oiȹxɿ Lɾɼ L  L8  iL ŠŠŠΠٯΩſ̤Hɍ Œ  h`i`Hȱhȱ0e择l$0   ɠLo٠``ŮL ` `` L L   xiW  ɺ h  ۠éЮӠH h` # 3مv$0    LF $0 LF /Ě%   ȾȄ V   Lo ` f ȹɠɍ $0`$0 $0 g L ``L lii`#`\  # H h   LF  $ 0  ȹ  ȹ   L\   ?qH  h  oL ŠҺӺ͠ϠƭάŭԠ̠Ϡ XL   `Ƞ     N  `)  7L*   J Ԡ 7LN* LX*  ˬӠΠ U O   J L* O`* w     ]   N 7L+     w /     7L* O  L*    w  ?   '     ?   '  `E(   Ԡ h S Š p S`8)    /  J Lw)   Š   w  7L)  ٯΠ  \!L) `f)      w   `) x  L( A  d hL'   /   7L0( AL>( O     S`'   ? ͠Ԡ x S   ϠԠ  S    Š  S   Š  S   ? x  '  x   ?   '   7L'    O  /  . L&`&        #    /  f    7Lx' /  .L'    7L' /  .  /    .   L' O  LA'`%'   U   /   /  g  /  N 7  d    ]  -   f  -   o  9   x  -     -     9    -   `%   F   . ] B F  T F`&        7L&  /  .L' /                 '     0     9     B     K    T`$ 9  7L%  d h   9    ,L% ! " ! ! " " '"  Ӡή U P`x%  9 . X `%ӨҠ   S  Ӡή U P`(#   .        ,#`/$  .  F  .  .  .    . 3$`\$   f  `$`$                                   `8"   N 7L.$  d h        7L# ΠL$    7L# !L$    7L# !L$ "  7L$   7L# κL# ź ˠ   S Š`! ˠɯϠ` " Š`#"                                                           7L@!    7L&! d d hL=!   ~ ]   ]LC! ~   7L O A`  U    7L!   L!    7L!   L!  d h O  7L_!`X! ŭĠ`! ŠԠ`! ք֭ͲLɍ `` w F w  w   `  `; ? `F     7Ly d d h P`Q   f /  .`z   U    7L    7L d d hL      ]   ]LC!       # , 5 > G P Y b k t }    \[Z QY\[Z8`l6 _Ȍb_Ͳ] ) (        % - 5 = E M U ] e m u }               h`l s0LLL 0`-8`; U ] e m u }               ֜LL LL LL s<= s `( s sȊ`? jI*LqZ ȹLi L~ LHmhm`ی     sH( LhihiHHʈL L& sL09`I`cL|LBLX LL s sY)8jE*` LL LL  ?  7L: ŮL,: ϠӠ`9   (       <) h  . p  . ] B F   . % |% h p $     8  f /  7       7L:        L: O L9   O O `;8  (    5       46 7L9    6 5 )7 7L9 )'     ?8 7L9 5L\9L9      7L9    /   /  . L9 5 5      /   L9    L78   7L&8    L78     Lu7`%7     7L8     ?8            N 7L8 ]   ]LS8 L9     7L8    L9      7L8       ?8  f    f   f  `$`6       7Lj7      ` 6 $        7L:8 3    7L7     7L7    L7 6 6     #    f      7L8    J ſ     J `5            N 7Lo6  L<6    7L6 L6    `06   ? ϠՠԠǠٯΩ \!  `6 `   7L6 x L6 h p`6  . &   0 F o K F % |% )`4  7LN5 4  7LK5 j) 7LK5 4LT5 O 4`&5   *5`U5   *5`g5   *5`y5 `   ,L5 3 Y5 k5 }5`5<ܩĿ`5 `   7L5 )  *`5  p   h 0 3 3  *    1  7L4 2 h   7L4 o   7 7L4 m0  * 3 ;0 0  * 3 L4 L4  * 3 0  * 3  7L54 / 3 )`3  #    f    N`4  . & h  . p  p h p  7L2`2 & &   0 F x  .   . o K F      . % |% '    ]   7  `3       `$`3 i 7 3  Z    N  ``3 ` 7L3  `3 j) 7L4 3     8      0      7L=2 LB2    @  1  . - .  ]   F   . % |%`1   x x p  7 7L2 \/   0 8 x  `$ 0  p  . 8  p    . x    x p     .   .   .   F   .   .   F x  F h  F  ,#  F    7  h`0 ,  7L2       `$  ' .      . % 9    7L1 |% ]  7  X  z  ]      /  . L0 F   p`/ x  o   7 o  `$   h`70 \/ 0    . 8    . /`i0 m  i* hl 芑    ɛ``0 x  0 (  0  . @  1  . - H 7 7LL/   8  LQ/  7L.`. 8     8    ] - H 7 N g 7L\/ 8   7L/ .L/ .  7L\/`X/   X   `$    7  X     7 `- H  7 8 - @   N ] F`-     ˠ        . % |% L\. Ӡή U P`%. 0  ( 0 @     7L. ).LQ/    7L.   @ O L.  P  7L.   @ O  % @, 9    7Lq- |%   J   w '   N    7L`- ӠLk-  "+Lv-  7L,`,  ]  7L-     L-L- O ]   `}- 0 P 2  7L- L-   8     HL(,   J Ġ L5, &   7L"+`+     P 2  7L, i 7 3  7L,    d d h ӠĠ   Ӡή  P`<, &  K F   .   .      . /   /  . L*L+ `*   ? ҾϠ٬̭þҾϠ̬  ٠ӿ w   J w    7L+     L5, w    7L+  7L+   . % |%   . % |%  L5, * 7D61A LISTSTRT $D6CC NEWSTT $D7D2 LINGET $DA0C ESCNEW $FBA5 RDKEY $FD0C RDCHAR $FD35 ; ; ;  $FD2F  $300 ; #ESC TESTFNCheck for fn keys 'ESCYES ESCNEWIf not do escape code ; ; ;  $F775  $875 ; TESTFN #$04**************** * * * Function key * * Routine * * * **************** ; ; ; TEMPX $2C RNDL $4E RNDH $4F CURLINH $76 ; ; KYBD $C000 KBDSTRB $C010 ; ; CMDLOOP $D43C FNDLIN $    7L1F`FԠԠ  D `1E MB   ` C 5E      7LQF OL7F     7LqF O B CLF    7LF O ALF    7LF O  DLF    7LF O  DLF           N 7LF  `  7LE O     7L*E O   ``D  D   D ٠  D Š  D ˠ  D ˠ  D ٠  D ٠  D ŠǠ  D Ŭî   ;    /    ? / S LD   ?    ? ԠΠĠӠ   ? ԠԠ h S    Š p S`C     ? `  7LD LD `D `   0 /    /  . LB  (   `IB ŠҠé̠ԠŬî Π٠̠`4C  (         ŠҠΠ    é̠Ԡ H .  L`A  `   ,LHB 1: ; < 3< O< = > ? A A`B    ӱ  $ <" %   .    7LB           h  x        p         Z   L@   .   .   F   . 3$   .   .   . 3$     7LqA O LA   7LA 4LA   B  .   . 3$`?   ? h  '  h   ? p  '  p`A  6  Ӡ  ź  u  /     L@   נŠ        7LA & h  . p  . &   0 F o K F      . X  |% '   N      /    u  /  . 3    / < L ? L>       `$  4   2  7L[? L`?      8  /  . Lh?       `$`>  ŠǠ <) h p     `$   Šˠנ$ f 4     .  8=    / < L+> 3 3  * <  8=    / < L]>      / * 3 / 8= $   $  / < L> L~>  Lq>`=  ٠ I( =    / * / 8= / 7L> 3 .   .    .        ,#`<    7LU=   L`=  x   .    .  . ]  F`4= )    7L=   ? ԠӬӠή U O`=  ٠ I( =  * x  ٠ I( ;`; ; Š <) ;`< ; ˠ <) ;`/< ; ˠ <) ;`K<     `i<  .        m< /    . 3$   7   ] F L<   `~<     .   L:   S   Ӡ  f 4       S   Ӡ   Ӡή U O`-:   '     L;`;    ;   ;   ? `; 9      7L;`; ; Нƹ`ghȥQћ Pћ `֨gȑggiihij ֩*stopijklmn IآURhhHHz`gihi` ,  ,Є hhPQPQD X ȱȱQP- $_^ ijL<Ԡȱ^Șe^^_iȑ^^_Ң3 j )` )`ʠ$hh eL$p "tpM?E0<=Ѕυ 8ɀA N4O0Ťș98:I8xІșh0hhpo`M$L Z۽`H \h ֩P :ۤv  ڢ .ՆF v YLئij YՄ ֐D_i^aeii`jij圪8iae^_^`_a8stopiejȄ ӥPQmnij e֥gh^ DIRECTYPE MISMATCSTRING TOO LONFORMULA TOO COMPLECAN'T CONTINUUNDEF'D FUNCTIO ERROR IN BREAKɁ! i` Ӆmn8囅^圪#8^Ɨ8^ƕƗƕ` i65^^.`p(o"H H ANOҾSGINABUSFRSCRNPDPOSQRNLOEXCOSITAATPEELESTRVAASCHRLEFTRIGHTMIDNEXT WITHOUT FOSYNTARETURN WITHOUT GOSUOUT OF DATILLEGAL QUANTITOVERFLOOUT OF MEMORUNDEF'D STATEMENBAD SUBSCRIPREDIM'D ARRADIVISION BY ZERILLEGALFOUHLIVLIHGRHGHCOLORHPLODRAXDRAHTAHOMROTSCALESHLOATRACNOTRACNORMAINVERSFLASCOLORPOVTAHIMEMLOMEMONERRESUMRECALSTORSPEEDLEGOTRUIRESTORŦGOSURETURRESTOOWAILOASAVDEPOKPRINCONLISCLEAGENETABTFSPCTHEANOSTE0oeܔٱ0ۏhn &lnrvjUaE=H jmكzڕؤi֟H֐# A :dFZyy{{h}PTFNddENFONEXDATINPUDEDIREAGTEXPRINCAL       !!! ! ! ! ! !!!!!!!!!""" " " " " """""""""     ̠ЍΠύ kip CMDLOOPIf not, goto CMDLOOP ^1 NEWSTT ; ; ;  $D729  $800 ; ;LIST patch to call CHKMODE ; LSTPATCHCHKMODE ; ;  rom FPBasic's ; LIST routine instead of going #; directly to NEWSTT. It checks if "; Basic is in direct or execution ; mode, and goes to the main "; command loop if in direct mode. ; CHKMODE CURLINHDirect or #$FFexecution? >1In execution, sEYL F56506383FFFFF68 ; ; ;  $FCF6  $800 ; !;PLIST sets up and calls the ROM ; routine that lists a program. ; PLIST Set carry LINGETStart at first line FNDLINWork out its address LISTSTRTand do it ; ; ";CHKMODE is called flace with function address FKEYL,X  And jump to the routine ;  $FF26  $826 ; 'FRETURN TEMPXGet back buffer offset #RDCHARAnd return to the routine ; ;  $F7B2  $800 ; FKEYH FCD5FFFBFBC5C2FF ; ;  $F870  $800 ; FKSYes, do as before ; ^2 KYBDIgnore first key <20,1,2 for fkey type KBDSTRBTurn keyboard off #$07Bring it into 0-7 TEMPXSave buffer offset Use as an offset !/FRETURN-1Push return address  #FRETURN-1  FKEYH,XRepSet up timer RNDH &^1 KYBDAny key following ESC? FOUNDFNYes RNDLLoop for a while <1 RNDH <1 'ESCRET RDKEYNo, do old ESC routine ESCYESas before ; $FOUNDFN KBDSTRBTurn keyboard off #$C4Up arrow? >2No ESCYE` lݥ^_ 5^Hȱ^ȱ^h(po Heooph^_`T SRS` H hhhL* ьHH 㥌 hhe^^_ L* IL` ) ʊH񌰸Iš hhhhhhhHH` L ` ^LL g ^ ie^^__Ŕ #^05ȱ^0ȱ^+ȱ^ȱ^poŜ䛐^_e^^__`)Jeiop Ӥȥ敥ȑL䥡HH ` lhhqL 奌  奫  *LݠHȱȱh^_ H^qheqqr "e膮 㦫 R^LԥSR`FHI8eopnm opqrh`M0 䩀hЦstopmnU^_R #ij^_lk 󅔆nmLb^_^ȱ^ȱ^eȱ^e(ӊ0ȱL$8vС,L A  ީ j ީ HHHHH L  ߅Lj A㥋HH jhhȱ𙅄ȱH +륹HHȱHH ghh Lhhhhȑhȑhȑhȑ` jݠ 6hh R䆞`" ȱ ↭^e]eR Ӆmn殤ƕƮ8m因n圑bȱhhћȊћLLȥ e^eʅʥʆd ee`^de *& edeeƙ` 8ompn` gݥ0 ɐ ~LGHHHHH hhhHH ,҄ hh)klnm?Łћȱeȱeעk,5LԢx8` ћLK*L өȥʆȑ $PhihiȑȊLL(L<  } }$%0Ʃ 8(L$0pijlk"ћћliA[8`hH`klmniȅ ӥȅklȥȑȑȑȑȑiȅ` ieȅ  L H ϐ { lhHHH hHL? hυυ Ljݥ ,L mݰ % LߩƉ 慝 憨80 ў*%L L ު `  }LޢٹHH ޥLLޥШh^^h_H r륡HHHHHl^h#d j݄hJhhhhhhE` LJ }d.U"i L=8,LLTҐL {ݩ),(,,ѸLLԠhhL ߅` ȱLL  ߅ ei` 꺽  ' 8 uvL׊i , {$8$0`LԦƹƸ$HH `ީ 8ϐ*IEʼna Lݦ,{iweLi^ e^hٲаg jH hV_F*ƹƸٲаH $P )0 Z ۆ $1$P 膸 ": ,i = {LrH0h J c ,Lqۥ 3 LۥL Ȫ*ȱ_ȱ{ȱȅ| L+ܥLSؠߠL:`?EXTRA IGNORED ?REENTER  \I`$ !i)$ )L(ʊ$ L W 檠^ \ LD۩ ,? ɠ )H h`0{|uvLh$L :ۥyz` @ `" ީ; =L Z , ,խLc ZL,զ}~, ߅hL* ,h`PQ/ Q^ԥP &^ &^ePP^eQQP&QPe PQ L ߅ ޥHH {h* mh r ȥ`L'hpoj iLڠ 㥌 婝 5ȱȱ` = $)94,;D {$0 4 Lک @AA?@>`v(Le lL5٩ ӥHHvHuHH >L ٥vQ 8egh ֐` eӚɰ ,ZLLhhB;uhvhh ٘e`:,  "hhh` { ɫ ޥ L>L( HɰɫЉơe$v# \ۦuv $ W (Lb-逐@ HHLLF:L8gh}~`Ƀ` Sբ$LLץڅuۅv܅݅ߚLLްij ֥`a, PQ ֥`a```aiśj地a`ʈjiLԭVSL@TL9 ʅPQ ͤ01&`` `,U,R@ ,T,SP˥FhGhEIhHh:h;} v XLYI ?|}E@HH G|Ȍ}hh@<)}`Warren.K.T! ʊL[ I`8f`?2`@ g RPmQnLԥPsoQtp` g RPsQtPiQj֥PiQjLl֩ ޥ8fإuv Lنަߥuڥvۥyܥ~L̑湭`: 808`ORXv( sL  񕰆򊅤TH کURPQQPIPPIPPPQ)stopgh֘gghgh K֩:ۅ<ԅl g RlP L LHH}| G c # p 祢H 祢0 I p h uL\ !  禎  b𩊠LfHL#IڢIڢ-(h#5ᆥ](IڢʥH HɁ fΠ \hɁf hL` vy{| g|S}dpL}Qz}c0~~D:ƀ1r۠ 饬iP z녒 f륝Ɉ + # i8H rh ` !멓  v禎L酭 뱭Ș殅 饭iȅ 穘ƣ`5Dzh(F 0ɠ 穦 驪 禡 .ɠL+f ck ^ƙ.șI)$Ъ0.ȩ+.8嚪-E/8 i:`  cd pLP袊 +륪 #쩊  UH A驊  hJ I`8;)q4X>Vt~w/z*|cYX ~u q80L>nk'nk(X 1vu8 4L:۠-$șȩ0LW     9ƙ U i 0 i8.ș0șylykyjyi00ڊIi i/ȄȪ) 芢 脤`)F 鄤`ɠ 넬I* L)腞` -+ [..E0 - +f \$8Lf$På8噅 U 9ƚ0`LH$ 9h80 LaH ch 륪EL祚 d$0L e_^^^^ ^`, r^_^^^ %^^`` r` L襝 *` 녞I*L)F``a`Ȫı`E0!` Şȱ`şȱ`Š ȩŬ`(IL륝J8$E ^`e0,iLR襫`I0hhLNL ci ` cP Li v r8坅 Ğğ Ġġ* e24(&&&0⨥塅堅埅垅L@ (LꢅLԥbcdeL.^vvvvvj`^Vy dv88; 54541r LᥝH- 2 f  \7 h < L bcde 饡 饠 饟 饞 LLJ eeededcecbebfbfcfdfefJ`^_^^^^W8Ie Ji `eeeeeLi&&&&8坰IiBfffff`IIIIII `ELԢai0ᦠL LN覸^e^`_a`H` Jh`` g R L楝ɑ 률PQ`PHQH RPhQhPL F犠P` F熅  L熆PE%`dL 饢IEL < LS리8$Ii0ǨV $