home *** CD-ROM | disk | FTP | other *** search
- 10 POKE55,0:POKE56,160
- 14 REM-------BLOCKMOD4------------------ -----------
- 15 REM------JERRY BYBEE----------------- 404 ROSEMERE LN-MAQUOKETA,IA 52060
- 20 REM --USES SOME ROUTINES FROM-- --BACKUP 1541--
- 30 FORI=828TO883:READA:POKEI,A:NEXTI
- 40 BB=PEEK(44)+27:POKE995,BB
- 50 POKE998,PEEK(55):POKE999,PEEK(56):POKE55,0:POKE56,BB:CLR
- 60 BB=PEEK(995):BA=BB*256
- 70 MA=828
- 80 PRINT"[147]":PRINT"BLOCK MOD4":PRINT
- 90 PRINT:INPUT"DO YOU WANT INSTRUCTIONS (Y/N)";YN$:PRINT
- 100 IFYN$="Y"THENGOSUB1330:GOTO120
- 110 IFYN$<>"N"GOTO90
- 120 PRINT"DO YOU WANT TO:":PRINT" (1) READ A BLOCK":PRINT" (2) WRITE A BLOCK
- 130 [153]" (3) REVIEW SOMETHING AGAIN":[153]" (4) SELECT A NEW FUNCTION":[153]" (5) STOP
- 140 INPUTRW:PRINT:IFRW=4GOTO450
- 150 IFRW=3GOTO230
- 160 IFRW=5GOTO1530
- 170 PRINT"WHAT BLOCK DO YOU WANT?"
- 180 INPUT"TRACK";T1
- 190 INPUT"SECTOR";S1:PRINT
- 200 IFRW=1THENGOSUB760:GOSUB 230:GOTO450
- 210 IFRW=2THENGOSUB890:GOTO120
- 220 GOTO120
- 230 PRINT"HOW DO YOU WANT TO SEE IT?"
- 240 PRINT"(1) CHR$'S (DIRECTORY)":PRINT"(2) DECIMAL NUMBERS":PRINT"(3) HEXADECIMAL"
- 250 PRINT"(4) DISK NAME,ID AND DOS"
- 260 INPUTCA:PRINT
- 270 ON CA GOSUB390,300,330,350
- 280 IF CA<>1ANDCA<>2ANDCA<>3ANDCA<>4GOTO230
- 290 GOTO450
- 300 ZX=0
- 310 FORQ=0TO248STEP8:PRINT"[157]";Q;")";:FORK=0TO7:PRINTPEEK(BA+Q+K);:NEXTK:PRINT:NEXTQ
- 320 RETURN
- 330 FORQ=0TO248STEP8:PRINTQ;")";:FORQ1=0TO7:D=PEEK(BA+Q+Q1):GOSUB380:PRINTH$;" ";:NEXTQ1:PRINT:NEXTQ
- 340 RETURN
- 350 IFT1<>18ORS1<>0THENPRINT"YOU NEED TRACK-18,SECTOR-0 TO READ THE NAME & ID":PRINT
- 360 FORN=144TO167:PRINTCHR$(PEEK(BA+N));:NEXT:PRINT
- 370 RETURN
- 380 H$="":D=D/16:FORI=1TO2:D%=D:H$=H$+CHR$(48+D%-(D%>9)*7):D=16*(D-D%):NEXT:RETURN
- 390 PRINT"DIRECTORY":PRINT:PRINT"TRACK";T1;:PRINT"SECTOR";S1:PRINT:
- 400 PRINT" (# BLOCKS)"
- 410 FORV=0TO7:PRINTV+1;" ";:FORW=0TO15:PRINTCHR$(PEEK(BA+5+V*32+W));:NEXTW:PRINTPEEK(BA+V*32+30):NEXTV
- 420 PRINT"NEXT DIRECTORY BLOCK:"
- 430 PRINT"TRACK:";PEEK(BA)
- 440 PRINT"SECTOR:";PEEK(BA+1):RETURN
- 450 PRINT:PRINT" WHAT DO YOU WANT TO DO TO THE CURRENT BLOCK ? (";T1;",";S1;")":PRINT
- 460 PRINT" (1) NOTHING":PRINT" (2) CHANGE DISK NAME & ID":PRINT" (3) UNSCRATCH THE BLOCK
- 470 [153]" (4) CHANGE A BYTE":[153]" (5) SEE A PROGRAM'S BLOCK SEQUENCE
- 480 PRINT" (6) FIND A PROGRAM'S LOAD ADDRESS
- 490 [133]NC:[153]
- 500 [139]NC[178]1[137]120
- 510 [139]NC[178]2[167][141]1090
- 520 [139]NC[178]3[167][141]1170
- 530 [139]NC[178]4[167][141]1270
- 540 [139]NC[178]5[167][141]1600
- 550 [139]NC[178]6[167][141]1780
- 560 [137]450
- 570 [159]1,8,15
- 580 [152]1,"I0":[159]3,8,3,"#"
- 590 [141]760
- 600 [153]"READING BLOCK #";
- 610 S1[178]S1[170]1:[139]S1[177]20[167]S1[178]0:T1[178]T1[170]1
- 620 [139]T1[179]TF[170]1[167]550
- 630 [153]""
- 640 [160]3
- 650 D$[178]"D":[141]3200:[139]IR$[179][177]I1$[167][137]650
- 660 [152]1,"I0":[159]3,8,3,"#"
- 670 [141]890:[160]1:[137]201
- 680 [153]"WRITING BUFFER #";
- 690 S1[178]S1[170]1:[139]S1[177]20[167]S1[178]0:T1[178]T1[170]1
- 700 [139]T1[179]TF[170]1[167]650
- 710 [153]""
- 720 [160]3
- 730 S[178]S1[170]1:[139]S[177]20[167]S[178]0:T1[178]T1[170]1
- 740 T[178]T1:[139]T[177]TF[167]550
- 750 D$[178]"S":[141]3200:[139]IR$[179][177]I2$[167]750
- 760 [143] READ BLOCK T1,S1 TO BUFFER
- 770 C[178].
- 780 [160]3:[160]1:[159]1,8,15
- 790 [152]1,"I0":[159]3,8,3,"#"
- 800 [152]1,"U1";3;0;T1;S1
- 810 [141]1050:[139][168]ER[167]840
- 820 C[178]C[170]1:[139]C[179]3[137]800
- 830 [153]ER$:[129]J[178]BB[172]256[164]BB[172]256[170]255:[151]J,.:[130]J:[137]880
- 840 [152]1,"B-P";3;0
- 850 [151]996,[194](3):[151]997,[194](4):[151]4,BB:[158]MA
- 860 [151]3,[194](996):[151]4,[194](997)
- 870 [139]ST[179][177].[175]ST[179][177]64[167][141]1050:[137]830
- 880 [142]
- 890 [143] WRITE BLOCK T1,S1 FROM BUFFER
- 900 [153]"HAVE YOU READ AND MODIFIED THE BLOCK FIRST....IF YOU HAVEN'T IT";
- 910 [153]"WILL REALLY SCREW UP THE ENTIRE BLOCK. TO ESCAPE HIT RUN/STOP-";
- 920 [153]"RESTORE"
- 930 [153]"IF YOU'RE SURE HIT ANY KEY":[153]:[153]
- 940 [146]197,64,64
- 950 C[178].
- 960 [152]1,"B-A";0;T1;S1:[152]1,"B-P";3;0
- 970 [151]996,[194](3):[151]997,[194](4):[151]4,BB:[158]MA[170]3
- 980 [151]3,[194](996):[151]4,[194](997)
- 990 [139]ST[179][177].[175]ST[179][177]64[167][153]"IEEE WRITE ERROR"ST"WAIT":[137]1930
- 1000 [152]1,"U2";3;0;T1;S1
- 1010 [141]1050:[139][168]ER[167]1040
- 1020 C[178]C[170]1:[139]C[179]3[167]1000
- 1030 [153]"UNRECOVERABLE WRITE ERROR"ER$:[137]1930
- 1040 [142]
- 1050 [143] READ ERR CH TO ER,ER$
- 1060 [132]1,E0$,E1$,E2$,E3$:ER$[178]E0$[170]","[170]E1$[170]","[170]E2$[170]","[170]E3$
- 1070 ER[178][195](E0$):[139]ER[167]ER[178][197](E0$)
- 1080 [142]
- 1090 [139]T1[179][177]18[176]S1[179][177]0[167][153]"ONLY TRACK:18 SECTOR:0 HAS THE NAME & ID ":[142]
- 1100 [133]"NEW DISK NAME";NA$:NA$[178]NA$[170]"CLOSECLOSECLOSECLOSECLOSECLOSECLOSECLOSECLOSECLOSECLOSECLOSECLOSECLOSECLOSECLOSECLOSE"
- 1110 [133]"NEW ID";ID$
- 1120 [129]JE[178]1[164]16
- 1130 [151](BA[170]143[170]JE),[198]([202](NA$,JE,1))
- 1140 [130]JE
- 1150 [129]JE[178]1[164]2:[151]BA[170]161[170]JE,[198]([202](ID$,JE,1)):[130]JE
- 1160 [141]890:[141]760::[141]350:[153]"(NAME,ID,AND DOS-AS READ FROM DISK)":[153]:[142]
- 1170 [139]T1[179][177]18[176]S1[178]0[167][153]"YOU CAN ONLY UNSCRATCH A DIRECTORY BLOCK":[137]1260
- 1180 [133]"# OF PROGRAMS IN BLOCK";NO
- 1190 [129]JE[178]0[164]NO[171]1
- 1200 [151]BB[172]256[170]2[170]JE[172]32,130
- 1210 [130]JE
- 1220 [153]:[153]"NEXT BLOCK OF DIRECTORY IS:"
- 1230 [153]"TRACK:";[194](BB[172]256)
- 1240 [153]"SECTOR:";[194](BB[172]256[170]1)
- 1250 [142]
- 1260 [153]"YOU ARE TRYING TO UNSCRATCH":[153]"TRACK:";T1:[153]"SECTOR:";S1:[142]
- 1270 [133]"BYTE # : ";BN
- 1280 [153]"OLD VALUE = ";[194](BB[172]256[170]BN)
- 1290 [133]"NEW VALUE DESIRED ";NV
- 1300 [151]BB[172]256[170]BN,NV
- 1310 [153]"IF REWRITTEN TO DISK, BYTE ";BN:[153]" WILL BE ";NV
- 1320 [142]
- 1330 [153]:[153]"LOADTHIS PROGRAM CAN BE UTILIZED TO:
- 1340 PRINT" (1) READ AND WRITE DISK BLOCKS
- 1350 [153]" (2) DISPLAY A BLOCK IN HEX,DECIMAL, OR AS A DIRECTORY
- 1360 PRINT" (3) UNSCRATCH FILES
- 1370 [153]" (4) CHANGE THE DISK NAME AND ID
- 1380 PRINT" (5) ALTER INDIVIDUAL BYTE(S) WITHIN ANY BLOCK
- 1390 [153]" (6) DISPLAY A PROGRAM'S BLOCKS
- 1400 PRINT"[185][185](7) SHOW A PROGRAM'S LOAD ADDRESS[185][185][185][185][185]
- 1410 [153]"TO UNSCRATCH FILES YOU NEED TO CHANGE BYTE 0";
- 1420 [153]" OF THAT FILE'S DIRECTORY ENTRY"
- 1430 [153]"(SEE TOP OF P.56 OF 1541 USERS MANUAL)
- 1440 PRINT"FOR FILE 'N' OF THAT DIRECTORY BLOCK THE BYTE TO CHANGE IS:((N-1)*32+2)
- 1450 [153]"(FOR SEQ, 'TYPE'=1: FOR PRG 'TYPE'=2)
- 1460 PRINT"EG. TO UNSCRATCH THE SECOND FILE (A PRG) OF A BLOCK, CHANGE BYTE 34
- 1470 [153]"((2-1)*32+2) TO 130 (128+2)
- 1480 PRINT:PRINT"AFTER YOU READ AND CHANGE A BLOCK YOU HAVE TO WRITE IT BACK";
- 1490 PRINT" TO THE DISK"
- 1500 PRINT"HIT [146] TO CONTINUE"
- 1510 GETT$:IFT$=""GOTO1510
- 1520 PRINT:RETURN
- 1530 PRINT:PRINT" DID YOU UNSCRATCH ANY FILES? (IF SO, THE DISK MUST BE RE-";
- 1540 PRINT"VALIDATED)
- 1550 [133]"(Y/N)";YN$
- 1560 [139]YN$[178]"N"[137]1590
- 1570 [153]:[153]:[153]"RE-VALIDATING DISK...........
- 1580 CLOSE1:CLOSE3:OPEN15,8,15:PRINT#15,"V":CLOSE15:END
- 1590 OPEN15,8,15:CLOSE15:END
- 1600 REM SEQUENCE OF BLOCKS OF PROGRAM ON DISK
- 1610 IFT1=18THENIFS1<>0GOTO1650
- 1620 PRINT"YOU HAVE TO START WITH A DIRECTORY ENTRY (TRACK 18, SECTOR>0) TO";
- 1630 PRINT" SEQUENCE THE ";
- 1640 PRINT"BLOCKS ";:PRINT"OF A PROGRAM":RETURN
- 1650 INPUT"NUMBER OF PROGRAM IN SECTOR (1-8)";NB
- 1660 PRINT" BLOCKS OF PROGRAM"
- 1670 PRINT"[198][198][198][198][198][198][198][198][198][198][198][198][198][198][198][198][198][198][198][198][198][198][198][198][198][198][198][198][198][198][198][198][198][198][198][198][198][198][198][198]"
- 1680 PRINT" BLOCK NUMBER TRACK SECTOR"
- 1690 GOSUB 760
- 1700 T1=PEEK(BB*256+(NB-1)*32+3):S1=PEEK(BB*256+(NB-1)*32+4)
- 1710 PRINT:NM=1
- 1720 PRINT" ";NM;" ";T1;" ";S1
- 1730 NM=NM+1
- 1740 GOSUB 760:T2=T1:S2=S1
- 1750 T1=PEEK(BB*256):S1=PEEK(BB*256+1)
- 1760 IFS1>20ORT1<1ORT1>35THENT1=T2:S1=S2:RETURN
- 1770 GOTO1720
- 1780 REM LOAD ADDRESS OF PROGRAM
- 1790 IFT1=18THENIFS1>0GOTO1820
- 1800 PRINT"YOU HAVE TO START WITH THE DIRECTORY (TRACK 18,SECTOR>0)"
- 1810 PRINT"TO FIND THE LOAD ADDRESS OF A PROGRAM":RETURN
- 1820 PRINT"DID YOU JUST READ THE PROPER DIRECTORY SECTOR (Y/N)?":INPUT YN$
- 1830 IFYN$="Y"THENGOTO1860
- 1840 INPUT"SECTOR OF DIRECTORY PROGRAM NAME IS ON";S1
- 1850 GOSUB 760
- 1860 A=BB*256:GOSUB390
- 1870 INPUT"NUMBER OF PROGRAM IN SECTOR (1-8)";NB
- 1880 T1=PEEK(A+(NB-1)*32+3):S1=PEEK(A+(NB-1)*32+4)
- 1890 GOSUB760
- 1900 LO=PEEK(A+2):HI=PEEK(A+3)
- 1910 PRINT:PRINT"LOAD ADDRESS OF THIS PROGRAM:";HI*256+LO
- 1920 RETURN
- 1930 REM DROP OUT
- 1940 POKE55,PEEK(998):POKE56,PEEK(999):CLR:STOP
- 1950 DATA76,66,3,76,91,3,162,3,32,198,255,160,0,132,3,32,207,255,145
- 1960 DATA3,165,144,208,3,200,208,244,32,204,255,96,162,3,32,201,255,160
- 1970 DATA0,132,3,177,3,32,210,255,165,144,208,3,200,208,244,32,204,255,96
-