|
|
|
@ -5,7 +5,7 @@ |
|
|
|
; |
|
|
|
; TODO: |
|
|
|
; |
|
|
|
SCON_IOBASE .EQU $00 |
|
|
|
SCON_IOBASE .EQU $0000 ; NOTE: 16-BIT I/O |
|
|
|
; |
|
|
|
SCON_STATUS .EQU SCON_IOBASE |
|
|
|
SCON_DATA .EQU SCON_IOBASE + 1 |
|
|
|
@ -25,6 +25,9 @@ SCON_ROWS .EQU 40 |
|
|
|
SCON_INIT: |
|
|
|
CALL NEWLINE |
|
|
|
PRTS("SCON:$") |
|
|
|
PRTS(" IO=0x$") ; FORMATTING |
|
|
|
LD A,SCON_IOBASE |
|
|
|
CALL PRTHEXBYTE |
|
|
|
; |
|
|
|
; DISPLAY CONSOLE DIMENSIONS |
|
|
|
CALL PC_SPACE |
|
|
|
@ -68,7 +71,8 @@ SCON_IN: |
|
|
|
CALL SCON_IST ; CHECK FOR CHAR PENDING |
|
|
|
JR Z,SCON_IN ; WAIT FOR IT IF NECESSARY |
|
|
|
;IN0 A,(SCON_DATA) ; READ THE CHAR FROM PROPIO |
|
|
|
IN A,(SCON_DATA) ; READ THE CHAR FROM PROPIO |
|
|
|
LD BC,SCON_DATA ; DATA PORT (16 BIT I/O) |
|
|
|
IN A,(C) ; READ THE CHAR FROM PROPIO |
|
|
|
LD E,A |
|
|
|
RET |
|
|
|
; |
|
|
|
@ -76,7 +80,8 @@ SCON_IN: |
|
|
|
; |
|
|
|
SCON_IST: |
|
|
|
;IN0 A,(SCON_STATUS) ; READ LINE STATUS REGISTER |
|
|
|
IN A,(SCON_STATUS) ; READ LINE STATUS REGISTER |
|
|
|
LD BC,SCON_STATUS ; STATUS PORT (16-BIT I/O) |
|
|
|
IN A,(C) ; READ LINE STATUS REGISTER |
|
|
|
AND SCON_KBDRDY ; ISOLATE KBDRDY |
|
|
|
JP Z,CIO_IDLE ; RETURN VIA IDLE PROCESSING |
|
|
|
OR $FF ; SET A=$FF TO SIGNAL READY |
|
|
|
@ -89,14 +94,16 @@ SCON_OUT: |
|
|
|
JR Z,SCON_OUT ; WAIT IF NECESSARY |
|
|
|
LD A,E ; RECOVER THE CHAR TO WRITE |
|
|
|
;OUT0 (SCON_DATA),A ; WRITE THE CHAR TO PROPIO |
|
|
|
OUT (SCON_DATA),A ; WRITE THE CHAR TO PROPIO |
|
|
|
LD BC,SCON_DATA ; DATA PORT (16 BIT I/O) |
|
|
|
OUT (C),A ; WRITE THE CHAR TO PROPIO |
|
|
|
RET |
|
|
|
; |
|
|
|
; |
|
|
|
; |
|
|
|
SCON_OST: |
|
|
|
;IN0 A,(SCON_STATUS) ; READ LINE STATUS REGISTER |
|
|
|
IN A,(SCON_STATUS) ; READ LINE STATUS REGISTER |
|
|
|
LD BC,SCON_STATUS ; STATUS PORT (16-BIT I/O) |
|
|
|
IN A,(C) ; READ LINE STATUS REGISTER |
|
|
|
AND SCON_DSPRDY ; ISOLATE DSPRDY |
|
|
|
JP Z,CIO_IDLE ; RETURN VIA IDLE PROCESSING |
|
|
|
OR $FF ; SET A=$FF TO SIGNAL READY |
|
|
|
|