; CompuPro Interfacer board equates. GBP0: EQU 0 ;Serial port zero GBP1: EQU 2 ;Serial port one GBDATA: EQU 0 ;Data on even I/O unit GBSTAT: EQU 1 ;Status on odd I/O unit GBTBMT: EQU 00000001b ;Transmit buffer empty GBDAV: EQU 00000010b ;Data available GBOPT: EQU 00000100b ;Optional status line GBPE: EQU 00001000b ;Parity error GBOR: EQU 00010000b ;Overrun error GBFE: EQU 00100000b ;Framing error GBCC: EQU 01000000b ;RS 232 CC input GBCB: EQU 10000000b ;RS 232 CB input 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 ; ;