mirror of
https://github.com/wwarthen/RomWBW.git
synced 2026-02-06 22:43:15 -06:00
TUNE Delay Switch, Issue #558
- Add a -DELAY switch to the TUNE command line to force the use of delay mode for note pacing. Issue #558 Credit to @robbbates for suggesting this. - Add missing include file logic for DS1307, Issue #556. Credit to @tpycio. - Miscellaneous documentation improvements per Peter Onion and Petr Antos.
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 <filename>.[PT2|PT3|MYM] [-msx|-rc] [--hbios] [+tn|-tn]",0
|
||||
.DB "Usage: TUNE <filename>.[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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user