#ML }  X c0C)HCCH Mhhݩh `eCDiCD`  RyHP   * 1H0芢@) Y0.Ș`+]#(PMR\ \b Pgi 0  % @ / ՠ`d   0DDԝLȀ}N@  )?HI Y0`HIJH) * J j * hJJJ )HJ h i     } YS S0 i`΢ϣ߳H J3xj2h} 1 |9 ӭ45(420 * (0241өX.`  R *i)Lvw  ~*P}E 5 LN(G E  r s k rsrL ( E LO(0d( L iE0O +)$IC  H S8 }q p h   j 8no CDLQ CFl M  LO Ri)Llk2'")*F }$F$F$F$F$ 5 )ШF/Șl]kpqС,LQ/A! Ti)Zlk@ ܬ/i)(")")k }$F$F$F 5$/L /lF@jj(LNkle$$%8(k()` R 8 ELO Ri)^>jf | NrC s } ) vw5g   enfo Glvw LQ@iLm>j FL ~Jjjjii p qEh }jlrs`LQ:$ȱ$@+[_#{ 8  Խut! ai 8   E I   ] C } H h    ˰ 8  N   Lm E  ,  [ `LQ ,/ 8 ~/  Ơ? ѩ}/  [ /Lj0?MoLn FjMqLp NklLOLQnLoMlNLO R"(+}ըHH`Q R!!  % !   / .   FȑF! /GF \H"+0+* }! F tLQnm: J~nTF1F  *n+)5! n (, n)1JJJn(n*o} I ,0  ci a oF? @ , 8,0 ʩ0H Eh   i}  D ]DmmFLQvtu`*&!*@h ] 0 ^0` c 0l$$%}()()%*&J%H,@hH hH@,h $% 8i8$(%)0hhH ]h`() c 0H c 0 h}`hhh&JJ ](ll  LQ0  /qnoHH 9 9 H H  I9  9 } Nd EH  Q8 o n  FnoL HII/ Ih8`h`Lnon`no`u F }E VEhLO/luF l0BF/lɜɛ׽hE N  b VFL FREE SECTORS C} H) *Fh ):FȽ F FC IH' 0 d  i:Fȩ/F.l`CD/08HDIC}IHȰ/F`ȱ$>.+.i ȱ$:刄H !A \ Hȱ$*?ȝ 2. ? [_{ ,0}-:) 0$:>WI  IТ,LQH  0hLd ~ t u`C ?( 0(C.` E } R =! .ti S0N EE D XC )0')AY  )ע ? 0E088FG \o}n  (HhLcL3 iJ i Lqp 0=rspnqopqlk`jZj0  j FL`H}FhȑFȽlFi0 h FFLFpvqwgneofLF pq7  G0i 0 FJJh1FqȱFpȱFk`B!}08`hEE D 8. =D}tui( TʩL`b!)    cȌaȌd b`aab}H8 hdaHcd8 cH hHH  \h hc` =Hh I8ih( t  ( t(!` L\}CJfCJfCJfCDfC` a  HII  INdh  `h  `n)8jHniPoijIjFIjFIjh` a } I 38  8H0 I  ' H LQ8j Y  8j NdY  &I &I &IHeH.p!}Iiq  `!.莿 2Jjj }.m Ȉ!m FG` ɩLQ z "} e Hi04 \ Ȍ  8 i h !`I0 `C Y8.`DOS SYS#} I  ` ~ݩ.C/`ba.m۩mѤC9 `C L] H  ,- '0 l $}, BLVDE`D1:AUTORUN.SYS8hhJ ȱHȱIȱBȱDȱEeeHHLV)  %}1*  ,,p-  0 I &  '0   Lw)l, 0  I&LD1:MEM.SAV&}E:D1:DUP.SYSASS*.*:MAEE:D1:DUP.SYSASS*.*:MAEE:D1:DUP.}J)1CD2:DOS.SYS n  * \*`آ R'S )ɀ@  U))% BError lo(}ading MEM.SAV or memory!  0* b*c*d*e* R Hd*JSDd*J-=e* 0c*ʈд =}MYDOS 4)}.50 -- Copyright 1988,˛Disks 1D- 2D- D: = D2: ~= =1-8.Dir of D1:-D8: *. Dir of D:A. *}Disk Directory K. Save MemoryB. Run Cartridge L. Load MemoryC. Copy File(s) M. Run at AddressD. Delete File(s) N. L+}oad MEM.SAVE. Rename File(s) O. Change Config.F. Lock File(s) P. Set DensityG. Unlock File(s) Q. Make DirectoryH. Wr,}ite DOS Files R. Pick DirectoryI. Initialize Disk S. Set RAMdisk #J. Duplicate Disk V. Set Verify Flag  ?莼-}( 0  =Select Item ( for menu):@  =ɛL)1L,*L,:W@ ,,L=No such item!.}L*, -L*, BNeed new file name! BNo drive or director0}ies allowed in new name!Lock Unlock Delete Lock which file?â-#Unlock which file?ɢ-$((H @ AQ/wDel1}ete what file?Ѣ-!((H @ ANJ =Answer 'Y' or 'N'h `B L?;(( ~=( ~= =? =Y ?Lj.H @ AhR ?2}R)L*,LM/L-Lz-File to rename, new name? @ A(9', ȱ:>0{ ПFull directory name?Z"L.Dire3}ctory to be used as 'D:'? @ A(5)L.(I: ȱޝL*, BInvalid directory!L?( 4}(0Li-File source, destination? '( @C۩2ڭ82ܭC B9'0 @(ߍeލd(DЍ( ? 9'5} A rBȱޙ':>Ȍ(C0J* .B :'ȱ/.* #,ɛȝ:' ߰ A L?,(0L*, '6}ut(:'3?&' .'Ƚ:'?&'  .ى'Q?''(#( ~= =-->' ~=7}Q =YR_o (J(  0?B݌''BK)`''utz0( >(L0L*,L?nDisk to FORMAT:8} YA B(UTލ1 =(Press for Enhanced Dns)Type to Format Drive 2: =AIYZNj[R VL9}?L*,D2:DUP.SYSDrive to write DOS files to? YAH1:*K)2J) Z wB hpJ) 2<2U:}TC٩1ة۩کL;Source, Destination (Sectors)? YA)((9'( SA)((((( @(0% =Inser;}t both disks, type = A( A((/( B(( BDrives not compatible!J(j(9'Hi''<}h(ɛy BInvalid options! @-&& @)׍&&(&&&۩ک&&&&8* <4&&&& <4=}8*8(ܭ(ݥ2C, BNot enough memory! ک&&`(Mh  & =L?&i &>}&&&mm   =  &((&թԥԍ(Ս(((( ( ((C2((?}ՠԍ((,(0"( (( =m(m( & &("L*,  ( AL4,(, =Insert DES@}TINATION disk, press =Nͼ J) b( 0K) ?((ԭ(խ( ( (((L4Drive, new density:A} YA9'ɛ BDrive unchanged.(ު90٨Ȍ(SD  ABL)xԌҭHӭ@ @ ʎӆ@B}ӭ@@ :  $ӹ @hөԥX` Aˠ =RAM disk present? =NL#8 =xlC}on or E type RAMdisk? =Aό  L   M A, A6: ' =No extra memory available!L#8L7 & & D}& =Use default config for 0)ȩ ~= =K? =NL7 =Size(K)? ? @FjFjFjFj: =Page seqE}uence? ? @o* =RAM disk drive no? = 09) `8 -8**H***) 9 Ȋ)h9 @@ʊ F}H'h(#''/'(ɛ ? @(@: 3 ʽ' L7 =Duplicated sequence number!L7 =Wrong numbG}er of entries!L7K큅쀄 =Verify WRITEs? ; =NumberH} of File Buffers? ? @  6 Lw),R( ';L*,Drive number or : =ɛLC99L60Ȍ( =Remove I}drive? =Y =Is drive configurable? =YЂ =High capacity drive? =Yy =Is drive double sided? =Y ; =TracksJ}/side? ? @#0M P( ; =Step rate? =4/ ; ';L*, =Drive size (in sectors)? ? @H(K}h *;L*,RAM disk drive no? 8L*,Verify WRITEs? ;L*, =WNPy`(`(  LABSAVE:filename,start,end(,init(L},run)) @TUH @Cp` 2< @؆8օڊ BInvalid START-END range!۩ @  @M} hԄՠAμȌZ wB04*  0$ڍXۍY֍T׍U,0LBLB #CL?ֆ׌`Load MEM.SAV from whaN}t file? 0#L*,L?Load from what file?) @TU&̩Z wB &0&-&а&𨭼INIZ'O}RV0II BNO CARTRIDGE!Ԇխ  )L?Run from what address? ?ɛ @P} BAddress must be 1-4 hex digits! BHILV n=`hh =HH` =0{a Hɛ n= n=h` nQ}=L*, = = pHH =hh`K: p `(((( i ɀ((L?(`(B'(0!HH''^R}>I^>(`^>DH(`(HI`(o5 ~= =( B( >@A (J wB0x((HHIIDDES}E B ?(CɈK(٢A ~= =( BL>(B^>((ڤ ܝHݝI VL_>L?(" B !B J) T} B(L& R XY( ?&:0H&((& ( .( & ( .(ʩ(U}`ލD&ߍEBIʎH( V0`ԩ ؠ@ȱ@ȱ)@ BError -- 128&`$8f 3AԄձG/ V}$<68i/(Ԧ`H&եԦ&&eԅheԅԊe(iL*@&&&&ԅL*@B ? 3A?*(ɛ:W}./2SX(0ȱ/.ɛ(ލ9'ި0#:Ȱ :ފ :ȱ: : CAD CAޥX}`(eޅީe߅`(` @L\A @TUȪ: BFile name not allowed!: )  i( =0+L Y}TUD BNot a disk file!(0` =Insert SOURCE disk, press =,(pӮ(A(O  1B AB1BZ} ` % 1(L/ b(de BJKO L?O` B((*(([}(`ȱޙ((:>Ȍ(`D:`OS.SYS,DOS.SYShh =L*,  VLJ C C,pLiLF#Խ٩Յ׆ \} LB`((:>Ȍ(`D:`OS.SYS,DOS.SYShh =L*,  VLJ C C,pLiLF#Խ٩Յ׆ Lyd 'D1:*.*LʩLLL*LH`````l `HH ܩIHhDhE V'f ܩ)^}(ȄRɛa{I ݬ!8 H+e؅ٰؐ5,/,8ө ܩ HHh(`x_}0:ޤTX@Ԡɠ0 :ʤDȱɛ SکȄ`٠8eتi ɛȘ٘`}` @ ܩ 0 @ D DcU DL@H@*hJL@L!@O\ iA\ H $@ DLI\< `00a}z @o<zyz i8ʈ QFІхֆעʎʎb}S i0 i0 " )#?%7! !6 ܑЍ$Rޢ@ߢӱޮӑd婚@L DL@@c}@Ly D AL@LHL$J*@L}smrkosoadass 2aveabalueRef DirOUT d}OF MEMFind:Repl:Ln #Lbl:Times:ab-pc 7D B A @B F D Dۤ H A`,`ɂ JI@e})@?LɚdL@A|0?LɚyɄ,p` Aa{I `S[ `f} vAZ ©ܤm Фх܄z ȩ\ ȩ`ۅS C= ũZ \g}zɛ\ɛ AU\ I`U D E AHU ũ Dh18KtUSH A  tCh U\LD @ |`i=LICh} DLDRL FR fA 1 :LHIjK0ؘi2LEC Axt vAJ:\ 2Z0\'"z zi}\0\ Z ChȘ8ڄ Jک[2 ʩۤ㘤| vKHuKH|yU`0 \LD0 DLBS[\j}U IS*8eUc Dc` CU\` DU I Dȹ\[S`SЩ` CDU(LBE DڤS\ж` D A J [D k}HTH XE DhTU BEBҦ҆Ӎ:@K@*@;@ Jҥ/T- Deؐمd۠)LʩT D, ʩ` XEl} ND KE kD驝 D D)H |A)IJ:װǘHإ٤!8\ޅZ Jz` C D,Z m}D< 7DTUTH H [DT$SP D KE} D D ND DhTU DСT kDTTT ND` ?D8n}Hժh H ũ٥8֥ץԅޥՅ H 橥#T bDԦ D H J E`؅ԥم` E dE H Jօޥo}ߥ؅م H LE ©M C ©\ ȩ Dܦ8ѐ аކߠ; ʩަ߅܆`d\ iA%p},ʽ U8`\:/ eHehڥЗ D۾L@LD VFAچ0Lq}3H㭻` VF$pڈ0 o H Aۤ,LH)*@;@ĄLH Aؙ*@ٙ;@Ș)ꊙ*@;@,\ iAr}ȹ\. 뎻 7D ũ ɛ0w ũ iA٬ NDe-m KE\+-ȅ F 7Ds}(- ND kD D :@K@ D؅مT KE E ?D` VF G ũ( AȄU> D D fANt}YA He؅ؐ٭8 J2 ʩ D D DmL3H؍:@ٍK@`8Hתh` vA,ULBEM `u}e窥Ӆe`؅م`Z Ih\ iA: `R @>Lʩi LTiLD ;I< v}@\ LD H IB} D0 V02 H D$p ڪ D $JL H \`@,0J QJ OJ A;ɉL@ HL@w} H I$p 7Dҥ ئ٥ԅإՅي@8 sJ I OJL H HI fAS D kD2LB IѤ sJ/ЁHe؅ҽIeم J Bx}HHK+ 7J D< FLIީ BHH8بLPHک B Hʆ҅ӆ &K e*@e;@8H٪h Ay}Lʩ_Ii8ҥӥ؅eޥمeߠ &K *@;@8Hh *@;@`~ `}z}   ADLBPSTVX}YCCsCCCCCHiBCHHD@@CCCCCBaD>DCDrDGG&BdEcEEFFFFFFFH3GG{}EDGFHFaD>DJ H)I:IqHIJ6I5ID-HFFGWG@IIoI&@  @)@LLLLLLLLLQULUL_L ULFc L M [ȱ|}!. MV,`Hchc` LcBʆ\ V L膽 [$0XHH$}}P0Z*@Z;@ƅ ^hb! ^ȹb AT #h Y ^8` Y M T tT8cL@L0ɗɈ I~}Ʃ`ح`\!. MPȹ[ɛ`P ȹ[ɛPP`Ȣ) ^()` ^ ^`NNN,}ߥZN`N[8eߪ٤`ԥNJ`ZN[Nhh Ml241RAB&RAW%RBAKRBIcRBYSCLTDC[SDSSEC}aEJR}ENTES|aHEubIB,RINUIW+RLCRLL!RLO>RLSRMCSMDaMEMbMGROCRORSOSROU^PRQSBSVAQWOAR-9=MQUYiy}BCCBCSBEQB}GEBLTBMI0BNEBPLBRABVCPBVSpADCANDASLBIT#CMP(COP7CPX8CPY;DEC>EORCINCRJMLYJMPWJSL[JSR]LDA_LDXnLDYsLSRxORA}PEAPEIREPR}OLRORSBCSEPSTASTXSTYSTZTRBTSBrqaseucim}ygwo21!3%5#)-=9'7/? $4,<:RQASEUCIM]YGWO_}l|L\" FVN^J &6.>*fvn~j⒑dt }   BRKCLCCLDCLIXCLVDEX}DEYINXINYNOPPHAHPHBPHD PHKKPHPPHXPHYZPLAhPLBPLD+PLP(PLXPLYzRTI@RTLkRTS`SEC8SEDSEIxSTPTAXTAYTCD[TCSTDC{TSC;TSX}TXATXSTXYTYATYXWAIWDMBXBAXCE%)]iy ^\"ȹ\P " ^L9V)? ^ ^ \ɛ[} \؈ ^L9V$P 膚膝膞Щ륛 _é,H ^hLNX ^L9VH) ^h`҅إӅ @} 0_ @% / / /R /$ / / VT yY(70519&}ʈeeȑ Z_ئ ^_ S l_0Hؐiޥiߐ / !YߥҥӐh؅ҥم |T/ S M [H} !Yh S S 0_L9V S VT $P yYH URh]L` S0 ^ 3T M<ʆޢ+ ^ }MP$ Luu`"'Э'TP̹\'У 3TP)` @ eeL!Y\} `ҥӢAL $P tT Y L$pLV$0? -PASS-Q 0_ T h^ b Y YL@ 0_ rL9V}Lricحc [ȱ2ȱ0:? b@Q b\@ \ Not FoundL@Icحlc٥؍icٍc ^ M : b _}ɆΆφ­é҅Ӆ녚@I$p ,L`ZZ Y̅}ʥͅ漥҅¥Ӆå…إÅ @ @…إÅ٢;̆^hhHH…ҥÅ |Tʅ̥˅͢B`hh٥H Yh}L\V Y pM͠ 8 [ٍZH؍ZH/  LɀLU\`Ɇ I ]\  M `L9V\}@\ eZ M=.2 N L M UR\H) [h؅م iTЛ_x\B: M2 MNeH }^h !YH hE$h LLWh06\Y3)N MLW\)QʩNP N P !YL9VL_2JJaP00}NO !}Y ^(wǽNXkYgc [K Lj MyXJ,PPP\?L#(ɢ< >!G [ ` X}PHH !Yhh8L9V [A ]Ȣ ˢ [(L7X,b H ^h !Y88堅塅КЖD,T !Y ^H }M ^ !YhLWi,؆JJ8 PHaP)PHyNh  LOH$P;09*" Y }YL:Y ^ihH ^06h $h` ^Ħ뵠 ^-L^hZ !_z`0̦LYΦυZ ]z` Y}H, ^h ^ ^L^HLZHLYH$Pm0kg`[ Y ^ Y ^ة٢ڢ/ H } ^h ^ɛ ^hɆ`䥳 l[g |[ [LZ l[ Y]^ [ȹ\?@ȹ\) '^ _ L}8` \ LȐ`mi8 ޅ߅ L8` _8H٪h # Zȹ! .)i}ج!}GcGcjcؘ8؅م`\!]^`\.Lq[]^`]^`ȱ.!8ȱe؅ؐ}`ȆPLL [8\ `\`ȹ\-#< >^7HȢ [h` [8*ȹ[܈ } U\ [ & U\M\ i8`\' b@) b6 )eHeehJ&&& b2`$$}%*1`&&) b`"$0\!. ?)iGcؽjc٦\!.?Z}z V V V V\ '^Șʆज़ L`.ٽ! ! !.}!𮥴Ъȱ)$0C [LS]$05ȱ! 9^ F^. 9^ W^äؙ8` YL^ [,` [L}L. /]`8`ȱȱ`ȱŻȱż`ȱŹȱź` - Label File -Icحlc٢ ^ȱL^ȱ0 ?} [L^ Me= ^ M [ ^$Ű ^ ,H0 Ĭh`HJJJJ ^h) 0:iإ@ @  _L9}V dYWM2.qHqh8ȑȑ@ B _ȑȥȥ` E |T r dL@}!Gcjcȑ`@U ^$ ^ ^ ZL^_ `ʥB H) ]h LL9V\ 9^ } L`HH M/( M%\)H [hZȹz֢ Yh؍ZhٍZHH泥  LLLV`}ߪ\`ߦ`0 Mhh,aH+aH`   #&),/258;>,X,X),S,S),Y]],Y.ME.MD.ENBRLPERMVPM}VNIFEIFNIFPIFMSET***.ENLaaTXXXXPa\aealaaHaT taL9V ta ta0 ta0愶 S`膸 [LS ,} L M=HH M Shh٤؈0!  L沥hhHȑ؈HL9VL`P\( LLUb M4)0} [ eZȽ0 MLbй\PƳ0 ƹƺhhL9V LP \ L !Y }M}LĬح8` b/L^ b AG6`ȹ\0:`!R!)2p3ĺ__BMVY?x޹h Ch+hh*D67+)? T4."}0/-+ ) LhL*L| y;*b 1Xl L+H-,.(`.-,`T ,A} X Y NV-BDIZC SP ;*Hh0 H* Ĭ ߥ L\R@PH p s#S S) }h  D  J j Y0!mm   (`'(L᭢`;*hH}LOȱ` h t ¬ h  ѻ ";M N"í>! )0 }?;hhR ? Ĭ NX ¬;* ﯰ<0Ċ ;9 5 h ¬8 T} tL ]!X ^ ¬  ? ^;*L>@'`( HL7l()K)F*}9h+hihiVHhȱLC RHH 1L5 Cة R0 TLC Ch+ة R*LnL}ee`L 6!7 d tE 0һ1Ի` bRl # 0` '\ %\ș ș0}%   1؅ f`\ \ɛ` 첱  1 f %` ޯ %\\\ } ,`*ޢ ﯰ[=\, 첕` 8` AG6`0:` [HZH  p s f`L}  * H t h6̬ ¬ ,`   4LĬ$e` ޯ }  e f :  v   vɛ $ {. Ĭ 467L }T ﯰS\* \= *Ϣ u t C 첍G0- ﯰ mL ﯰ10꘤L 첎}/LSPYXA@ -` @ Lޯ\`"Н` -  H  hԸ&}*i? Ĭ  Ǹ Ĭ͸ Ĭ`iee L J J") JvJJJJ)})) JJJ Ȉ`H h8UL@E@ 0"E3@ @E3@ @E@ "D3ЌD"D3ЌD"D3@ "D3@ b}x!YMJ,),#($YX$$#]#)i#$S#$S[[i$$)|mi)S4i#bZH&bTDThDt(ntJr}tttrDh2"&&rr&HDDȢʎʎ "` p0[.\0 \]\ ,TH hTT& j} 5 ¬ hU  .-*Ъ ,LC 蝬$ʎ  1 `` 2ee} ` 1 ` T a8+H\ ޯ ϭhH h?  eeL} W T 철Ȅ a ϭ / % f dLBDE}iHiI  L0 d Б ]Lt`8`e ei`H vh`H }Ә Vh` 1 0ۻ1ݻ01`  `  `H vh`H mLyd(? 'D1:*.*LʩLLL*LH`````l `HH ܩIHhDhE V'f ܩ)}(ȄRɛa{I ݬ!8 H+e؅ٰؐ5,/,8ө ܩ HHh(`x}0:ޤTX@Ԡɠ0 :ʤDȱɛ SکȄ`٠8eتi ɛȘ٘}` @ ܩ 0 @ D DcU DL@H@*hJL@L!@O\ iA\ H $@ DLI\< `00}z @o<zyz i8ʈ QFІхֆעʎʎ}S i0 i0 " )#?%7! !6 ܑЍ$Rޢ@ߢӱޮӑd婚@L DL@@}@Ly D AL@LHL$J*@L}smrkosoadass 2aveabalueRef DirOUT }OF MEMFind:Repl:Ln #Lbl:Times:ab-pc 7D B A @B F D Dۤ H A`,`ɂ JI@})@?LɚdL@A|0?LɚyɄ,p` Aa{I `S[ `} vAZ ©ܤm Фх܄z ȩ\ ȩ`ۅS C= ũZ \}zɛ\ɛ AU\ I`U D E AHU ũ Dh18KtUSH A  tCh U\LD @ |`i=LIC} DLDRL FR fA 1 :LHIjK0ؘi2LEC Axt vAJ:\ 2Z0\'"z z}\0\ Z ChȘ8ڄ Jک[2 ʩۤ㘤| vKHuKH|yU`0 \LD0 DLBS[\}U IS*8eUc Dc` CU\` DU I Dȹ\[S`SЩ` CDU(LBE DڤS\ж` D A J [D }HTH XE DhTU BEBҦ҆Ӎ:@K@*@;@ Jҥ/T- Deؐمd۠)LʩT D, ʩ` XE} ND KE kD驝 D D)H |A)IJ:װǘHإ٤!8\ޅZ Jz` C D,Z }D< 7DTUTH H [DT$SP D KE} D D ND DhTU DСT kDTTT ND` ?D8}Hժh H ũ٥8֥ץԅޥՅ H 橥#T bDԦ D H J E`؅ԥم` E dE H Jօޥ}ߥ؅م H LE ©M C ©\ ȩ Dܦ8ѐ аކߠ; ʩަ߅܆`d\ iA%},ʽ U8`\:/ eHehڥЗ D۾L@LD VFAچ0L}3H㭻` VF$pڈ0 o H Aۤ,LH)*@;@ĄLH Aؙ*@ٙ;@Ș)ꊙ*@;@,\ iA}ȹ\. 뎻 7D ũ ɛ0w ũ iA٬ NDe-m KE\+-ȅ F 7D}(- ND kD D :@K@ D؅مT KE E ?D` VF G ũ( AȄU> D D fAN}YA He؅ؐ٭8 J2 ʩ D D DmL3H؍:@ٍK@`8Hתh` vA,ULBEM `}e窥Ӆe`؅م`Z Ih\ iA: `R @>Lʩi LTiLD ;I< }@\ LD H IB} D0 V02 H D$p ڪ D $JL H \`@,0J QJ OJ A;ɉL@ HL@} H I$p 7Dҥ ئ٥ԅإՅي@8 sJ I OJL H HI fAS D kD2LB IѤ sJ/ЁHe؅ҽIeم J B}HHK+ 7J D< FLIީ BHH8بLPHک B Hʆ҅ӆ &K e*@e;@8H٪h A}Lʩ_Ii8ҥӥ؅eޥمeߠ &K *@;@8Hh *@;@`~ `}}   ADLBPSTVX}YCCsCCCCCHiBCHHD@@CCCCCBaD>DCDrDGG&BdEcEEFFFFFFFH3GG}EDGFHFaD>DJ H)I:IqHIJ6I5ID-HFFGWG@IIoI&@  @)@LLLLLLLLLQULUL_L ULFc L M [ȱ}!. MV,`Hchc` LcBʆ\ V L膽 [$0XHH$}P0Z*@Z;@ƅ ^hb! ^ȹb AT #h Y ^8` Y M T tT8cL@L0ɗɈ I}Ʃ`ح`\!. MPȹ[ɛ`P ȹ[ɛPP`Ȣ) ^()` ^ ^`NNN,}ߥZN`N[8eߪ٤`ԥNJ`ZN[Nhh Ml241RAB&RAW%RBAKRBIcRBYSCLTDC[SDSSEC}aEJR}ENTES|aHEubIB,RINUIW+RLCRLL!RLO>RLSRMCSMDaMEMbMGROCRORSOSROU^PRQSBSVAQWOAR-9=MQUYiy}BCCBCSBEQB}GEBLTBMI0BNEBPLBRABVCPBVSpADCANDASLBIT#CMP(COP7CPX8CPY;DEC>EORCINCRJMLYJMPWJSL[JSR]LDA_LDXnLDYsLSRxORA}PEAPEIREPR}OLRORSBCSEPSTASTXSTYSTZTRBTSBrqaseucim}ygwo21!3%5#)-=9'7/? $4,<:RQASEUCIM]YGWO_}l|L\" FVN^J &6.>*fvn~j⒑dt }   BRKCLCCLDCLIXCLVDEX}DEYINXINYNOPPHAHPHBPHD PHKKPHPPHXPHYZPLAhPLBPLD+PLP(PLXPLYzRTI@RTLkRTS`SEC8SEDSEIxSTPTAXTAYTCD[TCSTDC{TSC;TSX}TXATXSTXYTYATYXWAIWDMBXBAXCE%)]iy ^\"ȹ\P " ^L9V)? ^ ^ \ɛ[} \؈ ^L9V$P 膚膝膞Щ륛 _é,H ^hLNX ^L9VH) ^h`҅إӅ @} 0_ @% / / /R /$ / / VT yY(70519&}ʈeeȑ Z_ئ ^_ S l_0Hؐiޥiߐ / !YߥҥӐh؅ҥم |T/ S M [H} !Yh S S 0_L9V S VT $P yYH URh]L` S0 ^ 3T M<ʆޢ+ ^ }MP$ Luu`"'Э'TP̹\'У 3TP)` @ eeL!Y\} `ҥӢAL $P tT Y L$pLV$0? -PASS-Q 0_ T h^ b Y YL@ 0_ rL9V}Lricحc [ȱ2ȱ0:? b@Q b\@ \ Not FoundL@Icحlc٥؍icٍc ^ M : b _}ɆΆφ­é҅Ӆ녚@I$p ,L`ZZ Y̅}ʥͅ漥҅¥Ӆå…إÅ @ @…إÅ٢;̆^hhHH…ҥÅ |Tʅ̥˅͢B`hh٥H Yh}L\V Y pM͠ 8 [ٍZH؍ZH/  LɀLU\`Ɇ I ]\  M `L9V\}@\ eZ M=.2 N L M UR\H) [h؅م iTЛ_x\B: M2 MNeH }^h !YH hE$h LLWh06\Y3)N MLW\)QʩNP N P !YL9VL_2JJaP00}NO !}Y ^(wǽNXkYgc [K Lj MyXJ,PPP\?L#(ɢ< >!G [ ` X}PHH !Yhh8L9V [A ]Ȣ ˢ [(L7X,b H ^h !Y88堅塅КЖD,T !Y ^H }M ^ !YhLWi,؆JJ8 PHaP)PHyNh  LOH$P;09*" Y }YL:Y ^ihH ^06h $h` ^Ħ뵠 ^-L^hZ !_z`0̦LYΦυZ ]z` Y}H, ^h ^ ^L^HLZHLYH$Pm0kg`[ Y ^ Y ^ة٢ڢ/ H } ^h ^ɛ ^hɆ`䥳 l[g |[ [LZ l[ Y]^ [ȹ\?@ȹ\) '^ _ L }8` \ LȐ`mi8 ޅ߅ L8` _8H٪h # Zȹ! .)i }ج!}GcGcjcؘ8؅م`\!]^`\.Lq[]^`]^`ȱ.!8ȱe؅ؐ }`ȆPLL [8\ `\`ȹ\-#< >^7HȢ [h` [8*ȹ[܈  } U\ [ & U\M\ i8`\' b@) b6 )eHeehJ&&& b2`$$ }%*1`&&) b`"$0\!. ?)iGcؽjc٦\!.?Z}z V V V V\ '^Șʆज़ L`.ٽ! ! !.}!𮥴Ъȱ)$0C [LS]$05ȱ! 9^ F^. 9^ W^äؙ8` YL^ [,` [L}L. /]`8`ȱȱ`ȱŻȱż`ȱŹȱź` - Label File -Icحlc٢ ^ȱL^ȱ0 ?} [L^ Me= ^ M [ ^$Ű ^ ,H0 Ĭh`HJJJJ ^h) 0:iإ@ @  _L9}V dYWM2.qHqh8ȑȑ@ B _ȑȥȥ` E |T r dL@}!Gcjcȑ`@U ^$ ^ ^ ZL^_ `ʥB H) ]h LL9V\ 9^ } L`HH M/( M%\)H [hZȹz֢ Yh؍ZhٍZHH泥  LLLV`}ߪ\`ߦ`0 Mhh,aH+aH`   #&),/258;>,X,X),S,S),Y]],Y.ME.MD.ENBRLPERMVPM}VNIFEIFNIFPIFMSET***.ENLaaTXXXXPa\aealaaHaT taL9V ta ta0 ta0愶 S`膸 [LS ,} L M=HH M Shh٤؈0!  L沥hhHȑ؈HL9VL`P\( LLUb M4)0} [ eZȽ0 MLbй\PƳ0 ƹƺhhL9V LP \ L !Y }M}LĬح8` b/L^ b AG6`ȹ\0:`!R!)2p3ĺ__BMVY?x޹h Ch+hh*D67+)? T4."&}0/-+ ) LhL*L| y;*b 1Xl L+H-,.(`.-,`T ,A'} X Y NV-BDIZC SP ;*Hh0 H* Ĭ ߥ L\R@PH p s#S S) (}h  D  J j Y0!mm   (`'(L᭢`;*hH)}LOȱ` h t ¬ h  ѻ ";M N"í>! )0 *}?;hhR ? Ĭ NX ¬;* ﯰ<0Ċ ;9 5 h ¬8 T+} tL ]!X ^ ¬  ? ^;*L>@'`( HL7l()K)F*,}9h+hihiVHhȱLC RHH 1L5 Cة R0 TLC Ch+ة R*LnL-}ee`L 6!7 d tE 0һ1Ի` bRl # 0` '\ %\ș ș0.}%   1؅ f`\ \ɛ` 첱  1 f %` ޯ %\\\ /} ,`*ޢ ﯰ[=\, 첕` 8` AG6`0:` [HZH  p s f`L0}  * H t h6̬ ¬ ,`   4LĬ$e` ޯ 1}  e f :  v   vɛ $ {. Ĭ 467L 2}T ﯰS\* \= *Ϣ u t C 첍G0- ﯰ mL ﯰ10꘤L 첎3}/LSPYXA@ -` @ Lޯ\`"Н` -  H  hԸ&4}*i? Ĭ  Ǹ Ĭ͸ Ĭ`iee L J J") JvJJJJ)5})) JJJ Ȉ`H h8UL@E@ 0"E3@ @E3@ @E@ "D3ЌD"D3ЌD"D3@ "D3@ b6}x!YMJ,),#($YX$$#]#)i#$S#$S[[i$$)|mi)S4i#bZH&bTDThDt(ntJr7}tttrDh2"&&rr&HDDȢʎʎ "` p0[.\0 \]\ ,TH hTT& j8} 5 ¬ hU  .-*Ъ ,LC 蝬$ʎ  1 `` 2ee9} ` 1 ` T a8+H\ ޯ ϭhH h?  eeL:} W T 철Ȅ a ϭ / % f dLBDE;}iHiI  L0 d Б ]Lt`8`e ei`H vh`H <}Ә Vh` 1 0ۻ1ݻ01`  `  `H vh`H mLd 'D1:*.*LʩLLLTLr`````l `HH ܩIHhDhE V'f ܩ)>}(ȄRɛa{I ݬ!8 r+e؅ٰؐ5,/,8ө ܩ HHh(`Ӆ?}ޑƠӅޑ0ޑ8ްߥ8 ޑȱɛ SکȄ@}`٠8eتi ɛȘ٘` @ ܩ 0 @ D DcU DL@H@*hJL@L!@O\A} lA\ I $@ DLI\< `00 @o<zyz i8ʈB} eFІхֆעʎʎS i0 i0 " )#?%7! !6 ܑЍ$RC}@ߢӱޮӑd婚@L EL@@@L D AL@LIL=J*@0L}smrkosoadass 2D}aveabalueRef DirOUT OF MEMFind:Repl:Ln #Lbl:Times:ab-pc FD B A KBL@ F D Dۤ H AE}`,`ɂ JI@)@?LɚLCA|0?LɚyF}Ʉ,p` Aa{I `S[ ` yAȘH ©ܤm Фх܄h ȩ\ ȩ`ۅY CG}CA ũH \hɛ\Ċ AU\ I`U D E AHU ũ Dh1TKtUH}SH A  Ch U\LD @ |`i=LXC DLDRL FR iA 1 :L`IنK0ؘi2LTC AI}|x yAN>\ 6H0\'"h"h\0\ H ChȘ8ڄ Jک[2 ʩۤJ}| KHKH|yU`0 \LD0 DL$BS[\U IS*8eUc Dc` CU\` DU I Dȹ\[S`SK}Щ` RDU(LVE DڤS\ж` D A J lD ITH lE DhTU VEBҦ҆Ӎ:@K@*@;@ JL}ҥ1T/ Deؐمآ۠)LʩT D, ʩ` lE ]D _E |D驝 D D)J |C)IJ<װǘHإ٤"M}8\ޅߘH Jh` C D,ޘH *D< FDTUTH I lDT$SP D _E} D D ]DN} DhTU DРT |DTTT ]D` ND8Hժh H ũ٥8֥ץԅޥՅ H 橥#TO} sDԦ D H J E`؅ԥم` E xE H Jօޥׅߥ؅م H LE ©M C ©\ ȩ Dܦ8P}ѐ аކߠ; ʩަ߅܆`\ lA%,ʽ U8`\:/ eQ}HehڥЕ D۾*L@LD jFAچ0LJH㭻` jF$pڈ0 o "H Aۤ,LH)R}*@;@ĄLH Aؙ*@ٙ;@Ș)ꊙ*@;@,\ lAȹ\. 뎻 FD ũ ɛ0x ũ lA٬ ]DS}f-m _E\+-ȅ F FD)- ]D |DL H $D :@K@ D؅مT _E ET} ND` jF G ũ( AȄU> D D iANYA Ie؅ؐ٭8 J2 ʩ D U}D DmLJH؍:@ٍK@`8Hתh` yA,ULVEM `҅e窥Ӆe`؅م`H )Ih\ lAV}: `R @>Lʩi%LTiLD SI< @\ LD I IB} D0 V04 I $D$pW}  *D =JL"H \`@,0J lJH h jJ AɉL@ "HL@ I I$p FDҥ ئ٥ԅإՅي@8 J I jJL"H `I iASX} $D |D2LB IѤ J1ЀHe؅ҽIeمӊH Jh BHHK+ PJ $D< FLIީ BHH8بY}LPHH B HɆ҅ӆ BK e*@e;@8H٪h ALʩ_Ii8ҥӥ؅eޥمeߠ BK Z}*@;@8Hh *@;@`~ `}   ADLBPSTVX}hCCCCCCC[}HtBCHHD@@CCCCCBrDMDCDDGG1BxEwEEFFFFFFFHIG5GE EHFHFrDMD2J!HժAIRIժ`IJNIMIEDHF GGmG@II\}I&@  @)@LLLLLLLLLSULUL_L ULRc L M [ȱ!. MV,`Hchc` Lc]}Bʆ\ VLL L膽 [LL$0XHH$P0Z*@ Z;@ƅ ^hb! ^ȹb AT^} #h Y ^8` Y M T vTDcL@L0ɗɈ IƩ`ح`\!. MPȹ[ɛ`P_} ȹ[ɛPP`Ȣ) ^()` ^ ^`NN N,ߥ\N`N[8eߪ٤``}NJ`\N]Nhh Ml243RAB(RAW'RBAMRBIeRBYSCLTDC]SDSSECaEJ RENTESaHEbIB.RINUIW-RLCRLL#RLO@RLSRMCSMDaMEYbMa}GROCRORSOSROU _PRQSBSVAQWOCR-9=MQUYiy}BCCBCSBEQBGEBLTBMI0BNEBPLBRABVCPBVSpADCANDASLBIT#CMP(Cb}OP7CPX8CPY;DEC>EORCINCRJMLYJMPWJSL[JSR]LDA_LDXnLDYsLSRxORA}PEAPEIREPROLRORSBCSEPSTASTXSTYSTZTRBTSBrqaseucim}ygwc}o21!3%5#)-=9'7/? $4,<:RQASEUCIM]YGWO_l|L\" FVN^J d}&6.>*fvn~j⒑dt   e} BRKCLCCLDCLIXCLVDEXDEYINXINYNOPPHAHPHBPHD PHKKPHPPHXPHYZPLAhPLBf}PLD+PLP(PLXPLYzRTI@RTLkRTS`SEC8SEDSEIxSTPTAXTAYTCD[TCSTDC{TSC;TSXTXATXSTXYTYATYXWAIWDMBXBAXCE%)q}FF#DOS SYSF6'DUP SYSFp]MAEX COMFpMAE64X COMFq=MAE COMFMAE DOCF{GASM DOCFDEBUG DOCFkNOTE64 DOCF5sHISTORY DOCF"HYP ARCFDEBUG80 ]iy ^\"ȹ\P " ^L9V)? ^ ^ \ɛ[ \؈ ^L9V$P 膚r}膝膞Щ륛 _é,H )^hLNX )^L9VH) )^h`҅إӅ @ :_ @% / / /R /s}$ / / XT yY(70519&ʈeeȑ d_ئ h_ S v_0t}Hؐiޥiߐ / !YߥҥӐh؅ҥم ~T/ S M [H !Yh S S :_L9V S XT $u}P yYH WRh]L` S0 ^ 5T M<ʆޢ+ )^ MP$ Luu`"'v})TP̹\'У 5TP)` @ eeL!Y\ `ҥӢAL $P vT Yw} L$pLV$0? -PASS-Q :_ T r^ b Y YL@ :_ rL9VLrucحc [ȱ2ȱ0:? b@Q b\x}@ \ Not FoundL@Ucحxc٥؍ucٍc ^ M : b _ɆΆφ­é҅Ӆ녚y}@I$p ,L`Z Z Y̅ʥͅ漥҅¥Ӆå…إÅ @ @…إÅ٢z}̆^hhHH…ҥÅ ~Tʅ̥˅͢B`hh٥H YhL\V Y rM͠ 8 [ٍ ZH؍ZH/ {} LɀLU\`Ɇ I ]\  M `L9V\@\ mZ M=.2 N L|} M WR\H) [h؅م kTЛ_x\B: M2 MNeH )^h !YH hE$h LLWh06\Y3)N }}MLW\)QʩNP N P !YL9VL_2JJcP00}NO !Y )^(wǽNXkYgc [K Lj MyXJ~},PPP\?L#(ɢ< >!G [ ` XPHH !Yhh8L9V [A ]Ȣ ˢ [}(L7X,b H )^h !Y88堅塅КЖD,T !Y )^H M )^ !YhLWi,؆JJ8 PHcP)PHy}Nh  LOH$P;09*" Y YL:Y ^ihH ^06h $h`} ^Ħ뵠 ^-L^hY +_`0̦LYΦυH ]h` YH, ^h ^ ^L^HLZHLYH$Pp0nj}c^ Y ^ Y ^ة٢0Z/ H ^h ^ɛ ^hɆ`䥳 t}[g [ [LZ t[ Y]^ [ȹ\?@ȹ\) 1^ _ L8` \ LȐ`mi}8 ޅ߅ L8` _8H٪h # Zȹ! .)iج!}ScScvcؘ8؅م}`\!]^`\.Ly[]^`]^`ȱ.!8ȱe؅ؐ`ȆPLL [8\ `\}`ȹ\-#< >^7HȢ [h` [8*ȹ[܈ ]\ [ & ]\U\ o8`\}' b@) b6 )eHeehJ&&& b2`$$%*1`&&) b`}"$0\!. ?)iScؽvc٦\!.?Hh V V V V\ 1^Ș}ʆज़ L`.ٽ! ! !.!𮥴Ъȱ)$0C [L]]$}05ȱ! C^ P^. C^ a^äؙ8` YL^ [,` [LL. /]`8`ȱȱ`ȱŻȱ}ż`ȱŹȱź` - Label File -Ucحxc٢ ^ȱL^ȱ0 ? [L^ Me= ^ M [ ^$Ű }^ ,H0 Ĭh`HJJJJ ^h) 0:iإ@ @  _L9V dYWM2.qHq}h8ȑȑ@ B _ȑȥȥ` E ~T r dL@!Scvcȑ`@U )^$ ^} ^ ZL^_ `ʥB H) ]h LL9V\ C^  L`HH M1( M'\}) H [hHȹhԢ Yh؍Zhٍ ZHH泥  LLLV`ߪ\`ߦ`0 Mhh8a}H7aH`   #&),/258;>,X,X),S,S),Y]],Y.ME.MD.ENBRLPERMVPMVNIFEIFNIFPIFMSET***.ENXaaTXXXX\aha}qaxaaTaT aL9V a a0 a0愶 S`膸 [LS , L M=HH M Shh٤؈0!}  L沥hhHȑ؈HL9VL`P\( LLab M4)0 [ mZȽ0 }MLbй\PƳ0 ƹƺhhL9V LP \ L !Y M}LĬح8` b/L^ b A}G6`ȹ\0:`!R!)2` 0 ,@ DEG\} ϭ  $`\ ϭ  0 0 Ĭ ᭢0 ũ$`,@ BHI '` ᬢ F0ܢ`,@  X }S N `., , H h$ ()`()``H hLt   L"\ $ Ĭ HJJJJ +h)} ii0Џ )y>yB  HJJJJ 5h 5 0АJK`:},`0 Hh`\\`' ERR- ZL¬hh ĬHH`+-* /}&!`eeeLJ`%%%ۭ&+-&!** Fffee}e&&ަLJ &&&&* ֤LJ` J \ȩ )\Lu 诊HH y\}H& /.%g#s'M .&&)  \ o ,\hhh` } Lr&ff 10г )eHeeh ᬮ\\ " a{)ߐ ᬮ\\ɛ}\Lڬ r,7H @h`V@.#X;*GPWVRO\AE?LSIDMUQ=$/:C-FHKT GsҶֵDZлhg>!CغspS]&VY}+O򹱴!,h Ph+hh*D67+)? d4."0/-+ ) }LyL*L *HDH >Xl Y+H-,.(`.-,`T ,A X Y NV-BDIZC SP ;*}Hh0 H* Ĭ ߥ $L\R@PH #S S) h  }D  J j Y0!mm   (`'(L᭢`*hihHiHL`ȱ` v} ¬ v ' ѻ ";M ["í>! )0 ?;hhU ? Ĭ [}X ¬* F0Š L ;9 E x ¬8 d Lƶ s!X k }  $O( kL *LN@'`( HL7l()K)F:(9h+hihiVH}hȱLS bHH >LE Pة b0 dLS Ph+ة b*LL%ee`L 6!7} t tE 0һ1Ի` rRl # 0` '\ %\ș ș0%   A}؅ |`\ \ɛ`   A | %`  %\\\ ,`*ޢ [}=\, ` 8` AG6`0:` eHdH  |`L }* H h6̬ ¬ <`   DLĬ$e`  e} | :    ɛ $ {. Ĭ D67L( d S\* l}= *Ϣ C W0- zL 10꘤\ /LSPYXA@ -}` @ L\`"Н` -  ,H  h丅$&*i? Ĭ } ׸ Ĭݸ Ĭ`iee L J J") JJJJJ)ʸ))} JJJ Ȉ`H h8UL@E@ 0"E3@ @E3@ @E@ "D3ЌD"D3ЌD"D3@ "D3@ bx!YMJ,),#($YX$$}#]#)i#$S#$S[[i$$)|mi)S4i#bZH&bTDThDt(ntJrtttrDh2"&&rr&H}DDȢʎʎ "` 0[.\0 \]\ Page Down^, Start of line^. End of line^T Top of file^B Bottom of f'}ile^S Set mark at current location^M Go to Mark^G Goto line number. When entering the line number at the prompt, yo(}u can also enter a '+' or '-' as the first character to move a number of lines relative to the current location.-)} FIND & REPLACE -^F Find text -- not case sensitive. '?' can be used as a wildcard. There is currently no way to ch*}ange the wildcard character from within the editor, however, the editor uses the same wildcard configuration as the+} debugger does. See the documentation for debugger commands to find out how to change the wildcard character.S^F Find,} by searching backwards towards the start of the file.^R Replace -- forward direction only. It will ask for a Find string-} and then a Replace string. For all matches of the find string, the editor will display an inverse '>' symbol in f.}ront of the occurrence. You may press Y to replace it, N to skip it, A to replace all occurrences to the end of the/} text, or Esc to abort. Max length for Find or Replace is 15 characters.^N Next. If the previous operation was a rep0}lace, then you will be in the prompted replace mode if the string is found. Otherwise, if the previous operation w1}as a Find, then you will simply be taken to the next occurrence.^P Find Previous match, by searching backwards.^L 2}Enter a label name, and the editor will jump to where the label is defined. (By searching from the first column only.)3}^J The editor's version of a JSR. It looks at the operand field of the current line, and jumps to where that label is4} defined. It also sets a mark at the current line so that you can return with a ^H. The use of this function is no5}t limited to JSR instructions. JMPs, branches, even data variable locations can be traced with this command. Basi6}cally, for any line that contains an operand field, ^J will attempt to find the location where that label is defined.^H7} Return to previous position where a ^J command was entered. ^H is also used to jump to locations that gave assembly e8}rrors. During the assembly, up to 16 error positions will be remembered. All bookmarks, and marks set from the ^J a9}nd error position reporting, will auto-adjust to any changes in the source text, so that they will always point to :}the correct line in the source file.- BLOCK MOVES & COPIES -^Z Set block start.^X Cut from block start to current li;}ne, in a forwards direction only. If you find you want to mark a block backwards, the easiest way to do this, is to<} set the mark at the current line, then move backwards to the start of the block. Press ^Z, then press ^M to return to=} where you started, and give the ^X or ^C command. A clear to end of file operation can be done by pressing the key>}s, ^Z, ^B, ^X.^C Copy text from block start to current line, into the cut buffer. The text is left unchanged.^V Pa?}ste the cut buffer at current line.- KEY MACROS -^W (Write) Begin key macro recording. When done, press ^3. Up to 60@} keystrokes can be recorded, including Esc-Menu commands.^E Execute Macro^K Prompts for a number, and then will repA}eat the next entered key that number of times. ^K cannot be used within a macro, but it can be used to execute ^E B}multiple times.- MISC OTHER STUFF -S^Del Delete to end of line^I Toggle Insert/Replace mode.^A Accept next keypressC} as literal ATASCII value. This lets you enter Control graphic or international characters that would otherwise be D} treated as editor commands.^D Duplicate line.^U Undo line deletes, or changed lines. Does not undo block operations.E} A handy way to move one or more lines from one place to another, is to delete the original lines, move to the destiF}nation, and then use the Undo operation. one place to another, is to delete the original lines, move to the desti/- ASSEMBLER SECTION -- EXPRESSIONS -Expressions can be made from decimal numbers, hex numbers by using "$",binary numbersH} by using "%", single ASCII characters with a "'" (singlequote), and label names.Any of these values can be mixed with matI}h operators +-*/, ! (bitwiseOR), & (bitwise AND), and unary -. The | vertical bar can be used inplace of !.There are alJ}so special operators that refer to the low byte, high byte,and bank byte (24-bit highest byte) of the calculated expression.K} Theseoperators are <, >, and ^.There is no operator precedence. All math is evaluated left to right,with the exceptionL} of <, >, and ^, which are done after the rest of theexpression has been evaluated.Examples of valid expressions: M}LDA #'A-$20 ;= $21 LDA #-1 ;= $FF LDA #%101&3 ;= 1 LDA #>$1234+1 ;= $12 LDA #>$N}1234+256 ;= $13 LDA #^$123456 ;= $12 LDA #>$123456 ;= $34 (mid byte)All of these expression types can be O}used in .BY statements as well.Like:LOWS .BY LABEL1 >LABEL2 >LABEL3 .BY 15+3!P}%1000 etc...- LABELS -The first character of a label may be any letter, or the symbols @, \, _,or ?. All remainiQ}ng characters may also include numbers plus the symbols., :, ;, <, =, >, and ^. Labels may be up to 15 characters long.LaR}bel names, and for that matter all text entered with the assembler, canbe entered in upper or lower case. Labels are not caS}se-sensitive.When the first character of a label is '?', the label is a 'local label'.Locals are defined only in the sourcT}e code segment between two global(i.e. non-local) labels. References to local labels cannot cross aglobal label definitionU}.Internally, the assembler creates local labels by appending the local ontothe end of the previous global label. Thus in V}the following code segment:DELAY LDX #100?L DEX BNE ?L'?L' is a local label, and will be entered in the symbW}ol table as DELAY?L.Knowing how the label is stored, allows you to access it from the debuggeror the Esc-V expression evaluX}ator. You can also code a direct referenceto the label DELAY?L if you need to access the local from the other sideof the gY}lobal label DELAY.Locals are not printed in X-reference or symbol table listings, whichmakes them very useful for simple lZ}oop and branch structures where youdon't want to think up unique label names for all occurrences.- ADDRESSING MODES -All[} 6502 and 65816 addressing modes are supported. Any addresses thatevaluate less than $100 will use zero page modes when pos\}sible. Thus,zero page labels must be defined before being used, or assembly errorswill result.There is also a way to for]}ce 8 bit, 16 bit, or 24 bit addresses using theoperators <, !, and >. (Yes, I know this is inconsistent with theimmediate ^}operators for low, high and bank bytes -- I didn't write the65816 assembler specifications). This can be really useful for _}forcingabsolute 16 bit addressing on zero page labels, to add 1 cycle in timecritical applications. For the 65816, it can `}force direct page addressingfor non-ZP labels, (which of course requires you to move the direct pageregister to the proper a}page address). ALL 24-bit addresses must bepreceded by the > character.The operands for the 65816 MVP and MVN instructionb}s should be simple bankbytes -- not full addresses. Ex: MVP $40 $80moves memory from bank $40 to bank $80, using tc}he addresses in X and Y.Or: MVP ^SRC ^DESTUse the bank byte of the source and destination addresses.- PSEUDO-OPS d}-Note that only 2 letters are required, but if additional letters arepresent they will be truncated without assembly errore}s. For example, youmay use pseudo-ops like '.byte' and '.org'. Personally, I really likehaving the pseudo-ops the same wif}dth as all 6502 instructions, and onlyuse 2 letters. .24Sets the symbol table and program counter to use 24 bit addg}resses.This is only useful for 65816 programs, and may crash your machine if youtry to use it without having a 65816 CPU.h} .ABThe assembler will generate byte-sized values for accumulator-relatedimmediate constants. (Default) .AWi}The assembler will generate word-sized values for accumulator-relatedimmediate constants. This is only useful for 65816 proj}grams. .BA byteFor bank addressing, you can specify an operand to force assemblergenerated object code into bank sek}lect RAM. If the operand is >= $80,this value will be stored into location $D301 when storing bytes of objectcode into RAMl}. Operands less than $80 are placed in the X register, and aSTA $D580,X is performed. This can control certain bank selectm} cartridgedevices. NOTE: For using the second method of bank addressing, theassembler needs to be able to return the bankn} select cartridge to normal.There is currently a 'STA $D5DC' for this purpose, but this may not be theright address for youo}r cartridge setup. You should search the disk filefor this instruction, ($8D $DC $D5), and replace it with the appropriatep}address. .BI filenameIncludes the contents of a binary disk file into the assembly. If thisfile does not contain aq} DOS binary header, it will be assembled as in-linedata at the current PC. Otherwise, a file that contains a header will ber}loaded at its load address. .BY [+byte] bytes and/or ASCIIStore byte values in memory. ASCII strings can be specifs}ied by enclosingthe string in either single or double quotes.If the first character of the operand field is a '+', then tht}e followingbyte will be used as a constant and added to all remaining bytes of theinstruction.Ex: .BY +$80 1 10 $1u}0 'Hello' $9Bwill generate:81 8A 90 C8 E5 EC EC EF 1BValues in .BY statements may also be separated with commas forcompv}atibility with other assemblers. Spaces are allowed since they areeasier to type.See also .SB which creates ATASCII screew}n codes. .CLClose output object code file. When using the .OU pseudo-op to createobject code files on disk, the fix}le will normally be closed at the end ofassembly. However, if you wish to close the file before that, it can beforced closy}ed with the .CL pseudo-op. You may use this to create multipleoutput files in one assembly, or to place something in RAM inz} addition tothe disk file. .DC word byteDefine constant-filled block. This will fill an area of size 'word' witht{}he constant 'byte'. .DS wordDefine storage. This will reserve an area of storage equal to size'word'. .EC|}Do not display macro generated code in the assembly listing. Only themacro call itself will appear. .EJEject -- Se}}nd a form feed code to eject the page in an assembly listing. .ENMark End of assembly. This pseudo-op *must* be pre~}sent to end theassembly, or an error will result. .ESDisplay the code resulting from Macro expansions. .HE} hex bytesStore hex bytes in memory. This is a convenient method to enter stringsof hex bytes, since it does not require t}he use of the '$' character. Thebytes are still separated by spaces however, which I feel makes a muchmore readable layout} than the 'all run together' form of hex statementthat some other assemblers use. Example: .HE 0 55 AA FF .I}BThe assembler will generate byte-sized values for index register-relatedimmediate constants. (Default) .IWThe as}sembler will generate word-sized values for index register-relatedimmediate constants. This is only useful for 65816 progra}ms. .IN filenameInclude additional files in the assembly. Only the main source file cancontain .IN pseudo-ops. Yo}u cannot nest them. Default drive processingworks the same here as it does when loading files from the editor, and soyou w}ill usually not need any 'Dn:' types of filespecs. The file nameonly should be sufficient. No quotes are needed either. } .LCTurn off (clear) the display of the assembly listing. (Default) .LLDisplay the assembly listing on this }line only, even if the full listingis turned off. This can be extremely handy to display the program countervalue at impor}tant positions in the source file. .LO longStores a longword, 3 byte value in memory. Only one operand is supported}. .LSTurn on (set) the display of the assembly listing. .MC adrMove Code to a different address when storin}g object code in memory. Thisis in case the .OR assembly address conflicts with something already atthat location in memor}y. !!!name .MD ([label1] [label2]...)Begin macro definition. Described in a separate section. .MEEnd macro defi}nition. .MGMark the current .IN include file as Macro Global. This keeps this filein memory throughout the assembl}y, which is required if the file containsmacros that are referenced in other included files. .OCTurn off (clear) th}e storing of object code in memory. .OR adrSets the origin address for the assembly.Note: If there is a label on }this line, it will be given the value of thenew origin. This is not the same as in Mac/65 which could use its origindirect}ive to reserve space (*= *+1). You should use the .DS pseudo-op forreserving space. .OSTurn on (set) the storing o}f object code in memory. (Default) .OU filenameCreate an output disk file for the object code. Regretfully, this f}ile ismade up of individual 256 byte segments much like Mac/65 does. Iapologize for the laziness here on my part, but it r}eally was a lot easierto do this way. You will need to run some type of strip program tode-segment the file. The .OU pseu}do-op should be placed above the .ORpseudo-op. .PR "text"Print a text message to the screen on pass 1 of the assemb}ly. This isgenerally used with the .VA pseudo-op when prompting for values to beentered from the keyboard. .SB [+b}yte] bytes and/or ASCIIThis is in the same format as the .BY pseudo-op, except that it willconvert all bytes into ATASCII s}creen codes before storing them. TheATASCII conversion is done before any constant is added with the '+'modifier.label }.VAWill print a '?', and then accept input from the keyboard. You may enterany value, which will be given to the label in }front of the .VA. .WO wordStores a word in memory. Only one operand is supported. SET label = expressionSe}t the specified label to a new value. This instruction allows a labelto be redefined with different values during the assem}bly. Any label canbe SET.- CONDITIONAL ASSEMBLY -There are four conditional instructions IFE, IFN, IFP, and IFM, thatr}epresent conditional assembly if Equal, Not equal, Positive, and Minus.The operand of the IF instruction will be evaluated, }and if the processorstatus codes match the type of IF statement, then the source codefollowing the IF will be assembled. M}ark the end of the conditional blockof code with the pseudo-op '***'. (*** is like an ENDIF statement).There is no 'ELSE'} instruction, and so you must use complementing IFstatements.Examples: IFN FLAG . ;This block }of . ;code gets asm'ed . ;when FLAG <> 0 *** IFE FLAG . } ;This block does . ;when FLAG=0 *** IFN FLAG1!FLAG2 . ;asm'ed if} FLAG1 . ;or FLAG2 <> 0 IFE WIDTH-40 . ;This gets asm'ed . } ;when width=40 *** IFM WIDTH-40 . ;asm'ed if WIDTH . ;less than 40 } *** IFP WIDTH-40 . ;if WIDTH greater . ;or equal to 40- MACROS -Mac}ros must be defined before they are used in your source. Thedefinition looks like this:!!!name .MD ([label1] [label2]...)}Where 'name' is the name of the macro, and 'label1' etc. are itsparameters, separated by spaces. The three exclamation ma}rks are aspecial macro identifier, and must precede the macro name. If the macrotakes no parameters, then omit the parenth}esis after the ".MD". The bodyof the macro definition will follow, and should be ended with a .MEpseudo-op.The number of} parameters used when calling the macro must always match thenumber of labels in the definition. When called, these paramet}ers will beplaced into the label names, in order, where they can be used in the bodyof the macro. Parameters can only be e}xpressions -- there is no methodfor passing arbitrary text strings. Labels used in the macro definitionare stored in the s}ymbol table along with regular labels. Thus, theremust not be name conflicts between macro parameter labels and programlab}els. I suggest you adopt a naming convention for macro labels, like always starting them with "Z" or something, to make it }easier to avoidname conflicts.Macros can pass up to 8 parameters.Any labels defined within a macro must use a special fo}rm. Because macroscan be expanded multiple times, a special label type exists to avoiderrors from multiple label definitio}ns. These label types start withthree periods, followed by any normal label name. These special macrolabels will be given} unique numbers with each macro expansion to keep themseparate. You can consider them local labels to each macro expansion.}Here's an example of a macro to increment a two byte value:!!!IND .MD (ZLOC) INC ZLOC BNE ...SKP INC} ZLOC+1...SKP .METo call this macro, you would use: IND $80There are more macro examples in the supplied include} file MACROS.- ERROR MESSAGES - These are the error messages that can be produced by the assembler. Errormessages are m}arked with an '!', and also include the source line numberthat they occurred on. If you are assembling a single file, or if} theerrors occurs in your main file, you will be able to use the editor ^Hcommand to jump directly to the errors. For erro}rs that occur in includedfiles, you will need to load in that file, and jump to those line numbersmanually using the ^G got}o line number command. BRANCHBranch instruction out of range. OPCODEError in opcode field. This can be ei}ther a bad 65816 instruction, badpseudo-op, or an undefined macro. DUPDuplicate label definition. EOFEnd }of File error. All assemblies must end with a .EN pseudo-op. Thisshould be in the main source file, not in any included fi}les. This errorcan also occur if a conditional or macro definition is pending at the .EN. UNDEFUndefined label ref}erence. NESTNested definition. Conditional IFs may not be nested. .MD macrodefinitions cannot contain additional }definitions. OPERANDError in operand field. ADR MODEAddressing mode not supported. BAD LABELBad c}haracters in label name. MACRO OVMacro overflow in either the number of expansions, or level of nestedexpansions.} SYM OVSymbol table overflow. PARMSNumber of macro parameters in the call does not match the definition. } LABEL MISSINGMissing label on either a SET pseudo-op or in an = equate definition. does not match the definition. Z- DEBUGGER -- GENERAL INFORMATION -Note: 24 bit support, and the full 65816 instruction set are notcompleted yet. This }is basically a 6502 debugger right now.Filenames default to the current drive number which can be changed.(input of 'FILE'} = 'D1:FILE') A full filespec will override the default.Non destructive prompt character (.) for ease in full screen editin}g.Also, the prompt does not interfere with command decoding. If the cursoris moved up to redo a prior command, the '.' doe}s not need to be deleted.Upper and Lower case accepted.The debugger is ZP clean, so all of ZP is available for the user.}You can look at RAM under the OS, by resetting the bit in $D301, as longas you are using SpartaDOS or some method of handli}ng interrupts whenthe OS is disabled.The debugger uses the E: handler, which can allow two screen debuggingwith some 80 c}olumn devices. (Your program is displayed through the Atari,while debugging output is on the 80 column device.) Currently,} the XEP80does not work very well in this manner, because its screen drivers requirethe Atari DMA to be turned off. You ca}n partially support this by addingan external user function to toggle DMA. More information about this willbe given in a l}ater section. For machines without an 80 column device, thedebugger supports flipping between two display lists, one for th}e E:screen, and one for your program. In all cases, there can be potentialconflicts when trying to debug programs that use} the E: handler themselves,as both the debugger and your program struggle for the same locations. Thedebugger's design is }admittedly not ideal for use in this situation, but itworks out well for programs that create their own screen.Any continu}ous displays can be paused and stepped one line at a time withthe space bar. Press 'C' to return to continuous display. ES}C, RETURN, orBREAK will stop the display. While the display is paused, the V commandfor switching view screens, and also t}he U user function, can both be used.ALL addresses and data bytes can be entered in HEX (default), in DECIMALwith # (#1234}), in BINARY with % (%10011010), in ASCII with ' ('A) or as alabel currently defined in the MAE symbol table with . (.LABEL)}.Arithmetic operators +-*/&! can also be used, and will be performed leftto right. Any combination of these can be mixed }at any time in acompletely free format scheme, with no limits on length.(Ex: 2000-#256+'W/100) Very little will be mention}ed about this featurelater on, but ALL numbers for ALL commands accept this versatile entrysystem.All commands use spaces} as delimiters. A '?' indicates a command error.Parameter uses for commands are abbreviated to:adr: a 16 bit address.by}: an 8 bit byte. ('by' with numbers indicates a string of bytes.)bit: a 0 or a 1.char: an ASCII character.Quantities i}n [brackets] are optional parameters. Default values will beused if they are not entered. All non-bracketted values must b}e entered.Any other upper case characters or symbols should be entered as stated.'Current address' refers to the last disp}layed or changed address, (+$1),and is separate from the current program counter or PC.- COMMANDS - Display Mem}ory. M [adr] [adr][/]Displays hex and ASCII. Displays 24 locations if only 1 parameter.Displays from current adr if no} parms. '/' = to $FFFF. The '/' can beused on all other commands as well. Does not display ASCII controlcharacters when }output is being sent to an external device. Peek Memory. P adr1 [adr2..] [*]Special memory display that al}lows multiple addresses to be entered, andonly prints one byte per address. * causes a continuous print of the listof addr}esses, and is really useful for finding keycodes from $D209, orexamining any locations that have changing data. Push Break }to abort thecontinuous peek. Change Memory. :adr by1 [by2..by8]The change memory command ':' can be entered} directly, or edited from thedisplay memory command. Only 8 data bytes will be changed. You cansubstitute the character =} for the adr, which will then use the currentaddress. This allows you to enter successive lines of bytes withoutrequiring }any other addresses. Ex::600 1 2 3 4 5 6 7 8:= 9 A B C D E F ASCII Mem Change C adr ASCII_STRINGStores ASC}II string at adr. Disassemble D [adr]Disassembles memory starting at adr, or the current adr if not entered.The }disassembly code, (the instructions -- not the hex bytes), can bemodified using normal screen editing. This gives you a sin}gle lineassembler process that is a direct link to the syntax processor in themain assembler section. Therefore, it uses t}he same format, and has allof the same features as any one line of code that you could enter in theassembler section. You }can use labels, < and > operators, and evenpseudo-ops! You can enter branch instructions with an address like "*+8",which }means the current PC +8. The only restriction is that you cannot usea macro call. You can enter 816-only instructions, bec}ause the assemblerunderstands them all. However, after you press return, the disassemblerwill not be able to properly disp}lay the code you just typed. So eventhough it will assemble the code correctly, you won't be able to see it inthe debugger}. Another problem, is that the disassembler will not know howmany bytes were required by a line of 816 code. It will assum}e that allunknown instructions are one byte, so anytime you enter a multi-byte 816instruction, the address displayed for th}e next line will be incorrect. Itwill be one byte past the line you just entered, which will be in theoperand field of the} last instruction. For now, it is up to the programmerto be aware of how long the 816 instructions really are, and ensure t}hatthe next line is typed at the proper address. Anytime you need to changethe address on a disassembly line, you need to }move the cursor up and thenback down, to reset the Atari screen editor for accepting the entire lineof text.Single line a}ssembly can be started from scratch, (as opposed to editingan existing disassembly), by typing, "-adr ." followed by an Asse}mblymnemonic. (The '.' is necessary). Such as:-600 .LDA #0Because the period is a marker for the beginning of the inst}ruction field,entering a pseudo-op will require two periods. Such as:-600 ..HE 55 AA FFThis gives you additional method}s for putting bytes into memory. Since theregular Change Memory command is limited to 8 bytes, you can use the above.HE fo}rmat when you want to enter more bytes than that. Or use .BY whenyou want to enter mixed strings of ASCII, HEX, and DECIMAL}. Maximum lineentry length is always limited to 80 characters though. Other pseudo-opsthat can be useful are, .DC for blo}cks of constant data, and .SB forATASCII screen code bytes. You can also enter the .24, .AB, .AW, .IB, and.IW pseudo-ops t}o control the size of the operands that you enter, just asyou would need to do in the assembler. None of the other pseudo-o}psproduce useful results, and some can be hazardous to use.From within the single line assembler, you may enter '*' as the} firstmnemonic character to continue disassembly from that address forward. Display Registers RDisplays 6502 r}egisters in this form: ,A X Y NV-BDIZC SP ;AB 5D FA 10110001 FF 7014 LDA #$00 Change Registers ; register} bytesSupports screen editing of R command. Status flags can be modified in bitform. When entering values directly, a com}ma will skip to the nextregister, and you don't need to enter all the values. EX: ';55' willchange the A register to 55. }';,,20' will change Y to 20. Goto G[S] [adr] [*brkpt] [C by] [r by] [Pf bit]Run program at adr, or} PC if not entered. At any time during execution,the Break key will return to the debugger and display the currentregister}s and PC. Use the 'S' option to run code that ends in an RTS.(Note: When using the S option, the PC adr in the register di}splay onreturn is an internal address, not the address where the actual RTSoccurred.)A breakpoint will create a return po}int to the debugger whenever aparticular address or condition is reached. *brkpt will place a 00 (BRK)at the breakpoint ad}dress. For this reason, breakpoints can not be usedfor programs in ROM. A '?' will be printed in this case. The breakpoin}tmust also be set at an opcode rather than an operand location so that itwill execute. The rest of the parameters add cond}itions to thebreakpoint.C + by Counts the number of times the breakpoint is reached. Executioncontinues until the BRK is} passed the specified number of times.Breakpoints can also test for specific conditions by specifying (r) regname and (by)  }byte it must contain in order to BRK. Processor flags canalso be tested by 'P' + flag character + (bit) for condition. Use } theflag characters as in the register display.The breakpoint will be skipped over until the specific condition isreached }. When both count and condition options are used, the count willapply to the number of times the condition is met. Executi }on speed willbe slightly slower than real time in this mode. Actual speed will dependon how often the program is interrupt }ed to check conditions.NOTE: A peculiar bug in the 6502 chip causes breakpoints to beintermittently skipped over. When t}he BRK interrupt occurs, the programcounter+2 is pushed on the stack, but instead of jumping through theinterrupt vector, t}he OS will occasionally just return to the program atPC+2. This is usually a very rare occurrence, but can happen more ofte}nwhen using conditional breakpoints on very small and quick loops, thus BRKinterrupts are occurring very rapidly. It took }many years before I wasable to really understand what was going on, and be assured that theproblem was indeed in the 6502, }and not a bug in the debugger.ADDITIONAL NOTE: This bug does not occur on the 65816 processor! Go command examples.G} 2000 = Run program at $2000G 4000 *4124 = Run at $4000, and break at $4124G *3100 A'Q = Run at current PC }and break at 3100 when A register equals ASCII 'Q'G *4200 C10 PZ1 = Run at PC and break at 4200 the 16th t}ime the zero flag is set Remove Breakpt *Brkpts remove themselves, and replace what was th}ere when the BRK isexecuted. However, in case the program stops at other than the brkpt, *will remove it. This can occur }when the Break key is pressed, conditionalor count values are not reached, or when the BRK is set in an operandrather than }an opcode. Setting a new brkpt with the G command will alsoremove an unused BRK. Exit to DOS X } Return to Assembler A Fill Memory F adr1 adr2 [by1] [by2 by3...]Fill memory with 0 if no data bytes. O}therwise enter 1 byte, or a sequenceof any number of bytes to fill with. Transfer Mem T adr1 adr2 adr3Mov}e memory from adr1 through adr2 to adr3. Handles overlapping moves. Hunt for chars H adr1 adr2 by1 [by2...][}?] Hunt for String H adr1 adr2 'ASCII string [?]Hunt memory for ASCII string or string of hex bytes up to leng}th of 30.Use '?' for a wildcard to match anything. Note that the default wildcard byte is also $3F hex, meaning that any s}earches with 3F in a hexstring will be treated as a wildcard as well. See the next command forchanging the wildcard charac}ter in cases of interference. Realize thenumber entry system will let you search for things like "A9 'A", (as inLDA #'A),  }but not the reverse of this. Entering "'A A9" will put the huntinto full ASCII form, and search for the literal string that!} you typed in.The second example can actually be entered in the form "? 'A A9", using awildcard to avoid the initial ' iden"}tifier. For one more example, let'ssay you wanted to search for a JSR to a MAE defined label. This can beentered as "20 .#}