|
|
@ -173,10 +173,10 @@ Z2U_INT: |
|
|
; |
|
|
; |
|
|
; START BY SELECTING I/O PAGE $FE (SAVING PREVIOUS VALUE) |
|
|
; START BY SELECTING I/O PAGE $FE (SAVING PREVIOUS VALUE) |
|
|
LD C,Z280_IOPR ; REG C POINTS TO I/O PAGE REGISTER |
|
|
LD C,Z280_IOPR ; REG C POINTS TO I/O PAGE REGISTER |
|
|
.DB $ED,$66 ; LDCTL HL,(C) ; GET CURRENT I/O PAGE |
|
|
|
|
|
|
|
|
LDCTL HL,(C) ; GET CURRENT I/O PAGE |
|
|
PUSH HL ; SAVE IT |
|
|
PUSH HL ; SAVE IT |
|
|
LD L,$FE ; NEW COUNTER/TIMER I/O PAGE |
|
|
LD L,$FE ; NEW COUNTER/TIMER I/O PAGE |
|
|
.DB $ED,$6E ; LDCTL (C),HL |
|
|
|
|
|
|
|
|
LDCTL (C),HL |
|
|
; |
|
|
; |
|
|
; CHECK TO SEE IF SOMETHING IS ACTUALLY THERE |
|
|
; CHECK TO SEE IF SOMETHING IS ACTUALLY THERE |
|
|
IN A,(Z280_UARTRCTL) ; GET STATUS |
|
|
IN A,(Z280_UARTRCTL) ; GET STATUS |
|
|
@ -199,11 +199,7 @@ Z2U_INTRCV1: |
|
|
Z2U_INTRCV2: |
|
|
Z2U_INTRCV2: |
|
|
INC HL ; HL NOW HAS ADR OF HEAD PTR |
|
|
INC HL ; HL NOW HAS ADR OF HEAD PTR |
|
|
PUSH HL ; SAVE ADR OF HEAD PTR |
|
|
PUSH HL ; SAVE ADR OF HEAD PTR |
|
|
;LD A,(HL) ; DEREFERENCE HL |
|
|
|
|
|
;INC HL |
|
|
|
|
|
;LD H,(HL) |
|
|
|
|
|
;LD L,A ; HL IS NOW ACTUAL HEAD PTR |
|
|
|
|
|
.DB $ED,$26 ; LD HL,(HL) ; DEREFERENCE HL, HL IS NOW ACTUAL HEAD PTR |
|
|
|
|
|
|
|
|
LD2 HL,(HL) ; DEREFERENCE HL, HL IS NOW ACTUAL HEAD PTR |
|
|
LD (HL),B ; SAVE CHARACTER RECEIVED IN BUFFER AT HEAD |
|
|
LD (HL),B ; SAVE CHARACTER RECEIVED IN BUFFER AT HEAD |
|
|
INC HL ; BUMP HEAD POINTER |
|
|
INC HL ; BUMP HEAD POINTER |
|
|
POP DE ; RECOVER ADR OF HEAD PTR |
|
|
POP DE ; RECOVER ADR OF HEAD PTR |
|
|
@ -219,10 +215,7 @@ Z2U_INTRCV2: |
|
|
INC HL ; ... SO HL NOW HAS ADR OF ACTUAL BUFFER START |
|
|
INC HL ; ... SO HL NOW HAS ADR OF ACTUAL BUFFER START |
|
|
Z2U_INTRCV3: |
|
|
Z2U_INTRCV3: |
|
|
EX DE,HL ; DE := HEAD PTR VAL, HL := ADR OF HEAD PTR |
|
|
EX DE,HL ; DE := HEAD PTR VAL, HL := ADR OF HEAD PTR |
|
|
;LD (HL),E ; SAVE UPDATED HEAD PTR |
|
|
|
|
|
;INC HL |
|
|
|
|
|
;LD (HL),D |
|
|
|
|
|
.DB $ED,$1E ;LD (HL),DE ; SAVE UPDATED HEAD PTR |
|
|
|
|
|
|
|
|
LD2 (HL),DE ; SAVE UPDATED HEAD PTR |
|
|
|
|
|
|
|
|
; CHECK FOR MORE PENDING... |
|
|
; CHECK FOR MORE PENDING... |
|
|
IN A,(Z280_UARTRCTL) ; GET STATUS |
|
|
IN A,(Z280_UARTRCTL) ; GET STATUS |
|
|
@ -233,7 +226,7 @@ Z2U_INTRCV4: |
|
|
; RESTORE I/O PAGE |
|
|
; RESTORE I/O PAGE |
|
|
LD C,Z280_IOPR ; REG C POINTS TO I/O PAGE REGISTER |
|
|
LD C,Z280_IOPR ; REG C POINTS TO I/O PAGE REGISTER |
|
|
POP HL ; RECOVER ORIGINAL I/O PAGE |
|
|
POP HL ; RECOVER ORIGINAL I/O PAGE |
|
|
.DB $ED,$6E ; LDCTL (C),HL |
|
|
|
|
|
|
|
|
LDCTL (C),HL |
|
|
; |
|
|
; |
|
|
; RESTORE REGISTERS |
|
|
; RESTORE REGISTERS |
|
|
POP HL |
|
|
POP HL |
|
|
@ -267,7 +260,7 @@ Z2U_IN: |
|
|
; START BY SELECTING I/O PAGE $FE |
|
|
; START BY SELECTING I/O PAGE $FE |
|
|
LD L,$FE ; Z280 UART REGISTERS AT I/O PAGE $FE |
|
|
LD L,$FE ; Z280 UART REGISTERS AT I/O PAGE $FE |
|
|
LD C,Z280_IOPR ; REG C POINTS TO I/O PAGE REGISTER |
|
|
LD C,Z280_IOPR ; REG C POINTS TO I/O PAGE REGISTER |
|
|
.DB $ED,$6E ; LDCTL (C),HL |
|
|
|
|
|
|
|
|
LDCTL (C),HL |
|
|
; |
|
|
; |
|
|
; GET CHAR |
|
|
; GET CHAR |
|
|
IN A,(Z280_UARTRECV) ; GET A BYTE |
|
|
IN A,(Z280_UARTRECV) ; GET A BYTE |
|
|
@ -276,7 +269,7 @@ Z2U_IN: |
|
|
; RESTORE I/O PAGE TO $00 |
|
|
; RESTORE I/O PAGE TO $00 |
|
|
LD L,$00 ; NORMAL I/O REG IS $00 |
|
|
LD L,$00 ; NORMAL I/O REG IS $00 |
|
|
LD C,Z280_IOPR ; REG C POINTS TO I/O PAGE REGISTER |
|
|
LD C,Z280_IOPR ; REG C POINTS TO I/O PAGE REGISTER |
|
|
.DB $ED,$6E ; LDCTL (C),HL |
|
|
|
|
|
|
|
|
LDCTL (C),HL |
|
|
; |
|
|
; |
|
|
XOR A ; SIGNAL SUCCESS |
|
|
XOR A ; SIGNAL SUCCESS |
|
|
RET ; DONE |
|
|
RET ; DONE |
|
|
@ -334,7 +327,7 @@ Z2U_OUT: |
|
|
; START BY SELECTING I/O PAGE $FE |
|
|
; START BY SELECTING I/O PAGE $FE |
|
|
LD L,$FE ; Z280 UART REGISTERS AT I/O PAGE $FE |
|
|
LD L,$FE ; Z280 UART REGISTERS AT I/O PAGE $FE |
|
|
LD C,Z280_IOPR ; REG C POINTS TO I/O PAGE REGISTER |
|
|
LD C,Z280_IOPR ; REG C POINTS TO I/O PAGE REGISTER |
|
|
.DB $ED,$6E ; LDCTL (C),HL |
|
|
|
|
|
|
|
|
LDCTL (C),HL |
|
|
; |
|
|
; |
|
|
; WRITE CHAR |
|
|
; WRITE CHAR |
|
|
LD A,E ; BYTE TO A |
|
|
LD A,E ; BYTE TO A |
|
|
@ -343,7 +336,7 @@ Z2U_OUT: |
|
|
; RESTORE I/O PAGE TO $00 |
|
|
; RESTORE I/O PAGE TO $00 |
|
|
LD L,$00 ; NORMAL I/O REG IS $00 |
|
|
LD L,$00 ; NORMAL I/O REG IS $00 |
|
|
LD C,Z280_IOPR ; REG C POINTS TO I/O PAGE REGISTER |
|
|
LD C,Z280_IOPR ; REG C POINTS TO I/O PAGE REGISTER |
|
|
.DB $ED,$6E ; LDCTL (C),HL |
|
|
|
|
|
|
|
|
LDCTL (C),HL |
|
|
; |
|
|
; |
|
|
XOR A ; SIGNAL SUCCESS |
|
|
XOR A ; SIGNAL SUCCESS |
|
|
RET ; DONE |
|
|
RET ; DONE |
|
|
@ -356,7 +349,7 @@ Z2U_IST: |
|
|
; START BY SELECTING I/O PAGE $FE |
|
|
; START BY SELECTING I/O PAGE $FE |
|
|
LD L,$FE ; Z280 UART REGISTERS AT I/O PAGE $FE |
|
|
LD L,$FE ; Z280 UART REGISTERS AT I/O PAGE $FE |
|
|
LD C,Z280_IOPR ; REG C POINTS TO I/O PAGE REGISTER |
|
|
LD C,Z280_IOPR ; REG C POINTS TO I/O PAGE REGISTER |
|
|
.DB $ED,$6E ; LDCTL (C),HL |
|
|
|
|
|
|
|
|
LDCTL (C),HL |
|
|
; |
|
|
; |
|
|
; GET RECEIVE STATUS |
|
|
; GET RECEIVE STATUS |
|
|
IN A,(Z280_UARTRCTL) ; GET STATUS |
|
|
IN A,(Z280_UARTRCTL) ; GET STATUS |
|
|
@ -365,11 +358,11 @@ Z2U_IST: |
|
|
; RESTORE I/O PAGE TO $00 |
|
|
; RESTORE I/O PAGE TO $00 |
|
|
LD L,$00 ; NORMAL I/O REG IS $00 |
|
|
LD L,$00 ; NORMAL I/O REG IS $00 |
|
|
LD C,Z280_IOPR ; REG C POINTS TO I/O PAGE REGISTER |
|
|
LD C,Z280_IOPR ; REG C POINTS TO I/O PAGE REGISTER |
|
|
.DB $ED,$6E ; LDCTL (C),HL |
|
|
|
|
|
|
|
|
LDCTL (C),HL |
|
|
; |
|
|
; |
|
|
OR A ; SET FLAGS |
|
|
OR A ; SET FLAGS |
|
|
JP Z,CIO_IDLE ; NOT READY, RETURN VIA IDLE PROCESSING |
|
|
JP Z,CIO_IDLE ; NOT READY, RETURN VIA IDLE PROCESSING |
|
|
|
|
|
|
|
|
|
|
|
; |
|
|
RET |
|
|
RET |
|
|
; |
|
|
; |
|
|
#ELSE |
|
|
#ELSE |
|
|
@ -391,7 +384,7 @@ Z2U_OST: |
|
|
; START BY SELECTING I/O PAGE $FE |
|
|
; START BY SELECTING I/O PAGE $FE |
|
|
LD L,$FE ; Z280 UART REGISTERS AT I/O PAGE $FE |
|
|
LD L,$FE ; Z280 UART REGISTERS AT I/O PAGE $FE |
|
|
LD C,Z280_IOPR ; REG C POINTS TO I/O PAGE REGISTER |
|
|
LD C,Z280_IOPR ; REG C POINTS TO I/O PAGE REGISTER |
|
|
.DB $ED,$6E ; LDCTL (C),HL |
|
|
|
|
|
|
|
|
LDCTL (C),HL |
|
|
; |
|
|
; |
|
|
; GET TRANSMIT STATUS |
|
|
; GET TRANSMIT STATUS |
|
|
IN A,(Z280_UARTXCTL) ; GET STATUS |
|
|
IN A,(Z280_UARTXCTL) ; GET STATUS |
|
|
@ -399,7 +392,7 @@ Z2U_OST: |
|
|
; RESTORE I/O PAGE TO $00 |
|
|
; RESTORE I/O PAGE TO $00 |
|
|
LD L,$00 ; NORMAL I/O REG IS $00 |
|
|
LD L,$00 ; NORMAL I/O REG IS $00 |
|
|
LD C,Z280_IOPR ; REG C POINTS TO I/O PAGE REGISTER |
|
|
LD C,Z280_IOPR ; REG C POINTS TO I/O PAGE REGISTER |
|
|
.DB $ED,$6E ; LDCTL (C),HL |
|
|
|
|
|
|
|
|
LDCTL (C),HL |
|
|
; |
|
|
; |
|
|
; CHECK FOR CHAR AVAILABLE |
|
|
; CHECK FOR CHAR AVAILABLE |
|
|
AND $01 ; ISOLATE CHAR AVAILABLE BIT |
|
|
AND $01 ; ISOLATE CHAR AVAILABLE BIT |
|
|
@ -439,7 +432,6 @@ Z2U_INITDEVX: |
|
|
; |
|
|
; |
|
|
Z2U_INITDEV1: |
|
|
Z2U_INITDEV1: |
|
|
LD (Z2U_NEWCFG),DE ; SAVE NEW CONFIG |
|
|
LD (Z2U_NEWCFG),DE ; SAVE NEW CONFIG |
|
|
|
|
|
|
|
|
; |
|
|
; |
|
|
; HACK FOR TESTING!!! |
|
|
; HACK FOR TESTING!!! |
|
|
; |
|
|
; |
|
|
@ -457,8 +449,6 @@ Z2U_INITDEV1: |
|
|
;LD HL,52 ; 24MHZ / 8 / 52 = 57692 BAUD (~57600) |
|
|
;LD HL,52 ; 24MHZ / 8 / 52 = 57692 BAUD (~57600) |
|
|
JP Z2U_INITDEV8 ; SKIP AHEAD TO IMPLMENT IT |
|
|
JP Z2U_INITDEV8 ; SKIP AHEAD TO IMPLMENT IT |
|
|
#ENDIF |
|
|
#ENDIF |
|
|
; |
|
|
|
|
|
; |
|
|
|
|
|
; |
|
|
; |
|
|
LD A,D ; HIWORD OF CONFIG |
|
|
LD A,D ; HIWORD OF CONFIG |
|
|
AND $1F ; ISOLATE BAUD RATE |
|
|
AND $1F ; ISOLATE BAUD RATE |
|
|
@ -480,7 +470,6 @@ Z2U_INITDEV1: |
|
|
; Z280 UART CAN USE 16, 32, OR 64 AS BAUD RATE DIVISOR |
|
|
; Z280 UART CAN USE 16, 32, OR 64 AS BAUD RATE DIVISOR |
|
|
; SET E TO IMPLEMENT WHAT WE CAN |
|
|
; SET E TO IMPLEMENT WHAT WE CAN |
|
|
LD E,%11000000 ; 8N0, DIV 1, NO C/T |
|
|
LD E,%11000000 ; 8N0, DIV 1, NO C/T |
|
|
;JR Z2U_INITDEV2 ; *DEBUG* |
|
|
|
|
|
CP 4 ; DIV 16 POSSIBLE? |
|
|
CP 4 ; DIV 16 POSSIBLE? |
|
|
JR C,Z2U_INITDEV2 ; IF NOT, SKIP AHEAD |
|
|
JR C,Z2U_INITDEV2 ; IF NOT, SKIP AHEAD |
|
|
LD E,%11000010 ; 8N0, DIV 16, NO C/T |
|
|
LD E,%11000010 ; 8N0, DIV 16, NO C/T |
|
|
@ -508,10 +497,7 @@ Z2U_INITDEV2: |
|
|
LD H,0 ; H MUST BE ZERO |
|
|
LD H,0 ; H MUST BE ZERO |
|
|
LD DE,1 ; RATIO, SO NO CONSTANT |
|
|
LD DE,1 ; RATIO, SO NO CONSTANT |
|
|
CALL DECODE ; DECODE INTO DE:HL |
|
|
CALL DECODE ; DECODE INTO DE:HL |
|
|
;LD HL,626 ; *DEBUG* |
|
|
|
|
|
JR NZ,Z2U_INITFAIL ; HANDLE FAILURE |
|
|
JR NZ,Z2U_INITFAIL ; HANDLE FAILURE |
|
|
;CALL PC_SPACE ; *DEBUG* |
|
|
|
|
|
;CALL PRTHEXWORDHL ; *DEBUG* |
|
|
|
|
|
; |
|
|
; |
|
|
; SAVE CONFIG PERMANENTLY NOW |
|
|
; SAVE CONFIG PERMANENTLY NOW |
|
|
LD DE,(Z2U_NEWCFG) ; GET NEW CONFIG BACK |
|
|
LD DE,(Z2U_NEWCFG) ; GET NEW CONFIG BACK |
|
|
@ -523,7 +509,7 @@ Z2U_INITDEV8: |
|
|
PUSH HL ; SAVE HL |
|
|
PUSH HL ; SAVE HL |
|
|
LD L,$FE ; Z280 UART REGISTERS AT I/O PAGE $FE |
|
|
LD L,$FE ; Z280 UART REGISTERS AT I/O PAGE $FE |
|
|
LD C,Z280_IOPR ; REG C POINTS TO I/O PAGE REGISTER |
|
|
LD C,Z280_IOPR ; REG C POINTS TO I/O PAGE REGISTER |
|
|
.DB $ED,$6E ; LDCTL (C),HL |
|
|
|
|
|
|
|
|
LDCTL (C),HL |
|
|
POP HL ; RESTORE HL |
|
|
POP HL ; RESTORE HL |
|
|
; |
|
|
; |
|
|
DEC HL ; ADJUST FOR T/C |
|
|
DEC HL ; ADJUST FOR T/C |
|
|
@ -566,7 +552,7 @@ Z2U_INITDEV9: |
|
|
; RESTORE I/O PAGE TO $00 |
|
|
; RESTORE I/O PAGE TO $00 |
|
|
LD L,$00 ; NORMAL I/O REG IS $00 |
|
|
LD L,$00 ; NORMAL I/O REG IS $00 |
|
|
LD C,Z280_IOPR ; REG C POINTS TO I/O PAGE REGISTER |
|
|
LD C,Z280_IOPR ; REG C POINTS TO I/O PAGE REGISTER |
|
|
.DB $ED,$6E ; LDCTL (C),HL |
|
|
|
|
|
|
|
|
LDCTL (C),HL |
|
|
; |
|
|
; |
|
|
#IF (INTMODE == 3) |
|
|
#IF (INTMODE == 3) |
|
|
; |
|
|
; |
|
|
|