#B .J NEW 1 REM This program appeared in the Sept-Oct 1988 issue of Z88 EPROM 2 REM the British Z88 newsletter. It was flawed, by a couple of 3 REM typos and because it did not print its output in hex 4 REM as it purported to do. I've fixed the errors and added 5 REM hex conversion for the output addresses and bytes 6 REM See ROMDMP.DOC for brief usage notes, and above issue of 7 REM Z88 EPROM for complete infomation. 8 REM Original Author: J. Mark Stephenson, 12 June 1988 9 REM Additions/fixes: Phil Wheeler, 18 Nov 1988 10 *NAME ROMDMP 20 DIM S%(15),S$(15),H$(15),Z%100 25 FOR A=0 TO 15: READ H$(A):NEXT 30 PROC_ASM 40 PRINT "Paged Memory Display" 50 INPUT "Page: "C$:C%=EVAL("&"+C$) 60 INPUT "Start Adr: "C$:A%=EVAL("&"+C$) 70 INPUT "End Adr: "C$:D%=EVAL("&"+C$) 80 M%=0 90 REPEAT 100 H%=(A%+M%) DIV 256:L%=(A%+M%) MOD 256 110 S%(M%)=(USR(ROMBYTE) AND &FF0000) DIV &10000 115 DE%=S%(M%):GOSUB 1000:S$(M%)=H2$ 120 M%=M%+1 130 IF M%=16 THEN DE%=A%:GOSUB 1100:A$=H4$:PROCPRNT:M%=0:A%=A%+16 140 T%=INKEY(0): IF T%<>-1 T=GET 150 UNTIL A%>=D% 160 IF M%<>0 THEN PROCPRNT 170 END 180 : 190 DEFPROCPRNT 200 PRINT;A$;": "; 210 FOR Q%=0 TO M%-1 220 PRINT;S$(Q%);" "; 230 IF Q%=7 PRINT;" "; 240 NEXT 250 PRINT TAB(58); 260 FOR Q%=0 TO M%-1 270 B%=S%(Q%) 280 IF (B%<&20) OR (B%>&7E) PRINT ".";ELSE PRINT CHR$(B%); 290 NEXT 300 PRINT 310 ENDPROC 320 : 330 DEFPROC_ASM 340 FOR X=0 TO 2 STEP 2 350 P%=Z% 360 [ 370 OPT X 380 .ROMBYTE 390 LD A,(&4D3) : PUSH AF 400 LD A,C : LD (&4D3),A : OUT (&D3),A 410 LD A,(HL) : LD L,A 420 POP AF : LD (&4D3),A : OUT (&D3),A 430 RET 440 ] 450 NEXT 460 ENDPROC 999 REM 1 byte to 2 hex digits 1000 H2$=H$(DE% DIV 16)+H$(DE% MOD 16) 1010 RETURN 1099 REM 2 byte to 4 hex digits 1100 H4$=H$(DE% DIV 4096):DE%=DE% MOD 4096 1110 H4$=H4$+H$(DE% DIV 256):DE%=DE% MOD 256 1120 GOSUB1000 1130 H4$=H4$+H2$ 1140 RETURN 9000 DATA "0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"