)ō > MkSrcZ80 - Make a Z80 source file #ō > MkSrcCore v0.10 16-Aug-2007 ō (C)2007 J.G.Harston (: 2GŽ ctrl% 31,name% 127:X%=ctrl%:Y%=X%256:cpu%=65:mask%=&FFFF:wdth%=4 <: Fī … ö:ņClose_All:ń:ą Pč"Input object file: "in$ Z0ē¤file(in$,5)<>1:ń"File '"in$"' not found":ą d: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%; !ņout(½&F4+" Source for "+in$)  ņout(" ") "?ņout("OS_CLI=&FFF7:OSBYTE=&FFF4:OSWORD=&FFF1:OSWRCH=&FFEE") ,?ņout("OSWRCR=&FFEC:OSNEWL=&FFE7:OSASCI=&FFE3:OSRDCH=&FFE0") 6 ņout(" ") @ņout("load%=&"+Ć~load%) J&ņout(½&DE+" mcode% &"+Ć~(len%+20)) T ņout(½&E3+" P=0 "+½&B8+" 1") ^ņout("P%=load%:O%=mcode%") hņout("[OPT P*3+4") r: |1addr%=load%:õ:ńÄ©Ć~addr%,½8);~addr%;:L$=¤line †ēaddr%=exec%:ņout(".exec%") zlb%=label%-4:õlb%=lb%+4:żlb%>label%+lbmax% „ !lb%=(addr%€mask%):ē !lb%=(addr%€mask%):ņout(".L"+¤h0(addr%€mask%,wdth%)) šeA%=§L$,"&"):ēA%:L%= ĮL$,A%):ēL%>=(load%€mask%) € L%<(load%€mask%)+len%:L$=ĄL$,A%-1)+"L"+ĮL$,A%+1) ¤3L$=L$+Ä16-©L$," ")+" :\ "+¤h0(addr%,wdth%)+"= " ®=ć A%=0 ø num%-1:L$=L$+¤h0(?(addr%-load%+mem%+A%),2)+" ":ķ øL$=L$+Ä38-©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%") ōline%=&FFFE:ņout("") ž7ēout%:Ł#out%:out%=0:X%!2=&FFFFFB00:A%=¤file(out$,2) ń:ą : Aݤline:num%=¤Dis_Code(cpu%,addr%,addr%-load%+mem%):L$=$(X%+4) &/num%=X%?3:flg%=X%?2:A%=§L$,"&FF"):ēA%=0:=L$ 0+L%= (ĮL$,A%,5))-&FFCE:ēL%<0 „ L%>43:=L$ :Gē((L%ƒ3-(L%>27))ƒ3-3*(L%=24)+(L%>24 € L%<28)-3*(L%=27)-(L%=28)):=L$ Dg=ĄL$,A%-1)+"OS"+Į"FINDGBPBBPUTBGETARGSFILERDCHASCINEWLWRCRWRCHWORDBYTE_CLI",(L%3)*4+1,4)+ĮA$,A%+5) N: XŻņout(A$):ēout%=0:į b;line%=line%+1:?name%=13:name%?1=line%256:name%?2=line% l=name%?3=©A$+4:$(name%+4)=A$:ņgbpb(2,out%,name%,©A$+4,0):į v: €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))  X%?3=num%:=num% :  3ݤalu(A%)=Į"ADDADCSUBSBCANDXOROR CP ",A%*3+1,3) *3ݤrot(A%)=Į"RLCRRCRL RR SLASRASLSSRL",A%*3+1,3) 4ݤr(A%)=Į"BCDEHLFA",A%+1,1) >>ݤdrg(A%)=Į"BCDEHLSPIXAFIY",(A%„1)+((xy%*4)€((A%€6)=4)),2) H$ݤreg(A%):ēxy%=0 € A%<>6:=¤r(A%) RēA%=6 € xy%=0:="(HL)" \7ēA%=6:num%=num%+1:="(I"+½(87+xy%)+¤rel(Data%?2)+")" f#ē(A%€6)=4:="I"+½(87+xy%)+¤r(A%) p =¤r(A%) z+ݤ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)+")" -ēd%=2 € (s%€5)=0:="LD ("+¤drg(s%)+"),A" "ēd%=2:="LD A,("+¤drg(s%)+")" $2ēd%=1 € (s%€1)=1:="ADD "+¤drg(4)+","+¤drg(s%) .Cēd%=1:num%=num%+2:="LD "+¤drg(s%)+",&"+¤h0(!(Data%+num%-2),4) 8@ēd%=0 € s%>3:num%=num%+1:="JR "+¤cc(s%€3)+","+¤jr(Data%?1) B="EX AF,AF'" L: Vݤz80_40:ēc%=&76:="HALT" `'ē s%=6:="LD "+¤reg(s%)+","+¤r(d%) j'ē d%=6:="LD "+¤r(s%)+","+¤reg(d%) t"="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"  2ēc%=&DB:num%=2:="IN A,(&"+¤h0(Data%?1,2)+")" ēc%=&D9:="EXX" !ēc%=&E3:="EX (SP),"+¤drg(4) (!ēc%=&E9:="JP ("+¤drg(4)+")" 2ēc%=&EB:="EX DE,HL" <ēc%=&F9:="LD SP,HL" F=Į"DIEI",(s%€1)*2+1,2) P: Z,ݤz80_CD:num%=3:="CALL &"+¤h0(Data%!1,4) d5ݤz80_CB:num%=num%+1:ēxy%:c%=Data%?3 ‹ c%=Data%?1 n9d%=c%€7:s%=(c%€&38)8:ēc%<&40:=¤rot(s%)+" "+¤reg(d%) x8=Į"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)+")" Eē(c%€&CF)=&43:num%=num%+2:="LD (&"+¤h0(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)) 6'ē(c%€&F7)=&67:=Į"RRDRLD",s%*3-11,3) @(ē(c%€&F7)=&46:=Į"RETNRETI",s%*4+1,4) Jēc%=&44:="NEG" TPē(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)) hnum%=1:="DEFB &ED" ’