;
;BSTAM 4.6 UHSIO4.ASM  NORTH STAR HSIO-4
;
;Modification written by Robb Adams  (WA9ZMO/8)
;6354 North Twelth Street, Kalamazoo, MI 49009
;
;10-Oct-82  This version will adapt the North Star
;HSIO-4 I/O Board to BSTAM. The user need only make
;three modifications if desired;
;
;    BOARD ADDR - PORT ADDR - BAUD RATE
;
;----------------------------------------------------------
BEGIN   ORG     103H
INITIL  JMP     INITIU  ;INITIALATION ENTRY POINT
INSPORT JMP     INSPRU  ;STATUS PORT READ ENTRY POINT
ERRSET  JMP     ERRSTU  ;ERROR RESET ENTRY POINT
INPORT  JMP     INPRTU  ;READ DATA PORT ENTRY POINT
OUTPORT JMP     OUTPRU  ;WRITE DATA PORT ENTRY POINT
DUART   JMP     DUARTU
DUARTU  RET
;----------------------------------------------------------
BDOS    EQU     05H     ;
CR      EQU     0AH     ;CARRIAGE RETURN
LF      EQU     0DH     ;LINE FEED
;----------------------------------------------------------
PA      EQU     00H     ;PORT A
PB      EQU     04H     ;PORT B
PC      EQU     08H     ;PORT C
PD      EQU     0CH     ;PORT D
;----------------------------------------------------------
B19200  EQU     00H     ;-- BAUD RATES FOLLOW --
B9600   EQU     01H
B4800   EQU     02H
B2400   EQU     03H
B1200   EQU     04H
B600    EQU     05H
B300    EQU     06H
B110    EQU     07H
;----------------------------------------------------------
BAS     EQU     10H     ;<- CHANGE BOARD ADDRESS HERE
PAD     EQU     PD      ;<- CHANGE  PORT ADDRESS HERE
BAUD    EQU     B300    ;<- CHANGE BAUD  RATE    HERE
;----------------------------------------------------------
PORT    EQU     BAS+PAD ;ADDRESS OF CHOSEN PORT
STATPT  EQU     PORT+3  ;STATUS PORT
DATAPT  EQU     PORT+2  ;DATA PORT
INTRPT  EQU     PORT+1  ;INTERRUPT PORT
BAUDPT  EQU     PORT+0  ;BAUD PORT
;----------------------------------------------------------
MI      EQU     4EH     ;1 STOP,8 DATA
CI      EQU     37H     ;ERROR RESET AND CHIP ENABLE
ERSET   EQU     37H     ;ERROR RESET AND CHIP ENABLE
;----------------------------------------------------------
INITIU  EQU     $

;THIS IS THE UART/USART INITIALATION ROUTINE.
;
;TO BE COMPATIBLE WITH MOST BSTAM USERS USE FOLLOWING
;INITIALATION GUIDE LINES:
;
;1. USE 1 STOP BIT      (OPTIONAL - 2)
;2. USE 8 DATA BITS     (MUST)
;3. USE 1 START BIT     (MUST)
;4. USE 16X FOR CLOCK RATE      (MUST)
;5. USE ASYNCHRONOUS MODE ONLY  (MUST)

       MVI     A,B300  ;<- CHANGE BAUD RATE HERE
       OUT     BAUDPT
       CALL    SIGN
       MVI     A,03H
       CALL    NOOP
       CALL    NOOP
       MVI     A,040H  ;RESET 8251
       CALL    NOOP
       MVI     A,MI    ;SEND MODE COMMAND
       CALL    NOOP
       MVI     A,CI    ;ENABLE AND RESET ERRORS (FE,OE,PE)
       CALL    NOOP
       IN      DATAPT  ;CLEAR BUFFER
       IN      DATAPT  ;... TWICE
       RET             ;RETURN TO BSTAM

NOOP:   OUT     STATPT
       NOP ! NOP ! NOP
       NOP ! NOP ! NOP
       RET

INSPRU  EQU     $

;THIS IS THE STATUS READ PORT ROUTINE.
;WHEN EXITING THIS ROUTINE BSTAM EXPECTS IN REGISTER A
;THE FOLLOWING BITS TO BE SET IF NEEDED:
;
;1. 02 BIT SET IF RECEIVER READY
;2. 01 BIT SET IF TRANSMITTER READY

       IN      STATPT  ;FROM 8251 STATUS PORT
       RET             ;RETURN TO BSTAM

ERRSTU  EQU     $

;THIS IS THE ERROR RESET FOR UART/USART ROUTINE.
;YOUR UART/USART MAY NOT NEED TO BE RESET IF FRAMING,
;OVERRUN, OR PARITY ERROR IS FOUND. IF THIS IS YOUR
;CASE, JUST DO A RETURN.

       MVI     A,ERSET ;RESET ERRORS
       OUT     STATPT  ;TO STATUS PORT
       RET             ;RETURN TO BSTAM

INPRTU  EQU     $

;THIS IS THE READ DATA PORT ROUTINE.

       IN      DATAPT  ;GET DATA FROM PORT
       RET             ;RETURN TO BSTAM

OUTPRU  EQU     $

;THIS IS THE WRITE DATA PORT ROUTINE.

       OUT     DATAPT  ;SEND DATA TO REMOTE CPU
       RET             ;RETURN TO BSTAM

MSGE:   DB      CR,LF,CR,LF
       DB      'Version: North Star HSIO-4  11-Oct-82'
       DB      CR,LF
       DB      'Baud: 300    Port: D    by Robb Adams'
       DB      CR,LF,LF,'$'

SIGN:   PUSH B ! PUSH D ! PUSH  H
       LXI     D,MSGE
       MVI     C,9
       CALL    BDOS
       POP  H ! POP  D ! POP   B
       RET
       END     BEGIN