From 30db4c7fe90b9b465439d9d8ce523aa3fabc82da Mon Sep 17 00:00:00 2001 From: Dan Werner Date: Mon, 12 Feb 2024 02:14:09 +0000 Subject: [PATCH] Add Duodyne media board support --- Source/Apps/Test/I2C/i2cscan.asm | 50 ++++++++-------- Source/Apps/Test/Makefile | 2 +- Source/Apps/Test/sound/ay-test.asm | 6 +- Source/Apps/Tune/tune.asm | 2 +- Source/HBIOS/ay38910.asm | 93 +++++++++++++++++------------- Source/HBIOS/cfg_duo.asm | 8 +-- Source/HBIOS/cfg_dyno.asm | 4 +- Source/HBIOS/cfg_epitx.asm | 4 +- Source/HBIOS/cfg_heath.asm | 4 +- Source/HBIOS/cfg_master.asm | 4 +- Source/HBIOS/cfg_mbc.asm | 4 +- Source/HBIOS/cfg_mk4.asm | 6 +- Source/HBIOS/cfg_mon.asm | 4 +- Source/HBIOS/cfg_n8.asm | 6 +- Source/HBIOS/cfg_rcz180.asm | 4 +- Source/HBIOS/cfg_rcz280.asm | 4 +- Source/HBIOS/cfg_rcz80.asm | 4 +- Source/HBIOS/cfg_rph.asm | 4 +- Source/HBIOS/cfg_s100.asm | 4 +- Source/HBIOS/cfg_sbc.asm | 4 +- Source/HBIOS/cfg_scz180.asm | 4 +- Source/HBIOS/cfg_z80retro.asm | 2 +- Source/HBIOS/cfg_zeta.asm | 4 +- Source/HBIOS/pcf.asm | 70 +++++++++++----------- Source/HBIOS/std.asm | 6 +- Source/HBIOS/tms.asm | 35 ++++++++--- 26 files changed, 188 insertions(+), 154 deletions(-) diff --git a/Source/Apps/Test/I2C/i2cscan.asm b/Source/Apps/Test/I2C/i2cscan.asm index f8237ae3..dbe287de 100644 --- a/Source/Apps/Test/I2C/i2cscan.asm +++ b/Source/Apps/Test/I2C/i2cscan.asm @@ -121,7 +121,7 @@ lp2b: push de CALL PCF_WAIT_FOR_BB JP NZ,PCF_BBERR -; +; LD A,(addr) OUT (PCF_RS0),A CALL PCF_START ; GENERATE START CONDITION @@ -148,7 +148,7 @@ lp4f: ld a,(addr) ; adjust address call _hexout lp5f: ld a,(addr) ; next address - add a,2 ; adjust for + add a,2 ; adjust for ld (addr),a ; 7-bit CALL PCF_STOP @@ -157,7 +157,7 @@ lp5f: ld a,(addr) ; next address dec e ; reached end jp nz,lp2b ; of line call _eolout - + dec d ; loop until jp nz,lp3b ; all done @@ -180,8 +180,8 @@ signon: .db "I2C Bus Scanner" _strout: st1: ld a,(hl) ; display - CP '$' ; zero - ret z ; terminated + CP '$' ; zero + ret z ; terminated ld c,a ; string call _cout inc hl @@ -236,12 +236,12 @@ _cout: ; character #IF (PCFECB | PCFDUO) _i2c_start: PCF_START: - LD A,PCF_START_ + LD A,PCF_START_ OUT (PCF_RS1),A RET #ELSE ;_i2c_start: - ld a,_idle ; issue + ld a,_idle ; issue out (I2C_BASE),a ; start ; command res _sda,a @@ -271,7 +271,7 @@ PCF_ACK .EQU 00000001B ; STATUS REGISTER BITS ; ;PCF_PIN .EQU 10000000B -PCF_INI .EQU 01000000B ; 1 if not initialized +PCF_INI .EQU 01000000B ; 1 if not initialized PCF_STS .EQU 00100000B PCF_BER .EQU 00010000B PCF_AD0 .EQU 00001000B @@ -306,12 +306,12 @@ PCF_WFA0: IN A,(PCF_RS1) ; READ PIN LD (PCF_STATUS),A ; STATUS LD B,A -; +; DEC HL ; SEE IF WE HAVE TIMED LD A,H ; OUT WAITING FOR PIN OR L ; EXIT IF JR Z,PCF_WFA1 ; WE HAVE -; +; LD A,B ; OTHERWISE KEEP LOOPING AND PCF_PIN ; UNTIL WE GET PIN JR NZ,PCF_WFA0 ; OR TIMEOUT @@ -346,8 +346,8 @@ PCF_WFBB0: LD A,H OR L JR NZ,PCF_WFBB0 ; REPEAT IF NOT TIMED OUT - CPL ; RET NZ IF TIMEOUT - RET + CPL ; RET NZ IF TIMEOUT + RET ; ;----------------------------------------------------------------------------- ; DISPLAY ERROR MESSAGES @@ -361,7 +361,7 @@ PCF_INIERR: PUSH HL LD HL,PCF_NOPCF JR PCF_PRTERR -; +; PCF_SETERR: PUSH HL LD HL,PCF_WRTFAIL @@ -371,17 +371,17 @@ PCF_REGERR: PUSH HL LD HL,PCF_REGFAIL JR PCF_PRTERR -; +; PCF_CLKERR: PUSH HL LD HL,PCF_CLKFAIL JR PCF_PRTERR -; +; PCF_IDLERR: PUSH HL LD HL,PCF_IDLFAIL - JR PCF_PRTERR -; + JR PCF_PRTERR +; PCF_ACKERR: PUSH HL LD HL,PCF_ACKFAIL @@ -415,7 +415,7 @@ PCF_BBERR: PCF_PRTERR: CALL _strout CALL _eolout - POP HL + POP HL RET ; PCF_NOPCF .DB "NO DEVICE FOUND$" @@ -433,15 +433,15 @@ PCF_BBFAIL .DB "BUS BUSY$" ; ;----------------------------------------------------------------------------- #IF (PCFECB | PCFDUO) -_i2c_stop: -PCF_STOP: - LD A,PCF_STOP_ ; issue +_i2c_stop: +PCF_STOP: + LD A,PCF_STOP_ ; issue OUT (PCF_RS1),A ; stop RET ; command #ELSE -;_i2c_stop: - ld a,(oprval) - res _scl,a +;_i2c_stop: + ld a,(oprval) + res _scl,a res _sda,a out (I2C_BASE),a @@ -495,7 +495,7 @@ i2c4: in a,(I2C_BASE) res _scl,a out (I2C_BASE),a ld (oprval),a - + xor a bit _sda,c ret z diff --git a/Source/Apps/Test/Makefile b/Source/Apps/Test/Makefile index 6fbce342..ef0d67c2 100644 --- a/Source/Apps/Test/Makefile +++ b/Source/Apps/Test/Makefile @@ -1,4 +1,4 @@ -OBJECTS = +OBJECTS = SUBDIRS = DMAmon I2C inttest ppidetst ramtest tstdskng rzsz vdctest kbdtest ps2info 2piotst piomon banktest portscan DEST = ../../../Binary/Apps/Test TOOLS =../../../Tools diff --git a/Source/Apps/Test/sound/ay-test.asm b/Source/Apps/Test/sound/ay-test.asm index 29f84f7b..40de4ef6 100644 --- a/Source/Apps/Test/sound/ay-test.asm +++ b/Source/Apps/Test/sound/ay-test.asm @@ -13,9 +13,9 @@ ; ; Hardware port addresses ; -rsel .equ $9A ; Register seelection port address -rdat .equ $9B ; Register data port address -acr .equ $9C ; Aux control register port address +rsel .equ $A4 ; Register seelection port address +rdat .equ $A5 ; Register data port address +acr .equ $A2 ; Aux control register port address ; ; CPU speed for delay scaling ; diff --git a/Source/Apps/Tune/tune.asm b/Source/Apps/Tune/tune.asm index be886658..c12ba1a0 100644 --- a/Source/Apps/Tune/tune.asm +++ b/Source/Apps/Tune/tune.asm @@ -630,7 +630,7 @@ CFGTBL: ; PLT RSEL RDAT RIN Z180 ACR .DB 13, $A0, $A1, $A0, $FF, $A2 ; MBC .DW HWSTR_MBC ; - .DB 17, $A0, $A1, $A0, $FF, $A2 ; DUODYNE + .DB 17, $A4, $A5, $A4, $FF, $FF ; DUODYNE .DW HWSTR_DUO ; .DB $FF ; END OF TABLE MARKER diff --git a/Source/HBIOS/ay38910.asm b/Source/HBIOS/ay38910.asm index 4188fa17..f9451d7d 100644 --- a/Source/HBIOS/ay38910.asm +++ b/Source/HBIOS/ay38910.asm @@ -2,6 +2,7 @@ ; ; AY-3-8910 / YM2149 SOUND DRIVER ; +; UPDATED BY: DAN WERNER -- 2/11/2024 - DUODYNE SUPPORT ;====================================================================== ; ; AY-3-8910 & YM2149 PSG CHIPS NEED AN INPUT CLOCK FREQUENCY OF @@ -14,7 +15,7 @@ ; DIFFENCES BETWEEN AY-3-8910 AND YM2149 ; THE AY-3-8910 HAS 16 ENVELOPE LEVELS, YM2149 HAS 32. ; THIS AFFECTS AUDIO OUTPUT ONLY. THERE IS NO PROGRAMMING IMPACT. -; UNUSED BITS IN REGISTERS ARE READ AS ZERO ON AY-3-8910. +; UNUSED BITS IN REGISTERS ARE READ AS ZERO ON AY-3-8910. ; UNUSED BITS CAN BE READ BACK AND WRITTEN ON YM. ; VOLTAGE LEVEL OUTPUT ON A AY-3-8910 IS LOW AND AROUND 2V ON YM2149. ; @@ -73,6 +74,13 @@ AY_RIN .EQU AY_RSEL AY_ACR .EQU $A2 .ECHO "MBC" #ENDIF +#IF (AYMODE == AYMODE_DUO) +AY_RSEL .EQU $A4 +AY_RDAT .EQU $A5 +AY_RIN .EQU AY_RSEL +AY_ACR .EQU $A6 + .ECHO "DUO" +#ENDIF ; .ECHO ", IO=" .ECHO AY_RSEL @@ -117,7 +125,7 @@ AY_IDAT .EQU 0 ; NO INSTANCE DATA ASSOCIATED WITH THIS DEVICE AY_TONECNT .EQU 3 ; COUNT NUMBER OF TONE CHANNELS AY_NOISECNT .EQU 1 ; COUNT NUMBER OF NOISE CHANNELS ;; -;#IF (AY_CLK > 3579545) ; DEPENDING ON THE +;#IF (AY_CLK > 3579545) ; DEPENDING ON THE ;AY_SCALE .EQU 2 ; INPUT CLOCK FREQUENCY ;#ELSE ; PRESCALE THE TONE PERIOD ;AY_SCALE .EQU 3 ; DATA TO MAINTAIN MAXIMUM @@ -161,19 +169,26 @@ AY38910_INIT: #IF (AYMODE == AYMODE_MBC) PRTS(" MODE=MBC$") #ENDIF +#IF (AYMODE == AYMODE_DUO) + PRTS(" MODE=DUO$") +#ENDIF ; #IF (AYMODE == AYMODE_LINC) PRTS(" MODE=LINC$") #ENDIF -; +; PRTS(" IO=0x$") LD A,AY_RSEL CALL PRTHEXBYTE ; -#IF ((AYMODE == AYMODE_SCG) | (AYMODE == AYMODE_N8) | (AYMODE == AYMODE_MBC)) +#IF ((AYMODE == AYMODE_SCG) | (AYMODE == AYMODE_N8) | (AYMODE == AYMODE_MBC) LD A,$FF ; ACTIVATE DEVICE BIT 4 IS AY RESET CONTROL, BIT 3 IS ACTIVE LED OUT (AY_ACR),A ; SET INIT AUX CONTROL REG #ENDIF +#IF ((AYMODE == AYMODE_DUO)) + LD A,$FE ; + OUT (AY_ACR),A ; SET INIT AUX CONTROL REG +#ENDIF ; LD DE,(AY_R2CHBP*256)+$55 ; SIMPLE HARDWARE PROBE CALL AY_WRTPSG ; WRITE AND @@ -202,7 +217,7 @@ AY_FND: LD IY, AY_IDAT ; SETUP FUNCTION TABLE LD DE,(AY_R3CHBP*256)+$00 CALL AY_WRTPSG ; R03 = $00 = XXXX0000 ; -#IF (SYSTIM != TM_NONE) +#IF ((SYSTIM != TM_NONE) & (AYMODE != AYMODE_DUO)) LD A, TICKFREQ / 3 ; SCHEDULE IN 1/3 SECOND TO TURN OFF SOUND LD (AY_TIMTIK), A ; @@ -224,7 +239,7 @@ AY_FND: LD IY, AY_IDAT ; SETUP FUNCTION TABLE XOR A ; SUCCESSFULL INIT RET ; -#IF (SYSTIM != TM_NONE) +#IF ((SYSTIM != TM_NONE) & (AYMODE != AYMODE_DUO)) AY_TIMER: LD A, (AY_TIMTIK) DEC A @@ -638,46 +653,46 @@ AY3NOTETBL: .DW AY_RATIO / 2999 ; .DW AY_RATIO / 3042 ; .DW AY_RATIO / 3086 ; B0 - .DW AY_RATIO / 3131 ; - .DW AY_RATIO / 3177 ; - .DW AY_RATIO / 3223 ; + .DW AY_RATIO / 3131 ; + .DW AY_RATIO / 3177 ; + .DW AY_RATIO / 3223 ; .DW AY_RATIO / 3270 ; C1 - .DW AY_RATIO / 3318 ; - .DW AY_RATIO / 3366 ; - .DW AY_RATIO / 3415 ; + .DW AY_RATIO / 3318 ; + .DW AY_RATIO / 3366 ; + .DW AY_RATIO / 3415 ; .DW AY_RATIO / 3464 ; C1#/D1b - .DW AY_RATIO / 3515 ; - .DW AY_RATIO / 3566 ; - .DW AY_RATIO / 3618 ; + .DW AY_RATIO / 3515 ; + .DW AY_RATIO / 3566 ; + .DW AY_RATIO / 3618 ; .DW AY_RATIO / 3670 ; D1 - .DW AY_RATIO / 3724 ; - .DW AY_RATIO / 3778 ; - .DW AY_RATIO / 3833 ; + .DW AY_RATIO / 3724 ; + .DW AY_RATIO / 3778 ; + .DW AY_RATIO / 3833 ; .DW AY_RATIO / 3889 ; D1#/E1b - .DW AY_RATIO / 3945 ; - .DW AY_RATIO / 4003 ; - .DW AY_RATIO / 4061 ; + .DW AY_RATIO / 3945 ; + .DW AY_RATIO / 4003 ; + .DW AY_RATIO / 4061 ; .DW AY_RATIO / 4120 ; E1 - .DW AY_RATIO / 4180 ; - .DW AY_RATIO / 4241 ; - .DW AY_RATIO / 4302 ; + .DW AY_RATIO / 4180 ; + .DW AY_RATIO / 4241 ; + .DW AY_RATIO / 4302 ; .DW AY_RATIO / 4365 ; F1 - .DW AY_RATIO / 4428 ; - .DW AY_RATIO / 4493 ; - .DW AY_RATIO / 4558 ; + .DW AY_RATIO / 4428 ; + .DW AY_RATIO / 4493 ; + .DW AY_RATIO / 4558 ; .DW AY_RATIO / 4624 ; F1#/G1b - .DW AY_RATIO / 4692 ; - .DW AY_RATIO / 4760 ; - .DW AY_RATIO / 4829 ; + .DW AY_RATIO / 4692 ; + .DW AY_RATIO / 4760 ; + .DW AY_RATIO / 4829 ; .DW AY_RATIO / 4899 ; G1 - .DW AY_RATIO / 4971 ; - .DW AY_RATIO / 5043 ; - .DW AY_RATIO / 5116 ; + .DW AY_RATIO / 4971 ; + .DW AY_RATIO / 5043 ; + .DW AY_RATIO / 5116 ; .DW AY_RATIO / 5191 ; G1#/A1b - .DW AY_RATIO / 5266 ; - .DW AY_RATIO / 5343 ; - .DW AY_RATIO / 5421 ; + .DW AY_RATIO / 5266 ; + .DW AY_RATIO / 5343 ; + .DW AY_RATIO / 5421 ; .DW AY_RATIO / 5499 ; A1 - .DW AY_RATIO / 5579 ; - .DW AY_RATIO / 5661 ; - .DW AY_RATIO / 5743 ; + .DW AY_RATIO / 5579 ; + .DW AY_RATIO / 5661 ; + .DW AY_RATIO / 5743 ; diff --git a/Source/HBIOS/cfg_duo.asm b/Source/HBIOS/cfg_duo.asm index d1364553..cbb1f932 100644 --- a/Source/HBIOS/cfg_duo.asm +++ b/Source/HBIOS/cfg_duo.asm @@ -163,8 +163,8 @@ CVDUENABLE .EQU FALSE ; CVDU: ENABLE CVDU VIDEO/KBD DRIVER (CVDU.ASM) CVDUMODE .EQU CVDUMODE_MBC ; CVDU: CVDU MODE: CVDUMODE_[NONE|ECB|MBC] CVDUMON .EQU CVDUMON_CGA ; CVDU: CVDU MONITOR SETUP: CVDUMON_[NONE|CGA|EGA] GDCENABLE .EQU FALSE ; GDC: ENABLE 7220 GDC VIDEO/KBD DRIVER (GDC.ASM) -TMSENABLE .EQU FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM) -TMSMODE .EQU TMSMODE_MBC ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO] +TMSENABLE .EQU TRUE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM) +TMSMODE .EQU TMSMODE_DUO ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO|DUO] TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1) VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM) VGASIZ .EQU V80X25 ; VGA: DISPLAY FORMAT [V80X25|V80X30|V80X43] @@ -305,9 +305,9 @@ AUDIOTRACE .EQU FALSE ; ENABLE TRACING TO CONSOLE OF SOUND DRIVER SN7CLK .EQU 3579545 ; SN: PSG CLOCK FREQ, ASSUME MSX STD SNMODE .EQU SNMODE_NONE ; SN: DRIVER MODE: SNMODE_[NONE|RC|VGM] ; -AY38910ENABLE .EQU FALSE ; AY: ENABLE AY-3-8910 / YM2149 SOUND DRIVER +AY38910ENABLE .EQU TRUE ; AY: ENABLE AY-3-8910 / YM2149 SOUND DRIVER AY_CLK .EQU 1789772 ; AY: PSG CLOCK FREQ, ASSUME MSX STD -AYMODE .EQU AYMODE_MBC ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC|MBC] +AYMODE .EQU AYMODE_DUO ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC|MBC|DUO] ; SPKENABLE .EQU TRUE ; SPK: ENABLE RTC LATCH IOBIT SOUND DRIVER (SPK.ASM) ; diff --git a/Source/HBIOS/cfg_dyno.asm b/Source/HBIOS/cfg_dyno.asm index 816e56b6..6766dda5 100644 --- a/Source/HBIOS/cfg_dyno.asm +++ b/Source/HBIOS/cfg_dyno.asm @@ -182,7 +182,7 @@ VDUENABLE .EQU FALSE ; VDU: ENABLE VDU VIDEO/KBD DRIVER (VDU.ASM) CVDUENABLE .EQU FALSE ; CVDU: ENABLE CVDU VIDEO/KBD DRIVER (CVDU.ASM) GDCENABLE .EQU FALSE ; GDC: ENABLE 7220 GDC VIDEO/KBD DRIVER (GDC.ASM) TMSENABLE .EQU FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM) -TMSMODE .EQU TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO] +TMSMODE .EQU TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO|DUO] TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1) VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM) VRCENABLE .EQU FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM) @@ -286,7 +286,7 @@ SNMODE .EQU SNMODE_NONE ; SN: DRIVER MODE: SNMODE_[NONE|RC|VGM] ; AY38910ENABLE .EQU FALSE ; AY: ENABLE AY-3-8910 / YM2149 SOUND DRIVER AY_CLK .EQU 1789772 ; AY: PSG CLOCK FREQ, ASSUME MSX STD -AYMODE .EQU AYMODE_NONE ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC|MBC] +AYMODE .EQU AYMODE_NONE ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC|MBC|DUO] ; SPKENABLE .EQU FALSE ; SPK: ENABLE RTC LATCH IOBIT SOUND DRIVER (SPK.ASM) ; diff --git a/Source/HBIOS/cfg_epitx.asm b/Source/HBIOS/cfg_epitx.asm index 446b096d..42dbf608 100644 --- a/Source/HBIOS/cfg_epitx.asm +++ b/Source/HBIOS/cfg_epitx.asm @@ -184,7 +184,7 @@ VDUENABLE .EQU FALSE ; VDU: ENABLE VDU VIDEO/KBD DRIVER (VDU.ASM) CVDUENABLE .EQU FALSE ; CVDU: ENABLE CVDU VIDEO/KBD DRIVER (CVDU.ASM) GDCENABLE .EQU FALSE ; GDC: ENABLE 7220 GDC VIDEO/KBD DRIVER (GDC.ASM) TMSENABLE .EQU FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM) -TMSMODE .EQU TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO] +TMSMODE .EQU TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO|DUO] TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1) VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM) VRCENABLE .EQU FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM) @@ -318,7 +318,7 @@ SNMODE .EQU SNMODE_RC ; SN: DRIVER MODE: SNMODE_[NONE|RC|VGM] ; AY38910ENABLE .EQU FALSE ; AY: ENABLE AY-3-8910 / YM2149 SOUND DRIVER AY_CLK .EQU 1789772 ; AY: PSG CLOCK FREQ, ASSUME MSX STD -AYMODE .EQU AYMODE_RCZ180 ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC|MBC] +AYMODE .EQU AYMODE_RCZ180 ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC|MBC|DUO] ; SPKENABLE .EQU FALSE ; SPK: ENABLE RTC LATCH IOBIT SOUND DRIVER (SPK.ASM) ; diff --git a/Source/HBIOS/cfg_heath.asm b/Source/HBIOS/cfg_heath.asm index d3014c57..f544d7a7 100644 --- a/Source/HBIOS/cfg_heath.asm +++ b/Source/HBIOS/cfg_heath.asm @@ -187,7 +187,7 @@ VDUENABLE .EQU FALSE ; VDU: ENABLE VDU VIDEO/KBD DRIVER (VDU.ASM) CVDUENABLE .EQU FALSE ; CVDU: ENABLE CVDU VIDEO/KBD DRIVER (CVDU.ASM) GDCENABLE .EQU FALSE ; GDC: ENABLE 7220 GDC VIDEO/KBD DRIVER (GDC.ASM) TMSENABLE .EQU FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM) -TMSMODE .EQU TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO] +TMSMODE .EQU TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO|DUO] TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1) VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM) VRCENABLE .EQU FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM) @@ -311,7 +311,7 @@ SNMODE .EQU SNMODE_RC ; SN: DRIVER MODE: SNMODE_[NONE|RC|VGM] ; AY38910ENABLE .EQU FALSE ; AY: ENABLE AY-3-8910 / YM2149 SOUND DRIVER AY_CLK .EQU 1789772 ; AY: PSG CLOCK FREQ, ASSUME MSX STD -AYMODE .EQU AYMODE_RCZ80 ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC|MBC] +AYMODE .EQU AYMODE_RCZ80 ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC|MBC|DUO] ; SPKENABLE .EQU FALSE ; SPK: ENABLE RTC LATCH IOBIT SOUND DRIVER (SPK.ASM) ; diff --git a/Source/HBIOS/cfg_master.asm b/Source/HBIOS/cfg_master.asm index 004339a2..239b43cb 100644 --- a/Source/HBIOS/cfg_master.asm +++ b/Source/HBIOS/cfg_master.asm @@ -232,7 +232,7 @@ GDCENABLE .EQU FALSE ; GDC: ENABLE 7220 GDC VIDEO/KBD DRIVER (GDC.ASM) GDCMODE .EQU GDCMODE_RPH ; GDC: GDC MODE: GDCMODE_[NONE|ECB|RPH] GDCMON .EQU GDCMON_EGA ; GDC: GDC MONITOR SETUP: GDCMON_[NONE|CGA|EGA] TMSENABLE .EQU FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM) -TMSMODE .EQU TMSMODE_NONE ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO] +TMSMODE .EQU TMSMODE_NONE ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO|DUO] TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1) VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM) VGASIZ .EQU V80X25 ; VGA: DISPLAY FORMAT [V80X25|V80X30|V80X43] @@ -378,7 +378,7 @@ SNMODE .EQU SNMODE_NONE ; SN: DRIVER MODE: SNMODE_[NONE|RC|VGM] ; AY38910ENABLE .EQU FALSE ; AY: ENABLE AY-3-8910 / YM2149 SOUND DRIVER AY_CLK .EQU 1789772 ; AY: PSG CLOCK FREQ, ASSUME MSX STD -AYMODE .EQU AYMODE_NONE ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC|MBC] +AYMODE .EQU AYMODE_NONE ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC|MBC|DUO] ; SPKENABLE .EQU FALSE ; SPK: ENABLE RTC LATCH IOBIT SOUND DRIVER (SPK.ASM) ; diff --git a/Source/HBIOS/cfg_mbc.asm b/Source/HBIOS/cfg_mbc.asm index 5fd069ef..30b90ad5 100644 --- a/Source/HBIOS/cfg_mbc.asm +++ b/Source/HBIOS/cfg_mbc.asm @@ -161,7 +161,7 @@ CVDUMODE .EQU CVDUMODE_MBC ; CVDU: CVDU MODE: CVDUMODE_[NONE|ECB|MBC] CVDUMON .EQU CVDUMON_CGA ; CVDU: CVDU MONITOR SETUP: CVDUMON_[NONE|CGA|EGA] GDCENABLE .EQU FALSE ; GDC: ENABLE 7220 GDC VIDEO/KBD DRIVER (GDC.ASM) TMSENABLE .EQU TRUE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM) -TMSMODE .EQU TMSMODE_MBC ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO] +TMSMODE .EQU TMSMODE_MBC ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO|DUO] TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1) VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM) VGASIZ .EQU V80X25 ; VGA: DISPLAY FORMAT [V80X25|V80X30|V80X43] @@ -294,7 +294,7 @@ SNMODE .EQU SNMODE_NONE ; SN: DRIVER MODE: SNMODE_[NONE|RC|VGM] ; AY38910ENABLE .EQU FALSE ; AY: ENABLE AY-3-8910 / YM2149 SOUND DRIVER AY_CLK .EQU 1789772 ; AY: PSG CLOCK FREQ, ASSUME MSX STD -AYMODE .EQU AYMODE_MBC ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC|MBC] +AYMODE .EQU AYMODE_MBC ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC|MBC|DUO] ; SPKENABLE .EQU TRUE ; SPK: ENABLE RTC LATCH IOBIT SOUND DRIVER (SPK.ASM) ; diff --git a/Source/HBIOS/cfg_mk4.asm b/Source/HBIOS/cfg_mk4.asm index 536ea233..ffc69586 100644 --- a/Source/HBIOS/cfg_mk4.asm +++ b/Source/HBIOS/cfg_mk4.asm @@ -171,7 +171,7 @@ CVDUMODE .EQU CVDUMODE_ECB ; CVDU: CVDU MODE: CVDUMODE_[NONE|ECB|MBC] CVDUMON .EQU CVDUMON_EGA ; CVDU: CVDU MONITOR SETUP: CVDUMON_[NONE|CGA|EGA] GDCENABLE .EQU FALSE ; GDC: ENABLE 7220 GDC VIDEO/KBD DRIVER (GDC.ASM) TMSENABLE .EQU FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM) -TMSMODE .EQU TMSMODE_SCG ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO] +TMSMODE .EQU TMSMODE_SCG ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO|DUO] TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1) VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM) VGASIZ .EQU V80X25 ; VGA: DISPLAY FORMAT [V80X25|V80X30|V80X43] @@ -290,7 +290,7 @@ SNMODE .EQU SNMODE_VGM ; SN: DRIVER MODE: SNMODE_[NONE|RC|VGM] ; AY38910ENABLE .EQU FALSE ; AY: ENABLE AY-3-8910 / YM2149 SOUND DRIVER AY_CLK .EQU 1789772 ; AY: PSG CLOCK FREQ, ASSUME MSX STD -AYMODE .EQU AYMODE_SCG ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC|MBC] +AYMODE .EQU AYMODE_SCG ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC|MBC|DUO] ; SPKENABLE .EQU FALSE ; SPK: ENABLE RTC LATCH IOBIT SOUND DRIVER (SPK.ASM) ; @@ -298,5 +298,5 @@ DMAENABLE .EQU FALSE ; DMA: ENABLE DMA DRIVER (DMA.ASM) DMABASE .EQU $E0 ; DMA: DMA BASE ADDRESS DMAMODE .EQU DMAMODE_ECB ; DMA: DMA MODE (NONE|ECB|Z180|Z280|RC|MBC|DUO) ; -YM2612ENABLE .EQU FALSE ; YM2612: ENABLE YM2612 DRIVER +YM2612ENABLE .EQU FALSE ; YM2612: ENABLE YM2612 DRIVER VGMBASE .EQU $C0 ; YM2612: BASE ADDRESS FOR VGM BOARD (YM2612/SN76489s/CTC) diff --git a/Source/HBIOS/cfg_mon.asm b/Source/HBIOS/cfg_mon.asm index 92bff9fe..7a819650 100644 --- a/Source/HBIOS/cfg_mon.asm +++ b/Source/HBIOS/cfg_mon.asm @@ -182,7 +182,7 @@ VDUENABLE .EQU FALSE ; VDU: ENABLE VDU VIDEO/KBD DRIVER (VDU.ASM) CVDUENABLE .EQU FALSE ; CVDU: ENABLE CVDU VIDEO/KBD DRIVER (CVDU.ASM) GDCENABLE .EQU FALSE ; GDC: ENABLE 7220 GDC VIDEO/KBD DRIVER (GDC.ASM) TMSENABLE .EQU FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM) -TMSMODE .EQU TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO] +TMSMODE .EQU TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO|DUO] TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1) VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM) VRCENABLE .EQU FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM) @@ -316,7 +316,7 @@ SNMODE .EQU SNMODE_RC ; SN: DRIVER MODE: SNMODE_[NONE|RC|VGM] ; AY38910ENABLE .EQU FALSE ; AY: ENABLE AY-3-8910 / YM2149 SOUND DRIVER AY_CLK .EQU 1789772 ; AY: PSG CLOCK FREQ, ASSUME MSX STD -AYMODE .EQU AYMODE_RCZ80 ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC|MBC] +AYMODE .EQU AYMODE_RCZ80 ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC|MBC|DUO] ; SPKENABLE .EQU FALSE ; SPK: ENABLE RTC LATCH IOBIT SOUND DRIVER (SPK.ASM) ; diff --git a/Source/HBIOS/cfg_n8.asm b/Source/HBIOS/cfg_n8.asm index 4cac526e..105b89fa 100644 --- a/Source/HBIOS/cfg_n8.asm +++ b/Source/HBIOS/cfg_n8.asm @@ -173,7 +173,7 @@ CVDUMODE .EQU CVDUMODE_ECB ; CVDU: CVDU MODE: CVDUMODE_[NONE|ECB|MBC] CVDUMON .EQU CVDUMON_EGA ; CVDU: CVDU MONITOR SETUP: CVDUMON_[NONE|CGA|EGA] GDCENABLE .EQU FALSE ; GDC: ENABLE 7220 GDC VIDEO/KBD DRIVER (GDC.ASM) TMSENABLE .EQU TRUE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM) -TMSMODE .EQU TMSMODE_N8 ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO] +TMSMODE .EQU TMSMODE_N8 ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO|DUO] TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1) VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM) VGASIZ .EQU V80X25 ; VGA: DISPLAY FORMAT [V80X25|V80X30|V80X43] @@ -283,7 +283,7 @@ SNMODE .EQU SNMODE_VGM ; SN: DRIVER MODE: SNMODE_[NONE|RC|VGM] ; AY38910ENABLE .EQU FALSE ; AY: ENABLE AY-3-8910 / YM2149 SOUND DRIVER AY_CLK .EQU 1789772 ; AY: PSG CLOCK FREQ, ASSUME MSX STD -AYMODE .EQU AYMODE_N8 ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC|MBC] +AYMODE .EQU AYMODE_N8 ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC|MBC|DUO] ; SPKENABLE .EQU FALSE ; SPK: ENABLE RTC LATCH IOBIT SOUND DRIVER (SPK.ASM) ; @@ -291,5 +291,5 @@ DMAENABLE .EQU FALSE ; DMA: ENABLE DMA DRIVER (DMA.ASM) DMABASE .EQU $E0 ; DMA: DMA BASE ADDRESS DMAMODE .EQU DMAMODE_Z180 ; DMA: DMA MODE (NONE|ECB|Z180|Z280|RC|MBC|DUO) ; -YM2612ENABLE .EQU FALSE ; YM2612: ENABLE YM2612 DRIVER +YM2612ENABLE .EQU FALSE ; YM2612: ENABLE YM2612 DRIVER VGMBASE .EQU $C0 ; YM2612: BASE ADDRESS FOR VGM BOARD (YM2612/SN76489s/CTC) diff --git a/Source/HBIOS/cfg_rcz180.asm b/Source/HBIOS/cfg_rcz180.asm index 5263d4a9..1df8818b 100644 --- a/Source/HBIOS/cfg_rcz180.asm +++ b/Source/HBIOS/cfg_rcz180.asm @@ -188,7 +188,7 @@ VDUENABLE .EQU FALSE ; VDU: ENABLE VDU VIDEO/KBD DRIVER (VDU.ASM) CVDUENABLE .EQU FALSE ; CVDU: ENABLE CVDU VIDEO/KBD DRIVER (CVDU.ASM) GDCENABLE .EQU FALSE ; GDC: ENABLE 7220 GDC VIDEO/KBD DRIVER (GDC.ASM) TMSENABLE .EQU FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM) -TMSMODE .EQU TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO] +TMSMODE .EQU TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO|DUO] TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1) VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM) VRCENABLE .EQU FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM) @@ -322,7 +322,7 @@ SNMODE .EQU SNMODE_RC ; SN: DRIVER MODE: SNMODE_[NONE|RC|VGM] ; AY38910ENABLE .EQU FALSE ; AY: ENABLE AY-3-8910 / YM2149 SOUND DRIVER AY_CLK .EQU 1789772 ; AY: PSG CLOCK FREQ, ASSUME MSX STD -AYMODE .EQU AYMODE_RCZ180 ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC|MBC] +AYMODE .EQU AYMODE_RCZ180 ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC|MBC|DUO] ; SPKENABLE .EQU FALSE ; SPK: ENABLE RTC LATCH IOBIT SOUND DRIVER (SPK.ASM) ; diff --git a/Source/HBIOS/cfg_rcz280.asm b/Source/HBIOS/cfg_rcz280.asm index 39ea9909..0707d4b6 100644 --- a/Source/HBIOS/cfg_rcz280.asm +++ b/Source/HBIOS/cfg_rcz280.asm @@ -192,7 +192,7 @@ VDUENABLE .EQU FALSE ; VDU: ENABLE VDU VIDEO/KBD DRIVER (VDU.ASM) CVDUENABLE .EQU FALSE ; CVDU: ENABLE CVDU VIDEO/KBD DRIVER (CVDU.ASM) GDCENABLE .EQU FALSE ; GDC: ENABLE 7220 GDC VIDEO/KBD DRIVER (GDC.ASM) TMSENABLE .EQU FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM) -TMSMODE .EQU TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO] +TMSMODE .EQU TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO|DUO] TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1) VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM) VRCENABLE .EQU FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM) @@ -326,7 +326,7 @@ SNMODE .EQU SNMODE_RC ; SN: DRIVER MODE: SNMODE_[NONE|RC|VGM] ; AY38910ENABLE .EQU FALSE ; AY: ENABLE AY-3-8910 / YM2149 SOUND DRIVER AY_CLK .EQU 1789772 ; AY: PSG CLOCK FREQ, ASSUME MSX STD -AYMODE .EQU AYMODE_RCZ80 ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC|MBC] +AYMODE .EQU AYMODE_RCZ80 ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC|MBC|DUO] ; SPKENABLE .EQU FALSE ; SPK: ENABLE RTC LATCH IOBIT SOUND DRIVER (SPK.ASM) ; diff --git a/Source/HBIOS/cfg_rcz80.asm b/Source/HBIOS/cfg_rcz80.asm index 23fb5c29..1317d14b 100644 --- a/Source/HBIOS/cfg_rcz80.asm +++ b/Source/HBIOS/cfg_rcz80.asm @@ -187,7 +187,7 @@ VDUENABLE .EQU FALSE ; VDU: ENABLE VDU VIDEO/KBD DRIVER (VDU.ASM) CVDUENABLE .EQU FALSE ; CVDU: ENABLE CVDU VIDEO/KBD DRIVER (CVDU.ASM) GDCENABLE .EQU FALSE ; GDC: ENABLE 7220 GDC VIDEO/KBD DRIVER (GDC.ASM) TMSENABLE .EQU FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM) -TMSMODE .EQU TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO] +TMSMODE .EQU TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO|DUO] TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1) VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM) VRCENABLE .EQU FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM) @@ -321,7 +321,7 @@ SNMODE .EQU SNMODE_RC ; SN: DRIVER MODE: SNMODE_[NONE|RC|VGM] ; AY38910ENABLE .EQU FALSE ; AY: ENABLE AY-3-8910 / YM2149 SOUND DRIVER AY_CLK .EQU 1789772 ; AY: PSG CLOCK FREQ, ASSUME MSX STD -AYMODE .EQU AYMODE_RCZ80 ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC|MBC] +AYMODE .EQU AYMODE_RCZ80 ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC|MBC|DUO] ; SPKENABLE .EQU FALSE ; SPK: ENABLE RTC LATCH IOBIT SOUND DRIVER (SPK.ASM) ; diff --git a/Source/HBIOS/cfg_rph.asm b/Source/HBIOS/cfg_rph.asm index 32c14e8f..980b42b0 100644 --- a/Source/HBIOS/cfg_rph.asm +++ b/Source/HBIOS/cfg_rph.asm @@ -162,7 +162,7 @@ GDCENABLE .EQU TRUE ; GDC: ENABLE 7220 GDC VIDEO/KBD DRIVER (GDC.ASM) GDCMODE .EQU GDCMODE_RPH ; GDC: GDC MODE: GDCMODE_[NONE|ECB|RPH] GDCMON .EQU GDCMON_EGA ; GDC: GDC MONITOR SETUP: GDCMON_[NONE|CGA|EGA] TMSENABLE .EQU FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM) -TMSMODE .EQU TMSMODE_N8 ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO] +TMSMODE .EQU TMSMODE_N8 ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO|DUO] TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1) VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM) VGASIZ .EQU V80X25 ; VGA: DISPLAY FORMAT [V80X25|V80X30|V80X43] @@ -272,7 +272,7 @@ SNMODE .EQU SNMODE_NONE ; SN: DRIVER MODE: SNMODE_[NONE|RC|VGM] ; AY38910ENABLE .EQU FALSE ; AY: ENABLE AY-3-8910 / YM2149 SOUND DRIVER AY_CLK .EQU 1789772 ; AY: PSG CLOCK FREQ, ASSUME MSX STD -AYMODE .EQU AYMODE_N8 ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC|MBC] +AYMODE .EQU AYMODE_N8 ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC|MBC|DUO] ; SPKENABLE .EQU FALSE ; SPK: ENABLE RTC LATCH IOBIT SOUND DRIVER (SPK.ASM) ; diff --git a/Source/HBIOS/cfg_s100.asm b/Source/HBIOS/cfg_s100.asm index a22cdec1..f05ee9d5 100644 --- a/Source/HBIOS/cfg_s100.asm +++ b/Source/HBIOS/cfg_s100.asm @@ -182,7 +182,7 @@ VDUENABLE .EQU FALSE ; VDU: ENABLE VDU VIDEO/KBD DRIVER (VDU.ASM) CVDUENABLE .EQU FALSE ; CVDU: ENABLE CVDU VIDEO/KBD DRIVER (CVDU.ASM) GDCENABLE .EQU FALSE ; GDC: ENABLE 7220 GDC VIDEO/KBD DRIVER (GDC.ASM) TMSENABLE .EQU FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM) -TMSMODE .EQU TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO] +TMSMODE .EQU TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO|DUO] TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1) VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM) VRCENABLE .EQU FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM) @@ -306,7 +306,7 @@ SNMODE .EQU SNMODE_RC ; SN: DRIVER MODE: SNMODE_[NONE|RC|VGM] ; AY38910ENABLE .EQU FALSE ; AY: ENABLE AY-3-8910 / YM2149 SOUND DRIVER AY_CLK .EQU 1789772 ; AY: PSG CLOCK FREQ, ASSUME MSX STD -AYMODE .EQU AYMODE_RCZ180 ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC|MBC] +AYMODE .EQU AYMODE_RCZ180 ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC|MBC|DUO] ; SPKENABLE .EQU FALSE ; SPK: ENABLE RTC LATCH IOBIT SOUND DRIVER (SPK.ASM) ; diff --git a/Source/HBIOS/cfg_sbc.asm b/Source/HBIOS/cfg_sbc.asm index fd2b8deb..51afb8d2 100644 --- a/Source/HBIOS/cfg_sbc.asm +++ b/Source/HBIOS/cfg_sbc.asm @@ -161,7 +161,7 @@ CVDUMODE .EQU CVDUMODE_ECB ; CVDU: CVDU MODE: CVDUMODE_[NONE|ECB|MBC] CVDUMON .EQU CVDUMON_EGA ; CVDU: CVDU MONITOR SETUP: CVDUMON_[NONE|CGA|EGA] GDCENABLE .EQU FALSE ; GDC: ENABLE 7220 GDC VIDEO/KBD DRIVER (GDC.ASM) TMSENABLE .EQU FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM) -TMSMODE .EQU TMSMODE_SCG ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO] +TMSMODE .EQU TMSMODE_SCG ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO|DUO] TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1) VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM) VGASIZ .EQU V80X25 ; VGA: DISPLAY FORMAT [V80X25|V80X30|V80X43] @@ -272,7 +272,7 @@ SNMODE .EQU SNMODE_VGM ; SN: DRIVER MODE: SNMODE_[NONE|RC|VGM] ; AY38910ENABLE .EQU FALSE ; AY: ENABLE AY-3-8910 / YM2149 SOUND DRIVER AY_CLK .EQU 1789772 ; AY: PSG CLOCK FREQ, ASSUME MSX STD -AYMODE .EQU AYMODE_SCG ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC|MBC] +AYMODE .EQU AYMODE_SCG ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC|MBC|DUO] ; SPKENABLE .EQU FALSE ; SPK: ENABLE RTC LATCH IOBIT SOUND DRIVER (SPK.ASM) ; diff --git a/Source/HBIOS/cfg_scz180.asm b/Source/HBIOS/cfg_scz180.asm index 6ac906a9..79324e5c 100644 --- a/Source/HBIOS/cfg_scz180.asm +++ b/Source/HBIOS/cfg_scz180.asm @@ -182,7 +182,7 @@ VDUENABLE .EQU FALSE ; VDU: ENABLE VDU VIDEO/KBD DRIVER (VDU.ASM) CVDUENABLE .EQU FALSE ; CVDU: ENABLE CVDU VIDEO/KBD DRIVER (CVDU.ASM) GDCENABLE .EQU FALSE ; GDC: ENABLE 7220 GDC VIDEO/KBD DRIVER (GDC.ASM) TMSENABLE .EQU FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM) -TMSMODE .EQU TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO] +TMSMODE .EQU TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO|DUO] TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1) VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM) VRCENABLE .EQU FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM) @@ -316,7 +316,7 @@ SNMODE .EQU SNMODE_RC ; SN: DRIVER MODE: SNMODE_[NONE|RC|VGM] ; AY38910ENABLE .EQU FALSE ; AY: ENABLE AY-3-8910 / YM2149 SOUND DRIVER AY_CLK .EQU 1789772 ; AY: PSG CLOCK FREQ, ASSUME MSX STD -AYMODE .EQU AYMODE_RCZ180 ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC|MBC] +AYMODE .EQU AYMODE_RCZ180 ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC|MBC|DUO] ; SPKENABLE .EQU FALSE ; SPK: ENABLE RTC LATCH IOBIT SOUND DRIVER (SPK.ASM) ; diff --git a/Source/HBIOS/cfg_z80retro.asm b/Source/HBIOS/cfg_z80retro.asm index 042a2127..b98d5cd3 100644 --- a/Source/HBIOS/cfg_z80retro.asm +++ b/Source/HBIOS/cfg_z80retro.asm @@ -164,7 +164,7 @@ VDUENABLE .EQU FALSE ; VDU: ENABLE VDU VIDEO/KBD DRIVER (VDU.ASM) CVDUENABLE .EQU FALSE ; CVDU: ENABLE CVDU VIDEO/KBD DRIVER (CVDU.ASM) GDCENABLE .EQU FALSE ; GDC: ENABLE 7220 GDC VIDEO/KBD DRIVER (GDC.ASM) TMSENABLE .EQU FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM) -TMSMODE .EQU TMSMODE_NONE ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO] +TMSMODE .EQU TMSMODE_NONE ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO|DUO] TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1) VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM) VRCENABLE .EQU FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM) diff --git a/Source/HBIOS/cfg_zeta.asm b/Source/HBIOS/cfg_zeta.asm index 16d3f185..19354f5a 100644 --- a/Source/HBIOS/cfg_zeta.asm +++ b/Source/HBIOS/cfg_zeta.asm @@ -134,7 +134,7 @@ VDUENABLE .EQU FALSE ; VDU: ENABLE VDU VIDEO/KBD DRIVER (VDU.ASM) CVDUENABLE .EQU FALSE ; CVDU: ENABLE CVDU VIDEO/KBD DRIVER (CVDU.ASM) GDCENABLE .EQU FALSE ; GDC: ENABLE 7220 GDC VIDEO/KBD DRIVER (GDC.ASM) TMSENABLE .EQU FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM) -TMSMODE .EQU TMSMODE_NONE ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO] +TMSMODE .EQU TMSMODE_NONE ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO|DUO] TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1) VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM) VRCENABLE .EQU FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM) @@ -144,7 +144,7 @@ MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM) MDROM .EQU TRUE ; MD: ENABLE ROM DISK MDRAM .EQU TRUE ; MD: ENABLE RAM DISK MDTRACE .EQU 1 ; MD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL) -MDFFENABLE .EQU FALSE ; MD: ENABLE FLASH FILE SYSTEM +MDFFENABLE .EQU FALSE ; MD: ENABLE FLASH FILE SYSTEM ; FDENABLE .EQU TRUE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM) FDMODE .EQU FDMODE_ZETA ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPFDC|MBC] diff --git a/Source/HBIOS/pcf.asm b/Source/HBIOS/pcf.asm index ab17f85c..92023bc9 100644 --- a/Source/HBIOS/pcf.asm +++ b/Source/HBIOS/pcf.asm @@ -44,7 +44,7 @@ PCF_IDLE_ .EQU (PCF_PIN | PCF_ES0 | PCF_ACK) ; STATUS REGISTER BITS ; ;PCF_PIN .EQU 10000000B -PCF_INI .EQU 01000000B ; 1 if not initialized +PCF_INI .EQU 01000000B ; 1 if not initialized PCF_STS .EQU 00100000B PCF_BER .EQU 00010000B PCF_AD0 .EQU 00001000B @@ -53,14 +53,14 @@ PCF_AAS .EQU 00000100B PCF_LAB .EQU 00000010B PCF_BB .EQU 00000001B ; -; THE PCF8584 TARGETS A TOP I2C CLOCK SPEED OF 90KHZ AND SUPPORTS DIVIDERS FOR +; THE PCF8584 TARGETS A TOP I2C CLOCK SPEED OF 90KHZ AND SUPPORTS DIVIDERS FOR ; 3, 4.43, 6, 8 AND 12MHZ TO ACHEIVE THIS. ; ; +--------------------------------------------------------------------------------------------+ ; | div/clk | 2MHz | 4MHz | 6MHz | 7.38Mhz | 10MHz | 12MHz | 16MHz | 18.432Mhz | 20MHz | ; +----------------------------------------------------------------------------------+---------+ ; | 3MHz | 60Khz | 120Khz | | | | | | | | -; | 4.43MHz | | 81Khz | | | | | | | | +; | 4.43MHz | | 81Khz | | | | | | | | ; | 6MHz | | | 90Khz | 110Khz | | | | | | ; | 8MHz | | | | 83Khz | 112Khz | | | | | ; | 12MHz | | | | | | 90Khz | 120Khz | 138Khz | 150Khz | @@ -116,21 +116,21 @@ PCF_INIT: ; I2C_OUTB = LD A,* | OUT (PCF_RS0),A ; SET_PCF -= LD A,* | OUT (PCF_RS1),A ; GET_PCF = IN A,(PCF_RS1) -; +; ;----------------------------------------------------------------------------- PCF_START: - LD A,PCF_START_ + LD A,PCF_START_ OUT (PCF_RS1),A RET ; ;----------------------------------------------------------------------------- PCF_REPSTART: - LD A,PCF_REPSTART_ + LD A,PCF_REPSTART_ OUT (PCF_RS1),A RET ; ;----------------------------------------------------------------------------- -PCF_STOP: +PCF_STOP: LD A,PCF_STOP_ OUT (PCF_RS1),A RET @@ -138,7 +138,7 @@ PCF_STOP: ;----------------------------------------------------------------------------- ; PCF_INITDEV: - LD A,PCF_PIN ; S1=80H: S0 SELECTED, SERIAL + LD A,PCF_PIN ; S1=80H: S0 SELECTED, SERIAL OUT (PCF_RS1),A ; INTERFACE OFF NOP IN A,(PCF_RS1) ; CHECK TO SEE S1 NOW USED AS R/W @@ -147,7 +147,7 @@ PCF_INITDEV: AND 07FH ; CTRL. PCF8584 DOES THAT WHEN ESO JR NZ,PCF_FAIL ; IS ZERO ; - LD A,PCF_OWN ; LOAD OWN ADDRESS IN S0, + LD A,PCF_OWN ; LOAD OWN ADDRESS IN S0, OUT (PCF_RS0),A ; EFFECTIVE ADDRESS IS (OWN <<1) NOP IN A,(PCF_RS0) ; CHECK IT IS REALLY WRITTEN @@ -177,9 +177,9 @@ PCF_INITDEV: JP NZ,PCF_CLKERR ; LD A,PCF_IDLE_ - OUT (PCF_RS1),A + OUT (PCF_RS1),A NOP - IN A,(PCF_RS1) + IN A,(PCF_RS1) ;CALL PC_SPACE ;CALL PRTHEXBYTE CP +(PCF_PIN | PCF_BB) @@ -195,21 +195,21 @@ PCF_FAIL: RET ; PCF_FAIL_FLAG: - .DB 0 + .DB 0 ; ;----------------------------------------------------------------------------- PCF_HANDLE_LAB: ; - LD A,PCF_PIN - OUT (PCF_RS1),A - LD A,PCF_ES0 + LD A,PCF_PIN + OUT (PCF_RS1),A + LD A,PCF_ES0 OUT (PCF_RS1),A ; LD HL,PCF_LABDLY PCF_LABLP: LD A,H OR L - DEC HL + DEC HL JR NZ,PCF_LABLP ; IN A,(PCF_RS1) @@ -226,7 +226,7 @@ PCF_WAIT_FOR_PIN: PUSH HL LD HL,PCF_PINTO ; SET TIMEOUT VALUE -PCF_WFP0: +PCF_WFP0: IN A,(PCF_RS1) ; GET BUS LD (PCF_STATUS),A ; STATUS LD B,A @@ -236,7 +236,7 @@ PCF_WFP0: OR L JR Z,PCF_WFP1 ; YES WE HAVE, GO ACTION IT - LD A,B ; + LD A,B ; AND PCF_PIN ; IS TRANSMISSION COMPLETE? JR NZ,PCF_WFP0 ; KEEP ASKING IF NOT OR POP HL ; YES COMPLETE (PIN=0) RETURN WITH ZERO @@ -244,14 +244,14 @@ PCF_WFP0: PCF_WFP1: LD A,B ; DID WE LOSE ARBITRATION? AND PCF_LAB ; IF A=0 THEN NO - CPL - JR NZ,PCF_WFP2 ; NO + CPL + JR NZ,PCF_WFP2 ; NO CALL PCF_HANDLE_LAB ; YES GO HANDLE IT LD (PCF_STATUS),A XOR A ; RETURN NZ, A=01H INC A PCF_WFP2: - POP HL ; RET NZ, A=FF IF TIMEOUT + POP HL ; RET NZ, A=FF IF TIMEOUT RET ; PCF_STATUS .DB 00H @@ -270,12 +270,12 @@ PCF_WFA0: IN A,(PCF_RS1) ; READ PIN LD (PCF_STATUS),A ; STATUS LD B,A -; +; DEC HL ; SEE IF WE HAVE TIMED LD A,H ; OUT WAITING FOR PIN OR L ; EXIT IF JR Z,PCF_WFA1 ; WE HAVE -; +; LD A,B ; OTHERWISE KEEP LOOPING AND PCF_PIN ; UNTIL WE GET PIN JR NZ,PCF_WFA0 ; OR TIMEOUT @@ -291,7 +291,7 @@ PCF_WFA1: PCF_WFA2: POP HL ; EXIT WITH NZ = FF RET -; +; ;-------------------------------------------------------------------------------- ; ; HL POINTS TO DATA @@ -321,7 +321,7 @@ PCF_RB1: ; IS THIS THE SECOND TO LAST BYTE TO GO? - PUSH DE ; SAVE COUNT + PUSH DE ; SAVE COUNT DEC DE ; COUNT (DE) = NUMBER OF BYTES TO READ LESS 1 EX DE,HL ; SAVE POINTER, PUT COUNT IN DE XOR A ; CLEAR CARRY FLAG @@ -333,7 +333,7 @@ PCF_RB1: ; NZ = NO IT ISN'T JR NZ,PCF_RB4 ; -PCF_RB4:LD A,B ; IF FIRST READ DO A DUMMY +PCF_RB4:LD A,B ; IF FIRST READ DO A DUMMY OR C ; READ OTHERWISE READ AND SAVE JR NZ,PCF_RB5 @@ -401,8 +401,8 @@ PCF_WFBB0: LD A,H OR L JR NZ,PCF_WFBB0 ; REPEAT IF NOT TIMED OUT - CPL ; RET NZ IF TIMEOUT - RET + CPL ; RET NZ IF TIMEOUT + RET ; ;----------------------------------------------------------------------------- ; DISPLAY ERROR MESSAGES @@ -416,7 +416,7 @@ PCF_INIERR: PUSH HL LD HL,PCF_NOPCF JR PCF_PRTERR -; +; PCF_SETERR: PUSH HL LD HL,PCF_WRTFAIL @@ -426,17 +426,17 @@ PCF_REGERR: PUSH HL LD HL,PCF_REGFAIL JR PCF_PRTERR -; +; PCF_CLKERR: PUSH HL LD HL,PCF_CLKFAIL JR PCF_PRTERR -; +; PCF_IDLERR: PUSH HL LD HL,PCF_IDLFAIL - JR PCF_PRTERR -; + JR PCF_PRTERR +; PCF_ACKERR: PUSH HL LD HL,PCF_ACKFAIL @@ -470,7 +470,7 @@ PCF_BBERR: PCF_PRTERR: CALL PRTSTR ; CALL NEWLINE - POP HL + POP HL RET ; ;----------------------------------------------------------------------------- @@ -494,7 +494,7 @@ PCF_DBG: POP DE POP AF RET -PCF_DBGF: +PCF_DBGF: .DB 0 ; DEBUG STAGE COUNTER #ENDIF ; diff --git a/Source/HBIOS/std.asm b/Source/HBIOS/std.asm index 81b00c6c..f8c35666 100644 --- a/Source/HBIOS/std.asm +++ b/Source/HBIOS/std.asm @@ -214,6 +214,7 @@ AYMODE_RCZ180 .EQU 4 ; RCBUS SOUND MODULE BY ED BRINDLEY ON Z180 AYMODE_MSX .EQU 5 ; RCBUS SOUND MODULE REV6 BY ED BRINDLEY ON Z80/Z180 AT MSX PORTS AYMODE_LINC .EQU 6 ; LINC Z50 AY SOUND CARD AYMODE_MBC .EQU 7 ; MBC SOUND BOARD +AYMODE_DUO .EQU 8 ; MBC SOUND BOARD ; ; SN SOUND CHIP MODE SELECTIONS ; @@ -231,6 +232,7 @@ TMSMODE_MSX9958 .EQU 4 ; MSX PORTS, V9958 CHIP TMSMODE_MSXKBD .EQU 5 ; MSX PORTS + PS2 KEYBOARD TMSMODE_MBC .EQU 6 ; MBC V9938/58 VIDEO BOARD TMSMODE_COLECO .EQU 7 ; COLECOVISION PORT MAPPING +TMSMODE_DUO .EQU 8 ; COLECOVISION PORT MAPPING ; ; CVDU VIDEO MODE SELECTIONS ; @@ -901,7 +903,7 @@ INT_SIO1 .EQU 14 ; ZILOG SIO 1, CHANNEL A & B ; ; MBC IM2 PINHEADER INTERRUPTS ; -;INT_IM2PH0 .EQU 0 +;INT_IM2PH0 .EQU 0 ;INT_IM2PH1 .EQU 1 ;INT_IM2PH2 .EQU 2 ;INT_IM2PH3 .EQU 3 @@ -947,7 +949,7 @@ INT_CTC0D .EQU 15 ; ZILOG CTC 0, CHANNEL D ;INT_IM2PH7 .EQU 7 ; ; DUO Z80 IM2 INTERRUPTS -; +; INT_UART0 .EQU 7 ; UART 0 INT_UART1 .EQU 6 ; UART 1 ????? INT_CTC0A .EQU 0 ; ZILOG CTC 0, CHANNEL A diff --git a/Source/HBIOS/tms.asm b/Source/HBIOS/tms.asm index bf0e25da..bf00442d 100644 --- a/Source/HBIOS/tms.asm +++ b/Source/HBIOS/tms.asm @@ -5,6 +5,7 @@ ; UPDATED BY: WAYNE WARTHEN -- 4/7/2013 ; UPDATED BY: DEAN NETHERTON -- 5/26/2021 - V9958 SUPPORT ; UPDATED BY: JOSE L. COLLADO -- 11/15/2023 - MEMORY MAP CHANGES +; UPDATED BY: DAN WERNER -- 2/11/2024 - DUODYNE SUPPORT ;====================================================================== ; ; TODO: @@ -111,6 +112,19 @@ TMS_KBDDATA .EQU $E2 ; KBD CTLR DATA PORT TMS_KBDST .EQU $E3 ; KBD CTLR STATUS/CMD PORT .ECHO "MBC" #ENDIF + +#IF (TMSMODE == TMSMODE_DUO) +TMS_DATREG .EQU $A0 ; READ/WRITE DATA +TMS_CMDREG .EQU $A1 ; READ STATUS / WRITE REG SEL +TMS_ACR .EQU $A6 ; AUX CONTROL REGISTER +TMS_PPIA .EQU 0 ; PPI PORT A +TMS_PPIB .EQU 0 ; PPI PORT B +TMS_PPIC .EQU 0 ; PPI PORT C +TMS_PPIX .EQU 0 ; PPI CONTROL PORT +TMS_KBDDATA .EQU $E2 ; KBD CTLR DATA PORT +TMS_KBDST .EQU $E3 ; KBD CTLR STATUS/CMD PORT + .ECHO "MBC" +#ENDIF ; .ECHO ", IO=" .ECHO TMS_DATREG @@ -121,7 +135,7 @@ TMS_KBDST .EQU $E3 ; KBD CTLR STATUS/CMD PORT ; TMS_ROWS .EQU 24 ; -#IF ((TMSMODE == TMSMODE_MSX9958) | (TMSMODE == TMSMODE_MBC)) +#IF ((TMSMODE == TMSMODE_MSX9958) | (TMSMODE == TMSMODE_MBC) | (TMSMODE == TMSMODE_DUO)) TMS_FNTVADDR .EQU $1000 ; VRAM ADDRESS OF FONT DATA TMS_FNTSIZE .EQU 8*256 ; ### JLC Mod for JBL compatibility ### = 8x8 Font 256 Chars TMS_CHRVADDR .EQU $0000 ; VRAM ADDRESS OF CHAR SCREEN DATA (NEW CONSTANT) = REG2 * $400 @@ -149,7 +163,7 @@ TERMENABLE .SET TRUE ; INCLUDE TERMINAL PSEUDODEVICE DRIVER ;#DEFINE TMS_IODELAY NOP \ NOP \ NOP \ NOP \ NOP ; 20 W/S ### JLC Mod for Clock/2 (9 MHz) ### #ELSE ; BELOW WAS TUNED FOR SBC AT 8MHZ - #IF ((TMSMODE == TMSMODE_MSX9958) | (TMSMODE == TMSMODE_MBC)) + #IF ((TMSMODE == TMSMODE_MSX9958) | (TMSMODE == TMSMODE_MBC) | (TMSMODE == TMSMODE_DUO)) #DEFINE TMS_IODELAY NOP \ NOP \ NOP \ NOP \ NOP \ NOP \ NOP ; V9958 NEEDS AT WORST CASE, APPROX 4us (28T) DELAY BETWEEN I/O (WHEN IN TEXT MODE) #ELSE #DEFINE TMS_IODELAY NOP \ NOP ; 8 W/S @@ -173,7 +187,7 @@ TMS_INIT: CALL TMS_Z180IO #ENDIF ; -#IF ((TMSMODE == TMSMODE_SCG) | (TMSMODE == TMSMODE_MBC)) +#IF ((TMSMODE == TMSMODE_SCG) | (TMSMODE == TMSMODE_MBC) | (TMSMODE == TMSMODE_DUO)) LD A,$FF OUT (TMS_ACR),A ; INIT AUX CONTROL REG #ENDIF @@ -181,7 +195,7 @@ TMS_INIT: CALL NEWLINE ; FORMATTING PRTS("TMS: MODE=$") -#IF ((TMSMODE == TMSMODE_MBC)) +#IF ((TMSMODE == TMSMODE_MBC) | (TMSMODE == TMSMODE_DUO)) LD A,$FE OUT (TMS_ACR),A ; INIT AUX CONTROL REG #ENDIF @@ -195,6 +209,9 @@ TMS_INIT: #IF (TMSMODE == TMSMODE_MBC) PRTS("MBC$") #ENDIF +#IF (TMSMODE == TMSMODE_DUO) + PRTS("DUO$") +#ENDIF #IF (TMSMODE == TMSMODE_N8) PRTS("N8$") #ENDIF @@ -284,7 +301,7 @@ TMS_FNTBL: .DW PPK_FLUSH .DW PPK_READ #ELSE - #IF ((TMSMODE == TMSMODE_MSXKBD) | (TMSMODE == TMSMODE_MBC)) + #IF ((TMSMODE == TMSMODE_MSXKBD) | (TMSMODE == TMSMODE_MBC) ) .DW KBD_STAT .DW KBD_FLUSH .DW KBD_READ @@ -519,7 +536,7 @@ TMS_SET: ;---------------------------------------------------------------------- ; TMS_WR: -#IF ((TMSMODE == TMSMODE_MSX9958) | (TMSMODE == TMSMODE_MBC)) +#IF ((TMSMODE == TMSMODE_MSX9958) | (TMSMODE == TMSMODE_MBC) | (TMSMODE == TMSMODE_DUO)) ; CLEAR R#14 FOR V9958 XOR A OUT (TMS_CMDREG), A @@ -613,7 +630,7 @@ TMS_CRTINIT2: DJNZ TMS_CRTINIT2 ; LOOP ; ; ENABLE WAIT SIGNAL IF 9938/58 -#IF ((TMSMODE == TMSMODE_MSX9958) | (TMSMODE == TMSMODE_MBC)) +#IF ((TMSMODE == TMSMODE_MSX9958) | (TMSMODE == TMSMODE_MBC) | (TMSMODE == TMSMODE_DUO)) LD C,25 ; REGISTER 25 LD A,%00000100 ; ONLY WTE BIT SET CALL TMS_SET ; DO IT @@ -1028,7 +1045,7 @@ TMS_IDAT: .DB TMS_PPIC ; PPI PORT C .DB TMS_PPIX ; PPI CONTROL PORT #ENDIF -#IF ((TMSMODE == TMSMODE_MSXKBD) | (TMSMODE == TMSMODE_MBC)) +#IF ((TMSMODE == TMSMODE_MSXKBD) | (TMSMODE == TMSMODE_MBC) | (TMSMODE == TMSMODE_DUO)) .DB KBDMODE_PS2 ; PS/2 8242 KEYBOARD CONTROLLER .DB TMS_KBDST ; 8242 CMD/STATUS PORT .DB TMS_KBDDATA ; 8242 DATA PORT @@ -1080,7 +1097,7 @@ TMS_IDAT: ; 5S Fifth sprite (not displayed) detected. Value in FS* is valid. ; INT Set at each screen update, used for interrupts. ; -#IF ((TMSMODE == TMSMODE_MSX9958) | (TMSMODE == TMSMODE_MBC)) +#IF ((TMSMODE == TMSMODE_MSX9958) | (TMSMODE == TMSMODE_MBC) | (TMSMODE == TMSMODE_DUO)) ; ; NOTE: YAMAHA 9938/58 DOCUMENTATION SAYS R3 IS SAME AS 9918 (ADR >> 10), ; BUT THIS SEEMS TO BE WRONG AND CORRECTLY DOCUMENTED AT