@L}5 _$% l0$)$$Hȱ$ UhL" `e$$%`$%`  R@W!( L(1   Y I`  d  Ld M * @  $ % CC$$)%1 Udߥ$9%: !0 S$% DD˙`  }J)Lr d M * @  $ % CC$$)%1 Udߥ$9%: !0 S$% } DD˙`  }J)Lr J  ((  p L ()   J }L= ( L 0q A    IB JC;? D W } LL  ` W )LA!  ߰")-݆ p" } $G@LL 08`Q")<2Q0 -G$Ș݆ UL# ; p8(()(0ʥ)NQ` }$GȘ݆LU )L ݆ L GȘ ݆LL )W>Z   HH)H }p h  hyhy D L> L JJ    ! LA*` BF }7'8  M HN H` 8 Z  \LdJJ!"! GFE@F (!L }EE !E^ ^ E E7EȩEdE/EȩE  D } .L }  ;F d  ;?F7F? ( .   Z D LL d } . D  L    p  E` , d)  D L) 0BM݊L݉ } ML  N݆ L NLML [ TEqEHȱEqEh 0Gȹ G } HLL GɛL  LFREE SECTORS G) *Gȩ GȽG GȌ*jj >G } C8jJ3j2CD( C202C ԠBX` N 1? l LlD:RAMDISK }.COMLu L1 L ;LHL  T`  `1  ɐ     `TU  } L ? .  t`GBJ ~DEHI B V0dV !}QDEHI VF9 ,0 ,0 s0hhL  L` H hDHEh "}DEL8HI4 0 HI,0 0  9 .G VLO #},0 L4*IJ`llD1:AUTORUN.SYSNEED MEM.SAV TO LOAD THIS FILE.D1:MEM.SAV J y08 B|DEHI $} V0 0`B;DEL`?<0LV`@ʆ v s? F0Ξ05: [ BDEHI %} VY8 B V  @  /DE `E:D1:DUP.SYSERROR-SAVING USER MEMORY ON DISKTYPE Y TO &}STILL RUN DOS B;DE J  (` 9 V⪍ ઍ  - '}LLu ÝDEHILV 9 .l 9 .l  `` s$B BH (}I|DE V BLV nB,DE JLV B V BLVDEIʩ BꭝLu  })6^^<s3>00x|73>00x`c6<9c` 33c366fffg~33>00xgfffff<$*}11111{!!\]_\ED!EOHI B V`}   $+} TURBO-BASIC XL 1.5 (c) 1985 Frank Ostrowski!  ӥL]""$$ (p$,}%J[WܠjeC /D%Zub2gTSt$8®݊Ò2% 5R$-}Ţtd.’$3@X7t5w5$?## $#L+D:*.*S:C:P:$#.#) `:#(6ENeU\l؏&/ؕ؄sأ$$.}LENeU\lأ$8آǔƐƉƐƇ4cY%٦rULۉCۄړp^gyض%iwܸJڅ*ܣ$ڭڞجئأأ$/}$ ,(""(222000000..222222222222222222222222222222**22*22(222(2222222222 ,(""($0}0000000--**2*(22(2222222 V`hh@,lHH$HHHHHHӍl"$1}H$HHl $`GHFH\` ` 4ӭ l 4Lq ӠԪӅԆL} Ӡ L( $2}) ` b% +L:#HH 0 HHLj%ӥHlL{ee 8eee$3}eӦee褢%ƚƜ`88夅奅8$4}夕奕Ӡȱȱȱ㦢`L+`8` .E)))8@8e0 $5}*څۅ܅݅ޅ߄ԠF0y"ޥy"ݥy"ܥy"ۥy"ڥy"و0ǠF0y"ݥy"ܥy"ۥy"ڥy"٥y"؈$6}0ǠF0y"ܥy"ۥy"ڥy"٥y"إy"׈0ǠF0y"ۥy"ڥy"٥y"إy"ץy"ֈ0$7}ǠF0y"ڥy"٥y"إy"ץy"֥y"Ո0L-`8`E)))8i@0 *ڄԠ$8}"("!""" "L**""""""&О"("!""$9}" "L**""""""&О"("!""" "L**$:}""""""&О"("!""" "L**""""$;}""&О"("!""" "L**""""""&Оd$<}"("!""" "L**""""""&ОL-6"e"$=}"e""e""e""e""i""}"""}"""}"""}"""}"""}""ǭ"m"""m"$>}""m"""m"""m"""m"""}"""}"""}"""}"""}"""}""ǥՅօׅ؅مԅՅօ$?}ׅ؅`` ` ` `80 `ԥՅ +.JJJJ)iFiFi1FicFi'ȐȦoFiU$@}ȐFiiFi#iFiGi Fii@F iiFiiciՊFigi'iՊօשBL-`I$A}))83Ԥԥդե֤֥פץؤإ٤L,K6"ХL--L--L-$B}-E0:e٥eإeץe֥eՐ؅٥ׅإօץՅ֩L-8٥إץ֥հ'I8$C}م٘؅ؘׅטօ֘ՅL-ؤm\G0Q@Ն֩م؅2եمֆשم"ե؅֥م׆ةեׅ֥$D}؅ץم؆لԘ)q +` . |. &7i |. ,%!L?.`刱䈱㈱∱$E}ሱ`ԅՅօׅ؅م`ԍՍ֍׍؍ٍ`ԍՍ֍׍؍ٍ`L.L. Խսֽ$F}׽ؽ` L%/`ӽޕ &ԅ)@إ)JJJe)e - M$G} 1. &Je0F 2 . /L(8`@ԠՈքׄ؄` . |. , . . |. , #/L(8`0 I@ԥ)$H} 2f / . & r 1. #/ &?P , .Iiԩ +)ԅ ,ӽޕL(`8`$$I})Ԧ61718191:1;1 (ť)8@0$Յ)e)e -F . / , . &1 1.$J} #/ &F I`U9>`D'RFuCU?b9dYdg@W2@?tS)%)@0)%ԅԢ / . &G $K} 1.Ӱ6 #/ &.ӽߕ ,ԅԥ B1 (`8``0?i? . . / , #/ &ԍՍ$L}֍׍؍ٍ . . ( / , O2 / ,0 .JeF 2`L+) .e٥eإeץe֥e$M}Պi؊؅٥ׅإօץՅֆե1ԥ'JffffJffffJffffJffffم`ԩ&&&&*&&&&*&&&&*&$N}&&&*`Pi`)JJJeԅԘ)Peԅ`եԆ8@EB)JJJeԅԥ)PeԅԘ)3eԅԽ3eՅ՘)JJJ}3$O}}3`)JJJeԅԥ)PeԅԹ3eԅԹ3eՅդЧ` 0@P`'Nu pX@(#d,X L(  兢$P}0襙 bɥ⥋㩀 50ɥ0DȱȱȄ   ik#ZMkVgğe拰ㅋ$Q}⅊0 eee拰 L f5дƨħ 4LY4 f5К,樥ŧH 4h h5L4樤ܱ.* O %30$R}  5Ԅ +(fԤԈ`ř嚰Ԥ`ڥۥड़0-԰eڅڐۈ0eeL+58` $S}O#`,#5  6`]5 6DE 68DHEIHI V0$ 6Sл B$T} V,# 6` $#LllBHI V0HH V0Ԩh``{a$%Ȏ$$xө$Ѝ$ `$U} `@X a Ӆʢ ʎD  _ɠ %` ɩHH `өL: g% D$V}:AUTORUN.BASөjJHH`ՠԢӱԙ!ӹ!`֝DEIHB V0Y|ڝDa۝E$W}օܥׅݥܝHݝI V0+Ӡڑڑ0`l `  䅠 _ɠԐ$X}e拢 &L &Lħ © ¥4 䥝ň剰' k ɀ8@4= LY ĩ`OJ ]J?L$Y} KԪȱLRHHצ R, hhLRHHHHHH /0ȑȑޠhhhhh$Z}h`HHHHHHHHHH $H bɐhȥLHhhhhLň剰)$[}i桰` )``L(兢ħ #$ x Hҩ h$襚ҥ ԝ`$\} UV #T` ` `,H ¥ȍ` JKhLŢ  #)I L ¤Ȣ`L¦ ¦ Lĩ$]} ½J*K+ $LąLĩ …L~ …`H Ġh é`,H hH Ġ  ĭ 8}}$^} L n [h`LkL © 8倝偝 Ġ  ĥ󥃅  Lĩ LH$_} éLH#h ĩ`H hKJ L+ , H hHHħ s hKhJ  Lĩ# qL $`} ŘL ũ& QŽLM " ĽNL  ĥԝL՝M  ĥԝN%LV  ¤ħ` Ťħ` ƪ Ċ $a}Ťħ` ¢`届 x݅ L ĽCӠɀ L]Ɉ L] Ln LŠI$b}HEDBL$HH hh +L `ħ LĢl ¦`YDAER ԅՅ֦$c}󅗄`L+ ¢p 0 Hp hɈL` ,#,$,!Lé ,H ĥDEԝH՝Ih L$d}©L $`L© , k ĩԅ  + ĥ 夨ħ`2ƪƪ ! A!Ƚa!Ƚ!Ƚ!Ƚ!Ƚ!$e}``氤hhL1@$ƪư 0 0 n$P`L+FҐ֥װ綾إٰو LǠFf$f}ؐ ee&ee* &eeeԪeըee$.ƪ@!Ƚ`!Ƚ!Ƚ!Ƚ!Ƚ!`檦$g}!!!!`!@!^!` Ȅ 8 n奱 ٥Lǥ֤צưĘ=ŗ78֪א& $h} eԥe$`L: L ԅՅօׄ 1פ& ٤ţĢԅeՅe8包卅 ]&$i} 8Ԩժ%אְ`ֆL夨ħ` FҰg8&0ei֥i0Tׅiإi0BJe؅eم0&f$j}fff&0 &0 eeL+օפإ颎 %8包ԥ卅 L ɥ $k}ȱъŠe拰8``,ªȱȱI ѝ3ȥLɥHHO]$l}  ȥe暰Х ȥL+ʅȱhh`Lħ OԪȱԨ``L :0$m} `L(奷 bɥ󥋅ȱȱȱȄ#鈄0B8eeŶ$n}ɛ,@LBˤ,ɛ`L?± ˤ樱f Oƨ x݅ + ~ [ˠ O樥0# +  L˥`$o}LL :ɛ,$PH h $P润䧰 ʐLʦ䧐 +` ʐL3LBˢ$p}ԝD՝E֝HםI L 兢L]& 兢L% ,L6 ,L6 &L6 (L6妪@!I@!` ؐb`P KW ؐRB ؐ$q}=;G ؐ4@ ;+ƪƪ@!=A! (ƪƪ@!A! ƪ@! ,@@檦@!`!!!!!!`ƪ@! ǩjҤ$r} /L.٤ƪƪ@!@!, 舽`!`!!ـ!!٠!!!!!`@!jI*` . ֪ ($s}ϰ`(8` ֤ׅԄ +҅L: Lyƪ8吪周Ly sũ + ŐL Ly sŠԄ h L}$t} L}٩    e쪽pLyL( + ڥHJJJJ h) 0:i`  ک; n +ȱ)ȥ%$u}ݓ Lh ԍՅԄׅ֩өL:ƪ?Ԣ )ɠ )  -L &Lڦ@!)@!` n)8@$v} -L:` / n)8@I= n)8@/ѩ֔$ሄ ,L: + n 0L8 n$w} 0L8 n H1L8 n /L8 n /L8 n D/L8 n 1L8LLإL( &)ԥ)8@JjH@$x}MC)JJJe)e .F / .P . &F . #/ &L.L(HHHHHH /hhhhhh &$y} Y/hԅL:,` L _ܘ%ᨥ%Ly _ܘᨥLy _ܘEᨥELyٚ<|'g 0L`$z}!!!!i ` &LإL٥LyɥLzvmZ ƨ!0 4 䦵 ¥ԝD՝E֝Heם${}I Lܤį eį L` x݅ƨLLLܤ ©`#ۢ Lĩ_,ߤ$|} ڄ . eڅԥeۅհ"8څ֥ۅא8ܥݰL۠Q%0ԅإՅ٥ަ0%Q% $}}L-ե0LޥڤLyمօנ6&֐ eו`L( Hħ hբՅ `ޥԢ `ޥՅ֠$~}&&֐eܥeېڈ 7 \ 7 j N \ N j$0!ee80å/8ܥ۰uڕ0$}eUiV`TUV`8UV`eTi`8TȢ` $L„')Q ȱ8 e$}新`8`L齀).Q Ӱȱ8e新 O :L䅫# *$Ŭ$} Ʃ HL"䥫ș L` Ml/#樱0ZS'`ȱȱȱȱȱȱȄ`ȱօȘuԩׅu՘e֨҄`$}I 屝Ҡȱȱȱȱȱ` n$҅J?eԨe` L 兙 兛 n %3 Ԥ` ҩ,$} , , L檤 ٙ!ؙ!י!֙!ՙ`!ԙ@!ә !ҙ!` 䤪ƪ!ٹ!ع!׹!ֹ`!չ@!Թ !ӹ!`ƪ!!$}!㹁!a!A!Lp ґȥӑȥԑȥՑȥ֑ȥבȥؑȥّ` ***j)e)e`ʭȅiȅ$}iȅȩȩ Lfإ  4  \ +] ¥򄟄$}   넨ɛ$0L祔 Z f0#ڠ쩀 ߩ6ei$0 녖چ + !5$}ɛȑ @膔7 ɛ 襔!ɛL! _ɩ8$IȢ %e拢 $} &!$P* &8孨客 "&$ 1L~ L~ &L _ɰe拢 &L~ +0 %30Ԅ $}L 9:枢0 O L :H9Hhh tLHH`h$}hLCL馩`ʆLC枢0ְşLC`A枢Ɣ!L!L$}!T 򈩛LQLD ijq ߰,iŰD VD8` 覲`8` 넬 S( +饰$}0 S0:$$ p8`$p (ȩ@҅ҥ򄬤 ߰ A L8򨢄 %Ӥ򈦬ʽ ʽ % $}+HH 屝EҨhh$P0Ƭ 襯I `_A[`8`80 &Ոԅ$}` 넬$ +  + h갳 h) + , 褔ԙ!` "8` 襔 ɛ "ȱ"$}嫤!`! `) ɛ%)a{)_0:A[_դ`RE͕DATINPUԑCOLOҝLISԖENTEҚLEԛIƜFO$}NEXԑGOTϑGO TϑGOSU½TRAАBYŐCONԞCO͟CLOSŐCLҐDEǞDI͐ENĐNEנOPEΖLOAĖSAVŢSTATUӣNOTPOINԡXIϤOΒPOKťPRINԐRAęREA$}ĨRESTORŐRETURΩRUΐSTOАPOХGEԫPUԑGRAPHICӒPLOԒPOSITIOΐDOӒDRAWTϓSETCOLOҬLOCATŔSOUNĦLPRINԐCSAVŐCLOAĚERROR- $}DPOKœMOVœ-MOVŪ*ƐREPEAԑUNTȊWHILŐWENĐELSŐENDIBPUBGEԒFILLTϐDϐLOOШEXIDIҖLOC˖UNLOC˖RENAMŖDELETőPAUSŖTI$}ME$PROøEXEÐENDPROÑFCOLOҪ*̕-RENU͒DEDUMЪTRACTEXԖBLOAĖBRUθGO*’PAINԟCLӔDSOUNCIRCLū%PUԘ%GEԚG$}OTGOSUTSTETHEΣ<<>ުNOOANĨ<<>STRCHRUSASVALEADATCOPEESIRNFREXLOCLOSQSGABIN$}PADDLSTICPTRISTRIDPEE˦INSTINKEYEXOHEXDEDIFRATIMETIMMOEXERNRANTRUN%%%%GOUINSTERER+,%5$}&6(+8,<Xk`fghilm^deDѳHc?,Ќ,е,Y_Ҳ+7,/0$}1 2!3"4Ɛ"-"."-؂ٿ֐ː$}ĐאŐbj+9,+;,ʐͭ$}ͭ@ABC\=>[<+:е<,&%rvnnxc<\$}-78s_XV+@D&0d*"'2GJh N$}Rl~&2 +饰(+VWZ ]a8`L`  ¤ħ.H h L5 䄡 $} 䅭 bɠ04Ů .ŭ%) e拰 ĩ L+Ư0 Le$}`毤Hɛ) h`  L ȱ R @ʆ ȱȄ Iğ` :62T F :$}7 8 Lbԩ- L 8 8,I ɨ 8L.UH `ƨh $ %3   + \L L 8󅯩" $} 8" ©" Ư" L8q :Z#]abj(=) W같  L樤ħ`hh`H YhZ $}L<>EO ƹƹ0`H f5h`I&` =? FQA` L񄳱ȱI 䦐$}Ħ ąŅ T k /䧰 k ,Ǡ ĩJH ThĥȑĥȑĦʊȑ`HHąŅ$}H h hhhh ȱIELZ L`ȱI Hȱȱȱȱȱ $}, h @ $L+L.*ȱȱȱȱȱjEE `EjI `e`ħ ¥$}0 ` Lk 䦪`! 䧰L A@L `I&`L ©؅ L.$}0`STOPPED륺 bɠhhL :ʅ` k %3Hƹ h5h`hbjH h #$}ԤLQ #LLei  `LԑȥՑȥ֑ȥבȥؑȥّ``䈥剰$}#)iiLɠL4űI&`048ץğ=ȱȄ $}`L  L0e拠0ȱȄL  䦪`!' >?L (<ж`!  $Л +`,LőŐ78Ƒ8 Ƒ`8` - PѠ$}`,,L L PQ 8,L ȱI ѝߠȱ`ԩ$},L E  $EL+L],,,؍ 0âLɀL ©7 F󦹩 RbL g $}0g `Ո V fL{Ն + +􅕄L AT LINE?BLOAMEVALU>#VAR$LE?DAT>3276INPUDISTACOVERFLO?LIN?$}FOTOO LON?DE?GOSUGARBAG?CHMEͣ?LOA?NES?WHIL?REPEA?D?EXIXPRO?EXE?PRO?IS OPE?DEWR ONLCMNOT OPEΣRD ONLEOT$}RUNTIMEOUNA!FRAMCURSO!OVERRUCHKSUDONMODNOT IMPRA͠D?>#FILEDSK FULFATAL I/FILENAMPOINLOCKEDCM>DI$}?FILPOIN?APPNBAD SECTORӥHՄ +h & .hԩ + ,҅L: ƪn (@Մ$ 0` 0$}` 0LoH - . /h &@Յ՘JJJJ X) 0:i`AVC2 sŠ 5  <)  <$} L L + e +e`e`&&&&&&eee` &$}&eee&*`` 兙 䦪!0 4 ۄܱ **m ݤܱEۅڦڱ= $} ܥeƥiեLN@ ` **)]` 00`` ( ((((((((8$}`W)ߥ & &e &߽řِ׼JJJJ&eXޥeYߥ䥛 9 FfЎᰈ $} `  M 8*` 兙 󥐅i祣L{ &L$}  0 & L ȑ & L; # )ȱ L $})ȱ) )ȱ 8ƣŐő0eސ`ƙ8ް`)ȱJJJ`$}``=`]``` E߭H Ġ} hL±&Lv`[  ȱ R] $} L L  䅠 bɰhhğȱȄ L l"0e拱LjLx`[  ȱ R] $hQR (} (} 9(}9BB@dcc  6- P? 6-AdAU)-6-&@(}I? f)!g@A 6--i@,( 0PA% D:ASSEM4.TUR1 6-(  P1% (}D:READER.TUR(O f8AHB%(QeO +f6-@d#@/B7t;AYfMAA(}FY@feARgt 6- @+;@,;@,N6.ppppppppB@pppppAb9C:,A6B:(},t8A`A6>6. ML#6-BB)f88AHC:,>_ 6-_(Q} TURBO ASSEMBLER Version IV(} WRITTEN BY JOHN FOSKETT MARCH 1998 a 6-a(SPLEASE SELECT OPTION (1) READ/PRINT INSTRUCTIONS (}(2) RUN TURBO ASSEMBLER * 6-@h'AY@3*Q 6- % D:AUTORUN.BASAD/PRINT INSTRUCTIONS (c ,} ,} ,} lBAY=@@ A%?Ad AU A ",} > @2 R( N N@AU<B2y@xNHHQPBBb@8RB,} NXX@` 6- PO 6-f!AAF38A`A67PO9C:4,},AZ 6-1(# DISPLAY DOCUMENT ON SCREENZ($

DOWNLOAD DOCUMENT TO PRINTERQ 6--f;(' P,}LEASE SELECT OPTION EXITAfM@4QP' 6-)'"@'@0? 6-'@*@,}@+P?"@@# 6-g P: 6.7,-B:,g6g&6-@:7,,6@2*: 4 6- '67,.,}$6-X:<>:,,*!f467,. )6-%B:,%g(*4 P) @ & 6-0 (&"B:,@ $6-+F:@,},!@, $P  6- @ 8 6--h4(END OF DOCUMENT EXIT8P$ 6-F:,i@$,} @4OF:,-h4(PLEASE RELEASE CONSOL KEY 6-F:,@9 6--g9(%EXIT ,} CONTINUE 6-F:,"PPQL 6-i@-gH(& Ԡ CONTINUE (Y/N) ? LP,}1 6-)#"@x)"'P1 @. 6-@@  '$P. @*O!9C:,U:@,A@,}'-ff*QV 6--ih( #( )-fP("PRINTING DOCUMENT PLEASE WAITV6-g: 6.7,-B:,g6g&6,}-@:7,,6@2*: 4 6- '67,.$6-X:<>:,,*!f467,.%6-%B:,%g3%"B:,@ 6,}- @$-O#2f@@@'Mg*2-Q-O#2f@0@@'Mi*2-QA 6--f=(),}ԠϠϠ CONTINUE (Y/N)?AP+ 6-)+"@x)"@  6-@@1!M 6- ,}PfMhf/8ABXA8AFBxM@d": 6-AA'@h3A1f7+f:,}#=O f8AA2.8AFC:,:A=Q$J 6-ffMh P28A`AJ9C:26,,}A%W6.UNSPECIFIED ERROR1l"A8)l"A9W6.NO RESPONSE FROM THE DISK DRIVE&. 6-l"AD.6.D,}ISK DRIVE IS OPEN'* 6-l"Ap*6.FILE NOT FOUND(b 6-)(} E R R O R R E P O R TK( DISK ERROR l EN,}COUNTERED^-@P&B:,'hhb()N 6--@i.(PRESSTO EXIT:@4B-fhFPJMhN *$ 6-F:,},i@B$ @3+eO +f@@d/B7t@d;6-AYAfM6-AYAFe@f,,}} 6-A1g!ARg3AA= @6E6-i%iM6-%gY6-@ e6-AUq6-AU}6-Ad-,}e6-B2y6-BB'6-Be;,;@,;A@,;@,;@@,;@#,.bb6.X˅ͅբ̥,}jαˑhhh˅ˢFejhhhhϱ͑jԍ`/SE6-?:C:,<@e:@:7<,,&@2$+ @,,Q h9C:,A@@@5_ 6-8A9A@96.M@`LA6,}.R67A@,.[67h,._P6d 6.67,.67h,.=g@f D:ASSEM4.DOCIAIgUAPd8A,}RC:,7[ 6-8AV'AX@:6-?:C:hLV,,=J6-X:<,X67&g,. *[Q8o 6-o131,102,132,,}102,138,120,186,102,301,102,310,112,337,30,357,102,390,112,413,102,422,28,430,60,462,289" 6-"466,108,469,102,922,60,} D:READER.TUR02,301,102,310,112,337,30,357,102,390,112,413,102,422,28,430,60,462,289" 6-"466,108,469,102,922,60,4 OO 0} 0} 0} 0} 0} 0} o@}r@B2y@$x@ om j%0} .% mn B4t@'@A8@@#U@.z%0}J aDLa R!S"--#$\%M&M'O()@* 0}b+,-.AU/hb0AV1c2c3d4jd5d6Fe78A690}:D;?B@A@"B<.((C2$ DLmEAdFGAYHAUIj0}JEK?$LMGNvJOP@Q@sRS@tTLHU FV*/WFXIY0} GZ/G[PJ\UG]G^@_@`ac b. cdX/e@f@gh@0}i@0j `klp$dmnc$ op@@q& r}&s@Gt@Xu@dvwJ x(.0}yN$zL%{.|}Y&$$~$$]~`-$$Q @@@]f0}&@@H@W@@ @@ec!!”o0}@%ee$ff@kiB2Qii¦b0}h@@.5m.d.$$@@!@60}@xBB #::$"$ /0/(( 0((BPVĢd 60}-f +@@d1B7t@d=AYfOAAFT `6-@dP,]F:,"jg(F:0}A2,",P6 B:,!f7g6.7h<,X:<,"f:6.INSTRUCTION NOT RECOGNISED>\ PB:,"PP\ P "gP0}P\(@:,"@tPP 6-h$P(\46-X:<,!f"6-A:7%i,,&P,6-g0P4\P PPP 1}" PP"f*"f*"f!PP   PPA!f*"f !"gPP "h PPA 1} PPA "gPP "h PP\O QA(  %&&g(( ."g>( 1}BRANCHAQ "h( JUMPQ "h() "i(a)(  ] Q!@] (3($1}ĠƠŠŠ6(<!f@\"P !f6-#X 6-g-(NO ERRORS FOUND IN SOURCE CODE0(6-fT(1}Π CONTINUEXP$  )"f%%@6\&#O 6-g67,..ABSP#P'LL(gRES.1}%:F.>:,=0TO&g:READ>:,:POKE+>:,(#(g,>:,:N.>:, P#Q)#O 6-h67,..RELP1}#P*HH(gDIM$():RES.%:F.>:,=1TO:READ>:,+:3(g:$(>:,)=CHR$(>:,):N.>:1},7P:Q,DO 6-i67,..STRP#P=(gDIM$()APDQ-&O 6-67,..DATP#P&Q.&O 61}-67,..DSKP#P&Q/O 6-67,..HEDP0*ga]a]PQ1)O 6-67,..OBJP)61 }-%&g2#*ga]a] P#Q31O -h1( 4<Mh -h(( WRITING FILE 1 }: .6-9gf:@4,)7<,4>:,>Q9(g$(%&g,%&g1 })=CHR$(@:7<,,)F67<,.*N6-%QA?+ (g$!g+(g()@*(g=>:@4,*B:, 1}@fA(g6-% @`B  QC&O-g*g@:7,, #&QDO ((g&g .EQFMO6-1}%g7gG@R6.7%i,UA+4STRG6-X:<$,!!f+67,.; 6-B:,!67,.;($ E6-@:7%i,,!* A6.STRING MUST BEGIN WITH A LETTERE\@-%iB:,6-@:7,,5+ )! ,*+11} )!,<6.@\ 6.7%i,AR4VAR16-@:7%i,,' )!N6. MUST BE A LETTER BETWEEN A AND ZR\12}AR4VAR26-@:7%i,,' )!N6. MUST BE A LETTER BETWEEN A AND ZR\7 "36.#VAR1/VAR2 MUST BE DIFFER13}ENT LETTERS7\AZ4STEP6-@:7%i,,- @I)! V6."MUST BE A NUMERAL BETWEEN 1 AND 10Z\;6-A:7%14}i,,!76.MAXIMUM STEP VALUE IS 10;\A 6-&gQCO6-%g6.7,P!P+6-%g8!AP?615}.C\X67,.>:,6-%h"67,.267%,.=:,B67%,.#M6-%U6-&gXQMO6-%g6-B:,!16}I6.$LABEL TOO LONG, 8 CHARACTERS MAXIMUMM\? 6-@:,!* ;6.LABEL MUST BEGIN WITH A LETTER?\; -g617}-@:7,,0+ )! ,*+ )!,76.;\ 6-&gQO4(Q(CHECKING LABELS....B 6-f-g18}B:,,X: <7<%,,"f46-%gB6.7<%,   !f[6. BRANCHING TO #67,.=:,E67B:,%g,. UNREFERENC19}ED LABELK!g:,%g,.S \ A0-gB:, 6.7<%,06-A:7%,,'6-X: <7<%,,'6-A: 7%1:},,M7%<%,4*#6-%&g:67&g<&g,.>:a,M67<,.>:],U@6-&* 6A()!A'P61;}.BRANCHING TO LABEL OUT OF RANGEU\  f6-%"67&g<&g,.>:,A "QO6-%gDD4ADDR)1<}4LINE)4STEP)4VAR1)4VAR2)4STRG)4HEADN-6.#ILLEGAL USE OF SPECIAL " " LABEL<67<%i,.@\CAK6-1=}&gNQdOd6.VBRK0CLC24CLD216CLI88CLV184DEX202DEY136INX232INY200NOP234PHA72PHP8PLA104PLP40RTI64RTS96HH67@,.51>}SEC56SED248SEI120TAX170TAY168TSX186TXA138TXS154TYA152P PQ0O#6.ASL10LSR74ROL42ROR106(P-P0QLO1?}L6.>ADC105AND41CMP201CPX224CPY192EOR73LDA169LDX162LDY160ORA9SBC233P PQgOg6.YADC109AND45ASL14BIT44CMP2051@}CPX236CPY204DEC206EOR77INC238LDA173LDX174LDY172LSR78ORA13ROL468+67,.ROR110SBC237STA141STX142STY1400P5P8QkO1A}k6.]ADC101AND37ASL6BIT36CMP197CPX228CPY196DEC198EOR69INC230LDA165LDX166LDY164LSR70ORA5ROL38ROR1028+67@,.SBC2291B}STA133STX134STY1320P5P8QbOb6.TADC125AND61ASL30CMP221DEC222EOR93INC254LDA189LDY188LSR94ORA29ROL62ROR126SBC253ST1C}A157P PQNOA6.3ADC121AND57CMP217EOR89LDA185LDX190ORA25SBC249STA153FPKPNQhOh6.ZAND53ADC117AS1D}L22CMP213DEC214EOR85INC246LDA181LDX182LDY180LSR86ORA21ROL54ROR118SBC245STA149,67@,. STX150STY148$P)P,QH1E}O;6.-ADC113AND49CMP209EOR81LDA177ORA17SBC241STA145@PEPHQFO96.+ADC97AND33CMP193EOR65LDA161ORA1SBC225STA1291F}>PCPFQ*O6-X:<,!f'6-A:7%i,,*QA 6-h06. ILLEGAL USE OF " " INSTRUCTION=67<%i,.A\-1G}O67,.>:A:7%i,,,$6-%g*6-g-Q9O67,.>:,6-%g(67,.>:,06-%g66-h9QHO67,.>:,6-%g1H}*67,.>:a,26-%g@67,.>:],H6-%g 6-i QIO P6-%g6. +67,. 467h,.;6.B6 -fI61I}!-fP" E) " '#fP$P% Q " '''\& '"f!* P(1 '"g,"@F1J})!* )!* @1P(+"@C "!6 - &g+6!- &g&  !f6 - &g6!- !P"&P$A="1K}@B B:,#6 - %g+6!- 3 "=6!-!&gP" P$AF"A&* !f#67 < ,. .-)% *4( >6 1L}- &gF6!- P" P$AFLO(6+-  "6 - %g--)% *4(>:,D67 < ,.>:,L6!- ;  "-)%1M} *!(>:, 167<,.>:,;6!- &gP"+ ) "P$Q667,.>:A:7%i,,,6-%g+67,.>:,36-%1N}g6QO"#$%+)%!,$Q3O% E6-B:,!g'7g(2.AS DATA)V(3. AS A STRING)K( 4. DATA ONLY1(5/ (WITHOUT1S} HEADER)K(6/ (WITH HEADER)F(7. STANDARD OBJECT FILE%-f:(ί7h,F@4  )"*F1T}:,"i\& 6-&  g)!AR 6-X:<.,!f 67,.<6-B:,%g6-B:, -g%7(>:Av%,1U}:% ,.$-f9(ί7h,=PG ARO0 PMgPQ1V}#O2fA-Mh 2#Q1O ( (٠Ġ'(7,,(11(2 63-F:,3"i'\&) 3"( 1W}&A2f)Q Aa4] ( (-h@!'( ERROR-!g4(S #( FOUND(-f(#P01X} $  )Af!f$% ]6-%g!h'  !g '  !f '<#(ŠҠҠϠҠ'(.1Y}(7,3(18(2;,;A,?;,/]E6:.:BkB@A1]6<.hhh˩`1q}b  bTURBOb|ASSEMBLER|b| VER. IV |b|COPYRIGHT|b|J.FOSKETT|b|MARCH '98|bb%DOS SYSb)AUTORUN SYSb AUTORUN BASb#READER TURbASSEM4 TURbASSEM4 DOCbMACODE SRCb*TUTORIALSRC#ERROR SRC#RANGE SRC#UNREF SRC#0336?.(HHM@)hhL1U%6;.HЩ h@HЩh@U6>.(452"/!33%-",%26er)6by*o1r}hn&oskett2] 6. 67A&,. )67h,.06.76.?6 .G6.N6.U6.]6 .3@ 6.67,.1s}67h,.(62. 56276,. @627h,.24_6.FIRST BRACKET MISSING:6.LAST BRACKET MISSING_6.INCORRECT POSITIO1t}N FOR BRACKET5l,6.!ILLEGAL CHARACTERS FOUND IN LABELW6.$ILLEGAL CHARACTERS FOUND IN NUMERALSl69. Ġ DIRECTORY6n1u} 6.56.$ILLEGAL INDEX FUNCTION: USE X/Y ONLYI6. SYNTAX ERROR:n6.ONLY ONE CHARACTER AFTER COMMA7<6. Š 1v}EXIT46.<6.C8M/6.$TOO MANY LABEL BRANCHES, 250 MAXIMUMM6... RELOCATABLE STRING (9h61w}/.. DISK BASED FILEC61.Π EXITԠ CONTINUEh6=.(SOFTWARE CONTROL SELECTED):776.-BCC144BCS176BEQ2401x}BMI48BNE208BPL16BVC80BVS112;nn6.dADC AND ASL BCC BCS BEQ BIT BMI BNE BPL BRK BVC BVS CLC CLD CLI CLV CMP CPX CPY DEC DEX 1y}DEY EOR INC <rr67A,._INX INY JMP JSR LDA LDX LDY LSR NOP ORA PHA PHP PLA PLP ROL ROR RTI RTS SBC SEC SED SEI STA ST1z}X=//67A,. STY TAX TAY TSX TXA TXS TYA>?9C:;,A6@&-9C::,A?9C:>,AC?K 8f81{}AA6,8AFC:?,>8A`AK8A@l6-AvBBy$6@-$0B2wh<B2VfH1|}A#gTA1g`ARgl@hAV 6*-i6-P-(}PLEASE ENTER....V(#DRIVE NUMBER FOR USE (1 or 2) 1}}?>1B#AC%  )"AU%6-@IDI! @I)!@PA#(#f-P$76A-& DA1~}iAI(AES 6*-P-h=(#OVERRIDE ASSEMBLY ADDRESS (Y/N) ?>NC-fS( 9F: -6*#A6B-1}f$PC+"70(=: A2GPD6)-@)6*-HK -h*+(ENTER NEW ASSEMBLY ADDRESS >2-4K(DEFAULT TO PRE1}VIOUSI3P4$6-?:C:<,<B(,)PD3 A%J: 6-A:,"f)!B&-*0( : A)K 6-1}LU 6*-P-h*?(#OVERRIDE FIRST BASIC LINE (Y/N) ?>NF-4U( 9M3 -6*#APC$"7)(1}=3 A9N"PD6)-@$"6*-@OF -h*&(ENTER NEW LINE NUMBER >--4F(DEFAULT TO PREVIOUSP3P1}4$6-?:C:<,<B,)PD3 A2QJ 6-A:,)"f)!B )P:','6-@%*@( J A6R 6-1}SR 6*-P-4&( 9--hR( DISPLAY ASSEMBLY TABLE (Y/N) ?>YT6-@3*#Av$6B-g)PC01}"766-gUK 6)-6*--P-$(9+-h-K(WRITE WITH VERIFY (Y/N) ?>YVI-@(*#AV$6B-g)P1}CIA@%+"@,$WG 6)-6*-46-!6'-g(-h*G(SOURCE FILE NAME >DA:X# -4#(DEFAUL1}T: MACODE.SRCY%P6-X:< ,!f%67,.Z? 6.D :67h8AFBxE8H% D:ASSEM1}4.TURN DRIVE A4-fg@(2 CQqH]& P$f8f,8ABX>8AFBxE8H% D:ASSEM0TURBO ASSEMBLER VERSION IVWritten by John FoskettMarch 1997, updated March 1998INTRODUCTIONThe Turbo Assembler is a p5}rogramming utility designed specifically for writing machine code routines for use within BASIC programs and to this end, the5} output files are written directly into BASIC which avoids the usual problems of converting the conventional object code. The5} Turbo Assembler uses the standard 6502 assembly language mnemonics together with a few special non-standard features in orde5}r to ease the whole process of producing machine code routines for use within BASIC. CAPACITY OF THE TURBO ASSEMBLERThe Tu5}rbo Assembler can assemble an assembly language source code listing into a machine code file consisting of upto 15 pages or 35}840 bytes of code, enough for any machine code routine for use within a BASIC program. The Turbo Assembler accomodates upto 15}50 labels for addressing purposes with upto 250 label branching references and upto 100 defined labels. FEATURES OF THE TUR5}BO ASSEMBLERThe Turbo Assembler supports the use of either drive 1 or 2 for the assembly process which is selected at the ou5}tset from the initial screen. Although the assembly address of the assembled code and the first BASIC line number used for th5}e output files may be defined from within the source code, there is the provision to override them from the initial screen. T5}his has been included to ease the development of a BASIC program where a different assembly address for the machine code rout5}ine or different line numbers for the output files may be used without the need to amend the source code file. There are defa5}ult values which will automatically be used whenever these parameters are not defined within the source code. The option to5} display the assembly table is also selected from the initial screen which, if selected, will be displayed as the source code5} is read. The assembly table is displayed in the standard format showing the address where the opcode of each mnemonic and if5} relevant, its associated data will finally be stored. Considering that BASIC programmers are more familiar with decimal nume5}rology rather than with hexadecimal, the assembly table is displayed in decimal. Normally only instructions and labels are di5}splayed on screen during the assembly process, all other information in the source code such as comments like BASICs REMs and5} blank lines are ignored. A special feature has been included within the Turbo Assembler to allow comments to be displayed du5}ring assembly if required. USING THE TURBO ASSEMBLERTo assemble a source code file, proceed as follows....(1) Boot Turbo5} BASIC and run the file "ASSEM4.TUR" from this disk in the normal way or alternatively boot this disk with BASIC and select f5}rom the menu. When the Turbo Assembler is up and running, remove the disk from the drive and insert the disk containing the s5}ource code file to be assembled into either drive 1 or drive 2.(2) The first requirement is to enter the number of the driv5}e to be used for the assembly process which is achieved by pressing either '1' or '2' or RETURN to default to drive 1. (3) 5}The option to override the assembly address which may be defined within the source code is presented next which is achieved b5}y pressing 'N' or RETURN for No or by pressing 'Y' for Yes. Upon pressing 'Y' the new assembly address is prompted for. Only 5}numerals are enabled for entering the assembly address which must be greater than zero and be a maximum of 50000. Any entry o5}utside this range will be rejected. (4) The option to override the first BASIC line number used for the output files is pre5}sented next which may be defined within the source code. This is achieved by pressing 'N' or RETURN for No or by pressing 'Y'5} for Yes. Upon pressing 'Y' the new first BASIC line number will be prompted for. Only numerals are enabled for entering the 5}line number which must be greater than zero, be a maximum of 32000 and be a multiple of ten. Any entry outside this range wil5}l be rejected.(5) The option to display the assembly table is given next which is achieved by pressing 'Y' or RETURN for Ye5}s or by pressing 'N' for No. (6) The option to write the output files with or without verify is given next which is achieve5}d by pressing 'Y' or RETURN for Yes or by pressing 'N' for No.(7) Finally the file name of the source code to be assembled 5}is prompted for. Only normal file name characters are enabled, all others being disabled which includes the normal wild card 5}characters. The main part of the source codes file name is used for the file name of each of the output files, but each uses 5}a unique extension. A default file name of "MACODE.SRC" is available for convenience. (8) After the details have been enter5}ed on the initial screen, a small 2 option menu is presented from where ESCAPE is pressed to exit or RETURN to continue. Upon5} pressing RETURN, the source code is read and each instruction and label in the source code is printed on screen and thorough5}ly checked. Note that at any time whilst entering data as previously described, ESCAPE may be pressed to exit and that also5} at specified times, 'D' may be pressed to list the directory of the disk in the selected drive. Note that if the option to o5}verride the assembly address or the first BASIC line number is taken, then pressing RETURN to default when the new data is pr5}ompted for will return to the previous instruction as if the option to override the original data had not been taken. STOPP5}ING THE TURBO ASSEMBLERThe assembly process may be stopped at any time by pressing HELP after which a small 2 option menu is5} displayed where pressing START will allow the assembly process to continue or pressing OPTION will exit. The assembly proces5}s may also be temporarily stopped or paused by pressing SELECT, but the assembly process will recommence as soon as the key i5}s released. DISK I/O ERRORSAll disk I/O errors that may occur are displayed in English together with the normal error numb5}er and ESCAPE must be pressed to exit. Any error occurring whilst reading the source code will exit back to the initial scree5}n whilst any error occurring whilst writing the output files will exit back to the output file menu. INSTRUCTION SYNTAX ERR5}ORSAll syntax errors found in the source code whilst the source code is being read will be indicated on screen along with a 5}brief description of the error found. Whenever an error occurs, the assembly process is stopped and a small 2 option menu is 5}displayed giving the option to continue by pressing START or to exit by pressing OPTION. If START is pressed to continue, the5}n the menu is erased and assembly continues leaving the offending instruction or label on screen together with its error mess5}age, but they will of coarse scroll off the top of the screen in the normal way. Note that the syntax error messages may not 5}always be accurate since the Turbo Assembler cannot determine exactly what instruction was originally intended. Should at l5}east one syntax error be found in the source code, then the option to write the output files is not given and ESCAPE must be 5}pressed to exit. If no errors are found in the source code, then a full label check is performed checking for labels which ma5}y be unreferenced or for labels which may be out of range. If a label error is found in either case, then the last offending 5}label name found is displayed on screen. If no errors are found during the label check, then RETURN is pressed from the menu 5}to continue or ESCAPE to exit. Upon pressing RETURN, the output menu is displayed together with a full report on the assemble5}d source code. Pressing ESCAPE together with OPTION will exit from the output menu back to the initial screen. THE OUTPUT F5}ILESThere is a choice of seven different options for the output files, four of which are written directly into BASIC, two ar5}e written as disk based files for loading into a program during its initialising and for completeness, the standard object co5}de has been included. Each of the output files are selected from the menu by pressing a number key from 1 to 7. After an outp5}ut file has been selected and written to the disk currently in the selected drive, the option number on the menu is marked wi5}th an asterisk to show that the file has been written. All output files are written to disk in the LIST format. The followi5}ng details of the individual output files are based on the assembly address being 1536, the first BASIC line number being 5005}0, the REM header being "Machine Code" and the assembled code consisting of 200 bytes. Note that the Turbo Assembler puts as 5}much DATA as possible onto each BASIC line and that the REM header appears on a line number of one less than the first BASIC 5}line number selected. Note that where appropriate the variable and string names used in the following routines are the defaul5}t names. (1) ABSOLUTE MEMORY DEPENDENT CODE File name extension "ABS" 4999 REM Machine Code 5000 RESTORE 505}10:FOR I=0 TO 199: READ J:POKE 1536+I,J:NEXT I 5010 DATA .... 5020 DATA ....(2) RELOCATABLE MACHINE 5}CODE STRING File name extension "REL" 4999 REM Machine Code 5000 DIM C$(200):RESTORE 5010: FOR I=15} TO 200:READ J: C$(I)=CHR$(J):NEXT I 5010 DATA .... 5020 DATA .... (3) RELOCATABLE MACHINE CODE STRI5}NG File name extension "STR" 4999 REM Machine Code 5000 DIM C$(200) 5010 C$="......... 5020 C$(975})="..... 5030 C$(193)="....(4) DATA ONLY File name extension "DAT" 5010 DATA .... 5020 DATA .... Th5}e following two files (5 and 6) are disk based files which may be read from disk during a programs initialising by including 5}the following routines in the BASIC program. The routines demonstrate loading the file into absolute memory, but the file cou5}ld just as easily be loaded into a string. (5) DISK BASED FILE (WITHOUT HEADER) File name extension "DSK" OPEN #15},4,0,"D:FILENAME.DSK" FOR I=0 TO 199 GET #1,J POKE 1536+I,J NEXT I CLOSE #1(6) DISK BASED FIL5}E (WITH HEADER) File name extension "HED" OPEN #1,4,0,"D:FILENAME.HED" GET #1,A,B,C,D ADDRESS=A+256*B 5} BYTES=C+256*D FOR I=0 TO BYTES-1 GET #1,J POKE ADDRESS+I,J NEXT I CLOSE #1 (7) STANDARD 5}OBJECT FILE File name extension "OBJ"This is the standard object code, the file that an assembler normally writes. WR5}ITING THE SOURCE CODEThe Turbo Assembler uses the standard 6502 assembly language mnemonics along with a few non-standard in5}structions and labels. The source code listing is written using a standard word processor such as Textpro which is ideal for 5}this purpose. REMS AND BLANK LINESThe semi-colon (;) is used in a similar way to BASICs REM statement to allow comments an5}d spaces to be included in a source code listing. Everything that follows a semi-colon, including the semi-colon itself is ig5}nored by the Turbo Assembler and is not printed on the screen. The semi-colon may be used to begin a line or it may be used t5}o follow an instruction or a label, but there must be no spaces preceding it. A special REM character, the asterisk (*) has b5}een included within the Turbo Assembler which does allow comments and spaces to be printed on screen during assembly. The ast5}erisk itself is not printed on screen, only the comments or spaces that follow it. The asterisk can only be used to begin a l5}ine like the semi-colon, but it cannot be used to follow an instruction or a label.The maximum allowed length of a comment 5}either following a semi-colon or an asterisk is 127 characters, which is a little over three lines. If a comment is following5} an instruction or label, then the length of the instruction or label must be taken into account to ensure that the overall l5}ength does not exceed the maximum length stated. If the maximum length is exceeded, then the Turbo Assembler will error.Bla5}nk lines created by pressing RETURN (defaulted lines), are ignored by the Turbo Assembler which eliminates the need to use th5}e semi-colon to create blank lines. SPECIAL LABELSThe following seven special labels are used in a source code listing to 5}define specific parameters used in the output files. These special labels are used in the same way as normal defined labels, 5}that is placed against the left hand margin without any preceding spaces and with ONE space before and after the equates. Not5}e that the parameters are only required for some of the output files, therefore if any parameters are not required, then they5} can simply be ignored. LABEL NAME: "ADDR"This label is used to define the assembly address of the final machine code rout5}ine. The address defined must be greater than zero and have a maximum of 50000. If not defined within the source code listing5}, then the default assembly address of 1536 (Page 6) is assumed and this will be used instead. Note that it is important the 5}assembly address is defined before any jump instruction (JMP or JSR) is encountered in the source code listing. This label is5} used as follows.... ADDR = 15000This label is only optional for output files 1, 4, 5, 6 and 7. LABEL NAME: "LINE"This 5}label is used to define the first BASIC line number to be used for the output files. If this is not defined in the source cod5}e, then the default line number of 10000 will be used instead. The line number must be greater than zero, be a maximum of 3205}00 and be a multiple of 10. This label is used as follows.... LINE = 20000This label is only required for output files 1, 5}2, 3 and 4. LABEL NAME: "STEP"This label defines the increment of the line numbers used for the output files and must be i6}n the range of 1 to 10. If not defined within the source code, then the line numbers will increment in multiples of 10 in the6} normal way. This label is used as follows.... STEP = 2This label is only required for output files 1, 2, 3 and 4. LABEL6} NAMES: "VAR1 and VAR2"These two labels are used to define the single character variables used in the FOR-NEXT loops of the 6}output files. Any uppercase letter may be used for each variable, but they must be different. If these two variables are not 6}defined within the source code then the default variables I and J will be used instead. VAR1 defaults to I which is used in t6}he FOR instruction and VAR2 defaults to J used in the READ instruction. Note that quotes are not required when defining these6} variables. The labels are used as follows.... VAR1 = A VAR2 = BThese two labels are only required for output files 1 an6}d 2. LABEL NAME: "STRG"This label is used to define the string name used in the output files and may consist of upto 5 cha6}racters in length. The string may contain any combination of uppercase letters and numerals, but it must begin with a letter.6 } The dollar ($) is optional and does not effect the maximum length of the string, therefore if used, the string length effect6 }ively becomes 6 characters maximum. If the string name is not defined within the source code, then the default string C$ is u6 }sed instead. This label is used as follows.... STRG = ERASE$This label is only required for output files 2 and 3. LABEL 6 }NAME: "HEAD"This label is used to define the REM header used to head the output files. The REM header may consist of upto 106 }0 characters in any combination. If this is not defined within the source code, then the default REM header of "Machine Code 6}Routine" (in inverse) will be used instead. If this label is equated to "NONE", then the output files will be written without6} a REM header. Note that quotes are NOT required when defining the string of characters. This label is used as follows.... 6}HEAD = VBI Routineor for no REM header.... HEAD = NONEThis label is only required for output files 1, 2 and 3. THE SOUR6}CE CODE FILES ON THIS DISKExamine the following source code files with a word processor and also study them during the assem6}bly process.MACODE.SRC (Default file name)This source code listing is for test purposes only, the file is only a collectio6}n of instructions and labels intended to test the Turbo Assembler. The listing will assemble in the normal way and is the bas6}is for the following four source code files.... TUTORIAL.SRCAssembly language programming tutorial.ERROR.SRCDemonstrates6} instruction syntax errors.RANGE.SRCDemonstrates labels out of range error.UNREF.SRCDemonstrates unreferenced labels erro6}r. HIS DOCUMENTThis instruction document file is stored on the disk using the file name "ASSEM4.DOC". For convenience, th6}Te file does not contain any specific control codes relevant to any particular word processor. The file may be loaded into any6} word processor, edited if required and printed out in the normal way or it may be read on screen or downloaded to a printer 6}using menu option 1 from the title screen.nted out in the normal way or it may be read on screen or downloaded to a printer 4+*ԠŠŠǠ**ŠӠPURPLE = 33024YELLOW = 10020BLACK = 1024WHITE = 707BROWN = 42038GREEN = :}35486MAUVE = 1192BLUE = 22PINK = 128GREY = 4*Š̠ӠADDR = 15000LINE = 2000STEP = 5VAR1 = AVAR2 = B:}STRG = TEST$HEAD = 堛*------------------ PLA LDA #PINK STA PURPLE STA 203 INC BLACK LDA BLACK CMP #32:} BEQ LINDA CMP #GREY BEQ SUSANANGELA LDX #BLUE LDY #0 INX CPX YELLOW BPL ANGELA JSR BRENDALINDA CLV LDY #44SUSAN:} SED LDX #GREYJENNIFER CPX 4531 BMI SUSAN BEQ LINDA DEY CPY #PINK BEQ JENNIFER DEX CPX #PINK BEQ LYNN JMP (20553:})LYNN JSR DENISE LDX #0 LDY #0GAYNOR LDA BROWN,X STA BLACK,Y INY BNE GAYNOR BCC CAROL JSR LOUISECAROL LDA 21030: } AND #16 ROR YELLOW ROL 4721 ROR A BIT BLACK TXS STA 32234 CMP PINK BEQ WENDY BVS KATHY JMP PURPLEKATHY LDX PINK:!} CPX GREY BNE KATHY BCS CAROLMARIE LDX #0MARY LDA (GREY),Y AND #PINKWENDY BIT GREY STA 45442,X INX BNE MARY TSX:"} INY BNE MARIETINA LDA WHITE,X ASL PURPLE ASL A LDA (200,X) STA 43312 CMP #255 BCC LOUISE BEQ MARIE TAX INX INX:#} CPX BROWN BEQ TINA BPL ANITA LDA 43213,Y STA 443ANITA TXA TAY INY CPY #127 BPL ANITA RTSLOUISE LDA #33 STA 456:$}32 STA 43224 STA 34431 LDX BLUE INX STX PINK CPX WHITE BNE LOUISE NOP NOP NOP LDA WHITE CLC ADC #32 LDY 6332 C:%}PY BLUE BNE EMMA INYEMMA LDX #PINK DEY BVC EMMA RTSDENISE LDA MAUVE SEC SBC #64 LDX #0 LDY #0DEBBY LDA 24338,Y:&} STA 22133,X BRK INY CPY #PINK BMI DEBBY INX CPX #64 BNE DEBBY TAX RTSBRENDA ROL A ORA #7 CMP #PINK BEQ BARBAR:'}A ROL A CMP #PINK BEQ HELEN ROL A CMP #PINK BEQ SALLY PHPNORMA LSR GREEN LSR A LDA GREEN ORA #48 CMP 55312 BEQ :(}NORMA TYABARBARA LDX #PINKHELEN LDA BROWN ROR A DEC 33442 STA 550 LDX 33419 STX 33122 CPX #33 BPL HELEN CLD TYA:)}SALLY LDX GREY TXA PHA ROR A ROR A SEI EOR MAUVE CLI LDA #0 STA 2331 ROR A CMP MAUVE BEQ NORMA PLP RTID TYA8w* ŠŠ̠Ǡ** <<<< PRESS Ԡ TO HOLD >>>>**This is a tutorial listing containing*instru>+}ctions about using the standard*6502 assembly language mnemomics.**Examine this source code listing with*a word process>,}or to find out how it*is configured.**This tutorial source code listing was*written using Textpro version 1.2,*but the>-} Page 6 Writer word processor*works equally well. Unfortunately the*Mini-Office II word processor cannot*be used as a text>.} editor because of*the configuration data that it places*at the beginning of a document.**Although this file contains a>/} lot of*text, it can be assembled and the*output files can be written. Also on*this disk are four other source files*as f>0}ollows....**MACODE.SRC*The source code which forms the basis*of this tutorial and the following 3*error demonstration f>1}iles.**ERROR.SRC: Instruction syntax errors.*RANGE.SRC: Labels out of range error.*UNREF.SRC: Unreferenced label error.>2}**The names of colours are used for*defined labels in this listing and*girls names are used for addressing.**The sem>3}i-colon is used in a similar*way to the "REM" statement to allow*comments and spaces to be included in*a source code listi>4}ng. Everything*that follows a semi-colon is ignored*by the Turbo Assembler and is not*printed on screen. The semi-colon RE>5}M*may be used to begin a line or used*to follow an instruction or a label*but there must be no spaces preceding*it.**>6}Blank lines created by pressing the*RETURN key (defaulted lines) are*ignored by the Turbo Assembler which*allows groups of>7} code to be seperated*to make the code easier to read.**A special REM character, the asterisk*has been included within >8}the Turbo*Assembler which does allow comments*and spaces to be printed on screen*during assembly. The asterisk itself*is >9}not printed on screen, only the*comments (or space) that follows it.*It can only be used to begin a line*like the semi-col>:}on, but it cannot be*used to follow an instruction or a*label. These blocks of text are being*printed on screen due to the>;} use of*the asterisk.**The maximum length of a comment is 3*lines, which includes an instruction*if the comments are f><}ollowing one.*More than three lines will cause the*Turbo Assembler to lock up.**Ӡ*All labels whether they are u>=}sed for*defining or adressing may consist of*any combination of upper case letters*and numerals but they must begin with*>>}a letter. A label must have a maximum*length of eight characters.**The same label name may be used for*both a defined l>?}abel and an address*label within the same source code*listing and although legal, this may*prove confusing.**Š>@}Ӡ*PURPLE = 33024**Defining a label is achieved as shown*above with the label against the left*hand margin with no >A}preceding spaces.*There must be a single space on both*sides of the equals sign and RETURN*must terminate it. The only cha>B}racter*which can follow the expression is*the previously mentioned semi-colon.**Once defined, a label may be used*though>C}out a listing to represent the*number to which it has been defined,*either as a number or as an address.*The rest of the l>D}abel definitions*follow....*YELLOW = 10020BLACK = 1024WHITE = 707BROWN = 42038GREEN = 35486MAUVE = 1192BLUE = 22PI>E}NK = 128GREY = 4**The following 7 labels are special*labels that are used to configure the*Turbo Assemblers output fil>F}es and are*defined in the same way as the labels*above. For details about using these*special labels, see the document fil>G}e*"ASSEM4.DOC" on this disk or select*option 2 from this disks menu.*ADDR = 15000LINE = 2000STEP = 5VAR1 = AVAR2 = B>H}STRG = TEST$HEAD = 堛***ŠŠŠӠŠ**Note that all instructions are typed*with ONE pr>I}eceding space.*** ASSEMBLY TABLE* -----------------* PLA**This means "ul ccum>J}ulator" and is*also refered to as "Pop" accumulator.*It is used to remove the last address*stored on the stack and place i>K}t into*the accumulator.*This form of addressing where the*instruction is used by itself without*any associated data is r>L}efered to as*implied addressing.*** LDA #PINK**This means "oa ccumulator" with*the number represented by the label>M}*PINK. The hash (#) indicates that the*numerals (or label) that follows is a*number in the range of 0 to 255. This*form o>N}f addressing where numbers are*referenced directly as indicated by*the hash sign is known as immediate*addressing.*** >O}STA PURPLE**This means "tore ccumulator" and*is used to store the contents of the*accumulator in the address which is>P}*represented by the label PURPLE. This*form of addressing is refered to as*absolute addressing.*** STA 203**This is t>Q}he same as the instruction*above with the exception that the*address referenced is quoted directly*in numerals.**Since t>R}he contents of the accumulator*is not in any way changed by the use*of this instruction, it may be used*as many times as n>S}ecessary. In this*case, the same value as above will be*stored in memory location 203.*** INC BLACK**This means "r>T}ement address" and is*used to increment the contents of the*address referenced (in this case by*by the label BLACK) by one>U} (add 1).*Should the address contain 255, then*the address will be returned to zero.*** LDA BLACK**This is the same a>V}s above with the*exception that the accumulator is*loaded from the address represented*the label BLACK.*** CMP #32**>W}This means "oare accumulator" with*the specified data, in this case to*the number 32.**Note that the results obtained >X}from*any compare instruction is discarded*and that all addresses and registers*referenced remain unchanged.*** BEQ LIN>Y}DA**This means "ranch if ual", to zero*and is used to check the last result*and if zero, the instruction branches*to >Z}the label, but if not, the next*instruction in sequence is actioned.*This form of addressing is refered to*as relative add>[}ressing.**Branching must be within the range of*-128 to +127 from the address of the*branching instruction plus one, that>\}*is 128 bytes up the listing or 127*down.**In this case the last result is that*obtained from CMP instruction above*and>]} therefore branching to the label*would only take place if the contents*of the accumulator is equal to the*number 32.**>^}* CMP #GREY BEQ SUSAN***ANGELA**The above is a label which is used to*reference an address in the source*code. Thes>_}e labels are referenced by*the branching instructions such as by*the BEQ instruction above. They can*also be referenced by>`} the JSR and the*JMP instructions (described later).*** LDX #BLUE**This means "oa register" with the*number repre>a}sented by the label BLUE.*** LDY #0**This means "oa register" with the*number zero.*** INX**This means "cr>b}ement register" by*one (add 1). If the contents of this*register is 255, then the X register*will be returned to zero.*>c}** CPX YELLOW**This means "omare register" with*the contents of the address which is*represented by the label YELL>d}OW.*** BPL ANGELA**This means "ranch on us" which is*used to branch to the label if the*last result is positive.*>e}** JSR BRENDA**This means "ump uboutine", used in*the same way as a GOSUB command to*action a subroutine, in this e>f}xample,*to action a subroutine named BRENDA.***LINDA*** CLV**This means "ear oerflow".*** LDY #44SUSAN**>g}* SED**This means "t ecimal flag" after*which the instructions ADC and SBC*will be actioned in BCD (binary coded*de>h}=T__ *** BMI SUSAN**This means "ranch on nus" and will*branch to the label SUSAN if the last*result (from CPX above) is >j}negative*or minus.*** BEQ LINDA*** DEY**This means "crement register" and*will decrement the Y register by on>k}e*(subtract 1). If the contents of this*register is zero, then it will become*255.*** CPY #PINK**This means "omare>l} register" with*the number represented by the label.*** BEQ JENNIFER*** DEX**This means "crement register" b>m}y*one (subtract 1). If the contents of*the Y register is zero, then it will*become 255.*** CPX #PINK BEQ LYNN*** >n}=N__ s*being used. Indirection means that*the address being JUMPed to will be*that contained in the address stated*together wi>p}th the next byte. JMP is*the only instruction which allows the*use of straight indirection.***LYNN JSR DENISE LDX #0>q} LDY #0GAYNOR*** LDA BROWN,X**This means "oa ccumulator" with*the contents of the address which is*represented by>r} the label BROWN added*to the contents of the X register.*The label BROWN is defined as 42038*so that the actual address t>s}hat the*accumulator is loaded from will be*dependent upon the value contained in*the X register. Therefore if the X*regis>t}ter contains a zero, then the*address loaded into the accumulator*would be 42038, but if the X register*contains a one, th>u}en the address will*be 42039, for a two, 42040, etc. This*form of addressing is refered to as*absolute indexed addressing.>v}*** STA BLACK,Y**This is the same form of addressing*as above but with the exception that*the Y register is used inst>w}ead.*** INY**This means "crement register" by*one (add 1). If the register contains*255 then it will be returned >x}to zero.*** BNE GAYNOR BCC CAROL JSR LOUISECAROL LDA 21030*** AND #16**This means " accumulator" which*will>y} perform a logical AND operation*between the accumulator and the data.*In this case, to the number sixteen*which would for>z}ce all but the fifth*bit of the accumulator to zero and so*alter the contents accordingly such*that the accumulator can co>{}ntain only*a zero or the number 16.*** ROR YELLOW**This means "tate ight" the address*represented by the label YEL>|}LOW. This*means that all the bits contained in*the stated address are moved to the*right by one place and the bit from*th>}}e lowest significant position being*transfered into the position of the*highest significant bit.*** ROL 4721**This me>~}ans "tate eft" the address*4721 similarly to the instruction ROR*above, but in the opposite direction.*In this case, th>}e highest significant*bit is transfered into the position*of the lowest significant bit.*** ROR A**This again means ">}tate ight", but*the letter A indicates that it is to*be performed upon the accumulator. In*this case the carry flag is >}used as a*ninth bit and will receive the lowest*significant bit whilst the original*contents of the carry flag will be*tr>}ansfered into the position of the*highest significant bit.*** BIT BLACK**This means " accumulator" and will*perfor>}m a logical AND operation upon*the accumulator together with the*associated address, in this case with*the contents of the>} address which is*represented by the label BLACK. The*result is discarded and contents of*the accumulator and the referenc>}ed*address remain unchanged. The result*of this operation is indicated by the*zero flag (which is contained in the*status>} register). If the zero flag is*equal to one, then the match fails,*but if the result is equal to zero,*then the contents >}of the accumulator*and that of the specified address are*equal.*** TXS**This means "ransfer register to*the tack>} pointer"*** STA 32234 CMP PINK BEQ WENDY*** BVS KATHY**This means "ranch on oerflow et"*and will branch to t>}he label if the*overflow flag is set to one.*** JMP PURPLE**This means "u to address" and will*JUMP to that specif>}ied, in this case*to that represented by the label.***KATHY LDX PINK CPX GREY BNE KATHY*** BCS CAROL**This mean>}s "ranch on arry et" and*will branch to the label if the carry*flag is set to one.***MARIE LDX #0MARY*** LDA (>}GREY),Y**This form of addressing is known as*indirect indexed addressing indicated*by enclosing the label (or numerals)*>}in brackets. Only a zero page address*and the Y register can be used. The*zero page address stated together*with the next >}memory location gives*an address to which the contents of*the Y register is added in order to*give a further address from >}which the*accumulator is loaded.*** AND #PINKWENDY BIT GREY*** STA 45442,X**This is absolute indexed addressing>}*where the contents of the accumulator*is stored in the address specified by*the numerals added to the contents of*the X r>}egister. For example, in the*above case, should the X register*contain a one, then the address into*which the contents of >}the accumulator*is stored would be 45443.*** INX BNE MARY*** TSX**This means "ransfer tack pointer to*the re>}gister"*** INY BNE MARIETINA*** LDA WHITE,X**This instruction is similar to that*of STA above with the exception>} that*the accumulator will be loaded from*the address specified by the label*(or numerals) added to the contents*of the X>} register.*** ASL PURPLE**This means "rithmetic hift eft"*and will shift the contents of the*stated address to the>} left by one*position. The lowest significant bit*is set to zero.*** ASL A**This is identical to the above except*th>}at the function is performed on the*accumulator.*** LDA (200,X)**This form of addressing is refered to*as indexed ind>}irect addressing shown*by enclosing the whole expression in*brackets. In this form of addressing,*the contents of the X re>}gister is*added to the address stated in the*expression and it together with the*next memory location gives the final*add>}ress where the data for loading*into the accumulator is to be found.*Only a zero page address can be used*and only the X r>}egister in this form*of addressing.*** STA 43312 CMP #255 BCC LOUISE BEQ MARIE*** TAX**This means "ransfer cc>}umulator into* register". The accumulator remains*unchanged.*** INX INX CPX BROWN BEQ TINA BPL ANITA*** LDA 43>}213,Y**This is absolute indexed addressing*as previously stated but with the*exception that the Y register is used*inste>}ad.*** STA 443ANITA*** TXA**This means "ransfer register into*ccumulator". The X register remains*unchanged.>}*** TAY**This means "ransfer ccumulator to ٛ*register". The accumulator remains*unchanged.*** INY CPY #127 BP>}L ANITA*** RTS**This means "eurn from unroutine"*and is used to terminate a subroutine*in the same way as RETURN i>}s used.***LOUISE LDA #33 STA 45632 STA 43224 STA 34431 LDX BLUE INX STX PINK CPX WHITE BNE LOUISE NOP NOP**>}* NOP**This means "o eration". This does*nothing but incorporates a time delay*of approximately 2 machine cycles.**>}* LDA WHITE*** CLC**This means "ear arry" and is used*to reset the carry flag to zero to*allow addition without >}a carry to be*performed.*** ADC #32**This means "d with arry" and will*add the specified data (in this case*the n>}umber 32) to the contents of the*accumulator and the result will be*placed in the accumulator. Should the*result be greate>}r than 255, then the*carry flag will be set.*** LDY 6332 CPY BLUE BNE EMMA INYEMMA LDX #PINK DEY BVC EMMA RTS*->}---------DENISE LDA MAUVE*** SEC**This means "t arry" and is used to*set the carry flag to one prior to*perf>}orming a subtraction.*** SBC #64**This means "utract with arry" and*is used to subtract the stated data*(in this c>}ase the number 64) from the*contents of the accumulator and the*result is placed in the accumulator.*** LDX #0 LDY #0>}DEBBY LDA 24338,Y STA 22133,X*** BRK**This means "ea" and is basically*a software interrupt.*** INY CPY #PIN>}K BMI DEBBY INX CPX #64 BNE DEBBY TAX RTS*----------BRENDA ROL A ORA #7 CMP #PINK BEQ BARBARA ROL A CMP #PI>}NK BEQ HELEN ROL A CMP #PINK BEQ SALLY*** PHP**This means "us rocessor" which is*used to store the contents of >}the*status register on the stack.***NORMA*** LSR GREEN**This means "ogical hift ight" and*shifts all the bits >}of the specified*address to the right by one position.*The most significant bit is set to*zero.*** LSR A**This is id>}entical to the above with*the exception that the function is*performed upon the accumulator.*** LDA GREEN*** ORA #4>}8**This means " ccumulator" and will*perform a logical OR operation upon*all the bits of the accumulator with*the ass>}ociated data, in this case, to*the number 48. This instruction can*be used to force certain bits of the*accumultor to be s>}et to one.*** CMP 55312 BEQ NORMA*** TYA**This means "ransfer register to*ccumulator". The Y register remains>}*unchanged.***BARBARA LDX #PINKHELEN LDA BROWN ROR A*** DEC 33442**This means "rement address" by one*(sub>}tract 1). If the stated address*contains a zero, then the result will*be 255.*** STA 550 LDX 33419 STX 33122 CPX #33>} BPL HELEN*** CLD**This means "ear ecimal flag" and*will allow ADC and SBC operations to*be performed in binary.>}*** TYA**This means "ransfer register to*ccumulator". The Y register remains*unchanged.***SALLY LDX GREY TXA>}*** PHA**This means "us ccumulator" and is*used for storing the contents of the*accumulator on the stack.**In th>}is case, the instruction follows*a TXA instruction which transfers the*contents of the X register into the*accumulator and>} therefore these two*instructions combined (TXA and PHA)*stores the contents of the X register*on the stack.*** ROR A>} ROR A*** SEI**This means "t nterrupt" and once*set (to 1), will disable interrupts.*** EOR MAUVE**This means>} "xclusive " which will*perform a logical ExOR operation*between the accumulator and the data,*in this case, an address>}. The only*difference between the exclusive OR*function and the normal OR function*is that in the case of the normal OR*f>}unction "1 or 1 = 1", but in the EOR*(Exclusive OR) function "1 or 1 = 0".*** CLI**This means "ear nterrupt" and wh>}en*the interrupt flag is reset to zero,*interrupts are enabled.*** LDA #0 STA 2331 ROR A CMP MAUVE BEQ NORMA***>} PLP**This means "ul rocessor" and is*also refered to as "pop processor".*This instruction is used to remove*the last>} address stored on the stack*and load it into the status register.*** RTI**This means "eurn from nterrupt"*which i>}s used to terminate interrupt*routines in the same way as the RTS*instruction is used to terminate a*subroutine.*which i<t*ԠŠŠǠ*ΠؠӠ*PURPLE = 33024YELLOW =10020;--------BLACK = 1024WHITEB} = 707BROWN = 42038GREEN = 35486MAUVE= 1192;----------BLUE = 2202PINK = 128GREY = 4*ADDR = 15000LINE = 200B}2;----------STEP = 5VAR1 = AVAR2 = 6;-------------STRG = TEST$HEAD = 堛* PLA LDA #PINK B}STA PURPLE STA 203 ;This is a comment INC BLACK LDA BLACK CMP #32 BEQ LINDA CMP # GREY;---- BEQ SUSANANGELA LB}DS #BLUE;----- LDY #0 INX CPX YELLOW BPL ADDR;------ JSRBRENDA;-----LINDA CLN;-----------B} LDY #44SUSAN SED LDX #GREYJENNIFER CPX 45A1;------ BMN SUSAN;----- BEQ LINDAELIZABETH;------ DB}EY CPU #PINK;----- BEQ JENNIFER DEX CPX A;--------- BEQ LYNN JMP (20553)LYNN JSR DENISE LDX #WHITE;---B}- LDY #0GAYNOR LDA BROWN,Z;--- STA BLACK,Y IN;------------ BNE GAYNOR BCC CAROL JSR LOUISECAROLB} LDA 21030 ASL A ASLA;---------- AND #16 ROR YELLOW ROL 4721 ROR A BIT BL&CK;----- TXS LDA (PINK,Y);-B}- CMP #121 BEQ CAROL STA 32X34;----- CMP PINK BEQ WE$DY;----- BVS KATHY JMP PURPLEKATHY LDX A;-B}-------- CPX GREY BNE KATHY BCS CAROLMARIE LDX#0;---------MARY LDA (GREY),X;-- AND #PINKWENDY B}BIT GREY STA 45442,X INX BNE MARY;----- TSX INY BNE MARIETINA LDX (BLUE;----- LDA WHITE,X ASL PURPLEB} ASL A LDA 200,X);---- STA 43312 CMP #255 BCC LOUISE BEQ MARIE TAX IMX;----------- INX CPX BROWN BEQB} TINA BPL ANITA LDA 43213,Y STA 99943;-----ANITA TXA TAY #33;------- INY CPY #127 BPL ANITA RTSLOUISB}E LDA #33 STA 45632 STA #24;------- STA 34431 LDX (GREY);---- LDX BLUE INX ATX PINK;------ CPX B}WHITE BNE LOUISE NOP NQP;----------- NOP LDA WHITE CLC ADC (#32);----- LDY 6332 CPY;-----------B} BNE EMMA INYEMMA LDX #PINK DEY BWC EMMA;------ RTSDENISE LDA MAUVE SEC SBC #64 LDX #1000;----- LDB}Y #0DEBBY LDA 24338,Y STA 22133 ,X;-- BRK INY CPY #PINK BMI DEBBY INX CPX #64;------ BNE DEBBY TAX B}DEBBY;----- RTSBRENDA ROL A ORA #7 CMP A;--------- BEQ BARBARA ROL A CMP #PINK BEQ HELEN ROL A;-----B}--- CMP #PINK BEQ SALLY PHPNORMA LSR GREEN LSR A LDA GREEN, Y;-- ORA #48 CMP NORMA;----- BEQ NB}ORMA TYABARBARA LDX #PINKHELEN LDA BROWN ROR A DEC #PINK;----- STA 550 LDX 63419;----- STX 33122 CPXB} #33 BPL #12;------- CLD TYASALLY LDX GREY;----- TXA PHA JSR #54;------- ROR A ROR A SEI 12B}22;------ EOR MAUVE CLILDA #0;--------- STA 2331 ROR A CMP MAUVE B EQ NORMA;---- PLP RTISEI 12@w*ԠŠŠǠ*̠ԠƠŠҠ**ŠӠPURPLE = 33024YELLOW = 10020BLACK = 1024WHITE F}= 707BROWN = 42038GREEN = 35486MAUVE = 1192BLUE = 22PINK = 128GREY = 4*Š̠ӠADDR = 15000LINE = 200F}0STEP = 5VAR1 = AVAR2 = BSTRG = TEST$HEAD = 堛*------------------ PLA LDA #PINK STA PURPLE STA 203 INF}C BLACK LDA BLACK CMP #32 BEQ LINDA CMP #GREY BEQ SUSANANGELA LDX #BLUE LDY #0 INX CPX YELLOW BPL ANGELA JSR BRENF}DALINDA CLV LDY #44SUSAN SED LDX #GREYJENNIFER CPX 4531 BMI SUSAN BEQ LINDA DEY CPY #PINK BEQ JENNIFER DEX CPXF} #PINK BEQ LYNN JMP (20553)LYNN JSR DENISE LDX #0 LDY #0GAYNOR LDA BROWN,X STA BLACK,Y INY BNE GAYNOR BCC CAROL F}JSR LOUISECAROL LDA 21030 AND #16 ROR YELLOW ROL 4721 ROR A BIT BLACK TXS STA 32234 CMP PINK BEQ WENDY BVS KATHYF} JMP PURPLEKATHY LDX PINK CPX GREY BNE KATHY BCS CAROLMARIE LDX #0MARY LDA (GREY),Y AND #PINKWENDY BIT GREY STA F}45442,X INX BNE MARY TSX INY BNE MARIETINA LDA WHITE,X ASL PURPLE ASL A LDA (200,X) STA 43312 CMP #255 BCC LOUISF}E BEQ MARIE TAX INX INX CPX BROWN BEQ TINA BPL ANITA LDA 43213,Y STA 443ANITA TXA TAY INY CPY #127 BPL ANITA F}RTSLOUISE LDA #33 STA 45632 STA 43224 STA 34431 LDX BLUE INX STX PINK CPX WHITE BNE LOUISE NOP NOP NOP LDA WHITF}E CLC ADC #32 LDY 6332 CPY BLUE BNE EMMA INYEMMA LDX #PINK DEY BVC EMMA RTSDENISE LDA MAUVE SEC SBC #64 LDX #F}0 LDY #0DEBBY LDA 24338,Y STA 22133,X BRK INY CPY #PINK BMI DEBBY INX CPX #64 BNE DEBBY TAX RTSBRENDA ROL A OF}RA #7 CMP #PINK BEQ BARBARA ROL A CMP #PINK BEQ HELEN ROL A CMP #PINK BEQ SALLY PHPNORMA LSR GREEN LSR A LDA GREF}EN ORA #48 CMP 55312 BEQ NORMA TYABARBARA LDX #PINKHELEN LDA BROWN ROR A DEC 33442 STA 550 LDX 33419 STX 33122 F}CPX #33 BPL HELEN CLD TYASALLY LDX GREY TXA BEQ LINDA PHA ROR A ROR A SEI EOR MAUVE CLI LDA #0 STA 2331 ROR AF} CMP MAUVE BEQ NORMA PLP RTIY LDX GREY TXA BEQ LINDA PHA ROR A ROR A SEI EOR MAUVE CLI LDA #0 STA 2331 ROR AD!*ԠŠŠǠ*Ġ̠Ҡ**ŠӠPURPLE = 33024YELLOW = 10020BLACK = 1024WHITE J}= 707BROWN = 42038GREEN = 35486MAUVE = 1192BLUE = 22PINK = 128GREY = 4*Š̠ӠADDR = 15000LINE = 200J}0STEP = 5VAR1 = AVAR2 = BSTRG = TEST$HEAD = 堛*------------------ PLA LDA #PINK STA PURPLE STA 203 INJ}C BLACK LDA BLACK CMP #32 BEQ LINDA CMP #GREY BEQ SUSAN LDX #BLUE LDY #0 INX CPX YELLOW BPL ANGELA JSR BRENDALINDJ}A CLV LDY #44SUSAN SED LDX #GREYJENNIFER CPX 4531 BMI SUSAN BEQ LINDA DEY CPY #PINK BEQ JENNIFER DEX CPX #PINKJ} BEQ LYNN JMP (20553)LYNN JSR DENISE LDX #0 LDY #0GAYNOR LDA BROWN,X STA BLACK,Y INY BNE GAYNOR BCC CAROL JSR LOUJ}ISECAROL LDA 21030 AND #16 ROR YELLOW ROL 4721 ROR A BIT BLACK TXS STA 32234 CMP PINK BEQ WENDY BVS KATHY JMP PUJ}RPLEKATHY LDX PINK CPX GREY BNE KATHY BCS CAROLMARIE LDX #0MARY LDA (GREY),Y AND #PINKWENDY BIT GREY STA 45442,XJ} INX BNE MARY TSX INY BNE MARIETINA LDA WHITE,X ASL PURPLE ASL A LDA (200,X) STA 43312 CMP #255 BCC LOUISE BEQ J}MARIE TAX INX INX CPX BROWN BEQ TINA BPL ANITA LDA 43213,Y STA 443 TXA TAY INY CPY #127 BPL ANITA RTSLOUISE LJ}DA #33 STA 45632 STA 43224 STA 34431 LDX BLUE INX STX PINK CPX WHITE BNE LOUISE NOP NOP NOP LDA WHITE CLC ADC #J}32 LDY 6332 CPY BLUE BNE EMMA INYEMMA LDX #PINK DEY BVC EMMA RTSDENISE LDA MAUVE SEC SBC #64 LDX #0 LDY #0DEBJ}BY LDA 24338,Y STA 22133,X BRK INY CPY #PINK BMI DEBBY INX CPX #64 BNE DEBBY TAX RTSBRENDA ROL A ORA #7 CMP #PJ}INK BEQ BARBARA ROL A CMP #PINK BEQ HELEN ROL A CMP #PINK BEQ SALLY PHPNORMA LSR GREEN LSR A LDA GREEN ORA #48 J}CMP 55312 BEQ NORMA TYABARBARA LDX #PINKHELEN LDA BROWN ROR A DEC 33442 STA 550 LDX 33419 STX 33122 CPX #33 BPL J}HELEN CLD TYASALLY LDX GREY TXA PHA ROR A ROR A SEI EOR MAUVE CLI LDA #0 STA 2331 ROR A CMP MAUVE BEQ NORMA J}PLP RTID TYASALLY LDX GREY TXA PHA ROR A ROR A SEI EOR MAUVE CLI LDA #0 STA 2331 ROR A CMP MAUVE BEQ NORMA H E SECTORS800 0 8 00`,0'D800 H,ɛh`2L1NEED D1 THRU D8 uP J;&R)n$'.qj,2010TEST$(97)="}ŀpLܢ)$ ȍ0ܪ6ͨ`!@R}ب蛛2015TEST$(193)="i ȢP`8@_uV0@`* ɀ*ɀ*ɀ(NJ 0򘢀6R}2020TEST$(289)="j΢&b!ؘHjjxMX jͨ(@@_uV0@`* ɀ*ɀ*ɀ(NJ 0򘢀6P=