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
;
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_NOISECNT .EQU 1 ; COUNT NUMBER OF NOISE CHANNELS
@ -129,11 +129,13 @@ AY_INIT:
;======================================================================
;
AY_SETV:
PUSH BC
LD B,AY_TONECNT ; NUMBER OF CHANNELS
LD D,AY_R8AVOL ; BASE REGISTER FOR VOLUME
AY_SV: CALL AY_WRTPSG ; CYCLING THROUGH ALL CHANNELS
INC D
DJNZ AY_SV
POP BC
RET
;
;======================================================================
@ -219,8 +221,9 @@ AY_NOTE:
JR NC, AY_NOTE1 ; INCOMING HL DOES NOT MAP INTO AY3NOTETBL
;
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
;
LD A, (HL) ; RETRIEVE PERIOD COUNT FROM AY3NOTETBL
@ -288,11 +291,13 @@ AY_PLAY:
AUDTRACE_CR
;
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)
;
POP DE ; RECALL CHANNEL

Loading…
Cancel
Save