ACT Apricot disk image㐞VR 1.3.2 P㐞@`  @`! #@%`')+-u1 3@5`790;=tAC@E`GIKMOQ S@U`]_a c@e`gikmoq Ou`wy}@` ` @ ` @ ` @ ` ǀ ɠ @ ` ׀ O` @`!a   Aa!!#A%a)+/1!35a79;=/CEaIKQ!So㐞WY[]_acAeagimoqoy{}!Aa/Aa!Aa!Aa!AaǁZ>㐞@`  @`! #@%`')+-u1 3@5`790;=tAC@E`GIKMOQ S@U`]_a c@e`gikmoq Ou`wy}@` ` @ ` @ ` @ ` ǀ ɠ @ ` ׀ O` @`!a   Aa!!#A%a)+/1!35a79;=/CEaIKQ!So㐞WY[]_acAeagimoqoy{}!Aa/Aa!Aa!Aa!AaǁZ>㐞B-COMM EXE M B-TRAN1 EXE Td1 B-TRAN EXE %0 /.B-TRANWLEXE =/ :DEMO BBC xk ? BASRUN EXE bBSB-READ ME 9 W~2002 BBC # YGW2002 BAS . ZPMATE COM @[_GWOTHEL BAS oO bOTHELLO BAK [b sOTHELLO BBC ` {GRAPHICSEXE R, TEST01 BBC |= AMAZING BBC =%㐞 200201 BBC Z 200202 BBC } GWDEMO BAS GWBASIC DOC ۂY GWBASIC EXE ;\Y GWHIWAY BAS 3P kGWOTHEL1BAS v KNIGHT BBC  1 GWKNIGHTBAS ASSIGN SYS x6 PC GSX \ NC2002 BBC )HIWAY BBC چ 1SFIRE BBC 22002 BBC O U52SFIRE BBC m\ U`6㐞CKNIGHT BBC 8 GWCKNI BAS 'GWC2002 BAS { -GW1SFIREBAS ֋ .GW22002 BAS OTHELLO0BAS :x 4KNIGHT0 BAS fx < EDUC1 BBC Q ?GW22002 WAR EDUC7 BBC  A EDUC2 BBC iR D EDUC4 BBC } GEDUC6 BBC : HEDUC1 z MCO-ORD BBC P O'GW2SFIREBAS|\ 㐞WORKFILETEM U rPROCWORKTEMQ FNWORK TEMQ GW2SFIREWARQ B-TRAN BAS (0 wN2SFIRE BAK Z a6B-TRANWLBAS / B-TRAN1 BAS !B-TRAN BUG ӂ0 RELEASE DOC d1 Z>Z>Z>Z>Z>Z>Z> 㐞MZ  #ߊ--l--Z>Z>Z>Z>Z>Z>Z>Z> 㐞@$.BBC$E0(B-COMM Version 1.01) File transfer from BBC microcomputer. $ File ($) is open. Now send data from BBC micro. $) closed now. $) already exists. Should I overwite it? $) cannot be created. Press any key to continue. $ You hit the FINISH key before the transmission was finished. Are you sure you want to finish? $ Please enter the program name : $ Do you want to transfer any more programs? $ $ 㐞  ,`  %þ ~w2F <9w<0s/< u `< t Mt ! @  ! 2LJ 㐞$>t;l>Mt' !!P !XtrNr}r>/tÀ>-u_>,uX>4uE>;>r<-,->.u#6;6t!F;6r .ô!tt&A !!P !X,t@+!r%;|!6666,6.'6-c/[4 4 û4 4 û4t2ҍ6 <t<.u! !  ! !!! !  ! !Z>N㐞MZO a`) @ E P q | 㐞bm` @  R! UA=?=p=?1?=q=?1?= ?=5Y=?1>?[?S=?1?[?S=?1 +  =  = ûBj?=Hn?="=r?=3=v?=Nz?=pD~?=?uX?=??4>u?4>t㐞 ?4j?~?W?WE?F\?J?4> >Dž>u>">">"?4?41 ?>uJ?>uI #u @ ?1>> t>==t?=X?=?4dVi=t ?4 ??CC?<(=?=>t?4:?4X?=?uJ>uK##u?=?4[V?u?:)N?E=?1?F?"?W&?W?F?J?u ?@?F ?N?F>u)??W~?W?F^?F?I??J>u"??W?W?F?J??W?W?F?J??W?W?F?J?< ?= ?>u>㐞3>>t?<= D ?>t $>D 3>>t?<3?>@>?????3?>$>??(????H????~? >4>??(??? ?$H?(?,?0??4~?8?<>= ?>tJ>uK##t#?B?WF?W?FN-=?J?㐞?WF?WX?F?@= ?=B?41 > u>t?4 >~K>}J##t>t?.t@B@@@??F;@|h?9Q k ?<>@t?<@H@j@?8??FB?F?F?<=?=? t??<\~?=?4 ?=?BuKӋ= ?>tI##u?4 ~?1?=@B??<>u8㐞6tD?{uJ狝;uI##u?<>xD?W>@?$= u THT=P?}u?=P?}w THTT@T= u T>$}TVTX=Z?1?== u=TT>$L= \>\uZ= ?=?<>\t?<^?4"`?1ӻ.=?1H?10?1L?1?=6>\t?<^?4"`?1ӻL?1?=㐞d?=V>$=P?Y?+\+^+h= L?=^\= ?=?t?t(?~?W?W?Fz?F`?F?<= ?>u=?=? u=?>t |> }K>tJ##u+ = ?==%#t8??6?j lnprtv?=?F?43 >u?X?Jx?4xZ>t?<>&t?4A>zt 㐞||c?4~Z>zt?4?Cr + ?4>u?4>u?4RZ?4^?~>~u= ?>`=?=H= ?=j?>uH?>v?>u~;}ef@>}[j?>t@>t ?= ?=>rt?4 ?<?<?1?=?< ?1?=>vtv?< += ?1?= ?<= ?=?<㐞? u?== =?T@@= =?T?4>u$@@@@?;}?@@@@= ?1ӻ.=?1?=?><u,>u>$?4(=3?>uK>uJ##u ??J;|?<>$= ۺtJ= ۹uI #trX?=?4= u=ӻ>$?4??4?4>t ??J ??J@F?4?=㐞D?Y=ӻ= ?=d>uK>uJ #u?<>t ?4IX?4>$?== =?T>u#?4>t?4@@?1ӻ.=?1?=?<>$4?=?<;tBB= û = ?>t]~?=?4_~= n?>t~?KӋ= ?=~?=>t ??J?=@VPD?Wv?7^?4?Z3 ZZ=?7Z= 㐞 ?7=>t v?75>uK;VuJ #u@=?7^=?7V>&>uJ?͇Ӌ= ?=V^=V>u >$ v?7>u&>$v?7v?7>&?u>vtv>(t ^>(uK>,uJ Ӄ>;uK #u @ >t X?=?4xZ>u?42 ?4 @ ?4\>t?4Zz?: ?2ll2l2fll?4tX?4\>㐞u?4>zuK>uJ##t|>u-?4 >^uK>uJ##tH>$uK>uJ##t>,tK>;tJ##t>t >u8>t> uK>uJ##t>%u$?4z>u>:u  ?4?4c= ?= \ |?4W?4 Y?4>uW>uK>uJ Ӄ>@uK ڃ>fuJ #u.v>.v@.vB?4\>uK>"}J>(~I ##t㐞?>u?4_.v>.v@.vB<>u ?ӻ?+ڇهы= ?=  zvHv>v|?42$?4_z^?<r\   ?4?45?4\X?=@>u H?4>uK>uJ>~I# #u?4_y>uK>uJ>uI# #t`J>` ?t?z u3>zt?4~?>tJ?>tI##t H ?< = ?1+ڇً= 㐞?1?=@< @ ; } ??<   ?<x?4\>ur>0}K>9~J #txГx>A}K>F~J #txɓxx=~?=?4_?< = ~?=?< B= ~?=?t ?4_?4>t ?4xZ?4 ; |`?1?=?ӻ`?;t j?1?=l?>:t>8t?4P>nt?4 @ `?ӻ?+ړB㐞lj@j= n?>tJًʋB= = ?>tJ##u ?4?4._?v?4V>u>uB?4 Y>nt>.t nqn>t  ?4?4*B>tt ?t?4\>u?4_vHv>u<>u?4_; |>nt?4 >8t?4P>uK>]uJ##u?<>( [?9(f<&0>TCIUW !!84m=-%T"&/3>/Ic0 00N33 ~6G;; <=T /&&J?A=?<?9 B`CFJI|I"JJ?ULOIOiO O;PGP P&fI㐞<>?A=ON/]"!0>&$?<?4 ~?=?4_~?=$?=?4n??1?=X?=?4 = ?=>uKӻX?>uI #u= ?B= ?B>B uK>B(uJ #t>B>~OBB>B狅 B>B ~K>B}J#Ӄ>BuK>tI# #tj?=?4 >uK>puJ #u T?= \?=?44=p?1f?1ڒ?1N?1ڒ?1x?1?=㐞?4/">t?<~?1ӻ)=?1?=T|?4[>t?tI #u?<?= @@ ?4xZ>t?<~(?4_?4>t?<>tK>uJ##t?4>xt?4_~?=?4>~tK>~uJ>)uI# #u )=?=?4xZ>uK>~uJ##u?4_  ?4?<>xt?4E>t ~?=>xu xBB>B}K>B~J #t BB>B t 㐞>Bt >B~K>B}J##u BB>B {6?9N&^&?4$?1?== z?>t?4?4._?4?4mF; ?4._?4>_@X?=?4 B=?=?4UF?u?4%>Bu ?4{!?4_?6t ) ?4xZ?43>uK>0}J Ӄ>9~K #u?<|?4%>BBB?= j?=C?9%&8&%%&%8&?4$?1?=>Bt6?9%%?<B?<B㐞?B狅 B?<>B狅 B?B狅^ B?<>B狅< B?t?4?t?4_)=?=?4w[?4xZ?<>>u?4)>t ?4)?4N'<<><?4 *?4xZ>uH >:uC >=t?4'?=8<@<h=?7H?7=?7v ?7v?7>=,?7H= $?7v(?7B0?7<>&?< @ ?4H?1?=?4XL?=r?4\[ؓL㐞 ?1?=>u2|c?4W?45L?1^FlؓF?1V?=>zt >$0?7>& X?===?1L?1?=?4 *wB?4*==~?=?4_~`?==hh= H?=>u?48=>$>BH~\$B= ?== ?>t X?=?$>u>$=Bh;BtB= H?>t?4*=>>$<C=?7㐞>>&?uK>(tJ #u?<~= 4?7?4v/4?=?4.4?7>,t?4? @ <@<<=8?7<>&>$<=(?7=?7>&?<(=?u?4,?<>u?4.>u?4/?4I?4u.>julJ @ h=?7H?7?4/v?7v?7=?7v?7 >&?u>$?=>$>BH~B= ?== ?>t X?=?4*B@@@@㐞B>\uM\H>u0d= ӻ==?>uԡH>uƋJd= ?== =?T>u?1ӻ`?1?1AAыûN= ?1V?=@@@\;d= ӻ==?>uҋ+d= ?1?=Gd?+\Cڇʋ\= ?1?=XVV>$?4?<= u=ӻ>$>$?4/>&}X?=?4\[>t?` |c?4~ZғH?=H?hD?W㐞>t `?=?<>u^>$=Bh;Bt#B= H?>t =S=?4xZ>uK>(tJ #u?<~= ?7?4v/?=?4.[?4_~?BB=?8AA~B?8B@@v?8@?<?7>,t?4?y @  @   >&>$ =?7>&?<?4?<=?7H= ?7?<>$ C=?7>&?tI #tJ  X?=?=  ?4 ?4w[; | ?=  ?4xZ?4_ CC;~IB= ӻ?>tI #u?<?= @@@ n?=?4->t H?=r?+rC?46?4 >>u ?4)=?Y>u?4)?W?4N'<><B = u =>$>BH~$B= ?== ?>u B@@@@B$?=?483$?7㐞>&?42>(u?4?4G?4!3H?1?=M<C= ?7>&?4N'< ?4*>t?4H>$4?=?4FH?4!3?4IH?1ӻ?1?=>uK?tJ##u!X?==?1?=?(u?=  ?6t ?43?4N?4E?4N?4E>u>?43?4S~?=,=?=*?=?4$=~?>t @@  X~?=X~?>t 㐞4?=<?1?=X~?>t)=?1?=K?4 ?4>t?4?4V_?4xZ>t?uJ?>uI #u= J?>t?4{!>z }K>z~J #u?4_?46˓~?=><uKӻR~?>uIX?>FuH ##u @ >>uKӻX~?>uI##u @ ?4_?45  ?4xZ?4_?4_?4  = ?>t  W?4T~?>t?46< = ^?>u?4 f?=?4?rt?+tB#tBB= ?=t?4 r= ?=rH?4D?W?tI #te?47X?>t*?4:"?[D?YD=?=?47?4:?=?49?4";p?1?=Qj?1?=?4:|?1?1?=?4:?47?1?1?=?4:?<?=?=?4UF?427?4j?47?4j?<?[D?Y?4u:?1?=?<?4[>t?< @ ?4xZ㐞>-t  @ | ?4[?4_~?=?4_?<>ru?KӋ= ?=?47>t?4 ?4E>u>狝=?=?4UF?=>烽t ?4 X?>t*?4:F?[D?YD=?=?4:?4:?1n?1?=?=?49FX?>t*?4:"?[D?YD=?=?49?4:?=?49?4";?1?=?4UF?1?=?=?4{9?4F7?=?4?4j?47?4j?<,?1n?1?=?4:8?1n?1?1?=|㐞 ?=?4{9?47B?=?4:"?[D?Y?4u:d?1?=?4:?[D?Y?4u:?1?=?4:?4j?rt X?= ==?=?<?=?4C?4?4xZ>uK>"tJ #t4?4n[?4xZ>t?<>,u,=?1?=?<>,t;= ?8?t ?4?,=?㐞1ӻ?1?=>t ?=(=?=,=?1?=?4>t ?4??4V_?=?4e[>t-= ?8?4_?u~?=?1ڒ?1˻`?=?1ّ?1?=?4xZ>uK>:uJ #t?4e[Ó~?=?44=?4?1?=\?4?4_?u?4 ?= @@ ?4S[>t *?4%>B}K>B~J #uBBBC?9>>>!>>>>*>=?=?4UFB=?1ӻ,=㐞?1?1?=n?<?<B?<@>tK>puJ##u??4 J?=  ?<@=n?1?=?4?4n[>t?< @ ?4[?=>u @ ?4xZ>u?4_r?1?=?4ø?9t???r~?1˻,=?1ûVrN= ?1Ӌ^=?1^?1?1ڒ?1?=~?=?<~?=?<~?=?uK>puJ #u ?= ?=?=?4S[>t?t -=?=?t r?=?4E2?>uJX?>uI##u+-=@?1?= X?=>t0?3?m==?=?4UF?=r?1?1?1?1ӻ*=?1?=?4?N>@t(=?1?=~?1ӻ?1?=>@t)=?㐞1?=?<~?=.?=8?W?4@?4>t,=?=?4B,=?1?=?4~?=2?=<?W?4@r?1?=?<>t?4h_?4?4-N(=.?1ӻ*=?1?=?4:?4)C?4?,=2?1ӻ*=?1?=?4:?4-N?4)C)=?=?4?4_?<>@t (=?=~?1?=?4A($?=#?4 z?1?=??4C߻?=?=?4xZ>uS CC;~D?4,~?>t1 @@@ >u?4._4?1?=?4X 㐞?=?4E?=>t?4??4E ?=>uK>~J##u ?4 X?>t ?=X?=?4F?4mF@?4xZ?4_;=?>t @ ?4xZ>uK>:tJ#ӻX ?>tI##un?1ӻ?1?=?<@?>tz?=J?=?=X?=V?1ӻ?1˻)=?1?1?=?4mF>t BB?+B?4~?=?4E?4+F?<򺓺~?=?4_B~?;B|~=?T?<~B= ?>-u㐞>0}K>9~J #tbˡB@B>t^~?1?=?<C=?=?KӋ= ?=?<?ӻ?ړ?< ?1ӻ,=?1?1?=?u9?4 >u/?4.=?Y?42>u;>u?4/d?W?4IB= u=>$>BH~B= ?== ?>u B@@@@B?=?483?7>&?42>(t?4X?===?1ӻ?1n?1?=>)uK; }J #u ?=?4? C=㐞?7>&?4)+ =>u>$?== =?T>u?4IBB= ?1ӻ==?1?=?4B@@>Bu?4??4[>u(?4ȷn?1?=?4>,uZ?4_?1?=?4)+  ?<=~?=?4_~?1ӻ.=?1?=?<|?4[?4_h?=?44=?4V_t?=?4xZ>t?:uJ #u?<  ?4; |?<+ C˻ = ?=?4e㐞[>t?ju2?4)?4mFD?[?YD=?=?4UF`?=ӻ`?=>juj`?1?=?4xZ?4s0:?4_ܻrz?1?1ڒ?1?1ڒ?1?1ڒ?1?1?=?4xZ>uK>(tJ #u?4 ?= @ ?4xZ>-t >t?=X?= X?=?43>t?4E?4V_?=d>u1>uK>uJ #u?= ?=?1?=>㐞 t X?=?1?=?4?4_C?9:LFLI׻?=?<)=?=?uK>}J##u ?4 ?4T@?1?=?4~?=?4E>t'=?=?4UF?=Hr?1?=>@u(=?1?=?1?=?4A ?1?=?4~?=?4E>uK>uJ##u ?4B?4>tC?3?]?g==?=?4UF?1r?1?=Ճ>tr?=?4?4B㐞?1ӻr?1"?1?=?1ӻ0?1?=Vջ~?=X?=B@~?;B}3~B= ??4\>z t@B@B?<?4~?=?<>:u @ ?< B= D?>t:?=$=?=  ?4>ug?45>,t?=?4?45闼?4xZ>uX?=?4CԻL~?=?4xZ>u.>=t$~?1ӻ+=?1?==?4~?1?=Ӄ>Pt @ ?t?< = 㐞?>t ?=?4~?>t ?=z|?4~ZHӻ?=<ӡ?=?4?4xZ>t?<>(t p H ?1?=X?=?4xZ>u#:?4_?1?=?4slH?4S[>uf?4%華~?=>B }  z?1~?1 ?1?=B҃>Bu ,?4_X?=X?=BC?: QQQQQQQQQR*R6RBR!QQn0BRNRN3cRSSQm=VSSt?u?4S~?=?4N; }O?4E>uB?4S?4>SJ ?1ӻ,=?1~?1?=?4ZU|渃>Bt?tV ?=?4 V?4Tl ?=?4?4B>t?1ӻr?1?=~ ?1?=?4?= ?=?4B?4>t?㐞4B)=?1?= )=?=>u r?1?= ?=?4z ?1n?1?=?4V?4Tz ?1?1 ?1 ?1?=?4T?=?4T ?=?4T?=?4T?=?<X?4N?4N?4E>Vt?4+F ~?=X?uK>z uJ #u?<>zt @+>zt>@tH>| v>;tH?4S[>t㐞?uK>uJ##u ~?= ~?1ӻz?1ڒ?1?=(ͻ ?=? ?Wv?W멓?F?F?F?FT=?1?J?=?F?41 ? ?Wv?W蝩?F?FF= ?J?<= ?=?4 >t?<>lt>[u>*u>=u>?t?4tXf>@t ك>!t  Dɡ l>/~K>:}J#Ӄ>vuK##u?4._?<?4\[>t?<>nu?4_?4W?BB B㐞= ?8鬶?4IX?4'!?=?4>tt X?=  :H?=?h>$?4*?<>lt !?= !?=?4_?4?4 ?4 >lt| ?4[?4_?43 @ ?ug?4RZ?9*6BNZfr~&~?~>~u>狅 = ?=H~= ?=j?>uB?>vx?>u~;}U@>㐞 |?3K?M?3*!?m?a?Sv@v H ?4?<1= ??4d?4\?<|   @ ?4\>t?<> }ٶ>_t..=?=|;zt>zu >|cuճ>t?4>.tKӻ?a}I#ʃ>uK##u>zuK>zuJ Ӄ>.uK #t7Ŵ|*|!||| |   @ ?4\>t?<> }ѵz?:3\3\3\3\3\3\3\B\3\3\[3\3\3\[\_\[?4~>|tK>㐞tJ##t".=?=. ?8|;ztP?4\?4_  >|u'>uK>|uJ #u?4_?4._?4>_ @  @ ; }ܴ ?=??4d>狅V z?t?<>zu>狅H dd>uKӻX?>uI #u ~?= ~?=~= ?>` >烽V t?4{!>u>狝B;~ @H?4^>狅BB+B@˻= ~?=?4_~?=?4 㐞 ?=?4>uK>EuJ Ӄ>FuK #u?<>TuK>yuJ Ӂ>uK ځ>uJ #u?<; |?<*j?>t?< Ij?8n?>u H ?<?92>JVbnz ".:FR^?<>t萡?1?=?1?=?t?4h_?<?1?=X?=?<~?=~= j?>t~?KӋ= ?=?<~= j?>t~?KӋ= ?=?<#);㐞t?4?t?uG~= ?=6!~?>uu>+ +++(+2+<+F+P+Z+d+n+x+++++++7I[djR",,66@@J'J*T3T6^?^BhKhNrWrZ|c|for{~ #&&/&20;0>:G:JDSDVN_Nb㐞XkXnbwbzllvv "+.7: C FOR [ ^*g*j4j>jHpRv\|\\fppzzz+t  Dj ,n 14@\BJ$P.V8aL1 fVV``tttdV:tvvv~ 4~:% (+++d0R[ 㐞( (&(\)<E<K<NPqPzP[V:PZ- \^nnx  )3\eo "("1"7"H"R"U6Z@lJT^h r r |,          $ * - - - 3 9 F L Q & [ 0e 0 j 0m : X D D N N b b l l vQ k      . : D N Z  _ h t y           * * 4 68 > 65 6J >X H_ 㐞Hb Rb \b fb pq z} z z                % / < I S ] ` m  w       "N $ $ B . . . . 8 8 L L  AN VN YV Y` Yj Yt S[>^t ht k ~Z|=p z        2        & ; W > K a g m s( y( ( ( ( ( ( < < < F F F P Z d n n xZr=n n x x Ax       " ' * * * * 5 ?  D㐞 b N  S ] RZL=b ^@g q {    " " " , 6 @ 5 J T !| ^ h (| C M Y h r w } #                  / L t Q D [& m0 N N X b l  n v n p p p (Pp p v v  " . : = G  l u  z              j      % D G* Q* IX;V* r ^* h* q4 w> H R R R p R \ \ 㐞p r r v )z ) ) ) 2 _@7 L a t }               W"CJd$n.`x8BBLLLV````t~ $-39?kr|2\> (?<22lP"fFtX;\?x( D<Zdd,nzh ,28>Wt;C Yr||X <$/8>AAG\>LVu_@ <&&0:D!N'N-X2X<XBX\El_L@JlOvYv^vdiu7z[P5  GL._㐞`@QaV:fRp z     \ *44>HRf#f(p2pVziruf<&&\0>(TCV,I1U>:W  B!!84"m='-%T"n&/3>n(/I0c00D 0l N3!38"~6n#G;%;4&<&=L'T /J1?)A='B+`C~,F^.JI 0|I0"JB1J1?)UL2O:4IO4iO4O*5;Pz5GP5P86fI\0<>(?)O5N3/@]"!0 >(&$ ! & / 4 = F K Q T T T W W W 4=`'\    $ . 8 L L Ln0 V ` j 㐞 t t t!~"!{!,!5!B!!!!!!!!!!!!! !/"2"""(,"(5"2[D>:"2D"2G"F_@L"FN3Q"FT"PT"ZT"dZ"n]"x]"]"b""""""""""""""#""# ###E#Q#V#u#}###E-###e$h#####"#,#,$,$$6$6$6$@8$@A$JK$JQ$JT$TN& ^& `$^$t$r$r$r$r$|$|mF6.$$$>_j@$$$$$UF,.$$$$$%$%% %%%*%-%㐞-%-%7%=%i0@%E%3"J%&v%&y%0%0%D%D%D%D%N%l&8&%X%X%X%b%v%%%x%%& &&(&&%&5&8&?&K&[& k& n&*n&4n&>n&Hs&H}&H&R&\&fV_t@&p&p&z&z&&&w[0>&&&&&&&&&&&&)&&&(F&)@N'V&'' '$ *^'.'8'8&'Bs00'L:'L'?'LH'L+NU'`b'jk'tw'~''''''''''''''\[>'(C(2(((!(@(M(2W(2`(2m(2v(㐞4(4(F(P*(P(P(P(P(P(Z(Z(Z(Z)dh) )n)x1)x:)x=)*B)Q)V)[)e)u)x))))))")6),),),)6)J)T*T*^-*^0*h<*|v/A*J*.O*X*b*g*j*q*x*~***********,***** +0*.*++/I/+:u.+DJt1)+X0+b=+lF+v/K+T+]+j+s+y++++++++_-++++}-+ + , \-,*,*,4",>,,HG,RN,\U,ff,pl,z,%-,,,,㐞,-,"-%-G-M-W-l-z--8-8-8-B-L-V-V-`-`-`-j-j-t-t-~-- ...%./.9.h.E.[.e.r.z..... . . /P_@...(.2.</F/F"/Z,/Z1/Z4/d;/nB/nH/xR/\/i/s/|//////////////////////?*/"/,/60J90TB0TH0TN0^W0h`0hc0rc0|c000000000000 0 0 0 0 0 0& 00 0: 0D 0N 0X 0b 1l 1l 1l 1㐞v 1v .1v 62#31 81 b1 B1 G1 S1 |1 ]1 k1 p1 v1 1 1 1 1 1 624!1 1 1 1 1 1 !83!1 !1 !2 !2!2 !2 !2 !G/2*!!3!$2*!32*!D2>!N2H!S2H!Y2H!\2R!a2\!k2\!H/s2\!}2\!2\!FHv/2f!2f!I/2p!2p!2z!2z!2z!2z!2!3!3!3!3!3!&3!53!K3!N3!N3!N3!X3!^3!a3!f3!k3!E-p3!u3!z3!3"3!3!3!3"3"S,83"3"3"3"3$"3."38"38"38"3B"4B" 4L"4V"%4V"54`"84j"84t"84~"=4"B4"L4"Q4"V4"[4"e4"h4"m4"4"4"4"4"4"4"T5"4"6#4"4"5"5㐞"C5"J5"O5"5 #Z5"_5"d5"i5"n5"5"5"5#5"5"5"5"5#5#5#5#5 #5 #5 #5#5#5#5#6#6#6#6#6(#62#R6P#/6<#D6F#J6F#O6F#r6d#f6Z#m6Z#{6d#6x#6#6#78h$6#7,$6#6#:b%6#6#7#7# 7#:%7#7#9%7#";%"7#/7#27#A7#F7#\7#a7#7#f7#|7#7#7#7#7$7$7$7$7$7$7$u:X%7$7"$7,$[:>7,$7,$76$76$7@$ 8@$8@$8J$8J$!8T$&8T$/8^$48^$A8h$V8r$[8r$e8r$k8r$ 9$v8|${8|$8$8$8$8$8$8$8$8$8$8$8$:0%8$8$9$9$9%9$f9$.9㐞$39$B9$N9$9$S9$X9$a9$k9$x9${9$9$9$9$9$9$9$9$9$9$9$9%9&% :0%:0%::%::%:v%!:D%0:D%5:D%B:D%G:N%V:N%[:N%h:N%m:N%r:N%:X%:X%:b%:b%:b%:l%:l%:v%:v%:v%:%;%;%;%;%,;%8;%D;%G;%G;%G;%P;%C,U;%Z;%_;%;&~;%n[&>;%;%;%;%;%;%;&; &;&; &;*&;4&;>&;>&;>&;H& k<&u<&<&<&<&<&<&<'<&<&<&<'='='='='N3=.'=8'=B'=V'"=V'1=V'9=`'>=`'A=j'A=t'A=~'F='T='Y='b=㐞'e='m='m='m='r='|='='='='='='='='='> (>(!>2(*>F(='='='>'>(>(>(!>(('>2(*><(0>F(3>P(3>Z(3>d(9>n(<>x(<>(<>([>(h>(p>(y>(>(\P5>(>(>(>(>(>(>(>(>)>)>)>)>)>")>,)>J)>,)>6)>6)>@)?J)?T)t?h)?r)?|)?^)q?^)}?h)?r)?|)?)?)?)?)?)?)?)?)?)?)?)?)?)?)?)?)?*?*T@P*@*@*@&*@&*@&*z@l*#@0*(@0*1@D*f@b*@*@*@*Q@N*c@P*f@X*n@d*k@b*@l*@v*@*@*@*@*@*@*B\+@*@*@*@+@ +A +)A +>A +GA+QA㐞+pA+uA+~A+BR+A +A*+A*+?Nr3A4+A4+A>+AH+AH+B\+B\+ B\+)B\+.Bf+3Bf+=Bf+LBf+B+QBf+aBp+fBz+oBz+xBz+Bz+Bz+B+B+B+B+B+h_@B+B+-Nh3B+B+B+)C,B+B+C+C, C,C,C,!C,&C,3C,?C$,LC$,QC.,TC8,TCB,TCL,]CV,`C`,`Cj,`Ct,eC~,tC,~C,C,C,C,C,C,E-C,C,C,C,C,C,C,C,C,C,C-C-D -D -E- D -D-E- D-%D-*D-3D(-RD(-XD(-]D2-kD2-tD<-zD<-D<-F8.DP-DP-DZ-Dd-Dn-Dn-Dx-Dx-Dx-E-E-&E-/E-8E-`E-eE-oE-xE-~E-E-E-E-E-+F.E-E-E㐞 -E-E-E-E-E-!F.F.(F.5F.DF.GF".jF,.F6.F8.F@.FJ.FT.F^.Fh.Fh.F.Fr.F|.F|.F|.HN/F.G.F.F.G.G.G.(G.+G.G0/5G.HG.ZG.dG.gG.pG.uG.~G.G.G.G/G/G/G/G/H/G&/G&/H:/HD/HD/HD/)HX/3Hb/=Hl/LH/cH/mH/rH/H/H/H/H/H/H/H/H/H/H/H/H/I/ I/I/I/'I/,I/GI/JI0JI 0JI0PI 0UI40ZI40cI40fI>0fIH0fIR0kI\0pIf0yIf0|Ip0|Iz0|I0I0I0I0I0I0I0I0I0I0I0I0I0I0I0I0I0I0I0I0J1 J1J1J1J1"J$1"J.1"J81)J㐞L1eJ`13JL18JL1=JV1KJV1WJV1\JV1yJj1Jj1Jt1Jt1Jt1J~1J1J1J1J1J1J1J1J1K1K1K1(K1.K1K21K18K1=K1GK1PK1VK1`K1iK1uK1~K1K1K2K2K2K2K2L22K 2K2K2K2K2K(2K(2L(2L22#L<2(LF2:LZ2FLn27LP2CLZ2RLn2ULx2UL2UL2ZL2_L2dL2mL2rL2wL2L2L2L2L2L2L2L2L2L2L2L2L2L2L2M2SM"3 M2M2$M24M3AM3FM3XM,3aM,3fM63M63M63M@3M@3M@3M@3M@3MJ3MJ3MJ3MT3MT3N^3*N^36Nh3ENr3KNr3QN|3N3`N3tN3yN3N3N3N3N3N3N3N3N3N3N3N3N㐞3N3N3N3N3O4O4O4O4O&4O04#O:4-O:46O:4;ON4@ON4FON4IOl4IOv4IO4NO4XO4aO4fO4iO4iO4iO4rO4wO4O4O4O4O4O4eU9O4O4O4O4O4O5O5O5O 5O5O 5O*5O*5O45P45P>5P>5$P>5-PH53PH58PH5;P\5;Pf5;Pp5DPz5GP5GP5GP5MP5SP5aP5fP5pP5sP5}P5P5P5P5P5P5P5P6P5P5P5P5P5P6P6P6P$6P.6P86QB6 QL6QV6AQj6!Q`6>Q`6KQj6QQj6VQt6_Qt6hQ~6Q6Q6Q6Q6Q6Q6R7*R(76R<7BRP7NRd7cR7SST8VSh8S8S@8R7R7R7mU9R7R7S7S7 S7S8S8S8%S68KS@8PS@8SSJ8VS^8TX9[Sh8iSh8rSh8wSh8}Sh8Sr8Sr8S|8S8T&9S8S8S8S8S8S8S8S8S8S8S8S8S8T8T8"T8,T89T8U9GU9PU9UU9_U9jU9rU9xU9}U9U9U9U9U9U㐞:U9U:U :U :U :U :U:U :U*:U4:U>:V>:VH:VH: V\:V\:1V\::Vf:XVf:[Vp:[Vz:[V:V:V:V:V:V:V:V:V:V:V:V:&W;W:XF<W;`@W;X;0W;5W;WL;8W$;BW$;HW$;KW.;UW.;[W.;^W8;dWB;WB;WB;WB;WL;WV;WV;W`;W`;Wj;Wj;Wt;W~;Wt;W;W;W; X;X;X;"X;'X;1X;:X;@X;FX;RX;\X;bX;lX;qX;tX;tX;tX;~X;X;X;X;X;X;X;X;Xb[>k[>t[&>}[0>[D>[X>[N>[X>[X>[b>[l>3\>B\>[>[>\>_\>[v>[v>[>\>#\>G\>L\>R\>{\>\>\>\>\>\>\>\>\>\>\?\?\ ?\?\ ?\*?\>? ]H?]R?=]R?I]R?R]\?b]\?l]\?u]f?]f?]p?z^?]z?]?]?]?]?]?]?]?]?]?]?]?^? ^?9^?<^?w^?^?^?^?^?^?^?^@^ @_@_@_$@ _L@_L@+_V@;_`@S_j@`_t@e_~@u_@~_@_@_@_@_@_㐞@_@_@`@ `@`@`@`@`@`@ `@%`@z`A3`AC` Ah`\=bTHENjTHEN $tGW.IN.X$FOR GW.$=0 TO GW.IN.D:IF LEN(GW.IN.X$)<>0 THEN GW.=GW.IN.DGW.IN.X$=INKEY$:  NEXT:RETURNGW.IN.D=GW.IN.X=  GW.IN.X=-1::GW.IN.X=ASC(GW.IN.X$)0GW.IN.D=<GOSUB.FIF LEN(GW.IN.X$)=0 THEN RETURN.h IF ASC(GW.IN.X$)=GW.IN.D THEN GW.IN.X=GW.IN.D RETURN( GOTO INPUT (1, )/LOG(10)WESCREENOPEN NAAND NOT0 3.14159265 +STR$(INT())"+((1)0TAB8LOCATE 2㐞MZ m)@EPq|㐞bm&@  UM>=?=Y=?1"?=T=?1&?=p=?1*?=q=?1.?=)2?[?S="?16?[?S=?1J L N P DR QT V X Z \ ^ ` #b Cd f h j l n p r t v x uz | #~ O  B .   >     $ {      D   |      }  㐞   L     (  N # # = F  %     >  ' l ) 5* * + , < , - V- . / . . D/ & 0 81 2 2 ( 3 4 X4 5 5 ~6 3 8" @8$ 4& 9( * 6, 7. 0 2 `;4 :6 ( 8 =D?=H?=L?=@P?=|T?=X?=\?= `?=,d?=X:?=X>?=\h?=l?=p?=㐞t?=4x?=XB?=x|?=?=(?=l?=?=?=XF?=XJ?=XN?=?=?=?=?=?=?=D?=^?=j?=XR?=?=?=?=N?=n?=?=XV?=?=\?=?= ?=?=8?=f?=XZ?=X^?=` b d f h j l n p r t v x z | ~   㐞> @ B D F H J L N P R T V X Z \                                                              㐞       "$&(*,.02468Q:3<4>5@B8DF-H^JLNPRTVXZW\E^T`7bId9f0h_jlnprtvx1z2|D~R6UOP[AXFYJK@: 㐞SCGHNL;]Z VBM`./\ ?4# ?4q ?4?48?2r?W6v?WC?FN= ?F?4k?z@ ?1>?4 6C?9  8=b?=?4xb.?=<=b?=?4xb2?=f=b?=?4xb@?=?<8?W<?Wf?<8?W<?W㐞f?<8?W<?Wf?htj6?4=>ht>jt 6D?2L?W6?W?F?J?4>htՃ>lt 66?2 ?W6L?W?F ?J?2D ?W6H ?W?FL ?J?2 ?W6?W?F?4㐞 >n t X@ ?=p p?1@ ?=?4=>hug?uJ| ?>uI #u j?< p?>uJ ?>uI #u j?nt?E=?1?J>>nu ?p?F?n uK>n uJ #t>nt?4>n0}K>n9~J #u?=?F?4 .lnlt@t>t?4=>ht?4X>luK>luJ #u?㐞t|?n t?<>nttHth?tb?KӋ= ?=?< v?=?4i ? z?=?2 ?W6H?W?F*?Fv?Fz?F&?J?=?J?4?2 ?W6H?Wf?F.?FF= ?J?l~ b??3 㐞?m~?M?3?a?S~l@l>l~~sl?9'3?KWco{ >l~B??3?e~?M?3?a?S~l@l>l~?b?=?+ +++(+2+<+F+P+Z+d+n+x+++++++++1=Oas",6@JT^hr| #)/5;A㐞&G0M:SDYN_Xebklqvw}  *4>HR\fp z%+17=CIOU[agms$y.8BLV`jt~  (2<!F'P-Z3d9n?xEKQW]ciou{",6@JT^hr|#,5>GPYbkkkt㐞&}0:DNXblv (1:C LU U*U4U>[HaRg\mfspyz   $ . 8 B L V ` j t ~        ! ' - 3 9 ? E K Q W( ]2 c< iF oP uZ ud un ux {                " , 6 @ J T ^ h r |                 㐞  5 M e }& 0 : D N X b %l =v = = = O a s           '  9 K * ] 4 o > H R \ f p z  # 5 G Y k }    $ . 8 B L# F Vq # `( j8p- tR ~kW ] i  q q q     x   # (# 2# <5 Pc Z d n x    7T+ 8 =bD W v {     |4,%"767@7J<^ihr& 㐞$C:UND0:XBlOvixx  *4 >5H8R8\8fJzh}V`jt~+7CO[gs (2<FP'-3Zdnx'3?KWco{",6@ JTo$}.8BLڋ. +=r^_+бҋWV-P@X!. 㐞 _^&VW_^[VW67x@ABS ACS ADVAL AND ASC ASN ATN AUTO BGET BPUT PCALL CHAIN CHR CLEAR CLG CLOSE CLS COLOUR COS COUNT 8DDATA DEF DEG DELETE DIM DIV DRAW `ELSE END ENDPROC ENVELOPEEOF EOR ERL ERR ERROR EVAL EXP EXT FALSE FN FOR GCOL GET GOSUB GOTO $HIMEM (0IF INKEY INPUT INSTR INT \P`LEFT LEN 㐞 LET LIST LISTO LN LOAD LOCAL LOG LOMEM MID MOD MODE MOVE NEW NEXT NOT @OFF OLD ON OPENIN OPENOUT OPENUP OPT OR @8PAGE PI PLOT POINT POS PRINT PROC PTR X|RAD READ REM RENUMBERREPEAT REPORT RESTORE RETURN RIGHT RND RUN PSAVE SGN SIN SOUND SPC SQR STEP STOP STR STRING @,TAB TAN THEN TIME TO TOP TRACE TRUE p㐞UNTIL USR VAL VDU VPOS WIDTH #ABS AND ASC ATN AUTO BASE BEEP BLOAD BSAVE CALL CALLS CDBL CHAIN CHDIR CHR CINT CIRCLE CLEAR CLOSE CLS COLOR COMMON CONT COS CSNG CSRLIN CVD CVI CVS FDATA DATE DEF DEFDBL DEFINT DEFSNG DEFSTR DELETE DIM DRAW FEDIT ELSE END EOF EQV ERASE ERL ERR ERROR EXP *FIELD FILES FIX FN FOR FRE HGET GOSUB GOTO bHEX 1nIF㐞 IMP INKEY INP INPUT INSTR INT KEY KILL bLEFT LEN LET LINE LIST LLIST LOAD LOC LOCATE LOF LOG LPOS LPRINT LSET 1MERGE MID MKD MKDIR MKI MKS MOD RNAME NEW NEXT NOT 1rOCT OFF ON OPEN OPTION OR OUT TPAINT PALETTEPEEK PLAY PMAP POINT POKE POS PRESET PRINT PSET PUT [RANDOMIREAD REM RENUM RESET RESTORERESUME RETURN RIGHT RMDIR RND RSET RUN p`SAVE SCREEN SG㐞N SIN SOUND SPACE SPC SQR STEP STICK STOP STR STRIG STRING SWAP SYSTEM 8TAB TAN THEN TIME TIMER TO TROFF TRON USING USR "VAL VARPTR VIEW *<WAIT WEND WHILE WIDTH WINDOW WRITE jXOR H~B-TRAN1H~*B-TRAN :- BBC BASIC TO GW BASIC CONVERSION('Press ESC to return to operating systemKR1.5 (C) Alfragan Ltd./David Ball,1985: Worldwide distribution ACT(UK) Ltd. P1TAre you using a colour monit㐞or Y/N ? [ ]0`=If you answer No then COLOUR statements will not be convertedp2How many colours are available - 4 or 16 ? [ ]p1 Give drive letter which holds B-TRAN programs [ ] P Press RETURN if on default drivet :z y Y n N  B-TRAN not found on given drive - press any key to try again0~&>W  3_ ! t= ! t0 !"" !>#u$$,@t<wբ 3㐞MZ- 9)@EPq|㐞bm+#@ 6@UN;=ӻY=?1@?[?S=?1?[?S=?1û=?=p=?1?=q=?1?=T=?1?=   >u?=ӻE=?1?F?D?WH?W7?FL?F?FD ?F?J?p?WD?W?F?Ft?J??J??J??F?F?*?WD?W?FN-=?J?.?J?D?J >烽u?4>狅?9 ,8DP\ht㐞x=?=>u#??F? = ?F?J?$u1$?^?Wb?W" uk>"u>"SuK>"suJ #u"?4g? t>f@ ?1>r&?=?4*3>烽u?4>,t @?=?F>烽t ,?|.@?=?FJ?4 ?4 .? ?3?YD?W?F?1?J? ?3?YD?Wd?F?1?J?03>?ӻ.?J?D?J>烽u?4@0?1?1&?=?44>?t?=?F$??F?<?=?<,?=?+ +++(+2+<+F+P+Z+d+n+x+++++iuc";,D6M@\JT^hr|BLV`j t,~8㐞DP\ht (2<FA>g&0z:,DpFNWXcbclcvqzzz#Cc 4hs *>HR\fz&?O[^y$.8ڋ. +=r^_+бҋWV-P@X.  _^&VW_^[VW67xPB-TRAN CONVERSION WARNINGS FOR @xPress RETURN to exit to 㐞system ,Press SCROLL to view warnings not on screen ,Press S to save the warnings to a text file -Press any other key to do another conversion `2Line no. MessageH-------- -------0@ jB-TRAN16vNo warnings for this conversion - please choose optionML.wrnProducing message fileOWarning message file  produced No flashing foreground available#0Double height letters not available(XNo graphics control characters available Missing fiel㐞d0N.B. Only 1 character can be repeated in STRING$+Continuous note (duration -1) not available*FX not translated*TV not translated-&Use FONT editor to create graphics characters1XENVELOPE not translatable to interpreted GW BasicAssembler code not translated2No indirection equivalent.Statement not translatedCheck memory location-INKEY(-n) translation is not exact equivalent%2COLOUR not translated - user's option"\GCOL not translated- user's optionLOCATE line nu㐞mber exceeds 25,VDU codes 0,4,5,6,14,21,27,29 not translated9Set GW.IN.D=0 to correct ASC value for your character set"@% print formatting not translated18Convert the line manually and report B-TRAN error9nMultiply INT(RND*32767+1) by -1 if negative answer wantedAOutput truncated as line too long.Split input line and re-convert+Only GOTO is allowed in ON ERROR statements1"BBC statement not translated.See manual page 8-3.6X*KEY not translated.See GW manual about KEY and ON KEY㐞* command not translated.#&>W  3_ ! t= ! t0 !"" !>#u$$,@t<wբ 3; = @( ! '! %; (  J+С Љ +֋܃;s3Ҵ!  '!) u& ; (  !> t"' ! ui>  Ŏ&- u[. ݹ3ع+w33ь+ȁvẛ3  !3P Error in EXE file $ Program too large $ Cannot find A:BASR㐞 10 REM 20 REM ** ANAGRAM ** 30 REM 40 REM ** A.J.S. 13/4/83 ** 50 REM 60 CLS 70 REPEAT 80 MODE 7 90 PROCinstr 100 MODE 2 110 FOR go = 1 TO 10 120 PROCgetword 130 PROCmix 150 PROCguess 160 NEXT go 170 PROCscore 180 UNTIL FALSE 190 200 DEFPROCinstr 210 score=0 220 PRINTTAB(14,2)"ANAGRAM" 240 PRINTTAB(1,6)"YOU WILL BE SHOWN THE JUMBLED-UP" 250 PRINT 260 PRINTTAB(10,8)"LETTERS OF A WORD" 270 PRINT 280 PRINT"YOU HAVE TO SORT 㐞THEM OUT AND ENTER" 290 PRINT 300 PRINTTAB(10,12)"THE CORRECT WORD" 310 PRINTTAB(5,18)"PRESS SPACE BAR TO BEGIN" 320 Z$=GET$ 330 ENDPROC 340 350 DEFPROCgetword 360 RESTORE 1100 370 FOR N = 1 TO RND(20) 380 READ word$ 390 NEXT N 400 ENDPROC 410 420 DEFPROCmix 430 dummy$ = word$ 440 REPEAT 450 new$="" 460 FOR N = 1 TO LEN(dummy$) 470 IF RND(2) = 2 THEN new$ = new$+MID$(dummy$,N,1) ELSE new$ = MID$(dummy$,N,1)+new$ 480 NEXT N 490 dummy$ = new$ 500 㐞 UNTIL new$ <> word$ 510 ENDPROC 520 530 DEFPROCdisplay 570 CLS 580 PRINTTAB(3,3)new$ 630 ENDPROC 640 650 DEFPROCguess 660 colour=0 670 REPEAT 675 PROCdisplay 680 PRINTTAB(3,5)"ENTER YOUR GUESS" 690 *FX21,0 700 INPUT guess$ 710 colour = colour+1 720 CLG 730 PROCspin 740 IF guess$ = word$ THEN PROCright ELSE PROCwrong 750 UNTIL guess$ = word$ OR colour = 3 760 ENDPROC 770 780 DEFPROCright 800 PRINT"YES" 810 FOR pause = 1 TO 2000:NEXT pause 8㐞 20 IF colour=1 THEN score = score + 1 840 ENDPROC 850 860 DEFPROCwrong 880 IF colour = 3 THEN PRINTword$ ELSE PRINT"SORRY!" 890 FOR pause = 1 TO 2000:NEXT pause 910 ENDPROC 920 930 DEFPROCspin 950 FOR N = 0 TO 2*PI STEP .1 960 X = SINN*250+600 970 Y = COSN*250+600 980 SOUND1,-8,N*30,1 990 MOVE 600,600 1000 DRAW X,Y 1010 NEXT N 1020 ENDPROC 1030 1040 DEFPROCscore 1050 PRINT"SCORE =";score 1060 PRINT"PRESS SPACE BAR" 1070 Z$=GET$ 1080 ENDPROC 1090 1100 REM ** D㐞ATA LINES FOR WORDS ** 1110 1120 DATA ANDORRA,AUSTRIA,BELGIUM,DENMARK,FINLAND,FRANCE,GERMANY 1130 DATA GREECE,ITALY,LIECHTENSTEIN,LUXEMBOURG,MONACO,NETHERLANDS 1140 DATA NORWAY,POLAND,PORTUGAL,SPAIN,SWEDEN,SWITZERLAND,YUGOSLAVIA 5Woh68/89999#:C:c::::;#;C;c;;;;#>C>>>>>?/?C?o??Z>N㐞MZh* "| z 0 &06 E 3!J!+@-03455z556p68w9;=J>>n?A㐞$$CÞRandom Number Seed (-32768 to 32767)$>d ]xEco#Ƥ~@zZrN vH Tʚ;  !!!"""####$$$%%%&&&&'''((())))***+++,,,,---...////0001112222333444555566677788*.*P|Yt&wz^Pc|㐞u~r11t=~:?ԃ1CeむtG鵚 ʀeQҬ?wp>[3l_RM0={!;N;=-ib5~P$L~ye&X4#]I̿JÍN}k,٬NytZB<(sfioS;5#-1]h!I5| Ƅ}&l.F}k +}+''c}jr$I~L~^_B";5J }#~t'Xv%F*Ӯw-;uD1mA4-q7|tP;d<>b}JlA]E62w㐞8HMľfK:|O\ 5$4RKB.aUPo ̼ Y$ /\[_6A_p caw+fCzՔVijl7mGG'peXQsOnwףp= #zL} Hz@PC$t >(kn@C:h* 51_c.1@v:k ^# bx-Àz&XƐn2xʴW ?h)͡SЅ@aQYԦo% 'N x9? 6!OgI#E@|o|p+L67EV߄vl: {Η@H½p PvP?<&Ok8и'ƫ7Cưe\{2~]30b/5`=!㐞 C)/{QFZ$+vﶓ+髤8UqfclN@< 'PKPEe35DNn"~h!II,k  j0 0 TeB׳]\);8zr1r1㐞<63'Hi1XCSP_ط.㐞 [PãXCSP_ط.\[PãXCSP_ط.[Pz//e'0000001 1"""M!@!6!)!BTi}~Q<!E"^otMs<|>36>/+R>?-?Q97H?e:>0'^<553A62  11H5 +}!">*6*y**"K100 %i3%/ 555"5 9899....(22e/r/-+ -+-+-+=F@I44;7P7]7q7k.k.#153<#$##p8@=@B@G@L@Q@V@[@`@e@j@㐞o@T.^.......        B o7 d? l< i    \CQ8Y@V=OuRRmAA::9=>//5C5C5CSyntax erroRETURN without GOSUOut of DATIllegal function calOverfloOut of memor Subscript out of rang Division by zer Type mismatcOut of string spacString formula too compleNo RESUMRESUME without erro2FIELD overflo3Internal erro4Bad file numbe5File not foun6Bad file mod7File already ope9Device I/O Erro:File already㐞 exist=Disk ful>Input past en?Bad record numbe@Bad file namCToo many fileDDevice UnavailablFDisk Write ProtecGDisk not ReadHDisk Media ErroUnprintable erro.X[&SP--GˉCtK6SB3ۋӉ&SR,Z[ urq uCKK$+؋+ڀK;rKǓ>OOXY&QPY Q ǣ3AY)-+3H ^.V6X[SPyX[SPh 2345㐞679:=>?@CFGHD& 2345679:=>?@CFGHD.MM&>u=>t62X[>u-$)%S6x S--STO >u8- 9 + tn- in line]XZUYj -U- at address]_ZU :-, --,ô&=t t ĮsG,:3ۭ t;s ;rFF t,Internal Error - No Line Numbek,)+M23 &Zw )! uڀ> tӀ> u  EX㐞 E ! u3 @ p ! '!x %  &>> tt J+Сr Љt Ӄ ;w9WST + h*[_3Xp 3P -+$м3Ҵ!'!)tuzݡ;(!>t"'! uN>Ŏ&-uޡŎЋ&P6Ŏݺ! Error in EXE file $ !U3PS ![ > bmt ~ + ~  P9rSl[^>3;s6S++ v+-t;wЋ~ +ϡ4r;w㐞 t0yW+Ž x33N_>>[S nb+Y +ñ t +  l  p !>v ]t)' ! td6p r ;sŎ&,v u~ ؇+H4& . QX+u3Ҵ! '!u !6t =tH 7F9w9w>4=G664t%5D+NW>G>4^N>5Ë6 >>>íu 7F ) E4  E]5πL|t tc tY:s*㐞wGّ͵S| t3ۀrt<~) t֊ߊwt!uދ׋?t ?t psMuE\+׋s u vT tN uvEފ x t5qwrt st$ ǣƣyþ  4 tM t݋=2쁀pȀĀPӓX x ut~ˀɀSS X؃tXþB \ MD tC t2쀀*pĀPɀT$2΀]-2ɀπV ‹t[\;s3sNsþ+Ћs㐞À?r3W= _ˀ?r!VWw_^y ˀ?r VWw&RS ڏZˉ&R Zˉ&RO i Mþ. H MD t:w t*܀8wّ͵PW2̀ tc| tыˋ3wtHr#|+ t֊͊ߊ2wt#Gu?t ^?t Xp$4L\ts uup*4L\ts3 uv|Ntyً3uvdNJ݊Ί xtJqwrtst$㐞 ǣ߿ƪyþD tM t2쁀p̀ĀP"tX x utlGaDM2 tb t쀀*pĀP2ɭ̀FG"WWW ‹tY[_j63;s\ u;w;R3 tP t tZ]蕒sOsO+‹ɊD E 3ۋ  ʋU tU3D t tX PD t U t3ɋ tU tыD t t 㐞 X P t&ʋ t&3ۋD tU tӋD tU t ʃU3E t&ڋD t&ڋD tU t ՋD&E t&&ŗZ^ KYBDSCRNLPT1&;;;E;w u!ؘ.t.&V/1u^P&dXPP&V1^t P&Pˉ&P V0t^<uY4^Xˉ&P&Pۉ&P҉&PS?t-_߰ItOtRtAu ,[X:QS˳,[Yˉ&PVPV_0u2 ^XSQRWڋw㐞 u_ZY[Ct K t wSW._[OOuûV6 u^V^V6 u^|V6 u^V6 u^V6 u^V/t^WSPWSPD. x2ؘ. tXP.X[_LSV6,u,Ä&,tك3S.و\D.T/&Sr QR3ɋZYVW򥥇ڃ?t UG_^[ˉ&QRVWp%S [_^ZYˋދ ts9QVWw;v;_^u;Y ҉u8t[6>tgXSW>tWXmSˀ>tD t ;r;sFFXSCu_PRS3B[ZX3þ˾˿˿ˉ6.>0)6.>0ˉ6.>06.>0ˏ2^&V&22&UVWPQRS2[ZYX_^]PVC㐞 u643t=t5H;r64+tH+^XÓ7FL64;v[빰<rS664=ttuNN@G7FPSVW6H=t#u󫓋;wu)@;t $+rF5>4_^[X during G.C;5}Internal Error - String Space Corrup t$>6t$VS666w\Ӌ^ú"$sG8QWH_YQVWA_^YS8tr[s]PÇ6GXPRC4+rCCCZXPQRVWQSʋ2[^wA㐞 _^ZYXPS_;r;w @ G[;uX[XRQ3BJYS_[ZË>>4@$+-E8>6<EE5M,QRS3Ɉ)3ҴF,[ZYÀ>)t )(~)(QRS3ɊŇ2< tI<u  tA:< u 3utu < r a>t :&uNtI->&W)<P-:&u2> tCX~66PDP t$3XPDPD tXPDP3ۀ|tK3ۀ|t K3ۀ>tK 㐞 &&6^P&>t&XV6s؇QsYˇQcYˇQ>ttQ{YQ?Y>tkYu#uD3ɉYˇeQPSW,v&++r$* 2O_[XVQNNY\uFF^W_W_É&QRV3ˋڀt 't'<t%6VPrX^ZYrmt682׉:<:<GԀ2:<b:9=;>É;˾㐞  t t2xs tN wS[=j<"t,N3ɬ:t A,tNـ,uNO :tA*N t3ۋӋO <&tNN w :vO 3QˋݸuV]^Y杸uI<%t,<#t(O t*dž}r y3ǂ yK^N :t&<t.3㐞 Ú/<-t<+uFNû wx3p‹ tO 3KPWUSRXXXXXЃr t),0r < wu Nì< t< t< tN vq:|3:+ ~ K0t .0󤾖+It.E+ yڴ->N uH 00;&r,^&VPx_^X x X^_&VW~o;&r2 u(^жK:v t R&&&R=⿺ 㐞 tyز-J 0À>N rʻt  tض+ڰ t-$ƂdP>N uo>\DɀtPZހԊYQ́twr t'RZZϿ+ϰ0AOÿŊ㗊܊ǕƊYQ́t wrt ׿ f+Tl\sTl\̓0-Gf3Ғ';r03d dr 00 00ÿ>Ë;s"++0<5r O<:rA1O0A*ԿQ&&&,&&T(T'&&&'&&<u|)t(Q㐞 RTa!ZYÀ<t(|)t3ۀ<t8\*u黀*\*x3uK߀<\'uQRSTL335[ZY3ۊ\2ÈT/D*Êd2Êd/SH[À<t|*tS3ۊ\)*\*L*@3[ À|)t[ur<uD)D*Ë;tCS[<t|)uP2XS3ۊ\)@3[D)< uD2< T2RQ>,u uQYV| ^">,uhT>,u[!!u#!u>,u,߀>,t,D<t <t<u`YZÃ|u |u|"V^u&' 3r<tB3 |'3㐞 D2붃l"sL$QRS[ZYèuB t|߉JDŽSt u23ۉZL3ˉ+;rʨt0sCVQ6>sY^)+3 uVQ6>sY^ $PQRSC;ut K\'D)D*\"D$t)[ZYXD'EW!^ uD)D* D):"A}t}u;tVWFG _^u}_㐞 G= u ?X u1쁊̀+&f GL yـv*̊]㐞 π yX \X >_ t` 3 X  &X #tX u$s Q` YQ6666` ` Y빾3E t=T tC4 X Z ߚzv; yiw/:u)쑆&N y؀v*̊݀π yRX M޾X ZX>[ t!PRX tZX+X P R #tX u9ߠ$Hs QP YQ66P 㐞 P YW_SRP y3XXZ[W_SRPπ tSXZ[ˉ&PQD I&PQ>&PQV^. y ,VR yN> uGKD&PQ3 t1rڊݑ*͊r;t$π> tp+ y"xYXˁu t> tt x&PQD &PQu x ݀> ts} u֋D Lt L7$[˃?t:Vw4޷^Pt طX& uRSpڏZX$sSRP4tuJ3۸XZ[ ~PQRVW񭒋4 t?Jy㐞 ;8$}K+ʓ+~'$u QVW_^Yu+_^YZXlg3Qʋӻ'0Yˉ&Q3 &Q+YmՉ&J|tRP+~;}YXZB[ $&R tA|QPˊŠnAXYZˉ&RՉ&ڃ?tSPS_[XZ$ |tR;~ }3Z$É^&3Ɉ&Z;wRYȀ.u&VuP<Xu|Հ>tP[]X6Microsoft BASIC Compiler Runtime Version 5.35 (C)Copyright Microsoft Corp. 1982,83 $Ü3ء&&㐞 &&&&3SR!Ztw C[Ã>uttQVWF_^YR>u t&X t+*̘ ur x](wLPSV3@ 6 t$D.u㐞 <u t+ tBK : 5^[XP6X6PX$'@'.P$XtXV^ʋwVPX^˚4PQS+W3>OOv>_[YXN N  N N S>u46<t;N<,t u/FF6_N <tuË׋tS<3(ӓZt@ <A @ @ @ ։&Vt <t 6^=@qP k.66׾P վP 㐞  ־P $Sa׾P [k.P ϡ t x,PNsXHPMվP !662վP t#վP ־A־Ծ־־־[PAP SYX uPQPH:s* uPQ3*r y3RS2݆Ĵ3ݑ[Zv{ t x,PJzsXHP־ 36666־ t־ ؾ㐞 )ؾF  ,  Dؾ׾׾B־ [k.6666$׾ ־ ׾ S\]\\]\<݋P t23X P &־X 6É& t<t6(:psr6 t< t<<"u,u ""r>"t%< tN< u,tn|< t< u t,t t :t :tJXs<"t< u'Kr"< t<,t< uG.x 0r< t2<0@6- t t"u6u RTދZ<û6;t ƚM<<;*3&0&.2<&GטPN W&U ,<u(]_>N rw7vww>t6n2t8<,t&0?Redo from star9:3>*|2ty2 uWOverflooVWQ6.NN +&6.t Y_^3u*,&0.*㐞 4Ӛtڋ7w=X X IًV΀&c ًVΠ= $P zP 2̀>r>@rͻ = $0+7wwwGX X ؋R:р&r ؋RѠ> $P P ?π>r>@r"ϻ> $0x؋ ty$6Àr ZξrZsDP ~ξX ~P ^оξX fλH94㐞 /*%  N ׋6N .N <tJ<t+>A u%>@ uP@ Ӏ>O rOw^B >A u>@ uRа"ذ" < uFY,>O tӊĴ*̊-v2 hPӊXt u Pb*Xr:v V t3ì t3&PVt7<u5D Ƽ6F ^Xˉ& xP)D rءF GF Xayĉ&PRtZA B A2L M XˠM uSE[M L J u>N tT%0>N uDы+s׋ ~ s H tM 6㐞 H +X"A҉H M :L t +4IH J M Ë<\tC< Ͱ\2-t t +uǨu/ߊ&J |Ŀ |n<0uŠBNK *y2J y2@7<0u2 t*Ǣh NJM @t HM t%G*K v<vM @%2t ؘ &M t*u< tt$|u0u,0㐞 xJ Ix.t ~0 ~0t#PE+>N uHh y۴- 00īXt+F FG GG DG^G }GG43۸FP&j < s<sF .:tN.d^XƇ<X^ t;԰ 6԰1Kð\* tK<v<tP\X릈< tE U t< t t ˾<ð#XM ^tuÈ<sCӰӋ&j eWeYe[e]e_fcFfeffgfiffmfogq&gsFgufgwgyg{}gh/hFhfhhhhhi/iFifiiiii&jFjjj㐞 B-TRAN IMPLEMENTATION NOTICE ============================ 1. May 3rd. 1985 This is the first public version of B-TRAN, which conforms to the description given in the User Guide. Changes foreseen for the product relate to: GCOL PROC (Compiled Version) DEF FN (Compiled Version) ENVELOPE (Compiled Version) Additionally, 6502 Assembler conversion is under study, as are special functions such as ADVAL, and instrumentation devices. 2. July 3rd. 1985 B-TRAN RELEASE 1.3 --------------㐞 ---- The following bugs have been cleared in this release :- 1. INPUT TAB(n) is now correctly handled. 2. If the BBC line consisted of the line number plus some trailing spaces then a REM command was not generated. 3. If there were multiple procedure calls in a single line then the generated GOSUBS did not always go to the correct procedure. 4. B-TRAN went illegal if there was more than 1 branch ahead to a function which had parameters. 5. If the data in a DATA statement contained a qu㐞 estion mark then this was taken as an indirection command and a PEEK statement generated. 6. IF a PRINT statement contained STRING$(n,"...") followed by "...." then B-TRAN went into a loop. 7. B-TRAN went illegal if a long input or output file name was given. The following change in the operation of B-TRAN has been made :- B-TRAN now detects if it has gone illegal and generates a warning message for the line asking the user to translate it manually. B-TRAN then continues translating from㐞 the next line. The conversion of the BBC statements VDU 8, VDU 9, VDU 10 and VDU 11 is now in accordance with manual. m too large $ Cannot find A:BASRUN.EXE Enter new drive letter: $BASRUN EXE/ B  !"!!"!""#B"%b"'"3#1"#5B##9#;#=#S$/$d$G$I$QO%o%W_%[%]%g&t'q"''w'}'O(b(((()?S)))*"*㐞 LIST 10!&E=&9166 20*FX138,0,69 30*FX138,0,78 40*FX138,0,68 50*FX138,0,13 60*FX138,0,82 70*FX138,0,85 80*FX138,0,78 90*FX138,0,13 100*LOAD 2.2002 1900 110*TAPE 120FOR C%=0 TO &3326 STEP 4:C%!&E00=C%!&1900:NEXT 130PAGE=&3A00 >LLM$MDMׄMMMONdNNNO/OdOOOOPPOS5eS7SS=S?EeTGTITKOQ%UZ> N㐞 10 REM 20 REM 30 REM 40 REM 50 REM 60 REM 70 REM 80 REM 90 REM 100 REM 110 REM 120 FOR C%=0 TO &3326 STEP 4:C%!&E00=C%!&1900:NEXT 130 REM < tE U t< t t ˾<ð#XM ^tuÈ<sCӰӋ&j Z> N㐞 ^2MÐÐm##E&'6e.؎м}CAB, 7  s#%!ϋ!}*C:uC* SOMC CuAK..?CCGuË>);>'sDGG>)Ë6);6%t NN6)Ë>/;>-sGG>/Ë6/;6+t NN6/ûo 2>7;>5sGG>7Ë67;63t NN67Ë>?;>=sɉGG>?Ë6?;6;t NN6?< s< uu;> u.. .. ".;. s. .;. r.. :uI.;.r?>u....Ë.;.u ..Ë.;.s..>uu'> u . . ;. s.  ;. r. :u9.;.s6;6s%6.>t9.t;.s.É...-Bt-:rË.;.MsMً؎*:u:t㐞 QYG  *SRQ>uL..;.r.+66.ruI+I4.݉.=YZ[Ë.9.!s.!^ð^_à_^À>^ub...E.#.+.;.#s.#.#).!.!E..#.c.....#MM.1b.;.!uË!CC*K:u.+..+.;.s.....+.E.K?uK.!E.....!.).!ً؎ދ*XһںCCu 9s4FFu6t;㐞 rrFFV,'^À>Xts;sË.;.r Ë.;.r =Ë+IáK#tUSQR>at;*K-:v*Ŋ Ų KZY[<tCuKP[t%>\t [[㐞 t1);)Bs>ZuZQ@Yt1<tU<t.;.suKAtn<u*Aa<tCPM@X.;.u p<uͰ9AUG I+./'./34 f+@ C >Ct ,uC "yЋ.û * .>Ktú0:xO=usO-߸+Ëu,0x< x,< x:y y߉Ë.%;.)t[+<u> uû#y*++..㐞  .. .).3 .I >t>m .!. ~. .ml c.;.xD A.;. ..;.t?8=s 4z (&6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 &6 6 6 6 6 x 6 ,d *   6@   *_+6 }<L26 1Uno/88+,<0r<:s:㻉 r㐞 o(.+..Ëh>Mt >uJB KsË.+..Ë..Ë..Ë..à33.D.Ë..Ë..Ë..Ë.M.Ëà59867z5'o5':r1|sû &6trËs8:? r0sܻ)`G .g.à6ôA B C D Em FJGO HI J`Kx L MA NjO Pc Q RY ST U VW X Y Z @</e\y*o+㐞 +ty xû û S%ð/0gàt û@ %tM|6u/Z 9Z/934w<#u >u7㐞 f)tK)~>+ul CIO>s>J5K,u À>Qt Q tr s >+u t`à`t<tDc>tÀ>+t #tj:8i/j6l^kmcnÀ>+tÌs>+tuˉsu\Avzxzà+<t㐞 Adc&>t1K/..Q6Y.).K/Ì؎SË>+t3>ABCDEhF GzH:IJKLM(NOPQRSTUVWnXYZ(!W-q#/*C>[t 6s ~DZg..QWD>Qu d .+..+@.9.s.;.s..(t rtu=u ..Ë.㐞 ....9.7.1./û *"u** +"t'>u>u&<[u*3m<[u"tb<]uuà+"t >u3"t*3s6Kus'/<[uAtm >twK?]uXsS>uxz>tj>t'Ȼy}r t+K>t!Qr>uY?tYYYQK >y rtKr >uYYQK>y-cuK|t"uCKK"tGuuC5UuC+,t C"uK;tuC>uY<r<0r<:r+uV6<t."t*rdAQ< y3"u!P"t6Q Yr 6u YIQuFVSt[^F뻉6[[Y.+...`QN< y-"u>Pt]F6QYrQR6;uYIQuF7VSmt[^6[[Y.+..0*43É6 Y>44t 3û^ 㐞 6VÊ< rt堻B<xً..+"tt/F=ً..뻙 P XCË...9.rы<u uE*PYsc"t(S*C:Gu݊^"tCF..&D#OsY"tQËS"yY<[CË..㐞 FsË.. sððFAZSCHG"tû GHIà"uûs ]c)seS^O "yTr rN6..s &s4 P6FY.݉...6Xr"xK< sg< u>< t<-t<t'>$< u<-t<t C>O>"tC:t(< y=< tLuLQȰr Yûs .݉.O"y?"..;.sݺwSPO"t.."uX[Ë."t.C:u㐞 <uSRQYZ[uJuućX[99sQ+.. ... .rû R,Q YZ,Ê< xCEs"tHCu >Gu>Mà uRT" uR T#>u0>Gt(6666O..+..rTRqOS"x[#t#KSsr[CtSOS&Ct.+....ysà67..S.;.r ...+"uu{....;ryu +"usM&iC< x< t?< t"txˠJ"u㐞 Q^Y@bJuZ PX:ujJ"u$댠Ju"u-|LJtm-pJuJt [ T O;s$<u!J"t<t;rJu("t uSRQgYZ[u àG"t ds/VO.;.tZrû àG"t  qG"t "u.+......R.;.r..+"ufu<....6Or+"u &u5s㐞 vr rz<t vx6Orts /gËoqr)*Sً^$tCF..q աq6o6;6qsw 6< u@AR%Y&W"E(TE&HE(O(I)F'J=(K[(D>L])XU)SH>M)Pv>]s.:u 0uQYQ Ţ_ QY@ .M KA*G+C*D*M*N*E\++"t,ރu6,ރu6ވ56V6Lފ<uM;G"y $t :; 8;"t:9*Ⱥ<.xOCuJu nf"t9u2à9*Ƞ::u;9*<sű㐞 )CP"tXXSRQ6YZ[  67"tZ>uuS> tL KKS 7<uR[Ur [Sڇs[  à7"u +8:HRSQx@KKY[ZS[SRZ[úM,tKC"y$t:à8ËCC:ru:tsKKtCCu;uGCCWBuà7"tN;s.;.t4.QRS{ؠ59*8<:[SC>t[ZYà"t;Hvz Of 8  # . 9 < @ C <:r,@r%"y,` 8r 0؊"tGgL֠0"Т0u-%- Cà-....K:tK:tCC/.+..#u׃t yp21M 21[ZbPs9X<u< t<t< t<0u >1t>Ztƀ>1t< ub1<tgX<u..;.t2u 2242'>bu>`㐞 t 6`N1XP< t< tHԋjtk^ncl6.mjһ SRQ{7"t:/s:rCut7"tYZ[ÊS *[SQ0!"Y[tT=!rðô!t >!ô!ùt AT!ô!tTN!sô!tTO!sô!gtHt [ RSZmRQr*YZñ. t! t%%< r$ u.r$ &  &C& [$ , "u *[à. "tQR* &  (  _$ tZYË>1  & G>1 / tSQR5  3  w!w#"tG#G!1 / ZY[[[5 1  / ZY[á/ ; uLSQR\u7 = u *ZY[Ë5  c 3 +/ 5  1 ZY[/ 61 N &61 Ë3 !u#t )G!sO# RtWG  !S[r\G SR !!Z[/<t6"t1wCh&<t "t < tB<.u Cuñ <t"t< tr#<.㐞 t<*tMB tR Z P u  L "t ú Qr^ ^ DL SRStRӹN!r ~ZV!Z[S Z  ! Ht àG" u!,Ax<yжR !Z!û^ G" uDt)U`؋ӹ@<t<tCPS;![X .CCCOCMC Ȏغ GG!G#ӌ،㐞 +ȁ} ú sF @*F 5uQRS [ZY<t>6&#@>R&8Ŵ.Zÿ6*W+ @u_>8uËt0>5t& hnjhر jhj!t hnjhjhjÈGõP>X$< xtM<t)<t5<㐞 t5"tfuu$u?t?uð uá̻A"ttá*ĜA>5tA6t &#@tû B :"uP XuÊC"uC"t QuYðK .M;.r;r ȋMK .)QRP&]QA< y< t1t"<t<tQtQQO "u;MuOYZ .)؊*ŠȊŠ.;.OrQOYt:rO+Ѷڋ8)ʊ*ն#**ѶYZÀ>]tP:t .."u>tRrIr8)t>>un2R.-Zt*t xm+9t_Mr .-uAk7ڊ.-u{ 㐞 Mi0I86s61"tRZ6GLr>G*> I*Ӡ1"t CE/"t P TXuà"uà2"t.):r*ŊȠ"x*:sCS7ӉC[+u*ûEEu  ӉES<[tS :s*+Р0"t*:uʋ["YF @ P X: tàG* r:r:+sà, ,( s ӊ"t4*ٱ*s'ڰP㐞 66Ê"t*ʳ*vP66Ê"t+SRQPKXPֿXuYZ[Ê"t+SRQP~CiXP蹿XuYZ[ËPRC< yu Hu"uZX"%:r7ò)*CuR)RZà5"tSRQI"tLJUK ^YZ[ÊؠH"u÷QQYy 0uYà5"t6À>cu]:$h{q v !Uù82?"G3)X㐞 ?"uT < xC/û+*G"t"H"u*y,rõ uà+*Ŋ*à+,Ƞ*s Ȱ huõ!G!>ct;t S[< &S+,؊*:tCuK< y"tuC+,Z:t/CstuÊ*Ţs_  Cstu< s1#t,"u K <u#@#{v"ù{.+-buQ&A"t(YË..b *>iuA! 1QP<t,"t(+㐞 ,:rXP=s_XYXYXYSRQ>t!>*t XFGu<?t Iu$3t=uۋt*YZ[S!s{{Ë;ttÁuCC=u*ËuKK;tt㐞 SQRUWV^_]ZY["t'=t';ttð*û.#Cu>r K"tbË;t2Ë6"uN< y"t'uSV ^["uCð>u"t øSQR7!.#t <`r"y4:r4ZY[Ê"u 6Cu댋tװ.-+Ë-@=r، +Ӂrº㐞       "  Kڋډ+}E*!6Ð?????P dg㐞 rf^ ::  ghijklmnopqrrhhhhhlhhh0r)}SS Qhhh Ad KI㐞 }}}}|}h} N}}}@_ 6$? M n7 $ (㐞 08@HPX`hpxn110XF:1324262E2INSERT MODEOVERTYPE MODE 4T4u48444-M-M0WMW@/=㐞 @X[-L][0L]@/QXL@/QX-@DL@DLDA@C=0[Z][A]ZUA@C=0[UZ][UA]UZ@X=@/{@X,0LI -M@SQX}{I -M}@X,-L@SQX@V=2[@X,-L@SQX][@/=@X[-L][0L]@/QX]@X,L@E{@S}{@SQX}@V=2[@X,L@E{@S}{@SQX}][L@/QX]@X>0[@X-1QX]@X+1QX@V=2[@X>0[@X-1QX]][-M]@V=2[@X+1QX][M]#BMBGT@T>96[@T-32R][@T>64[@T+32R][M]]-2M@E%M@0,@TV0-M@T,@0R@SR@SV0L@T>0{-M}0L-@JL@JL@X,-@DL@SQX@X,@DL@SQX@V=2[@X,-@DL@SQX][-@DL]@V=2[@X,@DL@SQX][@DL]0K@XQ/Q#@/+4Q/@/QX@/-4Q/@/QXQJ-QJQQ-QQMEMORY SPACE EXHAUSTEDSTRING NOT FOUNDSTACK FULLPARENT㐞 HESIS ERRORILLEGAL STRING ARGUMENTILLEGAL COMMAND CHARACTERSYNTAX ERRORLABEL NOT FOUNDITERATION ERRORILLEGAL BUFFER COMMANDCOMMAND ABORTEDILLEGAL RADIXPERMANENT MACRO NOT DEFINEDNOT ENOUGH ROOM IN PERMANENT MACRO AREAALL TAB STOPS ALREADY DEFINEDTAB STOP DOESN'T EXISTATTEMPT TO WRITE OUT OF BOUNDSFILE DOES NOT EXISTINPUT-OUTPUT FILES ACTIVEFILE ALREADY EXISTSNO INPUT-OUTPUT FILE DEFINEDDISK FULLCANNOT CREATE FILEEND OF FILEMACRO ERRORILLEGAL FILE NAMEILLEGAL DRIVE LETTERNOT EDITING B㐞 UFFER TSTACK EMPTYBLOCK TOO LARGEPMATE-86 rev 3.34 Copyright Phoenix Software Associates Ltd. 1983 PMATE.TMPI!4 $c9 I! BI!c^ c$ $ce^ c c  c -S1 CMP]  E[ P COM[= teste test 㐞 TESTTEST$$$PMATE.COMA*.* P BUF= ARG= TRACE: BUFFER COMMAND FROM ERROR: BUFFER TAGLIN=COL=OOoHEDCAB   @  и 0qnUWE/?㐞 fCmd Over Ins Tag Move Get  0qnMode Mode Mode Cursor Block BlockV 0 @B, [ @n=0 {-gLeave PMATE (Y/N)  @k!32 v9 @9="y {0qn/@sxh} @9="n {_} ^}{ bte 0qr gSave File (Y/N)  @k!32 v9 @9="n {gKill File (Y/N)  @k!32 v9 @9="y {0gKilling Filexk^} @9="n {_} ^} @9="y {0gSaving Filexe} } ^] b@Se @0, 10v0 es@e[.Eillegal number] -2m @hh=0[16v0] 0w 0v1 [ @t<"0_ @t<("9+1) { @1*@0+@t-"0v1m^} @t!32+1>"a&(@t!32i/jFjojj㐞 LIST 10REM BBC Othello - 2/12/82 - JCD 20REM Modified - 27/6/83 - TJS 30MODE7:VDU23;8202;0;0;0; 40IF PAGE>=&1900 THEN LOMEM=&F00 50ONERRORCLS:PRINT"YOU RESIGNED":GOTO160 60PROChello:PROCsetup 70PROCchat:MODE1 80VDU23;8202;0;0;0;:COLOUR129:CLS:PROCinit 90REPEAT:IF FL=1 PROCeval:GOTO140 100IF P=0 PROCchoose ELSE PROCask 110PROCarray 120IF P=0 PROCeval:PROCscreen 130IF P=1 PROCscreen:PROCeval 140P=1-P:CLR=3-CLR:IF NC>0 FL=0 ELSE FL=FL+1:PROCnogo 150UNTIL㐞 P(0)*P(1)=0 OR P(0)+P(1)=64 OR FL=2:PROCendgame 160PROCanother:IF A$="Y" MODE7:VDU23;8202;0;0;0;:GOTO70 170@%=&A0A:CALL&D9CD:END 180DEFPROCsetup 190VDU23,224,3,15,31,63,63,127,127,127,23,225,1,3,7,15,15,31,31,31 200VDU23,226,0,1,1,3,3,7,7,7,23,227,0,0,0,0,0,0,0,0 210VDU23,228,224,248,252,254,254,255,255,255,23,229,192,224,240,248,248,252,252,252 220VDU23,230,128,192,192,224,224,240,240,240,23,231,128,128,128,128,128,128,128,128 230VDU23,232,127,127,63,63,31,15,3,0,23,233,31,31,15,1㐞 5,7,3,1,0 240VDU23,234,7,7,3,3,1,1,0,0,23,235,0,0,0,0,0,0,0,0 250VDU23,236,255,255,254,254,252,248,224,0,23,237,252,252,248,248,240,224,192,0 260VDU23,238,240,240,224,224,192,192,128,0,23,239,128,128,128,128,128,128,128,0 270DIM A(99),C(99),R(8),WT(6),PC(7),D(7),P(1),W(89),Z(30),C$(1) 280ENDPROC 290DEFPROCinit 300RESTORE 310DATA 1,11,10,9,-1,-11,-10,-9 320FOR V=0 TO 7:READ D(V):NEXT:FOR Z=0 TO 99:A(Z)=1:C(Z)=0:NEXT 330FOR X=3 TO 6:FOR Y=3 TO 6:A(10*Y+X)=0:NEXT Y,X 340C(34)=㐞 1:C(43)=1:C(56)=1:C(65)=1 350DATA 30,10,1,0,0,1,10,30,300,200,150,400,150,0,800 360FOR I=1 TO 8:READ R(I):NEXT:FOR I=0 TO 6:READ WT(I):NEXT 370DATA 0,80,20,56,28,28,56,20,80,0,0,20,5,14,7,7,14,5,20,0 380DATA 0,56,14,40,20,20,40,14,56,0,0,28,7,20,10,10,20,7,28,0 390FOR I=10 TO 49:READ W(I):W(99-I)=W(I):NEXT 400FL=0:TS=4*(1+P):TT=12-TS:@%=&202:C$(0)="BLACK":C$(1)="WHITE" 410A(44)=TT:A(55)=TT:A(45)=TS:A(54)=TS 420COLOUR2:PRINTTAB(7,2);"O T H E L L O":COLOUR3 430FOR Y=912 TO 144 STEP 㐞 -96:MOVE 48,Y:DRAW 812,Y:NEXT 440FOR X=48 TO 816 STEP 96:MOVE X,912:DRAW X,144:NEXT 450VDU5:GCOL0,2:FOR I=0 TO 7:MOVE 80+96*I,128:PRINTCHR$(65+I) 460MOVE 8,208+96*I:PRINTCHR$(49+I):NEXT:GCOL0,3:VDU4 470Z=44:PROCput(3,0):Z=55:PROCput(3,0) 480Z=45:PROCput(0,0):Z=54:PROCput(0,0) 490PRINTTAB(27,24);"YOU HAVE:"TAB(27,26);"I HAVE:" 500CLR=0:P(0)=2:P(1)=2:PROCscore 510PRINTTAB(1,30);"You are ";:COLOUR(3-3*P):PRINTC$(1-P); 520COLOUR2:PRINT" - I am ";:COLOUR(3*P):PRINTC$(P); 530COLOUR2:㐞 PRINT" - level ";:COLOUR3:PRINTCHR$(64+LV);:COLOUR2 540VDU28,27,22,38,4:IF P=0 PRINT"MY TURN" 550ENDPROC 560DEFPROCput(C,I) 570COLOURC:X1=INT(Z/10):Y1=9-(Z MOD 10):X=3*X1-1:Y=3*Y1+1 580VDU31,X,Y,224+I,228+I,10,8,8,232+I,236+I 590COLOUR2:VDU30 600ENDPROC 610DEFPROCblink 620PROCput(CLR,0):FOR I=1 TO 2 630FOR T=1 TO 800:NEXT:PROCput(1,0) 640FOR T=1 TO 800:NEXT:PROCput(CLR,0) 650NEXT I 660ENDPROC 670DEFPROCturn 680FOR I=0 TO 3:FOR T=1 TO 50:NEXT:PROCput(3-CLR,I) 㐞 690NEXT I:FOR I=2 TO 0 STEP -1 700FOR T=1 TO 50:NEXT:PROCput(CLR,I) 710NEXT I 720ENDPROC 730DEFPROCscore 740COLOUR3:PRINTTAB(37,24),P(1)TAB(37,26),P(0):COLOUR2 750ENDPROC 760DEFPROCeval 770IF P=1 PRINT"MY TURN -"''"THINKING"; 780TT=4+4*P:TS=12-TT:NC=0:FOR I=11 TO 88 790C=0:IF A(I)>0 GOTO850 800Q=I MOD 10:IF Q=0 OR Q=9 GOTO850 810FOR V=0 TO 7:J=I:PC=-1:D=D(V) 820REPEAT:J=J+D:PC=PC+1:UNTIL A(J)<>TT 830IF A(J)<>TS PC=0 840C=C+PC:NEXT:IF C>0 NC=NC+1 850C(I)=C:NEXT㐞 I 860ENDPROC 870DEFPROCarray 880TS=4+4*P:TT=12-TS 890FOR I=-10 TO 10 STEP 10:FOR J=-1 TO 1 900K=I+J+Z:IF A(K)=1 A(K)=0 910NEXT J,I:A(Z)=TS:FOR V=0 TO 7 920J=Z:PC=-1:D=D(V) 930REPEAT:J=J+D:PC=PC+1:UNTIL A(J)<>TT 940IF A(J)<>TS PC=0 950PC(V)=PC:IF PC=0 GOTO970 960J=Z:FOR N=1 TO PC:J=J+D:A(J)=TS:NEXT N 970NEXT V 980ENDPROC 990DEFPROCscreen 1000VDU28,0,31,39,0:PROCblink:P(P)=P(P)+1:PROCscore:J=Z 1010FOR V=0 TO 7:Z=J:IF PC(V)=0 GOTO1040 1020FOR N=1 TO PC(V):Z=Z+D(㐞V):PROCturn 1030P(P)=P(P)+1:P(1-P)=P(1-P)-1:PROCscore:NEXT N 1040NEXT V 1050VDU28,27,22,38,4:CLS 1060ENDPROC 1070DEFPROCnogo 1080PRINT':COLOUR3 1090IF P=1 PRINT"YOU"; ELSE PRINT"I"; 1100PRINT" CAN'T GO"':COLOUR2 1110ENDPROC 1120DEFPROCendgame 1130IF FL<2 CLS 1140PRINT"GAME OVER"':COLOUR3 1150IF P(0)P(1) PRINT"YOU LOST -"':COLOUR2:PRINT"HARD LUCK!"' 1180END㐞PROC 1190DEFPROCanother 1200COLOUR3:PRINT"PLAY AGAIN?";:COLOUR2 1210*FX15,1 1220A$=GET$:IF A$<>"Y" AND A$<>"N" GOTO1210 1230ENDPROC 1240DEFPROCchoose 1250MX=0:IX=0:FOR Z=11 TO 88:C=C(Z):IF C=0 GOTO1320 1260IF LV=3 C=C+WT(INT((R(Z MOD 10)+R(INT(Z/10)))/10)) 1270IF LV=2 C=C*W(Z) 1280IF C1 IX=RND(IX) 1330Z=Z(IX) 1340ENDPROC 1350DEFPROChello 1360CLS:PRINTTAB(11,2)CHR$131CHR$141"O T H E L L 㐞O"TAB(11,3)CHR$131CHR$141"O T H E L L O" 1370PRINT'''"When playing this game, you do not need" 1380PRINT"to press"CHR$133"RETURN"CHR$135", Simply type the first" 1390PRINT"letter of your response, e.g."CHR$133"Y"CHR$135"for"CHR$133"YES" 1400PRINT'"To enter a move, type the column letter"'"and row number, e.g."CHR$133"F3" 1410PRINT'"To resign a game, press"CHR$133"ESCAPE" 1420PRINT'"I can play three strategies -"CHR$133"A"CHR$135"(the" 1430PRINT"simplest),"CHR$133"B"CHR$135"or"CHR$133"C" 144㐞0*FX15,1 1450PRINTTAB(7,22)CHR$136"Press"CHR$129"SPACE BAR"CHR$135"to begin"; 1460A$=GET$:IF A$<>" " GOTO1440 1470ENDPROC 1480DEFPROCask 1490PRINT"ENTER YOUR"'"MOVE: "; 1500*FX15,1 1510X=GET-64:IF X<1 OR X>8 GOTO1620 1520COLOUR3:PRINTCHR$(X+64);:COLOUR2 1530*FX15,1 1540Y=GET-48:IF Y<1 OR Y>8 GOTO1620 1550COLOUR3:PRINTCHR$(Y+48):COLOUR2:Z=10*X+Y 1560IF A(Z)=0 AND C(Z)>0 GOTO1650 1570CLS:PRINT"YOU CAN'T GO"; 1580PRINT"AT ";:COLOUR3:PRINTCHR$(X+64);CHR$(Y+48);:COLOUR2 1590IF A(Z)>㐞3 PRINT" - IT'S";"OCCUPIED!" 1600IF A(Z)<2 AND C(Z)=0 PRINT" - NO"'"CAPTURES!" 1610COLOUR3:PRINT'"TRY AGAIN."':COLOUR2:GOTO1490 1620CLS:PRINT"To enter"'"your move,"'"first press"'"key "; 1630COLOUR3:PRINT"A-H";:COLOUR2:PRINT" for"'"column, then";"key "; 1640COLOUR3:PRINT"1-8";:COLOUR2:PRINT" for"'"row."':GOTO1490 1650ENDPROC 1660DEFPROCchat 1670CLS:PRINTTAB(11,2)CHR$131CHR$141"O T H E L L O"TAB(11,3)CHR$131CHR$141"O T H E L L O" 1680PRINTTAB(0,7)"Which level?"; 1690*FX15,1 1700LV=GET-6㐞4 1710IF LV<1 OR LV>3 PRINTTAB(13,7)"- type"CHR$133"A"CHR$135","CHR$133"B"CHR$135"or"CHR$133"C"CHR$135":";:GOTO1690 1720PRINTCHR$130CHR$(LV+64)TAB(0,11)"Do you want to have first move?"; 1730*FX15,1 1740A$=GET$ 1750IF A$="Y" P=1:GOTO1780 1760IF A$="N" P=0:GOTO1780 1770PRINTTAB(0,14)"Type"CHR$133"Y"CHR$135"or"CHR$133"N"CHR$135":";:GOTO1730 1780PRINTTAB(32,11)CHR$130A$TAB(0,14)"Very well. Black moves first, so you" 1790PRINT"have the";:IF P=1 PRINTCHR$134"BLACK"; ELSE PRINTCHR$134"WHITE"; 㐞 1800PRINTCHR$135"pieces." 1810PRINTTAB(1,22)CHR$136"Press"CHR$129"SPACE BAR"CHR$135"to start the game"; 1820*FX15,1 1830A$=GET$:IF A$<>" " GOTO1820 1840ENDPROC >1900 110*TAPE 120FOR C%=0 TO &3326 STEP 4:C%!&E00=C%!&1900:NEXT 130PAGE=&3A00 >LLM$MDMׄMMMONdNNNO/OdOOOOPPOS5eS7SS=S?EeTGTITKOQ%UZ>N㐞 LIST 10REM BBC Othello - 2/12/82 - JCD 20REM Modified - 27/6/83 - TJS 30MODE7:VDU23;8202;0;0;0; 40IF PAGE>=&1900 THEN LOMEM=&F00 50ONERRORCLS:PRINT"YOU RESIGNED":GOTO160 60PROChello:PROCsetup 70PROCchat:MODE1 80VDU23;8202;0;0;0;:COLOUR129:CLS:PROCinit 90REPEAT:IF FL=1 PROCeval:GOTO140 100IF P=0 PROCchoose ELSE PROCask 110PROCarray 120IF P=0 PROCeval:PROCscreen 130IF P=1 PROCscreen:PROCeval 140P=1-P:CLR=3-CLR:IF NC>0 FL=0 ELSE FL=FL+1:PROCnogo 150UNTIL P(0)*P(1)=0 OR㐞 P(0)+P(1)=64 OR FL=2:PROCendgame 160PROCanother:IF A$="Y" MODE7:VDU23;8202;0;0;0;:GOTO70 170@%=&A0A:CALL&D9CD:END 180DEFPROCsetup 190VDU23,224,3,15,31,63,63,127,127,127,23,225,1,3,7,15,15,31,31,31 200VDU23,226,0,1,1,3,3,7,7,7,23,227,0,0,0,0,0,0,0,0 210VDU23,228,224,248,252,254,254,255,255,255,23,229,192,224,240,248,248,252,252,252 220VDU23,230,128,192,192,224,224,240,240,240,23,231,128,128,128,128,128,128,128,128 230VDU23,232,127,127,63,63,31,15,3,0,23,233,31,31,15,15,7,3,1,0 240VDU23,23㐞4,7,7,3,3,1,1,0,0,23,235,0,0,0,0,0,0,0,0 250VDU23,236,255,255,254,254,252,248,224,0,23,237,252,252,248,248,240,224,192,0 260VDU23,238,240,240,224,224,192,192,128,0,23,239,128,128,128,128,128,128,128,0 270DIM A(99),C(99),R(8),WT(6),PC(7),D(7),P(1),W(89),Z(30),C$(1) 280ENDPROC 290DEFPROCinit 300RESTORE 310DATA 1,11,10,9,-1,-11,-10,-9 320FOR V=0 TO 7:READ D(V):NEXT:FOR Z=0 TO 99:A(Z)=1:C(Z)=0:NEXT 330FOR X=3 TO 6:FOR Y=3 TO 6:A(10*Y+X)=0:NEXT Y,X 340C(34)=1:C(43)=1:C(56)=1:C(65)=1 350DAT㐞A 30,10,1,0,0,1,10,30,300,200,150,400,150,0,800 360FOR I=1 TO 8:READ R(I):NEXT:FOR I=0 TO 6:READ WT(I):NEXT 370DATA 0,80,20,56,28,28,56,20,80,0,0,20,5,14,7,7,14,5,20,0 380DATA 0,56,14,40,20,20,40,14,56,0,0,28,7,20,10,10,20,7,28,0 390FOR I=10 TO 49:READ W(I):W(99-I)=W(I):NEXT 400FL=0:TS=4*(1+P):TT=12-TS:@%=&202:C$(0)="BLACK":C$(1)="WHITE" 410A(44)=TT:A(55)=TT:A(45)=TS:A(54)=TS 420COLOUR2:PRINTTAB(7,2);"O T H E L L O":COLOUR3 430FOR Y=912 TO 144 STEP -96:MOVE 48,Y:DRAW 812,Y:NEXT 440FOR X=48㐞 TO 816 STEP 96:MOVE X,912:DRAW X,144:NEXT 450VDU5:GCOL0,2:FOR I=0 TO 7:MOVE 80+96*I,128:PRINTCHR$(65+I) 460MOVE 8,208+96*I:PRINTCHR$(49+I):NEXT:GCOL0,3:VDU4 470Z=44:PROCput(3,0):Z=55:PROCput(3,0) 480Z=45:PROCput(0,0):Z=54:PROCput(0,0) 490PRINTTAB(27,24);"YOU HAVE:"TAB(27,26);"I HAVE:" 500CLR=0:P(0)=2:P(1)=2:PROCscore 510PRINTTAB(1,30);"You are ";:COLOUR(3-3*P):PRINTC$(1-P); 520COLOUR2:PRINT" - I am ";:COLOUR(3*P):PRINTC$(P); 530COLOUR2:PRINT" - level ";:COLOUR3:PRINTCHR$(64+LV);:COLOUR2 㐞 540VDU28,27,22,38,4:IF P=0 PRINT"MY TURN" 550ENDPROC 560DEFPROCput(C,I) 570COLOURC:X1=INT(Z/10):Y1=9-(Z MOD 10):X=3*X1-1:Y=3*Y1+1 580VDU31,X,Y,224+I,228+I,10,8,8,232+I,236+I 590COLOUR2:VDU30 600ENDPROC 610DEFPROCblink 620PROCput(CLR,0):FOR I=1 TO 2 630FOR T=1 TO 800:NEXT:PROCput(1,0) 640FOR T=1 TO 800:NEXT:PROCput(CLR,0) 650NEXT I 660ENDPROC 670DEFPROCturn 680FOR I=0 TO 3:FOR T=1 TO 50:NEXT:PROCput(3-CLR,I) 690NEXT I:FOR I=2 TO 0 STEP -1 700FOR T=1 TO 50:NEXT:PROCput(CLR,I)㐞 710NEXT I 720ENDPROC 730DEFPROCscore 740COLOUR3:PRINTTAB(37,24),P(1)TAB(37,26),P(0):COLOUR2 750ENDPROC 760DEFPROCeval 770IF P=1 PRINT"MY TURN -"''"THINKING"; 780TT=4+4*P:TS=12-TT:NC=0:FOR I=11 TO 88 790C=0:IF A(I)>0 GOTO850 800Q=I MOD 10:IF Q=0 OR Q=9 GOTO850 810FOR V=0 TO 7:J=I:PC=-1:D=D(V) 820REPEAT:J=J+D:PC=PC+1:UNTIL A(J)<>TT 830IF A(J)<>TS PC=0 840C=C+PC:NEXT:IF C>0 NC=NC+1 850C(I)=C:NEXT I 860ENDPROC 870DEFPROCarray 880TS=4+4*P:TT=12-TS 890FOR I=-10 TO 10 STEP 10㐞:FOR J=-1 TO 1 900K=I+J+Z:IF A(K)=1 A(K)=0 910NEXT J,I:A(Z)=TS:FOR V=0 TO 7 920J=Z:PC=-1:D=D(V) 930REPEAT:J=J+D:PC=PC+1:UNTIL A(J)<>TT 940IF A(J)<>TS PC=0 950PC(V)=PC:IF PC=0 GOTO970 960J=Z:FOR N=1 TO PC:J=J+D:A(J)=TS:NEXT N 970NEXT V 980ENDPROC 990DEFPROCscreen 1000VDU28,0,31,39,0:PROCblink:P(P)=P(P)+1:PROCscore:J=Z 1010FOR V=0 TO 7:Z=J:IF PC(V)=0 GOTO1040 1020FOR N=1 TO PC(V):Z=Z+D(V):PROCturn 1030P(P)=P(P)+1:P(1-P)=P(1-P)-1:PROCscore:NEXT N 1040NEXT V 1050VDU28,27,22,38,4:CLS 1㐞060ENDPROC 1070DEFPROCnogo 1080PRINT':COLOUR3 1090IF P=1 PRINT"YOU"; ELSE PRINT"I"; 1100PRINT" CAN'T GO"':COLOUR2 1110ENDPROC 1120DEFPROCendgame 1130IF FL<2 CLS 1140PRINT"GAME OVER"':COLOUR3 1150IF P(0)P(1) PRINT"YOU LOST -"':COLOUR2:PRINT"HARD LUCK!"' 1180ENDPROC 1190DEFPROCanother 1200COLOUR3:PRINT"PLAY AGAIN?";:COLOUR2 1210*FX15,1 1220A$=GET$:IF A$<>"Y" AND A$<>"N" G㐞 OTO1210 1230ENDPROC 1240DEFPROCchoose 1250MX=0:IX=0:FOR Z=11 TO 88:C=C(Z):IF C=0 GOTO1320 1260IF LV=3 C=C+WT(INT((R(Z MOD 10)+R(INT(Z/10)))/10)) 1270IF LV=2 C=C*W(Z) 1280IF C1 IX=RND(IX) 1330Z=Z(IX) 1340ENDPROC 1350DEFPROChello 1360CLS:PRINTTAB(11,2)CHR$131CHR$141"O T H E L L O"TAB(11,3)CHR$131CHR$141"O T H E L L O" 1370PRINT'''"When playing this game, you do not need" 1380PRINT"to press"CHR$133"RETURN"CHR$1㐞35", Simply type the first" 1390PRINT"letter of your response, e.g."CHR$133"Y"CHR$135"for"CHR$133"YES" 1400PRINT'"To enter a move, type the column letter"'"and row number, e.g."CHR$133"F3" 1410PRINT'"To resign a game, press"CHR$133"ESCAPE" 1420PRINT'"I can play three strategies -"CHR$133"A"CHR$135"(the" 1430PRINT"simplest),"CHR$133"B"CHR$135"or"CHR$133"C" 1440*FX15,1 1450PRINTTAB(7,22)CHR$136"Press"CHR$129"SPACE BAR"CHR$135"to begin"; 1460A$=GET$:IF A$<>" " GOTO1440 1470ENDPROC 1480DEFPROCask 14㐞90PRINT"ENTER YOUR"'"MOVE: "; 1500*FX15,1 1510X=GET-64:IF X<1 OR X>8 GOTO1620 1520COLOUR3:PRINTCHR$(X+64);:COLOUR2 1530*FX15,1 1540Y=GET-48:IF Y<1 OR Y>8 GOTO1620 1550COLOUR3:PRINTCHR$(Y+48):COLOUR2:Z=10*X+Y 1560IF A(Z)=0 AND C(Z)>0 GOTO1650 1570CLS:PRINT"YOU CAN'T GO"; 1580PRINT"AT ";:COLOUR3:PRINTCHR$(X+64);CHR$(Y+48);:COLOUR2 1590IF A(Z)>3 PRINT" - IT'S";"OCCUPIED!" 1600IF A(Z)<2 AND C(Z)=0 PRINT" - NO"'"CAPTURES!" 1610COLOUR3:PRINT'"TRY AGAIN."':COLOUR2:GOTO1490 1620CLS:PRINT"To enter"'"you㐞r move,"'"first press"'"key "; 1630COLOUR3:PRINT"A-H";:COLOUR2:PRINT" for"'"column, then";"key "; 1640COLOUR3:PRINT"1-8";:COLOUR2:PRINT" for"'"row."':GOTO1490 1650ENDPROC 1660DEFPROCchat 1670CLS:PRINTTAB(11,2)CHR$131CHR$141"O T H E L L O"TAB(11,3)CHR$131CHR$141"O T H E L L O" 1680PRINTTAB(0,7)"Which level?"; 1690*FX15,1 1700LV=GET-64 1710IF LV<1 OR LV>3 PRINTTAB(13,7)"- type"CHR$133"A"CHR$135","CHR$133"B"CHR$135"or"CHR$133"C"CHR$135":";:GOTO1690 1720PRINTCHR$130CHR$(LV+64)TAB(0,11)"Do you want to 㐞have first move?"; 1730*FX15,1 1740A$=GET$ 1750IF A$="Y" P=1:GOTO1780 1760IF A$="N" P=0:GOTO1780 1770PRINTTAB(0,14)"Type"CHR$133"Y"CHR$135"or"CHR$133"N"CHR$135":";:GOTO1730 1780PRINTTAB(32,11)CHR$130A$TAB(0,14)"Very well. Black moves first, so you" 1790PRINT"have the";:IF P=1 PRINTCHR$134"BLACK"; ELSE PRINTCHR$134"WHITE"; 1800PRINTCHR$135"pieces." 1810PRINTTAB(1,22)CHR$136"Press"CHR$129"SPACE BAR"CHR$135"to start the game"; 1820*FX15,1 1830A$=GET$:IF A$<>" " GOTO1820 1840ENDPROC >㐞MZ B #@*@=@@@N@U@X@x@a@f ffff㐞&&??00...+ۋЋDE tЋDE tЉUCCȡ++;s  !y;s+ۋ+CC*t<t SV^[KKu܎+߹|t HQY 㐞$*+CCΡ@\>t>t؎Îغ!R؋[HƎQYH،HË++ۋD t;r+ D‰+҃CC@Not enough memory$㐞^V@&+ &- &/ @&1  &= &3 QQ&5 &7 f&9 0&; +@&? 02!&A <u3&@&O3&@&G 2!C:w}< t<<;tot&A <u3L23!>t&? &A <u$&E >@ð'&.>12!&A <u>u+ء㐞&CC&&;tCC&;t+ء&0 P& +؉& ؉&+؉&؉XI2!&+ I2!SQY[6CR v0Zû tRZ0R6 t @:C.ZstTstUv PSQRVW^ ^^^ ^^ݷw#Sw.^q/Gn.+ u.;4 ts4u;VuSr׋NuՋ^.Ƈ+ V.4 ƆmRlVxu*v.;2 w.Ƅ+ R㐞lSVu .Ƅ+ .. ., .Ƈ+ uFv5&<u[u&4.+ t.;4 tրFt F<u.+ t+v Fu &@.6 &D@.8 .+ tOfvuE }f_^ZY[XF]]PV3VXFv F.Ƈ+ ú} " J VS.A =tȎغ Ȏغ ^ u .+ u.. v., v[_^ZY[X].+ F+ ^]W ~.Ɔ%.G F^S$V~~ʰ P.G FʰSFӸYSFXSVs <t<;uSVWr <t < t 㐞< t SVSV< t< t gPSQR WV :V ZY[Xñ4R v0ZPSQ4 F^Y[XQRUVW_^]ZYSWU*U윋nFFF^NVv~^F]_[.. ., F^NVv~Fn5&tt6+eU vSWU}v.8 .6 «]_[5&L0SWu.6 .8 ЍEǃ;sD_[øPQRUNQN Qq1r+Ҙ,0Ȱ sVF]ZYXNQN Q<0r<:Undefined Function! $woo㐞 o0ooooo5AFKPoUfooooooooookooooooo*.!ô .A =tL3!3..uô <tû"ô PXô|wr<u*ôfa\W..>u.>ô7!2<u*ô"&#!$%'t<u*ô(R.....PQVWU~vVvVNq<@r5 u .- &Ɔ~frC t?%Br;r&E.r &D븋㐞vVsF]_^ZY[X v v~RPSQU^G dG ^ G]Y[XPSQU^3=^ _2^*^ ]Y[XPSQU^ ]Y[XSRZ[SU^ S^S][SU^?s vv SrG][SU< t<u^ S^S][Z>Z>Z>Z>㐞 >*FX 5,2 >*FX 6 >LIST 10!&E=&9166 20*FX138,0,69 30*FX138,0,78 40*FX138,0,68 50*FX138,0,13 㐞 60*FX138,0,82 70*FX138,0,85 80*FX138,0,78 90*FX138,0,13 95*LOAD 2.2002 1900 96*TAPE 100FOR C%=0 TO &3326 STEP 4:C%!&E00=C%!&1900:NEXT 110PAGE=&3A00 >AY,POLAND,PORTUGAL,SPAIN,SWEDEN,SWITZERLAND,YUGOSLAVIA WGRACE BASc gHUNDER BBCw hTHUNDERBASw iUBE30 BBCv j ARMONY BBCw lfGRACE BAS(m mHARMONYBAS' nIOLIN BBCaw o㐞 10 READ p%,d% 20 IF p%=0 THEN END 30 SOUND 1,-10,p%,d% 40 GOTO 10 50 DATA 33,12,53,24,69,4,61,4,53,4,69,24,61,12,53,24,41,12,33,36,53,24,69,4,61,4,53,4,69,24,61,12,81,60 60 DATA 69,12,81,24,69,4,61,4,53,4,69,24,61,12,53,24,41,12,33,36,53,24,69,4,61,4,53,4,69,24,61,4,69,4,61,4,53,60,0,0 R$134"BLACK"; ELSE PRINTCHR$134"WHITE"; 1800PRINTCHR$135"pieces." 1810PRINTTAB(1,22)CHR$136"Press"CHR$129"SPACE BAR"CHR$135"to start the game"; 1820*FX15,1 1830A$=GET$:IF A$<>" " GOTO1820 1840ENDPROC >(  !Z>N㐞 10!&E=&9166 +,/,b,-"-B-b-o..&/b////c0_2 0 0 1#1C1c11111o2'2)2+2-2/31#33C35c33;3=4AQo5Woh68/89999#:C:c::::;#;C;c;;;;#>C>>>>>?/?C?o??Z>N㐞10!&E=&9166 70*FX138,0,85 80*FX138,0,78 90*FX138,0,13 95*LOAD 2.2002 1900 96*TAPE 100FOR C%=0 TO &3326 STEP 4:C%!&E00=C%!&1900:NEXT 110PAGE=&3A00 >AY,POLAND,PORTUGAL,SPAIN,SWEDEN,SWITZERLAND,YUGOSLAVIA WGRACE BASc gHUNDER BBCw hTHUNDERBASw iUBE30 BBCv j ARMONY BBCw lfGRACE BAS(m mHARMONYBAS' nIOLIN BBCaw oZ>N㐞10 REM 20 REM ** ANAGRAM ** 30 REM 40 REM ** A.J.S. 13/4/83 ** 50 REM 60 CLS 70 REM 80 SCREEN 0,1 90 GOSUB 200 100 SCREEN 2,1 110 FOR go = 1 TO 10 120 GOSUB 350 130 GOSUB 420 150 GOSUB 650 160 NEXT go 170 GOSUB 1040 180 IF NOT FALSE THEN 70 190 REM 200 REM 210 score=0 220 LOCATE 3,15:PRINT "ANAGRAM" 240 LOCATE 7,2:PRINT "YOU WILL BE SHOWN THE JUMBLED-UP" 250 PRINT 260 LOCATE 9,11:PRINT "LETTERS OF A WORD" 270 PRINT 280 PRINT "YOU HAVE TO SORT THEM OUT A㐞ND ENTER" 290 PRINT 300 LOCATE 13,11:PRINT "THE CORRECT WORD" 310 LOCATE 19,6:PRINT "PRESS SPACE BAR TO BEGIN" 320 Z$= INPUT$(1) 330 RETURN 340 REM 350 REM 360 RESTORE 1100 370 FOR N = 1 TO INT(RND*20+1) 380 READ word$ 390 NEXT N 400 RETURN 410 REM 420 REM 430 dummy$ = word$ 440 REM 450 GWL.new$="" 460 FOR N = 1 TO LEN(dummy$) 470 IF INT(RND*2+1) = 2 THEN GWL.new$ = GWL.new$+ MID$(dummy$,N,1) ELSE GWL.new$ = MID$(dummy$,N,1)+GWL.new$ 480 NEXT N 490 dummy$ = GWL.new$ 㐞500 IF NOT GWL.new$ <> word$ THEN 440 510 RETURN 520 REM 530 REM 570 CLS 580 LOCATE 4,4:PRINT GWL.new$ 630 RETURN 640 REM 650 REM 660 colour=0 670 REM 675 GOSUB 530 680 LOCATE 6,4:PRINT "ENTER YOUR GUESS" 690 REM 700 INPUT guess$ 710 colour = colour+1 720 CLS 730 GOSUB 930 740 IF guess$ = word$ THEN GOSUB 780 ELSE GOSUB 860 750 IF NOT guess$ = word$ AND NOT colour = 3 THEN 670 760 RETURN 770 REM 780 REM 800 PRINT "YES" 810 FOR pause = 1 TO 2000:NEXT pause 820 IF 㐞 colour=1 THEN score = score + 1 840 RETURN 850 REM 860 REM 880 IF colour = 3 THEN PRINT word$ ELSE PRINT "SORRY!" 890 FOR pause = 1 TO 2000:NEXT pause 910 RETURN 920 REM 930 REM 950 FOR N = 0 TO 2* 3.14159265 STEP .1 960 X = SIN(N)*250+600 970 Y = COS(N)*250+600 980 PLAY "MB N"+STR$((N*30)\4+15)+" L32" 990 DRAW "BM375,165" 1000 DRAW "M"+STR$(INT(.625*X))+","+STR$(400-INT(.390625*Y)) 1010 NEXT N 1020 RETURN 1030 REM 1040 REM 1050 PRINT "SCORE =";score 1060 PRINT "PRESS SPACE B㐞AR" 1070 Z$= INPUT$(1) 1080 RETURN 1090 REM 1100 REM ** DATA LINES FOR WORDS ** 1110 REM 1120 DATA ANDORRA,AUSTRIA,BELGIUM,DENMARK,FINLAND,FRANCE,GERMANY 1130 DATA GREECE,ITALY,LIECHTENSTEIN,LUXEMBOURG,MONACO,NETHERLANDS 1140 DATA NORWAY,POLAND,PORTUGAL,SPAIN,SWEDEN,SWITZERLAND,YUGOSLAVIA )Ii@ !)#I%i't+ɒ-/ /3I5i79;ɓ=?A)CIEiGIKɔMO Q)SIUiZ>N㐞 GW_BASIC 2.02 - Version 1.00 - 25/02/1985 ----------------------------------------- Un-implemented features. ------------------------ 1. The CTRL/Q , CTRL/S ,CTRL/O options. 2. Joystick feature. Known bugs and features. ------------------------ 1. Timer event trapping will not work on ROMS before version 1.6. 2. Music. a) Not supported on ROMS prior to 1.6. b) Played at "BELL" volume, so you can vary with configuration. c) Notes may not last longer than 5 seconds.(eg. "T32 L㐞1 A"). d) Notes are unpredictable on F1 because no "sound chip". 3. When using "PALETTE A%(0)" A must be "DIM A%(16)". 4. CTRL-/,CTRL-],CTRL-^ and CTRL-_ not implemented (Use cursor keys). 5. GET and PUT on F1 40 coloumn GSX fail sometimes. 6. If CTRL-T line 25 is on it flashes on scroll and slows scroll speed. 7. Scrolling on the 7220 driver does not work. ARMONY BBCw lfGRACE BAS(m mHARMONYBAS' nIOLIN BBCaw o㐞MZ  )㐞CC7@?2C:F2 u)¢Ë   2 t  㐞2"t!<*YŠʢppڋ"t ډ ۇڻt "u2Ѣ!㐞<.t fs2 tu Auð< r< sGkrLs[uuz杺[_)S u[:=N=5=H:M:ͪZ܉ܢ煠FK%%&6&_&&&&&&&&& ''1'T'U''''''(((UTϪNBTSSAVLOAEE㐞OLOҿLOSŻONԙLEAҒSRLIINSNDBO HRAL̳LELETũATI͆EFSTҬEFINԭEFSNǮEFDB̯EƗLSšNāRASťDIԦRROҧRRX O#QO҂RIOTωO TωOSUEXNPUԅƋNSTNNMNKEYEOCATPRINԝLISԞPOEԈINŰOAļISԓO O$EEFTO%OTOERGŽOIDEXԃEהOPEκUԜΕCTPTIOθFRINԑOKŘOEESERESEOINE UΊETURΎEAćESTORŌE͏ESUMŨIGHTNENUͫANDOMIZŹCREETOАWAФAVžPCTEGQI TRTRINGPACEOUNTIC!TRI"HERO΢ROFƣABA SINSAARPTIDTȠAI㐞HILűENIJRITŷOپ͊j2522Z`muD@΀KyPUg񃓊'&}W)Z%F|kzdùm//////3333((((() ))))))&)8)=)>)V)W)f)r)})~)))))HAIΌVVVOMMO΋O͐IRCLőALLӡHDIҗATERAגRDE֕NVIROΛIELĂILEӁEԉOCT̖IL̇SEԅCOP٠KIKSKDKDIҘAMńUԈAINԏLAٓMAОALETTşSEԆESEԊMDIҙYSTE̓HEL̚IMEIMEҔIEלINDOםyy||PF<2(z{SZܤ46~*/I4KlSӉL[K(sSYZx PHQ,A.7[S.$u㐞 [C:u. yi<.tVs. ^[. yFǾ(t t.$t y ׺+(<}t#<~tYCu2P>u1h$uYKKCC㻢Ahn2؉ySQ;^.Vu <:r$ :t$uFP XĞ4t>$:u$t :t4t$:uà,rË2CCCuÀ>tS>t?t u[ËW tRSUYZ[^V[݇ڋtPS)׋ZrNKtt2uf YStE2lg$t԰P,u㐞^gX@ggqg ۺuӋDø2 &RS艦^VP?, X:tm^VS;uZ[^VRP[I[BܰuSIIII yIIڇڋ;ڋBAuIى[<,tXĞ[Êu}h^VS;s;[Cr5S;s'ډKK[[\ u4+Ë+‹S [ðPX  P X:rC鿤  ,uc㐞`NԚQRr 2PQSd< uu<"u<,"u erSȊ<"t0< St\[< u&Ȋ<,tdr(< t< u < t<, t t :t :tdsS<"t< uAdr<< t<,u2< u*SQ t4ޞ֊$Y[t ndr< td[, t [쟆PXĞPs赟XĞr谟[ uÈCtY뵶2b2PKItQ,MRtnXĞXĞ S=u@cs<\t:u:t<*uC<r: u ¾2CƊ±teC<.t<#t<,u# @<#.taCt:C<#tR8R<^t:tC:tC:tC,sÊZZCZK$uʊ t,-tY[XQQLQPR2ZXȊ:rË uÊC/C?ݵ*QR^VC[SRQ:uBt CuZZYZ2[ZZY*YZ[Cug(3!SRC;r;s [S[Sz[^V7,2 uePiRSt[YX^VS^V uÊ*s4:rɵRCC?يZڊCڊ uËBCuuò<)t,)t_G㐞{ɇfDDuًSSR(t?uhCCCC7S蜔[t Qȋ[YYȻCC:u:t9uں-2:uCKSS[Kuv,<,tSЉ[Kt[,:tALLuy,:t [SQYZQى}s Ӊ[;r|ɝtSKCC uCC t<:t;u R,)Y_6H6J,)SuyS葎[Q[JHSuS|[y7[JHSu'SY[tȡtНt%㐞')oS7[]g(_S'7[IR,MP>G)XS<rt.gF[ÜFoFFF7yaArIi褌i*r胎û7u4=DeH背+% 7ٕ=]Q0)+' 7辕A(rIQa rՈ[&R@[(À>;t><tSS[PXSs[p'S0((<)u[XS=sފË t+!t>;uݻutyE[À>-t >.u+X[ZQSP66666)6u6w6y6{_S s㐞 طZ{ywu)X[YRJ[S[QR=t D,<,t;؊Ssj¢[ZY+sË+PXPQ^P6YXQRZYtj,<,tUBt<,tnFSn[r?S0*sCSsCSZYRQQPS[XY{YZIu[^QRS^[ZY;SSR[[Q[[RQ,׉YZtsRSӻese^S;s[e^Sމeډ[ZSZRYAs;r+㐞vuut˟!u#tӞtR;}/1ZR;}35Zá/;|;1|3;!|#;5|> tPuL uċrr!rs #>QRZY29~@9} 9!~ 9#} PS+ً+ً΋+™RX x@ƋYX tBP Xt;PSQR3 y y u tu* ZY[X7Cx66ÜPS3WQYZ);[XUQRD衽t,<,tԊrA㐞ZRSw[ZYSs"tS^@ [酾XV5$?$ts Pr!Zr0<tu t~4$ (6^6+6tCr&]t<u t5΁}NIu4<  uÊw 6> ۊMQSP*X[YÊ>uÀ>u3À>t u>tߊ:v2ۈV>2:>wS[:uFG:u㐞 ^À>tPRڊ2+sڈZX2S[pKtkR,<,tcFuXSH2w>QYQ2IY t 2H2@t86ĺt0,.uSH t:v2w[2:r2À>t,262IH;w >t遻V2u Iu>Ku^;v6SR+=sZ+=sۣ[ò>t!. BPحȭPЉ6^XRVQSP 9sXXXXX>P ;㐞Xr$,}SEJ y鬺>;t e 而[Sډ߄5d2[RPQHJYZSɃ[Zs t4tӢ;u t V[̸uS~ t*!,S肋uOKċۊrRSCB7[Z;r[ËˋCڊr++CIBR[>tÉS[SZ"SR+ډۉZ[ڰPSRSRډ;t&s ;t s7>u;5"t0@t$"ttZYE3>tZ[ZY㐞0sZ[Xt&ۇkQËt u u2sƊ u$,<,uQ^VS؉YJ y $6H6J"裀r2r uu uPt+dXHJJHPQRuiw|wJ y$6H6J%YZZYXu6H6J^YX[R u S踁[HJIZS輀âPCX t|QR/ZYSs>;t ><uCsC[SRQRD rZڇ㐞[;sö[&CC&CC S[R[t`,ӻU.:t KuZÇ:͊^VPCCRSжCKr"[CCRS>;t ><u+Js3[AZYXRZRQSP>uX[Y>;t ><uZJu[S$s[,ou>tRҶFYiu鯵'U2[U]UbUdUM}UqUmUwUkUVTVB=VN9VX]ûVӃVPDVڹ@ڋʺ7ڋ1+ڋ<+t<-R<,t3YuoRZ3>u>(t@RQZR6H6J!uYZZ[QPSeZ6H6J%VYZaZZ㐞)sA&*sBP#[r PSQRZY[Xr )ð@&2R<,thXR|ZrBr Hss tà uûuӊsJsBsÊ%rssZdKtK{肉Ί;uS|Q=A)>.u+{,E+>.u#+!{ IE=yMUmyeI^AnyQpYIyiaM:UJy]LQ%Y5uya7u* y[SPX [ sѰ㐞#!{(dRs,\l)Y;N teKLtY<ȜuA=]EESS=Eyt3s=.AgIwytsA[u<;S`/S\[@R(߽S见^[SVB[Ȯ,ɽS葁^[V*[谮)ËOÉOËHËHPSQR3ɡ)>.u+@ȉy)U3ҡ+>.u!#+‹@ЉyYZY[XSPQRVW# t3yՀq yƀb;KwM_^ZYX[ËÉ.ȼS3PPyy tQPX-[+ tyVtȋ..t :t㐞CCCî[Q.s" QS!tsB0 [Y.gtS>-t-++< t<`r, [-+<=tb<+t<-u3ҹ<,t<;t<:s<0r͋,0؇t*W(Zr <;to[鑾Ë+? rÀ>-rZW+.-d-+^SPdM t㐞S|TXPS3.P]& [X.R].P]úPS [XQRUP2ӹ8ZP8[]ZYõËIJÈ&.PSQR t t :w:v SS6ZY[X3ۻ yÜr   r  ã 3& PSQR:t :.t!33:| ӊ*uUЊ*I:|=5WVЈ.͵ӊ ^_ZY[XPR6  t<u > t  t t:vր~:w  6 ZX> t P<u XPS3 t㐞 t :6~6Ša [XPSQR SQR?!s3+<t SQRs @!ZY[&PRWQs&<u ؎ =G<tB<u= .6x *Q3Ɋ*YY_ZXw8t3RPQ6#:6~  6:~YXZPR!ZXuPG X@ `@ ` @ `W _Ç SR3ہ.DaڋZ[PSQR:6w3ۊ* ʊ.]*APSQR:.w3ۊ*㐞Z *PSQRQR6B3ۊShBA[:~ZYK- yPSQRR.HbJ3ۊS/[IJ.;Hb3ɊIZȵ*+PSQRVW:} ؎ ʇ_^ZY[XPQW  _YXQ& & Y%PR{%ZXPSQR ut=3<u 3ۊ㐞&<ut<u"PQR22£ZYXR]t@.P]؀> t"yy>tNIsBuGq*t>t:u Ȣ 뷃ZY[X..dP@Xã"áP;~XXP;}XXÉô"SQ㐞Y[PSQY[XPSQRW f IUZY[XËð> uPSQRWVUNjOW2術r]^_ZY[XPR%3ZXã"ðÈá;w:uJt@333SR33QȀY;w&:tF€t;t QY@HZދϡ6>PRWVH33QȀY;|&9:tF€t;t QIYH@ދ^_ZXPSQRI -3㐞۹ LJCC@bf36@@d36@66 Ȣ<~3<~<~.>pu@}P>@u(6262ZY[X.g.g.g.g.g.g.g.g..g.gFPPPwXSQWP ߀:> u t:u : tU  tJOX|.^+0X& 㐞&  _Y[P3 XP3 =tNXQʊ.YP3 pr.402pXRP: u :u:6tX<w&>tM> tF6 9/> t>tPR6 ZX6 XZSP3r22!04,.X<t)<u )0* )4* )0[PSQ‡يY[XPSQ&>.Y[XPR.>pu.42*06}<~:*`8m^^㐞x&4420&.@8@6:<>@3dZX.024C6.06.0=t>PS""GG[X PS.>puHSQr^68H:K<.0I2J42.PmY[?.K02468:<>@3㐞6>2.Km[XPS.>puCSQ^r.0H2K468I:J<Y[v2K4.068:<>@36>[XÉ6r>tvxzmY @+áHHáPPyX.:xotn .xoU.:otY.o@.:otD.o+.:ot/.o.:ot.oPSQRUWV.>pu㐞Ȏغgs^_]ZY[Xá=ru=u t13ۋ.=t)3؃>t6=} ^.‹u3u |..=t+.H&=} .GSXPSQ3ɋًA:vY[X PSV3ۭC:v^[XP?t/3?~t G" tG" 2䣗Xr* u:tXRu! uZ= |$=~wZ<t<u-<ur<uR]ukP.P㐞]X'!>t( &At:Au I!:Au I!>!t_]ZY[Stopped in OEM module CARTCLS$mt !Stopped in OEM module CARTFND$t !Stopped in OEM module CARTFNX$t !Stopped in OEM module CARTFRE$t !Stopped in OEM module CARTMAK$u !Stopped in OEM module CARTOPN$?u !Stopped in OEM module CARTREN$iu !Stopped in OEM module CARTRNR$u !Stopped in OEM module CARTRNW$u !Stopped in OEM module CAR㐞TSEK$u !Stopped in OEM module CASMTR$v !Stopped in OEM module CASRDB$:v !Stopped in OEM module CASWRB$cv !Stopped in OEM module INICOM$v !Stopped in OEM module KYBSNS$v !Stopped in OEM module MAPSUP$v !Stopped in OEM module POLEV$w !Stopped in OEM module PRTMAPM$/w !Stopped in OEM module RECCOM$Yw !Stopped in OEM module ROMENT$w !Stopped in OEM module ROMFNC$w !Stopped in OEM module SCHCHA$w !Sto㐞pped in OEM module SCHCHD$w !Stopped in OEM module SCNCHP$&x !Stopped in OEM module SCRCHA$Ox !Stopped in OEM module SHLSET$xx !Stopped in OEM module SNDCOM$x !Stopped in OEM module STACOM$x !Stopped in OEM module TRMCOM$x !ACT Apricot - Version 1.00 - 25/02/1985 Ar >-tPXSrL tt1u>r >-ug9w9>tA8t >-t.[s:w:rPs :v:w:rPs2Ps2P㐞s2PEY[XRrR[Y[PZ8а[霐\sPPRsP X:X:"tSPQ?YXr7[X`tStr[Sr[ S3ۊZ[à&:&v&&:sֱ̎(r<:r6:w0Pr*:r$:wP)tr)u<t XYSʏXYSRъZ Z[Km*Sr[\u.$P6X<,t /Ԋt?, S**6rU@QRP YZY9PQRV>3KtDGAsQW6>=_Ys3<uH SQW`_YӰ[«u> .^ZYXK荍t<,t㐞K耍t <,t<)tCȊCSC3ɊOIA?u WSQY[[ÿ3GAQW<_Yt"P,uKW#_t#Xs3wGGrEAI CKt#<,tPKt <,t<)tXCXCÜP Xt韄t+u9K[t0<(t<[u(>u[RRZY;wuZi *(#) uTSRPC:<(u t[܌h04t㐞~ô4w:t<>uP&6:wPp8XʈX&3\S PVF2QݷV %Y^VQ tV^  Y^uX[UR>uXZR3XR3)SiP0tJEV Q Vu2/^uNYu^Xju[XS3ZU)2PS u QXY[XSQ GPȱX0t /Y[Q2 00YÃ<9~0P4 Xt Ā1u r P4 Xu1u01P< Xv ߓ%R訉S 薺R[ldrdŊ-㐞#-鯺 00ĈCf^S贼rfw>)6!6=s=dsD=Nsdl=4s4[ t,=P Xut/t=P Xutt[/蚆"ۇz~$P Xt u:sZK Qgq(lPi)XYVR ZF^RQSCt ڊ$t薩[YZRQS訩ڊP蛩X3$tKÜP Xt }P Xu}PXõPX@аr#[PR>t2,t,uHHrZX醰E tJÜ㐞 ,d0{S,!ڰ<2pRPd2Z[ЃKe]#z O[7A(O:)2 tsQr^ trZK ÜP Xu|S38t ZS[r #>tFÀ>s:sPAsK tG À r= s63ɀAs/ ts&s!s tA t0PQ t u@YX 32 uÒk醂ӱ ????????.???S˾$t[~ S uQVW ._^YR!N!sav&.3>u$B :s VF ^+ O!<u t Z6!D«3CLUcTTA $d[Ê$ yu u !R G!r'@Z :   tV ^ 㐞|u 84t8tV ^P%Ұ%Xt.D7@t#DPW,OXSP[D!r[< tq~%ut"},$((tQ)^S\D!rPY/ S S !3ɴN!s<u7t_W ' 󤺊A!s<tO!s$&^[dtt;9:PU XSPX!s<t@t[VtntDt\tbt:sȿ DA@SsѺ V!s<ts$ S3+ω>u' 3=!r ش>!3<te[COMSPEC }t NJLsS GOGC  Ȏt֋󿵍㐞tuuX؎Msf<=uX؎6,+=r׀>u;W6+Q++SDZ@،ء+؎J![S&[ثɸl EM: bsr&2K!ZώێÎӋ& 0s\c42 t >u)J!r1Y^>+ċ+s <t <tEr[:r5P>:Can't continue after SHELL uS!P !Xд![u  2L!䈊<,uES4 t8C$߶z t3Kxt -zqu<#uxKx<,uZx<#t=<,t`uZvm m>tPVQ2H!Y^XPV6;6t tD^^XÊ&Āu3t t*t%>t|4wSQR6PZY[VKsG|tl|1uÀ>t龮SQR$豜ZY[ t訖 tSQR$38ZY[ ^Ë6Ft2Nuv|t&|/tD7urD/D0Àd7D2l2 u[2P  XÜPDXPXS61[V6^ÈD2L7z| +v&כ r㐞 CI ڊCIË6Ë6ËV+Yr铛 sV6FtNtd5^^sQY< u r u < rt:r P Ӱ X< r< u<u tjlj tVP u tyX^sV6^WVPFtNu߁߁D4(X^_WP>.= t).X_&P x2؜X(jj.S<H% S $^+[iRWVt25_+tEItBW>OVR2GD.u .8uJuG. y ^^$^_ZG.tZ^.}uiV2 ,@r<s u t$3:s2RZ6D Ë6;6t :Dtt À>t;vqPSQR+;rthPR9ZX؋6V?[6\ZY[XÀ>tDPSQRD+Ƌ;trOGVWN+tVVW y++FG_^;tЪui2;t"踪CCÝuPCX;tP9 +#;r;s㐞_^QO;v;v;wWYÉ\\ÉDË;\tË\;t \ C;\r\ËDH++DsD+DC3 KXðtSW.Q_[OOuP߁Wg_ t W3Y_ 3PXSQR6 6 tE33u$%%ZY[6>t3P݋Dӎێ% ߊãA:X$Āt݃  uP !XP0!XĀt2.5fFDG9999H999FD9999H999PRU$E$%!3!n2Ұ3!]ZXPR$%!n㐞3!ZXS5!^F[#^o _Þ$}<t<t<t< t<t)e,e e>ede>t uQ6$>tdY uÉLL!P t'<u3ɴ!=!s<u7X<u<Pt}dD2W!TLYQNu3ɋѰB!sDTYLu~|(t3r܀t uËL!3D(2D!rC€t7D(@tL7@P 2D!ruDXtDD!3 cm|(t4-s3,P? Xt|9t D#T%D8D㐞|u|(u&|/tB\>!|t/|u 2|,tD! t\;t2x9u6c|\-u6ÍTCCG6.LGBÊd8ôÃD#T%SPD#\%;\wr ;DvD\X[À|uD8|tKD!S\;s+L0@9|uC\[<u |(u|1u [|t|,uupb|u|t=S\|u ;\tۈ@9D/NC\|t ;\|D/[< uD8< T8'|(tkR3ҋDiZ;SRӋ\?![ir'cƌًËRZ;ù Ӌ;t ʊ؋*.㐞2PlɊŘX.2Bu uɵ Ź Ӌ;tlɊŘ؋*.2P ʊX.2ŋBu uɵ SC[tÜ uLj%2uT)L+rb u tXT)L+PڋDr>ȋDщD#T%DŽD/D0!XtDDtD#T%$`SQR|(uʋЋ\2B!sb`ZY[QWD-D!P3|9|uY?M ͈L,|t D!D/D0D _YPQD-@L"tD\>!|(t__DYXSRT9|u\!r+Z[PD4$XPVW%WQWP^jY[_^XWQ3ߋbtr:u CW㐞Y+Y+SQVl^ u! tGXQ+tY[3Ɋ_ t3I tઆ3>t32tvu utar:sMWuNu= s^>t t? l:v먀uT Ct t=*=?=.s>u.BEASÿ'W^> t  PQVW  G_W  t <.t GF_^YXù_WFPQW$ u!>t>;>s!}t>>;>t }_YX;tPSW:Eu :uCG]_[XEr٨|㐞ܤͩΩPSQRV3 &&^3ۋ3 u>t3tjt,r<uKVtCr<uCSNXS0[4tKS3[r0ô>u&x>uA3Xt>u"RZr t<u WQsu < ru_^PSQRPR ZXJuZY[XVU]^SQVWu u>t u C_^Y[SR t㐞 u u3< uP t< tX Z[3uN2u tC u fs"u:tt r   t& &XuQ21,ASî%..t!t KC.yCC ͈.[YX [ uQË(ʃ> tË t t>t>t\aS3t%VtsP;Z~P)XІGH[Ü u>uPr tȢXP u>uR 8t=ZX|||ب٨||ͩΩ ÈuQPŠ诵XY66ÜP& ttt&XÀ>o ou< tP X< u  t< tP t:D5w:vȢX :w { 蠣:vs&:&v&Ê& td5|||||FWPEE_㐞P"Ĝtҭ .5gծܮWE E_WV> u^_Ëu tD7u R ZtPq uX t2H.<r9=VE9PQC}tU{E t E uE}uE}nw E}vEEt?Y>u u㐞XU ܷQ&Y tuE tit s<;uY߀>u6CPS6 t+t㐞[Xt&ˁtWO G 8t :u u_Cu>uE(廇%P X#Zus[TslS;b[CCCCS$[? t dBdu>>X=|uPQYZulXaISKa[덢pt JB~uXv< u t t< utCU< t~u âQYÜPQ菬YX㐞Ê&.P>t r &XP:XPSQ<v<v7:w+:w'Q*:Yw:.&.Y[X&~ݨ;̊6:6v6Ê&S۷Gg$<t< s[SggG[3ɋIGCCRQSSv[>[YZÜr1>t*>u#tP6 tP;X7XP>u*>u#"t>ut t讬XPr'&t"`As 6<uXP>u&"& &Ԡ" XÜt 㐞ÝÑP2 t:&wArtt:&rm:&sđ:wr}erCtK.f:u /6\ u:w5͑#rS뵑r&s&*:wPX:u :&r&:u :6s6Ĉ&8&sr&&X6QR6l YZʏPSQRkr:tr:ZRtr:r tZ(t rP&XsZR:sZ Y[XQʊ QPSR>t RJZŠ>**wr(PP.#ȴ㐞Њ6X t tV^Z[XYVP'&8$r&8$v$X^:r:w$ÊPSQŠÊ>*Pv.蛨ȴ6X xtQY[XPSQŠ&Ê.PPSQRqrZY[XRGCCGGZRGGG) rṵZQPSGg[XYPSQVW>Ժt.>tvP:XrK>_^Y[XÀ>t rS6u tH[ C r SG[t!RQ6 R:6vR㐞6sƋZ:rw:.r:u *vRZRQ:ъ6tYZ:.v+YZʊ.z:v :&s&:6vRF2ɝryu: wq tp th:t`6d! uXO6q>W:_t> us!GrtruZõSQR6.*r:u u&ŋ؊P:v6 ut36R&誡:uP*&Xv(&s>ϝXr t:>t> t:uSXZY[X&3SQRP:wHڋYQ:v:u:.v.:w$Q㐞*윊r YR :w ءSZX:u:.rZY(.s ZY:v1u,<t(6:u >>G X< tZY[:t:&s: R3So[L t8us0?t*XSV[_t ֻCVRZð<t 9Tsދ7~s:rt_:tRZ6PX$À>pt>u t @t |SS3r:&scP Xrt<ṵ%6P tXtCt>c:r7:t, R:6vZ㐞:uU6g%rt:&v, rts &6:u6Šsr: 蘟T p:uV^r6 tf:vX6VPQRP2 u XZYX^XruP_Xr tPeXs :u*<u:&s Š6ɇPQ6YVҞƀw^:r rr RVZWQ:u:r:u:sRP*.w2*]tOX*Z[Q*ŜŠuZYr"t :>t t>PR ZX u:w:u :㐞>v>_Ê< t:.v*. QuY[S>[xr t<u̝6Pc &}X86s .r6:6sr68r:rt:r8rt:u :6r:rr:sŠ6:w :u:6wSr:ts ӊ6 [:t vrsŠ6r6R轟s u<0r<:ru;t >tGrR<,uEh)P66ˋ=P2XĞta㐞p&'2++tE< t<*tKSP 2<-t<+t:t<0uC sKKX tX t[%ûY/ &( t :*uua t1.:Ft t&M.ŴŴK0&(tKP㐞XuK/2 0CuJ0CurU[t SPGZ[P& tt (u*PxOSPPhXuF7 XP6rĘ dȊĘX[xXYQPSP$X[2ܠ' t (ů2X6&P.'X ~6}X& u K<.tCXrĊ&'* t (u  &&&&&&&&&&&&&&&&&&&&&&&&&%%%$$$###""""!!!  㐞L} Hz@PC$t >(kn@C:h* 51_c.1@v:k ^# bx-Àz&XƐn2xʴW ?h)͡SЅ@aQYԦo% 'N x9? 6!OgI#E@|o|p+L67EV߄vl: {Η@H½p Pv5$cCu͍M r5r1.eE%#!Dd,0Ƥ~@zZrN vH Tʚ;@B@B''d 㐞;8|Yt&wz^Pc|u~r1e&X4#]I׳]b5~P$L~y DNn"~CÞ&0123456789ABCDEF&JW Jws y $JP[K tKaVu@It ( .KsKMxuMF ܰ t Ly%rD H.P uXSrQ ty YP{ Xy Y&XyPX~ :r Űŵ[P2?0uCmK?0t?.tCXt+PE{D'CX+y-ش/, s:CĉCCٻY=< u.C uÿDøHJ-uC4yH tyàK tJ ty COr S` [3һ r0rI6J6HlZ㐞[ùCCùKKÀO ûUr$QO'GC2Y t&O tQYGuþDPDÿ!.߃ÿPDPQSWDP_[YQSWPDHJËHJ uàK uS[rCr6SW2JxC xJ+rFu>H++Jr5u-+Hr+u#2Q,rSWJ2Jy&J x ,'QޠJ yu s  Y_[ûV[rSWJ2yQ뿻u H.+V.^xJ xáH xx6JáH=uS [Hû㐞2<Orz_ùroiDvrY߹HLD[r>H5Jr ?s]J5OOUÿP DsHXGGPyrn2MV3ϋPX u<&uJ<-t<+tKss 3ҋ.:Ft t#M.#=PPWZ_332 'AusyQSW[ _[YtC 2 u tIzS6[ËI xhK t`>H΀s@K3+s NFރ6H$J8WMu/y u 㐞K ur y&>Kr8RS6H6Jp[Z[Zt8J y=$JS6J6H,KuHJ["ڈLSR6J6H Z[quRSd[ZyZ[4ySRKZ[؏HJ&JsWSR1Z[ QSRWHJ.WsZ[SR WtZ[u Z[jZ[h66J6Vn1 ^Hf R ZÇ u 3һ|H SpX Z6H6J [ZRZrSu Z6H6Ji [Z3 u6LuuC ÃuDHJ y yJ>H㐞SU[ËHJÜS)[T=HJ=H_ ^6H6J`tv-Ç2KȈ/C/s& S3ۉHJ<[ËsbûPPRHrDÊ2ڠ֋V+AڋAÜIu,xH ty3 u[ØH[Z_[Z뎜C7CCCS$ [:Q2Y C0 J tt9À6L3݋‹Њxx1++tpx2x;u3Hu tt‰H u6LO㐞JyJ y>HډHí:tF;u _:u:,uFЬ:t ttȋ[Ë.뾋.:tF;u!`:u:,uF:u ttЭЋ_J2L22s-+ x =rރIy ރ{KJ2ˀSKPQ|YX9s^S1L[2ûCO㐞xCCsKt3KKKK< CCsWKKuCCt 9 JHáJ t6J tJ t3ɋ6HL*s ن߉Kߓ֊2㜴 2 tQr6H&L% ĢJÀr't ֊2ۀtŀ uy%*̊Ês/Lu!Buus Kt n w>yDPPDDM2L tc t׀쀀*pĀP2ɭ̀JFGK%W!WW ‹tY[_L6J3;s\ u;w;R3D tPF tH tZ㐞]蕒sODFHJsO+DFHFH‹DX x utwrtsu$߀ ǣJI߿DuL uDFDHMD2L쀀*p3ĀPɀT$2΀]-2ɀπV ‹t[*y8F;s[3sNsX x uCtŀwrt st$ ǣJƣHþ+ЋsSWQ,0P8XyH sx HHPr3P!$#t#yZ6H6JA[ZZ-Y_[ß>u SWZ_[㐞3r<-u<+trÁ rP Z02 SWuD_[3~Ccxa%t/Y{Rum%y=FJLH&G@ˀ*s#u>%y3DFRVH`^ZyHu%PQJH3ۀrݑ*͊r.t"πp yYXH x ut$32LD yފqK t W u*ËVp6KVKWP t,ϋ#S߁<sBsB[tGGۋSD[tFF뾾B tC J KxCCCKu_t uJ2HQP㐞 XsBZsBڋ׋s Ku y KuӊՊߊIy.C0uC3u .C3 u,C&.{jQSDPSVU[PDt Kp[Yɰ P/PXPsXCXuQDHY)SQZ[t JHJHY[APSR]/PXPs.V.^EEE~X[CXuBBkQVD.G^YQD.GYSQ3W ǠK. t _+W<\s1_OWrpwX, PvXPXY[ Y S[y -S[ C0㐞uCYy3(&tKs>ٜKuûIGG GGy"2y&CsQS[YSD/sCC[SDuC[ÊKsLًHJu23Ü ۜLKˀy2 tyBuÝs2y Ӄñ*K~Qu HJàK,PKSlZ[H}Z[UZ6Z[1rq)9CJKCCC t%t!xu,vvICv>K x!uvފ2t u>KH.JRUS[[Z.P6J6H㐞H..Z[XHtPSRV^..V@^Ss㻨Hr [K%ss:u PQYX'[x?*'y26&R Z&6&2 t&6&&!Р& tȊŠx2PQRS[ZYXx*y&'8.C*y2!3R6&'R6&**x'6&t&XZ&ux*,Ƞ($@uÊ@u2(&Y t+S[y-Sa[C01(&x(̵&s SR2Zw,xURXP uKxC&Ztny HLJNL.&aʋ.c2&L2㐞N.&a2.d.fو&LKLNrX CC$L렋LN3K&LICsCCuKtCu&D&JL$JĀsBuuKu uHFF>L ߈ËQr >Ky>Ky+?YQ3+#+K+"9sEYűc4GW-BASIC 2.02 (C) Copyright Microsoft 1983,1984 Error detected in command line Bytes freezFK tnK#S.s[PSu$ud%u+(uw㐞(,r 2.[XòIJ![Ћ&S3;r6أwG+v0s* r%;v+[9ESD>uI$xuS[ t"S9[+KK}蝮 t3 5| Ƅ}&l.F}k +}+''c}jr$I~L~z# q}#cyK~vsc|1CeむtG鵚 ʀeQҬ?wp>[3l_DNn"I,\zwpLDPLB!XVC0`[Z*2g')8n㐞 tz~@\);8h!I,k e35TeB׳] j0 9[st>uXXdP .X<t_>u>u 6H6Jr6V0X<t>tp4JH3FD LÿPD....þDP PDDþVJZPPPPPDZXXXXz&z m? mtþDeKtKjMÉ6`u6`x.PV`K^*XuPV`^V^J t uÀ6J^ր6㐞JtKyKWu`Otvy6JhmWa_eyptyKu>  t:tK"C:t  u,tʋ`ns;]np+>t;㐞 w+فrى+ں;rڱs>t ;r ؀뉀>t.RQPW2 uȋC3_XYZ;You can not SHELL to BASIC $؁âs  !3L! Incorrect DOS version $,&3& u& u%H P37!\/t/63)&&0!<s !2L!3SD!$YA2"uQsYSQPp؉؉؉؉؉XY[PR28!ӊG<\t$ZX㐞$ RORO:p8m!!19?Z>Z>㐞LIST RUN LOAD "SAVE "CONTTRONTROFFEDIT 㐞\1234567890-=%*/-+ qwertyuiop[] 789asdfghjkl;' 456zxcvbnm,./123 0. ^!@#%$&*()_+%*/-+ QWERTYUIOP{} 789ASDFGHJKL:" 456ZX㐞CVBNM<>?123 0. \`~|-=%*/-+ q׸ŸҸԸٸոɸϸи[]ƸǸȸʸ˸̸;' ڸظø֘¸θ ,./p u. $yE$xEZ>Z>Z> Z>Z>Z>Z>㐞㐞Z>N㐞LIST 10MODE4:VDU23,1,0;0;0;0; 20VDU19,1,6;0;:VDU19,0,0;0; 30PROCheader 35PRINTTAB(9,29);"*loading object code*" 40HIMEM=&195F 50*OPT1,0 60*RUN"2.KNIGHT" 70END 80DEFPROCheader 90PRINTTAB(10,3);"White Knight(Mk11)" 100PRINTTAB(10,4);"__________________" 110PRINTTAB(10,27);"Author - M.P.Bryant" 120PRINTTAB(0,1);:FORI=1TO38:PRINT"*";:NEXT 130PRINTTAB(0,31);:FORI=1TO38:PRINT"*";:NEXT 140FORI=2TO30:PRINTTAB(0,I);"*";:PRINTTAB(37,I);"*";:NEXT 150VDU23,224,255,255,255,255,2㐞 55,255,255,255 160VDU23,225,1,3,7,15,31,63,127,255 170VDU23,226,&80,&C0,&E0,&F0,&F8,&FC,&FE,&FF 180VDU23,227,255,127,63,31,15,7,3,1 190VDU23,228,&FF,&FE,&FC,&F8,&F0,&E0,&C0,&80 200FOR R=1TO20 210FOR C=1TO24 220READD:PRINT TAB(6+C,5+R);CHR$D; 230NEXT 240SOUND&0011,-15,INT(256*RND(1)),1 250NEXT 260ENDPROC 270DATA32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 280DATA32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 290DATA32,32,32,32,32㐞,32,32,32,32,32,226,32,32,226,32,32,32,32,32,32,32,32,32,32 300DATA32,32,32,32,32,32,32,32,32,32,224,226,32,224,226,32,32,32,32,32,32,32,32,32 310DATA32,32,32,32,32,32,32,32,32,225,224,224,224,224,224,226,32,32,32,32,32,32,32,32 320DATA32,32,32,32,32,32,32,32,225,224,32,224,224,224,224,227,226,32,32,32,32,32,32,32 330DATA32,32,32,32,32,32,32,225,224,224,224,224,224,224,224,226,227,226,32,32,32,32,32,32 340DATA32,32,32,32,32,32,225,224,224,224,224,224,224,224,224,224,32,224,32,32,32,32,32,32 350D㐞ATA32,32,32,32,32,32,224,224,224,224,224,224,224,224,224,224,32,224,32,32,32,32,32,32 360DATA32,32,32,32,32,32,224,228,32,224,224,224,224,224,224,224,32,224,32,32,32,32,32,32 370DATA32,32,32,32,32,32,228,32,225,228,32,225,224,224,224,224,32,224,32,32,32,32,32,32 380DATA32,32,32,32,32,32,32,225,228,32,225,224,224,224,224,224,32,224,32,32,32,32,32,32 390DATA32,32,32,32,32,32,32,32,32,225,224,224,224,224,224,224,32,224,226,32,32,32,32,32 400DATA32,32,32,32,32,32,32,32,32,224,224,224,224,224,224,224,2㐞26,227,224,32,32,32,32,32 410DATA32,32,32,32,32,32,32,32,225,224,224,224,224,224,224,224,224,32,224,226,32,32,32,32 420DATA32,32,32,32,32,32,32,32,224,224,224,224,224,224,224,224,224,32,224,224,32,32,32,32 430DATA32,32,32,32,32,32,32,225,224,224,224,224,224,224,224,224,224,224,224,224,32,32,32,32 440DATA32,32,32,32,32,32,32,224,224,224,224,224,224,224,224,224,224,224,224,224,32,32,32,32 450DATA32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 460DATA32,32,32,32,32,32,32,32,㐞32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 > no "sound chip". 3. When using "PALETTE A%(0)" A must be "DIM A%(16)". 4. CTRL-/,CTRL-],CTRL-^ and CTRL-_ not implemented (Use cursor keys). 5. GET and PUT on F1 40 coloumn GSX fail sometimes. 6. If CTRL-T line 25 is on it flashes on scroll and slows scroll speed. 7. Scrolling on the 7220 driver does not work. EADME BAK U LRAMDISK SYSRUREADME DOCV =SCRIPT CHR8Y㐞10 REM BBC SOFTWARE 20 REM 30 REM 40 SCREEN 2,1 50 REM 60 F$ = "1.KNIGHT" 70 LOCATE 2,13:PRINT "(STOP recorder)" 80 GOSUB 510 90 GOSUB 210 100 GOSUB 830 110 GOSUB 1510 120 GOSUB 2510 130 LOCATE 2,13:PRINT " " 140 LOCATE 31,13:PRINT "(START recorder)" 150 LOCATE 32,13:PRINT "*loading chess*"; 160 REM 170 CHAIN F$ 180 END 190 REM 200 REM 210 REM 220 REM 230 X1 = &1A0 240 X2 = &360 250 Y1 = &3A0 260 Y2 = &60 270 REM 280 FOR X = X1 TO X2 STEP 4 290 DRAW "BM"+STR㐞$(INT(.625*X))+","+STR$(400-INT(.390625*(Y1 - &10))) 300 DRAW "M"+STR$(INT(.625*X))+","+STR$(400-INT(.390625*Y1)) 310 NEXT 320 REM 330 FOR Y = Y1 TO Y2 STEP -4 340 DRAW "BM"+STR$(INT(.625*(X2 - &10)))+","+STR$(400-INT(.390625*Y)) 350 DRAW "M"+STR$(INT(.625*X2))+","+STR$(400-INT(.390625*Y)) 360 NEXT 370 REM 380 FOR X = X2 TO X1 STEP -4 390 DRAW "BM"+STR$(INT(.625*X))+","+STR$(400-INT(.390625*(Y2 + &10))) 400 DRAW "M"+STR$(INT(.625*X))+","+STR$(400-INT(.390625*Y2)) 410 NEXT 420 REM 430 FOR Y 㐞= Y2 TO Y1 STEP 4 440 DRAW "BM"+STR$(INT(.625*X1))+","+STR$(400-INT(.390625*Y)) 450 DRAW "M"+STR$(INT(.625*(X1 + &10)))+","+STR$(400-INT(.390625*Y)) 460 NEXT 470 REM 480 RETURN 490 REM 500 REM 510 REM 520 REM 530 REM 540 REM 550 REM 560 P = 0 570 REM 580 FOR Y = &190 TO 0 STEP -&14 590 IF Y MOD &28 THEN X1 = &18 ELSE X1 = 0 600 READ L$ 610 N = 0 620 REM 630 FOR X = 0 TO &160 STEP &2C 640 N = N + 1 650 DRAW "BM"+STR$(INT(.625*(X + X1)))+","+STR$(400-INT(.390625*Y)) 660 IF VAL MID$㐞(L$,N,1) THEN PRINT CHR$( 255); 670 NEXT 680 REM 690 PLAY "MB N"+STR$(P\4+15)+" L32" 700 P = P + 4 710 GW2880.T=30:GOSUB 2880 720 REM 730 NEXT 740 REM 750 REM 760 REM 770 REM 780 DATA 111111111,100110010,101010101,011001100,101000101,100110010,110010011,110000100,111111101,111100000 790 DATA 111110001,111100000,011110001,011110000,001111001,001111000,000111101,000101100,000101011,111111010,000000001 800 RETURN 810 REM 820 REM 830 REM 840 REM 850 PALETTE 4,3 860 PALETTE 4,8 870 REM㐞  880 B$ = STRING$(4, CHR$(8) + CHR$(10) 890 REM 900 GW.TIME=((VAL(LEFT$(TIME$,2))*3600)+(VAL(MID$(TIME$,4,2))*60)+(VAL(RIGHT$(TIME$,2))))*100+ 0 910 L$ = STRING$(45," ") 920 REM 930 REM 940 REM 950 REM 960 REM 970 REM 980 REM 990 REM 1000 REM 1010 REM 1020 REM 1030 REM 1040 L$ = "" 1050 REM 1060 FOR Y = 1 TO 5 1070 FOR X = 1 TO 4 1080 READ N 1090 L$ = L$ + CHR$(N) 1100 NEXT 1110 L$ = L$ + B$ 1120 NEXT 1130 REM 1140 DATA 224,225,226,227,224,228,229,230,224,225,225,231,224,228,㐞229,230,224,225,232,233 1150 REM 1160 LOCATE 5,15:PRINT L$ 1170 PLAY "MB N16 L8" 1180 T = (((VAL(LEFT$(TIME$,2))*3600)+(VAL(MID$(TIME$,4,2))*60)+(VAL(RIGHT$(TIME$,2))))*100-GW.TIME) 1190 GW2880.T=T:GOSUB 2880 1200 LOCATE 5,19:PRINT L$ 1210 PLAY "MB N20 L8" 1220 REM 1230 REM 1240 REM 1250 REM 1260 REM 1270 REM 1280 REM 1290 REM 1300 REM 1310 REM 1320 REM 1330 REM 1340 REM 1350 REM 1360 REM 1370 REM 1380 REM 1390 REM 1400 REM 1410 REM 1420 REM 1430 REM 1440 GW2350.X1=4:GOSUB㐞 2350 1450 GW2880.T=T:GOSUB 2880 1460 LOCATE 5,23:PRINT L$ 1470 PLAY "MB N23 L8" 1480 RETURN 1490 REM 1500 REM 1510 REM 1520 REM 1530 REM 1540 REM 1550 REM 1560 REM 1570 REM 1580 REM 1590 REM 1600 REM 1610 REM 1620 REM 1630 REM 1640 REM 1650 REM 1660 REM 1670 GW2350.X1=3:GOSUB 2350 1680 LOCATE 24,15:PRINT L$ 1690 REM 1700 REM 1710 REM 1720 REM 1730 REM 1740 REM 1750 REM 1760 REM 1770 REM 1780 REM 1790 REM 1800 REM 1810 REM 1820 REM 1830 REM 1840 REM 1850 REM 18㐞60 REM 1870 REM 1880 REM 1890 REM 1900 GW2350.X1=4:GOSUB 2350 1910 GW2880.T=T:GOSUB 2880 1920 LOCATE 24,18:PRINT L$ 1930 REM 1940 PLAY "MB N20 L2" 1950 PLAY "MB N23 L2" 1960 PLAY "MB N28 L2" 1970 REM 1980 REM 1990 REM 2000 REM 2010 REM 2020 REM 2030 REM 2040 REM 2050 REM 2060 REM 2070 REM 2080 REM 2090 REM 2100 GW2880.T=T:GOSUB 2880 2110 B$ = STRING$(3, CHR$(8) + CHR$(10) 2120 LOCATE 24,21:PRINT 2130 PRINT CHR$( 224);,225,225 2140 PRINT B$; 2150 PRINT CHR$( 226);,235,233 2㐞160 PRINT B$; 2170 PRINT CHR$( 227);,228,229 2180 PRINT B$; 2190 PRINT CHR$( 230);,235,233 2200 PRINT B$; 2210 PRINT CHR$( 231);,234 2220 REM 2230 GW2880.T=T:GOSUB 2880 2240 LOCATE 24,24:PRINT 2250 PRINT CHR$( 236);,225,225 2260 REM 2270 FOR I% = 1 TO 3 2280 PRINT B$ SPC 2290 NEXT 2300 REM 2310 PRINT B$ " " CHR$(237) 2320 RETURN 2330 REM 2340 REM 2350 REM 2360 B$ = STRING$(X1, CHR$(8) + CHR$(10) 2370 L$ = "" 2380 N = 224 2390 REM 2400 FOR Y = 1 TO 5 2410 FOR X = 1 TO X1 2420㐞 L$ = L$ + CHR$(N) 2430 N = N + 1 2440 NEXT 2450 L$ = L$ + B$ 2460 NEXT 2470 REM 2480 RETURN 2490 REM 2500 REM 2510 REM 2520 REM 2530 T = 7 2540 REM 2550 REM 2560 REM 2570 RESTORE 2730 2580 REM 2590 REM 2600 FOR I% = 1 TO 6 2610 IF I% = 4 THEN REM 2620 READ N,Y$ 2630 REM 2640 FOR J% = 1 TO N 2650 READ X$ 2660 DRAW "BM"+STR$(INT(.625*EVAL X$))+","+STR$(400-INT(.390625*EVAL Y$)) 2670 PRINT CHR$( 255); 2680 NEXT 2690 REM 2700 GW2880.T=T:GOSUB 2880 2710 NEXT 2720 REM 2730 㐞DATA 2,&2A8,&21C,&2CC 2740 DATA 4,&294,&208,&234,&2B8,&2E4 2750 DATA 2,&280,&21C,&2CC 2760 DATA 2,&280,&21C,&2CC 2770 DATA 4,&294,&208,&234,&2B8,&2E4 2780 DATA 2,&2A8,&21C,&2CC 2790 REM 2800 GW2880.T=T*10:GOSUB 2880 2810 PLAY "MB N15 L32" 2816 GOTO 2820 2818 GW.IN.X=-1:FOR GW.2818=0 TO GW.IN.D:GW.IN.X$=INKEY$:IF LEN(GW.IN.X$)<>0 THEN GW.2818=GW.IN.D:GW.IN.X=ASC(GW.IN.X$) 2819 NEXT:RETURN 2820 GW.IN.D=:GOSUB 2818:IF NOT GW.IN.X THEN 2560 2830 REM 2840 REM 2850 RETURN 2860 REM 2870 REM 2㐞880 REM 2890 GW.TIME=((VAL(LEFT$(TIME$,2))*3600)+(VAL(MID$(TIME$,4,2))*60)+(VAL(RIGHT$(TIME$,2))))*100+ 0 2900 REM 2910 RETURN 㐞01 pc.gsx ,32,32,32,32,32,32,32,32,32,32,32,32 >0 REM 80 REM 90 REM 100 REM 110 REM 120 FOR C%=0 TO &3326 STEP 4:C%!&E00=C%!&1900:NEXT 130 REM H50 REM p60 REM 70 REM 80 REM Z> N㐞  00162VWČӜ^ѼVSP PU.>t  .~&E&|w]X[YӋQ_^&E&E-~-~ ~&:&=v<&>&=v@&B&=vD&F&=vH&= vJ&kLrP # #ce؎q؎㐞v@P&] v3v"z&E~~&&EP&E&E.>u3ػ3۩tCw..>tcicce]eWceA6c6e+cAQecTYecFÿGl~&c&Ee>cuc>c~c>eue>eP~ePc_eaY&Me~MS؎& GG &GG~c&e&E~3w t&~ &g&EiU]~&EU]~&E㐞~&E&E~&v~~&E& Et>&}~&u?Q3ҹYþD~&E&E~&Ë<㋇~r>m&MItá~rB?&M!~ &&E@WQY_Ã>Du'~rF&Mu~ &&EQ&&؎&&E/&%&eY~&GGWQY_2؎ǬuVS؎{v ؃;~&&Eح;~&E&][^6r3lnp@j&]`r&]&u 6Z&E \؎{&Ef&M+3X& ^&E+& ^&E+3V~~&M~QXQZ^bWSQ6b&`V6ffbY[_CCVbfYY>\>\⧏r~&6r6v=v urv-vr~&㐞E&E&] v*3pnl@jLrr؎{t&E& &E&M&E&+\&E&+EXHt F#3=u F=t6J=u !6{&@b&EHfXNIKQ6b6fb6fރ6ȣ~\IIyYYYfbYfvu~~ &DD&EDDD&EDD &EDD ؎3ùh3;|;|PXù ~&E3&3;u~ &M F ^ ~&M ~&E3&3;u~ &M b&f&EALr%Ht 㐞F#3=u F=t6J=u !6~ &&EU&Mكގ;}'ʃ|ڃK@;u3npl@jϾ+Iubf]QحWYQحCYحQ'YحQY]V;ut^É^Ë>6>>6==|ѣfރ6|KAщbȣ~+~vu^áf~㐞t+S+=} 3}؋ˣbd[f=~bC b;}؋,^& b&Mfَ ;sh+؋QPQ_&&E&by3=v&9 fy3=v&EYX@YÌ^ F ~&M/w~&3һ PX ~&0 ~&=v~<&&E~&&E~&~>&~&=v~@&p~&w~B&~&=v~D&~&L~F&~&=v3H~&~&= vJ~&~& 㐞 ~L&=rH~&=r&]~=t ~ &&E~&=tP>rt.hw"t<tG>}>~>}>~)~2~~À>wt, 3ًQS3u [Y Ѱt!YY!ù> t "tô ! t!P2b=uX33ɰX2û~2&~&&E~&M&] tPXt¹<u/}9~>}3 ø3tËًفøځ3àw uÀ>rt&3 tA3 3QR3ZY tNv  } ~T} ~~& &U~&E&E~&~3&E&E t&E tA~& ~&Mx>suQY*t~& ~&] t t2<+ux<-u+x ,0 t< wx3ô~&=t~333ɀ㐞>ttwn t t Au u&E u&E~2҆&Ut/&E~2҆&&E00ƴ 2~&&E< t Auu000ƴ Š2~&Ê<0|<93~>tt73 t<| <,&]2~t&Et&i t<|<,2&E~2&À>uts~&M&Et#~&E~332< tC!33~2< tC~&]W~~QSi~ 諡[Y~_&E~&M~33 t < tC2~&]~&tw~r&㐞~&&E=tqv~&E~&E& Et&}%~&u%wt" 3ظ33 02c~&E&Eþb؎%wt(4 3/ظ3302 þ+G૊êø3~&E&E~&~& ځ&U~& u4i33~&E&ER!Zô!Rд!Z5)!..%)ʎںF!%).!<&t ...>t.. l㐞> t> u Ë+0+2Ӄ'ȃ`sJ9;>4u4=5676#QVP7 0k6!2W#s3‰"Es2GˆE_ƀtʁǛ2ó""++*t| 2ؾ#2Ê؋0Gr$ uÊ؋0Ord/L/u=65674LR3V^€t ƛZÿ=567!R3W_€t ǛZ+m+6osþs>  .q㐞R6o6m: !48t  tPp 3>4t05;}+=}m7+}؋=~$mooqmP6o 6 X!;|;|;;| ; ø3ÿ:ÿkøP3@QP2X@Y&ESR3ҙZ[Ãr|t2Rù3t&&E㋟؉~~ QWU &E&+ãju}=|&E&];u >t+=}&]&5+ރ}ہ㐞㋟;rCK|މ6ࣰ>tÁۃ裬r3҃>|uu_u t\>.؎&]_YItábf& &U]MU؎pҎ3ɉ>>t36 t یȎجۃ>t ͫsWG6یȎجۃ>t ^H&>uGÃ>}˫sǫ«~«ثǫ>taKǫ>u2«~ «ثÃ>}㐞˫sǫ>t6+NNƊ⫰˪Ë6+γ>ϋŽ3ҋ:utu t+Ѓ&It6+NNN骋ƫ˪Ã|AbfW_&Ef&bjVW>j})bA~QbفY㋿+>f+>frK2>|u3t++㋗ &1&!&1 ㋗*&1&!&1_^Ѓt++㋗  &!  &! ㋗* &!_^Ã>|uЃt++㋗ #&1 㐞 &1 ㋗*#&1_^Ã>|uЃt++㋗ #&   &  ㋗*#& _^3nlp@j66fރ6SPрȣ~Ob+6ffX[u32Q2VQV4&o+^ YM^Yô!؎3þS016ð Q#CuYËrK*݇ʻӆ%&!& u݇ʭ%&!& ʃu݇ʭ%㐞 &1u݇ʭ%&!uÉ&&&E ~ &H&E & &]"+ 3ۋ;}@;| ~;~3    С+~> 2 ;uItك  )>t<  H+v# 2) tك   $ 33ڋ>6NNێvF2PÎW   ‹>"u㐞).$]> u %  -/ Ί^W8_3 % =u>V3ۊ؈* Ί. ^W_W>+_>3  >u3  ,( 2ɇъ^W_ $ <uU>N * . ^Wi_W>+L_>3  $ tl> t&&.$@3&E~ &]3 u >Du"`~&&E &E &EÁv~P&p&U&U&U&E㐞~ &]3 u v~`&`&UËՊ.3Y }QuGY +~*~YY }RQQ6Y2YZ ~*~+2NJΤuuXX t#qA6 ߿st$V^V^V^V^ËP%2X%=~F~ &&uށƏ%2~&t&U&# &~&Eл&#~&~&E!  1!%2㐞&%"" Ī&%2 "Ī"&2"& Mt# NJ&2&%"Ī& ؊2؊NJ2ÊFFËъ2ðF4t 誋F"-+ǫF$<uЫN trـ'ÌȎ،Ҏ3F4t ~"s'~(V*髸WVF2~u~:tF2jF3ۊ^%././VV, t F FT v8V9Fv,Fʺ tN몃&GWʊv8V93:F6uW@PQsF2RZsF0YXX^㐞NsNs+&D+NNƊ[~t+sF2RZFsF0^ƫF_ǫF'F(+ǫ˪v~N.~tÌȎ،Ҏ3ɉ~(V*F^F_FL%t./VZۃF^NPA+ȋN,tK./V\F_~u ^R+ ^RÉF`FR~^u9髰㫋FZЫ%FZ ث^`ƫëǫë~,t.F,ʫ髰󴥫^`ƫëǫëѫ~_u(髰㫋F\Ы%F\ ث˪v~N.~t=t%2%=~B&CF./F㐞*w$FڋӁ./P.0XF./%./F*s$FȻF6F:F8Q0q0~ta0y0F, t t*f6~t3F&FF6.$f8~ t3F'F6.$f9~u'~u~&u~tF:À~&u ~tF:UbPSQRVW~t3~l&F &EF~h &F&EF &EF&EF&EF<&E F>&E =r ~tFT~pH&&FF F u ~tN&EFX&EF F Fu ~t%&EFV~l&F t F F&EF t F㐞FFJF u^X u ~t++^R^JFNFu^V u ~t++^R^NFT؋F$^%^ ^ 3./F4FL^HVP u ~t&5bJ%;|MF2F0 qF2F0F^u"2BJV,݊щNF tFӉ^F&F޾^F ߾^^JNNFR u ~t&F.FF;} FFHȈ^~ tF~tFFFF~t^~tdF~tFFF F~t^F4tF #Ft FH;FLuF$ FTuFP=|^(_^ZY㐞b]''''''''????@ @%+2@8>DK@QW]d@jpv}@                    㐞 s9b  6I`xj`                                                                            A       &?EKQWi 1CGn, &  1 k    @ @\'c'\'c'f'㐞 i'l'?? @BAPRICOT PC/XI GSX Release 1.6.3 28/02/85 Monochrome 800 x 400. !@A` a  !@A`"a"%%((++..22 5!5@8A8`;a;>>AADDGGKK N!N@QAQ`TaTWWZZ]]``dd g!g@jAj`mamppssvvyy}} !@A`a !@A㐞!O!u!!R}HKpqY zZ>Z>Z>Z>㐞$Gk@d5Wy Ab=[y $@Zu !8Ndy!1@O]kx, 㐞dDD""DD""DD""DD""""DD""DD""DD""DDBB$$$$BB㐞BB$$$$BBUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU    DDDDDDDDUUUUUUUUUUUUUUUUUU""UUUU""UUUU""UUUU""UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU3333333333333333㐞 &,23456789:;<=>?@ABCDEFGHIJKLMSYeu !.:GKQUaqz")/5?FMRW\`cfpz"+17=INV\dip 0 0 ".=3݈3=ӈ !#&$&TV &@Fdb/'0AB36EU%$AQRBAP&6ED0R46NG1406UQc06c / cEF6EA0& @6ED@A6ED3BA03C 㐞&0AB3F3BA06EFD6ED3BA0#0AE63D%$"!%$!" 06BDC7FE4$"! PWfcR2#$5Ud&D@C6ED3BA03E60A6EA0@F#F#E60AC#C@F0 &60AFF@@$F@A@F6EA06ED306EA06ED3@0AB36EF &0AF BF"@FEF@A$ $FFE@7?A@7?/&DT6@C40A0AC4A04CFA04CA04CB %6FUCA04CO>4C@ #%&FECO>40 &#4C@4C@4CA0㐞0AC4A04CDN40A24CD&!0@Q0AD@ BD"@DD@0ADO>D@@24F #%'1C5'FgM㐞Z>N㐞LIST 10PAGE=&C00 20CHAIN "1.2002" >))*3600)+(VAL(MID$(TIME$,4,2))*60)+(VAL(RIGHT$(TIME$,2))))*100+ 0 2900 REM 2910 RETURN Z>N㐞LIST 10ONERRORGOTO290 20*TV255,1 30MODE7:VDU23;11;0;0;0; 40PRINTTAB(10,3)CHR$141;CHR$&86;CHR$157;CHR$&84;"Space Hi_Way ";CHR$156 50PRINTTAB(10,4)CHR$141;CHR$&86;CHR$157;CHR$&84;"Space Hi_Way ";CHR$156 60PRINTTAB(6,8)CHR$141;CHR$&81;"Copyright (c) Amcom 1983" 70PRINTTAB(6,9)CHR$141;CHR$&81;"Copyright (c) Amcom 1983" 80PRINTTAB(6,13)CHR$141;CHR$&86;CHR$157;CHR$&84;"Written by Mat Newman ";CHR$156 90PRINTTAB(6,14)CHR$141;CHR$&82;CHR$157;CHR$&84;"Written by Mat Newman ";CHR$156 㐞100PRINTTAB(1,17)CHR$141;CHR$&83;CHR$157;CHR$&84;"Ideas by Mat Newman & Dan Tench ";CHR$156 110PRINTTAB(1,18)CHR$141;CHR$&87;CHR$157;CHR$&84;"Ideas by Mat Newman & Dan Tench ";CHR$156 120PRINTTAB(2,20)CHR$&85;"Thanks also to:" 130PRINTTAB(18,21)CHR$&87;"Pete Gee" 140PRINTTAB(18,22)CHR$&87;"Chris Clare" 150PRINTTAB(18,23)CHR$&87;"'Eddie'" 160A%=INKEY(300) 170ENVELOPE1,1,-2,-1,-1,10,10,&64,127,&EC,-2,-4,127,&3C 180ENVELOPE2,1,&77,&9C,&47,10,10,&64,&14,0,0,-2,100,100 190ENVELOPE3,2,-4,-2,-1㐞 ,8,10,100,0,0,0,0,0,0 200ENVELOPE4,1,4,-2,4,20,10,30,&32,0,0,&EC,127,127 210MODE7:FORT%=0TO1:PRINTTAB(0,T%);CHR$&81+CHR$157+CHR$&86+CHR$141;SPC(10);"Space Hi-way":NEXT 220VDU28,0,24,39,2 230PROCBLURB 240IF INST=0 GOTO290 250PROCBGRND 260PROCLASA 270PROCFUELSHIP 280PROCKEYS 290*RUN 1.HIGH 300END 310DEFPROCBLURB 320CLS:PRINT'''''''" Do you want instructions ? (y/n)"; 330REPEATI=INSTR("YyNn",GET$):UNTILI 340IFI<3 INST=1 ELSE INST=0:PRINT" N" 350ENDPROC 360DEFPROCBGRND 370CL㐞S:PRINT''CHR$&83;"You are the owner of a nice little fuel"';CHR$&83;"station just off a large intergalactic":PRINT'CHR$&83;"Hi_way. Unfortunately the";CHR$&82;"aliens";CHR$&83;"who" 380PRINT'CHR$&83;"use the Hi-way don't wish to pay for":PRINT'CHR$&83;"the fuel that they need, and so are":PRINT'CHR$&83;"intent on stealing it!!!!!" 390PRINT'''" Your job is to stop them." 400PROCSB(&86):ENDPROC 410DEFPROCSB(COL%):PRINTTAB(2,22);CHR$COL%;"Press the space bar to continue...";:REPEATUNTILGET=32:ENDPR㐞OC 420DEFPROCLASA 430CLS:PRINT''CHR$&85;" You have at your control a"':PRINTCHR$&85;"doublesupersaturatedphotonplasmalaser"':PRINTCHR$&85;" -transientalblaster base!!" 440PRINT''''CHR$&85"This will explode if it hits an";CHR$&82;"alien":PRINT'CHR$&85;"or an";CHR$&82;"aliens'";CHR$&85;"bullet." 450PROCSB(&86):CLS 460PRINT''CHR$&86"It has the small problem (apart from":PRINT'CHR$&86"pronounciation) that the gun(!) takes a":PRINTCHR$&86;"short while to charge up, so the second" 470PRINTCHR$&8㐞6;"of two rapidly fired shots will be less":PRINTCHR$&86;"powerful than the first." 480PROCSB(&83):CLS:PRINT''CHR$&83"The power of your next shot is shown in":PRINTCHR$&83;"a bar chart just under your base." 490PRINT''CHR$&83;"If you shoot an";CHR$&82;"alien";CHR$&83;"with a weak"' 500PRINTCHR$&83;"shot then you will only slow it down,":PRINT'CHR$&83;"and will require more shots to finish":PRINT'CHR$&83;"it off (one powerful shot will kill it" 510PRINT'CHR$&83;"right away).":PROCSB(&84):CLS 520PRI㐞NT''CHR$&81;"The";CHR$&82;"aliens";CHR$&81;"go around the Hi-way in":PRINT'CHR$&81;"groups of eight. One group of eight" 530PRINT'CHR$&81;"is called a wave, and the game is in":PRINT'CHR$&81;"levels, which consist of varying"' 540PRINTCHR$&81;"numbers of waves (higher levels give":PRINT'CHR$&81;"more waves.)" 550PROCSB(&86):CLS:PRINT''CHR$&86;"You have three lives, with bonus lives":PRINT'CHR$&86;"given every 10,000 points." 560PRINT'CHR$&86;"There are three numbers in the top left":PRINTCHR$&86;"of㐞 the screen, e.g. "; 570PRINT;SPC(5);CHR$&81;"A":PRINT'SPC(27);CHR$&82;"B ";CHR$&83;"C"' 580PRINTCHR$&86;"where";CHR$&81;"A";CHR$&86;"is the number of lives,":PRINT'CHR$&82;"B";CHR$&86;"is the level number, and";CHR$&83;"C";CHR$&86;"is the" 590PRINT'CHR$&86;"number of waves left.":PRINT'CHR$&86;"The number in the top right of the":PRINT'CHR$&86;"screen is your score." 600PROCSB(&87):CLS 610PRINT''"If you are silly enough to let an";CHR$&82;"alien":PRINT'"land, then it will steal some of your":㐞PRINT'"fuel.The fuel, however, is radioactive" 620PRINT'"and so the";CHR$&82;"alien";CHR$&87;"mutates to a rocket(!)":PRINT'"It then flys up about } of the way ":PRINT'"to the Hi-way, and now the fun really" 630PRINT'"starts, as it will then home in on you!" 640PROCSB(&81):CLS 650PRINT''CHR$&81"This is where the auto repeat cannon":PRINT'CHR$&81;"comes in handy, as the mutants can be":PRINT'CHR$&81;"killed with any power shot." 660PROCSB(&87):ENDPROC 670DEFPROCFUELSHIP:CLS 680PRINT''CHR$&86;"D㐞ue to a small design fault in your":PRINT'CHR$&86;"ship, it will explode when you run out":PRINT'CHR$&86;"of fuel. Fuel is used up continually" 690PRINT'CHR$&86"but extra fuel is used when you fire.":PRINT'CHR$&86;"Your fuel supply is shown at the":PRINT'CHR$&86;"bottom of the screen in the form of" 700PRINT'CHR$&86;"barrels.":PROCSB(&82):CLS 710PRINT''CHR$&82;"You can replenish your fuel supply by":PRINT'CHR$&83;"catching fuel tankers, but to catch":PRINT'CHR$&82;"them you must first make them fall!!㐞" 720PRINT'CHR$&83;"This is done by shooting the two space":PRINT'CHR$&82;"tugs, one on either end of the fuel" 730PRINT'CHR$&83;"pod. The fuel pods are the";CHR$&86;"cyan";CHR$&83;"things":PRINT'CHR$&82;"with 'F' written on them." 740PROCSB(&81):ENDPROC 750DEFPROCKEYS:CLS 760PRINT''SPC(8);CHR$&84;CHR$157;CHR$&82;CHR$141;"Keys... ";CHR$156:PRINTSPC(8);CHR$&84;CHR$157;CHR$&82;CHR$141;"Keys... ";CHR$156 770PRINT''SPC(10);CHR$&86;"Left - 'Caps lock'":PRINT'SPC(10);CHR$&86;"Right - 'Ctrl'":㐞 PRINT'SPC(10);CHR$&86;"Fire - 'RETURN'" 780PRINT'SPC(10);CHR$&86;"Escape - 'ESCAPE' (returns":PRINT'SPC(10);CHR$&86;"to hi-score board.)" 790PRINT''CHR$&82;"To get auto repeat, hold down 'SHIFT'" 800PRINT'CHR$&82;"and 'RETURN' at the same time.":PROCSB(&88):ENDPROC > p60 REM 70 REM 80 REM 㐞LIST 0REM" SPITFIRE COMMAND (C) 1983 PETER JOHNSON 5 *L."2.S_FIRE" 7000 6*T. 7FORI%=0TO&AFFSTEP4:I%!&E00=I%!&7000:NEXT 10MACH=&E00:CODE%=MACH+200:DIMHI%(5),HI$(5):FORI%=1TO5:HI$(I%)="Superior":HI%(I%)=1000:NEXT 11*FX10,1 12*FX9,3 13*TV255 70FIN%=MACH+4:XP%=MACH+35:YP%=MACH+40:CONSTANT=MACH+68:SHIFTREG=MACH+73:SCORE%=MACH+132:SC1%=SCORE%+4:SC2%=SCORE%+5:SC3%=SCORE%+6:SC4%=SCORE%+7:SC5%=SCORE%+8:DAM%=MACH+142:D1%=DAM%+4:D2%=DAM%+5:D3%=DAM%+6 72 㐞DAPP%=MACH+110:DTIM%=MACH+111:DCROSS1%=MACH+112:DCROSS2%=MACH+113:DREC%=MACH+114:DNO%=MACH+115:DPDROP%=MACH+177:DPDRIFT%=MACH+178:JOY%=MACH+174 80ONERRORGOTO100 81*KEY10PAGE=&1900|MO.|MG.10|M 100 SWAVE%=0:SCR%=0:GOTO2000 200 VDU23,224,247,148,148,151,148,148,244,0, 23,225,190,170,170,170,170,170,170,0, 23,226,247,148,148,245,148,148,151,0, 23,227,188,32,32,184,160,160,188,0 210 VDU23,228,171,170,170,171,170,170,250,0, 23,229,210,82,82,210,82,82,76,0 220 VDU23,230,247,132,132,244,20,20,247,0, 2㐞3,231,189,37,37,37,37,37,189,0, 23,232,239,40,40,206,40,40,47,0, 23,233,240,128,128,224,128,128,240,0 230 MODE2:VDU23,1,0;0;0;0;:FORI%=0TO15:VDU19,I%,0;0;:NEXT:VDU29,0;96;:GCOL0,4 280 MOVE 300,100:MOVE250,100:FORI%=0TO27:READA,B:PLOT85,A,B:NEXT 290 DATA 250,500,200,500,350,750,300,750,450,850,400,850,580,900,540,915,640,905,640,930,700,900,740,915,830,850,880,850,930,750,980,750,1030,500,1080,500,980,100,1030,100 300DATA 1280,0,250,100,0,0,50,0,300,750,354,760,0,800,0,825 310 MOVE1280,800:MOVE 12㐞80,825:PLOT85,980,750:PLOT85,926,760:PLOT85,1280,0:PLOT85,1230,0:MOVE0,0:MOVE0,-96:PLOT85,1280,0:PLOT85,1280,-96:MOVE 540,100:MOVE540,150:PLOT85,740,100:PLOT85,740,150:DRAW 740,300:DRAW 540,300:DRAW 540,150 340GCOL0,1:FORR%=50TO60 STEP4:PROCCIRCLE(R%):NEXT:VDU5:GCOL0,2:MOVE324,15:PRINT"":MOVE618,15:PRINT"":MOVE912,15:PRINT"" 390 GCOL0,1:MOVE200,40:DRAW1100,40:DRAW1100,-80:DRAW200,-80:DRAW200,40 440 VDU23,224,0,0,1,1,15,1,0,0, 23,225,0,0,0,0,224,0,0,0, 23,226,0,1,3,1,63,3,1,0, 23,227,0,0,128,㐞0,248,128,0,0, 23,228,0,1,3,1,127,11,1,0, 23,229,0,0,128,0,252,160,0,0 450 VDU23,230,1,1,7,1,254,19,1,0, 23,231,0,0,192,0,254,144,0,0, 23,232,1,1,3,1,63,251,1,0, 23,233,0,128,0,63,248,192,128,0, 23,254,56,124,124,0,16,56,16,40 850 FORI%=0TO4:SC1%?I%=48:NEXT:FORI%=0TO15:READ A%:VDU19,I%,A%;0;:NEXT 851 DATA 6,1,7,0,0,7,1,4,0,1,1,11,9,1,7,0 900 FORI%=0TO4:I%?XP%=40+RND(20):I%?YP%=40+RND(20):NEXT:?CONSTANT=53:?(CONSTANT+1)=&71:?(CONSTANT+2)=&76:!SHIFTREG=RND:?D1%=49:?D2%=48:?D3%=48 920 ?DNO%=2+WAVE% D㐞IV 4:WAV%=WAVE% MOD 4:?DAPP%=220+WAV%*3:?DTIM%=253-WAV%:?DCROSS1%=7+WAV%*1.5:?DCROSS2%=?DCROSS1%*2:?DREC%=245+WAV%*1.5:?DPDROP%=34+WAV%*2:?DPDRIFT%=24-WAV%*3 1000 COLOUR131:COLOUR2:VDU4:PRINTTAB(15,30);WAVE%:VDU5:CALL CODE% 1010 IF ?FIN%=1 GOTO1200 ELSE IF ?FIN%=3 GOTO100 1100 GCOL3,9:PROCMESS:PROCTALK(178):FORI%=1TO7500:NEXT:PROCMESS2:WAVE%=WAVE%+1:PROCTALK(191):GOTO900 1200 VDU23,254,2,34,84,24,184,94,20,32, 18,0,3:FORI%=10TO1000 STEP80:SOUND0,2,5,1:SOUND0,0,0,1:MOVEI%+RND(60)+100,I%+RND(40):VDU254:NE㐞XT:VDU29,0;0;:GCOL0,9:FORI%=0TO1024STEP4:MOVE0,I%:DRAW1280,I%:NEXT 1900 SCR%=0:FORI%=0TO4:SCR%=SCR%+(?(SCORE%+8-I%)-48)*10^I%:NEXT 2000 MODE7:VDU23,1,0;0;0;0;:PROCHEADER:PRINTTAB(11,11);"TODAY'S ACES"'TAB(11);"TODAY'S ACES" 2001PRINTTAB(7,21)" " 2010 PS%=0:FORI%=1TO5:IF SCR%>HI%(I%) FORJ%=4TOI%STEP-1:HI%(J%+1)=HI%(J%):HI$(J%+1)=HI$(J%):NEXT:PS%=I%:HI%(I%)=SCR%:HI$(I%)="":I%=6:NEXTELSENEXT 2015 FORI%=1TO5:PRINTTAB(10,I%+13);CHR$(129+I%);HI%(I%);TAB(20,I%+13);HI$(I%):NEXT 201㐞9 PROCTUNE 2020*FX15,1 2025 IFPS%>0:PRINTTAB(12,21);"ENTER YOUR NAME ";TAB(19,PS%+13);:INPUTHI$(PS%):HI$(PS%)=LEFT$(HI$(PS%),8):PRINTTAB(19,PS%+13);"":FORI=1TO200 STEP8:SOUND1,-15,I,1:SOUND2,-15,I+32,1:SOUND3,-15,I+48,1:NEXT 2030 IFSWAVE%<1ORSWAVE%>6:PRINTTAB(11,21);"SELECT LEVEL 1]6":I%=GET:SWAVE%=I%-48:SOUND-1,I%,0,0:GOTO2030 2031 WAVE%=SWAVE% 2999 PRINTTAB(10,21);"PRESS SPACE OR FIRE" 3000 IF (ADVAL(0)AND1)=1 OR INKEY$(0)=" " THEN ?JOY%=ADVAL(0)AND1:RESTORE:GOTO200 ELSE 3000 8999 DEFPROCHEADER 㐞 9000 PRINTTAB(8)"SUPERIOR SOFTWARE'S";TAB(8)"SUPERIOR SOFTWARE'S"'"¢¢굠굠𠠠" 9010PRINT"" 9020PRINTTAB(8,23);"Author: Peter Johnson":ENDPROC 10000 DEFPROCCIRCLE(R%):LOCAL I%:FORI%=45TO360STEP45:PLOT69,64㐞0+R%*COS(RAD(I%)),225+R%*SIN(RAD(I%)):NEXT:ENDPROC 11000 DEFPROCMESS:A$=" WAVE "+STR$(WAVE%)+" DEFEATED!":B$=" WAVE "+STR$(WAVE%+1)+" IN RANGE!":M$=A$:MOVE0,600:PROCPLAN:M$=B$:MOVE0,500:PROCPLAN:ENDPROC 11010 DEFPROCMESS2:M$=B$:MOVE1216,500:PROCPLAN2:M$=A$:MOVE1216,600:PROCPLAN2:ENDPROC 11100DEFPROCPLAN:FORI%=0TO19:PRINTMID$(M$,I%,1);:VDU244,245,8,8:SOUND1,3,I%*10,1:SOUND2,3,I%*12,1:*FX19,0 11102VDU 244,245,8,8:NEXT:ENDPROC 11110DEFPROCPLAN2:FORI%=18TO0STEP-1:PRINTMID$(M$,I%,1);:VDU8,236,237,8,8:SOUND1,3,I㐞%*10,1:SOUND2,3,I%*12,1:*FX19,0 11112VDU 236,237,8,8,8:NEXT:ENDPROC 20000DEFPROCTUNE:RESTORE 20010:FORI%=0TO18:READ P%,D%:FORJ%=1TO3:SOUNDJ%,-15,P%,D%:SOUNDJ%,0,0,0:NEXT,:ENDPROC 20010DATA100,2,116,2,120,4,136,4,136,4,128,2,120,2,116,4,128,4,128,8,128,2,136,2,128,2,120,2,116,4,108,4,100,4,128,4,148,4 30000 DEFPROCTALK(J%):I%=WAVE%:PROCCONV:SOUND-1,J%,0,0:ENDPROC 30020DEFPROCCONV:S%=I%+48:IFI%=10S%=33ELSEIFI%=11S%=190ELSEIFI%=12S%=273ELSEIFI%>12SOUND-1,(144+(I%-12)*2),0,0:S%=135 30030SOUND-1,S%,0,0:ENDPROC >Z>N㐞LIST 10X=RND(-TIME):ONERRORGOTO240 20DIMSTMD 530,STPN 530,STA%(263,2),R(2,2),DMMD 5,DMPN 5,XVIEW%(255),YVIEW%(255) 50VDU23;10,32,0;0;0; 60*FX4,1 70*TV255 80*KEY0"P" 90*KEY1"Y" 100*KEY2"R" 110*KEY3"F" 120*KEY4"L" 130*KEY5"V" 140*KEY6"O" 150*KEY7"S" 160*KEY8"D" 170*KEY9"X" 180*FX200,2 190FORI%=0TO530:STMD?I%=I%?&6000:STPN?I%=I%?&6400:NEXT 240MODE7:PRINTTAB(27,23);CHR$(136);CHR$(134)"wait":VDU23;10,32,0;0;0; 250PP=0:YP=0:RP=0:XP%=0:PY%=0:ZP%=0:OMS%=0:ALIGNED%=TRUE:D㐞OCKED%=FALSE:CRASHED%=FALSE:VF1%=0:VF2%=0:PF%=FALSE:YF%=FALSE:RF%=FALSE:FF%=FALSE:LF%=FALSE:VF%=FALSE:OF%=FALSE:SF%=FALSE:DF%=FALSE 260DDF%=FALSE:XF%=FALSE:RRDF%=FALSE:PD%=0:YD%=0:RD%=0:FD%=0:LD%=0:VD%=0:PL%=0:YL%=0:RL%=0:FL%=0:LL%=0:VL%=0:OL%=0:DN%=0:RDF%=1:SIZ%=100000:PER%=2500 270RESTORE 280FORA%=0TO59:FORB%=0TO2:READSTA%(A%,B%):STA%(A%+60,B%)=STA%(A%,B%):NEXT, 320FORA%=60TO119:STA%(A%,1)=-STA%(A%,1):NEXT 350FORA%=120TO127:FORB%=0TO2:READSTA%(A%,B%):NEXT, 390FORA%=0TO127:FORB%=0TO2:STA%(A%+12㐞8,B%)=STA%(A%,B%):NEXT, 430FORA%=128TO255:STA%(A%,1)=-(STA%(A%,1)+350)-350:NEXT 460FORA%=256TO263:FORB%=0TO2:READSTA%(A%,B%):NEXT, 500FORA%=0TO5:READDMMD?A%:READDMPN?A%:NEXT 530CLS:VDU7,131,157,132,141:PRINT"2002":VDU131,157,132,141:PRINT"2002":VDU131,157,129:PRINT"SIMULATOR DEGREES OF DIFFICULTY":VDU131,157:PRINT 540VDU132,157,135:PRINT"LEVEL ORION 4 STATUS":VDU132,157:PRINT:VDU132,157,134:PRINT" 1"CHR$(131)" WITHIN THE APPROACH CORRIDOR":VDU132,157,131:PRINTTAB(7)"ON AXIS AND STABLE":VD㐞U132,157:PRINT 550VDU132,157,134:PRINT" 2"CHR$(131)" ON AXIS AND APPROACHING":VDU132,157,131:PRINTTAB(7)"FROM 6,000 FEET : ROLLING":VDU132,157:PRINT:VDU132,157,134:PRINT" 3"CHR$(131)" OFF AXIS AND PASSING" 560VDU132,157,131:PRINTTAB(7)"AT 10,000 FEET : PITCHING":VDU132,157:PRINT:VDU132,157,134:PRINT" 4"CHR$(131)" REALISTIC MISSION APPROACH":VDU132,157,131:PRINTTAB(7)"FROM 20,000 FEET : ROLLING":VDU132,157:PRINT 570VDU132,157,134:PRINT" 5"CHR$(131)" TUMBLING AT 50,000 FEET":VDU132,157:PRINT㐞:VDU132,157,134:PRINT" 6"CHR$(131)" CRASHING WITH HUD AND STATUS":VDU132,157,131:PRINTTAB(7)"SCREEN INOPERATIVE" 580VDU129,157,135,136:PRINT:VDU129,157,135,136:PRINT" SELECT LEVEL (1-6)? ";:VDU23;10,32,0;0;0; 590DL%=GET:IFDL%<49 ORDL%>54 GOTO590 600VDU7:DL%=DL%-48:PRINTTAB(7,23)" LEVEL ";DL%;" SELECTED - WAIT" 610ONDL%GOTO620,630,640,650,660,670 620PROCTF(0,-1450+RND(250),0,0,-PI/2,0,TRUE,0,0,PI,0,0,0,0,0,0,200,150,FALSE,FALSE,295200):GOTO680 630PROCTF(0,-6000,0,0,-PI/2,0,FALSE,0,0,0,0㐞 ,0,-.1+RND(20)/99,180+RND(50),0,0,800,250,FALSE,FALSE,254400):GOTO680 640PROCTF(7000,-4000,-7000+RND(500),PI/4,0,0,TRUE,0,-.3,0,-.1+RND(20)/99,0,0,200+RND(99),150,0,1500,1000,FALSE,FALSE,214200):GOTO680 650PROCTF(13000+RND(999),-2000+RND(4000),-14000,.7+RND(1)/5,0,0,TRUE,0,.01,0,0,0,-.1+RND(20)/99,300+RND(99),270,-70,1600,1800,TRUE,FALSE,165000):GOTO680 660PROCTF(0,50000,0,0,PI/2,0,FALSE,0,0,0,(RND(1)-.5)/3,(RND(1)-.5)/3,.2,500+RND(99),700+RND(99),300+RND(99),2000,3500,TRUE,FALSE,165000):GOTO680 670㐞PROCTF(1200,1200,1200,-PI/4,PI/5,0,TRUE,0,0,1,0,0,0,140,0,0,6300,350,TRUE,TRUE,0) 680MODE4:PRINTTAB(12,12)"Stand by for the"TAB(12,14)"view from ORION's"TAB(13,16)"cockpit window" 690VDU23;10,32,0;0;0; 700TV=SQR(XV^2+YV^2+ZV^2):TR=SQR(STA%(260,0)^2+STA%(260,1)^2+STA%(260,2)^2) 710T1%=TIME 720REPEAT 730PROCIP 740PROCFAR 750PROCCA 760PROCVT 770PROCVR 780TV=SQR(XV^2+YV^2+ZV^2):TR=SQR(STA%(260,0)^2+STA%(260,1)^2+STA%(260,2)^2):T2%=TIME-T1%+T3%:LATMISS=FNANG(1):VERTMISS=FNANG(2) 790IFVF1%㐞=0 ANDVF2%=1 VF2%=0:PROCW1:MODE4:VDU23;10,32,0;0;0;:PROCW2:GOTO830 800IFVF1%=0 ANDVF2%=0 PROCW1:PROCW2 810IFVF1%=1 ANDVF2%=0 VF2%=1:MODE7 820IFVF1%=1 ANDVF2%=1 PROCST 830PROCTST 840PROCDT 850UNTILNOTALIGNED%ORDOCKED%ORCRASHED% 860MODE7 870IFNOTALIGNED%PRINTTAB(5,10)CHR$(130)"YOU CANNOT APPROACH TO LESS"TAB(4,12)CHR$(130)"THAN"CHR$(129)"1500 FEET"CHR$(130)"UNLESS ALIGNED"TAB(2,14)CHR$(130)"WITH THE"CHR$(132)"DOCKING APPROACH CORRIDOR":SOUND1,1,4,40:GOTO900 880IFDOCKED%PRINTTAB(9,10)CHR$(141㐞)CHR$(129)"CONGRATULATIONS"TAB(9,11)CHR$(141)CHR$(129)"CONGRATULATIONS"TAB(2,14)CHR$(130)"YOU HAVE SUCCESSFULLY"CHR$(132)"SOFT"CHR$(130)"DOCKED":PROCDOCK:GOTO900 890IFCRASHED%PRINTTAB(14,10)CHR$(131)"HARD LINES"TAB(9,16)CHR$(133)"SOFT DOCK NOT ACHIEVED":SOUND1,-15,1,40 900PRINTTAB(14,22)"Another run?"; 910ONINSTR("YyNn",GET$)GOTO240,240,920,920ELSE910 920MODE7:PRINTTAB(10,12)"END OF SIMULATION"TAB(0,20) 930GOTO930 940DEFPROCIP 950REPEAT 960K%=INKEY(0) 970IFK%=80THENPF%=TRUE:K%=INKEY(0):IFK㐞%=138ORK%=139THENPD%=2*(138.5-K%):K%=INKEY(0):IFK%>47ANDK%<58THENPL%=K%-48 980IFK%=89THENYF%=TRUE:K%=INKEY(0):IFK%=136ORK%=137THENYD%=2*(K%-136.5):K%=INKEY(0):IFK%>47ANDK%<58THENYL%=K%-48 990IFK%=82THENRF%=TRUE:K%=INKEY(0):IFK%=136ORK%=137THENRD%=2*(136.5-K%):K%=INKEY(0):IFK%>47ANDK%<58THENRL%=K%-48 1000IFK%=70THENFF%=TRUE:K%=INKEY(0):IFK%=138ORK%=139THENFD%=2*(K%-138.5):K%=INKEY(0):IFK%>47ANDK%<58THENFL%=K%-48 1010IFK%=76THENLF%=TRUE:K%=INKEY(0):IFK%=136ORK%=137THENLD%=2*(K%-136.5):K%=INKEY(0):IFK%>4㐞7ANDK%<58THENLL%=K%-48 1020IFK%=86THENVF%=TRUE:K%=INKEY(0):IFK%=138ORK%=139THENVD%=2*(K%-138.5):K%=INKEY(0):IFK%>47ANDK%<58THENVL%=K%-48 1030IFK%=79THENOF%=TRUE:K%=INKEY(0):IFK%>47ANDK%<58THENOL%=K%-48 1040IFK%=83THENSF%=TRUE 1050IFK%=68THENDF%=TRUE:K%=INKEY(0):IFK%>47ANDK%<58THENDN%=K%-48 1060IFK%=88THENXF%=TRUE 1070IFK%=81THENRRDF%=TRUE 1080UNTILK%=-1 1090*FX15,1 1100IFRRDF%ANDRDF%=0THENRDF%=1:RRDF%=FALSE 1110IFRRDF%ANDRDF%=1THENRDF%=0:RRDF%=FALSE 1120IFPF%THENPP=PD%*PL%/58:PF%=FALSE 1130IFYF%㐞THENYP=YD%*YL%/58:YF%=FALSE 1140IFRF%THENRP=RD%*RL%/58:RF%=FALSE 1150IFFF%THENXP%=FD%*FL%:FF%=FALSE 1160IFLF%THENPY%=LD%*LL%:LF%=FALSE 1170IFVF%THENZP%=VD%*VL%:VF%=FALSE 1180IFOF%THENOMS%=OL%*50:OF%=FALSE 1190IFSF%ANDVF1%=0 VF1%=1:SF%=FALSE 1200IFSF%ANDVF1%=1 VF1%=0:SF%=FALSE 1210IFNAF% VF1%=0 1220IFDF%ANDDN%>0THENDDF%=TRUE:DF%=FALSE 1230IFDF%ANDDN%=0THENDDF%=FALSE:DF%=FALSE 1240IFNAF% DDF%=FALSE 1250IFXF2%GOTO1270 1260IFXF%AND(TV>100 ORSQR(PR^2+YR^2+RR^2)>0.17)THENXF%=FALSE:PR=0:YR=0:RR=0:XV=0㐞:YV=0:ZV=0:PL%=0:YL%=0:RL%=0:FL%=0:LL%=0:VL%=0:OL%=0:VF1%=1:PP=0:YP=0:RP=0:XP%=0:PY%=0:ZP%=0:OMS%=0:TV=0 1270SOUND1,-15,255,2:SOUND0,-10,1,1 1280IFTR<1800 ANDTR>1500 SOUND2,3,100,70:ENDPROC 1290IFMANF<100 OROMSF%<50 SOUND2,4,70,50:ENDPROC 1300IFRDF%=1 THENSOUND&1002,0,0,TR/100:SOUND&1003,0,0,TR/100:SOUND2,1,120,15:SOUND3,1,125,15 1310ENDPROC 1320DEFPROCFAR 1330PR=PR+PP:YR=YR+YP:RR=RR+RP 1340MANF=MANF-ABS(XP%)-ABS(PY%)-ABS(ZP%)-10*ABS(PP)-10*ABS(YP)-10*ABS(RP) 1350IFMANF<=0THENMANF=0:PP=0:YP=0:RP=0:㐞XP%=0:PY%=0:ZP%=0 1360IFOMSF%<=0THENOMSF%=0:OMS%=0 1370IFOMSF%>OMS%THENOMSF%=OMSF%-OMS%ELSEOMS%=OMSF%:OMSF%=0 1380ENDPROC 1390DEFPROCVR 1400XV=XV+XP%+OMS%:YV=YV+PY%:ZV=ZV+ZP% 1410ENDPROC 1420DEFPROCCA:SP=SIN(PR):CP=COS(PR):SR=SIN(RR):CR=COS(RR):SY=SIN(YR):CY=COS(YR):R(0,0)=CY*CP:R(0,1)=SY*CP:R(0,2)=-SP:R(1,0)=-SY*CR+CY*SP*SR:R(1,1)=CY*CR+SY*SP*SR:R(1,2)=CP*SR:R(2,0)=CY*SP*CR+SY*SR:R(2,1)=SY*SP*CR-SR*CY:R(2,2)=CP*CR:ENDPROC 1460DEFPROCVT 1470LOCALX,Y,Z 1480X=XV*R(0,0)+YV*R(0,1)+ZV*R(0,2):Y=XV*R(1,0㐞 )+YV*R(1,1)+ZV*R(1,2):Z=XV*R(2,0)+YV*R(2,1)+ZV*R(2,2):XV=X:YV=Y:ZV=Z 1490ENDPROC 1500DEFPROCDT 1510LOCALX,Y,Z 1520FORA%=0TO263:X=STA%(A%,0)*R(0,0)+STA%(A%,1)*R(0,1)+STA%(A%,2)*R(0,2):Y=STA%(A%,0)*R(1,0)+STA%(A%,1)*R(1,1)+STA%(A%,2)*R(1,2):Z=STA%(A%,0)*R(2,0)+STA%(A%,1)*R(2,1)+STA%(A%,2)*R(2,2):STA%(A%,0)=X-XV:STA%(A%,1)=Y-YV:STA%(A%,2)=Z-ZV:NEXT 1550ENDPROC 1560DEFPROCTST 1570LOCALX,Y,Z,A,B 1580IFTR>1500 THEN ALIGNED%=TRUE:ENDPROC 1590IFTRSTA%(260,0)ANDABS(STA%(256,2)-STA%(257,2))<18 ANDSTA%(258,2)>STA%(260,2)THENDOCKED%=TRUE ELSEDOCKED%=FALSE 1630IFX<288 ANDNOTDOCKED%THENCRASHED%=TRUE ELSECRASHED%=FALSE 1640ENDPROC 1650DEFPROCW1 16㐞60NEG%=FALSE 1670FORJ%=0TO255 1680IFSTA%(J%,0)<1 NEG%=TRUE:GOTO1710 1690XVIEW%(J%)=PER%*STA%(J%,1)/STA%(J%,0) 1700YVIEW%(J%)=PER%*STA%(J%,2)/STA%(J%,0) 1710NEXT 1720ENDPROC 1730DEFPROCW2 1740VDU26,28,0,31,39,27,24,0;160;1279;1023;29,640;600; 1750PRINTTAB(0,0)STRING$(40,"-") 1760PRINTTAB(0,1)CHR$(224);"P ";CHR$(224);"Y ";CHR$(224);"R RANGE VEL ACSF" 1770IFNOTDDF%PRINTTAB(33,1)"OMSF"ELSEPRINTTAB(33,1)"HUD " 1780@%=&2000A 1790PRINTTAB(0,3);DEG(-PR);" ";TAB(5,3)DEG(YR);" ";TAB(10,3)DEG(-RR)㐞" ";TAB(15,3)TR;" ";TAB(22,3)TV;" ";TAB(27,3)MANF;" " 1800IFDDF%PRINTTAB(33,3);DN%*100;" "ELSEIFOMSF%>0 PRINTTAB(33,3);OMSF%;" "ELSEPRINTTAB(33,3);"0. " 1810IFALIGNED%ANDTR<1500 THENPROCDRAW(240)ELSEPROCDRAW(530) 1820ENDPROC 1830DEFPROCDRAW(B%) 1840LOCALD%:CLG 1850IFDDF%THENPROCDATUM 1860IFNEG%ENDPROC 1870FORD%=0TOB% 1880VDU25,STMD?D%,XVIEW%(STPN?D%);YVIEW%(STPN?D%); 1890NEXT 1900FORA%=0TO5 1910VDU25,DMMD?A%,PER%*STA%(DMPN?A%+256,1)/STA%(DMPN?A%+256,0);PER%*STA%(DMPN?A%+256,2)/STA%(DMPN?A%+256㐞,0); 1920NEXT 1930ENDPROC 1940DEFPROCDATUM 1950MOVE-320,0:DRAW320,0:MOVE0,-320:DRAW0,320:MOVE-50,-320:DRAW50,-320:MOVE-480,-400:DRAW-480,-420:DRAW480,-420:DRAW480,-400:MOVE0,-420:DRAW0,-400:MOVE-540,400:DRAW-560,400:DRAW-560,-400:DRAW-540,-400:MOVE-560,0:DRAW-540,0 1960IFSTA%(260,0)>0 THENMOVE0,0:DRAWPER%*STA%(260,1)/STA%(260,0),PER%*STA%(260,2)/STA%(260,0) 1970IFXV>-0.1 THENMOVE0,0:PLOT21,320*YV/(DN%*100),320*ZV/(DN%*100):PLOT0,-2*SIZ%/TR,0:PLOT1,4*SIZ%/TR,0:PLOT0,-2*SIZ%/TR,0:PLOT1,0,SIZ%/TR:MOVE-50㐞,320*XV/(DN%*100)-325:PLOT1,100,0:PLOT1,0,10:PLOT1,-100,0:PLOT1,0,-10 1980MOVE480*STA%(260,1)/(DN%*100)-10,-440:PLOT1,10,20:PLOT1,10,-20:MOVE-580,400*STA%(260,2)/(DN%*100)+10:PLOT1,20,-10:PLOT1,-20,-10:MOVE320*YV/(XV+0.01)+20,320*ZV/(XV+0.01):PLOT1,-20,20:PLOT81,0,-40:PLOT81,-20,20 1990IFSTA%(263,0)>0 THENMOVEPER%*STA%(263,1)/STA%(263,0)+10,PER%*STA%(263,2)/STA%(263,0)+10:PLOT1,-20,-20:PLOT0,0,20:PLOT1,20,-20 2002VDU24,-540;-400;639;423; 2010ENDPROC 2020DEFPROCST 2030VDU30,23;10,32,0;0;0;:@%=&2030A 2㐞040VDU130,157,135:PRINT"Nav.Computer ";TIME*1.001;TAB(30)"*****" 2050VDU130,157:PRINT 2060VDU130,157,132:PRINTTAB(10)"ORION 4 STATUS" 2070VDU130,157:PRINT 2080VDU130,157,132:PRINTTAB(1)"ASCENT PHASE : FINAL RENDEZVOUS" 2090VDU130,157:PRINT 2100VDU133,157,135:PRINT"ATT. RATES D/S"TAB(17)"VELOCITIES FT/S" 2110@%=&2000A 2120VDU133,157,135:PRINT"PITCH = ";DEG(-PR);" ";TAB(17)"FORWARD = ";XV;" " 2130VDU133,157,135:PRINT"YAW = ";DEG(YR);" ";TAB(17)"LATERAL = ";YV;" " 2140VDU133,157,135:PRINT"ROL㐞L = ";DEG(-RR);" ";TAB(17)"VERTICAL = ";ZV;" " 2150VDU133,157,135:PRINTTAB(17)"TOTAL = ";TV;" " 2160VDU132,157,131:PRINTTAB(10)"THRUST LEVELS" 2170VDU132,157,135:PRINT"PITCH = ";-PP*58;" ";TAB(17)"FORWARD = ";XP%;" " 2180VDU132,157,135:PRINT"YAW = ";YP*58;" ";TAB(17)"LATERAL = ";PY%;" " 2190VDU132,157,135:PRINT"ROLL = ";-RP*58;" ";TAB(17)"VERTICAL = ";ZP%;" " 2200VDU132,157,135:PRINTTAB(1)"ORBIT MANOUVERING SYSTEM = ";OL%;" " 2210VDU129,157,131:PRINTTAB(9)"FUEL LEVELS LBS" 2220VDU129,157㐞,135:PRINT"ACS FUEL = ";MANF;" ";TAB(18)"OMS FUEL = ";OMSF%;" " 2230VDU131,157,132:PRINT"DISTANCE TO PRIMARY DOCKING PORT FT" 2240VDU131,157,129:PRINT"FORWARD = ";STA%(260,0);" " 2250VDU131,157,129:PRINT"LATERAL = ";STA%(260,1);" ";TAB(20)"TOTAL" 2260VDU131,157,129:PRINT"VERTICAL = ";STA%(260,2);" ";TAB(20)"RANGE = ";TR;" " 2270VDU133,157,135:PRINT"PRIMARY PORT MISALIGNMENT DEG" 2280VDU133,157,135:PRINT"LATERAL = ";DEG(LATMISS);" ";TAB(18)"VERTICAL = ";DEG(VERTMISS);" " 2290VDU130,157,132:PRI㐞 NT"FLIGHT TIME FROM LAUNCH T+";T2%DIV6000;CHR$(8);"M ";T2%MOD6000/100;CHR$(8);"S "TAB(0,0) 2300ENDPROC 2310DEFPROCTF(A%,B%,C%,D,E,F,G%,H,I,J,K,L,M,N%,O%,P%,Q%,R%,S%,T%,U%) 2320FORV%=0TO263:STA%(V%,0)=STA%(V%,0)+A%:STA%(V%,1)=STA%(V%,1)+B%:STA%(V%,2)=STA%(V%,2)+C%:NEXT 2350PR=D:YR=E:RR=F:XV=0:YV=0:ZV=0:PROCCA:PROCDT:IFNOTG%GOTO2400 2380PR=H:YR=I:RR=J:PROCCA:PROCDT 2400PR=K:YR=L:RR=M:XV=N%:YV=O%:ZV=P%:MANF=Q%:OMSF%=R%:XF2%=S%:NAF%=T%:T3%=U% 2410ENDPROC 2420DEFFNANG(AX%) 2430LOCALA1,A2,D%,AT 2440A1=A㐞TN(STA%(260,AX%)/STA%(260,0)) 2450IFSTA%(260,0)<0 A1=A1+PI 2460D%=STA%(261,0)-STA%(260,0) 2470A2=ATN((STA%(261,AX%)-STA%(260,AX%))/D%) 2480IFD%<0 A2=A2+PI 2490AT=A1-A2 2500IFAT>PI AT=AT-2*PI:GOTO2500 2510IFAT<-PI AT=AT+2*PI:GOTO2510 2520=AT 2530DEFPROCDOCK:PRINTTAB(6,16)"Docking time was T+";T2%DIV6000;CHR$(8);"M ";T2%MOD6000/100;CHR$(8);"S ":SOUND1,2,0,220:ENDPROC 2540DATA150,130,60,-150,130,60,-150,130,-60,150,130,-60,75,130,180,-75,130,180,-180,130,75,-180,130,-75,-75,130,-180,75,130,-180,180,1㐞30,-75,180,130,75,50,50,180,-50,50,180,-50,50,660,50,50,660,-180,50,50,-180,50,-50,-660,50,-50,-660,50 2550DATA50,-50,50,-180,50,50,-180,50,50,-660,-50,50,-660 2560DATA180,50,-50,180,50,50,660,50,50,660,50,-50,130,110,660,-130,110,660,-370,110,560,-560,110,370,-660,110,130,-660,110,-130,-560,110,-370,-370,110,-560,-130,110,-660,130,110,-660,370,110,-560,560,110,-370 2570DATA660,110,-130,660,110,130,560,110,370,370,110,560,160,110,800,-160,110,800,-450,110,680,-680,110,450,-800,110,160,-800,110,-160,-680,㐞110,-450,-450,110,-680,-160,110,-800,160,110,-800,450,110,-680,680,110,-450,800,110,-160,800,110 2580DATA160,680,110,450,450,110,680,40,-240,100,-40,-240,100,-100,-240,40,-100,-240,-40,-40,-240,-100,40,-240,-100,100,-240,-40,100,-240,40,-100,0,0,100,0,0,0,0,-40,0,-100,-40,0,0,0,0,-350,0,0,-100,0,0,1150,0 2590DATA4,0,5,1,4,2,5,4,5,6,5,3 >Z>N㐞LIST 10X=RND(-TIME):ONERRORGOTO240 20DIMSTMD 530,STPN 530,STA%(263,2),R(2,2),DMMD 5,DMPN 5,XVIEW%(255),YVIEW%(255) 50VDU23;10,32,0;0;0; 60*FX4,1 70*TV255 80*KEY0"P" 90*KEY1"Y" 100*KEY2"R" 110*KEY3"F" 120*KEY4"L" 130*KEY5"V" 140*KEY6"O" 150*KEY7"S" 160*KEY8"D" 170*KEY9"X" 180*FX200,2 190FORI%=0TO530:STMD?I%=I%?&6000:STPN?I%=I%?&6400:NEXT 240MODE7:PRINTTAB(27,23);CHR$(136);CHR$(134)"wait":VDU23;10,32,0;0;0; 250PP=0:YP=0:RP=0:XP%=0:PY%=0:ZP%=0:OMS㐞%=0:ALIGNED%=TRUE:DOCKED%=FALSE:CRASHED%=FALSE:VF1%=0:VF2%=0:PF%=FALSE:YF%=FALSE:RF%=FALSE:FF%=FALSE:LF%=FALSE:VF%=FALSE:OF%=FALSE:SF%=FALSE:DF%=FALSE 260DDF%=FALSE:XF%=FALSE:RRDF%=FALSE:PD%=0:YD%=0:RD%=0:FD%=0:LD%=0:VD%=0:PL%=0:YL%=0:RL%=0:FL%=0:LL%=0:VL%=0:OL%=0:DN%=0:RDF%=1:SIZ%=100000:PER%=2500 270RESTORE 280FORA%=0TO59:FORB%=0TO2:READSTA%(A%,B%):STA%(A%+60,B%)=STA%(A%,B%):NEXT, 320FORA%=60TO119:STA%(A%,1)=-STA%(A%,1):NEXT 350FORA%=120TO127:FORB%=0TO2:READSTA%(A%,B%):NEXT, 390FORA%=0T㐞O127:FORB%=0TO2:STA%(A%+128,B%)=STA%(A%,B%):NEXT, 430FORA%=128TO255:STA%(A%,1)=-(STA%(A%,1)+350)-350:NEXT 460FORA%=256TO263:FORB%=0TO2:READSTA%(A%,B%):NEXT, 500 FOR A%=0 TO 5 510 READ DMMD?A% 520 READ DMPN?A% 525 NEXT 530 CLS : VDU7,131,157,132,141 : PRINT"2002" : VDU131,157,132,141 : PRINT"2002" : VDU131,157,129 : PRINT"SIMULATOR DEGREES OF DIFFICULTY" : VDU131,157 : PRINT 540VDU132,157,135:PRINT"LEVEL ORION 4 STATUS":VDU132,157:PRINT:VDU132,157,134:PRINT" 1"CHR$(131)" WITHIN 㐞THE APPROACH CORRIDOR":VDU132,157,131:PRINTTAB(7)"ON AXIS AND STABLE":VDU132,157:PRINT 550VDU132,157,134:PRINT" 2"CHR$(131)" ON AXIS AND APPROACHING":VDU132,157,131:PRINTTAB(7)"FROM 6,000 FEET : ROLLING":VDU132,157:PRINT:VDU132,157,134:PRINT" 3"CHR$(131)" OFF AXIS AND PASSING" 560VDU132,157,131:PRINTTAB(7)"AT 10,000 FEET : PITCHING":VDU132,157:PRINT:VDU132,157,134:PRINT" 4"CHR$(131)" REALISTIC MISSION APPROACH":VDU132,157,131:PRINTTAB(7)"FROM 20,000 FEET : ROLLING":VDU132,157:PRINT 570VDU1㐞 32,157,134:PRINT" 5"CHR$(131)" TUMBLING AT 50,000 FEET":VDU132,157:PRINT:VDU132,157,134:PRINT" 6"CHR$(131)" CRASHING WITH HUD AND STATUS":VDU132,157,131:PRINTTAB(7)"SCREEN INOPERATIVE" 580VDU129,157,135,136:PRINT:VDU129,157,135,136:PRINT" SELECT LEVEL (1-6)? ";:VDU23;10,32,0;0;0; 590DL%=GET:IFDL%<49 ORDL%>54 GOTO590 600VDU7:DL%=DL%-48:PRINTTAB(7,23)" LEVEL ";DL%;" SELECTED - WAIT" 610ONDL%GOTO620,630,640,650,660,670 620PROCTF(0,-1450+RND(250),0,0,-PI/2,0,TRUE,0,0,PI,0,0,0,0,0,0,2㐞00,150,FALSE,FALSE,295200):GOTO680 630PROCTF(0,-6000,0,0,-PI/2,0,FALSE,0,0,0,0,0,-.1+RND(20)/99,180+RND(50),0,0,800,250,FALSE,FALSE,254400):GOTO680 640PROCTF(7000,-4000,-7000+RND(500),PI/4,0,0,TRUE,0,-.3,0,-.1+RND(20)/99,0,0,200+RND(99),150,0,1500,1000,FALSE,FALSE,214200):GOTO680 650PROCTF(13000+RND(999),-2000+RND(4000),-14000,.7+RND(1)/5,0,0,TRUE,0,.01,0,0,0,-.1+RND(20)/99,300+RND(99),270,-70,1600,1800,TRUE,FALSE,165000):GOTO680 660PROCTF(0,50000,0,0,PI/2,0,FALSE,0,0,0,(RND(1)-.5)/3,(RND(1)-.5)㐞/3,.2,500+RND(99),700+RND(99),300+RND(99),2000,3500,TRUE,FALSE,165000):GOTO680 670PROCTF(1200,1200,1200,-PI/4,PI/5,0,TRUE,0,0,1,0,0,0,140,0,0,6300,350,TRUE,TRUE,0) 680MODE4:PRINTTAB(12,12)"Stand by for the"TAB(12,14)"view from ORION's"TAB(13,16)"cockpit window" 690VDU23;10,32,0;0;0; 700TV=SQR(XV^2+YV^2+ZV^2):TR=SQR(STA%(260,0)^2+STA%(260,1)^2+STA%(260,2)^2) 710T1%=TIME 720REPEAT 730PROCIP 740PROCFAR 750PROCCA 760PROCVT 770PROCVR 780TV=SQR(XV^2+YV^2+ZV^2):TR=SQR(STA%(260,0㐞)^2+STA%(260,1)^2+STA%(260,2)^2):T2%=TIME-T1%+T3%:LATMISS=FNANG(1):VERTMISS=FNANG(2) 790IFVF1%=0 ANDVF2%=1 VF2%=0:PROCW1:MODE4:VDU23;10,32,0;0;0;:PROCW2:GOTO830 800IFVF1%=0 ANDVF2%=0 PROCW1:PROCW2 810IFVF1%=1 ANDVF2%=0 VF2%=1:MODE7 820IFVF1%=1 ANDVF2%=1 PROCST 830PROCTST 840PROCDT 850UNTILNOTALIGNED%ORDOCKED%ORCRASHED% 860MODE7 870IFNOTALIGNED%PRINTTAB(5,10)CHR$(130)"YOU CANNOT APPROACH TO LESS"TAB(4,12)CHR$(130)"THAN"CHR$(129)"1500 FEET"CHR$(130)"UNLESS ALIGNED"TAB(2,14)CHR$(130)㐞"WITH THE"CHR$(132)"DOCKING APPROACH CORRIDOR":SOUND1,1,4,40:GOTO900 880IFDOCKED%PRINTTAB(9,10)CHR$(141)CHR$(129)"CONGRATULATIONS"TAB(9,11)CHR$(141)CHR$(129)"CONGRATULATIONS"TAB(2,14)CHR$(130)"YOU HAVE SUCCESSFULLY"CHR$(132)"SOFT"CHR$(130)"DOCKED":PROCDOCK:GOTO900 890IFCRASHED%PRINTTAB(14,10)CHR$(131)"HARD LINES"TAB(9,16)CHR$(133)"SOFT DOCK NOT ACHIEVED":SOUND1,-15,1,40 900PRINTTAB(14,22)"Another run?"; 910ONINSTR("YyNn",GET$)GOTO240,240,920,920ELSE910 920MODE7:PRINTTAB(10,12)"END OF SIMULATI㐞ON"TAB(0,20) 930GOTO930 940DEFPROCIP 950REPEAT 960K%=INKEY(0) 970IFK%=80THENPF%=TRUE:K%=INKEY(0):IFK%=138ORK%=139THENPD%=2*(138.5-K%):K%=INKEY(0):IFK%>47ANDK%<58THENPL%=K%-48 980IFK%=89THENYF%=TRUE:K%=INKEY(0):IFK%=136ORK%=137THENYD%=2*(K%-136.5):K%=INKEY(0):IFK%>47ANDK%<58THENYL%=K%-48 990IFK%=82THENRF%=TRUE:K%=INKEY(0):IFK%=136ORK%=137THENRD%=2*(136.5-K%):K%=INKEY(0):IFK%>47ANDK%<58THENRL%=K%-48 1000IFK%=70THENFF%=TRUE:K%=INKEY(0):IFK%=138ORK%=139THENFD%=2*(K%-138.5):K%=INKEY(0):IFK㐞%>47ANDK%<58THENFL%=K%-48 1010IFK%=76THENLF%=TRUE:K%=INKEY(0):IFK%=136ORK%=137THENLD%=2*(K%-136.5):K%=INKEY(0):IFK%>47ANDK%<58THENLL%=K%-48 1020IFK%=86THENVF%=TRUE:K%=INKEY(0):IFK%=138ORK%=139THENVD%=2*(K%-138.5):K%=INKEY(0):IFK%>47ANDK%<58THENVL%=K%-48 1030IFK%=79THENOF%=TRUE:K%=INKEY(0):IFK%>47ANDK%<58THENOL%=K%-48 1040IFK%=83THENSF%=TRUE 1050IFK%=68THENDF%=TRUE:K%=INKEY(0):IFK%>47ANDK%<58THENDN%=K%-48 1060IFK%=88THENXF%=TRUE 1070IFK%=81THENRRDF%=TRUE 1080UNTILK%=-1 1090*FX15,1 1100IFR㐞RDF%ANDRDF%=0THENRDF%=1:RRDF%=FALSE 1110IFRRDF%ANDRDF%=1THENRDF%=0:RRDF%=FALSE 1120IFPF%THENPP=PD%*PL%/58:PF%=FALSE 1130IFYF%THENYP=YD%*YL%/58:YF%=FALSE 1140IFRF%THENRP=RD%*RL%/58:RF%=FALSE 1150IFFF%THENXP%=FD%*FL%:FF%=FALSE 1160IFLF%THENPY%=LD%*LL%:LF%=FALSE 1170IFVF%THENZP%=VD%*VL%:VF%=FALSE 1180IFOF%THENOMS%=OL%*50:OF%=FALSE 1190IFSF%ANDVF1%=0 VF1%=1:SF%=FALSE 1200IFSF%ANDVF1%=1 VF1%=0:SF%=FALSE 1210IFNAF% VF1%=0 1220IFDF%ANDDN%>0THENDDF%=TRUE:DF%=FALSE 1230IFDF%ANDDN%=0THENDDF%㐞=FALSE:DF%=FALSE 1240IFNAF% DDF%=FALSE 1250IFXF2%GOTO1270 1260IFXF%AND(TV>100 ORSQR(PR^2+YR^2+RR^2)>0.17)THENXF%=FALSE:PR=0:YR=0:RR=0:XV=0:YV=0:ZV=0:PL%=0:YL%=0:RL%=0:FL%=0:LL%=0:VL%=0:OL%=0:VF1%=1:PP=0:YP=0:RP=0:XP%=0:PY%=0:ZP%=0:OMS%=0:TV=0 1270SOUND1,-15,255,2:SOUND0,-10,1,1 1280IFTR<1800 ANDTR>1500 SOUND2,3,100,70:ENDPROC 1290IFMANF<100 OROMSF%<50 SOUND2,4,70,50:ENDPROC 1300IFRDF%=1 THENSOUND&1002,0,0,TR/100:SOUND&1003,0,0,TR/100:SOUND2,1,120,15:SOUND3,1,125,15 1310ENDPROC 1320DEFPROCF㐞 AR 1330PR=PR+PP:YR=YR+YP:RR=RR+RP 1340MANF=MANF-ABS(XP%)-ABS(PY%)-ABS(ZP%)-10*ABS(PP)-10*ABS(YP)-10*ABS(RP) 1350IFMANF<=0THENMANF=0:PP=0:YP=0:RP=0:XP%=0:PY%=0:ZP%=0 1360IFOMSF%<=0THENOMSF%=0:OMS%=0 1370IFOMSF%>OMS%THENOMSF%=OMSF%-OMS%ELSEOMS%=OMSF%:OMSF%=0 1380ENDPROC 1390DEFPROCVR 1400XV=XV+XP%+OMS%:YV=YV+PY%:ZV=ZV+ZP% 1410ENDPROC 1420DEFPROCCA:SP=SIN(PR):CP=COS(PR):SR=SIN(RR):CR=COS(RR):SY=SIN(YR):CY=COS(YR):R(0,0)=CY*CP:R(0,1)=SY*CP:R(0,2)=-SP:R(1,0)=-SY*CR+CY*SP*SR:R(1,1)=CY*CR+SY*SP㐞 *SR:R(1,2)=CP*SR:R(2,0)=CY*SP*CR+SY*SR:R(2,1)=SY*SP*CR-SR*CY:R(2,2)=CP*CR:ENDPROC 1460DEFPROCVT 1470LOCALX,Y,Z 1480X=XV*R(0,0)+YV*R(0,1)+ZV*R(0,2):Y=XV*R(1,0)+YV*R(1,1)+ZV*R(1,2):Z=XV*R(2,0)+YV*R(2,1)+ZV*R(2,2):XV=X:YV=Y:ZV=Z 1490ENDPROC 1500DEFPROCDT 1510LOCALX,Y,Z 1520FORA%=0TO263:X=STA%(A%,0)*R(0,0)+STA%(A%,1)*R(0,1)+STA%(A%,2)*R(0,2):Y=STA%(A%,0)*R(1,0)+STA%(A%,1)*R(1,1)+STA%(A%,2)*R(1,2):Z=STA%(A%,0)*R(2,0)+STA%(A%,1)*R(2,1)+STA%(A%,2)*R(2,2):STA%(A%,0)=X-XV:STA%(A%,1)=Y-YV:STA%(A%,2)=Z-Z㐞 V:NEXT 1550ENDPROC 1560DEFPROCTST 1570LOCALX,Y,Z,A,B 1580IFTR>1500 THEN ALIGNED%=TRUE:ENDPROC 1590IFTRSTA%(260,0)ANDABS(STA%(256㐞 ,2)-STA%(257,2))<18 ANDSTA%(258,2)>STA%(260,2)THENDOCKED%=TRUE ELSEDOCKED%=FALSE 1630IFX<288 ANDNOTDOCKED%THENCRASHED%=TRUE ELSECRASHED%=FALSE 1640ENDPROC 1650DEFPROCW1 1660NEG%=FALSE 1670FORJ%=0TO255 1680IFSTA%(J%,0)<1 NEG%=TRUE:GOTO1710 1690XVIEW%(J%)=PER%*STA%(J%,1)/STA%(J%,0) 1700YVIEW%(J%)=PER%*STA%(J%,2)/STA%(J%,0) 1710NEXT 1720ENDPROC 1730DEFPROCW2 1740VDU26,28,0,31,39,27,24,0;160;1279;1023;29,640;600; 1750PRINTTAB(0,0)STRING$(40,"-") 1760PRINTTAB(0,1)CHR$(224);"P ";CHR$㐞 (224);"Y ";CHR$(224);"R RANGE VEL ACSF" 1770IFNOTDDF%PRINTTAB(33,1)"OMSF"ELSEPRINTTAB(33,1)"HUD " 1780@%=&2000A 1790PRINTTAB(0,3);DEG(-PR);" ";TAB(5,3)DEG(YR);" ";TAB(10,3)DEG(-RR)" ";TAB(15,3)TR;" ";TAB(22,3)TV;" ";TAB(27,3)MANF;" " 1800IFDDF%PRINTTAB(33,3);DN%*100;" "ELSEIFOMSF%>0 PRINTTAB(33,3);OMSF%;" "ELSEPRINTTAB(33,3);"0. " 1810IFALIGNED%ANDTR<1500 THENPROCDRAW(240)ELSEPROCDRAW(530) 1820ENDPROC 1830DEFPROCDRAW(B%) 1840LOCALD%:CLG 1850IFDDF%THENPROCDATUM 1860IFNEG%ENDPROC 㐞 1870FORD%=0TOB% 1880VDU25,STMD?D%,XVIEW%(STPN?D%);YVIEW%(STPN?D%); 1890NEXT 1900FORA%=0TO5 1910VDU25,DMMD?A%,PER%*STA%(DMPN?A%+256,1)/STA%(DMPN?A%+256,0);PER%*STA%(DMPN?A%+256,2)/STA%(DMPN?A%+256,0); 1920NEXT 1930ENDPROC 1940DEFPROCDATUM 1950MOVE-320,0:DRAW320,0:MOVE0,-320:DRAW0,320:MOVE-50,-320:DRAW50,-320:MOVE-480,-400:DRAW-480,-420:DRAW480,-420:DRAW480,-400:MOVE0,-420:DRAW0,-400:MOVE-540,400:DRAW-560,400:DRAW-560,-400:DRAW-540,-400:MOVE-560,0:DRAW-540,0 1960IFSTA%(260,0)>0 THENMOVE0,0:㐞 DRAWPER%*STA%(260,1)/STA%(260,0),PER%*STA%(260,2)/STA%(260,0) 1970IFXV>-0.1 THENMOVE0,0:PLOT21,320*YV/(DN%*100),320*ZV/(DN%*100):PLOT0,-2*SIZ%/TR,0:PLOT1,4*SIZ%/TR,0:PLOT0,-2*SIZ%/TR,0:PLOT1,0,SIZ%/TR:MOVE-50,320*XV/(DN%*100)-325:PLOT1,100,0:PLOT1,0,10:PLOT1,-100,0:PLOT1,0,-10 1980MOVE480*STA%(260,1)/(DN%*100)-10,-440:PLOT1,10,20:PLOT1,10,-20:MOVE-580,400*STA%(260,2)/(DN%*100)+10:PLOT1,20,-10:PLOT1,-20,-10:MOVE320*YV/(XV+0.01)+20,320*ZV/(XV+0.01):PLOT1,-20,20:PLOT81,0,-40:PLOT81,-20,20 1990IFSTA%(263,㐞 0)>0 THENMOVEPER%*STA%(263,1)/STA%(263,0)+10,PER%*STA%(263,2)/STA%(263,0)+10:PLOT1,-20,-20:PLOT0,0,20:PLOT1,20,-20 2002VDU24,-540;-400;639;423; 2010ENDPROC 2020DEFPROCST 2030VDU30,23;10,32,0;0;0;:@%=&2030A 2040VDU130,157,135:PRINT"Nav.Computer ";TIME*1.001;TAB(30)"*****" 2050VDU130,157:PRINT 2060VDU130,157,132:PRINTTAB(10)"ORION 4 STATUS" 2070VDU130,157:PRINT 2080VDU130,157,132:PRINTTAB(1)"ASCENT PHASE : FINAL RENDEZVOUS" 2090VDU130,157:PRINT 2100VDU133,157,135:PRINT"ATT. RATES D/S"TAB㐞 (17)"VELOCITIES FT/S" 2110@%=&2000A 2120VDU133,157,135:PRINT"PITCH = ";DEG(-PR);" ";TAB(17)"FORWARD = ";XV;" " 2130VDU133,157,135:PRINT"YAW = ";DEG(YR);" ";TAB(17)"LATERAL = ";YV;" " 2140VDU133,157,135:PRINT"ROLL = ";DEG(-RR);" ";TAB(17)"VERTICAL = ";ZV;" " 2150VDU133,157,135:PRINTTAB(17)"TOTAL = ";TV;" " 2160VDU132,157,131:PRINTTAB(10)"THRUST LEVELS" 2170VDU132,157,135:PRINT"PITCH = ";-PP*58;" ";TAB(17)"FORWARD = ";XP%;" " 2180VDU132,157,135:PRINT"YAW = ";YP*58;" ";TAB(17)㐞 "LATERAL = ";PY%;" " 2190VDU132,157,135:PRINT"ROLL = ";-RP*58;" ";TAB(17)"VERTICAL = ";ZP%;" " 2200VDU132,157,135:PRINTTAB(1)"ORBIT MANOUVERING SYSTEM = ";OL%;" " 2210VDU129,157,131:PRINTTAB(9)"FUEL LEVELS LBS" 2220VDU129,157,135:PRINT"ACS FUEL = ";MANF;" ";TAB(18)"OMS FUEL = ";OMSF%;" " 2230VDU131,157,132:PRINT"DISTANCE TO PRIMARY DOCKING PORT FT" 2240VDU131,157,129:PRINT"FORWARD = ";STA%(260,0);" " 2250VDU131,157,129:PRINT"LATERAL = ";STA%(260,1);" ";TAB(20)"TOTAL" 2260VDU131,157,129㐞 :PRINT"VERTICAL = ";STA%(260,2);" ";TAB(20)"RANGE = ";TR;" " 2270VDU133,157,135:PRINT"PRIMARY PORT MISALIGNMENT DEG" 2280VDU133,157,135:PRINT"LATERAL = ";DEG(LATMISS);" ";TAB(18)"VERTICAL = ";DEG(VERTMISS);" " 2290VDU130,157,132:PRINT"FLIGHT TIME FROM LAUNCH T+";T2%DIV6000;CHR$(8);"M ";T2%MOD6000/100;CHR$(8);"S "TAB(0,0) 2300ENDPROC 2310DEFPROCTF(A%,B%,C%,D,E,F,G%,H,I,J,K,L,M,N%,O%,P%,Q%,R%,S%,T%,U%) 2320FORV%=0TO263:STA%(V%,0)=STA%(V%,0)+A%:STA%(V%,1)=STA%(V%,1)+B%:STA%(V%,2)=STA%(V%,2)+C%:㐞 NEXT 2350PR=D:YR=E:RR=F:XV=0:YV=0:ZV=0:PROCCA:PROCDT:IFNOTG%GOTO2400 2380PR=H:YR=I:RR=J:PROCCA:PROCDT 2400PR=K:YR=L:RR=M:XV=N%:YV=O%:ZV=P%:MANF=Q%:OMSF%=R%:XF2%=S%:NAF%=T%:T3%=U% 2410ENDPROC 2420DEFFNANG(AX%) 2430LOCALA1,A2,D%,AT 2440A1=ATN(STA%(260,AX%)/STA%(260,0)) 2450IFSTA%(260,0)<0 A1=A1+PI 2460D%=STA%(261,0)-STA%(260,0) 2470A2=ATN((STA%(261,AX%)-STA%(260,AX%))/D%) 2480IFD%<0 A2=A2+PI 2490AT=A1-A2 2500IFAT>PI AT=AT-2*PI:GOTO2500 2510IFAT<-PI AT=AT+2*PI:GOTO2510 2520=AT 2㐞 530DEFPROCDOCK:PRINTTAB(6,16)"Docking time was T+";T2%DIV6000;CHR$(8);"M ";T2%MOD6000/100;CHR$(8);"S ":SOUND1,2,0,220:ENDPROC 2540DATA150,130,60,-150,130,60,-150,130,-60,150,130,-60,75,130,180,-75,130,180,-180,130,75,-180,130,-75,-75,130,-180,75,130,-180,180,130,-75,180,130,75,50,50,180,-50,50,180,-50,50,660,50,50,660,-180,50,50,-180,50,-50,-660,50,-50,-660,50 2550DATA50,-50,50,-180,50,50,-180,50,50,-660,-50,50,-660 2560DATA180,50,-50,180,50,50,660,50,50,660,50,-50,130,110,660,-130,110,660,-370,110,56㐞 0,-560,110,370,-660,110,130,-660,110,-130,-560,110,-370,-370,110,-560,-130,110,-660,130,110,-660,370,110,-560,560,110,-370 2570DATA660,110,-130,660,110,130,560,110,370,370,110,560,160,110,800,-160,110,800,-450,110,680,-680,110,450,-800,110,160,-800,110,-160,-680,110,-450,-450,110,-680,-160,110,-800,160,110,-800,450,110,-680,680,110,-450,800,110,-160,800,110 2580DATA160,680,110,450,450,110,680,40,-240,100,-40,-240,100,-100,-240,40,-100,-240,-40,-40,-240,-100,40,-240,-100,100,-240,-40,100,-240,40,-100,0,0㐞 ,100,0,0,0,0,-40,0,-100,-40,0,0,0,0,-350,0,0,-100,0,0,1150,0 2590DATA4,0,5,1,4,2,5,4,5,6,5,3 >FORWARD = ";XV;" " 2130VDU133,157,135:PRINT"YAW = ";DEG(YR);" ";TAB(17)"LATERAL = ";YV;" " 2140VDU133,157,135:PRINT"ROLL = ";DEG(-RR);" ";TAB(17)"VERTICAL = ";ZV;" " 2150VDU133,157,135:PRINTTAB(17)"TOTAL = ";TV;" " 2160VDU132,157,131:PRINTTAB(10)"THRUST LEVELS" 2170VDU132,157,135:PRINT"PITCH = ";-PP*58;" ";TAB(17)"FORWARD = ";XP%;" " 2180VDU132,157,135:PRINT"YAW = ";YP*58;" ";TAB(17)㐞 LIST 10REM BBC SOFTWARE 20 60 70MODE 1 80VDU 23;8202;0;0;0; 90F$ = "1.KNIGHT" 100PRINTTAB(12,1);"(STOP recorder)" 110PROCowl 120PROCframe 130PROCbeeb 140PROCsoft 150PROCblink 155PRINTTAB(12,1);" " 160PRINTTAB(12,30);"(START recorder)" 170PRINTTAB(12,31);"*loading chess*"; 208*OPT1,0 210 CHAINF$ 220END 230 240 250DEF PROCframe 260GCOL 0,1 270X1 = &1A0 280X2 = &360 290Y1 = &3A0 300Y2 = &60 310 320FOR X = X1 TO X2 STEP 4 330M㐞 OVE X,Y1 - &10 340DRAW X,Y1 350NEXT 360 370FOR Y = Y1 TO Y2 STEP -4 380MOVE X2 - &10,Y 390DRAW X2,Y 400NEXT 410 420FOR X = X2 TO X1 STEP -4 430MOVE X,Y2 + &10 440DRAW X,Y2 450NEXT 460 470FOR Y = Y2 TO Y1 STEP 4 480MOVE X1,Y 490DRAW X1 + &10,Y 500NEXT 510 520ENDPROC 530 540 550DEF PROCowl 560VDU 23,255,&3C00;&7E7E;&7E7E;&003C; 570VDU 29,&1C4;&140; 580VDU 5 590GCOL 0,2 600P = 0 610 620FOR Y = &190 TO 0 STEP -&14 630IF Y MOD &28 THEN X1 = &18 E㐞 LSE X1 = 0 640READ L$ 650N = 0 660 670FOR X = 0 TO &160 STEP &2C 680N = N + 1 690MOVE X + X1,Y 700IF VAL MID$(L$,N,1) THEN VDU 255 710NEXT 720 730SOUND 1,-15,P,1 740P = P + 4 750PROCwait(30) 760 770NEXT 780 790VDU 4 800VDU 29,0;0; 810 820DATA 111111111,100110010,101010101,011001100,101000101,100110010,110010011,110000100,111111101,111100000 830DATA 111110001,111100000,011110001,011110000,001111001,001111000,000111101,000101100,000101011,111111010,000000001 840E㐞 NDPROC 850 860 870DEF PROCbeeb 880VDU 4 890VDU 19,3,2;0; 900VDU 19,3,7;0; 910GCOL 0,3 920B$ = STRING$(4,CHR$8) + CHR$10 930 940TIME = 0 950L$ = STRING$(45," ") 960 970VDU 23,224,&3F3F;&3F3F;&3F3F;&3F3F; 980VDU 23,225,&FFFF;&FFFF;&FFFF;&FFFF; 990VDU 23,226,&FFFE;&FFFF;&FFFF;&FFFF; 1000VDU 23,227,&C000;&F8F0;&FCFC;&FEFE; 1010VDU 23,228,&C0C0;&C0C0;&C0C0;&C0C0; 1020VDU 23,229,&0107;&0000;&0000;&0701; 1030VDU 23,230,&FFFE;&FFFF;&FFFF;&FEFF; 1040VDU 23,231,&FCFE;&F8FC;&FCF8㐞!;&FEFC; 1050VDU 23,232,&FFFF;&FFFF;&FFFF;&FEFF; 1060VDU 23,233,&FEFE;&FCFC;&F0F8;&00C0; 1070 1080L$ = "" 1090 1100FOR Y = 1 TO 5 1110FOR X = 1 TO 4 1120READ N 1130L$ = L$ + CHR$N 1140NEXT 1150L$ = L$ + B$ 1160NEXT 1170 1180DATA 224,225,226,227,224,228,229,230,224,225,225,231,224,228,229,230,224,225,232,233 1190 1200PRINT TAB(14,4) L$ 1210SOUND 1,-15,5,5 1220T = TIME 1230PROCwait(T) 1240PRINT TAB(18,4) L$ 1250SOUND 1,-15,21,5 1260 1270VDU 23,224,&0000;&0000;&0301;&0703; 1280VDU 2㐞!3,225,&1F07;&FF7F;&FFFF;&FFFF; 1290VDU 23,226,&FFFC;&FFFF;&FFFF;&FFFF; 1300VDU 23,227,&8000;&F0E0;&F8F8;&FEFC; 1310VDU 23,228,&0F0F;&1F1F;&3F1F;&3F3F; 1320VDU 23,229,&FCFF;&F0F8;&E0E0;&C0C0; 1330VDU 23,230,&0107;&0000;&0000;&0000; 1340VDU 23,231,&FFFE;&FFFF;&0000;&0000; 1350VDU 23,232,&3F3F;&3F3F;&3F3F;&3F3F; 1360VDU 23,233,&C0C0;&C0C0;&C0C0;&C0C0; 1370VDU 23,234,&0000;&0000;&0000;&0000; 1380VDU 23,235,&0000;&0000;&0000;&0000; 1390VDU 23,236,&3F3F;&1F3F;&1F1F;&0F0F; 1400VDU 23,237,&C0C0;&E0E0;&F㐞!8F0;&FFFC; 1410VDU 23,238,&0000;&0000;&0000;&0701; 1420VDU 23,239,&0000;&0000;&FFFF;&FEFF; 1430VDU 23,240,&0307;&0103;&0000;&0000; 1440VDU 23,241,&FFFF;&FFFF;&7FFF;&071F; 1450VDU 23,242,&FFFF;&FFFF;&FFFF;&FCFF; 1460VDU 23,243,&FCFE;&F8F8;&E0F0;&0080; 1470 1480PROCletter(4) 1490PROCwait(T) 1500PRINT TAB(22,4) L$ 1510SOUND 1,-15,33,5 1520ENDPROC 1530 1540 1550DEF PROCsoft 1560VDU 23,224,&0000;&0100;&0F07;&1F0F; 1570VDU 23,225,&0000;&FF3F;&FFFF;&FFFF; 1580VDU 23,226,&0000;&E000;&FCF8;&FEFC㐞!; 1590VDU 23,227,&3F1F;&3F3F;&3F3F;&3F3F; 1600VDU 23,228,&80C1;&0000;&0000;&8080; 1610VDU 23,229,&7FFE;&3F3F;&3F3F;&0000; 1620VDU 23,230,&1F1F;&070F;&0003;&0000; 1630VDU 23,231,&FCE0;&FFFF;&7FFF;&010F; 1640VDU 23,232,&0000;&F080;&FCF8;&FEFE; 1650VDU 23,233,&0000;&3F3F;&3F3F;&1F3F; 1660VDU 23,234,&0001;&0000;&8000;&C080; 1670VDU 23,235,&7F7F;&3F3F;&3F3F;&FE7F; 1680VDU 23,236,&0F1F;&070F;&0001;&0000; 1690VDU 23,237,&FFFF;&FFFF;&3FFF;&0000; 1700VDU 23,238,&FCFE;&F8FC;&00E0;&0000; 1710PROCletter(3)㐞! 1720PRINT TAB(14,23) L$ 1730 1740VDU 23,224,&0000;&0000;&0301;&0707; 1750VDU 23,225,&0000;&7F1F;&FFFF;&FFFF; 1760VDU 23,226,&0000;&F0C0;&FEFC;&FFFF; 1770VDU 23,227,&0000;&0000;&0000;&0000; 1780VDU 23,228,&0F0F;&1F1F;&3F1F;&3F3F; 1790VDU 23,229,&E0F8;&80C0;&8080;&0000; 1800VDU 23,230,&3FFF;&0F1F;&0F0F;&0707; 1810VDU 23,231,&8080;&C0C0;&E0C0;&E0E0; 1820VDU 23,232,&3F3F;&3F3F;&3F3F;&3F3F; 1830VDU 23,233,&0000;&0000;&0000;&0000; 1840VDU 23,234,&0707;&0707;&0707;&0707; 1850VDU 23,235,&E0E0;&E0E0;㐞!&E0E0;&E0E0; 1860VDU 23,236,&3F3F;&1F3F;&1F1F;&0F0F; 1870VDU 23,237,&0000;&8080;&C080;&F8E0; 1880VDU 23,238,&0707;&0F0F;&1F0F;&FF3F; 1890VDU 23,239,&E0E0;&C0E0;&C0C0;&8080; 1900VDU 23,240,&0707;&0103;&0000;&0000; 1910VDU 23,241,&FFFF;&FFFF;&1F7F;&0000; 1920VDU 23,242,&FFFF;&FCFE;&C0F0;&0000; 1930VDU 23,243,0;0;0;0; 1940PROCletter(4) 1950PROCwait(T) 1960PRINT TAB(17,23) L$ 1970 1980SOUND &201,-15,21,20 1990SOUND 2,-15,33,20 2000SOUND 3,-15,53,20 2010 2020VDU 23,224,&0000;&0707;&0707;&0707;㐞! 2030VDU 23,225,&0000;&FFFF;&FFFF;&FFFF; 2040VDU 23,226,&8787;&C7C7;&E7C7;&E7E7; 2050VDU 23,227,&E7E7;&E7E7;&E7E7;&E7E7; 2060VDU 23,228,&E0E0;&FFFF;&FFFF;&FFFF; 2070VDU 23,229,&0000;&FFFF;&FFFF;&FFFF; 2080VDU 23,230,&E7E7;&C7E7;&C7C7;&8787; 2090VDU 23,231,&0707;&0707;&0707;&0000; 2100VDU 23,234,&E0E0;&E0E0;&E0E0;&0000; 2110VDU 23,236,&0000;&3F3F;&3F3F;&3F3F; 2120VDU 23,237,&3F3F;&3F3F;&3F3F;&0000; 2130 2140PROCwait(T) 2150B$ = STRING$(3,CHR$8) + CHR$10 2160PRINT TAB(20,23); 2170VDU 224,225,2㐞!25 2180PRINT B$; 2190VDU 226,235,233 2200PRINT B$; 2210VDU 227,228,229 2220PRINT B$; 2230VDU 230,235,233 2240PRINT B$; 2250VDU 231,234 2260 2270PROCwait(T) 2280PRINT TAB(23,23); 2290VDU 236,225,225 2300 2310FOR I% = 1 TO 3 2320PRINT B$ SPC1 CHR$232 SPC1; 2330NEXT 2340 2350PRINT B$ " " CHR$237 2360ENDPROC 2370 2380 2390DEF PROCletter (X1) 2400B$ = STRING$(X1,CHR$8) + CHR$10 2410L$ = "" 2420N = 224 2430 2440FOR Y = 1 TO 5 2450FOR X = 1 TO X1 2460L$ = L$ + CHR$N 2470N = N + 㐞 !1 2480NEXT 2490L$ = L$ + B$ 2500NEXT 2510 2520ENDPROC 2530 2540 2550DEF PROCblink 2560VDU 5 2570T = 7 2580*FX 15,1 2590 2600REPEAT 2610RESTORE 2770 2620GCOL 0,0 2630 2640FOR I% = 1 TO 6 2650IF I% = 4 THEN GCOL 0,2 2660READ N,Y$ 2670 2680FOR J% = 1 TO N 2690READ X$ 2700MOVE EVAL X$,EVAL Y$ 2710VDU 255 2720NEXT 2730 2740PROCwait(T) 2750NEXT 2760 2770DATA 2,&2A8,&21C,&2CC 2780DATA 4,&294,&208,&234,&2B8,&2E4 2790DATA 2,&280,&21C,&2CC 2800DATA 2,&280,&21C,&2CC 2810DATA 4㐞!,&294,&208,&234,&2B8,&2E4 2820DATA 2,&2A8,&21C,&2CC 2830 2840PROCwait(T*10) 2850SOUND 0,-15,1,1 2860UNTIL INKEY 100=-1 2870 2880VDU 4 2890ENDPROC 2900 2910 2920DEF PROCwait(T) 2930TIME = 0 2940REPEAT UNTIL TIME > T 2950ENDPROC >,100,0,0,0,0,-40,0,-100,-40,0,0,0,0,-350,0,0,-100,0,0,1150,0 2590DATA4,0,5,1,4,2,5,4,5,6,5,3 > '! %; (  J+С Љ +֋܃;s3Ҵ!  '!) u& ; (  !> t"' ! ui>  Ŏ&- u[. 㐞!10 REM BBC SOFTWARE 20 REM 60 REM 70 SCREEN 2,1 80 REM 90 F$ = "1.KNIGHT" 100 LOCATE 2,13:PRINT "(STOP recorder)" 110 GOSUB 550 120 GOSUB 250 130 GOSUB 870 140 GOSUB 1550 150 GOSUB 2550 155 LOCATE 2,13:PRINT " " 160 LOCATE 31,13:PRINT "(START recorder)" 170 LOCATE 32,13:PRINT "*loading chess*"; 208 REM 210 CHAIN F$ 220 END 230 REM 240 REM 250 REM 260 REM 270 X1 = &1A0 280 X2 = &360 290 Y1 = &3A0 300 Y2 = &60 310 REM 320 FOR X = X1 TO X2 STEP 4 330 DRAW "BM"+㐞!STR$(INT(.625*X))+","+STR$(400-INT(.390625*(Y1 - &10))) 340 DRAW "M"+STR$(INT(.625*X))+","+STR$(400-INT(.390625*Y1)) 350 NEXT 360 REM 370 FOR Y = Y1 TO Y2 STEP -4 380 DRAW "BM"+STR$(INT(.625*(X2 - &10)))+","+STR$(400-INT(.390625*Y)) 390 DRAW "M"+STR$(INT(.625*X2))+","+STR$(400-INT(.390625*Y)) 400 NEXT 410 REM 420 FOR X = X2 TO X1 STEP -4 430 DRAW "BM"+STR$(INT(.625*X))+","+STR$(400-INT(.390625*(Y2 + &10))) 440 DRAW "M"+STR$(INT(.625*X))+","+STR$(400-INT(.390625*Y2)) 450 NEXT 460 REM 470 FOR㐞! Y = Y2 TO Y1 STEP 4 480 DRAW "BM"+STR$(INT(.625*X1))+","+STR$(400-INT(.390625*Y)) 490 DRAW "M"+STR$(INT(.625*(X1 + &10)))+","+STR$(400-INT(.390625*Y)) 500 NEXT 510 REM 520 RETURN 530 REM 540 REM 550 REM 560 REM 570 REM 580 REM 590 REM 600 P = 0 610 REM 620 FOR Y = &190 TO 0 STEP -&14 630 IF Y MOD &28 THEN X1 = &18 ELSE X1 = 0 640 READ L$ 650 N = 0 660 REM 670 FOR X = 0 TO &160 STEP &2C 680 N = N + 1 690 DRAW "BM"+STR$(INT(.625*(X + X1)))+","+STR$(400-INT(.390625*Y)) 700 IF VAL M㐞!ID$(L$,N,1) THEN PRINT CHR$( 255); 710 NEXT 720 REM 730 PLAY "MB N"+STR$(P\4+15)+" L32" 740 P = P + 4 750 GW2920.T=30:GOSUB 2920 760 REM 770 NEXT 780 REM 790 REM 800 REM 810 REM 820 DATA 111111111,100110010,101010101,011001100,101000101,100110010,110010011,110000100,111111101,111100000 830 DATA 111110001,111100000,011110001,011110000,001111001,001111000,000111101,000101100,000101011,111111010,000000001 840 RETURN 850 REM 860 REM 870 REM 880 REM 890 PALETTE 4,3 900 PALETTE 4,8 910 㐞!REM 920 B$ = STRING$(4, CHR$(8) + CHR$(10) 930 REM 940 GW.TIME=((VAL(LEFT$(TIME$,2))*3600)+(VAL(MID$(TIME$,4,2))*60)+(VAL(RIGHT$(TIME$,2))))*100+ 0 950 L$ = STRING$(45," ") 960 REM 970 REM 980 REM 990 REM 1000 REM 1010 REM 1020 REM 1030 REM 1040 REM 1050 REM 1060 REM 1070 REM 1080 L$ = "" 1090 REM 1100 FOR Y = 1 TO 5 1110 FOR X = 1 TO 4 1120 READ N 1130 L$ = L$ + CHR$(N) 1140 NEXT 1150 L$ = L$ + B$ 1160 NEXT 1170 REM 1180 DATA 224,225,226,227,224,228,229,230,224,225,225,231,2㐞!24,228,229,230,224,225,232,233 1190 REM 1200 LOCATE 5,15:PRINT L$ 1210 PLAY "MB N16 L8" 1220 T = (((VAL(LEFT$(TIME$,2))*3600)+(VAL(MID$(TIME$,4,2))*60)+(VAL(RIGHT$(TIME$,2))))*100-GW.TIME) 1230 GW2920.T=T:GOSUB 2920 1240 LOCATE 5,19:PRINT L$ 1250 PLAY "MB N20 L8" 1260 REM 1270 REM 1280 REM 1290 REM 1300 REM 1310 REM 1320 REM 1330 REM 1340 REM 1350 REM 1360 REM 1370 REM 1380 REM 1390 REM 1400 REM 1410 REM 1420 REM 1430 REM 1440 REM 1450 REM 1460 REM 1470 REM 1480 GW2390.X1=㐞!4:GOSUB 2390 1490 GW2920.T=T:GOSUB 2920 1500 LOCATE 5,23:PRINT L$ 1510 PLAY "MB N23 L8" 1520 RETURN 1530 REM 1540 REM 1550 REM 1560 REM 1570 REM 1580 REM 1590 REM 1600 REM 1610 REM 1620 REM 1630 REM 1640 REM 1650 REM 1660 REM 1670 REM 1680 REM 1690 REM 1700 REM 1710 GW2390.X1=3:GOSUB 2390 1720 LOCATE 24,15:PRINT L$ 1730 REM 1740 REM 1750 REM 1760 REM 1770 REM 1780 REM 1790 REM 1800 REM 1810 REM 1820 REM 1830 REM 1840 REM 1850 REM 1860 REM 1870 REM 1880 REM 1890 㐞 !REM 1900 REM 1910 REM 1920 REM 1930 REM 1940 GW2390.X1=4:GOSUB 2390 1950 GW2920.T=T:GOSUB 2920 1960 LOCATE 24,18:PRINT L$ 1970 REM 1980 PLAY "MB N20 L2" 1990 PLAY "MB N23 L2" 2000 PLAY "MB N28 L2" 2010 REM 2020 REM 2030 REM 2040 REM 2050 REM 2060 REM 2070 REM 2080 REM 2090 REM 2100 REM 2110 REM 2120 REM 2130 REM 2140 GW2920.T=T:GOSUB 2920 2150 B$ = STRING$(3, CHR$(8) + CHR$(10) 2160 LOCATE 24,21:PRINT 2170 PRINT CHR$( 224);,225,225 2180 PRINT B$; 2190 PRINT CHR$( 226);,235㐞",233 2200 PRINT B$; 2210 PRINT CHR$( 227);,228,229 2220 PRINT B$; 2230 PRINT CHR$( 230);,235,233 2240 PRINT B$; 2250 PRINT CHR$( 231);,234 2260 REM 2270 GW2920.T=T:GOSUB 2920 2280 LOCATE 24,24:PRINT 2290 PRINT CHR$( 236);,225,225 2300 REM 2310 FOR I% = 1 TO 3 2320 PRINT B$ SPC 2330 NEXT 2340 REM 2350 PRINT B$ " " CHR$(237) 2360 RETURN 2370 REM 2380 REM 2390 REM 2400 B$ = STRING$(X1, CHR$(8) + CHR$(10) 2410 L$ = "" 2420 N = 224 2430 REM 2440 FOR Y = 1 TO 5 2450 FOR X = 1 TO X㐞"1 2460 L$ = L$ + CHR$(N) 2470 N = N + 1 2480 NEXT 2490 L$ = L$ + B$ 2500 NEXT 2510 REM 2520 RETURN 2530 REM 2540 REM 2550 REM 2560 REM 2570 T = 7 2580 REM 2590 REM 2600 REM 2610 RESTORE 2770 2620 REM 2630 REM 2640 FOR I% = 1 TO 6 2650 IF I% = 4 THEN REM 2660 READ N,Y$ 2670 REM 2680 FOR J% = 1 TO N 2690 READ X$ 2700 DRAW "BM"+STR$(INT(.625*EVAL X$))+","+STR$(400-INT(.390625*EVAL Y$)) 2710 PRINT CHR$( 255); 2720 NEXT 2730 REM 2740 GW2920.T=T:GOSUB 2920 2750 NEXT 2760 REM㐞" 2770 DATA 2,&2A8,&21C,&2CC 2780 DATA 4,&294,&208,&234,&2B8,&2E4 2790 DATA 2,&280,&21C,&2CC 2800 DATA 2,&280,&21C,&2CC 2810 DATA 4,&294,&208,&234,&2B8,&2E4 2820 DATA 2,&2A8,&21C,&2CC 2830 REM 2840 GW2920.T=T*10:GOSUB 2920 2850 PLAY "MB N15 L32" 2856 GOTO 2860 2858 GW.IN.X=-1:FOR GW.2858=0 TO GW.IN.D:GW.IN.X$=INKEY$:IF LEN(GW.IN.X$)<>0 THEN GW.2858=GW.IN.D:GW.IN.X=ASC(GW.IN.X$) 2859 NEXT:RETURN 2860 GW.IN.D=:GOSUB 2858:IF NOT GW.IN.X THEN 2600 2870 REM 2880 REM 2890 RETURN 2900 REM 2910 㐞" REM 2920 REM 2930 GW.TIME=((VAL(LEFT$(TIME$,2))*3600)+(VAL(MID$(TIME$,4,2))*60)+(VAL(RIGHT$(TIME$,2))))*100+ 0 2940 REM 2950 RETURN 㐞"10 REM 20 CHAIN "1.2002" EEE[E]kmIq$IDIdIIIOJoJLLM$MDMׄMMMONdNNNO/OdOOOOPPOS5eS7SS=S?EeTGTITKOQ%UZ>"N㐞"0 REM " SPITFIRE COMMAND (C) 1983 PETER JOHNSON 5 L."2.S.FIRE"REM 6 REM 7 FOR I%=0 TO &AFFSTEP4:I%!&E00=I%!&7000:NEXT 10 MACH=&E00:CODE%=MACH+200:DIM HI%(5),HI$(5):FOR I%=1 TO 5:HI$(I%)="Superior":HI%(I%)=1000:NEXT 11 REM 12 REM 13 REM 70 FIN%=MACH+4:XP%=MACH+35:YP%=MACH+40:CONSTANT=MACH+68:SHIFTREG=MACH+73:SCORE%=MACH+132:SC1%=SCORE%+4:SC2%=SCORE%+5:SC3%=SCORE%+6:SC4%=SCORE%+7:SC5%=SCORE%+8:DAM%=MACH+142:D1%=DAM%+4:D2%=DAM%+5:D3%=DAM%+6 72 DAPP%=MACH+110:DTIM%=MACH+1㐞"11:DCROSS1%=MACH+112:DCROSS2%=MACH+113:DREC%=MACH+114:DNO%=MACH+115:DPDROP%=MACH+177:DPDRIFT%=MACH+178:JOY%=MACH+174 80 ON ERROR GOTO 100 81 REM 100 SWAVE%=0:SCR%=0:GOTO 2000 200 REM 210 REM 220 REM 230 SCREEN 2,1::FOR I%=0 TO 15:PALETTE I%,1:NEXT:::REM 280 DRAW "BM187,360":DRAW "BM156,360":FOR I%=0 TO 27:READ A,B:DRAW "M"+STR$(INT(.625*A))+","+STR$(400-INT(.390625*B)):NEXT 290 DATA 250,500,200,500,350,750,300,750,450,850,400,850,580,900,540,915,640,905,640,930,700,900,740,915,830,850,880,850,930,7㐞 "50,980,750,1030,500,1080,500,980,100,1030,100 300 DATA 1280,0,250,100,0,0,50,0,300,750,354,760,0,800,0,825 310 DRAW "BM800,87":DRAW "BM800,77":DRAW "M612,107":DRAW "M578,103":DRAW "M800,400":DRAW "M768,400":DRAW "BM0,400":DRAW "BM0,437":DRAW "M800,400":DRAW "M800,437":DRAW "BM337,360":DRAW "BM337,341":DRAW "M462,360":DRAW "M462,341":DRAW "M462,282":DRAW "M337,282":DRAW "M337,341" 340 FOR R%=50 TO 60 STEP 4:=R%:GOSUB 10000:NEXT::::DRAW "BM202,394":PRINT "":DRAW "BM386,394":PRINT "":DRAW "BM570,394㐞"":PRINT "" 390 DRAW "BM125,384":DRAW "M687,384":DRAW "M687,431":DRAW "M125,431":DRAW "M125,384" 440 REM 450 REM 850 FOR I%=0 TO 4:SC1%PEEK(I%=48):NEXT::FOR I%=0 TO 15:READ A%:PALETTE I%,A%0;:NEXT 851 DATA 6,1,7,0,0,7,1,4,0,1,1,11,9,1,7,0 900 FOR I%=0 TO 4:I%PEEK(XP%=40+RND(20)):I%PEEK(YP%=40+RND(20)):NEXT::POKE CONSTANT,53:POKE (CONSTANT+1),&71:POKE (CONSTANT+2),&76::POKE D1%,49:POKE D2%,48:POKE D3%,48 920 POKE DNO%,2+WAVE% \ 4:WAV%=WAVE% MOD 4:POKE DAPP%,220+WAV%*3:POKE DTIM%,253-WAV%:POKE DCROSS㐞"1%,7+WAV%*1.5:POKE DCROSS2%,POKE DCROSS1%*2,PEEK(DREC%=245+WAV%*1.5):POKE DPDROP%,34+WAV%*2:POKE DPDRIFT%,24-WAV%*3 1000 LOCATE 31,16:PRINT WAVE%::REM 1010 IF POKE FIN%,1 GOTO 1200 ELSE IF POKE FIN%,3 GOTO 100 1100 GOSUB 11000:=178:GOSUB 30000:FOR I%=1 TO 7500:NEXT::GOSUB 11010:WAVE%=WAVE%+1:=191:GOSUB TALK:GOTO 900 1200 FOR I%=10 TO 1000 STEP 80:PLAY "MB N16 L32":PLAY "MB N15 L32":DRAW "BM"+STR$(INT(.625*(I%+RND(60)+100)))+","+STR$(400-INT(.390625*(I%+RND(40)))):PRINT CHR$( 254);:NEXT::::FOR I%=0 TO 10㐞"24 STEP 4:DRAW "BM0,"+STR$(400-INT(.390625*I%)):DRAW "M800,"+STR$(400-INT(.390625*I%)):NEXT 1900 SCR%=0:FOR I%=0 TO 4:SCR%=SCR%+(PEEK((SCORE%+8-I%)-48)*10^I%):NEXT 2000 SCREEN 0,1::GOSUB 8999:LOCATE 12,12:PRINT "TODAY'S ACES":PRINT TAB(12)"TODAY'S ACES" 2001 LOCATE 22,8:PRINT " " 2010 PS%=0:FOR I%=1 TO 5:IF SCR%>HI%(I%) FOR J%=4 TO I% STEP -1:HI%(J%+1)=HI%(J%):HI$(J%+1)=HI$(J%):NEXT::PS%=I%:HI%(I%)=SCR%:HI$(I%)="":I%=6:NEXT ELSE NEXT 2015 FOR I%=1 TO 5:LOCATE I%+13+1,11:COLO㐞"R 2:PRINT +I%);HI%(I%); :LOCATE I%+13+1,21:PRINT HI$(I%):NEXT 2019 GOSUB 20000 2020 REM 2025 IF PS%>0:LOCATE 22,13:PRINT "ENTER YOUR NAME "; :LOCATE PS%+13+1,20:PRINT :INPUT HI$(PS%):HI$(PS%)= LEFT$(HI$(PS%),8):LOCATE PS%+13+1,20:PRINT "":FOR I=1 TO 200 STEP 8:PLAY "MB N"+STR$(I\4+15)+" L32":PLAY "MB N"+STR$((I+32)\4+15)+" L32":PLAY "MB N"+STR$((I+48)\4+15)+" L32":NEXT 2030 IF SWAVE%<1 OR SWAVE%>6:LOCATE 22,12:PRINT "SELECT LEVEL 1]6":I%= ASC(INPUT$(1))::SWAVE%=I%-48:PLAY "MB N15 L96":GOTO 2030 2031 㐞"WAVE%=SWAVE% 2999 LOCATE 22,11:PRINT "PRESS SPACE OR FIRE" 3000 IF ( (0)AND1)=1 OR INKEY$(0)=" "REMPEEK(JOY%=ADVAL(0)AND1):RESTORE::GOTO 200 ELSE 3000 8999 REM 9000 PRINT TAB(9)"SUPERIOR SOFTWARE'S"; TAB(9)"SUPERIOR SOFTWARE'S":PRINT "¢¢굠굠𠠠" 9010 PRINT "㐞"" 9020 LOCATE 24,9:PRINT "Author: Peter Johnson":RETURN 11000 A$=" WAVE "+ STR$(WAVE%)+" DEFEATED!":B$=" WAVE "+ STR$(WAVE%+1)+" IN RANGE!":M$=A$:DRAW "BM0,165":GOSUB 11100:M$=B$:DRAW "BM0,204":GOSUB 11100:RETURN 11010 M$=B$:DRAW "BM760,204":GOSUB 11110:M$=A$:DRAW "BM760,165":GOSUB 11110:RETURN 11100 FOR I%=0 TO 19:PRINT MID$(M$,I%,1);:PRINT CHR$( 244);,245,8,8:PLAY "MB N"+STR$((I%*10)\4+15)+" L32":PLAY "MB N"+STR$((I%*12)\4+15)+" L32":REM 1110㐞"2 PRINT CHR$( 244);,245,8,8:NEXT::RETURN 11110 FOR I%=18 TO 0 STEP -1:PRINT MID$(M$,I%,1);:LOCATE POS(I)-1,CSRLIN236,237,8,8:PLAY "MB N"+STR$((I%*10)\4+15)+" L32":PLAY "MB N"+STR$((I%*12)\4+15)+" L32":REM 11112 PRINT CHR$( 236);,237,8,8,8:NEXT::RETURN 20000 RESTORE 20010:FOR I%=0 TO 18:READ P%,D%:FOR J%=1 TO 3:PLAY "MB N"+STR$(P%\4+15)+" L"+STR$(48\(D%+0.5)):PLAY "MB N15 L96":NEXT ,:RETURN 20010 DATA 100,2,116,2,120,4,136,4,136,4,128,2,120,2,116,4,128,4,128,8,128,2,136,2,128,2,120,2,116,4,108,4,100,4,㐞"128,4,148,4 30020 S%=I%+48:IF I%=10S%=33 ELSE IF I%=11S%=190 ELSE IF I%=12S%=273 ELSE IF I%>12 PLAY "MB N15 L96":S%=135 30030 PLAY "MB N15 L96":RETURN Z> "N㐞#10 REM BBC Othello - 2/12/82 - JCD 20 REM Modified - 27/6/83 - TJS 30 SCREEN 0,1:REM 40 IF REM 50 ON:ERROR:LS:PRINT "YOU RESIGNED":GOTO 160 60 GOSUB 1350:GOSUB 180 70 GOSUB 1660:SCREEN 2,1 80 COLOR ,1:CLS::GOSUB 290 90 IF FL=1 GOSUB 760:GOTO 140 100 IF P=0 GOSUB 1240 ELSE GOSUB 1480 110 GOSUB 870 120 IF P=0 GOSUB 760:GOSUB 990 130 IF P=1 GOSUB 990:GOSUB 760 140 P=1-P:CLR=3-CLR:IF NC>0 FL=0 ELSE FL=FL+1:GOSUB 1070 150 IF NOT P(0)*P(1)=0 AND NOT P(0)+P(1)=64 AND NOT FL=2 THEN 90:GOSUB 1120 㐞#160 GOSUB 1190:IF A$="Y" SCREEN 0,1::GOTO 70 170 END 180 REM 190 REM 200 REM 210 REM 220 REM 230 REM 240 REM 250 REM 260 REM 270 DIM A(99),C(99),R(8),WT(6),PC(7),D(7),P(1),W(89),Z(30),C$(1) 280 RETURN 290 REM 300 RESTORE 310 DATA 1,11,10,9,-1,-11,-10,-9 320 FOR V=0 TO 7:READ D(V):NEXT::FOR Z=0 TO 99:A(Z)=1:C(Z)=0:NEXT 330 FOR X=3 TO 6:FOR Y=3 TO 6:A(10*Y+X)=0:NEXT Y,X 340 C(34)=1:C(43)=1:C(56)=1:C(65)=1 350 DATA 30,10,1,0,0,1,10,30,300,200,150,400,150,0,800 360 FOR I=1 TO 8:READ R(I):NE㐞#XT::FOR I=0 TO 6:READ WT(I):NEXT 370 DATA 0,80,20,56,28,28,56,20,80,0,0,20,5,14,7,7,14,5,20,0 380 DATA 0,56,14,40,20,20,40,14,56,0,0,28,7,20,10,10,20,7,28,0 390 FOR I=10 TO 49:READ W(I):W(99-I)=W(I):NEXT 400 FL=0:TS=4*(1+P):TT=12-TS::C$(0)="BLACK":C$(1)="WHITE" 410 A(44)=TT:A(55)=TT:A(45)=TS:A(54)=TS 420 COLOR 2:LOCATE 3,8:PRINT "O T H E L L O":COLOR 1 430 FOR Y=912 TO 144 STEP -96:DRAW "BM244,"+STR$(256-INT(.25*Y)):DRAW "M53,"+STR$(256-INT(.25*Y)):NEXT 440 FOR X=48 TO 816 STEP 96:DRAW "BM"+STR$(2㐞#56-INT(.25*X))+",28":DRAW "M"+STR$(256-INT(.25*X))+",220":NEXT 450 COLOR 2:FOR I=0 TO 7:DRAW "BM"+STR$(256-INT(.25*(80+96*I)))+",224":PRINT CHR$(65)+I) 460 DRAW "BM254,"+STR$(256-INT(.25*(208+96*I))):PRINT CHR$(49)+I):NEXT::COLOR 1:REM 470 Z=44:GW560.C=3:GW560.I=0:GOSUB 560:Z=55:=3:=0:GOSUB 560 480 Z=45:=0:=0:GOSUB put:Z=54:=0:=0:GOSUB put 490 LOCATE 25,28:PRINT "YOU HAVE:" :LOCATE 27,28:PRINT "I HAVE:" 500 CLR=0:P(0)=2:P(1)=2:GOSUB 730 510 LOCATE 31,2:PRINT "You are ";:COLOR (3-3*P):PRINT C$(1-P); 㐞#520 COLOR 2:PRINT " - I am ";:COLOR (3*P):PRINT C$(P); 530 COLOR 2:PRINT " - level ";:COLOR 1:PRINT CHR$(64)+LV);:COLOR 2 540 VIEW PRINT 5 TO 23:IF P=0 PRINT "MY TURN" 550 RETURN 570 COLOR C:X1= INT(Z/10):Y1=9-(Z MOD 10):X=3*X1-1:Y=3*Y1+1 580 LOCATE Y+1,X+1:PRINT CHR$(224+I);:PRINT CHR$(228+I);:PRINT CHR$(10);:PRINT CHR$(8);:PRINT CHR$(8);:PRINT CHR$(232+I);:PRINT CHR$(236+I); 590 COLOR 2:LOCATE 1,1 600 RETURN 610 REM 620 =CLR:=0:GOSUB put:FOR GW610.I=1 TO 2 630 FOR T=1 TO 800:NEXT::=1:=0:GOS㐞#UB put 640 FOR T=1 TO 800:NEXT::=CLR:=0:GOSUB put 650 NEXT GW610.I 660 RETURN 670 REM 680 FOR I=0 TO 3:FOR T=1 TO 50:NEXT::GW670.=I:GOSUB put 690 NEXT GW670.I:FOR GW670.I=2 TO 0 STEP -1 700 FOR T=1 TO 50:NEXT::GW670.=I:GOSUB put 710 NEXT GW670.I 720 RETURN 730 REM 740 COLOR 1:LOCATE 25,38:PRINT ,P(1) :LOCATE 27,38:PRINT ,P(0):COLOR 2 750 RETURN 760 REM 770 IF P=1 PRINT "MY TURN -":PRINT :PRINT "THINKING"; 780 TT=4+4*P:TS=12-TT:NC=0:FOR I=11 TO 88 790 C=0:IF A(I)>0 GOTO 850 800 Q=I MOD 1㐞#0:IF Q=0 OR Q=9 GOTO 850 810 FOR V=0 TO 7:J=I:PC=-1:D=D(V) 820 J=J+D:PC=PC+1:IF NOT A(J)<>TT THEN 820 830 IF A(J)<>TS PC=0 840 C=C+PC:NEXT::IF C>0 NC=NC+1 850 C(I)=C:NEXT I 860 RETURN 870 REM 880 TS=4+4*P:TT=12-TS 890 FOR I=-10 TO 10 STEP 10:FOR J=-1 TO 1 900 K=I+J+Z:IF A(K)=1 A(K)=0 910 NEXT J,I:A(Z)=TS:FOR V=0 TO 7 920 J=Z:PC=-1:D=D(V) 930 J=J+D:PC=PC+1:IF NOT A(J)<>TT THEN 930 940 IF A(J)<>TS PC=0 950 PC(V)=PC:IF PC=0 GOTO 970 960 J=Z:FOR N=1 TO PC:J=J+D:A(J)=TS:NEXT N 970 NEXT V 980 RE㐞#TURN 990 REM 1000 VIEW PRINT 1 TO 32:GOSUB 610:P(P)=P(P)+1:GOSUB 730:J=Z 1010 FOR V=0 TO 7:Z=J:IF PC(V)=0 GOTO 1040 1020 FOR N=1 TO PC(V):Z=Z+D(V):GOSUB 670 1030 P(P)=P(P)+1:P(1-P)=P(1-P)-1:GOSUB 730:NEXT N 1040 NEXT V 1050 VIEW PRINT 5 TO 23:CLS 1060 RETURN 1070 REM 1080 PRINT :PRINT :COLOR 1 1090 IF P=1 PRINT "YOU"; ELSE PRINT "I"; 1100 PRINT " CAN'T GO":PRINT :COLOR 2 1110 RETURN 1120 REM 1130 IF FL<2 CLS 1140 PRINT "GAME OVER":PRINT :COLOR 1 1150 IF P(0)P(1) PRINT "YOU LOST -":PRINT :COLOR 2:PRINT "HARD LUCK!":PRINT 1180 RETURN 1190 REM 1200 COLOR 1:PRINT "PLAY AGAIN?";:COLOR 2 1210 REM 1220 A$= INPUT$(1):IF A$<>"Y" AND A$<>"N" GOTO 1210 1230 RETURN 1240 REM 1250 MX=0:IX=0:FOR Z=11 TO 88:C=C(Z):IF C=0 GOTO 1320 1260 IF LV=3 C=C+WT( INT((R(Z MOD 10)+R( INT(Z/10)))/10)) 1270 IF LV=2 C=C*W(Z) 1280 IF C1 IX= INT(RND*IX+1) 1330 Z=Z(IX) 1340 RETURN 1350 REM 1360 CLS::LOCATE 3,12:COLOR 1:PRINT "O T H E L L O" :LOCATE 4,12:COLOR 1:PRINT "O T H E L L O" 1370 PRINT :PRINT :PRINT :PRINT "When playing this game, you do not need" 1380 PRINT "to press" :COLOR 1:PRINT "RETURN" :COLOR 3:PRINT ", Simply type the first" 1390 PRINT "letter of your response, e.g." :COLOR 1:PRINT "Y" :COLOR 3:PRINT "for" :COLOR 1:PRINT "YES" 1400 PRINT㐞# :PRINT "To enter a move, type the column letter":PRINT "and row number, e.g." :COLOR 1:PRINT "F3" 1410 PRINT :PRINT "To resign a game, press" :COLOR 1:PRINT "ESCAPE" 1420 PRINT :PRINT "I can play three strategies -" :COLOR 1:PRINT "A" :COLOR 3:PRINT "(the" 1430 PRINT "simplest)," :COLOR 1:PRINT "B" :COLOR 3:PRINT "or" :COLOR 1:PRINT "C" 1440 REM 1450 LOCATE 23,8:PRINT "Press" :COLOR 1:PRINT "SPACE BAR" :COLOR 3:PRINT "to begin"; 1460 A$= INPUT$(1):IF A$<>" " GOTO 1440 1470 RETURN 1480 REM 1490 PR㐞#INT "ENTER YOUR":PRINT "MOVE: "; 1500 REM 1510 X= ASC(INPUT$(1)) -64:IF X<1 OR X>8 GOTO 1620 1520 COLOR 1:COLOR X:PRINT +64);:COLOR 2 1530 REM 1540 Y= ASC(INPUT$(1)) -48:IF Y<1 OR Y>8 GOTO 1620 1550 COLOR 1:COLOR Y:PRINT +48):COLOR 2:Z=10*X+Y 1560 IF A(Z)=0 AND C(Z)>0 GOTO 1650 1570 CLS::PRINT "YOU CAN'T GO"; 1580 PRINT "AT ";:COLOR 1:COLOR X:PRINT +64); :COLOR Y:PRINT +48);:COLOR 2 1590 IF A(Z)>3 PRINT " - IT'S";"OCCUPIED!" 1600 IF A(Z)<2 AND C(Z)=0 PRINT " - NO":PRINT "CAPTURES!" 1610 CO㐞#LOR 1:PRINT :PRINT "TRY AGAIN.":PRINT :COLOR 2:GOTO 1490 1620 CLS::PRINT "To enter":PRINT "your move,":PRINT "first press":PRINT "key "; 1630 COLOR 1:PRINT "A-H";:COLOR 2:PRINT " for":PRINT "column, then";"key "; 1640 COLOR 1:PRINT "1-8";:COLOR 2:PRINT " for":PRINT "row.":PRINT :GOTO 1490 1650 RETURN 1660 REM 1670 CLS::LOCATE 3,12:COLOR 1:PRINT "O T H E L L O" :LOCATE 4,12:COLOR 1:PRINT "O T H E L L O" 1680 LOCATE 8,1:PRINT "Which level?"; 1690 REM 1700 LV= ASC(INPUT$(1)) -64 1710 IF LV<1 OR㐞# LV>3 LOCATE 8,14:PRINT "- type" :COLOR 1:PRINT "A" :COLOR 3:PRINT "," :COLOR 1:PRINT "B" :COLOR 3:PRINT "or" :COLOR 1:PRINT "C" :COLOR 3:PRINT ":";:GOTO 1690 1720 :COLOR 2:COLOR LV:PRINT +64) LOCATE 12,1:PRINT "Do you want to have first move?"; 1730 REM 1740 A$= INPUT$(1) 1750 IF A$="Y" P=1:GOTO 1780 1760 IF A$="N" P=0:GOTO 1780 1770 LOCATE 15,1:PRINT "Type" :COLOR 1:PRINT "Y" :COLOR 3:PRINT "or" :COLOR 1:PRINT "N" :COLOR 3:PRINT ":";:GOTO 1730 1780 LOCATE 12,33:COLOR 2:PRINT A$ :LOCATE 15,1:PRINT 㐞#"Very well. Black moves first, so you" 1790 PRINT "have the";:IF P=1 :COLOR 2:PRINT "BLACK"; ELSE :COLOR 2:PRINT "WHITE"; 1800 :COLOR 3:PRINT "pieces." 1810 LOCATE 23,2:PRINT "Press" :COLOR 1:PRINT "SPACE BAR" :COLOR 3:PRINT "to start the game"; 1820 REM 1830 A$= INPUT$(1):IF A$<>" " GOTO 1820 1840 RETURN T~H,116,4,128,4,128,8,128,2,136,2,128,2,120,2,116,4,108T,4,100,4,128,4,148,4 Z>#N㐞#10 SCREEN 2,0:REM 20 PALETTE 3,2:PALETTE 0,0 30 GOSUB 80 35 LOCATE 30,10:PRINT "*loading object code*" 40 REM 50 REM 60 RUN"2.KNIGHT"REM 70 END 80 REM 90 LOCATE 4,11:PRINT "White Knight(Mk11)" 100 LOCATE 5,11:PRINT ".................." 110 LOCATE 28,11:PRINT "Author - M.P.Bryant" 120 LOCATE 2,1:PRINT :FOR I=1 TO 38:PRINT "*";:NEXT 130 LOCATE 32,1:PRINT :FOR I=1 TO 38:PRINT "*";:NEXT 140 FOR I=2 TO 30:LOCATE I+1,1:PRINT "*";:LOCATE I+1,38:PRINT "*";:NEXT 150 REM 160 REM 170 REM 180 REM 190㐞 # REM 200 FOR R=1 TO 20 210 FOR C=1 TO 24 220 READ D:LOCATE 5+R+1,6+C+1:PRINT CHR$(D); 230 NEXT 240 PLAY "MB N"+STR$((INT(256*RND(1)))\4+15)+" L32" 250 NEXT 260 RETURN 270 DATA 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 280 DATA 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 290 DATA 32,32,32,32,32,32,32,32,32,32,226,32,32,226,32,32,32,32,32,32,32,32,32,32 300 DATA 32,32,32,32,32,32,32,32,32,32,224,226,32,224,226,32,32,32,32,32,32,32,32,32 310㐞$ DATA 32,32,32,32,32,32,32,32,32,225,224,224,224,224,224,226,32,32,32,32,32,32,32,32 320 DATA 32,32,32,32,32,32,32,32,225,224,32,224,224,224,224,227,226,32,32,32,32,32,32,32 330 DATA 32,32,32,32,32,32,32,225,224,224,224,224,224,224,224,226,227,226,32,32,32,32,32,32 340 DATA 32,32,32,32,32,32,225,224,224,224,224,224,224,224,224,224,32,224,32,32,32,32,32,32 350 DATA 32,32,32,32,32,32,224,224,224,224,224,224,224,224,224,224,32,224,32,32,32,32,32,32 360 DATA 32,32,32,32,32,32,224,228,32,224,224,224,224,224㐞$,224,224,32,224,32,32,32,32,32,32 370 DATA 32,32,32,32,32,32,228,32,225,228,32,225,224,224,224,224,32,224,32,32,32,32,32,32 380 DATA 32,32,32,32,32,32,32,225,228,32,225,224,224,224,224,224,32,224,32,32,32,32,32,32 390 DATA 32,32,32,32,32,32,32,32,32,225,224,224,224,224,224,224,32,224,226,32,32,32,32,32 400 DATA 32,32,32,32,32,32,32,32,32,224,224,224,224,224,224,224,226,227,224,32,32,32,32,32 410 DATA 32,32,32,32,32,32,32,32,225,224,224,224,224,224,224,224,224,32,224,226,32,32,32,32 420 DATA 32,32,32,3㐞$2,32,32,32,32,224,224,224,224,224,224,224,224,224,32,224,224,32,32,32,32 430 DATA 32,32,32,32,32,32,32,225,224,224,224,224,224,224,224,224,224,224,224,224,32,32,32,32 440 DATA 32,32,32,32,32,32,32,224,224,224,224,224,224,224,224,224,224,224,224,224,32,32,32,32 450 DATA 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 460 DATA 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 Z>$N㐞$10REM 20REM ** J. SCRIVEN ** 30REM 40REM ** 10/10/82 ** 50REM 60REM ** TIMED TABLE TEST ** 70REM 80 90REM ** INITIALIZATION ** 100MODE 7 110DIM name$(30) 120DIM score(30) 130DIM time(30) 140number = 1 150flag = 0 160 170REM ** TEST LOOP ** 180REPEAT 190 CLS 200 PRINTTAB(12,0)CHR$(130)CHR$(141)"TABLE TEST" 210 PRINTTAB(12,1)CHR$(130)CHR$(141)"TABLE TEST" 220 PRINTTAB(10,10)"ENTER YOUR NAME" 230 INPUT name$(number) 240 PRINTTAB(0,19)"OK, ";name$(number) 250 PRINTTAB(0,20)"PRES㐞$S SPACE BAR TO BEGIN" 260 score(number) = 0 270 TIME=0 280 CLS 290 PRINTTAB(12,0)CHR$(130)CHR$(141)"TABLE TEST" 300 PRINTTAB(12,1)CHR$(130)CHR$(141)"TABLE TEST" 310 PRINTTAB$(1,2)CHR$(132)name$(number) 320 FOR N = 1 TO 10 330 A = RND(13)-1 340 B = RND(13)-1 350 PRINTTAB(4-N*.11,N*2+1);N;".)"A" X "B 360 PRINTTAB(23,N*2+1)" = "; 370 T=INT(TIME/100) 380 PRINTTAB(25,2)CHR$(129)"TIME= ";T" SECS" 390 INPUTTAB(27,N*2+1) G 400 IF G = A * B THEN PRINTTAB(31,N*2+1)" OK" 㐞$410 IF G = A * B THEN score(number)=score(number)+1 420 IF G <>A * B THEN PRINTTAB(31,N*2+1)" NO - ";A*B 430 NEXT 440 PRINTTAB(0,23)name$(number)" SCORED "; 450 PRINT;score(number)" OUT OF 10 IN ";T;" SECS" 460 PRINTTAB(0,24)"PRESS SPACE BAR FOR ANOTHER GO"; 470 time(number) = T 480 M$= GET$ 490 IF M$ = "#" THEN flag = 1 500 number = number+1 510 UNTIL flag = 1 520CLS 530 540REM ** RESULTS ROUTINE ** 550PRINTTAB(15)CHR$(131)"RESULTS" 560PRINTTAB(0)"NAME";TAB(17)"SCORE"TAB(27)㐞$"TIME" 570PRINT 580FOR N = 1 TO 30 590 PRINT;N;name$(N),score(N),time(N) 600 IF N = 20 THEN PRINT"PRESS SPACE BAR TO CONTINUE":M$ = GET$ 610 NEXT N 620 END 0 REM 1830 A$= INPUT$(1):IF A$<>" " GOTO 1820 1840 RETURN T~H,116,4,128,4,128,8,128,2,136,2,128,2,120,2,116,4,108T,4,100,4,128,4,148,4 㐞 $ 10 REM 20 REM ** ANAGRAM ** 30 REM 40 REM ** A.J.S. 13/4/83 ** 50 REM 60 VDU 26:COLOUR 128:CLS 70 REPEAT 80 MODE 7 90 PROCinstr 100 MODE 2 110 FOR go = 1 TO 10 120 PROCgetword 130 PROCmix 140 PROCdisplay 150 PROCguess 160 NEXT go 170 PROCscore 180 UNTIL FALSE 190 200 DEFPROCinstr 210 score=0 220 COLOUR2:PRINTTAB(14,2)"ANAGRAM" 230 PRINTTAB(14,3)"ANAGRAM" 240 PRINTTAB(1,6)"YOU WILL BE SHOWN THE JUMBLED-UP" 250 PRINT 2㐞$60 PRINTTAB(10,8)"LETTERS OF A WORD" 270 PRINT 280 PRINT"YOU HAVE TO SORT THEM OUT AND ENTER" 290 PRINT 300 PRINTTAB(10,12)"THE CORRECT WORD" 310 COLOUR1:PRINTTAB(5,18)"PRESS SPACE BAR TO BEGIN" 320 Z$=GET$ 330 ENDPROC 340 350 DEFPROCgetword 360 RESTORE 1100 370 FOR N = 1 TO RND(20) 380 READ word$ 390 NEXT N 400 ENDPROC 410 420 DEFPROCmix 430 dummy$ = word$ 440 REPEAT 450 new$="" 460 FOR N = 1 TO LEN(dummy$) 470 IF RND(2) = 2 THEN new$ = new$+MID$(dummy$㐞$,N,1) ELSE new$ = MID$(dummy$,N,1)+new$ 480 NEXT N 490 dummy$ = new$ 500 UNTIL new$ <> word$ 510 ENDPROC 520 530 DEFPROCdisplay 540 VDU19,0,7;0; 560 COLOUR132 570 CLS 580 PRINTTAB(3,3)new$ 610 COLOUR128 620 VDU24,360;350;870;860; 630 ENDPROC 640 650 DEFPROCguess 660 colour=0 670 REPEAT 680 PRINTTAB(3,5)"ENTER YOUR GUESS" 690 *FX21,0 700 INPUT guess$ 710 colour = colour+1 720 CLG 730 PROCspin 740 IF guess$ = word$ THEN PROCright ELSE PROCw㐞$rong 750 UNTIL guess$ = word$ OR colour = 3 760 ENDPROC 770 780 DEFPROCright 790 COLOUR15 800 PRINT"YES" 810 FOR pause = 1 TO 2000:NEXT pause 820 IF colour=1 THEN score = score + 1 830 COLOUR7 840 ENDPROC 850 860 DEFPROCwrong 870 COLOUR15 880 IF colour = 3 THEN PRINTword$ ELSE PRINT"SORRY!" 890 FOR pause = 1 TO 2000:NEXT pause 900 COLOUR7 910 ENDPROC 920 930 DEFPROCspin 940 GCOL0,colour 950 FOR N = 0 TO 2*PI STEP .1 960 X = SINN*250+600 970 Y = COSN*250+60㐞$0 980 SOUND1,-8,N*30,1 990 MOVE 600,600 1000 DRAW X,Y 1010 NEXT N 1020 ENDPROC 1030 1040 DEFPROCscore 1050 PRINT"SCORE =";score 1060 PRINT"PRESS SPACE BAR" 1070 Z$=GET$ 1080 ENDPROC 1090 1100 REM ** DATA LINES FOR WORDS ** 1110 1120 DATA ANDORRA,AUSTRIA,BELGIUM,DENMARK,FINLAND,FRANCE,GERMANY 1130 DATA GREECE,ITALY,LIECHTENSTEIN,LUXEMBOURG,MONACO,NETHERLANDS 1140 DATA NORWAY,POLAND,PORTUGAL,SPAIN,SWEDEN,SWITZERLAND,YUGOSLAVIA Z>$N㐞$10 REM Bingo - Pat Hall, June '83 20 CLS 30 MODE 5 40 PROCinit 50 REPEAT 60 PROCsetup 70 REPEAT 80 PROCtest 90 UNTIL E = 1 100 PROCreward 110 UNTIL FALSE 120 END 130 140 DEF PROCinit 150 REM Set up arrays 160 DIM A( 20 ) : DIM B( 20 ) 170 DIM C( 20 ) : DIM D( 20 ) 180 DIM X( 20 ) : DIM Y( 20 ) 190 REM Select coords for boxes 200 N = 0 210 FOR I = 5 TO 20 STEP 5 220 FOR J = 3 TO 15 STEP 3 230 N = N + 1 240 X( N ) = J : Y( N ) = I 250 NEXT J 260 NEXT I 2㐞$70 game = 0 : score = 0 280 VDU 19, 0, 7, 0, 0, 0 290 VDU 19, 3, 0, 0, 0, 0 300 VDU 23, 224, &FF, &FF, &FF, &FF, &FF, &FF, &FF, &FF 310 * FX 11, 0 320 ENDPROC 330 340 DEF PROCsetup 350 COLOUR 1 : COLOUR 130 360 FOR I = 1 TO 20 370 D( I ) = 0 380 REM Calculate number 390 A( I ) = RND( 8 ) + 1 400 B( I ) = RND( 5 ) + 4 410 C( I ) = A( I ) * B( I ) 420 REM Print number in box 430 PRINT TAB( X( I ), Y( I ) ) SPC(2) TAB( X( I ), Y( I ) + 2 ) SPC(2) 440 PRINT TAB( X( I ), Y( I ) 㐞$+ 1 ); C( I ) 450 NEXT I 460 COLOUR 3 : COLOUR 128 470 game = game + 1 : E = 0 480 PRINT TAB( 4, 2) "<< BINGO >>" 490 PRINT TAB( 2, 4) "Game "; game 500 PRINT TAB( 11, 4) "Score ";score 510 ENDPROC 520 530 DEF PROCtest 540 REPEAT : T = RND( 20 ) 550 UNTIL D( T ) = 0 560 D( T ) = 1 570 REPEAT 580 PRINT TAB( 3, 22) SPC ( 56 ) 590 PRINT TAB( 3, 22) "WHAT IS "; A( T ); CHR$ 32; CHR$ 88; CHR$ 32; B( T ) 600 INPUT TAB ( 20, 22), answer 610 UNTIL answer = C( T ) 620 score = score + 1 㐞 $ 630 PRINT TAB( 11, 4) "Score ";score 640 IF score MOD 20 = 0 THEN E = 1 650 SOUND 1, -15, 150, 10 660 PRINT TAB( X( T ), Y( T ) ) SPC(3) TAB( X( T ), Y( T ) + 1 ) SPC(3) TAB( X( T ), Y( T ) + 2) SPC(3) 670 ENDPROC 680 690 DEF PROCreward 700 FOR I = 1 TO 3000 : NEXT I : CLS 710 COLOUR 1 : RESTORE 720 FOR I = 1 TO 115 730 READ F, G : VDU 31, F, G, 224 740 SOUND 1, -15, F * G, 1 750 NEXT I 760 FOR I = 1 TO 3000 : NEXT I : CLS 770 ENDPROC 780 790 REM Data for 'BINGO' 800 DATA 1,7,1,8,1,9㐞%,1,10,1,11,1,12 810 DATA 1,13,1,14,1,15,1,16,1,17,1 820 DATA 18,1,19,1,20,1,21,1,22,1,23 830 DATA 1,24,2,7,3,8,3,9,3,10,3,11 840 DATA 3,12,3,13,3,14,2,15,2,16,3 850 DATA 17,3,18,3,19,3,20,3,21,3,22 860 DATA 3,23,2,24,5,7,5,8,5,9,5,10,5 870 DATA 11,5,12,5,13,5,14,5,15,5,16 880 DATA 5,17,5,18,5,19,5,20,5,21,5 890 DATA 22,5,23,5,24,7,7,7,8,7,9,7 900 DATA 10,7,11,7,12,7,13,7,14,7,15 910 DATA 7,16,7,17,7,18,7,19,7,20,7 920 DATA 21,7,22,7,23,7,24,8,7,9,7,9 930 DATA 8,9,9,9,10,9,11,9,12,9,13,9 940 DA㐞%TA 14,9,15,9,16,9,17,9,18,9,19 950 DATA 9,20,9,21,9,22,9,23,9,24,11 960 DATA 8,11,9,11,10,11,11,11,12,11 970 DATA 13,11,14,11,15,11,16,11,17 980 DATA 11,18,11,19,11,20,11,21,11 990 DATA 22,11,23,12,7,13,8,13,9,13 1000 DATA 10,13,11,13,12,14,19,13,19 FILE0004CHK] FILE0005CHK^ FILE0006CHK_ FILE0007CHK` 㐞% 10 REM ** Number Guesser ** 20 REM ** A.J.S. 1/4/83 ** 30 REM 40 MODE1 50 REPEAT 60 CLS 70 score = 0 80 bottom = 0 90 PRINT "I will think of a number. You must try" 95 PRINT "to guess it in as few goes as you can." 100 INPUT "Choose a top limit for your number "top 110 number = RND(top) 120 REPEAT 130 PRINT"The number lies between "; 135 PRINTbottom;" and ";top 140 score = score + 1 150 PRINT "Enter guess no.";score;" "; 160 INPUT guess 170 㐞% IF guess = number THEN PROCright 180 IF guess > number THEN top = guess 190 IF guess < number THEN bottom = guess 200 UNTIL guess = number 210 PRINT"Press space bar to go again" 220 a$ = GET$ 230 UNTIL FALSE 240 END 250 260 DEF PROCright 270 PRINT"You got it in ";score;" goes" 280 ENDPROC FILE0004CHK] FILE0005CHK^ FILE0006CHK_ FILE0007CHK` 㐞% 10 REM ** HANGMAN ** 20 REM 30 REM ** A.J.S. 13/4/83 ** 40 REM 50 CLS 60 MODE6 70 PROC_instr 80 PROC_init 90 MODE2 100 REPEAT 110 PROC_intro 120 PROC-game 130 UNTIL FALSE 140 END 150 160 REM data lines 170 DATA BEAR,CAMEL,HORSE,DONKEY,ZEBRA,LION,TIGER,MONKEY,ANTELOPE 180 DATA SPRING,SUMMER,AUTUMN,WINTER 190 DATA MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY,SATURDAY,SUNDAY 200 210 DEFPROC_instr 220 VDU19,0,4;0; 230 PRINTTAB(15,0)"HANGMAN" 240 PRIN㐞%TTAB(15,1)"=======" 250 PRINTTAB(7,3)"THIS IS A GAME OF HANGMAN" 260 PRINT 270 PRINT" YOU WILL BE SHOWN A ROW OF DASHES" 280 PRINT 290 PRINT"EACH DASH STANDS FOR A LETTER OF A WORD" 300 PRINT 310 PRINT" YOU HAVE TO GUESS THE LETTERS" 320 PRINT 330 PRINT"IF YOU ARE RIGHT THE LETTER WILL APPEAR" 340 PRINT 350 PRINT"IF YOU ARE WRONG PART OF THE MAN APPEARS" 360 PRINT" AND YOU LOSE A POINT........" 370 PRINT 380 PRINT" LOSE 10 AND YOU WILL BE SWINGING!!!" 390 PRINT 40㐞%0 PRINT"YOU CAN ENTER THE WHOLE WORD AT ANY TIME" 410 PRINT" TO RETURN TO THIS PAGE PRESS " 420 PRINT 430 PRINT"PRESS THE SPACE BAR WHEN YOU ARE READY" 440 Z$=GET$ 450 ENDPROC 460 470 DEF PROC_init 480 VDU23,129,3,7,31,63,127,119,99,246 490 VDU23,130,192,224,248,252,254,238,198,111 500 VDU23,131,254,252,124,55,27,12,7,3 510 VDU23,132,127,63,62,236,216,48,224,192 520 VDU23,133,60,60,60,60,24,27,63,63 530 VDU23,134,60,60,60,60,24,216,252,252 540 VDU23,135,3,7,15,31,31,31,30㐞%,28 550 VDU23,136,192,224,240,248,248,248,120,56 560 VDU23,137,56,56,56,56,60,124,92,28 570 VDU23,138,28,28,28,28,60,62,58,56 580 VDU23,139,60,60,60,60,60,60,60,60 590 VDU23,128,255,255,255,255,255,255,255,255 600 ENDPROC 610 620 DEFPROC_intro 630 REM ground 640 COLOUR 135:CLS 650 COLOUR 4:GCOL0,0 660 MOVE 1100,500 670 GCOL 0,0 680 DRAW 500,500 690 ENDPROC 700 710 DEFPROC_game 720 ON ERROR RUN 730 RESTORE 740 FOR N = 1 TO RND(20) 750 READ W$ 760 NEXT N 770 s㐞 %core=0 780 Z=0 790 PRINTTAB(5,22)STRING$(LEN(W$),"-") 800 REPEAT 810 flag=1 820 start=1 830 PRINTTAB(1,20)STRING$(15," ") 840 PRINTTAB(1,18)"Your guess" 850 INPUTTAB(1,20)G$ 860 len = LEN(W$) 870 IF LEN(G$)<>len AND LEN(G$)>1 THEN 830 880 IF G$ = W$ THEN PROC_win 890 IF SCORE = 100 THEN 970 900 IF LEN(G$)=1 THEN PRINTTAB(Z,21)G$ 910 FOR N = 1 TO len 920 pos = INSTR(W$,G$,start) 930 IF pos <> 0 THEN start = pos+1:PROC_right:flag = 0 940 㐞% NEXT 950 IF flag <> 0 THEN score = score+1:PROC_wrong 960 Z=Z+1:REMdisplay chosen letters across screen 970 UNTIL score>9 980 IF score <> 100 THEN PROC_lose 990 ENDPROC 1000 1010 DEFPROC_wrong 1020 REM up post 1030 IF score = 1 THEN DRAW500,1000:PLOT85,550,1000 1040 IF score = 1 THEN MOVE500,500:PLOT85,550,500:MOVE1000,950:MOVE500,950 1050 REM cross-bar 1060 IF score = 2 THEN PLOT85,1000,1000:PLOT85,500,1000 1070 REM rope 1080 IF score = 3 THEN COLOUR 1:MOVE 960,1000:PLOT21,960,70㐞%0 1090 REM head 1100 IF score = 4 THEN COLOUR 1:PRINTTAB(60,8)CHR$(129)CHR$(130) 1110 IF score = 4 THEN PRINTTAB(60,9)CHR$(131)CHR$(132) 1120 REM body 1130 IF score = 5 THEN PRINTTAB(60,11)CHR$(128)CHR$(128) 1140 IF score = 5 THEN PRINTTAB(60,10)CHR$(128)CHR$(128) 1150 REM r. arm 1160 IF score = 6 THEN COLOUR2:PRINTTAB(59,10)CHR$(136)TAB(59,11)CHR$(138) 1170 REM l.arm 1180 IF score = 7 THEN COLOUR2:PRINTTAB(62,10)CHR$(136)TAB(62,11)CHR$(137) 1190 REM r. leg 1200 IF score = 8 THEN COLOUR2:PRINTT㐞%AB(60,12)CHR$(136)TAB(60,13)CHR$(134) 1210 REM l. leg 1220 IF score = 9 THEN COLOUR2:PRINTTAB(61,12)CHR$(136)TAB(61,13)CHR$(133) 1230 REM hung head 1240 IF score = 10 THEN COLOUR 13:PRINTTAB(60,8)CHR$(129)CHR$(130) 1250 IF score = 10 THEN PRINTTAB(60,9)CHR$(131)CHR$(132) 1260 COLOUR 4 1270 PRINTTAB(1,23)"Chances left ";10-score 1280 FORN=20*score TO 0 STEP -10 1290 SOUND1,-8,N,1 1300 NEXT 1310 ENDPROC 1320 1330 DEFPROC_right 1340 PRINTTAB(4+pos,22)G$ 1350 FORN=1TO100STEP10 1360 SOUND1,㐞%-8,N,1 1370 NEXT 1380 ENDPROC 1390 1400 DEFPROC_win 1410 PRINTTAB(5,22)W$ 1420 COLOUR 8 1430 PRINTTAB(1,20)"CONGRATULATIONS!" 1440 score = 100 1450 PRINTTAB(0,22)" PRESS SPACE TO GO" 1460 RESTORE 1690 1470 FOR N=1 TO 10 1480 READ P,D 1490 SOUND1,-8,P,D*1.5 1500 NEXT N 1510 M$ = GET$ 1520 ENDPROC 1530 1540 DEFPROC_lose 1550 COLOUR 10 1560 PRINTTAB(5,22)W$ 1570 PRINTTAB(1,20)"OH DEAR, YOU LOSE!!" 1580 PRINTTAB(0,22)" PRESS SPACE BAR TO GO" 1590 RESTORE 1680 1600 *FX21,5 1610 F㐞%ORN=1 TO 11 1620 READ P,D 1630 SOUND1,-8,P-25,D*1.5 1640 NEXT N 1650 M$ = GET$ 1660 ENDPROC 1670 1680 DATA 33,10,33,3,33,10,45,7,41,3,41,5,33,5,33,5,25,5,33,25 1690 DATA 61,5,69,5,77,5,81,10,61,15,81,5,77,5,81,5,89,10,69,25  PROCright 270 PRINT"You got it in ";score;" goes" 280 ENDPROC FILE0004CHK] FILE0005CHK^ FILE0006CHK_ FILE0007CHK` 㐞%10 REM 20 REM ** J. SCRIVEN ** 30 REM 40 REM ** 10/10/82 ** 50 REM 60 REM ** TIMED TABLE TEST ** 70 REM 80 REM 90 REM ** INITIALIZATION ** 100 SCREEN 0,1 110 DIM GWL.name$(30) 120 DIM score(30) 130 DIM GWL.time(30) 140 number = 1 150 flag = 0 160 REM 170 REM ** TEST LOOP ** 180 REM 190 CLS 200 LOCATE 1,13:COLOR 3:PRINT "TABLE TEST" 210 LOCATE 2,13:COLOR 3:PRINT "TABLE TEST" 220 LOCATE 11,11:PRINT "ENTER YOUR NAME" 230 INPUT GWL.name$(number) 240 LOCATE 20,1:PRINT "OK, ";GWL.na㐞%me$(number) 250 LOCATE 21,1:PRINT "PRESS SPACE BAR TO BEGIN" 260 score(number) = 0 270 GW.TIME=((VAL(LEFT$(TIME$,2))*3600)+(VAL(MID$(TIME$,4,2))*60)+(VAL(RIGHT$(TIME$,2))))*100+0 280 CLS 290 LOCATE 1,13:COLOR 3:PRINT "TABLE TEST" 300 LOCATE 2,13:COLOR 3:PRINT "TABLE TEST" 310 LOCATE 3,2:COLOR 5:PRINT GWL.name$(number) 320 FOR N = 1 TO 10 330 A = INT(RND*13+1)-1 340 B = INT(RND*13+1)-1 350 LOCATE N*2+1+1,4-N*.11+1:PRINT N;".)"A" X "B 360 LOCATE N*2+1+1,24:PRINT " = "; 370 㐞%T= INT( (((VAL(LEFT$(TIME$,2))*3600)+(VAL(MID$(TIME$,4,2))*60)+(VAL(RIGHT$(TIME$,2))))*100-GW.TIME)/100) 380 LOCATE 3,26:COLOR 2:PRINT "TIME= ";T" SECS" 390 LOCATE N*2+1+1,28:INPUT G 400 IF G = A * B THEN LOCATE N*2+1+1,32:PRINT " OK" 410 IF G = A * B THEN score(number)=score(number)+1 420 IF G <>A * B THEN LOCATE N*2+1+1,32:PRINT " NO - ";A*B 430 NEXT 440 LOCATE 24,1:PRINT GWL.name$(number)" SCORED "; 450 PRINT ;score(number)" OUT OF 10 IN ";T;" SECS" 460 LOCATE 25,1:PRINT "PR㐞 %ESS SPACE BAR FOR ANOTHER GO"; 470 GWL.time(number) = T 480 M$= INPUT$(1) 490 IF M$ = "#" THEN flag = 1 500 number = number+1 510 IF NOT flag = 1 THEN 180 520 CLS 530 REM 540 REM ** RESULTS ROUTINE ** 550 PRINT TAB(16) :COLOR 4:PRINT "RESULTS" 560 PRINT TAB(1)"NAME"; TAB(18)"SCORE" TAB(28)"TIME" 570 PRINT 580 FOR N = 1 TO 30 590 PRINT ;N;GWL.name$(N),score(N),GWL.time(N) 600 IF N = 20 THEN PRINT "PRESS SPACE BAR TO CONTINUE":M$ = INPUT$(1) 610 NEXT N 620 END 㐞& 10*FX 229 1 20*|COORDINATES BY MIKE BROOKMAN (with score table by Mark Laker), PORT REGIS, MOTCOMBE PARK, SHAFTESBURY, DORSET. 30*KEY 10 CH."B.MENU"|M 40MODE7 50DIMNAME$(15),SCORE%(15),THYME%(15),value(10) 60PROCtitle 70PROCinstruct 80MODE1:PROCaxis:S=0:TIME=0 90FORJ=1TO10:PROCrnd(10,J):A1=rnd-5:B1=RND(10)-5:GOSUB500:VDU7:GCOL0,1:PROCplot:COLOUR3:PRINTTAB(32,J*2);J;TAB(34,J*2);"x:";:C=FNNUMBER(2,""):PRINTTAB(34,J*2+1);"y:";:D=FNNUMBER(2,""):PRINTTAB(39,J*2); 100GCOL0,2:IF(A1=C㐞&)AND(B1=D)THENMOVE1220,990-J*65:DRAW1235,970-J*65:DRAW1270,1030-J*65:S=S+1 ELSEGCOL0,2:MOVE1250,1020-J*65:DRAW1270,970-J*65:MOVE1250,970-J*65:DRAW1270,1020-J*65:PROCdelay 110IFA1<>C OR B1<>D THENPROCwrong 120GCOL0,3:PROCplot 130NEXT 140COLOUR1:PRINTTAB(33,24);S;"/10" 150COLOUR3:PRINTTAB(32,26);"Press";TAB(34,27);"R";TAB(33,28);"when";TAB(32,29);"ready"; 160REPEATG$=GET$:UNTILG$="R"ORG$="r" 170MODE7:PROCmark 180GOTO80 190DEFPROCaxis 200GCOL0,3:VDU19,3,2,0,0,0 210FORY=499TO501 㐞& 220MOVE0,Y 230DRAW1000,Y 240MOVEY,0 250DRAWY,1000 260NEXT 270Y=0 280FORZ=1TO11 290MOVE1000,Y 300DRAW0,Y 310Y=Y+100 320NEXTZ 330X=0 340FORZ=1TO11 350MOVEX,1000 360DRAWX,0 370X=X+100 380NEXTZ 390REMN=0:FORZ=1TO11:PRINTTAB(N,15);Z-6;TAB(15,30-N);Z-6:N=N+3:NEXT:PRINTTAB(30,17);"x";TAB(17,2);"y" 400GCOL0,2:VDU5:N=0:FOR Z=1TO11:MOVEN-15,516:PRINT;Z-6:MOVE480,N+16:PRINT;Z-6:N=N+100:NEXT:MOVE1025,524:PRINT;"X":MOVE505,1020:PRINT;"Y":VDU4:GCOL0,2 410ENDPROC 420DEFPROCplot 㐞& 430X1=A1*100+500:Y1=B1*100+500 440VDU19,1,15,0,0,0 450MOVEX1-25,Y1-25 460DRAWX1+25,Y1+25 470MOVEX1-25,Y1+25 480DRAWX1+25,Y1-25 490ENDPROC 500FORI=1TO5E3:NEXT:RETURN 510DEFPROCtitle 520PRINTTAB(10,8);CHR$(141);" ORDERED PAIRS"TAB(10,9);CHR$(141);" ORDERED PAIRS"TAB(12,12)"MIKE BROOKMAN"TAB(7,15);CHR$(141);" PORT REGIS SOFTWARE"TAB(7,16);CHR$(141);" PORT REGIS SOFTWARE"TAB(10,20)"Press R when ready" 530G$=GET$:IFG$<>"R"ANDG$<>"r"THEN530ELSEENDPROC 540DEFPROCinstruct:CLS 550P㐞&RINTTAB(9,2);CHR$141;"ORDERED PAIRS";TAB(9,3);CHR$141;"ORDERED PAIRS"''' 560REPEAT 570READt$:PRINT't$:PROCdelay 580UNTILt$="" 590REPEAT:UNTILINKEY(-52)=0:*FX15,1 600PRINTTAB(5,23);"Press R when ready" 610REPEATX$=GET$:UNTILX$="R"ORX$="r":ENDPROC 620DATA"You will see a set of X Y axes." 630DATA"A cross will flash on the grid." 640DATA"You have to give the co-ordinates of the cross." 650DATA"Remember to enter the X value first and separate X & Y by pressing RETURN" 㐞&660DATA" " 670DATA" GOOD LUCK" 680DATA"" 690DEFPROCdelay 700TIME=0:REPEATUNTILTIME>=100:ENDPROC 710 720DEFPROCmark THYME%=TIME:PROCD("Ordered Pairs HIGH-SCORE CHART "):PRINT 730USER%=-1:REPEATUSER%=USER%+1:UNTILUSER%=15ORS>SCORE%(USER%)ORS=SCORE%(USER%)ANDTHYME%<100*THYME%(USER%):IFUSER%<15PROCgetdetails 740PROCprint 750PROCsb 760ENDPROC 770 780DEFPROCgetdetailsVDU28 0 24 39 10:IFUSER%-14FORI%=14TOUSER%+1STEP-1:NAME$(I%)=NAME$(I%+1):SCORE%(I%)=SCORE%(I%+1):THYME%(US㐞&ER%)=THYME%(I%+1):NEXT 790PRINTTAB(0,10);:NAME$(USER%)=FNINPUT(15,"What is your name?") 800CLS:THYME%(USER%)=THYME%DIV100:SCORE%(USER%)=S:ENDPROC 810 820DEFPROCprintVDU26,28 0 24 39 3:IFTHYME%(0)=0PRINT"*** NO SCORES YET ***":ENDPROCELSEPRINT'" # NAME"TAB(26)"SCORE"TAB(34)"TIME":I%=0:REPEATIFUSER%=I%PRINT"";ELSEPRINT""; 830PRINT"";I%+1"."TAB(8)NAME$(I%)TAB(28);SCORE%(I%)TAB(34);THYME%(I%)DIV60":";THYME%(I%)MOD60:I%=I%+1:UNTILI%=15ORTHYME%(I%)=0:ENDPROC 840 850DEFPROCD(A$)LOCALI%:FO㐞&RI%=0TO1:PRINTTAB(19-LENA$DIV2)CHR$141A$:NEXT:ENDPROC 860 870DEFPROCsb:PRINT''TAB(4)"PressRwhen ready to improve"'TAB(4)" orEto end":REPEATG$=GET$:UNTILG$="R"ORG$="r"ORG$="E"ORG$="e" 880IFG$="R"ORG$="r"THENENDPROC ELSE CHAIN"B.MENU" 890DEFPROCwrong 900COLOUR2:IF A1<0 THEN tabx=38 ELSE tabx=39 910IF B1<0 THEN taby=38 ELSE taby=39 920PRINTTAB(tabx,J*2);A1;TAB(taby,J*2+1);B1 930ENDPROC 940DEF FNINPUT(MAXLEN%,A$)PRINT A$;:LOCAL X%,Y%,P%,V%,A%:DIM X%-1:Y%=X% DIV &100:A%=0:!X%=X%+5:X%?2㐞 &=MAXLEN%:X%?3=ASC" ":X%?4=ASC"~":V%=VPOS:P%=POS:REPEAT PRINT TAB(P%,V%)SPC MAXLEN% TAB(P%,V%);:CALL &FFF1:UNTIL LEN $(X%+5):=$(X%+5) 950DEFFNNUMBER(MAXLEN,A$):LOCALX$,N%,P%,V%,L%:P%=POS:V%=VPOS 960X$=FNINPUT(MAXLEN,A$):N%=VAL(X$):IFN%<>0THEN=N% 970IFX$=""THEN1020 980N%=-1:FORL%=1TOLEN(X$):M$=MID$(X$,L%,1):N%=N%*(M$<>"0"):IFM$<>"0"ANDM$<>" "THEN1010 990NEXTL%:IFN%THEN1020 1000=N% 1010L%=LEN(X$):NEXTL% 1020PRINTTAB(P%,V%);SPC(MAXLEN);TAB(P%,V%);:GOTO960 1030DEFPROCrnd(max,no) 1040REM 10DIMva㐞&lue(10) 1050REM 20FORQ=1TO10:PRINTQ;:PROCrnd(10,Q)::PRINTrnd:NEXT:END 1060IFno=1:rnd=RND(max):value(no)=rnd :ENDPROC 1070REPEAT:FLAG=0:rnd=RND(max) 1080IFno>1 THEN FOR check=1 TO no-1:IF value(check)=rnd THEN FLAG=1 1090NEXT 1100UNTIL FLAG=0 1110value=rnd:value(no)=rnd :ENDPROC >=ӻE=?1?F?"z?W&~?W?F?F.?FL?F2?J?"?W&?W?F.?F?J??J??F2?J?"0?W&?Wi?FN-=?J?4?J?J?J<PH;J}?4㐞& 10 X= -(((VAL(LEFT$(TIME$,2))*3600)+(VAL(MID$(TIME$, 4,2))*60)+(VAL(RIGHT$(TIME$,2))))*100-GW.TIME):RANDO sMIZE -(((VAL(LEFT$(TIME$,2))*3600)+(VAL(MID$(TIME$,4 ?,2))*60)+(VAL(RIGHT$(TIME$,2))))*100-GW.TIME):ON ERR  OR GOTO 240 Q20 DIM STMD 530,STPN 530,STA%(263,2),R(2,2),DMMD 5,D MPN 5,XVIEW%(255),YVIEW%(255) H50 REM 㐞&p60 REM 70 REM 80 KEY0"P"REM 4 90 KEY1"Y"REM H100 KEY2"R"REM \110 KEY3"F"REM p120 KEY4"L"REM 130 KEY5"V"REM 㐞&LIST 10X=RND(-TIME):ONERRORGOTO240 20DIMSTMD 530,STPN 530,STA%(263,2),R(2,2),DMMD 5,DMPN 5,XVIEW%(255),YVIEW%(255) 50VDU23;10,32,0;0;0; 60*FX4,1 70*TV255 80*KEY0"P" 90*KEY1"Y" 100*KEY2"R" 110*KEY3"F" 120*KEY4"L" 130*KEY5"V" 140*KEY6"O" 150*KEY7"S" 160*KEY8"D" 170*KEY9"X" 180*FX200,2 190FORI%=0TO530:STMD?I%=I%?&6000:STPN?I%=I%?&6400:NEXT 240MODE7:PRINTTAB(27,23);CHR$(136);CHR$(134)"wait":VDU23;10,32,0;0;0; 250PP=0:YP=0:RP=0:XP%=0:PY%=0:ZP%=0:OMS㐞&%=0:ALIGNED%=TRUE:DOCKED%=FALSE:CRASHED%=FALSE:VF1%=0:VF2%=0:PF%=FALSE:YF%=FALSE:RF%=FALSE:FF%=FALSE:LF%=FALSE:VF%=FALSE:OF%=FALSE:SF%=FALSE:DF%=FALSE 260DDF%=FALSE:XF%=FALSE:RRDF%=FALSE:PD%=0:YD%=0:RD%=0:FD%=0:LD%=0:VD%=0:PL%=0:YL%=0:RL%=0:FL%=0:LL%=0:VL%=0:OL%=0:DN%=0:RDF%=1:SIZ%=100000:PER%=2500 270RESTORE 280FORA%=0TO59:FORB%=0TO2:READSTA%(A%,B%):STA%(A%+60,B%)=STA%(A%,B%):NEXT, 320FORA%=60TO119:STA%(A%,1)=-STA%(A%,1):NEXT 350FORA%=120TO127:FORB%=0TO2:READSTA%(A%,B%):NEXT, 390FORA%=0T㐞&O127:FORB%=0TO2:STA%(A%+128,B%)=STA%(A%,B%):NEXT, 430FORA%=128TO255:STA%(A%,1)=-(STA%(A%,1)+350)-350:NEXT 460FORA%=256TO263:FORB%=0TO2:READSTA%(A%,B%):NEXT, 500 FOR A%=0 TO 5 510 READ DMMD?A% 520 READ DMPN?A% 525 NEXT 530 CLS : VDU7,131,157,132,141 : PRINT"2002" : VDU131,157,132,141 : PRINT"2002" : VDU131,157,129 : PRINT"SIMULATOR DEGREES OF DIFFICULTY" : VDU131,157 : PRINT 540VDU132,157,135:PRINT"LEVEL ORION 4 STATUS":VDU132,157:PRINT:VDU132,157,134:PRINT" 1"CHR$(131)" WITHIN T㐞&HE APPROACH CORRIDOR":VDU132,157,131:PRINTTAB(7)"ON AXIS AND STABLE":VDU132,157:PRINT 550VDU132,157,134:PRINT" 2"CHR$(131)" ON AXIS AND APPROACHING":VDU132,157,131:PRINTTAB(7)"FROM 6,000 FEET : ROLLING":VDU132,157:PRINT:VDU132,157,134:PRINT" 3"CHR$(131)" OFF AXIS AND PASSING" 560VDU132,157,131:PRINTTAB(7)"AT 10,000 FEET : PITCHING":VDU132,157:PRINT:VDU132,157,134:PRINT" 4"CHR$(131)" REALISTIC MISSION APPROACH":VDU132,157,131:PRINTTAB(7)"FROM 20,000 FEET : ROLLING":VDU132,157:PRINT 570VDU13㐞&2,157,134:PRINT" 5"CHR$(131)" TUMBLING AT 50,000 FEET":VDU132,157:PRINT:VDU132,157,134:PRINT" 6"CHR$(131)" CRASHING WITH HUD AND STATUS":VDU132,157,131:PRINTTAB(7)"SCREEN INOPERATIVE" 580VDU129,157,135,136:PRINT:VDU129,157,135,136:PRINT" SELECT LEVEL (1-6)? ";:VDU23;10,32,0;0;0; 590DL%=GET:IFDL%<49 ORDL%>54 GOTO590 600VDU7:DL%=DL%-48:PRINTTAB(7,23)" LEVEL ";DL%;" SELECTED - WAIT" 610ONDL%GOTO620,630,640,650,660,670 620PROCTF(0,-1450+RND(250),0,0,-PI/2,0,TRUE,0,0,PI,0,0,0,0,0,0,20㐞 &0,150,FALSE,FALSE,295200):GOTO680 630PROCTF(0,-6000,0,0,-PI/2,0,FALSE,0,0,0,0,0,-.1+RND(20)/99,180+RND(50),0,0,800,250,FALSE,FALSE,254400):GOTO680 640PROCTF(7000,-4000,-7000+RND(500),PI/4,0,0,TRUE,0,-.3,0,-.1+RND(20)/99,0,0,200+RND(99),150,0,1500,1000,FALSE,FALSE,214200):GOTO680 650PROCTF(13000+RND(999),-2000+RND(4000),-14000,.7+RND(1)/5,0,0,TRUE,0,.01,0,0,0,-.1+RND(20)/99,300+RND(99),270,-70,1600,1800,TRUE,FALSE,165000):GOTO680 660PROCTF(0,50000,0,0,PI/2,0,FALSE,0,0,0,(RND(1)-.5)/3,(RND(1)-.5)/㐞'3,.2,500+RND(99),700+RND(99),300+RND(99),2000,3500,TRUE,FALSE,165000):GOTO680 670PROCTF(1200,1200,1200,-PI/4,PI/5,0,TRUE,0,0,1,0,0,0,140,0,0,6300,350,TRUE,TRUE,0) 680MODE4:PRINTTAB(12,12)"Stand by for the"TAB(12,14)"view from ORION's"TAB(13,16)"cockpit window" 690VDU23;10,32,0;0;0; 700TV=SQR(XV^2+YV^2+ZV^2):TR=SQR(STA%(260,0)^2+STA%(260,1)^2+STA%(260,2)^2) 710T1%=TIME 720REPEAT 730PROCIP 740PROCFAR 750PROCCA 760PROCVT 770PROCVR 780TV=SQR(XV^2+YV^2+ZV^2):TR=SQR(STA%(260,0)㐞'^2+STA%(260,1)^2+STA%(260,2)^2):T2%=TIME-T1%+T3%:LATMISS=FNANG(1):VERTMISS=FNANG(2) 790IFVF1%=0 ANDVF2%=1 VF2%=0:PROCW1:MODE4:VDU23;10,32,0;0;0;:PROCW2:GOTO830 800IFVF1%=0 ANDVF2%=0 PROCW1:PROCW2 810IFVF1%=1 ANDVF2%=0 VF2%=1:MODE7 820IFVF1%=1 ANDVF2%=1 PROCST 830PROCTST 840PROCDT 850UNTILNOTALIGNED%ORDOCKED%ORCRASHED% 860MODE7 870IFNOTALIGNED%PRINTTAB(5,10)CHR$(130)"YOU CANNOT APPROACH TO LESS"TAB(4,12)CHR$(130)"THAN"CHR$(129)"1500 FEET"CHR$(130)"UNLESS ALIGNED"TAB(2,14)CHR$(130)"㐞'WITH THE"CHR$(132)"DOCKING APPROACH CORRIDOR":SOUND1,1,4,40:GOTO900 880IFDOCKED%PRINTTAB(9,10)CHR$(141)CHR$(129)"CONGRATULATIONS"TAB(9,11)CHR$(141)CHR$(129)"CONGRATULATIONS"TAB(2,14)CHR$(130)"YOU HAVE SUCCESSFULLY"CHR$(132)"SOFT"CHR$(130)"DOCKED":PROCDOCK:GOTO900 890IFCRASHED%PRINTTAB(14,10)CHR$(131)"HARD LINES"TAB(9,16)CHR$(133)"SOFT DOCK NOT ACHIEVED":SOUND1,-15,1,40 900PRINTTAB(14,22)"Another run?"; 910ONINSTR("YyNn",GET$)GOTO240,240,920,920ELSE910 920MODE7:PRINTTAB(10,12)"END OF SIMULATIO㐞'N"TAB(0,20) 930GOTO930 940DEFPROCIP 950REPEAT 960K%=INKEY(0) 970IFK%=80THENPF%=TRUE:K%=INKEY(0):IFK%=138ORK%=139THENPD%=2*(138.5-K%):K%=INKEY(0):IFK%>47ANDK%<58THENPL%=K%-48 980IFK%=89THENYF%=TRUE:K%=INKEY(0):IFK%=136ORK%=137THENYD%=2*(K%-136.5):K%=INKEY(0):IFK%>47ANDK%<58THENYL%=K%-48 990IFK%=82THENRF%=TRUE:K%=INKEY(0):IFK%=136ORK%=137THENRD%=2*(136.5-K%):K%=INKEY(0):IFK%>47ANDK%<58THENRL%=K%-48 1000IFK%=70THENFF%=TRUE:K%=INKEY(0):IFK%=138ORK%=139THENFD%=2*(K%-138.5):K%=INKEY(0):IFK%㐞'>47ANDK%<58THENFL%=K%-48 1010IFK%=76THENLF%=TRUE:K%=INKEY(0):IFK%=136ORK%=137THENLD%=2*(K%-136.5):K%=INKEY(0):IFK%>47ANDK%<58THENLL%=K%-48 1020IFK%=86THENVF%=TRUE:K%=INKEY(0):IFK%=138ORK%=139THENVD%=2*(K%-138.5):K%=INKEY(0):IFK%>47ANDK%<58THENVL%=K%-48 1030IFK%=79THENOF%=TRUE:K%=INKEY(0):IFK%>47ANDK%<58THENOL%=K%-48 1040IFK%=83THENSF%=TRUE 1050IFK%=68THENDF%=TRUE:K%=INKEY(0):IFK%>47ANDK%<58THENDN%=K%-48 1060IFK%=88THENXF%=TRUE 1070IFK%=81THENRRDF%=TRUE 1080UNTILK%=-1 1090*FX15,1 1100IFRR㐞'DF%ANDRDF%=0THENRDF%=1:RRDF%=FALSE 1110IFRRDF%ANDRDF%=1THENRDF%=0:RRDF%=FALSE 1120IFPF%THENPP=PD%*PL%/58:PF%=FALSE 1130IFYF%THENYP=YD%*YL%/58:YF%=FALSE 1140IFRF%THENRP=RD%*RL%/58:RF%=FALSE 1150IFFF%THENXP%=FD%*FL%:FF%=FALSE 1160IFLF%THENPY%=LD%*LL%:LF%=FALSE 1170IFVF%THENZP%=VD%*VL%:VF%=FALSE 1180IFOF%THENOMS%=OL%*50:OF%=FALSE 1190IFSF%ANDVF1%=0 VF1%=1:SF%=FALSE 1200IFSF%ANDVF1%=1 VF1%=0:SF%=FALSE 1210IFNAF% VF1%=0 1220IFDF%ANDDN%>0THENDDF%=TRUE:DF%=FALSE 1230IFDF%ANDDN%=0THENDDF%=㐞'FALSE:DF%=FALSE 1240IFNAF% DDF%=FALSE 1250IFXF2%GOTO1270 1260IFXF%AND(TV>100 ORSQR(PR^2+YR^2+RR^2)>0.17)THENXF%=FALSE:PR=0:YR=0:RR=0:XV=0:YV=0:ZV=0:PL%=0:YL%=0:RL%=0:FL%=0:LL%=0:VL%=0:OL%=0:VF1%=1:PP=0:YP=0:RP=0:XP%=0:PY%=0:ZP%=0:OMS%=0:TV=0 1270SOUND1,-15,255,2:SOUND0,-10,1,1 1280IFTR<1800 ANDTR>1500 SOUND2,3,100,70:ENDPROC 1290IFMANF<100 OROMSF%<50 SOUND2,4,70,50:ENDPROC 1300IFRDF%=1 THENSOUND&1002,0,0,TR/100:SOUND&1003,0,0,TR/100:SOUND2,1,120,15:SOUND3,1,125,15 1310ENDPROC 1320DEFPROCFA㐞'R 1330PR=PR+PP:YR=YR+YP:RR=RR+RP 1340MANF=MANF-ABS(XP%)-ABS(PY%)-ABS(ZP%)-10*ABS(PP)-10*ABS(YP)-10*ABS(RP) 1350IFMANF<=0THENMANF=0:PP=0:YP=0:RP=0:XP%=0:PY%=0:ZP%=0 1360IFOMSF%<=0THENOMSF%=0:OMS%=0 1370IFOMSF%>OMS%THENOMSF%=OMSF%-OMS%ELSEOMS%=OMSF%:OMSF%=0 1380ENDPROC 1390DEFPROCVR 1400XV=XV+XP%+OMS%:YV=YV+PY%:ZV=ZV+ZP% 1410ENDPROC 1420DEFPROCCA:SP=SIN(PR):CP=COS(PR):SR=SIN(RR):CR=COS(RR):SY=SIN(YR):CY=COS(YR):R(0,0)=CY*CP:R(0,1)=SY*CP:R(0,2)=-SP:R(1,0)=-SY*CR+CY*SP*SR:R(1,1)=CY*CR+SY*SP*㐞 'SR:R(1,2)=CP*SR:R(2,0)=CY*SP*CR+SY*SR:R(2,1)=SY*SP*CR-SR*CY:R(2,2)=CP*CR:ENDPROC 1460DEFPROCVT 1470LOCALX,Y,Z 1480X=XV*R(0,0)+YV*R(0,1)+ZV*R(0,2):Y=XV*R(1,0)+YV*R(1,1)+ZV*R(1,2):Z=XV*R(2,0)+YV*R(2,1)+ZV*R(2,2):XV=X:YV=Y:ZV=Z 1490ENDPROC 1500DEFPROCDT 1510LOCALX,Y,Z 1520FORA%=0TO263:X=STA%(A%,0)*R(0,0)+STA%(A%,1)*R(0,1)+STA%(A%,2)*R(0,2):Y=STA%(A%,0)*R(1,0)+STA%(A%,1)*R(1,1)+STA%(A%,2)*R(1,2):Z=STA%(A%,0)*R(2,0)+STA%(A%,1)*R(2,1)+STA%(A%,2)*R(2,2):STA%(A%,0)=X-XV:STA%(A%,1)=Y-YV:STA%(A%,2)=Z-ZV㐞':NEXT 1550ENDPROC 1560DEFPROCTST 1570LOCALX,Y,Z,A,B 1580IFTR>1500 THEN ALIGNED%=TRUE:ENDPROC 1590IFTRSTA%(260,0)ANDABS(STA%(256,㐞'2)-STA%(257,2))<18 ANDSTA%(258,2)>STA%(260,2)THENDOCKED%=TRUE ELSEDOCKED%=FALSE 1630IFX<288 ANDNOTDOCKED%THENCRASHED%=TRUE ELSECRASHED%=FALSE 1640ENDPROC 1650DEFPROCW1 1660NEG%=FALSE 1670FORJ%=0TO255 1680IFSTA%(J%,0)<1 NEG%=TRUE:GOTO1710 1690XVIEW%(J%)=PER%*STA%(J%,1)/STA%(J%,0) 1700YVIEW%(J%)=PER%*STA%(J%,2)/STA%(J%,0) 1710NEXT 1720ENDPROC 1730DEFPROCW2 1740VDU26,28,0,31,39,27,24,0;160;1279;1023;29,640;600; 1750PRINTTAB(0,0)STRING$(40,"-") 1760PRINTTAB(0,1)CHR$(224);"P ";CHR$(㐞'224);"Y ";CHR$(224);"R RANGE VEL ACSF" 1770IFNOTDDF%PRINTTAB(33,1)"OMSF"ELSEPRINTTAB(33,1)"HUD " 1780@%=&2000A 1790PRINTTAB(0,3);DEG(-PR);" ";TAB(5,3)DEG(YR);" ";TAB(10,3)DEG(-RR)" ";TAB(15,3)TR;" ";TAB(22,3)TV;" ";TAB(27,3)MANF;" " 1800IFDDF%PRINTTAB(33,3);DN%*100;" "ELSEIFOMSF%>0 PRINTTAB(33,3);OMSF%;" "ELSEPRINTTAB(33,3);"0. " 1810IFALIGNED%ANDTR<1500 THENPROCDRAW(240)ELSEPROCDRAW(530) 1820ENDPROC 1830DEFPROCDRAW(B%) 1840LOCALD%:CLG 1850IFDDF%THENPROCDATUM 1860IFNEG%ENDPROC 㐞'1870FORD%=0TOB% 1880VDU25,STMD?D%,XVIEW%(STPN?D%);YVIEW%(STPN?D%); 1890NEXT 1900FORA%=0TO5 1910VDU25,DMMD?A%,PER%*STA%(DMPN?A%+256,1)/STA%(DMPN?A%+256,0);PER%*STA%(DMPN?A%+256,2)/STA%(DMPN?A%+256,0); 1920NEXT 1930ENDPROC 1940DEFPROCDATUM 1950MOVE-320,0:DRAW320,0:MOVE0,-320:DRAW0,320:MOVE-50,-320:DRAW50,-320:MOVE-480,-400:DRAW-480,-420:DRAW480,-420:DRAW480,-400:MOVE0,-420:DRAW0,-400:MOVE-540,400:DRAW-560,400:DRAW-560,-400:DRAW-540,-400:MOVE-560,0:DRAW-540,0 1960IFSTA%(260,0)>0 THENMOVE0,0:D㐞'RAWPER%*STA%(260,1)/STA%(260,0),PER%*STA%(260,2)/STA%(260,0) 1970IFXV>-0.1 THENMOVE0,0:PLOT21,320*YV/(DN%*100),320*ZV/(DN%*100):PLOT0,-2*SIZ%/TR,0:PLOT1,4*SIZ%/TR,0:PLOT0,-2*SIZ%/TR,0:PLOT1,0,SIZ%/TR:MOVE-50,320*XV/(DN%*100)-325:PLOT1,100,0:PLOT1,0,10:PLOT1,-100,0:PLOT1,0,-10 1980MOVE480*STA%(260,1)/(DN%*100)-10,-440:PLOT1,10,20:PLOT1,10,-20:MOVE-580,400*STA%(260,2)/(DN%*100)+10:PLOT1,20,-10:PLOT1,-20,-10:MOVE320*YV/(XV+0.01)+20,320*ZV/(XV+0.01):PLOT1,-20,20:PLOT81,0,-40:PLOT81,-20,20 1990IFSTA%(263,0㐞')>0 THENMOVEPER%*STA%(263,1)/STA%(263,0)+10,PER%*STA%(263,2)/STA%(263,0)+10:PLOT1,-20,-20:PLOT0,0,20:PLOT1,20,-20 2002VDU24,-540;-400;639;423; 2010ENDPROC 2020DEFPROCST 2030VDU30,23;10,32,0;0;0;:@%=&2030A 2040VDU130,157,135:PRINT"Nav.Computer ";TIME*1.001;TAB(30)"*****" 2050VDU130,157:PRINT 2060VDU130,157,132:PRINTTAB(10)"ORION 4 STATUS" 2070VDU130,157:PRINT 2080VDU130,157,132:PRINTTAB(1)"ASCENT PHASE : FINAL RENDEZVOUS" 2090VDU130,157:PRINT 2100VDU133,157,135:PRINT"ATT. RATES D/S"TAB(㐞'17)"VELOCITIES FT/S" 2110@%=&2000A 2120VDU133,157,135:PRINT"PITCH = ";DEG(-PR);" ";TAB(17)"FORWARD = ";XV;" " 2130VDU133,157,135:PRINT"YAW = ";DEG(YR);" ";TAB(17)"LATERAL = ";YV;" " 2140VDU133,157,135:PRINT"ROLL = ";DEG(-RR);" ";TAB(17)"VERTICAL = ";ZV;" " 2150VDU133,157,135:PRINTTAB(17)"TOTAL = ";TV;" " 2160VDU132,157,131:PRINTTAB(10)"THRUST LEVELS" 2170VDU132,157,135:PRINT"PITCH = ";-PP*58;" ";TAB(17)"FORWARD = ";XP%;" " 2180VDU132,157,135:PRINT"YAW = ";YP*58;" ";TAB(17)"㐞'LATERAL = ";PY%;" " 2190VDU132,157,135:PRINT"ROLL = ";-RP*58;" ";TAB(17)"VERTICAL = ";ZP%;" " 2200VDU132,157,135:PRINTTAB(1)"ORBIT MANOUVERING SYSTEM = ";OL%;" " 2210VDU129,157,131:PRINTTAB(9)"FUEL LEVELS LBS" 2220VDU129,157,135:PRINT"ACS FUEL = ";MANF;" ";TAB(18)"OMS FUEL = ";OMSF%;" " 2230VDU131,157,132:PRINT"DISTANCE TO PRIMARY DOCKING PORT FT" 2240VDU131,157,129:PRINT"FORWARD = ";STA%(260,0);" " 2250VDU131,157,129:PRINT"LATERAL = ";STA%(260,1);" ";TAB(20)"TOTAL" 2260VDU131,157,129:㐞 'PRINT"VERTICAL = ";STA%(260,2);" ";TAB(20)"RANGE = ";TR;" " 2270VDU133,157,135:PRINT"PRIMARY PORT MISALIGNMENT DEG" 2280VDU133,157,135:PRINT"LATERAL = ";DEG(LATMISS);" ";TAB(18)"VERTICAL = ";DEG(VERTMISS);" " 2290VDU130,157,132:PRINT"FLIGHT TIME FROM LAUNCH T+";T2%DIV6000;CHR$(8);"M ";T2%MOD6000/100;CHR$(8);"S "TAB(0,0) 2300ENDPROC 2310DEFPROCTF(A%,B%,C%,D,E,F,G%,H,I,J,K,L,M,N%,O%,P%,Q%,R%,S%,T%,U%) 2320FORV%=0TO263:STA%(V%,0)=STA%(V%,0)+A%:STA%(V%,1)=STA%(V%,1)+B%:STA%(V%,2)=STA%(V%,2)+C%:N㐞(EXT 2350PR=D:YR=E:RR=F:XV=0:YV=0:ZV=0:PROCCA:PROCDT:IFNOTG%GOTO2400 2380PR=H:YR=I:RR=J:PROCCA:PROCDT 2400PR=K:YR=L:RR=M:XV=N%:YV=O%:ZV=P%:MANF=Q%:OMSF%=R%:XF2%=S%:NAF%=T%:T3%=U% 2410ENDPROC 2420DEFFNANG(AX%) 2430LOCALA1,A2,D%,AT 2440A1=ATN(STA%(260,AX%)/STA%(260,0)) 2450IFSTA%(260,0)<0 A1=A1+PI 2460D%=STA%(261,0)-STA%(260,0) 2470A2=ATN((STA%(261,AX%)-STA%(260,AX%))/D%) 2480IFD%<0 A2=A2+PI 2490AT=A1-A2 2500IFAT>PI AT=AT-2*PI:GOTO2500 2510IFAT<-PI AT=AT+2*PI:GOTO2510 2520=AT 25㐞(30DEFPROCDOCK:PRINTTAB(6,16)"Docking time was T+";T2%DIV6000;CHR$(8);"M ";T2%MOD6000/100;CHR$(8);"S ":SOUND1,2,0,220:ENDPROC 2540DATA150,130,60,-150,130,60,-150,130,-60,150,130,-60,75,130,180,-75,130,180,-180,130,75,-180,130,-75,-75,130,-180,75,130,-180,180,130,-75,180,130,75,50,50,180,-50,50,180,-50,50,660,50,50,660,-180,50,50,-180,50,-50,-660,50,-50,-660,50 2550DATA50,-50,50,-180,50,50,-180,50,50,-660,-50,50,-660 2560DATA180,50,-50,180,50,50,660,50,50,660,50,-50,130,110,660,-130,110,660,-370,110,560㐞(10 REM BBC Othello - 2/12/82 - JCD 20 REM Modified - 27/6/83 - TJS 30 SCREEN 0,1:REM 40 IF REM 50 ON:ERROR:LS:PRINT "YOU RESIGNED":GOTO 160 60 GOSUB 1350:GOSUB 180 70 GOSUB 1660:SCREEN 2,1 80 CLS::GOSUB 290 90 IF FL=1 GOSUB 760:GOTO 140 100 IF P=0 GOSUB 1240 ELSE GOSUB 1480 110 GOSUB 870 120 IF P=0 GOSUB 760:GOSUB 990 130 IF P=1 GOSUB 990:GOSUB 760 140 P=1-P:CLR=3-CLR:IF NC>0 FL=0 ELSE FL=FL+1:GOSUB 1070 150 IF NOT P(0)*P(1)=0 AND NOT P(0)+P(1)=64 AND NOT FL=2 THEN 90:GOSUB 1120 160 GOSUB 㐞(1190:IF A$="Y" SCREEN 0,1::GOTO 70 170 END 180 REM 190 REM 200 REM 210 REM 220 REM 230 REM 240 REM 250 REM 260 REM 270 DIM A(99),C(99),R(8),WT(6),PC(7),D(7),P(1),W(89),Z(30),C$(1) 280 RETURN 290 REM 300 RESTORE 310 DATA 1,11,10,9,-1,-11,-10,-9 320 FOR V=0 TO 7:READ D(V):NEXT::FOR Z=0 TO 99:A(Z)=1:C(Z)=0:NEXT 330 FOR X=3 TO 6:FOR Y=3 TO 6:A(10*Y+X)=0:NEXT Y,X 340 C(34)=1:C(43)=1:C(56)=1:C(65)=1 350 DATA 30,10,1,0,0,1,10,30,300,200,150,400,150,0,800 360 FOR I=1 TO 8:READ R(I):NEXT::FOR I=㐞(0 TO 6:READ WT(I):NEXT 370 DATA 0,80,20,56,28,28,56,20,80,0,0,20,5,14,7,7,14,5,20,0 380 DATA 0,56,14,40,20,20,40,14,56,0,0,28,7,20,10,10,20,7,28,0 390 FOR I=10 TO 49:READ W(I):W(99-I)=W(I):NEXT 400 FL=0:TS=4*(1+P):TT=12-TS::C$(0)="BLACK":C$(1)="WHITE" 410 A(44)=TT:A(55)=TT:A(45)=TS:A(54)=TS 420 LOCATE 3,8:PRINT "O T H E L L O":REM 430 FOR Y=912 TO 144 STEP -96:DRAW "BM30,"+STR$(400-INT(.390625*Y)):DRAW "M507,"+STR$(400-INT(.390625*Y)):NEXT 440 FOR X=48 TO 816 STEP 96:DRAW "BM"+STR$(INT(.625*X))+",43㐞(":DRAW "M"+STR$(INT(.625*X))+",343":NEXT 450 FOR I=0 TO 7:DRAW "BM"+STR$(INT(.625*(80+96*I)))+",350":PRINT CHR$(65)+I) 460 DRAW "BM5,"+STR$(400-INT(.390625*(208+96*I))):PRINT CHR$(49)+I):NEXT:::REM 470 Z=44:GW560.C=3:GW560.I=0:GOSUB 560:Z=55:=3:=0:GOSUB 560 480 Z=45:=0:=0:GOSUB put:Z=54:=0:=0:GOSUB put 490 LOCATE 25,28:PRINT "YOU HAVE:" :LOCATE 27,28:PRINT "I HAVE:" 500 CLR=0:P(0)=2:P(1)=2:GOSUB 730 510 LOCATE 31,2:PRINT "You are ";::PRINT C$(1-P); 520 PRINT " - I am ";::PRINT C$(P); 530 PRINT " - 㐞(level ";::PRINT CHR$(64)+LV);:REM 540 VIEW PRINT 5 TO 23:IF P=0 PRINT "MY TURN" 550 RETURN 570 X1= INT(Z/10):Y1=9-(Z MOD 10):X=3*X1-1:Y=3*Y1+1 580 LOCATE Y+1,X+1:PRINT CHR$(224+I);:PRINT CHR$(228+I);:PRINT CHR$(10);:PRINT CHR$(8);:PRINT CHR$(8);:PRINT CHR$(232+I);:PRINT CHR$(236+I); 590 LOCATE 1,1 600 RETURN 610 REM 620 =CLR:=0:GOSUB put:FOR GW610.I=1 TO 2 630 FOR T=1 TO 800:NEXT::=1:=0:GOSUB put 640 FOR T=1 TO 800:NEXT::=CLR:=0:GOSUB put 650 NEXT GW610.I 660 RETURN 670 REM 680 FOR I=0 TO 3:㐞(FOR T=1 TO 50:NEXT::GW670.=I:GOSUB put 690 NEXT GW670.I:FOR GW670.I=2 TO 0 STEP -1 700 FOR T=1 TO 50:NEXT::GW670.=I:GOSUB put 710 NEXT GW670.I 720 RETURN 730 REM 740 LOCATE 25,38:PRINT ,P(1) :LOCATE 27,38:PRINT ,P(0):REM 750 RETURN 760 REM 770 IF P=1 PRINT "MY TURN -":PRINT :PRINT "THINKING"; 780 TT=4+4*P:TS=12-TT:NC=0:FOR I=11 TO 88 790 C=0:IF A(I)>0 GOTO 850 800 Q=I MOD 10:IF Q=0 OR Q=9 GOTO 850 810 FOR V=0 TO 7:J=I:PC=-1:D=D(V) 820 J=J+D:PC=PC+1:IF NOT A(J)<>TT THEN 820 830 IF A(J)<>TS PC=㐞 (0 840 C=C+PC:NEXT::IF C>0 NC=NC+1 850 C(I)=C:NEXT I 860 RETURN 870 REM 880 TS=4+4*P:TT=12-TS 890 FOR I=-10 TO 10 STEP 10:FOR J=-1 TO 1 900 K=I+J+Z:IF A(K)=1 A(K)=0 910 NEXT J,I:A(Z)=TS:FOR V=0 TO 7 920 J=Z:PC=-1:D=D(V) 930 J=J+D:PC=PC+1:IF NOT A(J)<>TT THEN 930 940 IF A(J)<>TS PC=0 950 PC(V)=PC:IF PC=0 GOTO 970 960 J=Z:FOR N=1 TO PC:J=J+D:A(J)=TS:NEXT N 970 NEXT V 980 RETURN 990 REM 1000 VIEW PRINT 1 TO 32:GOSUB 610:P(P)=P(P)+1:GOSUB 730:J=Z 1010 FOR V=0 TO 7:Z=J:IF PC(V)=0 GOTO 1040 1020㐞( FOR N=1 TO PC(V):Z=Z+D(V):GOSUB 670 1030 P(P)=P(P)+1:P(1-P)=P(1-P)-1:GOSUB 730:NEXT N 1040 NEXT V 1050 VIEW PRINT 5 TO 23:CLS 1060 RETURN 1070 REM 1080 PRINT :PRINT :REM 1090 IF P=1 PRINT "YOU"; ELSE PRINT "I"; 1100 PRINT " CAN'T GO":PRINT :REM 1110 RETURN 1120 REM 1130 IF FL<2 CLS 1140 PRINT "GAME OVER":PRINT :REM 1150 IF P(0)P(1) PRINT "YOU LOST -":PRINT㐞( ::PRINT "HARD LUCK!":PRINT 1180 RETURN 1190 REM 1200 PRINT "PLAY AGAIN?";:REM 1210 REM 1220 A$= INPUT$(1):IF A$<>"Y" AND A$<>"N" GOTO 1210 1230 RETURN 1240 REM 1250 MX=0:IX=0:FOR Z=11 TO 88:C=C(Z):IF C=0 GOTO 1320 1260 IF LV=3 C=C+WT( INT((R(Z MOD 10)+R( INT(Z/10)))/10)) 1270 IF LV=2 C=C*W(Z) 1280 IF C1 IX= INT(RND*IX+1) 1330 Z=Z(IX) 1340 RETURN 1350 REM 1360 CLS::LOCATE 3,12:COLOR 4:PRINT "O T H 㐞(E L L O" :LOCATE 4,12:COLOR 4:PRINT "O T H E L L O" 1370 PRINT :PRINT :PRINT :PRINT "When playing this game, you do not need" 1380 PRINT "to press" :COLOR 6:PRINT "RETURN" :COLOR 8:PRINT ", Simply type the first" 1390 PRINT "letter of your response, e.g." :COLOR 6:PRINT "Y" :COLOR 8:PRINT "for" :COLOR 6:PRINT "YES" 1400 PRINT :PRINT "To enter a move, type the column letter":PRINT "and row number, e.g." :COLOR 6:PRINT "F3" 1410 PRINT :PRINT "To resign a game, press" :COLOR 6:PRINT "ESCAPE" 1420 PRINT :㐞(PRINT "I can play three strategies -" :COLOR 6:PRINT "A" :COLOR 8:PRINT "(the" 1430 PRINT "simplest)," :COLOR 6:PRINT "B" :COLOR 8:PRINT "or" :COLOR 6:PRINT "C" 1440 REM 1450 LOCATE 23,8:PRINT "Press" :COLOR 2:PRINT "SPACE BAR" :COLOR 8:PRINT "to begin"; 1460 A$= INPUT$(1):IF A$<>" " GOTO 1440 1470 RETURN 1480 REM 1490 PRINT "ENTER YOUR":PRINT "MOVE: "; 1500 REM 1510 X= ASC(INPUT$(1)) -64:IF X<1 OR X>8 GOTO 1620 1520 :COLOR X:PRINT +64);:REM 1530 REM 1540 Y= ASC(INPUT$(1)) -48:IF Y<1 OR Y>8 GOT㐞(O 1620 1550 :COLOR Y:PRINT +48)::Z=10*X+Y 1560 IF A(Z)=0 AND C(Z)>0 GOTO 1650 1570 CLS::PRINT "YOU CAN'T GO"; 1580 PRINT "AT ";::COLOR X:PRINT +64); :COLOR Y:PRINT +48);:REM 1590 IF A(Z)>3 PRINT " - IT'S";"OCCUPIED!" 1600 IF A(Z)<2 AND C(Z)=0 PRINT " - NO":PRINT "CAPTURES!" 1610 PRINT :PRINT "TRY AGAIN.":PRINT ::GOTO 1490 1620 CLS::PRINT "To enter":PRINT "your move,":PRINT "first press":PRINT "key "; 1630 PRINT "A-H";::PRINT " for":PRINT "column, then";"key "; 1640 PRINT "1-8";::PRINT " for":PRINT㐞( "row.":PRINT :GOTO 1490 1650 RETURN 1660 REM 1670 CLS::LOCATE 3,12:COLOR 4:PRINT "O T H E L L O" :LOCATE 4,12:COLOR 4:PRINT "O T H E L L O" 1680 LOCATE 8,1:PRINT "Which level?"; 1690 REM 1700 LV= ASC(INPUT$(1)) -64 1710 IF LV<1 OR LV>3 LOCATE 8,14:PRINT "- type" :COLOR 6:PRINT "A" :COLOR 8:PRINT "," :COLOR 6:PRINT "B" :COLOR 8:PRINT "or" :COLOR 6:PRINT "C" :COLOR 8:PRINT ":";:GOTO 1690 1720 :COLOR 3:COLOR LV:PRINT +64) LOCATE 12,1:PRINT "Do you want to have first move?"; 1730 REM 1740 A$= INPUT$㐞((1) 1750 IF A$="Y" P=1:GOTO 1780 1760 IF A$="N" P=0:GOTO 1780 1770 LOCATE 15,1:PRINT "Type" :COLOR 6:PRINT "Y" :COLOR 8:PRINT "or" :COLOR 6:PRINT "N" :COLOR 8:PRINT ":";:GOTO 1730 1780 LOCATE 12,33:COLOR 3:PRINT A$ :LOCATE 15,1:PRINT "Very well. Black moves first, so you" 1790 PRINT "have the";:IF P=1 :COLOR 7:PRINT "BLACK"; ELSE :COLOR 7:PRINT "WHITE"; 1800 :COLOR 8:PRINT "pieces." 1810 LOCATE 23,2:PRINT "Press" :COLOR 2:PRINT "SPACE BAR" :COLOR 8:PRINT "to start the game"; 1820 REM 1830 A$= IN㐞(PUT$(1):IF A$<>" " GOTO 1820 1840 RETURN  "or" :COLOR 6:PRINT "N" :COLOR 8:PRINT ":";:GOTO 1730 1780 LOCATE 12,33:COLOR 3:PRINT A$ :LOCATE 15,1:PRINT "Very well. Black moves first, so you" 1790 PRINT "have the";:IF P=1 :COLOR 7:PRINT "BLACK"; ELSE :COLOR 7:PRINT "WHITE"; 1800 :COLOR 8:PRINT "pieces." 1810 LOCATE 23,2:PRINT "Press" :COLOR 2:PRINT "SPACE BAR" :COLOR 8:PRINT "to start the game"; 1820 REM 1830 A$= INZ> (N㐞),-560,110,370,-660,110,130,-660,110,-130,-560,110,-370,-370,110,-560,-130,110,-660,130,110,-660,370,110,-560,560,110,-370 2570DATA660,110,-130,660,110,130,560,110,370,370,110,560,160,110,800,-160,110,800,-450,110,680,-680,110,450,-800,110,160,-800,110,-160,-680,110,-450,-450,110,-680,-160,110,-800,160,110,-800,450,110,-680,680,110,-450,800,110,-160,800,110 2580DATA160,680,110,450,450,110,680,40,-240,100,-40,-240,100,-100,-240,40,-100,-240,-40,-40,-240,-100,40,-240,-100,100,-240,-40,100,-240,40,-100,0,0,㐞)100,0,0,0,0,-40,0,-100,-40,0,0,0,0,-350,0,0,-100,0,0,1150,0 2590DATA4,0,5,1,4,2,5,4,5,6,5,3 >FORWARD = ";XV;" " 2130VDU133,157,135:PRINT"YAW = ";DEG(YR);" ";TAB(17)"LATERAL = ";YV;" " 2140VDU133,157,135:PRINT"ROLL = ";DEG(-RR);" ";TAB(17)"VERTICAL = ";ZV;" " 2150VDU133,157,135:PRINTTAB(17)"TOTAL = ";TV;" " 2160VDU132,157,131:PRINTTAB(10)"THRUST LEVELS" 2170VDU132,157,135:PRINT"PITCH = ";-PP*58;" ";TAB(17)"FORWARD = ";XP%;" " 2180VDU132,157,135:PRINT"YAW = ";YP*58;" ";TAB(17)"㐞)10 ON ERROR GOTO 290 20 REM 30 SCREEN 0,1:REM 40 LOCATE 4,11:PRINT ; CHR$()&86; ; CHR$()&84;"Space Hi.Way "; 50 LOCATE 5,11:PRINT ; CHR$()&86; ; CHR$()&84;"Space Hi.Way "; 60 LOCATE 9,7:PRINT ; CHR$()&81;"Copyright (c) Amcom 1983" 70 LOCATE 10,7:PRINT ; CHR$()&81;"Copyright (c) Amcom 1983" 80 LOCATE 14,7:PRINT ; CHR$()&86; ; CHR$()&84;"Written by Mat Newman "; 90 LOCATE 15,7:PRINT ; CHR$()&82; ; CHR$()&84;"Written by Mat Newman "; 100 LOCATE 18,2:PRINT ; CHR$()&83; ; CHR$()&84;"Ideas by Mat㐞) Newman & Dan Tench "; 110 LOCATE 19,2:PRINT ; CHR$()&87; ; CHR$()&84;"Ideas by Mat Newman & Dan Tench "; 120 LOCATE 21,3:PRINT CHR$()&85;"Thanks also to:" 130 LOCATE 22,19:PRINT CHR$()&87;"Pete Gee" 140 LOCATE 23,19:PRINT CHR$()&87;"Chris Clare" 150 LOCATE 24,19:PRINT CHR$()&87;"'Eddie'" 156 GOTO 160 158 GW.IN.X=-1:FOR GW.158=0 TO GW.IN.D:GW.IN.X$=INKEY$:IF LEN(GW.IN.X$)<>0 THEN GW.158=GW.IN.D:GW.IN.X=ASC(GW.IN.X$) 159 NEXT:RETURN 160 GW.IN.D=300:GOSUB 158:A=GW.IN.X 170 REM 180 REM 190 REM 㐞) 200 REM 210 SCREEN 0,1:FOR T%=0 TO 1:LOCATE T%+1,1:PRINT CHR$()&81+ + CHR$()&86+ ; SPC(10);"Space Hi-way":NEXT 220 VIEW PRINT 3 TO 25 230 GOSUB 310 240 IF INST=0 GOTO 290 250 GOSUB 360 260 GOSUB 420 270 GOSUB 670 280 GOSUB 750 290 REM 300 END 310 REM 320 CLS::PRINT :PRINT :PRINT :PRINT :PRINT :PRINT :PRINT :PRINT " Do you want instructions ? (y/n)"; 330 I=INSTR("YyNn":IF NOT I THEN 330 340 IF I<3 INST=1 ELSE INST=0:PRINT " N" 350 RETURN 360 REM 370 CLS::PRINT :PRINT :PRINT CHR$()&83;"You㐞) are the owner of a nice little fuel":PRINT ; CHR$()&83;"station just off a large intergalactic":PRINT :PRINT CHR$()&83;"Hi.way. Unfortunately the"; CHR$()&82;"aliens"; CHR$()&83;"who" 380 PRINT :PRINT CHR$()&83;"use the Hi-way don't wish to pay for":PRINT :PRINT CHR$()&83;"the fuel that they need, and so are":PRINT :PRINT CHR$()&83;"intent on stealing it!!!!!" 390 PRINT :PRINT :PRINT :PRINT " Your job is to stop them." 400 GW410.COL%=&86:GOSUB 410:RETURN 410 LOCATE 23,3:COLOR COL:PRINT %;"Press the㐞) space bar to continue..."; 411 RETURN 420 REM 430 CLS::PRINT :PRINT :PRINT CHR$()&85;" You have at your control a":PRINT :PRINT CHR$()&85;"doublesupersaturatedphotonplasmalaser":PRINT :PRINT CHR$()&85;" -transientalblaster base!!" 440 PRINT :PRINT :PRINT :PRINT :PRINT CHR$()&85"This will explode if it hits an"; CHR$()&82;"alien":PRINT :PRINT CHR$()&85;"or an"; CHR$()&82;"aliens'"; CHR$()&85;"bullet." 450 =&86:GOSUB SB:CLS 460 PRINT :PRINT :PRINT CHR$()&86"It has the small problem (apart from":P㐞)RINT :PRINT CHR$()&86"pronounciation) that the gun(!) takes a":PRINT CHR$()&86;"short while to charge up, so the second" 470 PRINT CHR$()&86;"of two rapidly fired shots will be less":PRINT CHR$()&86;"powerful than the first." 480 =&83:GOSUB SB:CLS::PRINT :PRINT :PRINT CHR$()&83"The power of your next shot is shown in":PRINT CHR$()&83;"a bar chart just under your base." 490 PRINT :PRINT :PRINT CHR$()&83;"If you shoot an"; CHR$()&82;"alien"; CHR$()&83;"with a weak":PRINT 500 PRINT CHR$()&83;"shot then yo㐞 )u will only slow it down,":PRINT :PRINT CHR$()&83;"and will require more shots to finish":PRINT :PRINT CHR$()&83;"it off (one powerful shot will kill it" 510 PRINT :PRINT CHR$()&83;"right away).":=&84:GOSUB SB:CLS 520 PRINT :PRINT :PRINT CHR$()&81;"The"; CHR$()&82;"aliens"; CHR$()&81;"go around the Hi-way in":PRINT :PRINT CHR$()&81;"groups of eight. One group of eight" 530 PRINT :PRINT CHR$()&81;"is called a wave, and the game is in":PRINT :PRINT CHR$()&81;"levels, which consist of varying":PRINT 540 P㐞)RINT CHR$()&81;"numbers of waves (higher levels give":PRINT :PRINT CHR$()&81;"more waves.)" 550 =&86:GOSUB SB:CLS::PRINT :PRINT :PRINT CHR$()&86;"You have three lives, with bonus lives":PRINT :PRINT CHR$()&86;"given every 10,000 points." 560 PRINT :PRINT CHR$()&86;"There are three numbers in the top left":PRINT CHR$()&86;"of the screen, e.g. "; 570 PRINT ; SPC(5); CHR$()&81;"A":PRINT :PRINT SPC(27); CHR$()&82;"B "; CHR$()&83;"C":PRINT 580 PRINT CHR$()&86;"where"; CHR$()&81;"A"; CHR$()&86;"is the nu㐞)mber of lives,":PRINT :PRINT CHR$()&82;"B"; CHR$()&86;"is the level number, and"; CHR$()&83;"C"; CHR$()&86;"is the" 590 PRINT :PRINT CHR$()&86;"number of waves left.":PRINT :PRINT CHR$()&86;"The number in the top right of the":PRINT :PRINT CHR$()&86;"screen is your score." 600 =&87:GOSUB SB:CLS 610 PRINT :PRINT :PRINT "If you are silly enough to let an"; CHR$()&82;"alien":PRINT :PRINT "land, then it will steal some of your":PRINT :PRINT "fuel.The fuel, however, is radioactive" 620 PRINT :PRINT "and so t㐞)he"; CHR$()&82;"alien"; CHR$()&87;"mutates to a rocket(!)":PRINT :PRINT "It then flys up about } of the way ":PRINT :PRINT "to the Hi-way, and now the fun really" 630 PRINT :PRINT "starts, as it will then home in on you!" 640 =&81:GOSUB SB:CLS 650 PRINT :PRINT :PRINT CHR$()&81"This is where the auto repeat cannon":PRINT :PRINT CHR$()&81;"comes in handy, as the mutants can be":PRINT :PRINT CHR$()&81;"killed with any power shot." 660 =&87:GOSUB SB:RETURN 670 CLS 680 PRINT :PRINT :PRINT CHR$()&86;"Due to㐞) a small design fault in your":PRINT :PRINT CHR$()&86;"ship, it will explode when you run out":PRINT :PRINT CHR$()&86;"of fuel. Fuel is used up continually" 690 PRINT :PRINT CHR$()&86"but extra fuel is used when you fire.":PRINT :PRINT CHR$()&86;"Your fuel supply is shown at the":PRINT :PRINT CHR$()&86;"bottom of the screen in the form of" 700 PRINT :PRINT CHR$()&86;"barrels.":=&82:GOSUB SB:CLS 710 PRINT :PRINT :PRINT CHR$()&82;"You can replenish your fuel supply by":PRINT :PRINT CHR$()&83;"catching fuel㐞) tankers, but to catch":PRINT :PRINT CHR$()&82;"them you must first make them fall!!" 720 PRINT :PRINT CHR$()&83;"This is done by shooting the two space":PRINT :PRINT CHR$()&82;"tugs, one on either end of the fuel" 730 PRINT :PRINT CHR$()&83;"pod. The fuel pods are the"; CHR$()&86;"cyan"; CHR$()&83;"things":PRINT :PRINT CHR$()&82;"with 'F' written on them." 740 =&81:GOSUB SB:RETURN 750 CLS 760 PRINT :PRINT :PRINT SPC(8); CHR$()&84; ; CHR$()&82; ;"Keys... "; :PRINT SPC(8); CHR$()&84; ; CHR$()&82; ;"Ke㐞)ys... "; 770 PRINT :PRINT :PRINT SPC(10); CHR$()&86;"Left - 'Caps lock'":PRINT :PRINT SPC(10); CHR$()&86;"Right - 'Ctrl'":PRINT :PRINT SPC(10); CHR$()&86;"Fire - 'RETURN'" 780 PRINT :PRINT SPC(10); CHR$()&86;"Escape - 'ESCAPE' (returns":PRINT :PRINT SPC(10); CHR$()&86;"to hi-score board.)" 790 PRINT :PRINT :PRINT CHR$()&82;"To get auto repeat, hold down 'SHIFT'" 800 PRINT :PRINT CHR$()&82;"and 'RETURN' at the same time.":=&88:GOSUB SB:RETURN Z>)N㐞) 10 X= -(((VAL(LEFT$(TIME$,2))*3600)+(VAL(MID$(TIME$, 4,2))*60)+(VAL(RIGHT$(TIME$,2))))*100-GW.TIME):RANDO sMIZE -(((VAL(LEFT$(TIME$,2))*3600)+(VAL(MID$(TIME$,4 ?,2))*60)+(VAL(RIGHT$(TIME$,2))))*100-GW.TIME):ON ERR  OR GOTO 240 Q20 DIM STMD 530,STPN 530,STA%(263,2),R(2,2),DMMD 5,D MPN 5,XVIEW%(255),YVIEW%(255) H50 REM 㐞 )p60 REM 70 REM 80 KEY0"P"REM 4 90 KEY1"Y"REM H100 KEY2"R"REM \110 KEY3"F"REM p120 KEY4"L"REM 130 KEY5"V"REM 㐞*; = @( ! '! %; (  J+С Љ +֋܃;s3Ҵ!  '!) u& ; (  !> t"' ! ui>  Ŏ&- u[. ݹ3ع+33ь+ȁv3  !3P Error in EXE file $ Program too large $ Cannot find A:BASRUN.EXE Enter new drive letter: $BASRUN EXE㐞*%=0:ALIGNED%=TRUE:DOCKED%=FALSE:CRASHED%=FALSE:VF1%=0:VF2%=0:PF%=FALSE:YF%=FALSE:RF%=FALSE:FF%=FALSE:LF%=FALSE:VF%=FALSE:OF%=FALSE:SF%=FALSE:DF%=FALSE 260DDF%=FALSE:XF%=FALSE:RRDF%=FALSE:PD%=0:YD%=0:RD%=0:FD%=0:LD%=0:VD%=0:PL%=0:YL%=0:RL%=0:FL%=0:LL%=0:VL%=0:OL%=0:DN%=0:RDF%=1:SIZ%=100000:PER%=2500 270RESTORE 280FORA%=0TO59:FORB%=0TO2:READSTA%(A%,B%):STA%(A%+60,B%)=STA%(A%,B%):NEXT, 320FORA%=60TO119:STA%(A%,1)=-STA%(A%,1):NEXT 350FORA%=120TO127:FORB%=0TO2:READSTA%(A%,B%):NEXT, 390FORA%=0T㐞*UN.EXE Enter new drive letter: $BASRUN EXEc00#1C1c1S@1?2O2%#<<oO7o37393;3=?4ACC4Ec4G44/5Uc5W5[5]5_acC6ec6g66k6m6o7qc7uC8w7y7{7}78#889/9C9c99999:C:c:::|AO;c;;;<ǃ<ɣ<<<=C=٣==#>?c>>>>?#?C?c??㐞*p wait":REM z250 PP=0:YP=0:RP=0:XP%=0:PY%=0:ZP%=0:OMS%=0:ALIGNED%z= NOT FALSE::DOCKED%= FALSE::CRASHED%= FALSE::VF1%=0zr:VF2%=0:PF%= FALSE::YF%= FALSE::RF%= FALSE::FF%= FALz>SE::LF%= FALSE::VF%= FALSE::OF%= FALSE::SF%= FALSE::z DF%= FALSE  260 DDF%= FALSE::XF%= FALSE::RRDF%= FALSE::PD%=0:YD%!h=0:RD%=0:FD%=0:LD%=0:VD%=0:PL%=0:YL%=0:RL%=0:FL%=0:L㐞*DINPUT N:INPUT 2ZTAB(b+1lGW.PTR.2x*3.14159265/180$ ERROR NO.6 ;STR$(ERR);/  ON LINE ) ;STR$(ERL)32767( :RANDOMIZE /RND(INT(RND*+1)MB N+STR$(\4+15)@  L &+STR$(48\(4+0.5))>ING$()HINGAQP((VAL(LEFT$(TIME$,2))*3600)+(VAL(MID$(TIME$,4,2))*60)+(VAL(RIGHT$(TIME$,2))))*100YGW.TIME= -GW.TIME)TONTRONTROFFIOFF NOT FALSET NOT THEN  ELSE  CHR$(  ); BEEP" -1 ( LOCATE POS(I)I: ,CSRLI㐞*NPF CLSN PALETTE Z LOCATE ,,0h 8202 p VIEW SCREEN (I )-( DRAW S VIEW:VIEW  VIEW V TO LOCATE 1,1 LOCATE 1 80 :WIDTH L - PRESS ANY KEY TO TRY AGAINV0!:RETURNS!POKE R!PEEK(R&!REM$~2!KEY:!FX@!TV &>W  3_ ! t= ! t0 !"" !>#u$$,@t<wբ 3; = @( ! '! %; (  J+С Љ +֋܃;s3Ҵ! 㐞* '!) u& ; (  !> t"' ! ui>  Ŏ&- u[. ݹ3ع +$ 33ь+ȁv3 !3P Error in EXE file $ Program too large $ Cannot find A:BASRUN.EXE Enter new drive letter: $BASRUN EXEeWeYe[e]e_fcFfeffgfiffmfogq&gsFgufgwgyg{}gh/hFhfhhhhhi/iFifiiiii&jFjjj㐞*,1)^2+STA%(260,2)^2):T2%=TIME-T1%+T3%:LATMISS=FNANG(1):VERTMISS=FNANG(2) 790IFVF1%=0 ANDVF2%=1 VF2%=0:PROCW1:MODE4:VDU23;10,32,0;0;0;:PROCW2:GOTO830 800IFVF1%=0 ANDVF2%=0 PROCW1:PROCW2 810IFVF1%=1 ANDVF2%=0 VF2%=1:MODE7 820IFVF1%=1 ANDVF2%=1 PROCST 830PROCTST 840PROCDT 850UNTILNOTALIGNED%ORDOCKED%ORCRASHED% 860MODE7 870IFNOTALIGNED%PRINTTAB(5,10)CHR$(130)"YOU CANNOT APPROACH TO LESS"TAB(4,12)CHR$(130)"THAN"CHR$(129)"1500 FEET"CHR$(130)"UNLESS ALIGNED"TAB(2,14)CHR$(130)"WITH THE"CH㐞 *10 ' 20 ' Program to convert BBC BASIC into GW BASIC 30 ' 40 ' (C) Copyright ALFRAGAN LTD./GB Computer Products Ltd.(1985) 50 ' 60 ' Version 1.5 70 ' Amended : 80 ' 90 ' CONSTANTS,FUNCTIONS ETC 100 ' ----------------------- 110 DIM CONVA%(121),CCAT%(64),KC%(122),BBABC%(26),GWABC%(26),WLINE!(200),WNO%(200) 120 DIM COL164%(16),COL163%(16),COL162%(16),COL44%(4),COL43%(4),COL42%(4) 130 COMMON DRIVE$,ONAM$,CONVA%(),COL164%(),COL162%(),COL44%(),COL42%(),CCAT%(),KC%() 140 COM㐞*MON BBABC%(),GWABC%(),WLINE!(),WNO%() 150 COMMON SCALEX$,SCALEY$,CFLAG%,XSCALE!,YSCALE!,YSIZE$ 160 COMMON BBA$,BBB$,BBC$,BBD$,BBE$,BBF$,BBG$,BBH$,BBI$ 170 COMMON BBL$,BBM$,BBN$,BBO$,BBP$,BBR$,BBS$,BBT$,BBU$,BBV$ 180 COMMON BBW$ 190 COMMON GWA$,GWB$,GWC$,GWD$,GWE$,GWF$,GWG$,GWH$,GWI$,GWK$,GWL$,GWM$ 200 COMMON GWN$,GWO$,GWP$,GWR$,GWS$,GWT$,GWU$,GWV$,GWW$,GWX$ 210 WIDTH 255 220 ESC$=CHR$(27) 230 ESCY$=ESC$+CHR$(89) 'esc+"Y" 240 RCLEAR$=ESC$+CHR$(84) 'clear to right of cursor 250 INVVID$=ESC$+CHR㐞*$(112) 'inverse video 260 NORVID$=ESC$+CHR$(113) 'normal video 270 DEF FNCUR$(A,B)=ESCY$+CHR$(31+A)+CHR$(31+B) 280 ' 290 ' Conversion Array 300 ' 310 CONVA%(1)=134 'ABS 320 CONVA%(2)=8 'ACS 330 CONVA%(3)=9 'ADVAL 340 CONVA%(4)=68 'AND 350 CONVA%(5)=337 'ASC 360 CONVA%(6)=10 'ASN 370 CONVA%(7)=400 'ATN 380 CONVA%(8)=500 'AUTO 390 CONVA%(9)=11 'BGET 400 CONVA%(10)=9 'BPUT 410 CONVA%(11)=9 'CALL 420 CONVA%(12)=1315 'CHAIN 430 CONVA%(13)=67 'CHR㐞* 440 CONVA%(14)=1800 'CLEAR 450 CONVA%(15)=2000 'CLG 460 CONVA%(16)=1972 'CLOSE 470 CONVA%(17)=2000 'CLS 480 CONVA%(18)=14 'COLOUR 490 CONVA%(19)=2436 'COS 500 CONVA%(20)=9 'COUNT 510 CONVA%(21)=3071 'DATA 520 CONVA%(22)=16 'DEF 530 CONVA%(23)=17 'DEG 540 CONVA%(24)=3701 'DELETE 550 CONVA%(25)=3800 'DIM 560 CONVA%(26)=35 'DIV 570 CONVA%(27)=3919 'DRAW 580 CONVA%(28)=4100 'ELSE 590 CONVA%(29)=66 'END 600 CONVA%(30)=12000 'ENDPROC 610 CONVA%(31)=21 'ENVELOPE 㐞*620 CONVA%(32)=4303 'EOF 630 CONVA%(33)=16100 'EOR 640 CONVA%(34)=4600 'ERL 650 CONVA%(35)=4769 'ERR 660 CONVA%(36)=4800 'ERROR 670 CONVA%(37)=9 'EVAL 680 CONVA%(38)=4900 'EXP 690 CONVA%(39)=7803 'EXT 700 CONVA%(40)=23 'FALSE 710 CONVA%(41)=24 'FN 720 CONVA%(42)=5400 'FOR 730 CONVA%(43)=25 'GCOL 740 CONVA%(44)=26 'GET 750 CONVA%(45)=5700 'GOSUB 760 CONVA%(46)=5800 'GOTO 770 CONVA%(47)=9 'HIMEM 780 CONVA%(48)=6012 'IF 790 CONVA%(49)=28 'INKEY 800 CONVA%(50)=㐞*29 'INPUT 810 CONVA%(51)=6530 'INSTR 820 CONVA%(52)=6659 'INT 830 CONVA%(53)=6900 'LEFT 840 CONVA%(54)=7037 'LEN 850 CONVA%(55)=7100 'LET 860 CONVA%(56)=7301 'LIST 870 CONVA%(57)=9 'LISTO 880 CONVA%(58)=7900 'LN 890 CONVA%(59)=7500 'LOAD 900 CONVA%(60)=32 'LOCAL 910 CONVA%(61)=7933 'LOG 920 CONVA%(62)=9 'LOMEM 930 CONVA%(63)=8400 'MID 940 CONVA%(64)=40 'MOD 950 CONVA%(65)=13 'MODE 960 CONVA%(66)=3918 'MOVE 970 CONVA%(67)=9100 'NEW 980 CONVA%(68)=9200 㐞* 'NEXT 990 CONVA%(69)=61 'NOT 1000 CONVA%(70)=70 'OFF 1010 CONVA%(71)=2300 'OLD 1020 CONVA%(72)=9600 'ON 1030 CONVA%(73)=4 'OPENIN 1040 CONVA%(74)=4 'OPENOUT 1050 CONVA%(75)=4 'OPENUP 1060 CONVA%(76)=9 'OPT 1070 CONVA%(77)=62 'OR 1080 CONVA%(78)=9 'PAGE 1090 CONVA%(79)=39 'PI 1100 CONVA%(80)=3948 'PLOT 1110 CONVA%(81)=10641 'POINT 1120 CONVA%(82)=10805 'POS 1130 CONVA%(83)=42 'PRINT 1140 CONVA%(84)=43 'PROC 1150 CONVA%(85)=44 'P㐞*TR 1160 CONVA%(86)=60 'RAD 1170 CONVA%(87)=11445 'READ 1180 CONVA%(88)=11520 'REM 1190 CONVA%(89)=11606 'RENUMBER 1200 CONVA%(90)=46 'REPEAT 1210 CONVA%(91)=47 'REPORT 1220 CONVA%(92)=11800 'RESTORE 1230 CONVA%(93)=12000 'RETURN 1240 CONVA%(94)=12100 'RIGHT 1250 CONVA%(95)=38 'RND 1260 CONVA%(96)=12300 'RUN 1270 CONVA%(97)=12600 'SAVE 1280 CONVA%(98)=12800 'SGN 1290 CONVA%(99)=12936 'SIN 1300 CONVA%(100)=10449 'SOUND 1310 CONVA%(101)=13202 'SPC 1320 CONVA%(102)=133㐞*34 'SQR 1330 CONVA%(103)=13400 'STEP 1340 CONVA%(104)=13600 'STOP 1350 CONVA%(105)=13765 'STR 1360 CONVA%(106)=13950 'STRING 1370 CONVA%(107)=51 'TAB 1380 CONVA%(108)=14336 'TAN 1390 CONVA%(109)=14400'THEN 1400 CONVA%(110)=52 'TIME 1410 CONVA%(111)=14764'TO 1420 CONVA%(112)=9 'TOP 1430 CONVA%(113)=54 'TRACE 1440 CONVA%(114)=55 'TRUE 1450 CONVA%(115)=6056 'UNTIL 1460 CONVA%(116)=9 'USR 1470 CONVA%(117)=15200'VAL 1480 CONVA%(118)=58 'VDU 1490 CONVA%(119)=2600 'VPOS 1500 CONV㐞 *A%(120)=15807'WIDTH 1510 ' 1520 ' BBC command table 1530 ' 1540 BBA$="ABS ACS ADVAL AND ASC ASN ATN AUTO " 1550 BBB$="BGET BPUT " 1560 BBC$="CALL CHAIN CHR CLEAR CLG CLOSE CLS COLOUR COS COUNT " 1570 BBD$="DATA DEF DEG DELETE DIM DIV DRAW " 1580 BBE$="ELSE END ENDPROC ENVELOPEEOF EOR ERL ERR ERROR EVAL EXP EXT " 1590 BBF$="FALSE FN FOR " 1600 BBG$="GCOL GET 㐞+ GOSUB GOTO " 1610 BBH$="HIMEM " 1620 BBI$="IF INKEY INPUT INSTR INT " 1630 BBJ$="" 1640 BBK$="" 1650 BBL$="LEFT LEN LET LIST LISTO LN LOAD LOCAL LOG LOMEM " 1660 BBM$="MID MOD MODE MOVE " 1670 BBN$="NEW NEXT NOT " 1680 BBO$="OFF OLD ON OPENIN OPENOUT OPENUP OPT OR " 1690 BBP$="PAGE PI PLOT POINT POS PRINT PROC PTR " 1700 BBQ$="" 1710 BBR$="RAD READ REM RENUM㐞+BERREPEAT REPORT RESTORE RETURN RIGHT RND RUN " 1720 BBS$="SAVE SGN SIN SOUND SPC SQR STEP STOP STR STRING " 1730 BBT$="TAB TAN THEN TIME TO TOP TRACE TRUE " 1740 BBU$="UNTIL USR " 1750 BBV$="VAL VDU VPOS " 1760 BBW$="WIDTH " 1770 BBX$="" 1780 BBY$="" 1790 BBZ$="" 1800 ' 1810 ' GW command table 1820 GWA$="ABS AND ASC ATN AUTO " 1830 GWB$="BASE BEEP BLOAD BSAVE " 1840 GWC$="CALL C㐞+ALLS CDBL CHAIN CHDIR CHR CINT CIRCLE CLEAR CLOSE CLS COLOR COMMON CONT COS CSNG CSRLIN CVD CVI CVS " 1850 GWD$="DATA DATE DEF DEFDBL DEFINT DEFSNG DEFSTR DELETE DIM DRAW " 1860 GWE$="EDIT ELSE END EOF EQV ERASE ERL ERR ERROR EXP " 1870 GWF$="FIELD FILES FIX FN FOR FRE " 1880 GWG$="GET GOSUB GOTO " 1890 GWH$="HEX " 1900 GWI$="IF IMP INKEY INP INPUT INSTR INT " 1910 GWJ$="" 1920 GWK$="KEY K㐞+ILL " 1930 GWL$="LEFT LEN LET LINE LIST LLIST LOAD LOC LOCATE LOF LOG LPOS LPRINT LSET " 1940 GWM$="MERGE MID MKD MKDIR MKI MKS MOD " 1950 GWN$="NAME NEW NEXT NOT " 1960 GWO$="OCT OFF ON OPEN OPTION OR OUT " 1970 GWP$="PAINT PALETTEPEEK PLAY PMAP POINT POKE POS PRESET PRINT PSET PUT " 1980 GWQ$="" 1990 GWR$="RANDOMIREAD REM RENUM RESET RESTORERESUME RETURN RIGHT RMDIR RND RSET RUN " 2000 G㐞+WS$="SAVE SCREEN SGN SIN SOUND SPACE SPC SQR STEP STICK STOP STR STRIG STRING SWAP SYSTEM " 2010 GWT$="TAB TAN THEN TIME TIMER TO TROFF TRON " 2020 GWU$="USING USR " 2030 GWV$="VAL VARPTR VIEW " 2040 GWW$="WAIT WEND WHILE WIDTH WINDOW WRITE " 2050 GWX$="XOR " 2060 GWY$="" 2070 GWZ$="" 2080 ' 2090 ' 16 colour conversion array for 2 planes 2100 ' 2110 COL162%(1)=0 'black 2120 COL162%(2)=1 'red 2130 COL162%(3)=2 'green - b㐞+ecomes blue 2140 COL162%(4)=1 'yellow " red 2150 COL162%(5)=2 'blue 2160 COL162%(6)=1 'magenta " red 2170 COL162%(7)=2 'cyan " blue 2180 COL162%(8)=3 'white 2190 COL162%(9)=0 'flash black/white - becomes black 2200 COL162%(10)=1 'flash red/cyan " red 2210 COL162%(11)=2 'flash green/magenta " blue 2220 COL162%(12)=1 'flash yellow/blue " red 2230 COL162%(13)=2 'flash blue/yellow " blue 2240 COL162%(14)=1 'flash magenta㐞+/green " red 2250 COL162%(15)=2 'flash cyan/red " blue 2260 COL162%(16)=3 'flash white/black " white 2270 ' 2280 ' 16 colour conversion array for 3 planes 2290 ' 2300 COL163%(1)=0 'black 2310 COL163%(2)=1 'red 2320 COL163%(3)=2 'green 2330 COL163%(4)=3 'yellow 2340 COL163%(5)=4 'blue 2350 COL163%(6)=5 'magenta 2360 COL163%(7)=6 'cyan 2370 COL163%(8)=7 'white 2380 COL163%(9)=0 'flash black/white 2390 COL163%(10)=1 'flash red/cyan 2400 COL163%㐞+(11)=2 'flash green/magenta 2410 COL163%(12)=3 'flash yellow/blue 2420 COL163%(13)=4 'flash blue/yellow 2430 COL163%(14)=5 'flash magenta/green 2440 COL163%(15)=6 'flash cyan/red 2450 COL163%(16)=7 'flash white/black 2460 ' 2470 ' 16 colour conversion array for 4 planes 2480 ' 2490 COL164%(1)=0 'black 2500 COL164%(2)=12 'red 2510 COL164%(3)=10 'green 2520 COL164%(4)=14 'yellow 2530 COL164%(5)=9 'blue 2540 COL164%(6)=13 'magenta 2550 COL164%(7)=11 'cyan 2560 COL164%(8)㐞 +=15 'white 2570 COL164%(9)=0 'flash black/white 2580 COL164%(10)=12 'flash red/cyan 2590 COL164%(11)=10 'flash green/magenta 2600 COL164%(12)=14 'flash yellow/blue 2610 COL164%(13)=9 'flash blue/yellow 2620 COL164%(14)=13 'flash magenta/green 2630 COL164%(15)=11 'flash cyan/red 2640 COL164%(16)=15 'flash white/black 2650 ' 2660 ' 4 colour conversion array for 2 planes 2670 ' 2680 COL42%(1)=0 'black 2690 COL42%(2)=1 'red 2700 COL42%(3)=2 'yellow - not available so is blue㐞+ 2710 COL42%(4)=3 'white 2720 ' 2730 ' 4 colour conversion array for 3 planes 2740 ' 2750 COL43%(1)=0 'black 2760 COL43%(2)=1 'red 2770 COL43%(3)=3 'yellow 2780 COL43%(4)=7 'white 2790 ' 2800 ' 4 colour conversion array for 4 planes 2810 ' 2820 COL44%(1)=0 'black 2830 COL44%(2)=12 'red 2840 COL44%(3)=14 'yellow 2850 COL44%(4)=15 'white 2860 ' 2870 ' Character category table :- 2880 ' Category 0 = 2890 ' 1 numeric 2900 ' 㐞+ 2 alpha 2910 ' 3 space 2920 ' 4 comma & semicolon 2930 ' 5 hash 2940 ' 6 open parenthesis 2950 ' 7 dollar & percent 2960 ' 8 quotes 2970 ' 9 anything else 2980 ' 10 close parenthesis 2990 ' 11 colon 3000 ' 12 * - + / 3010 ' 13 equals 3012 ' 14 < > 3014 ' 15 question mark 3016 ' 16 underline 3018 ' 17 blip 3019 ' 㐞+ 18 ? 3020 ' 3030 CCAT%(1)=3:CCAT%(2)=9:CCAT%(3)=8:CCAT%(4)=5 'space ! " # 3040 CCAT%(5)=7:CCAT%(6)=7:CCAT%(7)=18:CCAT%(8)=17 '$ % & ' 3050 CCAT%(9)=6:CCAT%(10)=10:CCAT%(11)=12:CCAT%(12)=12 '( ) * + 3060 CCAT%(13)=4:CCAT%(14)=12:CCAT%(15)=9:CCAT%(16)=12 ', - . / 3070 CCAT%(17)=1:CCAT%(18)=1:CCAT%(19)=1:CCAT%(20)=1 '0 1 2 3 3080 CCAT%(21)=1:CCAT%(22)=1:CCAT%(23)=1:CCAT%(24)=1 '4 5 6 7 3090 CCAT%(25)=1:CCAT%(26)=1:CCAT%(27)=11:CCAT%(28)=4 '8 9 : ; 3100 CCAT%(29)=14:CCAT%(30)=13:CCAT%(31)=14㐞+:CCAT%(32)=15 '< = > ? 3110 CCAT%(33)=9:CCAT%(34)=2:CCAT%(35)=2:CCAT%(36)=2 '@ A B C 3120 CCAT%(37)=2:CCAT%(38)=2:CCAT%(39)=2:CCAT%(40)=2 'D E F G 3130 CCAT%(41)=2:CCAT%(42)=2:CCAT%(43)=2:CCAT%(44)=2 'H I J K 3140 CCAT%(45)=2:CCAT%(46)=2:CCAT%(47)=2:CCAT%(48)=2 'L M N O 3150 CCAT%(49)=2:CCAT%(50)=2:CCAT%(51)=2:CCAT%(52)=2 'P Q R S 3160 CCAT%(53)=2:CCAT%(54)=2:CCAT%(55)=2:CCAT%(56)=2 'T U V W 3170 CCAT%(57)=2:CCAT%(58)=2:CCAT%(59)=2:CCAT%(60)=9 'X Y Z [ 3180 CCAT%(61)=9:CCAT%(62)=9:CCAT%(63)=9:CCAT%(㐞+64)=16 ' ] ^ 3190 ' 3200 ' KEY NUMBER TO CHARACTER TABLE 3210 ' ----------------------------- 3220 KC%(1)=0 :KC%(2)=0 :KC%(3)=0 'shift ctrl 3230 KC%(4)=0 :KC%(5)=0 :KC%(6)=0 3240 KC%(7)=0 :KC%(8)=0 :KC%(9)=0 3250 KC%(10)=0 :KC%(11)=0 :KC%(12)=0 3260 KC%(13)=0 :KC%(14)=0 :KC%(15)=0 3270 KC%(16)=0 :KC%(17)=81 :KC%(18)=51 ' Q 3 3280 KC%(19)=52 :KC%(20)=53 :KC%(21)=0 '4 5 f4 3290 KC%(22)=56 :KC%(23)=0 :KC%(24)=45 '8 f7 - 3300 KC%(25)=94 :KC%(26)=0 :KC%(27)=0 '^ l㐞+eft arrow 3310 KC%(28)=0 :KC%(29)=0 :KC%(30)=0 3320 KC%(31)=0 :KC%(32)=0 :KC%(33)=0 ' f0 3330 KC%(34)=87 :KC%(35)=69 :KC%(36)=84 'W E T 3340 KC%(37)=55 :KC%(38)=73 :KC%(39)=57 '7 I 9 3350 KC%(40)=48 :KC%(41)=95 :KC%(42)=0 '0 _ down arrow 3360 KC%(43)=0 :KC%(44)=0 :KC%(45)=0 3370 KC%(46)=0 :KC%(47)=0 :KC%(48)=0 3380 KC%(49)=49:KC%(50)=50:KC%(51)=68 '1 2 D 3390 KC%(52)=82:KC%(53)=54:KC%(54)=85 'R 6 U 3400 KC%(55)=79:KC%(56)=80:KC%(57)=91 'O P [ 3410 KC%(58)=0 :KC%(59)=0 :KC%(60)=0 'up a㐞+rrow 3420 KC%(61)=0 :KC%(62)=0 :KC%(63)=0 3430 KC%(64)=0 :KC%(65)=0 :KC%(66)=65 ' caps lock A 3440 KC%(67)=88:KC%(68)=70:KC%(69)=89 ' X F Y 3450 KC%(70)=74:KC%(71)=75:KC%(72)=64 'J K @ 3460 KC%(73)=58:KC%(74)=13:KC%(75)=0 ': return 3470 KC%(76)=0 :KC%(77)=0 :KC%(78)=0 3480 KC%(79)=0 :KC%(80)=0 :KC%(81)=0 ' shift lock 3490 KC%(82)=83:KC%(83)=67:KC%(84)=71 'S C G 3500 KC%(85)=72:KC%(86)=78:KC%(87)=76 'H N L 3510 KC%(88)=59:KC%(89)=93:KC%(90)=127'; ] delete 3520 KC%(91)=0 :KC%(92)=0 :KC%(93)=㐞+0 3530 KC%(94)=0 :KC%(95)=0 :KC%(96)=0 3540 KC%(97)=0 :KC%(98)=90:KC%(99)=32 'tab Z space 3550 KC%(100)=86:KC%(101)=66:KC%(102)=77 'V B M 3560 KC%(103)=96:KC%(104)=46:KC%(105)=47 '' . / 3570 KC%(106)=0 :KC%(107)=0 :KC%(108)=0 'copy 3580 KC%(109)=0 :KC%(110)=0 :KC%(111)=0 3590 KC%(112)=0 :KC%(113)=27:KC%(114)=0 ' esc f1 3600 KC%(115)=0 :KC%(116)=0 :KC%(117)=0 'f2 f3 f5 3610 KC%(118)=0 :KC%(119)=0 :KC%(120)=0 'f6 f8 f9 3620 KC%(121)=92:KC%(122)=0 'back slash right arrow 3630 ' 364㐞 +0 ' GET USER DETAILS 3650 ' ---------------- 3660 GOSUB 3910 'output screen 3670 GOSUB 3780 'set scaling factors 3680 GOSUB 4810 'set command no.arrays 3690 GOSUB 4720 'enable line 25 3700 PRINT FNCUR$(25,1);SPACE$(78); 3710 GOSUB 4750 'disable line 25 3720 ON ERROR GOTO 4580 3730 CHAIN DRIVE$+"B-TRAN1" 3740 GOSUB 4080:GOTO 3720 3750 ' 3760 ' SET GRAPHICS SCALING FACTORS 3770 ' ---------------------------- 3780 ON CFLAG%+1 GOSUB 㐞,3830,3840,3870 3790 X$=STR$(XSCALE!):GOSUB 4510:SCALEX$=X$ 3800 X$=STR$(YSCALE!):GOSUB 4510:SCALEY$=X$ 3810 X$=STR$(YSIZE%):GOSUB 4510:YSIZE$=X$ 3820 RETURN 3830 XSCALE!=1/2:YSCALE!=25/128:YSIZE%=200:RETURN 3840 XSCALE!=1/2:YSCALE!=25/128:YSIZE%=200:RETURN 3870 XSCALE!=1/4:YSCALE!=25/128:YSIZE%=200:RETURN 3880 ' 3890 ' OUTPUT INITIAL SCREEN 3900 ' --------------------- 3910 PRINT ESC$+CHR$(69) 'clear screen 3920 PRINT FNCUR$(2,19);INVVID$"B-TRAN :- BBC BASIC TO GW BASIC CONVERSION";NORV㐞,ID$ 3930 PRINT FNCUR$(21,1);STRING$(78,45) 3940 PRINT "Press ESC to return to operating system" 3950 GOSUB 4720 'enable line 25 3960 PRINT FNCUR$(25,1)"R1.5 (C) Alfragan Ltd./David Ball,1985: Worldwide distribution ACT(UK) Ltd.";RCLEAR$ 3970 GOSUB 4750 'disable line 25 3980 PRINT FNCUR$(10,13)"Are you using a colour monitor Y/N ? [ ]" 3990 PRINT FNCUR$(11,7);"If you answer No then COLOUR statements will not be converted" 4000 PRINT FNCUR$(10,60);:GOSUB 4180 'get col㐞,our flag 4010 IF OK%=1 THEN 3980 ELSE CFLAG%=YN% 4020 GOSUB 4450:IF OK%=1 THEN 3980 4030 IF YN%=0 THEN CFLAG%=0:GOTO 4080 4040 PRINT FNCUR$(13,13);"How many colours are available - 4 or 16 ? [ ]" 4050 GOSUB 4280 'get no.of colours 4060 IF OK%=1 THEN 4040 'j if invalid answer 4070 IF N%=4 THEN CFLAG%=1 ELSE CFLAG%=2 'set screen flag 4080 PRINT FNCUR$(15,13)"Give drive letter which holds B-TRAN programs [ ]" 4090 PRINT FNCUR$(16,20)"Press RETURN if on default drive" 4100 PRINT 㐞,FNCUR$(15,60); 4110 GOSUB 4220 'get character 4120 IF K%=13 THEN DRIVE$="":GOTO 4140 ELSE DRIVE$=K$+":" 4130 GOSUB 4450:IF OK%=1 THEN 4080 4140 RETURN 4150 ' 4160 ' GET COLOUR/SCREEN DETAILS 4170 ' ------------------------- 4180 GOSUB 4220 'get character 4190 IF K$="y" OR K$="Y" THEN YN%=1:RETURN 4200 IF K$="n" OR K$="N" THEN YN%=0:RETURN 4210 GOTO 4390 4220 K$=INKEY$ 4230 IF LEN(K$)=0 THEN 4220 4240 K%=ASC(K$):OK%=0 4250 IF K%=27 THEN PRINT ESC$+CHR$(69):SYS㐞,TEM 4260 IF K%<>8 THEN PRINT K$; 4270 RETURN 4280 PRINT FNCUR$(13,60); 4290 N%=0:CP%=1:OK%=0 4300 GOSUB 4220 'get character 4310 IF K%=13 OR K%=9 THEN 4380 'j if return or tab 4320 IF K%=8 THEN GOSUB 4410:GOTO 4300 'action backspace 4330 IF K%<48 OR K%>57 THEN PRINT CHR$(7);:GOSUB 4430:GOTO 4300 'j if non-numeric 4340 N%=N%*10+K%-48 'build up field 4350 CP%=CP%+1 4360 IF CP%>2 THEN GOSUB 4450:IF OK%=1 THEN GOSUB 4420 ELSE 4380 4370 GOTO 4300 4380 IF N%=4 OR N%=16 THE㐞,N RETURN 4390 PRINT CHR$(7); 4400 OK%=1:RETURN 4410 IF CP%<2 THEN RETURN ELSE CP%=CP%-1 4420 N%=N%\10 4430 PRINT CHR$(8)" "CHR$(8); 4440 RETURN 4450 GOSUB 4220 'get character 4460 IF K%=13 THEN RETURN 'j if return 4470 IF K%=8 THEN CP%=CP%-1:OK%=1:RETURN 'action backspace 4480 PRINT CHR$(7);:GOTO 4430 4490 ' DROP TRAILING SPACES 4500 ' ------------------- 4510 WHILE LEFT$(X$,1)=" " 4520 X$=RIGHT$(X$,LEN(X$)-1) 4530 WEND 4540 RETURN 4550 ' 4560 ' ERRONE㐞,OUS DRIVE GIVEN 4570 ' --------------------- 4580 MESS$="B-TRAN not found on given drive":GOSUB 4630 4590 RESUME 3740 4600 ' 4610 ' REPORT ERROR 4620 ' ------------ 4630 MC$=" - press any key to try again" 4640 PRINT FNCUR$(22,10);INVVID$;MESS$;MC$;RCLEAR$ 4650 PRINT CHR$(7) 'bleep 4660 GOSUB 4220 'get input 4670 PRINT FNCUR$(22,10);NORVID$;SPACE$(70) 4680 RETURN 4690 ' 4700 ' ENABLE/DISABLE LINE 25 4710 ' ---------------------- 4720 PRINT ESC$+CHR$(106); 㐞, 4730 PRINT ESC$+CHR$(120)+CHR$(49) 4740 RETURN 4750 PRINT ESC$+CHR$(107); 4760 PRINT ESC$+CHR$(121)+CHR$(49) 4770 RETURN 4780 ' 4790 ' SET COMMAND START NOS.IN ARRAY 4800 ' ------------------------------ 4810 X%=1 4820 FOR N%=1 TO 26 4830 ON N% GOSUB 4950,4960,4970,4980,4990,5000,5010,5020,5030,5040,5050,5060,5070,5080,5090,5100,5110,5120,5130,5140,5150,5160,5170,5180,5190,5200 4840 BBABC%(N%)=X% 'set 1st command no for this letter 4850 X%=LEN(X$)/8+X% 'add in no.of commands thi㐞 ,s letter 4860 NEXT N% 4870 X%=1 4880 FOR N%=1 TO 26 4890 ON N% GOSUB 5210,5220,5230,5240,5250,5260,5270,5280,5290,5300,5310,5320,5330,5340,5350,5360,5370,5380,5390,5400,5410,5420,5430,5440,5450,5460 4900 GWABC%(N%)=X% 'set 1st command no.for this letter 4910 X%=LEN(Y$)/7+X% 'add in no.of commands this letter 4920 NEXT N% 4930 RETURN 4940 ' 4950 X$=BBA$:RETURN 'get BBC command table string 4960 X$=BBB$:RETURN 4970 X$=BBC$:RETURN 4980 X$=BBD$:RETURN 4990 X$=BBE$:RETURN 5000 X$=BBF$:RE㐞,TURN 5010 X$=BBG$:RETURN 5020 X$=BBH$:RETURN 5030 X$=BBI$:RETURN 5040 X$=BBJ$:RETURN 5050 X$=BBK$:RETURN 5060 X$=BBL$:RETURN 5070 X$=BBM$:RETURN 5080 X$=BBN$:RETURN 5090 X$=BBO$:RETURN 5100 X$=BBP$:RETURN 5110 X$=BBQ$:RETURN 5120 X$=BBR$:RETURN 5130 X$=BBS$:RETURN 5140 X$=BBT$:RETURN 5150 X$=BBU$:RETURN 5160 X$=BBV$:RETURN 5170 X$=BBW$:RETURN 5180 X$=BBX$:RETURN 5190 X$=BBY$:RETURN 5200 X$=BBZ$:RETURN 5210 Y$=GWA$:RETURN 'get GW command table string 5220 Y$=GWB$:RETURN 5230 Y$=GWC$㐞,:RETURN 5240 Y$=GWD$:RETURN 5250 Y$=GWE$:RETURN 5260 Y$=GWF$:RETURN 5270 Y$=GWG$:RETURN 5280 Y$=GWH$:RETURN 5290 Y$=GWI$:RETURN 5300 Y$=GWJ$:RETURN 5310 Y$=GWK$:RETURN 5320 Y$=GWL$:RETURN 5330 Y$=GWM$:RETURN 5340 Y$=GWN$:RETURN 5350 Y$=GWO$:RETURN 5360 Y$=GWP$:RETURN 5370 Y$=GWQ$:RETURN 5380 Y$=GWR$:RETURN 5390 Y$=GWS$:RETURN 5400 Y$=GWT$:RETURN 5410 Y$=GWU$:RETURN 5420 Y$=GWV$:RETURN 5430 Y$=GWW$:RETURN 5440 Y$=GWX$:RETURN 5450 Y$=GWY$:RETURN 5460 Y$=GWZ$:RETURN Z>,N㐞,10 ' 20 ' Program to list BBC BASIC into GW BASIC conversion warnings 30 ' 40 ' (C) Copyright ALFRAGAN LTD./GB Computer Products Ltd.(1985) 50 ' 60 ' Version 1.5 70 ' Amended 80 ' 90 DIM CONVA%(121),COL164%(16),COL162%(16),COL44%(4),COL42%(4),CCAT%(64),KC%(122),BBABC%(26),GWABC%(26),WLINE!(200),WNO%(200) 100 COMMON DRIVE$,ONAM$,CONVA%(),COL164%(),COL162%(),COL44%(),COL42%(),CCAT%(),KC%(),BBABC%(),GWABC%(),WLINE!(),WNO%() 110 COMMON SCALEX$,SCALEY$,CFLAG%,XSCALE!,YSCALE!,YSIZE$ 㐞, 120 COMMON BBA$,BBB$,BBC$,BBD$,BBE$,BBF$,BBG$,BBH$,BBI$ 130 COMMON BBL$,BBM$,BBN$,BBO$,BBP$,BBR$,BBS$,BBT$ 140 COMMON BBU$,BBV$,BBW$ 150 COMMON GWA$,GWB$,GWC$,GWD$,GWE$,GWF$,GWG$,GWH$,GWI$,GWK$,GWL$,GWM$ 160 COMMON GWN$,GWO$,GWP$,GWR$,GWS$,GWT$,GWU$,GWV$,GWW$,GWX$ 170 DEF FNCUR$(A,B)=CHR$(27)+CHR$(89)+CHR$(31+A)+CHR$(31+B) 180 ESC$=CHR$(27) 190 INVVID$=ESC$+CHR$(112) 200 NORVID$=ESC$+CHR$(113) 210 RCLEAR$=ESC$+CHR$(84) 'clear to right of cursor 220 SSCROLL%=10:ESCROLL%=23 230 N%=0:IF WNO%(0)=0㐞, THEN 640 240 ' 250 ' OUTPUT SCREEN 260 ' ------------- 270 PRINT CHR$(27)+CHR$(69); 'clear screen 280 PRINT FNCUR$(1,19);"B-TRAN CONVERSION WARNINGS FOR "INVVID$;ONAM$;NORVID$ 290 PRINT FNCUR$(3,1);INVVID$;"Press RETURN to exit to system " 300 PRINT "Press SCROLL to view warnings not on screen " 310 PRINT "Press S to save the warnings to a text file " 320 PRINT "Press any other key to do another conversion ";NORVID$; 330 PRINT FNCUR$(7,1);STRING$(78,45) 340 PRINT "Line no. Messag㐞,e" 350 PRINT "-------- -------" 360 VT%=SSCROLL% 370 ' 380 ' LIST WARNINGS 390 ' ------------- 400 IF WNO%(N%)=0 THEN 520 'j if end of list 410 GOSUB 420:GOTO 510 420 WAR%=WNO%(N%) 'get warning no. 430 ON WAR% GOSUB 1090,1100,1110,1120,1130,1140,1150,1160,1170,1180,1190,1200,1210,1220,1230,1240,1250,1260,1270,1280,1290,1300,1310,1320,1330,1340,1350 440 X$=STR$(WLINE!(N%)) 450 IF S%=0 THEN 480 460 PRINT #1,X$;SPACE$(10-LEN(X$));WMESS$ 470 RETURN 480 PRINT FNCUR$(VT%,1);X$ 㐞, 490 PRINT FNCUR$(VT%,11);WMESS$ 500 RETURN 510 IF VT%0 THEN ER%=0:PRINT FNCUR$(24,10);NORVID$;SPACE$(70) 560 IF K%=10 THEN 690 'j to scroll forward 570 IF K%=0 THEN 760 'j to scroll back 580 IF K%=83 OR K%=115 THEN S%=K%:GOSUB 880:GOTO 520 590 IF ASC(K$)=13 THEN SYSTEM 600 CHAIN DRIVE$+"B-TRAN1" 610 ' 620 ' REPORT ERROR 630 ' ------------ 640 MESS$="No warnings for this conver㐞 ,sion - please choose option":GOSUB 1020 650 HIREC%=0:GOTO 520 660 ' 670 ' SCROLL 680 ' ------ 690 IF WNO%(N%)=0 THEN 720 700 GOSUB 722 'scroll 710 IF OK%=0 THEN N%=N%+1:GOTO 400 720 PRINT CHR$(7);:GOTO 520 722 IF WNO%(N%+1)=0 THEN OK%=1:RETURN 730 PRINT FNCUR$(SSCROLL%,1);ESC$+"M" 740 PRINT FNCUR$(ESCROLL%,1);ESC$+"L" 750 OK%=0:RETURN 760 SREC%=N%-1:N%=SREC%+SSCROLL%-ESCROLL% 770 IF N%<1 THEN N%=SREC%+1:PRINT CHR$(7);:GOTO 520 780 GOSUB 820 'scroll 790 VT%=SSCRO㐞-LL%:GOSUB 420 'output data 800 VT%=ESCROLL%:N%=SREC% 810 GOTO 400 820 PRINT FNCUR$(ESCROLL%,1);ESC$+"M" 830 PRINT FNCUR$(SSCROLL%,1);ESC$+"L" 840 RETURN 850 ' 860 ' SAVE WARNINGS TO A FILE 870 ' ----------------------- 880 TFILE$=LEFT$(ONAM$,LEN(ONAM$)-4)+".wrn" 890 SN%=N%:N%=0 900 MESS$="Producing message file":GOSUB 1020 910 OPEN "O",1,TFILE$ 920 PRINT #1,"Line no. Message":PRINT #1,"-------- -------" 930 WHILE WNO%(N%)<>0 940 GOSUB 420:N%=N%+1 950 WEND 960 MESS$="Warning messa㐞-ge file "+TFILE$+" produced":GOSUB 1020 970 S%=0:N%=SN% 980 CLOSE 1:RETURN 990 ' 1000 ' SEND MESSAGE 1010 ' ------------ 1020 PRINT FNCUR$(24,10);INVVID$;MESS$;RCLEAR$; 1030 IF S%=0 THEN PRINT CHR$(7);:ER%=1 1040 PRINT NORVID$; 1050 RETURN 1060 ' 1070 ' ERROR MESSAGES 1080 ' -------------- 1090 WMESS$="No flashing foreground available":RETURN 1100 WMESS$="Double height letters not available":RETURN 1110 WMESS$="No graphics control characters available":RETURN 1120 WMESS$="Missi㐞-ng field":RETURN 1130 WMESS$="N.B. Only 1 character can be repeated in STRING$":RETURN '5 1140 WMESS$="Continuous note (duration -1) not available":RETURN 1150 WMESS$="*FX not translated":RETURN 1160 WMESS$="*TV not translated":RETURN 1170 WMESS$="Use FONT editor to create graphics characters":RETURN 1180 WMESS$="ENVELOPE not translatable to interpreted GW Basic":RETURN 1190 WMESS$="Assembler code not translated":RETURN 1200 WMESS$="No indirection equivalent.Statement not translated":RETURN '12㐞- 1210 WMESS$="Check memory location":RETURN 1220 WMESS$="INKEY(-n) translation is not exact equivalent":RETURN 1230 WMESS$="COLOUR not translated - user's option":RETURN '15 1240 WMESS$="GCOL not translated- user's option":RETURN '16 1250 WMESS$="LOCATE line number exceeds 25":RETURN '17 1260 WMESS$="VDU codes 0,4,5,6,14,21,27,29 not translated":RETURN '18 1270 WMESS$="Set GW.IN.D=0 to correct ASC value for your character set":RETURN '19 1280 W㐞-MESS$="@% print formatting not translated":RETURN '20 1290 WMESS$="Convert the line manually and report B-TRAN error":RETURN '21 1300 WMESS$="Multiply INT(RND*32767+1) by -1 if negative answer wanted":RETURN 1310 WMESS$="Output truncated as line too long.Split input line and re-convert":RETURN 1320 WMESS$="Only GOTO is allowed in ON ERROR statements":RETURN '24 1330 WMESS$="BBC statement not translated.See manual page 8-3.":RETURN '25 1340 WMESS$="*KEY not translated.See GW ma㐞-nual about KEY and ON KEY":RETURN '26 1350 WMESS$="* command not translated.":RETURN '27 e GW maGWDEMO BAS < RELEASE DOC d1 ?FOR_ACT {1 CBASRUN EXE bS㐞-10 ' 20 ' Program to convert BBC BASIC into GW BASIC 30 ' 40 ' (C) Copyright Alfragan Ltd./David Ball(1985) 50 ' 60 ' Version 1.5 70 ' Amended : 80 ' 90 ' CONSTANTS,FUNCTIONS ETC 100 ' ----------------------- 110 DIM CONVA%(121),COL164%(16),COL162%(16),COL44%(4),COL42%(4),CCAT%(64),KC%(122),BBABC%(26),GWABC%(26),WLINE!(200),WNO%(200) 120 COMMON DRIVE$,ONAM$,CONVA%(),COL164%(),COL162%(),COL44%(),COL42%(),CCAT%(),KC%(),BBABC%(),GWABC%(),WLINE!(),WNO%() 130 COMMON SCALEX$,㐞-SCALEY$,CFLAG%,XSCALE!,YSCALE!,YSIZE$ 140 COMMON BBA$,BBB$,BBC$,BBD$,BBE$,BBF$,BBG$,BBH$,BBI$ 150 COMMON BBL$,BBM$,BBN$,BBO$,BBP$,BBR$,BBS$,BBT$ 160 COMMON BBU$,BBV$,BBW$ 170 COMMON GWA$,GWB$,GWC$,GWD$,GWE$,GWF$,GWG$,GWH$,GWI$,GWK$,GWL$,GWM$ 180 COMMON GWN$,GWO$,GWP$,GWR$,GWS$,GWT$,GWU$,GWV$,GWW$,GWX$ 190 ESC$=CHR$(27) 200 IVID$=ESC$+CHR$(112) 'inverse video 210 NVID$=ESC$+CHR$(113) 'normal video 220 INN$="(If no name is given then " 230 DEF FNCUR$(A,B)=ESC$+CHR$(89)+CHR$(31+A)+CHR$(31+B) 240 DEF㐞 - FNCSTR$=MID$(CL$,BP%,IP%-BP%) 250 DEF FNKMID$=MID$(CL$,IP%,1) 260 DIM RLIN$(10),COK%(21) 'REPEAT line nos. 270 SP1$=" ":COLON$=":":QUOTE$=CHR$(34):IV$=MKI$(0):PRNT$="PRINT " 280 GOTO 850 290 ' 300 X$=BBA$:RETURN 'get BBC command string 310 X$=BBB$:RETURN 320 X$=BBC$:RETURN 330 X$=BBD$:RETURN 340 X$=BBE$:RETURN 350 X$=BBF$:RETURN 360 X$=BBG$:RETURN 370 X$=BBH$:RETURN 380 X$=BBI$:RETURN 390 X$="":RETURN 400 X$="":RETURN 410 X$=BBL$:RETURN 420 X$=BBM$:RETURN 430 X$=BBN$:RETURN 440 X$=BBO㐞-$:RETURN 450 X$=BBP$:RETURN 460 X$="":RETURN 470 X$=BBR$:RETURN 480 X$=BBS$:RETURN 490 X$=BBT$:RETURN 500 X$=BBU$:RETURN 510 X$=BBV$:RETURN 520 X$=BBW$:RETURN 530 X$="":RETURN 540 X$="":RETURN 550 X$="":RETURN 560 Y$=GWA$:RETURN 'get GW command string 570 Y$=GWB$:RETURN 580 Y$=GWC$:RETURN 590 Y$=GWD$:RETURN 600 Y$=GWE$:RETURN 610 Y$=GWF$:RETURN 620 Y$=GWG$:RETURN 630 Y$=GWH$:RETURN 640 Y$=GWI$:RETURN 650 Y$="":RETURN 660 Y$=GWK$:RETURN 670 Y$=GWL$:RETURN 680 Y$=GWM$:RETURN 690 Y$㐞-=GWN$:RETURN 700 Y$=GWO$:RETURN 710 Y$=GWP$:RETURN 720 Y$="":RETURN 730 Y$=GWR$:RETURN 740 Y$=GWS$:RETURN 750 Y$=GWT$:RETURN 760 Y$=GWU$:RETURN 770 Y$=GWV$:RETURN 780 Y$=GWW$:RETURN 790 Y$=GWX$:RETURN 800 Y$="":RETURN 810 Y$="":RETURN 820 ' 830 ' INITIALISATION 840 ' -------------- 850 CHAN%=0:FCT%=0 'clear file channel nos. 860 HI%=0:ACODE%=0:CHFL%=0 870 W%=0 'clear warning flag 880 LPR$="":LL%=0 'disable printer 890 INKN$="":INKS$="":INKT$="" 'clear INKEY lists 900 ' 910 㐞-' MAIN LOOP 920 ' --------- 930 GOSUB 1240 'output main screen 940 GOSUB 1540:IF OK%<>0 THEN 930 'open files 950 RLIN$="":RPT%=0 'clear REPEAT line flag 960 MODE%=7:ON ERROR GOTO 1140 'set default mode 970 GOSUB 2510:IF OK%=1 THEN 1010 'get next input line 980 GOSUB 4420 'translate to GW format 990 IF GOK%=1 THEN GOSUB 3500 'write output to workfile 1000 GOTO 970 1010 PRINT FNCUR$(23,25)" PRODUCING GW OUTPUT FILE " 1020 GOSUB 3182 'produce final GW output 1040 CLOSE:WNO%(W%)=0 㐞-1050 IF HI%=0 THEN 1090 'j if files unopened 1060 KILL "WORKFILE.TEM" 1070 KILL "PROCWORK.TEM" 1080 KILL "FNWORK.TEM" 1090 GOSUB 1430 'output end of run screen 1100 GOSUB 1980 'await input 1110 IF K$="l" OR K$="L" THEN CHAIN DRIVE$+"B-TRANWL" 1120 IF K%<>13 THEN 850 ELSE SYSTEM 1140 IF ERR=61 THEN MESS$="Disc full":MC$="":GOSUB 15000:GOTO 1040 1142 IF ERR=15 THEN C%=23 ELSE C%=21 1150 GOSUB 2100:RESUME 990 1170 FST%=LEN(OB$)+2:RETURN 1180 Z$=CHR$(40) 1190 IF BR%=0 THEN GOSUB 9600 ELSE G㐞-OSUB 2990 1200 Z$="":RETURN 1210 ' 1220 ' OUTPUT MAIN SCREEN 1230 ' ------------------ 1240 GOSUB 1380 'output heading 1250 PRINT FNCUR$(8,3);IVID$; 1260 PRINT " Give name of BBC Basic file to be converted [.BBC] :-" 1270 PRINT FNCUR$(9,3);NVID$;INN$"input will be taken from keyboard)" 1280 PRINT FNCUR$(11,3);IVID$; 1290 PRINT " Give (different) file name for the GW Basic [.BAS] :-" 1300 PRINT FNCUR$(12,3);NVID$;INN$"output will be to screen)" 1310 PRINT FNCUR$(14,4)"Press ESC to te㐞-rminate the conversion." 1320 PRINT FNCUR$(8,58);:C%=1:GOTO 1372 1340 PRINT FNCUR$(11,58);:C%=2:GOTO 1372 1360 IF INAM$=ONAM$ AND ONAM%=1 THEN MESS$="FILES HAVE SAME NAME":GOSUB 14990:GOTO 1340 1370 RETURN 1372 GOSUB 1790:IF K%=27 THEN 1040 1374 ON C% GOTO 1340,1360 1380 PRINT ESC$+CHR$(69); 'clear screen 1390 PRINT FNCUR$(2,19);"B-TRAN :- BBC BASIC TO GW BASIC CONVERSION":RETURN 1400 ' 1410 ' OUTPUT END OF RUN SCREEN 1420 ' ------------------------ 1430 GOSUB 1380 'output heading 㐞- 1440 PRINT FNCUR$(12,21);IVID$;"CONVERSION OF ";INAM$; 1450 IF K%<>27 THEN PRINT " COMPLETED"; ELSE PRINT " TERMINATED"; 1460 IF W%<>0 THEN PRINT FNCUR$(14,24)"NO.OF CONVERSION WARNINGS = ";W% 1470 PRINT NVID$ 1480 IF W%<>0 THEN PRINT FNCUR$(16,26)"Press 'L' to list warnings" 1490 PRINT FNCUR$(18,25);"Press RETURN to exit to system" 1500 PRINT FNCUR$(20,18);"Press any other key to do another conversion":RETURN 1510 ' 1520 ' OPEN FILES 1530 ' ---------- 1540 OK%=0:ON ERROR GOTO 1730 1550 IF㐞- INAM$<>SPACE$(L%) THEN OPEN "I",1,INAM$:IF OK%=1 THEN RETURN 'open BBC file 1570 IF ONAM$=SPACE$(L%) THEN ONAM%=0 ELSE ONAM%=1:OPEN "O",2,ONAM$:IF OK%=1 THEN RETURN 1590 ON ERROR GOTO 0 1600 OPEN "R",3,"WORKFILE.TEM",64 1610 FIELD 3,4 AS WFLIN$,2 AS WFOR$,2 AS WFBAK$,2 AS WFLEN$,51 AS WFDATA$ 1620 OPEN "R",4,"PROCWORK.TEM",128 1630 FIELD 4,2 AS PLEN$,40 AS PPROC$,4 AS PLIN$,2 AS PNEXT$,2 AS PFCON$,72 AS PUSE$,2 AS PPARP$,2 AS PFBAK$ 1640 FIELD 4,126 AS PPRM$ 1650 HIPR%=0:LPROC%=0 'show empty file 㐞 - 1660 OPEN "R",5,"FNWORK.TEM",128 1670 FIELD 5,2 AS FLEN$,40 AS FFNM$,4 AS FLIN$,2 AS FWNXT$,2 AS FCON$,72 AS FUSE$,2 AS FPARP$,2 AS FBAK$,1 AS FFTY$ 1680 FIELD 5,126 AS FPRM$,2 AS FPCON$ 1690 HIFN%=0:LFN%=0 'show is empty file 1700 IF INAM$<>SPACE$(L%) AND ONAM%=1 THEN 1930 1710 PRINT FNCUR$(15,1);STRING$(78,45) 1720 PRINT FNCUR$(16,1);:RETURN 1730 MESS$="FILE NOT FOUND":GOSUB 14990 1740 OK%=1:RESUME NEXT 1760 ' 1770 ' GET FILE NAME 1780 ' ------------- 1790 L%=14 1㐞.800 CP%=1:Y$=SPACE$(L%):X%=0 'set char.pointer 1820 GOSUB 1980 'get next char. 1830 IF K%=13 THEN 1920 'j if return 1840 IF K%=8 THEN GOSUB 1940:GOTO 1820 'action backspace 1850 IF K%>31 AND K%<127 THEN 1880 'j if normal character 1860 IF K%=27 THEN RETURN 'check for ESC 1870 PRINT CHR$(7);:GOTO 1820 1880 MID$(Y$,CP%,1)=K$ 'build up field 1890 IF K%=46 THEN X%=CP% 'set . flag 1900 CP%=CP%+1:PRINT K$; 1910 IF CP%<=L% THEN 1820 'loop till full 1920 ON C% GOSUB 2010,2020,2030 1930 RETU㐞.RN 1940 IF CP%=1 THEN RETURN 'ignore if 1st char. 1950 CP%=CP%-1 1960 MID$(Y$,CP%,1)=SP1$ 1970 PRINT K$" "K$;:RETURN 'backspace & spacefill 1980 K$=INKEY$ 1990 IF LEN(K$)=0 THEN 1980 'loop till input 2000 K%=ASC(K$):RETURN 2010 X$=".BBC":GOSUB 2040:INAM$=Y$:RETURN 2020 X$=".BAS":GOSUB 2040:ONAM$=Y$:RETURN 2030 CL$=LEFT$(Y$,CP%-1):RETURN 2040 IF X%=0 AND Y$<>SPACE$(L%) THEN GOSUB 2030:Y$=CL$+X$:X%=CP% 2050 RETURN 2060 ' 2070 ' REPORT WARNINGS 2080 ' --------------- 2090 GOSUB 2100:RETU㐞.RN 2100 IF W%>199 THEN RETURN 2102 IF W%=0 THEN 2110 ELSE IF LI!=WLINE!(W%-1) AND C%=WNO%(W%-1) THEN RETURN 2110 WLINE!(W%)=LI!:WNO%(W%)=C% 2120 W%=W%+1:RETURN 2130 ' 2140 ' LOOK FOR LINE IN WORKFILE 2150 ' ------------------------- 2160 A$="GOSUB "+PNAM$ 2170 X!=CVS(Z$):WREC%=X!/10:Y$="" 'get approx.record no. 2180 IF WREC%>HI% THEN WREC%=HI% 2190 GET 3,WREC% 2200 IF CVI(WFBAK$)<>0 THEN WREC%=WREC%-1:GOTO 2190 2210 IF CVS(WFLIN$)=X! THEN 2250 'j if found 2220 IF CVS(WFLIN$)>X! THEN WREC㐞.%=WREC%-1:GOTO 2180 2230 WREC%=WREC%+1 2240 IF CVI(WFOR$)<>0 THEN GET 3,WREC%:GOTO 2230 ELSE 2180 2250 SWREC%=WREC%:FREC%=WREC%:WFLEN%=CVI(WFLEN$) 2260 Y$=Y$+WFDATA$ 2270 IF CVI(WFOR$)<>0 THEN WREC%=CVI(WFOR$):GET 3,WREC%:GOTO 2260 2300 Y%=INSTR(Y$,A$) 2310 IF Y%<>0 THEN Y$=LEFT$(Y$,WFLEN%) 2320 RETURN 2330 IF Y%=0 THEN RETURN ELSE SV%=1:GOSUB 2382 2340 Y$=Y$+LINO$+CHR$(46)+PNAM$+FFTY$+A$:GOTO 2370 2350 IF Y%=0 THEN RETURN ELSE SV%=5:GOSUB 2382 2360 Y$=Y$+LINO$+A$:UZ$=Y$ 2370 GET 3,SWREC% 'ge㐞.t 1st record 2380 X!=CVS(WFLIN$):GOTO 3520 2382 A$=RIGHT$(Y$,LEN(Y$)-Y%-SV%-PRLEN%):Y$=LEFT$(Y$,Y%+SV%):RETURN 2390 ' 2400 ' GET LINE NO. 2410 ' ------------ 2420 GOSUB 15880:IF OK%=1 THEN RETURN 'look for numeric 2440 GOSUB 15740:LINO$=FNCSTR$:LI!=VAL(LINO$) 2460 IF ONAM%=1 THEN PRINT FNCUR$(23,28)"CONVERTING LINE NO. ";LINO$; 2470 OK%=0:RETURN 2480 ' 2490 ' GET NEXT INPUT LINE 2500 ' ------------------- 2510 IF INAM$=SPACE$(14) THEN 2610 'j if keyboard input 2520 K$=INKEY$:IF LEN㐞.(K$)=0 THEN 2540 2530 IF K$=CHR$(27) THEN K%=27:GOTO 2980 'check for ESC 2540 IF K%<32 AND LL%<>0 THEN CL$=RIGHT$(CL$,LL%-IP%):GOTO 2570 2550 IF EOF(1) THEN 2980 2560 LINE INPUT #1,CL$ 'read next input line 2570 LL%=LEN(CL$) 'set line length 2580 OK%=0:COMCT%=0 2590 FIRST%=IP% 2600 ER%=0:BRKT%=0:VST%=0:FCOM%=0:NL%=0:BR%=0:RETURN 2610 PRINT CHR$(62); 2620 C%=3:L%=254:GOSUB 1800 'get input line 2630 IF K%=27 THEN 2980 ELSE PRINT:GOTO 2570 2640 ' 2650 ' GET VARIABLE 2660 ' -----------㐞.- 2670 D%=0:GOSUB 15730:IF OK%=1 THEN RETURN 'look for non-space 2680 IF K%=38 THEN GOSUB 4300:GOTO 2470 2690 IF A%=1 THEN TYP%=1 ELSE TYP%=99 2700 GOSUB 15740:GOTO 2470 'look for end 2701 IF A%=7 THEN GOSUB 4252 2702 GOTO 2470 2710 ' 2720 ' CHECK VARIABLE NAME AGAINST GW COMMANDS 2730 ' --------------------------------------- 2740 VST%=LEN(OB$)+1 2750 L%=IP%-BP% 2780 GOSUB 3360:IF OK%=1 THEN 2970 'check for FN/PROC name 2790 GOSUB 3060:IF OK%=1 THEN 2970 'check for LOCAL name 2792 GOSUB㐞. 15692:GOSUB 16392 'get GW list 2810 SL%=LEN(Y$):IF SL%=0 THEN 2980 2820 SP%=1:GWL%=0 2830 N%=2 2840 NK%=ASC(MID$(C$,N%,1)) 2850 IF NK%>96 THEN NK%=NK%-32:GWL%=1 'check for lower case 2860 NK$=CHR$(NK%) 2870 BK$=MID$(Y$,SP%+N%-1,1) 'get next GW letter 2880 IF BK$=SP1$ THEN 2950 'j if end of GW 2890 IF BK$>NK$ THEN 2980 'j if not found 2900 IF BK$=NK$ THEN 2940 'j if match so far 2910 SP%=SP%+7 'step to next GW command 2920 IF SP%>SL% THEN 2980 ELSE 2830 2940 N%=N%+1:IF N%<8 THEN 2840㐞 . ELSE 2960 2950 IF NK$<>SP1$ THEN 2980 2960 IF GWL%=0 THEN Z$="GW." ELSE Z$="GWL." 2970 OK%=0:IF VST%=0 THEN GOSUB 2990:BSP%=BP%:RETURN ELSE 5370 2980 OK%=1:RETURN 2990 BE$=BE$+Z$:RETURN 3000 BP%=BSP%:BE$=BE$+FNCSTR$:IF NL%=1 THEN NL%=0 3010 RETURN 3020 BE$=BE$+MID$(CL$,BSP%,BP%-BSP%):BSP%=BP%:RETURN 3022 OB$=LEFT$(OB$,OP%):RETURN 3030 ' 3040 ' CHECK FOR LOCAL VARIABLE NAME 3050 ' ----------------------------- 3060 IF LEN(LLST$)=0 THEN 2470 'j if no LOCALS 3070 N%=1:V$=LLST$ 3080 NK%=VA㐞.L(MID$(V$,N%,2)) 'get length of LOCAL 3090 LLINE%=VAL(MID$(V$,N%+NK%+2,2)) 'get line no.length 3100 GOSUB 3444:IF OK%=0 THEN 3140 3110 N%=N%+NK%+LLINE%+4 'step to next entry 3120 IF N%>LEN(V$) THEN 2470 ELSE 3080 3140 Z$="GW"+MID$(V$,N%+NK%+4,LLINE%)+CHR$(46) 3150 GWL%=2:GOTO 2980 3160 ' 3170 ' PRODUCE FINAL GW OUTPUT 3180 ' ----------------------- 3182 ON ERROR GOTO 3320:IF HIFN%=0 THEN 3190 ELSE REC%=1 3184 IF REC%<>0 THEN GET 5,REC%:GOSUB 6480:REC%=CVI(FWNXT$):GOTO 3184 3190 REC%㐞.=1:BR%=0:ON ERROR GOTO 0 3200 IF CHFL%=1 AND ONAM%=1 THEN PRINT #2,"0 COMMON A%,B%,C%,D%,E%,F%,G%,H%,I%,J%,K%,L%,M%,N%,O%,P%,Q%,R%,S%,T%,U%,V%,W%,X%,Y%,Z%" 3210 IF REC%>HI% THEN RETURN 3220 GET 3,REC% 'get workfile record 3230 IF CVI(WFBAK$)<>0 OR CVI(WFLEN$)=0 THEN 3310 3240 OB$="":GOSUB 3324 3250 IF CVI(WFOR$)<>0 THEN GET 3,CVI(WFOR$):GOSUB 3324:GOTO 3250 3290 IF LEN(OB$)>254 THEN GOSUB 3322:OP%=254:GOSUB 3022 3300 IF ONAM%=0 THEN PRINT OB$ ELSE PRINT #2,OB$ 3310 REC%=REC%+1:GOTO 3210 3㐞.320 GOSUB 3322:RESUME 3690 3322 C%=23:LI!=CVS(WFLIN$):GOTO 2090 3324 Z$=LEFT$(WFDATA$,CVI(WFLEN$)):GOTO 5370 3330 ' 3340 ' CHECK FOR FN/PROC PARAM.NAME 3350 ' ---------------------------- 3360 OK%=0:IF FCT%=0 OR DPF%=1 THEN RETURN 'j if not defining FN/PROC 3370 IF DPF%=2 THEN GOSUB 15282:GOSUB 3442 ELSE GET 4,FCT%:V$=PPRM$ 3380 N%=1 3390 NK%=VAL(MID$(V$,N%,2)) 'get variable length 3400 IF NK%=0 THEN 2470 'j if end of list 3410 GOSUB 3444:IF OK%=0 THEN GOSUB 3440:GOTO 2980 3420 N%=N%+NK%+2㐞.:GOTO 3390 3440 Z$="GW"+PLINE$+CHR$(46):RETURN 3442 GET 5,FCT%:V$=FPRM$:RETURN 3444 IF NK%<>L% THEN 2980 3446 IF MID$(V$,N%+2,NK%)<>MID$(CL$,BP%,L%) THEN 2980 ELSE 2470 3450 ' 3460 ' WRITE WORKFILE RECORD 3470 ' --------------------- 3480 X$=OB$:GOSUB 16530:IF RIGHT$(X$,1)=COLON$ THEN X$=LEFT$(X$,LEN(X$)-1) 3490 OB$=X$ 3500 IF ONAM%=0 THEN PRINT OB$ 3510 Y$=OB$:HI%=HI%+1:SWREC%=HI%:X!=LI!:LSET WFOR$=IV$ 3520 SV%=0:GOSUB 3530:RETURN 'write record(s) 3530 LSET WFLIN$=MKS$(X!) 'set line no.㐞. 3540 WFLEN%=LEN(Y$) 'get line length 3550 IF WFLEN%>51 THEN LLINE%=WFLEN%-51 ELSE LLINE%=0 3560 LSET WFLEN$=MKI$(WFLEN%) 'set data length 3570 LSET WFDATA$=LEFT$(Y$,WFLEN%) 3580 NK%=CVI(WFOR$) 3590 IF LLINE%=0 THEN LSET WFOR$=IV$:GOTO 3610 3600 IF NK%=0 OR SWREC%=HI% THEN HI%=HI%+1:LSET WFOR$=MKI$(HI%) 3610 LSET WFBAK$=MKI$(SV%) 'set backward pointer 3620 PUT 3,SWREC% 3630 IF LLINE%=0 THEN 3680 3640 Y$=RIGHT$(Y$,LEN(Y$)-51) 3650 SV%=SWREC%:SWREC%=CVI(WFOR$) 3660 IF NK%<>0 THEN GET 3,NK% 㐞.ELSE LSET WFOR$=IV$ 3670 GOTO 3530 3680 IF NK%<>0 THEN GET 3,NK%:LSET WFBAK$=IV$:LSET WFLEN$=IV$:PUT 3,NK% 3690 RETURN 3700 ' 3710 ' BRACKETED EXPRESSIONS 3720 ' --------------------- 3730 GOSUB 15730:IF OK%=1 THEN 1200 3740 AE%=0:IF NL%=0 THEN NL%=1 3750 IF K%=40 THEN PCT%=1 ELSE PCT%=0 3760 SB%=PCT%:SV%=0 3770 IF K%=40 OR K%=44 OR K%=59 THEN IP%=IP%+1 3780 IF BR%=0 THEN BE$="" 3790 BSP%=-1:GOSUB 15730:IF OK%=1 THEN 1200 'look for non-space 3810 GOSUB 4272:GOTO 3830 3812 GOSUB 4250 38㐞.20 IP%=IP%+1 3830 GOSUB 16100:IF OK%=1 THEN GOSUB 3000:GOTO 1200 3840 ON A% GOTO 3880,3900,3890,3920,3920,4120,3890,3870,3920,4130,3890,3910,3980,3980,3860,3920,3920,3812 3860 GOSUB 15320:GOTO 3820 3870 GOSUB 16130:IF PCT%=0 THEN 3960 ELSE 3830 3880 GOSUB 2690:IF A%=2 AND PCT%=0 THEN 3980 ELSE 3830 3890 IF PCT%=0 THEN 3960 ELSE 3920 3900 GOSUB 3990:IF SV%=2 AND AE%=0 THEN 3970 ELSE 3830 3910 AE%=1 3920 IF SPEC%=36 AND PCT%=0 THEN 3980 3930 IF K%<>44 AND K%<>59 THEN 3820 'j if not , 3940 IF PCT㐞.%=1 THEN IF SB%=0 THEN 3820 ELSE 4140 3950 IF PCT%<>0 THEN 3820 3960 IF K%=32 AND AE%=1 THEN 3820 3970 IF SPEC%<>37 THEN GOSUB 4200:IF OK%=0 THEN 3820 ELSE IF K%<>58 THEN IP%=BP%:GOSUB 4260 3980 GOSUB 3000:GOTO 2980 3990 C$=SPACE$(8):Y%=IP%:Z%=BP%:TYP%=2:GOSUB 15220 'look for non-alpha 4000 GOSUB 15490:GOSUB 3020:IF OK%=1 THEN 4110 'j if not BBC command 4010 IF BNO%=1 OR BNO%=26 OR BNO%=64 OR BNO%=102 THEN AE%=1 4020 COK%(NL%*3)=PCT%:COK%(NL%*3+1)=SB%:COK%(NL%*3+2)=AE%:PCT%=0:BR%=1:GOSUB 16180 'chec㐞 .k for requirements 4030 IF AE%=1 AND (SPEC%<34 OR SPEC%>40) THEN 4060 4040 IF SPEC%<>0 THEN GOSUB 4750 4050 PCT%=COK%(NL%*3):SB%=COK%(NL%*3+1):AE%=COK%(NL%*3+2):GOTO 4080 4060 IF GNO%<>0 THEN BE$=LEFT$(BE$,LEN(BE$)-LEN(GWCOM$)) 4070 IP%=BP%:A%=2:AE%=0 4080 NL%=NL%-1:IF NL%<2 THEN BR%=0 4090 GOSUB 4272:C%=36:GOSUB 16560 4100 SV%=A%:RETURN 4110 VST%=0:BP%=Y%:IP%=BP%:GOSUB 2670:GOSUB 2750:GOSUB 16100:Z$="":GOTO 4100 4120 PCT%=PCT%+1:GOTO 3820 4130 IF PCT%<>0 THEN PCT%=PCT%-1:GOTO 4160 4140 GOSUB 30㐞/00:GOTO 2470 4160 IF SB%=0 OR (SB%=1 AND PCT%>0) THEN GOSUB 16550:GOTO 3830 4170 IF AE%=0 OR (PCT%=0 AND SB%=1) THEN 3950 ELSE 3830 4180 IF K%>96 THEN K%=K%-32 4190 RETURN 4200 GOSUB 15730:IF OK%=1 THEN RETURN 4210 GOSUB 16120:IF A%=12 THEN 4240 4220 IF A%<>2 THEN 2980 ELSE GOSUB 4370 4230 IF X$<>"MOD" AND X$<>"DIV" THEN 2980 4240 IP%=IP%-1:AE%=1:RETURN 4250 CL$=LEFT$(CL$,IP%)+"H"+RIGHT$(CL$,LL%-IP%):LL%=LL%+1:GOTO 15370 4252 IP%=IP%+1 4260 IF IP%<=LL% THEN K%=ASC(FNKMID$) 4270 RETURN 4272 BP%㐞/=IP%:BSP%=IP%:RETURN 4280 ' CONVERT HEX TO DECIMAL 4290 ' ---------------------- 4300 D%=0 4310 GOSUB 16092:IF OK%=1 THEN 4360 4320 IF K%<48 OR K%>57 THEN 4340 4330 D%=D%*16+K%-48:GOTO 4310 4340 IF K%<65 OR K%>70 THEN 4360 4350 D%=D%*16+K%-55:GOTO 4310 4360 X$=STR$(D%):GOSUB 16540:RETURN 4370 X$=MID$(CL$,IP%,3):RETURN 4380 X$=MID$(CL$,IP%+1,1):RETURN 4382 GOSUB 15730:GOTO 9900 4390 ' 4400 ' TRANSLATE TO GW FORMAT 4410 ' ---------------------- 4420 OB$="":GOK%=1 'clear output buff㐞/er 4430 IP%=1:PRFL%=0 'initialise input pointer & PRINT flag 4440 GOSUB 2420:IF OK%=1 THEN GOK%=0:GOTO 4740 'get line no. 4460 GOSUB 16460:GOSUB 1170 'copy line no. 4470 IF ACODE%=1 THEN GOSUB 15730:LL%=0 'ignore assembler code 4500 GOSUB 4382:IF IP%>LL% THEN OB$=LINO$+" REM":GOTO 4730 'j if no command 4510 IF LEN(OB$)=LEN(LINO$) THEN OB$=OB$+SP1$ 4520 FIRST%=0:OP%=LEN(OB$) 4530 IF K%<>58 THEN 4590 4540 IF SFIX%=56 THEN GOSUB 13790:GOTO 4590 4550 IF ER%=1 THEN GOSUB 4800 4560 IP%=IP%+1:X%=LEN(O㐞/B$)-LEN(LINO$):FIRST%=0:COMCT%=COMCT%+1 4570 IF RIGHT$(OB$,1)<>COLON$ AND RIGHT$(OB$,X%)<>SPACE$(X%) THEN GOSUB 1170:GOSUB 16480 4580 OP%=LEN(OB$) 4590 NL%=0:GOSUB 15070:IF OK%=1 THEN 4690 'look for BBC command 4600 IF OK%=2 THEN 4640 'j if VDU 4610 GOSUB 15490 'check it in command table 4620 IF ER%=1 THEN IF BNO%=46 THEN ER%=0:GOTO 4700 ELSE 4700 4630 IF OK%=1 THEN IP%=BP%:GOSUB 2670:GOSUB 2740:GOTO 4690 'j if not found 4640 IF FCOM%=0 THEN FCOM%=LEN(OB$) 'keep start of command 4650 GOSUB 1㐞/6180 'check if special action required 4660 IF SPEC%<>0 THEN GOSUB 4750 ELSE 4520 'j if is 4670 NL%=NL%-1 4680 IF SPEC%=20 THEN 4730 ELSE 4530 4690 IF LL%<>0 THEN GOSUB 16460 'copy to output 4700 IF IP%<=LL% THEN 4530 4710 IF ER%=1 THEN GOSUB 4800 4720 IF SFIX%=56 THEN GOSUB 13790 4730 IF ACODE%=1 AND K%=93 THEN ACODE%=0 4740 RETURN 4750 IF SPEC%>40 THEN L%=SPEC%-40:GOTO 4780 4760 ON SPEC% GOSUB 9880,5980,8160,10480,11350,12550,14910,4880,4930,5100,5150,8840,10170,5640,5230,6090,7870,1035㐞/0,7960,12510,8080,4930,8260,8300,8650,8760,4930,9070,9660,9780,4930,9950,10060,4840,7920,5980,5980,12750,10710,10120 4770 RETURN 4780 ON L% GOSUB 11220,11390,11870,12320,12430,12610,12710,10750,12950,13370,13450,13500,4930,13610,13690,13730,4930,13880,5980,12380,10390,10660,10120,13570,13310,8000,5270,5050,8210,10440,6050,5570 4790 RETURN 4800 C%=24:GOSUB 2100:X$=OB$:GOSUB 16530:OB$=X$:Z$=" 0":GOSUB 1190:ER%=0:RETURN 4810 ' 4820 ' ABS/SQR 4830 ' 4840 RETURN 4850 ' 4860 ' ACS 4870 ' 4880 GO㐞/SUB 10080 'get argument 4890 Z$="-ATN("+BE$+"/SQR(-"+BE$+"*"+BE$+"+1))+1.5708" 4892 BE$="":GOTO 5370 4900 ' 4910 ' ADVAL/BPUT/CALL/COUNT/EVAL/HIMEM/LISTO/LOMEM/OPT/PAGE/TOP/USR 4920 ' 4930 C%=25 4940 GOSUB 2100:OB$=LEFT$(OB$,OP%):GOTO 8100 4950 ' 4960 ' AND 4970 ' 4980 IF BR%=0 OR BE$="" THEN X%=ASC(RIGHT$(OB$,1)) ELSE X%=ASC(RIGHT$(BE$,1)) 4990 IF X%=32 OR X%=40 THEN 1190 5000 IF X%>62 THEN 5040 ELSE X%=X%-31 5010 X%=CCAT%(X%) 5020 IF (X%>10 AND X%<15) OR (X%=4 AND SPEC%<>0) THEN 1200㐞/ 5040 Z$=SP1$:GOTO 5370 5050 GOSUB 4980:IF INV%=0 OR BRKT%=1 THEN Z$="AND" ELSE Z$="OR NOT" 5060 GOTO 5370 5070 ' 5080 ' ASN 5090 ' 5100 GOSUB 10080 'get argument 5110 Z$="ATN("+BE$+"/SQR(-"+BE$+"*"+BE$+"+1))":GOTO 4892 5120 ' 5130 ' BGET 5140 ' 5150 GOSUB 5170:IF OK%=1 THEN RETURN 5160 Z$="INPUT$(1,#"+X$+CHR$(41):GOTO 5370 5170 TYP%=5:GOSUB 15940:IF OK%=1 THEN RETURN 'look for # 5190 GOSUB 16542:GOSUB 13240:GOTO 2470 'get channel no. 5200 ' 5210 ' CHAIN 5220 ' 5230 CHFL%=1:RETU㐞 /RN 5240 ' 5250 ' CHR$ 5260 ' 5270 GOSUB 4380:IF IP%+1>LL% OR X$<>"$" THEN RETURN 5280 Z$="CHR$(":IP%=IP%+2 5290 GOSUB 15730:IF OK%=1 THEN RETURN 5300 SL%=K%-40:C%=40:GOSUB 16560 5310 GOSUB 2670:IF OK%=1 THEN RETURN 5320 IF PRFL%<>0 AND MODE%=7 THEN 5380 'j to check colour char. 5330 GOSUB 1190 5340 IF D%=0 THEN GOSUB 16460 ELSE Z$=X$:GOSUB 1190 'copy number 5350 IF SL%<>0 OR (SL%=0 AND K%=41) THEN Z$=CHR$(41) 5360 GOSUB 15730:IF OK%=0 AND SL%=0 THEN GOSUB 16550 ELSE IP%=BP% 5370 GOSUB 1190㐞/:RETURN 5380 IF D%=0 THEN GOSUB 11730:IF OK%=1 THEN XVAL$=X$:GOTO 5480 5390 IF D%<>0 THEN X%=D% ELSE X%=XV% 5400 IF X%<128 OR X%>159 THEN 5330 'j if not colour definition 5410 X%=X%-127 5420 IF X%=9 THEN C%=1:GOTO 5530 'j if flash foreground 5430 IF X%=14 THEN C%=2:GOTO 5530 'j if double height chars. 5440 IF X%>16 AND X%<25 THEN X%=X%-16 'amend if graphics 5450 IF X%>24 THEN C%=3:GOTO 5530 'j if graphics control 5460 ON CFLAG% GOSUB 5900,5920 5470 GOSUB 5532 5480 Z$="COLOR "+XVAL$ 'get colour 㐞/ 5490 IF RIGHT$(OB$,6)=PRNT$ THEN OP%=PRFL%:GOSUB 3022 ELSE GOSUB 16480 5500 GOSUB 1190:GOSUB 11830 5510 IF IP%0 THEN GOSUB 5040:GOSUB 16460 5600 RETURN 5602 GOSUB 15740:X%=VAL(FNCSTR$):RETURN 5610 ' 5620 ' COLOUR 5630 ' 5640 IF CFLAG%=㐞/0 THEN C%=15:GOTO 8090 5650 GOSUB 15730:GOSUB 8724 'look for non-space 5670 IF OK%=1 OR K%<48 OR K%>57 THEN RETURN 5680 TYP%=1:GOSUB 5602 'look for non-numeric 5700 IF X%>127 THEN X%=X%-128:Z$=" ," ELSE Z$=SP1$ 'check for background 5710 ON MODE%+1 GOSUB 5740,5820,5880,5740,5740,5820,5740,5880 5720 GOSUB 5532:Z$=Z$+XVAL$:GOTO 5370 5730 ' mode 0/3/4/6 5740 IF X%=0 THEN 5720 5750 ON CFLAG% GOSUB 5780,5800 5752 RETURN 5780 X%=3:RETURN 5800 X%=15:RETURN 5810 ' mode 1/5 5820 X%=X%+1:ON CFLAG%㐞/ GOSUB 5840,5860 5830 RETURN 5840 X%=COL42%(X%):RETURN 5860 X%=COL44%(X%):RETURN 5870 ' mode 2/7 5880 X%=X%+1:ON CFLAG% GOSUB 5900,5920 5890 RETURN 5900 X%=COL162%(X%):RETURN 5920 X%=COL164%(X%):RETURN 5930 ' 5940 ' ASC/COS/INT/LEN/SIN/SPC/TAN 5950 ' 5960 GOSUB 15730:IF OK%=0 THEN GOSUB 1180 5970 RETURN 5980 GOSUB 5960:GOSUB 3740 5990 GOSUB 16500 6000 IF SB%=1 THEN GOSUB 16550 6010 Z$=CHR$(41):GOTO 5370 6020 ' 6030 ' DATA 6040 ' 6050 GOSUB 15920:GOTO 9900 'look for : 6060 ' 60㐞/70 ' DEF 6080 ' 6090 DPF%=1:FCT%=1 'set definition flag 6100 GOSUB 15730:RETURN 'look for non-space 6110 ' 6120 ' 1. Function 6130 IF LFN%=0 THEN 6160 'j if 1st time 6140 GOSUB 6650:IF OK%=0 THEN SFR%=REC%:GOTO 6470 'look for existing record 6150 GOSUB 6720 'chain to last entry 6160 GOSUB 6230:SFR%=HIFN% 'write new record 6170 LFN%=HIFN%:REC%=HIFN% 6180 GOSUB 6750 'action any params. 6190 DPF%=2 6200 GOSUB 15730:IF OK%=1 THEN 8100 'look for non-space 6210 IF K%=58 THEN 8110 62㐞/20 IF K%=61 THEN GOSUB 6330:Z$=":RETURN":GOTO 5370 ELSE 6990 6230 HIFN%=HIFN%+1 6240 LSET FLEN$=MKI$(PRLEN%) 'set name length 6250 LSET FFNM$=PNAM$ 'set FN name 6260 LSET FLIN$=MKS$(N!) 'set line no. 6270 LSET FCON$=IV$ 'clear continuation 6280 LSET FWNXT$=IV$ 'clear next 6290 LSET FBAK$=MKI$(LFN%) 'set backward pointer 6300 LSET FUSE$=SPACE$(72) 'clear used line nos. 6310 LSET FPARP$=IV$:FCT%=0 'clear parameter block pointer 6312 LSET FFTY$=" " 6320 PUT 5,HIFN%:RETURN 6330 IP%=IP%+1㐞/:GOSUB 3440:Z$=Z$+PNAM$:GOSUB 1190:A$="":VST%=0 6370 GOSUB 15890:A$=A$+FNCSTR$:IF OK%=1 THEN 6450 6390 TYP%=99:GOSUB 15220 'look for end of variable 6400 GOSUB 2750:A$=A$+Z$+FNCSTR$:GOTO 6370 6450 IF A%=7 THEN GET 5,REC%:LSET FFTY$=K$:PUT 5,REC% ELSE K$="" 6452 Z$=K$+CHR$(61)+A$:GOTO 5370 6470 GOSUB 6750:GOTO 6190 'action any parameters 6480 X%=1:GOSUB 6872:X$=STR$(CVS(FLIN$)):GOSUB 16540:LINO$=X$:PRLEN%=CVI(FLEN$):PNAM$=LEFT$(FFNM$,PRLEN%) 6490 IF FCT%<>0 THEN GOSUB 3442:PARCT%=CVI(FPCON$):GET 5,R㐞/EC% 6500 IF X%>72 THEN 6590 'j if no more 6510 Z$=MID$(FUSE$,X%,4) 6520 IF Z$=SPACE$(4) THEN Z$="":RETURN 'j if empty entry 6570 GOSUB 6874:A$="GW"+PNAM$:GOSUB 2170:GOSUB 2330 6580 X%=X%+4:GOTO 6500 6590 IF CVI(FCON$)=0 THEN RETURN ELSE GET 5,CVI(FCON$):GOTO 6480 6650 REC%=1 6660 IF REC%=0 THEN 2980 'j not found 6670 GET 5,REC%:X%=CVI(FLEN$) 6690 IF X%<>PRLEN% THEN 6710 'j if not found 6700 IF LEFT$(FFNM$,X%)=PNAM$ THEN GOSUB 6872:GOTO 2470 6710 REC%=CVI(FWNXT$):GOTO 6660 'get next entry 6720㐞 / GET 5,LFN% 6730 LSET FWNXT$=MKI$(HIFN%+1) 'set pointer to new entry 6740 PUT 5,LFN%:RETURN 6750 GOSUB 15730:IF OK%=1 OR K%<>40 THEN RETURN 6760 LSET FPRM$=SPACE$(126) 6780 GOSUB 7832 6790 Y$=FPRM$:GOSUB 7700 'put param.in list 6800 LSET FPRM$=Y$ 6810 IF K%=44 THEN GOSUB 3770:GOTO 6790 'j if , 6820 IP%=IP%+1 6830 HIFN%=HIFN%+1:FCT%=HIFN% 6832 LSET FPCON$=MKI$(PARCT%) 6840 PUT 5,HIFN% 'write param.block 6850 GET 5,REC% 6860 LSET FPARP$=MKI$(HIFN%) 'set param.block pointer 6862 LSET FLIN$㐞0=MKS$(N!) 6870 PUT 5,REC%:RETURN 6872 FCT%=CVI(FPARP$):RETURN 6874 GOSUB 2160:GOSUB 2350:IF FCT%<>0 THEN GOSUB 7210 6876 RETURN 6880 ' 6890 ' 2. Procedure 6900 IF LPROC%=0 THEN 6960 'j if 1st time 6910 GOSUB 7580:IF OK%=0 THEN 7100 'look for existing record 6920 GOSUB 7836 'chain to last entry 6960 GOSUB 12280 'write new record 6970 GOSUB 7650 'action parameters 6980 DPF%=3 6990 IF COMCT%=0 THEN 12660 ELSE 8110 7000 HIPR%=HIPR%+1 7010 LSET PLEN$=MKI$(PRLEN%) 'set name length 7020 LS㐞0ET PPROC$=PNAM$ 'set procedure name 7030 GOSUB 7834 7040 LSET PFCON$=IV$ 'set continuation pointer 7050 LSET PNEXT$=IV$ 'set forward pointer 7060 LSET PFBAK$=MKI$(LPROC%) 'set backward pointer 7080 LSET PPARP$=IV$:FCT%=0 'clear parameter block pointer 7090 PUT 4,HIPR%:RETURN 7100 GOSUB 7650 'action any params 7110 X%=1 7120 IF FCT%<>0 THEN GET 4,FCT%:V$=PPRM$:GET 4,REC% 7130 IF X%>72 THEN 7420 'j if all looked at 7140 Z$=MID$(PUSE$,X%,4) 'get used in line no. 7150 IF Z$=SPACE$(4) THEN 㐞0Z$="":GOTO 7450 'j if end of entries 7200 GOSUB 6874:X%=X%+4:GOTO 7130 7210 IF Y%=0 THEN 7400 ELSE VY%=Y%:XB%=PARCT% 7220 VY%=VY%-1 7230 IF VY%=0 THEN 7400 7240 IF MID$(UZ$,VY%,1)<>CHR$(61) THEN 7220 'look for = 7250 XB%=XB%-1 'count down on params. 7260 IF XB%<>0 THEN 7220 7270 Y$=LEFT$(UZ$,VY%-1) 7280 Z%=1 7290 C%=VAL(MID$(V$,Z%,2)) 'get param.length 7300 IF C%=0 THEN 7372 'j if last param. 7310 NVY%=VY% 7320 Y$=Y$+"GW"+LINO$+"."+MID$(V$,Z%+2,C%) 7330 Z%=Z%+2+C% 'step to next entr㐞0y 7340 VY%=VY%+1 7350 IF VY%>=Y% THEN 7370 7360 IF MID$(UZ$,VY%,1)<>CHR$(61) THEN 7340 7370 Y$=Y$+MID$(UZ$,NVY%,VY%-NVY%):GOTO 7290 7372 ' IF LEN(UZ$)+LEN(Y$)-Y%>254 THEN 7400 7380 Y$=Y$+MID$(UZ$,Y%,LEN(UZ$)-Y%+1) 7390 SWREC%=FREC%:GET 3,SWREC%:GOSUB 3520 'write workfile record 7400 RETURN 7420 IF CVI(PFCON$)<>0 THEN GET 4,CVI(PFCON$):GOTO 7110 'get continuation 7450 GET 4,REC% 'get main record 7480 GOSUB 7834:PUT 4,REC%:GOTO 6980 7490 Z$="" 7500 GOSUB 15890 'look for alpha 7510 IF OK%=1㐞0 THEN GOTO 9900 7520 IF ASC(K$)>96 THEN LC%=1 ELSE LC%=0 7530 TYP%=99:GOSUB 15740 'look for non-alpha numeric 7540 PNAM$=FNCSTR$:LC%=0 7550 PRLEN%=LEN(PNAM$) 7560 N!=LI!:IF DPF%=1 THEN PLINE$=LINO$ 7570 RETURN 7580 REC%=1 7590 IF REC%=0 THEN 2980 'j not found 7600 GET 4,REC% 7610 X%=CVI(PLEN$) 'get names length 7620 IF X%<>PRLEN% THEN 7640 'j if not found 7630 IF LEFT$(PPROC$,X%)=PNAM$ THEN FCT%=CVI(PPARP$):GOTO 2470 7640 REC%=CVI(PNEXT$):GOTO 7590 'get next entry 7650 GOSUB 15730:IF OK%=1 O㐞0R K%<>40 THEN RETURN 7660 LSET PPRM$=SPACE$(126) 7680 GOSUB 7832 'look for , or ) 7690 Y$=PPRM$:GOSUB 7700:GOTO 7760 7700 GOSUB 16520:X%=LEN(X$) 7710 MID$(Y$,XA%,2)=STR$(X%) 'set length 7720 MID$(Y$,XA%+2,X%)=X$ 7730 XA%=XA%+2+X% 'step pointer 7740 MID$(Y$,XA%,2)=IV$ 7750 PARCT%=PARCT%+1:RETURN 'step param.count 7760 LSET PPRM$=Y$ 7770 IF K%=44 THEN GOSUB 3770:GOTO 7690 'j to look for next param. 7780 IP%=IP%+1 'step over ) 7790 HIPR%=HIPR%+1:FCT%=HIPR% 7800 PUT 4,HIPR% 'write p㐞0arameter block 7810 GET 4,REC% 7820 LSET PPARP$=MKI$(HIPR%) 'set param.block pointer 7830 PUT 4,REC%:RETURN 7832 PARCT%=0:XA%=1:GOSUB 3750:RETURN 7834 LSET PLIN$=MKS$(N!):LSET PUSE$=SPACE$(72):RETURN 7836 GET 4,LPROC%:LSET PNEXT$=MKI$(HIPR%+1) 7838 PUT 4,LPROC%:RETURN 7840 ' 7850 ' DEG 7860 ' 7870 GOSUB 10080:GOSUB 16500 'get argument 7880 Z$="*180/3.14159265":GOTO 5370 7890 ' 7900 ' DIV 7910 ' 7920 Z$=CHR$(92):GOTO 5370 7930 ' 7940 ' DRAW 7950 ' 7960 CP%=5:GOTO 10780 'j for PLO㐞0T 5 7970 ' 7980 ' END 7990 ' 8000 Z$="END" 8010 IF IP%+4>LL% OR MID$(CL$,IP%+1,4)<>"PROC" THEN 5370 8020 IP%=IP%+5:DPF%=0:FCT%=0 8030 LLST$="" 'clear local variable list 8040 Z$="RETURN":GOTO 5370 8050 ' 8060 ' ENVELOPE 8070 ' 8080 C%=10 8090 GOSUB 2100 8100 GOSUB 15920 'look for : 8110 IF IP%>LL% THEN Z$="REM" 8120 BP%=IP%:GOTO 5370 8130 ' 8140 ' EOF/EXT 8150 ' 8160 GOSUB 15730:GOSUB 16542:GOTO 5980 8180 ' 8190 ' ERR/ERROR 8200 ' 8210 IF IP%+2>LL% OR MID$(CL$,IP%+㐞 01,2)<>"OR" THEN RETURN 8220 Z$="OR GOTO":IP%=IP%+3:ER%=1:GOTO 5370 8230 ' 8240 ' FALSE 8250 ' 8260 Z$="FALSE":GOTO 5370 8270 ' 8280 ' FN 8290 ' 8300 GOSUB 7490:IF DPF%=1 THEN SFN$=PNAM$:GOTO 6130 'j if defining function 8310 VST%=FST%:L%=LEN(OB$)-VST%+1:GOSUB 9010 'get function name 8320 GOSUB 4980:IF LFN%=0 THEN 8370 'j if 1st entry 8330 GOSUB 6650 'look for existing entry 8340 N!=CVS(FLIN$) 8350 IF OK%=0 THEN 8390 'j if existing entry 8360 GOSUB 6720 'chain to last㐞0 entry 8370 N!=0:GOSUB 6230 'create new FN file entry 8380 LFN%=HIFN%:REC%=HIFN% 8390 X%=1 8400 IF CVI(FCON$)<>0 THEN REC%=CVI(FCON$):GET 5,REC%:GOTO 8400 8410 IF X%>72 THEN 8500 'j if no more entries 8420 Z$=MID$(FUSE$,X%,4) 8430 IF Z$<>SPACE$(4) THEN X%=X%+4:GOTO 8410 8440 Z$=FUSE$ 8460 GOSUB 8622:LSET FUSE$=Z$:PUT 5,REC% 8480 GOSUB 8590:IF K%<>40 THEN GOSUB 1190 ELSE GOSUB 12040 8490 GOSUB 8620:Z$="GW"+PNAM$:GOTO 5370 'look for params 8500 LSET FCON$=MKI$(HIFN%+1) 'point to new record 8510㐞0 PUT 5,REC% 8520 GOSUB 6230:REC%=HIFN%:GOTO 8390 'create new entry 8530 GOSUB 6872 8540 IF FCT%=0 THEN GOSUB 12270 ELSE GET #5,FCT%:V$=FPRM$:GOSUB 12150 8550 GOSUB 8620:GOSUB 12282 8560 Z$=Z$+PNAM$+ZA$:GOTO 5370 8570 IF OK%=0 AND N!<>0 THEN Z$="":YA$="GOSUB"+STR$(N!):OK%=2 8580 RETURN 8590 YA$="GOSUB "+PNAM$ 8600 GOSUB 15730:IF K%<>40 THEN Z$=YA$:BP%=IP% 8610 RETURN 8620 GOSUB 1170:Z$=COLON$+VSTO$:GOTO 5370 8622 MID$(Z$,X%,4)=MKS$(LI!):RETURN 8628 ' 8630 ' GCOL 8640 ' 8650 IF CFLAG%=0 T㐞0HEN C%=16:GOTO 8090 8670 GOSUB 8724:GOSUB 13240:GOSUB 11740 'get action 8680 GOSUB 13240:GOSUB 11740 'get colour 8690 IF OK%=1 THEN 8720 8700 IF XV%>127 THEN XV%=XV%-128:GOSUB 8722 8710 GOSUB 14380 8720 Z$=X$:GOTO 5370 8722 Z$=CHR$(44):GOTO 5370 8724 Z$="COLOR ":GOTO 5370 8730 ' 8740 ' GET 8750 ' 8760 GOSUB 4380:IF X$=CHR$(36) THEN IP%=IP%+2 ELSE X$="" 8770 IF X$="" THEN Z$="ASC(" 8780 Z$=Z$+"INPUT$(1)" 8790 IF X$="" THEN Z$=Z$+CHR$(41) 8800 GOTO 5370 8810 ' 8820 ' IF 8830 ' 8840 G㐞0OSUB 4980 8850 GOSUB 3730:IF SB%=1 THEN GOSUB 1180 8860 GOSUB 16500:GOSUB 15730:IF OK%=1 THEN RETURN 8870 GOSUB 4370:IF X$="MOD" OR X$="DIV" THEN 8850 8880 IF RIGHT$(OB$,3)="NOT" THEN GOSUB 5040:GOTO 8850 8890 IF A%<11 OR A%>14 THEN GOSUB 16460:GOTO 8930 ELSE GOSUB 8976:X$=FNKMID$ 8900 IF K%=60 AND (X$=">" OR X$="=") THEN IP%=IP%+1 8910 IF K%=62 AND X$="=" THEN IP%=IP%+1 8920 GOSUB 16460:GOSUB 8972 8930 BP%=IP%:GOSUB 15730:GOSUB 16550:GOSUB 16460:GOSUB 4382 8940 IF MID$(CL$,IP%,2)="OR" THEN BP%=IP㐞0%:GOTO 8974 8950 GOSUB 4370:IF X$="AND" THEN GOSUB 8976:GOTO 8974 8960 IF MID$(CL$,IP%,4)<>"THEN" THEN GOSUB 4980:Z$="THEN ":GOSUB 1190 8970 RETURN 8972 GOSUB 3730:GOSUB 16500:RETURN 8974 IP%=IP%+2:GOSUB 4980:GOSUB 16460:GOSUB 4980:GOTO 8850 8976 BP%=IP%:IP%=IP%+1:RETURN 8980 ' 8990 ' INKEY 9000 ' 9010 IF VST%=0 THEN X%=LEN(OB$)-FCOM% ELSE 9040 9020 VSTO$=MID$(OB$,FCOM%+1,X%) 9030 OP%=FCOM%:GOSUB 3022:GOTO 9060 9040 VSTO$=MID$(OB$,VST%,L%) 9050 OP%=VST%-1:GOSUB 3022 9060 N!=LI!:RETURN 907㐞00 GOSUB 9010 9080 UZ$=RIGHT$(OB$,LEN(OB$)-LEN(LINO$)) 9090 GOSUB 4380:IF IP%+1>LL% OR X$<>CHR$(36) THEN 9320 9100 GOSUB 9260 9110 IF INKS$="" THEN GOSUB 9570:LI!=N!+2:INKS$=STR$(LI!):GOSUB 9210:GOSUB 9610 9120 ZY$=INKS$:GOSUB 9480:GOSUB 9622 9140 Z$=Z$+"GW.IN.X$":GOTO 5370 9150 Z$=XVAL$+SP1$:GOSUB 9600 9160 Z$="FOR GW."+XVAL$+"=0 TO GW.IN.D:":GOSUB 9600 9170 GOSUB 9200 9180 Z$="IF LEN(GW.IN.X$)<>0 THEN GW."+XVAL$+"=GW.IN.D" 9190 GOSUB 9600:RETURN 9200 Z$="GW.IN.X$=INKEY$:":GOTO 9190 9210 XVAL$=㐞0INKS$:GOSUB 11820 9220 GOSUB 9150:GOSUB 3500:GOSUB 9230:GOSUB 3500:RETURN 9230 LI!=N!+3:GOSUB 9560 9240 OB$=Z$+" NEXT:RETURN" 9250 RETURN 9260 AE%=0:GOSUB 15930:IF OK%=1 THEN RETURN 'look for ( 9270 IP%=IP%+1:GOSUB 15730 'step over ( 9280 IF K%=45 THEN AE%=1:IP%=IP%+1 'check for - 9290 TYP%=10:GOSUB 15940 'look for ) 9300 GOSUB 16520:VAR$=X$ 9310 GOSUB 16550:RETURN 'step over ) 9320 IF VST%<>0 THEN VSTO$=LEFT$(VSTO$,LEN(VSTO$)-1) 9330 GOSUB 9260:IF AE%=1 THEN C%=14:GOSUB 2100 ELSE 9390 9340 GO㐞0SUB 11740:IF OK%=1 THEN 9390 'check if numeric 9350 XVAL$=STR$(KC%(XV%)):GOSUB 11820:K$=XVAL$ 'get sought character 9360 IF KC%(XV%)=0 THEN C%=19:GOSUB 2100 9370 IF INKT$="" THEN GOSUB 9570:LI!=N!+1:INKT$=STR$(LI!):GOSUB 9520:GOSUB 9610 9380 Z$="GW.IN.D="+K$+COLON$:ZY$=INKT$:GOSUB 9490:GOTO 9410 9390 IF INKN$="" THEN GOSUB 9570:LI!=N!+2:INKN$=STR$(LI!):GOSUB 9450:GOSUB 9610 9400 ZY$=INKN$:GOSUB 9480 9410 GOSUB 9622 9420 Z$=Z$+"GW.IN.X":GOTO 9190 9430 GOSUB 11820 9440 Z$=XVAL$+" GW.IN.X=-1:":GOTO 㐞 09190 9450 XVAL$=INKN$:GOSUB 9430:GOSUB 9160 9460 Z$=":GW.IN.X=ASC(GW.IN.X$)":GOSUB 1190:GOSUB 3500 9470 GOSUB 9230:GOSUB 3500:RETURN 9480 Z$="GW.IN.D="+VAR$+COLON$ 9490 GOSUB 9600 9500 Z$="GOSUB"+ZY$+COLON$+VSTO$ 9510 GOTO 9190 9520 XVAL$=INKT$:GOSUB 9430:GOSUB 9200 9530 Z$="IF LEN(GW.IN.X$)=0 THEN RETURN":GOSUB 9590 9540 LI!=N!+2:GOSUB 9560:Z$=Z$+" IF ASC(GW.IN.X$)=GW.IN.D THEN GW.IN.X=GW.IN.D":GOSUB 9590 9550 LI!=N!+3:GOSUB 9560:Z$=Z$+" RETURN":GOSUB 9600:GOSUB 3500:RETURN 9560 Z$=STR$(LI!):Z$㐞1=RIGHT$(Z$,LEN(Z$)-1):RETURN 9570 OB$=LINO$+" GOTO ":LI!=N!+4:GOSUB 9560:LI!=N! 9580 GOSUB 9590:RETURN 9590 GOSUB 9600:GOSUB 3500:OB$="":RETURN 9600 OB$=OB$+Z$:GOTO 1200 9610 LI!=N!+4:GOSUB 9560:LINO$=Z$ 9620 OB$=Z$+UZ$:GOTO 1200 9622 IF VST%=0 THEN Z$="" ELSE Z$=CHR$(61) 9624 RETURN 9630 ' 9640 ' INPUT 9650 ' 9660 Z$="INPUT " 'set default 9670 GOSUB 11420 'action command 9680 GOSUB 1190:GOSUB 15730 'look for non-space 9690 IF OK%=1 OR K%<>34 THEN 9730 9700 GOSUB 15910 'look for clos㐞1ing " 9710 GOSUB 15730:IF OK%=1 THEN RETURN 'look for non-space 9720 IF K%<>44 THEN OB$=OB$+CHR$(44):RETURN 9730 IF K%=44 THEN MID$(CL$,IP%,1)=CHR$(59) 9740 RETURN 9750 ' 9760 ' INSTR 9770 ' 9780 GOSUB 3730:ZA$=BE$ 9790 IF OK%=0 THEN GNO%=0:GOSUB 3770 9800 ZA$=ZA$+CHR$(44)+BE$ 9810 IF OK%=1 THEN Z$="(1," ELSE Z$=CHR$(40):ZA$=CHR$(44)+ZA$ 9820 GOSUB 1190 9830 IF OK%=0 THEN GOSUB 3770:GOSUB 16500 9840 Z$=ZA$:GOTO 5370 9850 ' 9860 ' LIST/DELETE 9870 ' 9880 GOSUB 15900 'look for comma 9㐞1890 IF OK%=0 THEN MID$(CL$,IP%,1)=CHR$(45) 9900 GOSUB 16460:RETURN 'copy in 9920 ' 9930 ' LOCAL 9940 ' 9950 LLST$="" 'initialise string 9960 GOSUB 9990:IF OK%=1 THEN 8100 'get next variable 9970 LLST$=LLST$+STR$(LEN(X$))+X$+STR$(LEN(LINO$))+LINO$ 9980 GOTO 9960 9990 GOSUB 15730:IF OK%=1 OR K%=58 THEN 2980 'look for non-space 10000 GOSUB 15900 'look for , 10010 X$=FNCSTR$:OK%=0:GOTO 13260 10030 ' 10040 ' LOG 10050 ' 10060 GOSUB 10080 'get argument 10070 GOSUB 1180:Z$=BE$+")/LOG(10㐞1)":GOTO 4892 10080 GOSUB 3730:GOSUB 16550:RETURN 10090 ' 10100 ' MOD 10110 ' 10120 GOSUB 4380:IF X$<>"E" THEN GOSUB 4980:Z$="MOD":GOTO 5370 10130 IP%=IP%+2 10140 ' 10150 ' MODE 10160 ' 10170 GOSUB 15880:IF OK%=1 THEN MODE%=7:GOTO 10190 'search for numeric 10180 GOSUB 5602:IF X%<1 OR X%>7 THEN X%=7 'search for non-numeric 10190 MODE%=X%:XV%=0:X%=2 10210 ON MODE%+1 GOSUB 10250,10270,10270,10290,10250,10270,10250,10310 10220 XVAL$=STR$(XV%):GOSUB 11820 10230 Z$="SCREEN"+STR$(X%)+CHR$(44)+X㐞1VAL$:GOTO 5370 10240 ' Mode 0/4/6 10250 RETURN 10260 ' Mode 1/2/5 10270 XV%=1:RETURN 'colours 10280 ' Mode 3 10290 X%=0:RETURN 'text only 10300 ' Mode 7 10310 XV%=1:GOTO 10290 'colours 10320 ' 10330 ' MOVE 10340 ' 10350 CP%=4:GOTO 10780 'j for PLOT 4 10360 ' 10370 ' NOT 10380 ' 10390 IF INV%<>0 AND BRKT%=0 THEN OP%=LEN(OB$)-5:GOSUB 3022 ELSE Z$="NOT" 10400 BP%=IP%:GOTO 13750 10410 ' 10420 ' OFF 10430 ' 10440 RETURN 10450 ' 10460 ' OPENIN/OPENOUT/OPENUP 10470㐞1 ' 10480 CHAN%=CHAN%+1 'step file no. 10490 Z$=STR$(CHAN%)+COLON$:GOSUB 1190 10500 GOSUB 15910:IF OK%=1 THEN RETURN 'look for " 10510 IP%=IP%+1 'step over " 10520 GOSUB 15940 'look for closing " 10530 ZA$=FNCSTR$ 10540 IF OK%=1 THEN 10570 ELSE IP%=IP%+1 'step over " 10550 GOSUB 15730:IF OK%=1 THEN 10570 'look for non-space 10560 GOSUB 16550 'step over ) 10570 Z$="OPEN "+QUOTE$:GOSUB 1190 10580 ON BNO%-72 GOSUB 10600,10610,10620 10590 Z$=X$+QUOTE$+CHR$(44)+MID$(OB$,VST%,L%)+CHR$(44)+Q㐞1UOTE$+ZA$+QUOTE$:GOTO 5370 10600 X$="I":RETURN 10610 X$="O":RETURN 10620 X$="A":RETURN 10630 ' 10640 ' OR 10650 ' 10660 GOSUB 4980:IF INV%=0 OR BRKT%=1 THEN Z$="OR" ELSE Z$="AND NOT" 10670 GOTO 5370 10680 ' 10690 ' PI 10700 ' 10710 Z$="3.14159265":GOTO 5370 10720 ' 10730 ' PLOT 10740 ' 10750 GOSUB 15880:IF OK%=1 THEN RETURN 'look for numeric 10760 GOSUB 5602:CP%=X% 'look for non-numeric 10780 GOSUB 10832:GOSUB 1190:ZB$="" 10790 GOSUB 13240:LX$=X$:GOSUB 10860 10800 GOSUB 13240:T㐞1Y$=X$ 10820 ON (CP% MOD 8)+1 GOSUB 10850,10930,10930,10930,10950,10970,10970,10970 10830 RETURN 10832 Z$=" "+QUOTE$:RETURN 10840 ' Plot 0 10850 GOSUB 10852:GOTO 10950 10852 ZB$=CHR$(43) 10860 IF LEFT$(LX$,1)=CHR$(45) THEN ZB$=CHR$(45) 10870 RETURN 10920 ' Plot 1/2/3 10930 GOSUB 10852:GOTO 10970 10940 ' Plot 4 10950 Z$=Z$+CHR$(66) 10960 ' Plot 5/6/7 10970 Z$=Z$+CHR$(77)+ZB$ 10980 GOSUB 1190:GOSUB 11100 10990 IF OK%=0 THEN Z$=QUOTE$ 11000 GOTO 5370 11010 GOSUB 11740 11020 IF Y$=S㐞 1CALEY$ AND ZB$="" THEN XV%=1024-XV%:ZA$=YSIZE$+CHR$(45) ELSE ZA$="" 11030 IF OK%=0 THEN XVAL$=STR$(INT(XV%*N!)):GOSUB 11820:Z$=XVAL$:GOTO 11090 11040 Z$=QUOTE$+"+STR$("+ZA$+"INT("+Y$+CHR$(42) 11050 RMZ%=OK%:GOSUB 13170 11060 IF CP%=1 THEN Z$=Z$+CHR$(40) 11070 Z$=Z$+X$+"))" 11080 IF CP%=1 THEN Z$=Z$+CHR$(41) 11090 RETURN 11100 RMZ%=0:X$=LX$:Y$=SCALEX$:N!=XSCALE!:GOSUB 11010 11110 GOSUB 1190:IF OK%=0 THEN Z$=CHR$(44) ELSE GOSUB 11142:Z$=Z$+CHR$(44) 11120 GOSUB 1190 11130 X$=TY$:Y$=SCALEY$:N!=YSCALE㐞1!:GOSUB 11010:GOTO 5370 11142 Z$="+"+QUOTE$:RETURN 11190 ' 11200 ' POINT 11210 ' 11220 IF BR%=1 THEN GOSUB 16512 11230 GOSUB 3730:GOSUB 13160 'check for formula 11240 Z$=CHR$(40)+SCALEX$+CHR$(42):GOSUB 9600 11250 GOSUB 11290 11260 GOSUB 3770:Z$=CHR$(44)+SCALEY$+CHR$(42):GOSUB 9600 11270 GOSUB 13160 'check for formula 11280 GOSUB 11290:Z$=CHR$(41):GOSUB 1190:GOSUB 16550:RETURN 11290 IF CP%=1 THEN Z$=CHR$(40) 11300 Z$=Z$+X$:GOSUB 11080 11310 GOTO 9190 11320 ' 11330 ' POS 11340 ' 11350 㐞1Z$="(1)":GOTO 5370 11360 ' 11370 ' PRINT 11380 ' 11390 GOSUB 4980:Z$=LPR$+PRNT$ 'set default command 11400 PRFL%=LEN(OB$) 'set PRINT flag 11410 GOSUB 11420:GOTO 5370 'action command 11420 LX$=Z$:PCOM$=Z$ 'keep default command 11430 FLOC%=0 'clear 1st LOCATE flag 11440 GOSUB 15730:IF OK%=1 THEN 11650 'search for non-space 11450 IF IP%+2>LL% THEN 11650 11460 GOSUB 4370:IF X$<>"TAB" THEN 11650 ELSE IP%=IP%+3 11470 ' 11480 ' PRINT/INPUT TAB 11490 ' 11500 IF FLOC%<>0 THEN GOSUB 164㐞180 11510 OB$=OB$+"LOCATE " 11520 GOSUB 3730:BY$="" 'look for , or ) 11530 L%=OK%:GOSUB 11710:TY$=XVAL$ 'get column no. 11540 IF L%<>0 THEN 11660 'j if not , 11550 GOSUB 3770:GOSUB 11710:BY$=XVAL$ 'get row no. 11560 IF OK%=0 AND XV%>24 THEN C%=17:GOSUB 2100 11570 IF LX$="" THEN LX$=PCOM$ 11580 FLOC%=1:Z$="":GOSUB 11832 'set LOCATE flag 11600 GOSUB 11830:PRFL%=PRFL%+1 11610 GOSUB 15730 'skip to non-space 11620 GOSUB 16550 'step over ) 11630 IF FNKMID$=CHR$(59) THEN IP%=IP%+1 11640 GOSUB 1573㐞10:IF OK%=0 AND K%<>58 AND BY$<>"" THEN Z$=Z$+COLON$+LX$ 11650 RETURN 11660 IF PCOM$="INPUT "THEN Z$=PRNT$:ZA$=":INPUT " ELSE Z$=LX$:ZA$="" 11670 Z$=Z$+"TAB("+TY$+CHR$(41)+ZA$ 11680 GOSUB 11830 11690 IF FLOC%=0 THEN X%=7 ELSE X%=8 11700 OP%=LEN(OB$)-X%:GOSUB 3022:GOTO 11610 11710 X$=BE$ 11720 GOSUB 11740:GOSUB 11800:RETURN 11730 X$=FNCSTR$ 11740 GOSUB 16530:X%=1:OK%=0 11750 IF X%>LEN(X$) THEN XV%=VAL(X$):RETURN 11760 XA%=ASC(MID$(X$,X%,1)) 11770 IF XA%=45 THEN 11790 11780 IF XA%<48 OR XA%>57 TH㐞1EN 2980 11790 X%=X%+1:GOTO 11750 11800 IF OK%=1 THEN XVAL$=X$+"+1":RETURN 11810 XVAL$=STR$(XV%+1) 11820 XVAL$=RIGHT$(XVAL$,LEN(XVAL$)-1):RETURN 11830 PRFL%=LEN(OB$)+LEN(Z$):RETURN 11832 Z$=Z$+BY$+CHR$(44)+TY$:RETURN 11840 ' 11850 ' PROC 11860 ' 11870 GOSUB 7490:IF DPF%=1 THEN 6900 'j if defining procedure 11880 GOSUB 4980:IF LPROC%=0 THEN 11930 'j if 1st entry 11890 GOSUB 7580 'look for name 11900 N!=CVS(PLIN$):GOSUB 8570:IF OK%=2 THEN 12110 11910 IF OK%=0 THEN 11940 'j if is existi㐞1ng entry 11920 GOSUB 7836 'chain to last entry 11930 N!=0:GOSUB 12280 'create new entry 11940 X%=1 11950 IF CVI(PFCON$)<>0 THEN REC%=CVI(PFCON$):GET 4,REC%:GOTO 11950 11960 IF X%>72 THEN 12080 'j if no more entries 11970 Z$=MID$(PUSE$,X%,4) 11980 IF Z$<>SPACE$(4) THEN X%=X%+4:GOTO 11960 11990 Z$=PUSE$ 12010 GOSUB 8622:LSET PUSE$=Z$:PUT 4,REC% 12030 GOSUB 8590:IF K%<>40 THEN 5370 12040 GOSUB 3750:ZA$="" 'look for , or ) 12050 ZA$=ZA$+CHR$(61)+BE$+COLON$ 12060 IF K%=41 OR IP%>LL% THEN 㐞1Z$=ZA$:GOTO 12260 'j if end of params 12070 GOSUB 3770:GOTO 12050 12080 LSET PFCON$=MKI$(HIPR%+1) 'point to new record 12090 PUT 4,REC% 12100 GOSUB 7000:REC%=HIPR%:GOTO 11940 'create new record 12110 FCT%=CVI(PPARP$) 'get param.block record 12120 IF FCT%=0 THEN 12270 'j if no params.expected 12130 GET 4,FCT% 'get param.block 12140 V$=PPRM$ 12150 XB%=1 12160 L%=VAL(MID$(V$,XB%,2)) 12170 IF L%=0 THEN 12270 'j if no more params. 12180 GOSUB 12282:Z$=Z$+MID$(V$,XB%+2,L%)+CHR$(61):GOSUB 1190 12190 㐞1X%=XB%:XB%=XB%+2+L% 12200 IF X%<>1 THEN GOSUB 3770:GOTO 12240 12210 GOSUB 15930 'look for ( 12220 IF OK%=1 THEN 12270 ELSE GOSUB 3750 12240 Z$=FNCSTR$+COLON$:GOSUB 1190 12250 IF K%=44 THEN 12160 12260 GOSUB 16550 12270 Z$=Z$+YA$:GOTO 8120 12280 GOSUB 7000:LPROC%=HIPR%:REC%=HIPR%:RETURN 12282 X$=STR$(N!):GOSUB 16540:Z$="GW"+X$+CHR$(46):RETURN 12290 ' 12300 ' PTR 12310 ' 12320 TYP%=5:GOSUB 15940 'look for # 12340 GOSUB 16542:Z$="GW.PTR.":GOTO 5370 12350 ' 12360 ' RAD 12370 ' 12380 G㐞 1OSUB 10080:GOSUB 16500 'get argument 12390 Z$="*3.14159265/180":GOTO 5370 12400 ' 12410 ' READ 12420 ' 12430 GOSUB 15730:IF OK%=1 THEN RETURN 12440 GOSUB 16460 12450 GOSUB 3750:GOSUB 16500 12460 IF IP%>LL% OR K%=58 THEN RETURN 12470 BP%=IP%:GOSUB 4252:GOTO 12440 12480 ' 12490 ' REM 12500 ' 12510 IF IP%>LL% THEN RETURN 12512 Z$=MID$(CL$,IP%,LL%+1-IP%):GOTO 5370 12520 ' 12530 ' RENUMBER 12540 ' 12550 GOSUB 15900:IF OK%=1 THEN RETURN 'look for comma 12560 GOSUB 16460:Z$=CHR$(44):GOT㐞2O 5370 'copy upto , 12580 ' 12590 ' REPEAT 12600 ' 12610 RPT%=RPT%+1 'step array pointer 12620 IF COMCT%=0 THEN 12640 ELSE GOSUB 3480:GOSUB 2590 'j if 1st command on line 12630 LI!=LI!+1:XVAL$=STR$(LI!):GOSUB 11820:LINO$=XVAL$ 12640 RLIN$(RPT%)=LINO$ 12650 IF COMCT%<>0 THEN OB$=LINO$+SP1$ 12660 GOSUB 15730:GOSUB 8110:C%=58:GOSUB 16560 12670 GOTO 6100 12680 ' 12690 ' REPORT 12700 ' 12710 Z$=PRNT$+QUOTE$+"ERROR NO."+QUOTE$+";STR$(ERR);"+QUOTE$+" ON LINE "+QUOTE$+";STR$(ERL)":GOTO 5370 㐞212720 ' 12730 ' RND 12740 ' 12750 GOSUB 15730:IF OK%=1 OR K%<>40 THEN C%=22:GOSUB 2100:BE$="32767":RMZ%=0:GOTO 12830 'look for ( 12760 IP%=IP%+1:GOSUB 15730 'step over ( 12770 IF K%=45 THEN RMZ%=1 ELSE RMZ%=0 12780 IF BR%=1 THEN ZA$=BE$:BE$="" ELSE ZA$="" 12790 PCT%=1:GOSUB 3760 'look for matched ) 12800 IF RMZ%=0 THEN GOSUB 11730 ELSE GOSUB 16500:Z$=":RANDOMIZE ":GOTO 12850 12810 IF OK%=1 THEN 12830 12820 IF XV%=0 OR XV%=1 THEN Z$="RND(":RMZ%=2:GOTO 12840 12830 Z$="INT(RND*" 12840 Z$=Z$+BE$㐞2:IF BR%=1 THEN BE$="" 12850 Z$=ZA$+Z$:GOSUB 1190 'copy in factor 12860 GOSUB 16550 'step over ) 12870 ON RMZ%+1 GOSUB 12890,1200,12910 12880 GOTO 5370 12890 Z$="+1)":RETURN 12910 Z$=CHR$(41):RETURN 12920 ' 12930 ' SOUND 12940 ' 12950 GOSUB 13240:GOSUB 13240 'get channel & amplitude 12970 GOSUB 13240:ZA$=X$ 'get pitch 12980 GOSUB 13170 'check for * - + / 12990 GOSUB 13240:ZB$=X$ 'keep duration 13000 GOSUB 11740:IF OK%=0 AND XV%<0 THEN C%=6:GOSUB 2100 13010 GOSUB 10832:Z$=Z$+"MB N":GOSU㐞2B 1190 13020 X$=ZA$:GOSUB 11740:L%=OK% 'check if numeric 13030 IF OK%=0 THEN XVAL$=STR$(XV%\4+15):GOSUB 11820:Z$=XVAL$:GOTO 13090 13040 Z$=QUOTE$+"+STR$(" 13050 IF CP%<>0 THEN Z$=Z$+CHR$(40) 13060 Z$=Z$+ZA$ 13070 GOSUB 11080 13080 Z$=Z$+"\4+15)" 13090 GOSUB 1190 13100 X$=ZB$:GOSUB 11740 'check if numeric 13110 IF L%=1 AND OK%=0 THEN GOSUB 11142:GOSUB 1190 13120 IF OK%=0 THEN XVAL$=STR$(INT(48/(XV%+.5))):GOSUB 11820:Z$=" L"+XVAL$+QUOTE$:GOTO 5370 13130 IF L%=0 THEN Z$=QUOTE$:GOSUB 1190 13140 GOS㐞2UB 11142:Z$=Z$+" L"+QUOTE$+"+STR$(48\(" 13150 Z$=Z$+ZB$+"+0.5))":GOTO 5370 13160 X$=BE$:BE$="" 13170 X%=1:CP%=0:C%=K% 13180 IF X%>LEN(X$) THEN 13230 13190 K%=ASC(MID$(X$,X%,1)) 13200 GOSUB 16120:IF A%=12 THEN CP%=1 13220 X%=X%+1:GOTO 13180 13230 K%=C%:RETURN 13240 SPEC%=0:GOSUB 3730 'get variable 13250 X$=BE$:RETURN 13260 IF K%<>58 THEN IP%=IP%+1 13270 RETURN 13280 ' 13290 ' STR 13300 ' 13310 IF MID$(CL$,IP%+1,3)="ING" THEN Z%=5:Z$="ING$(" ELSE Z%=2:Z$=CHR$(36) 13320 IP%=IP%+Z%:GOSUB 119㐞20 13330 IF Z%=2 THEN 5980 13340 ' 13350 ' STRING 13360 ' 13370 GOSUB 8972:IF K%=44 THEN Z$=K$:GOSUB 1190 13390 GOSUB 8972:C%=5:GOTO 2090 13420 ' 13430 ' TAB 13440 ' 13450 GOSUB 15730:IF OK%=1 THEN 11650 'look for non-space 13460 LX$="":GOSUB 11500:GOTO 5370 'get column no. 13470 ' 13480 ' TIME 13490 ' 13500 X$="((VAL(LEFT$(TIME$,2))*3600)+(VAL(MID$(TIME$,4,2))*60)+(VAL(RIGHT$(TIME$,2))))*100" 13510 GOSUB 15730:IF OK%=1 THEN 13530 13520 IF K%=61 THEN Z$="GW.TIME="+X$+CHR$(43):C%=61:㐞2GOTO 14792 13530 GOSUB 1180:Z$=X$+"-GW.TIME)":GOTO 5370 13540 ' 13550 ' TO 13560 ' 13570 IF K%=80 THEN IP%=IP%+1:GOTO 4930 ELSE RETURN 13580 ' 13590 ' TRACE 13600 ' 13610 GOSUB 15730:IF OK%=1 THEN RETURN 'look for non-space 13620 IF MID$(CL$,IP%,2)="ON" THEN Z$="TRON" 13630 GOSUB 4370:IF X$="OFF" THEN Z$="TROFF" 13640 TYP%=A%:GOSUB 15740:GOTO 5370 'look statement end 13660 ' 13670 ' TRUE 13680 ' 13690 Z$="NOT FALSE":GOTO 5370 13700 ' 13710 ' UNTIL 13720 ' 13730 SFIX%=SPEC%:I㐞2NV%=1:Z$=" NOT" 'set invert operator flag 13750 GOSUB 1190 13760 GOSUB 15730:IF OK%=1 THEN RETURN 'look for non-space 13770 IF K%=40 THEN BRKT%=1 ELSE IP%=IP%-1 13780 GOTO 9900 13790 Z$=" THEN "+RLIN$(RPT%) 'add j to top of loop 13800 RLIN$="":INV%=0 'clear invert operator flag 13810 GOSUB 15730:IF OK%=1 THEN 13830 13820 C%=58:GOSUB 16560:Z$=Z$+" ELSE ":GOSUB 2600:FIRST%=0 13830 RPT%=RPT%-1:SFIX%=0:GOTO 5370 'amend array pointer 13850 ' 13860 ' VDU 13870 ' 13880 GOSUB 15880:IF OK%=1 THEN 8㐞 2100 'look for numeric 13890 GOSUB 5602 'look for non-numeric 13900 X$=FNCSTR$ 13910 IF X%<32 THEN 13930 'j if special action 13920 Z$=PRNT$+"CHR$("+X$+");":GOTO 5370 13930 IF X%<>19 THEN C%=44:GOSUB 16560 13940 ZA$="":ZB$="" 13950 ON X%+1 GOTO 13970,13990,14010,14030,13970,13970,13970,14050,14070,14100,14120,14140,14160,13920,13970,8100,14160,14180,8650,14210,14420,13970,10170,14440,14470,14570,14590,13970,14610,14720,14740,14760 13960 ' VDU 0/4/5/6/14/21/27/29 13970 C%=18:GOSUB 2100:GOT㐞2O 12660 13980 ' VDU 1 13990 Z$="L"+PRNT$:GOTO 14790 14000 ' VDU 2 14010 LPR$="L":GOTO 8100 'enable printer 14020 ' VDU 3 14030 LPR$="":GOTO 8100 'disable printer 14040 ' VDU 7 14050 Z$="BEEP":GOTO 14790 14060 ' VDU 8 14070 ZA$="-1" 14080 Z$="LOCATE POS(I)"+ZA$+",CSRLIN"+ZB$:GOTO 14790 14090 ' VDU 9 14100 ZA$="+1":GOTO 14080 14110 ' VDU 10 14120 ZB$="-1":GOTO 14080 14130 ' VDU 11 14140 ZB$="+1":GOTO 14080 14150 ' VDU 12/16 14160 Z$="CLS":GOTO 14790 14170 ' VD㐞2U 17 14180 GOSUB 15880 'look for colour no. 14190 IF OK%=1 THEN RETURN ELSE 5650 14200 ' VDU 19 14210 GOSUB 13240 'get logical colour 14220 IF IP%>LL% THEN 14300 14230 GOSUB 11740:IF OK%<>1 THEN GOSUB 14380 14240 LX$=X$:GOSUB 13240 'get actual colour 14250 IF IP%>LL% THEN 14300 14260 GOSUB 11740:IF OK%=1 THEN 14280 14270 X%=XV%:GOSUB 14360:GOSUB 14400 14280 Z$="PALETTE "+LX$+CHR$(44)+X$:GOSUB 14790 14290 PCT%=3:GOTO 14800 14300 C%=4:GOTO 2090 14310 IF X%=0 THEN RETURN 14320 GOSUB 5750:RETU㐞2RN 14340 GOSUB 5820:RETURN 14360 GOSUB 5880:RETURN 14380 X%=XV% 14390 ON MODE%+1 GOSUB 14310,14340,14360,14310,14310,14340,14310,14360 14400 X$=STR$(X%):GOSUB 16540:RETURN 14410 ' VDU 20 14420 GOTO 13970 14430 ' VDU 23 14440 GOSUB 14680:IF BE$="8202" THEN Z$="LOCATE ,,0":GOSUB 1190:PCT%=5:GOTO 14800 14450 C%=9:GOTO 8090 14460 ' VDU 24 14470 SWREC%=0:GOSUB 14630 'get coordinates 14480 Z$="VIEW SCREEN (":GOSUB 1190 14490 GOSUB 11100 14500 IF OK%=1 THEN Z$=Z$+"+"+QUOTE$ 14510 Z$=Z$+")㐞2-(":GOSUB 1190 14520 LX$=RX$:TY$=BY$:GOSUB 11100 14530 GOSUB 1190:IF OK%=1 THEN GOSUB 11142:Z$=Z$+CHR$(41) ELSE Z$=CHR$(41) 14540 IF RMZ%<>0 THEN Z$=Z$+QUOTE$ 14550 GOTO 14790 14560 ' VDU 25 14570 Z$="DRAW ":GOSUB 1190 :GOTO 10750 14580 ' VDU 26 14590 Z$="VIEW:VIEW "+PRNT$+COLON$:GOSUB 1190:GOTO 14740 14600 ' VDU 28 14610 SWREC%=1:GOSUB 14630 'get coordinates 14620 Z$="VIEW "+PRNT$+TY$+" TO "+BY$:GOTO 14790 14630 GOSUB 14680:LX$=XVAL$ 'get left edge 14640 GOSUB 14680:BY$=XVAL$ 'get bo㐞2ttom 14650 GOSUB 14680:RX$=XVAL$ 'get right edge 14660 GOSUB 14680:TY$=XVAL$ 'get top 14670 RETURN 14680 FREC%=BNO%:GOSUB 13240:GOSUB 13260:GOSUB 11740 14690 IF SWREC%=1 THEN GOSUB 11800 ELSE XVAL$=X$ 'add 1 to value 14700 BNO%=FREC%:RETURN 14710 ' VDU 29 14720 GOSUB 14650:GOTO 13970 14730 ' VDU 30 14740 Z$="LOCATE 1,1":GOTO 14790 14750 ' VDU 31 14760 SWREC%=1:GOSUB 14680:TY$=XVAL$ 'get column no. 14770 GOSUB 14680:BY$=XVAL$ 'get line no. 14780 Z$="LOCATE ":GOSUB 11832:GOSUB 1190 147㐞290 GOSUB 15730:C%=44 14792 GOSUB 16560:GOTO 5370 14800 GOSUB 15880 14810 CP%=0 14820 GOSUB 16092:IF OK%=1 OR A%=11 THEN RETURN 14830 IF A%=4 THEN CP%=1:GOTO 14870 14840 IF A%=3 THEN 14820 14850 IF CP%=1 THEN 14810 14860 PCT%=PCT%-1:IF PCT%<1 THEN BNO%=118:GOTO 15370 ELSE 14820 14870 IF K%=59 THEN PCT%=PCT%-1 14880 GOTO 14860 14890 ' WIDTH 14900 ' 14910 GOSUB 15880:IF OK%=1 THEN RETURN 'search for numeric 14920 GOSUB 16460:GOSUB 15740 'copy upto numeric 14940 GOSUB 11730:IF OK%=0 AND XV%=㐞20 THEN X$="80" 14950 Z$=X$+":WIDTH L"+PRNT$+X$:GOTO 5370 14960 ' 14970 ' SEND ERROR MESSAGE 14980 ' ------------------ 14990 MC$=" - PRESS ANY KEY TO TRY AGAIN" 15000 PRINT FNCUR$(22,10);IVID$;MESS$;MC$;ESC$+CHR$(84) 15010 PRINT CHR$(7);:GOSUB 1980 'bleep 15020 PRINT FNCUR$(22,10);NVID$;SPACE$(70):RETURN 15040 ' 15050 ' GET BBC COMMAND 15060 ' --------------- 15070 C$=SPACE$(8) 'clear command field 15080 GOSUB 4382:IF OK%=1 THEN RETURN 'search for non-space 15090 IF FIRST%<>0 THE㐞2N 15130 15100 IF K%=91 THEN 15430 'j if [ 15110 IF K%=42 THEN 16610 'action * command 15120 IF K%=61 THEN 15270 'j if = 15130 IF K%=63 THEN GOSUB 15320:GOTO 15180 'j if ? 15140 IF K%=64 THEN C%=20:GOTO 8090 'j if @ 15150 IF K%=33 THEN C%=12:GOTO 4940 'j if ! 15160 FIRST%=IP% 15170 IF K%>47 AND K%<58 AND BNO%=118 THEN GOSUB 16480:OK%=2:RETURN 'continuation VDU 15180 BNO%=0:GOSUB 15890 'look for alpha 15190 IF OK%=1 THEN RETURN 15200 IF ER%<>1 THEN GOSUB 16460 'copy in precede chars. 15210 GOSUB 1㐞 25220:RETURN 15220 GOSUB 15740:GOSUB 15230:GOTO 2470 15230 X%=IP%-BP% 'get string length 15240 IF X%>8 THEN X%=8 'limit for command comparison 15250 MID$(C$,1,X%)=MID$(CL$,BP%,X%):GOTO 2470 15270 GOSUB 15282:GOSUB 6330:Z$=":RETURN":GOSUB 1190 15272 IF FCOM%=0 THEN LLST$="" 15280 DPF%=0:BP%=IP%:GOTO 2980 15282 PNAM$=SFN$:PRLEN%=LEN(SFN$):REC%=SFR%:GET 5,REC%:GOSUB 6872:RETURN 15290 ' 15300 ' INDIRECTION OPERATORS 15310 ' --------------------- 15320 IF FIRST%=0 THEN Z$="POKE " ELSE Z㐞3$="PEEK(" 15330 GOSUB 16460:GOSUB 1190:GOSUB 4252:C%=13:GOSUB 2100 15340 IF FIRST%<>0 THEN 15380 'j if PEEK 15350 TYP%=13:GOSUB 15940 'look for = 15360 GOSUB 16460:GOSUB 8722 'output value 15370 IP%=IP%+1:RETURN 15380 GOSUB 8972:GOSUB 16550:GOTO 6010 15400 ' 15410 ' ASSEMBLER CODE 15420 ' -------------- 15430 C%=11:GOSUB 2100 'report untranslatable 15440 OB$=OB$+"REM$":ACODE%=1 15450 LL%=0:GOTO 2980 15460 ' 15470 ' CHECK COMMAND EXISTS 15480 ' -------------------- 15490 IF C$=SPA㐞3CE$(8) THEN 2980 ELSE GOSUB 15692 15510 ON N% GOSUB 300,310,320,330,340,350,360,370,380,390,400,410,420,430,440,450,460,470,480,490,500,510,520,530,540,550 15520 SL%=LEN(X$):IF SL%=0 THEN 15690 'get table string length 15530 BNO%=BBABC%(N%) 'get command no. 15540 SP%=1 'initialise pointer 15550 N%=2 15560 NK$=MID$(C$,N%,1) 'get next command letter 15570 BK$=MID$(X$,SP%+N%-1,1) 'get next BBC letter 15580 IF BK$=SP1$ THEN 15650 'exit if end of command 15590 IF BK$>NK$ THEN 15690 '㐞3j if not found 15600 IF BK$=NK$ THEN 15630 'j if match so far 15610 SP%=SP%+8 'step to next BBC command 15620 IF SP%>SL% THEN 15690 ELSE 15550 15630 N%=N%+1:IF N%<9 THEN 15560 'step pointer 15650 BNO%=BNO%+(SP%-1)/8 'calculate command no. 15660 OK%=0:NL%=NL%+1 15670 IP%=BP%+N%-1:GOSUB 4260:RETURN 15690 BNO%=0:GOTO 2980 15692 K%=ASC(LEFT$(C$,1)):GOSUB 4180:N%=K%-64:GOSUB 16100:RETURN 15700 ' 15710 ' SEARCH FOR CHARACTER CATEGORY 15720 ' ----------------------------- 15730 TYP%=㐞33 'look for non-space 15740 BP%=IP%:GOTO 15770 'keep start pointer and type 15760 IP%=IP%+1 15770 GOSUB 16100:IF OK%=1 THEN RETURN 15780 IF K%<32 THEN 2980 15790 IF K%=95 THEN K%=46:K$=CHR$(46) 15800 IF A%=TYP% THEN 15760 15810 IF A%=18 THEN 15850 15820 IF TYP%=99 THEN 15860 'j if variable search 15830 GOTO 2470 15850 IF BSP%=-1 THEN 15830 ELSE GOSUB 4250:GOTO 15760 15860 IF K%<>46 AND ASC(K$)<97 AND LC%=1 THEN 15830 15870 IF A%=1 OR A%=2 OR K%=46 THEN 15760 ELSE 2701 15880 TYP%=1:GOTO 1㐞35940 15890 TYP%=2:GOTO 15940 15900 TYP%=4:GOTO 15940 15910 TYP%=8:GOTO 15940 15920 TYP%=11:GOTO 15940 15930 TYP%=6 'look for ( 15940 BP%=IP%:GOTO 15960 'keep start pointer 15950 IP%=IP%+1 15960 GOSUB 16100:IF OK%=1 THEN RETURN 15970 IF K%<32 THEN 2980 15980 ON A% GOTO 16030,16030,16030,16030,16030,16030,16030,16040,16030,16030,16000,16030,16030,16030,16010,16020,16060,15990 15990 GOSUB 4250:GOTO 15950 16000 OK%=1:GOTO 2590 16010 IF TYP%<>8 AND BNO%<>21 THEN 15130 ELSE 16030 'j if ? 1㐞36020 K$=CHR$(46):K%=46:MID$(CL$,IP%,1)=K$ 'action _ 16030 IF A%<>TYP% THEN 15950 ELSE 15830 'j if not found 16040 GOSUB 16130:GOSUB 16460:BP%=IP% 'look for matching " 16050 IF TYP%=8 THEN 15830 ELSE 15940 16060 IF PRFL%=0 OR TYP%=8 THEN 16030 16070 GOSUB 16460:GOSUB 16480 16080 GOSUB 16490:IP%=IP%+1:GOTO 15940 16092 IP%=IP%+1 16100 IF IP%>LL% THEN 2980 16110 K$=FNKMID$:K%=ASC(K$):OK%=0 16120 GOSUB 4180:A%=CCAT%(K%-31):RETURN 16130 GOSUB 16092:IF OK%=1 THEN RETURN 16140 IF A%<>8 THEN 16130 ELSE 1㐞35370 16150 ' 16160 ' GET GW COMMAND 16170 ' -------------- 16180 SPEC%=CONVA%(BNO%) 'get command specification 16190 GNO%=SPEC%\100 'get GW command no. 16200 SPEC%=SPEC% MOD 100 'get special requirements flag 16210 IF BR%=0 OR BE$="" THEN X$=OB$ ELSE X$=BE$ 16220 SP%=ASC(RIGHT$(X$,1)):IF SP%>96 THEN SP%=SP%-32 16230 IF CCAT%(SP%-31)=2 THEN GOSUB 5040 16240 IF GNO%=0 THEN 16360 'j if no GW command 16250 N%=1 16260 IF GWABC%(N%)<=GNO% THEN N%=N%+1:GOTO 16260 'j if entry passed 16280 N㐞3%=N%-1:GOSUB 16392 'get command start letter as offset 16300 X%=GWABC%(N%) 'get 1st command no.in string 16310 X$=MID$(Y$,(GNO%-X%)*7+1,7) 'get command 16320 GOSUB 16530:GWCOM$=X$ 16330 GOSUB 4980:Z$=GWCOM$:GOSUB 1190 16340 IF GNO%=1 OR GNO%=69 OR GNO%=70 THEN RETURN 16350 IF GNO%=84 OR GNO%=121 OR GNO%=133 OR GNO%=152 THEN RETURN 16360 IF IP%>LL% THEN RETURN 16370 IF FNKMID$=SP1$ THEN RETURN ELSE MID$(CL$,IP%-1,1)=SP1$ 16380 IF FNKMID$<>COLON$ THEN IP%=IP%-1 16390 RETURN 16392 ON N% GOSUB 㐞 3560,570,580,590,600,610,620,630,640,650,660,670,680,690,700,710,720,730,740,750,760,770,780,790,800,810 16394 RETURN 16400 ' 16410 ' COPY TO OUTPUT BUFFER 16420 ' --------------------- 16460 IF BR%=0 THEN OB$=OB$+FNCSTR$ ELSE BE$=BE$+FNCSTR$ 16470 RETURN 16480 OB$=OB$+COLON$:RETURN 16490 OB$=OB$+LPR$+PRNT$:RETURN 16500 IF BR%=0 THEN GOSUB 16512 16510 RETURN 16512 OB$=OB$+BE$:BE$="":RETURN 16520 X$=FNCSTR$ 16530 WHILE RIGHT$(X$,1)=SP1$:X$=LEFT$(X$,LEN(X$)-1):WEND:RETURN 16540 WHILE LEFT$(㐞3X$,1)=SP1$:X$=RIGHT$(X$,LEN(X$)-1):WEND:RETURN 16542 C%=35:GOTO 16560 16550 C%=41 16560 IF K%=C% THEN GOSUB 4252 16570 RETURN 16580 ' 16590 ' ANALYSE * COMMANDS 16600 ' ------------------ 16610 GOSUB 15890 'look for alpha 16620 IF OK%=1 THEN RETURN 16630 GOSUB 4370:IF X$="KEY" THEN 16780 16640 X$=LEFT$(X$,2) 'get command letters 16650 IF X$="FX" THEN 16700 16660 IF X$="TV" THEN 16740 16662 C%=27:GOTO 8090 16670 ' 16680 ' *FX 16690 ' 16700 C%=7:GOTO 8090 16710 ' 16720 ' *TV 167㐞330 ' 16740 C%=8:GOTO 8090 16750 ' 16760 ' *KEY 16770 ' 16780 C%=26:GOTO 8090 =7:GOTO 8090 16710 ' 16720 ' *TV 167WY[]_a c@e`gikmoq s@u`wy{} @` @ ` @ ` Z>3N㐞3STATUS REPORT ON B-TRAN PERFORMANCE REPORTS ------------------------------------------- Report no. Item Status ---------- ---- ------ UK/220/01-07-85 1) Illegal function call in line 16640. Caused by incorrect format of lines after transfer from the BBC micro. Change the manual page 6-1 to specify the use of *FX 6,10. 2) Bad file name in line 2440. 㐞3 Caused by use of file extension on output file name. Corrected in R1.4 ADM Development 1) Incorrect translation of DRAW and MOVE statements if the 24 Lower Bridge parameters are array data. Canterbury Corrected in R1.5 UK/239/10-07-85 1) Bad record number in 8690 with use of function FNyes_no. There were two problems, one the use of the underline character in a lower case name, and secondly use of a 㐞3 function with no parameters. Corrected in R1.5 2) Illegal function call in 4160 when RAD statement nested within a trigonometric function. Corrected in R1.4 UK/322/22-08-85 1) Use of BBC indirection equivalent caused syntax error under GW Basic. A warning message was output. From R1.5 statements including the ! indirection o㐞3perator are not translated. The warning message has been amended appropraitely. 2) Suggestion that warnings should be savable to a file. This has been implemented in R1.5 where warnings can be saved to a file given the extension .WRN UK/323/22-08-85 1) More errors listed than noted. This error has occurred in R1.4 where the method of keeping warnings was changed. 㐞3 Corrected in R1.5 UK/324/22-08-85 1) ON ERROR command other than GOTO causes syntax error in GW Basic. Corrected in R1.5 where the line will become ON ERROR GOTO 0 and a warning message output. UK/325/22-08-85 1) IF PAGE ... translates to a meaningless line. Caused by use of an untranslatable command. Corrected in R1.5 so that the whole statement is 㐞 3 supressed in the GW output and a warning message is output. UK/347/05-09-85 1) DEFPROC,REPEAT,LOCAL translated to REM and no warning given. This is as intended and the manual shows these statements as becoming REM's. No warning is neccessary as B-TRAN produces equivalent facilities as shown in the manual. Possibly the documentation could be 㐞4 improved to show that the REM statement is neccessary to retain the users original line numbers. UK/348/05-09-85 1) HIMEM translates to REM. A warning message is output in R1.5 UK/349/05-09-85 1) *OPT translates to REM. This is untranslatable but a warning message is output in R1.5 UK/350/05-09-85 1) *KEY translates to REM. No translation of this is yet availab㐞4le but in R1.5 a warning message is output. UK/351/05-09-85 1) *T. translates to REM. A warning message is output in R1.5 㐞4B-TRAN Release R1.5 ------------------- NEW FACILITIES -------------- 1. A new option has been added to allow translation warnings to be saved to a text file. The file name is the same as the output file name but with file extension .WRN 2. When a BBC program contains a CHAIN command then a COMMON statement is now generated for line number 0, and the variables included in the statement are A%,B%,... to Z%. Note that if the program which is chained to does not itself include a 㐞4 CHAIN statement then it will be neccessary to manually insert a COMMON statement in it so that it can pick up the COMMON variables. 3. Where there is a missing THEN in an IF ... THEN ... ELSE construct then this is now automatically inserted into the output. 4. The special case of the VDU 23 construct VDU 23,8202;0;0;0; used to turn the cursor off is now recognised and generates LOCATE ,,0 GRAPHICS SCALING FACTORS ------------------------ The scaling factors have been changed 㐞4to take account of the 200 line monitors coming into use on the F series of Apricots. The scaling factors now employed assume a screen of 320 X 200 if the 16 colour translation option was chosen, and 640 X 200 if 4 colours or no colour conversion was chosen. BUGS CLEARED ------------ 1. A ? indirection operator could cause B-TRAN to loop e.g. in READ DMMD?A%. 2. If a statement included an untranslatable command then an incorrect statement was generated. The generated statement is now made㐞4 into a REM and a warning message given. 3. Function names which included underline characters caused incorrect output. 4. When a hexadecimal number was encountered then an H was not inserted before the number in the output. 5. When ON ERROR was followed by a command other than GOTO then this was translated and included in the output. This is not valid under GW Basic and the output is now made into ON ERROR GOTO 0 and a warning message produced. 6. When a call t㐞4o a function with parameters on an earlier line was made then the parameters were set up incorrectly for the sub-routine replacing the function. 7. Multiple VDU statements on a line can now be translated e.g. a succession of VDU 19 statements not each individually introduced by VDU. 8. In a string enclosed in quotation marks, underline characters were being incorrectly translated to fullstops. 9. DRAW and MOVE statements referencing arrays were not correctly translated. 1㐞40. An error was introduced in R1.4 whereby the number of warnings in a translation did not agree with the number of warnings shown. 11. CHR$ was could be incorrectly translated if the character number was an arithmetic expression. 12. The subroutine created to handle INKEY statements has been moved to follow after the first occurrence of the INKEY rather than before it. This overcomes a problem caused when a line has been split into two because of a REPEAT statement and an INK㐞 4EY was in the same line. 13. If a function definition included reference to another function then an incorrect variable name was generated to hold the functions result. 14. Corruption could occasionally occur at the start of the translated output line if it was truncated because it exceeded the maximum length allowed by GW Basic. 15. If a VDU 23 statement was followed by another statement on the same line then a spurious colon was placed in the output. 16. If a ? indirection 㐞4operator referred to a bracketed expression then the outputr expression had double brackets round it. c00#1C1c1S@1?2O2%#<<oO7o37393;3=?4ACC4Ec4G44/5Uc5W5[5]5_acC6ec6g66k6m6o7qc7uC8w7y7{7}78#889/9C9c99999:C:c:::|AO;c;;;<ǃ<ɣ<<<=C=٣==#>?c>>>>?#?C?c??Z>4NZ>4NZ>4NZ>4NZ>4NZ>4NZ>4NZ> 4NZ>5NZ>5NZ>5NZ>5NZ>5NZ>5NZ>5NZ>5NZ> 5NZ>5NZ>5NZ>5NZ>5NZ>5NZ>5NZ>5NZ>5NZ> 5NZ>6NZ>6NZ>6NZ>6NZ>6NZ>6NZ>6NZ>6NZ> 6NZ>6NZ>6NZ>6NZ>6NZ>6NZ>6NZ>6NZ>6NZ> 6NZ>7NZ>7NZ>7NZ>7NZ>7NZ>7NZ>7NZ>7NZ> 7NZ>7NZ>7NZ>7NZ>7NZ>7NZ>7NZ>7NZ>7NZ> 7NZ>8NZ>8NZ>8NZ>8NZ>8NZ>8NZ>8NZ>8NZ> 8NZ>8NZ>8NZ>8NZ>8NZ>8NZ>8NZ>8NZ>8NZ> 8NZ>9NZ>9NZ>9NZ>9NZ>9NZ>9NZ>9NZ>9NZ> 9NZ>9NZ>9NZ>9NZ>9NZ>9NZ>9NZ>9NZ>9NZ> 9NZ>:NZ>:NZ>:NZ>:NZ>:NZ>:NZ>:NZ>:NZ> :NZ>:NZ>:NZ>:NZ>:NZ>:NZ>:NZ>:NZ>:NZ> :NZ>;NZ>;NZ>;NZ>;NZ>;NZ>;NZ>;NZ>;NZ> ;NZ>;NZ>;NZ>;NZ>;NZ>;NZ>;NZ>;NZ>;NZ> ;NZ><NZ><NZ><NZ><NZ><NZ><NZ><NZ><NZ> <NZ><NZ><NZ><NZ><NZ><NZ><NZ><NZ><NZ> <NZ>=NZ>=NZ>=NZ>=NZ>=NZ>=NZ>=NZ>=NZ> =NZ>=NZ>=NZ>=NZ>=NZ>=NZ>=NZ>=NZ>=NZ> =NZ>>NZ>>NZ>>NZ>>NZ>>NZ>>NZ>>NZ>>NZ> >NZ>>NZ>>NZ>>NZ>>NZ>>NZ>>NZ>>NZ>>NZ> >NZ>?NZ>?NZ>?NZ>?NZ>?NZ>?NZ>?NZ>?NZ> ?NZ>?NZ>?NZ>?NZ>?NZ>?NZ>?NZ>?NZ>?NZ> ?NZ>@NZ>@NZ>@NZ>@NZ>@NZ>@NZ>@NZ>@NZ> @NZ>@NZ>@NZ>@NZ>@NZ>@NZ>@NZ>@NZ>@NZ> @NZ>ANZ>ANZ>ANZ>ANZ>ANZ>ANZ>ANZ>ANZ> ANZ>ANZ>ANZ>ANZ>ANZ>ANZ>ANZ>ANZ>ANZ> ANZ>BNZ>BNZ>BNZ>BNZ>BNZ>BNZ>BNZ>BNZ> BNZ>BNZ>BNZ>BNZ>BNZ>BNZ>BNZ>BNZ>BNZ> BNZ>CNZ>CNZ>CNZ>CNZ>CNZ>CNZ>CNZ>CNZ> CNZ>CNZ>CNZ>CNZ>CNZ>CNZ>CNZ>CNZ>CNZ> CNZ>DNZ>DNZ>DNZ>DNZ>DNZ>DNZ>DNZ>DNZ> DNZ>DNZ>DNZ>DNZ>DNZ>DNZ>DNZ>DNZ>DNZ> DNZ>ENZ>ENZ>ENZ>ENZ>ENZ>ENZ>ENZ>ENZ> ENZ>ENZ>ENZ>ENZ>ENZ>ENZ>ENZ>ENZ>ENZ> ENZ>FNZ>FNZ>FNZ>FNZ>FNZ>FNZ>FNZ>FNZ> FNZ>FNZ>FNZ>FNZ>FNZ>FNZ>FNZ>FNZ>FNZ> FNZ>GNZ>GNZ>GNZ>GNZ>GNZ>GNZ>GNZ>GNZ> GNZ>GNZ>GNZ>GNZ>GNZ>GNZ>GNZ>GNZ>GNZ> GNZ>HNZ>HNZ>HNZ>HNZ>HNZ>HNZ>HNZ>HNZ> HNZ>HNZ>HNZ>HNZ>HNZ>HNZ>HNZ>HNZ>HNZ> HNZ>INZ>INZ>INZ>INZ>INZ>INZ>INZ>INZ> INZ>INZ>INZ>INZ>INZ>INZ>INZ>INZ>INZ> INZ>JNZ>JNZ>JNZ>JNZ>JNZ>JNZ>JNZ>JNZ> JNZ>JNZ>JNZ>JNZ>JNZ>JNZ>JNZ>JNZ>JNZ> JNZ>KNZ>KNZ>KNZ>KNZ>KNZ>KNZ>KNZ>KNZ> KNZ>KNZ>KNZ>KNZ>KNZ>KNZ>KNZ>KNZ>KNZ> KNZ>LNZ>LNZ>LNZ>LNZ>LNZ>LNZ>LNZ>LNZ> LNZ>LNZ>LNZ>LNZ>LNZ>LNZ>LNZ>LNZ>LNZ> LNZ>MNZ>MNZ>MNZ>MNZ>MNZ>MNZ>MNZ>MNZ> MNZ>MNZ>MNZ>MNZ>MNZ>MNZ>MNZ>MNZ>MNZ> MNZ>NNZ>NNZ>NNZ>NNZ>NNZ>NNZ>NNZ>NNZ> NNZ>NNZ>NNZ>NNZ>NNZ>NNZ>NNZ>NNZ>NNZ> NNZ>ONZ>ONZ>ONZ>ONZ>ONZ>ONZ>ONZ>ONZ> ONZ>ONZ>ONZ>ONZ>ONZ>ONZ>ONZ>ONZ>ONZ> ON㐞Point 32 SERIAL NUMBER: 00000000227 APRICOT PC/Xi WORKSTATION DISK B Vr1.1 Inc Source 13 December, 1984 UK Version BTRAN 1.5