)ō > MkSrcZ80 - Make a Z80 source file #ō > MkSrcCore v0.10 16-Aug-2007 ō (C)2007 J.G.Harston (: 29Ž ctrl% 63,name% 127:X%=ctrl%:Y%=X%256:X%!0=0:cpu%=0 <@A$=¤Dis_Name(cpu%):wth%=(X%?3€3)*2+4:mask%= ("&"+Äwth%,"F")) F: Pī … ö:ņClose_All:ń:ą Zč"Input object file: "in$ d0ē¤file(in$,5)<>1:ń"File '"in$"' not found":ą n:len%=X%!10:ē “-øP-2000"":out%=®(out$) ¾: Č'ń "Scanning for labels....";~load%; Ņ1addr%=load%:lbmax%=0:õ:ńÄ©Ć~addr%,½8);~addr%; ÜcL$=¤line:A%=§L$,"&"):ēA%:L%= ĮL$,A%):ēL%>=(load%€mask%) € L%<(load%€mask%)+len%:lbmax%=lbmax%+4 ę6addr%=addr%+num%:żaddr%>load%+len%:Ž label% lbmax% š: ś'ń'"Creating labels........";~load%; 3addr%=load%:lb%=label%:õ:ńÄ©Ć~addr%,½8);~addr%; eL$=¤line:A%=§L$,"&"):ēA%:L%= ĮL$,A%):ēL%>=(load%€mask%) € L%<(load%€mask%)+len%:!lb%=L%:lb%=lb%+4 &addr%=addr%+num%:żaddr%>load%+len% ": ,'ń'"Outputting source......";~load%; 6ņout(½&F4+" > "+out$) @!ņout(½&F4+" Source for "+in$) J ņout(" ") T?ņout("OS_CLI=&FFF7:OSBYTE=&FFF4:OSWORD=&FFF1:OSWRCH=&FFEE") ^?ņout("OSWRCR=&FFEC:OSNEWL=&FFE7:OSASCI=&FFE3:OSRDCH=&FFE0") h ņout(" ") rņout("load%=&"+Ć~load%) |&ņout(½&DE+" mcode% &"+Ć~(len%+20)) † ņout(½&E3+" P=0 "+½&B8+" 1") ņout("P%=load%:O%=mcode%") šņout("[OPT P*3+4") ¤: ®1addr%=load%:õ:ńÄ©Ć~addr%,½8);~addr%;:L$=¤line øēaddr%=exec%:ņout(".exec%") Āylb%=label%-4:õlb%=lb%+4:żlb%>label%+lbmax% „ !lb%=(addr%€mask%):ē !lb%=(addr%€mask%):ņout(".L"+¤h0(addr%€mask%,wth%)) ĢeA%=§L$,"&"):ēA%:L%= ĮL$,A%):ēL%>=(load%€mask%) € L%<(load%€mask%)+len%:L$=ĄL$,A%-1)+"L"+ĮL$,A%+1) Ö2L$=L$+Ä15-©L$," ")+" :\ "+¤h0(addr%,wth%)+"= " ą=ć A%=0 ø num%-1:L$=L$+¤h0(?(addr%-load%+mem%+A%),2)+" ":ķ źL$=L$+Ä37-©L$," ") ō7ć A%=0 ø num%-1:L$=L$+¤ch(?(addr%-load%+mem%+A%)):ķ ž!ņout(L$):ē(flg%€64):ņout(" ") &addr%=addr%+num%:żaddr%>load%+len% ņout("]"+½&ED) Oņout(½&F1+" ""*SAVE "";~mcode%;"" "";~O%;"" "";~exec%;"" "";~load%") &ēout%:Õ#out%,13:Õ#out%,255 07ēout%:Ł#out%:out%=0:X%!2=&FFFFFB00:A%=¤file(out$,2) :ń:ą D: NAݤline:num%=¤Dis_Code(cpu%,addr%,addr%-load%+mem%):L$=$(X%+4) X/num%=X%?3:flg%=X%?2:A%=§L$,"&FF"):ēA%=0:=L$ b+L%= (ĮL$,A%,5))-&FFCE:ēL%<0 „ L%>43:=L$ lGē((L%ƒ3-(L%>27))ƒ3-3*(L%=24)+(L%>24 € L%<28)-3*(L%=27)-(L%=28)):=L$ vg=ĄL$,A%-1)+"OS"+Į"FINDGBPBBPUTBGETARGSFILERDCHASCINEWLWRCRWRCHWORDBYTE_CLI",(L%3)*4+1,4)+ĮA$,A%+5) €: ŠŻņout(A$):ēout%=0:į ”;line%=line%+1:?name%=13:name%?1=line%256:name%?2=line% ž=name%?3=©A$+4:$(name%+4)=A$:ņgbpb(2,out%,name%,©A$+4,0):į Ø: ²3ŻņClose_All:out%=out%:ēout%:A%=out%:out%=0:Ł#A% ¼į Ę: Š2ݤch(A%):A%=A%€127:ēA%<32 „ A%=127:="." ‹ =½A% Ś#ݤh0(A%,N%)=Ā"0000000"+Ć~A%,N%) äBݤfile(A$,A%):$name%=A$:?X%=name%:X%?1=name%256:=(ŗ&FFDD)€&FF ī3Żņgbpb(A%,ch%,X%!1,X%!5,X%!9):?X%=ch%:Ö &FFD1:į ų: <ō > DisZ80 1.00 - 09-Jan-1989 - Z80 disassembly routines  : ݤDis_Name(A%)="Z80"  CݤDis_Code(A%,Ptr%,Data%):ź s%,d%,c%,xy%:!X%=0:num%=1:c%=?Data% *8d%=c%€7:s%=(c%€&38)8:$(X%+4)= ("FNz80_"+Ć~(c%€&C0)) 4X%?3=num%:=num% >: H3ݤalu(A%)=Į"ADDADCSUBSBCANDXOROR CP ",A%*3+1,3) R3ݤrot(A%)=Į"RLCRRCRL RR SLASRASLSSRL",A%*3+1,3) \ݤr(A%)=Į"BCDEHLFA",A%+1,1) f>ݤdrg(A%)=Į"BCDEHLSPIXAFIY",(A%„1)+((xy%*4)€((A%€6)=4)),2) p$ݤreg(A%):ēxy%=0 € A%<>6:=¤r(A%) zēA%=6 € xy%=0:="(HL)" „7ēA%=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) ¬Fݤjr(A%):ēA%<128:="&"+¤h0(Ptr%+A%+2,4) ‹ ="&"+¤h0(Ptr%+A%+2-256,4) ¶Kݤcc(A%)=Į"NZZ NCC POPEP M ",A%*2+1,2-((A% € 1) € (A%<4))-(1 € (A%>5))) Ą: Źݤ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" č%ēd%=7:=Į"DAACPLSCFCCF",s%*3-11,3) ņCēd%=6:num%=num%+1:="LD "+¤reg(s%)+",&"+¤h0(?(Data%+num%-1),2) ü4ē(d%€6)=4:=Į"INCDEC",(d%€1)*3+1,3)+" "+¤reg(s%) 0ēd%=3:=Į"INCDEC",(s%€1)*3+1,3)+" "+¤drg(s%) Fēc%=&22:num%=num%+2:="LD (&"+¤h0(!(Data%+num%-2),4)+"),"+¤drg(4) Iēc%=&2A:num%=num%+2:="LD "+¤drg(4)+",(&"+¤h0(!(Data%+num%-2),4)+")" $7ēc%=&32:num%=num%+2:="LD (&"+¤h0(Data%!1,4)+"),A" .7ēc%=&3A:num%=num%+2:="LD A,(&"+¤h0(Data%!1,4)+")" 8-ēd%=2 € (s%€5)=0:="LD ("+¤drg(s%)+"),A" B"ēd%=2:="LD A,("+¤drg(s%)+")" L2ēd%=1 € (s%€1)=1:="ADD "+¤drg(4)+","+¤drg(s%) VCēd%=1:num%=num%+2:="LD "+¤drg(s%)+",&"+¤h0(!(Data%+num%-2),4) `@ēd%=0 € s%>3:num%=num%+1:="JR "+¤cc(s%€3)+","+¤jr(Data%?1) j="EX AF,AF'" t: ~ݤz80_40:ēc%=&76:="HALT" ˆ'ē s%=6:="LD "+¤reg(s%)+","+¤r(d%) ’'ē 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 &"+¤h0(c%€&38,2) Ų8ēd%=6 € s%<4:num%=2:=¤alu(s%)+" A,&"+¤h0(Data%?1,2) ā/ēd%=6:num%=2:=¤alu(s%)+" &"+¤h0(Data%?1,2) ģHē(d%€3)=1 €(s%€1)=0:=Į"POP PUSH",(d%4)*4+1,4)+" "+¤drg(s%-4*(s%>5)) ö:ēd%=4:num%=num%+2:="CALL "+¤cc(s%)+",&"+¤h0(Data%!1,4) :ēd%=2:num%=num%+2:="JP "+¤cc(s%)+",&"+¤h0(Data%!1,4)  ēd%=0:="RET "+¤cc(s%) +ēc%=&C3:num%=3:="JP &"+¤h0(Data%!1,4) ēc%=&C9:="RET" (2ēc%=&D3:num%=2:="OUT (&"+¤h0(Data%?1,2)+"),A" 22ēc%=&DB:num%=2:="IN A,(&"+¤h0(Data%?1,2)+")" <ēc%=&D9:="EXX" F!ēc%=&E3:="EX (SP),"+¤drg(4) P!ēc%=&E9:="JP ("+¤drg(4)+")" Zēc%=&EB:="EX DE,HL" dēc%=&F9:="LD SP,HL" n=Į"DIEI",(s%€1)*2+1,2) x: ‚,ݤz80_CD:num%=3:="CALL &"+¤h0(Data%!1,4) Œ5ݤz80_CB:num%=num%+1:ēxy%:c%=Data%?3 ‹ c%=Data%?1 –9d%=c%€7:s%=(c%€&38)8:ēc%<&40:=¤rot(s%)+" "+¤reg(d%)  8=Į"BITRESSET",(c%64)*3-2,3)+" "+Ć(s%)+","+¤reg(d%) Ŗ: “ ݤz80_DD ¾ ݤz80_FD Č,ēxy%:num%=1:="DEFB &"+¤h0(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)) ęFē§ĮA$,4),"X")+§A$,"Y")=0:num%=1:="DEFB &"+¤h0(xy%*&20+&BD,2) ‹ =A$ š: ś5ݤz80_ED:ēxy%:num%=1:="DEFB &"+¤h0(xy%*&20+&CD,2) 0num%=num%+1:c%=Data%?1:d%=c%€7:s%=(c%€&38)8 ēc%<&10:="DEFW &"+¤h0(c%*256+&ED,4)+":\ MOS_"+Į"QUITCLI BYTEWORDWRCHRDCHFILEARGSBGETBPUTGBPBFINDFF0CFF0DFF0EFF0F",c%*4+1,4) &ēc%<&40 „c%>&C0:num%=1:="DEFB &ED" "4ē(c%€&C7)=&42:=¤alu(3-(s%€1)*2)+" HL,"+¤drg(s%) ,Hē(c%€&CF)=&4B:num%=num%+2:="LD "+¤drg(s%)+",(&"+¤h0(Data%!2,4)+")" 6Eē(c%€&CF)=&43:num%=num%+2:="LD (&"+¤h0(Data%!2,4)+"),"+¤drg(s%) @(ē(c%€&C7)=&40:="IN "+¤r(s%)+",(C)" J%ē(c%€&C7)=&41:="OUT (C),"+¤r(s%) T0ē(c%€&E7)=&46 €s%<>1:="IM "+Ć(s%-1-(s%=0)) ^'ē(c%€&F7)=&67:=Į"RRDRLD",s%*3-11,3) h(ē(c%€&F7)=&45:=Į"RETNRETI",s%*4+1,4) rēc%=&44:="NEG" |Pē(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" ’