home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib34b.dsk / DRIVE.TESTER.bas < prev    next >
BASIC Source File  |  2023-02-26  |  5KB  |  99 lines

  1. 10  REM **********************
  2. 20  REM * DISK DRIVE TESTER  *
  3. 30  REM *  BY RICHARD KISS   *
  4. 40  REM * COPYRIGHT (C) 1988 *
  5. 50  REM * BY MICROSPARC, INC *
  6. 60  REM * CONCORD, MA. 01742 *
  7. 70  REM **********************
  8. 80  NOTRACE : TEXT : NORMAL : SPEED= 255:S = 6:D = 1:PD =  PEEK(48896) = 76
  9. 90  HOME : PRINT  CHR$(21): PRINT : ONERR  GOTO 970
  10. 100  PRINT  TAB( 12)"DISK DRIVE TESTER"
  11. 110  PRINT  TAB( 13)"BY RICHARD KISS"
  12. 120  PRINT  TAB( 11)"COPYRIGHT (C), 1988"
  13. 130  PRINT  TAB( 11)"BY MICROSPARC, INC."
  14. 140  COLOR= 10: HLIN 0,39 AT 0: VLIN 0,12 AT 0: VLIN 0,12 AT 39: HLIN 0,39 AT 14: POKE 34,9
  15. 150  IF  PEEK(32768) < >76  OR  PEEK(32769) < >104  OR  PEEK(32770) < >128  THEN  HOME : PRINT  CHR$(4)"BLOADDRV.CONTROLLER": HIMEM: 32768 -1024 *PD
  16. 160  HOME 
  17. 170  PRINT "SELECT AN OPTION:" TAB( 25)"(SLOT "S" DRIVE "D")"
  18. 180  PRINT "1) TEST DRIVE SPEED"
  19. 190  PRINT "2) FIND HIGHEST TRACK ACCESSIBLE"
  20. 200  PRINT "3) SELECT A NEW DRIVE TO BE TESTED"
  21. 210  PRINT "4) QUIT"
  22. 220  PRINT : PRINT "YOUR OPTION-->";
  23. 230  GET O$: IF O$ <"1"  OR O$ >"4"  THEN 230
  24. 240  PRINT O$: IF O$ = "4"  THEN 480
  25. 250  HOME 
  26. 260  IF O$ = "3"  THEN 810
  27. 270  IF O$ = "2"  THEN  PRINT  TAB( 7)"FIND HIGHEST ACCESSIBLE TRACK": GOTO 290
  28. 280  PRINT  TAB( 12)"TEST DRIVE SPEED"
  29. 290  PRINT : HTAB 2: INVERSE : PRINT "WARNING";: NORMAL : PRINT ":THIS OPTION ERASES THE DISK!"
  30. 300  PRINT : PRINT  TAB( 5)"INSERT A ";: INVERSE : PRINT "BLANK";: NORMAL : PRINT " DISK IN SLOT "S","
  31. 310  PRINT "DRIVE "D", AND PRESS <RETURN> TO PROCEED."
  32. 320  PRINT : PRINT  TAB( 9)"PRESS <ESC> TO BACK OUT."
  33. 330  POKE 49168,0
  34. 340  IF  PEEK(49152) <141  THEN 340
  35. 350 X =  PEEK(49152): POKE 49168,0: IF X = 155  THEN 160
  36. 360  IF X < >141  THEN 340
  37. 370  POKE 0,16 *S: POKE 1,D: CALL 32768
  38. 380  IF  PEEK(2) = 0  THEN 460
  39. 390  VTAB 20: INVERSE : PRINT "WARNING!";: NORMAL 
  40. 400  PRINT " THIS DISK HAS DATA ON IT! TYPE"
  41. 410  PRINT "<RETURN> TO CONFIRM TEST, <ESC> TO ABORT";: CALL  -198: CALL  -198
  42. 420  POKE 49168,0
  43. 430  IF  PEEK(49152) <141  THEN 430
  44. 440 X =  PEEK(49152): POKE 49168,0: IF X = 155  THEN 160
  45. 450  IF X < >141  THEN 420
  46. 460  IF O$ = "1"  THEN 500
  47. 470  GOTO 680
  48. 480  TEXT : IF PD  THEN  CALL 48888
  49. 490  HOME : VTAB 23: END 
  50. 500  HOME 
  51. 510  PRINT  TAB( 5)"PRESS <ESC> TO HALT THE TESTING"
  52. 520  HLIN 13,26 AT 22
  53. 530  VLIN 22,38 AT 13: VLIN 22,38 AT 26
  54. 540  HLIN 13,26 AT 38
  55. 550  POKE 32,15: POKE 33,11: POKE 34,12: POKE 35,19: HOME : FOR I = 1 TO 10: PRINT : NEXT 
  56. 560  CALL 32771: IF  PEEK(4) = 0  THEN 660
  57. 570 B =  PEEK(3) + PEEK(4) *256
  58. 580 P = 1920000/B
  59. 590 SP =  INT(P *10 +.5)/10
  60. 600  PRINT : PRINT SP TAB( 8)"RPM";
  61. 610  IF  PEEK(49152) < >155  THEN 560
  62. 620  TEXT : POKE 34,9
  63. 630  VTAB 24: HTAB 4: PRINT "PRESS <RETURN> FOR THE MAIN MENU";
  64. 640  IF  PEEK(49152) < >141  THEN 640
  65. 650  POKE 49168,0: GOTO 160
  66. 660  TEXT : POKE 34,9: HTAB 1
  67. 670  VTAB 22: PRINT "  DRIVE ERROR -- CHECK DISK AND DRIVE";: CALL  -198: CALL  -198: GOTO 630
  68. 680  VTAB 11
  69. 690  CALL  -958
  70. 700 T = 30: POKE 8,T: CALL 32774
  71. 710 T = T +1: POKE 8,T
  72. 720  GOSUB 780: VTAB 14: HTAB 9: PRINT "TESTING TRACK "T" ($"A$")"
  73. 730  CALL 32777
  74. 740  IF  PEEK(3) = 0  THEN 670
  75. 750  IF  PEEK(3) = T -1  THEN 710
  76. 760 T = T -1: GOSUB 780: PRINT : PRINT T" ($"A$") IS THE HIGHEST ACCESSIBLE TRACK"
  77. 770  GOTO 630
  78. 780 A$ = "":Z% = T/16: GOSUB 800
  79. 790 Z% = T -Z% *16
  80. 800 A$ = A$ + CHR$(48 +Z% +7 *(Z% >9)): RETURN 
  81. 810  PRINT "WHERE IS THE DRIVE TO BE TESTED?": PRINT :DS = S:DD = D
  82. 820  PRINT  SPC( 12)"SLOT - "DS CHR$(8);
  83. 830  GET A$: IF A$ =  CHR$(27)  THEN 160
  84. 840  IF A$ =  CHR$(13)  THEN A$ =  STR$(DS)
  85. 850  IF A$ <"1"  OR A$ >"7"  THEN 830
  86. 860 A =  VAL(A$): IF  PEEK(49153 +A *256) < >32  THEN  HTAB 1: PRINT "NO DISK DEVICE CONNECTED TO SLOT "A"." CHR$(7): PRINT "PRESS RETURN TO CONTINUE ";: POKE  -16368,0: GET Q$: FOR I = 1 TO 1000: NEXT : HTAB 1: CALL  -868:CV =  PEEK(37): VTAB CV: HTAB 1: CALL  -868: GOTO 820
  87. 870 DS = A: PRINT DS
  88. 880  PRINT  SPC( 11)"DRIVE - "DD CHR$(8);
  89. 890  GET A$: IF A$ =  CHR$(27)  THEN 160
  90. 900  IF A$ =  CHR$(13)  THEN A$ =  STR$(DD)
  91. 910  IF A$ <"1"  OR A$ >"2"  THEN 890
  92. 920 DD =  VAL(A$): PRINT DD
  93. 930  PRINT : PRINT "IS THIS CORRECT? (Y/N) ";
  94. 940  GET A$: IF A$ < >"Y"  AND A$ < >"N"  AND A$ < >"n"  AND A$ < >"y"  THEN 940
  95. 950  PRINT A$: IF A$ = "Y"  OR A$ = "y"  THEN S = DS:D = DD: GOTO 160
  96. 960  HOME : GOTO 810
  97. 970 EN =  PEEK(222):EL =  PEEK(218) +256 * PEEK(219): POKE 216,0
  98. 980  IF EN = 6  THEN CV =  PEEK(37):CH =  PEEK(36): VTAB 22: HTAB 1: PRINT "DRV.CONTROLLER FILE NOT FOUND": PRINT "PRESS RETURN TO CONTINUE ";: POKE 16368,0: GET A$: POKE 35,20: HOME : POKE 35,23: VTAB CV +1: HTAB CH +1: GOTO 90
  99. 990  TEXT : HOME : VTAB 23: PRINT "ERROR #";EN;" AT LINE ";EL;: END