I added a couple of options:
H:  Hexadecimal addresses
D:  Decimal addresses
L:   List on LCD
C:  List to COM port (for scrolling, saving, printing etc.)

Timings (seconds for 50 lines):
HL: 39 (As the previous version)
DL: 36
HC: 19
DC: 17

One last minute addition: the variable W in line 160 is the width, i.e. the 
number of bytes per line -1. Useful if you're listing on a terminal (e.g. 15 
will list 16 bytes)

No error checking; defaults are H and L as before.

Sorry; got a little carried away ;-) Try it; you'll like it! ;-)

m
-----------------
1 DEFINTJ-Z:DIMH$(15):FORI=0TO15:REM V4
10 H$(I)=CHR$(48+I-(7*(I>9))):NEXT:CLS
15 GOSUB200:INPUT"From";A:INPUT"to";B
20 T$=TIME$: FORI=ATOBSTEPW+1
25 IFDTHENPRINT#1,USING"#####";I;:PRINT#1,": ";:GOTO50
30 K=I/4096:PRINT#1,H$(K);
35 L=(I-K*4096):PRINT#1,H$(L\256);
40 PRINT#1,H$((LMOD256)\16)H$(LMOD16)" ";
50 L$="":FORJ=0TOW:X=PEEK(I+J)
55 PRINT#1,H$(X\16);H$(XMOD16)" ";
60 Y$=".":IFX>31ANDX<127THENY$=CHR$(X)
65 L$=L$+Y$:NEXT:PRINT#1,L$:NEXT
70 E$=TIME$:PRINT#1,"     "T$+" to "+E$
100 T=VAL(MID$(TIME$,4,2))*60+VAL(RIGHT$(TIME$,2))
110 R=VAL(MID$(T$,4,2))*60+VAL(RIGHT$(T$,2))
120 PRINT#1,"     "T-R" seconds":END
200 D$="H":INPUT"(H)EX or (D)ec address";D$
210 D=INSTR("dD",D$)>0:B$="88n1e":C$="L"
220 INPUT"(L)CD or (C)om output ";C$
230 IF INSTR("cC",C$)=0THENOPEN"LCD:"FOR OUTPUT AS 1:GOTO260
240 INPUT"Stat (88N1E)";B$
250 F$="COM:"+B$:OPENF$FOR OUTPUT AS 1
260 W=15:RETURN

Reply via email to