Browse Source

Merge pull request #119 from vipoo/dean/dev-9

Sound drivers
pull/123/head
Wayne Warthen 6 years ago
committed by GitHub
parent
commit
849ec56421
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 4
      Source/HBIOS/audio.inc
  2. 97
      Source/HBIOS/ay38910.asm
  3. 4
      Source/HBIOS/hbios.asm
  4. 74
      Source/HBIOS/sn76489.asm

4
Source/HBIOS/audio.inc

@ -11,6 +11,8 @@
#DEFINE AUDDEBUG(S) CALL PRTSTRD \ .TEXT S \ .TEXT "$" ; $$$$$$ PRINT STRING S TO CONSOLE - PRTD("HELLO") - NO TRAILING $ REQUIRED #DEFINE AUDDEBUG(S) CALL PRTSTRD \ .TEXT S \ .TEXT "$" ; $$$$$$ PRINT STRING S TO CONSOLE - PRTD("HELLO") - NO TRAILING $ REQUIRED
#DEFINE AUDTRACE_CR AUDDEBUG("\r\n$")
#ELSE #ELSE
#DEFINE AUDTRACE(S) #DEFINE AUDTRACE(S)
#DEFINE AUDTRACE_A #DEFINE AUDTRACE_A
@ -23,4 +25,6 @@
#DEFINE AUDTRACE_IY #DEFINE AUDTRACE_IY
#DEFINE AUDDEBUG(STR) #DEFINE AUDDEBUG(STR)
#DEFINE AUDTRACE_CR
#ENDIF #ENDIF

97
Source/HBIOS/ay38910.asm

@ -58,7 +58,7 @@ AY_IDAT .EQU 0 ; NO INSTANCE DATA ASSOCIATED WITH THIS DEVICE
; ;
; DEVICE CAPABILITIES AND CONFIGURATION ; DEVICE CAPABILITIES AND CONFIGURATION
; ;
SBCV2004 .EQU 1 ; USE SBC-V2-004 HALF CLOCK DIVIDER
SBCV2004 .EQU 1 ; USE SBC-V2-004 HALF CLOCK DIVIDER
; ;
AY_TONECNT .EQU 3 ; COUNT NUMBER OF TONE CHANNELS AY_TONECNT .EQU 3 ; COUNT NUMBER OF TONE CHANNELS
AY_NOISECNT .EQU 1 ; COUNT NUMBER OF NOISE CHANNELS AY_NOISECNT .EQU 1 ; COUNT NUMBER OF NOISE CHANNELS
@ -106,11 +106,11 @@ AY38910_INIT:
LD D,AY_R3CHBP LD D,AY_R3CHBP
LD E,$00 LD E,$00
CALL AY_WRTPSG ; R03 = $00 = XXXX0000 CALL AY_WRTPSG ; R03 = $00 = XXXX0000
;
CALL LDELAY ; HALF SECOND
;
CALL LDELAY ; HALF SECOND
; ;
LD E,$00 ; SET VOLUME OFF LD E,$00 ; SET VOLUME OFF
CALL AY_SETV ; ON ALL CHANNELS
CALL AY_SETV ; ON ALL CHANNELS
; ;
; RET ; RET
; ;
@ -129,7 +129,7 @@ AY_INIT:
;====================================================================== ;======================================================================
; ;
AY_SETV: AY_SETV:
LD B,AY_TONECNT ; NUMBER OF CHANNELS
LD B,AY_TONECNT ; NUMBER OF CHANNELS
LD D,AY_R8AVOL ; BASE REGISTER FOR VOLUME LD D,AY_R8AVOL ; BASE REGISTER FOR VOLUME
AY_SV: CALL AY_WRTPSG ; CYCLING THROUGH ALL CHANNELS AY_SV: CALL AY_WRTPSG ; CYCLING THROUGH ALL CHANNELS
INC D INC D
@ -144,20 +144,20 @@ AY_SV: CALL AY_WRTPSG ; CYCLING THROUGH ALL CHANNELS
;====================================================================== ;======================================================================
; ;
AY_RESET: AY_RESET:
AUDTRACE(TRACE_INIT)
AUDTRACE(AYT_INIT)
; ;
CALL AY_INIT ; SET DEFAULT CHIP CONFIGURATION CALL AY_INIT ; SET DEFAULT CHIP CONFIGURATION
; ;
AUDTRACE(TRACE_VOLUME_OFF)
AUDTRACE(AYT_VOLOFF)
LD E,0 ; SET VOLUME OFF LD E,0 ; SET VOLUME OFF
CALL AY_SETV ; ON ALL CHANNELS CALL AY_SETV ; ON ALL CHANNELS
; ;
XOR A ; SIGNAL SUCCESS XOR A ; SIGNAL SUCCESS
LD (PENDING_VOLUME),A ; SET VOLUME TO ZERO
LD (AY_PENDING_VOLUME),A ; SET VOLUME TO ZERO
LD H,A LD H,A
LD L,A LD L,A
LD (PENDING_PERIOD),HL ; SET TONE PERIOD TO ZERO
;
LD (AY_PENDING_PERIOD),HL ; SET TONE PERIOD TO ZERO
;
RET RET
; ;
;====================================================================== ;======================================================================
@ -165,11 +165,11 @@ AY_RESET:
;====================================================================== ;======================================================================
; ;
AY_VOLUME: AY_VOLUME:
AUDDEBUG("AY3VOL ")
AUDTRACE(AYT_VOL)
AUDTRACE_L AUDTRACE_L
AUDDEBUG("\r\n")
AUDTRACE_CR
LD A,L ; SAVE VOLUME LD A,L ; SAVE VOLUME
LD (PENDING_VOLUME), A
LD (AY_PENDING_VOLUME), A
; ;
XOR A ; SIGNAL SUCCESS XOR A ; SIGNAL SUCCESS
RET RET
@ -179,22 +179,22 @@ AY_VOLUME:
;====================================================================== ;======================================================================
; ;
AY_PERIOD: AY_PERIOD:
AUDDEBUG("AY3PRD ")
AUDTRACE(AYT_PERIOD)
AUDTRACE_HL AUDTRACE_HL
AUDDEBUG("\r\n")
AUDTRACE_CR
LD A, H ; MAXIMUM TONE PERIOD IS 12-BITS LD A, H ; MAXIMUM TONE PERIOD IS 12-BITS
CP $10 ; ALLOWED RANGE IS 0001-0FFF (4095) CP $10 ; ALLOWED RANGE IS 0001-0FFF (4095)
JP NC, AY_QUERY_PERIOD1 ; RETURN NZ IF NUMBER TOO LARGE JP NC, AY_QUERY_PERIOD1 ; RETURN NZ IF NUMBER TOO LARGE
LD (PENDING_PERIOD), HL ; SAVE AND
LD (AY_PENDING_PERIOD), HL ; SAVE AND
XOR A ; SIGNAL SUCCESS XOR A ; SIGNAL SUCCESS
RET RET
AY_QUERY_PERIOD1: AY_QUERY_PERIOD1:
LD L, $FF LD L, $FF
LD H, L ; REQUESTED PERIOD IS LARGER
LD (PENDING_PERIOD), HL ; THAN THE DEVICE CAN SUPPORT
LD H, L ; REQUESTED PERIOD IS LARGER
LD (AY_PENDING_PERIOD), HL ; THAN THE DEVICE CAN SUPPORT
OR L ; SO SIGNAL FAILURE OR L ; SO SIGNAL FAILURE
RET RET
; ;
@ -203,9 +203,9 @@ AY_QUERY_PERIOD1:
;====================================================================== ;======================================================================
; ;
AY_NOTE: AY_NOTE:
AUDDEBUG("AY3NOT ")
AUDTRACE(AYT_NOTE)
AUDTRACE_L AUDTRACE_L
AUDDEBUG("\r\n")
AUDTRACE_CR
ADD HL, HL ; SHIFT RIGHT (MULT 2) -INDEX INTO AY3NOTETBL TABLE OF WORDS ADD HL, HL ; SHIFT RIGHT (MULT 2) -INDEX INTO AY3NOTETBL TABLE OF WORDS
; TEST IF HL IS LARGER THAN AY3NOTETBL SIZE ; TEST IF HL IS LARGER THAN AY3NOTETBL SIZE
@ -236,11 +236,11 @@ AY_NOTE1:
;====================================================================== ;======================================================================
; ;
AY_PLAY: AY_PLAY:
AUDDEBUG("AY3PLY ")
AUDTRACE(AYT_PLAY)
AUDTRACE_D AUDTRACE_D
AUDDEBUG("\r\n")
AUDTRACE_CR
; ;
LD A, (PENDING_PERIOD + 1) ; CHECK THE HIGH BYTE OF THE PERIOD
LD A, (AY_PENDING_PERIOD + 1) ; CHECK THE HIGH BYTE OF THE PERIOD
CP $FF CP $FF
JR Z, AY_PLAY1 ; PERIOD IS TOO LARGE, UNABLE TO PLAY JR Z, AY_PLAY1 ; PERIOD IS TOO LARGE, UNABLE TO PLAY
CALL AY_APPLY_VOL CALL AY_APPLY_VOL
@ -250,13 +250,13 @@ AY_PLAY:
RET RET
; ;
AY_PLAY1: ; TURN CHANNEL VOL TO OFF AND STOP PLAYING AY_PLAY1: ; TURN CHANNEL VOL TO OFF AND STOP PLAYING
LD A, (PENDING_VOLUME)
LD A, (AY_PENDING_VOLUME)
PUSH AF PUSH AF
XOR A XOR A
LD (PENDING_VOLUME), A
LD (AY_PENDING_VOLUME), A
CALL AY_APPLY_VOL CALL AY_APPLY_VOL
POP AF POP AF
LD (PENDING_VOLUME), A
LD (AY_PENDING_VOLUME), A
; ;
OR $FF ; SIGNAL FAILURE OR $FF ; SIGNAL FAILURE
RET RET
@ -284,17 +284,17 @@ AY_QUERY:
; ;
AY_QUERY_CHCNT: AY_QUERY_CHCNT:
LD B, AY_TONECNT ; RETURN NUMBER OF LD B, AY_TONECNT ; RETURN NUMBER OF
LD C, AY_NOISECNT ; TONE AND NOISE
LD C, AY_NOISECNT ; TONE AND NOISE
XOR A ; CHANNELS IN BC XOR A ; CHANNELS IN BC
RET RET
; ;
AY_QUERY_PERIOD: AY_QUERY_PERIOD:
LD HL, (PENDING_PERIOD) ; RETURN 16-BIT PERIOD
LD HL, (AY_PENDING_PERIOD) ; RETURN 16-BIT PERIOD
XOR A ; IN HL REGISTER XOR A ; IN HL REGISTER
RET RET
; ;
AY_QUERY_VOLUME: AY_QUERY_VOLUME:
LD A, (PENDING_VOLUME) ; RETURN 8-BIT VOLUME
LD A, (AY_PENDING_VOLUME) ; RETURN 8-BIT VOLUME
LD L, A ; IN L REGISTER LD L, A ; IN L REGISTER
XOR A XOR A
LD H, A LD H, A
@ -320,11 +320,11 @@ AY_APPLY_VOL:
ADD A,AY_R8AVOL ; CHANNEL VOLUME ADD A,AY_R8AVOL ; CHANNEL VOLUME
LD D,A ; REGISTER LD D,A ; REGISTER
; ;
AUDTRACE(TRACE_REG_WR)
AUDTRACE(AYT_REGWR)
AUDTRACE_A AUDTRACE_A
AUDTRACE(TRACE_NEWLINE)
AUDTRACE_CR
; ;
LD A, (PENDING_VOLUME) ; MAP THE VOLUME
LD A, (AY_PENDING_VOLUME) ; MAP THE VOLUME
RRCA ; FROM 00-FF RRCA ; FROM 00-FF
RRCA ; TO 00-0F RRCA ; TO 00-0F
RRCA RRCA
@ -353,11 +353,12 @@ AY_APPLY_PRD:
ADD A,A ; CHANNEL REGISTER ADD A,A ; CHANNEL REGISTER
LD D,A ; FOR THE TONE PERIOD LD D,A ; FOR THE TONE PERIOD
; ;
AUDTRACE(TRACE_REG_WR)
AUDTRACE(AYT_REGWR)
AUDTRACE_A AUDTRACE_A
AUDTRACE(TRACE_NEWLINE)
AUDTRACE_CR
; ;
LD HL,(PENDING_PERIOD) ; WRITE THE LOWER
LD HL,(AY_PENDING_PERIOD) ; WRITE THE LOWER
LD E,L ; 8-BITS OF THE TONE PERIOD LD E,L ; 8-BITS OF THE TONE PERIOD
CALL AY_WRTPSG CALL AY_WRTPSG
INC D INC D
@ -370,10 +371,10 @@ AY_APPLY_PRD:
RET RET
; ;
;====================================================================== ;======================================================================
;
;
; WRITE DATA IN E REGISTER TO DEVICE REGISTER D ; WRITE DATA IN E REGISTER TO DEVICE REGISTER D
; INTERRUPTS DISABLE DURING WRITE. WRITE IN SLOW MODE IF Z180 CPU. ; INTERRUPTS DISABLE DURING WRITE. WRITE IN SLOW MODE IF Z180 CPU.
;
;
;====================================================================== ;======================================================================
; ;
AY_WRTPSG: AY_WRTPSG:
@ -388,7 +389,7 @@ AY_WRTPSG:
OR %00110000 ; FORCE SLOW OPERATION (I/O W/S=3) OR %00110000 ; FORCE SLOW OPERATION (I/O W/S=3)
OUT0 (Z180_DCNTL),A ; AND UPDATE DCNTL OUT0 (Z180_DCNTL),A ; AND UPDATE DCNTL
#ENDIF #ENDIF
LD A,D ; SELECT THE REGISTER WE
LD A,D ; SELECT THE REGISTER WE
OUT (AY_RSEL),A ; WANT TO WRITE TO OUT (AY_RSEL),A ; WANT TO WRITE TO
LD A,E ; WRITE THE VALUE TO LD A,E ; WRITE THE VALUE TO
OUT (AY_RDAT),A ; THE SELECTED REGISTER OUT (AY_RDAT),A ; THE SELECTED REGISTER
@ -405,19 +406,17 @@ AY_WRTPSG:
; ;
;====================================================================== ;======================================================================
; ;
PENDING_PERIOD .DW 0 ; PENDING PERIOD (12 BITS)
PENDING_VOLUME .DB 0 ; PENDING VOL (8 BITS)
AY_PENDING_PERIOD .DW 0 ; PENDING PERIOD (12 BITS)
AY_PENDING_VOLUME .DB 0 ; PENDING VOL (8 BITS)
#IF AUDIOTRACE #IF AUDIOTRACE
TRACE_INIT .DB "\r\nAY_INIT CALLED\r\n$"
TRACE_VOLUME_OFF .DB "\r\nAY_VOLUME_OFF\r\n$"
TRACE_VOLUME_SET .DB "\r\nAY_VOLUME_SET CH: $"
TRACE_PLAY .DB "\r\nPLAY\r\n$"
TRACE_VOLUME .DB ", VOL: $"
TRACE_REG_WR .DB "\r\nOUT AY-3-8910 $"
TRACE_PERIOD_SET .DB "\r\nAY_PERIOD_SET CH: $"
TRACE_PERIOD .DB ", PERIOD: $"
TRACE_NEWLINE .DB "\r\n$"
AYT_INIT .DB "\r\nAY_INIT\r\n$"
AYT_VOLOFF .DB "\r\nAY_VOLUME OFF\r\n$"
AYT_VOL .DB "\r\nAY_VOLUME: $"
AYT_NOTE .DB "\r\nAY_NOTE: $"
AYT_PERIOD .DB "\r\nAY_PERIOD $"
AYT_PLAY .DB "\r\nAY_PLAY CH: $"
AYT_REGWR .DB "\r\nOUT AY-3-8910 $"
#ENDIF #ENDIF
; ;
; THE FREQUENCY BY QUARTER TONE STARTING AT A1# ; THE FREQUENCY BY QUARTER TONE STARTING AT A1#

4
Source/HBIOS/hbios.asm

@ -2286,7 +2286,7 @@ SND_ADDENT:
; WORD UNIT SPECIFIC DATA (TYPICALLY A DEVICE INSTANCE DATA ADDRESS) ; WORD UNIT SPECIFIC DATA (TYPICALLY A DEVICE INSTANCE DATA ADDRESS)
; ;
SND_FNCNT .EQU 6 ; NUMBER OF SND FUNCS (FOR RANGE CHECK) SND_FNCNT .EQU 6 ; NUMBER OF SND FUNCS (FOR RANGE CHECK)
SND_MAX .EQU 2 ; UP TO 2 UNITS
SND_MAX .EQU 3 ; UP TO 2 UNITS
SND_SIZ .EQU SND_MAX * 4 ; EACH ENTRY IS 4 BYTES SND_SIZ .EQU SND_MAX * 4 ; EACH ENTRY IS 4 BYTES
; ;
.DB SND_FNCNT ; SND FUNCTION COUNT (FOR RANGE CHECK) .DB SND_FNCNT ; SND FUNCTION COUNT (FOR RANGE CHECK)
@ -2555,7 +2555,7 @@ SYS_GETRTCCNT:
LD A,(RTC_DISPACT) ; IS RTC ACTIVE? LD A,(RTC_DISPACT) ; IS RTC ACTIVE?
OR A ; SET FLAGS OR A ; SET FLAGS
JR Z,SYS_GETRTCCNT1 ; IF NONE, DONE JR Z,SYS_GETRTCCNT1 ; IF NONE, DONE
INC E ; SET ONE DEVICE
INC E ; SET ONE DEVICE
SYS_GETRTCCNT1: SYS_GETRTCCNT1:
XOR A ; SIGNALS SUCCESS XOR A ; SIGNALS SUCCESS
RET RET

74
Source/HBIOS/sn76489.asm

@ -69,13 +69,13 @@ SN7_INIT1:
; ;
SN7_RESET: SN7_RESET:
AUDTRACE(TRACE_INIT)
AUDTRACE(SNT_INIT)
CALL SN7_VOLUME_OFF CALL SN7_VOLUME_OFF
XOR A ; SIGNAL SUCCESS XOR A ; SIGNAL SUCCESS
RET RET
SN7_VOLUME_OFF: SN7_VOLUME_OFF:
AUDTRACE(TRACE_VOLUME_OFF)
AUDTRACE(SNT_VOLOFF)
LD A, CHANNEL_0_SILENT LD A, CHANNEL_0_SILENT
OUT (SN76489_PORT_LEFT), A OUT (SN76489_PORT_LEFT), A
@ -103,11 +103,11 @@ SN7_VOLUME_OFF:
; 1 CC 1 VVVV ; 1 CC 1 VVVV
SN7_VOLUME: SN7_VOLUME:
AUDDEBUG("SN7VOL ")
AUDTRACE(SNT_VOL)
AUDTRACE_L AUDTRACE_L
AUDDEBUG("\r\n")
AUDTRACE_CR
LD A, L LD A, L
LD (PENDING_VOLUME), A
LD (SN7_PENDING_VOLUME), A
XOR A ; SIGNAL SUCCESS XOR A ; SIGNAL SUCCESS
RET RET
@ -115,9 +115,9 @@ SN7_VOLUME:
SN7_NOTE: SN7_NOTE:
AUDDEBUG("SN7NOT ")
AUDTRACE(SNT_NOTE)
AUDTRACE_L AUDTRACE_L
AUDDEBUG("\r\n")
AUDTRACE_CR
ADD HL, HL ; SHIFT RIGHT (MULT 2) -INDEX INTO SN7NOTETBL TABLE OF WORDS ADD HL, HL ; SHIFT RIGHT (MULT 2) -INDEX INTO SN7NOTETBL TABLE OF WORDS
; TEST IF HL IS LARGER THAN SN7NOTETBL SIZE ; TEST IF HL IS LARGER THAN SN7NOTETBL SIZE
@ -144,32 +144,32 @@ SN7_NOTE1:
RET RET
SN7_PERIOD: SN7_PERIOD:
AUDDEBUG("SN7PRD ")
AUDTRACE(SNT_PERIOD)
AUDTRACE_HL AUDTRACE_HL
AUDDEBUG("\r\n")
AUDTRACE_CR
LD A, H LD A, H
CP $04 CP $04
JP NC, SN7_QUERY_PERIOD1 ; RETURN NZ IF NUMBER TOO LARGE JP NC, SN7_QUERY_PERIOD1 ; RETURN NZ IF NUMBER TOO LARGE
LD (PENDING_PERIOD), HL
LD (SN7_PENDING_PERIOD), HL
XOR A ; SIGNAL SUCCESS XOR A ; SIGNAL SUCCESS
RET RET
SN7_QUERY_PERIOD1: ; 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 L, $FF
LD H, $FF LD H, $FF
LD (PENDING_PERIOD), HL
LD (SN7_PENDING_PERIOD), HL
OR $FF ; SIGNAL FAILURE OR $FF ; SIGNAL FAILURE
RET RET
SN7_PLAY: SN7_PLAY:
AUDDEBUG("SN7PLY ")
AUDTRACE(SNT_PLAY)
AUDTRACE_D AUDTRACE_D
AUDDEBUG("\r\n")
AUDTRACE_CR
LD A, (PENDING_PERIOD + 1)
LD A, (SN7_PENDING_PERIOD + 1)
CP $FF CP $FF
JR Z, SN7_PLAY1 ; PERIOD IS TOO LARGE, UNABLE TO PLAY JR Z, SN7_PLAY1 ; PERIOD IS TOO LARGE, UNABLE TO PLAY
CALL SN7_APPLY_VOL CALL SN7_APPLY_VOL
@ -179,13 +179,13 @@ SN7_PLAY:
RET RET
SN7_PLAY1: ; TURN CHANNEL VOL TO OFF AND STOP PLAYING SN7_PLAY1: ; TURN CHANNEL VOL TO OFF AND STOP PLAYING
LD A, (PENDING_VOLUME)
LD A, (SN7_PENDING_VOLUME)
PUSH AF PUSH AF
LD A, 0 LD A, 0
LD (PENDING_VOLUME), A
LD (SN7_PENDING_VOLUME), A
CALL SN7_APPLY_VOL CALL SN7_APPLY_VOL
POP AF POP AF
LD (PENDING_VOLUME), A
LD (SN7_PENDING_VOLUME), A
OR $FF ; SIGNAL FAILURE OR $FF ; SIGNAL FAILURE
RET RET
@ -214,12 +214,12 @@ SN7_QUERY_CHCNT:
RET RET
SN7_QUERY_PERIOD: SN7_QUERY_PERIOD:
LD HL, (PENDING_PERIOD)
LD HL, (SN7_PENDING_PERIOD)
XOR A XOR A
RET RET
SN7_QUERY_VOLUME: SN7_QUERY_VOLUME:
LD A, (PENDING_VOLUME)
LD A, (SN7_PENDING_VOLUME)
LD L, A LD L, A
LD H, 0 LD H, 0
@ -251,7 +251,7 @@ SN7_APPLY_VOL: ; APPLY VOLUME TO BOTH LEFT AND RIGHT CHANNELS
OR $90 OR $90
LD B, A LD B, A
LD A, (PENDING_VOLUME)
LD A, (SN7_PENDING_VOLUME)
RRCA RRCA
RRCA RRCA
RRCA RRCA
@ -264,9 +264,9 @@ SN7_APPLY_VOL: ; APPLY VOLUME TO BOTH LEFT AND RIGHT CHANNELS
AND $0F AND $0F
OR B ; A CONTAINS COMMAND TO SET VOLUME FOR CHANNEL OR B ; A CONTAINS COMMAND TO SET VOLUME FOR CHANNEL
AUDTRACE(TRACE_PORT_WR)
AUDTRACE(SNT_REGWR)
AUDTRACE_A AUDTRACE_A
AUDTRACE(TRACE_NEWLINE)
AUDTRACE_CR
OUT (SN76489_PORT_LEFT), A OUT (SN76489_PORT_LEFT), A
OUT (SN76489_PORT_RIGHT), A OUT (SN76489_PORT_RIGHT), A
@ -279,7 +279,7 @@ SN7_APPLY_PRD:
PUSH DE PUSH DE
PUSH BC PUSH BC
PUSH AF PUSH AF
LD HL, (PENDING_PERIOD)
LD HL, (SN7_PENDING_PERIOD)
LD A, D LD A, D
AND $3 AND $3
@ -295,9 +295,9 @@ SN7_APPLY_PRD:
AND $F AND $F
OR B ; A NOW CONATINS FIRST PERIOD COMMAND OR B ; A NOW CONATINS FIRST PERIOD COMMAND
AUDTRACE(TRACE_PORT_WR)
AUDTRACE(SNT_REGWR)
AUDTRACE_A AUDTRACE_A
AUDTRACE(TRACE_NEWLINE)
AUDTRACE_CR
OUT (SN76489_PORT_LEFT), A OUT (SN76489_PORT_LEFT), A
OUT (SN76489_PORT_RIGHT), A OUT (SN76489_PORT_RIGHT), A
@ -318,9 +318,9 @@ SN7_APPLY_PRD:
RLCA ; AND PLACE IN BITS 5 AND 6 RLCA ; AND PLACE IN BITS 5 AND 6
OR B ; OR THE TWO SETS OF BITS TO MAKE 2ND PERIOD COMMAND OR B ; OR THE TWO SETS OF BITS TO MAKE 2ND PERIOD COMMAND
AUDTRACE(TRACE_PORT_WR)
AUDTRACE(SNT_REGWR)
AUDTRACE_A AUDTRACE_A
AUDTRACE(TRACE_NEWLINE)
AUDTRACE_CR
OUT (SN76489_PORT_LEFT), A OUT (SN76489_PORT_LEFT), A
OUT (SN76489_PORT_RIGHT), A OUT (SN76489_PORT_RIGHT), A
@ -344,24 +344,22 @@ SN7_FNTBL:
!!!!! !!!!!
#ENDIF #ENDIF
PENDING_PERIOD
SN7_PENDING_PERIOD
.DW 0 ; PENDING PERIOD (10 BITS) .DW 0 ; PENDING PERIOD (10 BITS)
PENDING_VOLUME
SN7_PENDING_VOLUME
.DB 0 ; PENDING VOL (8 BITS -> DOWNCONVERTED TO 4 BITS AND INVERTED) .DB 0 ; PENDING VOL (8 BITS -> DOWNCONVERTED TO 4 BITS AND INVERTED)
STR_MESSAGELT .DB "\r\nSN76489: LEFT IO=0x$" STR_MESSAGELT .DB "\r\nSN76489: LEFT IO=0x$"
STR_MESSAGERT .DB ", RIGHT IO=0x$" STR_MESSAGERT .DB ", RIGHT IO=0x$"
#IF AUDIOTRACE #IF AUDIOTRACE
TRACE_INIT .DB "\r\nSN7_INIT CALLED\r\n$"
TRACE_VOLUME_OFF .DB "\r\nSN7_VOLUME_OFF\r\n$"
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_PERIOD_SET .DB "\r\nSN7_PERIOD_SET CH: $"
TRACE_PERIOD .DB ", PERIOD: $"
TRACE_NEWLINE .DB "\r\n$"
SNT_INIT .DB "\r\nSN7_INIT\r\n$"
SNT_VOLOFF .DB "\r\nSN7_VOLUME OFF\r\n$"
SNT_VOL .DB "\r\nSN7_VOLUME: $"
SNT_NOTE .DB "\r\nSN7_NOTE: $"
SNT_PERIOD .DB "\r\nSN7_PERIOD: $"
SNT_PLAY .DB "\r\nSN7_PLAY CH: $"
SNT_REGWR .DB "\r\nOUT SN76489, $"
#ENDIF #ENDIF
; THE FREQUENCY BY QUARTER TONE STARTING AT A1# ; THE FREQUENCY BY QUARTER TONE STARTING AT A1#

Loading…
Cancel
Save