From ade954ab69358cfda3cb82e2cf55bbd083816289 Mon Sep 17 00:00:00 2001 From: Dean Netherton Date: Tue, 28 Apr 2020 17:54:11 +1000 Subject: [PATCH 01/10] SN76489: Added support for BF_SNDQ_DEV/SN7_QUERY_DEV query And updated some driver docs --- Source/Doc/Architecture.md | 92 ++++++++++++++++++++++++++++++++++++-- Source/HBIOS/hbios.inc | 12 +++-- Source/HBIOS/sn76489.asm | 15 ++++++- 3 files changed, 110 insertions(+), 9 deletions(-) diff --git a/Source/Doc/Architecture.md b/Source/Doc/Architecture.md index 94c9a85d..94c7d046 100644 --- a/Source/Doc/Architecture.md +++ b/Source/Doc/Architecture.md @@ -1331,6 +1331,9 @@ chip provides. | C: Audio Device Unit ID | HL: Pitch (0000=lowest note, FFFF=highest note) +| _Returned Values_ +| A: Status (0=OK, else error) + This function sets the sound chip pitch parameter. The pitch will be applied when the next SNDPLAY function is invoked. @@ -1344,14 +1347,17 @@ notes, use the SNDNOTE function. | C: Audio Device Unit ID | L: Note (0 to 255 quarter notes) +| _Returned Values_ +| A: Status (0=OK, else error) + This function sets the sound chip pitch parameter according to standardized notes. -The value corresponds to standard musical notes. The value allows -for selection of a quarter of a semitone by giving a value between 0 +The value corresponds to standard musical notes. The value allows +for selection of a quarter of a semitone by giving a value between 0 and up to the drivers maximum supported value. The lowest note is (0). -For the SN76490 chip, 0 corresponds to note A1# and the value 249 is +For the SN76490 chip, 0 corresponds to note A1# and the value 249 is the maximum supported value, and it corresponds to note C7. ### Function 0x54 -- Sound Play (SNDPLAY) @@ -1359,7 +1365,10 @@ the maximum supported value, and it corresponds to note C7. | _Entry Parameters_ | B: 0x54 | C: Audio Device Unit ID -| D: Channel +| E: Channel + +| _Returned Values_ +| A: Status (0=OK, else error) This function applies the previously specified volume and pitch by programming the sound chip with the appropriate values. The values @@ -1374,6 +1383,81 @@ HBIOS B=53 C=00 L=69 ; Select Middle C (C4) assuming SN76489 HBIOS B=54 C=00 D=01 ; Play note on Channel 1 ``` +### Function 0x55 -- Sound Play (SNDQUERY) + +| _Entry Parameters_ +| B: 0x54 +| C: Audio Device Unit ID +| E: Subfunction + +| _Returned Values_ +| A: Status (0=OK, else error) + +This function will return the status of current pending command or +key aspects of the specific Audio Device. + +#### SNDQUERY Subfunction 0x01 -- Get count of audio channels supported (SNDQ_CHCNT) + +| _Entry Parameters_ +| B: 0x54 +| E: 0x01 + +| _Returned Values_ +| A: Status (0=OK, else error) +| B: Count of standard tone channels +| C: Count of noise tone channels + +#### SNDQUERY Subfunction 0x01 -- Get current volume setting (SNDQ_VOL) + +| _Entry Parameters_ +| B: 0x54 +| E: 0x02 + +| _Returned Values_ +| A: Status (0=OK, else error) +| H: 0 +| L: Current volume setting + +#### SNDQUERY Subfunction 0x03 -- Get current pitch setting (SNDQ_PITCH) + +| _Entry Parameters_ +| B: 0x54 +| E: 0x03 + +| _Returned Values_ +| A: Status (0=OK, else error) +| HL: Current pitch setting + +#### SNDQUERY Subfunction 0x04 -- Get device details (SNDQ_DEV) + +| _Entry Parameters_ +| B: 0x54 +| E: 0x04 + +| _Returned Values_ +| A: Status (0=OK, else error) +| B: Driver identity +| HL: Driver specific port settings +| DE: Driver specific port settings + +Reports information about the audio device unit specified. + +At this stage, only one driver type is supported (SN76489), but is +envisage that more will be added in the future. + +Register B reports the audio device type (see below). + +Registers HL and DE contain relevant port address for the hardware +as such are specific to each device type. + +The currently defined audio device types are: + +AUDIO ID | Value | Device | Returned registers +-------------- | ----- | ---------- | -------------------------------------------- +SND_SN76489 | 0x01 | SN76489 | E: Left channel port, L: Right channel port +SND_SNAY38910 | 0x02 | AY-3-8910 | D: Address port, E: Data port + + `\clearpage`{=latex} System (SYS) diff --git a/Source/HBIOS/hbios.inc b/Source/HBIOS/hbios.inc index 17a9ae23..f470b71c 100644 --- a/Source/HBIOS/hbios.inc +++ b/Source/HBIOS/hbios.inc @@ -58,13 +58,19 @@ BF_SNDVOL .EQU BF_SND + 1 ; REQUEST SOUND VOL - L CONTAINS VOLUME (255 MAX, 0 SI BF_SNDPIT .EQU BF_SND + 2 ; REQUEST SOUND PITCH - HL CONTAINS PITCH DRIVER SPECIFIC VALUE BF_SNDNOTE .EQU BF_SND + 3 ; REQUEST NOTE - L CONTAINS NOTE - EACH VALUE IS QUARTER NOTE BF_SNDPLAY .EQU BF_SND + 4 ; INITIATE THE REQUESTED SOUND COMMAND -BF_SNDQUERY .EQU BF_SND + 5 ; D IS CHANNEL, E IS SUBCOMMAND +BF_SNDQUERY .EQU BF_SND + 5 ; E IS SUBFUNCTION ; ; BF_SNDQUERY SUBCOMMANDS BF_SNDQ_STATUS .EQU 0 BF_SNDQ_CHCNT .EQU BF_SNDQ_STATUS + 1 ; RETURN COUNT OF CHANNELS -BF_SNDQ_SVOLUME .EQU BF_SNDQ_STATUS + 2 ; 8 BIT NUMBER -BF_SNDQ_SPITCH .EQU BF_SNDQ_STATUS + 3 ; 16 BIT NUMBER +BF_SNDQ_VOLUME .EQU BF_SNDQ_STATUS + 2 ; 8 BIT NUMBER +BF_SNDQ_PITCH .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_SNAY38910 .EQU BF_SNDDEV + 2 + ; BF_SYS .EQU $F0 BF_SYSRESET .EQU BF_SYS + 0 ; SOFT RESET HBIOS diff --git a/Source/HBIOS/sn76489.asm b/Source/HBIOS/sn76489.asm index 3c12acb6..f3430b3a 100644 --- a/Source/HBIOS/sn76489.asm +++ b/Source/HBIOS/sn76489.asm @@ -168,12 +168,15 @@ SN7_QUERY: CP BF_SNDQ_CHCNT JR Z, SN7_QUERY_CHCNT - CP BF_SNDQ_SPITCH + CP BF_SNDQ_PITCH JR Z, SN7_QUERY_PITCH - CP BF_SNDQ_SVOLUME + CP BF_SNDQ_VOLUME JR Z, SN7_QUERY_VOLUME + CP BF_SNDQ_DEV + JR Z, SN7_QUERY_DEV + OR $FF ; SIGNAL FAILURE RET @@ -197,6 +200,14 @@ SN7_QUERY_VOLUME: XOR A RET +SN7_QUERY_DEV: + + LD B, BF_SND_SN76489 + LD DE, SN76489_PORT_LEFT ; E WITH LEFT PORT + LD HL, SN76489_PORT_RIGHT ; L WITH RIGHT PORT + + XOR A + RET ; ; UTIL FUNCTIONS ; From b1bb684a048e757ca8cbd4d3af851a3c811641c5 Mon Sep 17 00:00:00 2001 From: Dean Netherton Date: Tue, 28 Apr 2020 18:35:20 +1000 Subject: [PATCH 02/10] SN76489: Prevent and return error code if a pitch greater than 03FF is attempted to be set --- Source/HBIOS/sn76489.asm | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/Source/HBIOS/sn76489.asm b/Source/HBIOS/sn76489.asm index f3430b3a..8870e801 100644 --- a/Source/HBIOS/sn76489.asm +++ b/Source/HBIOS/sn76489.asm @@ -147,11 +147,19 @@ SN7_PITCH: AUDDEBUG("SN7PIT ") AUDTRACE_HL AUDDEBUG("\r\n") - LD (PENDING_PITCH), HL + LD A, H + CP $04 + JP NC, SN7_QUERY_PITCH1 ; RETURN NZ IF NUMBER TOO LARGE + + LD (PENDING_PITCH), HL XOR A ; SIGNAL SUCCESS RET +SN7_QUERY_PITCH1: + OR $FF + RET + SN7_PLAY: AUDDEBUG("SN7PLY ") AUDTRACE_D @@ -188,7 +196,6 @@ SN7_QUERY_CHCNT: SN7_QUERY_PITCH: LD HL, (PENDING_PITCH) - XOR A RET From 7542fa8032d8baaaad9b109e4f6c335109a40035 Mon Sep 17 00:00:00 2001 From: Dean Netherton Date: Tue, 28 Apr 2020 19:50:29 +1000 Subject: [PATCH 03/10] TracingBug: PRTHEXWORDHL was tracing DE not HL --- Source/HBIOS/util.asm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Source/HBIOS/util.asm b/Source/HBIOS/util.asm index a1ca84ff..8dc066db 100644 --- a/Source/HBIOS/util.asm +++ b/Source/HBIOS/util.asm @@ -187,9 +187,9 @@ PRTHEXWORD: ; PRTHEXWORDHL: PUSH AF - LD A,D + LD A,H CALL PRTHEXBYTE - LD A,E + LD A,L CALL PRTHEXBYTE POP AF RET From 9cdbc5b9812810b753aaca0738e480182b34d790 Mon Sep 17 00:00:00 2001 From: Dean Netherton Date: Tue, 28 Apr 2020 19:51:15 +1000 Subject: [PATCH 04/10] SN76489: Do not play when period is overflowing --- Source/Apps/Tune/Tune.asm | 6 +++--- Source/HBIOS/sn76489.asm | 23 +++++++++++++++++++++-- 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/Source/Apps/Tune/Tune.asm b/Source/Apps/Tune/Tune.asm index aa28cb95..adf29d33 100644 --- a/Source/Apps/Tune/Tune.asm +++ b/Source/Apps/Tune/Tune.asm @@ -2002,7 +2002,7 @@ PLAYVIAHBIOS: LD C, 0 LD HL, (AYREGS+TonA) ld a, h - AND $3F + AND $0F LD H, A RST 08 @@ -2027,7 +2027,7 @@ PLAYVIAHBIOS: LD C, 0 LD HL, (AYREGS+TonB) ld a, h - AND $3F + AND $0F LD H, A RST 08 @@ -2052,7 +2052,7 @@ PLAYVIAHBIOS: LD C, 0 LD HL, (AYREGS+TonC) ld a, h - AND $3F + AND $0F LD H, A RST 08 diff --git a/Source/HBIOS/sn76489.asm b/Source/HBIOS/sn76489.asm index 8870e801..c80beff6 100644 --- a/Source/HBIOS/sn76489.asm +++ b/Source/HBIOS/sn76489.asm @@ -156,8 +156,12 @@ SN7_PITCH: XOR A ; SIGNAL SUCCESS RET -SN7_QUERY_PITCH1: - OR $FF +SN7_QUERY_PITCH1: ; REQUESTED PERIOD IS LARGER THAN THE SN76489 CAN SUPPORT + LD L, $FF + LD H, $FF + LD (PENDING_PITCH), HL + + OR $FF ; SIGNAL FAILURE RET SN7_PLAY: @@ -165,12 +169,27 @@ SN7_PLAY: AUDTRACE_D AUDDEBUG("\r\n") + LD A, (PENDING_PITCH + 1) + CP $FF + JR Z, SN7_PLAY1 ; PERIOD IS TOO LARGE, UNABLE TO PLAY CALL SN7_APPLY_VOL CALL SN7_APPLY_PIT XOR A ; SIGNAL SUCCESS RET +SN7_PLAY1: ; TURN CHANNEL VOL TO OFF AND STOP PLAYING + LD A, (PENDING_VOLUME) + PUSH AF + LD A, 0 + LD (PENDING_VOLUME), A + CALL SN7_APPLY_VOL + POP AF + LD (PENDING_VOLUME), A + + OR $FF ; SIGNAL FAILURE + RET + SN7_QUERY: LD A, E CP BF_SNDQ_CHCNT From c51fa1fcaec557119977376135e4fa6a1aa06705 Mon Sep 17 00:00:00 2001 From: Dean Netherton Date: Tue, 28 Apr 2020 20:32:09 +1000 Subject: [PATCH 05/10] SN76489: Renamed variable 'pitch' to 'period' --- Source/Apps/Tune/Tune.asm | 6 ++--- Source/Apps/Tune/hbios.inc | 2 +- Source/Doc/Architecture.md | 16 ++++++------ Source/HBIOS/hbios.inc | 6 ++--- Source/HBIOS/sn76489.asm | 52 +++++++++++++++++++------------------- 5 files changed, 41 insertions(+), 41 deletions(-) diff --git a/Source/Apps/Tune/Tune.asm b/Source/Apps/Tune/Tune.asm index adf29d33..1b523d3c 100644 --- a/Source/Apps/Tune/Tune.asm +++ b/Source/Apps/Tune/Tune.asm @@ -1998,7 +1998,7 @@ PLAYVIAHBIOS: LD L, A RST 08 - LD B, BF_SNDPIT + LD B, BF_SNDPRD LD C, 0 LD HL, (AYREGS+TonA) ld a, h @@ -2023,7 +2023,7 @@ PLAYVIAHBIOS: LD L, A RST 08 - LD B, BF_SNDPIT + LD B, BF_SNDPRD LD C, 0 LD HL, (AYREGS+TonB) ld a, h @@ -2048,7 +2048,7 @@ PLAYVIAHBIOS: LD L, A RST 08 - LD B, BF_SNDPIT + LD B, BF_SNDPRD LD C, 0 LD HL, (AYREGS+TonC) ld a, h diff --git a/Source/Apps/Tune/hbios.inc b/Source/Apps/Tune/hbios.inc index 874a9699..f2442f78 100644 --- a/Source/Apps/Tune/hbios.inc +++ b/Source/Apps/Tune/hbios.inc @@ -10,6 +10,6 @@ BF_SYSGET .EQU $F8 ; HBIOS: SYSGET function BF_SND .EQU $50 BF_SNDRESET .EQU BF_SND + 0 ; RESET SOUND SYSTEM BF_SNDVOL .EQU BF_SND + 1 ; REQUEST SOUND VOL - D IS CHANNEL, E CONTAINS VOLUME (255 MAX, 0 SILENT) - SCALED AS REQUIRED BY DRIVER (EG: MAPS TO JUST 4 BIT RESOLUTION FOR SN76489) -BF_SNDPIT .EQU BF_SND + 2 ; REQUEST SOUND PITCH - D IS CHANNEL, HL CONTAINS PITCH (0 LOWEST NOTE, FFFF HIGHEST NOTE) - SCALED BY DRIVER (EG: MAPS TO JUST 10 BITS FOR SN76489 ) +BF_SNDPRD .EQU BF_SND + 2 ; REQUEST SOUND PERIOD - D IS CHANNEL, HL CONTAINS PERIOD (0 LOWEST NOTE) - SCALED BY DRIVER (EG: MAPS TO JUST 10 BITS FOR SN76489 ) BF_SNDPLAY .EQU BF_SND + 4 ; INITIATE THE REQUESTED SOUND COMMAND BF_SNDQUERY .EQU BF_SND + 5 ; D IS CHANNEL, E IS SUBCOMMAND diff --git a/Source/Doc/Architecture.md b/Source/Doc/Architecture.md index 94c7d046..c618667e 100644 --- a/Source/Doc/Architecture.md +++ b/Source/Doc/Architecture.md @@ -1324,20 +1324,20 @@ Note that not all sounds chips implement 256 volume levels. The driver will scale the volume to the closest possible level the chip provides. -### Function 0x52 -- Sound Pitch (SNDPIT) +### Function 0x52 -- Sound period (SNDPRD) | _Entry Parameters_ | B: 0x52 | C: Audio Device Unit ID -| HL: Pitch (0000=lowest note, FFFF=highest note) +| HL: period (0000=lowest note, FFFF=highest note) | _Returned Values_ | A: Status (0=OK, else error) -This function sets the sound chip pitch parameter. The pitch will +This function sets the sound chip period parameter. The period will be applied when the next SNDPLAY function is invoked. -The pitch value is a driver specific value. To play standardized +The period value is a driver specific value. To play standardized notes, use the SNDNOTE function. ### Function 0x53 -- Sound Note (SNDNOTE) @@ -1350,7 +1350,7 @@ notes, use the SNDNOTE function. | _Returned Values_ | A: Status (0=OK, else error) -This function sets the sound chip pitch parameter according to +This function sets the sound chip period parameter according to standardized notes. The value corresponds to standard musical notes. The value allows @@ -1370,7 +1370,7 @@ the maximum supported value, and it corresponds to note C7. | _Returned Values_ | A: Status (0=OK, else error) -This function applies the previously specified volume and pitch by +This function applies the previously specified volume and period by programming the sound chip with the appropriate values. The values are applied to the specified channel of the chip. @@ -1418,7 +1418,7 @@ key aspects of the specific Audio Device. | H: 0 | L: Current volume setting -#### SNDQUERY Subfunction 0x03 -- Get current pitch setting (SNDQ_PITCH) +#### SNDQUERY Subfunction 0x03 -- Get current period setting (SNDQ_PERIOD) | _Entry Parameters_ | B: 0x54 @@ -1426,7 +1426,7 @@ key aspects of the specific Audio Device. | _Returned Values_ | A: Status (0=OK, else error) -| HL: Current pitch setting +| HL: Current period setting #### SNDQUERY Subfunction 0x04 -- Get device details (SNDQ_DEV) diff --git a/Source/HBIOS/hbios.inc b/Source/HBIOS/hbios.inc index f470b71c..e3fe6667 100644 --- a/Source/HBIOS/hbios.inc +++ b/Source/HBIOS/hbios.inc @@ -55,7 +55,7 @@ BF_VDAKRD .EQU BF_VDA + 14 ; READ KEYBOARD BF_SND .EQU $50 BF_SNDRESET .EQU BF_SND + 0 ; RESET SOUND SYSTEM BF_SNDVOL .EQU BF_SND + 1 ; REQUEST SOUND VOL - L CONTAINS VOLUME (255 MAX, 0 SILENT) - SCALED AS REQUIRED BY DRIVER (EG: MAPS TO JUST 4 BIT RESOLUTION FOR SN76489) -BF_SNDPIT .EQU BF_SND + 2 ; REQUEST SOUND PITCH - HL CONTAINS PITCH DRIVER SPECIFIC VALUE +BF_SNDPRD .EQU BF_SND + 2 ; REQUEST SOUND PERIOD - HL CONTAINS DRIVER SPECIFIC VALUE BF_SNDNOTE .EQU BF_SND + 3 ; REQUEST NOTE - L CONTAINS NOTE - EACH VALUE IS QUARTER NOTE BF_SNDPLAY .EQU BF_SND + 4 ; INITIATE THE REQUESTED SOUND COMMAND BF_SNDQUERY .EQU BF_SND + 5 ; E IS SUBFUNCTION @@ -64,10 +64,10 @@ BF_SNDQUERY .EQU BF_SND + 5 ; E IS SUBFUNCTION BF_SNDQ_STATUS .EQU 0 BF_SNDQ_CHCNT .EQU BF_SNDQ_STATUS + 1 ; RETURN COUNT OF CHANNELS BF_SNDQ_VOLUME .EQU BF_SNDQ_STATUS + 2 ; 8 BIT NUMBER -BF_SNDQ_PITCH .EQU BF_SNDQ_STATUS + 3 ; 16 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_SNDDEV .EQU 0 ; TYPES OF SOUND DRIVERS BF_SND_SN76489 .EQU BF_SNDDEV + 1 BF_SND_SNAY38910 .EQU BF_SNDDEV + 2 diff --git a/Source/HBIOS/sn76489.asm b/Source/HBIOS/sn76489.asm index c80beff6..4ce9546b 100644 --- a/Source/HBIOS/sn76489.asm +++ b/Source/HBIOS/sn76489.asm @@ -33,9 +33,9 @@ SN7_LAST_NOTE .EQU 209300 ; C7 A1S .EQU SN7RATIO / SN7_FIRST_NOTE C7 .EQU SN7RATIO / SN7_LAST_NOTE - .ECHO "SN76489: range of A1# (pitch: " + .ECHO "SN76489: range of A1# (period: " .ECHO A1S - .ECHO ") to C7 (pitch: " + .ECHO ") to C7 (period: " .ECHO C7 .ECHO ")\n" @@ -132,34 +132,34 @@ SN7_NOTE: LD HL, SN7NOTETBL ADD HL, DE - LD A, (HL) ; RETRIEVE PITCH COUNT FROM SN7NOTETBL + LD A, (HL) ; RETRIEVE PERIOD COUNT FROM SN7NOTETBL INC HL LD H, (HL) LD L, A - JR SN7_PITCH ; APPLY PITCH + JR SN7_PERIOD ; APPLY PERIOD SN7_NOTE1: OR $FF ; NOT IMPLEMENTED YET RET -SN7_PITCH: - AUDDEBUG("SN7PIT ") +SN7_PERIOD: + AUDDEBUG("SN7PRD ") AUDTRACE_HL AUDDEBUG("\r\n") LD A, H CP $04 - JP NC, SN7_QUERY_PITCH1 ; RETURN NZ IF NUMBER TOO LARGE + JP NC, SN7_QUERY_PERIOD1 ; RETURN NZ IF NUMBER TOO LARGE - LD (PENDING_PITCH), HL + LD (PENDING_PERIOD), HL XOR A ; SIGNAL SUCCESS RET -SN7_QUERY_PITCH1: ; REQUESTED PERIOD IS LARGER THAN THE SN76489 CAN SUPPORT +SN7_QUERY_PERIOD1: ; REQUESTED PERIOD IS LARGER THAN THE SN76489 CAN SUPPORT LD L, $FF LD H, $FF - LD (PENDING_PITCH), HL + LD (PENDING_PERIOD), HL OR $FF ; SIGNAL FAILURE RET @@ -169,11 +169,11 @@ SN7_PLAY: AUDTRACE_D AUDDEBUG("\r\n") - LD A, (PENDING_PITCH + 1) + LD A, (PENDING_PERIOD + 1) CP $FF JR Z, SN7_PLAY1 ; PERIOD IS TOO LARGE, UNABLE TO PLAY CALL SN7_APPLY_VOL - CALL SN7_APPLY_PIT + CALL SN7_APPLY_PRD XOR A ; SIGNAL SUCCESS RET @@ -195,8 +195,8 @@ SN7_QUERY: CP BF_SNDQ_CHCNT JR Z, SN7_QUERY_CHCNT - CP BF_SNDQ_PITCH - JR Z, SN7_QUERY_PITCH + CP BF_SNDQ_PERIOD + JR Z, SN7_QUERY_PERIOD CP BF_SNDQ_VOLUME JR Z, SN7_QUERY_VOLUME @@ -213,8 +213,8 @@ SN7_QUERY_CHCNT: XOR A RET -SN7_QUERY_PITCH: - LD HL, (PENDING_PITCH) +SN7_QUERY_PERIOD: + LD HL, (PENDING_PERIOD) XOR A RET @@ -275,11 +275,11 @@ SN7_APPLY_VOL: ; APPLY VOLUME TO BOTH LEFT AND RIGHT CHANNELS POP BC RET -SN7_APPLY_PIT: +SN7_APPLY_PRD: PUSH DE PUSH BC PUSH AF - LD HL, (PENDING_PITCH) + LD HL, (PENDING_PERIOD) LD A, D AND $3 @@ -289,11 +289,11 @@ SN7_APPLY_PIT: RLCA RLCA OR $80 - LD B, A ; PITCH COMMAND 1 - CONTAINS CHANNEL ONLY + LD B, A ; PERIOD COMMAND 1 - CONTAINS CHANNEL ONLY LD A, L ; GET LOWER 4 BITS FOR COMMAND 1 AND $F - OR B ; A NOW CONATINS FIRST PITCH COMMAND + OR B ; A NOW CONATINS FIRST PERIOD COMMAND AUDTRACE(TRACE_PORT_WR) AUDTRACE_A @@ -316,7 +316,7 @@ SN7_APPLY_PIT: RLCA RLCA RLCA ; AND PLACE IN BITS 5 AND 6 - OR B ; OR THE TWO SETS OF BITS TO MAKE 2ND PITCH COMMAND + OR B ; OR THE TWO SETS OF BITS TO MAKE 2ND PERIOD COMMAND AUDTRACE(TRACE_PORT_WR) AUDTRACE_A @@ -334,7 +334,7 @@ SN7_APPLY_PIT: SN7_FNTBL: .DW SN7_RESET .DW SN7_VOLUME - .DW SN7_PITCH + .DW SN7_PERIOD .DW SN7_NOTE .DW SN7_PLAY .DW SN7_QUERY @@ -344,8 +344,8 @@ SN7_FNTBL: !!!!! #ENDIF -PENDING_PITCH - .DW 0 ; PENDING PITCH (10 BITS) +PENDING_PERIOD + .DW 0 ; PENDING PERIOD (10 BITS) PENDING_VOLUME .DB 0 ; PENDING VOL (8 BITS -> DOWNOVERTED TO 4 BITS AND INVERTED) @@ -359,8 +359,8 @@ TRACE_VOLUME_SET .DB "\r\nSN7_VOLUME_SET CH: $" TRACE_PLAY .DB "\r\nPLAY\r\n$" TRACE_VOLUME .DB ", VOL: $" TRACE_PORT_WR .DB "\r\nOUT SN76489, $" -TRACE_PITCH_SET .DB "\r\nSN7_PITCH_SET CH: $" -TRACE_PITCH .DB ", PITCH: $" +TRACE_PERIOD_SET .DB "\r\nSN7_PERIOD_SET CH: $" +TRACE_PERIOD .DB ", PERIOD: $" TRACE_NEWLINE .DB "\r\n$" #ENDIF From 36dff411fdfc56e31f124566f39b404539cd0656 Mon Sep 17 00:00:00 2001 From: Wayne Warthen Date: Tue, 28 Apr 2020 10:58:48 -0700 Subject: [PATCH 06/10] Minor Doc Update --- Doc/RomWBW Applications.pdf | Bin 140215 -> 140215 bytes Doc/RomWBW Architecture.pdf | Bin 396943 -> 403920 bytes Doc/RomWBW Disk Catalog.pdf | Bin 130986 -> 130986 bytes Doc/RomWBW Getting Started.pdf | Bin 166329 -> 166329 bytes Source/Doc/Architecture.md | 14 +++++++------- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Doc/RomWBW Applications.pdf b/Doc/RomWBW Applications.pdf index 4e1c4b27dd16fe4b5cedfe4a8364293e37aea1a4..2dd3342c77e28d67dcba0a9d1b986dcfc83b0adf 100644 GIT binary patch delta 111 zcmdmfoMZcOj)pCa8o$^r3=K@pjZCNO|6-JZakdBjVr12Hb~Ljzb~SS}HL`TIG&VGJ fa&vVyvotVtadkGgFtczpu~V=iq-6RmWhPkw{(l`w delta 111 zcmdmfoMZcOj)pCa8o$_$jf@P8jLoO(|6-JZakdBjVr12Hc5!lYGd6T}Gjnltax^wF fw=^*|cQUguaB_1sHE=a>wo|Ynq-6RmWhPkw30)nF diff --git a/Doc/RomWBW Architecture.pdf b/Doc/RomWBW Architecture.pdf index f4da7db2ec03c4d797b1380e4edf6dfa9ac5ac03..f6c4ae6eea3296f3ee988b297b339cbb201b8f36 100644 GIT binary patch delta 45319 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%0AUAd%%*0_cvJ-XSUH?cnC3f|du_ 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 CAS6Tp delta 133 zcmZ4WpMBMT_J%Etr(bFr8yOiGnV9Mtn5!EYsB3cR`{t*(B$lKqXt-DbWef~VjG#)k ze|^aqD(Y}+Ui;9_WQW^Q4pU_(gB^xprBvH&v! BB$faG diff --git a/Doc/RomWBW Getting Started.pdf b/Doc/RomWBW Getting Started.pdf index e25d7453e537ce1ba29491d3b5a354fba1746ed3..b399e547fafb22ba3b36af0bdb95b5630cbc3115 100644 GIT binary patch delta 113 zcmdlvnQP}{u7(!IElg}N>=uRwrsjrb(|Kct7H+Q2CT6ZC hZl+EyPL5`VmKK&K&Xy+T1{QV-HiVQ+pVP@C3jkIY8?^uc diff --git a/Source/Doc/Architecture.md b/Source/Doc/Architecture.md index c618667e..7049f30a 100644 --- a/Source/Doc/Architecture.md +++ b/Source/Doc/Architecture.md @@ -1324,12 +1324,12 @@ Note that not all sounds chips implement 256 volume levels. The driver will scale the volume to the closest possible level the chip provides. -### Function 0x52 -- Sound period (SNDPRD) +### Function 0x52 -- Sound Period (SNDPRD) | _Entry Parameters_ | B: 0x52 | C: Audio Device Unit ID -| HL: period (0000=lowest note, FFFF=highest note) +| HL: Period (0000=lowest note, FFFF=highest note) | _Returned Values_ | A: Status (0=OK, else error) @@ -1383,7 +1383,7 @@ HBIOS B=53 C=00 L=69 ; Select Middle C (C4) assuming SN76489 HBIOS B=54 C=00 D=01 ; Play note on Channel 1 ``` -### Function 0x55 -- Sound Play (SNDQUERY) +### Function 0x55 -- Sound Query (SNDQUERY) | _Entry Parameters_ | B: 0x54 @@ -1393,7 +1393,7 @@ HBIOS B=54 C=00 D=01 ; Play note on Channel 1 | _Returned Values_ | A: Status (0=OK, else error) -This function will return the status of current pending command or +This function will return the status of the current pending command or key aspects of the specific Audio Device. #### SNDQUERY Subfunction 0x01 -- Get count of audio channels supported (SNDQ_CHCNT) @@ -1443,12 +1443,12 @@ key aspects of the specific Audio Device. Reports information about the audio device unit specified. At this stage, only one driver type is supported (SN76489), but is -envisage that more will be added in the future. +envisaged that more will be added in the future. Register B reports the audio device type (see below). -Registers HL and DE contain relevant port address for the hardware -as such are specific to each device type. +Registers HL and DE contain relevant port addresses for the hardware +specific to each device type. The currently defined audio device types are: From e50f5f0935c5cfed2386f19660497375bfd53a2b Mon Sep 17 00:00:00 2001 From: Wayne Warthen Date: Wed, 29 Apr 2020 17:45:04 -0700 Subject: [PATCH 07/10] Add support for EPFDC Credit to Alan Cox for the changes. --- Doc/ChangeLog.txt | 1 + Source/Apps/FDU/FDU.asm | 35 ++++++++++++++++++++++-------- Source/Apps/Tune/Makefile | 6 ++--- Source/Apps/Tune/Tune.asm | 4 +++- Source/HBIOS/Config/MK4_std.asm | 2 +- Source/HBIOS/Config/RCZ180_ext.asm | 2 +- Source/HBIOS/Config/RCZ180_nat.asm | 2 +- Source/HBIOS/Config/RCZ80_std.asm | 2 +- Source/HBIOS/Config/SBC_std.asm | 2 +- Source/HBIOS/Config/SCZ180_126.asm | 2 +- Source/HBIOS/Config/SCZ180_130.asm | 2 +- Source/HBIOS/Config/SCZ180_131.asm | 2 +- Source/HBIOS/cfg_dyno.asm | 2 +- Source/HBIOS/cfg_ezz80.asm | 2 +- Source/HBIOS/cfg_master.asm | 2 +- Source/HBIOS/cfg_mk4.asm | 2 +- Source/HBIOS/cfg_n8.asm | 2 +- Source/HBIOS/cfg_rcz180.asm | 2 +- Source/HBIOS/cfg_rcz80.asm | 2 +- Source/HBIOS/cfg_sbc.asm | 2 +- Source/HBIOS/cfg_scz180.asm | 2 +- Source/HBIOS/cfg_zeta.asm | 2 +- Source/HBIOS/cfg_zeta2.asm | 2 +- Source/HBIOS/dbgmon.asm | 13 +++++++++++ Source/HBIOS/fd.asm | 17 ++++++++++----- Source/HBIOS/std.asm | 1 + Source/ver.inc | 2 +- Source/ver.lib | 2 +- 28 files changed, 80 insertions(+), 39 deletions(-) diff --git a/Doc/ChangeLog.txt b/Doc/ChangeLog.txt index 3b10f0a5..f6324c6e 100644 --- a/Doc/ChangeLog.txt +++ b/Doc/ChangeLog.txt @@ -14,6 +14,7 @@ Version 3.1 - M?O: RomWBW Disk Catalog document - DEN: Updated TMS to optionally trigger SYSTIMER interrupt (TMSTIMENABLE) - J?M: Updated KERMIT applications with VT100 terminal support +- A?C: Added support for EPFDC Version 3.0.1 ------------- diff --git a/Source/Apps/FDU/FDU.asm b/Source/Apps/FDU/FDU.asm index da176f06..23241dfa 100644 --- a/Source/Apps/FDU/FDU.asm +++ b/Source/Apps/FDU/FDU.asm @@ -45,6 +45,7 @@ ; - USE EOT=R TO END R/W AFTER ONE SECTOR INSTEAD ; OF USING PULSE TC ; 2020-01-05: V5.4 ADDED SUPPORT FOR DYNO FDC +; 2020-04-29: v5.5 ADDED SUPPORT FOR ETCHED PIXELS FDC ; ;_______________________________________________________________________________ ; @@ -79,6 +80,7 @@ FDC_RCSMC .EQU 6 FDC_RCWDC .EQU 7 FDC_SMZ80 .EQU 8 FDC_DYNO .EQU 9 +FDC_EPFDC .EQU 10 ; ; FDC MODE ; @@ -213,7 +215,7 @@ INIT5: XOR A RET -STR_BANNER .DB "Floppy Disk Utility (FDU) v5.4, 05-jAN-2020$" +STR_BANNER .DB "Floppy Disk Utility (FDU) v5.5, 29-Apr-2020$" STR_BANNER2 .DB "Copyright (C) 2020, Wayne Warthen, GNU GPL v3","$" STR_HBIOS .DB " [HBIOS]$" STR_UBIOS .DB " [UBIOS]$" @@ -284,6 +286,7 @@ FDCTBL: ; LABEL CONFIG DATA .DW STR_RCWDC, CFG_RCWDC .DW STR_SMZ80, CFG_SMZ80 .DW STR_DYNO, CFG_DYNO + .DW STR_EPFDC, CFG_EPFDC FDCCNT .EQU ($-FDCTBL)/4 ; FD CONTROLLER COUNT ; ; FDC LABEL STRINGS @@ -298,6 +301,7 @@ STR_RCSMC .TEXT "RC-SMC$" STR_RCWDC .TEXT "RC-WDC$" STR_SMZ80 .TEXT "SMZ80$" STR_DYNO .TEXT "DYNO$" +STR_EPFDC .TEXT "EPFDC$" ; ; FDC CONFIGURATION BLOCKS ; @@ -419,6 +423,17 @@ CFG_DYNO: .DB 0FFH ; PSEUDO DMA DATA PORT .DB _PCAT ; MODE= ; +CFG_EPFDC: + .DB 048H ; FDC MAIN STATUS REGISTER + .DB 049H ; FDC DATA PORT + .DB 0FFH ; DATA INPUT REGISTER + .DB 04AH ; DIGITAL OUTPUT REGISTER (LATCH) + .DB 04BH ; DCR + .DB 0FFH ; DACK + .DB 04CH ; TERMINAL COUNT (W/ DACK) + .DB 0FFH ; PSEUDO DMA DATA PORT + .DB _PCAT ; MODE= +; FDCID .DB 0 ; FDC IDENTIFIER (0 INDEXED) FDCBM .DB 0 ; FDC ID BITMAP FDCLBL .DW 0 ; POINTER TO ACTIVE FDC LABEL STRING @@ -437,6 +452,7 @@ FSS_MENU: .TEXT " (H) RC2014 WDC (SMB)\r\n" .TEXT " (I) SmallZ80 Expansion\r\n" .TEXT " (J) Dyno-Card FDC, D1030\r\n" + .TEXT " (K) RC2014 EPFDC\r\n" .TEXT " (X) Exit\r\n" .TEXT "=== OPTION ===> $\r\n" ; @@ -1517,6 +1533,7 @@ MD_MAP: .DB %00000001 ; RCWDC POLL .DB %00000001 ; SMZ80 POLL .DB %00000001 ; DYNO POLL + .DB %00000001 ; EPFDC POLL ; ; MEDIA DESCRIPTION BLOCK ; @@ -1877,7 +1894,7 @@ FM_DRAW0B: ; ZETA, DIO3 LD A,(FST_DOR) AND 00000010B JR FM_DRAW1 -FM_DRAW0C: ; DIDE, N8, ZETA2, RCWDC, SMZ80, DYNO +FM_DRAW0C: ; DIDE, N8, ZETA2, RCWDC, SMZ80, DYNO, EPFDC LD A,(FST_DOR) AND 11110000B JR FM_DRAW1 @@ -2030,7 +2047,7 @@ FM_MOTOR0B: ; ZETA, DIO3 LD A,(FST_DOR) AND 00000010B JR FM_MOTOR1 -FM_MOTOR0C: ; DIDE, N8, ZETA2, RCWDC, SMZ80, DYNO +FM_MOTOR0C: ; DIDE, N8, ZETA2, RCWDC, SMZ80, DYNO, EPFDC LD A,(FST_DOR) AND 11110000B JR FM_MOTOR1 @@ -2769,7 +2786,7 @@ FC_INIT1: ; DIO FC_INIT2: ; ZETA, DIO3 LD A,(FCD_DORB) JR FC_INIT5 -FC_INIT3: ; DIDE, N8, ZETA2, RCWDC, SMZ80, DYNO +FC_INIT3: ; DIDE, N8, ZETA2, RCWDC, SMZ80, DYNO, EPFDC LD A,(FCD_DORC) JR FC_INIT5 FC_INIT4: ; WDSMC @@ -2813,7 +2830,7 @@ FC_RESETFDC1: ; ZETA, DIO3, RCSMC POP AF OUT (C),A JR FC_RESETFDC3 -FC_RESETFDC2: ; DIDE, N8, ZETA2, RCWDC, SMZ80, DYNO +FC_RESETFDC2: ; DIDE, N8, ZETA2, RCWDC, SMZ80, DYNO, EPFDC LD A,0 OUT (C),A LD A,(FST_DOR) @@ -2840,7 +2857,7 @@ FC_PULSETC: ;RES 0,A ;OUT (C),A ;JR FC_PULSETC2 -;FC_PULSETC1: ; DIDE, N8, ZETA2, RCWDC, SMZ80, DYNO +;FC_PULSETC1: ; DIDE, N8, ZETA2, RCWDC, SMZ80, DYNO, EPFDC ;LD C,(IY+CFG_TC) ;IN A,(C) ;JR FC_PULSETC2 @@ -2872,7 +2889,7 @@ FC_MOTORON2: ; ZETA, DIO3 LD HL,FST_DOR ; POINT TO FDC_DOR SET 1,(HL) JR FC_MOTORON5 -FC_MOTORON3: ; DIDE, N8, ZETA2, RCWDC, SMZ80, DYNO +FC_MOTORON3: ; DIDE, N8, ZETA2, RCWDC, SMZ80, DYNO, EPFDC LD HL,FST_DOR ; POINT TO FDC_DOR LD A,(HL) ; START WITH CURRENT DOR AND 11111100B ; GET RID OF ANY ACTIVE DS BITS @@ -2936,7 +2953,7 @@ FC_MOTOROFF2: ; ZETA, DIO3 LD HL,FST_DOR ; POINT TO FDC_DOR RES 1,(HL) JR FC_MOTOROFF5 -FC_MOTOROFF3: ; DIDE, N8, ZETA2, RCWDC, SMZ80, DYNO +FC_MOTOROFF3: ; DIDE, N8, ZETA2, RCWDC, SMZ80, DYNO, EPFDC LD HL,FST_DOR ; POINT TO FDC_DOR LD A,DORC_INIT LD (HL),A @@ -3806,7 +3823,7 @@ DORB_BR500 .EQU 10100000B ; 500KBPS ; DORB_INIT .EQU DORB_BR250 ; -; *** DIDE/N8/ZETA2/RCWDC/SMZ80/DYNO *** +; *** DIDE/N8/ZETA2/RCWDC/SMZ80/DYNO/EPFDC *** ; DORC_INIT .EQU 00001100B ; SOFT RESET INACTIVE, DMA ENABLED ; diff --git a/Source/Apps/Tune/Makefile b/Source/Apps/Tune/Makefile index cbca69a5..3f6c8fdb 100644 --- a/Source/Apps/Tune/Makefile +++ b/Source/Apps/Tune/Makefile @@ -7,13 +7,13 @@ include $(TOOLS)/Makefile.inc DEPS := Tune.asm $(shell find . -name '*.inc') Tune.com: $(DEPS) - $(TASM) -dWBW Tune.asm Tune.com + $(TASM) -dWBW Tune.asm Tune.com Tune.lst Tunezx.com: $(DEPS) - $(TASM) -dZX Tune.asm Tunezx.com + $(TASM) -dZX Tune.asm Tunezx.com Tunezx.lst Tunemsx.com: $(DEPS) - $(TASM) -dMSX Tune.asm Tunemsx.com + $(TASM) -dMSX Tune.asm Tunemsx.com Tunemsx.lst all:: mkdir -p $(DEST)/Tunes diff --git a/Source/Apps/Tune/Tune.asm b/Source/Apps/Tune/Tune.asm index 1b523d3c..6f340a2e 100644 --- a/Source/Apps/Tune/Tune.asm +++ b/Source/Apps/Tune/Tune.asm @@ -717,7 +717,9 @@ CurPos .DB 0 ;for visualization only (i.e. no need for playing) ;Identifier .IF Id - .DB "=Uni PT2 and PT3 Player r.",Release,"=" + .DB "=Uni PT2 and PT3 Player r." + .DB Release + .DB "=" .ENDIF .IF LoopChecker diff --git a/Source/HBIOS/Config/MK4_std.asm b/Source/HBIOS/Config/MK4_std.asm index c838d873..f4b0f325 100644 --- a/Source/HBIOS/Config/MK4_std.asm +++ b/Source/HBIOS/Config/MK4_std.asm @@ -37,7 +37,7 @@ CVDUENABLE .SET TRUE ; CVDU: ENABLE CVDU VIDEO/KBD DRIVER (CVDU.ASM) VGAENABLE .SET TRUE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM) ; FDENABLE .SET FALSE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM) -FDMODE .SET FDMODE_DIDE ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|DIDE|N8|DIO3] +FDMODE .SET FDMODE_DIDE ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPWDC] ; IDEENABLE .SET TRUE ; IDE: ENABLE IDE DISK DRIVER (IDE.ASM) ; diff --git a/Source/HBIOS/Config/RCZ180_ext.asm b/Source/HBIOS/Config/RCZ180_ext.asm index 9c587ada..dd2e4cda 100644 --- a/Source/HBIOS/Config/RCZ180_ext.asm +++ b/Source/HBIOS/Config/RCZ180_ext.asm @@ -40,7 +40,7 @@ ACIAENABLE .SET FALSE ; ACIA: ENABLE MOTOROLA 6850 ACIA DRIVER (ACIA.ASM) SIOENABLE .SET FALSE ; SIO: ENABLE ZILOG SIO SERIAL DRIVER (SIO.ASM) ; FDENABLE .SET FALSE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM) -FDMODE .SET FDMODE_RCWDC ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|DIDE|N8|DIO3] +FDMODE .SET FDMODE_RCWDC ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPWDC] ; IDEENABLE .SET TRUE ; IDE: ENABLE IDE DISK DRIVER (IDE.ASM) ; diff --git a/Source/HBIOS/Config/RCZ180_nat.asm b/Source/HBIOS/Config/RCZ180_nat.asm index dc287783..d211d16a 100644 --- a/Source/HBIOS/Config/RCZ180_nat.asm +++ b/Source/HBIOS/Config/RCZ180_nat.asm @@ -40,7 +40,7 @@ ACIAENABLE .SET FALSE ; ACIA: ENABLE MOTOROLA 6850 ACIA DRIVER (ACIA.ASM) SIOENABLE .SET FALSE ; SIO: ENABLE ZILOG SIO SERIAL DRIVER (SIO.ASM) ; FDENABLE .SET FALSE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM) -FDMODE .SET FDMODE_RCWDC ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|DIDE|N8|DIO3] +FDMODE .SET FDMODE_RCWDC ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPWDC] ; IDEENABLE .SET TRUE ; IDE: ENABLE IDE DISK DRIVER (IDE.ASM) ; diff --git a/Source/HBIOS/Config/RCZ80_std.asm b/Source/HBIOS/Config/RCZ80_std.asm index 5766331e..cf63ad1b 100644 --- a/Source/HBIOS/Config/RCZ80_std.asm +++ b/Source/HBIOS/Config/RCZ80_std.asm @@ -33,7 +33,7 @@ ACIAENABLE .SET TRUE ; ACIA: ENABLE MOTOROLA 6850 ACIA DRIVER (ACIA.ASM) SIOENABLE .SET TRUE ; SIO: ENABLE ZILOG SIO SERIAL DRIVER (SIO.ASM) ; FDENABLE .SET FALSE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM) -FDMODE .SET FDMODE_RCWDC ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|DIDE|N8|DIO3] +FDMODE .SET FDMODE_RCWDC ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPWDC] ; IDEENABLE .SET TRUE ; IDE: ENABLE IDE DISK DRIVER (IDE.ASM) ; diff --git a/Source/HBIOS/Config/SBC_std.asm b/Source/HBIOS/Config/SBC_std.asm index 16acc300..ec701781 100644 --- a/Source/HBIOS/Config/SBC_std.asm +++ b/Source/HBIOS/Config/SBC_std.asm @@ -33,7 +33,7 @@ CVDUENABLE .SET TRUE ; CVDU: ENABLE CVDU VIDEO/KBD DRIVER (CVDU.ASM) VGAENABLE .SET TRUE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM) ; FDENABLE .SET FALSE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM) -FDMODE .SET FDMODE_DIO3 ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|DIDE|N8|DIO3] +FDMODE .SET FDMODE_DIO3 ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPWDC] ; IDEENABLE .SET FALSE ; IDE: ENABLE IDE DISK DRIVER (IDE.ASM) ; diff --git a/Source/HBIOS/Config/SCZ180_126.asm b/Source/HBIOS/Config/SCZ180_126.asm index 1da05c4b..e7549ccc 100644 --- a/Source/HBIOS/Config/SCZ180_126.asm +++ b/Source/HBIOS/Config/SCZ180_126.asm @@ -42,7 +42,7 @@ ACIAENABLE .SET FALSE ; ACIA: ENABLE MOTOROLA 6850 ACIA DRIVER (ACIA.ASM) SIOENABLE .SET FALSE ; SIO: ENABLE ZILOG SIO SERIAL DRIVER (SIO.ASM) ; FDENABLE .SET FALSE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM) -FDMODE .SET FDMODE_RCWDC ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|DIDE|N8|DIO3] +FDMODE .SET FDMODE_RCWDC ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPWDC] ; IDEENABLE .SET TRUE ; IDE: ENABLE IDE DISK DRIVER (IDE.ASM) ; diff --git a/Source/HBIOS/Config/SCZ180_130.asm b/Source/HBIOS/Config/SCZ180_130.asm index 13fc2f03..45b0cae3 100644 --- a/Source/HBIOS/Config/SCZ180_130.asm +++ b/Source/HBIOS/Config/SCZ180_130.asm @@ -48,7 +48,7 @@ ASCIENABLE .SET TRUE ; ASCI: ENABLE Z180 ASCI SERIAL DRIVER (ASCI.ASM) ACIAENABLE .SET FALSE ; ACIA: ENABLE MOTOROLA 6850 ACIA DRIVER (ACIA.ASM) SIOENABLE .SET FALSE ; SIO: ENABLE ZILOG SIO SERIAL DRIVER (SIO.ASM) ; -FDENABLE .SET FALSE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM) +FDENABLE .SET FALSE ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPWDC] FDMODE .SET FDMODE_RCWDC ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|DIDE|N8|DIO3] ; IDEENABLE .SET TRUE ; IDE: ENABLE IDE DISK DRIVER (IDE.ASM) diff --git a/Source/HBIOS/Config/SCZ180_131.asm b/Source/HBIOS/Config/SCZ180_131.asm index c3b75a80..8a659714 100644 --- a/Source/HBIOS/Config/SCZ180_131.asm +++ b/Source/HBIOS/Config/SCZ180_131.asm @@ -49,7 +49,7 @@ ACIAENABLE .SET FALSE ; ACIA: ENABLE MOTOROLA 6850 ACIA DRIVER (ACIA.ASM) SIOENABLE .SET FALSE ; SIO: ENABLE ZILOG SIO SERIAL DRIVER (SIO.ASM) ; FDENABLE .SET FALSE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM) -FDMODE .SET FDMODE_RCWDC ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|DIDE|N8|DIO3] +FDMODE .SET FDMODE_RCWDC ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPWDC] ; IDEENABLE .SET FALSE ; IDE: ENABLE IDE DISK DRIVER (IDE.ASM) ; diff --git a/Source/HBIOS/cfg_dyno.asm b/Source/HBIOS/cfg_dyno.asm index 1322676b..6f85b242 100644 --- a/Source/HBIOS/cfg_dyno.asm +++ b/Source/HBIOS/cfg_dyno.asm @@ -102,7 +102,7 @@ MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM) MDTRACE .EQU 1 ; MD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL) ; FDENABLE .EQU FALSE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM) -FDMODE .EQU FDMODE_DYNO ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|DIDE|N8|DIO3|DYNO] +FDMODE .EQU FDMODE_DYNO ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPWDC] FDTRACE .EQU 1 ; FD: TRACE LEVEL (0=NO,1=FATAL,2=ERRORS,3=ALL) FDMEDIA .EQU FDM144 ; FD: DEFAULT MEDIA FORMAT FDM[720|144|360|120|111] FDMEDIAALT .EQU FDM720 ; FD: ALTERNATE MEDIA FORMAT FDM[720|144|360|120|111] diff --git a/Source/HBIOS/cfg_ezz80.asm b/Source/HBIOS/cfg_ezz80.asm index 99e94ced..a6646994 100644 --- a/Source/HBIOS/cfg_ezz80.asm +++ b/Source/HBIOS/cfg_ezz80.asm @@ -127,7 +127,7 @@ MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM) MDTRACE .EQU 1 ; MD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL) ; FDENABLE .EQU FALSE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM) -FDMODE .EQU FDMODE_RCWDC ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|DIDE|N8|DIO3|DYNO] +FDMODE .EQU FDMODE_RCWDC ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPWDC] FDTRACE .EQU 1 ; FD: TRACE LEVEL (0=NO,1=FATAL,2=ERRORS,3=ALL) FDMEDIA .EQU FDM144 ; FD: DEFAULT MEDIA FORMAT FDM[720|144|360|120|111] FDMEDIAALT .EQU FDM720 ; FD: ALTERNATE MEDIA FORMAT FDM[720|144|360|120|111] diff --git a/Source/HBIOS/cfg_master.asm b/Source/HBIOS/cfg_master.asm index c5ad1178..7c3f00ab 100644 --- a/Source/HBIOS/cfg_master.asm +++ b/Source/HBIOS/cfg_master.asm @@ -165,7 +165,7 @@ MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM) MDTRACE .EQU 1 ; MD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL) ; FDENABLE .EQU FALSE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM) -FDMODE .EQU FDMODE_NONE ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|DIDE|N8|DIO3|DYNO] +FDMODE .EQU FDMODE_NONE ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPWDC] FDTRACE .EQU 1 ; FD: TRACE LEVEL (0=NO,1=FATAL,2=ERRORS,3=ALL) FDMEDIA .EQU FDM144 ; FD: DEFAULT MEDIA FORMAT FDM[720|144|360|120|111] FDMEDIAALT .EQU FDM720 ; FD: ALTERNATE MEDIA FORMAT FDM[720|144|360|120|111] diff --git a/Source/HBIOS/cfg_mk4.asm b/Source/HBIOS/cfg_mk4.asm index 0b247c57..e869de18 100644 --- a/Source/HBIOS/cfg_mk4.asm +++ b/Source/HBIOS/cfg_mk4.asm @@ -120,7 +120,7 @@ MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM) MDTRACE .EQU 1 ; MD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL) ; FDENABLE .EQU FALSE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM) -FDMODE .EQU FDMODE_N8 ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|DIDE|N8|DIO3|DYNO] +FDMODE .EQU FDMODE_DIDE ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPWDC] FDTRACE .EQU 1 ; FD: TRACE LEVEL (0=NO,1=FATAL,2=ERRORS,3=ALL) FDMEDIA .EQU FDM144 ; FD: DEFAULT MEDIA FORMAT FDM[720|144|360|120|111] FDMEDIAALT .EQU FDM720 ; FD: ALTERNATE MEDIA FORMAT FDM[720|144|360|120|111] diff --git a/Source/HBIOS/cfg_n8.asm b/Source/HBIOS/cfg_n8.asm index 20f54fb2..9e016cf8 100644 --- a/Source/HBIOS/cfg_n8.asm +++ b/Source/HBIOS/cfg_n8.asm @@ -123,7 +123,7 @@ MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM) MDTRACE .EQU 1 ; MD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL) ; FDENABLE .EQU TRUE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM) -FDMODE .EQU FDMODE_N8 ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|DIDE|N8|DIO3|DYNO] +FDMODE .EQU FDMODE_N8 ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPWDC] FDTRACE .EQU 1 ; FD: TRACE LEVEL (0=NO,1=FATAL,2=ERRORS,3=ALL) FDMEDIA .EQU FDM144 ; FD: DEFAULT MEDIA FORMAT FDM[720|144|360|120|111] FDMEDIAALT .EQU FDM720 ; FD: ALTERNATE MEDIA FORMAT FDM[720|144|360|120|111] diff --git a/Source/HBIOS/cfg_rcz180.asm b/Source/HBIOS/cfg_rcz180.asm index 6a2b259d..2f04e152 100644 --- a/Source/HBIOS/cfg_rcz180.asm +++ b/Source/HBIOS/cfg_rcz180.asm @@ -130,7 +130,7 @@ MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM) MDTRACE .EQU 1 ; MD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL) ; FDENABLE .EQU FALSE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM) -FDMODE .EQU FDMODE_RCWDC ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|DIDE|N8|DIO3|DYNO] +FDMODE .EQU FDMODE_RCWDC ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPWDC] FDTRACE .EQU 1 ; FD: TRACE LEVEL (0=NO,1=FATAL,2=ERRORS,3=ALL) FDMEDIA .EQU FDM144 ; FD: DEFAULT MEDIA FORMAT FDM[720|144|360|120|111] FDMEDIAALT .EQU FDM720 ; FD: ALTERNATE MEDIA FORMAT FDM[720|144|360|120|111] diff --git a/Source/HBIOS/cfg_rcz80.asm b/Source/HBIOS/cfg_rcz80.asm index 7682f2b7..61de3c2e 100644 --- a/Source/HBIOS/cfg_rcz80.asm +++ b/Source/HBIOS/cfg_rcz80.asm @@ -136,7 +136,7 @@ MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM) MDTRACE .EQU 1 ; MD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL) ; FDENABLE .EQU FALSE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM) -FDMODE .EQU FDMODE_RCWDC ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|DIDE|N8|DIO3|DYNO] +FDMODE .EQU FDMODE_RCWDC ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPWDC] FDTRACE .EQU 1 ; FD: TRACE LEVEL (0=NO,1=FATAL,2=ERRORS,3=ALL) FDMEDIA .EQU FDM144 ; FD: DEFAULT MEDIA FORMAT FDM[720|144|360|120|111] FDMEDIAALT .EQU FDM720 ; FD: ALTERNATE MEDIA FORMAT FDM[720|144|360|120|111] diff --git a/Source/HBIOS/cfg_sbc.asm b/Source/HBIOS/cfg_sbc.asm index 0e751225..329944b4 100644 --- a/Source/HBIOS/cfg_sbc.asm +++ b/Source/HBIOS/cfg_sbc.asm @@ -124,7 +124,7 @@ MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM) MDTRACE .EQU 1 ; MD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL) ; FDENABLE .EQU FALSE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM) -FDMODE .EQU FDMODE_DIO3 ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|DIDE|N8|DIO3|DYNO] +FDMODE .EQU FDMODE_DIO3 ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPWDC] FDTRACE .EQU 1 ; FD: TRACE LEVEL (0=NO,1=FATAL,2=ERRORS,3=ALL) FDMEDIA .EQU FDM144 ; FD: DEFAULT MEDIA FORMAT FDM[720|144|360|120|111] FDMEDIAALT .EQU FDM720 ; FD: ALTERNATE MEDIA FORMAT FDM[720|144|360|120|111] diff --git a/Source/HBIOS/cfg_scz180.asm b/Source/HBIOS/cfg_scz180.asm index 24abe9f0..955790e7 100644 --- a/Source/HBIOS/cfg_scz180.asm +++ b/Source/HBIOS/cfg_scz180.asm @@ -125,7 +125,7 @@ MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM) MDTRACE .EQU 1 ; MD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL) ; FDENABLE .EQU FALSE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM) -FDMODE .EQU FDMODE_RCWDC ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|DIDE|N8|DIO3|DYNO] +FDMODE .EQU FDMODE_RCWDC ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPWDC] FDTRACE .EQU 1 ; FD: TRACE LEVEL (0=NO,1=FATAL,2=ERRORS,3=ALL) FDMEDIA .EQU FDM144 ; FD: DEFAULT MEDIA FORMAT FDM[720|144|360|120|111] FDMEDIAALT .EQU FDM720 ; FD: ALTERNATE MEDIA FORMAT FDM[720|144|360|120|111] diff --git a/Source/HBIOS/cfg_zeta.asm b/Source/HBIOS/cfg_zeta.asm index 865f2506..979d4975 100644 --- a/Source/HBIOS/cfg_zeta.asm +++ b/Source/HBIOS/cfg_zeta.asm @@ -99,7 +99,7 @@ MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM) MDTRACE .EQU 1 ; MD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL) ; FDENABLE .EQU TRUE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM) -FDMODE .EQU FDMODE_ZETA ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|DIDE|N8|DIO3|DYNO] +FDMODE .EQU FDMODE_ZETA ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPWDC] FDTRACE .EQU 1 ; FD: TRACE LEVEL (0=NO,1=FATAL,2=ERRORS,3=ALL) FDMEDIA .EQU FDM144 ; FD: DEFAULT MEDIA FORMAT FDM[720|144|360|120|111] FDMEDIAALT .EQU FDM720 ; FD: ALTERNATE MEDIA FORMAT FDM[720|144|360|120|111] diff --git a/Source/HBIOS/cfg_zeta2.asm b/Source/HBIOS/cfg_zeta2.asm index 0109f702..31b97c7f 100644 --- a/Source/HBIOS/cfg_zeta2.asm +++ b/Source/HBIOS/cfg_zeta2.asm @@ -109,7 +109,7 @@ MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM) MDTRACE .EQU 1 ; MD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL) ; FDENABLE .EQU TRUE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM) -FDMODE .EQU FDMODE_ZETA2 ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|DIDE|N8|DIO3|DYNO] +FDMODE .EQU FDMODE_ZETA2 ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPWDC] FDTRACE .EQU 1 ; FD: TRACE LEVEL (0=NO,1=FATAL,2=ERRORS,3=ALL) FDMEDIA .EQU FDM144 ; FD: DEFAULT MEDIA FORMAT FDM[720|144|360|120|111] FDMEDIAALT .EQU FDM720 ; FD: ALTERNATE MEDIA FORMAT FDM[720|144|360|120|111] diff --git a/Source/HBIOS/dbgmon.asm b/Source/HBIOS/dbgmon.asm index 9e4c8a3a..7091f309 100644 --- a/Source/HBIOS/dbgmon.asm +++ b/Source/HBIOS/dbgmon.asm @@ -104,6 +104,8 @@ SERIALCMDLOOP: JP Z,FILLMEM ; FILL MEMORY COMMAND CP 'H' ; IS IT A "H" (Y/N) JP Z,HELP ; HELP COMMAND + CP 'X' ; IS IT A "X" (Y/N) + JP Z,HALT ; HALT COMMAND LD HL,TXT_COMMAND ; POINT AT ERROR TEXT CALL PRTSTRH ; PRINT COMMAND LABEL @@ -150,6 +152,16 @@ BOOT: LD HL,0 ; ADDRESS ZERO CALL HB_BNKCALL ; DOES NOT RETURN #ENDIF +; +;__HALT_______________________________________________________________________ +; +; PERFORM HALT ACTION +;_____________________________________________________________________________ +; +HALT: + DI + HALT +; ;__RUN________________________________________________________________________ ; ; TRANSFER OUT OF MONITOR, USER OPTION "R" @@ -912,6 +924,7 @@ TXT_HELP .TEXT "\r\nMonitor Commands (all values in hex):" .TEXT "\r\nO xx yy - Output to port xx value yy" .TEXT "\r\nP xxxx - Program RAM at xxxx" .TEXT "\r\nR xxxx - Run code at xxxx" + .TEXT "\r\nX - Halt system" .TEXT "$" ; #IF DSKYENABLE diff --git a/Source/HBIOS/fd.asm b/Source/HBIOS/fd.asm index df2673be..5c8f7bc0 100644 --- a/Source/HBIOS/fd.asm +++ b/Source/HBIOS/fd.asm @@ -61,6 +61,13 @@ FDC_DOR .EQU FDC_BASE + $02 ; DIGITAL OUTPUT REGISTER FDC_DCR .EQU FDC_BASE + $03 ; CONFIGURATION CONTROL REGISTER FDC_TC .EQU FDC_BASE + $02 ; TERMINAL COUNT (W/ DACK) #ENDIF +#IF (FDMODE == FDMODE_EPFDC) +FDC_MSR .EQU $48 ; 8272 MAIN STATUS REGISTER +FDC_DATA .EQU $49 ; 8272 DATA PORT +FDC_DOR .EQU $4A ; DIGITAL OUTPUT REGISTER +FDC_DCR .EQU $4B ; CONFIGURATION CONTROL REGISTER +FDC_TC .EQU $4C ; TERMINAL COUNT (W/ DACK) +#ENDIF ; ; DISK OPERATIONS ; @@ -399,7 +406,7 @@ DOR_INIT .EQU 11100000B ; INITIAL DEFAULT LATCH VALUE ; ; *** DIDE/N8/ZETA V2 *** ; -#IF ((FDMODE == FDMODE_DIDE) | (FDMODE == FDMODE_N8) | (FDMODE == FDMODE_ZETA2) | (FDMODE == FDMODE_RCWDC) | (FDMODE == FDMODE_DYNO)) +#IF ((FDMODE == FDMODE_DIDE) | (FDMODE == FDMODE_N8) | (FDMODE == FDMODE_ZETA2) | (FDMODE == FDMODE_RCWDC) | (FDMODE == FDMODE_DYNO) | (FDMODE == FDMODE_EPFDC)) DOR_INIT .EQU 00001100B ; SOFT RESET INACTIVE, DMA ENABLED DOR_BR250 .EQU DOR_INIT DOR_BR500 .EQU DOR_INIT @@ -1235,7 +1242,7 @@ FC_SETDOR ; ; SET FST_DCR ; -#IF ((FDMODE == FDMODE_DIDE) | (FDMODE == FDMODE_N8) | (FDMODE == FDMODE_ZETA2) | (FDMODE == FDMODE_RCWDC) | (FDMODE == FDMODE_DYNO)) +#IF ((FDMODE == FDMODE_DIDE) | (FDMODE == FDMODE_N8) | (FDMODE == FDMODE_ZETA2) | (FDMODE == FDMODE_RCWDC) | (FDMODE == FDMODE_DYNO) | (FDMODE == FDMODE_EPFDC)) ; FC_SETDCR LD (FST_DCR),A @@ -1267,7 +1274,7 @@ FC_RESETFDC: #IF ((FDMODE == FDMODE_ZETA) | (FDMODE == FDMODE_DIO3) | (FDMODE == FDMODE_RCSMC)) RES 7,A #ENDIF -#IF ((FDMODE == FDMODE_DIDE) | (FDMODE == FDMODE_N8) | (FDMODE == FDMODE_ZETA2) | (FDMODE == FDMODE_RCWDC) | (FDMODE == FDMODE_DYNO)) +#IF ((FDMODE == FDMODE_DIDE) | (FDMODE == FDMODE_N8) | (FDMODE == FDMODE_ZETA2) | (FDMODE == FDMODE_RCWDC) | (FDMODE == FDMODE_DYNO) | (FDMODE == FDMODE_EPFDC)) LD A,0 #ENDIF CALL FC_SETDOR @@ -1282,7 +1289,7 @@ FC_RESETFDC: ; PULSE TERMCT TO TERMINATE ANY ACTIVE EXECUTION PHASE ; FC_PULSETC: -#IF ((FDMODE == FDMODE_DIDE) | (FDMODE == FDMODE_N8) | (FDMODE == FDMODE_ZETA2) | (FDMODE == FDMODE_RCWDC) | (FDMODE == FDMODE_DYNO)) +#IF ((FDMODE == FDMODE_DIDE) | (FDMODE == FDMODE_N8) | (FDMODE == FDMODE_ZETA2) | (FDMODE == FDMODE_RCWDC) | (FDMODE == FDMODE_DYNO) | (FDMODE == FDMODE_EPFDC)) IN A,(FDC_TC) #ELSE LD A,(FST_DOR) @@ -1339,7 +1346,7 @@ FC_MOTORON1: CP C ; COMPARE TO NEW MOTOR BITS RET Z ; SKIP DELAY, MOTOR WAS ALREADY ON #ENDIF -#IF ((FDMODE == FDMODE_DIDE) | (FDMODE == FDMODE_N8) | (FDMODE == FDMODE_ZETA2) | (FDMODE == FDMODE_RCWDC) | (FDMODE == FDMODE_DYNO)) +#IF ((FDMODE == FDMODE_DIDE) | (FDMODE == FDMODE_N8) | (FDMODE == FDMODE_ZETA2) | (FDMODE == FDMODE_RCWDC) | (FDMODE == FDMODE_DYNO) | (FDMODE == FDMODE_EPFDC)) ; SETUP DCR FOR DIDE HARDWARE LD A,(FCD_DCR) ; GET NEW DCR VALUE CALL FC_SETDCR ; AND IMPLEMENT IT diff --git a/Source/HBIOS/std.asm b/Source/HBIOS/std.asm index cbd8f0a3..b5e523e2 100644 --- a/Source/HBIOS/std.asm +++ b/Source/HBIOS/std.asm @@ -141,6 +141,7 @@ FDMODE_DIO3 .EQU 6 ; DISKIO V3 FDMODE_RCSMC .EQU 7 ; RC2014 SMC 9266 @ $40 (SCOTT BAKER) FDMODE_RCWDC .EQU 8 ; RC2014 WDC 37C65 @ $40 (SCOTT BAKER) FDMODE_DYNO .EQU 9 ; DYNO WDC 37C65 @ $84 +FDMODE_EPFDC .EQU 10 ; RC2014 ETCHED PIXELS FDC ; ; IDE MODE SELECTIONS ; diff --git a/Source/ver.inc b/Source/ver.inc index 311c55f8..e46787ec 100644 --- a/Source/ver.inc +++ b/Source/ver.inc @@ -2,4 +2,4 @@ #DEFINE RMN 1 #DEFINE RUP 0 #DEFINE RTP 0 -#DEFINE BIOSVER "3.1-pre.12" +#DEFINE BIOSVER "3.1-pre.13" diff --git a/Source/ver.lib b/Source/ver.lib index f5cc5c1c..5a798e0a 100644 --- a/Source/ver.lib +++ b/Source/ver.lib @@ -3,5 +3,5 @@ rmn equ 1 rup equ 0 rtp equ 0 biosver macro - db "3.1-pre.12" + db "3.1-pre.13" endm From 0834acc020655be3b998f522ecab14fb2b4d7391 Mon Sep 17 00:00:00 2001 From: Wayne Warthen Date: Wed, 29 Apr 2020 19:30:24 -0700 Subject: [PATCH 08/10] RTC Device Info Functions --- Source/HBIOS/bqrtc.asm | 12 ++++++++++++ Source/HBIOS/dsrtc.asm | 16 ++++++++++++++++ Source/HBIOS/hbios.asm | 14 ++++++++++++++ Source/HBIOS/hbios.inc | 11 +++++++++++ Source/HBIOS/intrtc.asm | 16 ++++++++++++++++ Source/HBIOS/simrtc.asm | 16 ++++++++++++++++ Source/ver.inc | 2 +- Source/ver.lib | 2 +- 8 files changed, 87 insertions(+), 2 deletions(-) diff --git a/Source/HBIOS/bqrtc.asm b/Source/HBIOS/bqrtc.asm index 34854e22..f1c6a751 100644 --- a/Source/HBIOS/bqrtc.asm +++ b/Source/HBIOS/bqrtc.asm @@ -159,6 +159,10 @@ BQRTC_DISPATCH: JP Z, BQRTC_GETALM ; Get Alarm DEC A JP Z, BQRTC_SETALM ; Set Alarm + DEC A + JP Z, BQRTC_DEVICE ; Report RTC device info + CALL PANIC + ; ; NVRAM FUNCTIONS ARE NOT AVAILABLE ; @@ -328,6 +332,14 @@ BQRTC_SETALM: ; clean up and return XOR A ; Signal success RET ; And return +; +; REPORT RTC DEVICE INFO +; +BQRTC_DEVICE: + LD D,RTCDEV_BQ ; D := DEVICE TYPE + LD E,0 ; E := PHYSICAL DEVICE NUMBER + XOR A ; SIGNAL SUCCESS + RET BQRTC_SUSPEND: IN0 A, (BQRTC_CONTROL) ; Suspend Clock diff --git a/Source/HBIOS/dsrtc.asm b/Source/HBIOS/dsrtc.asm index 5bcd596f..01d2f171 100644 --- a/Source/HBIOS/dsrtc.asm +++ b/Source/HBIOS/dsrtc.asm @@ -235,12 +235,20 @@ DSRTC_DISPATCH: JP Z,DSRTC_GETBLK ; GET NVRAM DATA BLOCK VALUES DEC A JP Z,DSRTC_SETBLK ; SET NVRAM DATA BLOCK VALUES + DEC A + JP Z,DSRTC_GETALM ; GET ALARM + DEC A + JP Z,DSRTC_SETALM ; SET ALARM + DEC A + JP Z,DSRTC_DEVICE ; REPORT RTC DEVICE INFO CALL PANIC ; ; NVRAM FUNCTIONS ARE NOT AVAILABLE IN SIMULATOR ; DSRTC_GETBLK: DSRTC_SETBLK: +DSRTC_GETALM: +DSRTC_SETALM: CALL PANIC ; ; RTC GET TIME @@ -350,6 +358,14 @@ DSRTC_SETBYT: XOR A ; SIGNAL SUCCESS RET ; DONE ; +; REPORT RTC DEVICE INFO +; +DSRTC_DEVICE: + LD D,RTCDEV_DS ; D := DEVICE TYPE + LD E,0 ; E := PHYSICAL DEVICE NUMBER + XOR A ; SIGNAL SUCCESS + RET +; ; CONVERT DATA IN CLOCK BUFFER TO TIME BUFFER AT HL ; DSRTC_CLK2TIM: diff --git a/Source/HBIOS/hbios.asm b/Source/HBIOS/hbios.asm index 865e2005..2fe314ab 100644 --- a/Source/HBIOS/hbios.asm +++ b/Source/HBIOS/hbios.asm @@ -2427,6 +2427,8 @@ SYS_GET: CP BF_SYSGET_CIOCNT JR Z,SYS_GETCIOCNT CP BF_SYSGET_DIOCNT + JR Z,SYS_GETRTCCNT + CP BF_SYSGET_RTCCNT JR Z,SYS_GETDIOCNT CP BF_SYSGET_VDACNT JR Z,SYS_GETVDACNT @@ -2543,6 +2545,18 @@ SYS_GETDIOCNT: XOR A ; SIGNALS SUCCESS RET ; +; GET RTC UNIT COUNT +; +SYS_GETRTCCNT: + LD E,0 ; ASSUME 0 RTC DEVICES + LD A,(RTC_DISPACT) ; IS RTC ACTIVE? + OR A ; SET FLAGS + JR Z,SYS_GETRTCCNT1 ; IF NONE, DONE + INC E ; SET ONE DEVICE +SYS_GETRTCCNT1: + XOR A ; SIGNALS SUCCESS + RET +; ; GET VIDEO UNIT COUNT ; SYS_GETVDACNT: diff --git a/Source/HBIOS/hbios.inc b/Source/HBIOS/hbios.inc index e3fe6667..6fb98bc1 100644 --- a/Source/HBIOS/hbios.inc +++ b/Source/HBIOS/hbios.inc @@ -32,6 +32,9 @@ BF_RTCGETBYT .EQU BF_RTC + 2 ; GET NVRAM BYTE BY INDEX BF_RTCSETBYT .EQU BF_RTC + 3 ; SET NVRAM BYTE BY INDEX BF_RTCGETBLK .EQU BF_RTC + 4 ; GET NVRAM DATA BLOCK BF_RTCSETBLK .EQU BF_RTC + 5 ; SET NVRAM DATA BLOCK +BF_RTCGETALM .EQU BF_RTC + 6 ; GET ALARM +BF_RTCSETALM .EQU BF_RTC + 7 ; SET ALARM +BF_RTCDEVICE .EQU BF_RTC + 8 ; RTC DEVICE INFO REPORT ; BF_EMU .EQU $30 ; DEPRECATED ; @@ -89,6 +92,7 @@ BF_SYSINT .EQU BF_SYS + 12 ; MANAGE INTERRUPT VECTORS ; BF_SYSGET_CIOCNT .EQU $00 ; GET CHAR UNIT COUNT BF_SYSGET_DIOCNT .EQU $10 ; GET DISK UNIT COUNT +BF_SYSGET_RTCCNT .EQU $20 ; GET RTC UNIT COUNT BF_SYSGET_VDACNT .EQU $40 ; GET VDA UNIT COUNT BF_SYSGET_SNDCNT .EQU $50 ; GET VDA UNIT COUNT BF_SYSGET_TIMER .EQU $D0 ; GET CURRENT TIMER VALUE @@ -140,6 +144,13 @@ DIODEV_PRPSD .EQU $70 DIODEV_PPPSD .EQU $80 DIODEV_HDSK .EQU $90 ; +; RTC DEVICE IDS +; +RTCDEV_DS .EQU $00 ; DS1322 +RTCDEV_BQ .EQU $10 ; BQ4845P +RTCDEV_SIMH .EQU $30 ; SIMH +RTCDEV_INT .EQU $40 ; PERIODIC INT TIMER +; ; VIDEO DEVICE IDS ; VDADEV_VDU .EQU $00 ; ECB VDU - MOTOROLA 6545 diff --git a/Source/HBIOS/intrtc.asm b/Source/HBIOS/intrtc.asm index 0414a286..a7d05ac7 100644 --- a/Source/HBIOS/intrtc.asm +++ b/Source/HBIOS/intrtc.asm @@ -50,6 +50,12 @@ INTRTC_DISPATCH: JP Z,INTRTC_GETBLK ; GET NVRAM DATA BLOCK VALUES DEC A JP Z,INTRTC_SETBLK ; SET NVRAM DATA BLOCK VALUES + DEC A + JP Z,INTRTC_GETALM ; GET ALARM + DEC A + JP Z,INTRTC_SETALM ; SET ALARM + DEC A + JP Z,INTRTC_DEVICE ; REPORT RTC DEVICE INFO CALL PANIC ; ; NVRAM FUNCTIONS ARE NOT AVAILABLE IN SIMULATOR @@ -58,6 +64,8 @@ INTRTC_GETBYT: INTRTC_SETBYT: INTRTC_GETBLK: INTRTC_SETBLK: +INTRTC_GETALM: +INTRTC_SETALM: CALL PANIC ; ; RTC GET TIME @@ -119,6 +127,14 @@ INTRTC_SETTIM: XOR A ; SIGNAL SUCCESS RET ; AND RETURN ; +; REPORT RTC DEVICE INFO +; +INTRTC_DEVICE: + LD D,RTCDEV_INT ; D := DEVICE TYPE + LD E,0 ; E := PHYSICAL DEVICE NUMBER + XOR A ; SIGNAL SUCCESS + RET +; ; HANDLER FOR TIMER SECONDS INTERRUPT ; INTRTC_INT: diff --git a/Source/HBIOS/simrtc.asm b/Source/HBIOS/simrtc.asm index 8be545c3..0185bd93 100644 --- a/Source/HBIOS/simrtc.asm +++ b/Source/HBIOS/simrtc.asm @@ -49,6 +49,12 @@ SIMRTC_DISPATCH: JP Z,SIMRTC_GETBLK ; GET NVRAM DATA BLOCK VALUES DEC A JP Z,SIMRTC_SETBLK ; SET NVRAM DATA BLOCK VALUES + DEC A + JP Z,SIMRTC_GETALM ; GET ALARM + DEC A + JP Z,SIMRTC_SETALM ; SET ALARM + DEC A + JP Z,SIMRTC_DEVICE ; REPORT RTC DEVICE INFO CALL PANIC ; ; NVRAM FUNCTIONS ARE NOT AVAILABLE IN SIMULATOR @@ -57,6 +63,8 @@ SIMRTC_GETBYT: SIMRTC_SETBYT: SIMRTC_GETBLK: SIMRTC_SETBLK: +SIMRTC_GETALM: +SIMRTC_SETALM: CALL PANIC ; ; RTC GET TIME @@ -121,6 +129,14 @@ SIMRTC_SETTIM: XOR A ; SIGNAL SUCCESS RET ; AND RETURN ; +; REPORT RTC DEVICE INFO +; +SIMRTC_DEVICE: + LD D,RTCDEV_SIMH ; D := DEVICE TYPE + LD E,0 ; E := PHYSICAL DEVICE NUMBER + XOR A ; SIGNAL SUCCESS + RET +; ; WORKING VARIABLES ; SIMRTC_BUF: ; ALL IN BCD!!! diff --git a/Source/ver.inc b/Source/ver.inc index e46787ec..f107c6e7 100644 --- a/Source/ver.inc +++ b/Source/ver.inc @@ -2,4 +2,4 @@ #DEFINE RMN 1 #DEFINE RUP 0 #DEFINE RTP 0 -#DEFINE BIOSVER "3.1-pre.13" +#DEFINE BIOSVER "3.1-pre.14" diff --git a/Source/ver.lib b/Source/ver.lib index 5a798e0a..d54675fa 100644 --- a/Source/ver.lib +++ b/Source/ver.lib @@ -3,5 +3,5 @@ rmn equ 1 rup equ 0 rtp equ 0 biosver macro - db "3.1-pre.13" + db "3.1-pre.14" endm From 6cbcdb694da968bb9493204ea6bd6a42dcbe3e6e Mon Sep 17 00:00:00 2001 From: Wayne Warthen Date: Wed, 29 Apr 2020 19:42:58 -0700 Subject: [PATCH 09/10] Update Documentation --- Doc/RomWBW Applications.pdf | Bin 140215 -> 140215 bytes Doc/RomWBW Architecture.pdf | Bin 403920 -> 407557 bytes Doc/RomWBW Disk Catalog.pdf | Bin 130986 -> 130986 bytes Doc/RomWBW Getting Started.pdf | Bin 166329 -> 166329 bytes Source/Doc/Architecture.md | 54 +++++++++++++++++++++++++++++++++ Source/HBIOS/API.txt | 4 +++ 6 files changed, 58 insertions(+) diff --git a/Doc/RomWBW Applications.pdf b/Doc/RomWBW Applications.pdf index 2dd3342c77e28d67dcba0a9d1b986dcfc83b0adf..32c6ccf230529286927f62f34e25e767812f98ed 100644 GIT binary patch delta 111 zcmdmfoMZcOj)pCa8o$^r4J}O!Obw>%|6-JZakdBjVr12Hc6D=gbaZxeGcz|dcXBf@ fadxqEax!vuHn%jfG&XZHvs17kq-6RmWhPkw9%dcs delta 111 zcmdmfoMZcOj)pCa8o$^r3=K@pjZCNO|6-JZakdBjVr12Hb~Ljzb~SS}HL`TIG&VGJ fa&vVyvotVtadkGgFtczpu~V=iq-6RmWhPkw{(l`w diff --git a/Doc/RomWBW Architecture.pdf b/Doc/RomWBW Architecture.pdf index f6c4ae6eea3296f3ee988b297b339cbb201b8f36..bb2f238e41c1dd45efc0a73fa4b95059ba943e76 100644 GIT binary patch delta 59128 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%0ArAW1Eh0rJx& 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 CSR_~g delta 133 zcmZ4WpMBMT_J%Etr(bGW7#f(G8=L4Fn5!EYsB3cR`{t*(B$lKqXt-Dz85kKDm>5Bo zZ2$U_F;vvq$l1`<)WF%$*uvb&z{S$Y$;H&!z|_Rl*}}!q$;iprPQiwdlIgww8D#+^ CAS6Tp diff --git a/Doc/RomWBW Getting Started.pdf b/Doc/RomWBW Getting Started.pdf index b399e547fafb22ba3b36af0bdb95b5630cbc3115..4e161bbfd66673396aa97af96ad8690776eecf64 100644 GIT binary patch delta 113 zcmdlvnQP}{u7(!IElg}N?3RX>CI%)((|Kc=uRwrsjrb(|Kc Date: Wed, 29 Apr 2020 22:13:57 -0700 Subject: [PATCH 10/10] Fix HBIOS Breakage! --- Source/HBIOS/hbios.asm | 4 ++-- Source/HBIOS/hbios.inc | 14 ++++++++++++++ Source/HBIOS/std.asm | 13 ------------- 3 files changed, 16 insertions(+), 15 deletions(-) diff --git a/Source/HBIOS/hbios.asm b/Source/HBIOS/hbios.asm index 2fe314ab..708b57ef 100644 --- a/Source/HBIOS/hbios.asm +++ b/Source/HBIOS/hbios.asm @@ -2427,9 +2427,9 @@ SYS_GET: CP BF_SYSGET_CIOCNT JR Z,SYS_GETCIOCNT CP BF_SYSGET_DIOCNT - JR Z,SYS_GETRTCCNT - CP BF_SYSGET_RTCCNT JR Z,SYS_GETDIOCNT + CP BF_SYSGET_RTCCNT + JR Z,SYS_GETRTCCNT CP BF_SYSGET_VDACNT JR Z,SYS_GETVDACNT CP BF_SYSGET_SNDCNT diff --git a/Source/HBIOS/hbios.inc b/Source/HBIOS/hbios.inc index 6fb98bc1..a0f22099 100644 --- a/Source/HBIOS/hbios.inc +++ b/Source/HBIOS/hbios.inc @@ -112,6 +112,20 @@ BF_SYSINT_SET .EQU $20 ; SET INT VECTOR ADDRESS ; CIO_CONSOLE .EQU $80 ; CIO UNIT NUM FOR CUR CON ; +; MEDIA ID VALUES +; +MID_NONE .EQU 0 +MID_MDROM .EQU 1 +MID_MDRAM .EQU 2 +MID_RF .EQU 3 +MID_HD .EQU 4 +MID_FD720 .EQU 5 +MID_FD144 .EQU 6 +MID_FD360 .EQU 7 +MID_FD120 .EQU 8 +MID_FD111 .EQU 9 +MID_HDNEW .EQU 10 +; ; CHAR DEVICE IDS ; CIODEV_UART .EQU $00 diff --git a/Source/HBIOS/std.asm b/Source/HBIOS/std.asm index b5e523e2..b62a6486 100644 --- a/Source/HBIOS/std.asm +++ b/Source/HBIOS/std.asm @@ -89,19 +89,6 @@ FDM360 .EQU 2 ; 5.25" FLOPPY, 360KB, 2 SIDES, 40 TRKS, 9 SECTORS FDM120 .EQU 3 ; 5.25" FLOPPY, 1.2MB, 2 SIDES, 80 TRKS, 15 SECTORS FDM111 .EQU 4 ; 8" FLOPPY, 1.11MB, 2 SIDES, 74 TRKS, 15 SECTORS ; -; MEDIA ID VALUES -; -MID_NONE .EQU 0 -MID_MDROM .EQU 1 -MID_MDRAM .EQU 2 -MID_RF .EQU 3 -MID_HD .EQU 4 -MID_FD720 .EQU 5 -MID_FD144 .EQU 6 -MID_FD360 .EQU 7 -MID_FD120 .EQU 8 -MID_FD111 .EQU 9 -; ; ZILOG CTC MODE SELECTIONS ; CTCMODE_NONE .EQU 0 ; NO CTC