Acorn CPCPMDISCâîú~ÒÊæyëÏGreetings from Clean End - Ian Mark Neil Simon Dirty End - Dave Ian John TobyBoss Man - Howard >2.>ý끊P$TlLll##/M  0T!!P~#G˸ 2g:_^#V>!g(5!>͌>!} O!g6 yÞ..>} .>!>y&>.>0ɯ=.!!!y! >.!o>.!>}ȯ=:̀>"h>|!6( (!&l͎Printer off linèl͎SPACE starts Printer Sink ͢(ͮ .>.>l ͺ*hͺMͺLͺȯ{ ~#(ͣ ͬ> Oú͎ Not a CP/M system disc in Aͮ1ͧ2!C D:O8yO122C2D3͓͎ Acorn CP/M 2.2 - Bios 1.20 ͎!܆#7!R 2222Ϳ*">!>22!"!"C: 2y2`i!y2o)))) y2s12>22>2/s12y2 >2:2:2:2:(1=2:! $:! :! 4~86!422<22:2!~6(":! :! :!($::2:2:2:2:o&)))))))r[: >2::{2:-w>S(M:(:! :!(!:w:2I>2>->K w>22:2:P8 O:2>2:ͬ2!cͤ(S M͎ Bdos Err On :AOͺ͎: R/O (Disc is Write Protected)ͮR(r(>2O! ~rS"&S*j 2,:ͬ!% r>!r[w*rRR0[y*tR *{:vȯ2:!!rw:(  :8ɯ= F<(!͎Running BOOT.COM ! 9<,<(͎Submitting BOOT.SUB !͎BOOT.SUB present but no SUBMIT.COM BOOT SUBMIT BOOTSUBMIT COMBOOT SUBBOOT COM\X COPYRIGHT (C) 1979, DIGITAL RESEARCH _͌> ͒> Ò> Ò͘~#͌ì _2<ԯ2 Շ!۶2:2a{_:۷ʖ:۷>Ľʖ:=2–!B!6#5ʖ:۷Ľ!ͬʧ )!F#xʺ~0wëw!" !~6ͽ:ý(!#͘*~ "ַ"͌#>?͌͘ =_.:;<> Oօo$>!Y2*O"ʉ@G:ʐ:wÖx2p0ʹ#*©6?ëw˜0ï#6 ¹.0#*6?w0#6 #6" #~?  xDIR ERA TYPESAVEREN USERt !yO#< Ty#O 3ׯ21y_͸2y2ͽ:Է˜1͘A͌>>͌92^ :۷¥.!_~#fow]٭ڎڥ!v"!çREAD ERRORçNO FILE^:۷ ! ~ 3#0 Wx x ր ւ G ~ # 3x~#B!Y~ɯ2:۷=!۾ý:۷=!۾:ý^T!~  6?#ˆ:`O> K{͘A͒>:͒͢>:͒͢xK > K > ͒x  ͢ØÆ^ BRͧ9!5‚#~Y‚#"T<ÆALL (Y/N)?^ Tʧ͘!6!~ڇ ٯw4!Y~ʆ͌†t=ʆf ^ T ٯ2o&)|+!<ͧÆNO SPACE^ :Ty!B*O=?_s#"^sG!~Yڸpsp2mÆÆf ͧÆFILE EXISTS _: É: :۷ʉ=2)ͽÉ T!@k!}|q=qf^!~2>`~2ۯ2\!!B!~> >#0~O#Cx2͘1)ͽÂf zͧÆBAD LOADCOMf^: !۶ Â$$$ SUBt ܙܥܫܱ"C{2!"E9"1A߯22!ty)K!G_^#V*Cސ~E ,&-AGMSߛ!!ô!ô!Bdos Err On : $Bad Sector$Select$File R/O$:BA2!~6 O͐  :߷E B 2>: ߷b# : ߷y! 4 5~yy5 6yҐ^H@Oy H H: –ͬ  #H: ! ߾ Hù H H $O͐: 2 *CN# x: 2 p&>~+é7ݯ2 H! >w_: ! ߾5ͤNkͱ¦ͱxʊ#Nx: ߷! ߖ2 ͤ! 5™#wO~x½p Hy<< ʑ :!qMD#2E>! ^#V w#P:BO|^#V#"##"##"##"!O*!O*|!6ʝ6>*w#w*w#w'û*! J*""!N#F*^#V*~#foyx*{_zW+*yx#*DM*s#r*s#ryOxG*0MD!!N: EG>O: \S*C :qn& ^#V>O^"*}:*)=":O:页o"*C *C!ͮ~2~2ͦ:2ͮ:O:w:w |g}o*鯆# ):BO!yoxg*:BO}!N#F "*#*s#r^ ~!J! J*:o$*C~i6iw**{#zr+s{ozg**͕** ,w͜͸Ͳ!!N#F$**O!~#:A߾#~$=2Ek͌::/GyO>2!q*C"͡ʔ*JҔ^:Oyʃ?|x | s-|N-# S:2E!~Яw>T D^6k-äPYy 5*{zBK5ڋ>*Cw~#+w#w+ɯ2E22i^ *C :~w~͔͔# #  w ~>2!E5T*C!"C"C!w# F! w͌x2͢*C ~<wʃG:!ʎì 4~ʶ¬:<ʶ$ʶïZͻx>2>2ͻ:!Z2:E߷ẅ́͊Ͳ>2>2T*CGͻ:ẅ́n>2;O ^DM;}H>"*C ::ddslO s#r:E߷͊:==»y==»*Ww#*"͸*:G#š"͸:!w4!iw:Z!E~=262*C!!~~#~O~G#n,-.‹! w! yG!x͢.:E<ʄ! q!pQ:E<. ʄ$.:E<ʄi6}2ExN! ~态O>G~G!~G} *C!r#r#r ^ͥ_y#x#{s+p+q-*C ͥ!!q#p#w*:BOYG}*MD "ã:!B߾w!>2*C~=2u:B2~2wE:A*C߶w>"!""2B!"!rQQQâ~?ͦ~?rQ*"CQ-Q͜QüQrQ$Q*):B"*)*)Q;*"E:;:A2AQÓQÜQ*C}/_|/*W}_*"}o|g":ʑ*C6:ʑw:2E**E}DQ>2NEWFILE BBC BOOT SUBMONZ80 BBC7 ROM BBC READDFS BBC FILEHANDBBCZCPR_D&JCOM ZCPR_D&JCOMZ80-MON DFSJ !Z80-MON BBCK"#$&8ZCPR MACABCDEFGHIJKLMNOPZCPR MACQRSTUVWXYZCPR DOChZ[\]^_`abcdefgh6502-Z80BBC %ZCPRDEMOCOMijBBCBASICCOMn'()*+,-BOOT BAK.PIP COM\ H\ Open =&3237 RJP OSFIND \.openout fLD A,&80:JP &218E p.openup zLD A,&C0:JP &218E .try_first_save LD (load_block),HL:PUSH HL PUSH DE:INC DE LD (load_block+2),DE LD (load_block+10),DE EX DE,HL:INC HL:ADD HL,BC LD (load_block+14),HL  load_set_up LD (load_block+8),HL LD (load_block+12),HL LD (load_block+16),HL -LD HL,run_load_entry:LD (load_block+BBCBASIC FILEHAND : 7:'141;10;"Z80 BBC BASIC"'141;10;"Z80 BBC BASIC" ''" 1 : BBC File handler" '" 2 : CPM File handler" (::A$=:A$="1" A$="2" 2 A$="1" "NEWFILE" ;2 start=&B200  P=0 1 P%=start ([OPT P*3 2JP lang <B &4C:W &8000+&3800 FB &E8 PB copy-start ZB 0 dM "Z80 BASIC" n.copy xB 0 M "(C) 1989, J.G.Harston" B 0 W start:W 0 .lang LD HL,start+&100 LD DE,&100 LD BC,&3A00 LDIR LD A,239:LD L,8:LD H,0  &FFF4:\ Set proc. to Z80 LD A,&2A:LD (&F8E4),A LD HL,6:LD (&F8E5),HL \ Make Osbyte84 do LD HL,(6) LD A,&C3:LD (&5),A LD HL,&F200:LD (&6),HL \ Put JP at &0005 "LD DE,error:LD BC,20 ,EX DE,HL:LDIR 6EI !@XOR A:LD (&80),A:LD (&FCA3),A JLD A,90:LD L,9:LD H,2 T &FFF4 ^LD A,L: 15:JR Z,not_break hLD HL,osc_inter rLD DE,&FDB4 |LD BC,30 LDIR LD HL,&FDB4:LD (&FFF8),HL LD HL,&FDC3:LD (&FFF5),HL LD A,138:LD L,0:LD H,&CA  &FFF4:\ *FX138,0,&CA .not_break JP &100 .error )RST &38:B 255:M "Call to &0005":NOP .osc_inter LD (&FDB0),SP:LD SP,&F280  &F6B7 LD SP,(&FDB0):RET .byte_inter LD (&FDB2),SP:LD SP,&F240  &F88E &LD SP,(&FDB2):R 7 [ REG$(7),DREG$(7),ALU$(7),COND$(7),ROT$(7),BIT$(3),BLK$(3),INC$(15),IXY$(1),CALC$(&41) L=013: INC$(L): (L=07: REG$(L): 2L=07: DREG$(L): <L=07: ALU$(L): FL=07: COND$(L): PL=07: ROT$(L): ZL=03: BIT$(L): dL=03: BLK$(L): nIXY$(0)="IX":IXY$(1)="IY" xL=0&41: CALC$(L): off=O%:rst=0:asc=2 d@C "Data read" DNB  Data for instructions > INC,DEC,POP ,PUSH,RET ,CALL,IN,OUT,DAA,CPL,SCF,CCF,DI,EI  B,C,D,E,H,L,(HL),A  BC,DET 0] :'"Z80 BASIC base" !D"**SAVE Z8R ";~start;" ";~P% tartopyang-ot_breakrHL,osc_inter rLD DE,&FDB4 |LD BC,30 LDIR LD HL,&FDB4:LD (&FFF8),HL LD HL,&FDC3:LD (&FFF5),HL LD A,138:LD L,0:LD H,&CA  &FFF4:\ *FX138,0,&CA .not_break JP &100 .error )RST &38:B 255:M "Call to &0005":NOP .osc_inter LD (&FDB0),SP:LD SP,&F280  &F6B7 LD SP,(&FDB0):RET .byte_inter LD (&FDB2),SP:LD SP,&F240  &F88E &LD SP,(&FDB2):RE,HL,SP,AF,NN,IX,IY ( ADD,ADC,SUB,SBC,AND,XOR,OR ,CP ,NZ  Z,NC,C,PO,PE,P,M % RLC,RRC,RL ,RR ,SLA,SRA,SLS,SRL  ROT,BIT,RES,SET  LD,CP,IN,OUT  jump-true,exchange,delete,subtract,multiply,division,to-power,or,no-&-no,no-l-eql,no-gr-eq,nos-neql,no-grtr,no-less,nos-eql,addition { str-&-no,str-l-eql,str-gr-eq,strs-neql,str-grtr,str-less,strs-eql,strs-add,val$,usr-$,read-in,negate,code,val,len,sin I cos,tan,asn,acs,atn,ln,exp,int,sqr,sgn,abs,peek,in,usr-no,str$,chr$ " not,duplicate,n32:(?L2)>127 129 133 0 Q=127 Q=255 : Q<32 46 Q D::: -N7:" ********* Z80 Monitor *********" X 28,0,24,39,2 b:O%=off Al0,2)"PC: &";_DHEX(P%-off)20,2);"Code addr: &";_DHEX(off) v':_LIST  asc<2 1,9);"]";8,9)"" 0,0);:rst=-1:_LINE(P%) h0,15);"L List dissasembly"'"RETURNforward 1"20)"+forward 8"'"DELETEback 1"20)"-back 8" E"OSet code address TAB";: asc=1 "HEX/ASCII" "ASCII/HEX" G"MSet Program counter"'"QDUMP/LIST"16)"SPA-mod-m,jump,stk-data,dec-jr-nz,less-0,greater-0,end-calc,get-argt,truncate,fp-calc-2,e-to-fp,re-stack,series-06,stk-zero,st-mem-0,get-mem-0 ,ݤ_DREG(n) 6 n<2 =DREG$(n) @ n=3 DTA ,J ixy xyflg=1:=IXY$(ixy-1) =DREG$(n) T aflg=0 ="SP" ;^ aflg=1 ="AF" NUM=NUM+2:="&"+_DHEX(ADD?1+256*ADD?2) hݤ_REG(n) r n<>6 =REG$(n) A| ixy=0 =REG$(n) xyflg=1:="("+IXY$(ixy-1)+_IND(?xyADD)+")" ݤ_IND(n) +NUM=NUM+1: n<128 ="+"+(n) =(n-256) ݤ_HEX(n)  n<16 ="0"+~(n) =~n ݤ_DHECEMove past code" *"TEnter text"20)"YEnter message" Q$=: Q$>"/" Q$<":" DfC  Q$=13 P%=P%+1:DbB  Q$=127 P%=P%-1:DbB  Q$=" " P%=P%+NUM:DbB  Q$>"`" Q$=(Q$-32)  Q$>"@" Q$<"G" DfC  Q$="L" DzC > Q$="T" "Text: "A$:Q=?(P%+A$):$P%=A$:?(P%+A$)=Q:DbB _  Q$="Y" "Message: "A$:Q=?(P%+A$):$P%=A$:?(P%+A$)=Q:?(P%-1+A$)=&80 ?(P%-1+A$):DbB  Q$="Q" asc=asc 2:DbB 3  Q$="M" "Address: &"A$:P%=("&"+A$)+off:DbB F* Q$="O" "Address for code X(n):n=n &FFFF =_HEX(n 256)+_HEX(n 256) n_LINE(ADD):A2=ADD:add=ADD-off:NUM=1:ixy=0:Z$=_DECODE:_DHEX(add);: L=1 NUM:" ";_HEX(?(A2+L-1));:  <16 16); + L=1 NUM: ?(A2+L-1)<128 135 129 9 (?(A2+L-1)&7F)<32 ?(A2+L-1)=127 46 ?(A2+L-1) :135:(25-);Z$: _LIST: asc<2 TRB Cdata=0:rst=-1: A=P% P%+16:_LINE(A):A=A+NUM-1: =14 A=P%+20 : @ L=P%-32 P%+33 8:" ";_DHEX(L-off);"";: L2=L L+7 " asc=1 _HEX(?L2);" ";:DDB *&Q=(?L2)&7F:address 0000: &"A$:off=("&"+A$):DbB #4 Q$="+" Q$=";" P%=P%+8:DbB #> Q$="-" Q$="=" P%=P%-8:DbB H Q$="*" tvC R Q$=9 asc=asc 1:DbB \t|B :f"FX138,0,"+(Q$):"&"A$:?P%=("&"+A$):P%=P%+1:DbB pt|B z"Start address: &"A$ * A$="" START=P% START=("&"+A$)+off 7"Address for code address 0000: &"B$: B$="" tbC off=("&"+B$)-START #data=0:rst=-1: A=START &FFFF ?_LINE(A):A=A+NUM-1::"Press SPACE to continue...";:DbB  "*"A$: A$: A$="":DNB  Q=&32 NUM=NUM+2:="LD (&"+_DHEX(ADD?1+256*ADD?2)+"),A" >  Q=&3A NUM=NUM+2:="LD A,(&"+_DHEX(ADD?1+256*ADD?2)+")" / (Q &2F)=10 ="LD A,("+_DREG(Q 16)+")" 4 (Q 15)=9 ="ADD "+_DREG(2)+","+_DREG(Q 16) +( (Q 6)=4 =INC$(Q 1)+" "+_REG(Q 8) 12 (Q 7)=3 =INC$((Q 8)1)+" "+_DREG(Q 16) L< (Q &27)=&20 ="JR "+COND$((Q 8)3)+",&"+_DHEX(add+2+_IND(ADD?1)) F (Q &27)=7 =ROT$(Q 8)+"A" &P (Q &27)=&27 =INC$(8+((Q 8)3)) -Z="LD "+_REG((Q 8) 7)+","+_REG(Q 7) $d=ALU$(=17 (-57)=0 DNB : >100 =28 Q=:DNB " at line ";: : : : : ݤ_DECODE #Q=?ADD:aflg=0: rst>-1 =_RST  Q=0 ="NOP" 1$ Q=&10 ="DJNZ &"+_DHEX(add+2+_IND(ADD?1)) . Q=&C9 ="RET" #8 Q=&E3 ="EX (SP),"+_DREG(2) !B Q=&EB ="EX DE,"+_DREG(2) 7L Q=&CD NUM=NUM+2:="CALL &"+_DHEX(ADD?1+256*ADD?2) 1V Q=&18 ="JR &"+_DHEX(add+2+_IND(ADD?1)) ` Q=&CB =_CB j Q=&DD ixy=1:=_INDEX t Q=&FD ixy=2:=_INDEX ~ Q=&ED =_ED  Q=&76 ="HALT" ! Q=(Q 8)7)+" "+_REG(Q 7) ?nQ=Q 63: (Q 7)=6 NUM=NUM+1:=ALU$(Q 8)+" &"+_HEX(ADD?1)  Q=&3B ="EI" rst=Q 8 ="RST &"+_HEX(Q &38) ݤ_CB ' ixy Q=ADD?2:ADD=ADD-1 Q=ADD?1 HNUM=NUM+1: (Q 64)<>0 =BIT$(Q 64)+" "+((Q 8)7)+","+_REG(Q 7) =ROT$(Q 8)+" "+_REG(Q 7) ݤ_ED "NUM=NUM+1:Q=ADD?1 Y, (Q &CF)=&4B NUM=NUM+2:="LD "+_DREG((Q 16)3)+",(&"+_DHEX(ADD?2+256*ADD?3)+")" V6 (Q &CF)=&43 NUM=NUM+2:="LD (&"+_DHEX(ADD?2+256*ADD?3)+"),"+_DREG((Q 16)3) L@ (Q &C7)=&43 =ALU$(((Q 16)4)+1)+" "+_DREG(2)+","+_DREG((Q 16)3) J Q=&67 ="RRD" T Q=&6F ="RLD" 3^ (Q &C7)=&40 ="IN "+_REG((Q 8) 7)+",(C)" 0h (Q &C7)=&41 ="OUT (C),"+_REG((Q 8) 7) r Q=&46 ="IM 0" | Q=&56 ="IM 1"  Q=&5E ="IM 2"  Q=&45 ="RETN"  Q=&4D ="RETI"  Q=&44 ="NEG"  (Q &E4)=&A0 djF  Q=&47 ="LD I,A"  Q=&4F ="LD R,A"  Q=&57 ="LD A,I"  Q=&5F ="LD A,R" ="????" ="BLOCK STUFF" ^ݤ_INDEX:ADD=ADD+1:NUM=NUM+1:xyADD=ADD+1:xyflg=0:Z$=_DECODE: xyflg =Z$ NUM=1:="*NOP" ݤ_RST & rst=1 rst=-1:="Error &"+_HEX(Q)  rst=5 =_CALC rst=-1:=_DECODE &ݤ_CALC 0 data=1 tTG 9: data=-2 data=-1:NUM=0:="to &"+_DHEX(add+_IND(Q)) #D data>1 NUM=data-1:data=0:=" " N Q=&34 data=1 X Q=0 data=-2 b Q=&38 rst=-1 l Q>127 tJG v Q>&41 ="c???" =CALC$(Q) !Q=(((Q &60)16)+&7C)2:DvG :data=2+(Q 64):Q=(Q 64): Q=0 NUM=2:Q=ADD?1 Q=Q 64 ="exponent &"+_HEX(Q+&50) D+1:NUM=NUM+1:xyADD=ADD+1:xyflg=0:Z$=_DECODE: xyflg =Z$ NUM=1:="*NOP" ݤ_RST & rst=1 rst=-1:="Error &"+_HEX(Q) 6),HL LD HL,load_block:XOR A  OSFILE POP DE:POP HL:RET .run_load_entry $LD DE,&3B01:JP load_decode .\ Spare up to &328D 8] BP%=addr(&2192):[OPT P*3 LLD A,13:LD (DE),A:POP AF V] `P%=addr(&1D8A):[OPT P*3 jW openin:] tP%=addr(&1DC8):[OPT P*3 ~W openup:W openout ] P%=addr(&328E):[OPT P*3 \ =&328E LD H,E:JP OSBPUT ] P%=addr(&32AB):[OPT P*3 \ =&32AB LD H,E:JP OSBGET .report  &FFE7:JP &0CE2 NOP:NOP:NOP:NOP:NOP NOP:NOP:NOP:NOP:NOP \  \ .rest_of_eof  OSBYTE:LD A,L ( A:RET 2\ =&32C5 <LD A,127:LD L,E FJR rest_of_eof PNOP:NOP Z\ d\ =&32CC nLD A,2 x.call_args LD HL,0:LD (load_block),HL LD (load_block+2),HL LD HL,load_block: OSARGS LD HL,(load_block) LD DE,(load_block+2):RET \ \ read =&32E5 XOR A:JR call_args NOP:NOP:NOP:NOP:NOP:NOP NOP:NOP:NOP:NOP:NOP:NOP NOP:NOP:NOP:NOP:NOP:NOP:NOP \ \ write =&32FB LD (load_block),HL LD (load_block+2),DE LD E,A:LD A,1:y-pms-S PMsfx Version 2.00 for CP/M Copyright(C) 1990 by Yoshihiko Mino. $Header is broken. $Out of memory. $ !\!l(*}($|2Z2<2<2 2Ng:0i !m ":Zg.]zW{_0>_>Wr$s%, 1 !]> 2f~! #~+ :e 2f:A<¶.!e:j K><  ;:) ]>( (V(v > 2f >\<( ( \!h\<ʤ4 !""""*"&.w,< .w= > 2-.w=>.w=>.w=JP OSARGS "\ ,\ end of spare =&334A 6] @P%=addr(&34E5):[OPT P*3 JJP oscli T] ^P%=addr(&1460):[OPT P*3 h report:] Do NL rP%=addr(&13A3):[OPT P*3 %|JR addr(&13A8):] No SP in INPUT P%=addr(&36BE):[OPT P*3 XOR A:JP &36D9:] In init P%=addr(&0DDC):[OPT P*3 NOP:NOP:NOP:] In END P%=addr(&36D7):[OPT P*3 NOP:NOP:] [ ]  'ݤaddr(A%): test =A%+&5000 =A% ((22<<FFPPZZddnnxx>.w=:A20Q>2~Yͮ!@͜0]8(!8$ ('@8!`(8&@"̈́̈́ ͇͊W:g:-͍W{W:g:-o~ ( ͍188(/8$(8(~͐Ɓ͊!͍Ä́ ̈́G!(͜8(8#(*8*(/82͇0͍-͍@$͐ƀ~ ́̈́W͓_*}o|g0 *~#| *(͊2! ̈́2 :=2@̈́=_!^#V":G:O͇(=!@:>  >!  ̈́! ~(Y# z {2(>2!( >"". . Acorn DFS to CP/M file transfer utility ". (c) R.T.Russell, 03-02-1984 : ( 7 b2''141"Acorn DFS to CP/M file transfer utility"141"Acorn DFS to CP/M file transfer utility"' <: F buffer &7FFF P : &85::': Z: (d "Enter DFS drive/filename:"dfs$' )n "Enter CP/M drive/filename:"cpm$' #x cpm$,".")=0 cpm$=cpm$+".DFS" 1 (cpm$) "File "cpm$" already exists."': "INSERT DFS DISK":  &86: "INFO "+dfs$ : 11:A%=135: X=1 39:X,);:A$=A$+((&FFF4)256): )2{G:226=( #q##p 2x B#~:x w+4#w++~ _*##~ q{Y *w# +C><,#~(#qY *pC:2<22(~"~(!_æ~*"#~/(`8 A(L(C(Q2W2"22yYɯw#GO*W(T7>-#O>p#O>m#OF#>-# x0(2(>2A^#V#"##^#V#"^#V"!~2*##N# ~2J#~2K!] > ]~#.( (~#.( e (~#!"h"j>!m ~#"!#"} 3| (( ':size=("&"+A$,29,6)) = size>&8000 "Sorry, file too big for this method."': "*LOAD "+dfs$+" "+~buffer "INSERT CPM DISK": *RESET * "SAVE "+cpm$+" "+~buffer+"+"+~size  drive/filename:"dfs$' )n "Enter CP/M drive/filename:"cpm$' #x cpm$,".")=0 cpm$=cpm$+".DFS" 1 (cpm$) "File "cpm$" already exists."': "INSERT DFS DISK":  &86: "INFO "+dfs$ : 11:A%=135: X=1 39:X,);:A$=A$+((&FFF4)256): (!(~Y!"~(YͮO>(#o:g~qiVwo%qi~jwo$r%i:-wy2-O*&ozV$_">G y 2fY*!q#z +: @*`( pF !*""!^#V#{_0zW05~+r+s:f(:W \ j (e: J*|(`¡!! 0| p>( !e>0~w#:*(~w\*|O}A (V \\>ɯ'! ͨͨͨͨͨͨͨg>2o>02(7|^# Extract? (Y/N) $ Overwrite? (Y/N) $ Skip this fi`EWXv,Hw?%BG>b߽qg#9TH"(ς峟W0ȤX4J3pl @cQX~zM&p~hH^Æ M i+n @bTkT*kZB(AM'XQ#FӁ8#?ErK є< q<xډaD%DJ됼GnqP (1]E( Ec[$dq% h79Q"-6ޅ1`+֋pgj|3꯬7:V>׆l(b@g1]ކwPݟ hon SK+V-TWZ5Q< q8,0LIL,T n5<qL;^Y6ˆ*G[-l 6ո]ig 6ݓa~M@|RGe$ @4p啃ЩaIR*^Le+\@̛ܱ9Me\z1 TQ։ħ wDDbWgƋa?]Ze߅wj.lh+niYp%Z:s@زd 36r)zG)F296viՋg8@:5ipW2򂖄@ղ%] TIpe"gWWv:5_ c&i %Ȫ8hOFhƎo5[.TO'1J;n%L8_i;9@j*!T&U-'(IǷ k9S:[U7edA%̆ *HЋǘn|/3uqѳbpVϴZG?-!<ҝ=ji N}Jkw&;*zu |t]g=bsy%n-2s*k7R1cfle. $ Unsupported method.$ Displaying $ Checking $ Extracting $OK $ Disk full. $CRC error detected. $-pm2-I ZCPR.MAC3p3DVggr#K!2@" XdHA  _?M-> l()eR" `Gu^LW7t1:#;ۿ4j2h&%>I<&QEMѷ`nL< v1 FQΉ@幆8rC%!.! i2D R`DS.!?\DhpBejql(P+('9&E'M󞌑3vH*ovYZ2!),0ƒY)x׍[` f\Xȶf0g{rSIdQ6 `jVFXVy.pR׷ЛQ'6웆T #Fft0XӬ Wr*|*9լIK2: Tn"k,r)Nhbro#<3R_. 8XLDiC@'= p(C8 "TDcQ_$ERE`% iA^j&9h ֛0Z \r%f"pzJtV;A _C1Py߆5Ў[ !7A`']ѨQ'@(A7l%]1OlAhADgqbMߪ6Kq`@e'E8KVm~FCW:Z;|ۦǒ.k055YPEPd7>Yy^2oAhd< DTy`@;fN6[fmj%`*E^vQ[?n۪-q؉n2=%띍`\|d^ l#BS-+:UBeQ:Ʊ264KS?)|ҝ&mES% Hu},i +FE'=8cKK6NSlTo9s`cOK8mM~_VM:rgښ@?ktVL$9j~bC :Z4P&N9HJZ*)})3^iB bo[HS {bK _M|6I)&6=k-Jr\hIXJC+ۛ4SBUWfN{a/s&ZQԺVj}*lG <;߶JY-;juE^yeꨳs"^zTʺq#t^ƴ3]Ы"e}U7I\!8uSgTc]eJ/rH:|{ZH)Tz-IɧT:DKv VCp^xP%_N oLMC&nv" DJRb+xB.INmI ݷEEjG'xF ;1L`o:ȨCt΄;4t6Y&U{RtJl1u5U, 0رNGEF;?l]E%G/WzhznOTU7K518VL7dzAg7L",YNq1ק9eG*PŌj㒂lШ jE94i,(JPv `sk`*7¨PJp:vv]_|iCz7{ʎ+Φg XLh Mv )jJNp!Rj $cR%o<߬0C峲Gn^_:=.ӓ(X<" k ;@P~X(rKNopyЯ`-K}qQ5yO֙CS.'sOBpzʝwֳ)h-Zr iq]* K@>'K()Qف{YfG^qf oKUvHRpp S`9&fS1~(\QbʛM,yHWK]jL!-v 'CT,sa>J<$9~ xJZWw_r]L8euW&69yI Ŧo4&TK`qm>Xw0T/'r4~6+.:(xC G#řA@ aaN5.!# IL(D9%>a<,Y+6ƣ|Yw;Q_asJ0yB6u%D%_=3_waߔwcubv!1Q"\Gtr!ѽM#r熙h΢QfQrrQp# ,T.*_ ~=8NM֕z&% De7@(^ KG.pGU6^-+ML9礪#M |*oPEq\,jcs7/PƱodӬqWd"_$Z#EIm˵tz*1h %oR0B(E4bWoMƶ,Woy"!:{=x2i i&֙2L 3`'+)>o%c>f4d%]?R4YR9P9D op RJB_ЁwB3垊VASh<ԒC+_J{V$:4(ϥ!LrGLۧBK=?WoR97A 2[mL¿HB|@T (?P[iy DҰͱ zp/ zg )զF Z|DEX!=bA4sk3!BƈRnO asiDJ"@#4 ͧ~Tv@E,dI/E/E)y.^,X z6EP6 QQ`zL נm[Puj||t{7O -fZ}Ŵb#I\&F2p85>4"[EF k1Odg)"5@t(Bg̼>4 #vVo[ L ҎūEaZnzr.*y=t?@k8Xo #K\ߋ7ЖZ[`+w!GwYݮ+['z qb5_Ȩ[ibD6j>dG#-1y~zPw6 $/%yy9i=WfPwcy@TFY:2?AQqq(W~qW^?ki6S=o76_$eK~޿bl!=Ö\by6 z{CfΕ{]}t !:/qHgB=zA/Q*.  =ZKw9 q .d0FgߙT㩍o^_&,"q]pPrVpЯԦof<iRLo2JNl.YJɊ ͑1XȔ&'6rX  DBd ҎW (|Q~!yR8c|U i@aOĺUXY0*[e\l+p"?l0 }a;N 22s)f2řh*C`SA)8˕ckCu.Erh<.A(PF铈&Gu)}p)M8 SμsC\ɅU.5KI*.ci{&_i{`˕w*Z|SQmr E+0nҘ+)9@&|Je%Nw%W ij#̴/u5`r~>gkI]U3k־ !f@ckHTuB~16HutjW)"9(co@l!)#-7Iym.G(sV@_ .BM,\{Lω94;hZ'Ch" (} aRΈgqo\{ʾܝr?$?&f90Q͕fvmu򚲕?x j*WY)p6Չa~-*!~\ ?rIA>t ǧnys,Q6z}@eѕpɝ㽭*(AѬ [;zab۔nkB$[g}P S̩g>gd'" {a;0~i`:Z7ù\oN Vv? +*2hU96߻\y)5oҢaIEF +]x:^E쌜"]rO@{ R09[ 8@NvJ$*uU I/ ~$pHkZvUG!Rbl'~ ]y{b9hZQHwW^A7aҞD@AgX;X+Tx:CIiHqtihos/O6V|pa^7U}=?bÚ2Ƙt9$H)‡8_ î f^r]eće+đ\#D$zjN*=lB:MjM\q0cG,D)¨ԒamAy.?TbRf{l f7 ^6)4,>:_>;p9^t,6̬Yّ ɂ9o.K 03Imb'rzۙU,'YH^:Tr9q.0%@OCݱ8 0Lޡ"Խ;#r >ԑ0C+|M^@oܱ)? @8{iZC%ОvEx7ƅca"$ uO`䄁hʎ #:%MkAHykѝ[ nqזwdG9ɿe__­DҙD,:fnkd J ׂm5<[a/M :U6 %4\:Fy[֮bΠzҌ>,]X {PH( l2N2`0fv'P2ϛȒL*nbMp'ߴx~)uJ;&.2thFOA)5u1:FMBąV#Į#UO`ë O{\i\w#}0cxlx{ c78輶SvٙAEɲ[߰ KK)!nvCGf/r @z#Bk`|p;zdSzNWsSɖ3\K~qudJ|`^N(>A|8ML4w?R%fpc0w5y(v;Y @/9g?Grz*,օ2uh ~Efez6W$"C~W/&Y#-zP_^H5KHfd1j<$Tc*R=n8 jˉB5 ۱:5~f uLHWѪ|h=ǥqv ZfD(>I yD:Wஇc ((UTL!"]TMe5ȍZ)LAGU;P*qoE3 387bْOA4o?jslAD}%%4+'l zJ:|;iTʥQٴ't}@# `3ZwZyGU)l,@݃^WSqFiNP j}>y{,d6}#ѱI(얬ʆlҍn9pKCkQ%Hʢz~swDJ;PVZїiZO-QbŻ%˺ҌTPHQXΠ9L >;@z6K׹e3vߚ%|oSyN !E,q/_[5U8_v&S9*܄u< A#^LeȶޚϾmï{z߸)k\G:%Qq 1n0m46Bș tFTj:ӧ\MA1#$4Ϣ%Ge;wKoVOQ~Eb8r\OTrx:Xk7MP pp C4tY87kixR:n籠+g sq?8 E[m0az%ͯ.TE1-zI` ^Y6l+r U#-9S\7żԌ)YO͇tisY؉ h^N[[@k=.AG GQ ʓ>q"؂Ri- K5-"dht#Kr̙t L䪁/Ѽ'ޙEK0ֲcMĮϝVjC՚'Pj(M"ӄ"RʈQ18$ 8lKs/f [@P;Zr.2f iUlt>ߩtG5$}?QwXk֧NC/oQ%uF2+BI5&Bkdb|5q\+SFІӻFhPEB>r*`O,*=^w`G_Y^ϓ;8%9g^DC{RK㐩7 AuadӎO|]巭ݒvLY2̊4)ބ f=wʴS4cwIl73jk~u2܏MФ~XQjN)/ЎSJ_=S:JYƾX =}e==^fTJG]z[=F,mU~)ɣ*ב7|"ۦ/^_Cmqȇ,``XO d kx,!E@.ßBk򵰝 )νr0WKq#/^Xc^)wwno1P0DSc;|[&T^NxiIE\cܶ)McI>"kF(gEgEBgqiϽ{l8JbxNMrh7V.)|j X Ш@7+bU6 s\DXW(|yA KSسIs5I?ob֯yU /їXw| /wg4qoD%>b~{k_hG:^m<2r{[Yfwb  ~zZuwjs!yyI+o%>OL{~ȷGAnWf <V0\"'<+OZ/Gؕ8G%[Iа+}Ak)-"IŁR ]/l8MM~ii 6%B j,L*(,w9b}YjW *fxbOR{Ѫͪn ~lDoT Џ)ͨys+΢{סpbuđ|nRlquul2lHGDwG8yR@_%̵hR"HB9IRe}|4d"cӠA9ù3I/mm2n ob WL6olUY6zhr_;¦^C,VV3z5ăx2IZrxC6U,7;?lt;2l]-y7T s`}90g`vO8)f1Oo%_:$P rNo@5b*P_d+e},^^W 9~%4oƜ:T_ s:7g>9,sY5?V[#Zi$%i:Y6RI/esA&Tg&0Fc`7#4HYkj _Y?*b <fn^ mȇ3y06a Yңhn zKj5啶VȋK=/7%)WwVmj[QҬͩba,9H?27##?I%[f8>vcu P /F+tG=8)L;C:TibP[WB QN-0xFѺXND鰢Iv }1 # }Z n,8Z ,U>()&RԔ:L/VPx`G E gYZôqpIB6TswZ,vY]s;lƟs#VB J 0]Sl+SH$/Jt48 MwC@Wy΀C:n +&ppdڞ pW|;0JAjF65+&Y9uP"s>.-kRšY,a3wNE"~_S P/BZnܻJ)Ez\[Җg"J7ADXWhS][KEP0,otD@w9"-jh@ Ha7oqUH-iLOu9Θ/}'w' <[I j`{ SZSul_PsT BPt7g ?8 AAТ$,cڝZy&YКnyh8:WɧLUPDbƠ]Dq`*~ێ5SVGPQ{df؞Jq@D .PUDG2>wa'VcBS{nY <-͒e@c½+ts9`[ hTylz攤,^q10ZiTҙaB1jyY5M-|fZj?чO5)_5 ~TljSS_2"[N3A->bݛijfWk#'Rߣ~򻤙i+ = g\pB}lW]WջA=M\7E'BM^SR`rnm8tȐmȷj(>apJq׋߷+#/pL`6[227B>^+{mitsoaeMokރ'Y].YRiJ =+{CCV92;'<-xH ;Ӕ519j2J["i,{为8yZ!pzu7inaqүᷜ@SZ\(Ӧ>t5C)_ʦj4`_e;X2SeL6%ٞI-QC VдˏhPNJ''8v YƧd}:$k bH.6)H,/2 )[Z`x `F؀4gӞihc{z,ÑQ)4k V0SAw(>xO,9tq`kRZ:%-|~WCjِ~Six(?W~4GU!$f i^'?LKO)uk4ȴgsL\mq6a%<Z|0aaæ6Sc0`aƘ?z:Wwf:Zd7\`{"f3~]1&7QǂmѬXKBT^)wd|tp\R]uҮRѧ>sVAV!B^DDñpOO*;-4X1ȭ)xAho}jvzaf1RvP^r-]pZ~wvn.vus,M$h8{T>|rUx,×Q)< ~2q;umֶZUW_L`0EqOtyΆXlt>bt5|1>%_9M:8Z-e|ro~l|@F :=i:}:Lm3kMiz\88iW3ahK;lH$狧^K;'zWl2H}-.Ë!~z|eB9VR{&_ʋ-QN 9$ǵ;+&vM+Ta՝wJQ\Y o5e)4۽9~"\Q+fHN[jDVU.M!2{ ŜM;Ce$dV4\]YIq}Vj_}[M6}w_/$ȣSfbjS@Im{ ~JF~diW"a aU ".b+Cx(YU iPb.{͊UUThsn3)ehPY\Ogfu?+>_ j{;JA.ot5ŵM6!YFY#yIp 0%Jrɚntc/h2 bo3XH2%k+^"3ᲠW\uˆOl-$LrWemd}Q~*TP:OQzYԺi=N 1A&"Q{SF7BE$縧= JS'Y3zcyU n,{ƒ~[O/ /vy87qaǼQ'7Z]<~\ҁt_e @p~7K>CnȭR2dr^oC`EDIVS': )#*& }X#[0wN+Ri}ݮA2c{ossHt80ҌVs3F;PX:f[.iuG1[Z4ԪT,wyrNn<% QZ,l.EȞ{+?אgF-@8aSdV[zX"6%u^?y]ԿjUHy`)h"20 ׀ȊKW/thlhϛtP }3WcFϮYѝ/Pp=˂֫/ҽOKUXѩRsRZ[~&ύe\? JŜ1 U;E1P|#pǏO [NG+fY #ja9 cح,gOV9 nJEt`gIwO "j!Pexߕ}.GˑV]:ڴH=_g-?Ty{WAzjgAuHtH,z;-g!my@5àkR:DdgspQTYC!qHFH`E(Om L]Aݬ))(s-l,Hk$˒%u%M%,;LQ@3Œ@lZaD)Rgb#:&) txq5[}' u)}+ -0<)mTtp][5ax"փ~C #79`J&mг,{ʑRHJ.֐\-°Eŗ&*ETm& j=nw1M{_Lif/ H"'BH"G ;H8 "!::w8Mu{*ɞ-T/×?]]Np 䍅$Lj3LuCVVw!E`BXa^{{8^IAzk9u"{=1 wX2>}g<_͔a[h ^uIk?g涚i8*^fo{`e;){Eo^ )e\Li<(Esy"dE}ߡR+ŗ+|,91hFȧ0kKEZ4G4e_Ov3x< h½B[]в?ގ5ddB'?[+'6DMѝUkEkNF8*nzDyf[-sq=.06(K|jA'yV)7J+=LJ(vZn.qIQEpZ3N%/ŃRiqnؾE-zG4P)F;ޓqz(X}\r &'MD(n#T:MC`7* C6˳tT7.F9H5wS8Ih0R(P9%<0ϐ8r(sI3JYx:&_)t[_-ĪUo.~LQ~ H䘆-pm2-%'s ZCPR.DOC$DTfvx`tl p'<7 C?0ѹAP)L!T 9 O#*Iә%AL1E ͊Q #C| i(5F| DlU8! c0ta1 hWۄ#Ya"J,܉C ;(ʸ쥠H֩YWƸSTu,MY3CVT/Wev:2Ö98w4T LD3m+TkZsߦmlcd#E"#x1_(by29n"5kχnKc~arQ2s6b 2'Fx] V;c%*nH8Ǵȥ pBQ0]nXDz2`yrV8^/kθ]eouxL _>bH61 h#@ )ħ;ѩ= .KRA$2y oFN@AՂ[XƖt,grX =@ќɪ ?0WDW-pITS!-1 AL&f5LhxTTZb#i.?=Gy )X}1sH8x"(^ cD:Tpr?ԟUVMzȯyXoDP W%V{rps յz1|J?%!gCHR,C904ضp 1"d|cEev; EEHb^ŎW=l eڿYbL>y:epz0!a1PshhˀHp AѰcVw K̸̊U$={4hy/瑘cq7J o\%(g_($$ <p{y>?=J`I AD:ᨗ> |.^T@WTːD:`᭘.vT?'\s;@^ =Ù1R :zyQVA=G;u۞+VG[+[՘Aku`!:.ޒDvܑť('K̯V)'\?,C!IDGOFR2LTޅyJ3;-6 1 EAD2 3L>1|&9x rx/՟Tsff,k#Sc c*1D܅Ewj.kaJ].5o#+hعV"\rbjKA2Qd+ 땘OAVy~LZhw2]W 9$EIs3Fla؆OX'Hج\>)\;q#2]f3&4 &ݼ>y@kH~&ҺA~ejãUEWWVUгsJ;CM޸a3I: ;<$vtoƥ-ߧNjTwFH 5iYr;󚨸I1ucνT# ;ߑt հy{V>KsR yC^ ׺V@3/f4*kq JT7ֿWfYT\PdMGoEU-ebuFBwPX !x GHO3d"Y {➶d!IRUmw0(u:UEh2unNn{;݌biO_?`}XⓍٿO(+}-$IҀV@XEid`ѲɻH)*nWd<ݛ VIyW8 d)i7 g~| xM> u!KBR۠r B`8B_Q!HJ\ JT<0h,{S5Iے@[f`fFva}K{FhkMܺG?@ WeIdI8. L1#m(ȹ%'I^É[f4Dlv푏5KmqRz;>tfwIo֗K*. & * sS"oWG jbyEԫ-c1":;o^dO3xKA8<שzo@mOz\ xwgn?p}x_9SD_ݪ`Ls߀ѨqB16k> D@(঵g\Y\Zd<`jku̧d!}@m=lMuF3zy/T4-4l{O`r{5SkP,1'*,)9;u`aa_ɰAc?"/>*#Nl69H`eׇ_;jBF2ϫxnT9D6Ohy5̩DtFl-*lBUĔBk_#|#bz'9JLs˖$|.LQ6Y&77k`.0jɧ@-@獥<"cb$Cx XӾwo0<(tvX.ݖE]* RTOJ_1Htb%Tλnk!ezx p"iEm1p\ʥ_:U} 66ib1WŹ7dʙ}ШPqCX@F:䃚Ekql^UHQ^,(8Z8ThŒJ[&H+*{+LfD-^a)xxkԀN#\ACG(f;.oe|D.JlxS/?gYI6478lN)%lD #&w&s`_!='aZ@4uR"*V,ȭ'x~!xFxLBR+< hy=SsbR!.q7C`k R Mm5̅H5(v[QD+ty'B36!хS m wtI|O.7gL%rfɷ-mQnv23T3iD^ɾn~1Ki -~FIA (Y!*,zo*#gQq?Dh=#ڦ`g.FWYj79Ho]5YGBBBsLk %\DBXh1kY82]N;bZ'Mٜ̬ZCC)eJg8WqՖ>%WHh;CnMcְ f6cFN  |h~l96<%!iokWI`D̏cgiO& Nn<)d0|VW^sK_ )|" &De4dG#ix#C0~E-0iݎ JZ4Dp`k1ΐɤ+9 79? A qhk* ()@+m 7otFґ,Pa=xjٻnB=k\LuG>- 9`}d^K T;wRqP,N{ysaD$!_xv)=`%]B{/{dsO )oWl`AKuŅ- ap&߾!$3et@C0ܐ/񯴟i/!΄) Lv0+|db\XqZKmqdeQ2l `j~WL?-(T)`m<"ܳ\?yӹ??EEwPw%F+WE A$U<߹ݦXt'%)_aM+[I>A`[)&~| k}L&?B@䭛 m%|?hkB<Jq<:̯P¢PJp>>#H={cCpҀQ3- 5XSنj׻o/[2eEpK8.Ѣ:rGʺ4p$m_"dyLSIN'UQ|:м6m.@yiyzh)@tw)xfSi9IwI+6E:Wc[ԷrS9nVz8Y j`^I3]M,j}~E$'7 ˹J/BGDXe+}|Ms]Xܧex(:mzZOg0\OEM }`o03aO0w#qSe߅ևme_T pRf3_%v6FqVEnTm pZ5ymc"ڊ^ƛup@1Py[YL0Z_Zw16^8 -Ég9^4 z\zMm87J# %z1rb0 }{L~i\ m%@Z'$#G5Ae?S^H ,uP-E>h]})rq.E` ƌK XݍS'fq`F;ky[!0י OJ }F)ͮ\Z ɞoDe^Fb`AQOt<#@Z6@\zNcrjAQv!T(pC#fC@?>@;\p"+۟/Z%S&F]wzZl:K]~ }=+MzZU5AUI "ΙJ@kb˜bOn~+:I<ᛉkׇx*?)>"cY~߁D)[=c*\^ͼ*ΡlE3}TVC\jo-{Bσ֬>5eQfX^C&&.3Ʃ@m%zt;N2\nf>#Dd[2aEƭ~A *ļ6zHU5@/oF f[5iܢ'5m|~K%O(k3/ PbW 2B6B٭uJtxc'y{twOcx2˱ @c@/fbah?&^X2i Qr!FAEU|Z7I (%^Ƶ5}(O(эM$t mعFoes ıg8jB޳ɘC)wr(Á%`S)UZxr3IIWK(^wy$wuSD40BB,Ƃmv.0xT^@t,.u.KAʫފ#GmhMU/@{;J>moeᅭMHm&6.n#|ˤ`RGk^6C@ ʍCqhVǐ1ĬMӽ'nݍ:6NvL)LDzX@*=^bΤs6zza0a 0Ij,_xmSqml؉'2t+H6*Ь I 3C1 ƞb|+mi-tS|<^z*Lx弨>9` M!05HI^EKRaV>]LħQ- Ww C!Ԅ_68B4A #HZM\5QZ $`}A?17Nx hJ'LŅwe9 YZirB?fhp7ŭ8!Ud9h0"raIZpYyb%Wy,_͙x80,U&@un*5EkFvbXyHMC. U#?qzNU19 䉄wQK &wrt- IҦX%^=%BUͯΞ}u6N?;88) p^#^W1`;-sz<:(el'M[!5j: %/|Y{ĥΛJLO /yXlPѶoceMpϾf WIrVe Ȩan.OCvx'´x␹{iB!|]vӭШ|T]'ϣ0SPJZ\ۥ9f,4HI| "K{TmWkS`^!230 ,O(4lG{"#E:kj&!QVL8,0xJ JpM,`pWdZN>>",UQ3+3SI8MZ|Y+H0r*l Q̬zͼi'QEkBukh0b) w b!N)}-zUɉHd*rFE݀Yt)d Ÿ"-pm2- ZCPRDEMO.COM=!!$Xxx18E WmK€P1?5LFꦖ>: ( MbI qϑ`DFױ 6&hntÀ[rϝ~I1&e!ՔΥ쎓+\*'ͥLrҳw&-ʗuFxS~Zin* n&!R&6Hv"vQd% ,jAmy"d%DYnAӔlE|4@rA<$|Ã!e2Hח=Ic&a̪֘AKU$+U QOB׌M ֒E%Ÿ8~&b S\` U.9 "GԩjH<O,EH9a"!ӜH0C'X ` wydg4FuH/><򌨇 m? ʗUbH>C{ 1I&չ p1e%] Jm.QH>T~"O#MᱰsObЦ90t}f !FSE3;J̐΋2MU(d?ћ)=Iyb+{vN/7D&K LNE) d"7➆ ѫ @2p] ՉoXeO[&!Mx,XJcKM㘏~OT[tBL·+ fiSE>b!'4v1"+bۃ@GzmO6T@$yyGJҊn*0gBY ^B 3cCTFO5zťeT l^6#!ӓT]JkS} oB6øÝtw!y|h[XHz+>䈖2J\(m2(~wcL[hzdW0`ĉ@Sb{6~ʚ.+ّ?Ҏ- &ƺ^\u!Nm|,Rǜ&Zr;C'Pi2R'oR6FʤF2uٗ^,7+H 5FVo˚ ܃V xQ&cJPn'!K"3]\r|,5?uEnZkWph#_ok'i1)osZ~r] aAdHJcD.`J5&$#EvL!E:5\xl#ogOr WA|YXF䑸yLHNl]()%9P6kS\T(>4wFw$&z)@"j.;{βF|rԸoэ,@<=CQe3yMWPO#|"P£csmCf0l+PUU$hA8`h1؇`1 (Y-Pnkq?NmrϞQ6ƣvF޳m  NwÏ1Qs9:r 7 ml@`2]YB/.F)rA={$$hrrÌ 12兇0XUDMޒWZHtW(HD;m-f |#cMe{?IE,fƒoKV<Ԙ>W3` Zȱ0m*vTЙҋF؋+pSisw~ȇO(t8E jY$oē q̘cWGAt˪# ZptcnِGo" ? ?hgh%-11: ^4A%=P%::A%=A%+line(A%): >hgh%-11 A%>P%+90: h: rosize:wid%=osb(160,10,0)-osb(160,8,0)&FF:hgh%=osb(160,9,0)-osb(160,11,0)&FF:mde%=osb(135,0,0)256: |Bset_  > Z80-MON 1.03a  Z80 Disassembler  By J.G.Harston, (C)1987-93 (#size:wid%>38 mde%&80 &87 2* ctrl% 32,data% 16: D%<4 D%>6 D%=4 O%=0 P err Z menu d n: xXInSc:wid%=osb(160,10,0)-osb(160,8,0)&FF:hgh%=osb(160,9,0)-osb(160,11,0)&FF: 5ݤHex(A%,N%):N%=1+((N%-1)7):="0000000"+~A%,N%) : ݤrm(!&F6,Y%)=&FFB9 &FF $ݤb(ADDRscr: A$,B$:size:A$=132:B$=135:mde%<>7 A$=" ":B$=" " I26::InSc:wid%/4+(ny%>9)+2,"*");" Z80 Disassembler ";wid%-,"*") 0,hgh%-6)A$"RETURN"B$"forward 1"21)A$"+"B$"forward 8"7;A$"DELETE"B$"back 1"7;A$"-"B$"back 8"'A$"L"B$"List d"dd$"y "A$"Q"B$"DUMP/LIST"7; iA$"M"B$"Set Memory address"A$"O"B$"Set code origin"'A$"T"B$"Enter text"8;A$"Y"B$"Enter message "; 8A$"Z"B$"Set machine"4;A$"SPACE"B$"Move past code"; wid%>39 '" N Name display"7"W Address Width S Screen mode"5"0-9, %):(R%16)=0 :=ADDR%?O% 8(ADDR%&C000)=&8000:=rm(ADDR%+O%,R%15) =ADDR%?O% : ݤdump ȋHex(ADDR%,D%);" ";: z%=0 wid%5:Hex(data%?z%,2);" ";:: z%=0 wid%5:(data%?z% 127)<32 (data%?z% 127)=127 46 data%?z% ::=wid%5+1 : ݤline(ADDR%): A%,X%,Y%,Z% 0X%=((O%+ADDR%)&C000)<>&8000 (R%16)=0:Y%=0 X% Flg%<1 !data%=ADDR%!O% X% Flg%>0 Z%=0 12 4:data%!Z%=!(ADDR%+O%+Z%): A%=015+12*(Flg%<1):data%?A%=rm(ADDR%+O%+A%,R%15): Flg%>1:=dump "`" Q$<"{" Q$=(Q$-32) <13+9+127+" +;-=QWSMOLTYZUINR*0123456789ABCDEFX",Q$) Q$=13 P%=P%+1:=0 Q$=127 P%=P%-1:=0 Q$="+" Q$=";" P%=P%+8:=0 &Q$="-" Q$="=" P%=P%-8:=0 0'Q$=" "R!rom: Q$:osb(0,255,0)>6 \osb(130,0,0)<>&FFFF f.131:"Rom: "Q$: Q$="" R%=0 R%=16+(Q$) p z: 'mode: Q$,Q%:"Mode: "Q$:Q$="" AQ%=(Q$)&80:笤arc:osb(130,0,0)=&FFFF osb(133,Q%,0)< +22,Q%:set_scr:wid%<39 22,7:set_scr  : ݤarc=(-256 &F0)=&A0 : diss: A$,addr%,end% <"Start address: &"A$: A$="" addr%=P% addr%=("&"+A$) A"End address: &"A$: A$="" end%=addr%+&8000 end%=("&"+A$) ?"Address for code address 0000: &"B$: B$<>"" O%=("& P%=P%+num%-num%*10*(Flg%>0) :Q$="Q" Flg%=Flg% 2:=0 DQ$="W" D%=4+((D%-3)5):=0 N" IFQ$=CHR$9 Flg%=Flg%EOR 1:=0 X+Q$="M" "Address: &"Q$:P%=("&"+Q$):=0 bAQ$="O" "Address for code address 0000: &"Q$:O%=("&"+Q$):=0 lQ$="L" diss:=0 vQ$="S" mode:=0 ]Q$="T" A$;:"Text: "Q$:A%=?(P%+O%+Q$):$(P%+O%)=Q$:?(P%+O%+Q$)=A%:P%=P%+(Q$ -1):=0 Q$="Y" A$;:"Message: "Q$:A%=?(P%+O%+Q$):$(P%+O%)=Q$:?(P%+O%+Q$)=A%:?(P%+O%-1+Q$)=&80 ?(P%+O%-1+Q$):?(P%+O%+Q$)=A%:P%=P%+(Q$ -1):=0 )"+B$) ,:addr%=addr%+line(addr%):addr%>end%: : osc: A$ :"*"A$: A$: A$="": : $ݤerr: <>17 -1 .#ch%<>0 A%=ch%:ch%=0:O%=o%:#A% 8 <>17 B -1 " at line "; L=-1 V: `-ݤadr(A$):B$,A%,B%,C%: A$,"&FF")=0 =A$ j7A%=A$,"&FF"):B%=A$,A%,5):B%<&FFCE B%>&FFF9 =A$ tex%=3 A$=A$+" :\ &"+~B% ~%B%=B%-&FFCE:C%=B%+(B%>22)+(B%>25) CB%=(B%3-(B%>27))3-3*(B%=24)+(B%>24 B%<28)-3*(B%=27)-(B%=28) ((ex%1) B$=A$,A%-1) B$=A$+" :\ " nB$=B$+"OS"+"FINDGBPBBP IFQ$="Z" PROCmachine:PROCset_scr:=0 Q$="N" ex%=(ex%+1)3:=0 Q$="R" rom:=0 Q$="*" osc:=0 5(Q$>"/" Q$<":")(Q$>"@" Q$<"G") byte(Q$):=0 Q$="U" file1:=0 Q$="I" file2:=0  =Q$="X" : #byte(Q$): A%:"Bytes: &";Q$; :A%=: A%>96 A%=A%&DF ( A%=95 Q$<>"" 127:Q$=Q$, Q$-1)  A ((A%>47 A%<58) (A%>64 A%<71)) Q$<30 A%:Q$=Q$+A%  A%=13  > Q$<>"" :?(P%+O%)=("&"+Q$,2)):P%=P%+1:Q$=Q$,3):Q$<2 * 4: >*ݤosb(A%,X%,Y%):=(&FFF4 &FFFF00)256 H: UTBGETARGSFILERDCHASCINEWLWRCRWRCHWORDBYTECLI",(C%3)*4+1,4):B%<>0 B$=B$+"+"+(B%) (ex%1) B$=B$+A$,A%+5) =B$ : Xfile1:o%=O%:"D"dd$"e text file":"File: "f$:ch%=f$:ch%=0 f$" not found":z%=: εa$=get:a$,3)="PC=":z%=par(a$):Ptr%=("&"+a$,4,z%-4)):x%=0::Data%?x%=("&"+a$,z%+1,2)):x%=x%+1:z%=z%+3:a$,z%,1)<>",":Word%=!Data%:O%=Data%-Ptr%:a$;" \ ";DissZ80 a$ ##ch%:#ch%:ch%=0:O%=o%:z%=: : =ݤpar(a$):z%=a$,","):z%0:=z% =a$,":") : 5ݤget:a$="Data%=Word%:num%=1 ;c%=?Data%:d%=c%7:s%=(c%&38)8:=("FNz80_"+~(c%&C0)) : ݤz80_0:c%=0:="NOP" "@(c%&F7)=&10:num%=2:="DJNZJR ",s%*4-7,4)+" "+jr(Data%?1) ,)d%=7 s%<4:=rot(s%),3+(s%>1))+"A" 6%d%=7:="DAACPLSCFCCF",s%*3-11,3) @Dd%=6:num%=num%+1:="LD "+reg(s%)+",&"+Hex(?(Data%+num%-1),2) J4(d%6)=4:="INCDEC",(d%1)*3+1,3)+" "+reg(s%) T0d%=3:="INCDEC",(s%1)*3+1,3)+" "+drg(s%) ^Gc%=&22:num%=num%+2:="LD (&"+Hex(!(Data%+num%-2),4)+"),"+drg(4) hJc%=&2A:num%=num%+2:=":a$=a$+#ch%:a$,1)<" ":=a$,a$-1)  : Tfile2:"D"dd$"e object file":"File: "f$:ch%=f$:ch%=0 f$" not found":z%=: 7"Start addr: &"a$:a$="" ADDR%=0 ADDR%=("&"+a$) (p%=0:o%=O%:z%=0:#ch%=p%::data%?z%=#ch%:z%=z%+1:#ch% z%>7:O%=data%-ADDR%:num%=line(ADDR%):p%=p%+num%:ADDR%=ADDR%+num%:#ch%:#ch%:ch%=0:O%=o%:z%=: 2: < Disassembly routines: F InitZ80 P Data% 4 Z d: n3ݤalu(A%)="ADDADCSUBSBCANDXOROR CP ",A%*3+1,3) x3ݤrot(A%)="RLCRRCRL RR SLASRASLSSRL",A%*3+1,"LD "+drg(4)+",(&"+Hex(!(Data%+num%-2),4)+")" r8c%=&32:num%=num%+2:="LD (&"+Hex(Data%!1,4)+"),A" |8c%=&3A:num%=num%+2:="LD A,(&"+Hex(Data%!1,4)+")" -d%=2 (s%5)=0:="LD ("+drg(s%)+"),A" "d%=2:="LD A,("+drg(s%)+")" 2d%=1 (s%1)=1:="ADD "+drg(4)+","+drg(s%) Dd%=1:num%=num%+2:="LD "+drg(s%)+",&"+Hex(!(Data%+num%-2),4) @d%=0 s%>3:num%=num%+1:="JR "+cc(s%3)+","+jr(Data%?1) ="EX AF,AF'" : ݤz80_40:c%=&76:="HALT" ' s%=6:="LD "+reg(s%)+","+r(d%)3) ݤr(A%)="BCDEHLFA",A%+1,1) >ݤdrg(A%)="BCDEHLSPIXAFIY",(A%1)+((xy%*4)((A%6)=4)),2) $ݤreg(A%):xy%=0 A%<>6:=r(A%) A%=6 xy%=0:="(HL)" 7A%=6:num%=num%+1:="(I"+(87+xy%)+rel(Data%?2)+")" #(A%6)=4:="I"+(87+xy%)+r(A%)  =r(A%) +ݤrel(A%):A%<128:="+"+A% =(A%-256) Hݤjr(A%):A%<128:="&"+Hex(Ptr%+A%+2,4) ="&"+Hex(Ptr%+A%+2-256,4) Kݤcc(A%)="NZZ NCC POPEP M ",A%*2+1,2-((A% 1) (A%<4))-(1 (A%>5))) : (ݤDissZ80: Word%=data, Ptr%=address & s%,d%,c%,xy%:! ' d%=6:="LD "+r(s%)+","+reg(d%) "="LD "+reg(s%)+","+reg(d%) : Eݤz80_80:s%<4:=alu(s%)+" A,"+reg(d%) =alu(s%)+" "+reg(d%) /ݤz80_C0:d%=5 (s%1)=1:=("FNz80_"+~c%) c%=&CB:=z80_CB "d%=7:="RST &"+Hex(c%&38,2) &9d%=6 s%<4:num%=2:=alu(s%)+" A,&"+Hex(Data%?1,2) 00d%=6:num%=2:=alu(s%)+" &"+Hex(Data%?1,2) :H(d%3)=1 (s%1)=0:="POP PUSH",(d%4)*4+1,4)+" "+drg(s%-4*(s%>5)) D;d%=4:num%=num%+2:="CALL "+cc(s%)+",&"+Hex(Data%!1,4) N;d%=2:num%=num%+2:="JP DCHFILEARGSBGETBPUTGBPBFINDFF0CFF0DFF0EFF0F",c%*4+1,4) f&c%<&40 c%>&C0:num%=1:="DEFB &ED" p4(c%&C7)=&42:=alu(3-(s%1)*2)+" HL,"+drg(s%) zI(c%&CF)=&4B:num%=num%+2:="LD "+drg(s%)+",(&"+Hex(Data%!2,4)+")" F(c%&CF)=&43:num%=num%+2:="LD (&"+Hex(Data%!2,4)+"),"+drg(s%) ((c%&C7)=&40:="IN "+r(s%)+",(C)" %(c%&C7)=&41:="OUT (C),"+r(s%) 0(c%&E7)=&46 s%<>1:="IM "+(s%-1-(s%=0)) '(c%&F7)=&67:="RRDRLD",s%*3-11,3) ((c%&F7)=&46:="RETNRETI",s%*4+1,4) c%=&44:="NEG"  "+cc(s%)+",&"+Hex(Data%!1,4) Xd%=0:="RET "+cc(s%) b,c%=&C3:num%=3:="JP &"+Hex(Data%!1,4) lc%=&C9:="RET" v3c%=&D3:num%=2:="OUT (&"+Hex(Data%?1,2)+"),A" 3c%=&DB:num%=2:="IN A,(&"+Hex(Data%?1,2)+")" c%=&D9:="EXX" !c%=&E3:="EX (SP),"+drg(4) !c%=&E9:="JP ("+drg(4)+")" c%=&EB:="EX DE,HL" c%=&F9:="LD SP,HL" ="DIEI",(s%1)*2+1,2) : -ݤz80_CD:num%=3:="CALL &"+Hex(Data%!1,4) 5ݤz80_CB:num%=num%+1:xy%:c%=Data%?3 c%=Data%?1 9d%=c%7:s%=(c%&38)8:cP(c%&E7)=&47:="LD "+(65-8*(s%=0)-17*(s%=1))+","+(65-8*(s%=2)-17*(s%=3)) G(c%&E4)=&A0:="LDCPINOT",d%*2+1,2)+(73-5*(s%1))+(32+25*(s%2)) num%=1:="DEFB &ED" e JP new_osc+&11:JP new_osc+&E ] "'"Saving Z80 BASIC base code" , tes"+Hex(Data%!2,4)+"),"+drg(s%) ((c%&C7)=&40:="IN "+r(s%)+",(C)" %(c%&C7)=&41:="OUT (C),"+r(s%) 0(c%&E7)=&46 s%<>1:="IM "+(s%-1-(s%=0)) '(c%&F7)=&67:="RRDRLD",s%*3-11,3) ((c%&F7)=&46:="RETNRETI",s%*4+1,4) c%=&44:="NEG" %<&40:=rot(s%)+" "+reg(d%) 8="BITRESSET",(c%64)*3-2,3)+" "+(s%)+","+reg(d%) :  ݤz80_DD  ݤz80_FD -xy%:num%=1:="DEFB &"+Hex(xy%*&20+&BD,2)  ' A$:xy%=(c%&20)&20+1:num%=num%+1 *>c%=Data%?1:d%=c%7:s%=(c%&38)8:A$=("FNz80_"+~(c%&C0)) 4GA$,4),"X")+A$,"Y")=0:num%=1:="DEFB &"+Hex(xy%*&20+&BD,2) =A$ >: H6ݤz80_ED:xy%:num%=1:="DEFB &"+Hex(xy%*&20+&CD,2) R0num%=num%+1:c%=Data%?1:d%=c%7:s%=(c%&38)8 \c%<&10:="DEFW &"+Hex(c%*256+&ED,4)+":\ MOS_"+"QUITCLI BYTEWORDWRCHRta%:Ptr%=ADDR%:$(ctrl%+4)=DissZ80:ctrl%?3=num% %Hex(ADDR%,D%);: Z%=0ctrl%?3-1 &"" ";Hex(data%?Z%,2);::13+D%); Q, Z%=0ctrl%?3-1: (data%?Z%127)<32 (data%?Z%127)=127 "."; data%?Z%; 66:18+D%);:ex%=0 $(ctrl%+4) adr($(ctrl%+4)) @=ctrl%?3 J: ;Tlist(Flg%): A%:A%=P%::A%=A%+line(A%): >hgh%-11: 4^A%=P%::A%=A%+line(A%): >hgh%-11 A%>P%+90: h: orsize:wid%=osb(160,10,0)-osb(160,8,0)&FF:hgh%=osb(160,9,0)-osb(160,11,0)&FF:mde%=osb(135,0,0)256: B|set_s > Z80-MON 1.03a  Z80 Disassembler  By J.G.Harston, (C)1987-93 #(size:wid%>38 mde%&80 &87 *2 ctrl% 32,data% 16: D%<4 D%>6 D%=4 F<Flg%=0:OSWORD=&FFF1:OSBYTE=&FFF4:ny%=0:ex%=0:ch%=0:dd$="isassembl" CFset_scr:InitZ80:O%=O%&FFFFF:P%=P%&FFFF:arc O%+P%> O%=0 P err Zmenu d n: XxInSc:wid%=osb(160,10,0)-osb(160,8,0)&FF:hgh%=osb(160,9,0)-osb(160,11,0)&FF: 5ݤHex(A%,N%):N%=1+((N%-1)7):="0000000"+~A%,N%) : ݤrm(!&F6,Y%)=&FFB9 &FF $ݤb(ADDR%cr: A$,B$:size:A$=132:B$=135:mde%<>7 A$=" ":B$=" " I26::InSc:wid%/4+(ny%>9)+2,"*");" Z80 Disassembler ";wid%-,"*") 0,hgh%-6)A$"RETURN"B$"forward 1"21)A$"+"B$"forward 8"7;A$"DELETE"B$"back 1"7;A$"-"B$"back 8"'A$"L"B$"List d"dd$"y "A$"Q"B$"DUMP/LIST"7; iA$"M"B$"Set Memory address"A$"O"B$"Set code origin"'A$"T"B$"Enter text"8;A$"Y"B$"Enter message "; 8A$"Z"B$"Set machine"4;A$"SPACE"B$"Move past code"; wid%>39 '" N Name display"7"W Address Width S Screen mode"5"0-9, A):(R%16)=0 :=ADDR%?O% 8(ADDR%&C000)=&8000:=rm(ADDR%+O%,R%15) =ADDR%?O% : ݤdump Hex(ADDR%,D%);" ";: z%=0 wid%5:Hex(data%?z%,2);" ";:: z%=0 wid%5:(data%?z% 127)<32 (data%?z% 127)=127 46 data%?z% ::=wid%5+1 : ݤline(ADDR%): A%,X%,Y%,Z% 0X%=((O%+ADDR%)&C000)<>&8000 (R%16)=0:Y%=0 X% Flg%<1 !data%=ADDR%!O% X% Flg%>0 Z%=0 12 4:data%!Z%=!(ADDR%+O%+Z%): A%=015+12*(Flg%<1):data%?A%=rm(ADDR%+O%+A%,R%15): Flg%>1:=dump <Word%=!da-F enter bytes"'" R Rom number"9"U Diss text file I Diss object file X Exit";  28,0,hgh%-7,wid%,2: : ݤmenu:3:: num%,Q$,A% M0,2)"PC: &";Hex(P%,D%)18,2);"Code addr: &";Hex(O%,D%+1)':list(Flg%) # (R%16) 29,3);"Rom: ";R%15 0,0);:num%=line(P%) 6:0,hgh%-10);:Q$=:Q$>"`" Q$<"{" Q$=(Q$-32) <13+9+127+" +;-=QWSMOLTYZUINR*0123456789ABCDEFX",Q$) Q$=13 P%=P%+1:=0 Q$=127 P%=P%-1:=0 Q$="+" Q$=";" P%=P%+8:=0 &Q$="-" Q$="=" P%=P%-8:=0 '0Q$=" " Rrom: Q$:osb(0,255,0)>6 \osb(130,0,0)<>&FFFF .f131:"Rom: "Q$: Q$="" R%=0 R%=16+(Q$) p z: 'mode: Q$,Q%:"Mode: "Q$:Q$="" AQ%=(Q$)&80:笤arc:osb(130,0,0)=&FFFF osb(133,Q%,0)< +22,Q%:set_scr:wid%<39 22,7:set_scr  : ݤarc=(-256 &F0)=&A0 : diss: A$,addr%,end% <"Start address: &"A$: A$="" addr%=P% addr%=("&"+A$) A"End address: &"A$: A$="" end%=addr%+&8000 end%=("&"+A$) ?"Address for code address 0000: &"B$: B$<>"" O%=("&"P%=P%+num%-num%*10*(Flg%>0) :Q$="Q" Flg%=Flg% 2:=0 DQ$="W" D%=4+((D%-3)5):=0 "N IFQ$=CHR$9 Flg%=Flg%EOR 1:=0 +XQ$="M" "Address: &"Q$:P%=("&"+Q$):=0 AbQ$="O" "Address for code address 0000: &"Q$:O%=("&"+Q$):=0 lQ$="L" diss:=0 vQ$="S" mode:=0 ]Q$="T" A$;:"Text: "Q$:A%=?(P%+O%+Q$):$(P%+O%)=Q$:?(P%+O%+Q$)=A%:P%=P%+(Q$ -1):=0 Q$="Y" A$;:"Message: "Q$:A%=?(P%+O%+Q$):$(P%+O%)=Q$:?(P%+O%+Q$)=A%:?(P%+O%-1+Q$)=&80 ?(P%+O%-1+Q$):?(P%+O%+Q$)=A%:P%=P%+(Q$ -1):=0 )+B$) ,:addr%=addr%+line(addr%):addr%>end%: : osc: A$ :"*"A$: A$: A$="": : $ݤerr: <>17 -1 #.ch%<>0 A%=ch%:ch%=0:O%=o%:#A% 8 <>17 B -1 " at line "; L=-1 V: -`ݤadr(A$):B$,A%,B%,C%: A$,"&FF")=0 =A$ 7jA%=A$,"&FF"):B%=A$,A%,5):B%<&FFCE B%>&FFF9 =A$ tex%=3 A$=A$+" :\ &"+~B% %~B%=B%-&FFCE:C%=B%+(B%>22)+(B%>25) CB%=(B%3-(B%>27))3-3*(B%=24)+(B%>24 B%<28)-3*(B%=27)-(B%=28) ((ex%1) B$=A$,A%-1) B$=A$+" :\ " nB$=B$+"OS"+"FINDGBPBBPU IFQ$="Z" PROCmachine:PROCset_scr:=0 Q$="N" ex%=(ex%+1)3:=0 Q$="R" rom:=0 Q$="*" osc:=0 5(Q$>"/" Q$<":")(Q$>"@" Q$<"G") byte(Q$):=0 Q$="U" file1:=0 Q$="I" file2:=0 =Q$="X" : #byte(Q$): A%:"Bytes: &";Q$; :A%=: A%>96 A%=A%&DF ( A%=95 Q$<>"" 127:Q$=Q$, Q$-1) A  ((A%>47 A%<58) (A%>64 A%<71)) Q$<30 A%:Q$=Q$+A% A%=13 >  Q$<>"" :?(P%+O%)=("&"+Q$,2)):P%=P%+1:Q$=Q$,3):Q$<2 * 4: *>ݤosb(A%,X%,Y%):=(&FFF4 &FFFF00)256 H: !TBGETARGSFILERDCHASCINEWLWRCRWRCHWORDBYTECLI",(C%3)*4+1,4):B%<>0 B$=B$+"+"+(B%) (ex%1) B$=B$+A$,A%+5) =B$ : Xfile1:o%=O%:"D"dd$"e text file":"File: "f$:ch%=f$:ch%=0 f$" not found":z%=: a$=get:a$,3)="PC=":z%=par(a$):Ptr%=("&"+a$,4,z%-4)):x%=0::Data%?x%=("&"+a$,z%+1,2)):x%=x%+1:z%=z%+3:a$,z%,1)<>",":Word%=!Data%:O%=Data%-Ptr%:a$;" \ ";DissZ80 a$ ##ch%:#ch%:ch%=0:O%=o%:z%=: : =ݤpar(a$):z%=a$,","):z%0:=z% =a$,":") : 5ݤget:a$=""3 . PROGRAM TO CONVERT 6502 BBCBASIC FORMAT FILE ,. INTO Z80 INTERNAL BINARY FORMAT FILE. . R.T.RUSSELL, 04-02-1984 (: 2 7 < ':&85::': \F''141"6502 format to Z80 format converter"'141"6502 format to Z80 format converter"'' P: Z "d"6502-format file:"infile$' ,n infile$,".")=0 infile$=infile$+".DFS" xfin=(infile$) ) fin=0 "File "infile$" not found"' fin<>0 : ""Z80-format file:"outfile$' fout=(outfile$) " fout=0 "Directory full"': : :a$=a$+#ch%:a$,1)<" ":=a$,a$-1)  : Tfile2:"D"dd$"e object file":"File: "f$:ch%=f$:ch%=0 f$" not found":z%=: 7"Start addr: &"a$:a$="" ADDR%=0 ADDR%=("&"+a$) (p%=0:o%=O%:z%=0:#ch%=p%::data%?z%=#ch%:z%=z%+1:#ch% z%>7:O%=data%-ADDR%:num%=line(ADDR%):p%=p%+num%:ADDR%=ADDR%+num%:#ch%:#ch%:ch%=0:O%=o%:z%=: 2: < Disassembly routines: FInitZ80 P Data% 4 Z d: 3nݤalu(A%)="ADDADCSUBSBCANDXOROR CP ",A%*3+1,3) 3xݤrot(A%)="RLCRRCRL RR SLASRASLSSRL",A%*3+1,3 ."Enter file type (program/data):"type$' type=(type$)&5F ! type<>68 type<>80 11,11  type=68 type=80 :  type=80 program data #0  "; , program *6 #fin<>13 "Not a BASIC program"': @ Jnhi=#fin FT nhi<&80 nlo=#fin:ll=#fin:#fin,l$ nhi=&FF:nlo=&FF:ll=0:l$="" +^ l$,1)=" " l$=l$,2):ll=ll-1: D^A 2h nhi<&80 ll<>(l$)+4 "** Bad program **"' &r #fout,ll: #fout,nlo: #fout,nhi | nhi<&80 #fout,l$  #fin nhi>&7F  #fin bin) ݤr(A%)="BCDEHLFA",A%+1,1) >ݤdrg(A%)="BCDEHLSPIXAFIY",(A%1)+((xy%*4)((A%6)=4)),2) $ݤreg(A%):xy%=0 A%<>6:=r(A%) A%=6 xy%=0:="(HL)" 7A%=6:num%=num%+1:="(I"+(87+xy%)+rel(Data%?2)+")" #(A%6)=4:="I"+(87+xy%)+r(A%) =r(A%) +ݤrel(A%):A%<128:="+"+A% =(A%-256) Hݤjr(A%):A%<128:="&"+Hex(Ptr%+A%+2,4) ="&"+Hex(Ptr%+A%+2-256,4) Kݤcc(A%)="NZZ NCC POPEP M ",A%*2+1,2-((A% 1) (A%<4))-(1 (A%>5))) : (ݤDissZ80: Word%=data, Ptr%=address & s%,d%,c%,xy%:!Dary  ;  binary F%=fin:G%=fout #G%,#F%:#F%  ;  data F%=fin:G%=fout  T%=#F% D T%=&40 i T%=&FF r T%=0 s "** Bad data **"':#G%,T% #F%  ; & i #0A%=#F%:B%=#F%:C%=#F%:D%=#F% #:#G%,D%:#G%,C%:#G%,B%:#G%,A% D#G%,0 N X; b r +lA%=#F%:B%=#F%:C%=#F%:D%=#F%:E%=#F% ?v E%=0 E%=1 "** Underflow **"':A%=0:B%=0:C%=0:D%=0:E%=1 -#G%,A%:#G%,B%:#G%,C%:#G%,D%:#G%,E%-1  ;  s  s$ S%=#F% ! S% N%=1LD "+drg(4)+",(&"+Hex(!(Data%+num%-2),4)+")" 8rc%=&32:num%=num%+2:="LD (&"+Hex(Data%!1,4)+"),A" 8|c%=&3A:num%=num%+2:="LD A,(&"+Hex(Data%!1,4)+")" -d%=2 (s%5)=0:="LD ("+drg(s%)+"),A" "d%=2:="LD A,("+drg(s%)+")" 2d%=1 (s%1)=1:="ADD "+drg(4)+","+drg(s%) Dd%=1:num%=num%+2:="LD "+drg(s%)+",&"+Hex(!(Data%+num%-2),4) @d%=0 s%>3:num%=num%+1:="JR "+cc(s%3)+","+jr(Data%?1) ="EX AF,AF'" : ݤz80_40:c%=&76:="HALT" ' s%=6:="LD "+reg(s%)+","+r(d%) S%:s$=(#F%)+s$: $ s$,13) "** Bad string **"' #G%,s$  ((22<<FFPPZZddnnxx i T%=&FF r T%=0 s "** Bad data **"':#G%,T% #F%  ; & i #0A%=#F%:B%=#F%:C%=#F%:D%=#F% #:#G%,D%:#G%,C%:#G%,B%:#G%,A% D#G%,0 N X; b r +lA%=#F%:B%=#F%:C%=#F%:D%=#F%:E%=#F% ?v E%=0 E%=1 "** Underflow **"':A%=0:B%=0:C%=0:D%=0:E%=1 -#G%,A%:#G%,B%:#G%,C%:#G%,D%:#G%,E%-1  ;  s  s$ S%=#F% ! S% N%=1' d%=6:="LD "+r(s%)+","+reg(d%) "="LD "+reg(s%)+","+reg(d%) : Eݤz80_80:s%<4:=alu(s%)+" A,"+reg(d%) =alu(s%)+" "+reg(d%) /ݤz80_C0:d%=5 (s%1)=1:=("FNz80_"+~c%) c%=&CB:=z80_CB "d%=7:="RST &"+Hex(c%&38,2) 9&d%=6 s%<4:num%=2:=alu(s%)+" A,&"+Hex(Data%?1,2) 00d%=6:num%=2:=alu(s%)+" &"+Hex(Data%?1,2) H:(d%3)=1 (s%1)=0:="POP PUSH",(d%4)*4+1,4)+" "+drg(s%-4*(s%>5)) ;Dd%=4:num%=num%+2:="CALL "+cc(s%)+",&"+Hex(Data%!1,4) ;Nd%=2:num%=num%+2:="JP ata%=Word%:num%=1 ;c%=?Data%:d%=c%7:s%=(c%&38)8:=("FNz80_"+~(c%&C0)) : ݤz80_0:c%=0:="NOP" @"(c%&F7)=&10:num%=2:="DJNZJR ",s%*4-7,4)+" "+jr(Data%?1) ),d%=7 s%<4:=rot(s%),3+(s%>1))+"A" %6d%=7:="DAACPLSCFCCF",s%*3-11,3) D@d%=6:num%=num%+1:="LD "+reg(s%)+",&"+Hex(?(Data%+num%-1),2) 4J(d%6)=4:="INCDEC",(d%1)*3+1,3)+" "+reg(s%) 0Td%=3:="INCDEC",(s%1)*3+1,3)+" "+drg(s%) G^c%=&22:num%=num%+2:="LD (&"+Hex(!(Data%+num%-2),4)+"),"+drg(4) Jhc%=&2A:num%=num%+2:=""+cc(s%)+",&"+Hex(Data%!1,4) Xd%=0:="RET "+cc(s%) ,bc%=&C3:num%=3:="JP &"+Hex(Data%!1,4) lc%=&C9:="RET" 3vc%=&D3:num%=2:="OUT (&"+Hex(Data%?1,2)+"),A" 3c%=&DB:num%=2:="IN A,(&"+Hex(Data%?1,2)+")" c%=&D9:="EXX" !c%=&E3:="EX (SP),"+drg(4) !c%=&E9:="JP ("+drg(4)+")" c%=&EB:="EX DE,HL" c%=&F9:="LD SP,HL" ="DIEI",(s%1)*2+1,2) : -ݤz80_CD:num%=3:="CALL &"+Hex(Data%!1,4) 5ݤz80_CB:num%=num%+1:xy%:c%=Data%?3 c%=Data%?1 9d%=c%7:s%=(c%&38)8:c%ssing No such Bad  rangevariableOut ofNo  spaceroomMistake,Type mismatch"Not ArraySubscriptSyntax errorEscapeDivision by zeroString too longToo big-ve rootLogAccuracy lostExp)HEX/callArgumentsCan't match  syntaxline #͎ ~(Q#^#Vz(++7B0@N#V}2:ØO( x  !:>~(#^#Vz(#7Bҗ":=n6Ͳͷ *:[:~(/#N#Fx(q#p# -q#p#++GN $r86#6[:*:Ny(##^#*×Ä Îòz 4ë2Î221!:6 ,6 ,w, =2:!v":͛6S:":ͪs Acorn BBC BASIC Version 2.20 (C) Copyright R.T.Russell 1983 7{:7!:~0w!":":*:":|( K: -":> Z !872:!8ͧ ͏/|(":9 GK*:|!9ʪ ͎͑ NyʘO*: $r":#RDM(#q#s#r#9 ̓ØANDABSACSADVALASCASNATNAUTOBGETBPUTCOLOURCOLORCALLCHAINCHR$CLEARCLOSECLGCLSCOSCOUNTDATADEGDEFDELETEDIVDIMDRAWENDPROCENDENVELOPEEV#":#s#r# > ͱ)DM*:^#V#B^#V#8( Failed at *: S ͼ ͷ ":y2:) program ͪ*:###> }w̓Ø_> iͲ͎_> [:*:RDM!8r1×{:!8( G# ":{:2:ͪ ":( *:|ª !":":1S 1S Ø!W~F#(#~(#~ #~.(( 8~ +xN *:RDMS:[:!9RDM!8ͻ1Ԫ>͎+6+6$*:> N ( +#(i###":*:6ͣ*:":":!l:p6# ~6 6 > FZ xNĬyVĬ~6 LSEEVALERLERROREOFEORERREXPEXTFORFALSEFNGOTOGET$GETGOSUBGCOLHIMEMINPUTIFINKEY$INKEYINTINSTR(LISTLINELOADLOMEMLOCALLEFT$(LENLETLOGLNMID$(MODEMODMOVENEXTNEWNOTOLDONOFFOROPENINOPENOUTOPENUPOSCLIPRINTPAGEPTRPIPLOTPOINT(PROCPOSPUTRETURNREPEATREPORTREADREMRUNRADRESTORERIGHT$(RNDRENUMBERSTEPSAVESGNSINSQRSPCSTR$STRING$(SOUNDSTOPTANTHENTOTAB(TRACETIMETRUEUNTILUSRVDUVALVPOSWIDTHHIMEMLOMEMPAGEPTRTIMEMi6 ~# (F" * ͱ) C ,(s ~( D (  Q > Z > 7 (::<2:*:Z !W~#Z *:<ЯGN#~#foR Û [:*:R0N ( R8B#^#V":!*:| at line  'R<0=(Z x()T]))7c ~( h>~$(b!(b?(b ~( A~(##I/VN#F#%B>0= U/W~?(!(z>>!z,#m~ ~!:(C!:(<7@&0o~% ~(():##u#t%8F~,(U/#p8+8($($r0 ":z(+6͏/,ª #͏/> !> (PG~)x(*:!LV#*:# kC͏/,ª #F}͎2|͎2}͎2|͎2y͎2K!8 ( ~#͎2> ͎2"!:(::( (0Dͬ::OL(8ˀ#~(;(,(e(+F)J*)yԬͺ@S ê #!":͏/#ʪ +":#(V~#(>' Cx )(&G (L(#, mx(%L(1#~#( >(mL͑ ʧ >)mIͱ!Rʪ >&Iͪ !B>+ V- ;?=ol:--7^#Vz(Ebk##~##(( +~((# 8 ((~ 0~$%<ɯ[:r+sw#w## 8w# 0(( ~((#6#Q >(=6#= ":I͏/-+|-ͧ | . L#! ħ xSillyͧ L#ħ ͑ ~$%(0:?A[?_{?ɯ#{0~ 0˩˙ (,(G8˙" ?a(ˡͧ |ļ  ( *(80@( ( ( 8& !  !   :6#zG{Tw#{?@w#z?@w#*:~#s  ];jw|ê >" ~>$ #OG!L!~ #OIͪ !OB> sL% R P!9Ͷ ~ z> ͨ/!9Ͷ ,>ͨ/$ !9͏/,ª #ê !9!OB(>!I+ (9>8*:>8!#͏/ 8 c s#r> G > ^#V!9͏/( ͏/(U/es#rê !B(!B( !,B> +% -Y͏/,ª #͏/!,B(!Bʪ > x!9YC͏/,ª #͏/zͫ2oͫ2gͫ2oͦ0FYm f=1C##0 d0 .1*CQ10OR0}#`nh M1L( _> {:i{:!:_(wwͲ!":*:>":*: ":n6͏/#:( (8oO! ~#fo͏/ͪ |ʘ1×~ (*:|V^R>[Z >]Z > Z _> !844> Gç (d(w(L(+ʪ 86X_ê ":n6K8 (!:~0w%  >!>FC!,B(!B> ":8Xx!9Y% 8{Xc ~(z rB#V| W##ݫ2gͫ2O!8ͫ2 (w, #( #!96 Lʪ #,(M;(I" = ͺe +z~# ̚y!ˁA >?Z > Z !97G2:~ ##*:~# zO":͏/,ª #͏/>#>*V-(~ª #͏/ª î~ #ʧ /2:ê ͪ S Ø ê Ͳ*:*:L( m͑ >) >":ê 9X{V2ê XV.":ê XV/ê XVͲ":":ê XV[:R[:":rª ê V}2:. #z-*@:#+!xH'0h 0h=U0\K 02x =y0(F x? 7y (O0CydO`y0!C$(x7y%0$Iy0> [@:7R}>}2G Iy0 x?>( > + |   }x Iy0p llu0_C((j`>G\x? y >==y0w `ͺ0 \ͺu !:Ooygxm_!8~#x8x? yyC7y0h(D&>.>v7{ !xxX̪ #!( (+V+":ê V}7~,(; |7#L ê 91ê 9I/V}͎2ê V9͏/, #͏/zs#rx29͐ê m$!!:K1N~FN V^f n0!9OVI/Viê %  XOG(qutut,(u!80? {o|ٻ0eO K:B7(`iK S:*:$rدKѯG(> >#͏/% 88 OGI _ͺ-͏/, ,(>U/) x<=-#͏/zѷG]>p(>Ww#~)!V}x??2/2&x07>x ?O!_7(?~(_( ~#(#~## ~_(8 xF#8D#+-NORLCEXAFAFRRCRLRRDA'CP/SC7CC?HALvEXEXDEHDENEDIMFRETERETMIMVIM^RRgRLoLDɠCPɡINɢOUTɣLDĨCPĩINĪOUTīLDIҰCPIұINIҲOTIҳLDDҸCPDҹINDҺOTDһBI@REӀSERLRRRRSL SR(SR8POPUSEX(SSUANĠXOҨOҰCиADĀADÈSBØINDEI@OUAJ DJNJCAL& KI!EB9G( 8E,I͏/,(~ ,);\͏/: ͏/#=>( (8'S V~,(U/}!:S #VU/ 0m}G> Z !8~#Z ͏/8~ #͏/"#= +8~, #N ( ### +7bk))!>)#0 = ͏/#>-#m#:(] +*@:!:v(*<:7+#~R ::R*@:"@:w(*<:"<:g(|}(::>Ԇ~# >͆B s - S K> Ɛ'@'s RSREL@]]OP](H(I؆(IBD H I،IASNNPP( IGROAWA_(BC(DEA(B A(D)!!c!!Y!^! $X0F!$-%"!:#!!w!|!"#!-0!+!%"S!h$$ !!!"0 !!E"!H#"#h!)!!/&L&<&&R&&*&!&K'&' '))p)O))(n'_)X'('&H'&' '{))k)J))c(x'Z)b')'v))f)E))U)[(b/[p/lb/lp/2/G#͏/2/ #ʁGx: d/p/=ͺ-{K!9C8͚/&9O~-(+b/p/#ͺ-{K!8Ty(Eo͈.`i`i,,O˼f,ͥ-@#ͮ-ͥ-,N#ͮ-'f,6,{f,6,˼#h'#ͥ-͟- .6m&sy}ͮ-ͮ-c(ú#͟- .qxLpvȜ*{~ͮ- If,]$F,{( ->怳˼ͥ- .r@.seoO.v7my*{O}V~ͮ-T$?$Dƀ8--ƀ-O#,'r1f,>| 53"-y8 <-ͥ-͟- .Ht}~L~㩪*ͮ-ͮ-c(ͥ--ր(0/--~7*( /((b/7p/;͏/^b/;p/F%F,F;;,;>FU/-/8#ͅ-ͅ-ͅ-ͅ-ٵo/0>f ,|gI͏/#&(-(+((("(cҁҠ/+:000t.(p% + (G(Nnfnf!&nLځ::o> ## 0!@:O8~#"(  0> ~"#(+>-+.+E>̍+|   Ȑͧ,˼ 1.c(8 D1.'>&1.'&F^V^V80 }ٷO>~# > f| ,˼m|/g}/f,ͥ-͗-c(#h'"ͮ-, ͸! 'f,|˼T~-8y-8T$-ͥ-͟- .57{k|Aa|{7}Z*L}\~ͮ-ͮ-c(#x'h'F/ͺ-_K!9%U/&9goO͏/,> #ͺ-V-}ٷ(=DC8_! x(# ( #((78{ٸ8m/8>67F/ͺ-V-}ٷ( =o0DOͩ&͏/,#( +U/>F/ͺ-V-U/}ٻ0k_>̓&K}obX>VI/}_U/(=O>Cb.~#> >+|g}o|g}o+|g}oo|/g}/oٯ0u0p92ʦ)-9ͫ2oY<&͏/( mDMhCL&vʦ)*81v+*:(*:#*:~#P*:*: *:*:&ٯOgo7v> !872o92 92/O!I!!c(!'f,.ef-|¦)-,v!8͏/;/b ->óv> 8!8 ͺ-!9F9!:͏/((  jj](?Om!:|7 -, S"ͧ,˼{=ٳ,,c(,,f >D+,x,Of,|> A,yր/ƀO!DM!DM>.x./|g}o+|g}o|g}o+|||,,|,DM!DM!>m.,+',,n-h-͸,zW|g h-n-͸, ,|x,x+z'h-, n-(,͕,/!B,,,˼ -͸,> |BKBK>m.z̈.8B?,,,y?Ü(||,,|,DM!DM!>͛.- z ,J, #jjJ(˼- |DM!DM!>͛.ܯ.!R,,,y8--ƀO-˼,|,H ͅ-8,L!9(4,T$#> ͗->|ٴ8->gogoO,-yRR||0-?|"-|E- ( ( # 7ɷ  ͘-͋-͋-ZٷRR͘-ͅ-ͅ-h-)j <AT]T]͗-c(yAOI!8TER9W( K8I!D98 (ͥ-#x'ͮ-ͥ-,#b'ͮ-'!9Ͷ c(Ͷ x'x'Ͷ <#,=( I.8<<^-0͋-, >.-,˺ɷBB0 J?8<+),n$ͮ-c(#@-- -Q@-- -@@-- -0@-- -(!@-- -@-- -!!ٯO~#g#o|#gٯOgo#f)>,8ͅ- ( (Ɛ'@'G͏/~(f!:~!+(!:8,|(˼>-(Gxy00%/8>1.c(G 1.'G> 1.-yO\-˹> xN ݾ( >݆*ͅ- 8 , O|?g*< >>y00(:?0u >0<=- > >8^F 2N(x(B .)j8< BB J ~A87?:?0>=<#+-+_͏/#,> ͏/#)>#{{yGͨ/~~ #Ï/!:֍! xĴ,!ŇO ~#fo>!M7!M7nf^V!M7utsr>!M7> >|}7>{}>]lbVI/VU/!M7srut!M7> ~oggoOm>!M7Vux ( #I/!M7>ê !M7Vut##x(I/!M7>ê . .VI/VI/V>y{z}|+Pz݆_ 8x&+( ~ > 8PXxƁOz0 (;+J+>0B+6.#w#)+ M '6E#x=\+6-#D60( G>:8#604 60+4##F>y(6 # G#~;/~+/8xG~#G +d-xD#~+/#v-8 O 0#| ,,+-,,, |>+ȷ!R!R/!BDM>>#i!y!8:BRR0 ZZ?0=8)jj0շBRR}ê >ê V>}ê VI/V>{}ê !^1~^fdn`}lghyg͝5{54Ͳ3 >Directory full̈́3 B(0>X3<>Close error͝54ͨ3 >File not foundS3 ͝3 B0?{ 1 3ȯw+w!%~#Ą3!K:B S:772(_ͫ27n62 4Բ3ܨ3!L7~+(+>Too many open files[:s#rx!":!\$#q#G43xIG3x+p#N˹4# w133N˹4# FK313x3+~<3\$>#X33~++V+^+fo:U)C>>!M7ut66 6>!!M7s6@8 6̀6S :\=v5ABYŚ6CP͚6DIһ5DRIV85ERAS-5ER-5LOAĵ1RENAMG5REG5RESE45SAVi1TYP2*~#:>~Ä>:7> 7~#7 Bad sum>28!g6"9!c6">!>!-?6!_S_z6 !?7w#8!N#(6 [_!;L_3~(w+++V+^B#3+++6+p+q̈́3S3+˾+w6##ůw#͝343<3>!o3 >CP/M ErrorO$%3>(X3(>Disk full!!4#(\>X3<3\>X3>X3<\ ?(>Bad name>o33!%>Channel{ȇ_!=7^#Vz> e!4!|q#OͲ4" $#Y4"#(t>Bad string~#`?@#~:+x ~##\~.(" ( (=("(?*(  #| N4y%5~#*(. e(+~ #BBCͲ4~%508:8 A8G0))))_#Ͳ4!6%5( 8,~#(##BBCBASIC #%5.( ((~#(~#fo`_4: 64:\={5_*4= -#>\X3< /l 43\~ yX3>Bad command>File exists4ͼ4+ #ͼ4 ȷR>?4 !3\yX3S `_! ~ x> 67{6̀6S :\=v5ABYŚ6CP͚6DIһ5DRIV85ERAS-5ER-5LOAĵ1RENAMG5REG5RESE45SAVi1TYP2*~#:>~Ä>:7> 7~#7 Bad sum>28!g6"9!c6">!>!-?6!_S_z6 !?7w#8!N#(6 [_!;(INP:/OUT:SPACE)(INP:/OUT:SPACE)(INP:/OUT:SPACE)(INP:/OUT:SPACE)(INP:/OUT:SPACE)(INP:/OUT:SPACE)(INP:/OUT:SPACE)(INP:/OUT:SPACE)(INP:/OUT:SPACE)(INP:/OUT:SPACE)(INP:/OUT:SPACE)(INP:/OUT:SPACE)(INP:/OUT:SPACE)(INP:/OUT:SPACE)(INP:/OUT:SPACE) COPYRIGHT (C) 1979, DIGITAL RESEARCH, PIP VERS 1.5$$$ SUB =.:,<> _[]INPIRDPTRUR1UR2RDROUTLPTUL1PRNLSTPTPUP1UP2PUNTTYCRTUC1CONNULEOFDISK READ ERROR$DISK WRITE ERROR$VERIFY ERROR$NOT A CHARACTER SINK$READER STOPPING $NOT A CHARACTER SOURCE$ABORTED$BAD PARAMETER$INVALID USER NUMBER$RECORD TOO LONG$INVALID DIGIT$END OF FILE, CTL-Z?$CHECKSUM ERROR$CORRECT ERROR, TYPE RETURN OR CTL-Z$INVALID FORMAT$HEX$$$$NO DIRECTORY SPACE$NO FILE$COM$START NOT FOUND$QUIT NOT FOUND$CANNOT CLOSE DESTINATION FILE$DESTINATION IS R/O, DELETE (Y/N)?$**NOT DELETED**$$$$$$$NOT FOUND$COPYING -$REQUIRES CP/M 2.0 OR NEWER FOR OPERATION.$UNRECOGNIZED DESTINATION$CANNOT WRITE$INVALID PIP FORMAT$CANNOT READ$INVALID SEPARATOR$1 :2L> ̈́M9 221@:2!o6+6+6!6#6!6#6:G*o .!N6:^*M^!K6!6!6+6' :$::=2K  :ʤ\:ҷ\x'Ͳ:!\͢  :͈'! Ͳ:$: $͈Ͳ!N6' :!Cwͯ !6:^͢c!6{:/>!/H{ͯ :<2Š ::=HҮͯ !6:Ҿ:2 !6::/H͈;!6:> !/> "}*}DM͆ ' ͯ *"!z4 :e !"͆ !z6:|!z '? 2*H#"H!{6:{ր!Ң *{& :{4 2!{4m *":ڹ ͯ !z4I '2!"!q: !4>!S :S! :2*M! ^#V͎ * :w*#" = = = = = ͯ  *M !6q  !6q  !q  *& !6à  !6 à  !60à  *& !6  !6  !6  *& . 1 4 7 : = F P [ f q  HHͯ :!^w:<2:0}:@E}:!S!W6: z!]6:cm!c6:_z!_6l ::,: HHҰͯ : 2ó:E:1:2v!q!*8!*6: >ͦ>ͦ!q:_  !p+q.*   !q*&!p+q*2!p+q*2!p+q*22!p+q*!p+q*!p+q*!p+q*2!p+q* :2!q: " *M n :c4 *M n :2!c:Q !c:2: !:cw>!n !5 Y : { !6!q:!lwҙ  â :0O !q:O| :O| !6:]2l:o'2o:n'2n:m'2m*mMͣ *nMͣ *oMͣ :]:   *}2D" * * *&"!q:UY: Y:ҩ: ʩ:_2ʘ:€!6<:<2!ژ!6 >!]Ҥ; !6:Q::H: !6*M : !6!q:a/>z!!p+q* !q*& *M *M !p+q*!!p+q*"!p+q*$!6  !kp+q*j> >ڪ Þ !qp+q/ *pDM9: :M2r:N!r !:r *r& N!r4 !6:͔: :ͳ.!ws+p+q+p+q:w=2wN *s*u w*s#"s*u#"u' !"*M^7 !x6:!xھ **DM͆ 2yʭ :yʗ ͯ *"*6:2x÷ *"!x4d !"/ !j}=2| !"*KM^'_ !z6:|!z1 */H:_2:!q:A/>Z!/H8: 2::=O>m:W!Q} Hmd>9>!6:2*M!E ^#V͎ڗO **~2*#"m2m͖ 2m!6m!6m!6 m2mͯ m!62m!62m!62m!62m'2:2:TҒ:2!6*ME:2::^Ҳ:<22ý: 2:} >ͯ :i:2:d*M:[ ÷:S:QHI:N<22: H@"2Í202O> c!6Í202O> ڍ*&O*& !sc*&P :w:·>!ұͯ :22:_!6=!6>'!E!4!p+q*0 !r+s+p+q*~$7*>*>H&>*#"*#"> 2:^R͎:!6!6=2:ʙ!6:“H9Ž>!6-e!6ͻ2=2ʺ-é:>>"ͻ2:!!5ͻ2ͬ!\*M:>!(:=2%> >>!F!5+N! ~2!4<2T>>!b}*bMͭz!b~26!~6<+wé>!`ҥ*`MͭҞ!`6!6> :é:(!q:!wO! ~2*& :w>!:!4!6>:N<2N!> *N& N2 !p+q!6!6+6 !6: S: M!6g8:N2M*M8p!6!6!6>!ڕ*&P 6!4z!6!6#6#6!6*M8:ھ:*͇g2ê::¿::,͡A<2O>-:>>!p+q:,!6*DM9:<!6:z 2W!6D*&L :w:<2Ov*:>=20O> ڒ:0:AO>Ҥ::A }}Hͬ!wͻO`idͻV[2O>2:!X!6:!:=O!L NE!4 E E:/.*&L 6$L9k9.Xͯ *KM^020 :020:121'ͳ':²ͯ !G6!"!"7 *M^n/ :a/:H!6:ͯ !&6*M8):[ͱ!N5!6ñ:5!6#6>!ڰ!6:<2O>/:!O!T *M͡H~K:¡!6[–ͱ!N5:2:2!4=:[¼ͱ4:!6:.2O8: :* ͇g:[ ͱ!N5!6:%:<2*6 * 6å!q!6> !d*&I :]>!4A>:<2O* :w:?†!6!q!6?!:ҠgÐ!q*&*~!6:22: :]Hں:A2O>: 2ͯ 2*">!b!ͯ >!`0ͯ !q:E:24J!46*}a!44EJ *KM^'́:‚ͯ !36'n::0:f9OY#9.3'ͳ.:020' 'ͳ'7 6'!j>A+!s!"@͓1!"<**"͓n "Dn"":!Q2҂:X!Wғä:ڤ*MEÓ:ұ@@:O2Mc;!6#6>!)*&P ~"::H:H:H:H"!6!4:_jYO jM*"S*" 3@bl*M1͓!""7 *M^͆ \͔!":͎H*#"ͧÝ/ :>͛9ͯ .*#":_!' !'6!36' :1/!aE*#">z?C9IͲÁ.!6> !ڇ*&' ~2 ʀ: y.*M!4Q>!қ:=2á:2:Ҭ\>!ҿ:=2K:2K!:!:K\: \!p+q͈* copyright(c) 1977, digital research $Error On Line $SUBNo 'SUB' File Present$Disk Write Error$Command Buffer Overflow$Command Too Long$Parameter Error$Invalid Control Character$Directory Full$Cannot Close, Read/Only?$!9"!͇͊!p+q* ͊!p+q*͍2!p+q*͍2!p+q*͊!p+q*͍!p+q*͍!p+q*͍2!s+p+q+p+q:=2ʦ** w*#"*#"!p+q(+*DM*p*& 6:ep\:=DM!  ::=H-\:N2O_og_{ozg^#V))) _{ozg^#V) d^#V|g}o n_{ozgO{ozgi`N#Fogo&og H ©=¨^}'))p)O))(n'_)X'('&H'&' '{))k)J))c(x'Z)b')'v))f)E))U)[(b/[p/lb/lp/2/G#͏/2/ #ʁGx: d/p/=ͺ- K!9C8͚/&O~ɀͧ!t6>!t%\= >!t6:t<2t=O! ~2u b:<2O>9b!60+~9b!60+4:uat:u_2u:uMʉSͧ!v6!"v!|6:|Ҁ!x6 2}:} Hk:} h:}$6 2}$*}M3:}02}O> ͧ3!z6ͭ:}"!}5́ͭ́3*yM"h:}^a A2}O>Vͧ^:}>*z& ~ !z4í!{q*v#"v͙dͧ*vv :{w:x<2xO>}|ͧ COPYRIGHT (C) 1979, DIGITAL RESEARCH DISK OR DIRECTORY FULL$FILE EXISTS, ERASE IT$NEW FILE$** FILE IS READ/ONLY **$"SYSTEM" FILE NOT ACCESSIBLE$BAK$$$BAK$$$-(Y/N)?$NO MEMORY$BREAK "$" AT $1mM"m +!8s~1m!f6-!6]:ͧz2~e:~2O! 6*~& 6$>!~_z*~& w!~5Bx:yͧ*v+"vv ~_{ozg001 $$$$ SUBO=!9 Ÿ!6q!2qC J R q!z z=naO $q$,!;,!Ù!;qz8O! !;,z;qyO! ͣͣW_͕qyO! ͣ͒qy *M  *!M 1m! 6!6! 6: 2Ebͽ!e:d\::eH2 H҆ͽ:e2!:d2e:!2dû :!I¬!: :H2 ҮX:h2iҐ:!ʍ:!:!H:!H,!"! 6#~ F)ͷX:! X):i!h)9 e:!:h2jO>F L>!":i!jHҼ*"+M ~ ʼͲ!f6!h6!"! 6F!f6:h2k!iҠ:i2k:j2h:k!hҶ9 æ:h2j!!6:j2he:! 4"Ͳ*"M ~2!O :! *+"!!6e*!M͛ /$^L:!@OL:! 2͑e:b:! L:h<2hb:! b:hO>!hw:! pX:! …!!6  LÊ!!6ûô:!ʛ͑:! ҩ OҸû:!R†!6G>!!!6 :2.t -? >!!6!6s, !6:xB!6OU2!SB!G6:҃!6:G҃*G& ~2!:G<2G_ Qқ=e  b:!-®! 6:!#¿͇;J:!:!!6Lv:!:Jv: *#"͎:f *g&!lq:l $ !h4:l 1 !h6*lM :hB     !h55!mq:m :hO>H2ny} !m6 !o6:n!oښ *mM !o4‚ !pq:p ڪ >:p :p H:p H!qq*qM͛  ^W :q@2q*qMW   !sp+q*r !up+q *tDM !wp+q*v !zp+q*y2x!|p+q*{2x!~p+q*}2x!p+q*!p+q*!p+q*!p+q*2x!p+q*!6   >>! q* &!p+q*! 6:!B)! >w!"&*o"(R :!C:eR :!DKeX :!K\ͷX :!Lj^ :!Pš͎҇! 6F×͢җ:Ç :!T¨F :!U¾: 2 :!V͎"$DMͩ/ *oDMͩ : 2 :! (::H%^bF : ͎H :!Ay! 6*""&*o"(R͎an͢na! 6R :!F”͢ґ Ä :!J $:2$͢ :=2:<2!*& ~2!ü*""I*M*o/!:":7 e !p+q*DM  =? ) !p+q.*DMF -L *9"`!"b!h6!j6!|6.!=\ -x !e:dʥ *eM \R :xʥ @ *dM \, :x \͕ :x - V :e _ :f w : =e !e:d*eM =e : =e =͕ !]6:x>- !"!76!6!6!66*dM  *dM !6:8!*`*;DM \u 2xʻ>!xҨ- *`*;6:82*`"`:<2w!"`9`h*`*;~2*`#"`"&! 6R*I""ë :!M:H| ! 6>F ͛e: <2 O! Hqy d F : 2! 6*#s#r :!N ͢ *o/ Ҧ Ͷn! 6!"&R! 6o$ Î Ç :!S0 $͢- :2"+s#r!:* *& ~2!:<2 :!W> v :!X³ Z͎\ Ee ð :7/҃ E!76e ͕ :xƒ - ͷ*&"K(Kڰ *KM N͔*K"KҌ :!Z ͎  ͢ : :!  'v!gq:*eM !b+!s{!f!6:!b*b*^DM =ͅ N- *b"b:<2)f!"b!q9bڀ*b*^:w*b#"b!q:6ڶZͅ ʱ- !66*6& :w:6<26!J6*b}:J<2Jm=? :x- : ;*dM .=\ -=ͨ ;: *eM =ͨ .M= -C!q:Y*M !q:a/>z!/H!q*MaҎ:_:!q:ҥ*My:!p+q!'"!6>**ͪ{2**ͪ"*! ͪ":!!!7q:*7M͒:7o$+͛ͪ*$M ~28Om:8 I͇͢u$oqo͛rP! 6!"&*$"(R͎ҔM͢ҡÔ($ҵ! 6R͇vͶ2!*!Mm$"*"M :!w͢:! e2!:! : /HH/Q:! @!!6 R!!6 :!KR$*& :!w:<2dn!:s+q*$";!>6:>/;oH*;#"(";:92=*=& *(M !::=2>/H:=<2=*(#"(æÀ:>*(+"(R:>!66:0O  ú!p+q:/(*DMͩ:  : I N* *DM:aO>!Һ x!: ڦ> ʡ* +" >¡! 6: <2 =O! N͒:  O͒: ! 6:h!o$O* ͸ ! 6 !h6!: 2 3* & 6 : <2 =O! N͒*dM  :sGsu n>!6:<2=O! N͒!">!"͎/Ҵ*+">>!": *#"*""*!".+",*$"**o".!",!36:3{.$:2*o/*!My:<2=O!s Hq**DMͷ! 6: e!"*""?k*&"?*?+M ~2A :hHҏ *&"?(?:A ½8*#" ҽ*?M ~2AO *?"?ҕ!"*"*"^: 2B! 6F:B2 o(>&H6͛9!C6>!Ca R>:C<2C?! 6!"͇͢Ґq"ڊ͛Íq!!6 !!6 !6*!Ma2D*!M͒2!:D/!+w!6e2!͢!Eq!E:!:H:H!Fq*22*,**"0M ~ H3*0"**+"*+">23:2/k!36,*+s#rx:3x*0"*: “**"&*"+"(á*$#"&**#"(*"#""*$#"$*"+""*$+"$*#"!4qM*"*$: *(y"$DM}|C#~ *#"*&DMyxC 1*+":4?w+"$""ͷR: —*$"("҈!"&Ô""&*""&$mڸ*o"(**$"($"O26͛*"M :6w͢:6 *FM8 *FM   Oy2F :FY5>>:!02HO> /!";u*)))*) *H& "PҘ! 6+s#ré! 6"DM!>))덑o|g =±^#V) ^#V|g}o _{ozgi`N#Fogo&og_{_z#W H = LIBX$$$$$$$LIB]>p(>Ww#~)!V}x??2/2&x07>x ?O!_7(?~(_( ~#(#~## ~_(8 xF#8D#+-NORLCEXAFAFRRCRLRRDA'CP/SC7Cg_{_z#W H = LIBX$$$$$$$LIB<&40:=rot(s%)+" "+reg(d%) 8="BITRESSET",(c%64)*3-2,3)+" "+(s%)+","+reg(d%) : ݤz80_DD ݤz80_FD -xy%:num%=1:="DEFB &"+Hex(xy%*&20+&BD,2) '  A$:xy%=(c%&20)&20+1:num%=num%+1 >*c%=Data%?1:d%=c%7:s%=(c%&38)8:A$=("FNz80_"+~(c%&C0)) G4A$,4),"X")+A$,"Y")=0:num%=1:="DEFB &"+Hex(xy%*&20+&BD,2) =A$ >: 6Hݤz80_ED:xy%:num%=1:="DEFB &"+Hex(xy%*&20+&CD,2) 0Rnum%=num%+1:c%=Data%?1:d%=c%7:s%=(c%&38)8 \c%<&10:="DEFW &"+Hex(c%*256+&ED,4)+":\ MOS_"+"QUITCLI BYTEWORDWRCHRDCHFILEARGSBGETBPUTGBPBFINDFF0CFF0DFF0EFF0F",c%*4+1,4) &fc%<&40 c%>&C0:num%=1:="DEFB &ED" 4p(c%&C7)=&42:=alu(3-(s%1)*2)+" HL,"+drg(s%) Iz(c%&CF)=&4B:num%=num%+2:="LD "+drg(s%)+",(&"+Hex(Data%!2,4)+")" F(c%&CF)=&43:num%=num%+2:="LD (&"+Hex(Data%!2,4)+"),"+drg(s%) ((c%&C7)=&40:="IN "+r(s%)+",(C)" %(c%&C7)=&41:="OUT (C),"+r(s%) 0(c%&E7)=&46 s%<>1:="IM "+(s%-1-(s%=0)) '(c%&F7)=&67:="RRDRLD",s%*3-11,3) ((c%&F7)=&46:="RETNRETI",s%*4+1,4) c%=&44:="NEG" P OSFILE=&FFDD:OSBYTE=&FFF4 OSFIND=&FFCE:OSBPUT=&FFD4 newblock=&D000:=newblock ( P=0 1 2P%=newblock 9< (!6 &FFFF)<>newblock [OPT P*3:JP !6:] P%=P%+3 F[OPT P*3 P.cpm_flag:B 0 ZB 0:B 0 d\ Switch flags n.new_load_block xLD DE,(&3ADC):\ Get "LD A,(cpm_flag): 1:JP NZ,&86D LD HL,&3800 LD (load_block),HL INC DE:LD (load_block+2),DE LD A,0:LD (load_block+6),A *LD A,&82: OSBYTE:LD (load_block+4),HL LD HL,load_block:LD A,&FF OSFILE LD H,D:LD L,E:\ H(c%&E7)=&47:="LD "+(65-8*(s%=0)-17*(s%=1))+","+(65-8*(s%=2)-17*(s%=3)) G(c%&E4)=&A0:="LDCPINOT",d%*2+1,2)+(73-5*(s%1))+(32+25*(s%2)) num%=1:="DEFB &ED" e JP new_osc+&11:JP new_osc+&E ] "'"Saving Z80 BASIC base code" , tesL=DE= DEC DE:INC HL .load_loop %INC HL:INC HL:LD A,(HL):LD (DE),A %DEC HL:INC DE:LD A,(HL):LD (DE),A %DEC HL:INC DE:LD A,(HL):LD (DE),A CP &80:JR NC,end_load INC DE:INC HL:INC HL:INC HL ".middle_loop ,LD A,(HL):LD (DE),A 6INC DE:INC HL:CP 13 @JR NZ,middle_loop JJR load_loop T.end_load ^LD H,D:LD L,E hLD (HL),&FF:DEC HL rLD (HL),&FF:DEC HL |LD (HL),0:INC HL JP &883 RET .new_save_block \ HL=filename \ DE= (BC=length) #LD A,(cpm_flag): 2:JP NZ,&3172 LD A,&80: OSFIND CP 0:JR NZ,file_output +RST &38:B 214:M "Can't open file":NOP .file_output LD H,A:LD A,13: OSBPUT .save_loop $INC DE:INC DE:LD A,(DE): OSBPUT CP &80:JR NC,save_end DEC DE:LD A,(DE): OSBPUT DEC DE:LD A,(DE): OSBPUT &INC DE:INC DE:INC DE 0.save_mid_loop :LD A,(DE): OSBPUT $DINC DE:CP 13:JR NZ,save_mid_loop NJR save_loop X.save_end bLD A,0: OSFIND lRET vRET : : : : .load_block W &3800 W &3B00:W &0 W &0:W 0 W &0:W 0 W &0:W 0 ] P%=&869:[JP new_load_block:] P%=&7BB:[ new_save_block:] P%=&F8E4:[LD HL,newblock:]  P%=&5:[JP newblock:] ((22<<FFPPZZddnnxxOSBPUT &INC DE:INC DE:INC DE 0.save_mid_loop :LD A,(DE): OSBPUT $DINC DE:CP 13:JR NZ,save_mid_loop NJR save_loop X.save_end bLD A,0: OSFIND lRET vRET : : : : .load_block W &3800 W &3B00:W &0 W &0:W 0 W &0 > TEST 6?(&81+?&80)=13:A$=$&81,$&81+" "," ",2)+1):?&80=0 ("LINE: '"A$"'" "LINE: '"A$"'" "87 *2 ctrl% 32,data&ݼ>y@kH~&ҺA~ejãUEWWVUгsJ;CM޸a3I: ;<$vtoƥ-ߧNjTwFH 5iYr;󚨸I1ucνT# ;ߑt հy{V>KsR yC^ ׺V@3/f4*kq JT7ֿWfYT\PdMGoEU-ebuFBwPX !x GHO3d"Y {➶d!IRUmw0(u:UEh2unNn{;݌biO_?`}XⓍٿO(+}-$IҀV@XEid`ѲɻH)*nWd<ݛ VIyW8 d)i7 g~| xM> u!KBR۠r B`8B_Q!HJ\ JT<0h,{S5Iے@[fBBCBASIC FILEHAND$TEST BBC:FILE4 BBC9$$$ SUBBUĔBk_#|#bz'9JLs˖$|.LQ6Y&77k`.0jɧ@-@獥<"cb$Cx XӾwo0<(tvX.ݖE]* RTOJ_1Htb%Tλnk!ezx p"iEm1p\ʥ_:U} 66ib1WŹ7dʙ}ШPqCX@F:䃚Ekql^UHQ^,(8Z8ThŒJ[ cD:Tpr?ԟUVMzȯyXoDP W%V{rps յz1|J?%!gCHR,C904ضp 1"d|cEev; EEHb^ŎW=l eڿYbL>y:epz0!a1PshhˀHp AѰcVw K̸̊U$={4hy/瑘cq7J o\%(g_($$ <p{y>?=J`I AD:ᨗ> |.^T@WTːD:`᭘.vT?'\s;BR+< hy=SsbR!.q7C`k R Mm5̅H5(v[QD+ty'B36!хS m wtI|O.7gL%rfɷ-mQnv23T3iD^ɾn~1Ki -~FIA (Y!*,zo*#gQq?Dh=#ڦ`g.FWYj