home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / CPM / BSTAM / UHAYES2.AQM / UHAYES2.ASM
Assembly Source File  |  2000-06-30  |  5KB  |  192 lines

  1. ;
  2. ;    UHAYES2.ASM ver 2.1 as of 7/13/80
  3. ;       by Keith Petersen, W8SDZ
  4. ;
  5. ;This is the user area for BSTAM version 4.3 for use with
  6. ;a D.C. HAYES modem.
  7. ;
  8. ;    IF YOU WISH TO USE OTHER REGISTERS SUCH AS HL,BC,DE
  9. ;    (NOT INCLUDING  SP  REGISTER)
  10. ;    BE SURE TO PUSH BSTAM'S REGISTERS ON TO STACK AND POP
  11. ;    THEM BACK OFF BEFORE RETURNING TO BSTAM.
  12. ;    THERE IS AMPLE ROOM TO PUSH ALL REGISTERS ONTO BSTAM'S
  13. ;    STACK, PLUS ROOM FOR 10 LEVELS OF CALL'S.
  14. ;
  15. ;    THERE ARE 300 BYTES OF USER SPACE AVAILABLE TO YOU.
  16. ;
  17. ;    THE JUMP'S CODED AT THE BEGINNING OF THIS PROGRAM
  18. ;    CANNOT BE MOVED IN ANY WAY.
  19. ;
  20. ;    DEFINE PORTS
  21. ;
  22. TPM    EQU    82H    ;MODE CONTROL PORT
  23. TPS    EQU    81H    ;UART STATUS PORT
  24. TP    EQU    80H    ;DATA IN/OUT PORT
  25. ;
  26. ;    CONDITIONAL ASSEMBLY SWITCH
  27. ;
  28. FASTCLK    EQU    0    ;0 = 2 MHZ, 1 = 4 MHZ SYSTEM CLOCK
  29. ;
  30. ;    DEFINE ASCII CHARACTERS USED
  31. ;
  32. CR    EQU    0DH    ;CARRIAGE RETURN
  33. LF    EQU    0AH    ;LINE FEED
  34. ;
  35. BEGIN    ORG    103H
  36. ;
  37. INITIL    JMP    INITIU    ;UART/USART INITIALIZATION ENTRY POINT
  38. INSPORT    JMP    INSPRU    ;STATUS PORT READ ENTRY POINT
  39. ERRSET    JMP    ERRSTU    ;UART/USART ERROR RESET ENTRY POINT
  40. INPORT    JMP    INPRTU    ;READ DATA PORT ENTRY POINT
  41. OUTPORT    JMP    OUTPRU    ;WRITE DATA PORT ENTRY POINT
  42. ;
  43. ;
  44. INITIU    EQU    $
  45. ;    THIS IS THE UART/USART INITIALIZATION ROUTINE.
  46. ;    TO BE COMPATIBLE WITH MOST BSTAM USERS USE FOLLOWING
  47. ;    INITIALIZATION GUIDE LINES:
  48. ;        1. USE 1 STOP BITS    (OPTIONAL - 2)
  49. ;        2. USE 8 DATA BITS    (MUST)
  50. ;        3. USE 1 START BIT    (MUST)
  51. ;        4. USE 16X FOR CLOCK RATE     (MUST)
  52. ;        5. USE ASYNCHRONOUS MODE ONLY    (MUST)
  53. ;
  54. ;
  55.     CALL    SIGNON 
  56.     RET        ;RETURN TO BSTAM
  57. ;
  58. ;
  59. INSPRU    EQU    $
  60. ;    THIS IS THE STATUS READ PORT ROUTINE.
  61. ;    WHEN EXITING THIS ROUTINE BSTAM EXPECTS IN REGISTER A
  62. ;    THE FOLLOWING BITS TO BE SET IF NEEDED:
  63. ;        1. 20 BIT SET IF FRAMING ERROR
  64. ;        2. 10 BIT SET IF OVERRUN ERROR
  65. ;        3. 08 BIT SET IF PARITY  ERROR
  66. ;        4. 04 BIT SET IF TRANSMITTER EMPTY
  67. ;            IF YOUR UART/USART DOES NOT HAVE TRANSMITTER
  68. ;            EMPTY FEATURE, THEN ALLWAYS SET THIS BIT ON.
  69. ;        5. 02 BIT SET IF RECEIVER READY
  70. ;        6. 01 BIT SET IF TRANSMITTER READY
  71. ;        7. DO NOT SET THE 80 BIT OR 40 BIT
  72. ;
  73. ;
  74. ;
  75. ;BEFORE WE DO THE UART STATUS CHECK WE WILL CHECK TO
  76. ;SEE IF CARRIER IS LOST.
  77. ;
  78. INSPRU:    PUSH    B    ;SAVE REGISTERS USED
  79.     PUSH    D
  80. ;
  81.     IF    NOT FASTCLK ;FOR 2MHZ SYSTEM CLOCK
  82.     MVI    B,15    ;WAIT UP TO 15 SECONDS
  83.     ENDIF
  84. ;
  85.     IF    FASTCLK    ;FOR 4MHZ SYSTEM CLOCK
  86.     MVI    B,30    ;WAIT UP TO 15 SECONDS
  87.     ENDIF
  88. ;
  89. ;1 SECOND TIME DELAY ROUTINE. ENTER WITH DESIRED
  90. ;NUMBER OF SECONDS IN B REGISTER.
  91. ;
  92. ONESEC:    LXI    D,50000 ;VALUE FOR TIME DELAY
  93. ;
  94. TLOOP:    IN    TPS    ;GET MODEM CHIP STATUS
  95.     ANI    40H    ;GET CTS (CARRIER DETECT) BIT
  96.     JNZ    CARROK    ;CARRIER NOT LOST, EXIT AND RETURN
  97.     DCR    E    ;DECREMENT TIME DELAY VALUE
  98.     JNZ    TLOOP    ;NOT DONE, DO ANOTHER LOOP
  99.     DCR    D    ;DECREMENT TIME DELAY VALUE
  100.     JNZ    TLOOP    ;NOT DONE, DO ANOTHER LOOP
  101.     DCR    B    ;DECREMENT NUMBER OF SECONDS
  102.     JNZ    ONESEC    ;NOT DONE, DO ANOTHER ONE SEC DELAY
  103. ;
  104. ;IF WE GET TO HERE, WE HAVE LOST CARRIER FOR 15 SECONDS
  105. ;
  106.     POP    D    ;RESTORE REGS
  107.     POP    B
  108.     XRA    A
  109.     OUT    TPM    ;CAUSE MODEM TO HANG UP
  110.     LXI    D,LSTMSG ;POINT TO MESSAGE
  111.     MVI    C,9
  112.     CALL    5    ;PRINT IT
  113.     JMP    0    ;EXIT TO CP/M WARM BOOT
  114. ;
  115. LSTMSG:    DB    CR,LF,'    ++CARRIER LOST++'
  116.     DB    CR,LF,'The modem is now DISCONNECTED'
  117.     DB    CR,LF,'$'
  118. ;
  119. ;CARRIER IS NOT LOST
  120. ;
  121. CARROK:    POP    D    ;RESTORE DE REGS
  122.     POP    B
  123. ;
  124. ;    NOW GET UART STATUS FOR BSTAM.
  125. ;IN THIS CASE WE DISCARD ALL ERROR TEST BITS BECAUSE
  126. ;THE D.C. HAYES MODEM HAS NO WAY TO RESET THE ERROR FLAGS
  127. ;ONCE THEY ARE UP, CAUSING A CONTINUOUS DISPLAY OF ERROR
  128. ;MESSAGES IN BSTAM.
  129. ;
  130.     IN    TPS    ;GET STATUS (RDA=01H, TBE=02H)
  131.     RAL        ;MOVE LEFT ONE
  132.     ANI    6    ;ISOLATE RDA AND TBE BITS
  133.     ORI    1    ;AND IN BOGUS TBE BIT FOR BSTAM
  134.     RET        ;RETURN TO BSTAM
  135. ;
  136. ;
  137. ;
  138. ERRSTU    EQU    $
  139. ;
  140. ;    THIS IS THE ERROR RESET FOR UART/USART ROUTINE.
  141. ;    YOUR UART/USART MAY NOT NEED TO BE RESET IF FRAMING,
  142. ;    OVERRUN, OR PARITY ERROR IS FOUND. IF THIS IS YOUR
  143. ;    CASE, JUST DO A RETURN.
  144. ;
  145. ;
  146.     RET        ;RETURN TO BSTAM
  147. ;
  148. ;
  149. ;
  150. INPRTU    EQU    $
  151. ;
  152. ;    THIS IS THE READ DATA PORT ROUTINE.
  153. ;    BEFORE THIS ROUTINE IS ENTERED THE 02 BIT OF
  154. ;    STATUS READ ROUTINE MUST HAVE BEEN SET.
  155. ;    DO NOT CLEAR THE 80 BIT FROM THE DATA INPUT PORT.
  156. ;    RETURN WITH REGISTER A LOADED WITH INPUT DATA.
  157. ;
  158. ;
  159.     IN    TP    ;GET DATA FROM PORT
  160.     RET        ;RETURN TO BSTAM
  161. ;
  162. ;
  163. OUTPRU    EQU    $
  164. ;
  165. ;    THIS IS THE WRITE DATA PORT ROUTINE.
  166. ;    BEFORE THIS ROUTINE IS ENTERED THE 04 BIT AND 01 BIT
  167. ;    OF STATUS READ MUST BE SET.
  168. ;    DO NOT CLEAR THE 80 BIT FROM THE DATA OUTPUT PORT.
  169. ;    REGISTER A CONTAINS THE OUTPUT DATA.
  170. ;
  171. ;
  172.     OUT    TP    ;SEND DATA TO REMOTE CPU
  173.     RET        ;RETURN TO BSTAM
  174.  
  175. MESSGE: DB    CR,LF,CR,LF
  176.     DB    'D.C. Hayes modem ver 2.1 - no initialization done,'
  177.     DB    CR,LF,'tests for loss of carrier.'
  178.     DB    CR,LF,'$'
  179. ;
  180. SIGNON: PUSH    B
  181.     PUSH    D
  182.     PUSH    H
  183.     LXI    D,MESSGE
  184.     MVI    C,9
  185.     CALL    5
  186.     POP    H
  187.     POP    D
  188.     POP    B
  189.     RET
  190. ;
  191.     END    BEGIN
  192.