diff --git a/Doc/RomWBW Applications.pdf b/Doc/RomWBW Applications.pdf index 6b792df2..7d0e05c9 100644 Binary files a/Doc/RomWBW Applications.pdf and b/Doc/RomWBW Applications.pdf differ diff --git a/Doc/RomWBW Disk Catalog.pdf b/Doc/RomWBW Disk Catalog.pdf index bcb35b0b..6abefb6d 100644 Binary files a/Doc/RomWBW Disk Catalog.pdf and b/Doc/RomWBW Disk Catalog.pdf differ diff --git a/Doc/RomWBW Errata.pdf b/Doc/RomWBW Errata.pdf index e6c3a0f3..90b66724 100644 Binary files a/Doc/RomWBW Errata.pdf and b/Doc/RomWBW Errata.pdf differ diff --git a/Doc/RomWBW System Guide.pdf b/Doc/RomWBW System Guide.pdf index 45836989..94ce2d47 100644 Binary files a/Doc/RomWBW System Guide.pdf and b/Doc/RomWBW System Guide.pdf differ diff --git a/Doc/RomWBW User Guide.pdf b/Doc/RomWBW User Guide.pdf index badced4a..4265a442 100644 Binary files a/Doc/RomWBW User Guide.pdf and b/Doc/RomWBW User Guide.pdf differ diff --git a/ReadMe.md b/ReadMe.md index a492391b..bcd27027 100644 --- a/ReadMe.md +++ b/ReadMe.md @@ -3,7 +3,7 @@ **RomWBW ReadMe** \ Version 3.5 \ Wayne Warthen ([wwarthen@gmail.com](mailto:wwarthen@gmail.com)) \ -08 Dec 2024 +12 Dec 2024 # Overview diff --git a/ReadMe.txt b/ReadMe.txt index 31fb331b..32e4ad84 100644 --- a/ReadMe.txt +++ b/ReadMe.txt @@ -1,6 +1,6 @@ RomWBW ReadMe Wayne Warthen (wwarthen@gmail.com) -08 Dec 2024 +12 Dec 2024 diff --git a/Source/Apps/Tune/cli.inc b/Source/Apps/Tune/cli.inc index fc901068..cd9eaecf 100644 --- a/Source/Apps/Tune/cli.inc +++ b/Source/Apps/Tune/cli.inc @@ -23,6 +23,26 @@ CLI_HAVE_HBIOS_SWITCH1 ; NOT MATCHED --HBIOS LD (HBIOSMD), A RET +CLI_PORTS: + LD HL, CLIARGS ; TEST FOR -MSX ON COMMAND LINE + LD DE, OPT_MSX + CALL STRINDEX + JR NZ, CLI_PORTS1 + LD A,PORTS_MSX + JR CLI_PORTS_Z +CLI_PORTS1: + LD HL, CLIARGS ; TEST FOR -RC ON COMMAND LINE + LD DE, OPT_RC + CALL STRINDEX + JR NZ, CLI_PORTS2 + LD A,PORTS_RC + JR CLI_PORTS_Z +CLI_PORTS2: + LD A,PORTS_AUTO ; USE AUTO PORT SELECTION +CLI_PORTS_Z: + LD (USEPORTS),A ; SAVE PORTS SELECTION + RET + CLI_ABRT_UNSUPPFILTYP: PUSH AF ISHBIOS @@ -79,6 +99,8 @@ CLI_OCTAVE_ADJST5: LD (OCTAVEADJ), A RET +OPT_MSX .DB "-MSX", 0 ; USE MSX PORTS +OPT_RC .DB "-RC", 0 ; USE RC PORTS HBIOSOPT: .DB "--HBIOS", 0 DOWN1 .DB "-t1", 0 ; DOWN AN OCTAVE DOWN2 .DB "-t2", 0 ; DOWN TWO OCTAVE diff --git a/Source/Apps/Tune/tune.asm b/Source/Apps/Tune/tune.asm index 97d16230..32202d2e 100644 --- a/Source/Apps/Tune/tune.asm +++ b/Source/Apps/Tune/tune.asm @@ -52,6 +52,7 @@ ; 2024-07-08 [WBW] Add support for Les Bird's Graphics, Sound, Joystick ; 2024-07-11 [WBW] Updated, Les Bird's module now uses same settings as EB6 ; 2024-09-17 [WBW] Add support for HEATH H8 with Les Bird's MSX Card +; 2024-12-12 [WBW] Add options to force standard MSX or RC ports ;_______________________________________________________________________________ ; ; ToDo: @@ -73,6 +74,10 @@ TYPPT2 .EQU 1 ; FILTYP value for PT2 sound file TYPPT3 .EQU 2 ; FILTYP value for PT3 sound file TYPMYM .EQU 3 ; FILTYP value for MYM sound file ; +PORTS_AUTO .EQU 0 ; AUTO select audio chip ports +PORTS_MSX .EQU 1 ; force MSX audio chip ports +PORTS_RC .EQU 2 ; force RCBUS audio chip ports +; ; HIGH SPEED CPU CONTROL ; SBCV2004 .EQU 0 ; ENABLE SBC-V2-004 HALF CLOCK DIVIDER @@ -106,6 +111,7 @@ Id .EQU 1 ; 5) Insert official identificator PRTSTRDE(MSGBAN) ; Print to banner message CALL CLI_ABRT_IF_OPT_FIRST + CALL CLI_PORTS CALL CLI_HAVE_HBIOS_SWITCH CALL CLI_OCTAVE_ADJST JP CONTINUE @@ -125,6 +131,22 @@ CONTINUE: OR A JR NZ, TSTTIMER ; skip hardware check if using hbios + LD A, (USEPORTS) ; get ports option + LD HL,MSXPORTS ; assume MSX + CP PORTS_MSX ; use MSX? + JR Z,FORCE + LD HL,RCPORTS ; asssume RC + CP PORTS_RC ; use RC? + JR Z,FORCE + JR AUTOSEL ; otherwise do auto select + +FORCE: + LD BC,CFGSIZ ; Size of one entry + LD DE,CFG ; Active config structure + LDIR ; Update active config structure + JR MAT ; Continue + +AUTOSEL: LD HL,CFGTBL ; Point to start of config table CFGSEL: LD A,$FF ; End of table marker @@ -646,6 +668,17 @@ CFGSIZ .EQU $ - CFGTBL ; .DB $FF ; END OF TABLE MARKER ; +; The following are table entries (like above), but not part of auto +; detection searching. They are selected byh command line options. +; +MSXPORTS: + .DB $FF, $A0, $A1, $FF, $FF, $FF, $FF ; GENERIC MSX + .DW HWSTR_MSX +; +RCPORTS: + .DB $FF, $D8, $D0, $FF, $FF, $FF, $FF ; GENERIC RC + .DW HWSTR_RC +; CFG: ; ACTIVE CONFIG VALUES (FROM SELECTED CFGTBL ENTRY) PLT .DB 0 ; RomWBW HBIOS platform id PORTS: @@ -672,11 +705,13 @@ TMP .DB 0 ; work around use of undocumented Z80 HBIOSMD .DB 0 ; NON-ZERO IF USING HBIOS SOUND DRIVER, ZERO OTHERWISE OCTAVEADJ .DB 0 ; AMOUNT TO ADJUST OCTAVE UP OR DOWN -MSGBAN .DB "Tune Player for RomWBW v3.11, 17-Sep-2024",0 +USEPORTS .DB 0 ; AUDIO CHIP PORT SELECTION MODE + +MSGBAN .DB "Tune Player for RomWBW v3.12, 12-Dec-2024",0 MSGUSE .DB "Copyright (C) 2024, Wayne Warthen, GNU GPL v3",13,10 .DB "PTxPlayer Copyright (C) 2004-2007 S.V.Bulba",13,10 .DB "MYMPlay by Marq/Lieves!Tuore",13,10,13,10 - .DB "Usage: TUNE .[PT2|PT3|MYM] [--hbios] [+tn|-tn]",0 + .DB "Usage: TUNE .[PT2|PT3|MYM] [-msx|-rc] [--hbios] [+tn|-tn]",0 MSGBIO .DB "Incompatible BIOS or version, " .DB "HBIOS v", '0' + RMJ, ".", '0' + RMN, " required",0 MSGPLT .DB "Hardware error, system not supported!",0 @@ -700,6 +735,8 @@ HWSTR_MBC .DB "NHYODYNE Sound Module",0 HWSTR_DUO .DB "DUODYNE Sound Module",0 HWSTR_NABU .DB "NABU Onboard Sound",0 HWSTR_HEATH .DB "HEATH H8 MSX Module",0 +HWSTR_MSX .DB "MSX Standard Ports (A0H/A1H)",0 +HWSTR_RC .DB "RCBus Standard Ports (D8H/D0H)",0 MSGUNSUP .db "MYM files not supported with HBIOS yet!\r\n", 0 diff --git a/Source/Doc/Applications.md b/Source/Doc/Applications.md index 46c1152f..179e8f0d 100644 --- a/Source/Doc/Applications.md +++ b/Source/Doc/Applications.md @@ -2224,6 +2224,10 @@ well known port addresses at startup. It will auto-configure itself for the hardware found. If no hardware is detected, it will abort with an error message. +Some sound board hardware does not support automatic detection +(notably the Why-Em-Ulator). You may force the use of standard +MSX or RC Bus standard ports using the `-MSX` or `-RC` options. + On Z180 systems, I/O wait states are added when writing to the sound chip to avoid exceeding its speed limitations. On Z80 systems, you will need to ensure that the CPU clock speed of your system does not @@ -2239,18 +2243,20 @@ AY-3-8910 or YM2149 chips, or a compatibility layer thru HBIOS supporting the SN76489 chip. By default the application will attempt to interface directly to the sound -chip. The optional argument `--hbios` supplied after the filename, will +chip. The optional argument `--HBIOS` supplied after the filename, will enable the application to use the HBIOS sound driver. The HBIOS mode also support other switch as described below. | Switch | Description | | ----------- | ------------------------------------------------------ | -| `--hbios` | Utilise HBIOS' sound driver | -| `+t1` | Play tune an octave higher | -| `+t2` | Play tune two octaves higher | -| `-t1` | Play tune an octave lower | -| `-t2` | Play tune two octaves lower | +| `-MSX` | Force use of MSX standard ports (A0H/A1H) | +| `-RC` | Force use of RCBus standard ports (D8H/D0H) | +| `--HBIOS` | Utilise HBIOS' sound driver | +| `+T1` | Play tune an octave higher | +| `+T2` | Play tune two octaves higher | +| `-T1` | Play tune an octave lower | +| `-T2` | Play tune two octaves lower | All RomWBW operating system boot disks include a selection of sound files in user area 3. diff --git a/Source/HBIOS/hbios.asm b/Source/HBIOS/hbios.asm index f8da23f2..01ad296d 100644 --- a/Source/HBIOS/hbios.asm +++ b/Source/HBIOS/hbios.asm @@ -5318,9 +5318,9 @@ SYS_RESCOLD: ; ; TURN OFF SPURIOUS INTERRUPT SOURCES ; -#IF ((INTMODE == 2) & KBDINTS)) - CALL KBD_DEINIT -#ENDIF +;;;#IF ((INTMODE == 2) & KBDINTS)) +;;; CALL KBD_DEINIT +;;;#ENDIF #IFDEF APPBOOT JP HB_RESTART #ELSE diff --git a/Source/HBIOS/kbd.asm b/Source/HBIOS/kbd.asm index 8cc165fb..d7542921 100644 --- a/Source/HBIOS/kbd.asm +++ b/Source/HBIOS/kbd.asm @@ -76,6 +76,10 @@ KBD_IDLE .DB 0 ; IDLE COUNT ; 8242 CONTROLLER COMMANDS AND RESPONSES ;__________________________________________________________________________________________________ ; +KBD_CON_DP1 .EQU $AD ; DISABLE PS2 PORT 1 (KEYBOARD) +KBD_CON_DP2 .EQU $A7 ; DISABLE PS2 PORT 2 (MOUSE) +KBD_CON_EP1 .EQU $AE ; ENABLE PS2 PORT 1 (KEYBOARD) +KBD_CON_EP2 .EQU $A8 ; ENABLE PS2 PORT 2 (MOUSE) KBD_CON_WCR .EQU $60 ; WRITE TO COMMAND REGISTER. VALUE TO FOLLOW. KBD_CON_CST .EQU $AA ; CONTROLLER SELF TEST. RETURN FF IF CONTROLLER OK ;__________________________________________________________________________________________________ @@ -94,6 +98,41 @@ KBD_CON_IOF .EQU $20 ; XLAT DISABLED, MOUSE DISABLED, NO INTS #INCLUDE "ps2iface.inc" ; ;__________________________________________________________________________________________________ +; KEYBOARD PRE-INITIALIZATION +;__________________________________________________________________________________________________ +; +; TO BE CALLED PRIOR TO INITERRUPTS BEING ENABLED +; MUST BE CALLED FROM VIDEO DRIVER PREINIT WITH IY SET +; THIS PREVENTS INTRERRUPT ISSUES IF 8242 HAS INTERRUPTS ENABLED +; +; AT STARTUP. NOT USING IT FOR NOW BECAUSE IT IS NOT A PROBLEM IF +; YOU DON'T USE THE KEYBOARD DURING BOOT. +; +KBD_PREINIT: +; +#IF (KBDINTS) + ; DISABLE DEVICES (KEYBOARD/MOUSE) + LD A,KBD_CON_DP1 ; DISABLE PORT 1 (KEYBOARD) + CALL KBD_PUTCMD ; SEND IT + LD A,KBD_CON_DP2 ; DISABLE PORT 2 (MOUSE) + CALL KBD_PUTCMD ; SEND IT +; + ; FLUSH ANY PENDING OUTPUT + LD B,16 ; UP TO 16 BYTES MAY BE WAITING +KBD_PREINIT1: + CALL KBD_IN_P ; BLIND READ + DJNZ KBD_PREINIT1 ; AND LOOP +; + ; DISABLE INTERRUPTS + LD A,KBD_CON_WCR ; SET COMMAND REGISTER + CALL KBD_PUTCMD ; SEND IT + LD A,KBD_CON_IOF ; XLAT DISABLED, MOUSE DISABLED, NO INTS + CALL KBD_PUTDATA ; SEND IT +; +#ENDIF + RET +; +;__________________________________________________________________________________________________ ; KEYBOARD INITIALIZATION ;__________________________________________________________________________________________________ ; diff --git a/Source/HBIOS/ps2iface.inc b/Source/HBIOS/ps2iface.inc index 4a57e00d..3ed1e7f7 100644 --- a/Source/HBIOS/ps2iface.inc +++ b/Source/HBIOS/ps2iface.inc @@ -58,16 +58,16 @@ KBD_INT: ; CALL KBDQDBG ; RET -;__________________________________________________________________________________________________ -; KEYBOARD DEINITIALIZATION -;__________________________________________________________________________________________________ -; -KBD_DEINIT: - LD IY,(KBD_IDAT) ; SETUP PORT POINTER - LD A,KBD_CON_WCR ; LOAD WRITE COMMAND - CALL KBD_CMDOUT ; WRITE IT - LD A,KBD_CON_IOF ; LOAD DISABLE INTERRUPTS CFG - JP KBD_DTAOUT ; WRITE IT +;;;;__________________________________________________________________________________________________ +;;;; KEYBOARD DEINITIALIZATION +;;;;__________________________________________________________________________________________________ +;;;; +;;;KBD_DEINIT: +;;; LD IY,(KBD_IDAT) ; SETUP PORT POINTER +;;; LD A,KBD_CON_WCR ; LOAD WRITE COMMAND +;;; CALL KBD_CMDOUT ; WRITE IT +;;; LD A,KBD_CON_IOF ; LOAD DISABLE INTERRUPTS CFG +;;; JP KBD_DTAOUT ; WRITE IT #ENDIF ;__________________________________________________________________________________________________ ; KEYBOARD READ diff --git a/Source/HBIOS/tms.asm b/Source/HBIOS/tms.asm index 1da1d4cd..6633f696 100644 --- a/Source/HBIOS/tms.asm +++ b/Source/HBIOS/tms.asm @@ -205,6 +205,10 @@ NABUKBENABLE .SET TRUE ; INCLUDE NABU KEYBOARD SUPPORT ;====================================================================== ; TMS_PREINIT: +#IF (TMSKBD == TMSKBD_KBD) + LD IY,TMS_IDAT ; POINTER TO INSTANCE DATA + CALL KBD_PREINIT +#ENDIF ; DISABLE INTERRUPT GENERATION UNTIL AFTER INTERRUPT HANDLER ; HAS BEEN INSTALLED. LD A, (TMS_INITVDU_REG_1) diff --git a/Source/ver.inc b/Source/ver.inc index d7c982bf..f29032b3 100644 --- a/Source/ver.inc +++ b/Source/ver.inc @@ -2,7 +2,7 @@ #DEFINE RMN 5 #DEFINE RUP 0 #DEFINE RTP 0 -#DEFINE BIOSVER "3.5.0-dev.99" +#DEFINE BIOSVER "3.5.0-dev.100" #define rmj RMJ #define rmn RMN #define rup RUP diff --git a/Source/ver.lib b/Source/ver.lib index fa768e8b..9534ebd3 100644 --- a/Source/ver.lib +++ b/Source/ver.lib @@ -3,5 +3,5 @@ rmn equ 5 rup equ 0 rtp equ 0 biosver macro - db "3.5.0-dev.99" + db "3.5.0-dev.100" endm