home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / basic / library / qb_pds / dos / bdisk / fff.bas < prev    next >
Encoding:
BASIC Source File  |  1987-12-14  |  3.1 KB  |  102 lines

  1. ' Fast Floppy Format
  2. '
  3. ' This program uses the BDISK library routines to perform a format of a
  4. ' 5 1/4" 360K floppy diskette.  The file BDISK.BI is necessary for assembly,
  5. ' and the files BOOTLOC.OBJ and BDISK.LIB is necessary for linking.
  6. '
  7. '
  8.   'declarations and initialization
  9.   DEFINT A-Z
  10.   '$INCLUDE: 'bdisk.bi'
  11.  
  12.   KEY 15, CHR$(&H4) + CHR$(&H46)          'define break key
  13.  
  14.   mess1$ = CHR$(13) + "Fast Floppy Format, BAS - Version 1.0, by Eric Tauck"
  15.   mess2$ = CHR$(13) + "Usage: FFF <drive>"
  16.   mess3$ = CHR$(13) + "About to format diskette in drive A:" + CHR$(10) + "Press any key to begin"
  17.   mess4$ = CHR$(13) + "Error: Illegal drive specifier"
  18.   mess5$ = CHR$(13) + "Error: Could not format disk"
  19.  
  20.   PRINT mess1$                          'opening message
  21.  
  22.   'get drive specifier
  23.  
  24.   IF LEN(COMMAND$) = 0 THEN                     'check command line length
  25.     PRINT mess2$                                'usage message
  26.     END                                         'exit
  27.   ELSE
  28.     drive = ASC(LEFT$(COMMAND$, 1)) - ASC("A")  'get drive number
  29.     IF (drive < 0) OR (drive > 25) THEN         'check range
  30.       PRINT mess4$                              'error message
  31.       END                                       'exit
  32.     END IF
  33.   END IF
  34.  
  35.   'trap break and errors
  36.  
  37.   dummy = setbase(9, 512)               'set disk data
  38.  
  39.   ON KEY(15) GOSUB PROGBRK              'enable break trapping
  40.   ON ERROR GOTO PROGERR                 'enable error trapping
  41.  
  42.   'wait for key
  43.  
  44.   MID$(mess3$, 36, 1) = CHR$(ASC("A") + drive)  'drive letter in message
  45.   PRINT mess3$                                  'display prompt
  46.   DO
  47.     KEYWAIT$ = INKEY$
  48.   LOOP WHILE KEYWAIT$ = ""                      'wait for key
  49.  
  50.   IF KEYWAIT$ = CHR$(3) THEN GOTO PROGBRK       'check for break
  51.  
  52.   'format disk
  53.  
  54.   FOR track = 0 TO 39                                   'for each track
  55.     FOR head = 0 TO 1                                   'for each head
  56.       errcode = trkfrm(drive, head, track, 9, 512)      'format
  57.       IF errcode THEN EXIT FOR                          'check for error
  58.     NEXT head
  59.     IF errcode THEN EXIT FOR
  60.   NEXT track
  61.  
  62.   IF errcode = 0 THEN
  63.  
  64.     'boot sector
  65.  
  66.     errcode = secwrt(drive, 0, 0, 1, 1, bootsseg, bootsoff)
  67.  
  68.     'FATs
  69.  
  70.     buf$ = STRING$(512 * 9, 0)
  71.     DEF SEG = bootsseg
  72.     MID$(buf$, 1, 3) = CHR$(PEEK(bootsoff + 21)) + CHR$(&HFF) + CHR$(&HFF)
  73.     errcode = secwrt(drive, 0, 0, 2, 2, VARSEG(buf$), SADD(buf$))
  74.     errcode = secwrt(drive, 0, 0, 4, 2, VARSEG(buf$), SADD(buf$))
  75.  
  76.     'directory
  77.  
  78.     MID$(buf$, 1, 3) = CHR$(0) + CHR$(0) + CHR$(0)
  79.     errcode = secwrt(drive, 0, 0, 6, 4, VARSEG(buf$), SADD(buf$))
  80.     errcode = secwrt(drive, 1, 0, 1, 3, VARSEG(buf$), SADD(buf$))
  81.  
  82.   ELSE
  83.     PRINT mess5$                'show message
  84.   END IF
  85.  
  86.   dummy = resbase               'reset disk data
  87.   END
  88.  
  89. 'break trap
  90.  
  91. PROGBRK:
  92.   dummy = resbase               'reset disk data
  93.   PRINT "User Break"            'show message
  94.   END                           'exit
  95.  
  96. 'error trap
  97.  
  98. PROGERR:
  99.   dummy = resbase               'reset disk data
  100.   ON ERROR GOTO 0               'terminate with error
  101.  
  102.