home *** CD-ROM | disk | FTP | other *** search
/ Oakland CPM Archive / oakcpm.iso / sigm / sigmv027.ark / SERT.SRC < prev    next >
Encoding:
Text File  |  1985-02-10  |  8.8 KB  |  245 lines

  1. ;    FILE SERTST.SRC     VER. 1.0
  2. ;    CREATED 9-26-80
  3. ;    LAST UPDATE 9-29-80      WRITTEN BY D.A. STEELE
  4. ;
  5. ;    THIS PROCEDURE WILL TEST THE TWO ATS UARTS BY PUTTING THEM
  6. ;    IN LOCAL LOOPBACK MODE AND SENDING DATA, CHECKING RxRDY,
  7. ;    READING DATA, AND CHECKING TxRDY.
  8. ;
  9. ;    IT SHOULD BE DECLARED IN THE PASCAL ROUTINE MONITOR PROGRAM
  10. ;
  11. ;         FUNCTION SERT : INTEGER; EXTERNAL;
  12. ;
  13. ;    AND WILL RETURN THE BIT(S) TURNED ON CORROSPONDING TO THE
  14. ;    TESTS WHICH HAVE FAILED.  IF ALL TESTS PASS 0 IS RETURNED.
  15.      
  16.  
  17.           NAME      SERT 
  18.           ENTRY     SERT
  19.  
  20.  
  21. U1BASE:        EQU       0
  22. U2BASE:        EQU       4
  23. HOLD:          EQU       0
  24. STAT:          EQU       1
  25. MODE:          EQU       2
  26. CMD:           EQU       3
  27. SPTST1:        EQU       1    ;THE FIRST TEST
  28. SPTST2:        EQU       2    ;THE SECOND TEST
  29.  
  30. MODES:         DS        2    ;MODE STORAGE - FOR THE MODE OF THE
  31.                               ;UART BEING TESTED
  32. CMDS:          DS        1    ;COMMAND STORAGE - FOR THE COMMAND
  33.                               ;REGESTER OF THE UART BEING TESTED
  34. SPERR:         DS        2    ;SERIAL PORT ERROR - THE ERROR FLAG
  35.                               ;FOR THIS PROCEDURE
  36. BASE:          DS        1    ;SET TO U1BASE OR U2BASE DEPENDING 
  37.                               ;ON THE UART BEING TESTED
  38. SPTST:         DS        1    ;THE TESTING NOW BEING PERFORMED
  39. ;===============================================================
  40. ;    CALCULATES THE OFFSET FOR POUT AND PIN
  41. ;
  42. OFFSET:   PUSH      PSW
  43.           LDA       BASE      ;GET THE UART BASE ADDRESS
  44.           ADD       C         ;ADD THE OFFSET
  45.           MOV       C,A       ;PUT THE ADDRESS IN C
  46.           POP       PSW       ;GET BACK THE NUMBER TO BE DONE
  47.           RET                 ;TO PIN OR POUT
  48.  
  49.  
  50. ;===============================================================
  51. ;    THIS PROCEDURE WILL OUTPUT THE VALUE IN A TO THE PORT
  52. ;    ADDRESS OF (BASE + C).
  53. ;
  54. POUT:     CALL      OFFSET
  55.           OUTP      Aè          RET
  56.  
  57. ;===============================================================
  58. ;    THIS PROCEDURE WILL INPUT THE VALUE IN A TO THE PORT
  59. ;    ADDRESS OF (BASE + C).
  60. ;
  61. PIN:      CALL      OFFSET
  62.           INP       A
  63.           RET
  64.  
  65. ;===============================================================
  66. ;    THIS PROCEDURE WILL SAVE THE CURRENT COMMAND AND STATUS
  67. ;    REGISTERS OF THE UART BEING TESTED
  68.  
  69. SAVE:     MVI       C,CMD
  70.           CALL      PIN       ;READ THE COMMAND REGISTER
  71.           STA       CMDS      ;AND STORE IT
  72.  
  73.           MVI       C,MODE
  74.           CALL      PIN       ;READ THE FIRST MODE REGISTER
  75.           STA       MODES     ;AND STORE IT
  76.  
  77.           MVI       C,MODE
  78.           CALL      PIN       ;READ THE SECOND MODE REGISTER
  79.           STA       MODES+1   ;AND STORE IT
  80.  
  81.           RET                 ;TO THE BACKGROUND
  82.  
  83. ;===============================================================
  84. ;    THIS PROCEDURE WILL INITIALIZE THE UART TO LOCAL LOOP BACK
  85. ;    MODE WITH A BAUD RATE OF 19200 FOR THE TESTS
  86. ;
  87. INIT:     MVI       C,CMD
  88.           CALL      PIN       ;READ THE COMMAND REGISTER TO RESET
  89.                               ;THE MODE REG. COUNTER
  90.           MVI       A,10100111B
  91.                               ;OUTPUT THE NEW COMMAND REG. LOCAL
  92.           MVI       C,CMD     ;RTS LOW, NORMAL ERROR, ENABLE REC.
  93.           CALL      POUT      ;DTR LOW, ENABLE
  94.  
  95.           MVI       C,MODE    ;SET THE NEW MODE - 1 STOP
  96.           MVI       A,01001110B
  97.           CALL      POUT      ;PARITY, B BITS, 16X CLOCK
  98.  
  99.           MVI       A,00111111B
  100.           MVI       C,MODE    ;INTERNAL CLOCKS, 19200 BAUD
  101.           CALL      POUT
  102.  
  103.           RET                 ;TO BACKGROUND
  104.  
  105. ;===============================================================
  106. ;    THIS IS A 1 MILISECOND DELAY TO ALLOW THE UART TIME TO ACT
  107. ;
  108. DELAY:    PUSH      B
  109.           MVI       B,222èDELAY1:   ORA       A
  110.           DCR       B
  111.           JNZ       DELAY1
  112.           POP       B
  113.           RET
  114.  
  115. ;===============================================================
  116. ;    ROUTINE TO OR IN NEW ERROR
  117. ;
  118. ERROR:    
  119.           LDA       SPERR          ;GET THE ERROR FLAG
  120.           MOV       D,A
  121.           LDA       SPTST          ;GET THE TEST NUMBER
  122.           ORA       D              ;OR THEM TOGETHER
  123.           STA       SPERR          ;STORE THE NEW ERROR FLAG
  124.           RET
  125.  
  126. ;===============================================================
  127. ;    THIS PROCEDURE CHECKS FOR THE TRANSMIT READY BIT AND IF NOT
  128. ;    SET THE ERROR ROUTINE IS CALLED
  129. ;
  130. TXRDY:    CALL      DELAY          ;HO HUM
  131.           PUSH      B
  132.           MVI       C,STAT
  133.           CALL      PIN            ;GET STATUS IN A
  134.           ANI       1              ;SHOULD BE 1 (IE EMPTY)
  135.           CZ        ERROR          ;IF TX NOT READY THEN HAVE NO
  136.                                    ;MERCY
  137.           POP       B
  138.           RET
  139.  
  140. ;===============================================================
  141. ;    THIS PROCEDURE CHECKS FOR THE RECEIVER READY BIT AND IF NOT
  142. ;    SET THE ERROR ROUTINE IS CALLED
  143. ;
  144. RXRDY:    CALL      DELAY          ;GIVE IT TIME TO HAPPEN
  145.  
  146.           PUSH      B
  147.           MVI       C,STAT         ;GET THE OFFSET
  148.           CALL      PIN            ;GET STATUS IN A
  149.           ANI       2              ;SHOULD BE FULL (IE. 1)
  150.           CZ        ERROR
  151.  
  152.           POP       B
  153.           RET
  154.  
  155.  
  156. ;===============================================================
  157. ;    THIS WILL TEST THE UART WHOES PORT BASE IS AT BASE
  158. ;
  159. UTST:     MVI       C,HOLD         ;GET HOLDING REGISTER OFFSET
  160.           CALL      PIN            ;ASSURE THAT UART IS EMPTY
  161.  
  162.           MVI       C,HOLD
  163.           CALL      PINè
  164.  
  165.           MVI       B,0            ;WE WILL DO ALL ASCII CHARACTERS
  166.                                    ;FROM 0 TO 7FH
  167. UTST1     CALL      TXRDY          ;CHECK STATUS
  168.           MVI       C,HOLD
  169.           MOV       A,B            ;LOAD CHARACTER TO OUTPUT
  170.           CALL      POUT           ;SEND IT TO THE UART
  171.  
  172.           CALL      RXRDY          ;RECEIVER SHOULD BE READY
  173.           MVI       C,HOLD
  174.           CALL      PIN            ;READ THE CHARACTER
  175.           CMP       B              ;CHECK IT WITH WHAT WAS SENT
  176.           CNZ       ERROR
  177.  
  178.           INR       B              ;GET THE NEXT CHARACTER
  179.           MVI       A,80H          ;STOP IF OVER 7FH
  180.           CMP       B
  181.           JNZ       UTST1
  182.  
  183.           RET                      ;TO THE BACKGROUND
  184.  
  185. ;===============================================================
  186. ;    RESTORE THE UART TO ITS MODE AND COMMAND PRIOR TO THE TEST
  187. ;
  188. RESTOR:   LDA       CMDS           ;GET THE ORIGIONAL COMMAND REG.
  189.           MVI       C,CMD
  190.           CALL      POUT           ;RESTORE THE COMMAND REG.
  191.  
  192.           MVI       C,CMD          ;RESET THE MODE REG. COUNTER
  193.           CALL      PIN
  194.  
  195.           MVI       C,MODE         ;GET THE CORRECT OFFSET
  196.           LDA       MODES          ;GET THE ORIG. MODE REG. 1
  197.           CALL      POUT           ;OUTPUT THE FIRST MODE REG.
  198.           LDA       MODES+1        ;GET THE ORIG. MODE REG. 2
  199.           MVI       C,MODE
  200.           CALL      POUT           ;OUTPUT SECOND MODE REG.
  201.  
  202.           RET                      ;TO BACKGROUND
  203.  
  204. ;================================================================
  205. ;    THIS IS THE MAIN BACKGROUND FOR THE SERIAL I/O PORT TEST
  206. ;================================================================
  207. ;
  208. SERT:     XRA       A
  209.           STA       SPERR          ;ZERO THE ERROR FLAG
  210.           STA       SPERR+1
  211.  
  212.           MVI       A,SPTST1       ;SET THE TEST BEING DONE
  213.           STA       SPTST
  214.           MVI       A,U1BASE       
  215.           STA       BASE           ;SET THE BASE PORT
  216.  
  217. SERT1:    CALL      SAVE           ;SAVE THE COMMAND AND MODEè                                   ;REG. OF THE UART
  218.           CALL      INIT           ;INITIALIZE UART TO TEST MODE
  219.           CALL      UTST           ;DO THE TEST
  220.           CALL      RESTOR         ;RESTORE THE COMMAND AND
  221.                                    ;MODE REG. OF THE UART
  222.           LDA       BASE
  223.           CPI       U2BASE
  224.           JNZ       SERT2        ;IF THAT WAS TEST ONE THEN DO 
  225.                                    ;TEST 2
  226.           JMP       XIT            ;ELSE EXIT THIS TEST ALTOGETHER
  227.  
  228. SERT2:    MVI       A,SPTST2
  229.           STA       SPTST
  230.           MVI       A,U2BASE
  231.           STA       BASE
  232.           JMP       SERT1
  233.  
  234. XIT:      XRA       A              ;PREPAIR TO RETURN TO PASCAL-Z
  235.           LXI       H,SPERR        ;GET THE ADDRESS OF ERROR FLAG
  236.           MOV       E,M  
  237.           INX       H
  238.           MOV       D,M
  239.           RET                      ;SO LONG YOU ARTS !!
  240.  
  241.  
  242.  
  243.  
  244.  
  245.