MDUMP pr*~ (!ͤ*ͭ~ͪ#B~( 0>.# ( 6(7( > > B> [48K [[c ><ROMS BBD:x͒xͺ:ͺ:ͺ* ( ~# 8xG0Òͪ> ZX 2[[34:͒*+"\"\6>+6++"=\>?G!:\V>2k\6ZX60 2[[54:͒!`+"\"\6>+6++"=\>?G!:\V>2k\6ClockSp 5 L؛7  > ClockSp 1.10  Calculate CPU clock speed #"BBC BASIC CPU Timing Program" (T%=:>T%+50 23B=1:B%=1:C=1000:C%=1000:D=5100:D%=5100:Z=0:Z%=0 C:T%=-T%:p(41000/T%) FM"Integer REPEAT loop ";:T%=:A%=Z%:A%=A%+B%:A%>C%:T%=-T%:p(24000/T%) PD"Real FOR loop ";:T%=:A=Z D B::T%=-T%:p(51200/T%) ZH"Integer FOR loop ";:T%=:A%=Z% D% B%::T%=-T%:p(17800/T%) d"Floating-Point Test "; nEA=1:T%=:J%=1 29:A=(((((A*A)))))+1::T%=-T%:p(66700/T%) x"Ackermann Recursion "; >M%=3:T%=:N%=1 3:Z%=Ack(M%,N%)::T%=-T%:p(255500/T%) "String manipulation "; T%=:A$="STRINGMANIPULATIONTEST":A%=0127:A$=A$,A$/2,A$/4+1)+A$,A$/4)+A$,A$/2,2)+A$,A$/4)+A$,A$/4,A$/4+1),A$+1)::T%=-T%:p(121000/T%) J"Procedure call ";:T%=:A%=Z% D%:test::T%=-T%:p(79700/T%) J"GOSUB call ";:T%=:A%=Z% D%:TbA::T%=-T%:p(86100/T%) '"Combined Average ";:p(speed) #'"Compared to a 2.00MHz BBC B"  : ݤAck(M%,N%)  M%=0:=N%+1  N%=0:=Ack(M%-1,1) =Ack(M%-1,Ack(M%,N%-1)) :  test: : " ,: 6?p(T%):" ";T%100;".";"0"+(T%),2);"MHz";8;8;8;8: @k DEFPROCp(T%):PRINT"Speed: ";T%DIV100;".";RIGHT$("0"+STR$(T%),2);"MHz";CHR$8;CHR$8;CHR$8;CHR$8:ENDPROC J: T" This is calibrated against a ^ BBC model B with no second h! processor, running BASIC II r# and with almost all interupts | turned off using:  ?&FE4E=&3F  This gives 2.00MHz. : $ Savage Floating Point test and $ Ackermann Recursion test added # -Mar-93, based on A&B Jan 90. : >ݤspeed: A,B,C,D,Z,A%,B%,C%,D%,Q%,R%,S%,U%,V%,W%,X%,Y%,Z% T%=:>T%+50 3B=1:B%=1:C=1000:C%=1000:D=5100:D%=5100:Z=0:Z%=0 .T%=:A=Z:A=A+B:A>C:T%=-T%:U%=(41000/T%) 5T%=:A%=Z%:A%=A%+B%:A%>C%:T%=-T%:V%=(24000/T%) ,T%=:A=Z D B::T%=-T%:W%=(51500/T%) 0T%=:A%=Z% D% B%::T%=-T%:X%=(17800/T%) FA=1:T%=:J%=1 29:A=(((((A*A)))))+1::T%=-T%:Y%=(66900/T%) T%=:A$="STRINGMANIPULATIONTEST":A%=0127:A$=A$,A$/2,A$/4+1)+A$,A$/4)+A$,A$/2,2)+A$,A$/4)+A$,A$/4,A$/4+1),A$+1)::T%=-T%:S%=122000/T% &0T%=:A%=Z% D%:test::T%=-T%:R%=79700/T% 00T%=:A%=Z% D%:TbA::T%=-T%:Q%=86100/T% :%=((Q%+R%+S%+U%+V%+W%+X%+Y%)/7.8) D Returns CPU speed*100 URunDOCK IIjK > RunDOCK &Switch DOCK in and jump to BBC BASIC : ('a=32000} 32010 }:b:a,b:a 232000} <243 :DI F175 :XOR A P#211,255 :OUT (&FF),A Z62>,3 :LD A,3 d#211,244 :OUT (&F4),A n&195,0,0 :JP &0000 MonZ80 M@̦  > MonZ80 2.00  Rewritten for Spectrum : ( 7: :" at line ";: 27 ctrl%31:X%=ctrl%:Y%=X%256:P%=P%&FFFF:O%=0:Init <: F% 11::" - press SPACE";:A%= P7::a%=P%+O%:l%=0::line:l%=l%+1:l%>22:bot%=a%-O% Z :58::A%=:A%>95:A%=A%-32 d13+"MQ",A%):menu(A%) n0: x: $line:X%!4=a%-O%:X%!8=!a%:Diss 8h0(a%,4)" ";: A%=a% a%-1+X%?3:h0(?A%,2)" ";: *17);$(X%+4);8: IF(X%?2AND64):PRINT a%=a%+X%?3: : ݤmenu(A$):8 *A$=13:a%=bot%+O%:line:bot%=a%-O%:=0 +A$="M":"Address: &"A$:P%=("&"+A$):= A$; A$="Q":"uit": =0 : $ݤh0(A%,N%):="0000000"+~A%,N%) : : : ": ,- *********** End of MonCore ************ 6- Specific disassembly routines from here @: JInit: Data% 4: T4Diss: num%:Word%=X%!8:Ptr%=X%!4:X%?2=0:X%?3=0 ^8 s%,d%,c%,xy%:!Data%=Word%:num%=1:c%=?Data%:d%=c%7 h0s%=(c%&38)8:$(X%+4)=("FNz80_"+~(c%&C0)) rX%?3=num%: |: ݤcheck(num%)= machine: ݤmch(A%)="Z80" : 3ݤalu(A%)="ADDADCSUBSBCANDXOROR CP ",A%*3+1,3) 3ݤrot(A%)="RLCRRCRL RR SLASRASLSSRL",A%*3+1,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) 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))) &: 0ݤz80_0:c%=0:="NOP" :S(c%&F7)=&10:num%=2:X%?2=(64 c%=&18):="DJNZJR ",s%*4-7,4)+" "+jr(Data%?1) D)d%=7 s%<4:=rot(s%),3+(s%>1))+"A" N%d%=7:="DAACPLSCFCCF",s%*3-11,3) XCd%=6:num%=num%+1:="LD "+reg(s%)+",&"+h0(?(Data%+num%-1),2) b4(d%6)=4:="INCDEC",(d%1)*3+1,3)+" "+reg(s%) l0d%=3:="INCDEC",(s%1)*3+1,3)+" "+drg(s%) vFc%=&22:num%=num%+2:="LD (&"+h0(!(Data%+num%-2),4)+"),"+drg(4) Ic%=&2A:num%=num%+2:="LD "+drg(4)+",(&"+h0(!(Data%+num%-2),4)+")" 7c%=&32:num%=num%+2:="LD (&"+h0(Data%!1,4)+"),A" 7c%=&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%)+")" 2d%=1 (s%1)=1:="ADD "+drg(4)+","+drg(s%) Cd%=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) ="EX AF,AF'" : ݤ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 4!d%=7:="RST &"+h0(c%&38,2) >8d%=6 s%<4:num%=2:=alu(s%)+" A,&"+h0(Data%?1,2) H/d%=6:num%=2:=alu(s%)+" &"+h0(Data%?1,2) RH(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) f:d%=2:num%=num%+2:="JP "+cc(s%)+",&"+h0(Data%!1,4) pd%=0:="RET "+cc(s%) z3c%=&C3:num%=3:X%?2=64:="JP &"+h0(Data%!1,4) c%=&C9:X%?2=64:="RET" 2c%=&D3:num%=2:="OUT (&"+h0(Data%?1,2)+"),A" 2c%=&DB:num%=2:="IN A,(&"+h0(Data%?1,2)+")" c%=&D9:="EXX" !c%=&E3:="EX (SP),"+drg(4) )c%=&E9:X%?2=64:="JP ("+drg(4)+")" c%=&EB:="EX DE,HL" c%=&F9:="LD SP,HL" ="DIEI",(s%1)*2+1,2) : ,ݤ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) 8' A$:xy%=(c%&20)&20+1:num%=num%+1 B>c%=Data%?1:d%=c%7:s%=(c%&38)8:A$=("FNz80_"+~(c%&C0)) LFA$,4),"X")+A$,"Y")=0:num%=1:="DEFB &"+h0(xy%*&20+&BD,2) =A$ V: `5ݤz80_ED:xy%:num%=1:="DEFB &"+h0(xy%*&20+&CD,2) j0num%=num%+1:c%=Data%?1:d%=c%7:s%=(c%&38)8 tc%<&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)) '(c%&F7)=&67:="RRDRLD",s%*3-11,3) 0(c%&F7)=&45:X%?2=64:="RETNRETI",s%*4+1,4) 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" EXTCAT !0080o"!"!:\*S\+ U!Qs#r#! #KO\B"2\1>2\*"\*"\2! Z#~ + Zl#!\s#r*"\! "\*=\!s=\|""=\CV >"=\>=!R ######^#V&++V+^& ##^#V&++V+^&#ge+Z!O ~n#l!w^V> >b'd ProgNumbStrnCodePrnt????Z(( RXRT S