;       Intel SBC 80/30 Single board computer I/O equates.

CNIN:   EQU     0ECh            ;Console input channel
CNOUT:  EQU     0ECh            ;Console output channel
CONSTS: EQU     0EDh            ;Console staus channel

TRDY:   EQU     001h            ;output status mask
RBR:    EQU     002h            ;Input staus mask

PIT:    EQU     0DEh            ;Programmable interval timmer
;
;
;
;
;       C O N S O L   S T A T U S
;
;       This routine samples the Console status and returns the
;       following values in the A register.
;
;       EXIT    A = 0 (zero), means no character
;               currently ready to read.
;
;               A = FFh (255), means character
;               currently ready to read.

CONST:  IN      CONSTS          ;Input from port
       ANI     RBR             ;Mask data available
       RZ                      ;If data not available
       ORI     0FFh
       RET
;
;
;
;
;       C O N S O L   I N P U T
;
;       Read the next character into the A register, clearing
;       the high order bit.  If no character currently ready to
;       read then wait for a character to arrive before returning.
;
;       EXIT    A = character read from terminal.

CONIN:  IN      CONSTS          ;get staus
       ANI     RBR
       JZ      CONIN           ;If data not available
       IN      CNIN            ;Get data byte
       ANI     7Fh
       RET
;
;
;
;
;       C O N S O L   O U T P U T
;
;       Send a character to the console.  If the console
;       is not ready to receive a character wait until
;       the console is ready.
;
;       ENTRY   C = ASCII character to output to console.

CONOUT: IN      CONSTS          ;Get staus byte
       ANI     TRDY
       JZ      CONOUT          ;If transmit buffer not empty
       MOV     A,C
       OUT     CNOUT
       RET
;
;
;
;
;       P u n c h   O u t p u t.
;
;       Send a character to the punch device.  If no punch
;       device exists then immediately return.
;
;       ENTRY   C = ASCII character to output.

PUNCH:
       RET
;
;
;
;
;       R e a d e r   I n p u t.
;
;       Read the next character from the currently assigned
;       reader device into the A register.
;
;       EXIT    A = character read from the reader device.

READER:
       RET
;
;
;
;
;       L i s t   O u t p u t.
;
;       Send a character to the list device.  If the list
;       device is not ready to receive a character wait
;       until the device is ready.
;
;       ENTRY   C = ASCII character to be output.

LIST:
       RET
;
;
;
;
;       L i s t   S t a t u s.
;
;       Return the ready status for the list device.
;
;       EXIT    A = 0 (zero), list device is not ready to
;               accept another character.
;               A = FFh (255), list device is ready to accept
;               a character.
;
LISTST:
       XRA     A               ;FORCE LIST NOT READY
       RET
;
;
;
;   M P / M   F U N C T I O N S
;
;
;
SELMEMORY:
POLLDEVICE:
STARTCLOCK:
STOPCLOCK:
EXITREGION:
MAXCONSOLE:
SYSTEMINIT:
IDLE:
       RET
;
;
;
;
;
;
;
;
;
;
;
;       O P T I O N A L   N O N - S T A N D A R D   F U N C T I O N S
;
;
;
;
;
;       S E T   S E C T O R   C O U N T
;
;       Set the number of continuous sectors to transfer.
;
;       ENTRY   C = Number of sectors to transfer.
;
;       EXIT    NUMSEC = C

SETNUM:
       MOV     A,C
       STA     NUMSEC
       RET
;
;
;
;
;       S E T   E X T E N D E D   B A N K
;
;       Set the extended bank data tranfer address.
;
;       ENTRY   C = Extended address bank.
;
;       EXIT    DMAADE = C.

SETXAD:
       MOV     A,C
       STA     DMAADE
       RET
;
;
;
;       COLD boot initialization
;
;Note: The label URINIT defines the beginning of data storage.
;
URINIT: MVI     A,0B6h          ;Set PIT for 9600 baud
       OUT     PIT+1
       MVI     A,008h
       OUT     PIT+0
       MVI     A,00
       OUT     PIT+0
       MVI     A,04Eh          ;Setup serial port
       OUT     CONSTS
       MVI     A,037h
       OUT     CONSTS
       IN      CNIN
       RET
;
;