Browse Source

SC126 Diag Port

Make diagnostic port existence and port address configurable.
pull/48/head
Wayne Warthen 7 years ago
parent
commit
9a3e3e443c
  1. 2
      Source/HBIOS/Config/RCZ180_sc126.asm
  2. 68
      Source/HBIOS/acia.asm
  3. 2
      Source/HBIOS/cfg_ezz80.asm
  4. 2
      Source/HBIOS/cfg_mk4.asm
  5. 2
      Source/HBIOS/cfg_n8.asm
  6. 2
      Source/HBIOS/cfg_rcz180.asm
  7. 2
      Source/HBIOS/cfg_rcz80.asm
  8. 2
      Source/HBIOS/cfg_sbc.asm
  9. 2
      Source/HBIOS/cfg_zeta.asm
  10. 18
      Source/HBIOS/hbios.asm
  11. 6
      Source/HBIOS/sio.asm

2
Source/HBIOS/Config/RCZ180_sc126.asm

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

68
Source/HBIOS/acia.asm

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

2
Source/HBIOS/cfg_ezz80.asm

@ -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, ...)

2
Source/HBIOS/cfg_mk4.asm

@ -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, ...)

2
Source/HBIOS/cfg_n8.asm

@ -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, ...)

2
Source/HBIOS/cfg_rcz180.asm

@ -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, ...)

2
Source/HBIOS/cfg_rcz80.asm

@ -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, ...)

2
Source/HBIOS/cfg_sbc.asm

@ -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, ...)

2
Source/HBIOS/cfg_zeta.asm

@ -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, ...)

18
Source/HBIOS/hbios.asm

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

6
Source/HBIOS/sio.asm

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

Loading…
Cancel
Save