|
|
@ -56,7 +56,8 @@ AY_FNTBL: |
|
|
.DW AY_NOTE |
|
|
.DW AY_NOTE |
|
|
.DW AY_PLAY |
|
|
.DW AY_PLAY |
|
|
.DW AY_QUERY |
|
|
.DW AY_QUERY |
|
|
|
|
|
|
|
|
|
|
|
.DW AY_DURATION |
|
|
|
|
|
; |
|
|
#IF (($ - AY_FNTBL) != (SND_FNCNT * 2)) |
|
|
#IF (($ - AY_FNTBL) != (SND_FNCNT * 2)) |
|
|
.ECHO "*** INVALID SND FUNCTION TABLE ***\n" |
|
|
.ECHO "*** INVALID SND FUNCTION TABLE ***\n" |
|
|
!!!!! |
|
|
!!!!! |
|
|
@ -432,6 +433,19 @@ AY_QUERY_DEV: |
|
|
XOR A |
|
|
XOR A |
|
|
RET |
|
|
RET |
|
|
; |
|
|
; |
|
|
|
|
|
;====================================================================== |
|
|
|
|
|
; SOUND DRIVER FUNCTION - DURATION |
|
|
|
|
|
;====================================================================== |
|
|
|
|
|
; |
|
|
|
|
|
AY_DURATION: |
|
|
|
|
|
LD (AY_PENDING_DURATION),HL ; SET TONE DURATION |
|
|
|
|
|
XOR A |
|
|
|
|
|
RET |
|
|
|
|
|
; |
|
|
|
|
|
;====================================================================== |
|
|
|
|
|
; NON-BLOCKING INTERRUPT CODE |
|
|
|
|
|
;====================================================================== |
|
|
|
|
|
; |
|
|
AY_DI: |
|
|
AY_DI: |
|
|
LD A, (AY_READY) |
|
|
LD A, (AY_READY) |
|
|
BIT 1, A |
|
|
BIT 1, A |
|
|
@ -457,7 +471,7 @@ AY_WRTPSG: |
|
|
CALL AY_DI |
|
|
CALL AY_DI |
|
|
#IFDEF SBCV2004 |
|
|
#IFDEF SBCV2004 |
|
|
LD A,8 ; SBC-V2-004 CHANGE |
|
|
LD A,8 ; SBC-V2-004 CHANGE |
|
|
OUT (112),A ; TO HALF CLOCK SPEED |
|
|
|
|
|
|
|
|
OUT (RTCIO),A ; TO HALF CLOCK SPEED |
|
|
#ENDIF |
|
|
#ENDIF |
|
|
#IF (CPUFAM == CPU_Z180) |
|
|
#IF (CPUFAM == CPU_Z180) |
|
|
IN0 A,(Z180_DCNTL) ; GET WAIT STATES |
|
|
IN0 A,(Z180_DCNTL) ; GET WAIT STATES |
|
|
@ -475,7 +489,7 @@ AY_WRTPSG: |
|
|
#ENDIF |
|
|
#ENDIF |
|
|
#IFDEF SBCV2004 |
|
|
#IFDEF SBCV2004 |
|
|
LD A,0 ; SBC-V2-004 CHANGE TO |
|
|
LD A,0 ; SBC-V2-004 CHANGE TO |
|
|
OUT (112),A ; NORMAL CLOCK SPEED |
|
|
|
|
|
|
|
|
OUT (RTCIO),A ; NORMAL CLOCK SPEED |
|
|
#ENDIF |
|
|
#ENDIF |
|
|
JP AY_EI |
|
|
JP AY_EI |
|
|
; |
|
|
; |
|
|
@ -487,7 +501,7 @@ AY_RDPSG: |
|
|
CALL AY_DI |
|
|
CALL AY_DI |
|
|
#IFDEF SBCV2004 |
|
|
#IFDEF SBCV2004 |
|
|
LD A,8 ; SBC-V2-004 CHANGE |
|
|
LD A,8 ; SBC-V2-004 CHANGE |
|
|
OUT (112),A ; TO HALF CLOCK SPEED |
|
|
|
|
|
|
|
|
OUT (RTCIO),A ; TO HALF CLOCK SPEED |
|
|
#ENDIF |
|
|
#ENDIF |
|
|
#IF (CPUFAM == CPU_Z180) |
|
|
#IF (CPUFAM == CPU_Z180) |
|
|
IN0 A,(Z180_DCNTL) ; GET WAIT STATES |
|
|
IN0 A,(Z180_DCNTL) ; GET WAIT STATES |
|
|
@ -505,7 +519,7 @@ AY_RDPSG: |
|
|
#ENDIF |
|
|
#ENDIF |
|
|
#IFDEF SBCV2004 |
|
|
#IFDEF SBCV2004 |
|
|
LD A,0 ; SBC-V2-004 CHANGE TO |
|
|
LD A,0 ; SBC-V2-004 CHANGE TO |
|
|
OUT (112),A ; NORMAL CLOCK SPEED |
|
|
|
|
|
|
|
|
OUT (RTCIO),A ; NORMAL CLOCK SPEED |
|
|
#ENDIF |
|
|
#ENDIF |
|
|
JP AY_EI |
|
|
JP AY_EI |
|
|
; |
|
|
; |
|
|
@ -513,6 +527,7 @@ AY_RDPSG: |
|
|
; |
|
|
; |
|
|
AY_PENDING_PERIOD .DW 0 ; PENDING PERIOD (12 BITS) ; ORDER |
|
|
AY_PENDING_PERIOD .DW 0 ; PENDING PERIOD (12 BITS) ; ORDER |
|
|
AY_PENDING_VOLUME .DB 0 ; PENDING VOL (8 BITS) ; SIGNIFICANT |
|
|
AY_PENDING_VOLUME .DB 0 ; PENDING VOL (8 BITS) ; SIGNIFICANT |
|
|
|
|
|
AY_PENDING_DURATION .DW 0 ; PENDING DURATION (16 BITS) |
|
|
AY_READY .DB 0 ; BIT 0 -> NZ DRIVER IS READY TO RECEIVE PLAY COMMAND |
|
|
AY_READY .DB 0 ; BIT 0 -> NZ DRIVER IS READY TO RECEIVE PLAY COMMAND |
|
|
; BIT 1 -> NZ EXECUTING WITHIN TIMER HANDLER = DO NOT DIS/ENABLE INT |
|
|
; BIT 1 -> NZ EXECUTING WITHIN TIMER HANDLER = DO NOT DIS/ENABLE INT |
|
|
; |
|
|
; |
|
|
|