GBRIE: EQU 00000001b ;Receiver interrupt enable
GBTIE: EQU 00000010b ;Transmitter interrupt enable
GBCD: EQU 00000100b ;RS 232 CD output
GBCA: EQU 00001000b ;RS 232 CA output
GBTSB: EQU 00010000b ;Number of stop bits
GBNP: EQU 00100000b ;No parity
GBEPS: EQU 01000000b ;Even parity
GBNBI: EQU 10000000b ;number of bits/character
; 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 GBP0+GBSTAT ;Input from port
ANI GBDAV ;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 GBP0+GBSTAT
ANI GBDAV
JZ CONIN ;If data not available
IN GBP0+GBDATA
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 GBP0+GBSTAT
ANI GBTBMT
JZ CONOUT ;If transmit buffer not empty
MOV A,C
OUT GBP0+GBDATA
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: IN GBP1+GBSTAT
ANI GBTBMT
JZ PUNCH ;If transmit buffer full
MOV A,C
OUT GBP1+GBDATA
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: IN GBP1+GBSTAT ;Input from port
ANI GBDAV ;Mask data available
JZ READER ;If data not available
IN GBP1+GBDATA
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: IN GBP1+GBSTAT ;Get status
ANI GBCC+GBTBMT
SUI GBTBMT
JNZ LIST
MOV A,C
OUT GBP1+GBDATA
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:
IN GBP1+GBSTAT
ANI GBCC+GBTBMT
SUI GBTBMT
RZ ;If ready
ORI 0FFh
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: RET
;
;