home *** CD-ROM | disk | FTP | other *** search
- ' Fast Floppy Format
- '
- ' This program uses the BDISK library routines to perform a format of a
- ' 5 1/4" 360K floppy diskette. The file BDISK.BI is necessary for assembly,
- ' and the files BOOTLOC.OBJ and BDISK.LIB is necessary for linking.
- '
- '
- 'declarations and initialization
- DEFINT A-Z
- '$INCLUDE: 'bdisk.bi'
-
- KEY 15, CHR$(&H4) + CHR$(&H46) 'define break key
-
- mess1$ = CHR$(13) + "Fast Floppy Format, BAS - Version 1.0, by Eric Tauck"
- mess2$ = CHR$(13) + "Usage: FFF <drive>"
- mess3$ = CHR$(13) + "About to format diskette in drive A:" + CHR$(10) + "Press any key to begin"
- mess4$ = CHR$(13) + "Error: Illegal drive specifier"
- mess5$ = CHR$(13) + "Error: Could not format disk"
-
- PRINT mess1$ 'opening message
-
- 'get drive specifier
-
- IF LEN(COMMAND$) = 0 THEN 'check command line length
- PRINT mess2$ 'usage message
- END 'exit
- ELSE
- drive = ASC(LEFT$(COMMAND$, 1)) - ASC("A") 'get drive number
- IF (drive < 0) OR (drive > 25) THEN 'check range
- PRINT mess4$ 'error message
- END 'exit
- END IF
- END IF
-
- 'trap break and errors
-
- dummy = setbase(9, 512) 'set disk data
-
- ON KEY(15) GOSUB PROGBRK 'enable break trapping
- ON ERROR GOTO PROGERR 'enable error trapping
-
- 'wait for key
-
- MID$(mess3$, 36, 1) = CHR$(ASC("A") + drive) 'drive letter in message
- PRINT mess3$ 'display prompt
- DO
- KEYWAIT$ = INKEY$
- LOOP WHILE KEYWAIT$ = "" 'wait for key
-
- IF KEYWAIT$ = CHR$(3) THEN GOTO PROGBRK 'check for break
-
- 'format disk
-
- FOR track = 0 TO 39 'for each track
- FOR head = 0 TO 1 'for each head
- errcode = trkfrm(drive, head, track, 9, 512) 'format
- IF errcode THEN EXIT FOR 'check for error
- NEXT head
- IF errcode THEN EXIT FOR
- NEXT track
-
- IF errcode = 0 THEN
-
- 'boot sector
-
- errcode = secwrt(drive, 0, 0, 1, 1, bootsseg, bootsoff)
-
- 'FATs
-
- buf$ = STRING$(512 * 9, 0)
- DEF SEG = bootsseg
- MID$(buf$, 1, 3) = CHR$(PEEK(bootsoff + 21)) + CHR$(&HFF) + CHR$(&HFF)
- errcode = secwrt(drive, 0, 0, 2, 2, VARSEG(buf$), SADD(buf$))
- errcode = secwrt(drive, 0, 0, 4, 2, VARSEG(buf$), SADD(buf$))
-
- 'directory
-
- MID$(buf$, 1, 3) = CHR$(0) + CHR$(0) + CHR$(0)
- errcode = secwrt(drive, 0, 0, 6, 4, VARSEG(buf$), SADD(buf$))
- errcode = secwrt(drive, 1, 0, 1, 3, VARSEG(buf$), SADD(buf$))
-
- ELSE
- PRINT mess5$ 'show message
- END IF
-
- dummy = resbase 'reset disk data
- END
-
- 'break trap
-
- PROGBRK:
- dummy = resbase 'reset disk data
- PRINT "User Break" 'show message
- END 'exit
-
- 'error trap
-
- PROGERR:
- dummy = resbase 'reset disk data
- ON ERROR GOTO 0 'terminate with error
-
-