diff --git a/Source/HBIOS/Config/RCZ180_sc126.asm b/Source/HBIOS/Config/RCZ180_sc126.asm index 1b44e8c7..e90a52f3 100644 --- a/Source/HBIOS/Config/RCZ180_sc126.asm +++ b/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 ; diff --git a/Source/HBIOS/acia.asm b/Source/HBIOS/acia.asm index 966474df..48e54a92 100644 --- a/Source/HBIOS/acia.asm +++ b/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 ; ; ; diff --git a/Source/HBIOS/cfg_ezz80.asm b/Source/HBIOS/cfg_ezz80.asm index 6be302c6..ec4b4eef 100644 --- a/Source/HBIOS/cfg_ezz80.asm +++ b/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, ...) diff --git a/Source/HBIOS/cfg_mk4.asm b/Source/HBIOS/cfg_mk4.asm index 77e41df4..1063f810 100644 --- a/Source/HBIOS/cfg_mk4.asm +++ b/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, ...) diff --git a/Source/HBIOS/cfg_n8.asm b/Source/HBIOS/cfg_n8.asm index a885b13f..be578dbb 100644 --- a/Source/HBIOS/cfg_n8.asm +++ b/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, ...) diff --git a/Source/HBIOS/cfg_rcz180.asm b/Source/HBIOS/cfg_rcz180.asm index 482435ae..40f31017 100644 --- a/Source/HBIOS/cfg_rcz180.asm +++ b/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, ...) diff --git a/Source/HBIOS/cfg_rcz80.asm b/Source/HBIOS/cfg_rcz80.asm index 62bc40c0..e24e52b5 100644 --- a/Source/HBIOS/cfg_rcz80.asm +++ b/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, ...) diff --git a/Source/HBIOS/cfg_sbc.asm b/Source/HBIOS/cfg_sbc.asm index 3fcc40d3..c972476e 100644 --- a/Source/HBIOS/cfg_sbc.asm +++ b/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, ...) diff --git a/Source/HBIOS/cfg_zeta.asm b/Source/HBIOS/cfg_zeta.asm index 2ac1a983..6a3888fa 100644 --- a/Source/HBIOS/cfg_zeta.asm +++ b/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, ...) diff --git a/Source/HBIOS/hbios.asm b/Source/HBIOS/hbios.asm index e54da998..425e5d20 100644 --- a/Source/HBIOS/hbios.asm +++ b/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 diff --git a/Source/HBIOS/sio.asm b/Source/HBIOS/sio.asm index 1dfacc13..0c0e85b1 100644 --- a/Source/HBIOS/sio.asm +++ b/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