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