diff --git a/Doc/ChangeLog.txt b/Doc/ChangeLog.txt index 7b1f0c48..33628d3d 100644 --- a/Doc/ChangeLog.txt +++ b/Doc/ChangeLog.txt @@ -5,6 +5,7 @@ Version 3.6 - WBW: Enabled dynamic CPU speed update on LCD screen - WBW: Improve LPT driver boot messaging when not detected (per Robb Bates) - WBW: Correct DS1307 boot date/time display (per Tadeusz Pycio) +- WBW: Add -DELAY option to TUNE app (per Robb Bates) Version 3.5.1 ------------- diff --git a/Doc/RomWBW Applications.pdf b/Doc/RomWBW Applications.pdf index f480fe75..c26e152b 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 406f9d29..50df96c3 100644 Binary files a/Doc/RomWBW Disk Catalog.pdf and b/Doc/RomWBW Disk Catalog.pdf differ diff --git a/Doc/RomWBW Hardware.pdf b/Doc/RomWBW Hardware.pdf index b3a38686..67c696c0 100644 Binary files a/Doc/RomWBW Hardware.pdf and b/Doc/RomWBW Hardware.pdf differ diff --git a/Doc/RomWBW Introduction.pdf b/Doc/RomWBW Introduction.pdf index 2e5d408f..8d0eaf84 100644 Binary files a/Doc/RomWBW Introduction.pdf and b/Doc/RomWBW Introduction.pdf differ diff --git a/Doc/RomWBW System Guide.pdf b/Doc/RomWBW System Guide.pdf index 340d1332..1c0ca80f 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 e11b341c..e49b5ec1 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 5192d03c..27382454 100644 --- a/ReadMe.md +++ b/ReadMe.md @@ -7,7 +7,7 @@ **RomWBW Introduction** \ Version 3.6 \ Wayne Warthen ([wwarthen@gmail.com](mailto:wwarthen@gmail.com)) \ -23 May 2025 +28 May 2025 # Overview diff --git a/ReadMe.txt b/ReadMe.txt index 2a73568e..f781e5c0 100644 --- a/ReadMe.txt +++ b/ReadMe.txt @@ -1,6 +1,6 @@ RomWBW Introduction Wayne Warthen (wwarthen@gmail.com) -23 May 2025 +28 May 2025 diff --git a/Source/Apps/Tune/cli.inc b/Source/Apps/Tune/cli.inc index cd9eaecf..5b998664 100644 --- a/Source/Apps/Tune/cli.inc +++ b/Source/Apps/Tune/cli.inc @@ -23,6 +23,19 @@ CLI_HAVE_HBIOS_SWITCH1 ; NOT MATCHED --HBIOS LD (HBIOSMD), A RET +CLI_HAVE_DELAY_SWITCH: + LD HL, CLIARGS ; TEST FOR --DELAY ON COMMAND LINE + LD DE, DELAYOPT + CALL STRINDEX + JR NZ, CLI_HAVE_DELAY_SWITCH1 + OR $FF ; MATCHED --DELAY + LD (DELAYMD), A + RET +CLI_HAVE_DELAY_SWITCH1 ; NOT MATCHED --HBIOS + XOR A + LD (DELAYMD), A + RET + CLI_PORTS: LD HL, CLIARGS ; TEST FOR -MSX ON COMMAND LINE LD DE, OPT_MSX @@ -101,7 +114,8 @@ CLI_OCTAVE_ADJST5: OPT_MSX .DB "-MSX", 0 ; USE MSX PORTS OPT_RC .DB "-RC", 0 ; USE RC PORTS -HBIOSOPT: .DB "--HBIOS", 0 +HBIOSOPT: .DB "--HBIOS", 0 ; USE HBIOS API FOR PLAYBACK +DELAYOPT: .DB "-DELAY",0 ; FORCE DELAY MODE DOWN1 .DB "-t1", 0 ; DOWN AN OCTAVE DOWN2 .DB "-t2", 0 ; DOWN TWO OCTAVE UP1 .DB "+t1", 0 ; UP AN OCTAVE diff --git a/Source/Apps/Tune/timing.inc b/Source/Apps/Tune/timing.inc index 857e4d2c..dbf7e86a 100644 --- a/Source/Apps/Tune/timing.inc +++ b/Source/Apps/Tune/timing.inc @@ -41,8 +41,14 @@ DLY1 DEC BC ; [6] ; Test for timer running to determine if it can be used for delay ; Return string message in DE ; Assigned (WMOD) with 0 if no hardware time, 1 if hardware timer found +; If -DELAY on command line, force delay mode ; PROBETIMER: + LD A,(DELAYMD) ; GET COMMAND LINE DELAY FLAG + OR A ; TEST IT + LD A,0 ; ASSUME NO TIMER + LD DE,MSGDLY ; DELAY MODE MESSAGE + JR NZ,SETDLY ; IF TRUE, DONE LD B,BF_SYSGET ; HBIOS: GET function LD C,$D0 ; TIMER subfunction RST 08 ; DE:HL := current tick count diff --git a/Source/Apps/Tune/tune.asm b/Source/Apps/Tune/tune.asm index 32202d2e..41abfe92 100644 --- a/Source/Apps/Tune/tune.asm +++ b/Source/Apps/Tune/tune.asm @@ -53,6 +53,7 @@ ; 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 +; 2025-05-28 [WBW] Add option to force delay mode ;_______________________________________________________________________________ ; ; ToDo: @@ -113,6 +114,7 @@ Id .EQU 1 ; 5) Insert official identificator CALL CLI_ABRT_IF_OPT_FIRST CALL CLI_PORTS CALL CLI_HAVE_HBIOS_SWITCH + CALL CLI_HAVE_DELAY_SWITCH CALL CLI_OCTAVE_ADJST JP CONTINUE @@ -703,15 +705,16 @@ FILTYP .DB 0 ; Sound file type (TYPPT2, TYPPT3, TYPMYM) TMP .DB 0 ; work around use of undocumented Z80 HBIOSMD .DB 0 ; NON-ZERO IF USING HBIOS SOUND DRIVER, ZERO OTHERWISE +DELAYMD .DB 0 ; FORCE DELAY MODE IF TRUE (NON-ZERO) OCTAVEADJ .DB 0 ; AMOUNT TO ADJUST OCTAVE UP OR DOWN 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 +MSGBAN .DB "Tune Player for RomWBW v3.13, 28-May-2025",0 +MSGUSE .DB "Copyright (C) 2025, 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] [-msx|-rc] [--hbios] [+tn|-tn]",0 + .DB "Usage: TUNE .[PT2|PT3|MYM] [-msx|-rc] [-delay] [--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 diff --git a/Source/Doc/Applications.md b/Source/Doc/Applications.md index 8dd5a8e6..4f3b9a14 100644 --- a/Source/Doc/Applications.md +++ b/Source/Doc/Applications.md @@ -2438,10 +2438,11 @@ whether support for it is included in the RomWBW HBIOS configuration | `-MSX` | Force MSX port addresses A0H/A1H (no PSG detection) | | `-RC` | Force RCBus port addresses D8H/D0H (no PSG detection) | | `--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 | +| `-DELAY` | Force delay mode (don't use hardware timer) | +| `+T1` | Play tune an octave higher | +| `+T2` | Play tune two octaves higher | +| `-T1` | Play tune an octave lower | +| `-T2` | Play tune two octaves lower | The +t and -t options apply only to HBIOS mode operation. The `-MSX`, `-RC`, and `--HBIOS` options are mutually exclusive. See Notes below. @@ -2465,7 +2466,7 @@ an error message. Some hardware (notably Why-Em-Ulator) cannot be detected due limitations of the emulation. In such cases, you can force the use of the two -most common port addresses using the `-msx` or `-rc` options. +most common port addresses 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 @@ -2473,9 +2474,13 @@ will need to ensure that the CPU clock speed of your system does not exceed the timing limitations of your sound chip. The application probes for an active system timer and uses it to -accurately pace the sound file output. If no system timer is +accurately pace the sound file playback. If no system timer is available, a delay loop is calculated instead. The delay loop will not -be as accurate as the system timer. +be as accurate as the system timer. If the `-DELAY` options is +specified on the command line, then the delay loop will be used +regardless of whether the system has a hardware timer. This is useful +if the hardware timer does not run at the 50Hz desired for sound +playback. There are two modes of operation. A direct hardware interface for the AY-3-8910 or YM2149 chips, or a compatibility layer thru HBIOS supporting diff --git a/Source/Doc/Hardware.md b/Source/Doc/Hardware.md index 520779dc..46776993 100644 --- a/Source/Doc/Hardware.md +++ b/Source/Doc/Hardware.md @@ -141,6 +141,11 @@ devices and peripherals that are on-board or frequently used with each platform. If the device or peripheral is not detected at boot, the ROM will simply bypass support appropriately. +Each ROM will support a single memory manager. This is determined +by the build configuration and is not dynamically selected. The use +of the term Memory Manager is generally synonymous with Memory +Management Unit (MMU). + In some cases, support for multiple hardware components with potentially conflicting resource usage are handled by a single ROM image. It is up to the user to ensure that no conflicting hardware is in use. diff --git a/Source/Doc/SystemGuide.md b/Source/Doc/SystemGuide.md index 40799d6e..c43443dd 100644 --- a/Source/Doc/SystemGuide.md +++ b/Source/Doc/SystemGuide.md @@ -142,6 +142,14 @@ currently selected. The upper 32KB is "fixed". This area of memory is never swapped out and is used to contain software and operating systems that must remain in the Z80 address space. +Throughout this document, this mechanism of selecting banks of memory +into the lower 32K is referred to as memory management. Achieving +this functionality requires some type of hardware which is generally +referred to as the system's Memory Management Unit (MMU). RomWBW +supports a variety of MMUs -- but they all perform the same function +of swapping in/out banks of memory in the lower 32K of CPU address +space. + Figure 4.1 depicts the memory layout for a system running the CP/M operating system. Applications residing in TPA invoke BDOS services of CP/M, BDOS invokes the custom CBIOS APIs, and finally CBIOS @@ -290,6 +298,54 @@ Common Bank: It is a fixed mapping that is never changed in normal RomWBW operation hence the name "Common". +## Memory Managers + +The following hardware memory managers are supported by RomWBW. The +operation of these memory managers is not documented here -- please +refer to the documentation of your hardware provider for that. + +Z2: + +: Memory memory manager introduced by Sergey Kiselv in the Zeta 2 SBC. +Popular in many RCBus systems. + +Z180: + +: Memory manager built into the Z180 CPU + +Z280: + +: Memory manager built into the Z280 CPU + +ZRC: + +: Memory manager onboard the ZRC series of computers by Bill Shen. + +SBC: + +: Memory manager onboard the N8VEM SBC series of computers by +Andrew Lynch. + +MBC: + +: Memory manager onboard the Nhyodyne computer system by Andrew Lynch. + +N8: + +: Memory manager onboard the N8 SBC computer by Andrew Lynch. + +EZ512: + +: Memory manager onboard the EaZy80-512 Z80 CPU Module by Bill Shen. + +RPH: + +: Memory manager onboard the Rhyophyre computer system by Andrew Lynch. + +The memory manager used is determined by the configuration choices +that are part of a RomWBW build process. A given ROM can only have a +single memory manager -- it is not selected dynamically. + # Disk Layout ## Floppy Disk Layout diff --git a/Source/Doc/UserGuide.md b/Source/Doc/UserGuide.md index 485df903..fdb7c12f 100644 --- a/Source/Doc/UserGuide.md +++ b/Source/Doc/UserGuide.md @@ -3163,7 +3163,7 @@ floppy disk and hard disk images. | TUNE | Play .PT2, .PT3, .MYM audio files. | | INTTEST | Test interrupt vector hooking. | -# Real Time Clock +# Real Time Clock & Date/Time Stamping RomWBW supports a variety of real time clock hardware. If your system has this hardware, then it will be able to maintain the diff --git a/Source/HBIOS/hbios.asm b/Source/HBIOS/hbios.asm index 5f2304e8..efaea809 100644 --- a/Source/HBIOS/hbios.asm +++ b/Source/HBIOS/hbios.asm @@ -8978,6 +8978,15 @@ SIZ_INTRTC .EQU $ - ORG_INTRTC MEMECHO " bytes.\n" #ENDIF ; +#IF (DS7RTCENABLE) +ORG_DS7RTC .EQU $ + #INCLUDE "ds7rtc.asm" +SIZ_DS7RTC .EQU $ - ORG_DS7RTC + .ECHO "DS7RTC occupies " + .ECHO SIZ_DS7RTC + .ECHO " bytes.\n" +#ENDIF +; #IF (RP5RTCENABLE) ORG_RP5RTC .EQU $ #INCLUDE "rp5rtc.asm" diff --git a/Source/ver.inc b/Source/ver.inc index b03e2f39..a280d2d6 100644 --- a/Source/ver.inc +++ b/Source/ver.inc @@ -2,7 +2,7 @@ #DEFINE RMN 6 #DEFINE RUP 0 #DEFINE RTP 0 -#DEFINE BIOSVER "3.6.0-dev.0" +#DEFINE BIOSVER "3.6.0-dev.1" #define rmj RMJ #define rmn RMN #define rup RUP diff --git a/Source/ver.lib b/Source/ver.lib index 8ea05b52..e2406801 100644 --- a/Source/ver.lib +++ b/Source/ver.lib @@ -3,5 +3,5 @@ rmn equ 6 rup equ 0 rtp equ 0 biosver macro - db "3.6.0-dev.0" + db "3.6.0-dev.1" endm