mirror of
https://github.com/wwarthen/RomWBW.git
synced 2026-02-06 14:11:48 -06:00
SC126 Diag Port
Make diagnostic port existence and port address configurable.
This commit is contained in:
@@ -9,6 +9,8 @@ Z180_CLKDIV .SET 1 ; 0=OSC/2, 1=OSC, 2=OSC*2
|
||||
Z180_MEMWAIT .SET 0 ; MEMORY WAIT STATES TO INSERT (0-3)
|
||||
Z180_IOWAIT .SET 1 ; IO WAIT STATES TO INSERT (0-3)
|
||||
;
|
||||
DIAGPORT .SET $0D ; DIAGNOSTIC PORT ADDRESS
|
||||
;
|
||||
CPUOSC .SET 18432000 ; CPU OSC FREQ
|
||||
DEFSERCFG .SET SER_38400_8N1 ; DEFAULT SERIAL LINE CONFIG
|
||||
;
|
||||
|
||||
@@ -101,7 +101,7 @@ ACIA_INITUNIT:
|
||||
LD HL,ACIA_DEV ; POINT TO CURRENT UART DEVICE NUM
|
||||
LD A,(HL) ; PUT IN ACCUM
|
||||
INC (HL) ; INCREMENT IT (FOR NEXT LOOP)
|
||||
LD (IY),A ; UDPATE UNIT NUM
|
||||
LD (IY),A ; UPDATE UNIT NUM
|
||||
;
|
||||
#IF (INTMODE == 1)
|
||||
; ADD IM1 INT CALL LIST ENTRY
|
||||
@@ -171,11 +171,10 @@ ACIAA_INT00:
|
||||
LD E,A ; SAVE BYTE READ
|
||||
LD A,(ACIAA_BUFCNT) ; GET CURRENT BUFFER USED COUNT
|
||||
CP ACIAA_BUFSZ ; COMPARE TO BUFFER SIZE
|
||||
;RET Z ; BAIL OUT IF BUFFER FULL, RCV BYTE DISCARDED
|
||||
JR Z,ACIAA_INT2 ; BAIL OUT IF BUFFER FULL, RCV BYTE DISCARDED
|
||||
INC A ; INCREMENT THE COUNT
|
||||
LD (ACIAA_BUFCNT),A ; AND SAVE IT
|
||||
CP ACIAA_BUFSZ - 5 ; BUFFER GETTING FULL?
|
||||
CP ACIAA_BUFSZ / 2 ; BUFFER GETTING FULL?
|
||||
JR NZ,ACIAA_INT0 ; IF NOT, BYPASS DEASSERTING RTS
|
||||
LD A,ACIA_RTSOFF ; VALUE TO DEASSERT RTS
|
||||
OUT (C),A ; DO IT
|
||||
@@ -216,11 +215,10 @@ ACIAB_INT00:
|
||||
LD E,A ; SAVE BYTE READ
|
||||
LD A,(ACIAB_BUFCNT) ; GET CURRENT BUFFER USED COUNT
|
||||
CP ACIAB_BUFSZ ; COMPARE TO BUFFER SIZE
|
||||
;RET Z ; BAIL OUT IF BUFFER FULL, RCV BYTE DISCARDED
|
||||
JR Z,ACIAB_INT2 ; BAIL OUT IF BUFFER FULL, RCV BYTE DISCARDED
|
||||
INC A ; INCREMENT THE COUNT
|
||||
LD (ACIAB_BUFCNT),A ; AND SAVE IT
|
||||
CP ACIAB_BUFSZ - 5 ; BUFFER GETTING FULL?
|
||||
CP ACIAB_BUFSZ / 2 ; BUFFER GETTING FULL?
|
||||
JR NZ,ACIAB_INT0 ; IF NOT, BYPASS DEASSERTING RTS
|
||||
LD A,ACIA_RTSOFF ; VALUE TO DEASSERT RTS
|
||||
OUT (C),A ; DO IT
|
||||
@@ -291,9 +289,8 @@ ACIAA_IN:
|
||||
LD A,(ACIAA_BUFCNT) ; GET COUNT
|
||||
DEC A ; DECREMENT COUNT
|
||||
LD (ACIAA_BUFCNT),A ; SAVE SAVE IT
|
||||
CP 5 ; BUFFER LOW THRESHOLD
|
||||
CP ACIAA_BUFSZ / 4 ; BUFFER LOW THRESHOLD
|
||||
JR NZ,ACIAA_IN0 ; IF NOT, BYPASS SETTING RTS
|
||||
|
||||
LD C,(IY+3) ; C := ACIA CMD PORT
|
||||
LD A,ACIA_RTSON ; ASSERT RTS
|
||||
OUT (C),A ; DO IT
|
||||
@@ -318,9 +315,8 @@ ACIAB_IN:
|
||||
LD A,(ACIAB_BUFCNT) ; GET COUNT
|
||||
DEC A ; DECREMENT COUNT
|
||||
LD (ACIAB_BUFCNT),A ; SAVE SAVE IT
|
||||
CP 5 ; BUFFER LOW THRESHOLD
|
||||
CP ACIAB_BUFSZ / 4 ; BUFFER LOW THRESHOLD
|
||||
JR NZ,ACIAB_IN0 ; IF NOT, BYPASS SETTING RTS
|
||||
|
||||
LD C,(IY+3) ; C := ACIA CMD PORT
|
||||
LD A,ACIA_RTSON ; ASSERT RTS
|
||||
OUT (C),A ; DO IT
|
||||
@@ -458,46 +454,40 @@ ACIA_QUERY:
|
||||
;
|
||||
;
|
||||
ACIA_DEVICE:
|
||||
LD D,CIODEV_ACIA ; D := DEVICE TYPE
|
||||
LD E,(IY) ; E := PHYSICAL UNIT
|
||||
LD C,$00 ; C := DEVICE TYPE, 0x00 IS RS-232
|
||||
XOR A ; SIGNAL SUCCESS
|
||||
LD D,CIODEV_ACIA ; D := DEVICE TYPE
|
||||
LD E,(IY) ; E := PHYSICAL UNIT
|
||||
LD C,$00 ; C := DEVICE TYPE, 0x00 IS RS-232
|
||||
XOR A ; SIGNAL SUCCESS
|
||||
RET
|
||||
;
|
||||
; ACIA DETECTION ROUTINE
|
||||
;
|
||||
ACIA_DETECT:
|
||||
;LD C,ACIA_BASE ; BASE PORT ADDRESS
|
||||
LD C,(IY+3) ; BASE PORT ADDRESS
|
||||
CALL ACIA_DETECT2 ; CHECK IT
|
||||
JR Z,ACIA_DETECT1 ; FOUND IT, RECORD IT
|
||||
;LD C,ACIA_ALTBASE ; ALT BASE PORT ADDRESS
|
||||
;CALL ACIA_DETECT2 ; CHECK IT
|
||||
;JR Z,ACIA_DETECT1 ; FOUND IT, RECORD IT
|
||||
LD A,ACIA_NONE ; NOTHING FOUND
|
||||
RET ; DONE
|
||||
;
|
||||
ACIA_DETECT1:
|
||||
; ACIA FOUND, RECORD IT
|
||||
;LD A,C ; BASE PORT ADDRESS TO A
|
||||
;LD (IY+3),A ; SAVE ACTIVE BASE PORT
|
||||
LD A,ACIA_ACIA ; RETURN CHIP TYPE
|
||||
RET ; DONE
|
||||
LD C,(IY+3) ; BASE PORT ADDRESS
|
||||
CALL ACIA_DETECT2 ; CHECK IT
|
||||
JR Z,ACIA_DETECT1 ; FOUND IT, RECORD IT
|
||||
LD A,ACIA_NONE ; NOTHING FOUND
|
||||
RET ; DONE
|
||||
;
|
||||
ACIA_DETECT1:
|
||||
; ACIA FOUND, RECORD IT
|
||||
LD A,ACIA_ACIA ; RETURN CHIP TYPE
|
||||
RET ; DONE
|
||||
;
|
||||
ACIA_DETECT2:
|
||||
; LOOK FOR ACIA AT PORT ADDRESS IN C
|
||||
LD A,$03 ; MASTER RESET
|
||||
OUT (C),A ; DO IT
|
||||
IN A,(C) ; GET STATUS
|
||||
OR A ; CHECK FOR ZERO
|
||||
RET NZ ; RETURN IF NOT ZERO
|
||||
LD A,$02 ; CLEAR MASTER RESET
|
||||
OUT (C),A ; DO IT
|
||||
LD A,$03 ; MASTER RESET
|
||||
OUT (C),A ; DO IT
|
||||
IN A,(C) ; GET STATUS
|
||||
OR A ; CHECK FOR ZERO
|
||||
RET NZ ; RETURN IF NOT ZERO
|
||||
LD A,$02 ; CLEAR MASTER RESET
|
||||
OUT (C),A ; DO IT
|
||||
; CHECK FOR EXPECTED BITS:
|
||||
; TDRE=1, DCD & CTS = 0
|
||||
AND %00001110 ; BIT MASK FOR "STABLE" BITS
|
||||
CP %00000010 ; EXPECTED VALUE
|
||||
RET ; RETURN RESULT, Z = CHIP FOUND
|
||||
AND %00001110 ; BIT MASK FOR "STABLE" BITS
|
||||
CP %00000010 ; EXPECTED VALUE
|
||||
RET ; RETURN RESULT, Z = CHIP FOUND
|
||||
;
|
||||
;
|
||||
;
|
||||
|
||||
@@ -10,6 +10,8 @@ MEMMGR .EQU MM_Z2 ; MM_NONE, MM_SBC, MM_Z2, MM_N8, MM_Z180
|
||||
RAMSIZE .EQU 512 ; SIZE OF RAM IN KB, MUST MATCH YOUR HARDWARE!!!
|
||||
DEFSERCFG .EQU SER_115200_8N1 ; DEFAULT SERIAL LINE CONFIG (SHOULD MATCH ABOVE)
|
||||
INTMODE .EQU 2 ; 0=NONE, 1=INT MODE 1, 2=INT MODE 2
|
||||
DIAGENABLE .EQU FALSE ; TRUE FOR DIAGNOSTIC CODE PORT OUTPUT
|
||||
DIAGPORT .EQU $00 ; DIAGNOSTIC PORT ADDRESS
|
||||
;
|
||||
CRTACT .EQU FALSE ; CRT ACTIVATION AT STARTUP
|
||||
VDAEMU .EQU EMUTYP_ANSI ; DEFAULT VDA EMULATION (EMUTYP_TTY, EMUTYP_ANSI, ...)
|
||||
|
||||
@@ -10,6 +10,8 @@ MEMMGR .EQU MM_Z180 ; MM_NONE, MM_SBC, MM_Z2, MM_N8, MM_Z180
|
||||
RAMSIZE .EQU 512 ; SIZE OF RAM IN KB, MUST MATCH YOUR HARDWARE!!!
|
||||
DEFSERCFG .EQU SER_38400_8N1 ; DEFAULT SERIAL LINE CONFIG (SHOULD MATCH ABOVE)
|
||||
INTMODE .EQU 2 ; 0=NONE, 1=INT MODE 1, 2=INT MODE 2
|
||||
DIAGENABLE .EQU FALSE ; TRUE FOR DIAGNOSTIC CODE PORT OUTPUT
|
||||
DIAGPORT .EQU $00 ; DIAGNOSTIC PORT ADDRESS
|
||||
;
|
||||
CRTACT .EQU FALSE ; CRT ACTIVATION AT STARTUP
|
||||
VDAEMU .EQU EMUTYP_ANSI ; DEFAULT VDA EMULATION (EMUTYP_TTY, EMUTYP_ANSI, ...)
|
||||
|
||||
@@ -10,6 +10,8 @@ MEMMGR .EQU MM_N8 ; MM_NONE, MM_SBC, MM_Z2, MM_N8, MM_Z180
|
||||
RAMSIZE .EQU 512 ; SIZE OF RAM IN KB, MUST MATCH YOUR HARDWARE!!!
|
||||
DEFSERCFG .EQU SER_38400_8N1 ; DEFAULT SERIAL LINE CONFIG (SHOULD MATCH ABOVE)
|
||||
INTMODE .EQU 2 ; 0=NONE, 1=INT MODE 1, 2=INT MODE 2
|
||||
DIAGENABLE .EQU FALSE ; TRUE FOR DIAGNOSTIC CODE PORT OUTPUT
|
||||
DIAGPORT .EQU $00 ; DIAGNOSTIC PORT ADDRESS
|
||||
;
|
||||
CRTACT .EQU FALSE ; CRT ACTIVATION AT STARTUP
|
||||
VDAEMU .EQU EMUTYP_ANSI ; DEFAULT VDA EMULATION (EMUTYP_TTY, EMUTYP_ANSI, ...)
|
||||
|
||||
@@ -10,6 +10,8 @@ MEMMGR .EQU MM_Z180 ; MM_NONE, MM_SBC, MM_Z2, MM_N8, MM_Z180
|
||||
RAMSIZE .EQU 512 ; SIZE OF RAM IN KB, MUST MATCH YOUR HARDWARE!!!
|
||||
DEFSERCFG .EQU SER_38400_8N1 ; DEFAULT SERIAL LINE CONFIG (SHOULD MATCH ABOVE)
|
||||
INTMODE .EQU 2 ; 0=NONE, 1=INT MODE 1, 2=INT MODE 2
|
||||
DIAGENABLE .EQU TRUE ; TRUE FOR DIAGNOSTIC CODE PORT OUTPUT
|
||||
DIAGPORT .EQU $00 ; DIAGNOSTIC PORT ADDRESS
|
||||
;
|
||||
CRTACT .EQU FALSE ; CRT ACTIVATION AT STARTUP
|
||||
VDAEMU .EQU EMUTYP_ANSI ; DEFAULT VDA EMULATION (EMUTYP_TTY, EMUTYP_ANSI, ...)
|
||||
|
||||
@@ -10,6 +10,8 @@ MEMMGR .EQU MM_Z2 ; MM_NONE, MM_SBC, MM_Z2, MM_N8, MM_Z180
|
||||
RAMSIZE .EQU 512 ; SIZE OF RAM IN KB, MUST MATCH YOUR HARDWARE!!!
|
||||
DEFSERCFG .EQU SER_115200_8N1 ; DEFAULT SERIAL LINE CONFIG (SHOULD MATCH ABOVE)
|
||||
INTMODE .EQU 1 ; 0=NONE, 1=INT MODE 1, 2=INT MODE 2
|
||||
DIAGENABLE .EQU TRUE ; TRUE FOR DIAGNOSTIC CODE PORT OUTPUT
|
||||
DIAGPORT .EQU $00 ; DIAGNOSTIC PORT ADDRESS
|
||||
;
|
||||
CRTACT .EQU FALSE ; CRT ACTIVATION AT STARTUP
|
||||
VDAEMU .EQU EMUTYP_ANSI ; DEFAULT VDA EMULATION (EMUTYP_TTY, EMUTYP_ANSI, ...)
|
||||
|
||||
@@ -10,6 +10,8 @@ MEMMGR .EQU MM_SBC ; MM_NONE, MM_SBC, MM_Z2, MM_N8, MM_Z180
|
||||
RAMSIZE .EQU 512 ; SIZE OF RAM IN KB, MUST MATCH YOUR HARDWARE!!!
|
||||
DEFSERCFG .EQU SER_38400_8N1 ; DEFAULT SERIAL LINE CONFIG (SHOULD MATCH ABOVE)
|
||||
INTMODE .EQU 0 ; 0=NONE, 1=INT MODE 1, 2=INT MODE 2
|
||||
DIAGENABLE .EQU FALSE ; TRUE FOR DIAGNOSTIC CODE PORT OUTPUT
|
||||
DIAGPORT .EQU $00 ; DIAGNOSTIC PORT ADDRESS
|
||||
;
|
||||
CRTACT .EQU FALSE ; CRT ACTIVATION AT STARTUP
|
||||
VDAEMU .EQU EMUTYP_ANSI ; DEFAULT VDA EMULATION (EMUTYP_TTY, EMUTYP_ANSI, ...)
|
||||
|
||||
@@ -10,6 +10,8 @@ MEMMGR .EQU MM_SBC ; MM_NONE, MM_SBC, MM_Z2, MM_N8, MM_Z180
|
||||
RAMSIZE .EQU 512 ; SIZE OF RAM IN KB, MUST MATCH YOUR HARDWARE!!!
|
||||
DEFSERCFG .EQU SER_38400_8N1 ; DEFAULT SERIAL LINE CONFIG (SHOULD MATCH ABOVE)
|
||||
INTMODE .EQU 0 ; 0=NONE, 1=INT MODE 1, 2=INT MODE 2
|
||||
DIAGENABLE .EQU FALSE ; TRUE FOR DIAGNOSTIC CODE PORT OUTPUT
|
||||
DIAGPORT .EQU $00 ; DIAGNOSTIC PORT ADDRESS
|
||||
;
|
||||
CRTACT .EQU FALSE ; CRT ACTIVATION AT STARTUP
|
||||
VDAEMU .EQU EMUTYP_ANSI ; DEFAULT VDA EMULATION (EMUTYP_TTY, EMUTYP_ANSI, ...)
|
||||
|
||||
@@ -67,14 +67,14 @@ MODCNT .SET MODCNT + 1
|
||||
;
|
||||
;
|
||||
;
|
||||
#IF ((PLATFORM == PLT_RCZ80) | (PLATFORM == PLT_RCZ180))
|
||||
#DEFINE DIAGP $00
|
||||
#ENDIF
|
||||
;#IF ((PLATFORM == PLT_RCZ80) | (PLATFORM == PLT_RCZ180))
|
||||
;#DEFINE DIAGPORT $00
|
||||
;#ENDIF
|
||||
;
|
||||
#IFDEF DIAGP
|
||||
#IF (DIAGENABLE)
|
||||
#DEFINE DIAG(N) PUSH AF
|
||||
#DEFCONT \ LD A,N
|
||||
#DEFCONT \ OUT (DIAGP),A
|
||||
#DEFCONT \ OUT (DIAGPORT),A
|
||||
#DEFCONT \ POP AF
|
||||
#ELSE
|
||||
#DEFINE DIAG(N) \;
|
||||
@@ -301,7 +301,7 @@ HBX_ROM:
|
||||
HBX_ROM:
|
||||
RLCA ; TIMES 2 - GET 16K PAGE INSTEAD OF 32K
|
||||
OUT (MPGSEL_0),A ; BANK_0: 0K - 16K
|
||||
;OUT (DIAGP),A ; *DEBUG*
|
||||
;OUT (DIAGPORT),A ; *DEBUG*
|
||||
INC A ;
|
||||
OUT (MPGSEL_1),A ; BANK_1: 16K - 32K
|
||||
RET ; DONE
|
||||
@@ -774,9 +774,9 @@ HB_START:
|
||||
DI ; NO INTERRUPTS
|
||||
IM 1 ; INTERRUPT MODE 1
|
||||
;
|
||||
#IFDEF DIAGP
|
||||
#IF (DIAGENABLE)
|
||||
LD A,%00000001
|
||||
OUT (DIAGP),A
|
||||
OUT (DIAGPORT),A
|
||||
#ENDIF
|
||||
;
|
||||
LD SP,HBX_LOC ; SETUP INITIAL STACK JUST BELOW HBIOS PROXY
|
||||
@@ -2366,7 +2366,7 @@ HB_BADINT:
|
||||
LD HL,HB_BADINTCNT
|
||||
INC (HL)
|
||||
LD A,(HL)
|
||||
OUT (DIAGP),A
|
||||
OUT (DIAGPORT),A
|
||||
OR $FF
|
||||
RET
|
||||
HB_BADINTCNT .DB 0
|
||||
|
||||
@@ -175,7 +175,6 @@ SIOA_INT00:
|
||||
LD E,A ; SAVE BYTE READ
|
||||
LD A,(SIOA_CNT) ; GET CURRENT BUFFER USED COUNT
|
||||
CP SIOA_BUFSZ ; COMPARE TO BUFFER SIZE
|
||||
;RET Z ; BAIL OUT IF BUFFER FULL, RCV BYTE DISCARDED
|
||||
JR Z,SIOA_INT2 ; BAIL OUT IF BUFFER FULL, RCV BYTE DISCARDED
|
||||
INC A ; INCREMENT THE COUNT
|
||||
LD (SIOA_CNT),A ; AND SAVE IT
|
||||
@@ -221,7 +220,6 @@ SIOB_INT00:
|
||||
LD E,A ; SAVE BYTE READ
|
||||
LD A,(SIOB_CNT) ; GET CURRENT BUFFER USED COUNT
|
||||
CP SIOB_BUFSZ ; COMPARE TO BUFFER SIZE
|
||||
;RET Z ; BAIL OUT IF BUFFER FULL, RCV BYTE DISCARDED
|
||||
JR Z,SIOB_INT2 ; BAIL OUT IF BUFFER FULL, RCV BYTE DISCARDED
|
||||
INC A ; INCREMENT THE COUNT
|
||||
LD (SIOB_CNT),A ; AND SAVE IT
|
||||
@@ -309,7 +307,7 @@ SIOA_IN:
|
||||
LD A,(SIOA_CNT) ; GET COUNT
|
||||
DEC A ; DECREMENT COUNT
|
||||
LD (SIOA_CNT),A ; SAVE SAVE IT
|
||||
CP 5 ; BUFFER LOW THRESHOLD
|
||||
CP SIOA_BUFSZ / 4 ; BUFFER LOW THRESHOLD
|
||||
JR NZ,SIOA_IN0 ; IF NOT, BYPASS SETTING RTS
|
||||
LD A,5 ; RTS IS IN WR5
|
||||
OUT (SIOA_CMD),A ; ADDRESS WR5
|
||||
@@ -336,7 +334,7 @@ SIOB_IN:
|
||||
LD A,(SIOB_CNT) ; GET COUNT
|
||||
DEC A ; DECREMENT COUNT
|
||||
LD (SIOB_CNT),A ; SAVE SAVE IT
|
||||
CP 5 ; BUFFER LOW THRESHOLD
|
||||
CP SIOB_BUFSZ / 4 ; BUFFER LOW THRESHOLD
|
||||
JR NZ,SIOB_IN0 ; IF NOT, BYPASS SETTING RTS
|
||||
LD A,5 ; RTS IS IN WR5
|
||||
OUT (SIOB_CMD),A ; ADDRESS WR5
|
||||
|
||||
Reference in New Issue
Block a user