110 TEXT : HOME : NORMAL : VTAB 7: PRINT "INSTALLING MACHINE CODE, PLEASE WAIT...":TV3 = 0
120 FOR V1 = 16384 TO 16413
130 READ V2
140 POKE V1,V2
150 V3 = V3 +V2
160 NEXT
170 FOR V1 = 24576 TO 24648: REM POKE BOOT PROGRAM INTO $6000
180 READ V2
190 POKE V1,V2
200 V3 = V3 +V2
210 NEXT
220 REM IF DATA IS WRONG, STOP PROGRAM
230 IF V3 < >11452 THEN : PRINT : PRINT CHR$(7);"THERE IS AN ERROR IN THE DATA": PRINT "CHECK TYPING AND RERUN PROGRAM": END
240 REM POKE MESSAGE INTO MACHINE LANGUAGE PROGRAM
250 A$ = "THIS DISK DOES NOT HAVE DOS. INSERT A DISK WITH DOS, PRESS <RETURN> ": REM 7 SPACES
260 FOR V1 = 1 TO LEN(A$)
270 POKE 24648 +V1, ASC( MID$ (A$,V1,1)) +128
280 NEXT
290 REM PRINT GREETINGS
300 TEXT : HOME
310 PRINT SPC( 11);"SECTOR STRETCHER": PRINT SPC( 9);"WRITTEN BY CHRIS BOCK": PRINT " COPYRIGHT 1986 BY MICROSPARC, INC.": PRINT
320 PRINT " SECTOR STRETCHER MODIFIES STANDARD"
330 PRINT "DOS 3.3 DISKS TO FREE UP MORE SPACE "
340 PRINT "FOR DATA STORAGE. YOU MAY RELEASE THE"
350 PRINT "FOLLOWING SECTORS:"
360 PRINT
370 PRINT " DOS - 32 SECTORS"
380 PRINT " NORMALLY UNUSED SECTORS - 11 SECTORS"
390 PRINT " CATALOG SECTORS - UP TO 13 SECTORS"
400 PRINT
410 REM CLEAR OPTION FLAGS
420 DOS = 0:FR = 0:DIR = 0:DS = 0
430 REM OPTION #1
440 VTAB 14: CALL -958: PRINT "DO YOU WISH TO RELEASE THE SECTORS"
450 PRINT "OCCUPIED BY DOS? (THIS MAKES THE DISK UNBOOTABLE) ": VTAB 22: PRINT "PRESS <ESC> TO END THE PROGRAM": VTAB 16: HTAB 13
460 GET A$: IF A$ = CHR$(27) THEN TEXT : HOME : END
470 PRINT A$
480 IF A$ = "Y" OR A$ = CHR$(121) THEN DOS = 1: GOTO 570
490 ON A$ < >"N" AND A$ < > CHR$(110) GOTO 440: PRINT
500 REM OPTION #2
510 VTAB 14: CALL -958: PRINT "DO YOU WISH TO RELEASE THE ELEVEN"
520 PRINT "NORMALLY UNUSED SECTORS? ": VTAB 22: PRINT "PRESS <ESC> TO START OVER ": VTAB 15: HTAB 26
530 REM
540 GET A$: IF A$ = CHR$(27) THEN HTAB 1: GOTO 420
550 PRINT A$
560 IF A$ = "Y" OR A$ = CHR$(121) THEN FR = 1: PRINT : GOTO 590
570 ON A$ < >"N" AND A$ < > CHR$(110) GOTO 510
580 REM OPTION #3
590 VTAB 14: CALL -958: PRINT "DO YOU WISH TO RELEASE ANY OF THE"
600 PRINT "CATALOG SECTORS? ": VTAB 22: PRINT "PRESS <ESC> TO START OVER ": VTAB 15: HTAB 19
610 GET A$: IF A$ = CHR$(27) THEN HTAB 1: GOTO 420
620 PRINT A$
630 IF A$ = "N" OR A$ = CHR$(110) GOTO 710
640 ON A$ < >"Y" AND A$ < > CHR$(121) GOTO 590:DIR = 1
650 VTAB 17: CALL -958
660 PRINT "HOW MANY CATALOG SECTORS DO YOU WANT TO KEEP? (7 FILE NAMES/SECTOR) ";
670 INPUT DS
680 IF DS <2 OR DS >14 THEN PRINT CHR$(7): GOTO 650
690 REM
700 REM PRINT OPTIONS SELECTED
710 HOME
720 IF DOS +FR +DIR = 0 THEN END
730 PRINT SPC( 13);"SECTOR STRETCHER"
740 PRINT
750 PRINT "YOUR CHOICES ARE AS FOLLOWS"
760 PRINT
770 IF DOS = 1 THEN PRINT "FREE UP DOS SECTORS"
780 IF FR = 1 THEN PRINT "RELEASE THE 11 NORMALLY UNUSED SECTORS"
790 IF DIR = 0 THEN 820
800 PRINT "RELEASE ";15 -DS;" SECTOR";: IF DS <14 THEN PRINT "S";
810 PRINT " FROM THE CATALOG"
820 REM START
830 POKE 34,10
840 IF DOS = 0 THEN 1190
850 HOME
860 VTAB 12
870 PRINT "ENTER THE MESSAGE YOU WISH TO HAVE DIS-"
880 PRINT "PLAYED WHEN THIS DISK IS BOOTED."
890 INPUT A$
900 IF A$ = "" AND LEN(B$) >0 THEN A$ = RIGHT$(B$,40):B$ = LEFT$(B$,1): GOTO 950
910 PRINT
920 PRINT "DO YOU WANT IT TO BE NORMAL, FLASHING,"
930 PRINT "OR INVERSE? (N/F/I)";
940 GET B$
950 IF B$ = "N" OR B$ = CHR$(110) THEN V2 = 128: GOTO 990
960 IF B$ = "F" OR B$ = CHR$(102) THEN V2 = 0: GOTO 990
970 IF B$ = "I" OR B$ = CHR$(105) THEN V2 = -64: GOTO 990
980 GOTO 940
990 IF LEN(A$) >40 THEN 850
1000 IF LEN(A$) = 40 THEN 1100
1010 FOR V1 = 1 TO 20 - INT( LEN(A$)/2)
1020 A$ = " " +A$
1030 NEXT
1040 FOR V1 = LEN(A$) +1 TO 40
1050 A$ = A$ +" "
1060 NEXT
1070 B$ = B$ +A$
1080 VTAB 8: HTAB 1
1090 PRINT SPC( 14);"BOOT MESSAGE"
1100 FOR V1 = 1 TO 40
1110 V3 = ASC( MID$ (A$,V1,1))
1120 IF V3 = 32 THEN V3 = 160: GOTO 1150
1130 IF V2 < >128 AND V3 <64 THEN V3 = V3 +64
1140 V3 = V3 +V2
1150 POKE 24721 +V1,V3
1160 POKE 1063 +V1,V3
1170 NEXT
1180 PRINT
1190 HOME : VTAB 12: IF DIR THEN PRINT CHR$(7); CHR$(7);"WARNING! DO NOT RELEASE CATALOG SECTORS FROM A DISK WHICH CONTAINS FILES.": PRINT : PRINT
1200 PRINT "INSERT DISK TO BE ALTERED IN DRIVE 1"
1210 PRINT "AND PRESS <RETURN> TO CONTINUE, OR ": PRINT "<ESC> TO STOP"
1220 POKE -16368,0
1230 V1 = PEEK( -16384)
1240 IF V1 = 155 THEN POKE -16368,0: GOTO 300
1250 IF V1 < >141 THEN 1230
1260 POKE -16368,0
1270 REM READ VTOC INTO $5000-$50FF
1280 POKE 16398,0: REM SECTOR
1290 POKE 16397,17: REM TRACK
1300 POKE 16405,1: REM READ
1310 POKE 16402,80: REM BUFFER
1320 CALL 16384
1330 GOSUB 1860
1340 GOSUB 1980
1350 IF DOS = 0 THEN 1430
1360 REM OPTION #1: OPEN DOS TRACKS (1-2)
1370 FOR V1 = 1 TO 2
1380 POKE 20536 +V1 *4,255
1390 POKE 20537 +V1 *4,255
1400 NEXT
1410 POKE 20676,127
1420 REM OPTION #2: OPEN 11 SECTORS ON TRACK 2
1430 IF FR = 1 THEN POKE 20544,255: POKE 20545,224: POKE 20677,127
1440 IF DIR = 0 THEN 1630
1450 REM OPTION #3: OPEN CHOSEN NUMBER OF SECTORS IN CATALOG
1460 V1 = 2 ^(16 -DS) -2
1470 V2 = INT(V1/256)
1480 V1 = V1 -V2 *256
1490 POKE 20678,142 -DS
1500 REM WRITE VTOC BACK ONTO DISK
1510 POKE 20604,V2
1520 POKE 20605,V1
1530 POKE 16405,2: REM WRITE
1540 CALL 16384
1550 GOSUB 1860
1560 REM SET CATALOG LINK BYTES TO ZERO
1570 POKE 16398,16 -DS: REM SECTOR
1580 POKE 16405,1: REM READ
1590 CALL 16384
1600 GOSUB 1860
1610 POKE 20481,0
1620 POKE 20482,0
1630 REM SAVE EITHER VTOC OR CATALOG BACK ONTO DISK, DEPENDING ON THE VALUE OF DIR (SEE LINE 1440)
1640 POKE 16405,2: REM WRITE
1650 CALL 16384
1660 GOSUB 1860
1670 IF DOS = 0 THEN 1740
1680 REM IF OPTION #1 IS SELECTED, THE SAVE BOOT PROGRM ONTO TRACK 0, SECTOR 0
1690 POKE 16398,0: REM SECTOR
1700 POKE 16397,0: REM TRACK
1710 POKE 16402,96: REM BUFFER
1720 CALL 16384
1730 GOSUB 1860
1740 HOME
1750 VTAB 12
1760 PRINT "DO YOU WISH TO ALTER ANOTHER DISK? ";
1770 GET A$
1780 PRINT A$
1790 IF A$ = "N" THEN END
1800 PRINT
1810 PRINT "DO YOU WISH LEAVE THE OPTIONS SET THE"
1820 PRINT "WAY THEY ARE?";
1830 GET A$
1840 IF A$ = "N" OR A$ = CHR$(118) THEN 300
1850 GOTO 820
1860 REM DISK ERROR CHECK ROUTINE
1870 V1 = PEEK(16406)
1880 IF V1 < >16 AND V1 < >64 AND V1 < >128 THEN RETURN
1890 POKE 16406,0
1900 TEXT : HOME
1910 VTAB 11
1920 IF V1 = 16 THEN PRINT "DISKETTE IS WRITE PROTECTED, REMOVE": PRINT "WRITE PROTECT TAB"
1930 IF V1 = 64 THEN PRINT "DRIVE ERROR"
1940 IF V1 = 128 THEN PRINT "READ ERROR"
1950 PRINT CHR$(7); CHR$(7)
1970 POP : VTAB 22: PRINT "PRESS <RETURN> TO CONTINUE": POKE -16368,0: GET A$: PRINT A$: POKE -16368,0: GOTO 300
1980 IF PEEK(20676) < >127 AND PEEK(20677) < >127 AND ( PEEK(20678) <127 OR PEEK(20678) >141) THEN RETURN
1990 TEXT
2000 HOME
2010 VTAB 9
2020 IF PEEK(20676) = 127 AND DOS = 1 THEN PRINT "DOS HAS ALREADY BEEN REMOVED FROM THIS DISK": PRINT
2030 IF ( PEEK(20676) = 127 OR PEEK(20677) = 127) AND FR = 1 THEN PRINT "THE ELEVEN SECTORS ON TRACK TWO HAVE": PRINT "ALREADY BEEN RELEASED ON THIS DISK.": PRINT
2040 IF PEEK(20677) = 127 AND DOS = 1 THEN PRINT "REMOVING DOS FROM THIS DISK WOULD": PRINT "INTERFERE WITH SECTORS PREVIOUSLY RELEASED.": REM 7 SPACES
2050 V1 = PEEK(20678) -127
2060 IF V1 >0 AND V1 <15 AND DIR = 1 THEN PRINT V1;" SECTORS HAVE ALREADY BEEN RELEASED": PRINT "FROM THE DISK CATALOG.": PRINT
2070 POP
2080 VTAB 22: PRINT "PRESS <RETURN> TO CONTINUE": POKE -16368,0: GET A$: PRINT A$: POKE -16368,0: GOTO 300
2090 REM
2100 REM DATA
2110 DATA 169,64,160,9,32,217,3,96,0,1,96,1,0,17,0,27,64,0,80,0,0,1,0,0,96,1,0,1,239,216
2120 DATA 1,32,47,251,32,88,252,32,228,251,32,228,251,162,28,189,72,8,157,173,4,202,208,247,162,39,189,100,8,157,168,5,202,208,247,162,6,189,139,8,157,184,6,202,208,247,162
2130 DATA 40,189,145,8,157,127,4,202,208,247,142,16,192,142,232,192,174,0,192,224,128,48,249,76,0,198