home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / magazine / pcmagazi / 1989 / 06 / diskinfo.bas < prev    next >
BASIC Source File  |  1989-02-16  |  2KB  |  44 lines

  1. 10 '----- DiskInfo.Bas 
  2. 20 DEFINT A-Z : CLS                         'SYSINT requires integers
  3. 30 DIM REG.IN(7), REG.OUT(7)                'dim register arrays
  4. 40 AX=0:BX=1:CX=2:DX=3:SI=4:DI=5:DS=6:ES=7  'define register elements
  5. 50 SYSINT$ = SPACE$(116)                    'load SYSINT into a string
  6. 60 FOR X=1 TO 116
  7. 70     READ A$ : MID$(SYSINT$, X, 1) = CHR$(VAL("&H" + A$))
  8. 80 NEXT
  9. 90 '
  10. 100 INPUT "Which drive - <Enter> for default"; D$
  11. 110 IF D$ = "" THEN DRIVE = 0 : GOTO 140    '0 = default drive
  12. 120 IF D$ < "A" OR D$ > "Z" THEN 100
  13. 130 DRIVE = ASC(D$) - 64                    '1 = A, 2 = B, etc.
  14. 140 REG.IN(AX) = 256 * &H36                 'Function 36h goes in AH
  15. 150 REG.IN(DX) = DRIVE                      'drive number goes in DL
  16. 160 INT.NO = &H21                           'Int 21h for DOS
  17. 170 '
  18. 180 DEF SEG : X = VARPTR(SYSINT$)           'get SYSINT address
  19. 190 SYSINT! = PEEK(X+1) + 256 * PEEK(X+2)
  20. 200 CALL SYSINT!(INT.NO, REG.IN(0), REG.OUT(0))
  21. 210 IF REG.OUT(AX) = -1 THEN PRINT "Invalid drive" : GOTO 100  'AX = FFFFh
  22. 220 SPC = REG.OUT(AX) : FRC = REG.OUT(BX)   'sectors/clusters, free clusters
  23. 230 BPS = REG.OUT(CX) : CPD = REG.OUT(DX)   'bytes/sector, clusters/disk
  24. 240 '
  25. 250 PRINT : PRINT "Logical Disk Setup"
  26. 260 PRINT "------------------------------"
  27. 270 PRINT "Bytes per sector    :" BPS
  28. 280 PRINT "Sectors per cluster :" SPC
  29. 290 PRINT "Clusters per disk   :" CPD
  30. 300 PRINT "------------------------------"
  31. 310 PRINT "Total disk space    : ";: PRINT USING "#########,"; BPS * SPC * CPD
  32. 320 PRINT "Disk free space     : ";: PRINT USING "#########,"; BPS * SPC * FRC
  33. 330 '
  34. 1000 DATA  55, 8B, EC, 8B, 5E, 0A, 8B, 07, 8B, 5E, 06, 8B, CB
  35. 1010 DATA  8B, 5E, 08, 06, 1E, E8, 05, 00, 00, 00, CD, 00, C3
  36. 1020 DATA  5D, 88, 46, 03, 89, 4E, 00, 8B, 4F, 04, 8B, 57, 06
  37. 1030 DATA  8B, 77, 08, 8B, 7F, 0A, 8B, 47, 0E, 3D, FF, FF, 74
  38. 1040 DATA  02, 8E, C0, 8B, 47, 0C, 3D, FF, FF, 74, 02, 8E, D8
  39. 1050 DATA  36, 8B, 07, 36, 8B, 5F, 02, E8, CC, FF, 53, 8B, 5E
  40. 1060 DATA  00, 36, 89, 07, 36, 8F, 47, 02, 8C, D8, 36, 89, 47
  41. 1070 DATA  0C, 1F, 8C, C0, 89, 47, 0E, 07, 89, 4F, 04, 89, 57
  42. 1080 DATA  06, 89, 77, 08, 89, 7F, 0A, 5D, CA, 06, 00, 00
  43.  
  44.