; 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 ; ;