7\XMASMENU MASMENUCOPYRIGHT (C) 1979, DIGITAL RESEARCH _͌> ͒> Ò> Ò͘~#͌ì _2<د2? ه!߶2:2a{_:߷ʖ:߷>Ľʖ:=2–!B!6#5ʖ:߷Ľ!ͬʧ )!F#xʺ~0wëw!" !~6ͽ:ý(!#͘*~ "ڷ"͌#>?͌͘ =_.:;<> Oڅo$>!Y2*O"ʉ@G:ʐ:wÖx2p0ʹ#*©6?ëw˜0ï#6 ¹.0#*6?w0#6 #6" #~?  xDIR ERA TYPESAVEREN USER!yO#< Ty#O 3ۯ21y_͸2y2ͽ:ط˜1͘A͌>><92^ :߷¥.!_~#fow]ݭގޥ!v"!çREAD ERRORçNO FILE^:߷ ! ~ 3#0 Wx x ڀ ڂ G ~ # 3x~#B!Y~ɯ2:߷=!߾ý:߷=!߾:ý^T!~  6?#ˆ:`O> K{͘A͒>:͒͢>:͒͢xK > K > ͒x  ͢ØÆ^ BRͧ9!5‚#~Y‚#"T<ÆALL (Y/N)?^ Tʧ͘!6!~ڇ ݯw4!Y~ʆ͌†t=ʆf ^ T ݯ2o&)|+!<ͧÆNO SPACE^ :Ty!B*O=?_s#"^sG!~Y޸psp2mÆÆf ͧÆFILE EXISTS _: É: :߷ʉ=2)ͽÉ T!@k!B}|q=qf^!~2>`~2߯2\!!B!~> >#0~O#Cx2͘1)ͽÂf zͧÆBAD LOADCOMf^: !߶ Â$$$ SUB"C{2!"E9"1A22!ty)K!G_^#V*C~E ,&-AGMS!!ô!ô!Bdos Err On : $Bad Sector$Select$File R/O$:BA2!~6 O͐  :E B 2>: b# : y! 4 5~yy5 6yҐ^H@Oy H H: –ͬ  #H: !  Hù H H $O͐: 2 *CN# x: 2 p&x~+é72 H! >w_: ! 5ͤNkͱ¦ͱxʊ#Nx: ! 2 ͤ! 5™#wO~x½p Hy<< ʑ :!qMD#2E>! ^#V w#P:BO|^#V#"##"##"##"!O*!O*|!6ʝ6>*w#w*w#w'û*! J*""!N#F*^#V*~#foyx*{_zW+*yx#*DM*s#r*s#ryOxG*0MD!!N: EG>O: \S*C :qn& ^#V>O^"*}:*)=":O:o"*C *C!ͮ~2~2ͦ:2ͮ:O:w:w |g}o*# ):BO!yoxg*:BO}!N#F "*#*s#r^ ~!J! J*:o$*C~i6iw**{#zr+s{ozg**͕** ,w͜͸Ͳ!!N#F$**O!~#:A#~$=2Ek͌::/GyO>2!q*C"͡ʔ*JҔ^:Oyʃ?|x | s-|N-# S:2E!~Яw>T D^6k-äPYy 5*{zBK5ڋ>*Cw~#+w#w+ɯ2E22i^ *C :~w~͔͔# #  w ~>2!E5T*C!"C"C!w# F! w͌x2͢*C ~<wʃG:!ʎì 4~ʶ¬:<ʶ$ʶïZͻx>2>2ͻ:!Z2:Eẅ́͊Ͳ>2>2T*CGͻ:ẅ́n>2;O ^DM;}H>"*C ::ddslO s#r:E͊:==»y==»*Ww#*"͸*:G#š"͸:!w4!iw:Z!E~=262*C!!~~#~O~G#n,-.‹! w! yG!x͢.:E<ʄ! q!pQ:E<. ʄ$.:E<ʄ-BOSKUG 504BAS2-0 COM`BAS2-1 COM` CATALOG 5 DISK DOCEBASIC COM`EBASIC HLP[ERUN COM\ !"PIL LSP$#$%XLOG15 LQP*+DECOMPILLBR,,-.OTHELLO BAS89:;<=>?OTHELLO DOC&@ABRUN2-2 COM\CDEFGHRUN2-3 COM\IJKLMNRUNK2-0 COM`OPQRSTSTARTRK BASTUVWXYZ[\]^_`abVOLUME5 DOCcKERNEL HQXdefghijklFORTH ASMS/01234567mnopqFORTHLBRDQC rF83 COM>stuvwxyz{|}~XLISP DQCDXLISP COMXLISP COM7PT LSP&'T LSP()XLREADMECQMSMALL-C LBRSMALL-C LBR}SMALL-C DIRXC DIRFORTH83 DIRXLISP CQ INTOTHELLO INTi6}2ExN! ~态O>G~G!~G} *C!r#r#r ^ͥ_y#x#{s+p+q-*C ͥ!!q#p#w*:BOYG}*MD "ã:!Bw!>2*C~=2u:B2~2wE:A*Cw>"!""2B!"!rQQQâ~?ͦ~?rQ*"CQ-Q͜QüQrQ$Q*):B"*)*)Q;*"E:;:A2AQÓQÜQ*C}/_|/*W}_*"}o|g":ʑ*C6:ʑw:2E**E}DQ>2Ó5ELV_hqx|ÀÄÈÌÓÚÞâ$ͷtE(tͷtͷtͷtͷttt t!t"t#ͪt$ͪt%t&t'z2t!("R!"T:C*R|+"R|*T"R!"Tt4t012P2Q2<:P(2Q+2:P+:<:Q+:P+_ 1!"3"5)>22!"!"!~~jwO1!VsV1!{V  :g|KxGs1%VKW{MLLLh  1234567890-=`qwy[]a;'\zm,./eiou!@#$%^&*()_+~QWY{}A:"|ZM<>?EIOU16T!336&*D+2:$2(Iu1 ## #### ###^^nfut ### )d END <(+*)-,=/;>:#^IFTOGOONOREQLTGTLEGENEFORLETREMDIMDEFNOTANDTANSINCOSSQRTABLOGLENFREATNABSEXPINTENDPOSRNDSGNINPASCVALXORSUBOUTTHENREADGOTOELSENEXTSTOPDATAFILECHR$MID$STEPSTR$COSHSINHPRINTINPUTGOSUBCLOSELEFT$RETURNRIGHT$REMARKRESTORERANDOMIZE    HEFIJNTLGAKBOCDPQX! )&$"%(c#RU'WYZ-,+*S.V03%| 7EJMNNAFGFADE $BASNS $!;,r+s+q!>,r+s+q>!"?,!*?,!-s+p+q+p+q:-=2-*-*- w*-#"-*-#"-!-s+q+p+q:-=2-*-:-w*-#"-!-q:H,9*-&͕D*-&͕!-q:- j:z,<2z,g QÂ!z,4*-M :- ‚!z,6!-p+q*-~$ʣ*-NE*-#"-É̓ͯ *,DM; *, 6 *, 6*,̓ͯ͡,ͤ͡:G,*, ,;,͕,͡(ͤ!,6*,͡2-O>Dͤ:-:G,P,͕,͡h͕ͤ E E!-p+q!-6+6>!-!-60*-&) -S *-&) -S +s#r!-6#4Ø:-/!-*-ME E!-4Š!P,6#6#6!O,6!S,6!-q:+-<2+-H!+-6*+-&, :-w,-R !-q*-DM|*-ME E!-6:-!-s*-&,- NE!-4Uq,!-6::X,Hҫ *,DM;!,62X,:~-<2~-O!,- :X,w:X, *-#"-:I,!D,:~-=O8!~-6:X, !X,6 :X,*,&*,~:,<2,!,!,6.>2X, -> :X,HL1:X,\c `U1!-p+q:~-<<2-:B,~!I,6:T,ʝ:X, ʚM2X,Æ1:B,*J,#"J,*-|OE*-}OE?E:-=2- E^Eq!I,6!L,6:A,m{,;ͮ!y,6#6!"-}2~-,!,6!-6:1:{,$¤!-6:-<2-O!{, ~2- ʤ:-A2-O>ڡ*-M! ^#V!C,6á!D,6á!G,6á!F,6á!E,6á!H,6áemu}/!Y,6!W,6!T,6#6:X,"!y, !T,62!y,6":X, SUd͇ :y,1:X,"͇ à HҔ!T,61:X,0.2X,/ > / :X,Ex͹ :X,+:X,-Hg͹ /uFId/ :Y,!W,60!Y,6#60= à  c  Ҩ Û:X,$»!U,62 !U,61h / :Z,F:[,NH:Y,H!T,66!T,64= ` :T, :X,  2X,M ` :T,c\ 3N *X,MN  H M*X,MN 3 ,N N *M,+"M,` = à :X,\q Mà ͹ h /҂ CIdå:y,/Ҹ :Y,<2Y,O!Y, :X,w:X,!W,?w:Y,ڸ !y,6͇ 1͇ 2X,:X,0O> /:X,a/>z!X,/H:X,. !F, :X,_2X, :X,AO>/ H  H H < / :X, H 1!y,6!-q*M,#"M,:B,g *-M> !Y,t >*Y,&O n&"-!-6*Y,&Y ~!-   *Y,&c :-O! ~2T,O>@:T,cH :T,AO!m ~2U,:T,2V,!T,65>:Y,-F +s#r#4Œ >!-6*-&*-:-<2-O!Y, :Y,!-/H= :Y,!-_ogN#Fog01PROD $ ERRORS DETECTED$:A,ғ ->@_!D0"0.*++".."-*-#6!7.q*-^*-*7.& "2.!8.6*-##"2.!9.6*-~!9. *9.&*2.:8.?28.!9.4 :8.*-^*-"-*-#"2.*6.&-) ^#V!:.q::.0.!..;H !B,6OTdͯ!<.p+qͥ *2.*;.s#r*2.+"2.*2.>w "->-0 *-~2=.*4. *=.& *-*=.&*4. :=.=2=.¿ >Ñ *2.^#V"-u >*4.>2>.O# *0."-*4.#*0.###*4.*- w_;ͥ *2.6  *2.q#p*6.&-) *-s#r:>.0.+s#r*-~ͥ *2.>!?.qͥ *2.:?.wͥ *2.~ͥ *2.^#V!@.qͥ *2.:@.wͥ *2.~B 2C.!D.6:C.!D. Ϳ o&-"A.*A.-% *A.N#F`i"A.ù *2.*A.N#Fq#p!D.4ž B 2H.!G.6:H.!G.@ *-#"E.Ϳ O!- *E.N#Fq#pͿ O!- *-s#r!G.4 !0q:A,S*0M!"-"M,}2/20!"-!"-:A,!` "4.!6.61 1A$AI N !^ "4.!6.60 0A$AI N !0q:B,!C,b ̓*0M|q*0M! ^#V*/M6` &k -3#LDd3*-DMI N ;!-6*AAoҢ1: 0µ*0DM͠* 0M| ]͠ | |*: 01* 0M|*: 0O|1L: 01G|L|͠[|et0|҆͠|͠ҕ|͠ҧ|:0½*0DM,|* 0M*/MͿ:O,IFd *0"-͉ ! 0NSdk DM,!|,*0M/B H8SId,*-DM 5*0"0͂͂5*/MҜ*-DMb*-DM B OPâUFd*V,M: 0OPeY, , , , ,,,*.. ^#V"-:0-|k DM,|:0Nk DM||:0҅||8| |9| |7|*..N#F*..##*-s#r6|*..##N#F*.. *-s#r!O,6>..0+s#r"-*-#>w# !-4,*.. ^#V"-k DM.|ff[|^|͂k DM͟f6|͔: 02vEId7|͔ҧ*0"-* 0MN ͓ ||f6|͔*/M2;0* 0M*-DM:A,:;0DFd*-DMI  ,,*0MͿ: 01*FId*0DM,-| *0"-*0M!A,yPDdN :A,ҍDMI k DM,*-DM @|@|:Q,>|!Q,6'|!R,6GGWW!Q,6?|!Q,64|!Q,6[|&|!Q,6[||[|%|:Q,/5|͟fͻ͆k DM`||ͻ͟͟: 0>!+0q*+0M> >*-#"-!-0p+q*,0|O|*,0}O|!/0p+q!.0DM!10p+q!00DM:E,V*-M_|!0"4.:0?26.!20q:A,҅W :20-DMI !04Wo 230͆k DM: 01: 01HFMd>>! 0: 0MMd>>* 0M: 01>FMd>: 02FMd[|: 0<2 0O,*0Mx  |*0M||: 01A|F|4|!R,6;|:0g*0DM:R,x"1͑Ð:Q,҉)*͑Ð=<͑!50s+q: 02®*40M||ú*50M||[|:/<2/O!/ N\|9|*/&/ :0w:-=2-!-6UNdA6|*- N#F!-*-q#p*-#>A*-"-**0M*- -%HhnINd:-|LUd!-6*/MҞ` /!B,Ҟ!-6͂:S,ұ|ö6|k DM!60q*60MB UIdDMI N k "0DM:O,!O,6*.. *-s#r!80p+q2|!906*70~!90N*90&*70N|!904.:y,[ͥa|).|1*/MB HҖk DM!:06:Y,!:0ڹ*:0&Y, NA!:04›$A*-#"-DM:Q,: 01+|,|: 01:0J#|$|: 0 4*0"- *-DM:0=20O>k DM: 0 W*0"-͉ ! 0SPFd1: 01!0mPFd:0O>: 0=2 0O: 0 ¬:0ʘNFd|*0"-k DM: 0ʼNFd* 0M|: 021:A,*0Mͬ DMI * 0Mx N : 0JJFIK!!*!&O@ G  "H}~R&JQTUE. HJ %'<$% =>?S  "H}~R&JQTU  "H}~R&JQTU-|z {  NM##''()+,L112233445579:;B4D,E+F-H(LL)MM5NNTT8UUUWWPXX*YY6[]]9^^ _A`Baace:::fhijmnopqsuvvvvvvvvwwx"G bPZ\SVJKROQI.1@@0@@0@@0rt<?=/ lkA$#g3d8>C0D6C"$   !"#$%-/02<=>?@$BCCCCCEFYZZZ[\Y%]^_`aaabcdgldddosvz~ddddddd$$  #&),/3579;=?ACFILOSVY\^adfhkmptvy{}2/7!;22 $$%%''))+++++---22555577BBCCDDEEFFHHHHHHHHHIJKLLMMMNNOPQRSSTTUVVWXXYZZ[]]^__``abbcccffggghhiijjllmnnopqqsttvvxxyyz{|}~                 #'(+7UaceijuBASIC-E COMPILER VER 2.0$19,(̓qj+:B,!A,X+!L,6!06!y"I.!/6!/6!+/6:L,U+>x!I.+,*͌+*/&K.) *I.s#rt+"<0͟+́+*<0+">0*<0"<0>0<0+)**<0D :T, **/&+/ :/w!B06:Y,!B0)*B0&Y, Nͯ+!B04´)*/&. :W,w*/&k/ :U,w*<0(!) ^#V"I.!06*>0"<0*>0<0+*PNd*<0"<0҈)R+>!I.+*́+:/+!0s:0<20>I.+M:L,*:02/t+"<0*/&+/ ~2/*/&K.) ^#V">0*<0 n&"@0}@0>0+Hҽ**<0#"<0É**<0#) ^#V"I.>+*!L,6R+>!I.+7+t+"<0͟+*<0 n&"@0}!@0:T,+H%+*<0#"<0**<0") ^#V"I.R+͌+́+*/&K.) q#pt+"I.E))!D,6j+!B,6)vy T*I.$) ^#V*I.' n&:/<2/ ž+OSd:0Ү+ͥ!06!C0q*/&/ :C0w:/<2/O>d+OVd_{ozgi`N#Fogo&og_{_z#W0DC5000D2A412E4E234603606922412EC3B90DDB :100DD500CD0C0C2A3224E2346E17135 :100DE500237021442E34C29E0DC9CD4 \ INT36013A482E21472EB00ECD28 :100E0500FA0B2AAC2D2322452ECDBF0B4F06002110 :100E1500AE2D0909E52A452EE34E2346E1712370DF :100E2500CDBF0B4F060021AE2D099E52AAC2DEBF0 :100E3500E173237221472E34C2FA0DC921063071A0 :100E45003A412C1FD25302A:6304DCD0605C92135 :100E550000002A32D2242C7D32EF2F32053021AB :100E6500010022A72D21FFFF22A52DCDF0043A4137 :100E75002C1FD2C30ECDFC0321600B22342E21364C :100E85002E3631CDD50C0E31CD410E0E24CD410E71 :100E9500010000CD490C0E04CD4E0D215E0B223410 :100EA5002E21362E3630CDD50C0E30CD410E0E24EA :100EB500CD410E010100CD490C0E04CD4E0DC921C9 :100EC5000730713A422C21432CA61FD2E50E016250 :100ED5000BCD83032A07304D0600CD7C04CD71046C :100EE500CD12182A07304D060021DF1609095E23A9 :100EF50056EBE9C31118C311182AFF2F4DCDC81998 :100F05001FD2360FCD600D1FD2260FCD6B0D11A34D :100F15002DCD331FB5CA230F014C44CD6406C33311 :100F25000F2AA32D444DCD490C0E08CD4E0D3BC4 :100F35000F21812D362ACD411AC31118CD411AC36F :100F45001118CD6F1CC31118C31118C31118C31183 :100F550018C31118C31118C31118C31118C31118D8 :100F6500C31118C31118C31118C31118C31118C31D :100F75001118C31118C31118C31118C31118C311BF :100F850018C31118C314)d END <(+*)-,=/;>:#^IFTOGOONOREQLTGTLEGENEFORLETREMDIMDEFNOTANDTANSINCOSSQRTABLOGLENFREATNABSEXPINTENDPOSRNDSGNINPASCVALXORSUBOUTTHENREADGOTOELSENEXTSTOPDATAFILECHR$MID$STEPSTR$COSHSINHPRINTINPUTGOSUBCLOSELEFT$RETURNRIGHT$REMARKRESTORERANDOMIZE    HEFIJNTLGAKBOCDPQX! )&$"%(c#RU'WYZ-,+*S.V03%| 7EJMNNAFGFADE $BASNS $!c,r+s+q!f,r+s+q>!"g,!*g,!-s+p+q+p+q:-=2-*-*- w*-#"-*-#"-!-s+q+p+q:-=2-*-:-w*-#"-!-q:p,9*-&͕D*-&͕!-q:- j:,<2,g QÂ!,4*-M :- ‚!,6!-p+q*-~$ʣ*-NE*-#"-É̓ͯ *,DM; *, 6 *, 6*,̓ͯ͡,ͤ͡:o,*, ,;,͕,͡(ͤ!,6*,͡2-O>Dͤ:-:o,P,͕,͡h͕ͤ E E!-p+q!-6+6>!-!-60*-&) -[ *-&) -[ +s#r!-6#4Ø:-/!-*-ME E!-4Š!x,6#6#6!w,6!{,6!-q:S-<2S-H!S-6*S-&, :-wT-R !-q*-DM|*-ME E!-6:-!-s*-&T- NE!-4Uq,!-6: :,Hҫ *,DM;!,62,:-R:-<2-O!T- :,w:, *-#"-:q,!l,:-=O8!-6:, !,6 :,*,&*,~:,<2,!,'!,6.'>2, 5>  :,HT9:,\k h]9!-p+q:-<<2-:j,҆!q,6:|,ʥ:, ʢU2,Î9:j,*r,#"r,*-|OE*-}OE?E:-=2- E^Eq!q,6!t,6:i,m,;ͮ!,6#6!"-}2-,!,6!-6:9:,$¬!-6:-<2-O!, ~2- ʬ:-A2-O>ک*-M! ^#V!k,6é!l,6é!o,6é!n,6é!m,6é!p,6ému}7!,6!,6!|,6#6:,"!,!|,62!,6":, SUl͏ :,9:," ͏ Ë HҜ!|,61:,062,%7 F 7 :,E€ :,+:,-Ho /}FIl7 :,•!,60!,6#60E Ë  k % Ұ ã:,$!},62 !},61p / :,F:,NH:,H!|,66 !|,64E h :|,' :, $ 2,U h :|,cd 3V *,MV  P U*,MV ; ,V V *u,+"u,h E Ë :,\y UË p /Ҋ CIlí:,/ :,<2,O!, :,w:,!,?w:, !,6͏ 9͏ 2,:,0O> /:,a/>z!,/H:,. !n, :,_2, :,AO>/ H  H H D 7 :, P 9!,6!-q*u,#"u,:j,o *-M> !,| >*,&O n&"-!-6*,&Y ~!-  *,&c :-O! ~2|,O>@:|,cH :|,AO!m ~2},:|,2~,!|,65>:,-N +s#r#4” >!-6*-&*-:-<2-O!, :,!-/HE  :,!-_ogN#Fog01PROD $ ERRORS DETECTED$:i,қ ->@_!l0"X.*++"V."-*-#6!_.q*-^*-*_.& "Z.!`.6*-##"Z.!a.6*-~!a. *a.&*Z.:`.?2`.!a.4 :`.*-^*-"-*-#"Z.*^.&-) ^#V!b.q:b.X.0!V.cP !j,6OTlͯ!d.p+qͭ *Z.*c.s#r*Z.+"Z.*Z.>w "->-X *-~2e.*\. *e.& *-*e.&*\. :e.=2e. >Ù  *Z.^#V"-} >*\.>2f.O+ *X."-*\.#*X.###*\.*- w_;ͭ *Z.6  *Z.q#p*^.&-) *-s#r:f.X.0+s#r*-~ͭ *Z.>!g.qͭ *Z.:g.wͭ *Z.~ͭ *Z.^#V!h.qͭ *Z.:h.wͭ *Z.~J 2k.!l.6:k.!l.  o&-"i.*i.-M *i.N#F`i"i.  *Z.*i.N#Fq#p!l.4¦ J 2p.!o.6:p.!o.H *-#"m. O!- *m.N#Fq#p O!- *-s#r!o.4!.0q:i,[*.0M!"-"u,}202-0!"-!"-:i,!h "\.!^.61 1I$IQ V !f "\.!^.60 0I$IQ V !/0q:j,!k,j ̓*/0M|q:*/0M! ^#V99*'0M>h .s -[+LDl;*-DMQ V C!-6*i9i9͗99999999999999999999999999ҪY9:10½*;0DM?99*20Mͤ9 9]99 ͤ99 ͤ992:301$*20Mͤ2:20Oͤ1B99T:301OͤTͤ9cͤ9m9|0ͤ99Ҏͤ9ҝͤ99үͤ9:00*90DMTͤ999*50MB9*'0M9:w,IFl1*;0"-͑ !10 NSls DMT!ͤT9*(0M/J H@SIlT*-DM919]*A0"?0ͪ9ͪ909]09*'0MҤ*-DM͊*-DM J OxêUFl9*~,M:30Ox9͍9,A99 T9 T9 T9 T999T9T9*V. ^#V"-:005ͤs DMTͤ:00Vs DM?ͤͤ:00ҍͤ?ͤ?8ͤ ͤ?9ͤ ͤ7ͤ*V.N#F(*V.##*-s#r96ͤ*V.##N#F(*V. *-s#r9!w,6>V.X+s#r"-*-#>w+ !-49T9*V. ^#V"-s DM?.ͤ(9͎9͎9[ͤ^ͤͪs DM(999͎6ͤͼ9:502~EIl7ͤͼ9ү*;0"-*20MV ͛ ͎ͤͤ96ͤͼ*'0M2c0*30MB*-DM:i,:c0DFl*-DMQ  99T9T99999*(0M:4012FIl*90DMT-ͤ99?99@9@91*;0"-9*(0M!i,ҁPDlV :i,ҕ DMQ s DM?T*-DM9199:302FMl[ͤ@ͤ9:302FMl[ͤ@ͤ9:y,>ͤ!y,699'ͤ!z,69o9o999!y,699?ͤ!y,699999994ͤ9!y,6[ͤ&ͤ9!y,6[ͤͤ[ͤ%ͤ99:y,/ҧ5ͤ999͎99ͮs DM?`ͤͤ99:10>!S0q*S0M> >*-#"-!U0p+q*T0|Oͤ*T0}Oͤ!W0p+q!V0DDM(!Y0p+q!X0DDM(:m,~*-M?_ͤ!+0"\.:-0?2^.!Z0q:i,ҭ :Z0-0DMQ !-04w 2[0ͮs DM(:401:301HFMl>>!40:30MMl>>*30MB:301>FMl>:502+FMl[ͤ:10<210OT*00M̀  ͤ*00Mͤͤ:501iͤnͤ4ͤ!z,6;ͤ:00*90DM?:z,Ҡ"1͹ø:y,ұ)*͹ø=<͹!]0s+q:302*\0Mͤͤ*]0Mͤͤ[ͤ:0<20O!0 N?\ͤ9ͤ*0&0 :00w:-=2-/!-6UNli6ͤ*- N#F(!-D*-q#p*-#>i*-"-R*)0M*- -MHҐÖINl:-ҤLUl!-6*'0Mh /!j,!-6ͪ:{,ͤ6ͤs DM(!^0q*^0MJ UIl DMQ V s "90DM:w,@!w,6*V. *-s#r!`0p+q20ͤ!a06*_0~!a0v*a0&*_0Nͤ!a04V:,҃ͭÉͤQ.ͤ10*'0MJ HҾs DM(!b06:,!b0*b0&, NI!b04$I*-#"-DM(:y,:301 +ͤ,ͤ/:301*:00J'#ͤ/$ͤ:10 \*;0"- *-DM:70=270Ofs DM?:10 *;0"-͑ !50{PFlY:501!70ҕPFl:70Of:40=240OB:10 :70NFlͤ*?0"-s DM(:40NFl*10Mͤ:402B1B:i,/*)0M DMQ *50M̀ V :10JJFIK!!*!&O@ G  "H}~R&JQTUE. HJ %'<$% =>?S  "H}~R&JQTU  "H}~R&JQTU-|z {  NM##''()+,L112233445579:;B4D,E+F-H(LL)MM5NNTT8UUUWWPXX*YY6[]]9^^ _A`Baace:::fhijmnopqsuvvvvvvvvwwx"G bPZ\SVJKROQI.1@@0@@0@@0rt<?=/ lkA$#g3d8>C0D6C"$   !"#$%-/02<=>?@$BCCCCCEFYZZZ[\Y%]^_`aaabcdgldddosvz~ddddddd$$  #&),/3579;=?ACFILOSVY\^adfhkmptvy{}2/7!;22 $$%%''))+++++---22555577BBCCDDEEFFHHHHHHHHHIJKLLMMMNNOPQRSSTTUVVWXXYZZ[]]^__``abbcccffggghhiijjllmnnopqqsttvvxxyyz{|}~                 #'(+7UaceijuBASIC-E COMPILER VER 2.1$1a,)̓q͒+:j,!i,Ҁ+!t,6!*06!y"q.!'06!&06!S/6:t,}+>x!q.,T*ʹ+*'0&s.) *q.s#r͜+"d0+ͩ+*d0+"f0*d0"d0f0d0,Q**d0l :|,1**'0&S/ :&0w!j06:,!j0)*j0&, N+!j04)*'0&. :,w*'0&/ :},w*d0P!) ^#V"q.!*06*f0"d0D*f0d0,D*PNl*d0"d0Ұ)z+>!q.,+ͩ+:'0+!(0s:(0<2)0>q.,M:t,+:(02'0͜+"d0*'0&S/ ~2&0*'0&s.) ^#V"f0*d0 n&"h0}h0f0,H**d0#"d0ñ**d0$) ^#V"q.>++!t,6z+>!q.,_+͜+"d0+*d09 n&"h0}!h0:|,,HM+*d0#"d0+*d0") ^#V"q.z+ʹ+ͩ+*'0&s.) q#p͜+"q.m)C)!l,6͒+!j,6C)v́ \*q.%) ^#V*q.' n&:'0<2'0 +OSl:*0+ͭ!*06!k0q*&0&/ :k0w:&0<2&0O>d+OVl_{ozgi`N#Fogo&og_{_z#W92E4E234603606922692EC3C10D7B :100DDD00CD140CDu=)B92EE35 :100DED002370216C2E34C2A60DC9CD4A0D32702E42 \ INT16F2EBEDA480ECDA000E0D00020C2AD42D23226D2ECDC70B4F060021A7 :100E1D00D62D0909E52A6D2EE34E2346E171237087 :100E2D00CDC70B4F060021D62D0909E52AD42DE90 :100E3D00E1732372216F2E34C2020EC9212E30713F :100E4D003A692C1FD25B0E2A2E304DCD60:C921D5 :BB)5D00000022CB2D227527D32173022D302102 :100E6D00010022CF2D21FFFF22CD2DCDF0043A69B7 :100E7D002C1FD2CB0ECDFC0321680B225C2E215EE4 :100E8D002E3631CDDD0C0E31CD490E0E24CD490E51 :100E9D00010000CD510C0E04CD560D21660B225CC8 :100EAD002E215E2E3630CDDD0C0E30CD490E0E24AA :100EBD00CD490E010100CD510C0E04CD560DC921A9 :100ECD002F30713A6A2C216B2CA61FD2ED0E016AC0 :100EDD000BCD83032A2F304D0600CD7C04CD71043C :100EED00CD3A182A2F304D060021071709095E2328 :100EFD0056EBE9C33918C339182A27304DCDF019EF :100F0D001FD23E0FCD680D1FD22E0FCD730D11CBFD :100F1D002DCD5B1FB5CA2B0F014C44CD6C06C33BC9 :100F2D000F2ACB2D444DCD510C0E08CD560DC3437C :103D000F21A92D362ACD691AC33918CD691AC3C7 :100F4D003918CD971CC33918C33918C33918C3398B :100F5D0018C33918C33918C33918C33918C3391808 :100F6D00C33918C33918C33918C33918C33918C34D :100F7D003918C33918C33918C33918C3391VOLUME 5 BASIC-E COMPILERS AND INTERPRETERS BASIC-E PROGRAMS, CONTINUED FROM VOLUME 3 MICROSOFT BASIC PROGRAMS NUMBER SIZE NAME COMMENTS CATALOG.5 CONTENTS OF CP/M GROUP VOL 5 VOLUME5.DOC COMMENTS 5.1 8K 21.ASC MICROSOFT BASIC PROGRAM 5.2 12K BAS2-0.COM BASIC-E COMPILER 5.3 12K BAS2-1.COM CASIC-E COMPILER 5.4 DELETED 5.5 5K BIO-FF.ASC MICROSOFT BASIC PROGRAM 5.6 4K BIORYTH.ASC MICROSOFT BASIC PROGRAM 5.7 10K BLKFRI2.ASC MICROSOFT BASIC PROGRAM 5.8 DELETED 5.9 2K DECISION.ASC MICROSOFT BASIC PROGRAM 5.10 DELETED 5.11 6K EDTEXT.ASC MICROSOFT BASIC PROGRAM 5.12 2K FORMAT.ASC MICROSOFT BASIC PROGRAM 5.13 DELETED 5.14 16K OTHELLO.BAS BASIC-E PROGRAM 5.15 5K OTHELLO.DOC INSTRUCTIONS FOR OTHELLO.BAS 5.16 2K RADIX.ASC MICROSOFT BASIC PROGRAM 5.17 1K RECOVERY.ASC MICROSOFT BASIC PROGRAM 5.18 12K RUN2-2.COM BASIC-E INTERPRETER 5.19 12K RUN2-3.COM BASIC-E INTERPRETER 5.20 12K RUNK2-0.COM BASIC-E INTERPRETER 5.21 4K SLOT.ASC MICROSOFT BASIC PROGRAM 5.22 2K SORT.ASC MICROSOFT BASIC PROGRAM 5.23 7K STARTREK.ASC MICROSOFT BASIC PROGRAM 5.24 14K SUPTRK3.ASC MICROSOFT BASIC PROGRAM 5.25 DELETED  *** BOSTON KAYPRO USERS GROUP (BOSKUG) *** LANGUAGE DISK NO. 4 This disk contains various versions of EBASIC compilers and interpreters. They come from the library of the CP/M Users Group (CP/MUG) as distributed by the Sheepshead Software Co. (All of these programs are in the public domain; Sheepshead charges for the disk and the copying. So we aren't violating anybody's rights by distributing it.) These programs are from Sheepshead's Disk 5, sides 1 and 2, which was contributed to the library. EBASIC is a compiled (or semi-compiled) version of BASIC. It is closely related to the well-known proprietary program CBASIC, although, as the document EBASIC.HLP makes clear, it lacks a few of the latter's functions. EBASIC.HLP gives a brief account of the language and the compiler, but some experience with CBASIC or a similar dialect is probably desirable: what we have here is no primer. A book on CBASIC would probably be quite helpful to the beginner. EBASIC and CBASIC take a program which has been written in the relevant BASIC dialect and compile it into a more efficient code. They do not turn it into machine language, as other compiled BASICS such as SBASIC do. Instead of producing a machine-language file with the extension ".COM" which is ready to run on CP/M, they produce an intermediate file (given the extension ".INT") which still needs an interpreter to run, like a program in (e.g.) Microsoft BASIC. The interpreter (generally having a name with "RUN" in it) is smaller than a full BASIC interpreter, and since the file it works on, besides being shorter than the original BASIC file, is much closer to machine language, it works considerably faster. The advantage to this type of BASIC, therefore, is a saving of both time and disk space. Several versions of both the compiler and the interpreter are included. The brief note in VOLUME5.DOC doesn't offer any information about them, and only EBASIC.COM and ERUN.COM have been tested. COMPILERS INTERPRETERS EBASIC.COM ERUN.COM BAS2-0.COM RUNK2-0.COM BAS2-1.COM RUN2-2 RUN2-3 Two source programs, OTHELLO.BAS and STARTRK.BAS, are included for your compiling pleasure. (Compiled versions, OTHELLO.INT and STARTRK.INT, are available on the games disk BOSKUG.305. It also contains all the Microsoft BASIC game programs from this disk, which you will find listed in CATALOG.5.) , like a program in (e.g.) Microsoft BASIC. The interpreter (generally having a name with "RUN" in it)4)d END <(+*)-,=/;>:#^IFTOGOONOREQLTGTLEGENEFORLETREMDIMDEFNOTANDTANSINCOSSQRTABLOGLENFREATNABSEXPINTENDPOSRNDSGNINPASCVALXORSUBOUTTHENREADGOTOELSENEXTSTOPDATAFILECHR$MID$STEPSTR$COSHSINHPRINTINPUTGOSUBCLOSELEFT$RETURNRIGHT$REMARKRESTORERANDOMIZE    HEFIJNTLGAKBOCDPQX! )&$"%(c#RU'WYZ-,+*S.V03%| 7EJMNNAFGFADE $BASNS $!c,r+s+q!f,r+s+q>!"g,!*g,!-s+p+q+p+q:-=2-*-*- w*-#"-*-#"-!-s+q+p+q:-=2-*-:-w*-#"-!-q:p,9*-&͕D*-&͕!-q:- j:,<2,g QÂ!,4*-M :- ‚!,6!-p+q*-~$ʣ*-NE*-#"-É̓ͯ *,DM; *, 6 *, 6*,̓ͯ͡,ͤ͡:o,*, ,;,͕,͡(ͤ!,6*,͡2-O>Dͤ:-:o,P,͕,͡h͕ͤ E E!-p+q!-6+6>!-!-60*-&) -[ *-&) -[ +s#r!-6#4Ø:-/!-*-ME E!-4Š!x,6#6#6!w,6!{,6!-q:S-<2S-H!S-6*S-&, :-wT-R !-q*-DM|*-ME E!-6:-!-s*-&T- NE!-4Uq,!-6: :,Hҫ *,DM;!,62,:-R:-<2-O!T- :,w:, *-#"-:q,!l,:-=O8!-6:, !,6 :,*,&*,~:,<2,!,'!,6.'>2, 5>  :,HT9:,\k h]9!-p+q:-<<2-:j,҆!q,6:|,ʥ:, ʢU2,Î9:j,*r,#"r,*-|OE*-}OE?E:-=2- E^Eq!q,6!t,6:i,m,;ͮ!,6#6!"-}2-,!,6!-6:9:,$¬!-6:-<2-O!, ~2- ʬ:-A2-O>ک*-M! ^#V!k,6é!l,6é!o,6é!n,6é!m,6é!p,6ému}7!,6!,6!|,6#6:,"!,!|,62!,6":, SUl͏ :,9:," ͏ Ë HҜ!|,61:,062,%7 F 7 :,E€ :,+:,-Ho /}FIl7 :,•!,60!,6#60E Ë  k % Ұ ã:,$!},62 !},61p / :,F:,NH:,H!|,66 !|,64E h :|,' :, $ 2,U h :|,cd 3V *,MV  P U*,MV ; ,V V *u,+"u,h E Ë :,\y UË p /Ҋ CIlí:,/ :,<2,O!, :,w:,!,?w:, !,6͏ 9͏ 2,:,0O> /:,a/>z!,/H:,. !n, :,_2, :,AO>/ H  H H D 7 :, P 9!,6!-q*u,#"u,:j,o *-M> !,| >*,&O n&"-!-6*,&Y ~!-  *,&c :-O! ~2|,O>@:|,cH :|,AO!m ~2},:|,2~,!|,65>:,-N +s#r#4” >!-6*-&*-:-<2-O!, :,!-/HE  :,!-_ogN#Fog01PROD $ ERRORS DETECTED$:i,қ ->@_!l0"X.*++"V."-*-#6!_.q*-^*-*_.& "Z.!`.6*-##"Z.!a.6*-~!a. *a.&*Z.:`.?2`.!a.4 :`.*-^*-"-*-#"Z.*^.&-) ^#V!b.q:b.X.0!V.cP !j,6OTlͯ!d.p+qͭ *Z.*c.s#r*Z.+"Z.*Z.>w "->-X *-~2e.*\. *e.& *-*e.&*\. :e.=2e. >Ù  *Z.^#V"-} >*\.>2f.O+ *X."-*\.#*X.###*\.*- w_;ͭ *Z.6  *Z.q#p*^.&-) *-s#r:f.X.0+s#r*-~ͭ *Z.>!g.qͭ *Z.:g.wͭ *Z.~ͭ *Z.^#V!h.qͭ *Z.:h.wͭ *Z.~J 2k.!l.6:k.!l.  o&-"i.*i.-M *i.N#F`i"i.  *Z.*i.N#Fq#p!l.4¦ J 2p.!o.6:p.!o.H *-#"m. O!- *m.N#Fq#p O!- *-s#r!o.4!.0q:i,[*.0M!"-"u,}202-0!"-!"-:i,!h "\.!^.61 1I$IQ V !f "\.!^.60 0I$IQ V !/0q:j,!k,j ̓*/0M|q:*/0M! ^#V99*'0M>h .s -[+LDl;*-DMQ V C!-6*i9i9͗99999999999999999999999999ҪY9:10½*;0DM?99*20Mͤ9 9]99 ͤ99 ͤ992:301$*20Mͤ2:20Oͤ1B99T:301OͤTͤ9cͤ9m9|0ͤ99Ҏͤ9ҝͤ99үͤ9:00*90DMTͤ999*50MB9*'0M9:w,IFl1*;0"-͑ !10 NSls DMT!ͤT9*(0M/J H@SIlT*-DM919]*A0"?0ͪ9ͪ909]09*'0MҤ*-DM͊*-DM J OxêUFl9*~,M:30Ox9͍9,A99 T9 T9 T9 T999T9T9*V. ^#V"-:005ͤs DMTͤ:00Vs DM?ͤͤ:00ҍͤ?ͤ?8ͤ ͤ?9ͤ ͤ7ͤ*V.N#F(*V.##*-s#r96ͤ*V.##N#F(*V. *-s#r9!w,6>V.X+s#r"-*-#>w+ !-49T9*V. ^#V"-s DM?.ͤ(9͎9͎9[ͤ^ͤͪs DM(999͎6ͤͼ9:502~EIl7ͤͼ9ү*;0"-*20MV ͛ ͎ͤͤ96ͤͼ*'0M2c0*30MB*-DM:i,:c0DFl*-DMQ  99T9T99999*(0M:4012FIl*90DMT-ͤ99?99@9@91*;0"-9*(0M!i,ҁPDlV :i,ҕ DMQ s DM?T*-DM9199:302FMl[ͤ@ͤ9:302FMl[ͤ@ͤ9:y,>ͤ!y,699'ͤ!z,69o9o999!y,699?ͤ!y,699999994ͤ9!y,6[ͤ&ͤ9!y,6[ͤͤ[ͤ%ͤ99:y,/ҧ5ͤ999͎99ͮs DM?`ͤͤ99:10>!S0q*S0M> >*-#"-!U0p+q*T0|Oͤ*T0}Oͤ!W0p+q!V0DDM(!Y0p+q!X0DDM(:m,~*-M?_ͤ!+0"\.:-0?2^.!Z0q:i,ҭ :Z0-0DMQ !-04w 2[0ͮs DM(:401:301HFMl>>!40:30MMl>>*30MB:301>FMl>:502+FMl[ͤ:10<210OT*00M̀  ͤ*00Mͤͤ:501iͤnͤ4ͤ!z,6;ͤ:00*90DM?:z,Ҡ"1͹ø:y,ұ)*͹ø=<͹!]0s+q:302*\0Mͤͤ*]0Mͤͤ[ͤ:0<20O!0 N?\ͤ9ͤ*0&0 :00w:-=2-/!-6UNli6ͤ*- N#F(!-D*-q#p*-#>i*-"-R*)0M*- -MHҐÖINl:-ҤLUl!-6*'0Mh /!j,!-6ͪ:{,ͤ6ͤs DM(!^0q*^0MJ UIl DMQ V s "90DM:w,@!w,6*V. *-s#r!`0p+q20ͤ!a06*_0~!a0v*a0&*_0Nͤ!a04V:,҃ͭÉͤQ.ͤ10*'0MJ HҾs DM(!b06:,!b0*b0&, NI!b04$I*-#"-DM(:y,:301 +ͤ,ͤ/:301*:00J'#ͤ/$ͤ:10 \*;0"- *-DM:70=270Ofs DM?:10 *;0"-͑ !50{PFlY:501!70ҕPFl:70Of:40=240OB:10 :70NFlͤ*?0"-s DM(:40NFl*10Mͤ:402B1B:i,/*)0M DMQ *50M̀ V :10JJFIK!!*!&O@ G  "H}~R&JQTUE. HJ %'<$% =>?S  "H}~R&JQTU  "H}~R&JQTU-|z {  NM##''()+,L112233445579:;B4D,E+F-H(LL)MM5NNTT8UUUWWPXX*YY6[]]9^^ _A`Baace:::fhijmnopqsuvvvvvvvvwwx"G bPZ\SVJKROQI.1@@0@@0@@0rt<?=/ lkA$#g3d8>C0D6C"$   !"#$%-/02<=>?@$BCCCCCEFYZZZ[\Y%]^_`aaabcdgldddosvz~ddddddd$$  #&),/3579;=?ACFILOSVY\^adfhkmptvy{}2/7!;22 $$%%''))+++++---22555577BBCCDDEEFFHHHHHHHHHIJKLLMMMNNOPQRSSTTUVVWXXYZZ[]]^__``abbcccffggghhiijjllmnnopqqsttvvxxyyz{|}~                 #'(+7UaceijuBASIC-E COMPILER VER 2.1$1a,)̓q͒+:j,!i,Ҁ+!t,6!*06!y"q.!'06!&06!S/6:t,}+>x!q.,T*ʹ+*'0&s.) *q.s#r͜+"d0+ͩ+*d0+"f0*d0"d0f0d0,Q**d0l :|,1**'0&S/ :&0w!j06:,!j0)*j0&, N+!j04)*'0&. :,w*'0&/ :},w*d0P!) ^#V"q.!*06*f0"d0D*f0d0,D*PNl*d0"d0Ұ)z+>!q.,+ͩ+:'0+!(0s:(0<2)0>q.,M:t,+:(02'0͜+"d0*'0&S/ ~2&0*'0&s.) ^#V"f0*d0 n&"h0}h0f0,H**d0#"d0ñ**d0$) ^#V"q.>++!t,6z+>!q.,_+͜+"d0+*d09 n&"h0}!h0:|,,HM+*d0#"d0+*d0") ^#V"q.z+ʹ+ͩ+*'0&s.) q#p͜+"q.m)C)!l,6͒+!j,6C)v́ \*q.%) ^#V*q.' n&:'0<2'0 +OSl:*0+ͭ!*06!k0q*&0&/ :k0w:&0<2&0O>d+OVl_{ozgi`N#Fogo&og_{_z#W92E4E234603606922692EC3C10D7B :100DDD00CD140CDu=)B92EE35 :100DED002370216C2E34C2A60DC9CD4A0D32702E42 \ INT16F2EBEDA480ECDA000E0D00020C2AD42D23226D2ECDC70B4F060021A7 :100E1D00D62D0909E52A6D2EE34E2346E171237087 :100E2D00CDC70B4F060021D62D0909E52AD42DE90 :100E3D00E1732372216F2E34C2020EC9212E30713F :100E4D003A692C1FD25B0E2A2E304DCD60:C921D5 :BB)5D00000022CB2D227527D32173022D302102 :100E6D00010022CF2D21FFFF22CD2DCDF0043A69B7 :100E7D002C1FD2CB0ECDFC0321680B225C2E215EE4 :100E8D002E3631CDDD0C0E31CD490E0E24CD490E51 :100E9D00010000CD510C0E04CD560D21660B225CC8 :100EAD002E215E2E3630CDDD0C0E30CD490E0E24AA :100EBD00CD490E010100CD510C0E04CD560DC921A9 :100ECD002F30713A6A2C216B2CA61FD2ED0E016AC0 :100EDD000BCD83032A2F304D0600CD7C04CD71043C :100EED00CD3A182A2F304D060021071709095E2328 :100EFD0056EBE9C33918C339182A27304DCDF019EF :100F0D001FD23E0FCD680D1FD22E0FCD730D11CBFD :100F1D002DCD5B1FB5CA2B0F014C44CD6C06C33BC9 :100F2D000F2ACB2D444DCD510C0E08CD560DC3437C :103D000F21A92D362ACD691AC33918CD691AC3C7 :100F4D003918CD971CC33918C33918C33918C3398B :100F5D0018C33918C33918C33918C33918C3391808 :100F6D00C33918C33918C33918C33918C33918C34D :100F7D003918C33918C33918C33918C3391Invoking BASIC-E BASIC-E Statements BASIC-E Functions Differences between BASIC-E and CBASIC BASIC-E Error Messages CBASIC: Compiler Error Messages CBASIC: Run-Time Error Messages -- Warnings CBASIC: Run-Time Error Messages -- Error Codes :Invoking BASIC-E BASIC-E is invoked by typing the following -- EBASIC filename $o where 'filename' is the name of the source file 'filename.BAS' to be compiled and 'o' is one or more of the following options -- A List Productions (for compiler debugging); normally OFF B List only source statements with errors; normally OFF C Check syntax only; don't create .INT file; normally OFF D Convert lowercase to uppercase; normally ON E Generate line number code; normally OFF After compilation, the program may then be executed by -- ERUN filename where 'filename' is the name of the intermediate code file 'filename.INT'. :BASIC-E Statements The following statements are valid in BASIC-E -- FOR NEXT FILE GOTO LET CLOSE GOSUB INPUT ON PRINT READ RESTORE RETURN OUT RANDOMIZE STOP DATA DEF DIM END IF REM ELSE THEN :BASIC-E Functions The following built-in functions are valid in BASIC-E -- ABS ASC ATN CHR$ COS COSH FRE INP INT LEFT$ LEN LOG MID$ POS RIGHT$ RND SGN SIN SINH STR$ SQR TAB TAN VAL EXP :Differences between BASIC-E and CBASIC The following features are not available in BASIC-E, but they are available in CBASIC -- 1. PEEK or POKE 2. PRINT USING 3. CALL to machine code programs 4. LPRINT :BASIC-E Error Messages Since BASIC-E is a "subset" of CBASIC, refer to the CBASIC help file for information on the BASIC-E error messages. Most, but not all, BASIC-E error messages are covered in this help file. :CBASIC: Compiler Error Messages Text Messages NO SOURCE FILE: .BAS The compiler could not locate a source file used in either a CBASIC command or an INCLUDE directive. PROGRAM CONTAINS n UNMATCHED FOR STATEMENT(S) There are n FOR statements for which a NEXT could not be found. PROGRAM CONTAINS n UNMATCHED WHILE STATEMENT(S) There are n WHILE statements for which a WEND could not be found. WARNING: INVALID CHARACTER IGNORED The previous line contains an invalid ASCII character; this character is ignored by the compiler, and a question mark is printed in its place. 2-Letter Error Codes CE -- Close Error The intermediate (.INT) file could not be closed. DE -- Disk Error A disk error occurred while trying to read the .BAS file. DF -- Disk Full There was no space on the disk or the disk directory was full. The .INT file was not created. DL -- Duplicate Line number The same line number was used on two different lines. Other compiler errors may cause a DL error message to be printed even if duplicate line numbers do not exist. DP -- Defined Previously A variable in a DIM statement was previously defined. EF -- Exponential Format A number in exponential format was input with no digits following the E. FD -- Function Definition A function name that has been previously defined is being redefined in a DEF statement. FI -- FOR Index An expression which is not an unsubscripted numeric variable is being used as a FOR loop index. FN -- Function parameter Number A function reference contains an incorrect number of parameters. FP -- Function Parameter type A function reference parameter type does not match the parameter type used in the function's DEF statement. FU -- Function Undefined A function has been referenced before it has been defined. IE -- IF Expression An expression used immediately following an IF evaluates to type string. Only type numeric is permitted. IF -- In File A variable used in a FILE statement is of type numeric where type string is required. IP -- Input Prompt An input prompt string is not surrounded by quotes. IS -- Invalid Subscript A subscripted variable was referenced before it was dimensioned. IU -- Invalid Use A variable defined as an array is used with no subscripts. MF -- Mixed Format An expression evaluates to type string when type numeric is required. MM -- Mixed Mode Variables of type string and type numeric are combined in the same expression. NI -- NEXT Index A variable referenced by a NEXT statement does not match the variable referenced by the associated FOR statement. NU -- NEXT Unexpected A NEXT statement occurs without an associated FOR statement. OO -- ON Overflow More than 25 ON statements were used in the program. SE -- Syntax Error The source line contains a syntax error. SN -- Subscript Number A subscripted variable contains an incorrect number of subscripts. SO -- Syntax Overflow The expression is too complex and should be simplified and placed on more than one line. TO -- Table Overflow The program is too large for the system. The program must be simplified or the system size increased. UL -- Undefined Line number A line number that does not exist has been referenced. US -- Undefined String A string has been terminated by a carriage return rather than quotes. VO -- Variable Overflow Variable names are too long for one statement. This should not occur. WE -- WHILE Error The expression immediately following a WHILE statement is not numeric. WU -- WHILE Undefined A WEND statement occurs without an associated WHILE statement. :CBASIC: Run-Time Error Messages -- Warnings Two textual run-time error messages are presented by CRUN: NO INTERMEDIATE FILE A file name was not specified with the CRUN command, or no file of type .INT and the specified file name was found on disk. IMPROPER INPUT - REENTER This message occurs when the fields entered from the console do not match the field specified in the INPUT statement. This can occur when field types do not match or the number of fields entered is different from the number of fields specified. All fields specified by the INPUT statement must be reentered. 2-Letter Warning Codes DZ -- Divide by Zero A number was divided by zero. The result is set to the largest valid CBASIC number. FL -- Field Length A field length greater than 255 bytes was encountered during a READ LINE. Only the first 255 characters of the record are retained. LN -- Logarithm error The argument given in the LOG function was zero or negative. The value of the argument is returned. NE -- NEgative number A negative number was specified following the raise to a power operator (^). The absolute value is used in the calculation. OF -- OverFlow A calculation produced a number too large. The result is set ot the largest valid CBASIC number. SQ -- SQuare root error A negative number was specified in the SQR function. The absolute value is used. :CBASIC: Run-Time Error Messages -- Error Codes AC -- AsCii error The string used as the argument in an ASC function evaluated to a null string. CE -- Close Error An error occurred upon closing a file. CU -- Close Undefined file A close statement specified a file number that was not active. DF -- Defined File An OPEN or CREATE was specified with a file number that was already active. DU -- Delete Undefined file A DELETE statement specified a file number that was not active. DW -- Disk Write error An error occurred while writing to a file. This occurs when either the directory or the disk is full. EF -- End of File A read past the end of file occurred on a file for which no IF END statement has been executed. ER -- Error in Record An attempt was made to write a record of length greater than the maximum record size specified in the associated OPEN, CREATE, or FILE statement. FR -- File Rename An attempt was made to rename a file to an existing file name. FU -- File Undefined An attempt was made to read or write to a file that was not active. IR -- Invalid Record number A record number less than one was specified. LW -- Line Width A line width less than 1 or greater than 133 was specified in an LPRINTER WIDTH statement. ME -- MAKE Error An error occurred while creating or extending a file because the disk directory was full. MP -- MATCH Parameter The third parameter in a MATCH function was zero or negative. NF -- Number of FILE The file number specified was less than 1 or greater than 20. NM -- No Memory There was insufficient memory to load the program. NN -- No Number field An attempt was made to print a number with a PRINT USING statement but there was not a numeric data field in the USING string. NS -- No String field An attempt was made to print a string with a PRINT USING statement but there was not a string field in the USING string. OD -- Overflow Data A READ statement was executed with no DATA available. OE -- OPEN Error An attempt was made to OPEN a file that didn't exist and for which no IF END statement had been previously executed. OI -- ON Index The expression specified in an ON ... GOSUB or an ON ... GOTO statement evaluated to a number less than 1 or greater than the number of line numbers contained in the statement. OM -- Overflow Memory The program ran out of memory during execution. QE -- Quote Error An attempt was made to PRINT to a file a string containing a quotation mark. RE -- READ Error An attempt was made to read past the end of a record in a fixed file. RG -- RETURN with no GOSUB A RETURN occurred for which there was no GOSUB. RU -- Random Undefined A random read or print was attempted to other than a fixed file. SB -- SuBscript An array subscript was used which exceeded the boundaries for which the array was defined. SL -- String Length A concatenation operation resulted in a string of more than 255 bytes. SS -- SubString error The second parameter of a MID$ function was zero or negative. TF -- Too many Files An attempt was made to have more than 20 active files simultaneously. TL -- TAB Length A TAB statement contained a parameter less than 1 or greater than the current line width. UN -- UNdefined edit string A PRINT USING statement was executed with a null edit string. WR -- WRite error An attempt was made to write to a file after it had been read, but before it had been read to the end of the file. )+ï +`iN#F#^#V#~#fo}+ !y:!$0w# =>w!$ !$͇ ,0uddvC$0 ʅw#{{6  ͏   y s{Ybw#p#q#r! N#F!q#p2!q!q{9 ~#F#N#V!Y , <    *$A!6 # TI܀1r l7s,w,p,q,r!w>!w!~{_,~,,N,Vê~{_,~,N,VoG!qG{~{̀x!~wbG{ɯ{O!>w>^,G,N,V!~-w{ʌhxG..w.~ʷ<\Ìڷs_!~.w,^pC,^qK,^rS!~.~W-~O-~GҤGyOzW_.~wä_~W-~O-~G 3{bG!{ox{]!~.-qêG,N,V,^!~ȀGxw,~wyد{_zWyOxG. ZQHoxGyOzW{_--~wo_}W}O}G. xSAJS_}o5-{_zWyOxGF} !w!{^rx,t {_w!w!r!s_W!͟.͜.zYPFoOڰJSOҰ}o{_zWyOxGҰ{_zWyê!~w-~w-~wyy!Vw!dwz!Rw!`w{!Nw!\wx!Kw!Yw!gw!~,V,^B.N qkb_HJx}o|gz'}[kb_PH>}o|g{_>o|g{_>+6* |} !͌!ks͠!k̈́!ks@!os!k͠!o!o!osï!o͠ɯ!ow!"*M"o*O"q!"w կGOy !ss!k͠!oͽ*w!s!M7!os!M͠!s!o!oszWyOI܀1ŕ!Q͌!{s!Q͏ y !Qͽ́!{!{s̈́!Q!Q_!|~G{+s{É!{͠!{ͽ́!ksH!o͠!{ͽ!w,w͌͌5!M̈́5!s!Q͠_!~怰G{!{s!{͠!!{s!{ͽ!M͘!M!{̈́!{s!!{s!{͠!M!os!{͠!M!o!{s!{ͽ!ks !o4͠!{ͽ!{s!y~HPy !Uͽ!{![N,F-R !P o ![q,p6 c o c o ɗyOxGc ~O,~G-kZQHG}!w,6,xÛ!~ʼ {Ҽ .F,N,V.~ >xAJSɯGOW^P ,6!r{ !r\ ~# . _ !#w!iͽ.s,~HPy ..~ -Fp !w _ \ ~G_? xA ,~ _ G,~ X OxG{_ G!N!qx!ʌw!i~ >h ͽ>h -P ͌!s\ 6ʶ _x{ 6~!iڿ !^sè ͽ!^sæ ̈́!mҨ !~_ w>,w{!w !iͽ͏ \ wy > !~6" \ 6 -H 1 OW 3 >\ s!à>GOW< }DQ!s!^s,fkd   !e( IN LINE $ERROR $WARNING $1)1) ͱ1) ͧv!)q*)&  !)p+q / *#)#"#) *) *) *) *) *) *) *)0 *)!)p+q*) !)p+q*)))!)p+q!*6>!* !*60**&f ) )(ڵ **&f ) )(+s#r!*4Æ **M !*4x !*r+s+p+q+p+q*! *r+s+q+p+q* *+" *ͮ( **: *w**#"* !*p+q* *|O * *}O >!%)(=  Q *%)DMm !*p+q  Q **DM !*p+q  Q **DM *)#")*)")>͵(")!)(Ҡ >)(")*)")")!)(ھ *)")!*p+q)*Ϳ(!*p+q**N#FͿ / **N#Fa *)**q#p*)DM*)**)DM*)**)DM***)***)DM *)N#F*)**)~*)~*)>(*)>(*)#~*)#~!*q*)##:*w:ҫFO\ *)z *!"*)DM͎*) *)w*)##*)#w!*q*)**M*)͎!*q*)**M*)| ͎͡ *)n *ͬ!*p+q*)>w#6**|*)##w**}*) w*)DM͞*)*)Dn| >r{| >| >!!*p+q*))""*!"&*>"*(*"* ~*"*"*Ϳ(>͵("$**&*"&*> *(* *$*(*"**"*^#V""*Ó> *(MNA *&*!)*p+q>(*( !*(*DḾ",**,* 6*(**,*"0**,**0*N#Fq#p*,*N#F`i"2**,**0*s#r*2*s#r*0* 6*0*##"0**0**,*s#r*,*",**(* *,*!5*p+q>4*(#s#r"4**4* 6*4*##"4**4*^#V"4*>ͫ(*4* ~*4*"6**4*^#V"8**8*>(A*8* ~A*8**4*N#Fq#p`i"8**8**4*s#r!":*t *)"=**)"?*!<*6*)~!<*ڊ*)N#F*:*(+s#r":*| !<*4\*=*")*?*")*:*DMa *)~<_DM "=*"A**)*A* w#6!<*6*)~!<**A*##"A**)*A*N#Fq#p| !<*4͡ *)*=*s#r*)^#V"C*| *)^#V"G**C*N#F!F*q+6:F*!E*X| ͆*)*C*^#VN#F(*G* "G*!E*4'͆*C*G*(mBSA *C*##*G*DMa *)q#p*C*##"C*!I*q*)DM :I*3̀*)^#V"J**J*N#FͿ *J*N#F `i"L**L*~=w*J*N#Fͦ*)N#F `i"L*Ϳ 3*L*~/*L*#"L**L**L*~N*(¤>*N*~!P*q:P**)v **)6X| e | *)N#F͏<2Q*f*)N#F͏2R*:R*!Q*2S*f*)N#F*S*M "T*DM*Q*& *)N#F:Q*T*c(DM*R*& ~| ~*)*T*s#r:S*=*T*ẁɟqLSA X҂*)"X*Ì*)^#V"X*eҜ*)"V*æ*)^#V"V**V*~2[*!Z*6:[*!Z**V**X* >*V**X*~>*V*#"V**X*#"X*!Z*4²>~| ~!\*q!a*6:\*<rDH/SSA ͬ*)~2a*| r*)N#F͏!a*HDHl| ~*)>w#6ͬ*)*)N#F͏!a*#wҡ:\*š:b*<*)wá*):b*w:\*¶*)^#V"_*:\**):b*d(*)~͵("_**):a*d(+"_**_* O "]* _ *)*]* w| ~*)*]*s#r̀*)~!c*C*)DM͎!d*6>!d**c*M! ^#V*d*&*)~/w*d*&*)*d*&*)~`iw*d*&*)*d*&*)~`iw*d*&*)*d*&*)~`iwaq!d*4H>!c*| *)DM͞*))Q!e*6:e*<2e*O!) ~  *))q#p`i:e*w!") !"f**f*~ Y*f*+"f*F !")f*)Ϳ(ڂ*)N *)")b0*)^#V"h*>ͫ(!j*6*h*~!j**j*&*h**) w*)#")ͮ(@!j*4ž*) !*) ~!k*q!*) :k*wOOOOO$*) *)s#r>)(_FEA *)#")*)")*)")))Ϳ(ʈO*)+")<û  ¢#7/ҮM# *) 4 *) > *) 5O& WDA 7 *)")*)#")!)(/>)(!l*q&*)#"))(HVREA `ͽ/7Hz͖ *) 5*):l*w*)>ҔFMA *)~ͅO!) ^#V")>ͫ(ºUFA *)N!) ^#V")&*)")")$*) ^#V")"*) ^#V")G  0 EMA !o*6:o*<2o*O!) >(5 ")*o*&)) q#p&*)")G *)#"m*  *)^#V"p**p*##~:ž*p*#>*)w*p*~==2r**p*##"p*å*p*~2r*> !r*ҳ!r*6 *p*#"p*!s*6RO*p* ~.!r*:s*Hÿ*p**m*DM*s*& R!r**s*&*p**m*!s*:r*_ *)$*) q#p| *)"*) N#Fq#p| :s*<2s**)")*)")͙!")!)6| &/ҊURA XrHҞRIA *)N#F +q#p-ͽ*)}*)#~H_(*)|l_&}(!9g("v**)^}("t*!v*͑(*t* "z**)#^l&}("x**x*}*t*|v*c(͟(H !~*s>z*p(*) +")<!z*͛(#s#r *) :~*ʄ vECA  *) :~*w*|*} *) w| ңͽ͖/Ү͖*)~ºM*)~!*q:*:)/,3!)6*)^#V"***~2*:*!*5"3N!*6:*!*:**~")EQA **N3N!*4:*J"3~| **#"*ͽ jECA *)DMͦ!*6:*<2*O>ڦ**&)) ^#V")>ͫ(ʣVxs@ ?  +) :-)ͧ!,)"})*,)& 6 *,)&,) })(| *)")II\ û *')#"')!)(DOA *')~*})#"})*})~:)n>P!|)DBDA ͖*|)&,) w f&cERA k*)~5:)z!:)†!|)6-2* šÌ:)¨!,)"):)¶*})"):)*')"):*"!*6,!*6":)*)#")-2*!*:*+~ H!|)4-2*:*":-2*,:* H:͡ ͇*):|)!|)ҝ*|)M*)0*) ͎ð:)«ð*)6 )a  0* )"!)")* )")+"')* )")*)")`"))")*)")")*)*)Ϳ(*DM *))))Ϳ( *)"**)>(**q#p**##>w#6** w#6**^#V"***>w#6**##*)s#r*)~Ҵ ͡ *)#*) w*)>?*)#w*)~Ү .t Q(*)N!' ^#VQ(Q(Q(D ZD\ Q(N!D!*)r *E!y"!ENA E!*)*)*)| ͎Q(OOͩQ(OOͩQ(OOͩQ(O/OͩQ(O/OͩQ(O/OͩQ(&Q(&Q(&Q(.Q(͏ | Q(| Q(͡ Q(Q(͏| | Q(rOͩQ(rOͩQ(rOͩQ(r/OͩQ(r/OͩQ(r/OͩQ(͏| | Q(͡ t *)*)s#r*)n&")̀Q(Q(t ͡ *)##*)q#p*)^#V")Q(*)N#F `i")| Q(BQ(Q(/"wQ(͆| Q(͆~| Q(g|ZQ(gZQ(#͡ Q(*)*)^N| | Q(!)6wQ(!)6>Q(ͿQ(ͿQ(Q(͡ t *)N#F*)*t Q(*)+"')Q( Q(/Ҕ#>Q(Q(Q(@Q(!*6**& ) )Ϳ(#!*4ë#!~ :*#@#**& ) ^#V")Q(iQ(D#i$*)##")| Q(UQ(BQ(*)DM͎Q(!)6*)")ʹQ(!)6>Q(!)6wQ(&[$͖ [$P$<Q(&~$*)++)(~$ 3h$ 3 3<Q(͙V*)N!) >w#6*)N!) w#6| Q(*)#>wQ(*)DM͎*)DM͞Q(͡ *) *͡ *[DM!Q(r/2*D/Oͩ:*% Q( Q( Q(Q(͡  |  ͡ NT%ZTA Q( Q( *)>(҃%*)>(+s#rg%*)N#F ! +s#r)(/>(Hҳ%@*)^#V")| Q(Q(͡ ́DM!Q(*#)"[Q(Q(͡ >)(DM!Q( *)NO!Q(*)^#V"*>ͫ(**~H<&CAA **#~2*~**M!Q(ͬ "***6*)**# w*)**s#r̀Q(Q(*)N#F͏2*~**M!Q(Q(Q():)$I$a$$$$$$%!%)%1%\%d%%%%%%&&S&&&&&&&''''B'J'm'}'t  N#Fog_og_ogDM!>))Ҍ( =„(^#V) •(^#V|g}o Ÿ(_{ozgO{ozgi`N#Fogo&og_{_z#W712A0D47 :100D16002A7C4FCDC60B2A0D2D4FCDC60B3E0031 :100D26002129CDP728D23D0D01950BCD510C2A71 :100D36002529444DCD6D0CCDD60BC921102A702B1B :100D460071CD0B019F0BCD510C2A0F2A444DCDE8 :100D56000E0DCD0E01C921122A702B71CDD60B01B5 :100D6600A60BCD510C2A112A444DCD0E0DC92A17BA :100D76002923221729C92A1529221329EB3E04CD36 :100D8600B528221529EB211929CDDA28D2A00D3E46 :100D960004111B29CDCC28221529C92A132922156D :100DA6002911040019221329EB211B29CDDA28DA8F :100DB600BE0D2A1929221329C921142A702B711153 :100DC6001B2901132ACDBF289FC921162A7NI $BASIC-E INTERPRETER - VER 2.2$NM $1-1-+,,!/ͫ-"--Ϳ-")e-2-*ʦ+!-6e-:-<2-O!- Hqy$ʆ+h+*-M-0*- *-"-X+͉-*- "-)-Ϳ-" ))-Ϳ-" )͉-* ) " )*- )-+$+,͉-))* ) ")e-,:-3",e-*-w,*-#"- ,,:-6,S-.-S-,:-d,S-*-"-*-6S-e-a,S-*-4O,,S-:-6:-7H:-^H:-HҰ,p-*- )͠-+s#r̀-,:-.,p-*-^#V))* +s#r̀-+v!.p+q*.DMQ    *. 6I*. 6N*. 6T*. #-+,*. *-#"-!͸-R-!"-$-R-*-6*-*- w*-#"-.-*-~2-e-*-#we-*-w*-##"-e-O`iͲ-e-_N#Fog{ozg) ²-{ozgi`N#FogC2A712A134B :100ED600290E02CDDF012A1C2A4D2A1329\60 :100EE600D201CD8E0EC9211D2A712A1329EB0E02BD :100EF600CDDF012A1D2A4D2A1529EBCDD201CD7C45 :100F06000DCD8E0EC9CDA10D2A1329EB016E0BCD89 :100F16002A010E03CDEC0ECDAC0EC9211F2A702B73 :100F2600712A13293E00772336002A1E2A7C2A13AB :100F3600292323772A1E2A7D ;; The following is a tiny Prolog interpreter in MacLisp ;; written by Ken Kahn and modified for XLISP by David Betz. ;; It was inspired by other tiny Lisp-based Prologs of ;; Par Emanuelson and Martin Nilsson. ;; There are no side-effects anywhere in the implementation. ;; Though it is VERY slow of course. (defun prolog (database / goal) ;; a top-level loop for Prolog (while (setq goal (read)) (prove (list (rename-variables goal '(0))) '((bottom-of-environment)) database 1))) (defun prove (list-of-goals environment database level) ;; proves the conjunction of the list-of-goals ;; in the current environment (cond ((null list-of-goals) ;; succeeded since there are no goals (print-bindings environment environment) ;; the user answers "y" or "n" to "More?" (! (y-or-n-p "More?"))) (t (try-each database database (tail list-of-goals) (head list-of-goals) environment level)))) (defun try-each (database-left database goals-left goal environment level / assertion new-enviroment) (cond ((null database-left) ()) ;; fail since nothing left in database (t (setq assertion ;; level is used to uniquely rename variables (rename-variables (head database-left) (list level))) (setq new-environment (unify goal (head assertion) environment)) (cond ((null new-environment) ;; failed to unify (try-each (tail database-left) database goals-left goal environment level)) ((prove (append (tail assertion) goals-left) new-environment database (+ 1 level))) (t (try-each (tail database-left) database goals-left goal environment level)))))) (defun unify (x y environment / new-environment) (setq x (value x environment)) (setq y (value y environment)) (cond ((variable-p x) (cons (list x y) environment)) ((variable-p y) (cons (list y x) environment)) ((|| (atom x) (atom y)) (cond ((equal x y) environment) (t nil))) (t (setq new-environment (unify (head x) (head y) environment)) (cond (new-environment (unify (tail x) (tail y) new-environment)) (t nil))))) (defun value (x environment / binding) (cond ((variable-p x) (setq binding (assoc x environment)) (cond ((null binding) x) (t (value (nth 2 binding) environment)))) (t x))) (defun variable-p (x) ;; a variable is a list beginning with "?" (&& x (listp x) (eq (head x) '?))) (defun rename-variables (term list-of-level) (cond ((variable-p term) (append term list-of-level)) ((atom term) term) (t (cons (rename-variables (head term) list-of-level) (rename-variables (tail term) list-of-level))))) (defun print-bindings (environment-left environment) (cond ((tail environment-left) (cond ((== 0 (nth 3 (head (head environment-left)))) (print (nth 2 (head (head environment-left)))) (princ " = ") (print (value (head (head environment-left)) environment)) (princ "\n"))) (print-bindings (tail environment-left) environment)))) ;; a sample database: (setq db '(((father jack ken)) ((father jack karen)) ((grandparent (? grandparent) (? grandchild)) (parent (? grandparent) (? parent)) (parent (? parent) (? grandchild))) ((mother el ken)) ((mother cele jack)) ((parent (? parent) (? child)) (mother (? parent) (? child))) ((parent (? parent) (? child)) (father (? parent) (? child))))) ;; the following are utilities (defun assoc (key env) (cond ((null env) nil) ((equal (head (head env)) key) (head env)) (t (assoc key (tail env))))) (defun y-or-n-p (prompt) (princ prompt) (cond ((eq (read) 'y) t) (t nil)))  (t (assoc key (tail env))))) (defun y-or-n-p (prompt) (princ prompt) (cond ((eq (read) 'y) t) t%UOYnjMwo5Qm63t%]j_`)m;ltdvB Cl&Jř nTٰ&^-æwRqfje|+m{Պ^-RnޫV|kTnޫV|kw^_˰݆WT?̛_FZֻϋ'1ǦJ#Tke<gnޫ2XwؤR]*aUoۢ2 |-P2Z{~Rv}Rv}RJv o.FSR3۱b4uH(޵Fh:sfT(g6J-3͜(dh͛OqP|rCA.FӌFe'CPَMQ|rC Ch)l7Pgřf:ZřCqfԲOmY/ 2֎řR3/ 2/3> xw܎řfld(Z3͜x(P<g6J-l 2-řR3Fe'CQ*^g6J-;Z-S+$g=C C|r{CqfԲ0*3gdS+$g=C CBFe'CaTٿ[|ŞP(uxlisp pt ; This should cause the screen to be cleared and two turtles to appear. ; They should each execute their simple programs and then the prompt ; should return. Look at the code to see how all of this works. ; Clear the screen (defun clear () (princ "\e[H\e[J")) ; Move the cursor (defun setpos (x y) (princ "\e[" y ";" x "H")) ; Kill the remainder of the line (defun kill () (princ "\e[K")) ; Move the cursor to the currently set bottom position and clear the line ; under it (defun bottom () (setpos bx (+ by 1)) (kill) (setpos bx by) (kill)) ; Clear the screen and go to the bottom (defun cb () (clear) (bottom)) ; :::::::::::: ; :: Turtle :: ; :::::::::::: ; Define "Turtle" class (setq Turtle (Class 'new)) ; Define instance variables (Turtle 'ivars '(xpos ypos char)) ; Answer "isnew" by initing a position and char and displaying. (Turtle 'answer 'isnew '() '( (setq xpos (setq newx (+ newx 1))) (setq ypos 12) (setq char "*") (self 'display) self)) ; Message "display" prints its char at its current position (Turtle 'answer 'display '() '( (setpos xpos ypos) (princ char) (bottom) self)) ; Message "char" sets char to its arg and displays it (Turtle 'answer 'char '(c) '( (setq char c) (self 'display))) ; Message "goto" goes to a new place after clearing old one (Turtle 'answer 'goto '(x y) '( (setpos xpos ypos) (princ " ") (setq xpos x) (setq ypos y) (self 'display))) ; Message "up" moves up if not at top (Turtle 'answer 'up '() '( (if (> ypos 0) ( (self 'goto xpos (- ypos 1))) ( (bottom))))) ; Message "down" moves down if not at bottom (Turtle 'answer 'down '() '( (if (< ypos by) ( (self 'goto xpos (+ ypos 1))) ( (bottom))))) ; Message "right" moves right if not at right (Turtle 'answer 'right '() '( (if (< xpos 80) ( (self 'goto (+ xpos 1) ypos)) ( (bottom))))) ; Message "left" moves left if not at left (Turtle 'answer 'left '() '( (if (> xpos 0) ( (self 'goto (- xpos 1) ypos)) ( (bottom))))) ; ::::::::::::: ; :: PTurtle :: ; ::::::::::::: ; Define "DPurtle" programable turtle class (setq PTurtle (Class 'new Turtle)) ; Define instance variables (PTurtle 'ivars '(prog pc)) ; Message "program" stores a program (PTurtle 'answer 'program '(p) '( (setq prog p) (setq pc prog) self)) ; Message "step" executes a single program step (PTurtle 'answer 'step '() '( (if (null pc) ( (setq pc prog))) (if pc ( (self (head pc)) (setq pc (tail pc)))) self)) ; :::::::::::::: ; :: PTurtles :: ; :::::::::::::: ; Define "PTurtles" class (setq PTurtles (Class 'new)) ; Define instance variables (PTurtles 'ivars '(turtles)) ; Message "make" makes a programable turtle and adds it to the collection (PTurtles 'answer 'make '(x y / newturtle) '( (setq newturtle (PTurtle 'new)) (newturtle 'goto x y) (setq turtles (cons newturtle turtles)) newturtle)) ; Message "step" steps each turtle program once (PTurtles 'answer 'step '() '( (foreach turtle turtles (turtle 'step)) self)) ; Message "step:" steps each turtle program n times (PTurtles 'answer 'step: '(n) '( (while n (self 'step) (setq n (- n 1))) self)) ; Initialize things and start up (setq bx 0) (setq by 20) (setq newx 0) ; Create some programmable turtles (cb) (setq turtles (PTurtles 'new)) (setq t1 (turtles 'make 40 10)) (setq t2 (turtles 'make 41 10)) (t1 'program '(left right up down)) (t2 'program '(right left down up)) elf)) ; :::::::::::::: ; :: PTurtles :: ; :::::::::::::: ; Define "PTurtles" class (setq PTurtles (Cla C!9 2-ykȗ7Z-&֡Tյg3۱Ty|jC CPٿqQ*̓d]cT_qfC>?23w+ޟןJ+lH; A simple turtle graphics program for VT100 compatible terminals ; By David Betz with some stuff borrowed from a similar program ; by Mark Mallett ; ::::::::::::::::::::: ; :: Misc. Functions :: ; ::::::::::::::::::::: ; Note: The following functions assume that this program is running on ; a VT100 compatible terminal. ; Clear the screen (defun clear () (princ "\e[H\e[J")) ; Move the cursor (defun setpos (x y) (princ "\e[" y ";" x "H")) ; Kill the remainder of the screen (defun kill () (princ "\e[J")) ; Set the scrolling region (defun setscroll (t b) (princ "\e[" t ";" b "r")) ; Move the cursor to the currently set bottom position and clear the line ; under it (defun bottom () (setpos 0 by) (kill)) ; Clear the screen and go to the bottom (defun cb () (clear) (bottom)) ; :::::::::::: ; :: Turtle :: ; :::::::::::: ; Define "Turtle" class (setq Turtle (Class 'new)) ; Define instance variables (Turtle 'ivars '(xpos ypos xvel yvel heading trail char)) ; Answer "isnew" by initing a position and char and displaying. (Turtle 'answer 'isnew '(x y) '( (setq xpos x) ; set the turtle's x position (setq ypos y) ; set the turtle's y position (setq xvel 0) ; set the turtle's x velocity (setq yvel -1) ; set the turtle's y velocity (setq char "^") ; set the turtle's character representation (setq trail ".") ; set the turtle's trail character (setq heading 0) ; set the turtle's heading (self 'display))) ; display the new turtle ; Message "display" prints its char at its current position (Turtle 'answer 'display '() '( (setpos xpos ypos) (princ char) (bottom) self)) ; Message "trail" sets the turtle's trail character to its arg ; and redisplays the turtle (Turtle 'answer 'trail '(c) '( (setq trail c) (self 'display))) ; Message "goto" goes to a new place after clearing old one (Turtle 'answer 'goto '(x y) '( (setpos xpos ypos) (princ trail) (setq xpos (max 1 (min x 80))) (setq ypos (max 1 (min y by))) (self 'display))) ; Message "left" turns the turtle left (Turtle 'answer 'left '() '( (turn 3) (self 'display))) ; Message "right" turns the turtle right (Turtle 'answer 'right '() '( (turn 1) (self 'display))) ; Function "turn" turns a turtle (defun turn (inc) (setq heading (% (+ heading inc) 4)) (cond ((== heading 0) ; heading north (setq xvel 0) (setq yvel -1) (setq char "^")) ((== heading 1) ; heading east (setq xvel 1) (setq yvel 0) (setq char ">")) ((== heading 2) ; heading south (setq xvel 0) (setq yvel 1) (setq char "v")) ((== heading 3) ; heading west (setq xvel -1) (setq yvel 0) (setq char "<")))) ; Message "forward" moves the turtle forward (Turtle 'answer 'forward '() '( (self 'goto (+ xpos xvel) (+ ypos yvel)))) ; Message "backward" moves the turtle backward (Turtle 'answer 'backward '() '( (self 'goto (- xpos xvel) (- ypos yvel)))) ; ::::::::::::::: ; :: Main Code :: ; ::::::::::::::: ; Initialize (setq by 20) (setscroll (+ by 1) 24) ; Create some programmable turtles (cb) (setq t1 (Turtle 'new 40 10)) (setq t2 (Turtle 'new 41 10))  (turn 1) (self 'display))) ; Function "turn" turns a turtle (defun turn (inc) (setq head=================H===========H===== & H" 77 " H H H | &&& H"]7b7 " H H H | &&&&& H"ð77 " H H H | =============H"78 " =====------================= H | $ $"O8T8 " | H | $$$ $$$"à88 "====------=== | H | $$$$$ $$$$$"88 " | = | ============= ============"0959 " v\XLOG15.LSP[  !"#$%&'()*o+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ0?{vM%x]Fi+a>o}RwE@q)>|g^;.o=S != !E&Lh.>w\0MPEs )0a ֵ=b|^1\eH1s)bԄi{g!Sj0°n k2xFH!gCH&Ls؆"ͮ@sq> )bلiwې"M&\| |j4Ás>vљXgYL+X4SqL5_(+"uޮ2c煐"`MB[B Ym;i\H0apR4 iH0a #dB)v\{ǰ'seHk 8/cdzB8V i)bymCfyy Bdq^(Bȕ0(7OL)b͜*RL&BV !u^8/)bym4Xu'0YmǪ;!;B)bym4AsG8V )=85N;k8Ei6 LHF8V )8RL&BV !u^8/B eZ4!u^(S@f-XἐrJ/8`SU*0a:0>R`۪܆5,E,Pst"M&L ¹gr^` A؅?SLq1)C;55 ˑqL1E]e +y†p^(b'㈡w ]QAUPu jbyzWB!E+ ! 8fexA/8Q3qSL:oW5+ p ˢ9(Ӣ !Eie.C Bp^(ض*a y! E,M&d+d"6a ; 4Es )bM&\!u eZ4ˢRs'㈽֌W!d| >wl}?]sBHkj0 {`4yBLk8/ޅuXFWp^ٻ Z);9/˴KX#E,M&asY!Ei2-B7!E<׶ eZ4+Lpx! 8A1Rœ< 1v1)p^B[Bp^qƂuz6P;RL&By!i)&LraRBH>8mEkB px!E<0.y!\!u^RL&,X70Up^BP)6a w!E,M& fe,X7RB8??׬ /Xn~ Ym6Rpq`,"&Lrm ^^np༐BX0MlY ;dB@X0M(6,(ٻR܄i‚uj,X7ޅ<7aPX+s6`ݠ(|b'aEk 0c)Z*cXs^V{y!ܢh-7PEs(ZRL&q9{Zh- "`CfOP!E,۶*aCZJPsO)t`CS]0aL@!3`CS>EkaL&(Ӣ9PHf<Eki).0MPEsROwEZl]Qv!i2-uXnvu8θ 0aL@a4O{GP#9qL1E]eދ+ZK=nLÚ]@ e<`ÚB(ZK=P)6aiX݄iBZ9/8/4݇S;u \{Q1M&,X7 ይۂn/hʘێ1K)Zs9 )q^^g!m>+Lh(ZKO8 > )lgRL&6 ֍BYHCH>8.(Z o!O0aP`|B x}RwxJrICUd~Dz)7o>x|_ >=~8G|g.:GM'y`ʮݽyRLoygH?c.>@ysR|͹wqg hIM.V¸o/."fֺYRvwe<8'6'tgX 5w=SX]3 DB '@'+80H DW SPSTO-6 RPAT DW $+2 LHLD RPP JMP HPUSH F*"!ïF*!cx s#rs#r*!#"!*!*z|F}|ҍF*"*"*"*"*""!"!"*"!G*!)s#r*!#"!*!*z|&G}|G!""*"*{"y!"!@dͿq![Cp!i}cͿq![Cp!k}cͿq![Cp!}cͿq!8_Cp!<"!@dͿq![Cp!y}cͿq!8_CpͧXc!{[Ͱv͹X**zzG{zzH!nw*wu!Z͝s;u*cw"*"!H*!)^#V|5H*!#"!*!*z|.H}|HzH*)^#V*!)"hs#r^#V*~s#r*#"*!)s#r*"*"!qL!Rc*͊wͰv*|RI*|¸HsYRI*|>! ͒uHF!+s"RI*|H*"RI*cxQ*) p2DECOMPILDQCDECOMPIL4QH #v'DECOMPIL.DOC;  !"#$%&'()*+,-./01o23456789:xy}Ĕ`bd@ !SaD,x|?^?i\ !SaDyWI>Y4 d x?/;t-ϙM`3L-4d4i^v D :kcjqPLc/\ <ib h!dm QW6툫D8"yMcjʉp-2,lE0y!sU6%#Ё?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopq J.G!N&:L=s.  "!2=S $_m3IiF뿇[4?J6cǜO1bq6[ ~E_d3.vTf\,W%q/ӶZwElɘxll\I~E_d3.v2m5k[Z^q_[~͸_ЬmOlm\qZ9U;K\&cͽ=/Z U>O\;-?Wf\/hֶc6?V tj4љ-uR6kb=0*u:q{rezVty~,S&̈3`qKaU[V?WTf\, M 7uJm>O8ocmR71'㴲f8_࿞'\Q튆O߯ ۛ|V9gSl'5+_'\3gI Tiм[1 gSnI] eNMXt+_67vNF&-EGTo,`:e2 ħc:+Tu xx-]B,Mt&nK͚X$ #6{Ng^. H %. Yt ?OT'\"mc`h$\ +\%q"r ħcxθNt Js TI74.# ##{[69m!-i\%5G괱p:l'5w-i\?$5G8~orme2`۸Jsfm[3 J.G!N&:NfMGFZN'w/\ι \ϊ-E$+Yt zMQSeliꄋWmϢPl66.>ڶ?1'ħc U Ƀ-⻧*g:IɫO?^ z daO {1Hأft*S!tV!+7 阶Ny;_Ҽ* ~MR#in_ bPK*Mj`6oU)f4SdL\&ce2fzyrIL6r^/89jHVQ2Vo۴*r^ܐ)E tj4љ-uR6kb=0*u:q{rezXOq5L͔aN&: V!+Os inĶ*6uZm)j .18/Z>RE ,mgv[S"oގ-~ެmgw援ʠC 3Zfm[win'--e\ۖĶ*67m~Gtj4љB!22!0=-QN:b+/ThtTˈ^:5LeQL8`/w J.G!N&:NfMGFZN'w/\ι \ϊHטAp-]B/Mt&nf?ʸ3S Ӄr= N)gAaAQotj4љ0`N&:7aA'D#rf0A8(ף#&NGf [JD?Qm1肐gZzTg{^S՘E9VDFF5#UIwsa.Stx:Q"jr LCzhhٶ%SF({W %(zh3 BDr=7Ѡ:f39 ^:5,0Z7iGA_dAg#ujQA嗆r=: BtNBKFFpw J.G!N&:NfMGFZN'w/\ι \ _7Щ^)tL=:SI&F=M3̀_'e38ɟ!3whs-'"1͋I0@/Mt&'%43H5 BZX{2ѝgՒL=fH:'FIg=:4:)un/bqBLԌr}D9 =: B;UjNa8,#"A/˰ZztaR DB '>' DB 'R'+80H DW LEAVE-8 TOR DW $+2 POP D LHLD RPP DCX H DCX H SHLD RPP MOV M,E INX H MOV M,D JMP NEXT ; DB 82H ; R> DB 'R' DB '>'+80H DW TOR-5 FROMR DW $+2 LHLD RPP MOV E,M INX H MOV D,M INX H SHLD RPP PUSH D JMP NEXT ; DB 81H ; R DB 'R'+80H DW FROMR-5 RR DW IDO+2 ; DB 82H ; 0= DB '0' DB '='+80H DW RR-4 ZEQU DW $+2 POP H MOV A,L ORA H LXI H,0 JNZ ZEQU1 INX H ZEQU1 JMP HPUSH ; DB 82H ; 0< DB '0' DB '<'+80H DW ZEQU-5 ZLESS DW $+2 POP H DAD H LXI H,0 JNC ZLESS1 INX H ZLESS1 JMP HPUSH ; DB 81H ; + DB '+'+80H DW ZLESS-5 PLUS DW $+2 POP D POP H DAD D JMP HPUSH ; DB 82H ; D+ DB 'D' DB '+'+80H DW PLUS-4 DPLUS DW $+2 LXI H,6 DAD SP MOV E,M MOV M,C INX H MOV D,M MOV M,B POP B POP H DAD D XCHG POP H MOV A,L ADC C MOV L,A MOV A,H ADC B MOV H,A POP B PUSH D JMP HPUSH ; DB 85H ; MINUS DB 'MINU' DB 'S'+80H DW DPLUS-5 MINUS DW $+2 POP H MOV A,L CMA MOV L,A MOV A,H CMA MOV H,A INX H JMP HPUSH ; DB 86H ; DMINUS DB 'DMINU' DB 'S'+80H DW MINUS-8 DMINU DW $+2 POP H POP D SUB A SUB E MOV E,A MVI A,0 SBB D MOV D,A MVI A,0 SBB L MOV L,A MVI A,0 SBB H MOV H,A PUSH D JMP HPUSH ; DB 84H ; OVER DB 'OVE' DB 'R'+80H DW DMINU-9 OVER DW $+2 POP D POP H PUSH H JMP DPUSH ; DB 84H ; DROP DB 'DRO' DB 'P'+80H DW OVER-7 DROP DW $+2 POP H JMP NEXT ; DB 84H ; SWAP DB 'SWA' DB 'P'+80H DW DROP-7 SWAP DW $+2 POP H XTHL JMP HPUSH ; DB 83H ; DUP DB 'DU' DB 'P'+80H DW SWAP-7 DUP DW $+2 POP H PUSH H JMP HPUSH ; DB 84H ; 2DUP DB '2DU' DB 'P'+80H DW DUP-6 TDUP DW $+2 POP H POP D PUSH D PUSH H JMP DPUSH ; DB 82H ; +STORE DB '+' DB '!'+80H DW TDUP-7 PSTOR DW $+2 POP H POP D MOV A,M ADD E MOV M,A INX H MOV A,M ADC D MOV M,A JMP NEXT ; DB 86H ; TOGGLE DB 'TOGGL' DB 'E'+80H DW PSTOR-5 TOGGL DW $+2 POP D POP H MOV A,M XRA E MOV M,A JMP NEXT ; DB 81H ; @ DB '@'+80H DW TOGGL-9 AT DW $+2 POP H MOV E,M INX H MOV D,M PUSH D JMP NEXT ; DB 82H ; C@ DB 'C' DB '@'+80H DW AT-4 CAT DW $+2 POP H MOV L,M MVI H,0 JMP HPUSH ; DB 82H ; 2@ DB '2' DB '@'+80H DW CAT-5 TAT DW $+2 POP H LXI D,2 DAD D MOV E,M INX H MOV D,M PUSH D LXI D,-3 DAD D MOV E,M INX H MOV D,M PUSH D JMP NEXT ; DB 81H ; STORE (PRONOUNCED STORE) DB '!'+80H DW TAT-5 STORE DW $+2 POP H POP D MOV M,E INX H MOV M,D JMP NEXT ; DB 82H ; CSTORE DB 'C' DB '!'+80H DW STORE-4 CSTOR DW $+2 POP H POP D MOV M,E JMP NEXT ; DB 82H ; 2 STORE DB '2' DB '!'+80H DW CSTOR-5 TSTOR DW $+2 POP H POP D MOV M,E INX H MOV M,D INX H POP D MOV M,E INX H MOV M,D JMP NEXT ; DB 0C1H ; COLON DB ':'+80H DW TSTOR-5 COLON DW DOCOL DW QEXEC DW SCSP DW CURR DW AT DW CONT DW STORE DW CREAT DW RBRAC DW PSCOD DOCOL LHLD RPP DCX H MOV M,B DCX H MOV M,C SHLD RPP INX D MOV C,E MOV B,D JMP NEXT ; DB 0C1H ; SEMICOLON DB ';'+80H DW COLON-4 SEMI DW DOCOL DW QCSP DW COMP DW SEMIS DW SMUDG DW LBRAC DW SEMIS ; DB 84H ; NOOP DB 'NOO' DB 'P'+80H DW SEMI-4 NOOP DW DOCOL DW SEMIS ; DB 88H ; CONSTANT DB 'CONSTAN' DB 'T'+80H DW NOOP-7 CONS DW DOCOL DW CREAT DW SMUDG DW COMMA DW PSCOD DOCON INX D XCHG MOV E,M INX H MOV D,M PUSH D JMP NEXT ; DB 88H ; VARIABLE DB 'VARIABL' DB 'E'+80H DW CONS-0BH VARB DW DOCOL DW CONS DW PSCOD DOVAR INX D PUSH D JMP NEXT ; DB 84H ; USER DB 'USE' DB 'R'+80H DW VARB-0BH USER DW DOCOL DW CONS DW PSCOD DOUSE INX D XCHG MOV E,M MVI D,0 LHLD UP DAD D JMP HPUSH ; DB 81H ; 0 ( THE NUMBER ZERO) DB '0'+80H DW USER-7 ZERO DW DOCON DW 0 ; DB 81H ; 1 DB '1'+80H DW ZERO-4 ONE DW DOCON DW 1 ; DB 81H ; 2 DB '2'+80H DW ONE-4 TWO DW DOCON DW 2 ; DB 81H ; 3 DB '3'+80H DW TWO-4 THREE DW DOCON DW 3 ; DB 82H ; BL DB 'B' DB 'L'+80H DW THREE-4 BL DW DOCON DW 20H ; DB 83H ; C/L DB 'C/' DB 'L'+80H DW BL-5 CSLL DW DOCON DW 64 ; DB 85H ; FIRST DB 'FIRS' DB 'T'+80H DW CSLL-6 FIRST DW DOCON DW BUF1 ; DB 85H ; LIMIT DB 'LIMI' DB 'T'+80H DW FIRST-8 LIMIT DW DOCON DW EM ; DB 85H ; B/BUF DB 'B/BU' DB 'F'+80H DW LIMIT-8 BBUF DW DOCON DW KBBUF ; DB 85H DB 'B/SC' DB 'R'+80H DW BBUF-8 BSCR DW DOCON DW 400H/KBBUF ; DB 87H ; +ORIGIN DB '+ORIGI' DB 'N'+80H DW BSCR-8 PORIG DW DOCOL DW LIT DW ORIG DW PLUS DW SEMIS ; ;-------------------------USER VARIABLES-------------------------------------- ; DB 82H ; S0 DB 'S' DB '0'+80H DW PORIG-0AH SZERO DW DOUSE DW 6 ; DB 82H ; R0 DB 'R' DB '0'+80H DW SZERO-5 RZERO DW DOUSE DW 8 ; DB 83H ; TIB DB 'TI' DB 'B'+80H DW RZERO-5 TIB DW DOUSE DB 0AH ; DB 85H ; WIDTH DB 'WIDT' DB 'H'+80H DW TIB-6 WIDTH DW DOUSE DB 0CH ; DB 87H ; WARNING DB 'WARNIN' DB 'G'+80H DW WIDTH-8 WARN DW DOUSE DB 0EH ; DB 85H ; FENCE DB 'FENC' DB 'E'+80H DW WARN-0AH FENCE DW DOUSE DB 10H ; DB 82H ; DP DB 'D' DB 'P'+80H DW FENCE-8 DP DW DOUSE DB 12H ; DB 88H ; VOC-LINK DB 'VOC-LIN' DB 'K'+80H DW DP-5 VOCL DW DOUSE DW 14H ; DB 83H ; BLK DB 'BL' DB 'K'+80H DW VOCL-0BH BLK DW DOUSE DB 16H ; DB 82H ; IN DB 'I' DB 'N'+80H DW BLK-6 INN DW DOUSE DB 18H ; DB 83H ; OUT DB 'OU' DB 'T'+80H DW INN-5 OUTT DW DOUSE DB 1AH ; DB 83H ; SCR DB 'SC' DB 'R'+80H DW OUTT-6 SCR DW DOUSE DB 1CH ; DB 86H ; OFFSET DB 'OFFSE' DB 'T'+80H DW SCR-6 OFSET DW DOUSE DB 1EH ; DB 87H ; CONTEXT DB 'CONTEX' DB 'T'+80H DW OFSET-9 CONT DW DOUSE DB 20H ; DB 87H ; CURRENT DB 'CURREN' DB 'T'+80H DW CONT-0AH CURR DW DOUSE DB 22H ; DB 85H ; STATE DB 'STAT' DB 'E'+80H DW CURR-0AH STATE DW DOUSE DB 24H ; DB 84H ; BASE DB 'BAS' DB 'E'+80H DW STATE-8 BASEE DW DOUSE DB 26H ; DB 83H ; DPL DB 'DP' DB 'L'+80H DW BASEE-7 DPL DW DOUSE DB 28H ; DB 83H ;FLD DB 'FL' DB 'D'+80H DW DPL-6 FLD DW DOUSE DB 2AH ; DB 83H ; CSP DB 'CS' DB 'P'+80H DW FLD-6 CSPP DW DOUSE DB 2CH ; DB 82H ; R# DB 'R' DB '#'+80H DW CSPP-6 RNUM DW DOUSE DB 2EH ; DB 83H ; HLD DB 'HL' DB 'D'+80H DW RNUM-5 HLD DW DOUSE DW 30H ; DB 85H ; TEMIT DB 'TEMI' DB 'T'+80H DW HLD-6 TEMIT DW DOUSE DB 32H ; DB 84H DB 'TKE' DB 'Y'+80H DW TEMIT-8 TKEY DW DOUSE DB 34H ; ; ;-------------------------END OF USER VARIABLES-------------------------------- ; DB 82H ; 1+ DB '1' DB '+'+80H DW TKEY-7 ONEP DW DOCOL DW ONE DW PLUS DW SEMIS ; DB 82H ; 2+ DB '2' DB '+'+80H DW ONEP-5 TWOP DW DOCOL DW TWO DW PLUS DW SEMIS ; DB 84H ; HERE DB 'HER' DB 'E'+80H DW TWOP-5 HERE DW DOCOL DW DP DW AT DW SEMIS ; DB 85H ; ALLOT DB 'ALLO' DB 'T'+80H DW HERE-7 ALLOT DW DOCOL DW DP DW PSTOR DW SEMIS ; DB 81H ; , DB ','+80H DW ALLOT-8 COMMA DW DOCOL DW HERE DW STORE DW TWO DW ALLOT DW SEMIS ; DB 82H ; C, DB 'C' DB ','+80H DW COMMA-4 CCOM DW DOCOL DW HERE DW CSTOR DW ONE DW ALLOT DW SEMIS ; ;--------------------------SUBROUTINE USED BY - AND < ; SSUB MOV A,L SUB E MOV L,A MOV A,H SBB D MOV H,A RET ; DB 81H ; - (AS IN SUBTRACTION) DB '-'+80H DW CCOM-5 SUBB DW $+2 POP D POP H CALL SSUB JMP HPUSH ; DB 81H ; = DB '='+80H DW SUBB-4 EQUAL DW DOCOL DW SUBB DW ZEQU DW SEMIS ; DB 81H ; < DB '<'+80H DW EQUAL-4 LESS DW $+2 POP D POP H MOV A,D XRA H JM LES1 CALL SSUB LES1 INR H DCR H JM LES2 LXI H,0 JMP HPUSH LES2 LXI H,1 JMP HPUSH ; DB 82H ; U< (UNSIGNED <) DB 'U' DB '<'+80H DW LESS-4 ULESS DW DOCOL,TDUP DW XORR,ZLESS DW ZBRAN DW ULES1-$ DW DROP,ZLESS DW ZEQU DW BRAN DW ULES2-$ ULES1 DW SUBB,ZLESS ULES2 DW SEMIS ; DB 81H ; > DB '>'+80H DW ULESS-5 GREAT DW DOCOL DW SWAP DW LESS DW SEMIS ; DB 83H ; ROT DB 'RO' DB 'T'+80H DW GREAT-4 ROT DW $+2 POP D POP H XTHL JMP DPUSH ; DB 85H ; SPACE DB 'SPAC' DB 'E'+80H DW ROT-6 SPACE DW DOCOL DW BL DW EMIT DW SEMIS ; DB 84H ; -DUP DB '-DU' DB 'P'+80H DW SPACE-8 DDUP DW DOCOL DW DUP DW ZBRAN DW DDUP1-$ DW DUP DDUP1 DW SEMIS ; DB 88H ; TRAVERSE DB 'TRAVERS' DB 'E'+80H DW DDUP-7 TRAV DW DOCOL DW SWAP TRAV1 DW OVER DW PLUS DW LIT DW 7FH DW OVER DW CAT DW LESS DW ZBRAN DW TRAV1-$ DW SWAP DW DROP DW SEMIS ; DB 86H ; LATEST DB 'LATES' DB 'T'+80H DW TRAV-0BH LATES DW DOCOL DW CURR DW AT DW AT DW SEMIS ; DB 83H ; LFA DB 'LF' DB 'A'+80H DW LATES-9 LFA DW DOCOL DW LIT DW 4 DW SUBB DW SEMIS ; DB 83H ; CFA DB 'CF' DB 'A'+80H DW LFA-6 CFA DW DOCOL DW TWO DW SUBB DW SEMIS ; DB 83H ; NFA DB 'NF' DB 'A'+80H DW CFA-6 NFA DW DOCOL DW LIT DW 5 DW SUBB DW LIT DW -1 DW TRAV DW SEMIS ; DB 83H ; PFA DB 'PF' DB 'A'+80H DW NFA-6 PFA DW DOCOL DW ONE DW TRAV DW LIT DW 5 DW PLUS DW SEMIS ; DB 84H ; STORE CSP DB '!CS' DB REM THIS PROGRAM WAS WRITTEN BY MITCH J. BOGDANOWICZ 8/19/77 REM COPYRIGHT 1977 MITCHELL J. BOGDANOWICZ JR. REM THE MEMORY MERCHANTS INC. REM 1350 BUFFALO ROAD REM SUITE 11 REM ROCHESTER, NEW YORK 14624 REM 716-328-5585 DIM BOARD(12,12),LENGTH(64),MY(64),MX(64),SY(64),SX(64),RI(64),SI(64) DIM LN(64),MOVE(64),SAFE.MOVE(64),DANGER.MOVE(64),NO.DANGER(64) 1002 INPUT "IS THIS A NEW GAME OR OLD "; NEW.OR.OLD$ PRINT RANDOMIZE INPUT "ENTER A FILE NAME FOR THIS GAME "; NAME$ FILE.NAME$=LEFT$(NAME$,8) PRINT IF NEW.OR.OLD$="OLD" THEN GOTO 1345 PRINT "THIS IS THE GAME OF OTHELLO":COUNTER=4 :EG=0 :EH=0 PRINT : PRINT 1011 INPUT "DO YOU WANT THE RULES? (Y OR N) "; A$ IF LEFT$(A$,1)="Y" THEN GOSUB 1240:GOTO 1016 IF LEFT$(A$,1)<>"N" THEN GOTO 1011 1013 PRINT "THESE ARE YOUR CONTROL OPTIONS :" : GOSUB 1450 REM SET UP BOARD 1016 FOR X=1 TO 8 FOR Y=1 TO 8 BOARD(Y,X)=0 NEXT Y: NEXT X BOARD(4,4)=1:BOARD(5,5)=1:BOARD(4,5)=-1:BOARD(5,4)=-1 REM SET DIFFICULTY 1022 PRINT "ENTER YOUR RANK (1 TO 9) - 9 IS MOST DIFFICULT.";:INPUT PLAYERS.RANK PRINT IF PLAYERS.RANK<1 OR PLAYERS.RANK>9 THEN GOTO 1022 COUNTER=COUNTER+ABS(PLAYERS.RANK-5) IF PLAYERS.RANK=5 THEN GOTO 1043 IF PLAYERS.RANK>5 THEN CH=RND ELSE GOTO 1028 IF CH<=.750 THEN BOARD(1,8)=-1 ELSE GOSUB 1316 1028 IF PLAYERS.RANK>6 THEN CH=RND ELSE GOTO 1030 IF CH<=.750 THEN BOARD(8,1)=-1 ELSE GOSUB 1316 1030 IF PLAYERS.RANK>7 THEN CH=RND ELSE GOTO 1032 IF CH<=.750 THEN BOARD(8,8)=-1 ELSE GOSUB 1316 1032 IF PLAYERS.RANK>8 THEN CH=RND ELSE GOTO 1034 IF CH<=.750 THEN BOARD(1,1)=-1 ELSE GOSUB 1316 1034 IF PLAYERS.RANK<5 THEN CH=RND ELSE GOTO 1036 IF CH<=.750 THEN BOARD(1,1)=1 ELSE GOSUB 1321 1036 IF PLAYERS.RANK<4 THEN CH=RND ELSE GOTO 1038 IF CH<=.750 THEN BOARD(8,8)=1 ELSE GOSUB 1321 1038 IF PLAYERS.RANK<3 THEN CH=RND ELSE GOTO 1040 IF CH<=.750 THEN BOARD(1,8)=1 ELSE GOSUB 1321 1040 IF PLAYERS.RANK<2 THEN CH=RND ELSE GOTO 1042 IF CH<=.750 THEN BOARD(8,1)=1 ELSE GOSUB 1321 1042 REM PRINT STARTING BOARD AND START GAME 1043 GOSUB 1046 GOTO 1055 REM DISPLAY BOARD 1046 FOR Y=1 TO 8 FOR X=1 TO 8 IF BOARD(Y,X)=1 THEN PRINT "X "; IF BOARD(Y,X)=-1 THEN PRINT "O "; IF BOARD(Y,X)=0 THEN PRINT "+ "; IF X=8 THEN PRINT NEXT X:NEXT Y: PRINT RETURN 1055 PRINT INPUT "YOU ARE 'X', DO YOU WANT TO GO FIRST"; A$ PRINT IF LEFT$(A$,1)="N" THEN 1069 REM INPUT MOVE 1059 PRINT "YOUR MOVE"; INPUT Y,X IF (Y=0) AND (X=0) THEN GOTO 1232 REM SAVE DATA IF (Y=0) AND (X=1) THEN GOTO 1270 REM FORFEIT MOVE IF (Y=0) AND (X=2) THEN GOTO 1117 REM EXCHANGE BOARD W/CONT. IF (Y=0) AND (X=3) THEN GOTO 1118 REM EXCHANGE BOARD IF (Y=0) AND (X=4) THEN EH=1 : GOTO 1217 IF (Y=0) AND (X=5) THEN GOSUB 1325 IF (Y=0) AND (X=6) THEN GOTO 1065 REM AUTO MODE IF (Y=0) AND (X=7) THEN GOSUB 1100 REM SET UP BOARD YOURSELF IF (Y=0) AND (X=8) THEN GOSUB 1110 REM MOVE A PIECE IF (Y=0) AND (X=9) THEN GOSUB 1112 REM DELETE A PIECE IF (Y=0) AND (X=10) THEN GOSUB 1450 REM PRINT OPTIONS IF (Y=0) AND (X>10) THEN GOSUB 1450 : GOTO 1059 IF (Y<0) OR (X<0) OR (Y>10) OR (X>10) THEN GOTO 1059 IF Y=0 THEN GOSUB 1046 : GOTO 1059 PRINT : COUNTER=COUNTER+1: GOSUB 1199 IF BOARD(Y,X)<>0 THEN PRINT "INVALID MOVE, TRY AGAIN!":COUNTER=COUNTER-1: GOTO 1059 BOARD(Y,X)=1 : GOSUB 1186 : GOSUB 1046 IF COUNTER>=64 THEN GOTO 1217 GOTO 1069 1065 REM AUTO AUTO$="AUTO" FIRST.TIME=0 GOTO 1069 1069 REM FIND ALL POSSIBLE MOVES FOR BLACK IF INP(1) = 27 THEN AUTO$="MANUAL" : GOTO 1059 REM AN ESCAPE STOPS AUTO 1070 Q=0 FOR Y=1 TO 8 FOR X=1 TO 8 IF BOARD(Y,X)=-1 THEN GOSUB 1087 NEXT X :NEXT Y IF Q=0 THEN 1217 Q2=0 FOR Q1=1 TO Q Q3=LENGTH(Q1) IF Q3>Q2 THEN Q2=Q3 NEXT Q1: Q0=Q2:SD=0 1081 K=0: MM=0: NN=0:N1=0 FOR Q1=1 TO Q IF Q2=LENGTH(Q1) THEN K=K+1 REM TAKE A CORNER IF POSSIBLE IF ((MY(Q1)=1) OR (MY(Q1)=8))AND((MX(Q1)=1)OR(MX(Q1)=8))THEN Q2=LENGTH(Q1): GOTO 1172 NEXT Q1:GOTO 1119 1087 REM CHECK IN ALL DIRECTIONS FOR A WHITE STRING TO FLIP FOR R=Y-1 TO Y+1 FOR S=X-1 TO X+1 IF (R=0) OR (S=0) THEN 1092 IF BOARD(R,S)=1 THEN GOSUB 1095 1092 NEXT S: NEXT R RETURN REM FIND DIRECTION AND LENGTH OF WHITE STRING 1095 R1=R-Y : S1=S-X C=1 R2=R+R1 :S2=S+S1 1098 IF (R2=0) OR (S2=0) THEN RETURN IF BOARD(R2,S2)=1 THEN C=C+1 :R2=R2+R1 :S2=S2+S1 :GOTO 1098 IF BOARD(R2,S2)=-1 THEN RETURN IF (R2>8) OR (R2<1) OR (S2>8) OR (S2<1) THEN RETURN C=C+1 Q=Q+1:SAFE.MOVE(Q)=0 :DANGER.MOVE(Q)=0 MY(Q)=C*R1+Y : LENGTH(Q)=C-1 : SY(Q)=Y : SX(Q)=X MX(Q)=C*S1+X REM RECOGNIZE DANGER ZONES IF (MX(Q)=1)OR(MX(Q)=8)OR(MY(Q)=1)OR(MY(Q)=8) THEN GOSUB 1306 IF (MX(Q)=2) AND (MY(Q)>=2) AND (MY(Q)<=7) THEN DANGER.MOVE(Q)=1 IF (MX(Q)=7) AND (MY(Q)>=2) AND (MY(Q)<=7) THEN DANGER.MOVE(Q)=1 IF (MY(Q)=2) AND (MX(Q)>=2) AND (MX(Q)<=7) THEN DANGER.MOVE(Q)=1 IF (MY(Q)=7) AND (MX(Q)>=2) AND (MX(Q)<=7) THEN DANGER.MOVE(Q)=1 IF BOARD(1,1)=-1 AND MX(Q)=2 AND MY(Q)=2 THEN DANGER.MOVE(Q)=0 IF BOARD(1,8)=-1 AND MX(Q)=7 AND MY(Q)=2 THEN DANGER.MOVE(Q)=0 IF BOARD(8,1)=-1 AND MX(Q)=2 AND MY(Q)=7 THEN DANGER.MOVE(Q)=0 IF BOARD(8,8)=-1 AND MX(Q)=7 AND MY(Q)=7 THEN DANGER.MOVE(Q)=0 RI(Q)=R1 : SI(Q)=S1 RETURN 1100 PRINT "ENTER THE PIECE (X,O OR +)" PRINT "ENTER R TO RETURN"; : INPUT P$ IF P$="R" THEN Y=0 : RETURN INPUT "COORDINATES(Y,X): ";Y,X IF P$="X" THEN BOARD(Y,X)=-1 IF P$="O" THEN BOARD(Y,X)= 1 IF P$="+" THEN BOARD(Y,X)= 0 GOTO 1100 1110 PRINT "MOVE A PIECE(X OR O)" INPUT "FROM ";Y,X IF Y=0 THEN RETURN INPUT " TO ";Y1,X1 TEMP.=BOARD(Y,X) BOARD(Y,X)=0 BOARD(Y1,X1)=TEMP. GOTO 1110 1112 INPUT "DELETE THE PIECE (Y,X): ";Y,X IF Y=0 THEN RETURN BOARD (Y,X)=0 GOTO 1112 1117 REM EXCHANGE BOARD RETAINING CONTINUITY GOSUB 1400 REM EXCHANGE PIECES PRINT GOSUB 1046 REM PRINT BOARD PRINT GOTO 1069 REM BLACK MOVES WHAT WOULD HAVE BEEN WHITE 1118 REM EXCHANGE BOARD GOSUB 1400 PRINT GOSUB 1046 PRINT GOTO 1059 REM LOOK FOR A MULTIPLE STRING MOVE 1119 F=0 FOR Q8=1 TO Q FOR Q9=1 TO Q IF (MY(Q8)=MY(Q9)) AND (Q8<>Q9) AND (MX(Q8)=MX(Q9)) THEN GOSUB 1144 NEXT Q9: NEXT Q8 :H=0 REM IF NO MULTIPLE MOVES, GO SELECT A STRAIGHT MOVE IF F=0 THEN 1149 REM EVALUATE MULTIPLE MOVES FOR G=1 TO F IF LN(G)>H THEN J=G :H=LN(G) NEXT G IF LN(J)<=Q2 THEN 1149 P=0 : FOR G=1 TO F IF LN(G)=LN(J) THEN P=P+1 NEXT G P8=P : FOR PP=1 TO 3 P1=INT(RND *P8)+1 :P=0 FOR G=1 TO F IF LN(J)=LN(G) THEN GOSUB 1302 IF P=P1 AND LN(J)=LN(G) THEN Q2=LENGTH(MOVE(G)) :Q1=MOVE(G) :GOTO 1172 IF DANGER.MOVE(MOVE(G))=0 THEN LET NN=1 NEXT G IF NN<>1 THEN GOTO 1149 NEXT PP : GOTO 1149 REM GET LENGTH ETC. OF MULTIPLE STRING MOVE 1144 F=F+1 LN(F)=LENGTH(Q8)+LENGTH(Q9)-1 : MOVE(F)=Q9 IF LENGTH(Q8)>LENGTH(Q9) THEN MOVE(F)=Q8 RETURN REM SELECT A MOVE 1149 K8=K: FOR QQ=1 TO 5 K1=INT(RND*K8)+1 K=0 FOR Q1=1 TO Q IF Q2=LENGTH(Q1) THEN GOSUB 1237 IF K=K1 AND Q2=LENGTH(Q1) THEN GOTO 1172 IF DANGER.MOVE(Q1)=0 THEN LET MM=1 : N1=N1+1 : NO.DANGER(N1)=Q1 NEXT Q1 IF MM<>1 THEN GOTO 1164 NEXT QQ FOR N2=1 TO N1 IF Q2=LENGTH(NO.DANGER(N2)) THEN Q1=NO.DANGER(N1): GOTO 1172 NEXT N2 Q2=Q2-1 IF Q2 >0 THEN GOTO 1081 1164 IF DD=1 THEN GOTO 1184 Q2=Q0 :FOR Q6=1 TO Q : DANGER.MOVE(Q6)=0 IF BOARD(1,1)<>-1 AND MY(Q6)=2 AND MX(Q6)=2 THEN DANGER.MOVE(Q6)=1 IF BOARD(1,8)<>-1 AND MY(Q6)=2 AND MX(Q6)=7 THEN DANGER.MOVE(Q6)=1 IF BOARD(8,1)<>-1 AND MY(Q6)=7 AND MX(Q6)=2 THEN DANGER.MOVE(Q6)=1 IF BOARD(8,8)<>-1 AND MY(Q6)=7 AND MX(Q6)=7 THEN DANGER.MOVE(Q6)=1 NEXT Q6 : DD=1 : GOTO 1081 REM FLIP A STRING 1172 FOR Q4=1 TO Q2+1 : DD=0 BOARD(SY(Q1)+RI(Q1)*Q4,SX(Q1)+SI(Q1)*Q4)=-1 NEXT Q4 REM LOOK FOR MULTIPLE MOVES FOR Q6=1 TO Q IF (MY(Q1)=MY(Q6)) AND (Q1<>Q6) AND (MX(Q1)=MX(Q6)) THEN GOSUB 1181 NEXT Q6 :PRINT:PRINT"MY MOVE ";MY(Q1);",";MX(Q1):EG=0:EH=0:COUNTER=COUNTER+1 PRINT IF AUTO$="AUTO" AND FIRST.TIME=1 THEN GOSUB 1400 GOSUB 1046 IF AUTO$="AUTO" AND FIRST.TIME=0 THEN GOSUB 1400 :\ FIRST.TIME=1 : GOTO 1069 IF AUTO$="AUTO" THEN FIRST.TIME=0 : GOTO 1069 GOTO 1059 REM FLIP REMAINDER OF MULTIPLE MOVE 1181 FOR Q4=1 TO LENGTH(Q6) +1 BOARD(SY(Q6)+RI(Q6)*Q4,SX(Q6)+SI(Q6)*Q4)=-1 NEXT Q4 :RETURN 1184 Q2=Q0 : FOR Q6=1 TO Q : DANGER.MOVE(Q6)=0 : NEXT Q6 : GOTO 1081 REM FLIP ALL DISCS FOR WHITE'S MOVE 1186 FOR Q5=Y-1 TO Y+1 FOR Q6=X-1 TO X+1 IF BOARD(Q5,Q6)=-1 THEN GOSUB 1190 NEXT Q6 :NEXT Q5 : RETURN 1190 R1=Q5-Y :S1=Q6-X :R2=R1+Q5 :S2=S1+Q6 1191 IF BOARD(R2,S2)=-1 THEN GOSUB 1198 :GOTO 1191 IF BOARD(R2,S2)=0 THEN RETURN IF (R2>8) OR (R2<1) OR (S2>8) OR (S2<1) THEN RETURN R2=R1+Q5 : S2=S1+Q6 IF BOARD(R2-R1,S2-S1)=-1 THEN BOARD(R2-R1,S2-S1)=1 1196 IF BOARD(R2,S2)=-1 THEN BOARD(R2,S2)=1 :GOSUB 1198 :GOTO 1196 RETURN 1198 R2=R2+R1 : S2=S2+S1 : RETURN 1199 REM CHECK FOR A LEGAL MOVE BY WHITE IF BOARD(Y,X)<>0 THEN RETURN VM=0 FOR R=Y-1 TO Y+1 FOR S=X-1 TO X+1 IF (R=0) OR (S=0) THEN 1206 IF BOARD(R,S)=-1 THEN GOSUB 1210 1206 NEXT S :NEXT R IF VM>0 THEN RETURN PRINT "YOU CAN'T FLIP ANY OF YOUR OPPONENT'S PIECES WITH THAT MOVE" Y=11 :X=11 :BOARD(Y,X)=2 : RETURN 1210 R1=R-Y : S1=S-X : R2=R : S2=S 1211 IF (R2=0) OR (S2=0) THEN RETURN R2=R2+R1 : S2=S2+S1 IF BOARD(R2,S2)=-1 THEN 1211 IF BOARD(R2,S2)=0 THEN RETURN IF (R2>8) OR (R2<1) OR (S2>8) OR (S2<1) THEN RETURN VM=1 : RETURN 1217 REM END OF GAME TALLY AND 'NO MOVE' SITUATIONS W=0 :B=0 FOR Y=1 TO 8 FOR X=1 TO 8 Z=BOARD(Y,X) IF Z=0 AND EH=1 THEN GOTO 1224 IF AUTO$="AUTO" AND Z=0 THEN EG=1 : GOSUB 1400 : GOTO 1069 IF Z=0 THEN PRINT "I HAVE NO MOVES AVAILABLE, PLEASE GO AGAIN.":PRINT:EG=1:GOTO 1059 1224 IF Z=1 THEN W=W+1 IF Z=-1 THEN B=B+1 NEXT X :NEXT Y PRINT PRINT "THE GAME IS OVER, I HAVE CAPTURED ";B;"DISCS AND YOU HAVE ";W;"DISCS" IF W=B THEN PRINT "TIE GAME------YOU LUCKED OUT":GOTO 1232 IF W>B THEN PRINT "YOU WIN BY ";W-B;"DISCS":GOTO 1232 PRINT "I WIN BY ";B-W;"DISCS" 1232 PRINT "DO YOU WANT TO SAVE THE DATA?(YES OR NO)";: INPUT SAVE$ IF SAVE$="YES" THEN GOSUB 1322 1234 PRINT "WOULD YOU LIKE TO PLAY AGAIN? (YES OR NO OR RESUME)" INPUT A$ IF A$="RESUME" THEN GOSUB 1046 : GOTO 1059 IF A$="YES" THEN GOTO 1002 IF A$="NO" THEN STOP GOTO 1234 1237 IF DANGER.MOVE(Q1)=0 THEN K=K+1 ELSE RETURN IF SAFE.MOVE(Q1)>0 THEN K=K1 RETURN 1240 PRINT " RULES " PRINT : PRINT "YOU HAVE WHITE(X) DISCS AND THE COMPUTER HAS BLACK(O)" PRINT "A MOVE CONSISTS OF OUTFLANKING YOUR OPPONENT'S DISC(S), THEN " PRINT "FLIPPING THE OUTFLANKED DISC(S) OVER TO YOUR COLOR." PRINT " TO OUTFLANK MEANS TO PLACE A DISC SO THAT YOUR " PRINT "OPPONENT'S ROW(OR ROWS) OF DISC(S) IS BORDERED AT EACH END BY A" PRINT "DISC OF YOUR COLOR." PRINT "IF A PLAYER CANNOT OUTFLANK AND FLIP AT LEAST ONE OPPOSING DISC, THE" PRINT "TURN IS FORFEITED AND THE OPPONENT MOVES AGAIN. TO FORFEIT A TURN," PRINT "ANSWER -1,-1 TO 'YOUR MOVE?'." PRINT "A DISC MAY OUTFLANK ANY NUMBER OF DISCS IN ONE OR MORE ROWS. A ROW" PRINT "IS DEFINED AS ONE OR MORE DISCS IN A CONTINUOUS STRAIGHT LINE." PRINT "A DISC MAY OUTFLANK IN ANY DIRECTION: HORIZONTALLY, VERTICALLY OR " PRINT "DIAGONALLY. A DISC MAY OUTFLANK IN ANY NUMBER OF DIRECTIONS AT THE" PRINT "SAME TIME . A DISC MAY ONLY BE OUTFLANKED AS A DIRECT RESULT OF A MOVE" PRINT "AND MUST FALL IN THE DIRECT LINE OF THE DISC PLACED." PRINT "WHEN IT IS NO LONGER POSSIBLE FOR EITHER PLAYER TO MOVE," PRINT " THE GAME IS OVER" PRINT "DISCS ARE COUNTED AND THE PLAYER WITH THE MOST DISCS IS THE WINNER." PRINT "TO ABORT A GAME ANSWER 0,0 TO 'YOUR MOVE?'" PRINT "TO TALLY-UP AND QUIT TYPE 99,99 TO 'YOUR MOVE'" PRINT:PRINT INPUT "DO YOU WANT A SAMPLE BOARD, (Y OR N)"; S$ IF LEFT$(S$,1)<>"Y" THEN RETURN PRINT "THIS IS THE BOARD AND HOW THE SPACES ARE NUMBERED":PRINT:FOR Y=1 TO 8:FOR X=1 TO 8 PRINT Y;",";X;" "; IF X=8 THEN PRINT : PRINT NEXT X : NEXT Y : PRINT : RETURN REM CHECK FOR ALL OF WHITE'S POSSIBLE MOVES 1270 Q=0: FOR Y=1 TO 8 FOR X=1 TO 8 IF BOARD(Y,X)=1 THEN GOSUB 1286 NEXT X:NEXT Y IF Q=0 AND EG=1 THEN EH=1: GOTO 1217 IF Q=0 THEN EG=1: GOTO 1070 PRINT "I'M SORRY, YOU MAY NOT FORFEIT THIS MOVE" PRINT "YOU HAVE THESE LEGAL MOVES AVAILABLE:":PRINT FOR Q9=1 TO Q FOR QI=1 TO Q IF MX(Q9)=MX(QI) AND MY(Q9)=MY(QI) AND Q9<>QI THEN MX(QI)=0:MY(QI)=0 NEXT QI : NEXT Q9 FOR Q9=1 TO Q IF MX(Q9)=0 AND MY(Q9)=0 THEN GOTO 1285 PRINT MY(Q9);",";MX(Q9), 1285 NEXT Q9 : PRINT : GOTO 1059 1286 FOR R=Y-1 TO Y+1 FOR S=X-1 TO X+1 IF (R=0) OR (S=0) THEN 1291 IF (R=9) OR(S=9) THEN 1291 IF BOARD(R,S)=-1 THEN GOSUB 1292 1291 NEXT S: NEXT R: RETURN 1292 R1=R-Y: S1=S-X:C=1 R2=R+R1 :S2=S+S1 1294 IF (R2=0) OR (S2=0) THEN RETURN IF BOARD(R2,S2)=-1 THEN R2=R2+R1:C=C+1:S2=S2+S1:GOTO 1294 IF BOARD(R2,S2)=1 THEN RETURN IF (R2>8) OR (R2<1) OR (S2>8) OR (S2<1) THEN RETURN C=C+1 :Q=Q+1 MY(Q)=C*R1+Y MX(Q)=C*S1+X RETURN 1302 IF DANGER.MOVE(MOVE(G))=0 THEN P=P+1 ELSE RETURN IF SAFE.MOVE(MOVE(G))>0 THEN P=P1 RETURN REM AVOID DANGER ZONES 1306 IF (MY(Q)=1) AND (MX(Q)=2) AND (BOARD(1,1)<>-1) THEN DANGER.MOVE(Q)=1 IF (MY(Q)=2) AND (MX(Q)=1) AND (BOARD(1,1)<>-1) THEN DANGER.MOVE(Q)=1 IF (MY(Q)=1) AND (MX(Q)=7) AND (BOARD(1,8)<>-1) THEN DANGER.MOVE(Q)=1 IF (MY(Q)=2) AND (MX(Q)=8) AND (BOARD(1,8)<>-1) THEN DANGER.MOVE(Q)=1 IF (MY(Q)=7) AND (MX(Q)=1) AND (BOARD(8,1)<>-1) THEN DANGER.MOVE(Q)=1 IF (MY(Q)=8) AND (MX(Q)=2) AND (BOARD(8,1)<>-1) THEN DANGER.MOVE(Q)=1 IF (MY(Q)=8) AND (MX(Q)=7) AND (BOARD(8,8)<>-1) THEN DANGER.MOVE(Q)=1 IF (MY(Q)=7) AND (MX(Q)=8) AND (BOARD(8,8)<>-1) THEN DANGER.MOVE(Q)=1 SAFE.MOVE(Q)=1 : RETURN REM RANDOMLY PLACE A BLACK (" O ") PIECE (HANDICAP) 1316 X=INT(RND*8)+1 Y=INT(RND*8)+1 IF BOARD(Y,X)<>0 THEN GOTO 1316 BOARD(Y,X)=-1 : RETURN REM RANDOMLY PLACE A WHITE (" X ") PIECE (HANDICAP) 1321 X=INT(RND*8)+1 Y=INT(RND*8)+1 IF BOARD(Y,X)<>0 THEN GOTO 1321 BOARD(Y,X)=1 : RETURN 1322 PRINT " THE PRESENT FILE IS NAMED ";FILE.NAME$ PRINT " IF YOU WANT TO CHANGE IT, INPUT A DIFFERENT NAME" PRINT "OTHERWISE ENTER A '*' "; INPUT NAME$ IF NAME$="*" THEN GOTO 1325 FILE.NAME$=LEFT$(NAME$,8) GOTO 1325 1325 REM SAVE ALL DATA FOR A FUTURE FINISH FILE FILE.NAME$ FOR SAVE = 1 TO 64 PRINT # 1;\ LENGTH(SAVE),MY(SAVE),MX(SAVE),\ SY(SAVE),SX(SAVE),RI(SAVE),\ SI(SAVE),LN(SAVE),MOVE(SAVE),\ SAFE.MOVE(SAVE),DANGER.MOVE(SAVE),NO.DANGER(SAVE) NEXT SAVE FOR SAVE.A = 1 TO 12 FOR SAVE.B = 1 TO 12 PRINT # 1; BOARD(SAVE.A,SAVE.B) NEXT SAVE.B NEXT SAVE.A PRINT # 1; COUNTER,EG,EH,PLAYERS.RANK,\ Q,Q0,Q2,Q3,\ K,K1,K8,MM,\ NN,N1,R,S,\ R1,S1,C,R2,\ S2,F,H,P,\ P8,DD,VM,NAME$ CLOSE 1 RETURN 1345 REM READ IN DATA FILE FILE.NAME$ FOR LOAD = 1 TO 64 READ # 1;\ LENGTH(LOAD),MY(LOAD),MX(LOAD),\ SY(LOAD),SX(LOAD),RI(LOAD),\ SI(LOAD),LN(LOAD),MOVE(LOAD),\ SAFE.MOVE(LOAD),DANGER.MOVE(LOAD),NO.DANGER(LOAD) NEXT LOAD FOR LOAD.A = 1 TO 12 FOR LOAD.B = 1 TO 12 READ # 1; BOARD(LOAD.A,LOAD.B) NEXT LOAD.B NEXT LOAD.A READ # 1; COUNTER,EG,EH,PLAYERS.RANK,\ Q,Q0,Q2,Q3,\ K,K1,K8,MM,\ NN,N1,R,S,\ R1,S1,C,R2,\ S2,F,H,P,\ P8,DD,VM,NAME$ CLOSE 1 GOSUB 1046 : GOTO 1059 1400 FOR X = 1 TO 8 FOR Y = 1 TO 8 BOARD(Y,X)=- BOARD(Y,X) NEXT Y NEXT X RETURN 1450 REM OPTIONS ON Y,X RESPONSE OF 0,# PRINT PRINT "COMMAND 0,0 = SAVE DATA" PRINT "COMMAND 0,1 = FORFEIT MOVE" PRINT "COMMAND 0,2 = EXCHANGE BOARD" PRINT "COMMAND 0,3 = EXCHANGE PIECES" PRINT "COMMAND 0,4 = END GAME + TALLY" PRINT "COMMAND 0,5 = SAVE DATA ON CURRENT FILE" PRINT "COMMAND 0,6 = AUTO MODE" PRINT "COMMAND 0,7 = SET UP BOARD YOURSELF" PRINT "COMMAND 0,8 = MOVE A PIECE" PRINT "COMMAND 0,9 = DELETE A PIECE" PRINT "COMMAND 0,10 = PRINT OPTIONS" PRINT PRINT RETURN END *********************************************************************** *********************************************************************** ** ** ** ***** ***** * * ***** * * ***** ** ** * * * * * * * * * * ** ** * * * * * * * * * * ** ** * * * ***** *** * * * * ** ** * * * * * * * * * * ** ** * * * * * * * * * * ** ** ***** * * * ***** ***** ***** ***** ** ** ** *********************************************************************** *********************************************************************** OTHELLO IS ONE OF THE MOST POPULAR GAMES AROUND TODAY. THE EXCITEMENT IS CERTAINLY JUSTIFIED, SINCE OTHELLO IS AN EXCELLENT GAME. OTHELLO SWEPT JAPAN AND IS NOW MAKING A COMMERCIAL SWEEP HERE. HOWEVER, THE BASIC CONCEPTS OF THE GAME HAVE BEEN AROUND SINCE THE VICTORIAN TIMES IN ENGLAND WHERE IT WAS CALLED REVERSI. THE GAME OTHELLO / REVERSI IS A VERY SIMPLE, ELEGANT ONE, WHICH PERMITS MUCH OPPORTUNITY FOR STRATEGY. THE GAME IS PLAYED ON AN 8 BY 8 MATRIX, AND EACH PLAYER HAS 32 PLAYING DISKS, WHICH ARE WHITE ON ONE SIDE AND BLACK ON THE OTHER (REPRESENTED IN THE COMPUTER VERSION BY 'X' AND 'O' RESPECTIVELY). ONE PLAYER PLAYS 'O' (COMPUTER) AND THE OTHER PLAYS 'X' (HUMAN). FOUR STARTER PIECES ARE PLACED IN THE CENTER OF THE BOARD TO BEGIN PLAY (EXCEPT WHEN A HANDICAP IS GIVEN BY EITHER YOU OR THE COMPUTER. IN THIS CASE THE CORNER SPACES ARE GIVEN TO THE PERSON RECEIVING THE HANDICAP [ BUT BEWARE!!! THERE IS A 25% PROBABILITY THAT ANY ONE HANDICAP PIECE MAY BE PLACED RANDOMLY ON THE BOARD]. FOR EXAMPLE, IF YOU GIVE THE COMPUTER A HANDICAP OF 3 [WHICH WOULD BE DONE BY ENTERING A RANK OF 8, RANK 5 IS DEAD EVEN] , THREE CORNERS WOULD BECOME'O''S AT THE START OF THE GAME.). EACH PLAYER IN TURN PLACES ONE DISC ON THE BOARD [BY ENTERING Y,X TO 'YOUR MOVE'] AND MUST OUTFLANK THE OPPOSITION BY SURROUNDING ONE OR MORE ROWS OF HIS OPPONENT'S DISCS [THERE CAN BE ONE DISK IN A ROW] WITH ONE OF HIS OWN. AFTER DOING SO THE ENTIRE ROW BECOMES HIS. THE WINNER IS THE PLAYER WITH THE MOST DISCS OF HIS COLOR ON THE BOARD WHEN ALL DISCS HAVE BEEN PLAYED. THE STRATEGY COMES IN PLANNING WHERE TO OUTFLANK TO GAIN THE MOST DISCS OR TO MANEUVER PIECES TO THE STRONGEST POWER POSITIONS ON THE BOARD. THIS COMPUTER VERSION WAS DESIGNED NOT ONLY TO PLAY A REASONABLE GAME WITH A HUMAN OPPONENT, BUT ALSO TO AID IN PERFECTING OUR GAME. THE FOLLOWING LISTING WAS WRITTEN IN BASIC-E A DISK BASED MICROCOMPUTER LANGUAGE SUPPORTED BY IMSAI AND OTHERS. IT WILL RUN ON ANY CP/M BASED 8080/Z80 SYSTEM. THE GAME IS AVAILABLE FROM THE MEMORY MERCHANTS ON DISK OR AS A NON-DISK VERSION FOR TDL'S EXTENDED BASIC. THE LISTING CAN BE MODIFIED TO SUIT MOST ANY BASIC BY DELETING THE DISK ACCESS ROUTINES, INCLUDING LINE NUMBERS AND SHORTENING SOME OF THE VARIABLE NAMES [BASIC -E IS FREE FORMATTED AND ONLY REQUIRES LINE NUMBERS FOR GOTO'S AND GOSUB 'S AND ALSO ALLOWS VARIABLE NAMES UP TO 31 CHARACTERS]. THIS VERSION HAS ELEVEN OPTIONS AVAILABLE TO THE USER. THEY ARE IMPLEMENTED BY RESPONDING TO 'YOUR MOVE' WITH A 0,# ,WHERE '#' IS A NUMBER FROM 0-10. COMMANDS 0,0 AND 0,5 ALLOW YOU TO SAVE THE CURRENT GAME ON THE DISK [0,5 SAVES IT WITH THE NAME DESIGNATED AT THE BEGINING OF THE GAME. 0,0 ALLOWS YOU TO CHANGE THE NAME OF THE DISK FILE]. IN THE EVENT YOU HAVE NO LEGAL MOVES, YOU MAY FORFEIT A MOVE AND LET YOUR OPPONENT TAKE AN EXTRA MOVE. THIS IS DONE BY THE COMMAND 0,1 [IF YOU USE THIS COMMAND AND THERE ARE LEGAL MOVES A LIST OF YOUR LEGAL MOVES WILL APPEAR]. COMMANDS 0,2 AND 0,3 ARE COMPLIMENTARY, COMMAND 0,3 EXCHANGES THE PIECES AND LETS YOU PLAY THE COMPUTERS CURRENT POSITION, AND, COMMAND 0,2 EXCHANGES THE PIECES BUT ALSO SWITCHES THE PLAY TO THE COMPUTER TO RETAIN THE PROPER CONTINUITY. COMMAND 0,4 ENDS THE GAME [FOR CHICKENS!!]. COMMAND 0,6 PITS THE COMPUTER AGAINST ITSELF [AUTO COMMAND]. COMMANDS 0,7 0,8 AND 0,9 ARE USED TO SET UP THE BOARD, MOVE A PIECE AND DELETE A PIECE RESPECTIVELY. TRY THEM THEY ARE SELF EXPLANATORY. FINALLY COMMAND 0,10 LISTS THE AVAILABLE COMMANDS IN CASE YOUR MEMORY BANK HAS A GLITCH. ************************** GOOD LUCK ********************************** NOTE THAT ALTHOUGH MITCH HAS PUT COPYRIGHT NOTICES INTO THE PROGRAM SOURCE, HE IS PERMITTING UN-RESTRICTED HOBBIEST EXCHANGE. PLEASE LEAVE THE NAME AND ADDRESS OF THE ORIGINATOR IN THE FILE. A.R.G. )+ï +`iN#F#^#V#~#fo}+ !y:!$0w# =>w!$ !$͇ ,0uddvC$0 ʅw#{{6  ͏   y s{Ybw#p#q#r! N#F!q#p2!q!q{9 ~#F#N#V!Y , <    *$A!6 # TI܀1r l7s,w,p,q,r!w>!w!~{_,~,,N,Vê~{_,~,N,VoG!qG{~{̀x!~wbG{ɯ{O!>w>^,G,N,V!~-w{ʌhxG..w.~ʷ<\Ìڷs_!~.w,^pC,^qK,^rS!~.~W-~O-~GҤGyOzW_.~wä_~W-~O-~G 3{bG!{ox{]!~.-qêG,N,V,^!~ȀGxw,~wyد{_zWyOxG. ZQHoxGyOzW{_--~wo_}W}O}G. xSAJS_}o5-{_zWyOxGF} !w!{^rx,t {_w!w!r!s_W!͟.͜.zYPFoOڰJSOҰ}o{_zWyOxGҰ{_zWyê!~w-~w-~wyy!Vw!dwz!Rw!`w{!Nw!\wx!Kw!Yw!gw!~,V,^B.N qkb_HJx}o|gz'}[kb_PH>}o|g{_>o|g{_>+6* |} !͌!ks͠!k̈́!ks@!os!k͠!o!o!osï!o͠ɯ!ow!"*M"o*O"q!"w կGOy !ss!k͠!oͽ*w!s!M7!os!M͠!s!o!oszWyOI܀1ŕ!Q͌!{s!Q͏ y !Qͽ́!{!{s̈́!Q!Q_!|~G{+s{É!{͠!{ͽ́!ksH!o͠!{ͽ!w,w͌͌5!M̈́5!s!Q͠_!~怰G{!{s!{͠!!{s!{ͽ!M͘!M!{̈́!{s!!{s!{͠!M!os!{͠!M!o!{s!{ͽ!ks !o4͠!{ͽ!{s!y~HPy !Uͽ!{![N,F-R !P o ![q,p6 c o c o ɗyOxGc ~O,~G-kZQHG}!w,6,xÛ!~ʼ {Ҽ .F,N,V.~ >xAJSɯGOW^P ,6!r{ !r\ ~# . _ !#w!iͽ.s,~HPy ..~ -Fp !w _ \ ~G_? xA ,~ _ G,~ X OxG{_ G!N!qx!ʌw!i~ >h ͽ>h -P ͌!s\ 6ʶ _x{ 6~!iڿ !^sè ͽ!^sæ ̈́!mҨ !~_ w>,w{!w !iͽ͏ \ wy > !~6" \ 6 -H 1 OW 3 >\ s!à>GOW< }DQ!s!^s,fkd   !e( IN LINE $ERROR $WARNING $1)1) ͱ1) ͧv!)q*)&  !)p+q / *#)#"#) *) *) *) *) *) *) *)0 *)!)p+q*) !)p+q*)))!)p+q!*6>!* !*60**&f ) )(ڵ **&f ) )(+s#r!*4Æ **M !*4x !*r+s+p+q+p+q*! *r+s+q+p+q* *+" *ͮ( **: *w**#"* !*p+q* *|O * *}O >!%)(=  Q *%)DMm !*p+q  Q **DM !*p+q  Q **DM *)#")*)")>͵(")!)(Ҡ >)(")*)")")!)(ھ *)")!*p+q)*Ϳ(!*p+q**N#FͿ / **N#Fa *)**q#p*)DM*)**)DM*)**)DM***)***)DM *)N#F*)**)~*)~*)>(*)>(*)#~*)#~!*q*)##:*w:ҫFO\ *)z *!"*)DM͎*) *)w*)##*)#w!*q*)**M*)͎!*q*)**M*)| ͎͡ *)n *ͬ!*p+q*)>w#6**|*)##w**}*) w*)DM͞*)*)Dn| >r{| >| >!!*p+q*))""*!"&*>"*(*"* ~*"*"*Ϳ(>͵("$**&*"&*> *(* *$*(*"**"*^#V""*Ó> *(MNA *&*!)*p+q>(*( !*(*DḾ",**,* 6*(**,*"0**,**0*N#Fq#p*,*N#F`i"2**,**0*s#r*2*s#r*0* 6*0*##"0**0**,*s#r*,*",**(* *,*!5*p+q>4*(#s#r"4**4* 6*4*##"4**4*^#V"4*>ͫ(*4* ~*4*"6**4*^#V"8**8*>(A*8* ~A*8**4*N#Fq#p`i"8**8**4*s#r!":*t *)"=**)"?*!<*6*)~!<*ڊ*)N#F*:*(+s#r":*| !<*4\*=*")*?*")*:*DMa *)~<_DM "=*"A**)*A* w#6!<*6*)~!<**A*##"A**)*A*N#Fq#p| !<*4͡ *)*=*s#r*)^#V"C*| *)^#V"G**C*N#F!F*q+6:F*!E*X| ͆*)*C*^#VN#F(*G* "G*!E*4'͆*C*G*(mBSA *C*##*G*DMa *)q#p*C*##"C*!I*q*)DM :I*3̀*)^#V"J**J*N#FͿ *J*N#F `i"L**L*~=w*J*N#Fͦ*)N#F `i"L*Ϳ 3*L*~/*L*#"L**L**L*~N*(¤>*N*~!P*q:P**)v **)6X| e | *)N#F͏<2Q*f*)N#F͏2R*:R*!Q*2S*f*)N#F*S*M "T*DM*Q*& *)N#F:Q*T*c(DM*R*& ~| ~*)*T*s#r:S*=*T*ẁɟqLSA X҂*)"X*Ì*)^#V"X*eҜ*)"V*æ*)^#V"V**V*~2[*!Z*6:[*!Z**V**X* >*V**X*~>*V*#"V**X*#"X*!Z*4²>~| ~!\*q!a*6:\*<rDH/SSA ͬ*)~2a*| r*)N#F͏!a*HDHl| ~*)>w#6ͬ*)*)N#F͏!a*#wҡ:\*š:b*<*)wá*):b*w:\*¶*)^#V"_*:\**):b*d(*)~͵("_**):a*d(+"_**_* O "]* _ *)*]* w| ~*)*]*s#r̀*)~!c*C*)DM͎!d*6>!d**c*M! ^#V*d*&*)~/w*d*&*)*d*&*)~`iw*d*&*)*d*&*)~`iw*d*&*)*d*&*)~`iwaq!d*4H>!c*| *)DM͞*))Q!e*6:e*<2e*O!) ~  *))q#p`i:e*w!") !"f**f*~ Y*f*+"f*F !")f*)Ϳ(ڂ*)N *)")b0*)^#V"h*>ͫ(!j*6*h*~!j**j*&*h**) w*)#")ͮ(@!j*4ž*) !*) ~!k*q!*) :k*wOOOOO$*) *)s#r>)(_FEA *)#")*)")*)")))Ϳ(ʈO*)+")<û  ¢#7/ҮM# *) 4 *) > *) 5O& WDA 7 *)")*)#")!)(/>)(!l*q&*)#"))(HVREA `ͽ/7Hz͖ *) 5*):l*w*)>ҔFMA *)~ͅO!) ^#V")>ͫ(ºUFA *)N!) ^#V")&*)")")$*) ^#V")"*) ^#V")G  0 EMA !o*6:o*<2o*O!) >(5 ")*o*&)) q#p&*)")G *)#"m*  *)^#V"p**p*##~:ž*p*#>*)w*p*~==2r**p*##"p*å*p*~2r*> !r*ҳ!r*6 *p*#"p*!s*6RO*p* ~.!r*:s*Hÿ*p**m*DM*s*& R!r**s*&*p**m*!s*:r*_ *)$*) q#p| *)"*) N#Fq#p| :s*<2s**)")*)")͙!")!)6| &/ҊURA XrHҞRIA *)N#F +q#p-ͽ*)}*)#~H_(*)|l_&}(!9g("v**)^}("t*!v*͑(*t* "z**)#^l&}("x**x*}*t*|v*c(͟(H !~*s>z*p(*) +")<!z*͛(#s#r *) :~*ʄ vECA  *) :~*w*|*} *) w| ңͽ͖/Ү͖*)~ºM*)~!*q:*:)/,3!)6*)^#V"***~2*:*!*5"3N!*6:*!*:**~")EQA **N3N!*4:*J"3~| **#"*ͽ jECA *)DMͦ!*6:*<2*O>ڦ**&)) ^#V")>ͫ(ʣVxs@ ?  +) :-)ͧ!,)"})*,)& 6 *,)&,) })(| *)")II\ û *')#"')!)(DOA *')~*})#"})*})~:)n>P!|)DBDA ͖*|)&,) w f&cERA k*)~5:)z!:)†!|)6-2* šÌ:)¨!,)"):)¶*})"):)*')"):*"!*6,!*6":)*)#")-2*!*:*+~ H!|)4-2*:*":-2*,:* H:͡ ͇*):|)!|)ҝ*|)M*)0*) ͎ð:)«ð*)6 )a  0* )"!)")* )")+"')* )")*)")`"))")*)")")*)*)Ϳ(*DM *))))Ϳ( *)"**)>(**q#p**##>w#6** w#6**^#V"***>w#6**##*)s#r*)~Ҵ ͡ *)#*) w*)>?*)#w*)~Ү .t Q(*)N!' ^#VQ(Q(Q(D ZD\ Q(N!D!*)r *E!y"!ENA E!*)*)*)| ͎Q(OOͩQ(OOͩQ(OOͩQ(O/OͩQ(O/OͩQ(O/OͩQ(&Q(&Q(&Q(.Q(͏ | Q(| Q(͡ Q(Q(͏| | Q(rOͩQ(rOͩQ(rOͩQ(r/OͩQ(r/OͩQ(r/OͩQ(͏| | Q(͡ t *)*)s#r*)n&")̀Q(Q(t ͡ *)##*)q#p*)^#V")Q(*)N#F `i")| Q(BQ(Q(/"wQ(͆| Q(͆~| Q(g|ZQ(gZQ(#͡ Q(*)*)^N| | Q(!)6wQ(!)6>Q(ͿQ(ͿQ(Q(͡ t *)N#F*)*t Q(*)+"')Q( Q(/Ҕ#>Q(Q(Q(@Q(!*6**& ) )Ϳ(#!*4ë#!~ :*#@#**& ) ^#V")Q(iQ(D#i$*)##")| Q(UQ(BQ(*)DM͎Q(!)6*)")ʹQ(!)6>Q(!)6wQ(&[$͖ [$P$<Q(&~$*)++)(~$ 3h$ 3 3<Q(͙V*)N!) >w#6*)N!) w#6| Q(*)#>wQ(*)DM͎*)DM͞Q(͡ *) *͡ *[DM!Q(r/2*D/Oͩ:*% Q( Q( Q(Q(͡  |  ͡ NT%ZTA Q( Q( *)>(҃%*)>(+s#rg%*)N#F ! +s#r)(/>(Hҳ%@*)^#V")| Q(Q(͡ ́DM!Q(*#)"[Q(Q(͡ >)(DM!Q( *)NO!Q(*)^#V"*>ͫ(**~H<&CAA **#~2*~**M!Q(ͬ "***6*)**# w*)**s#r̀Q(Q(*)N#F͏2*~**M!Q(Q(Q():)$I$a$$$$$$%!%)%1%\%d%%%%%%&&S&&&&&&&''''B'J'm'}'t  N#Fog_og_ogDM!>))Ҍ( =„(^#V) •(^#V|g}o Ÿ(_{ozgO{ozgi`N#Fogo&og_{_z#W712A0D47 :100D16002A7C4FCDC60B2A0D2D4FCDC60B3E0031 :100D26002129CDP728D23D0D01950BCD510C2A71 :100D36002529444DCD6D0CCDD60BC921102A702B1B :100D460071CD0B019F0BCD510C2A0F2A444DCDE8 :100D56000E0DCD0E01C921122A702B71CDD60B01B5 :100D6600A60BCD510C2A112A444DCD0E0DC92A17BA :100D76002923221729C92A1529221329EB3E04CD36 :100D8600B528221529EB211929CDDA28D2A00D3E46 :100D960004111B29CDCC28221529C92A132922156D :100DA6002911040019221329EB211B29CDDA28DA8F :100DB600BE0D2A1929221329C921142A702B711153 :100DC6001B2901132ACDBF289FC921162A7NI $BASIC-E INTERPRETER - VER 2.2$NM $1-1-+,,!/ͫ-"--Ϳ-")e-2-*ʦ+!-6e-:-<2-O!- Hqy$ʆ+h+*-M-0*- *-"-X+͉-*- "-)-Ϳ-" ))-Ϳ-" )͉-* ) " )*- )-+$+,͉-))* ) ")e-,:-3",e-*-w,*-#"- ,,:-6,S-.-S-,:-d,S-*-"-*-6S-e-a,S-*-4O,,S-:-6:-7H:-^H:-HҰ,p-*- )͠-+s#r̀-,:-.,p-*-^#V))* +s#r̀-+v!.p+q*.DMQ    *. 6I*. 6N*. 6T*. #-+,*. *-#"-!͸-R-!"-$-R-*-6*-*- w*-#"-.-*-~2-e-*-#we-*-w*-##"-e-O`iͲ-e-_N#Fog{ozg) ²-{ozgi`N#FogC2A712A134B :100ED600290E02CDDF012A1C2A4D2A1329\60 :100EE600D201CD8E0EC9211D2A712A1329EB0E02BD :100EF600CDDF012A1D2A4D2A1529EBCDD201CD7C45 :100F06000DCD8E0EC9CDA10D2A1329EB016E0BCD89 :100F16002A010E03CDEC0ECDAC0EC9211F2A702B73 :100F2600712A13293E00772336002A1E2A7C2A13AB :100F3600292323772A1E2A7D)+ï +`iN#F#^#V#~#fo}+ !y:!$0w# =>w!$ !$͇ ,0uddvC$0 ʅw#{{6  ͏   y s{Ybw#p#q#r! N#F!q#p2!q!q{9 ~#F#N#V!Y , <    *$A!6 # TI܀1r l7s,w,p,q,r!w>!w!~{_,~,,N,Vê~{_,~,N,VoG!qG{~{̀x!~wbG{ɯ{O!>w>^,G,N,V!~-w{ʌhxG..w.~ʷ<\Ìڷs_!~.w,^pC,^qK,^rS!~.~W-~O-~GҤGyOzW_.~wä_~W-~O-~G 3{bG!{ox{]!~.-qêG,N,V,^!~ȀGxw,~wyد{_zWyOxG. ZQHoxGyOzW{_--~wo_}W}O}G. xSAJS_}o5-{_zWyOxGF} !w!{^rx,t {_w!w!r!s_W!͟.͜.zYPFoOڰJSOҰ}o{_zWyOxGҰ{_zWyê!~w-~w-~wyy!Vw!dwz!Rw!`w{!Nw!\wx!Kw!Yw!gw!~,V,^B.N qkb_HJx}o|gz'}[kb_PH>}o|g{_>o|g{_>+6* |} !͌!ks͠!k̈́!ks@!os!k͠!o!o!osï!o͠ɯ!ow!"*M"o*O"q!"w կGOy !ss!k͠!oͽ*w!s!M7!os!M͠!s!o!oszWyOI܀1ŕ!Q͌!{s!Q͏ y !Qͽ́!{!{s̈́!Q!Q_!|~G{+s{É!{͠!{ͽ́!ksH!o͠!{ͽ!w,w͌͌5!M̈́5!s!Q͠_!~怰G{!{s!{͠!!{s!{ͽ!M͘!M!{̈́!{s!!{s!{͠!M!os!{͠!M!o!{s!{ͽ!ks !o4͠!{ͽ!{s!y~HPy !Uͽ!{![N,F-R !P o ![q,p6 c o c o ɗyOxGc ~O,~G-kZQHG}!w,6,xÛ!~ʼ {Ҽ .F,N,V.~ >xAJSɯGOW^P ,6!r{ !r\ ~# . _ !#w!iͽ.s,~HPy ..~ -Fp !w _ \ ~G_? xA ,~ _ G,~ X OxG{_ G!N!qx!ʌw!i~ >h ͽ>h -P ͌!s\ 6ʶ _x{ 6~!iڿ !^sè ͽ!^sæ ̈́!mҨ !~_ w>,w{!w !iͽ͏ \ wy > !~6" \ 6 -H 1 OW 3 >\ s!à>GOW< }DQ!s!^s,fkd   !e( IN LINE $ERROR $WARNING $1)1) ͱ1) ͧv!)q*)&  !)p+q / *#)#"#) *) *) *) *) *) *) *)0 *)!)p+q*) !)p+q*)))!)p+q!*6>!* !*60**&f ) )(ڵ **&f ) )(+s#r!*4Æ **M !*4x !*r+s+p+q+p+q*! *r+s+q+p+q* *+" *ͮ( **: *w**#"* !*p+q* *|O * *}O >!%)(=  Q *%)DMm !*p+q  Q **DM !*p+q  Q **DM *)#")*)")>͵(")!)(Ҡ >)(")*)")")!)(ھ *)")!*p+q)*Ϳ(!*p+q**N#FͿ / **N#Fa *)**q#p*)DM*)**)DM*)**)DM***)***)DM *)N#F*)**)~*)~*)>(*)>(*)#~*)#~!*q*)##:*w:ҫFO\ *)z *!"*)DM͎*) *)w*)##*)#w!*q*)**M*)͎!*q*)**M*)| ͎͡ *)n *ͬ!*p+q*)>w#6**|*)##w**}*) w*)DM͞*)*)Dn| >r{| >| >!!*p+q*))""*!"&*>"*(*"* ~*"*"*Ϳ(>͵("$**&*"&*> *(* *$*(*"**"*^#V""*Ó> *(MNA *&*!)*p+q>(*( !*(*DḾ",**,* 6*(**,*"0**,**0*N#Fq#p*,*N#F`i"2**,**0*s#r*2*s#r*0* 6*0*##"0**0**,*s#r*,*",**(* *,*!5*p+q>4*(#s#r"4**4* 6*4*##"4**4*^#V"4*>ͫ(*4* ~*4*"6**4*^#V"8**8*>(A*8* ~A*8**4*N#Fq#p`i"8**8**4*s#r!":*t *)"=**)"?*!<*6*)~!<*ڊ*)N#F*:*(+s#r":*| !<*4\*=*")*?*")*:*DMa *)~<_DM "=*"A**)*A* w#6!<*6*)~!<**A*##"A**)*A*N#Fq#p| !<*4͡ *)*=*s#r*)^#V"C*| *)^#V"G**C*N#F!F*q+6:F*!E*X| ͆*)*C*^#VN#F(*G* "G*!E*4'͆*C*G*(mBSA *C*##*G*DMa *)q#p*C*##"C*!I*q*)DM :I*3̀*)^#V"J**J*N#FͿ *J*N#F `i"L**L*~=w*J*N#Fͦ*)N#F `i"L*Ϳ 3*L*~/*L*#"L**L**L*~N*(¤>*N*~!P*q:P**)v **)6X| e | *)N#F͏<2Q*f*)N#F͏2R*:R*!Q*2S*f*)N#F*S*M "T*DM*Q*& *)N#F:Q*T*c(DM*R*& ~| ~*)*T*s#r:S*=*T*ẁɟqLSA X҂*)"X*Ì*)^#V"X*eҜ*)"V*æ*)^#V"V**V*~2[*!Z*6:[*!Z**V**X* >*V**X*~>*V*#"V**X*#"X*!Z*4²>~| ~!\*q!a*6:\*<rDH/SSA ͬ*)~2a*| r*)N#F͏!a*HDHl| ~*)>w#6ͬ*)*)N#F͏!a*#wҡ:\*š:b*<*)wá*):b*w:\*¶*)^#V"_*:\**):b*d(*)~͵("_**):a*d(+"_**_* O "]* _ *)*]* w| ~*)*]*s#r̀*)~!c*C*)DM͎!d*6>!d**c*M! ^#V*d*&*)~/w*d*&*)*d*&*)~`iw*d*&*)*d*&*)~`iw*d*&*)*d*&*)~`iwaq!d*4H>!c*| *)DM͞*))Q!e*6:e*<2e*O!) ~  *))q#p`i:e*w!") !"f**f*~ Y*f*+"f*F !")f*)Ϳ(ڂ*)N *)")b0*)^#V"h*>ͫ(!j*6*h*~!j**j*&*h**) w*)#")ͮ(@!j*4ž*) !*) ~!k*q!*) :k*wOOOOO$*) *)s#r>)(_FEA *)#")*)")*)")))Ϳ(ʈO*)+")<û  ¢#7/ҮM# *) 4 *) > *) 5O& WDA 7 *)")*)#")!)(/>)(!l*q&*)#"))(HVREA `ͽ/7Hz͖ *) 5*):l*w*)>ҔFMA *)~ͅO!) ^#V")>ͫ(ºUFA *)N!) ^#V")&*)")")$*) ^#V")"*) ^#V")G  0 EMA !o*6:o*<2o*O!) >(5 ")*o*&)) q#p&*)")G *)#"m*  *)^#V"p**p*##~:ž*p*#>*)w*p*~==2r**p*##"p*å*p*~2r*> !r*ҳ!r*6 *p*#"p*!s*6RO*p* ~.!r*:s*Hÿ*p**m*DM*s*& R!r**s*&*p**m*!s*:r*_ *)$*) q#p| *)"*) N#Fq#p| :s*<2s**)")*)")͙!")!)6| &/ҊURA XrHҞRIA *)N#F +q#p-ͽ*)}*)#~H_(*)|l_&}(!9g("v**)^}("t*!v*͑(*t* "z**)#^l&}("x**x*}*t*|v*c(͟(H !~*s>z*p(*) +")<!z*͛(#s#r *) :~*ʄ vECA  *) :~*w*|*} *) w| ңͽ͖/Ү͖*)~ºM*)~!*q:*:)/,3!)6*)^#V"***~2*:*!*5"3N!*6:*!*:**~")EQA **N3N!*4:*J"3~| **#"*ͽ jECA *)DMͦ!*6:*<2*O>ڦ**&)) ^#V")>ͫ(ʣVxs@ ?  +) :-)ͧ!,)"})*,)& 6 *,)&,) })(| *)")II\ û *')#"')!)(DOA *')~*})#"})*})~:)n>P!|)DBDA ͖*|)&,) w f&cERA k*)~5:)z!:)†!|)6-2* šÌ:)¨!,)"):)¶*})"):)*')"):*"!*6,!*6":)*)#")-2*!*:*+~ H!|)4-2*:*":-2*,:* H:͡ ͇*):|)!|)ҝ*|)M*)0*) ͎ð:)«ð*)6 )a  0* )"!)")* )")+"')* )")*)")`"))")*)")")*)*)Ϳ(*DM *))))Ϳ( *)"**)>(**q#p**##>w#6** w#6**^#V"***>w#6**##*)s#r*)~Ҵ ͡ *)#*) w*)>?*)#w*)~Ү .t Q(*)N!' ^#VQ(Q(Q(D ZD\ Q(N!D!*)r *E!y"!ENA E!*)*)*)| ͎Q(OOͩQ(OOͩQ(OOͩQ(O/OͩQ(O/OͩQ(O/OͩQ(&Q(&Q(&Q(.Q(͏ | Q(| Q(͡ Q(Q(͏| | Q(rOͩQ(rOͩQ(rOͩQ(r/OͩQ(r/OͩQ(r/OͩQ(͏| | Q(͡ t *)*)s#r*)n&")̀Q(Q(t ͡ *)##*)q#p*)^#V")Q(*)N#F `i")| Q(BQ(Q(/"wQ(͆| Q(͆~| Q(g|ZQ(gZQ(#͡ Q(*)*)^N| | Q(!)6wQ(!)6>Q(ͿQ(ͿQ(Q(͡ t *)N#F*)*t Q(*)+"')Q( Q(/Ҕ#>Q(Q(Q(@Q(!*6**& ) )Ϳ(#!*4ë#!~ :*#@#**& ) ^#V")Q(iQ(D#i$*)##")| Q(UQ(BQ(*)DM͎Q(!)6*)")ʹQ(!)6>Q(!)6wQ(&[$͖ [$P$<Q(&~$*)++)(~$ 3h$ 3 3<Q(͙V*)N!) >w#6*)N!) w#6| Q(*)#>wQ(*)DM͎*)DM͞Q(͡ *) *͡ *[DM!Q(r/2*D/Oͩ:*% Q( Q( Q(Q(͡  |  ͡ NT%ZTA Q( Q( *)>(҃%*)>(+s#rg%*)N#F ! +s#r)(/>(Hҳ%@*)^#V")| Q(Q(͡ ́DM!Q(*#)"[Q(Q(͡ >)(DM!Q( *)NO!Q(*)^#V"*>ͫ(**~H<&CAA **#~2*~**M!Q(ͬ "***6*)**# w*)**s#r̀Q(Q(*)N#F͏2*~**M!Q(Q(Q():)$I$a$$$$$$%!%)%1%\%d%%%%%%&&S&&&&&&&''''B'J'm'}'t  N#Fog_og_ogDM!>))Ҍ( =„(^#V) •(^#V|g}o Ÿ(_{ozgO{ozgi`N#Fogo&og_{_z#W712A0D47 :100D16002A7C4FCDC60B2A0D2D4FCDC60B3E0031 :100D26002129CDP728D23D0D01950BCD510C2A71 :100D36002529444DCD6D0CCDD60BC921102A702B1B :100D460071CD0B019F0BCD510C2A0F2A444DCDE8 :100D56000E0DCD0E01C921122A702B71CDD60B01B5 :100D6600A60BCD510C2A112A444DCD0E0DC92A17BA :100D76002923221729C92A1529221329EB3E04CD36 :100D8600B528221529EB211929CDDA28D2A00D3E46 :100D960004111B29CDCC28221529C92A132922156D :100DA6002911040019221329EB211B29CDDA28DA8F :100DB600BE0D2A1929221329C921142A702B711153 :100DC6001B2901132ACDBF289FC921162A7NI $BASIC-E INTERPRETER - VER 2.3$NM $1-1-+,,!/ͫ-"--Ϳ-")e-2-*ʦ+!-6e-:-<2-O!- Hqy$ʆ+h+*-M-0*- *-"-X+͉-*- "-)-Ϳ-" ))-Ϳ-" )͉-* ) " )*- )-+$+,͉-))* ) ")e-,:-3",e-*-w,*-#"- ,,:-6,S-.-S-,:-d,S-*-"-*-6S-e-a,S-*-4O,,S-:-6:-7H:-^H:-HҰ,p-*- )͠-+s#r̀-,:-.,p-*-^#V))* +s#r̀-+v!.p+q*.DMQ    *. 6I*. 6N*. 6T*. #-+,*. *-#"-!͸-R-!"-$-R-*-6*-*- w*-#"-.-*-~2-e-*-#we-*-w*-##"-e-O`iͲ-e-_N#Fog{ozg) ²-{ozgi`N#FogC2A712A134B :100ED600290E02CDDF012A1C2A4D2A1329\60 :100EE600D201CD8E0EC9211D2A712A1329EB0E02BD :100EF600CDDF012A1D2A4D2A1529EBCDD201CD7C45 :100F06000DCD8E0EC9CDA10D2A1329EB016E0BCD89 :100F16002A010E03CDEC0ECDAC0EC9211F2A702B73 :100F2600712A13293E00772336002A1E2A7C2A13AB :100F3600292323772A1E2A7)-ï -`iN#F#^#V#~#fo}+ !y:!$0w# =>w!$ʹ!$y-1uddvC$0 ʅw#{{6  ́  ks{ F O u r w#p#q#r! N#F!q#p2!q!q{& ~#F#N#V!Y , <    *$A!6 # TI܀1r hV*+^B:e,w>2T:T=2T:+O+0 Z*+*+!^bB!b"+!Z"+O2V"+"+!V>:[2U:[>2U!+:+=2+_>E!+:+_"X2W%*X:WG>.Q+.:WG:_F x *X:WG :_` x *X ڐ>.ʆ>0 :+=2++n:+=2+ >0µ+:+=2+>.ʮ  Ö:+=2++>.ʵ  ù!+:+_GK61:+<2+ >0 Z#:+=G2+B :+<2+_!+6 Í:U5>914607>0>5697~#B~+K!Gs,w,p,q,r!w>!w!~{_,~,,N,Vê~{_,~,N,VoG!qG{~{̀x!~wbG{ɯ{O!>w>^,G,N,V!~-w{ʌhxG..w.~ʷ<\Ìڷs_!~.w,^pC,^qK,^rS!~.~W-~O-~GҤGyOzW_.~wä_~W-~O-~G 3{bG!{ox{]!~.-qêG,N,V,^!~ȀGxw,~wyد{_zWyOxG. ZQHoxGyOzW{_--~wo_}W}O}G. xSAJS_}o5-{_zWyOxGF} !w!{^rx,t {_w!w!r!s_W!͟.͜.zYPFoOڰJSOҰ}o{_zWyOxGҰ{_zWyê!~w-~w-~wyy!Vw!dwz!Rw!`w{!Nw!\wx!Kw!Yw!gw!~,V,^B.N qkb_HJx}o|gz'}[kb_PH>}o|g{_>o|g{_>+kZQHG}!w,6,xÛ!~ʮ{Ү.F,N,V.~ >xAJSɯGOW^B ,6!r{!rN ~  Q!#w!iͽ.s,~HPk..~-Fp!wQN ~G_1x3,~ QG,~ JOxG{QG!N!qx!ʌw!ip>Zͽ>Z-B ͌!sN 6ʨ_x{6~!iڱڽ!^sÚͽ!^sØ̈́!mҚ!~_w>,w{!w !iͽ́N wk>!~6 N 6-: # OW % >N s!à>GOW. }DQ!s!^s,fk 1` >-  ( \͌!X s͠!X ̈́!X s@!\ s!X ͠!\ !\ !\ sʿ Ü !\ ͠ɯ!\ w! *: "\ *< "^ ! "d  կGOk!` s!X ͠!\ ͽ*d !` !: $ !\ s!: ͠!` !\ !\ szWyO I܀1ŕ!> ͌!h s!> ́k!> ͽ́!h !h s̈́!>  ʭ !> _!i ~G{+s{v !h ͠!h ͽ́!X sH !\ ͠!h ͽ !w,w͌͌" !: q " !l s!> ͠_!m ~怰G{!h s!h ͠!l !h s!h ͽ!: ͅ !: !h q !h s!l !h s!h ͠!: !\ s!h ͠!: !\ !h s!h ͽ!X s  !\ 4͠!h ͽ!h s!f ~HPk!B ͽ!h ![N,F-? != \ ![q,p6 P \ P \ ɗyOxGP ~O,~G-d - gA>͞ IN LINE $ERROR $WARNING $1+1+ ͱ!1+"ͧv!+q*+&  !+p+q / *#+#"#+ *+ *+ *+ *+ *+ *+ *+0*+!+p+q*+ !+p+q*+))!+p+q!,6>!,!,60*,&f ) +*ڵ*,&f ) +*+s#r!,4Æ*,M !,4x!,r+s+p+q+p+q,! ,r+s+q+p+q* ,+" ,ͮ* *,: ,w*,#",!,p+q* ,|O * ,}O >!%+*= Q*%+DMm !,p+q  Q*,DM!,p+q  Q*,DM*+#"+*+"+>͵*"+!+*Ҡ>+*"+*+"+"+!+*ھ*+"+!,p+q+,Ϳ*!,p+q*,N#FͿ/*,N#Fa*+*,q#p*+DM*+**+DM*+**+DM,**+,**+DM*+N#F*+**+~*+~*+>**+>**+#~*+#~!,q*+##:,w:ҫFO\*+z *!"*+DM͎*+ *+w*+##*+#w!,q*+*,M*+͎!,q*+*,M*+|͎͡*+n *ͬ!,p+q*+>w#6*,|*+##w*,}*+ w*+DM͞*+*+Dn|>r{|>|>!!,p+q*)+"",!"&,>",**", ~*",",Ϳ*>͵*"$,*&,"&,> ,** ,$,**",*",^#V"",Ó> ,*MNA*&,!),p+q>(,* !*(,DḾ",,*,, 6*(,*,,"0,*,,*0,N#Fq#p*,,N#F`i"2,*,,*0,s#r*2,s#r*0, 6*0,##"0,*0,*,,s#r*,,",,*(,*,,!5,p+q>4,*#s#r"4,*4, 6*4,##"4,*4,^#V"4,>ͫ**4, ~*4,"6,*4,^#V"8,*8,>*A*8, ~A*8,*4,N#Fq#p`i"8,*8,*4,s#r!":,t*+"=,*+"?,!<,6*+~!<,ڊ*+N#F*:,*+s#r":,|!<,4\*=,"+*?,"+*:,DMa*+~<_DM "=,"A,*+*A, w#6!<,6*+~!<,*A,##"A,*+*A,N#Fq#p|!<,4͡*+*=,s#r*+^#V"C,|*+^#V"G,*C,N#F!F,q+6:F,!E,X|͆*+*C,^#VN#F**G, "G,!E,4'͆*C,G,*mBSA*C,##*G,DMa *+q#p*C,##"C,!I,q*+DM:I,3̀*+^#V"J,*J,N#FͿ*J,N#F `i"L,*L,~=w*J,N#Fͦ*+N#F `i"L,Ϳ3*L,~/*L,#"L,*L,*L,~N,*¤>*N,~!P,q:P,*+v **+6X|e|*+N#F͏<2Q,f*+N#F͏2R,:R,!Q,2S,f*+N#F*S,M "T,DM*Q,&*+N#F:Q,T,c*DM*R,&~|~*+*T,s#r:S,=*T,ẁɟqLSAX҂*+"X,Ì*+^#V"X,eҜ*+"V,æ*+^#V"V,*V,~2[,!Z,6:[,!Z,*V,*X, >*V,*X,~>*V,#"V,*X,#"X,!Z,4²>~|~!\,q!a,6:\,<rDH/SSAͬ*+~2a,|r*+N#F͏!a,HDHl|~*+>w#6ͬ*+*+N#F͏!a,#wҡ:\,š:b,<*+wá*+:b,w:\,¶*+^#V"_,:\,*+:b,d**+~͵*"_,*+:a,d*+"_,*_, O "], _*+*], w|~*+*],s#r̀*+~!c,C*+DM͎!d,6>!d,*c,M! ^#V*d,&*+~/w*d,&*+*d,&*+~`iw*d,&*+*d,&*+~`iw*d,&*+*d,&*+~`iwaq!d,4H>!c,|*+DM͞q+Q!e,6:e,<2e,O!+ ~  *++q#p`í!"+ !"f,*f,~ Y*f,+"f,F !"+f,+Ϳ*ڂ*+N *+"+b0*+^#V"h,>ͫ*!j,6*h,~!j,*j,&*h,*+ w*+#"+ͮ*@!j,4ž*+!*+ ~!k,q!*+ :k,wOOOOO$*+ *+s#r>+*_FEA*+#"+*+"+*+"+++Ϳ*ʈO*++"+<û ¢#7/ҮM# *+ 4 *+ > *+ 5O&WDA 7 *+"+*+#"+!+*/>+*!l,q&*+#"++*HVREA`ͽ/7Hz͖ *+ 5*+:l,w*+>ҔFMA*+~ͅO!+ ^#V"+>ͫ*ºUFA*+N!+ ^#V"+&*+"+"+$*+ ^#V"+"*+ ^#V"+G0EMA!o,6:o,<2o,O!+ >*5 "+*o,&+) q#p&*+"+G*+#"m,  *+^#V"p,*p,##~:ž*p,#>*+w*p,~==2r,*p,##"p,å*p,~2r,> !r,ҳ!r,6 *p,#"p,!s,6RO*p, ~.!r,:s,Hÿ*p,*m,DM*s,&R!r,*s,&*p,*m,!s,:r,_*+$*+ q#p|*+"*+ N#Fq#p|:s,<2s,*+"+*+"+͙!"+!+6|&/ҊURAXrHҞRIA*+N#F +q#p-ͽ*+}*+#~H_**+|l_&}*!9g*"v,*+^}*"t,!v,͑**t, "z,*+#^l&}*"x,*x,}*t,|v,c*͟*H !~,s>z,p**+ +"+<!z,͛*#s#r *+ :~,ʄvECA *+ :~,w*|,} *+ w|ңͽ͖/Ү͖*+~ºM*+~!,q:,:+/,3!+6*+^#V",*,~2,:,!,5"3N!,6:,!,:*,~")EQA*,N3N!,4:,J"3~|*,#",ͽjECA*+DMͦ!,6:,<2,O>ڦ*,&+) ^#V"+>ͫ*ʣVxs@ ?  ++ :-+ͧ!,+"}+*,+& 6 *,+&,+ }+*|*+"+II\û *'+#"'+!+* DOA*'+~*}+#"}+*}+~:+n >P!|+D BDA͖*|+&,+ w f &c ERAk *+~5 :+z ! :+†  !|+6- 2, š Ì :+¨ !,+"+:+¶ *}+"+:+ *'+"+:," !,6, !,6":+ *+#"+- 2,!,:,+~ H!!|+4- 2, :,":!- 2,,:, H:!!͇͡ *+:|+!|+ҝ!*|+M*+0*+ ͎ð!:+«!ð!*+6!"+a0* +"!+"+* +"++"'+* +"+*+"+`")+"+*+"+"+*+*+Ϳ**DM*++)+Ϳ**+",*+>**,q#p*,##>w#6*, w#6*,^#V",*,>w#6*,##*+s#r*+~Ҵ"͡*+#*+ w*+>?*+#w*+~Ү".tQ**+N!) ^#VQ*Q*Q*D"ZD\Q*N#D#*+r *E#y"#ENAE#*+*+*+|͎Q*OOͩQ*OOͩQ*OOͩQ*O/OͩQ*O/OͩQ*O/OͩQ*&Q*&Q*&Q*.Q*͏|Q*|Q*͡Q*Q*͏||Q*rOͩQ*rOͩQ*rOͩQ*r/OͩQ*r/OͩQ*r/OͩQ*͏||Q*͡t*+*+s#r*+n&"+̀Q*Q*t͡*+##*+q#p*+^#V"+Q**+N#F `i"+|Q*BQ*Q*/$w!Q*͆|Q*͆~|Q*g|ZQ*gZQ*%͡Q**+*+^N||Q*!+6w!Q*!+6>!Q*ͿQ*ͿQ*Q*͡t*+N#F*+*tQ**++"'+Q* Q*/Ҕ%>!Q*Q*Q*@Q*!,6*,& ) +Ϳ*%!,4ë%!~ :,%@%*,& ) ^#V"+Q*iQ*D%i&*+##"+|Q*UQ*BQ**+DM͎Q*!+6*+"+ʹQ*!+6>!Q*!+6w!Q*&[&͖ [&P&<Q*&~&*++++*~& 3h& 3 3<Q*͙V*+N!+ >w#6*+N!+ w#6|Q**+#>wQ**+DM͎*+DM͞Q*͡*+ *͡*[DM!Q*r/2,D/Oͩ:,' Q* Q* Q*Q*͡ | ͡NT'ZTAQ* Q* *+>*҃'*+>*+s#rg'*+N#F ! +s#r+*/>*Hҳ'@*+^#V"+|Q*Q*́͡DM!Q**#+"[Q*Q*͡>+*DM!Q* *+NO!Q**+^#V",>ͫ**,~H<(CAA*,#~2,~*,M!Q*ͬ ",*,6*+*,# w*+*,s#r̀Q*Q**+N#F͏2,~*,M!Q*Q*Q*+:+&I&a&&&&&&'!')'1'\'d''''''((S((((((())))B)J)m)})t"N#Fog_og_ogDM!>))Ҍ* =„*^#V) •*^#V|g}o Ÿ*_{ozgO{ozgi`N#Fogo&og_{_z#W1149 :100FC6001B2B01132CCDBFNI $BIC-E INTERPRETER - VER 2.2$N $1P1-+,,!/ͫ-"--Ϳ-")e-2-*ʦ+!-6e-:-<2-O!- Hqy$ʀh+*-M-0*- *-"-X+͉-*- "-)-Ϳ-" ))-Ϳ-" )͉-* ) " )*- )-+$+,͉-))* ) ")e-,:-3",e-*-w,*-#"- ,,:-6,S-.-S-,:-d,S-*-"-*-6S-e-a,S-*-4O,,S-:-6:-7H:-^H:-HҰ,p-*- )͠-+s#r̀-,:-.,p-*-^#V))* +s#r̀-+v!.p+q*.DMQ    *. 6I*NI $BASIC-E INTERPRETER: VER K2.0$NM $1/1/-..!1ͫ/"//Ϳ/"+e/2/*ʦ-!/6e/:/<2/O!/ Hqy$ʆ-h-*/M/0*/ */"/X-͉/*/ "/+/Ϳ/" ++/Ϳ/" +͉/* + " +*/ +/-$-.͉/))* + "+e/.:/3".e/*/w.*/#"/ ..:/6.S/./S/.:/d.S/*/"/*/6S/e/a.S/*/4O..S/:/6:/7H:/^H:/HҰ.p/*/ +͠/+s#r̀/.:/..p/*/^#V))* +s#r̀/-v!0p+q*0DMQ   *0 6I*0 6N*0 6T*0 #/-.*0 */#"/!͸/R/!"/$/R/*/6*/*/ w*/#"/./*/~2/e/*/#we/*/w*/##"/e/O`iͲ/e/_N#Fog{ozg) ²/{ozgi`N#FogC702B6C :10118600712A2922222C21000022262C3E0011\:10119600222CCDCC2AB5CAF4110104002A222C092E :1011A6007EFE00C2E7112A222CEB01222CCDBF2A9B :1011B600EB3E05CDB52A22242CEB2A262C19222615 :1011C6002C3E0011202CCDCC2AB5CAE71111050002 :1011D6002A202C1911242CCDCF2ADAE7112A222C09 :1011E600C92A222C5E2356EB2222 REM--------------------------------------------------------- REM S T A R T R E K REM--------------------------------------------------------- DIM GALAXY(8,8), GALAXY$(8,8), C(9,2), KLING(3,3), GMAP(8,8) DIM DAMAGE(8), QUAD.NAME$(16), SEGMENT$(4), DAM$(8) DIM PRINT.QUAD(3) ESC$=CHR$(27) EN$=ESC$+" " IVB$=EN$ BLNK$=EN$ BELL$=CHR$(7) NORM$=EN$+" " EMPTY$="." BASE$="B" KLINGON$="K" ENTERPRISE$="E" STAR$="*" CRUD$="?" FIRST.TIME.FLAG=1 DOT$="........................" PRINT PRINT TAB(20);"S T A R T R E K" PRINT 240 INPUT " ENTER YOUR NAME, CAPTAIN: "; CAPTAIN$ PRINT PRINT "WELCOME ABOARD CAPTAIN: ";CAPTAIN$ PRINT TAB(15);"DO YOU WANT INSTRUCTIONS"; INPUT ANS$ RANDOMIZE IF LEFT$(ANS$,1)="Y" THEN GOSUB 999999 PRINT CHR$(26) PRINT "MISSION ADVISORY: "; PRINT "STAND BY" LET T=INT(RND*20+20)*100 T0=T T9=26+INT(RND*8+1) DOCKED=0 ENERGY.NORMAL=3000 ENERGY=ENERGY.NORMAL TORPS=10 TORPS.NORMAL=TORPS SHIELD.NORMAL=200 SHIELDS=SHIELD.NORMAL+10 FOR I=1 TO 8 FOR J=1 TO 8 GALAXY$(I,J)=EMPTY$ NEXT J NEXT I REM-----------F U N C T I O N S--------------------- DEF FN8=INT(RND*8+1) DEF FNROUND(D)=INT(D+.5) DEF FND=SQR((ABS(KLING(I,1)-SX))^2+(ABS(KLING(I,2)-SY))^2) REM *** INITIALIZE ENTERPRISE'S POSITION QX=FN8 QY=FN8 EX=FN8 EY=FN8 SX=EX SY=EY C(3,1)=-1 C(2,1)=-1 C(4,1)=-1 C(4,2)=-1 C(5,2)=-1 C(6,2)=-1 C(1,2)=1 C(2,2)=1 C(6,1)=1 C(7,1)=1 C(8,1)=1 C(8,2)=1 C(9,2)=1 FOR I=1 TO 8 LET DAMAGE(I)=(INT(RND*30+1)/10) NEXT I DAM$(1)="WARP ENGINES" DAM$(2)="SHORT RANGE SENSORS" DAM$(3)="LONG RANGE SENSORS" DAM$(4)="PHASER CONTROL" DAM$(5)="PHOTON TORPEDO TUBES" DAM$(6)="DAMAGE CONTROL" DAM$(7)="SHIELD CONTROL" DAM$(8)="COMPUTER" QUAD.NAME$(01)="ANTARES" QUAD.NAME$(02)="SIRIUS" QUAD.NAME$(03)="RIGEL" QUAD.NAME$(04)="DENEB" QUAD.NAME$(05)="PROCYON" QUAD.NAME$(06)="CAPELLA" QUAD.NAME$(07)="VEGA" QUAD.NAME$(08)="BETELGEUSE" QUAD.NAME$(09)="CANOPUS" QUAD.NAME$(10)="ALDEBARAN" QUAD.NAME$(11)="ALTAIR" QUAD.NAME$(12)="REGULUS" QUAD.NAME$(13)="SAGITTARIUS" QUAD.NAME$(14)="ARCTURUS" QUAD.NAME$(15)="POLLUX" QUAD.NAME$(16)="SPICA" SEGMENT$(1)=" I" SEGMENT$(2)=" II" SEGMENT$(3)=" III" SEGMENT$(4)=" IV" TOT.BASES=0 TOT.KLINGONS=0 REM *** SET UP WHAT EXISTS IN GALAXY. FOR I=1 TO 8 FOR J=1 TO 8 R1=RND IF R1>.98 THEN \ KLINGONS=3 :\ GOTO 900 IF R1>.95 THEN \ KLINGONS=2 :\ GOTO 900 IF R1>.8 THEN \ KLINGONS=1 :\ GOTO 900 KLINGONS=0 900 REM TOT.KLINGONS=TOT.KLINGONS+KLINGONS IF RND>.96 THEN \ BASES=1 :\ ELSE \ BASES=0 TOT.BASES=TOT.BASES+BASES STARS=FN8 GALAXY(I,J)=KLINGONS*100+BASES*10+STARS GMAP(I,J)=0 NEXT J NEXT I K7=TOT.KLINGONS IF TOT.BASES>0 THEN \ GOTO 1200 X=FN8 Y=FN8 GALAXY(X,Y)=GALAXY(X,Y)+10 REM ADD A BASE BASES=1 TOT.BASES=BASES 1200 REM IF TOT.BASES=1 THEN \ A$=" IS " :\ B$="" :\ ELSE \ A$=" ARE " :\ B$="S" PRINT "YOUR ORDERS ARE AS FOLLOWS:" PRINT "DESTROY THE ";TOT.KLINGONS;"KLINGON WARSHIPS WHICH HAVE INVADED" PRINT "THE GALAXY BEFORE THEY CAN ATTACK FEDERATION HEADQUARTERS" PRINT "ON STARDATE ";T0+T9;". THIS GIVES YOU ";T9;"DAYS. THERE"; PRINT A$ PRINT TOT.BASES;"STARBASE";B$;" IN THE GALAXY FOR RESUPPLYING YOUR SHIP." PRINT PRINT " TYPE 'GO' WHEN READY TO ASSUME COMMAND." INPUT RAND$ 1320 REM----------ENTER NEW QUADRANT-------------------- FOR J=1 TO 8 FOR I=1 TO 8 GALAXY$(I,J)=EMPTY$ NEXT I NEXT J KLINGONS=0 BASES=0 STARS=0 GALAXY$(EX,EY)=ENTERPRISE$ G5=0 GOSUB 9030 REM GET QUADRANT NAME PRINT IF FIRST.TIME.FLAG=1 THEN \ FIRST.TIME.FLAG=0 :\ PRINT "YOUR MISSION BEGINS WITH YOUR STARSHIP LOCATED" :\ PRINT "IN THE GALACTIC QUADRANT: ";QUADRANT$; :\ ELSE \ PRINT "NOW ENTERING QUADRANT: ";QUADRANT$ 1500 PRINT X=GALAXY(QX,QY)*.01 KLINGONS=INT(X) BASES=INT((X-KLINGONS)*10) STARS=GALAXY(QX,QY)-INT(GALAXY(QX,QY)*.1)*10 IF KLINGONS>0 THEN \ PRINT "COMBAT AREA ";BLNK$;"KLINGON ALERT" IF SHIELDS<=SHIELD.NORMAL THEN \ PRINT "WARNING: LOW SHIELDS" FOR X=1 TO 3 FOR Y=1 TO 3 KLING(X,Y)=0 NEXT Y NEXT X 1600 REM IF KLINGONS=0 THEN \ GOTO 1705 FOR X=1 TO KLINGONS GOSUB 9500 REM FIND EMPTY SECTOR GALAXY$(SX,SY)=KLINGON$ KLING(X,1)=SX KLING(X,2)=SY KLING(X,3)=SHIELD.NORMAL NEXT X 1705 REM IF BASES=0 THEN \ GOTO 1710 FOR X=1 TO BASES GOSUB 9500 REM FIND EMPTY SECTOR GALAXY$(SX,SY)=BASE$ BX=SX BY=SY NEXT X 1710 REM IF STARS<=0 THEN \ GOTO 1980 FOR X=1 TO STARS GOSUB 9500 REM FIND EMPTY SECTOR GALAXY$(SX,SY)=STAR$ NEXT X 1980 GOSUB 6430 REM SHORT RANGE SENSOR RTN 1990 IF SHIELDS+ENERGY<=10 OR (DAMAGE(7)<0 AND ENERGY<=10) THEN \ PRINT BLNK$;"**FATAL ERROR**" :\ PRINT "YOU'VE JUST STRANDED YOUR SHIP IN SPACE!" :\ PRINT "YOU HAVE INSUFFICIENT MANEUVERING ENERGY AND" :\ PRINT "SHIELD CONTROL IS PRESENTLY INCAPABLE OF CROSS-" :\ PRINT "CIRCUITING TO THE ENGINE ROOM!" :\ GOTO 6260 2060 REM-----C O M M A N D-------------------------------- IF T>T0+T9 THEN \ GOTO 6220 REM YOU LOSE! PRINT CAPTAIN$;": "; INPUT COMMAND$ IF LEFT$(COMMAND$,1)="N" THEN GOTO 2300 IF LEFT$(COMMAND$,1)="S" THEN GOTO 1980 IF LEFT$(COMMAND$,1)="L" THEN GOTO 4000 IF LEFT$(COMMAND$,1)="P" THEN GOTO 4260 IF LEFT$(COMMAND$,1)="T" THEN GOTO 4700 IF LEFT$(COMMAND$,1)="E" THEN GOTO 5530 IF LEFT$(COMMAND$,1)="D" THEN GOTO 5690 IF LEFT$(COMMAND$,1)="C" THEN GOTO 7290 IF LEFT$(COMMAND$,1)="Q" THEN GOTO 6270 PRINT "ENTER ONE OF THE FOLLOWING:" PRINT "N-AVIGATE" PRINT "S-HORT RANGE SCAN" PRINT "L-ONG RANGE SCAN" PRINT "P-HASERS" PRINT "T-ORPEDOS" PRINT "E-NGINEERING" PRINT "D-AMAGE CONTROL" PRINT "C-OMPUTER" PRINT "Q-UIT" PRINT GOTO 2060 REM**********> COURSE CONTROL BEGINS HERE. 2300 PRINT "COURSE (1-9) "; INPUT COURSE IF COURSE>=1 AND COURSE<=9 THEN \ GOTO 2350 PRINT "LT. SULU:"; PRINT " INCORRECT COURSE DATA, SIR." GOOF1=GOOF1+.1 IF RND+GOOF1>.85 THEN \ PRINT "MISSION ADVISORY: ";:\ PRINT "CAPTAIN ";CAPTAIN$;", I STRONGLY SUGGEST YOU GET YOURSELF" :\ PRINT "ORGANIZED BEFORE THE KLINGONS BLAST US TO SMITHEREENS." GOTO 2300 2350 REM-----COURSE IS OK----- 2380 PRINT "WARP FACTOR (0-8) "; INPUT WARP IF WARP>=0 AND WARP<=8 THEN \ GOTO 2450 REM WARP OK PRINT "ENGINEERING OFCR SCOTT:"; PRINT "THE ENGINES WON'T TAKE WARP ";WARP;"!" GOOF2=GOOF2+.1 IF RND+GOOF2>.85 THEN \ PRINT "MISSION ADVISORY: "; :\ PRINT "WARP ";WARP;"! WHAT A GALACTIC JACKASS!" GOTO 2350 2450 REM------- IF DAMAGE(1)>=0 THEN \ GOTO 2490 PRINT DAM$(1);" DAMAGED" IF WARP>.2 THEN \ PRINT "MAXIMUM WARP: 0.2" :\ GOTO 2350 2490 REM E.NEEDED=FNROUND(WARP*8) IF ENERGY-E.NEEDED>=0 THEN GOTO 2590 PRINT "ENGINEERING OFCR SCOTT:"; PRINT "NOT ENOUGH ENERGY LEFT" IF SHIELDS KLINGONS MOVE/FIRE ON MOVING STARSHIP . . IF KLINGONS=0 THEN \ GOTO 2750 2590 REM FOR I=1 TO KLINGONS IF KLING(I,3)<=0 THEN GOTO 2700 GALAXY$(KLING(I,1),KLING(I,2))=EMPTY$ GOSUB 9500 REM FIND EMPTY SECTOR KLING(I,1)=SX KLING(I,2)=SY GALAXY$(KLING(I,1),KLING(I,2))=KLINGON$ 2700 NEXT I 2750 REM GOSUB 6000 REM KLINGONS SHOOT D1=0 D6=INT(WARP*10)/10 REM****> MAKE REPAIRS TO THE SHIP. 2770 FOR I=1 TO 8 IF DAMAGE(I)>=0 THEN GOTO 2880 DAMAGE(I)=DAMAGE(I)+D6 IF DAMAGE(I)<0 THEN GOTO 2880 IF D1=0 THEN \ D1=1 :\ PRINT "DAMAGE CONTROL REPORT" PRINT TAB(8); PRINT DAM$(I); PRINT TAB(32);"REPAIR COMPLETED" 2880 NEXT I REM--------> DAMAGE/IMPROVEMENT DURING SOME VES IF RND>.2 THEN GOTO 3070 R1=FN8 IF RND>=.6 THEN GOTO 3000 DAMAGE(R1)=DAMAGE(R1)-INT((RND*5+1)*10)/10 PRINT PRINT "DAMAGE CONTROL REPORT:" PRINT DAM$(R1); PRINT TAB(32);"DAMAGED" PRINT GOTO 3070 3000 REM DAMAGE(R1)=DAMAGE(R1)+INT((RND*3+1)*10)/10 PRINT PRINT "DAMAGE CONTROL REPORT:" PRINT DAM$(R1); PRINT TAB(32);"STATE OF REPAIR IMPROVED" PRINT 3070 REM-----BEGIN MOVING STARSHIP--------------------- GALAXY$(EX,EY)=EMPTY$ T.CRSE=INT(COURSE) DELTA.X=C(T.CRSE,1)+(C(T.CRSE+1,1)-C(T.CRSE,1))*(COURSE-INT(COURSE)) X=EX Y=EY TEMP.EX=EX TEMP.EY=EY DELTA.Y=C(T.CRSE,2)+(C(T.CRSE+1,2)-C(T.CRSE,2))*(COURSE-INT(COURSE)) OLD.QX=QX OLD.QY=QY FOR I=1 TO E.NEEDED X=X+DELTA.X Y=Y+DELTA.Y EX=FNROUND(X) EY=FNROUND(Y) IF EX<1 OR \ EX>8 OR \ EY<1 OR \ EY>8 THEN \ GOTO 3500 IF GALAXY$(EX,EY)=EMPTY$ THEN \ LAST.X=0 :\ LAST.Y=0 :\ GOTO 3360 OBJECT$=GALAXY$(EX,EY) IF OBJECT$=KLINGON$ THEN OBJECT$="KLINGON" IF OBJECT$=STAR$ THEN OBJECT$="STAR" IF OBJECT$=BASE$ THEN OBJECT$="STARBASE" IF OBJECT$=CRUD$ THEN OBJECT$="SPACECRUD" EX=FNROUND(X-DELTA.X) EY=FNROUND(Y-DELTA.Y) PRINT "LT SULU:"; PRINT " EMERGENCY STOP!" PRINT PRINT "MISSION ADVISORY: "; PRINT "WE ALMOST RAMMED RIGHT INTO THAT ";OBJECT$;" AT "; PRINT "WARP ";WARP;"!!" GOOF3=GOOF3+.1 IF RND+GOOF3>.75 THEN \ PRINT "CAPTAIN ";CAPTAIN$;", DON'T YOU THINK IT'S TIME" :\ PRINT "YOU RECONSIDER THAT DESK JOB AT FEDERATION HQ?" GOTO 3370 3360 NEXT I 3370 REM------PUT THE ENTERPRISE IN ITS NEW PLACE----- GALAXY$(EX,EY)=ENTERPRISE$ GOSUB 3910 REM SUBTRACT THE ENERGY NEEDED T8=1 IF WARP<1 THEN \ T8=.1*INT(10*WARP) T=T+T8 IF T>T0+T9 THEN GOTO 6220 GOTO 1980 REM SEE IF DOCKED THEN GET COMMAND 3500 REM-----EXCEEDED QUADRANT LIMITS---------------- X=8*QX+TEMP.EX+E.NEEDED*DELTA.X Y=8*QY+TEMP.EY+E.NEEDED*DELTA.Y QX=INT(X/8) QY=INT(Y/8) EX=INT(X-QX*8) EY=INT(Y-QY*8) PERIMETER.FLAG=0 IF EX=0 THEN \ QX=QX-1 :\ EX=8 IF EY=0 THEN \ QY=QY-1 :\ EY=8 IF QX<1 THEN \ QX=1:EX=1 :\ PERIMETER.FLAG=1 IF QX>8 THEN \ QX=8:EX=8 :\ PERIMETER.FLAG=1 IF QY<1 THEN \ QY=1:EY=1 :\ PERIMETER.FLAG=1 IF QY>8 THEN \ QY=8:EY=8 :\ PERIMETER.FLAG=1 IF PERIMETER.FLAG=0 THEN \ GOTO 3860 PRINT "LT. UHURA:" PRINT "STARFLEET COMMAND REPORTS:" PRINT "'PERMISSION TO CROSS GALACTIC PERIMETER" PRINT "IS ";BLNK$;"*DENIED*";NORM$;". SHUT DOWN YOUR ENGINES." PRINT "ENGINEERING OFCR SCOTV:"; PRINT "WARP ENGINES SHUT DOWN" PRINT "AT SECTOR ";EX;EY;" OF QUADRANT ";QX;QY;"." IF T>T0+T9 THEN GOTO 6220 3860 REM IF QX=OLD.QX AND QY=OLD.QY THEN \ GOTO 3370 T=T+1 GOSUB 3910 REM SUBTRACT THE NEEDED ENERGY GOTO 1320 REM ANNOUNCE THE NEW QUADRANT 3910 REM---------> MANEUVER ENERGY S/R ENERGY=ENERGY-E.NEEDED-10 IF ENERGY>=0 THEN GOTO 3980 PRINT "SHIELD CONTROL SUPPLIED ENERGY TO COMPLETE THE MANEUVER." IF RND>.6 THEN GOTO 3911 PRINT "MISSION ADVISORY: "; PRINT "CAPTAIN ";CAPTAIN$; IF RND>.5 THEN PRINT " THAT WAS EXTREMELY CLOSE EVEN FOR THE ENTERPRISE" :\ ELSE \ PRINT " WE'RE GOING TO NEED THOSE SHIELDS BEFORE LONG, YOU KNOW.'" 3911 REM SHIELDS=SHIELDS+ENERGY ENERGY=0 IF SHIELDS<0 THEN \ SHIELDS=0 3980 RETURN 4000 REM-----------> LONG RANGE SENSOR SCAN CODE IF DAMAGE(3)<0 THEN \ PRINT DAM$(3);" DAMAGED" :\ GOTO 1990 4030 PRINT DAM$(3);" SCAN FOR QUADRANT ";QX;QY PRINT FOR J=QY-1 TO QY+1 Q=0 FOR I=QX-1 TO QX+1 Q=Q+1 IF I<1 OR I>8 OR J<1 OR J>8 THEN \ PRINT.QUAD(Q)=0 :\ ELSE \ PRINT.QUAD(Q)=GALAXY(I,J) :\ GMAP(I,J)=GALAXY(I,J) NEXT I FOR Q=1 TO 3 IF PRINT.QUAD(Q)=0 THEN 4100 YYY=Q*6 IF PRINT.QUAD(Q)<100 THEN YYY=YYY+1 IF PRINT.QUAD(Q)<10 THEN YYY=YYY+1 PRINT ;TAB(YYY);PRINT.QUAD(Q); 4040 NEXT Q PRINT : PRINT NEXT J PRINT GOTO 1990 4100 PRINT ;TAB(Q*6);"***"; GOTO 4040 4260 REM----------> PHASER CONTROL BEGINS HERE SX=EX SY=EY IF KLINGONS=0 THEN \ PRINT "MISSION ADVISORY: "; :\ PRINT "SENSORS SHOW NO ENEMY SHIPS IN THIS QUADRANT" :\ GOTO 1990 IF DAMAGE(4)<0 THEN \ PRINT DAM$(4);" DAMAGED" :\ GOTO 1990 IF DAMAGE(8)<0 THEN \ PRINT DAM$(8);" MALFUNCTION REDUCES ACCURACY" 4350 PRINT "PHASERS LOCKED ON TARGET; " 4360 PRINT "ENERGY AVAILABLE = ";ENERGY PRINT "NUMBER OF UNITS TO FIRE: "; INPUT RATE.OF.FIRE IF RATE.OF.FIRE<=0 THEN GOTO 1990 IF RATE.OF.FIRE>ENERGY THEN GOTO 4360 ENERGY=ENERGY-RATE.OF.FIRE GOSUB 6000 REM KLINGONS SHOOT IF DAMAGE(7)<0 OR DAMAGE(4)<1 THEN \ DRAIN=RND :\ RATE.OF.FIRE=RATE.OF.FIRE*DRAIN :\ DRAIN=INT((1-DRAIN)*100) :\ PRINT "MISSION ADVISORY: "; :\ PRINT DRAIN;"% OF PHASER POWER WAS DIVERTED TO DAMAGE CONTROL" 4450 TOTAL.HIT=INT(RATE.OF.FIRE/KLINGONS) FOR I=1 TO 3 IF KLING(I,3)<=0 THEN GOTO 4670 HIT=INT((TOTAL.HIT/FND)*(RND+1.5)) IF HIT<.15*KLING(I,3) THEN \ PRINT "SENSORS SHOW NO DAMAGE "; :\ PRINT "TO ENEMY AT ";KLING(I,1);KLING(I,2) :\ GOTO 4670 4530 KLING(I,3)=KLING(I,3)-HIT*(RND+.3) PRINT HIT;" UNIT HIT ON KLINGON AT SECTOR ";KLING(I,1);KLING(I,2) IF KLING(I,3)<=0 THEN GOTO 4580 IF RND>.7 THEN \ PRINT "SENSORS SHOW ";KLING(I,3);" UNITS REMAINING" GOTO 4670 4580 PRINT BELL$; BLNK$;" << KLINGON DESTROYED >>" KLINGONS=KLINGONS-1 TOT.KLINGONS=TOT.KLINGONS-1 GALAXY$(KLING(I,1),KLING(I,2))=EMPTY$ GALAXY(QX,QY)=KLINGONS*100+BASES*10+STARS IF GMAP(QX,QY)<>0 THEN \ GMAP(QX,QY)=GALAXY(QX,QY) IF TOT.KLINGONS<=0 THEN GOTO 6370 4670 NEXT I GOTO 1990 4700 REM---------> PHOTON TORPEDO CODE BEGINS GOSUB 6000 REM KLINGONS SHOOT SX=EX SY=EY IF DAMAGE(5)<0 THEN \ PRINT DAM$(5);" DAMAGED" :\ GOTO 1990 IF TORPS<=0 THEN \ PRINT "ALL PHOTON TORPEDOES EXPENDED" :\ GOTO 1990 4760 PRINT "TORPEDO COURSE (1-9) "; INPUT COURSE IF COURSE<1 OR COURSE>9 THEN \ PRINT "ENSIGN CHEKOV:"; :\ PRINT "INCORRECT COURSE DATA, SIR!" :\ ON FNROUND(RND)+1 GOTO 1990, 4760 T.CRSE=INT(COURSE) 4850 DELTA.X=C(T.CRSE,1)+(C(T.CRSE+1,1)-C(T.CRSE,1))*(COURSE-INT(COURSE)) DELTA.Y=C(T.CRSE,2)+(C(T.CRSE+1,2)-C(T.CRSE,2))*(COURSE-INT(COURSE)) ENERGY=ENERGY-2 X=SX Y=SY TORPS=TORPS-1 PRINT "TORPEDO TRACK---> "; 4920 X=X+DELTA.X Y=Y+DELTA.Y ROUND.X=FNROUND(X) ROUND.Y=FNROUND(Y) IF ROUND.X<1 OR \ ROUND.X>8 OR \ ROUND.Y<1 OR \ ROUND.Y>8 THEN \ PRINT "TORPEDO MISSED" :\ GOTO 5500 PRINT " ";ROUND.X;ROUND.Y; IF GALAXY$(ROUND.X,ROUND.Y)=EMPTY$ THEN \ GOTO 4920 IF GALAXY$(ROUND.X,ROUND.Y)=KLINGON$ THEN \ GOTO 5100 IF GALAXY$(ROUND.X,ROUND.Y)=STAR$ THEN \ GOTO 5210 IF GALAXY$(ROUND.X,ROUND.Y)=BASE$ THEN \ GOTO 5280 IF GALAXY$(ROUND.X,ROUND.Y)=CRUD$ THEN \ GOTO 4920 GOTO 4920 REM DEFENSIVE PROGRAMMING 5100 REM-----HIT A KLINGON-------------------------- PRINT BELL$;BLNK$;"<< KLINGON DESTROYED >>" ON FN8 GOTO 5177, 5177, 5177, 5177, 5177, 5176, 5178, 5178 5176 REM PRINT "EXCELLENT WORK WITH THE TORPEDOES, CAPTAIN." GOTO 5177 5178 REM PRINT "MISSION ADVISORY: "; PRINT "VERY GOOD SHOOTING, CAPTAIN ";CAPTAIN$ 5177 REM GALAXY$(X,Y)=EMPTY$ KLINGONS=KLINGONS-1 TOT.KLINGONS=TOT.KLINGONS-1 IF TOT.KLINGONS<=0 THEN GOTO 6370 FOR I=1 TO 3 IF ROUND.X<>KLING(I,1) THEN GOTO 5180 IF ROUND.Y=KLING(I,2) THEN GOTO 5190 5180 NEXT I 5190 KLING(I,3)=0 GOTO 5430 5210 REM-----HIT A STAR------------------------ PRINT "STAR AT ";ROUND.X;ROUND.Y;" ABSORBED TORPEDO ENERGY" IF RND>.7 THEN GOTO 5214 PRINT "COMMAND INQUIRY: "; PRINT "WAS IT YOUR INTENTION TO WASTE A VALUABLE" PRINT "TORPEDO ON THAT STAR, CAPTAIN?" 5214 REM GOTO 5500 5280 REM------HIT A STARBASE------------------- PRINT BELL$;IVB$;">> STARBASE DESTROYED <<" BASES=BASES-1 TOT.BASES=TOT.BASES-1 GALAXY$(X,Y)=EMPTY$ IF TOT.BASES>0 THEN GOTO 5400 PRINT "MISSION ADVISORY: "; PRINT "CAPTAIN ";CAPTAIN$;" I'M AFRAID THAT YOU HAVE BLOWN IT" GOTO 6270 5400 PRINT "STARFLEET COMMAND IS REVIEWING YOUR RECORD TO CONSIDER" PRINT "A GENERAL COURT-MARTIAL." DOCKED=0 5430 REM-------END OF ENTERPRISE SHOOTING------- GALAXY(QX,QY)=KLINGONS*100+BASES*10+STARS IF GMAP(QX,QY)<>0 THEN \ GMAP(QX,QY)=GALAXY(QX,QY) 5500 REM IF RND>.7 THEN \ GOSUB 6000 REM KLINGONS MAY SHOOT AGAIN GOTO 1990 5530 REM---------SHIELD CONTROL STARTS HERE----------------- IF DAMAGE(7)<0 THEN \ PRINT DAM$(7);" DAMAGED" :\ GOTO 1990 5560 PRINT "ENERGY AVAILABLE=";ENERGY+SHIELDS PRINT "DIVERT TO SHIELDS "; INPUT DIVERTED IF DIVERTED<0 OR DIVERTED=SHIELDS THEN \ PRINT "SHIELDS UNCHANGED" :\ GOTO 1990 IF DIVERTED>SHIELDS+ENERGY THEN \ PRINT "CAN'T DIVERT" :\ GOTO 5560 ENERGY=ENERGY+SHIELDS-DIVERTED SHIELDS=DIVERTED PRINT "DEFLECTOR CONTROL ROOM REPORT: "; PRINT "SHIELDS NOW AT ";SHIELDS GOTO 1990 5690 REM------------DAMAGE CONTROL STARTS HERE---------------- IF DOCKED=1 THEN GOTO 5710 IF DAMAGE(6)<0 THEN \ PRINT DAM$(6);" DAMAGED" :\ GOTO 1990 GOSUB 5910 REM PRINT DAMAGE RPT GOTO 1990 5710 REM----------D O C K E D------------------------------ D3=0 FOR I=1 TO 8 IF DAMAGE(I)>=.7 THEN GOTO 5760 D3=D3+.5 5760 NEXT I IF D3=0 THEN GOTO 1990 D3=D3+(.5*RND) IF D3>1 THEN \ D3=RND 5810 REM PRINT "TECHS STANDING BY TO REPAIR THE SHIP." PRINT "ESTIMATED TIME: ";D3;"STARDATES" PRINT "AUTHORIZE (Y/N) "; INPUT A$ IF LEFT$(A$,1)<>"Y" THEN GOTO 1990 FOR I=1 TO 8 5815 REM IF DAMAGE(I)<=.7 THEN \ DAMAGE(I)=DAMAGE(I)+1 :\ GOTO 5815 NEXT I T=T+D3+.1 GOSUB 5910 REM PRINT DAMAGE RPT GOTO 1990 5910 REM-----PRINT DAMAGE RPT--------------------- PRINT PRINT " DEVICE";TAB(27);"CONDITION" FOR X=1 TO 8 PRINT DAM$(X);TAB(30);DAMAGE(X) NEXT X PRINT RETURN 6000 REM-------------KLINGONS SHOOTING ROUTINE------------ SX=EX SY=EY IF KLINGONS<=0 THEN GOTO 6210 IF DOCKED=1 THEN \ PRINT "STARBASE SHIELDS PROTECT THE ENTERPRISE" :\ RETURN FOR I=1 TO 3 IF KLING(I,3)<=0 THEN GOTO 6200 HIT=INT((KLING(I,3)/FND)*(2+RND)) SHIELDS=SHIELDS-INT(HIT*RND) PRINT BELL$;"----> ";HIT;" UNIT HIT ON ENTERPRISE FROM SECTOR "; PRINT KLING(I,1);KLING(I,2) GOOF4=GOOF4+.1 IF RND+GOOF4>.7 THEN \ PRINT "SHIELDS DOWN TO ";SHIELDS;"UNITS" IF HIT<20 OR \ HIT/SHIELDS<.02 THEN \ GOTO 6200 GOSUB 6100 REM DAMAGE RTN IF SHIELDS<0 THEN \ GOSUB 6100 6200 REM NEXT I 6210 RETURN 6100 REM------DAMAGE TO ENTERPRISE-------------------------- TEMP=SHIELDS IF SHIELDS<=0 THEN TEMP=1 NEW.DAMAGE=HIT/TEMP+.5*RND NEW.DAMAGE=INT(NEW.DAMAGE*10)/10 R1=FN8 DAMAGE(R1)=DAMAGE(R1)-NEW.DAMAGE PRINT "DAMAGE CONTROL REPORTS" PRINT DAM$(R1);TAB(32);" DAMAGED" RETURN 6220 PRINT "IT IS STARDATE ";T GOTO 6270 6240 PRINT PRINT "THE ENTERPRISE HAS BEEN DESTROYED." PRINT " THE FEDERATION WILL BE CONQUERED." 6260 PRINT "IT IS STARDATE ";T 6270 PRINT "THERE WERE ";TOT.KLINGONS;" KLINGON BATTLE CRUISERS LEFT AT THE" PRINT " END OF YOUR MISSION." 6290 PRINT PRINT PRINT "THE FEDERATION IS IN NEED OF A NEW STARSHIP COMMANDER" PRINT "FOR A SIMILAR MISSION -- IF THERE IS A VOLUNTEER," PRINT "LET HIM STEP FORWARD AND ENTER 'AYE'."; INPUT A$ IF LEFT$(A$,1)="A" THEN 240 PRINT "STARBASE TO ENTERPRISE: "; PRINT "WE ARE TERMINATING COMMUNICATIONS" STOP 6370 PRINT "CONGRATULATIONS, CAPTAIN! THE LAST KLINGON BATTLE CRUISER" PRINT "MENACING THE FEDERATION HAS BEEN DESTROYED." PRINT PRINT "YOUR EFFICIENCY RATING IS ";(K7/(T-T0))*1000 PRINT PRINT "MISSION ADVISORY: "; PRINT "CONFIDENTIALLY SPEAKING, CAPTAIN ";CAPTAIN$;", I BELIEVE" PRINT "THAT THE PERFORMANCE YOU HAVE JUST GIVEN ON THE " PRINT "FIELD OF BATTLE HAS BEEN SO COMMENDABLE AS TO VIRTUALLY" PRINT "ASSURE THAT YOUR NAME WILL COME UP ON THE FEDERATION" PRINT "NAVY PROMOTION LIST QUITE SOON. EVEN THOUGH I AM AN" PRINT "UNEMOTIONAL VULCAN, I WAS PROFOUNDLY STIRRED BY YOUR" PRINT "DEMONSTRATION OF SKILL AND JUDGMENT'" PRINT GOTO 6290 6430 REM------------SHORT RANGE SENSOR AND STARTUP SUBRTN.---------- SX=EX SY=EY FOR J=SY-1 TO SY+1 FOR I=SX-1 TO SX+1 IF I<1 OR I>8 OR \ J<1 OR J>8 THEN \ GOTO 6540 IF GALAXY$(I,J)=BASE$ THEN \ GOTO 6580 6540 NEXT I NEXT J DOCKED=0 GOTO 6650 6580 DOCKED=1 CONDITION$="DOCKED" IF LAST.X=EX AND LAST.Y=EY THEN \ GOTO 6720 LAST.X=EX LAST.Y=EY TEMP=ENERGY.NORMAL-333+100*FN8 IF TEMP>ENERGY THEN \ ENERGY=TEMP TEMP=TORPS.NORMAL-3+FN8 IF TEMP>TORPS THEN \ TORPS=TEMP PRINT "MISSION ADVISORY: "; PRINT "CAPTAIN ";CAPTAIN$;":" PRINT "WE HAVE DROPPED OUR SHIELDS FOR DOCKING" PRINT "WE ARE RELOADING ";TORPS;" TORPEDOES" PRINT "OUR ENERGY IS BEING REPLENISHED TO ";ENERGY;" UNITS" SHIELDS=0 GOTO 6720 6650 REM-----GET CONDITION CODE----------------- CONDITION$="GREEN" IF ENERGY1 THEN \ CONDITION$="RED !! <---" 6720 REM-----SENSOR OK?----------------- IF DAMAGE(2)<0 THEN \ PRINT DAM$(2);" DAMAGED !! <---" :\ RETURN 6770 REM---------------------------- PRINT DASH$ J=1 GOSUB 6800 PRINT " " J=2 GOSUB 6800 PRINT TAB(25);"STARDATE";TAB(50);T J=3 GOSUB 6800 PRINT TAB(25);"CONDITION";TAB(50);CONDITION$ J=4 GOSUB 6800 PRINT TAB(25);"QUADRANT";TAB(50);QX;QY J=5 GOSUB 6800 PRINT TAB(25);"SECTOR";TAB(50);EX;EY J=6 GOSUB 6800 PRINT TAB(25);"TOTAL ENERGY";TAB(50);ENERGY+SHIELDS J=7 GOSUB 6800 PRINT TAB(25);"PHOTON TORPEDOES";TAB(50);TORPS J=8 GOSUB 6800 PRINT TAB(25);"SHIELDS";TAB(50);SHIELDS PRINT DASH$ 7270 RETURN 6800 REM-------PRINT A LINE OF GALAXY------ FOR I=1 TO 8 PRINT GALAXY$(I,J);" "; NEXT I RETURN 7290 REM-----------LIBRARY COMPUTER CODE BEGINS HERE ------- IF DAMAGE(8)<0 THEN \ PRINT DAM$(8);" DAMAGED" :\ GOTO 1990 7320 REM INPUT "ENTER COMPUTER CODE: "; COMPUTER.CODE IF COMPUTER.CODE<1 OR COMPUTER.CODE>6 THEN \ GOSUB 7450 :\ GOTO 7320 ON COMPUTER.CODE GOTO 7400, 7900, 8070, 8500, 8150, 7350 GOSUB 7450 REM PRINT WHAT'S AVAILABLE GOTO 7320 7350 GOSUB 9030 PRINT QUADRANT$ : PRINT GOTO 1990 7450 PRINT "FUNCTIONS AVAILABLE FROM LIBRARY-COMPUTER:" PRINT " 1 - CUMULATIVE GALACTIC RECORD" PRINT " 2 - STATUS REPORT" PRINT " 3 - PHOTON TORPEDO DATA" PRINT " 4 - STARBASE NAVIGATION DATA" PRINT " 5 - DIRECTION/DISTANCE CALCULATOR" PRINT " 6 - GALAXY 'REGION NAME' MAP" RETURN 7400 REM ------- CUMULATIVE GALACTIC RECORD CODE BEGINS.------ PRINT TAB(14);"T H E G A L A X Y" FOR X=1 TO 8 PRINT TAB(X*5+1); X; NEXT X PRINT " " PRINT FOR J=1 TO 8 PRINT J; FOR I=1 TO 8 XXX=I*5 IF GMAP(I,J)=0 THEN 7410 IF GMAP(I,J)<100 THEN XXX=XXX+1 IF GMAP(I,J)<10 THEN XXX=XXX+1 7410 IF GMAP(I,J)<>0 THEN PRINT TAB(XXX); GMAP(I,J); \ ELSE PRINT TAB(XXX); "???"; NEXT I PRINT NEXT J GOTO 1990 7900 REM ---------- STATUS REPORT RTN ------------------ PRINT PRINT TAB(15);"STATUS REPORT" X$="" IF TOT.KLINGONS=1 THEN GOTO 7940 X$="S" 7940 PRINT TOT.KLINGONS;" KLINGON"+X$+" LEFT" PRINT "MISSION MUST BE COMPLETED IN ";(T0+T9)-T;" STARDATES" IF TOT.BASES=0 THEN PRINT "NO STARBASES LEFT" : GOTO 7941 IF TOT.BASES=1 THEN PRINT "1 STARBASE LEFT" : GOTO 7941 PRINT TOT.BASES;" STARBASES LEFT" 7941 GOTO 1990 8070 REM---------- TORPEDO DATA, BASE NAV, D/D CALCULATOR------ H8=0 FOR I=1 TO 3 IF KLING(I,3)<=0 THEN GOTO 8480 W1=KLING(I,1) X=KLING(I,2) 8120 C1=SX A=SY GOTO 8220 8150 PRINT "DIRECTION/DISTANCE CALCULATOR:" PRINT " YOU ARE AT QUADRANT (";QX;QY;") SECTOR (";SX;SY;")" PRINT " PLEASE ENTER --->" PRINT " INITIAL COORDINATES (X,Y) "; INPUT C1,A PRINT " FINAL COORDINATES (X,Y) "; INPUT W1,X 8220 X=X-A A=C1-W1 IF X<0 THEN GOTO 8350 IF A<0 THEN GOTO 8410 IF X>0 THEN GOTO 8280 IF A=0 THEN GOTO 8370 8280 C1=1 8290 IF ABS(A)<=ABS(X) THEN GOTO 8330 V5=C1+(((ABS(A)-ABS(X))+ABS(A))/ABS(A)) PRINT TAB(10);"DIRECTION = ";V5 GOTO 8460 8330 PRINT TAB(10);"DIRECTION = ";C1+(ABS(A)/ABS(X)) GOTO 8460 8350 IF A>0 THEN GOTO 8390 IF X=0 THEN GOTO 8410 8370 C1=5 GOTO 8290 8390 C1=3 GOTO 8420 8410 C1=7 8420 IF ABS(A)>=ABS(X) THEN GOTO 8450 PRINT TAB(10);"DIRECTION = ";C1+((ABS(X)-ABS(A))+ABS(X))/ABS(X) GOTO 8460 8450 PRINT TAB(10);"DIRECTION = ";C1+(ABS(X)/ABS(A)) 8460 PRINT TAB(10);"DISTANCE = ";SQR(X*X+A*A) PRINT TAB(10);"WARP = "; IF ABS(A)>ABS(X) THEN PRINT ABS(A) ELSE PRINT ABS(X) IF H8=1 THEN GOTO 1990 8480 NEXT I GOTO 1990 8500 IF BASES<>0 THEN GOTO 8530 PRINT "MISSION ADVISORY: 'SENSORS SHOW NO STARBASES IN THIS QUADRANT.'" GOTO 1990 8530 PRINT "FROM ENTERPRISE TO STARBASE:" W1=BX X=BY GOTO 8120 9030 REM-----FIND QUADRANT NAME$-------------------------- QUAD=(QX*QY)/4 QUAD.INT=INT(QUAD) QUAD.FRAC=QUAD-QUAD.INT QUAD.REM=QUAD.FRAC*4+1 QUADRANT$=QUAD.NAME$(QUAD)+SEGMENT$(QUAD.REM) RETURN 9250 STOP 999999 REM-----PRINT THE INSTRUCTIONS--------------------- PRINT INST$="TREKINST" IF END #1 THEN 9300 FILE INST$ FOR X=1 TO 10 STEP 0 READ #1;INSTRUC$ PRINT INSTRUC$ Q=Q+1 IF Q=23 THEN \ Q=0 :\ PRINT " TYPE 'GO' TO CONTINUE" :\ INPUT RAND$ NEXT X 9300 REM PRINT PRINT " TYPE 'GO' TO CONTINUE" INPUT RAND$ CLOSE (1) RETURN 9500 REM-------FIND EMPTY SECTOR------------------------- SX=FN8 SY=FN8 IF GALAXY$(SX,SY)=EMPTY$ THEN \ RETURN GOTO 9500 BASIC-E THIS DISKETTE CONTAINS 2 VERSIONS OF THE BASIC-E COMPILER BAS2-0 AND BAS2-1, AND THREE VERSIONS OF THE RUN-TIME INTERPRETER RUNK2-0, RUN2-2 AND RUN2-3. THE BUGS AND RELATIVE MERITS ARE UNKNOWN. TRY THEM. NOTE THAT IN THESE VERSIONS, THE COMPILE TIME OPTIONS ARE PLACED IN THE COMMAND NOT IN THE FILE - EG "BAS2-1 WUMPUS $B" OTHELLO IS OVERFLOW BASIC-E PROGRAM FROM VOLUME 5 MICROSOFT BASIC (AND SIMILAR) THE FILES ???????.ASC ARE ASCII SOURCES OF PROGRAMS WRITTEN IN MICROSOFT - TYPE BASIC. PROBABLY NEEDS LITTLE PATCHING FOR DEC PDP11 EXTENDED BASIC, TDL AND OTHERS. THE SUFFIX ASC IS USED TO DISTINGUISH THEM FROM THE TOKEN FILES WITH BINARY LINE NUMBERS, WHICH HAVE .BAS SUFFICES. v uKERNEL.HEX o@x#%qɚ1g75?FX c66//hG o33垆~ P1E amYhG௿7 tOC=HW~ FEضm,!?G rOC]=H'}(<˻ѐZ;~!{S#=vt\#֭v}w5{ҐF?-e+PQͶUO.0h?gnm>hkc"ɞ\7 I!G${rK@|Xg/#proJ뮍{ \qo9 L|L#|n^p[6o܀|:+Ӆm?+.||ٻ- #!=sؘ؜FPQ ||f?۲P Z #Cz+gsbĹ/`\ FPՐ2alej3#_[5&V cܶ-bd?_hLa-~oN|@nb^|"# 3j)Y}_•kOOIJGCmI&zÇٶgOҁ'ٓn٣#ɞ\!ćzEMC=A3snϪzj=iC# #!!R Aú)4y# xzztOC=CG1|namtrkG N"/19i܊Q+zrI]En-<"/!ᖝɭگ?!/q&9orkr3{rO'9ҖrG(u-ܞr%g# zrOei^ŬG`$VTZI>s }&_ln?rNO6Փ|}xta.;[OX> \Ŷ^E>}fM :0i' ,aFWѰ-4ԓMI3 m"o~M@c#"a[;zҐ7lذȘhΞ4M\~5` e5likGO[6,,²{=hG`+BHb[K=ioG`DZ-m@~U $ l]lki>=G`_х nm;TYݐ_3Xd9b? Ī!?b'6G؞Q+zrq "~ˆ-ob{FE~DG ۳{ r#_ۜ9M1wV #_˻XFlwXښF 0ﵚ=iȻx =bGؚDyICޅbd -?F,msWyoٓ7}Q#m[5zzҐwq;1,,i}bP}"YOZj(K}ц[B$Bc?+;&Q {ӆݣu:]-gԤkKmFffWO)4cٶy}SX R-vc憈Gph^nhfO)̝֡Ur\ɰ䯿Sdoc3m?;w-=(i~_kl-՜K޼z1ы#@9fwe!Kw#r81ٶi u#On7%&npG2]YrVjP0l/n,t/w%&4[DZc솸#8J˙?#`m_b%ǨݹGpnvzZ ' n(Gp>Ϲ+Q>XX5_F#8_+ 7;; ATC e,f[⯿U6V eaLFzAAA=pݲP qcGpScbS1yj(#81Fg^,ڧ#8>sbD qƒ }:'sLMc>[}gc7'gNMl7''u#8>ԘUCyŕGp}Fيg^,Ar}?_dcbĞL6Q s?.`g,4V Ǹ3Aw`?[e!eq}=o cb?H[e!z5ʓϖnYȃzq#B~BAX5] ⯿w}}م>vXjEG0>̺5Bd{?~p Q]Ԥ [ .f[ Ei/b-DCA}}֭q !>ʞU#Xv .n37E?-$} n!G_žaV֬T]L}K1pkìҀ`9 ӇYز 'u!X#X \>⯿s [σ\7kDd)`0⯿s 1cm[gG %Fσo#X%H ;b [X7E.߹DkeG0⯿sqYcZF[^#XP.ъ53ʞʶбGKbiivEeQ`u߹1G0g ;5"|`m,yYcDٳ#Xnv?F[#<-emy}#ruX"S ;{g ;pYvΛn{[(l'l 1 0S};=zm!&za?])X9⯿ {aV֬}{Eq0\rG}zEwpSk`7 GIMP>Q=¼#nO͞|":{G0^egbs#؝V>1ku 6蛽xFXD3~! w[IIՐ1hb;nB Y.vC#=-*,D#D,lY - %Y\ZG_[_TjR.qpknB ٓ: Й,D@.Q 3b>2oٱv[xG 3ib9pod&c|?B⯿-lY - ͉'Y=߿'>212zxBg!`'GH Q}Q+QՐxG ɀhA,ԓGJ>X}ۑaՐPFD&R=PnV5d&I"GH0YZB=)֓~! 2Yb\sGH ,-VfpNɚKIՐWfn,Y(U Y{GHe,T  BLW5(V5d!KQ603 뾬پ- Uv#~!=[HbZc`$k안9-b`UCtiLs#|E,P5lNMiNlԦ#H=jB-"}Y;ZÍY1zr,ҰP5,Gȃ^~!B-D Uc?B^,DH+Q-YG'Ր# e,T-௿M}&U Y 7@>ʇ SmYh;~!@d3,m#䇿6Vb<(3 뾬#Mwȇ[)X/@>ht>}D~_G7 O~>y7>}m}['O~䯿J}J}c?B)@~>}roEB˲МrL'&# mb#PmbN,7}Ҁ~(Tov2#W9|P0vC~,lJTWy|%A Tê!|dYhkG(Y jղ?BـٕgܕjvH/=G(/kQtvU >#}#obrukF?BkB џ| O+8P."|e[vs~@`6j-zU㯿5bO̭VGb B9ܟe:aCZ_ ۆ d#rGZۣ-t %#yEʬcJ߲T5dCɆxYecxjȆ##dDXYYBn|2Z Xeì,͏A7#dI}?_}>cZZee}#dB\V;K֜< q~!kjȚ.3^B\V;YeT54 Xc2=,eT5dMܒay#)0YZ [- .kLc ub3jȚC6G(07[XޜvnP$`Ͷ/+k-B!l?Ba@;d{91{=fL}"^^]&#xPe",eC|@YG(&]Ր5lH0_f֢}b=Y nV Y3}1#-|Bg!]p~UCD,-*8[ʡ!B.p?BGvY Yw*F s# # PpYg!w܄#>[?B3_Yn+Ss#Twpka̭۳-|n#T[Qa!~r=\vy jU){RՐ]b4+k-|e?Be@[UE ՜Xkv `?eu\\v%pPP qY3|G&`-G!̙?B5!uUTsb)Ue2E_r}QU寿˺*՘V֬[|Y/ Ta~TfUTa~8jȎPƴn D!˨91.Pm;dh۹!RZGm}QUeT;{#4Q _1M),R5'Ov:1&W#4*JeO*:>f Z;d#4)91sf;$YM㯿nhJsN,,Ā93͉PF响⯿ aհ}9*YGhN;B (G,AwCUCSsTD 03B}QUekм9U Y4ii fB}QUeTU }fq4Ǵe-2Қ>P,#4C3\vb>pYY2*}|9ʨJ7&Ž?BÁjȺM5JeӍٜ}LU#4. [IE8 n'}᯿,AՂv9&,1eoA_˖TG,|GXYYd?Bc+P_Tl'whxX;ds76'v jwR͉qTsbgG.(¨(?4N?B́jX5dKae=",Tk"5a#4!K# ʚu _B\V;#8 y-CVCiP+`-_e{q~6- }Y5~6k{d!.,7Q#ϲT4ޤS}Ub.l1vaBneQPGuSmL/+m?Bm-1,L֗edPeCd1O's`}vCۻl&G}.] Fndv[!=:҃(h_{ :M~wVC;̺=SpG`Od0f2[K+?B7UɻψtW1,#t?#m7aOy#t'`f/ܺyY:2iO_jȞ6=Q˲?BJcΉyOvH_71'z;hjXGCΩU#t;JԤ[ cP0#t jv-s|eGnzR}bsbiɳ/(Z}㯿ǜ1: κ/#to9ɳw8 m6#[Z:={ȕ=50vG8!:>Q䯿jcڎen~^Gmbg <:_vHg`N5lun[);nGg7TOg-ݕhNjGLzR=}j(Kc:en~[ʥ'˽*}N3v-sotBk?Bba6YB,zG>-z;dd5W:ó}NnfPHn: <; EokAY}KgX5}g!}㯿YܡS 65_BOv78}bg!u/c7~bBuJ}?ʨ;txKg,_K-B %PHx}댴aF: xCz?B=j($ 1,,2Gp a|?B}oB=.ujPOmxYhT!!g!b: IR5.- ͉Nt|}zYS :Cwg~K$UCᾗg!#7Djd)UCᑿP]}3߷e.;⯿up\}dY5u j(\Z"|/Bo?B5u6&6&YJJ \<a,t6/ZVGgN5.ҵ}VfwglZRI…--# i{y i6К4RvE›Gh `Xk1j]K;=o;~O>KSZ=giEкZ"-M}ߦUTZ9ܿ:@gi}ZPZ ؋'&VF0A}bk,{d4Gh=`Llmv5&6Zc~#oK۲!vCڑ~-@cKiiϮbCVCac?B]kTpov70GZi/[}Wn]MlL,1Gh&6&&Ԫ⯿˃A1(6QړVHGYȃ{Ц!{jcwjU_[jN,IgGUC~}3nY/+a1wBoC#;p)v=&;Y 5}"}ߑB`mKGho@"L;Y3#=V EڝKd[}(a('@{>zPx?Baf϶yY(`C}^vȶLvU E=~gVlq2 UCQ"G7(HkBg2ztY7ܡBЛoC/ױJR5Se;ukBPkpFYmdG2gVC1wb7ܞYP^V'pÝ|Pt䯿B\˽.r#<VBܫۊGx:Ҟu`Ng;d{=8i7۩]Y1'ق#t!W"ۜ3=dps lNl7íٝAE?-+[5\=d5nm{nbY>#nhW!wCN9np+{Cq!cGM]۳-#~[G>p{?eКnqcGtXa!wC}pwrȍMd)?m~VFЪآ?m>LoBS>~8.~ᕀ Pǣ*wf?ˀ,DG A#0/ {=B^tn" oA3gs#& aݫ-~5o94s>j}WңG0kg!}7޿G5T&&&k}g!#Q BݫWE`A?«eY]^^P!nxe}[땅нP! xu# +ѽwn?jsziÚYhG䯿WzUC%k(kkfS@,BFv;d#|:p* (&3Y?gbIƺ,n}O㯿W;nOk7T/G {[J'۩6iΌ<~᳀N5/o%>CGǙkˋK~scb~ysb;Y퐥Gl^4,411: _^IRPIei>na 둅$APGXk2r|b =dG\@5T.n9,e" ~s߫rni:emReP9̆5-ჿBXsbC]X~C@;d*y XzBXsb鍉]?G߫2sY |#ۿa@DEmYMCcC#|wY ."#-l}[,=_7T~#|L@,#OD,ObG->*}TC"1}}X3- avs>.P#=Yh>pocˇJPG耏f,"B{ gF}_X: A繪JqGW>6N XaT5T)bZ+#|<[˜vC፿1vCo[Jvk%Xx3n-}%oxr_z<o ]Cf>|^Xg}7㯿O YRkGx ,O½*[?["孷p ˈHkQ=GxjL6=ۑa&˪? ,|DQ~pk&s= =\~>Ae<#,,gKvgy. oebto~Q,MMe>s~m=zRʛ_ުGx3V;yg{>&~*7cfaeͶG寿ìٳ2 j!E?¯oUnivd~oy ;cX6eiϬG#6l=jJD;3"Gy:T {~EDZ,=#{~Q%Gɺu{˲uQP,-La=~ml~7p-T%QpkG}Yh kR=VCU}3 +Y_ 8Y#~G涶2 ͉CΉ~-T0B8Y0\~jX[nȦ^;䘨G1;˨Ț^5TSmG ۲P.R=$~ 0gzPMqVf`Gj p}xjjv?O㯿!wCGj?Н~\+]~\PsQϰPeY&r#taԖ1z𳀱 X}m~ϚtYS f~`޲pYCwXLSx_?;V'p,MDN+M}wӪ5?,Y^98O5TMӚmkaL??{m!Մp{d{#[ UYGD—e~=x4#kGx/[/_^O,hOf3'>JxAf̞TόGxwj{ }wSJPs?V架}D[RvyvHmRS}_k_BTf} af|b7c~6zhއ^G⯿'w=K@rbg!&^Gr@l_+QWIYԚLGJ׼m[K__9>ɳF9|0u__k9}YhP&-b%WsNtR1kFJR5T]}Y>Հ,ԓwB̉(?R/Ig!=?N'ӘYHܿՁxaP-p ˻k=0V;z繪{~k,Lg'=d5#|??·@ _4}o?w?ỀG@O#|7 G@}??^} _l9}p eȏNjP#lK\s+CKLJvu ov O'P'+80H DW PFA-6 SCSP DW DOCOL DW SPAT DW CSPP DW STORE DW SEMIS ; DB 86H ; ?ERROR DB '?ERRO' DB 'R'+80H DW SCSP-7 QERR DW DOCOL DW SWAP DW ZBRAN DW QERR1-$ DW ERROR DW BRAN DW QERR2-$ QERR1 DW DROP QERR2 DW SEMIS ; DB 85H ; ?COMP DB '?COM' DB 'P'+80H DW QERR-9 QCOMP DW DOCOL DW STATE DW AT DW ZEQU DW LIT DW 11H DW QERR DW SEMIS ; DB 85H ; ?EXEC DB '?EXE' DB 'C'+80H DW QCOMP-8 QEXEC DW DOCOL DW STATE DW AT DW LIT DW 12H DW QERR DW SEMIS ; DB 86H ; ?PAIRS DB '?PAIR' DB 'S'+80H DW QEXEC-8 QPAIR DW DOCOL DW SUBB DW LIT DW 13H DW QERR DW SEMIS ; DB 84H ; ?CSP DB '?CS' DB 'P'+80H DW QPAIR-9 QCSP DW DOCOL DW SPAT DW CSPP DW AT DW SUBB DW LIT DW 14H DW QERR DW SEMIS ; DB 88H ; ?LOADING DB '?LOADIN' DB 'G'+80H DW QCSP-7 QLOAD DW DOCOL DW BLK DW AT DW ZEQU DW LIT DW 16H DW QERR DW SEMIS ; DB 87H ; COMPILE DB 'COMPIL' DB 'E'+80H DW QLOAD-0BH COMP DW DOCOL DW QCOMP DW FROMR DW DUP DW TWOP DW TOR DW AT DW COMMA DW SEMIS ; DB 0C1H ; [ DB '['+80H DW COMP-0AH LBRAC DW DOCOL DW ZERO DW STATE DW STORE DW SEMIS ; DB 81H ; ] DB ']'+80H DW LBRAC-4 RBRAC DW DOCOL DW LIT,0C0H DW STATE,STORE DW SEMIS ; DB 86H ; SMUDGE DB 'SMUDG' DB 'E'+80H DW RBRAC-4 SMUDG DW DOCOL DW LATES DW LIT DW 20H DW TOGGL DW SEMIS ; DB 83H ; HEX DB 'HE' DB 'X'+80H DW SMUDG-9 HEX DW DOCOL DW LIT DW 10H DW BASEE DW STORE DW SEMIS ; DB 87H ; DECIMAL DB 'DECIMA' DB 'L'+80H DW HEX-6 DEC DW DOCOL DW LIT DW 0AH DW BASEE DW STORE DW SEMIS ; DB 87H ; (;CODE) DB '(;CODE' DB ')'+80H DW DEC-0AH PSCOD DW DOCOL DW FROMR DW LATES DW PFA DW CFA DW STORE DW SEMIS ; DB 0C5H ; ;CODE DB ';COD' DB 'E'+80H DW PSCOD-0AH SEMIC DW DOCOL DW QCSP DW COMP DW PSCOD DW LBRAC SEMI1 DW NOOP ; ( ASSEMBLER ) DW SEMIS ; DB 87H ; DB 'DOES' DB '>'+80H DW BUILD-0AH DOES DW DOCOL DW FROMR DW LATES DW PFA DW STORE DW PSCOD DODOE LHLD RPP DCX H MOV M,B DCX H MOV M,C SHLD RPP INX D XCHG MOV C,M INX H MOV B,M INX H JMP HPUSH ; DB 85H ; COUNT DB 'COUN' DB 'T'+80H DW DOES-8 COUNT DW DOCOL DW DUP DW ONEP DW SWAP DW CAT DW SEMIS ; DB 84H ; TYPE DB 'TYP' DB 'E'+80H DW COUNT-8 TYPE DW DOCOL DW DDUP DW ZBRAN DW TYPE1-$ DW OVER DW PLUS DW SWAP DW XDO TYPE2 DW IDO DW CAT DW EMIT DW XLOOP DW TYPE2-$ DW BRAN DW TYPE3-$ TYPE1 DW DROP TYPE3 DW SEMIS ; DB 89H ; -TRAILING DB '-TRAILIN' DB 'G'+80H DW TYPE-7 DTRAI DW DOCOL DW DUP DW ZERO DW XDO DTRA1 DW OVER DW OVER DW PLUS DW ONE DW SUBB DW CAT DW BL DW SUBB DW ZBRAN DW DTRA2-$ DW LEAVE DW BRAN DW DTRA3-$ DTRA2 DW ONE DW SUBB DTRA3 DW XLOOP DW DTRA1-$ DW SEMIS ; DB 84H ; (.") DB '(."' DB ')'+80H DW DTRAI-0CH PDOTQ DW DOCOL DW RR DW COUNT DW DUP DW ONEP DW FROMR DW PLUS DW TOR DW TYPE DW SEMIS ; DB 0C2H ; ." DB '.' DB '"'+80H DW PDOTQ-7 DOTQ DW DOCOL DW LIT DW 22H DW STATE DW AT DW ZBRAN DW DOTQ1-$ DW COMP DW PDOTQ DW DWD DW HERE DW CAT DW ONEP DW ALLOT DW BRAN DW DOTQ2-$ DOTQ1 DW DWD DW HERE DW COUNT DW TYPE DOTQ2 DW SEMIS ; DB 86H ; EXPECT DB 'EXPEC' DB 'T'+80H DW DOTQ-5 EXPEC DW DOCOL DW OVER DW PLUS DW OVER DW XDO EXPE1 DW KEY DW DUP DW LIT DW 0EH DW PORIG DW AT DW EQUAL DW ZBRAN DW EXPE2-$ DW DROP DW DUP DW IDO DW EQUAL DW DUP DW FROMR DW TWO DW SUBB DW PLUS DW TOR DW ZBRAN DW EXPE6-$ DW LIT DW BELL DW BRAN DW EXPE7-$ EXPE6 DW LIT DW BSOUT EXPE7 DW BRAN DW EXPE3-$ EXPE2 DW DUP DW LIT DW 0DH DW EQUAL DW ZBRAN DW EXPE4-$ DW LEAVE DW DROP DW BL DW ZERO DW BRAN DW EXPE5-$ EXPE4 DW DUP EXPE5 DW IDO DW CSTOR DW ZERO DW IDO DW ONEP DW STORE EXPE3 DW EMIT DW XLOOP DW EXPE1-$ DW DROP DW SEMIS ; DB 85H ; QUERY DB 'QUER' DB 'Y'+80H DW EXPEC-9 QUERY DW DOCOL DW TIB DW AT DW LIT DW 50H DW EXPEC DW ZERO DW INN DW STORE DW SEMIS ; DB 0C1H ; 0 (NULL) DB 80H DW QUERY-8 NULL DW DOCOL DW BLK DW AT DW ZBRAN DW NULL1-$ DW ONE DW BLK DW PSTOR DW ZERO DW INN DW STORE DW BLK DW AT DW BSCR DW ONE DW SUBB DW ANDD DW ZEQU DW ZBRAN DW NULL2-$ DW QEXEC DW FROMR DW DROP NULL2 DW BRAN DW NULL3-$ NULL1 DW FROMR DW DROP NULL3 DW SEMIS ; DB 84H ; FILL DB 'FIL' DB 'L'+80H DW NULL-4 FILL DW $+2 MOV L,C MOV H,B POP D POP B XTHL XCHG FILL1 MOV A,B ORA C JZ FILL2 MOV A,L STAX D INX D DCX B JMP FILL1 FILL2 POP B JMP NEXT ; DB 85H ; ERASE DB 'ERAS' DB 'E'+80H DW FILL-7 ERASEE DW DOCOL DW ZERO DW FILL DW SEMIS ; DB 86H ; BLANKS DB 'BLANK' DB 'S'+80H DW ERASEE-8 BLANKK DW DOCOL DW BL DW FILL DW SEMIS ; DB 84H ; HOLD DB 'HOL' DB 'D'+80H DW BLANKK-9 HOLD DW DOCOL DW LIT DW -1 DW HLD DW PSTOR DW HLD DW AT DW CSTOR DW SEMIS ; DB 83H ; PAD DB 'PA' DB 'D'+80H DW HOLD-7 PAD DW DOCOL DW HERE DW LIT DW 44H DW PLUS DW SEMIS ; DB 84H ; DWD DB 'WOR' DB 'D'+80H DW PAD-6 DWD DW DOCOL DW BLK DW AT DW ZBRAN DW DW1-$ DW BLK DW AT DW BLOCK DW BRAN DW DW2-$ DW1 DW TIB DW AT DW2 DW INN DW AT DW PLUS DW SWAP DW ENCL DW HERE DW LIT DW 22H DW BLANKK DW INN DW PSTOR DW OVER DW SUBB DW TOR DW RR DW HERE DW CSTOR DW PLUS DW HERE DW ONEP DW FROMR DW CMOVE DW SEMIS ; DB 88H ; (NUMBER) DB '(NUMBER' DB ')'+80H DW DWD-7 PNUMB DW DOCOL PNUM1 DW ONEP DW DUP DW TOR DW CAT DW BASEE DW AT DW DIGIT DW ZBRAN DW PNUM2-$ DW SWAP DW BASEE DW AT DW USTAR DW DROP DW ROT DW BASEE DW AT DW USTAR DW DPLUS DW DPL DW AT DW ONEP DW ZBRAN DW PNUM3-$ DW ONE DW DPL DW PSTOR PNUM3 DW FROMR DW BRAN DW PNUM1-$ PNUM2 DW FROMR DW SEMIS ; DB 86H ; NUMBER DB 'NUMBE' DB 'R'+80H DW PNUMB-0BH NUMB DW DOCOL DW ZERO DW ZERO DW ROT DW DUP DW ONEP DW CAT DW LIT DW 2DH DW EQUAL DW DUP DW TOR DW PLUS DW LIT DW -1 NUMB1 DW DPL DW STORE DW PNUMB DW DUP DW CAT DW BL DW SUBB DW ZBRAN DW NUMB2-$ DW DUP DW CAT DW LIT DW 2EH DW SUBB DW ZERO DW QERR DW ZERO DW BRAN DW NUMB1-$ NUMB2 DW DROP DW FROMR DW ZBRAN DW NUMB3-$ DW DMINU NUMB3 DW SEMIS ; DB 85H ; -FIND DB '-FIN' DB 'D'+80H DW NUMB-9 DFIND DW DOCOL DW BL DW DWD DW HERE DW CONT DW AT DW AT DW PFIND DW DUP DW ZEQU DW ZBRAN DW DFIN1-$ DW DROP DW HERE DW LATES DW PFIND DFIN1 DW SEMIS ; DB 87H ; (ABORT) DB '(ABORT' DB ')'+80H DW DFIND-8 PABOR DW DOCOL DW ABORT DW SEMIS ; DB 85H ; ERROR DB 'ERRO' DB 'R'+80H DW PABOR-0AH ERROR DW DOCOL DW WARN DW AT DW ZLESS DW ZBRAN DW ERRO1-$ DW PABOR ERRO1 DW HERE DW COUNT DW TYPE DW PDOTQ DB 2 DB '? ' DW MESS DW SPSTO ; **************NOTE CHAGE FROM FIG MODEL********* ; DW INN,AT,BLK,AT DW BLK,AT DW DDUP DW ZBRAN DW ERRO2-$ DW INN,AT DW SWAP ERRO2 DW QUIT ; DB 83H ; ID. DB 'ID' DB '.'+80H DW ERROR-8 IDDOT DW DOCOL DW PAD DW LIT DW 20H DW LIT DW 5FH DW FILL DW DUP DW PFA DW LFA DW OVER DW SUBB DW PAD DW SWAP DW CMOVE DW PAD DW COUNT DW LIT DW 1FH DW ANDD DW TYPE DW SPACE DW SEMIS ; DB 86H ; CREATE DB 'CREAT' DB 'E'+80H DW IDDOT-6 CREAT DW DOCOL DW DFIND DW ZBRAN DW CREA1-$ DW DROP DW NFA DW IDDOT DW LIT DW 4 DW MESS DW SPACE CREA1 DW HERE DW DUP DW CAT DW WIDTH DW AT DW MIN DW ONEP DW ALLOT DW DUP DW LIT DW 0A0H DW TOGGL DW HERE DW ONE DW SUBB DW LIT DW 80H DW TOGGL DW LATES DW COMMA DW CURR DW AT DW STORE DW HERE DW TWOP DW COMMA DW SEMIS ; DB 0C9H ; [COMPILE] DB '[COMPILE' DB ']'+80H DW CREAT-9 BCOMP DW DOCOL DW DFIND DW ZEQU DW ZERO DW QERR DW DROP DW CFA DW COMMA DW SEMIS ; DB 0C7H ; LITERAL DB 'LITERA' DB 'L'+80H DW BCOMP-0CH LITER DW DOCOL DW STATE DW AT DW ZBRAN DW LITE1-$ DW COMP DW LIT DW COMMA LITE1 DW SEMIS ; DB 0C8H ; DLITERAL DB 'DLITERA' END  DW AT DW ZvZ12-DISK.DOCG ! "#$%'&()*,+-.o/10235467:89<;=?>@BAEDFC!DteKG٩ԍͱ,KuPRJjQQ S*Klt:u,M9AȬ֜1;_,1K@N"R]V+b԰E}MxH/I6.PpY-,M"2@yQU挮/6>Qdn,5˰-e؆xs?AzrK ~G="d 9jݱʰaYNmeZ뎓SװKu7xvV[6qVƃQ3=hj)R3y^5? 6pBX2:\)uq:+cbaqڞB,?bn$av5mpzךK` 3&vneC3Ի*%ojg`;/.י=ۄ]˰;zڧQ=%fi,M9clA۳./VHj)RY]V+ i,1K@Nnb;zK$_ ?+A;/ZT[ ?yՐ_,1Klobmtg]gx4kv7qLZ;(fݱP략D3KYG٩]!DdC)2C)Kn?bQ! "#$%'Ë,Å, o g^#VFORT)4^^]I]R{*4+p+q"4KB EXIQ*4N#F#"4 HUNNESQ*4+p+q"4  `U{,*^#V*s#r^#V ^#V* (LIT o g -BRANC`iN#F ?BRANC} *4"4 !(LOOP*44#4*4s#r!(+LOOP9*4^#V|L!!"-(DO6w%Bw%%%i"U(?DO6 ` %w%Bw%%%i"BOUND6di$>NEXԝ $EXECUT$zPERFOR^#V^#V͋$G$NOO# $PAUS2 %=*4^#V#~#fo %T*4@%((LEAVEl*4####N#F#"4 %`(?LEAVE|l &^#V &7s#r &Cn& &Cs 'CMOV`ix~#  'CMOVE`i + +x~+  (SP)!9 (!SP: (NRPI*4 (ARPY"4 )DROk )bDUy )2SWAЉ )OVEҙ*qTUC˪*QNIк *RO*-RO*FLIcj *?DU6wwi+R*4^#V#"4 + >'*4++"4s#r + R?*4^#V +PICT)9^#V +8ROL6%=R'wB4ii,ANċ{ozg ,Oҟ{ozg ,KXOҴ{ozg ,`NO}/o|/g ,TRUŝ,FALSŝ! ! -CSE~w -CRESE{/_~w -CTOGGL3~w -'OD!í-=OFV!í.Nf .NEGATy+.z/W{/_ .ABӞ|y .`+~w#~w ...n./2) /2|g}o /U2|g}o /8&))) / 16# /2D## //1S+ /=2a++ !)t)| l0LUMD}ggxDgJ Ulg0U*6i_|g{|g{)Ҵ_|g{,! 2UM/MO`i}||ejkW\a 30}30))3"0:|330W>o>g7 S>c !zn +79 DAB| |E 8s D2 |g}ozW{_8 D6C  i8[ ?DNEGAT6' C i9 D06i9 D6 i9 DU6   x  i9 D6R`7 ? ii9 D6 # i9C DMI6 H e i9R DMA6 # ~ i: *6 % i:M/MO6 w% %%z =' w Q=ii: MU/MO6%=%i; 6ii; /MO6%a  i; 6% i; MO6% ii; */MO6%  i;Q *6Y i<k TOӦ<A ENTR٦<v LIN˦<3 SP<g RP< DЦ < #OUԦ < #LINŦ< OFFSEԦ< BASŦ< HLĦ< FILŦ< PRINTINǦ< EMI= SC{= PRIO{!=. STAT{=H WARNIN{=: DP{= R{=f LAS{^=V CS{ = CURREN{!= #VOCӝ= CONTEX{!!.> 'TI{> WIDT{>r VOC-LIN{L> BL{> >I{> SPA{>#TI{>! END{?B̝ ?9Bӝ?DBEL̝?CAP{?OFILr`ixʄ} x ?,ERAS6pi?iBLAN6>pi?\COUNԸ^#?} LENGT^#Vü?MOV6 ia{ @UPPE z~w# @HER6 i@#PA6*Pdi@-TRAILIN6w\r dQ>xQ^iACOMi`xʩ~–# æ!â! Ä! BvCAPS-COMi`x~O~# !! ! BCOMPAR6c}iCBDO&M&o CBIO?*BKP&o C4(KEY?6=OiCY(KEY60bz=iCp(EMIT60=i iC(PRINT60=i iDKEYbDKExDC D(PEMIT6w iDCRL6 (  ( T iDTYP6S( KiiDSPAC6>( iDYSPACE6 aiD6BACKSPACE6I( iDBEE6V( iEBS-I6iwQIV( iE<(DEL-IN6iwQI( aIV( iEBACK-U6iwwtiE RES-I6$ResetiEP-I6i( +w`imiFkCR-I6i>( iFB(CHAR6 ( d4iFuCHAFDEL-IFC{FCC{0}IGHEXPEC6wRnw>Vwdjw`hj. iiGTI6 iGQUER6|P"&T TiH'FIRSԝHvLIMIԝH#BUFFERӝHB/BUƝHB/REÝHREC/BL˝HB/FC)HDISK-ERRO{H>SIZŝ*H&>BUFFER6.iH4>EN6_iHKBUFFER6$?diI\FCB{EXTEND80BLK opICLR-FC6 w 4 iIrRECORD6 !diIMAXREC6 &diICAPACIT64iIBADREC{IIN-FILE6w'$ Out of RangeiIVIEW6 (diISET-DRIV6$iiIuSET-DM6$iiI]REC-REA68 !$ iIREC-WRIT68 "$ iJREAD-BLOCDJWRITE-BLOCsJSET-I6w diJFILE-REA6\`wdLiiJ8FILE-WRIT6 wB \wdi iJfFILE-I6DT+sT+ iKLATEST6 dw fO ifdiiK-ABSENT6w?f\{ `qwB `qw?w?wd?i wfjd+diLUPDAT6fdBiLDISCAR6fdTiLMISSIN6R_R R_T ?BR?d?dT?wd$iLBUFFE60GifdiL$BLOC60qifwdiMEMPTY-BUFFER6?4$f\d dd iMSAVE-BUFFER6f\ w4wdw wdTdiiMKFLUS6SiiN&FILE-SIZ6 #$iiNCPM-ERR6`iN`OPEN-FIL6 $k$Can't open fileJQiNuMOR6$iNwCPM-FC\NDEFAUL6y 4>xy iN(LOAD6% % T+ iNLOA O5DIGIL{0 a _OBDOUBLE6l 4OiOCONVER64w% J i  wl iiPm(NUMBER?6w4-`w%l w,/! l 'C >`iP>NUMBER6e; JaijKowiiP(NUMBER6="iP3NUMBEQ{HOL6  iQ<6: iQ#6 :iQSIG6'-iQ6   d0diQ#6 0iQHE6 iQ@DECIMA6 iRT(U.6.iRU6sCaiRU.6%stCiRl(.6w.iR6CaiR.6%tCiR(UD.6.iRUD6CaiRUD.6%tCiR(D.6z .iR2D69CaiRMD.6%9tCi S)SKIЇ`izʛ~v#ÌvS~SCAΩ`izʽ~v#îvT/STRIN6diT^PLAC6 4iT(SOURCE6S|&iTSOURCTPARSE-WOR6%* =i %4 iT0PARS6%* iw4 iU!'WOR6*iUWOR6=wd>iU.6){CiUs6){ iV63BiVTRAVERS> VDONE6P x33TiVFORTH-86iV>.VERSIO6d..CaiWON>LIN6_iW L>NAM6BiWBODY6_iWNAME64iWLINK6iW>BOD6BiW>NAM6QiW>LIN6iW>VIE6 _iW VIEW6BiXHAS= #~o&) X4 (FINDX |##?‡ #‡ j ###~@! ^#V|^ Y#THREADӝY" FIN6B T \ i ;dw wB B ` i ; V w iYM DEFINE6>c!w  iZ ?STAC6' $Stack Underflow':$Stack OverflowiZ$!STATUZINTERPRE6-! !!!w!i(!i[u!ALLO6 i[!6*!i[f!C6*!i[!ALIG6i[!EVE6i[!COMPIL6wB%!i[!IMMEDIAT6@ 1i[!LITERA6"!i[3"DLITERA6="="i["ASCI6>4P |"="i[!CONTRO6>4@P "="i\"CRAS6$ Uninitialized execution vector.i\"?MISSIN6"C$ ?i\"6 !"i\"['6#="i\ #[COMPILE6#!i\I"("6 d%i\3#(."6 d%Ci\I#,6"{4!i\ .6"P#g#i\}#6"9#g#i]#FENC{^]b#TRI6 \#  ##B# i]#(FORGET6w#$ Below fencew  $ $w w8$ #"$i i]#FORGE6>c_$w  ; V " #i^#WHER!^y$?ERRO$^#(?ERROR6$%% 8 T$ $aCa+$ i^$(ABORT"6=$d%i^`"ABORT6"$g#i^$ABOR6 8+i_$?CONDITIO6$Conditionals Wrongi_B$>MAR6*!i_S%>RESOLV6*i_$MAR6[%i_%?>RESOLV66%r%i_%? ; w*_*w 4!*Qia&CREAT6/'"{ib&!CS6' ib'?CS6' x$ Stack Changedib&'HID6 w ; ib&REVEA6 w ; ib'(;USES6 ib'ASSEMBLE)q::::)b';USE6'"E((#(c(ib;((;CODE6 ibq(;COD6'"((#(c(ib(DOES6"(!k!ic(6P TicW(6P B-! !w)8 ) )!%)iw!)T"%)i="((ic(6'  '((E(6c(6'"i#((id1)RECURSIV6#(idM)CONSTAN6'!E(da)VARIABL6'!E({d(DEFE6'"!E(d)VOCABULAR6' \)!)* ! (k id)DEFINITION6  ie)2CONSTAN6'!!(kO ie*2VARIABL6*(kie(AVO{!eu)COD6'(**_ V*c(ieEND-COD6V* #(if\*#USE{fO*USE)****m(fALLO6*ifCREAT6**!E(fVARIABL6**ifDEFE6*E(g2*>I6ww`w`iG+dI+ig)(IS6=+B%ig*I6P +"T++#+ih+RU6P +(P +!+!ihh+QUI6  T( Wo!+P +P# ok+ih+BOO<^h*WAR6$ Warm Startih+COL6++ii+INITIA̝i,O60,<ii6,STAR6;,ii+BY6*4^iP#Pages$i!,*."""4͓8" ͓!,,ۢ^! ^ ^lM+DEPT6' ilY,.6,(-\$-,;QRa-1-P#Empty il,.I6w4w-w( w-_}-4wU- ail,DUM6\-wa\-w4-7-iim5-RECURS6 !imE,OCTA6 i -BASICӝ -FILE-INTERFACŝ -C/̝@ -L/SCҝ *.6 w$.G i 8.(6i .6i ].?ENOUG6,Q$Not enough Parametersi P.THR6u.4.;<.i k.+THR6dd.i &,--6 Ti .ONL ///0m@* ALS6 wB _i(kw Q d i 63Bi SEA6#  i =/PREVIOU6 wB _ _dTi FORT6i h/DEFINITION6*i K/ORDE6P# Context: \/w/;-B/iP# Current: ;-i /VOC6 w ;-w0ii .CP/)32 233/ FCB{ALLOT COM\^_`abcdefghi\ Q0RESE6 $ii CLOS6 $i 0SEARCH6 $i 0SEARC6 $i 0OPE6 $i MAK6 $i DELET6 $i 0REA6 $i 0WRIT6 $i 1(!FCB6w w w4 %4:`1@=4\1w.`1;d1 441 i 0!FC6>c2 g1i 1MAKE-FIL61k$Can't MAKE File i ^1HEADE! F1SAV6 X011i2<22wN1k$ Write errord7c2i0k$ Close error i <0CREATE-FIL6u.X012w2;-20i /1.NAM6 $.2  :d4 CadCti .DI6 9# ????????.???X0g1:020wk@3i i ..FIL64 TCdP#.Cai V3FILE6 ^3i 2FILE6 '  *w !1 (k i B2?DEFIN6  !33i 3i 2OPE63 i 3DEFIN6 3 i |3FILE)4C4"NMM0 >FRO{G= EXCHANG6 =4 =4i 4FRO6 3N4 '4i LOA6 %=4 < i 3CPU8080.BL˺3CPU8080 BLK0123456789:;<=>?G04LABE6'c(i04DOES-OН0C6*i04C!0!0 5?>MAR%0!5?>RESOLV%005?8IΠ608ADɠ608ACɠ608SUɠ608SBɠ608ANɠ608XRɠ608ORɠ608CPɠ608SHLĻ6"09CAL̻608LHLĻ6*09ST6209LD6:0v8JMл60?9JNڻ60J9Jڻ60U9JNû60_9Jû60j9JPϻ60t9JPŻ609Jл609Jͻ60)9C009C0<09Cӝ0490090<09Pŝ090090>09NO6i09NEX6E9i08MO6$@dd5i0:MV6$d55i09LX6$455i06:I65*5i0N:THE6<5i0b:ELS6g: x:i0 :BEGI6K5i0:UNTI65]5i0:AGAI65]5i09WHIL6g:i0:REPEA6 :x:i 0d4BU)/\&;[\14 0SSU{}o|g 0 2 >2 >o2  0;DNEX{ o g^#V 0j;DNEXTz; 02;'DEBU{7\ 0;DEBNEX{PY=;;:;<2;;2;X;*;z;t; 0;PNEX;>2 !;"   0:FI;X; 04(PAUSE <*4!9*s#r##0;RESTAR*6i@=<6i@=>6i@>0>6'i@0>0<68i@@>HIDDE)ZNUYX;@!>>TYP6::Ci@P>LMARGI{@g>RMARGI{F@=?LIN6 d>>>ti@>?C6>i@>LIS6u.w4 P#Scr # w2.\'?;awS;$. d$.To>?ii@>TRIA6 ( 7  \W?;>O?i@>INDE6u.4\?;a;S$.To>;G `?q?i@[?IN6wG ?wawS$.To>4?ii@/?LARGES6\@  @ wB?ii@>WORD6>t * * ?wg@ww>;-aac@O3@ i@/WORD6@i@@#TIME{@?TIME6@@@@@ Ti@?MAN6@ Ti@}@WHE60@%i@>64 i@@64 i@@64 >i@@ESTABLIS6fi@A(COPY6 dSi.Ai@@COP6.CA.i@AVIEW-FILE{]^4E=E{~]]4Q=^A@bAVIE6@lAVIE6# wA7 QyAd>i @:AHOPPE{ @"AU/{ @YACONVEY-COPCA @AHO6Ai @A.T6P#to wi @ B(CONVEY6fBwwAd!BBAdJB.i @ACONVE6.A'B4Bw4A% %BBBBBBii @7BT6>iBi @COP6N4SN4Si @BCONVE6B%BT+BuBBi @AUP6waz! BC>i@&CINSER6%=w=di@BREPLAC6i@BDELET6%=w8C w=ddi@qCFOUN{@lBSEARC6CT% C D4D  DCBj4CiCi@FCAD@CBLOD@%D-LIN!@CDARXDD(k T Ti@=DEDITO)QsP~OKc>@.SCREEyQ@(AT6 i@D(BLOT6$.ti@D(DARK6\DDi@C/SCҝ@DTO6w Ti@D6w dDG w i@D6D$. Di@DCURSO6w i@ ELINE6(E$.7 i@ECOL6(E$.G i@FE+6:EdEi@YE'STAR64 Si@jE'CURSO6sE(Edi@E'LIN6EMEi@E#AFTE6$.MEi@E#REMAININ6(Ei@E#EN6EMEdi@ECHANGE{@MODIFIE6EBi@EEOӝ^@E?TEX6%FCF=$.4*=i@FC/PAĝT@KF'INSER6:SFdi@YF'FIN6cFSFdi@oF'VIDE6wFSFdi@D.FRAME6P#'CP#'i@F.BUF6P#I cFFP#F wFFi@F?MISSIN6GiwFFP# not found +i@FKEE6E$.cFi@G6wF:SFcFwFSF:cFSFi@G6i@^( EEo>i@CJREDISPLA62J=Jd *D2J7D*Dw$. sEd$.Cai@JCHANGED6$. wsEdFd$.}i@kJ.AL6*D4 a.t3t2.\K;JJ;wJJsEF*DKJ*DED*D Ti@IEDIT-A6(E$.% 2Jd=Jd*Di@JNE62.\K;E7K T{K7HK;wJjDaKDi@JGET-I6GKP#Enter your ID: G\K.( KGGG"i@QK>VO{@-KQUI6T+o!K i@KDDON6K4 E"LP#UnP#modifiedG@Gi@iDE6KETRD2J*DP#Scr #4 a.sEF2.\L;=Jd*Dwaw$. sEd$.CafL*DDT+o! KrDi@5LEDI6u.4 D:Li@L(WHERE6LDi@CSHADO)L MM4[|D@DISPLACEMEN6i@1SHADO6i@>SHADO6MM&>=M?Mdi@L64 )M4 i@C64 w)MCAGMi@WMCOP6 `A)M)M`Ai@nMCONVE6 uB)M)MuBi@M6 H$.wDGM)MHGMi@MBRIN64\Mw;MMii@B6w %4 %E4 N4 G4 w N4$.wDOH$.Di@54BRIN64\>Nw;M4Nii@8JH19-A6( Y(  d(  d( i@DNH19-DAR6( E( i@oNH19-BLO6i( K( i@NH19--LIN6( M( i@NHEAT6JT+DMNT+*DzNT+RDNT+EDNT+7Di@KFDP-A6( =(  d(  d( i@NFDP-BLO6i( T( i@*OFDP-DAR6( i@IOFDP--LIN6( R( i@`OFALC6JT+DOT+*DTOT+RDlOT+ED5OT+7Di@NTELEVIDE6Oi@KQUM6Oi@OANSI-A6 ^( [( 4;( 4H( i@OANSI-BLO6i( P#[Ki@PANSI-DAR6( P#[2Ji@6PANSI--LIN6( P#[1Mi@TPANS6JT+DOT+*DBPT+RDaPT+ED#PT+7Di@OPERKIN-A6( X(  d( ( Y(  d( i@PPERKIN-BLO6i( I( i@PPERKIN-DAR6( K(  \2Q( *Qi@QPERKI6JT+DPT+*DQT+RD!T+EDPT+7Di @6QDUMB-.AL6KJi @mQDUM6yQT+DDT+*DDT+7D!T+EDDT+RDi"@0D.6Cai"@LD.6Q;QQi"@CMEMIT6w>~! Ri.( i"@QDL6wt QadQa[R;QQRi"@L?.6 `zRP#\/i~Rai"@_R?.6 `RP#ViRi#@Q.HEA6wt\R;eRRa\R;eRRa\S;RRdi#@RDUM6 FR\3S;!R7'S i#@SD6w@S@di#@;SD6$. 4 Sd$.Si%@ROU6P#Subscript out of range on w;-P# Max is a.P# tried +i%@QMA6 SBdSuSi%@oSCASE6)(((kSi&@SASSOCIATIVE6)(kww\FTB `BT i;j*T i'@TS(SEEX'@.WOR6w;-Bi'@ZT.INLIN6bTwBi'@rT.BRANC6bTwBi'@T.QUOT6bTbTi'@T.STRIN6bT Cadi(@DOES6wd4`i(@T.(;CODE6bTTUP#DOES> Uii(@T.UNNES6P#; ii(@U.FINIS6bTii)@EXECUTION-CLAST7\"P#$(i9#E(*@8U.EXECUTION-CLASS|TTTTTTTTTU)UTTBUbTi+@U.PF6>w`UUwUii+@U.IMMEDIAT6@ VP# IMMEDIATEi,@U.CONSTAN6wa.P# CONSTANT ;-i,@V.VARIABL6wP# VARIABLE w;-P#Value = a.i,@7V.6P#: w;-tUi,@pV.DOES6w;-P#DOES> 4Ui,@V.USER-VARIABL6wa.P#USER VARIABLE w;-P#Value = +a.i-@V.DEFE6P# DEFERRED w;-P#IS +TTi-@V.USER-DEFE6P#USER DEFERRED w;-P#IS +TTi-@ W.OTHE6w`W;-P#IS CODEOw`WVO;-P# IS UNKNOWNi.@TDEFINITION-CLAST6{.@WW.DEFINITION-CLASSuVVCVVV.W`Wi/@W((SEE)6wwWWUi/@SSE6#TTi1@TEPSO6( i1@&XINIT-P!1@LTLOGϝ1@JXPAGE{1@WXPAGrXX(k_X T Ti1@RFORM-FEE6 ( i1@SCR#{ALLOT XTEXT1@WPR-STAR6 B TT+( XT_XDXi1@XPR-STO6T+(  Ti2@XTEXT6Sw>~! ,YTO.Yi2@YP6XXwdi2@W2P6wa$. %:S=d:$.Sd:$.d4$.:TCi2@OY2SC6t=tw\Y ;UYY i3@2YP-HEADIN6tP#Page# _Xa.t3i3@YP-FOOTIN6:tP#Forth 83 ModellXi3@ZPR-PAG6YXTXB\vZwdYB`ZiZi3@BZPR-S-PAG6YXTXB\ZwBYdZiZi3@~ZPR-FLUS6XwZXZ7YZQX7YOi4@XSHO6X4\&[; Y[;7YX`"[LZ[Z.[LZXi4@MSHO6X4\m[; YY[;7Y;)M7YX`i[ZG[Zu[ZXi4@eXLISTIN6Q;[i@XBUGGINǝ6@{[TASKINǝ97@;L.I6w;-wQdti7@;SLO{7@N;RE{7@[(DEBUG6;B,; ;;i7@['UNNES64wi`\i8@[TRAC6%, [[\[T[TP# --> ,CC`\[[F`\i+[\Q`$Unbugi;i8@[DEBU6#_w\[i8@[RESUM6[B;i:@\TASK6'| **_<*q?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijk̉91'Ĝӓ8]|֢d@V||8B-ޮ*"ĜG2c91'9o$=?3'Ĝ9!εxI ?>/:J?yB=O7毘sB7|Wۿ?#n05szǜa.`kj2n +>cM`nYoW_ "eNnc~|nbN̉9!{, >4qu%J(QD%J(QD%J(W y4iUt~B%J(QD%J(Q _og  (QD%J(QD%JćnE?D%J(QD%J(QD%J9! CGq{vPD%J(QD%J(QDeNXA|8O|_v|9%J(QD%J(QD0'w[A|M@%J(QD%J(QD%J(w /ć(QD%J(QD%J(QD { )O><>-|> ޶ qWt']-', _ޠ-/~{7, ˛7o⢲-\-'m`!7/o~#*ےg~#ËT2'wd h*cJĞ];ʡ` ͛7@e[2 qqه?JN& u&| 'BpP2~]1'EvUm 8ȫ˗lK-p*%'B9!.Y`VF\ xۢ^FS;gPb̀!B)Y$6M2.LКqwĜM2Qhܢ V|#+),dꂅ愸0N%sbNg^Bo`}a.0l#.X7}J0Z愸mxr 4sR55x5߿F^٫W愸;55 p HA@hW^ZdUo[  ^9MS\2'ąxu^&{U ̀5sUIo9!.U!nN)6_a^YoB1'ą<.sB\tSpVȶ=G3%m sB\<9EWR@@Wn3+ 8m h9!.*ےQuv HA`EMƑj6ae08*sB\|$.XQ,˷0d@ )H 6UH`N= C3I!:qL( q(sB\la @B;,d:a.P2~]) CʜtJ`,mQW촠KliNdN ̜QN\3H)^Ex曃 愸Pjmj`{!X%p_Iewd0cN'q[/ ޴& .;ĭ0 .;ĜOt[~WqYkjs 8x^ qr?͟{c{=sbN`q?C{:?1'愸g  G LI'qxQA`7b PP`޹J 4@ /Pg“8])sB\;gP0 f *Lw+z ^2'Ed({" +ܑQy>ǝ7aƜo gIK`2Th|ΐCu0ڄ}N ZSfaN;2}%l ~ PPq*;2ꂅ2'E|S8K5FTKĜ j8 <9{` }bNP<*uvHA44%6εԖp*bN TgU+HAWP-  |v['sB\HA 8eJP;oRxфv aN oLc_ޣ䕠d[HAW+P㫜!0s;8)sB\l%ZH7&@Vu9{n)7apObf l HA@vU#[ (.CeZO-ݑyCzyCz_>. crbNct~?O{ <4u#nC[d {ĜM&o]f-f2mK-$a.J`2TVBʐb .Cen-j2Ϩc m =sB\.C[o:.Ce@wdMbN3*%p+@Þ )3 Otڄ;sB\xdoW_$ 7޶j2n +8m kj9!.qdZ&gW:фG2c{o(_2'̉"Xx 70ήpه_ޔsbN'qEɸ55qdZ]U~E?/7 q0N8ϟ=._0_0'ĜUg  Ĝ xr 87B{8@#$9'gYbN  -|3H0%0 |3Ia@-sB\xEH(& -?2uMuv* q!9RSH!arήP091'ņ91'EW8kB /xr 8ŭw `-hWRuBĜrYS[^mPgjC.X^'˚ZK qq[!HA4x¸U!!h}%450N@Sx"eN 'ڄHœnsB\dN-Zk8BnK e 4愸!04xgQ&dN q & u&!Ю6E{" Bxr P2'ą| v!Ul 3HA]mH BʜZ5 Ϊ/a.PgE!VYf@w>W^\-sB\HA0$ H Y'g6aN]a RaN ՆT]=A.kjKĜ+A-Fx{ qa ]A yNÇOJ qqĞ`!Uo.!syNÇO_T^sbN'qEɸ55qdZ]U~E?/G愸x>_sbN q bm}'Ĝ]A A鎌hlF!5)~ <9sB\&2Z2'ĜSSQĜSr؇̉9!gWʜb B+2ʜb @ؿF91'˄:8+d91'Fi7}|p6kĜ[ ֋\b%!?)TZbN"(upV  " (mq[%愸hZ:8+ S -aHA@v*%h9!.T p x ;nxۢi !XKM0cN ) (T`6dMoYHAP1䇒9!.d472S-f& P10sF 0'̄R - RSS! x愸h o|#dq"d!*RZڐgW q!)AZBA BSx!uM) 2'ERJ {AU,m]RxJ oٺhLC ?y)$dx rR-sB\8[W\&Y!`b%0eo{d1l#.X愸puRHN +)EWxGHȼpʜ7~ ![ o*+eB2*P2w̉9!. &3ƑjqvU!+2'EGq{vsbN q7{ڣ=\m91'EWjRE|`, sbN)ZqvM{`2upV{ۖ9!V{;+/ |Gʜb t9CVНϕHA"x8/I)Me YsbN)@w>W^ts ̜Qe sB0TsB38\y!xh7!דּ+ ;2 dEo;+/R8Es9!uR@ R\y `^ͪȊ̉9![|oV{V{8eN?3@ή)04xg]٩2 dE9!fU dE)B- @aN?( R91' 8НϕRHGv*4aHA gv*SUþC ; ٩2 dEOotsZxB !8jC.X7ĜCe[@ `oV@Va)3'ğ `K]A>@R0l#.XNOQS uR8 )-ζή@Ι`R2'ogpB N޶ )9!NpW6aW!uvT@ 7Ce[@ `oV@V3@ bN?mþjC.@WDA ¬`OhGM%uR8 @ K+3ddN 0ts-55R٩0'ği +S|P xR x@~E RF) WY0_ YgWĜ*ej$I)w>W3HA04xg]!;2 dEJV R55R2'Ĝ1'愸xr/ZȊϘ_S#GVUW¯0'š2ˏˉ91'愸c8O|_v|91'愸 ,n] `f!pK-n Y! xr 愸MX?Ĝ0 dE,Mh {Z9['< 9X472eN&Xq"H- RT2'愸.}Ȱ~ h`թax{ (6sB\`?쳷_Qg3)QЮZ arή0'( ǜ⪮9ܒAF(!NFJ]A^9!.^WūƛW`@ J+3\2'Ŭ`Edx@W`@ sY愸Ԉ-J:q>K`!3'ą)J6rN xndN q1Zd'd|V4SACGE!Zr@sdN=ήp뤀ǫ ՇW%f"pVhE9!.oa6dNZ/!Aݿ 8W@Ĝo g Rx8])Le+[2'愸88!3T+7نa472 heLlK-dN6TL*i ໓YP J!?BSx! qQ)s Cmτ7BF!{MZjK]A qф_791'wψV!)~ŜE|> KYbNYB9!g| o29!gB|> Ĝq1 )Mo nЈhBKp k-sbN LQ!472hŞP) -`ϜB ¬`G^}aN ?NA?*w3Y/ ?f!\3w̉9!. &3ƑjqvU!+1'?nbN̉9!.|_C&Ĝ/h~aN 1@)S#@ BZ^:@V1'愸mOt[@c 6εx@Pg^`v57gWqdZ&gW,! 1'EmZ/rY&W-WayU-0No"_S#@:EbF*Chדּ+xY! q!!_S#M[^ᑝ `; ;+R愸3HA+*6;ogҒ91'|6s9_dNan%$@଺-55WxaN )" p*6y>^@W͗Mʺ Io8Juv'HկdB ;+/ts@v*psE3A9!.fΨ2 dN-55Nଐ B aHA qi +@A Bv*-\S`T'x^!1'@~EPH0% Z2d0Ĝrwήx‹PBfζHТ ƐήB WLg!AIfHկHfR ̂aN )M%qHA@~Ep PB BؿF^)sB\4٫RUQxV5M!Aɛ`ي9!.@᫳+ )Yj1 R|hW-+6!U4)f& @hUd H N⢲2-0 RR+SBegIZ8eNYlނ i*%sbNYx $EhP= Нϕ`R`!w9!.55H @/}xgcld gq[ĜIZz,THAa2^ jW}޶;+/b )B T R YgWLYQ VT9!.YUYQ@ I@WͪȊo2'\yq@ P 9&CZ:,g愸fU dEK+ʂ0\yqv)IZ ) 1'ą! v!Ulɜ1'愸xr/ZȊϘ_S#GVUW¯obs71'ĜUI0'愸_S#@G7vOgĜHկH0'Npοc?Մq9uiܾ<sBfH*cA BؿFsB|d wW%=·4a~П;͐T*&{U kj91'wN-xo/?wc7noqi~Ս˞9!~3$ !_S#̉9!SV5Y,?`/0]]a;MY?MO=sBV_ WLÜYTͪȊ2'o2V * Juv)1w̉9!. &3ƑjqvU!~+#sB\_C&Ĝ✽*ia;Mc{8`sa;Mg\ήD)ϮsB<>#U"œ;KSzlc\Nvy1v7CRR,ݢ^aaN SK}Mq9v0{-wibNd >UM^9!~3$ -UĜydtzJ7X7 l񬟦[ibNփ6JAHկz9CfN3oVA|0 fެ ;pTa)`/ 77MY?RxG_nS-sBzjc3YUYaNXoVP  RYUYQ愈v_=|sys;ogbNMhi#;hGM%~ `9!~3$ !_S#̉9!sw(wq==a~q9uiܾ<sBF7ϥ d0*6;og^9!~3$ !_S#̉9!kQ E?.{tO{Ʃvq{/Ĝ s)٩ d;og^9!~3$ !_S#̉91',<,YoB^NƐj%d[gWĜ,ݾ$s*ή&{0_^9t9!.f!pK-- WHA+Kb U"8HK!/"_S#%sbNYxXE*1Z/d[gW+ WH`N )ꜽϨ  {Ը9!.m] ZdU0 -dZgN$d@)nd[3M3愸x5߿F^Mp DsU!=dʜw8Ϥmbf' j2UK91'œ8]|֢d@V||8B-ޮ*"o~Ex|˜g/燉91'愸|L&Ĝb R)h*c I, WĜ Vh'̉9! jWHAhW-\SRTƐ` )B˜+f-sbN)٩5>@ BؿF sbN)mMٺHAPu%L̉9!7PI]_ xz"TRWĜb _ YY+4 9;8+ FsBLCeۿ8ۺK0Ce[Yszǜa.`kj2n +>cM`nYoW_ "<sB\m7ΗZqsbN+jۍ%n/'Ĝ7t3ִ?nWۮv'q@O8_2'v >@ڐ 'НϕjѐT*CZeA|8ՆT]̉9!.n|]Kg`J7[_-8_c8uc{t_vsBgg`jS5pjy)OWe71'zV Rfm h|θ 6₅^qj7j + *$@ ¬`ѐT*CZeA9;YeqI)ެ(sbNUšv\:-]rqi/q?nWۮkf\ jC.XH B-n~TAfNGCRkfҝϕj;ĜOt[~WqYkjs 8x] q1}~r~܍ĜsB\<)g/_-8_N̉9!.nk6XӮ6k`;tO{|z9!z9l>d9!״K"x4$ -|91'ōZ/ ִ{l1}~r~`Nǵ^_ {rv%͏* ]m6ϥ Xŝ1'ģ!U)nqsẺ9!.nZUk6XϼYkfS5=Zq{p؞>M qqc[Uk6XϼYkfS5=Zq{eq{v lO&x\AU/}ؓ+4sZP{͜7+ >d0,gxQ9!g)";8EA , sBzjS%~T6ެ6W;}۔eko 2Ĝy >w Y0fU d9!imYmCe[HC*3HAfU dE־mu o᫝ΛKy>sBuv*X尹>=.N}a:9!z9l>dx4$ A/}ȯ 5Dv*sbN'qEɸ55qdZ]U~E.7 qqq_3jyrbN̉9!.7i~џ8Sˉ91'͊k6X&ԛkSߡ{pc~-.N}fNǵ^_ 9!׵ ڄ\B/} hH*cA BmBMF.qsEeĜ7u% 5z9l ֵ i~џϘ/98/SqqW)z9CfNm &dw>WĜڄz\ BmBMF.>dx4$ 犘sB\jjk z9lSlE>3'Z/ Rr؇̜ڄz\ BmBMF.>dx4$`]fNsB\<9l-]M dg̍#++BvW?2'a:_-8_N̉91' pWs7ΗsbNiW5p껫 {lq9!״T`CK hH*cA B RS -1'愸iZ5jN}wuZ{=8SEϜkf\ Bv*%x4$ i RS -1'愸i7XӮ6k/iM ִ9!.niW54i ִ9!.niW54M ִ9!.n5XӮ6k/iZ5XӮ6kĜ7M5jvyԝXq9!״A B R,";sBHAtTsB\&bMlʲM ]m6ϳSQA i + o'&R˜2V XEv*̉9!.n ݑQšv\czlq9!״T (1'ģ!UKNB ;2J%Ü&{S\:-=qNa9c~-1':; s)٩0'ģ!U)٫ ;TsB\ 4`MlNes ܏.?84Η0NsBCH9!>; TѐT* ȊD0.3'愸?]m6XT6|S?M|qim7Η8Sǜkf\ jC.XH7B* ٩l x8/.Xdœ2V T@V%u91'M&kfs ܏8OSa:x\Ӯ6RSaNGCRR2ٕ3HAN91'ōk:;5p껫)C_vc8u &VÞ R(@V 27J& r9!٩lKAN9! Ie">HAR2 d 7TԾH9sbN+ET6NKtO{,88a~-1'n[ {23HALYX+`kx\gA|.!;x4$ J5e d@ /sB\ nz ٩;gv\˩4.?avqۍ%1'gA|UC㼸` sBHA]mH['ګ8sbN'qEɸ55qdZ]U~E. sB\tuƏ=jyrbN̉9!.|tuƏ=jyrbN qqcuv*iW5p/si=8SEϜT6ϥ dZbN5jA|.-|` a)٩ѐT*T`CK3!n8Ĝ7ξiNe5jNa{=q~q[ƩrgNuv*RS -1'v >`w>WY0дa)٩ѐT*T`CK3!n85̉9!.nlluv*,ԝ?|y sB<XE| n0xi gW]mHh)P˜⦥kfuv*kE] {l\iKܟϰa:x\Ӯ6RhWRuBZ$!kx\gA|.!;x4$ !;:) aή@ڐ VR&9cN q0N_w571߿F07Pʯۅ_9!..Nz_-8_N̉91'7ũ1]ˉ91'ō0`MlqBt]b͟=sB RhWRu)dx4$ p3x\b*B =RuJ̉9!.nִk؞ztO{O.N4E ]m7RfΨv!U,sBHA9ՆT] ]mn (5]mH˜2Vn)G{X s딘;ĜOt[~WqYkjs 8x]愸8ϗi~܍ĜsB\jC.Xx\Ӯ6,HA]mH=|P[' hM9jwuv hH*cA ! !{Ю6eN qqm5j)8? a:?84ΗsBXf `Aw>W^H! dn \ RWjC.X7ts0jC.XJ~&d a sBﴫ `!НϕRHu91'M0XӮ6,ix0?a~-a~ũqqMlʲ v!UBZx4$`] ՆT] B{A 2N R|a)3gT``]jC.X7ts0jC.XJ~&d a sBﴫ `!6 Ả9!.n k]m6XӮ6]mnp OUףrqi/'c7Η3sBHARjC.Xx\Ӯ6) `!{\yn]m6ex\Ӯ6o7RhWRuBB- B) hH*cA ! A)S#Ԃv!U,sbNڄŚvٔey OUףrqi/'L\nqMlʲ v!UB 1'ģ!U)w>W0U@ڐ 91'm2a-kfS50vit<.?84Η't9!Bl v!U, oaM'd`qMlʲ v!U|P k]m6;+/̜2V \ RWjC.X91'œ8]|֢d@V||8B-ޮ*"o~ExȜ;ZqsbNC5yѮ6iWMYmjũeǜkGl 8+"ՆT]pugW`&/hBe9!״ͦ,KRhWRu* X;fq)sB<XE|psE3HA^ `;ĜOt[~WqYkjs 8x][愸؞鳾ϸZqsbN?oi>ˉ91'Śvٔey l_q041'vٔe @ =eNGCRR ia)m`sB\|vٔey LW/a8ucyeqMlʲ VÞ2'ģ!U)ʂ0b|#.XĜ75j)xvuƋglq{,OsBN=c8ucyeqMlKAհ' hH*cA ! &˜f kզ,k{}|Ə='a:ﱼz?M ]m6ϥ jؓQx4$ VYfl+uw`j2^\̉9!.nN>v)x9vǩG|Ə='a:ﱼz?M ]m6ϥ jؓQx4$ VYf@&W d`sB\|A]m6@˱>N={lz?1'v >`aO9! Ie">HA;uJp`fհ'Ü1'愸xr/ZȊϘ_S#GVUW¯o̜r{܍ĜsB\HAdWR A8bN qq^`MlVfיv=wbz9uq9!״9!Jl x#ήPueNu]m6R2ٕii,p C*3gW hH*cAqvo``δ͆91'ō9iW5z֟3>nW=8?ݞ?1'v >b]1'ģ!U)^Єf0sFMo sbN0XӮ6kt{ڞ_ƏC0v:#>nW=sBЊ sB<XE|b]PmHɊ, RZ1w̉9!. &3ƑjqvU!~+?2'Ÿ~_uWn/'Ĝ 0./WUˉ91'ō!4}MaS}OtũqdNǵ4A\HAp*nZ* B֛֕\3'l;+X - 3 7-|Na]fNGCRRhWRuosB\Yv:uk4.;lq{| %Xq=sBnWct~_ݸĜkf\ jC.X qVeNǵ:u\ BWܴ4U87-B%u% hH*c̜F:ukO=q:eӸp=sB<ٯRB%u%Pg⦥)Tmi*+fNGCReĜ7Eݿִ8OSqq]Ov|i\~i\>2'v >@ڐ 9! Ie">HAdWR0'愸e/ ִ8OSqq]Ov|i\~i\qMlKA]mH˜2V d+)sB\ЮΡ%iW5p~=m]0.qq]Ov|i\~i\>2'v >@ڐ 9! Ie">HANa7BFsB\ЮΡkfs nOsן&K\e׿8S8_jpqgx\Ӯ6RhWRu2'ģ!U)٩ F(sbN~:;5jHAa2sbN79uv*kxxO^?͟a8ut{ڞ41':; Tfh o|#dB/}Ȱ~ x4$ A/}sbN'qEɸ55qdZ]U~E.o~<jyrbN̉9!.>ocmˉ91'M:g%U3'zf@)3 9! Ie">x\&Y!Ü&d3\~xq=~ qvŜ2VHAh o|#dpЊ5sbN[>47X7ٯ?\Occi{9='Lݩ>cNuSlRH@] nZfNǵ:u\ BWܴ4U87-B%u% hH*cA BSx!gVdsB\mvZCe80.{ܟϰx1?aNsB<5T B u%PpWY*޶޴p9! Ie">HAp*szǜa.`kj2n +>cM`nYoW_ "9!.S?܍ĜsB\}[S?܍Ĝ&b=~5po_`ē8]`_=CϜm \&qv*uM9! Ie">HALĜf\ӹǧSp8_2'ģ!U2sbN޶Xj\x/'Lgqma[ {23(߶ hH*cA =VYQ91'ō94Xj\˫g/X_9zKSLgcNǵ Rl5 `CK 9 1'ģ!U)!հ'0 -)$/ĜfοYl~0?oqmqĜ2V̉9!.n&iW5p껫rBGS?M|ɜkf\ jC.XH! aƜ2Vp3HA"8uA 2N  Rr؇_⟦̂^9!îAؿF9!0N0 ٩9!izyf@ 8K%ŭtsZx Of@ 8K%ŭ;+/›U5eNY0P1ή`CKʜ4.;`Њ lhI/0 3 upV91' \Ó8]0'ģ!UKwd`H*c9ϖ9! Ie">HAհ'0j + ߶2'愸nR2&m0& 7NeN5  Ӏͽo͵k͎!,5Q`>Y(H?!Z!9^#V!7pS!9^#V##^#V͖Z[!q!|!l!"9"!!9 !9s#r!9^#Vi !9s#r*|!!9^#V!! Vu[XLISP version 1.1 ͽo!"!"ͽo!|ʉ !9s#rgp!D!DͼÆ6!9^#VI!!9^#V} \ !DÆ;q'().;'"-1extra right parenmisplaced dotinvalid characterͽo  pͽo!*"!! 9 !9s#r!"!!9s#r!9^#V!9s#r !9s#r!7p!9^#V!) p!9^#V!.oʏ!"!9~#e!D! 9^#V!s#r ) pʌ!"D!Za!9s#r!9~#º!9^#V! 9s#r!9^#V! 9^#V!s#r!9^#V##s#r !"!9^#V"!*q"! 9^#Vinvalid dotted pairinvalid dotted pairͽo!!u9 !y9s#r!"!! 9s#rv! 9~#fo#s#r+! 9^#V!d6pʬ ! 9s#r!" pʬ! 9^#VÈ ! 9s#rn!! 9s#rÅ! ! 9s#rÅ! ! 9s#rÅ! ! 9s#rÅ! 9^#V!0pk! 9^#V!7pk! 9^#V!!9s#r !9s#r !9s#r!9^#V)))! 9^#V))))))!9~#fo! 9s#rÅ;qenrtÓ;q\! 9^#V! 9^#V!9se!! 9^#V!9s!Za!u9s#r!9kb!w9^#V!s#r!y9^#V"!u9^#Vͽo!!9s#r!" !9s#rM!9^#V! ʹp!9~#fo!9s#r!9^#V} d!D!Za!9s#r!9^#V!9~#foʹp! 9^#V##s#r!9^#Vbadly formed numberͽo!F!9^#Vͮ!*|!Za"!Jkb*##s#r!Za*s#r**^#V##s#r*^#V!9s#rF!9^#V!^#V!9s#r!9~#!9^#V##~#k!Qqÿ!9^#V##^#V##~#Œ!]qÿ!9^#V!9^#V##^#V##^#Vͮ¿!9^#V##^#V1!Za!9s#r*^#V!9^#V!s#r!9^#V*s#r!Za!9^#V##s#r!9^#Vkb!9^#V##^#V##s#r!9^#V##^#Vniloblistbad oblist bad oblist symbol ͽo!!9 ! 9s#r!"!Za!9s#r!Ͳ!9^#V##s#r!Za!9^#V!s#r!9^#V!^#V##s#r! 9^#V"!9^#Vquoteͽo !9s!9s#r!9^#V!+o8 !9^#V!-ob b !9^#V!+oY !\ !!!9s#rÁ !9~#fo#s#r+!9^#V!d6pʱ } ʱ !9^#V! 9sp !!9^#V! 9s!9Ͳͽo ב !" ͽo "ͽo*!9s#r!p !"& *ͼo!9s#r!9^#V!of *7pc !! Vu!Z!o Df !9^#Vinput abortedͽo! 9^#Vב ! 9^#V! 6p ! 9^#V!(o ! 9^#V!)o ! 9^#V!;o ! 9^#V!.o ! 9^#V!"o ! 9^#V!'o !!ͽo!!9 ! 9s#r!9Ͳ!9s#r!9^#Vͳ!9^#Vi !9s#r! 9^#V"!9^#Vͽo! 9~#| !! 9^#V^ù ! 9^#V͉ ! 9^#V ! 9^#V! D ;q     can't evaluate expressionͽo*!9s#r!9!9s#r! !9~#fo##s#r++!9^#V~#ʀ !!9^#V^#Vs!!9^#V^#V##s#r*!9^#V^#V!s#r!9^#V^#V" !9^#Vͽo!!9!9 !9s#r!9^#V##^#V!9s#r!9^#V!^#V!9s#r!9^#V͌!9^#Vi !9s#rz ! D!9^#V^ !9^#V!9^#V##^#Vͼo!9s#rÒ !9^#V!9^#V!9s#rÒ !9^#V!9^#VB!9s#rÒ ! DÒ ;q 4 T t !9^#V"ͷ!9^#Vnull functionbad functionͽo!9^#V]C!9s#rz !9^#V##^#V!9^#V!^#Vͽo!! 9 !9s#r!9^#V##^#V!9s#rzQ!9^#V^! pQ!D*9!9s#r!9^#V!9^#V!9^#VD!9^#V!^#V! 9s#r! 9~#ʰ! 9Ͳ!9s#rÒ!9^#Ve!9^#V"!9^#Vbad formal argument listͽo!!9!9!9 !9!9s#r! 9^#V!9s#r!"9^#V! 9s#r!9~#ʛ! 9~#ʛ!9^#V##^#V*–o›! 9Ͳ!9s#r!9^#V!9^#V##^#V!9^#V!^#V!9s#r-!9~#!9^#V##^#V*–o!9^#V!^#V!9s#rz!!9^#V##^#Vû!9^#V"!9^#V! 9~#fo p!Dincorrect number of arguments to a functionͽo! 9^#V!q!e!Z!"!!lerror: %s ͽo*#"d6pʶ! 9^#V*)s#rͽo*+"#ͽo*+"#*p*d6p!*)^#V!! Vuͽo!9Ͳ"–!"! !;/evalͽo!!9^#Vnͽo!!9^#Vnͽo!!9!9 !9s#r!9^#V! 9s#r! 9~#!9^#V!9ͲÝ!9^#V"!ͽo!9~#!q!9^#V^ì!9^#V!q!!(Vu!9^#V!9s#r7!9^#V!9s#r!9~#!9^#V! 9^#V##^#V!9^#V!^#V!9s#rzʿ!9^#V^!oʚ!! Vuÿ!!.Vu!9^#V!9^#V)!!)Vu!9^#V##^#V!q!9^#V##^#V!q!9~#&!9^#V!^#V>!9^#V!^#V!q!9^#V!q*Ė!9^#V@!9s#rz{!D!!9^#V!9^#VA!9^#V! q;q AU()%s%d%sno print messageͽo!!"Vu!9~#fo#s#r+^!9s#rz!9^#V! 6pg!9^#V!\o!!\Vu!9^#V!!eVu!!nVu!!rVu!!tVu!!\Vu!9^#V!#q;q   \!!9^#VVu'!!"Vu%03oͽo!SͲ"Ė!@!Y!W!_printprintprincͽo{*9^#V"9*9!9~#fo p*9##^#V!9s#r!9^#V!^#V!9^#V##^#V!s#rmͽo!Za!9s#r*9!9^#V!s#r!9^#V"9!Za!9s#r!9^#V##s#r!9^#V!9^#V##s#r!9^#V!9^#V!s#rͽo*9! 9s#rl! 9^#V!^#V! 9s#r! 9^#V!9~#fo p! 9^#V##^#V!9s#r!9^#V##^#V!9s#r!9^#V!^#V!9s#r!9^#V!^#V!9^#V!s#r!9^#V! 9^#V!s#rWͽo!9^#VͲ!9s#r!Za!9^#V!s#r!9^#V!9^#V!^#V##s#rͽo!9^#VͲ!9s#r!Za!9^#V!s#r!9^#Vkb!9^#V!^#V!s#rͽo!9^#V~#¶!D!9^#V^#V##^#V!9s#r!9^#V^#V!^#V!9^#Vs#r!9^#Vtoo few argumentsͽo!9^#V͛!9s#r!9^#V!oZ!9~#W!9^#V^! pW!DÅ!9~#}!9^#V^!9~#fo pʅ!D!9^#Vbad argument typebad argument typeͽo!!9 ! 9s#r!9^#V͛!9s#r!9^#Vi !9s#r! 9^#V"!9^#Vͽo!9^#VͲ!9s#r!9^#V!o[!9~#X!9^#V^! pX!DÆ!9~#~!9^#V^!9~#fo pʆ!D!9^#Vbad argument typebad argument typeͽo! 9~#!Dtoo many argumentsͽo!9^#V]C!9s#rz!9^#V!9^#V##s#r,!9^#V!9^#V!s#rͽo!!9!9!9 !9!9s#r! 9^#V!9s#r!9! ! 9s#r!9Ͳ!9s#r!9^#Vͳ!9^#V!9^#V!9^#V"!9^#Vͽo!!9!9!9 !9!9s#r! 9^#V!9s#r!9!! 9s#r!9Ͳ!9s#r!9^#Vͳ!9^#V!9^#V!9^#V"!9^#Vͽo!9! !9s#r!9^#Vͳ!9^#V!^#V͖Z!9^#Vͽo!!9!9!9!9 ! 9!9s#r!&9^#V!9s#r!9!!9s#r!9!! 9s#r!Za!9s#r! 9^#V!9^#V##s#r!9^#V!9^#V!s#r!9^#V!9^#V!9^#V"!9^#Vͽo*Ɩ^zu!*Ɩ#"Ɩ+^ͽo*!9s#r!9~#ʻ!9! ^#V"Ɩ!a"!9^#Vͳ!9s#r!9^#V"!9^#Vͽo!!9!9 !9s#r!9^#V!9s#r!9s#r!!9s#r8!9^#V!9s#r!|r!9Ͳ*!r!9~#o!9Ͳ!9s#rQ*!9^#V"!9^#Vͽo!! 9!9 !9s#r!9^#V! 9s#r! 9! ##^#V!9s#r! 9^#V!9s#r!!9s#r!9~#fo+s#r#!9^#V!7p;! 9~#*! 9Ͳ!9s#r !9^#V! 9s#r!9^#V"!9^#Vͽo!!9!9!9! 9!(9 ! 9!$9s#r!.9^#V! 9s#r! 9!!9s#r!9^#V!^#V!9s#r! 9! !9s#r! 9^#V!9s#r!!9s#r!9~#p!9^#V^! p!D!9^#V##^#V!9^#V!s#r! 9~#J! 9Ͳ!9s#r,!9^#V!^#V!9s#r!9^#V! 9s#r!$9^#V"!9^#V!9^#V!s#r!9^#Vbad node type in listͽo!! 9!9!9!"9 ! 9! 9s#r!*9^#V!9s#r!9Ͳ!9s#r!9!!9s#r!9~#6 !9!! 9s#rA !! 9s#r!9^#Vͳ!9^#V*!!9s#r!9^#V!9s#r!9~#ʚ !9~#ʗ !9Ͳ!9s#ry ø ! 9~#ʸ ! 9Ͳ!9s#rÚ ! 9^#V"!9^#Vͽo! 9~# ! 9^#V!~# !!D! 9^#V##^#Vincorrect number of argumentsͽoͽo! 9~#=!!! 9^#V^~!! 9^#V##^#V! p! 9^#V!^#V  p!;qL!`!z!ͽo!+"Ͳ!-!H"!!L"!Q!Q"!!V"! !["!!a"!!g"!O!n"!!v"!!|"!!!!"Copyright-1983-by-David-Betzsetsetqloadreadquotewhilerepeatforeachdefunifexitͽo!! 9!9!9 !9!9s#r!$9^#V!9s#r!!9s#r"!9^#V!9s#r!9~#L#!9Ͳ! 9s#r!Za!9s#r!9~##!9^#V!9s#r3#!9^#V!9^#V!s#r! 9^#V!9^#V##s#r"!9^#V"!9^#Vͽo!!9!9 !9s#r!9^#V!9s#r!!9s#r!9~##!9!!9s#r!9Ͳ#!9~##!9Ͳ!9s#r##Ú#!9^#V"!9^#Vͽo!9Ͳ!9s#rz-$!9^#V^! p1$*Ȗ!ͽo! 9ͲJ$*Ȗ!ͽo!9Ͳ!9s#rzm$!!9^#V^ç$*ʖ*̖*Ζ*Ж*Җ*Ԗ*֖*ؖ!$D$;q|$$$$$$$$$Bad node.ͽo! 9Ͳ$$*Ȗ!ͽo! 9~# %! 9^#V^!o %!#%!ͽo!!9!9!9 !9!9s#r!"9^#V!9s#r!9Ͳ!9s#r!9Ͳ!9s#r!9^#Vͳ!9^#V!9^#V%ʮ%*Ȗ!9s#rù%!!9s#r!9^#V"!9^#Vͽo! 9~#.&! 9^#V^!o.&!9~#.&!9^#V^!o.&!9^#V##^#V!9^#V##^#Vo! 9^#V!9~#fooͽo!!9!9!9 !9!9s#r!"9^#V!9s#r!9Ͳ!9s#r!9Ͳ!9s#r!9^#Vͳ!9^#V!9^#V&&*Ȗ!9s#r&!!9s#r!9^#V"!9^#Vͽo!9^#V!9^#V% '!! 9^#V$}'!9^#V$}'!9^#V##^#V!9^#V##^#V&s'!9^#V!^#V!9^#V!^#V&y'!|'!!ͽo!9! !9s#rz©'!'D!9^#Vͳ!9^#V##^#Vnull listͽo!9! !9s#rz'!(D!9^#Vͳ!9^#V!^#Vnull listͽo!!9!9 !9s#r!9^#V!9s#r!9! ##^#V!9s#r!6pv(!!)D!9! !9s#rz™(!2)D!9^#Vͳù(!9~#fo+s#r#!9^#V!7p)!9^#V!^#V!9s#r!9~#(!9^#V^! p)!C)Dè(!9^#V"!9^#V##^#Vinvalid argumentinvalid argumentinvalid argumentͽo!! 9 !9s#r!9! ! 9s#r!9^#Vͳ!!9s#rð)!9~#fo#s#r+! 9~#)! 9^#V!^#V! 9s#rß)!9^#V"!Za!9s#r!9^#V!9^#V##s#r!9^#Vͽo!!9!9!9! 9 ! 9!9s#r!(9^#V!9s#r!9~#+!9! !9s#r!9~# +!9^#V^!o +!Za!9s#r!9~#°*!9^#V!9s#r*!9^#V!9^#V!s#r!9^#V##^#V!9^#V##s#r!9^#V!9s#r!9^#V!^#V!9s#rg*!9~#+!2+DG*!9^#V"!9^#Vbad listͽo!!9!9 !9s#r!9! !9s#r!9^#Vͳ!9~#,!9^#V^!o,!Za!9s#r!9^#V##^#V!9^#V##s#r!9^#V!9^#V!s#r!9^#V!9s#r!9^#V!^#V!9s#r~+!9~#,!+,D!9^#V"!9^#Vbad listͽo!!9!9!9 !9!9s#r!"9^#V!9s#r!9Ͳ!9s#r!9Ͳ!9s#r!9^#Vͳ!Za!9s#r!9^#V!9^#V##s#r!9^#V!9^#V!s#r!9^#V"!9^#Vͽo!/.Ͳ"Ȗ!1.Ͳ"ʖ!6.Ͳ"̖!;.Ͳ"Ζ!?.Ͳ"Ж!C.Ͳ"Җ!G.Ͳ"Ԗ!K.Ͳ"֖!P.Ͳ"ؖ!'!U.!'!Z.!(!_.!#!c.!$%!h.!A&!k.!5$!q.!N$!v.!$!{.!`#!.!"!.!4,!.!'!.!'!.! *!.!;+!.!T)!.tSUBRLISTSYMINTSTROBJFPTRKMAPheadtailnthatomeqequalnulltypelistpcondlistconscarcdrappendreverselengthͽo! 9^#V!9~#foͽo!.!9^#VV1ͽo! 9^#V!9~#foqͽo!.!9^#VV1ͽo! 9^#V!9~#foʹpͽo! /!9^#VV1ͽo! 9^#V!9~#fooͽo!9/!9^#VV1ͽo! 9^#V!9~#foPpͽo!h/!9^#VV1ͽo! 9^#V!9~#foͬoͽo!/!9^#VV1ͽo! 9^#V!9~#fopͽo!/!9^#VV1ͽo!9! ##^#V!9s#r!9^#Vͳ!Za!9s#r!9^#Vʹo!9^#V##s#r!9^#Vͽo!9! ##^#V!9s#r!9^#Vͳ!Za!9s#r!9^#V!pʩ0!9^#Vô0!9^#Vp!9^#V##s#r!9^#Vͽo! 9^#V!9~#fo6p0! 9^#V0!9^#Vͽo!0!9^#VV1ͽo! 9^#V!9~#fo7p61! 9^#V>1!9^#Vͽo!1!9^#VV1ͽo!!9 !9s#r!9^#V!9s#r!!9s#r!!9s#r!9~#2!9! ##^#V!9s#r!9~#1!9^#V!9s#r!!9s#r2!9^#V!9^#V!"9^#Vͼo!9s#rÕ1!Za! 9s#r!9^#V! 9^#V##s#r!9^#V"! 9^#Vͽo!!9 ! 9s#r!9^#V!9s#r*ږ!9s#r!9~#ʜ2!9Ͳ™2!!9s#rÜ2u2! 9^#V"!9^#Vͽo!!9 ! 9s#r!9^#V!9s#r!!9s#r!9~# 3!9Ͳ3*ږ!9s#r 32! 9^#V"!9^#Vͽo!9Ͳ!9s#r!9^#Vͳ!9~#O3*ږ!ͽo! 9^#V!6pͽo!S3!9^#VO4ͽo! 9^#V!pͽo!}3!9^#VO4ͽo! 9^#V!oͽo!3!9^#VO4ͽo! 9^#V! pͽo!3!9^#VO4ͽo! 9^#V!pͽo!3!9^#VO4ͽo! 9^#V!7pͽo!%4!9^#VO4ͽo!! 9!9!9 !9!9s#r!&9^#V!9s#r!9Ͳ!9s#r!9^#V;5!9s#r!9Ͳ! 9s#r! 9^#V;5!9s#r!9^#Vͳ!9^#V!o)5!9^#V!o)5! 9^#V!^#V!9^#V!^#Vͮ!9s#rÔ5!9^#V!os5!9^#V!os5! 9^#V##^#V!9^#V##^#Vq!9s#rÔ5!9^#V! 9~#foqo!9s#r!9^#V"!9^#V!*9^#Vͼoʺ5*ږ!ͽo! 9~#5!! 9^#V^ͽo!.!7!.!7!"/!7!Q/!7!/! 7!/! 7!/!7!/!7!f3!7!3!7!3!7!3!7!4!7!84! 7!A2!"7!2!%7!3!(7!0!*7!?1!.7!S0!27!67Ͳ"ږ*ږ*ږs#r+-*/%&|~<<===!=>=>&&||!minmaxabstͽo! 9^#Vͳ!Za!*^#VFP##s#r*^#Vͽo!!Gl!9s#rz¢7!7q!9^#Vinsufficient memoryͽo!!9!9! 9 !9! 9s#r!*9^#V!9s#r!*^#VFP##^#V! 9s#r! 9~#;8! 9^#V^! p;8!9D!9! !9s#r!9! !9s#r!9^#Vͳ! 9^#V! 9s#r!9^#V!^#V!9s#rö8!9^#V)!9~#fo^#V! 9s#r!9^#V^z9!9~#fo#s#r+^!9s#r! 9^#V##^#V!9s#rz9x7! 9^#V##s#r!9s#r!9^#V^zE9!9^#V!9^#V)! 9~#fos#r9!9^#V)!9~#fo~#ʁ9!9^#V)!9~#fo^#V^! p9!Za!9^#V)! 9~#fos#rx7!9^#V)! 9~#fo^#V##s#rÙ8! 9^#V"*^#Vbad keymap objectͽo!!)9!19!99 !9!99s#r!C9^#V!59s#r!*^#VFP##^#V!%9s#r!%9~#j:!%9^#V^! pj:!;!9^#Ve!99^#V"*^#Vbad keymap objectempty keymapkey sequence too longbad keymapbad keymapͽo!9^#V!9s#rH=!9^#V!^#V!9s#r!9~#=!9^#V##^#V!9s#rz=!9^#V^!o=!9^#V!9^#V@!9s#rz=!9^#V!9^#V! 9^#VA3=!9^#Vͽo!!9^#V#n&ps!9^#V##^#V!9s#rz>!!9s#r">!9~#fo#s#r+!9^#V!6pʌ>!9^#V)!9~#fo~#ʉ>!9^#V)!9~#fo^#V^!oʉ>!9^#V)!9~#fo^#V=>ͽo!9^#V##^#V!9s#rz¬>!!9s#r>!9~#fo#s#r+!9^#V!6p5?!9^#V)!9~#fo~#2?!9^#V)!9~#fo^#V^!o2?!9^#V)!9~#fo^#V͍>ú>!9^#V##^#VTnͽo!?Ͳ"ܖ!!??!9s#r!?!9^#VE!87!?!9^#VͺJ!7!?!9^#VͺJ!9!?!9^#VͺJcurrentenvKeymapkeymapisnewkeyprocessͽo!9^#VͲ!9s#r!Za!9^#V!s#r!9s#r*ޖ!9^#V##s#r!iQ!9^#V!s#r!9^#V!7pʼ@!9^#V!Za!! 9^#VFP##s#r##s#r!9^#V!Za!! 9^#VFP##s#r##s#r*!!9^#VFP##s#r!9^#Vͽo!9^#V!9^#V##^#VrLͽo*9!9s#r!! 9!9!9 !9!9s#r!&9^#V!^#V!9s#r!9^#V^! pyA!9^#V^! pyA!BD!$9^#V***!9^#V^!oA!9^#VD!(9^#V!9^#V##^#Vͼo! 9s#r6B!(9^#V!9^#V##^#V!9^#VD!9^#V!^#V!9s#r!9~#6B!9Ͳ! 9s#rB!9^#Ve!&9^#V##^#V*oʮB! 9~#ʮB*! 9^#V@!9s#rzˆB!BD!(9^#V!9^#V!9^#VA! 9s#r!9^#V"! 9^#Vbad methodno method for the isnew messageͽo!9! !9^#V@!9s#rz#C!BCD!9^#V!9^#V!9^#VAno method for this messageͽo*^#V!9s#rzʢC!9^#V^!oʢC!9^#V!9^#V"M!ͽo!!9 ! 9s#r*^#V!9s#r!Za!9s#r!9^#V! 9^#V##s#r!!9^#VpHiQ! 9^#V!s#r! 9^#V"!9^#Vͽo!!9 ! 9s#r!9~#pD!9! !9s#r{D*!9s#r!9^#Vͳ*^#V!9s#r!9^#V!!9^#VFP##s#r!! 9^#VpH!Za!! 9^#VFP##s#r##s#r! 9^#V"!9^#Vͽo!!9^#VFP!9s#r!Za!9s#r!9^#V##^#V!9^#V!s#r!9^#V!9^#V##s#r!9^#VͲ!9^#V##s#rͽo!!9^#VFP!9s#r!9^#V##^#V!9s#rE!9^#V!^#V!9s#r!9~# F!9^#V##^#V!9s#r##^#V!9~#fooF!9^#VöE!Za!9s#r!9^#V##^#V!9^#V!s#r!9^#V! 9^#V##s#r!Za!9s#r!9^#V##s#r!9^#V!9^#V##s#r!9^#Vͽo!! 9!9!9!$9 ! 9!"9s#r!,9^#V!9s#r!9! !9s#r!9! !9s#r!9! ! 9s#r!9^#Vͳ*^#V!9s#r!9^#V! 9^#V́E!9s#r!Za!9s#r!9^#V!s#r!9^#V!9^#V##s#r! 9^#V!9^#V!s#r!"9^#V"!9^#Vͽo!!9^#V;I!9s#r!! 9^#VFP##^#V!9s#rzG!!9^#VpH!9s#r H!!9s#r*!Za!!9^#VFP##s#r##s#r!9^#V*!Za!!9^#VFP##s#r##s#r!9^#Vͽo!9^#V!9^#VFP##^#V!9s#rzH!9^#V^!oʾH!9^#V##^#V!HDH!bad value for instance variable countͽo!!9^#V;I!9s#r*iQ!!9^#VFP##s#r!9^#Vͽo!! 9 !9s#r!9! ! 9s#r!9^#Vͳ*^#V!9s#r!"! 9^#V!9s#rõI!9^#V!^#V!9s#r!9~#3J!9^#V^!o3J!9^#V##^#V!9s#rzJ!9^#V^! pJ!|JD!9^#V!9^#VNO(J!JD*#"+àI!9~#EJ!JD! 9^#V!9^#V! 9^#VFP##s#r!9^#V"!9^#Vbad variable listmultiply defined variablebad variable listͽo!9^#VͲ!9^#V́E!9s#r!Za!9^#V!s#r!9^#V!9^#V!^#V##s#rͽo! 9^#Vͳ*^#V##^#Vͽo! 9^#Vͳ*^#V!kKq*^#Vͽo! 9^#Vͳ!*^#V!^#V*^#Vͽo! 9^#Vͳ*^#Vͽo*^#V!9s#r!! 9^#V##^#VFP##^#V!9s#r!9! !9^#VrL!9s#rz8L!WLD!9^#V!9^#V! 9^#VAno method for this messageͽo!9^#V"*|M!*FP##^#V!9s#rûL!9^#V!^#V!9s#r!9~#M!9^#V##^#V!9s#rzM!9^#V##^#V!9~#fooM!9^#VæL!*FP##^#V"ÂL!ͽo!9^#V##^#V! 9s#r!!9^#VpH!9s#r!!9s#rM!!9^#VFP##^#V! 9s#r! 9~#*O!!9^#VpH!9~#foqs#r!6pʾM!.OD!9~#M*^#V!9^#VoM!!9s#r!!9s#r!!9^#VFP##^#V! 9s#r,N! 9^#V!^#V! 9s#r! 9~#ʎN!9~#zN! 9^#V##^#V!9~#foozN!9^#V!9~#fo!9^#VFP!9~#fo#s#r+N!9~#bM!!9s#r!!9^#VFP##^#V! 9s#rN! 9^#V!^#V! 9s#r! 9~#'O! 9^#V##^#V!9~#fooO!9^#V!9^#VP!9~#fo#s#r+NbM!error finding instance variableͽosO!!9^#VFP##^#V!9s#r!9~#BP!!9^#VFP##^#V!9s#ròO!9^#V!^#V!9s#r!9~#O!9^#V##^#V!9~#fooO!ÝO!!9^#VFP##^#V!9s#rP!9^#V!^#V!9s#r!9~#?P!9^#V##^#V!9~#foo > ͽo*Qp! 9~#foͬoFZ͵Y pFZ7Z!"Q!"!Y"!"ͽo*Sl!9s#r!pʍZ!Y"!"͵Y!9^#Vͽo!p9^#V!9!.!9͎Z!Z!9R![!9.r"S|Z!9![q!_Z"!".lsprcan't open "%s" for input ͽo!! 9 !9s#r!9^#V! 9s#r!!9s#r! 9~#ʋ[! 9! ^#V !9~#fos#rT[!9^#V"!Za!9s#r!9^#V!9^#V##s#r!9^#Vͽo!!9!9!9 !9!9s#r!(9^#V!9s#r!Za!9s#r!b!9s#r!9^#V!s#r!! 9^#Vs!9~#\!9! !9s#r!9^#V!^#V!9s#r!9^#V ! 9^#V ! 9s#r! 9^#Vb!9s#r!9^#V!9^#V!9^#Vͧb!9^#V!9^#VR!9s#r!9^#V!s#r9\!9^#V"!9^#Vͽo!!9!9! 9 !9! 9s#r!*9^#V!9s#r!9! !9s#r!9^#V!^#V!9s#r!9^#V !9s#r!9! ##^#V! 9s#r!9~#]!9! ##^#V! 9s#r]!9^#V! 9s#r!9^#Vͳ! 9^#V! 9~#fo!9~#fo7p^!9^#V! 9~#foq#! 9s#r! 9^#V!9~#fo7p?^!! 9s#r!! 9s#r!Za!9s#r! 9^#Vb!9s#r!9^#V!s#r! 9^#V+!9~#fos#r÷^!9~#fo#s#r+^!9~#fo#s#r+s! 9~#fo+s#r#|^Ï^!!9^#Vs! 9^#V"!9^#Vͽo!!9 ! 9s#r!Za!9s#r!9! ^#V^!9^#V##s#r!9^#Vͳ! 9^#V"!9^#Vͽo!!9 ! 9s#r!Za!9s#r!b!9s#r! 9^#V!s#r!9! ##^#V!9~#fo#s#r+s!!9^#Vs!9^#Vͳ! 9^#V"!9^#Vͽo!9! ^#V!9s#r!9^#Vͳ!Za!9s#r!9^#V!9^#V##s#r!9^#Vͽo!"9! ##^#V!`!9Az!"9^#Vͳ!Za!9s#r!9kb!9^#V!s#r!9^#V%dͽo! [!1a![!8a! ]!?a!^!Fa!e_!La!`!Pa!g`!Uastrlenstrcatsubstrasciichratoiitoaͽo*W!9s#rzŠa͹b*W!9s#rzŠa!aD!9^#V!^#V"W!*q"!9^#V!9^#Vs!!9^#V##s#r!!9^#V!s#r!9^#Vinsufficient node spaceͽo!9^#V#5m!9s#rzHb͹b!9^#V#5m!9s#rzHb!QbD!9^#Vinsufficient string spaceͽo!9^#V b!9s#r!9^#V!9^#V!9^#Vͽo! 9^#VTnͽob*Ac*Ac*9Ace*W|bng!*"ͽo*!9s#rc!9^#V!^#V!9s#r!9~#@c!!9^#V#n&ͬoscͽo!9~#Qc!!9s#r!9^#V!9s#r!|e!|ʏd!9^#V#^!ͬod!! 9^#V#n&ps!9^#Vjhd!! 9^#V#n&ps!9^#V!9s#r!9^#V!9s#r!9^#V##^#V!9s#r!9^#V!9^#V##s#rÌd!9^#Viʉd!! 9^#V#n&ͬos!9^#V!9s#r!9^#V!9s#r!9^#V!^#V!9s#r!9^#V!9^#V!s#rÌdÏdrc!|e!9~#¢d!9^#V#^!ͬoʀe!9^#Vi7e!!9^#V#n&ͬos!9^#V##^#V!9s#r!9^#V!9^#V##s#r!9^#V!^#V!9s#r!9^#V!9^#V!s#re!9^#V!9s#r!9^#V##^#V!9s#r!9^#V!9^#V##s#r!9^#V!9s#re!9^#V!9s#r!9^#V!^#V!9s#r!9^#V!9^#V!s#r!9^#V!9s#rÏdjcͽo!"W!"*U!9s#rf!9^#V##^#V!9s#r!9~#mg!!9s#r+f!9~#fo#s#r+!9^#V^#V!9^#V6pjg!9^#V!ʹp!9~#fo!9s#r#^!ͬoOg!9^#V^f!9^#V##~#¹f!9^#V!~#ʹf!9^#V!^#Vͧbg!9^#V##~#f!9^#V##^#Vͧbg!9^#V͍>g;qfffg!!9^#Vs!!9^#V##s#r*W!9^#V!s#r!9^#V"W!*"gg!!9^#V#n&ͬosfeͽo*;ʹp!Gl!9s#rzfh*;!9^#Vs#r*U!9^#V##s#r!9^#V"U!!9s#rg!9~#fo#s#r+!9^#V^#V!9^#V6pAh*W!9^#V!ʹp!9~#fos#r!9^#V!ʹp!9~#fo"Wg*;*"*;*"!*"!!ͽo! 9^#V^h!! 9^#V=!! 9^#V##^#V! p! 9^#V^!hqh;q~h~h~h~h~hhhhhbad node type (%d) found during left scan ͽo! 9^#V^\i!! 9^#V!^#V! p! 9^#V^!iqÃi;q(i(i(i(i(i,i,i,iAibad node type (%d) found during right scan ͽo!! Vu*!jq*!"jq*!3jq*;!Djq*!Ujq!! VuNodes: %d Free nodes: %d Segments: %d Allocate: %d Collections: %d ͽo! 9^#Vͳ͹b!ͽo!9~#›j!!9s#rõj!9! ##^#V!9s#r!9^#Vͳ!!9s#rj!9~#fo#s#r+!9^#V!9~#fo6pjngjj!Za!9s#r!9^#V! 9^#V##s#r!9^#Vͽo!9! ##^#V!9s#r!9^#Vͳ*;!9s#r!9^#V";!Za!9s#r!9^#V! 9^#V##s#r!9^#Vͽo! 9^#VͳͰi!ͽo!";!""""!fj!l!~j!l!-k!l!k!lgcexpandallocmemͽo!9^#V͌t!9s#r!o>l!!9^#Vͽo!9^#V!9~#foʹp!9s#r5m!9s#rz|l!!!9s#rÛl!9~#fo#s#r+!9^#V!9~#fopql!! 9^#V!9~#fosÊl!9^#Vs/m"1m"+m "-m{-m*1m*/m!"3mm!9^#V#S+m^#VS3m{+m"/ms#r*3m{/mͽo! 9^#V###}q#*]|mm!Y"]"Y!"[nfDMÄm`i`i^#VBK! ^#Vbqm! ^#Voʲm`i^#Vsrm`i##~#foqs#r! ^#V))PYDM! s#r"]`i`i*]o nnDM| n!xmͽo! 9^#V))qoDMo2n!`i! 9^#VsrTn*]ͽo! 9^#V!DM*]xnnf`iqqʕnnf`ipqnnfbqn`iqqnnf`ipqnonnf! ^#V))PYoonf##^#V`i##~#fos#rnf^#V`is#ronf`is#rnf))PYoVo! ^#V##~#fos#r`i^#Vsr^o`iut"]!to#|+!9^#V*~ږo*_9}|ږo*~"~|ɯ=go!9~#f/o|/g#"_|g}o|/g}/o^#V#DM!99`iͼo|z2bap:bp}zp}}p|p!}p|p!}|.p}|?>o&zo&|Hp}|>o&|o&z2bap:bp||lp/g}/o#zzp/W{/_zpDM!>2a))ҍp#}o|gҥp :a=2a…p}:a=2a…p}DM!>))p =¼p}}/o|/g#}|pp|g}o{_ q|q|7g}op{_ q)q}}o|gN#F# N#F#z1q{5q##^#VBK^#Vz[q#yUq###Cq#xPq#~#fo}|>?o&}|>o&{_ q|g}o…q|g}o~# xšq!9c~#µq!q|7ͽo!"i!9!9^#V!r͐zͽo! 9^#V"i!9!9^#V!r͐zͽo*i!9^#VVuͽo!DM`i~\r`i DMbqYr!8r!9^#V#^!+o!9^#V^Ts|ʎr!Ñr!!9^#V̀! s!oʲr!gs|r!r!p!9^#V̀! s!or!gs|r!s!p!9^#V̀! s!o(s!!c͐! ^!9gs!"I!;qrrwrarJs!! s!! s#r!`is#r! s#r! s#r`iͽo! 9^#VBK!͌t ps ps`i#DM+sãs!`isos`i! 9~#foos!! 9^#Vͽo! 9^#V!9~#fo+s#r!7p\t!9^#V͌tDM p\t`i#+s`i o\tt!u`ioʃt! 9~#fooʃt!! 9^#Vͽo! 9N#Fuͬoýt`i~#fo+s#r!Øt;qt tttͽo! 9N#F`i~ u!`i#DM+^Vuou!t!! Vuͽo! 9N#F`i~Ru!9^#V`i#DM+^VuoOu!$u!ͽo! 9N#F!9^#V!PYͬoDM`i oʙu! .woʙu!.wͽo! 9^#VuDMou! 9^#Vuou!qPYpͽo! 9N#F! ^#V`i^#Vbqʮv! ^!ͬov!!`in&ͬos`i~#Dvͫy! ^#V! ^#V! ^pʖv|}v!Àv!`in&ps!! ^#V`is#r! s#r`i~#fo#s#r+^!ͬoͽo!!9^#V.wͽo! 9N#F!9^#V.w6pw!!9^#V`i}q.w6p+w!`iͽo!9N#F! ^#V`i^#Vbqcw! 9^#V!ͬodx! 9^#V`i~#fo#s#r+s!ͬoͽo!!9^#Vdxͽo!DM`ipqw`i DMwäwͽo!9N#F!!9s#r`i~Rx! ^!ͬo x!dx!9s#r! ^!9~#fops#r! ^!ͬoRx*! ^#Vs#r! ^#V"!! s!9^#Vͽo! 9N#F! ^!ͬox! ^#V`i^#Vq! ^#V! ^.ox!`in&ps!!9^#V!oy!`in&ͬos!`is#r! s#r!`i~#yͫy! ^#V!oQy!!9! ^.oµx!9^#V! ^#V`is#r! ^#V! ^#V! s#r!`in&ps!9^#V`i~#fo#s#r+s!ͬoͽo!9N#F! ^#V!oy`i! s#r*|y*!9s#r*^#V"z! ^#V5m!9s#rzz!! s#ry!`in&ps!9^#V! s#rͽo! 9^#V"k!9!9^#V!rz͐z!*ksͽo! 9^#V*k#"k+s!ͬoͽo!N9N#F!P9^#V#+^zʢ%oʗ!!9s!!D9s#r! !B9s#r!!@9s#rn&-o{!!D9s#r#+^0o0{!0!B9s#r!!>9s#r#+^!0p{9p{!>9^#V! ʹp!>9s#r;{.o{!!@9s#r#+^!0p{9p{!@9^#V! ʹp!@9s#rÖ{lo|#+^!:9!T9~#fos#rj}ù|doL|!:9!T9~#fo##s#r++^#Vڕ}ù|eop|fop|goʖ|!9!T9~#fos#rù|!:9!T9~#fo##s#r++^#V̕}c~!9!!>9j͐!9!49s#rÊ~!:9jU͢8}!9! !>9j˒͐ͣ!9!49s#r!-!69~#fo+s#rs[}!9! !>9j͐ͣ!9!49s#rÊ~!9! !>9j͐!9!49s#rÊ~!9!!>9j͐!9!49s#rÊ~!:9j!49s#r !89s#râ~eo}!}!!B9^#V!o}!~!B9^#V!9! 9!9! 9!49s#r !89s#r!!@9s#râ~!:9j!9!69s#rsÊ~;qo|d|u^}x}s}e}f}c@~M~!9!49~#foq!89s#r!89^#V!@9~#fo7p~!@9^#V!89s#r!D9~#!>9~#fo+s#r#!89~#fo7p!B9^#V`iͼo~!!69s#r!69~#fo#s#r!49^#V~]!69^#V!@9~#fo6p]!49~#fo#s#r+^`iͼo!D9~#”!>9~#fo+s#r#!89~#fo7pʔ! `iͼogß`iͼoæzͽo!9N#F!9^#V`iڕ͐!9jͨPm^+s! 9`iڕͼj}ے¹ͽo!9N#F!9^#V! 9jU͢ʻ! 9jͬo! 9!9jU͓UR}`ipڕ͐!9jͨP)m^+s! 9`ipڕͼj}!9j͐ͣ!9*ڀͥqͥq*cDM*eo&ͥq o&ͥq*c*+++*eDM*g!9N#F#^#Vkb6#> 6 #=7>6#=@ : >s Aڭ[d@paڭ{ҭ`w# .ʎʧvʹw#w{o|g ʧʹw#˜!!|a{ !9^#V*~!9}|߁*~"~|!ͽo!!!r!:o&ͬos!Ƀ"!DM!"<*<6pʶ`i^! oK`i^! oS`i#DM/`i^zʶ`i^!>ot!È`i^!<og!`i#DM^! o§`i^! oʪÈ`i`i#DM~`i^! oՂ`i^! o!`i#DM+sï|!`!̀od!ʃ!!R!!R! !!.! ó`i*<#"<+)s#r`i#DM~ʳ`i^! o¡`i^! oʰ!`i#DM+só{"!*<Can't open file for redirection: ͽo͚w! 9~#! ďڀA:$$$.SUBͽo!"I!ͽo!con:CON:lst:LST:prn:PRN:pun:PUN:rdr:RDR:ͽo!9^#V!!9^#V̀ͽo!K!!9s#rò!9~#fo#s#r!9^#V! 6pԄnfoބÙ!"I!!DM`iDM`i~#!9^#V`i^#Vͮ! ^#V!9^#V!ͬo#!9s#r!9^#V!ͬoVn&u|V!"I!!9^#V!ͬo}n&u|}!"I!! ^#Vsrn&un&u!ut!9^#V!9^#V!9^#Vnfͼo! 9!6pڅ!!9^#Vͽo! 9^#V!6p! 9^#V! 7p!"I!! 9^#V)))KDM! ^#V! ^#Vͼo! 9s#r!! s! s! s`is!! s#r! 9^#Vͽo!>DM~`i&DM`inpqʙ!% ^zʣv!"I!!9^#V$ʾ!"I!!9^#V!ͬo؆!!o!9^#V!ͬo!o!"I!;!9^#V!ͬoo;!"I!!!! s#r!# s!$ s`i!9^#V!s#r!9^#V!ͬo#!% s!ͬoʕ!Ƈ!9^#V!s#rè!!9^#V!s#r!ͽo!!9^#V!%s!ͽo! 9N#F!!!% s!ͽo!ͽo! 9^#V!6p! 9^#V! 7p!!"I!! 9^#V)))KDM!9^#V!9^#V! ^#V`i^)n^#Vͼoͽo!DM!9^#V$~n$&!qDM!9~#foqqʨ!9^#VBK!9^#Vw!!9^#V`iq}q!9s#rz%!9^#V!9^#V`is!9s#rz%!9^#V!9~#foqqPY!9^#V!qPYDM`i!9~#fopqn!9^#V`iq!9^#V`iwn`i!9^#Vͽo! 9N#F!!!!"I|ʦ!!9^#V!$ ^!!9^#Vr!$ ^!9~#foͬo!$ sz`i!~#fo#s#r!ͽo:wo&|†!}2v!}2x}2w!v! ! !:xo&oT!}2w!! :wo&#}2wv#s! :wo&#}2wv#s!"x:wo&DM!9~#fo7pʦ!9^#VBK*xv!9^#Vr`i*x"x`i:wo&q}2w`iͽo!9N#F!#!9~#fo6p*! 9^#V`i#DM+s!o*ͽo! 9^#V!6pS! 9^#V! 7p]!"I!! 9^#V)))KDM!9^#V!9^#V! ^#V! ^)z^#Vͼoͽo!DM!9^#V$~n$&!qDM!9~#foqq!9^#VBK!9^#V͵!!9^#V`iq}q!9s#rzc!9^#V!9^#V`i{!9s#rzc!9^#V!9~#foqqPY!9^#V!qPYDM`i!9~#fopqʬ!9^#V`iq!9^#V`i͵ʬ`i!9^#Vͽo! 9N#F!!!!"Io*Io !"I!!!͒*I|!!9^#V!9^#V!$ ^!r!""I|O!!$ ^!9~#foͬo!$ sz`i!~#fo#s#r!ͽo!9N#F!á#!9~#fo6p`i#DM+^!9s#r!9^#V! o! !9^#V!9^#V!9^#VÚͽo! 9^#V!6pw#ђ*~œ#Ñ=ɯ<**###+**#1**#G**#\**#q**#†*~/w#–*~?G*^#V#~#fo))һ#³DM*s#r#q#p*~?W*###~~w+7~w+~#OΒ*y2*:2̓*w#?:˒*y2*̓*w#r:˒!w#‰> 2!~w#šO!#¯yʔ!4!5”!5!~w#הO!#yʔþ!#*~#*~#(!w#6> 2!~w#Gr!#[rf!5A*w#ʜ!ʑ!<ÑʜÑÜʑÜ*s#r#6#6*s#r#zԕ6#6*^#V0123456789abcdef`ۊ%%%.38===B=G=L=Q=VC[CivXLREADME.CPMB  !"#$%&'()*+,-./0123456789:;<=>?@Ao/ 2a戏85鄙CwiɍLkZr9IWY[-~Y3rL&Nj9XS9ED'Klj캦RN'Q##40st//?{^έOrӠYME0k yj$wyYIgm fx#ϭ5rʔ9BDy5V|.̑)s<…ɉ!$jϭCPs99(M.0s?~_ 腲?Z!+~ì0sDhPlyOv|=ߞέCP8ggAtn,rr./DޣV/t./DޣV[fyѠ 'NЮfj;xt¬eW;Oa uJWAH'$l.x hS$HeDuB9SDvj_y<< l`@!dwO CP[P޻! :,j$#g8x:0ʓ,m^:"!M1I8"ͺOfGOG/[yxOoB-ud52^%pn4 0_=!K"y@3/gDyklR6OrodLZ-E:SLl@:a[_ol5NF VK!8/(Z鄝%| \ BI Ym`2׾hu$wyY6 WzSKޅ y̓%Q6Hi^)?CB6<1y´X3t_\N P~q.NNhʆ#O٥Fq aD  AJp!prBU ` p' D+N਻ x{=/_= N˗BщBW!o_[M l C(H'ڕ"B'qQȃgxq DPAJx{=!NHγK8BX[m+OHΰ;5\\]xys rD wʓ@:aI )8W५Gr a.GPQ!e[d"PQ60sˏ "eW!0hVSQVgN|珯>=n | lH.#h@EeM l025mpPDvcЬl+'SJ'CvE w'v얕V dp6H Ww gG,/GiɋyyBֽKjݽNVB. SLYya$Ƭ6ykly}+^V[%ac"ZlN C DQC |C80 CQMrC80LIB QQQ^_C80PDP11CQ )CDEMOA CQ ,CRAND CQ MCUNCMT CQ  vIMC.DOCG o !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFwHEzg;>}sPxs;~Ll7Oot9~?y/~=>˗Kwyֱ-dAfp%|Ѥ !SH6Ф !KwaGq.Myw3pRdPb#4 Dp%.q(A"#%Z ú?J~{ܥA"4bف+\,K&e℻swXA&e"L! 3B:2)ZBIwXФ !Ih2xsȄ.t8OK {' ;WvhR %VxQ"?;^'|"BФJЁhTt 6 L0,';oߦgb#4 Dp%.FJ5HJ8ңIB8eλx>DHJHVA"fJ(jtS<ĐF,;ǩz^qe4) | )j)!0wa}ޢō@I1YJXd4aF`wXi`I9d;~x:M=N8҃IC-ZWc=E!3ߞ0wqwy]zp.eV1 &PbLʒ)B2EVau/xOrP$[cjS;90E: \) qv\0 dIy90H! A"+ MJ;뿞L=NIRĹXΗtoeHRƤr SdyuH1G)o` ST9rܥA"$ú7U*K8 0U*K(DPLʐ;KH#F)H]Y(bDXGaWcp H0tJs~E+7X:F`a-%н!dF!m0U*K8y]%DK,Qh,I QBi a;]#hi(+ Epe Q[_yz/F)H]Y(bD luck! Pierre Schwob B1:LANGUAGE>b2: B2:MODEMS>ldir mex11doc LDIR v2.0 (c) ESKAY 04-15-84 LBR directvC80.COM 2.> !"#$%&'65J()*+,-./0123456789:;<=>Treё*9\P-6uUX>T5{rZP0`ap ,zMMp€2ȫ/06W ' C5*~C5 q~] 'uPMMJe, vr **\#8hvjGoSng=-W-\`(@& hGqL@8z#od0)Uz5ю m}ҽ }l'y#>RY!U)`RRY!U15Lx& Wa72a*<C5S8:‘W8jRC5eWNX oIFV 8X B]̄͟n;amPWb)H!{$ Z ^Z/fj)H(HBo{ Z z7SKABA?^YOW,ɱ{ g0TQC;5coЛ5BXzUhG zՐjG Ld $/dyz7Skf>] $hG |pC5S8[H>qBo }bH&2~**4#PE 0~LdBGЛ5BX U49:M* icpU8/ZC5 㨵XX,0iR򚼐[_z3fV@+'`B= UN h"7%eZ@qЛ5BX U4_[ xͬ^MV2aPE8_d Y8xYJb HV|5 U4ߛo8c[/ Z^3+銥aPE8?-$۲cyͬ,7Xf€^ |..3fK/  HH&3,{_J,|!3PWb)H=׳0~0&$üfV̤{'kz& hG?q +-pDܞ}Yd$'-]:L~o@1J, HY~{<,,y*ߒ%Y@|% hi,_Ʉe Yɂ6n{'0azLG6>-=p-)L 11p-)NMV0T0~l~ Nh*kc 8\re8w/)#a Waa8q)NxyG^7‘Wo1mb`Bȕ0`aMAmAiX v۸0Z8 3a}umo ؄+0> G^Mjm< '<C5=pUiG4ynPEWqUCa]=p-iGypjL y5t U' _#Lx n{[)X.=1'\ *O/AmAip Ą+0:0`0`a{'$' tTC5e &%€n (N]I,N4pN4)y瑱r8!U' tڠ|ƀt U4#_X{xn{[?%<1&I_ѥSy_&< RY;`W8?ŀ[Tޗ I0T0Ξb }-v*˄O0k8ŀpz6ޖeoLu%6˄ u%??!ԕX zoO U4;?>!t% 8[7 a '\ *AХlGx* WaRVS|߄Еkf%_L*BY+ hG{'\ *ѦBWK h)w[p0TS‘WpUKm׷R&\{4уg8z6>-#BlC hi^>"t%[@\VCa4}"<C 3- UTm!0=>|# ֆqç!x# ֆq\[ZsreѻNǎ>|W! [s |ek8ziF"Y>|o>"lmGl5y\;"|Ba0;N_JksYy1ek8:.К|툐+0=^q^="6so8"t%A>&+[aPE82ǏY2C_E8ɇ Ք;$wrN7)WȫУ-;pUȮeG^v# *[6r &K&$m<-` }&C5vr &K&$t4wW!j"yMpUm7Y7 i1mAn{N4jʀnӤPMpUtT7)Nx&Mjʀ24)yzMM(Hp4)yzsp-t U'\EIɫе'L G^M*dWm2жBHmG9C=BHmG~n)z{ghG U4;C=€q3;C7s-toJTx}s *jhЕԙЕ[wq u%$*yre+ hG]I,uWȫPWb)H#BW 1')J~Pq_pU G^ 0~*yN G^jZNxo ojR-02ȫz5[8*\#cz kmG?π#6` WȫPMK^ŀ x M\eFQ ?."bb G^n;a wQY? CfVQYG`pTV0tR  /QY nQCvpUvpN*YR5kr*|+ 5T*`5p*dnpTV!M 1C5:ry‘WRY8vpU 'uPMMJe:ۖ>`(Rv;`RG U4s=G$ 8aPMpU5_ɿ>:|_x w y5TNWC5-u؀_j@{4R{]xOq+t% ɿ.܁NChY2RY? C*џ0Y2LjR*gaH5hG0T06e (5/dBoR*gaH5H2^3+BfRa|0`a=7ߖqt^z^>Wڶn hG0T0>޹7ߖq{ƞ`h[(z$_̈́C wmYG6`I^ T0T0i/NPM*p =~5TSaS p J p QC 5S8 Yd!7py5k~j/|!30`n͟F'~‘Wa-aW!>fzC #n0ԫa= *3 ]Ilg!zĖ{[2K4# ***jH5Ծ{sz7PE *=|0`a}z?C{mYGo{t3P^j[2K4#dnaK ' )#a-2yn %)8!joRv+S Ny50`ne8* l 4^a8/ o:j&[8zQY[ڽT/ jpU8-pB^G մߤTVvkG]a8*=bK?T2Ktc=bK1 D|s&-G 54K<+t% $d!5/dBoR}oFYIf0n-J Omo WmC\t U4gm=p0`\ y5T~RY6?*J*hG PE 0lA7{6#SlsVDž[0tjhG.BW{භA9kR8*Y5 `5ԭa;gGws 1C5eW9k[8E8*A8jR1=6b pN먡rNfWpB^G մߤT0o1aP 'uPMMJe h̀ ,HV 8H,YHzpTVaPE8M,J Ge|%z5 n0&:5+t%VڄpTVS-WᨬN0TS#U8!joR*ОĆq[I\:jTVZ= bAIlړ؀wBhOb> = cWm/&+ԕL{? *Q(О}0`a}rJlhޗ &JlT& hG = u%6"|23t v u%{ȫPWb)HxͬPWb)Hx=0`J02kf'iI0T0~e&B{[BhOb)H',ߕq9^7Sˀtz8*0`R*z8*| UTx wPE 0gZ PE'ȫ:7Hven mWȫs$ WȫЋ p€ry‘WRY8z ^#U8jR*"y#&0ν pB^G մDs 8j!0` 8*G^ ukGW*y5)Ux wWRY jGk(<G^pդTVaPE8(G^pդTVaPE87JN먡18*\#& #a,3`^#U8jR*;Rѭel#6{ 85/d&#BYka=]2*y5iq 6`Cto'fV̤pUx =PM8r WȫI{ޑ0L-}-؀p a=v{C z^>o88Q:|e.`a;A7j'hGx*tcOv"([ G^C B{[ wW)Wȫ'l0Ā^#0m5TSy 'pUo"y#0tT ݣQ=Nx)wW*kGgN먡wW*y5tڀpTVjpU$ ݢT8zY wQYG`[ Ge pB?xֆqYЎikm044ppU(jw h;ȫ0`aYzU Xk#-tqtt'gmG~'cy̴eZ8j w /ÑW?jJiG8^ pZpy h]'WӖ[;7{\نqN::Nw:pB;-=4@_])}kmPZi Nx ʭҽe jGpZpy +<G^vL[n!?+69` mGy΀1m:Rڙ3` J_CCC' G^^ʭҽe.PqtpZpy 9WӖ[^!Wa}/ 8rsЎiK ;VJ3` J̭w /ÑW)[5/d&h}s **fV̤?+tߜ€R R?wWkmp5~#B;-P?WȕmGOGpBA pB;-=4@׭reѿPo8g 혶J~AiZ q2yzm5TSkf%_L*^ UTxͬ I?+tߜ€R^3+BfR?oZaPE |!3 7g0`T8G^|!3{6G^|!3o0bpZpy R̀6(}Ykm04Ŀ+6훹 '<G^7[C5 U4fzU X"ynӤ5W6^#B;-ݽ€#@Iɫ2ȫ0LJe Wȫ2LJePE q^#B Xz_rePpcpU5TSaPE8Zbڀȫp &%aFGx 혶y:MJ^ ՔG^aR*8 UT G^aR*p*jH5k^#B XzJ+0U818*Կ)WkGWx 혶+ XzWȕmGo{pcpU5TS‘0V_E8*c"ynӤU)Nx &%jϽpUN Wȫ2LJe5TS^#@IC5 JoWȕmGSsNx ojU8* hG{z$ky iRQr?S0#@Iɫ m}R"ynӤU8* RY Քk[o*yZs5TS^<$6~pU0T0_ŀ/‘W:MJ^8/‘WӖ^a WaӤPMpUx& PEpUx& WaT8Zx^E8*iKZaWa*<C‘We*\R hc Jo on*y U4_ŀ/‘W:MJ^8 G^vL[z Nx &%jʀ#0)Ux**\#0)U C5Ѧ]+G^>3myI0TQ*y^IU!0^aڠ۸ G^ '<G^)Nx &%jJiG)|Yo8|ꐐ+0w2ȫ0`a厷X:z*ˀA äTVqhG/‘WӶkG^aR*pz5_s\X jJGyo=$UG^aR*p*QhzO"ynӤU8* RY Քȫ0iRaPM '܂h'?{HȕmGkv2ȫ0`amɀw.RNyI0ԫaE8*c2 ԽG^srNx & PMKpڠ$1ȫ0`am'Wȫ äTVhGI m}R0`mU8jm0_mo!!Wa]ĀG^~5TSWYympt |NxNwjUA8*s,o#@IOÑWC5pUN #0)PM yI0T0~o#-tT C5pUx& Waa-?@z[hp>''4q5T0=ȫ0LJe^ hs &> G^ Ք7‘W:M* )#0)U Cћq m|n{[@#B[$ iRpUx&)m|n{[; \0 m<PMy#y:M*|)o#-tT0TS4pB{цqCӼ &G^[40`jƧᶷOm$n;a)Hh m|n{[Ƨᶷ\#-t *ƑLs &%B7nLs iR*Wȫ0iR* U8*BIɫ0`T8ZpU4)y:͖]*ynӤUs6z*Kͳ|WY‘WWVmU8*EG.R0PwpUh6_`"WȫP .R0? &ړҾ \#@Iɫm',  ]q8q8 PMyq'yN0TSreʓ<'܂CBl8z[pp䕾jp-i'iGHS+ hG?$ hGHSѷd mknq8pUxpUVGMjy[pU0ԭa=$ #]5TS> G^N #j-l6-8aPMy␐+[aPE8O0 8{ڭ'`W8''<G^!Ua U8*gaHդjZO8* tTx)x]&V0T0 lx &AC5z5aPE8UA?=,܂{PC8zbX^  U4#aPE8ZtdWs9%qp4yqߤB7[K? _j~ fVnas 'uJ, u!R[w u%޺$8z]s;$tל]sҪ/:jڀ޺wH+$o?$bbNx =a Ք;ȫaI =aU80TS^#‡a> CrNk 0~q:jTVZ=->pB^ tT0qy N먡~q#T0QC5 t Il}m<G^^L;‘Wa*<C*G^aR*p *jH5n\#€I>n)H5)jK?O =g G^ m}R p IWÐpy>LjR*0*<C&eQNX >8)tל G^aR*8 py^I-!0V̤]s{Ζ*̓BwY‘WaB[$=4U8*p*ѯ IU[~`R9O 5gQY[0T0^IU[gW'Vm7L 5g^?)t ]s6wpe>)tל]&\IܜkI,Wȫ-I'\#B/&$OM 5g Ћ Il2*L,wL =g G^v o'uL 5g;BwY‘Wd)HIl1)t 7'NxJ2C2ȫ0`a}y;ȫ pU00~ 8*|5$ `H5'BwY~C5e0f?<)tלe WȫpQC5-?p 8* 0N0ȫawSѩynjG?I~mR9ˀ:j 8 ]s'\#UPMK?I#6(`WNX BwY~pR9K pyӤ]s6/M 5gIUOM -ڀzRhi4B BK6wO -ڀ<)jIUyUyUBK6 5g{^90ZZ -ڀ -ڀo=/j~Ҫ xyU煖Vm煖Vm8/j^^hi[R:]^>u+vkk^k_k;us]@6}AmA|o@Oڠ'[i@m}o@|u;[åuk]u]?._ ܴn`cK+R?v~Kҁc'?\}}ǥootҶzTo\}O5仧\o;7~!ݴmw^'_ \ss}? z_F]ܖ-t%`C/ @.vpPQ\|ѯp~lWׇK.u5h\Zvu?A[ޥ>c}شn`cK+R?v~Kҁc'?\}}ǥootҶzTo\}OU&=4Vzm'7M޹ 즕lSewݏkywip7^ *iM1GߧfV~o?ykN~'_߱>K޶mhN߸T_VM{::[{i_6\o NnsM+٦xpK䉺4Da=Y_7!M&D}cҶ|Fguɟ c]e}SW~_7l9ߐ l}A>QXE);?U᧣umly>__ox!__>|t㫘72ҋ?]:w,__>|}=uFFO<=|}]=ۗoCLF 衶O7 dɷ+Ǯcwѿ;Mz  _oc xFc $uozI.}xuv'?q;Ei߱r/@p ־<@T\0⚇G~ ;dQps/<@隇mB{ k_v]Vo.pM`ɐט5=q;}ٗK+?]᫯sHF 衶O7V2~>ׅmLG:'H7љ|i['H?8zhLT[m'-`xjt&ﭿpu߾&__H_yOi꠻}ҐD~3 /C^ъ17>SX}[mK2qi2Q=Ԗ*WF?~]X  Y᫯*ҍbjt&o@*;?Gz z[Kz2~Զe pyR}f [Ztex+2W^l+X -ujR;-U:-2k%#d}%׻sH7v mCԏmttB[z6 :z_nJ?:0䥵ߌ~fw-[m/7G]-3;@ߣ#3ht btdj?F]}hb浍&7]늾F׺▙_mȣ͙ftsYhtL{F`E^E1mEqh၅ȋQ|YrwWmхL ;[őGŶ;d̯N߉-^xV_t7G|mW6/,܏m7+5g]5;]gł/m . #]͢`1]\)ffEֽZW >,~Y\^73,'|Wgd"P<=5X >,ֵw2>U v4;6wg3MgdT1h0xy`qmY >,mL ]bf125K{sx^L5_YrK}8{kgdG7Qԋ#ȵ͙bhtg3Mgdʆkͮ' ~L׷G]h6Q|jEŶ#oWOↁ]fq0P``@1*]LU`Bo(w5cC.&:_ o]ߣ#3[m ;bwew1Glu /\ ؽMo.prw7U`& ԯ9_Lq l;_L -bb7&v 5P(v p ohD_O{}}3}}#S3jG__Ws~B1|k~}}]Mu[D_߆AmhooúAmXPMK?I#6(`WNX BwY~pR9K vCRAND.CS  !"#$%&'()*+,-./o0123456789:;<=>?@ABCDEFGHIJKLMNOPQRc5*OXo֧%Z⛯Qns\:r KkTiPn)]*ȴ/l_ʘw ޼SՊ QAm1yF۶*dՊlc XUG3DcaK|^M]>4CR!2$i׫ Mu>> I"BDT^P4Tšjx}5$ }h^_a}}5$1MW**c5*Ob Xx~a]<T^TECs3Ie`St+1'b Xx/Xyר **nj*4vм!lj y|2]-greWXƝ F)]LmbqmUɠ)3ʕ]aw+FyTQ1_ *XR1_"OhMRi׫DcFܠ*᭷ajNBd g1c=-AU:t;>QU(-I*c}+SţwX Ba^ӛwNj5[8&o|~BKZk$Xb0EBkzxqFz` \~ 6V0X1LQ8r?ϴ\~y;ߪppe(fB*t=\ÇB/tw 3*4ÇgJla{ۢbcUh_vurqlєr%{L6r?ϴ\>\R[E4aV~i\_?W P5la[Tl XTT(y`{F`WtM48V~q[bỎIڻJEe̻T|>-Uw*à _3l΢y/aK,|q8bS{Wyjq}U%}3|â2V ":$k˲2=u vU4jq}U}3|â2V ":$|F#Z+v2CDEMOA.CT  !"#$%&'()*+,-./o0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSj. '\{\7z.PΚ6[tMo_ω0PVsaСE?Pe W[<-Bg>??Z۷fa@ ^벷ɝE[Œ\V[Q.޵#x0P->/_?[,-(:@W^[xӣ蝩  phuiaFu70~-hW8|E=vfur+ x 3*9$,nݎ6:xrA-tVq? (Oxv=^[tͲo W}zrr" (6DS.7z}9C$a.x{;[ CMʙ6nm G`0PohL-Jmv,&aCv>0QLfd$LT9ohLD30?$Ld0QVMDGa}aO*g0{L Gb&z 3o4&a1;3Ffy0Bz}Ea"ziT9ӆޙ70Uδa-@ִ'6!&a": wk }6 ѳ,&aCYvx*LT9ӆegW,&aʙ6 ј*ga~2I6!&ae$L5$a}~DCkl0] 5u6M<&>^wo..0QLޙ$,LCocnVCLLTcM7ۻx*L0d}oSa"C(L3m8Ii~9TV/+gak0^VcC}1<&aZ< 6rꘄr~$LD3-Ð񺾉Ilb&0Q}qT9c2 Yw71 SLfhu_y]b&ۄ ,;oQTV(O8aʙ3z[FYaI6! SL=v9b .`(,?@ABCDEFGHIJKLMNOPQRS,p,x/߿^- ,rbeAV-OMysdA/,_MÏ ފor,ȂU;}`riHYWޢ?͸^w ZL*8'TE9r0#XȪŤҊki&<΂p`a^)_Gzc^)܏,p,?}QzS; 9 UաZy' 6TI[IIc4M n]6I>IgKV.I>1IyO^O_WwѸy>jݕI>y' 2bB4U QʘьS QH3.2!w}j}Ȫ$̸ m3MŘ){_XȌ1YٓWӁcp9UI|={ggV-&aF 1# ,D`!ReČ"3Fcg!1êŤ趙r!b!"3R~sĐ_zggO^O"z'aBdƘ/qQʘьS 6T )w:'bHyW&BDy)ޏ2"z=XXhLX}`1bU,}`9(RC8/7"OV{N8[bA8G^ZzeA /7q''jς@՟pﶪqSUqZq۔W|~AYUoa, %OjSg,i? ,/,tLS1Bd<_>t"ʓOu jV1y|u,D''?H5(O:m`Bd!@= !ʂ\Z{B`A8G"ʓN[BU'c}`! уyV{ÃKZk$Xb0EB?@ABCDEFGHIJKLMNOPQRSoTUVWXYZ[\]^_`ab>^\09&wd^ήH?o"Uܕcrޮ/d6 9_]*m "z%f+yʋY䮟L~E$g]9._Hy1>+~bּi\;YG,uYd4+E&OBgOr9]]E뢑ux+I[&1.Ư#)rY̤cqv&gk)v1L:>\ˢh"{G2*gD2^hdܬeQ\5=M>>iIq0iNtb&J3L3!I,fBtLՍe4?;OwE.EGWQ)rv!M$ )IS,aB2!I,aBPȲ>\HƲ(H^䑌مX%\Hu-R4b&q$g mOakYX?]M]EX%\Hu-R4b&}L1)  I: ,.0:&6x_f_*7k1M>Nt@)&} I:@e1t@Y&} Ä$` }1﫳x_f_*7k1M>I: } I:@e1t@Y&L I:f1cr_*7k1M>$g 2F$ I: ,e Ä$` }1.ZR*9 dܬeb\\-r)Fb!VfQ\5zˤбRZ' fSX&A-h-n\F2 dܬ*&'>*Gb!&kJZQ&լYy1k&=.RFh/dQ\52ɺ2jVlQ.ѸY XerGC3kGLQ.jVJD=7LZ,`B[M,fB3Äv2e9nh΄%"ee }1i~04Q.qY|&EL胎u"b$&*̛EqD-)8@JAJ' R3),E.HL ?*̛EqD-֕бRк҉gB` }1.ZRJ6fQ\5zˤuuj{b֕N<zL胎u"b$&GJ6fQ\5zˤuttk&=eBtL$.*GB͢jfq1ո,_"ʥ X~GC3k~GLQ.jV֕NAt@&2v<Ʉ$gt⡘!lv΄>\{Sr1"b5>;{!equ JZ(XŤuL=1!IęeB+&$8L I:f1t@)&qτ$ FpC3:&\L o.X^Y4X%f-eFFb:nSmOL0e=&.:ns&A]^WX%rv!&q2e#E#V1iVt@Lh tb&$83Lh'X&$L胎ճBHf"jr*&+u0!\Nag7̚~!,\f#Ik&$8LĪ$` I: t3!I,fBtL.션@^U2nRFlh*&JuI2!IL1AMCIRAt@i&fR?e } I: &L I:`LHq=tb&} =} I: &bB I: X1!I,fBpxhT;grxW#1ܽdܬygy5XI]fR4b&M8&eBЙbB3Äic_}ń$g i#fN I: &LH1t'z !|Zڞ!Lvɤ 2AJA {hm :V ZO p@kLHq!ΙT3!IY@3!IȲ$g d tb&M8<ħ}{LCkϙ·pxhmIkS߾bBc SmOLбRĄ'&AǤ I: t3!I,fB :,fB0:&'zlLH,fB3LH:.0:&{$8 NJ I: b&$83Lcń$` i#`BtLZO ,`B[M0L0aBtLɆɉRY;RF|lRU͊&Jg򛢹b *<(~GܽȣE&iL;QKhrgDϯW7rʣRvɣRF,reT-60UxF(|&f׻٢ȋY^M.E#Ty9_2bTuUx 7Q.L,U>+n>ERY|ˈV ϟÍ:dt6y$y3_Dkٍ\f#dTAP*?nRY|HߍY$Y)M$u\1i]GປHf-7BFY$7EQ#7EjuB9\wS,dTE2Ef|,h&U݆{*?}Ys%M$hJFQ)łi9 o]Tl$TQT.d7WGu:㼘5Ll'HdbGjLZmQOp"IAUxxd,,b2IQOp(IJ ?2^h2@]Q­(d,,b:U8+ZV7rʣRFBVf1;NAv=G/hE^͕مfbv1>X"xT'l52Qq1 p"du3.ǫ<*%j,fgӣ* ?ᮢ\fWWhd]")L}*<\•x-cYD|V2 tQpg뢑] p"d,hJ&U#xTh"Eњ)HGΟEz6>+HV7rʣR6ո,U$efˤ^< .j׳8b\Ѭ<{.,Z0u<2Z,d6u4r ?2^h`2LpxI>"b$Le.b!"Z3U˰i~HeU>/#eXH>*YzpEb瘴0-V7R^nvxpq)/;T*i7*"iSf\ˋ:r2eVDzȣ-^[pq)Ǵ`Z<M.c0-&QP|hެbf4+e(f[&7[&泝DV52I~ɮ]㋌ɡ$lvuFe.ʘZn6E czaw`21L:!pr*w2+7r6E#b I: b&#lV7r7^|&͖ BgmɸYJ\FWaĤ-nKI:/|-BVYGojw[ehFٙL q&jd5>;?$LɡyǛqJ)R439I[*dz>90I~ɸ_DM`O= |1aZ \-YI~ɢl$M$|z_ j-,t&&mfd=^_06кvp7f-M$f1*nz]1lèh2nhv\QTf2nRFl2^hxP$HEsˬ2)|^62e&tI !&rR-4tRZ'&iz҆<63!BYANLL><E(2FgW˄=N}<pH򛨌XȬ޼y5 aeDe$㢹ϙ|uWŻH;&SO !n>E_G 4ɮkpwk$|4JY2g |uf-7f-E.wk&0*mMoŸ|-cFQ)ㅌ(z>zL]$ex.S ]EGz]2Wv\HxZƫגϮ&*b5 aZ'nT4kE1 ">juŸ|-w(*eQELP6[VJpeF()+&AnL0-j=i}p fZ Ť<631 s& >ju.K&pӢ֓6ϙ`& ).`ZLǓn=LZOp\?gV2di1:O La4Eͦ_Dlmӣ}`y`O=&U˸Z0#&V$ SÄ'&Vԡ 2WaZ tN}< SNMQ]1lZ e1!IęmMJ->PFl6JcBg0Y'm'N2oq'mLl`Zez&( BI{ &Gy_Ng jd &60Lj{b LPlL;L,`B2!I$abʠZ'fy֌/cZ eA j-,tj=aO=,|a2ajw.7/Mot&$C]2We ?SeAbyy1[G}y/ˋ::w&$8K} {ԩK&her:a}T>/LH:K}P6&27EqeA ;&L=1AJabҖ i#f­G~`bʠZ(*fyS[_ :V uazX&&i-+8ylR[DŽ>0թUPV˪ 39ʥc0Y0 jdLHI0!\Na07/LM<ԇ[:a}~<$:[DR6//fxx/;UIj0!IYC|lpG>}-n{ԩLu<>0!B*aؘ@]͛":&( e1a :V LLH:}wP6FAټ)w&( e1a :V LH1n=ԇs&&( epb7EuLUkacPALebٲR (fY)uL胎 O9 S~~` jYy>u4ɪe &60LP&Tu,`B2!I$abʠZySOkQ^aV jdOL0aB2W}W>F„$d1n:a O9|aS?LPVT˰$:[DeTFQ1̛":&LбR S&21AMClY)ylR[DŽ>:aeA ;N(f1:&0Zf1=Zmp`O=&LeBkA ;&LUk1ab9'1`11AYeP-b7EV陼W};4j`bÄ$g eW}Wn s&&iW{v|]Mo2AYeP-Î j-,t}i&2 *jve0\3S 71Wń j- |ZX&&) 'hӌ/ώ;0L0z Cpܣ֓>gb2C,Gyٌ/"wLho/-C3Q L>ħs{ n5j= &UOebmQIX?pTIXL Sδ$:[D(h4[Ż1z&]<r1!\N1abB2ٽp2QFQqvf|er:&$CbB'u!ʞp2QFQqvf|er=:&X)zRJ11!BN2Zh]fo BeocP뉏 4?p2==Lr`b !D]21:<ꤌy8&0Zݍ:ZY3x-іy@ĊbrLԡR&$8S|)΢ǥ/(/{y^?LH1nCLgFr i#f>6LLHqf8<~,G mO1aBb{(116&ÓN(crLWQ̛"29GS|1aO=,'WQ.j_ j-&Lx긺ͼ)cZ +} :&01!IęmV?-} UL]q :|ZX(̛"2W/%n1+Dt)SzXS>L胎19|3o|)LaO=,Z e1WeZ 5 aZ'NfZŧg^[L0aB 2Dֵ:1vS>gb92e>:&At :&( epR(z҆1AMC֓6L0aBkA虘!L j'G)vOLl`,aB2!I,aTZ LLPVb)vOex5 ajYa t@%LSX&} =NA jf}h]M&7ExeZ eA ;&LбR> S&0 I: ,>ba jfPFl6[DŽ>NA *p|G{Z-60(nýc0Y0 jdn=t@LSX&$$3LLPVV;9btRu?sLP&TuL0aBk O9 |st :&( BI{Z-60Ϯ4ɪe &60LHA0!\NaL0) t@&=eBH *m='2ve{|.Lj{b LPlL;L,`B2!I$ab@[I1ڼ\Gow&$8K}jτa *jvM?U|z&:Jc0YLl`,aBڇҺV'&$$!lv}ylϷ }17/La$2ey{|1!B }19&<_mVټ)-czUL%|aM3n_ j- |ZLpR6<߬yS[&0fLv|cUz&$8LH1nA31!IęmV?- =|>蘘!lj S&0 I: ,>btX?01AMC(|:&( B!:[Di=FOϟ=\:Un|# YL0z ˄$d  dL0aB2HK&&pr7^?,"'w39b.zpLeBH r ˄$d r Ąd3_u d7W7rs~또 !LLбReb@[IGcBtL*W7rerL6LH:;8(tf[y/?vLбReBPY 0!B쒉 ڇ]M~L6LO:)|^6|n/6ݖ1=kL(qy`O=,|ZX&0kLHqp86/W->F̄=|յ}11!IYa7W7rr{x.LUka !tN[&X)LL2 W]݁ }W'e19&<_݌j}i&czX&VeZ _&&L=W'Wj또 !tN[&X)LL21A{m8)FjCbr_uچ9!DjwUmcB2Й:mc01iN۰>?0AYe2eY{|1!B }19&mFM6o|䘴OzLSzX&VK&L=1ʠZ|Z&LUk1abʠZ'źX޼7EuLH*K !lv_ :V '&l`O=,U28)vrySk=i}!LVIjw1I/vO'U]c 4&U]=Ll`0Ąd3LбRebʠ^pQVͨMotU20+I[&X)hN;&V;&&$C$dؘ$κIU[5 anR5t&&m2wMr+efs}uLHqf8Dyl. iC1vIX3AMC IX?0i jfL'ap`BtLaXכuxerL'&l80 >LUka01!Ięm/LH {#ϙ0'_VM@w|` Bgm1AJabҖɄa}~`BtL]?7 F^ήWrVܕ\?7&Q/.Gwa!3v:T ڇduv؅C80PDP11.Cc  !"#$%&'()*+o,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ab]<%k6شS,4tJWoNpCT dv%S*P; m?M!@T ?NKU 93MROq'&b2jU9~M+ !mP;⧕ o~S@TVB$T;_%481 Ɩ1sdHj)Ǝ+~^W"!/*]h|EN{K'&b2ji!D|rϿW"A>O_g_T>4Hju|Zi s2|{^JC׫Cdj/qvk>O9|Q"Adض R\vS_T>4H@qmO9|Q*@C<["3CT>4HDpQ"AX)2RJC| /*VB$ܚt%x~V"A; T ??g JDB7yڷ6{ʧ b(/T"aLMU ?"a"@VAT>4HpJ&%|V"A2&MJC}"_|Zi`cá{4Hط9%&Pơ5 ji!DYgO+ !4!2t~!D¾9-!E62-skҕ6ʧ 2';xV"AmxS*@CnKa4Qd|i$ʧ ^9x\T>4Hʧ ^^_^99|Q*@CٜL1D|X%|i$ʧ ^yʧ ^s*VB$xxmÛʧ ^mïT ?"!/60do[ S" ].O+ !S6p/_U ?"!/!# v*VB$!R_xQ" li!D!Ҕ>t~!DB^ԘJCo[ P;O+ !Ly rQ")})59|*]h0sb(2򹧌ji!DagO+ !d~X%xS"AfC0Rd(cTBdxx{x_ @Wa uv*!2ԇמMbH)9cT%_l_ @W&,mkv*!2=]Ş r>0Rdsک4K20nJk_tԘ3 N%D)5=]W 1ĕ>`T%!ҝ rB'C~2X;fI&")/t_48ƴ N%D۳yz6س"HYv*] ̭IWک?MGb锂EdNl`]Ed5Ҋܢ L&YbT *6K Dy= $sͼ{*cl8bv**~¶M;W̜&v*@4iMi>ġX;vx*fbmLm!d1~dvک@ȏ]qv*Ў܏U ?lGG!XBLv*b?#@W1{Ckp JNv?t}bl/dZ dbx>ٌS?tc~!""lv4 aTڕ_ia O&xkӮS2->,O9xŔ3M{{Ʀ] k6e\6eF@ȴb4QdsOX;fI^ǖ@W&,f6!^qh oX;fIjӳ)]Ňgbgldp?J 5l @W5; Cd܏@kU3'4S*>NKt 1#}fF\NpX;) Tj=9s2|]R2x>YiڌS6=9s2lۦ@W ڶIyڷ6cTg3?bc)|X%|i$ L]R2 b߶k6pf*6ALطک B]3@W1sjvسAg&'X; c3@W1Hƴ&cTa*ƖX;y*CG!Xک@o3@W5bcǕpv*Ў܏<tcmO8cT 6S?tcmOv191e ؔ9 ]آM1sb(2v*:Lw \ @W?L2N^ǖr?o8aױeBLX;hv@Wb[PoچrSv*Uhک P;*ܞj)/U`shcک@SlGvtĘ"##,aT)|*bCb?2NJ+ @W1D6-6JX;|Aboچrb?2Nqm|*Bq&,mkv*S|*b3' N4挵S25ydb)iMک, @Wqhm=6JX;hlUll y!lGGFLv*`G ty!0r& U S*Ĵ Z >0@T S*҉#ў1sJM&qhc~کtVB!6v\)?b+cl8kUXi1phcd-]3NO&*pP%XBG0U\[#ũ5!#cT*apiJ,nkd{XWwM$KΗ Ly{{{ׄȾ|9̈́apSfqۧMyr̈́apSfqۧ;y!6v\@6MmVBSj/*d3aaE`oSe t4)!^v*G8tnkUaz&,mkjU}:N WC<  ܳGCS%XBx*h۶LJ NҰ?39_gk#"̄Sf~>̔'6Dک<,Wvl׻wo@йov6p{=ut#ъ6{ ܞҮ3{|dLkG U S*0N=&k1s)2NpX;ugU!2~ST jMyxCġ7_T Z U S*1=6fL;NpX;wΫABd=q{/* :_XJCGF"aTyfrotK /1Dk:_uD|*&D} Nz6DX")Y` VX7_T Z mx)EÀc&)rFn1D&c)y!l2}` tBġ564Qnh 66gS޺!/ a#|Q+qv6Dx% 4LxbycS08,ߺfq~ޫ4Lx~.U3)xSb&0Cq-&k&1aġک@WOɄqƘ&qjN 4-&&ilೇک@oCvćj}=JC n8;"WlΗapYu<߽W`u~.U3)xS`2c}H{KiO`N}d^)IL+N 6ft!b2CSS\qjRX;xX%Uu9qdph ڴ'7_T0fq~/r?_Pڕ @n'8y7vE۴8] 6+M{*dFdgLطک.X|" mSJWv*] v~d&JWv*mOy8.X|" mSv~Ra|`l#aTnqbOp)>\;ggC$_x%ƄCDX;k hbbl#5(~kapyڞ!y?7?ǮbN)bT@WI)bTӳC v4pT]]E2) krT*>N"}`!#,NpX;*ybl#!9Ƈ N` ]|ULiߞ1Y>ЊS8삵*6A"aTP*Ls +6Nn؏CD/*Wl tĘ0v*ap<_ 7v]Fk8Q3N ΅؏<mOq3ӟz8؏<_ t۞"ک@og=ER8U`utɤLhC$ U S*YOS;CP;cT6Ǝ+9rPMq/U̻c{"bLaT ΅؏6mOl7y?7?W8؏6_ czv۟qHbcǕp6_T* :_dPfl!NH ش` k]H8K€mOkrT*>N̈́##,NpX;ƶڑW9@\;r?frȾ`W1 m& Sv~RS2;LfZv*GcT ?Pc!L9qhLH{KP; 34H8Lv*]کt)"E6g y!iZ䴷<3kUDC elR&Y<[34Ne^]E>26͒ k!2/*qMid04]L <,{*%Xr^ap{C%Rblv*a@SLD~/1MOv*p{ 43N׫ݻDcW1YCi=#/dOv*p{Fa&E€nJ,nۼ*&cOv*p{:Hq|sBX;=7s2& tɘtکl&fLe`TtTWw9ysi]1}kv*7vE*a@7%n=n~/ hb Q*]کt~&Ch&Y<%RJWWB$Zc&P;cTef̌6{ #ԮaqJ"av*]WL1}kRdsƇ 7moBbکt2f0dbW BکX6Ͻ*ǐid5؄X;}Q ȸ{4K2c.rBE`={,g08kf!M,*7%n{=}3mLl&f>%RQ0)\i"?`mL9_T nqmrLyiV\i"_T ⶻ{=vs$Zw) nU͜Iap| n޽ >UD6 >6D&STq7}<d3) Y*pǹoCd2ޫn~.d3n~+*UlSj 3fS̻~5e_w@ZW6.47|3z_T`o( U€nJ,n{<_<ĢpTJW0s2MjU}JW Ig NpX;bvG+>,q&C+ io Cơ}g6JWѴ#H8e>7&}nȄS*dL:کD5{U!2q{/*7%noDt_Gk1/S0'8yx*^[Lqdv*2ǐ{¦S*Ɛ;cT8]U-iHX; ]p cLntMN9|! 58Nw}twEhݛvUZp ڈSC<.b+D aTU}JW"&ph#@T S*iVL;'iC^BFӎ"!@)cl8kUhGv%1C S0q^*,`ic|bE?p cLn 5Yph#Wjl2C7_TvZ tC<%Ą6DکĢpT0<^E1DiZ䴷S8lJ16rXip*&k(g<%Kbi" L׳k!0ƆC4Z+ .]d myI1MS {6w0dycáE-/dB&| \҉aI)#%cک@WSD+r{„mکU-cioWB$Lcl8cS0]|phc"?cl8*>.i=1LmOd(L?S0)qm~/1=m 9xŶ}27_T9qїΗh/UMmĘ&ک@2̻R!dشcd <,7⡫ El12&sX;bgtMcgLM;Fکyi"Oy7'sͼ{y+*d3ӳۂtMEƘ&|f;Q`oSe @W1 [ƶ9+P|ļ]qOشӔv*ap :"؞7?0)qq|*@ƘFzjVliJ/*pTfv ]Q8m͜9mS5жMӾiov*yϗ]P&̩akK䒹fyblJMaI|)c; /!^3NK E@v*04%n5K2?\Y%fQl& KSfq[=Õ8kBd_bvUf:1g=6^1Ӟ &s͛/{CiW*G˜&sfC<豫0sb(#G0`TU 1!M|ļ =NnO]R!^q̩aTSf޹/*pT̻~*Ę95;`v*`ۦg3gNm*mĄZmlکQpX;dEF>jU}JWIҊi'"= cl6%d4!u͘"Rdsکtl$<[ph RjiEک\:]EfI[MSA%w1MlJxX%Uap\3 hbblqj a2׌S77s߆d ̧̈́dB[**ap<4~/1M|QB\m۸4Z+ .7%nmCWoCd2'X;b` mLsyzLbTa=Q~کa \3?^nOap+*ܷ!2]ŴHSƾ `Tն1ʘ0ֶkp7ӳۦsW4m|9tnkUv191Mv*]کtx8N{291M9#8$kqO@q;7JN};y8Klt#=Yl{X;xX%tSfqq|91M]ŵ6N~bcL،Pdt"SJWv*]°a4Qdکtnkap^*"`8qi8ش+*0X:Ͷmz6֬،Pdm,Z:ک9/]ECMkVlFc(2fakMJlӞWbiOl&ܛkL`*^>rm|Wܛd3aT sb(a@6#=b̉iX;ȼ]3ܐ{_ El,cfNkmz6`T+%k&1agmlک@Х)ql~/a3L'X;bSo 0l?MCЦ=Y 7!M{niKZKCN=,҆DjU}>,*pP @W1Y6 m$#SzlۦgShi͊mEK'X;w3ULq;`T>=ڶ+M{*m>+ڴ'Szj~۴'|b+҇hӞ,NҺ>,tӺ"E6g_G kZPm91McT7!M{>=ڶ}iZ|]E۶=ڴ'S>=ڴÀlFک@4Qd @W1 G\[L91MkߌSëm*ڶ[iOk mړuզ/Mk/:_HM{X;mӳk>O+%k&1md3N2yj;g^^s tK)clv*}X% @Wq%KL:HHkGcT !M0sb(2@T SY[C< T-#3'"?SD9kapӇPΡ5]|bc)E{̼ک!vtS\>a 6bTU}JWaJ 3'"NpX;J;U!2֞MQb&0`g`)o aSک@йl(K伟GCNem6*pPkϦ@W1a03nK7L)bT \f6և%Xrţ!M,U-Nvͼsgs{ tfR8y= |3N=ڶ}7#h۶Gdv*pT*>NObLm|3Ɲ2J1MUYc1=-YCi=JCn@NEv@;rfrLEֽIe6^%MQ9@Me6~/^@Ƙ6CޤfGдD/șl|pT9D՞u^dmӘH/*G!j.4WfIkirfIkϦ@fΜ _,͏{6^2zu9{61M4Dt=_Tz6s% Dt_T*Cmcȫ@$54QQ9@$gSTg3gNmxX%׳qmӳ*0Ы1Mسyi)}&г{6/<U&rTIz{c1|OɎUYc1| xJvrfIkϦ@\ӳ׫ݻDDtM}z{p cLnv,o-r[Df !MDwEMfWxX%=&zy@Wi34N]X)֢M=| 4=̭IW3'ML|?@ӳk!<ϧdG?}f}%0ģ蚞/*Gm\iǰ><%;WfIkiǰ>/*")ّ%=apMfB\m۸DDtMmӳ~ڶ*266b>O"%lOd>lDt_T*llۦgSTa \l^^pƚc]ŦDX;hz6wasX 4=;>t?/*l2&]~μmSTܵÐS#hz6w0dHǢmz6mK>O9|)*`G5=_T*]_Pf Fb?2f6!^1dtMyڷckSLD^%9BdܕfI{.;_T .~IY|x4͗KRt9v//Y/*cnw?_ DtϾQģc:`1D&Ed1Ӟ NJlӞ*0ģ%~`U?1!2枚0Z1Ӟ 6bTz"۴'lړ*"M{EșۚfEڑWjM{UEldRd0dL_N%~I*,`STwo.*`Gs{z߹˻Up~~ͻ5oU\3}Q9tA1 x ',ɤ`ljLhv*qȄ5^%lE hso_{_T*]_Pf ^É"6K2a22&/)`TRtWfIrC<\\o]'2qU?1!2&l1!] h"b&+ў[lژ[KX;޺ƫ@$5)*qWT`7_ #7K2Z <,lvYqJZׇ%Xr=!2l T D]Q0{x>xczv-N)15NK7_ hb9nxX%to^sUg3lv//rTY>,*p3և%Xrkf~x|}xKQ>,*xP0{xë?1gSDKy&rT&{x|}x/*xTiU`G l_rTyxC< LhG l_rT6*k h"/*d3!Mt6D=~Qeu^g3_ lKQ9?39rP%Xr<_ ! <Dt_TB!E7ԛ/*G0ģ/*G%U*,ŇhC$ Q;xC< Dwm}Q9hC$U!2,gp۞b08joG @c9~7??sE`u<,sJܸ1WC3ٞ +*`C;۳yywE*6D=Rqkvx8 m31EBG~!#͗'0~RTg{6^apa;LJޫдD/*p{jGl |QS=UlKQCgRT&k|Q9z6*qWTY14]L 5S<_!M,*0lf۳/E`5^y~w[,/WÎoᄄ,9,;ߪ5KUtm Uf0fq~߷wQ,YE|Q%XrUtkUx cLnB!^ul6_T7vEnOG=fqfq=U,޷w_T@65_z8fq/*pm <,kKC\8?'czvro3_hEnO{CiWTxTӎowm}QQ|QQ,WE*d3ak{߹,{}^!6K2Η% <,sYSۓt?M ܞBl/*[CΞE&pT0 nJ,nu^vB<_=%<_ "jO:_T&G08{Jc^/*HΞE`г)ٻ}Qs=RyN\=s"{ @֐d}Q0ģ.Ul& )q a7/SΣ9%;d}QtuDt_T*@6Mmu^ఛ )Y_TvޜSSws"0lO]=%{|?l}Q0ģ}Q8L7%n}yp |q/*apyx81gk,u5 Dt_T@6Sw&@6 4|Qvlf{Jr D|Q{J~x48Ul&T8慂y~v/*apSfq v|*p{:D՞u& Sw|QsJv$gO!6徨@܅"s߆dw*p{r=;>t?M >8_T skSJE\.~6D&SۓynBdUR|QC< Uf0)q{8UtD=%|Qۓ!MDwEnOGd}?HΞEVj/*г)ٻ}Q08׳ +E Tz6w|~{}\q@֐d}Q ]X)t_T`7?8̈́apSfqۼWC\f/^nO&Y;FwEnOG z6wa?m*p{:S#9{J=5a 6/*p{:L$k16z6nd.Ql&4ģvU g3oG|Q0]X)<cl8ѫ4|QhGl\h/*x4 Dt;_T* S2ggOzSE͒ ֞ci& ݗ8=qWT nJ,ns*ݼP0ΞE { !MDEap<41M ! g3!m\i"Up%mz6=%{w{6E)ٻgs lJoCd2ޞ{@\.~1 h"/*p{" h"g_T׳׫ݻDޫ@\.ycá^~dKQ0]X)s2&!MD ișE)ٻgs Dt_TгӺ^&zphc"?^|Qd.sϦSwDt_T*״1s8y`G=%{w)ٻ ͤp cLn lX>rm|QDy]|wC< Q*[CΞ*"cd€Ξ{Ghr 3=%{|QŜS^BdlQ9@9{Jr hbQ0dMΞd3ak0԰d}Q90ev6zѦ=٢rPHMjvns/*@zC96:_T { 0efzgӞ/*GSdgOzў/*8N{2Ξ^ L Àl=% @&Z/*@6kf)YUahu&DiO6}iGޟ˻/G h"/+5Ξ:_T&{EiOƝ*")ٻrwSc.͒ 6EvKv^ఛ/E ⶗{E ⶯xBN!ٗ\*GD&4Y|x4xX%tqȄ5ޫ9w⚯w_T*tScq7;_T~0ģ}Q9;%U DSwE!2J$MQ|)*tSfq&K\3_y_zv߽g/]ۯ}QSwyWT&{EٸS^Bd<%{w_T,`ST ^ǖţ!MDwEN]ggSTa 5?ۻW85|{CiWTl <^dmMW}jÒ̴n,)qױe|*p{ 6|{CiWT&{E*6 ܳyy|Q8Y/*`=RT&{EU̜ c;`#Nt 64Qd!A^S4-JNEv^3{/ᄄU?1!2&k1Lޒ4036J2^)IL+Neq^M;Mș`N}d ?_6_T ZQ"cgL9Ӵd08 VZ1 Lش+aTؤ`8rbkO NU[f'ZsƆE^{dh2ک\'\>O^%<|J6D&sO/1M @ UK, aZWC9c; /& ViZJW!Dnބ)3dv*Wb6.'͒ |4|Qv\>Ow0d~3\>Ow0d~3 @] D|Qֺ? U?B؛0%sFCא -B{jhکt2' N4 YSGhr*, {jv<7͒onkk$@66Z55D|Q9tz䅰7aJ)i ]Cf2kRZ붿Q"c d1fl8+1ah OɎS*-B؛0%sFCא N%LΫe/ rT*d B؛0%sFCא [0sjvX;~̋*h~7?nE29VT*]ş=Bm퀼fNCy!ԴqM挆!3JΫnɟ|Q̻~μ_ފQ#/ S2g4t `+Bm퀼fNkRyZ붿~rT*iy!=5ab9D˜&ک4Zcȫ@$54QQ9@nș1M D|Q9tx4NǽiGv*ymO|Q9tBfḧ́yܛv d-rdG6"=fNk$k3W9@&Z/*Ўٸ^~:_T ?>uOw?|Q̻~μ뿾8tezsOM"ɢM{iOk8Φ=Y!2ڴ'[Tв~/*Л٦=YgӞ/*E*]_Pf䅰7aJ挆!3LqoƩ0l&mړک0efzgӞWmړ-*h h?|Q//*Л٦=YgӞ/*E*]şL~m{WB$L?3aTVg&Uв~{|Q9t'&D>Ӹ_ŕ 3&] kҐ5JΫes|Q9tbBd3k[\i0CkVJCkVUв~_|Q9t]pF^3f}"AnHxJv$ q MbZv*Sf޹H*"c<@9CfEv|x4]apW8WCgCkWlikQQ` ܞuO'/*p{ͻoEnOG0ģ"=8U nūvWCgCkß%'/*p{ڽ=Ua ΫZo~;=[QQ h"HE*Gw@&Z/+5nKh~l@k/*R|QC<.C}AJWv[B^{dh2کdZ~nEUͺ"/ S2gLqLMdh2X;3GCބ)کuu^u|Q9t>٤ބ)3dp0턼fjڸ&sکt"S\i>X2>BTv߽g/]ۯ}QSwyWT&{EٸS^Bd<%{w_T,`ST ^ǖţ!MDwB1:LANGUAGE>ldir small-c LDIR v2.0 (c) ESKAY 04-15-84 LBR directory for SMALL-C .LBR C .DQC 2k | C .MQN 15k | C80 .CQM 18k | C80LIB .QQQ 12k C80N-1 .CQ 21k | C80N-2 .CQ 11k | CDEMOA .CQ 2k | CRAND .CQ 3k CUNCMT .CQ 2k Total member files : 664 sectors ( 83k).  | C80N-2 .CQ 11k | CDEMOA .CQ 2k | CRAND .CQ 3k CUNB1:LANGUAGE>ldir xc LDIR v2.0 (c) ESKAY 04-15-84 LBR directory for XC .LBR XC .COM 13k | XC .DQC 3k Total member files : 120 sectors ( 15k). 5-84 LBR directory for XC .LBR XC .COM 13k | XC .DQC 3k D0>ldir forth83 Library DIRectory Ver:2.20 83-10-13 Press CTRL-S to pause; CTRL-C to cancel Library: FORTH83.LBR has 24 entries, 13 free: -CATALOG.154 2k ABSTRACT.154 5k CPU8080.BQK 9k F83.CQM 22k F83.DQC 6k DIRECT.BQK 4k KERNEL.HQX 17k EXTEND80.BQK 9k META80.BQK 73k UTILITY.BQK 36k Active entries: 11, Deleted: 0, Free: 13, Total: 24. vҧXLISP.CJ  !o"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHI 9rb8fri ʉMp y>/*'6[F%|do|>^TN"n y>ߨn "!oTNdFTTNlzKrxQQn 9\9(UvW˄n|LJ-dɛpÕRU(Y0H(ɑ94*,yh[y$ F%o"|.6**`lHyl Mu:CoG WN_z 3J7**XZ-ǯHL@0D+>`ݒذmFEV ذ!9`ݒcö[rĆm5Hαav ذmF̆m5H.av ذmF\fö[-`ÖW{$<~!G.ĈRUN<4yͳUnɽdö'[-`ÖWK~`ŢT[rM׳w]u{$ɋĎb'`xBu7xҩMl?H*{l^7G 4QQՂ!A?C0#{5