diff --git a/Doc/RomWBW Applications.pdf b/Doc/RomWBW Applications.pdf index df2425ce..c2b1f54d 100644 Binary files a/Doc/RomWBW Applications.pdf and b/Doc/RomWBW Applications.pdf differ diff --git a/Doc/RomWBW Architecture.pdf b/Doc/RomWBW Architecture.pdf index 8a35983b..47571248 100644 Binary files a/Doc/RomWBW Architecture.pdf and b/Doc/RomWBW Architecture.pdf differ diff --git a/Doc/RomWBW Disk Catalog.pdf b/Doc/RomWBW Disk Catalog.pdf index e1dedd0b..12627522 100644 Binary files a/Doc/RomWBW Disk Catalog.pdf and b/Doc/RomWBW Disk Catalog.pdf differ diff --git a/Doc/RomWBW Getting Started.pdf b/Doc/RomWBW Getting Started.pdf index 598da351..8ecffa01 100644 Binary files a/Doc/RomWBW Getting Started.pdf and b/Doc/RomWBW Getting Started.pdf differ diff --git a/Source/Doc/Architecture.md b/Source/Doc/Architecture.md index a4c793da..c1058b19 100644 --- a/Source/Doc/Architecture.md +++ b/Source/Doc/Architecture.md @@ -747,6 +747,8 @@ of memory. | C: Attributes | D: Device Type | E: Device Number +| H: Disk Device Unit Mode +| L: Disk Device Unit I/O Base Address Reports information about the character device unit specified. Register D indicates the device type (driver) and register E indicates the physical @@ -966,6 +968,8 @@ Documentation required... | A: Status (0=OK, else error) | D: Device Type | E: Device Number +| H: RTC Device Unit Mode +| L: RTC Device Unit I/O Base Address Reports information about the RTC device unit specified. Register D indicates the device type (driver) and register E indicates the physical @@ -1138,8 +1142,10 @@ Keyboard should be flushed. | _Exit Results_ | A: Status (0=OK, else error) -| D=Device Type -| E=Device Number +| D: Device Type +| E: Device Number +| H: VDA Device Unit Mode +| L: VDA Device Unit I/O Base Address Reports information about the video device unit specified. @@ -1570,6 +1576,33 @@ not play a note if the duration is zero. For other values, when a tone is played, it will play for the duration defined in HL and then return. +### Function 0x57 -- Sound Device (SNDDEVICE) + +| _Entry Parameters_ +| B: 0x57 +| C: Sound Device Unit Number + +| _Exit Results_ +| A: Status (0=OK, else error) +| D: Serial Device Type +| E: Serial Device Number +| H: Serial Device Unit Mode +| L: Serial Device Unit I/O Base Address + +Reports information about the sound device unit specified. Register D +indicates the device type (driver) and register E indicates the physical +device number assigned by the driver. + +Each character device is handled by an appropriate driver (AY38910, SN76489, +etc.). The driver can be identified by the Device Type. The assigned Device +Types are listed below. + +_Id_ | _Device Type / Driver_ +---- | ---------------------- +0x00 | SN76489 +0x10 | AY38910 +0x20 | BITMODE + `\clearpage`{=latex} System (SYS) diff --git a/Source/HBIOS/ay38910.asm b/Source/HBIOS/ay38910.asm index 6ddf9c1d..4a10196a 100644 --- a/Source/HBIOS/ay38910.asm +++ b/Source/HBIOS/ay38910.asm @@ -57,6 +57,7 @@ AY_FNTBL: .DW AY_PLAY .DW AY_QUERY .DW AY_DURATION + .DW AY_DEVICE ; #IF (($ - AY_FNTBL) != (SND_FNCNT * 2)) .ECHO "*** INVALID SND FUNCTION TABLE ***\n" @@ -428,7 +429,7 @@ AY_QUERY_VOLUME: RET ; AY_QUERY_DEV: - LD B, BF_SND_AY38910 ; RETURN DEVICE IDENTIFIER + LD B, SNDDEV_AY38910 ; RETURN DEVICE IDENTIFIER LD DE, (AY_RSEL*256)+AY_RDAT ; AND ADDRESS AND DATA PORT XOR A RET @@ -443,6 +444,19 @@ AY_DURATION: RET ; ;====================================================================== +; SOUND DRIVER FUNCTION - DEVICE +;====================================================================== +; +AY_DEVICE: + LD D,SNDDEV_AY38910 ; D := DEVICE TYPE + LD E,0 ; E := PHYSICAL UNIT + LD C,$00 ; C := DEVICE TYPE + LD H,AYMODE ; H := MODE + LD L,AY_RSEL ; L := BASE I/O ADDRESS + XOR A + RET +; +;====================================================================== ; NON-BLOCKING INTERRUPT CODE ;====================================================================== ; diff --git a/Source/HBIOS/bqrtc.asm b/Source/HBIOS/bqrtc.asm index 274a56f0..5bb10ec4 100644 --- a/Source/HBIOS/bqrtc.asm +++ b/Source/HBIOS/bqrtc.asm @@ -344,6 +344,8 @@ BQRTC_SETALM: BQRTC_DEVICE: LD D,RTCDEV_BQ ; D := DEVICE TYPE LD E,0 ; E := PHYSICAL DEVICE NUMBER + LD H,0 ; H := 0, DRIVER HAS NO MODES + LD L,BQRTC_BASE ; L := BASE I/O ADDRESS XOR A ; SIGNAL SUCCESS RET diff --git a/Source/HBIOS/cvdu.asm b/Source/HBIOS/cvdu.asm index 0cc31919..05f9cb34 100644 --- a/Source/HBIOS/cvdu.asm +++ b/Source/HBIOS/cvdu.asm @@ -132,6 +132,8 @@ CVDU_VDARES: CVDU_VDADEV: LD D,VDADEV_CVDU ; D := DEVICE TYPE LD E,0 ; E := PHYSICAL UNIT IS ALWAYS ZERO + LD H,0 ; H := 0, DRIVER HAS NO MODES + LD L,CVDU_BASE ; L := BASE I/O ADDRESS XOR A ; SIGNAL SUCCESS RET diff --git a/Source/HBIOS/dsrtc.asm b/Source/HBIOS/dsrtc.asm index d7cbb744..4384cce7 100644 --- a/Source/HBIOS/dsrtc.asm +++ b/Source/HBIOS/dsrtc.asm @@ -369,6 +369,8 @@ DSRTC_SETBYT: DSRTC_DEVICE: LD D,RTCDEV_DS ; D := DEVICE TYPE LD E,0 ; E := PHYSICAL DEVICE NUMBER + LD H,DSRTCMODE ; H := MODE + LD L,DSRTC_IO ; L := BASE I/O ADDRESS XOR A ; SIGNAL SUCCESS RET ; diff --git a/Source/HBIOS/fd.asm b/Source/HBIOS/fd.asm index 98ff1ead..7bf477ba 100644 --- a/Source/HBIOS/fd.asm +++ b/Source/HBIOS/fd.asm @@ -508,6 +508,8 @@ FD_DEVICE: #IF (FDMEDIA == FDM111) LD C,%10010100 ; 8" DS/DD #ENDIF + LD H,FDMODE ; H := MODE + LD L,FDC_MSR ; L := BASE I/O ADDRESS XOR A ; SIGNAL SUCCESS RET ; diff --git a/Source/HBIOS/hbios.asm b/Source/HBIOS/hbios.asm index 0a95c1e3..f1aa9ab3 100644 --- a/Source/HBIOS/hbios.asm +++ b/Source/HBIOS/hbios.asm @@ -2294,7 +2294,7 @@ SND_ADDENT: ; WORD DRIVER FUNCTION TABLE ADDRESS ; WORD UNIT SPECIFIC DATA (TYPICALLY A DEVICE INSTANCE DATA ADDRESS) ; -SND_FNCNT .EQU 7 ; NUMBER OF SND FUNCS (FOR RANGE CHECK) +SND_FNCNT .EQU 8 ; NUMBER OF SND FUNCS (FOR RANGE CHECK) SND_MAX .EQU 3 ; UP TO 2 UNITS SND_SIZ .EQU SND_MAX * 4 ; EACH ENTRY IS 4 BYTES ; diff --git a/Source/HBIOS/hbios.inc b/Source/HBIOS/hbios.inc index 4440c9d5..2457bc9c 100644 --- a/Source/HBIOS/hbios.inc +++ b/Source/HBIOS/hbios.inc @@ -63,6 +63,7 @@ BF_SNDNOTE .EQU BF_SND + 3 ; REQUEST NOTE - L CONTAINS NOTE - EACH VALUE IS QUAR BF_SNDPLAY .EQU BF_SND + 4 ; INITIATE THE REQUESTED SOUND COMMAND BF_SNDQUERY .EQU BF_SND + 5 ; E IS SUBFUNCTION BF_SNDDURATION .EQU BF_SND + 6 ; REQUEST DURATION HL MILLISECONDS +BF_SNDDEVICE .EQU BF_SND + 7 ; SOUND DEVICE INFO REQUEST ; ; BF_SNDQUERY SUBCOMMANDS BF_SNDQ_STATUS .EQU 0 @@ -71,11 +72,6 @@ BF_SNDQ_VOLUME .EQU BF_SNDQ_STATUS + 2 ; 8 BIT NUMBER BF_SNDQ_PERIOD .EQU BF_SNDQ_STATUS + 3 ; 16 BIT NUMBER BF_SNDQ_DEV .EQU BF_SNDQ_STATUS + 4 ; RETURN DEVICE TYPE CODE AND IO PORTS - TYPE IN B, PORTS IN DE, HL ; -BF_SNDDEV .EQU 0 ; TYPES OF SOUND DRIVERS -BF_SND_SN76489 .EQU BF_SNDDEV + 1 -BF_SND_AY38910 .EQU BF_SNDDEV + 2 -BF_SND_BITMODE .EQU BF_SNDDEV + 3 -; BF_SYS .EQU $F0 BF_SYSRESET .EQU BF_SYS + 0 ; SOFT RESET HBIOS BF_SYSVER .EQU BF_SYS + 1 ; GET HBIOS VERSION @@ -200,12 +196,12 @@ VDADEV_CVDU .EQU $10 ; ECB COLOR VDU - MOS 8563 VDADEV_NEC .EQU $20 ; ECB UPD7220 - NEC UPD7220 VDADEV_TMS .EQU $30 ; N8 ONBOARD VDA SUBSYSTEM - TMS 9918 VDADEV_VGA .EQU $40 ; ECB VGA3 - HITACHI HD6445 -;; -;; EMULATION TYPES - moved to std.asm -;; -;EMUTYP_NONE .EQU 0 ; NONE -;EMUTYP_TTY .EQU 1 ; TTY -;EMUTYP_ANSI .EQU 2 ; ANSI +; +; SOUND DEVICE IDS +; +SNDDEV_SN76489 .EQU $00 +SNDDEV_AY38910 .EQU $10 +SNDDEV_BITMODE .EQU $20 ; ; HBIOS CONTROL BLOCK OFFSETS ; WARNING: THESE OFFSETS WILL CHANGE SIGNIFICANTLY BETWEEN RELEASES diff --git a/Source/HBIOS/hdsk.asm b/Source/HBIOS/hdsk.asm index 1d1b3c84..f3cabdad 100644 --- a/Source/HBIOS/hdsk.asm +++ b/Source/HBIOS/hdsk.asm @@ -169,6 +169,8 @@ HDSK_DEVICE: LD D,DIODEV_HDSK ; D := DEVICE TYPE LD E,(IY+HDSK_DEV) ; E := PHYSICAL DEVICE NUMBER LD C,%00000000 ; C := ATTRIBUTES, NON-REMOVABLE HARD DISK + LD H,0 ; H := 0, DRIVER HAS NO MODES + LD L,HDSK_IO ; L := BASE I/O ADDRESS XOR A ; SIGNAL SUCCESS RET ; diff --git a/Source/HBIOS/ide.asm b/Source/HBIOS/ide.asm index d6164225..8613e8a3 100644 --- a/Source/HBIOS/ide.asm +++ b/Source/HBIOS/ide.asm @@ -546,6 +546,8 @@ IDE_DEVICE: JR Z,IDE_DEVICE1 ; IF Z, WE ARE DONE LD C,%01001000 ; OTHERWISE REMOVABLE COMPACT FLASH IDE_DEVICE1: + LD H,(IY+IDE_MODE) ; H := MODE + LD L,(IY+IDE_IOBASE) ; L := BASE I/O ADDRESS XOR A ; SIGNAL SUCCESS RET ; diff --git a/Source/HBIOS/intrtc.asm b/Source/HBIOS/intrtc.asm index 3765bf1d..6602b3a3 100644 --- a/Source/HBIOS/intrtc.asm +++ b/Source/HBIOS/intrtc.asm @@ -138,6 +138,8 @@ INTRTC_SETTIM: INTRTC_DEVICE: LD D,RTCDEV_INT ; D := DEVICE TYPE LD E,0 ; E := PHYSICAL DEVICE NUMBER + LD H,0 ; H := 0, DRIVER HAS NO MODES + LD L,0 ; L := 0, NO I/O ADDRESS XOR A ; SIGNAL SUCCESS RET ; diff --git a/Source/HBIOS/md.asm b/Source/HBIOS/md.asm index 81567653..1761b530 100644 --- a/Source/HBIOS/md.asm +++ b/Source/HBIOS/md.asm @@ -149,6 +149,8 @@ MD_DEVICE: LD C,%00100000 ; ASSUME ROM DISK ATTRIBUTES JR Z,MD_DEVICE1 ; IF ZERO, IT IS ROM DISK, DONE LD C,%00101000 ; USE RAM DISK ATTRIBUTES + LD H,0 ; H := 0, DRIVER HAS NO MODES + LD L,0 ; L := 0, NO BASE I/O ADDRESS MD_DEVICE1: XOR A ; SIGNAL SUCCESS RET diff --git a/Source/HBIOS/ppide.asm b/Source/HBIOS/ppide.asm index 6b795ed3..e87a3a64 100644 --- a/Source/HBIOS/ppide.asm +++ b/Source/HBIOS/ppide.asm @@ -555,6 +555,8 @@ PPIDE_DEVICE: JR Z,PPIDE_DEVICE1 ; IF Z, WE ARE DONE LD C,%01001000 ; OTHERWISE REMOVABLE COMPACT FLASH PPIDE_DEVICE1: + LD H,0 ; H := 0, DRIVER HAS NO MODES + LD L,(IY+PPIDE_DATALO) ; L := BASE I/O ADDRESS XOR A ; SIGNAL SUCCESS RET ; diff --git a/Source/HBIOS/ppp.asm b/Source/HBIOS/ppp.asm index bad672cf..ff395002 100644 --- a/Source/HBIOS/ppp.asm +++ b/Source/HBIOS/ppp.asm @@ -693,6 +693,8 @@ PPPSD_DEVICE: LD D,DIODEV_PPPSD ; D := DEVICE TYPE LD E,(IY+PPPSD_DEV) ; E := PHYSICAL DEVICE NUMBER LD C,%01010000 ; C := ATTRIBUTES, REMOVABLE, SD CARD + LD H,0 ; H := 0, DRIVER HAS NO MODES + LD L,PPIBASE ; L := BASE I/O ADDRESS XOR A ; SIGNAL SUCCESS RET ; diff --git a/Source/HBIOS/prp.asm b/Source/HBIOS/prp.asm index 9a62a741..cea20545 100644 --- a/Source/HBIOS/prp.asm +++ b/Source/HBIOS/prp.asm @@ -550,6 +550,8 @@ PRPSD_DEVICE: LD D,DIODEV_PRPSD ; D := DEVICE TYPE LD E,(IY+PRPSD_DEV) ; E := PHYSICAL DEVICE NUMBER LD C,%01010000 ; C := ATTRIBUTES, REMOVABLE, SD CARD + LD H,0 ; H := 0, DRIVER HAS NO MODES + LD L,PRP_IOBASE ; L := BASE I/O ADDRESS XOR A ; SIGNAL SUCCESS RET ; diff --git a/Source/HBIOS/rf.asm b/Source/HBIOS/rf.asm index 6fbedfe2..282a962e 100644 --- a/Source/HBIOS/rf.asm +++ b/Source/HBIOS/rf.asm @@ -181,6 +181,8 @@ RF_DEVICE: LD D,DIODEV_RF ; D := DEVICE TYPE LD E,(IY+RF_DEV) ; E := PHYSICAL DEVICE NUMBER LD C,%00110000 ; C := ATTRIBUTES, NON-REMOVABLE RAM FLOPPY + LD H,0 ; H := 0, DRIVER HAS NO MODES + LD L,(IY+RF_IOAD) ; L := BASE I/O ADDRESS XOR A ; SIGNAL SUCCESS RET ; diff --git a/Source/HBIOS/sd.asm b/Source/HBIOS/sd.asm index ce6cebf7..a45738ca 100644 --- a/Source/HBIOS/sd.asm +++ b/Source/HBIOS/sd.asm @@ -125,6 +125,7 @@ SD_CS0 .EQU %00000100 ; RTC:2 IS SELECT SD_CLK .EQU %00000010 ; RTC:1 IS CLOCK SD_DI .EQU %00000001 ; RTC:0 IS DATA IN (CARD <- CPU) SD_DO .EQU %10000000 ; RTC:7 IS DATA OUT (CARD -> CPU) +SD_IOBASE .EQU SD_OPRREG ; IOBASE ; RTCDEF .SET SD_OPRDEF ; SET DEFAULT IN HBIOS MAINLINE #ENDIF @@ -139,6 +140,7 @@ SD_CS0 .EQU %00000100 ; RTC:2 IS SELECT SD_CLK .EQU %00000010 ; RTC:1 IS CLOCK SD_DI .EQU %00000001 ; RTC:0 IS DATA IN (CARD <- CPU) SD_DO .EQU %01000000 ; RTC:6 IS DATA OUT (CARD -> CPU) +SD_IOBASE .EQU SD_OPRREG ; IOBASE ; RTCDEF .SET SD_OPRDEF ; SET DEFAULT IN HBIOS MAINLINE #ENDIF @@ -151,6 +153,7 @@ SD_OPRMSK .EQU %00000100 ; MASK FOR BITS WE OWN IN RTC LATCH PORT SD_CS0 .EQU %00000100 ; RTC:2 IS SELECT SD_CNTR .EQU Z180_CNTR SD_TRDR .EQU Z180_TRDR +SD_IOBASE .EQU SD_OPRREG ; IOBASE ; RTCDEF .SET SD_OPRDEF ; SET DEFAULT IN HBIOS MAINLINE #ENDIF @@ -168,6 +171,7 @@ SD_CS0 .EQU %00010000 ; PPIC:4 IS SELECT SD_CLK .EQU %00000010 ; PPIC:1 IS CLOCK SD_DI .EQU %00000001 ; PPIC:0 IS DATA IN (CARD <- CPU) SD_DO .EQU %10000000 ; PPIB:7 IS DATA OUT (CARD -> CPU) +SD_IOBASE .EQU SD_PPIBASE ; IOBASE #ENDIF ; #IF (SDMODE == SDMODE_UART) @@ -180,6 +184,7 @@ SD_CS0 .EQU %00001000 ; UART MCR:3 IS SELECT SD_CLK .EQU %00000100 ; UART MCR:2 IS CLOCK SD_DI .EQU %00000001 ; UART MCR:0 IS DATA IN (CARD <- CPU) SD_DO .EQU %00100000 ; UART MSR:5 IS DATA OUT (CARD -> CPU) +SD_IOBASE .EQU UARTIOB ; IOBASE #ENDIF ; #IF (SDMODE == SDMODE_DSD) ; DUAL SD @@ -193,6 +198,7 @@ SD_CS0 .EQU %00000100 ; RTC:2 IS SELECT SD_CLK .EQU %00000010 ; RTC:1 IS CLOCK SD_DI .EQU %00000001 ; RTC:6 IS DATA IN (CARD <- CPU) SD_DO .EQU %00000001 ; RTC:0 IS DATA OUT (CARD -> CPU) +SD_IOBASE .EQU SD_OPRREG ; IOBASE #ENDIF ; #IF (SDMODE == SDMODE_MK4) ; MARK IV (CSIO STYLE INTERFACE) @@ -202,6 +208,7 @@ SD_OPRDEF .EQU %00000000 ; QUIESCENT STATE SD_CS0 .EQU %00000100 ; SELECT ACTIVE SD_CNTR .EQU Z180_CNTR SD_TRDR .EQU Z180_TRDR +SD_IOBASE .EQU SD_OPRREG ; IOBASE #ENDIF ; #IF (SDMODE == SDMODE_SC) ; SC @@ -213,6 +220,7 @@ SD_CS0 .EQU %00000100 ; RTC:2 IS SELECT FOR PRIMARY SPI CARD SD_CS1 .EQU %00001000 ; RTC:3 IS SELECT FOR SECONDARY SPI CARD SD_CNTR .EQU Z180_CNTR SD_TRDR .EQU Z180_TRDR +SD_IOBASE .EQU SD_OPRREG ; IOBASE ; RTCDEF .SET SD_OPRDEF ; SET DEFAULT IN HBIOS MAINLINE #ENDIF @@ -236,7 +244,7 @@ SD_CD1 .EQU %00000100 ; IN:SD_OPREG:2 = CD2, IN=0 Card detect switch SD_CSX .EQU %00001000 ; IN/OUT:SD_OPREG:3 = CS0, PMOD SPI CS SD_CS0 .EQU %00010000 ; IN/OUT:SD_OPREG:4 = CS1, SDCARD1 CS, IN=1 Card present SD_CS1 .EQU %00100000 ; IN/OUT:SD_OPREG:5 = CS2, SDCARD2 CS, IN=1 Card present - +SD_IOBASE .EQU SD_BASE ; IOBASE #ENDIF ; ; SD CARD COMMANDS @@ -771,6 +779,8 @@ SD_DEVICE: LD D,DIODEV_SD ; D := DEVICE TYPE LD E,(IY+SD_DEV) ; E := PHYSICAL DEVICE NUMBER LD C,%01010000 ; C := ATTRIBUTES, REMOVABLE, SD CARD + LD H,SDMODE ; H := MODE + LD L,(SD_IOBASE) ; L := BASE I/O ADDRESS XOR A ; SIGNAL SUCCESS RET ; diff --git a/Source/HBIOS/simrtc.asm b/Source/HBIOS/simrtc.asm index 28394990..f144d1aa 100644 --- a/Source/HBIOS/simrtc.asm +++ b/Source/HBIOS/simrtc.asm @@ -140,6 +140,8 @@ SIMRTC_SETTIM: SIMRTC_DEVICE: LD D,RTCDEV_SIMH ; D := DEVICE TYPE LD E,0 ; E := PHYSICAL DEVICE NUMBER + LD H,0 ; H := 0, DRIVER HAS NO MODES + LD L,SIMRTC_IO ; L := BASE I/O ADDRESS XOR A ; SIGNAL SUCCESS RET ; diff --git a/Source/HBIOS/sn76489.asm b/Source/HBIOS/sn76489.asm index 0590d256..b65e9f5d 100644 --- a/Source/HBIOS/sn76489.asm +++ b/Source/HBIOS/sn76489.asm @@ -197,7 +197,7 @@ SN7_QUERY_VOLUME: SN7_QUERY_DEV: - LD B, BF_SND_SN76489 + LD B, SNDDEV_SN76489 LD DE, SN76489_PORT_LEFT ; E WITH LEFT PORT LD HL, SN76489_PORT_RIGHT ; L WITH RIGHT PORT @@ -304,6 +304,15 @@ SN7_DURATION: XOR A RET +SN7_DEVICE: + LD D,SNDDEV_SN76489 ; D := DEVICE TYPE + LD E,0 ; E := PHYSICAL UNIT + LD C,$00 ; C := DEVICE TYPE + LD H,0 ; H := 0, DRIVER HAS NO MODES + LD L,SN76489_PORT_LEFT ; L := BASE I/O ADDRESS + XOR A + RET + SN7_FNTBL: .DW SN7_RESET .DW SN7_VOLUME @@ -312,6 +321,7 @@ SN7_FNTBL: .DW SN7_PLAY .DW SN7_QUERY .DW SN7_DURATION + .DW SN7_DEVICE ; #IF (($ - SN7_FNTBL) != (SND_FNCNT * 2)) .ECHO "*** INVALID SND FUNCTION TABLE ***\n" diff --git a/Source/HBIOS/spk.asm b/Source/HBIOS/spk.asm index 427bcf4c..74df2143 100644 --- a/Source/HBIOS/spk.asm +++ b/Source/HBIOS/spk.asm @@ -20,6 +20,7 @@ SP_FNTBL: .DW SP_PLAY .DW SP_QUERY .DW SP_DURATION + .DW SP_DEVICE ; #IF (($ - SP_FNTBL) != (SND_FNCNT * 2)) .ECHO "*** INVALID SND FUNCTION TABLE ***\n" @@ -149,7 +150,7 @@ SP_QUERY_VOLUME: RET ; SP_QUERY_DEV: - LD B, BF_SND_BITMODE ; RETURN DEVICE IDENTIFIER + LD B, SNDDEV_BITMODE ; RETURN DEVICE IDENTIFIER LD DE, (RTCIO*256)+SP_RTCIOMSK ; AND ADDRESS AND DATA PORT XOR A RET @@ -321,6 +322,19 @@ SP_DURATION: RET ; ;====================================================================== +; SOUND DRIVER FUNCTION - DEVICE +;====================================================================== +; +SP_DEVICE: + LD D,SNDDEV_BITMODE ; D := DEVICE TYPE + LD E,0 ; E := PHYSICAL UNIT + LD C,$00 ; C := DEVICE TYPE + LD H,0 ; H := 0, DRIVER HAS NO MODES + LD L,RTCIO ; L := BASE I/O ADDRESS + XOR A + RET +; +;====================================================================== ; ; STANDARD ONE SECOND TONE TABLES AT 1MHZ. ; FOR SP_BEEPER ROUTINE, FIRST WORD LOADED INTO DE, SECOND INTO HL diff --git a/Source/HBIOS/tms.asm b/Source/HBIOS/tms.asm index 9a0ec46a..54927593 100644 --- a/Source/HBIOS/tms.asm +++ b/Source/HBIOS/tms.asm @@ -222,6 +222,8 @@ TMS_VDARES1: ; ENTRY POINT TO AVOID TMS_Z180IO RECURSION TMS_VDADEV: LD D,VDADEV_TMS ; D := DEVICE TYPE LD E,0 ; E := PHYSICAL UNIT IS ALWAYS ZERO + LD H,TMSMODE ; H := MODE + LD L,TMS_DATREG ; L := BASE I/O ADDRESS XOR A ; SIGNAL SUCCESS RET diff --git a/Source/HBIOS/vdu.asm b/Source/HBIOS/vdu.asm index 2c057ca2..bb37c14a 100644 --- a/Source/HBIOS/vdu.asm +++ b/Source/HBIOS/vdu.asm @@ -181,6 +181,8 @@ VDU_VDARES: VDU_VDADEV: LD D,VDADEV_VDU ; D := DEVICE TYPE LD E,0 ; E := PHYSICAL UNIT IS ALWAYS ZERO + LD H,0 ; H := 0, DRIVER HAS NO MODES + LD L,VDU_BASE ; L := BASE I/O ADDRESS XOR A ; SIGNAL SUCCESS RET diff --git a/Source/HBIOS/vga.asm b/Source/HBIOS/vga.asm index dde3ae33..e6e7f6a8 100644 --- a/Source/HBIOS/vga.asm +++ b/Source/HBIOS/vga.asm @@ -204,6 +204,8 @@ VGA_VDARES: VGA_VDADEV: LD D,VDADEV_VGA ; D := DEVICE TYPE LD E,0 ; E := PHYSICAL UNIT IS ALWAYS ZERO + LD H,0 ; H := 0, DRIVER HAS NO MODES + LD L,VGA_BASE ; L := BASE I/O ADDRESS XOR A ; SIGNAL SUCCESS RET diff --git a/Source/ver.inc b/Source/ver.inc index 53106fe9..f36d1c00 100644 --- a/Source/ver.inc +++ b/Source/ver.inc @@ -2,4 +2,4 @@ #DEFINE RMN 1 #DEFINE RUP 1 #DEFINE RTP 0 -#DEFINE BIOSVER "3.1.1-pre.17" +#DEFINE BIOSVER "3.1.1-pre.18" diff --git a/Source/ver.lib b/Source/ver.lib index b2bb943d..d14c4276 100644 --- a/Source/ver.lib +++ b/Source/ver.lib @@ -3,5 +3,5 @@ rmn equ 1 rup equ 1 rtp equ 0 biosver macro - db "3.1.1-pre.17" + db "3.1.1-pre.18" endm