home *** CD-ROM | disk | FTP | other *** search
/ Power Programming / powerprogramming1994.iso / progtool / dskutl / hdsource.arc / HDALL.ASM < prev    next >
Assembly Source File  |  1986-02-24  |  9KB  |  256 lines

  1.      PAGE     64,132            ;PAGE WIDTH,LENGTH
  2.      .SALL
  3.      TITLE     PC/AT DIAGNOSTIC - RUN ALL TESTS
  4. ; **********************************************************************
  5. ; *                                       *
  6. ; *    MODULE NAME    HDALL                           *
  7. ; *    AUTHOR           JIM BRACKING                       *
  8. ; *                                       *
  9. ; *    DECSRIPTION    THIS PROGRAM PERFORMS THE FOLLOWING           *
  10. ; *               FUNCTIONS:                       *
  11. ; *                                       *
  12. ; *               1.  SETS THE RUN ALL TEST FLAG AND CALLS        *
  13. ; *               HDRW, HDHS, HDECC AND HDSEEK            *
  14. ; *                                       *
  15. ; **********************************************************************
  16. ;
  17. ; **********************************************************************
  18. ; *            EXTERNAL PROGRAM REFERENCES               *
  19. ; **********************************************************************
  20.      EXTRN     SCRMGR:NEAR,HDRW:NEAR,HDHS:NEAR
  21.      EXTRN     HDSEEK:NEAR,HDECC:NEAR
  22. ; **********************************************************************
  23. ; *              EXTERNAL DATA REFERENCES               *
  24. ; **********************************************************************
  25.      INCLUDE HDDATA.ASM
  26. ; **********************************************************************
  27. ; *            EXTERNAL SUBROUTINE REFERENCES               *
  28. ; **********************************************************************
  29.      INCLUDE HDSUB.ASM
  30. ; **********************************************************************
  31. ; *                PUBLIC DECLARES                   *
  32. ; **********************************************************************
  33.      PUBLIC  HDALL
  34. ; **********************************************************************
  35. ; *                 MACROS                    *
  36. ; **********************************************************************
  37. ;
  38.      IF1
  39.      INCLUDE HD.MAC
  40.      INCLUDE \SCRMGR\SCRNWORK.MAC
  41.      ENDIF
  42. ; **********************************************************************
  43. ; *                                       *
  44. ; *                   BEGIN                       *
  45. ; *                                       *
  46. ; **********************************************************************
  47. CSEG     SEGMENT PARA PUBLIC 'CODE'
  48.      ASSUME CS:CSEG
  49. HDALL  PROC    NEAR
  50.      ASSUME  DS:CSEG           ;DATA SEGMENT
  51.      JMP     BY_ID               ;JMP AROUND ID
  52.      ID     HDALL
  53.      INCLUDE \SCRMGR\SCRNWORK.ASM
  54. ; **********************************************************************
  55. ; *             EQUATES AND STRUCTURES                *
  56. ; **********************************************************************
  57.      INCLUDE HDEQU.ASM
  58. ; **********************************************************************
  59. ; *                 SCREENS                   *
  60. ; **********************************************************************
  61.   SFIELD X00,X01,,@LABEL,RV,23,02,'CTRL-F1 TO START'
  62.   SFIELD X01,X02,,@LABEL,RV,23,29,'ESC FOR THE MAIN MENU'
  63.   SFIELD X02,X00,,@LABEL,RV,23,62,'CTRL-BRK TO STOP'
  64. ;
  65.   SFIELD XI0,XI1,,@LABEL,LO,19,05,'DRIVE =>'
  66.   SFIELD XI1,XI2,1,@EX+@NUM+@UC+@NFULL+@REQ,LO,19,14
  67.   SFIELD XI2,XI3,,@LABEL,LO,20,05,'(1 OR 2)'
  68.   SFIELD XI3,XI4,,@LABEL,LO,19,20,'RUN CONTINIOUSLY =>'
  69.   SFIELD XI4,XI5,1,@UC+@EX+@YN+@NFULL+@REQ,LO,19,40
  70.   SFIELD XI5,XI0,,@LABEL,LO,20,26,'(Y OR N)'
  71. ;
  72.   SFIELD XS0,XS1,,@LABEL,LO,19,46,'STATUS =>'
  73.   SFIELD XS1,XS0,,@LABEL,LO,19,56,'** IDLE **   '
  74. ;
  75.   SFIELD XS2,XS3,,@LABEL,LO,19,46,'STATUS =>'
  76.   SFIELD XS3,XS2,,@LABEL,HI,19,56,'** WORKING **'
  77. ;
  78.   SFIELD XP0,XP1,,@LABEL,LO,20,46,'PASS NUMBER =>'
  79.   SFIELD XP1,XP0,5,@LABEL,LO,20,61
  80. ;
  81.   SFIELD XE0,XE1,,@LABEL,LO,21,46,'ERRORS =>'
  82.   SFIELD XE1,XE0,05,@LABEL,LO,21,56
  83. ;
  84.   SFIELD T05,T05,,@LABEL,RV,17,32,'RUN ALL TESTS'
  85. ;
  86. PASS     DW     0               ;NUMBER OF COMPLETE PASSES
  87. TERR_CNT DW     0               ;TOTAL ERROR COUNT
  88. BY_ID:
  89. HDALL  ENDP
  90. ; *********************************************************************
  91. ; *                                      *
  92. ; *                 RUN ALL TEST                  *
  93. ; *                                      *
  94. ; *********************************************************************
  95. RALL     PROC
  96.      CLS     LO,4,1,23,78           ;CLEAR THE SCREEN
  97.      BOX     17,0,08,80,LO           ;OUTLINE
  98.      WRITEC  0CCH,LO,17,0,1        ;  THE
  99.      WRITEC  0B9H,LO,17,79,1       ;  SCREEN
  100.      WRITE     T05               ;TYPE OF TEST
  101.      WRITE     X00               ;COMMANDS
  102. RA_00:
  103.      WRITE     XS0               ;STATUS
  104.      LEA     BX,XI1            ;DRIVE ENTRY
  105.      MOV     [BX].S_ATTR,LO        ;RESTORE ATTRIBUTE
  106.      MOV     [BX].S_DATA,' '       ;CLEAR DRIVE
  107.      LEA     BX,XI4            ;Y/N ENTRY
  108.      MOV     [BX].S_ATTR,LO        ;RESTORE ATTRIBUTE
  109.      MOV     [BX].S_DATA,'N'       ;DEFAULT NO
  110.      WRITE     XI0               ;MSG
  111. RA_02:
  112.      READR     BX               ;FETCH DRIVE AND INTERLEAVE
  113.      CALL     TRANS_KEY           ;TRANSLATE THE KEY
  114.      JNC     RA_04               ;SUCESSFULL
  115. RA_03:
  116.      CALL     BEEP               ;RING THE BELL
  117.      JMP     RA_02               ;TRY AGAIN
  118. RA_04:
  119.      CMP     AL,ESC_KEY           ;ESCAPE KEY??
  120.      JNE     RA_05               ;NO
  121.      JMP     EXIT               ;RETURN
  122. RA_05:
  123.      CMP     AL,C_BRK           ;CONTROL BREAK KEY??
  124.      JNE     RA_07               ;NO
  125.      JMP     RALL               ;YES - START OVER
  126. RA_07:
  127.      CMP     AL,C_F1           ;CTRL_F1??
  128.      JNE     RA_03               ;NO - INVALID KEY
  129.      LEA     BX,XI1            ;DRIVE ENTRY
  130.      MOV     [BX].S_ATTR,LO        ;RESTORE ATTRIBUTE
  131.      MOV     AL,[BX].S_DATA        ;FETCH DRIVE NUMBER
  132.      CMP     AL,'1'                ;VALID DRIVE??
  133.      JE     RA_08               ;YES
  134.      CMP     AL,'2'                ;VALID DRIVE??
  135.      JE     RA_08               ;YES
  136.      MOV     [BX].S_ATTR,HI        ;HIGHLIGHT IT
  137.      PMSG     22               ;DISPLAY THE MESSAGE
  138.      CALL     BEEP               ;RING THE BELL
  139.      WRITE     XI0               ;DRIVE + INTERLEAVE
  140.      JMP     RA_02               ;TRY AGAIN
  141. RA_08:
  142.      AND     AL,0FH            ;ADJUST
  143.      DEC     AL               ;  DRIVE NUMBER
  144.      CMP     AL,NUM_DR           ;DRIVE INSTALLED
  145.      JB     RA_10               ;YES
  146.      MOV     [BX].S_ATTR,HI        ;HIGHLIGHT IT
  147.      PMSG     21               ;DISPLAY THE MESSAGE
  148.      CALL     BEEP               ;RING THE BELL
  149.      WRITE     XI0               ;DRIVE + INTERLEAVE
  150.      JMP     RA_02               ;TRY AGAIN
  151. RA_10:
  152.      MOV     DR,AL               ;SAVE DRIVE NUMBER
  153.      LEA     BX,XI1            ;DRIVE ENTRY
  154.      MOV     [BX].S_ATTR,LO        ;RESTORE ATTRIBUTE
  155.      WRITE     XI0               ;DRIVE
  156. RA_20:
  157.      CALL     READ_PARMS           ;FETCH DRIVE PARMS
  158.      CALL     HIDE_CUR           ;HIDE THE CURSOR
  159.      XOR     AX,AX               ;CLEAR AX
  160.      MOV     TERR_CNT,AX           ;CLEAR
  161.      MOV     PASS,AX           ;  COUNTS
  162.      INC     PASS               ;START WITH PASS 1
  163. ; *********************************************************************
  164. ; *               BEGIN THE TEST                  *
  165. ; *********************************************************************
  166. RA_30:
  167.      MOV     RW_X,00H           ;RESET
  168.      MOV     HS_X,00H           ; ALL
  169.      MOV     SEEK_X,00H           ;  THE
  170.      MOV     ECC_X,00H           ;   FLAGS
  171.      MOV     ALL_SW,0FFH           ;RUN ALL TEST
  172.      CALL     HDRW               ;READ/WRITE/VERIRY
  173.      MOV     AX,ERR_CNT           ;ACCUMULATE
  174.      ADD     TERR_CNT,AX           ;  ERROR COUNT
  175.      CALL     DELAY               ;DELAY FOR TWO SECONDS
  176.      CALL     HDHS               ;HEAD SELECT
  177.      MOV     AX,ERR_CNT           ;ACCUMULATE
  178.      ADD     TERR_CNT,AX           ;  ERROR COUNT
  179.      CALL     DELAY               ;DELAY FOR TWO SECONDS
  180.      CALL     HDSEEK            ;SEEK TEST
  181.      MOV     AX,ERR_CNT           ;ACCUMULATE
  182.      ADD     TERR_CNT,AX           ;  ERROR COUNT
  183.      CALL     DELAY               ;DELAY FOR TWO SECONDS
  184.      CALL     HDECC               ;ECC TEST
  185.      MOV     AX,ERR_CNT           ;ACCUMULATE
  186.      ADD     TERR_CNT,AX           ;  ERROR COUNT
  187.      CALL     DELAY               ;DELAY FOR TWO SECONDS
  188.      MOV     ALL_SW,00H           ;RESET THE SWITCH
  189.      CLS     LO,4,1,23,78           ;CLEAR THE SCREEN
  190.      BOX     17,0,08,80,LO           ;OUTLINE
  191.      WRITEC  0CCH,LO,17,0,1        ;  THE
  192.      WRITEC  0B9H,LO,17,79,1       ;  SCREEN
  193.      WRITE     T05               ;TYPE OF TEST
  194.      WRITE     X00               ;COMMANDS
  195.      WRITE     XI0               ;MSG
  196.      WRITE     XS2               ;STATUS
  197.      CALL     D_PASS            ;DISPLAY PASS NUMBER
  198.      CALL     D_ERR               ;DISPLAY TOTAL ERROR COUNT
  199.      MOV     AL,RW_X           ;READ_WRITE
  200.      PMSG     AL,HI               ;  STATUS
  201.      MOV     AL,HS_X           ; HEAD SELECT
  202.      PMSG     AL,HI               ;  STATUS
  203.      MOV     AL,SEEK_X           ;SEEK
  204.      PMSG     AL,HI               ;  STATUS
  205.      MOV     AL,ECC_X           ;ECC
  206.      PMSG     AL,HI               ;  STATUS
  207.      LEA     BX,XI4            ;LIST ENTRY
  208.      CMP     [BX].S_DATA,'Y'       ;RUN CONTINIOUSLY??
  209.      JNE     RA_50               ;NO
  210.      CALL     DELAY               ;LET THEM READ IT
  211.      INC     PASS               ;NEXT PASS
  212.      JMP     RA_30               ;DO IT AGAIN
  213. RA_50:
  214.      JMP     RA_00               ;NEXT
  215. ; *********************************************************************
  216. ; *                E X I T                   *
  217. ; *********************************************************************
  218. EXIT:
  219.      RET                   ;RETURN
  220. RALL     ENDP
  221. DELAY     PROC
  222.      MOV     BX,24               ;OUTER DELAY
  223. DELAY_00:
  224.      XOR     CX,CX               ;INNER DELAY
  225. DELAY_10:
  226.      LOOP     DELAY_10           ;LOOP
  227.      DEC     BX               ;ONE LESS
  228.      JNZ     DELAY_00           ;DONE
  229.      RET                   ;RETURN
  230. DELAY     ENDP
  231. ; *********************************************************************
  232. ; *            DISPLAY PASSES COMPLETE               *
  233. ; *********************************************************************
  234. D_PASS     PROC
  235.      MOV     AX,PASS           ;FORMAT
  236.      LEA     BX,XP1            ; PASSES COMPLETE
  237.      CALL     CONV_ASCII           ;  DISPLAY
  238.      WRITE     XP0               ;CYLINDER
  239.      RET                   ;RETURN
  240. D_PASS     ENDP
  241. ; *********************************************************************
  242. ; *               DISPLAY ERROR COUNT                  *
  243. ; *********************************************************************
  244. D_ERR     PROC
  245.      PUSHALL
  246.      XOR     AX,AX               ;CLEAR AX
  247.      MOV     AX,TERR_CNT           ;FORMAT
  248.      LEA     BX,XE1            ; ERROR COUNT
  249.      CALL     CONV_ASCII           ;  DISPLAY
  250.      WRITE     XE0               ;ERROR COUNT
  251.      POPALL
  252.      RET                   ;RETURN
  253. D_ERR     ENDP
  254. CSEG     ENDS
  255.      END     HDALL
  256.