2 ! +++++++++++++++++++++++++++++++++++ 3 ! Program .... L[SRAM.800 4 ! Utg}va 1.0 1982-12-19 5 ! av (c) Hans Nilsson 8 ! Ins{nt av Hans Nilsson, 2702. 9 ! +++++++++++++++++++++++++++++++++++ 29 ! Program f|r listning av minnesinneh}llet i en 30 ! ABC800-DTC-maskin. Adresstart {r antingen fast 31 ! till n}gon av dosbuffertarna eller valbar (11). 32 ! Under val (11) kan du ange adress antingen decimalt 33 ! val D eller hexa val H. Avbryt med n}gon PF-tangent. 34 ! Valbar utskrift till Printer P eller Display D. 35 ! 40 ! 50 EXTEND 60 INTEGER 70 ! 80 DIM B(5) 90 ! 100 ; CHR$(12) 110 ; "Program f|r l{sning av godtycklig area" 120 ; "eller buffert i RAM. " 125 ; "Avbryt listning med PF-tangent" : ; 130 ; " 0 Dosbuffert 0" 140 ; " 1 Dosbuffert 1" 150 ; " 2 Dosbuffert 2" 160 ; ' 3 Dosbuffert 3' 170 ; ' 4 Dosbuffert 4' 180 ; ' 5 Dosbuffert 5' 190 ; ' 6 Dosbuffert 6' 200 ; ' 7 Dosbuffert 7' 210 ; ' 8 Systemvariabler' 220 ; ' 9 Slaskarea' 230 ; '10 Enkla variabler' 240 ; "11 Godtycklig area" 250 ; "12 Avsluta " : ; : ; 260 INPUT "Vilket |nskas ? "F : ; 270 IF F<0 OR F>12 GOTO 260 275 IF F=12 GOTO 520 280 ; "P} printer (P) " 290 ; "P} display (D) " 300 INPUT "Vilket |nskas P/D ? "F$ 310 IF F$="P" OR F$="p" Printind=1 : OPEN "PR:" AS FILE 3 : ; #3 : ; #3 : ; #3 : GOTO 350 320 IF F$="D" OR F$="d" Printind=0 : GOTO 350 330 GOTO 300 340 ! 350 ! 360 IF F=11 I1=FNInput : Ind=0 : GOTO 390 ! H{mta valbar startadress 370 I1=FNFast : Ind=1 : GOTO 390 ! Ber{kna fast startadress 380 ! 390 J=I1 : I2=I1 : ; CUR(0,0); 400 IF Printind=1 ; CUR(10,20) "AVBRYT MED PF-tangent " 410 I1=FNList(I1,11) 420 ON ERROR GOTO 1350 430 IF Printind=1 THEN IF SYS(5)=0 GOTO 410 ELSE GOTO 100 440 ON ERROR GOTO 450 GET A$ 460 IF Ind=0 GOTO 480 470 IF I1>I2+256 GOTO 490 480 IF LEFT$(A$,1)=" " THEN I1=FNList(I1,1) : GOTO 450 490 GOTO 100 500 ! 510 ! 520 ; CHR$(12) : CLOSE 530 END 540 ! 550 ! 560 ! 570 DEF FNFast 580 I1=(F*256+62720) 590 RETURN I1 600 FNEND 610 ! 620 ! 630 ! 640 DEF FNList(Starta,Antal) LOCAL Start,A 650 ON ERROR GOTO 950 660 Start=Starta 670 FOR I=1 TO Antal 680 H$=HEX$(Start) 690 H$=STRING$(4-LEN(H$),48)+H$ 700 IF Printind=1 THEN ; #3 H$; : ; #3 " ("; : ; #3 USING '######' J; : ; #3 ") "; : GOTO 720 710 ; H$;" ("; : ; USING '#######' J; : ; ") "; 720 J=Start 730 FOR J1=1 TO 8 740 A=PEEK(J) 750 ! IF A<16 ; "0"; 760 IF Printind=1 THEN ; #3 USING '\\' HEX$(A); : ; #3 " "; ELSE ; USING '\\' HEX$(A); : ; " "; 770 J=J+1 780 NEXT J1 790 IF Printind=1 THEN ; #3 TAB(42); ELSE ; TAB(17); 800 J=Start 810 FOR J1=1 TO 8 820 A=PEEK(J) 830 IF Printind=1 GOTO 930 840 IF A<33 OR A>126 THEN ; "."; ELSE ; CHR$(A); 850 ; " "; 860 J=J+1 870 NEXT J1 880 IF Printind=1 THEN ; #3 ELSE ; 890 IF J126 THEN ; #3 USING '\\' "."; ELSE ; #3 USING '\\' CHR$(A); 940 GOTO 860 950 ON ERROR GOTO : RETURN 0 960 FNEND 970 ! 980 ! 990 ! 1000 DEF FNInput 1010 ; CHR$(12) 1020 ; CUR(22,0); 1030 ; "Startadress: Decimalt (D)" 1040 ; " Hexadecimalt (H)" 1050 INPUT "Vilket |nskas D/H ? "T$ 1060 IF T$="D" OR T$="d" Adress=FNKonvdec : GOTO 1090 1070 IF T$="H" OR T$="h" Adress=FNKonvhd : GOTO 1090 1080 GOTO 1030 1090 RETURN Adress 1100 FNEND 1110 ! 1120 ! 1130 ! 1140 DEF FNKonvhd 1150 INPUT "STARTADRESS ("+T$+") :";A$ 1160 IF LEN(A$)<>4 GOTO 1150 1170 FOR I=1 TO 4 1180 B(I)=ASCII(MID$(A$,I,1)) 1190 IF B(I)>64 AND B(I)<71 THEN B(I)=B(I)-55 : GOTO 1210 1200 IF B(I)>47 AND B(I)<58 THEN B(I)=B(I)-48 1210 NEXT I 1220 RETURN 0+16*B(3)+256*B(2)+4096*B(1) 1230 FNEND 1240 ! 1250 ! 1260 ! 1270 DEF FNKonvdec 1280 INPUT "STARTADRESS ("+T$+") :";A$ 1290 IF LEN(A$)<1 OR LEN(A$)>6 GOTO 1280 1300 RETURN VAL(A$) 1310 FNEND 1320 ! 1330 ! 1340 ! 1350 ! Felutskrifter 1360 IF ERRCODE=53 RESUME 100 ELSE ; "Felkod "; : ; ERRCODE; : STOP 1370 ! 1380 ! 1390 !