10 REM ******************************** 20 REM * * 30 REM * * 40 REM * MEMORY DUMP * 50 REM * * 60 REM * Copyright Bj|rn Gimle * 70 REM * december 1980 * 80 REM * Ins{nt av Gunnar Tidner * 90 REM ******************************** 100 GOTO 110 110 DIM T$=17%,[$=80%,\$=20%,I$=2%,U$=1%,\1$=6%,\2$=4%,H$=2%,A$=40% 120 DIM [1$=39%,[2$=39% 130 DEFFNA(X)=PEEK(X)+256*PEEK(X+1) 140 DEFFNB(X$)=1%+(INSTR(1%,X$,\$)+1%)/2% 150 V9%=4% : REM *v{nstermarginal* 160 T$='0123456789ABCDEF*' 170 ; CHR$(12%);'*** MEMORY-DUMP ***' : ; 180 ; 'F = Fram 64 pos' 190 ; 'B = Back 64 pos' 200 ; 'A = +/- ? pos' 210 ; '+ = Fram 8 pos' 220 ; '- = Back 8 pos' 230 ; '1-7= Fram 1-7 pos' : ; 240 ; 'R = BASIC-programrad (fr}gas)' 250 ; 'N = Ny start-adress' : ; 260 ; '" "= N{sta assembler-instruktion' 270 ; 'C = -"- BASIC-rad' : ; 280 ; 'I = Print instruktion' 290 ; 'M = -"- -"- kontinuerligt' 300 ; 'K = -"- konstant' 310 ; 'P = Printerkontroll m.m.' : ; : ; 320 GOSUB 1930 : ; 'Start-adress='; : INPUT S : ; CHR$(12%) 330 ; CUR(0%,0%); : IF S<0 THEN S=S+65536 340 FOR I=S TO S+63% STEP 8% 350 \=I-(-65536*(I>=65536)) : \%=6% : GOSUB 1550 360 ; ' '; 370 A%=ASC(CHR$(SWAP%(\))) : GOSUB 1600 380 [$=H$ 390 A%=ASC(CHR$(\)) : GOSUB 1600 400 [$=[$+H$ 410 IF I=S THEN A$=SPACE$(V9%)+Z$+' '+[$+' ' : [1$='' : [2$='' 420 ; [$' '; 430 [$=' ' 440 FOR J=I TO I+7% 450 IF J>65535 LET A%=255% ELSE A%=PEEK(J) 460 IF A%<32% OR A%>127% LET \$='.. ' ELSE LET \$=' '+CHR$(A%)+' ' 470 [$=[$+\$ 480 GOSUB 1600 : ; H$' '; 490 IF J127%) 870 IF \$='CB' LET S1%=1% : GOSUB 1100 880 IF \$='ED' GOSUB 1190 890 IF \$='DD' LET I$='IX' : GOSUB 1400 900 IF \$='FD' LET I$='IY' : GOSUB 1400 910 P$='' : Q9%=0% : FOR Q%=1% TO LEN(\$) 920 LET U$=MID$(\$,Q%,1%) 930 IF U$>='a' P$=P$+CHR$(ASC(U$)-32%) : GOTO 1060 940 IF Q9%=0% P$=P$+SPACE$(6%-Q%) : Q9%=1% 950 IF U$=']' LET L9%=L9%+2% : P$=P$+RIGHT$(NUM$(]),2%) : GOTO 1060 960 IF U$='[' LET L9%=L9%+1% : P$=P$+RIGHT$(NUM$([%),2%) : GOTO 1060 970 IF NOT U$='\' THEN GOTO 1010 980 L9%=L9%+1% : IF \%<0% P$=P$+NUM$(\%) ELSE P$=P$+'+'+RIGHT$(NUM$(\%),2%) 990 P$=P$+SPACE$(12%-LEN(P$))+'/'+NUM$(S+\%)+' /' 1000 GOTO 1060 1010 IF NOT U$='@' GOTO 1040 1020 L9%=L9%+1% : IF D%<0% P$=P$+NUM$(D%) ELSE P$=P$+'+'+RIGHT$(NUM$(D%),2%) 1030 GOTO 1060 1040 IF U$='.' P$=P$+',' : GOTO 1060 1050 P$=P$+U$ 1060 NEXT Q% 1070 ; P$; 1080 ; ' *L='L9% 1090 RETURN 1100 RESTORE 1110 1110 DATA rlc,rrc,rl,rr,sla,sra,?,srl,bit0.,bit1.,bit2.,bit3.,bit4.,bit5.,bit6.,bit7.,res0.,res1.,res2.,res3.,res4. 1120 DATA res5.,res6.,res7.,set0.,set1.,set2.,set3.,set4.,set5.,set6.,set7. 1130 L9%=L9%+1% 1140 FOR Q1%=0% TO (PEEK(S+S1%) AND 248%)/8% : READ \1$ : NEXT Q1% 1150 RESTORE 1160 1160 DATA B,C,D,E,H,L,(HL),A 1170 FOR Q1%=O% TO (PEEK(S+S1%) AND 7%) 1180 READ \2$ : NEXT Q1% : \$=\1$+\2$ : RETURN 1190 RESTORE 1200 1200 DATA X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X 1210 DATA X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X 1220 DATA X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X 1230 DATA X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X 1240 DATA inB.(C),out(C).B,sbcHL.BC,ld(]).BC,neg,retn,im0,ldI.A,inC.(C),out(C).C,adcHL.BC,ldBC.(]),X,reti,X,ldR.A 1250 DATA inD.(C),out(C).D,sbcHL.DE,ld(]).DE,X,X,im1,ldA.I,inE.(C),out(C).E,adcHL.DE,ldDE.(]),X,X,im2,ldA.R 1260 DATA inH.(C),out(C).H,sbcHL.HL,X,X,X,X,rrd,inL.(C),out(C).L,adcHL.HL,X,X,X,X,rld 1270 DATA X,X,sbcHL.SP,ld(]).SP,X,X,X,X,inA.(C),out(C).A,adcHL.SP,ldSP.(]),X,X,X,X 1280 DATA X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X 1290 DATA X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X 1300 DATA ldi,cpi,ini,outi,X,X,X,X,ldd,cpd,ind,outd,X,X,X,X 1310 DATA ldir,cpir,inir,otir,X,X,X,X,lddr,cpdr,indr,otdr,X,X,X,X 1320 DATA X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X 1330 DATA X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X 1340 DATA X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X 1350 DATA X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X 1360 L9%=L9%+1% 1370 FOR Q%=0% TO PEEK(S+1%) : READ \$ : NEXT Q% 1380 LET ]=FNA(S+2%) 1390 RETURN 1400 RESTORE 660 1410 L9%=L9%+1% 1420 FOR Q%=0% TO PEEK(S+1%) : READ \$ : NEXT Q% 1430 LET [%=PEEK(S+3%) 1440 LET D%=PEEK(S+2%) 1450 IF D%>127% LET D%=D%-256% 1460 IF \$='CB' LET S1%=3% : GOSUB 1100 1470 W%=INSTR(1%,\$,'(HL)') 1480 IF W%=0% GOTO 1510 1490 IF PEEK(S+1%)=233% LET \$='jp('+I$+')' : RETURN 1500 \$=LEFT$(\$,W%)+I$+'@'+RIGHT$(\$,W%+3%) : GOTO 1380 1510 W%=INSTR(1%,\$,'HL') 1520 IF W%=0% GOTO 1380 1530 \$=LEFT$(\$,W%-1%)+I$+RIGHT$(\$,W%+2%) 1540 GOTO 1510 1550 REM *subr edit* 1560 Z$=NUM$(\) 1570 Z$=SPACE$(\%-LEN(Z$))+Z$ 1580 ; Z$; 1590 RETURN 1600 REM *subr hex oct* 1610 H$=MID$(T$,A%/16%+1%,1%)+MID$(T$,(A% AND 15%)+1%,1%) 1620 RETURN 1630 REM *print instruktion* 1640 IF P9%=0% THEN GOSUB 1880 1650 PRINT #3A$;LEFT$([2$,L9%*3%);SPACE$(3%*(5%-L9%));P$ 1660 GOTO 620 1670 REM *print konstant* 1680 IF P9%=0% THEN GOSUB 1880 1690 ; ' A:adresskonstK:|vr.konst'; 1700 GET \$ : ON FNB('AaKk') GOTO 1700,1710,1720 1710 P$='Adr= '+NUM$(FNA(S)) : L9%=2% : GOTO 1630 1720 ; ' lgd'; : INPUT \% 1730 IF \%<1% OR \%>4% THEN 330 1740 P$=LEFT$([1$,\%*3%) : L9%=\% : GOTO 1630 1750 REM *printerkontroll* 1760 IF P9%=0% THEN GOSUB 1880 1770 GOSUB 1930 1780 ; 'C=cntrlS=streckT=text]=}ter'; : GET \$ 1790 ON FNB('CcSsTt]}') GOTO 1790,1800,1820,1850,330 1800 GOSUB 1930 1810 ; 'CTRL-J=lfL=ff[=escT=condS=ejcond'; : GET \$ : ; #3\$; : GOTO 1770 1820 ; #3SPACE$(V9%); 1830 FOR \%=1% TO 25% : ; #3'- '; : NEXT \% 1840 ; #3 : GOTO 1770 1850 GOSUB 1930 : ; 'Rad='; : INPUTLINE [$ 1860 ; #3SPACE$(V9%);[$; 1870 GOTO 1770 1880 REM *open printer* 1890 GOSUB 1930 : ; 'Parametrar f|r open print'; : INPUT \$ 1900 OPEN 'PR:'+\$ ASFILE 3% 1910 POKE 65011%,PEEK(65011%)-1% 1920 P9%=1% : RETURN 1930 REM *blank akt rad* 1940 ; CUR(PEEK(65011%),0%)SPACE$(40%); : ; CUR(PEEK(65011%)-1%,0%); 1950 RETURN 1960 REM *in kont print* 1970 GOSUB 1930 : ; 'List t.o.m '; : INPUTLINE \$ 1980 M=VAL(LEFT$(\$,LEN(\$)-2%)) 1990 GOTO 1630 : REM printa instr