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 / UH89-J30.AQM / UH89-J30.ASM
Assembly Source File  |  2000-06-30  |  4KB  |  155 lines

  1. ;
  2. ;VERSION UH89     (revised JANUARY 30, 1981)
  3. ;
  4. ;User routines for BSTAM version 4.3, for use with
  5. ;Heath H8 with H8-4 or H89 with H-3 serial port.
  6. ;TBE=20H, RDA=01H.  By Keith Petersen, W8SDZ
  7. ;
  8. ;BASE ADDRESS OF CP/M
  9. ;USE:    4200H FOR CP/M VERSION 1.43 AND BELOW.
  10. ;    0000H FOR CP/M VERSION 2.0 AND ABOVE.
  11. ;
  12. BASE    EQU    0000H    ;OFFSET OF CP/M FROM 0H
  13. ;
  14. ;DEFINE PORT
  15. ;
  16. PORT    EQU    330Q    ;8250 PORT BASE ADDRESS
  17. ;
  18. ;DEFINE BAUD RATE DIVISORS
  19. ;
  20. B75    EQU    0600H    ;75 BAUD
  21. B110    EQU    041FH    ;110 BAUD
  22. B150    EQU    0300H    ;150 BAUD
  23. B300    EQU    0180H    ;300 BAUD
  24. B600    EQU    00A0H    ;600 BAUD
  25. B1200    EQU    0060H    ;1200 BAUD
  26. B2400    EQU    0030H    ;2400 BAUD
  27. B4800    EQU    0018H    ;4800 BAUD
  28. B9600    EQU    000AH    ;9600 BAUD
  29. B19200    EQU    0006H    ;19200 BAUD
  30. ;
  31. ;DEFINE ASCII CHARACTERS USED
  32. ;
  33. CR    EQU    0DH
  34. LF    EQU    0AH
  35. ;
  36. ;    IF YOU WISH TO USE OTHER REGISTERS SUCH AS HL,BC,DE
  37. ;    (NOT INCLUDING  SP  REGISTER)
  38. ;    BE SURE TO PUSH BSTAM'S REGISTERS ON TO STACK AND POP
  39. ;    THEM BACK OFF BEFORE RETURNING TO BSTAM.
  40. ;    THERE IS AMPLE ROOM TO PUSH ALL REGISTERS ONTO BSTAM'S
  41. ;    STACK, PLUS ROOM FOR 10 LEVELS OF CALL'S.
  42. ;
  43. ;    THERE ARE 300 BYTES OF USER SPACE AVAILABLE TO YOU.
  44. ;
  45. ;    THE JUMP'S CODED AT THE BEGINNING OF THIS PROGRAM
  46. ;    CANNOT BE MOVED IN ANY WAY.
  47. ;
  48. BEGIN    ORG    103H
  49. ;
  50. INITIL    JMP    INITIU    ;UART/USART INITIALATION ENTRY POINT
  51. INSPORT    JMP    INSPRU    ;STATUS PORT READ ENTRY POINT
  52. ERRSET    JMP    ERRSTU    ;UART/USART ERROR RESET ENTRY POINT
  53. INPORT    JMP    INPRTU    ;READ DATA PORT ENTRY POINT
  54. OUTPORT    JMP    OUTPRU    ;WRITE DATA PORT ENTRY POINT
  55. ;
  56. INITIU    EQU    $
  57. ;    THIS IS THE UART/USART INITIALATION ROUTINE.
  58. ;    TO BE COMPATIBLE WITH MOST BSTAM USERS USE FOLLOWING
  59. ;    INITIALATION GUIDE LINES:
  60. ;    1. USE 1 STOP BIT    (OPTIONAL - 2)
  61. ;    2. USE 8 DATA BITS    (MUST)
  62. ;    3. USE 1 START BIT    (MUST)
  63. ;    4. USE 16X FOR CLOCK RATE     (MUST)
  64. ;    5. USE ASYNCHRONOUS MODE ONLY    (MUST)
  65. ;
  66.     MVI    A,0    ;CLEAR
  67.     OUT    PORT+1    ;TO INTERRUPT ENABLE REGISTER
  68.     MVI    A,80H    ;OPEN DIVISOR LATCHES (DLAB BIT = 80H)
  69.     OUT    PORT+3    ;TO LINE CONTROL REGISTER
  70.     LXI    H,B300    ;BAUD RATE DIVISOR (300 BAUD)
  71.     MOV    A,L    ;LEAST SIGNIFIGENT BYTE
  72.     OUT    PORT    ;TO DIVISOR LATCH (LS)
  73.     MOV    A,H    ;MOST SIGNIFIGENT BYTE
  74.     OUT    PORT+1    ;TO DIVISOR LATCH (MS)
  75.     MVI    A,3    ;8 BITS, NO PARITY, 1 STOP BIT
  76.     OUT    PORT+3    ;TO LINE CONTROL REGISTER
  77.     MVI    A,0    ;CLEAR
  78.     OUT    PORT+4    ;TO MODEM CONTROL REGISTER
  79.     CALL    SIGNON    ;TELL USER WHAT'S IMPLEMENTED
  80.     RET        ;RETURN TO BSTAM
  81. ;
  82. INSPRU    EQU    $
  83. ;    THIS IS THE STATUS READ PORT ROUTINE.
  84. ;    WHEN EXITING THIS ROUTINE BSTAM EXPECTS IN REGISTER A
  85. ;    THE FOLLOWING BITS TO BE SET IF NEEDED:
  86. ;    1. 20 BIT SET IF FRAMING ERROR
  87. ;    2. 10 BIT SET IF OVERRUN ERROR
  88. ;    3. 08 BIT SET IF PARITY  ERROR
  89. ;    4. 04 BIT SET IF TRANSMITTER EMPTY
  90. ;        IF YOUR UART/USART DOES NOT HAVE TRANSMITTER
  91. ;        EMPTY FEATURE, THEN ALLWAYS SET THIS BIT ON.
  92. ;    5. 02 BIT SET IF RECEIVER READY
  93. ;    6. 01 BIT SET IF TRANSMITTER READY
  94. ;    7. DO NOT SET THE 80 BIT OR 40 BIT
  95. ;
  96.     PUSH    B
  97.     IN    PORT+5    ;TBE = 20H, RDA = 01H
  98.     ANI    01H    ;ISOLATE RDA BIT
  99.     RAL        ;MOVE TO 02 BIT
  100.     MOV    B,A    ;SAVE RDA IN B REGISTER
  101.     IN    PORT+5    ;GET STATUS AGAIN
  102.     ANI    20H    ;ISOLATE TBE BIT
  103.     RAR        ;MOVE TO 04 BIT
  104.     RAR
  105.     RAR
  106.     ORA    B    ;COMBINE TBE AND RDA BITS
  107.     POP    B
  108.     ORI    1    ;PRESET TRANSMIT READY BIT
  109.     RET
  110. ;
  111. ERRSTU    EQU    $
  112. ;    THIS IS THE ERROR RESET FOR UART/USART ROUTINE.
  113. ;    YOUR UART/USART MAY NOT NEED TO BE RESET IF FRAMING,
  114. ;    OVERRUN, OR PARITY ERROR IS FOUND. IF THIS IS YOUR
  115. ;    CASE, JUST DO A RETURN.
  116. ;
  117.     RET        ;RETURN TO BSTAM
  118. ;
  119. INPRTU    EQU    $
  120. ;    THIS IS THE READ DATA PORT ROUTINE.
  121. ;    BEFORE THIS ROUTINE IS ENTERED THE 02 BIT OF
  122. ;    STATUS READ ROUTINE MUST HAVE BEEN SET.
  123. ;    DO NOT CLEAR THE 80 BIT FROM THE DATA INPUT PORT.
  124. ;    RETURN WITH REGISTER A LOADED WITH INPUT DATA.
  125. ;
  126.     IN    PORT+0    ;GET DATA FROM PORT
  127.     RET        ;RETURN TO BSTAM
  128. ;
  129. OUTPRU    EQU    $
  130. ;    THIS IS THE WRITE DATA PORT ROUTINE.
  131. ;    BEFORE THIS ROUTINE IS ENTERED THE 04 BIT AND 01 BIT
  132. ;    OF STATUS READ MUST BE SET.
  133. ;    DO NOT CLEAR THE 80 BIT FROM THE DATA OUTPUT PORT.
  134. ;    REGISTER A CONTAINS THE OUTPUT DATA.
  135. ;
  136.     OUT    PORT+0    ;SEND DATA TO REMOTE CPU
  137.     RET        ;RETURN TO BSTAM
  138. ;
  139. MESSGE:    DB    CR,LF,CR,LF
  140.     DB    'Version 1.0 for H8/H89 as of 1/30/81',CR,LF
  141.     DB    '$'
  142. ;
  143. SIGNON:    PUSH    B
  144.     PUSH    D
  145.     PUSH    H
  146.     LXI    D,MESSGE
  147.     MVI    C,9
  148.     CALL    BASE+5        ;ANNOUNCE VERSION TO USER
  149.     POP    H
  150.     POP    D
  151.     POP    B
  152.     RET
  153. ;
  154.     END
  155.