10 REM DISKID (VERSION 2: 1541/1571/1581 DISK DRIVES) 20 REM THIS PROGRAM REWRITES THE DISK ID BLOCK. USE WITH CARE. 30 PRINT"[147]PROGRAM DISKID":PRINT 40 INPUT"WHICH DISK DRIVE # (8/9/10/11)";U 50 PRINT:PRINT"SELECT DRIVE TYPE":PRINT"(1) 1541":PRINT"(2) 1571" 60 :PRINT"(3) 1581":PRINT 70 :INPUT"WHICH DRIVE TYPE (1/2/3)";MODE 80 :IF MODE<1 OR MODE>3 THEN GOTO 50 90 IF MODE=1 THEN D$="1541":DTRK=18:S0=1:DSIDE=0 100 IF MODE=2 THEN D$="1571":DTRK=18:S0=1:DSIDE=128 110 IF MODE=3 THEN D$="1581":DTRK=40:S0=3 120 PRINT 130 PRINT"PUT THE BACKUP CORRUPTED DISK IN DRIVE." 140 PRINT"THIS PROGRAMS REWRITES THE DISK ID BLOCK" 150 PRINT:PRINT"BE CAREFUL THAT CORRECT DISK IS IN DRIVE" 160 PRINT 170 INPUT"NEW DISK NAME";N$ 180 S$="":FOR I=1 TO 18:S$=S$+CHR$(160):NEXT 190 NA$=LEFT$(N$+S$,18) 200 INPUT"NEW DISK ID (2 CHARS)";I$ 210 ID$=LEFT$(I$+S$,2) 220 T=DTRK:S=0 :REM (null) TRACK. 230 OPEN15,U,15,"I0":INPUT#15,A,B$,C,D:PRINT A;B$;C;D 240 IF D$<>"1571" THEN GOTO 280 250 :PRINT#15,"U0>M1":REM SET 1571 TO 1571 MODE. 260 :INPUT#15,A,B$,C,D:IF A=0 THEN GOTO 280 270 ::PRINTA;B$;C;D:PRINT"NOT A 1571 DRIVE":CLOSE15:STOP 280 IF D$<>"1541" AND D$<>"1571" THEN GOTO 330 290 :REM NOW OVERWRITE DISK DOS VERSION ALREADY READ INTO DRIVE, 300 :REM AT LOCATION (IN 1541/1571) $0101. 310 :REM A ZERO IN $0101 TURNS OFF DOS COMPATIBILITY CHECKS. 320 :PRINT#15,"M-W";CHR$(01);CHR$(01);CHR$(01);CHR$(0) 330 REM NOW START WRITING THE DISK (null) BLOCK. 340 REM FIRST 2 BYTES OF DISK (null) BLOCK GIVE (null) STARTING ADDRESS. 350 OPEN5,U,5,"#" 360 PRINT#15,"U1";5;0;T;S 370 PRINT#15,"B-P";5;0 380 PRINT#5,CHR$(DTRK);CHR$(S0); :REM LOCATION OF FIRST (null) BLOCK 390 IF D$="1581" THEN GOTO 610 400 REM .......................... 410 REM 1541/1571 (null) SECTION STARTS HERE 420 :PRINT#5,"A";:REM DISK FORMAT VERSION 430 :PRINT#5,CHR$(DSIDE);:REM 2-SIDED FLAG: $00 FOR 1541, $80 FOR 1571 440 :FOR IB=4 TO 143:PRINT#5,CHR$(0);:NEXT IB: REM DUMMY BAM BLOCK ENTRIES 450 :PRINT#5,NA$;:REM DISK NAME:18 BYTES, TRAILING CHR$(160) 460 :PRINT#5,ID$;:REM DISK ID: 2 BYTES 470 :PRINT#5,CHR$(160); 480 :PRINT#5,"2";: REM DOS VERSION 490 :PRINT#5,"A";: REM DISK FORMAT TYPE 500 :FOR IB=167 TO 170:PRINT#5,CHR$(160);:NEXT IB 510 :FOR IB=171 TO 255:PRINT#5,CHR$(0);: NEXT IB:REM 1541=DUMMY,1571=BAM 520 :PRINT#15,"U2";5;0;T;S:REM WRITE THIS BLOCK 530 :INPUT#15,A,B$,C,D:PRINTA;B$;C;D 540 :IF A=0 OR A=73 THEN GOTO 1060 : REM EXIT 1541/1571 SECTION 550 ::PRINT:PRINT"PROBLEM WRITING TO DISK. PLEASE CHECK" 560 ::PRINT"THAT CORRECT DISK IS IN DRIVE";U;"[146]" 570 ::PRINT"THAT THE DISK IS WRITE-ENABLED" 580 ::PRINT"AND THAT THE DRIVE IS A ";D$;"[146]." 590 ::CLOSE5:CLOSE15:STOP 600 REM................................ 610 REM 1581 (null) SECTION STARTS HERE 620 :PRINT#5,"D";:REM DISK VERSION # 630 :PRINT#5,CHR$(0); 640 :PRINT#5,NA$; :REM DISK NAME 650 :PRINT#5,ID$; :REM DISK ID 660 :PRINT#5,CHR$(160); 670 :PRINT#5,"3"; :REM DOS VERSION 680 :PRINT#5,"D"; :REM DISK VERSION 690 :PRINT#5,LEFT$(S$,2); 700 :FOR I=29 TO 255:PRINT#5,CHR$(0);:NEXT 710 :PRINT#15,"B-[215]";5;0;T;S:REM WRITE THIS BLOCK 720 :INPUT#15,A,B$,C,D:PRINTA;B$;C;D 730 :IF A=0 OR A=73 THEN GOTO 780 740 :PRINT:PRINT"PROBLEM WRITING TO DISK. PLEASE CHECK" 750 :PRINT"THAT CORRECT DISK IS IN DRIVE";U 760 :PRINT"AND THAT THE DISK IS WRITE-ENABLED." 770 :CLOSE5:CLOSE15:STOP 780 :REM NOW WRITE SECOND BLOCK (SECTOR 1) 790 :S=1 800 :PRINT#15,"U1";5;0;T;S:REM READ IN WHAT'S ALREADY IN FIRST BAM BLOCK 810 :PRINT#15,"B-P";5;0:REM RESET POINTER 820 :PRINT#5,CHR$(40);CHR$(2); :REM T/S OF NEXT BAM BLOCK 830 :PRINT#5,"D"; :REM VERSION # 840 :PRINT#5,CHR$(255-ASC("D"));:REM COMPLIMENT VERSION # 850 :PRINT#5,ID$;: REM DISK ID 860 :PRINT#5,CHR$(192); :REM I/O BYTE 870 :FOR I=7 TO 15:PRINT#5,CHR$(0);:NEXT 880 :PRINT#15,"B-[215]";5;0;T;S:REM WRITE THIS SECTOR 890 :INPUT#15,A,B$,C,D:IF A=0 THEN GOTO 910 900 ::PRINT"PROBLEM WRITING SECTOR 1":PRINT A;B$;C;D:CLOSE5:CLOSE15:STOP 910 :REM NOW SECTOR #2 920 :S=2 930 :PRINT#15,"U1";5;0;T;S:REM READ IN WHAT'S ALREADY IN FIRST BAM BLOCK 940 :PRINT#15,"B-P";5;0:REM RESET POINTER 950 :PRINT#5,CHR$(0);CHR$(255); 960 :PRINT#5,"D"; :REM VERSION # 970 :PRINT#5,CHR$(255-ASC("D")); :REM COMPLIMENT VERSION # 980 :PRINT#5,ID$;: REM DISK ID 990 :PRINT#5,CHR$(192); :REM I/O BYTE 1000 :FOR I=7 TO 15:PRINT#5,CHR$(0);:NEXT 1010 :PRINT#15,"B-[215]";5;0;T;S:REM WRITE THIS SECTOR 1020 :INPUT#15,A,B$,C,D:IF A=0 THEN GOTO 1060 1030 ::PRINT"PROBLEM WRITING SECTOR 2":PRINT A;B$;C;D:CLOSE5:CLOSE15:STOP 1040 :REM END OF 1581-SPECIFIC (null) 1050 REM ........................ 1060 CLOSE5 1070 PRINT#15,"I0":CLOSE15 1080 END