start bastext 4097 start tok64 d64-MtWYPq 100 REM****************************** 110 REM* display any track $ sector * 120 REM* to screen or printer * 130 REM* * 140 REM* c64, expanded vic-20 or * 150 REM* plus/4 or c16 equipped * 160 REM* with a 1541 or 1551 disk * 170 REM* drive. * 180 REM* rev. 10/24/84 * 190 REM****************************** 200 PRINT"{clear}{down*2}{reverse on}{space*22}" 210 PRINT"display block contents" 220 PRINT"{reverse on}{space*22}" 230 REM****************************** 240 REM* set program constant * 250 REM****************************** 260 sp$=" ":nl$=CHR$(0):hx$="0123456789abcdef" 270 fs$="":FORi=64 TO 95:fs$=fs$+"{reverse on}"+CHR$(i)+"{reverse off}":NEXT i 280 ss$="{space*2}":FOR i=192 TO 223:ss$=ss$+"{reverse on}"+CHR$(i)+"{reverse off}":NEXT i 290 REM ** vic or c64 ? 300 IFPEEK(58630)<>40THEN320 :REM vic 310 l1=63:l2=32:l3=80:l4=3:l5=4:GOTO330 320 l1=31:l2=16:l3=40:l4=7:l5=8 330 DIM a$(15),nb(2) 340 d$="0" 350 PRINT"{down*2}{space*8}{reverse on}s{reverse off}creen{down}{left*8}or {down}{left}{reverse on}p{reverse off}rinter" 360 GETjj$:IF jj$="" THEN360 370 IF jj$="s"THENPRINT"{space*8}{down}{reverse on}screen{reverse off}" 380 IF jj$="p"THENPRINT"{space*8}{down}{reverse on}printer{reverse off}" 390 OPEN15,8,15,"i"+d$:GOSUB 1000 400 OPEN4,4 410 OPEN 2,8,2,"#":GOSUB 1000 420 REM****************************** 430 REM* load track and sector * 440 REM* into disk buffer * 450 REM****************************** 460 INPUT"{down}{right*2}track, sector";t,s 470 IF t=0 OR t>35 THEN PRINT#15,"i"d$:CLOSE2:CLOSE4:CLOSE15:PRINT"end":END 480 IF jj$="s" THEN PRINT"{down}{right*2}track"t" sector"s"{down}" 490 IF jj$="p" THEN PRINT#4:PRINT#4,"track"t" sector"s:PRINT#4 500 PRINT#15,"u1:2,"d$;t;s:GOSUB1000 510 REM****************************** 520 REM* read byte 0 of disk buffer * 530 REM****************************** 540 PRINT#15,"b-p:2,1" 550 PRINT#15,"m-r"CHR$(0)CHR$(7) 560 GET#15,a$(0):IFa$(0)=""THENa$(0)=nl$ 570 IF jj$="s"THEN580 580 IF jj$="p"THEN740 590 REM****************************** 600 REM* read & crt display * 610 REM* rest of the disk buffer * 620 REM****************************** 630 k=1:nb(1)=ASC(a$(0)) 640 FOR j=0 TO l1:IF j=l2 THEN GOSUB 1060:IF z$="n"THEN j=l3:GOTO 730 650 FOR i=k TO l4 660 GET#2,a$(i):IF a$(i)="" THEN a$(i)=nl$ 670 IF k=1 AND i<2 THEN nb(2)=ASC(a$(i)) 680 NEXT i:k=0 690 a$="":b$=":":n=j*l5:GOSUB 1140:a$=a$+":" 700 FOR i=0 TO l4:n=ASC(a$(i)):GOSUB 1140 710 c$=a$(i):GOSUB 1200:b$=b$+c$ 720 NEXT i:IF jj$="s" THEN PRINTa$b$ 730 NEXT j:GOTO890 740 REM****************************** 750 REM* read & printer display * 760 REM****************************** 770 k=1:nb(1)=ASC(a$(0)) 780 FOR j=0 TO 15 790 FOR i=k TO 15 800 GET#2,a$(i):IF a$(i)="" THEN a$(i)=nl$ 810 IF k=1 AND i<2 THEN nb(2)=ASC(a$(i)) 820 NEXT i:k=0 830 a$="":b$=":":n=j*16:GOSUB 1140:a$=a$+":" 840 FOR i=0 TO 15:n=ASC(a$(i)):GOSUB 1140:IF z$="n"THEN j=40:GOTO 890 850 c$=a$(i):GOSUB 1200:b$=b$+c$ 860 NEXT i 870 IF jj$="p" THEN PRINT#4,a$b$ 880 NEXT j:GOTO890 890 REM****************************** 900 REM* next track and sector * 910 REM****************************** 920 PRINT"{down}next track and sector"nb(1)nb(2) "{down}" 930 PRINT"do you want next track and sector" 940 GET z$:IF z$="" THEN940 950 IF z$="y" THEN t=nb(1):s=nb(2):GOTO470 960 IF z$="n" THEN 460 970 GOTO 940 980 REM****************************** 990 REM* subroutines * 1000 REM****************************** 1010 REM* error routine * 1020 REM****************************** 1030 INPUT#15,en,em$,et,es:IF en=0 THEN RETURN 1040 PRINT"{reverse on}disk error{reverse off}"en,em$,et,es 1050 END 1060 REM****************************** 1070 REM* screen continue mssg * 1080 REM****************************** 1090 PRINT"{down}{right*4}continue(y/n)" 1100 GETz$:IF z$="" THEN 1100 1110 IF z$="n" THEN RETURN 1120 IF z$<>"y" THEN 1100 1130 PRINT"{clear}track" t " sector"s "{clear}":RETURN 1140 REM****************************** 1150 REM* disk byte to hex print * 1160 REM****************************** 1170 a1=INT(n/16):a$=a$+MID$(hx$,a1+1,1) 1180 a2=INT(n-16*a1):a$=a$+MID$(hx$,a2+1,1) 1190 a$=a$+sp$:RETURN 1200 REM****************************** 1210 REM* disk byte to asc display * 1220 REM* character * 1230 REM****************************** 1240 IF ASC(c$)<32 THEN c$=" ":RETURN 1250 IF ASC(c$)<128 OR ASC(c$)>159 THEN RETURN 1260 c$=MID$(ss$,3*(ASC(c$)-127),3):RETURN stop tok64 (bastext 1.0)