Browse Source

Update ay38910.asm

code optimizations
pull/120/head
b1ackmai1er 6 years ago
parent
commit
24b79880d0
  1. 21
      Source/HBIOS/ay38910.asm

21
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 0 ; USE SBC-V2-004 HALF CLOCK DIVIDER
SBCV2004 .EQU 0 ; 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
@ -129,11 +129,13 @@ AY_INIT:
;====================================================================== ;======================================================================
; ;
AY_SETV: AY_SETV:
PUSH BC
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
DJNZ AY_SV DJNZ AY_SV
POP BC
RET RET
; ;
;====================================================================== ;======================================================================
@ -219,8 +221,9 @@ AY_NOTE:
JR NC, AY_NOTE1 ; INCOMING HL DOES NOT MAP INTO AY3NOTETBL JR NC, AY_NOTE1 ; INCOMING HL DOES NOT MAP INTO AY3NOTETBL
; ;
ADD HL, DE ; RESTORE HL ADD HL, DE ; RESTORE HL
EX DE,HL
LD HL, AY3NOTETBL ; HL = AY3NOTETBL + HL
; EX DE,HL
; LD HL, AY3NOTETBL ; HL = AY3NOTETBL + HL
LD DE, AY3NOTETBL ; HL = AY3NOTETBL + HL
ADD HL, DE ADD HL, DE
; ;
LD A, (HL) ; RETRIEVE PERIOD COUNT FROM AY3NOTETBL LD A, (HL) ; RETRIEVE PERIOD COUNT FROM AY3NOTETBL
@ -288,11 +291,13 @@ AY_PLAY:
AUDTRACE_CR AUDTRACE_CR
; ;
INC HL ; NEXT BYTE INC HL ; NEXT BYTE
LD E,(HL)
SRL E ; MAP THE VOLUME
SRL E ; FROM 00-FF
SRL E ; TO 00-0F
SRL E
LD A,(HL) ; PENDING VOLUME
RRCA ; MAP THE VOLUME
RRCA ; FROM 00-FF
RRCA ; TO 00-0F
RRCA
AND $0F
LD E,A
CALL AY_WRTPSG ; SET VOL (E) IN CHANNEL REG (D) CALL AY_WRTPSG ; SET VOL (E) IN CHANNEL REG (D)
; ;
POP DE ; RECALL CHANNEL POP DE ; RECALL CHANNEL

Loading…
Cancel
Save