Browse Source

SN76489: Renamed variable 'pitch' to 'period'

pull/115/head
Dean Netherton 6 years ago
parent
commit
c51fa1fcae
  1. 6
      Source/Apps/Tune/Tune.asm
  2. 2
      Source/Apps/Tune/hbios.inc
  3. 16
      Source/Doc/Architecture.md
  4. 6
      Source/HBIOS/hbios.inc
  5. 52
      Source/HBIOS/sn76489.asm

6
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

2
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

16
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)

6
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

52
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

Loading…
Cancel
Save