?? channeltable.asm
字號:
.ENDIF
.IF (WITH_ISR_VS2A .EQ. 1H)
SPEECH_SYNTH_START_TABLE_EXT_EX _VS2A
.ENDIF
.ENDIF
;==============================================================================
PUBLIC EVO_SYNTH_START_TABLE
EVO_SYNTH_START_TABLE:
.IF (WITH_EVO .EQ. 1)
.IF (WITH_CH0_EVO .EQ. 1)
EXTERN EVO_FXF13_ISR_EVO0
DW EVO_FXF13_ISR_EVO0
.ENDIF
.IF (WITH_CH1_EVO .EQ. 1)
EXTERN EVO_FXF13_ISR_EVO1
DW EVO_FXF13_ISR_EVO1
.ENDIF
.IF (WITH_CH2_EVO .EQ. 1)
EXTERN EVO_FXF13_ISR_EVO2
DW EVO_FXF13_ISR_EVO2
.ENDIF
.ENDIF
DW 0000H
;==============================================================================
; Start address of RAM that store information about channels.
;==============================================================================
PUBLIC MS_CHANNEL_ADDR_TABLE
MS_CHANNEL_ADDR_TABLE:
.IF (WITH_MS .EQ. 1)
.IF (CHIPSERIES = 'W588C')
DB VS2A_START
DB VS1A_START
.ENDIF
.IF (CHIPSERIES = 'W588D')
.IF (WITH_TONE .EQ. 0)
.IF (WITH_SP .EQ. 0)
DB VS0A_START
DB VS2A_START
DB VS1A_START
.ELSE ;WITH_SP .EQ. 1
DB VS1A_START
DB VS2A_START
DB VS0A_START
.ENDIF
.ELSE ;WITH_TONE=1
DB VS2A_START
DB VS1A_START
DB VS0A_START
.ENDIF
.ENDIF
.IF (CHIPSERIES = 'W588L')
.IF ((WITH_TONE .EQ. 0) && (WITH_SP .EQ. 1))
DB VS1A_START
DB VS2A_START
.ELSE
DB VS2A_START
DB VS1A_START
.ENDIF
.ENDIF
.ENDIF
DB 00H
;---------------------------------------------------------------------------------------------------------
;---------------------------------------------------------------------------------------------------------
PUBLIC SP_CHANNEL_ADDR_TABLE
SP_CHANNEL_ADDR_TABLE:
.IF (CHIPSERIES = 'W583C')
.IF (WITH_VS1A .EQ. 1)
DB VS1A_START
.ENDIF
.ENDIF
.IF (CHIPSERIES = 'W588C').OR.(CHIPSERIES = 'W588L')
.IF (WITH_VS1A .EQ. 1)
DB VS1A_START
.ENDIF
.IF (WITH_VS2A .EQ. 1)
DB VS2A_START
.ENDIF
.ENDIF
.IF (CHIPSERIES = 'W588D')
.IF (WITH_TONE .EQ. 0H)
.IF (WITH_VS1A .EQ. 1)
DB VS1A_START
.ENDIF
.IF (WITH_VS2A .EQ. 1)
DB VS2A_START
.ENDIF
.IF (WITH_VS0A .EQ. 1)
DB VS0A_START
.ENDIF
.ELSE ;WITH_TONE=1
.IF (WITH_VS0A .EQ. 1H)
DB VS0A_START
.ENDIF
.IF (WITH_VS1A .EQ. 1H)
DB VS1A_START
.ENDIF
.IF (WITH_VS2A .EQ. 1H)
DB VS2A_START
.ENDIF
.ENDIF
.ENDIF
DB 00H
;==============================================================================
PUBLIC EVO_CHANNEL_ADDR_TABLE
EVO_CHANNEL_ADDR_TABLE:
.IF (WITH_EVO .EQ. 1)
.IF (WITH_CH0_EVO .EQ. 1)
DB EVO0_START
.ENDIF
.IF (WITH_CH1_EVO .EQ. 1)
DB EVO1_START
.ENDIF
.IF (WITH_CH2_EVO .EQ. 1H)
DB EVO2_START
.ENDIF
.ENDIF
DB 00H
;==============================================================================
; Table that store Channel_ID x 2 for all channels
;==============================================================================
PUBLIC MS_CHANNEL_ID_TABLE_2
MS_CHANNEL_ID_TABLE_2:
.IF (WITH_MS .EQ. 1)
.IF (CHIPSERIES = 'W588C')
.IF (WITH_VS2A .EQ. 1)
DB CHANNEL_VS2A_2
.ENDIF
.IF (WITH_VS1A .EQ. 1)
DB CHANNEL_VS1A_2
.ENDIF
.ENDIF
.IF (CHIPSERIES = 'W588D')
.IF (WITH_TONE .EQ. 0)
.IF (WITH_SP .EQ. 0)
.IF (WITH_VS0A .EQ. 1)
DB CHANNEL_VS0A_2
.ENDIF
.IF (WITH_VS2A .EQ. 1)
DB CHANNEL_VS2A_2
.ENDIF
.IF (WITH_VS1A .EQ. 1)
DB CHANNEL_VS1A_2
.ENDIF
.ELSE
.IF (WITH_VS1A .EQ. 1)
DB CHANNEL_VS1A_2
.ENDIF
.IF (WITH_VS2A .EQ. 1)
DB CHANNEL_VS2A_2
.ENDIF
.IF (WITH_VS0A .EQ. 1)
DB CHANNEL_VS0A_2
.ENDIF
.ENDIF
.ELSE ;WITH_TONE=1
.IF (WITH_VS2A .EQ. 1)
DB CHANNEL_VS2A_2
.ENDIF
.IF (WITH_VS1A .EQ. 1)
DB CHANNEL_VS1A_2
.ENDIF
.IF (WITH_VS0A .EQ. 1)
DB CHANNEL_VS0A_2
.ENDIF
.ENDIF ;END WITH_TONE
.ENDIF
.IF (CHIPSERIES = 'W588L')
.IF ((WITH_TONE .EQ. 0) && (WITH_SP .EQ. 1))
.IF (WITH_VS1A .EQ. 1)
DB CHANNEL_VS1A_2
.ENDIF
.IF (WITH_VS2A .EQ. 1)
DB CHANNEL_VS2A_2
.ENDIF
.ELSE
.IF (WITH_VS2A .EQ. 1)
DB CHANNEL_VS2A_2
.ENDIF
.IF (WITH_VS1A .EQ. 1)
DB CHANNEL_VS1A_2
.ENDIF
.ENDIF
.ENDIF
.ENDIF
;------------------------------------------------------------------------------------------------
;------------------------------------------------------------------------------------------------
PUBLIC SP_CHANNEL_ID_TABLE_2
SP_CHANNEL_ID_TABLE_2:
.IF (CHIPSERIES = 'W583C')
.IF (WITH_VS1A .EQ. 1)
DB CHANNEL_VS1A_2
.ENDIF
.ENDIF
.IF (CHIPSERIES = 'W588C').OR.(CHIPSERIES = 'W588L')
.IF (WITH_VS1A .EQ. 1)
DB CHANNEL_VS1A_2
.ENDIF
.IF (WITH_VS2A .EQ. 1)
DB CHANNEL_VS2A_2
.ENDIF
.ENDIF
.IF (CHIPSERIES = 'W588D')
.IF (WITH_TONE .EQ. 0)
.IF (WITH_VS1A .EQ. 1)
DB CHANNEL_VS1A_2
.ENDIF
.IF (WITH_VS2A .EQ. 1)
DB CHANNEL_VS2A_2
.ENDIF
.IF (WITH_VS0A .EQ. 1)
DB CHANNEL_VS0A_2
.ENDIF
.ELSE ;WITH_TONE=1
.IF (WITH_VS0A .EQ. 1H)
DB CHANNEL_VS0A_2
.ENDIF
.IF (WITH_VS1A .EQ. 1H)
DB CHANNEL_VS1A_2
.ENDIF
.IF (WITH_VS2A .EQ. 1H)
DB CHANNEL_VS2A_2
.ENDIF
.ENDIF
.ENDIF
;-------------------------------------------------------------------------------
;SP_TM_CH_MAP_TABLE: speech timer index map to channel index
;-------------------------------------------------------------------------------
PUBLIC SP_TM_CH_MAP_TABLE
SP_TM_CH_MAP_TABLE:
.IF (WITH_SP .EQ. 1)
.IF (CHIPSERIES = 'W583C')
DB 0
DB SP_CH0
DB 0
.ENDIF
.IF (CHIPSERIES = 'W588C').OR.(CHIPSERIES = 'W588L')
DB 0
DB SP_CH0
DB SP_CH1
.ENDIF
.IF (CHIPSERIES = 'W588D')
.IF (WITH_TONE .EQ. 0)
DB SP_CH2
DB SP_CH0
DB SP_CH1
.ELSE
DB SP_CH0
DB SP_CH1
DB SP_CH2
.ENDIF
.ENDIF
.ENDIF
;---------------------------------------------------------------------------------
;MS_TM_CH_MAP_TABLE: timer index map to midi channel
;---------------------------------------------------------------------------------
PUBLIC MS_TM_CH_MAP_TABLE
MS_TM_CH_MAP_TABLE:
.IF (WITH_MS .EQ. 1)
.IF (CHIPSERIES = 'W588C')
DB 0
DB MS_CH1
DB MS_CH0
.ENDIF
.IF (CHIPSERIES = 'W588D')
.IF (WITH_TONE .EQ. 0)
.IF (WITH_SP .EQ. 0)
DB MS_CH0
DB MS_CH2
DB MS_CH1
.ELSE
DB MS_CH2
DB MS_CH0
DB MS_CH1
.ENDIF
.ELSE ;WITH_TONE=1
DB MS_CH2
DB MS_CH1
DB MS_CH0
.ENDIF
.ENDIF
.IF (CHIPSERIES = 'W588L')
.IF ((WITH_TONE .EQ. 0) && (WITH_SP .EQ. 1))
DB 0
DB MS_CH0
DB MS_CH1
.ELSE
DB 0
DB MS_CH1
DB MS_CH0
.ENDIF
.ENDIF
.ENDIF
;---------------------------------------------------------------------------------------
;add by angela 2006.03.23 for DIS/EN CLOBALVOL feature
.IF (WITH_SP .EQ. 1)
.IF (WITH_VOL_ADJ .EQ. 1)
PUBLIC SP_GLOBAL_VOLUME_TABLE
SP_GLOBAL_VOLUME_TABLE:
DB GLOBAL_VOL_SP0
DB GLOBAL_VOL_SP1
DB GLOBAL_VOL_SP2
.ENDIF
.ENDIF
;---------------------------------------------------------------------------------------
.IF (WITH_SP .EQ. 1)
.IF (WITH_VC4 .EQ. 1)
PUBLIC SP_GLOBAL_VC4_RATE_TABLE
SP_GLOBAL_VC4_RATE_TABLE:
DB GLOBAL_VC4_RATE_SP0-GLOBAL_VC4_RATE_SP0
DB GLOBAL_VC4_RATE_SP1-GLOBAL_VC4_RATE_SP0
DB GLOBAL_VC4_RATE_SP2-GLOBAL_VC4_RATE_SP0
.ENDIF
.ENDIF
;add by angela 2006.03.23 for DIS/EN CLOBALVOL feature
;==============================================================================
; Tables about melody.
;==============================================================================
.IF (WITH_MS .EQ. 1)
;==============================================================================
; Init procedures for all timbre types.
;==============================================================================
PUBLIC MS_INIT_CHANNEL_TABLE
MS_INIT_CHANNEL_TABLE:
.IF (WITH_TONE .EQ. 1H)
EXTERN INIT_TONE_MELODY
DW INIT_TONE_MELODY
.ENDIF
.IF (WITH_VMDPC8 .EQ. 1H)
EXTERN INIT_HQPC8_MELODY
DW INIT_HQPC8_MELODY
.ENDIF
.IF (WITH_HQPC8 .EQ. 1H)
EXTERN INIT_HQPC8_MELODY
DW INIT_HQPC8_MELODY
.ENDIF
.IF (WITH_PCSPC8 .EQ. 1H)
EXTERN INIT_PCSPC8_MELODY
DW INIT_PCSPC8_MELODY
.ENDIF
;-----------------------------------------------------------------------------------------
;-----------------------------------------------------------------------------------------
PUBLIC MS_DECAY_CHANNEL_TABLE
MS_DECAY_CHANNEL_TABLE:
.IF (WITH_TONE .EQ. 1H)
EXTERN DECAY_MIXER_VALUE_PROC
DW DECAY_MIXER_VALUE_PROC
.ENDIF
.IF (WITH_VMDPC8 .EQ. 1H)
EXTERN DECAY_MIXER_VALUE_PROC
DW DECAY_MIXER_VALUE_PROC
.ENDIF
.IF (WITH_HQPC8 .EQ. 1H)
EXTERN DECAY_MIXER_VALUE_PROC
DW DECAY_MIXER_VALUE_PROC
.ENDIF
.IF (WITH_PCSPC8 .EQ. 1H)
EXTERN DECAY_MIXER_VALUE_PROC
DW DECAY_MIXER_VALUE_PROC
.ENDIF
;==============================================================================
; Procedures that should be executed in each FXF ISR.
;==============================================================================
EXTERN DO_NEXT_TONE
PUBLIC MS_FXF_PROCESS_TABLE
MS_FXF_PROCESS_TABLE:
.IF (WITH_TONE .EQ. 1H)
EXTERN TONE_ADSR_STATE
DW TONE_ADSR_STATE
.ENDIF
.IF (WITH_VMDPC8 .EQ. 1H)
EXTERN HQ_ADSR_STATE
DW HQ_ADSR_STATE
.ENDIF
.IF (WITH_HQPC8 .EQ. 1H)
EXTERN HQ_ADSR_STATE
DW HQ_ADSR_STATE
.ENDIF
.IF (WITH_PCSPC8 .EQ. 1H)
EXTERN DO_NEXT_TONE
DW DO_NEXT_TONE
.ENDIF
;==========================================================
PUBLIC NOTE_ON_PROC_TABLE
NOTE_ON_PROC_TABLE:
.IF (WITH_TONE .EQ. 1H)
EXTERN NOTE_ON_TONE_MELODY
DW NOTE_ON_TONE_MELODY
.ENDIF
.IF (WITH_VMDPC8 .EQ. 1H)
EXTERN NOTE_ON_HQPC8_MELODY
DW NOTE_ON_HQPC8_MELODY
.ENDIF
.IF (WITH_HQPC8 .EQ. 1H)
EXTERN NOTE_ON_HQPC8_MELODY
DW NOTE_ON_HQPC8_MELODY
.ENDIF
.IF (WITH_PCSPC8 .EQ. 1H)
EXTERN NOTE_ON_PCSPC8_MELODY
DW NOTE_ON_PCSPC8_MELODY
.ENDIF
;==========================================================
PUBLIC NOTE_OFF_PROC_TABLE
NOTE_OFF_PROC_TABLE:
.IF (WITH_TONE .EQ. 1H)
EXTERN NOTE_OFF_TONE_MELODY
DW NOTE_OFF_TONE_MELODY
.ENDIF
.IF (WITH_VMDPC8 .EQ. 1H)
EXTERN NOTE_OFF_HQPC8_MELODY
DW NOTE_OFF_HQPC8_MELODY
.ENDIF
.IF (WITH_HQPC8 .EQ. 1H)
EXTERN NOTE_OFF_HQPC8_MELODY
DW NOTE_OFF_HQPC8_MELODY
.ENDIF
.IF (WITH_PCSPC8 .EQ. 1H)
EXTERN NOTE_OFF_PCSPC8_MELODY
DW NOTE_OFF_PCSPC8_MELODY
.ENDIF
;==========================================================
PUBLIC MS_GLOBAL_CHANNEL_VOLUME_TABLE
MS_GLOBAL_CHANNEL_VOLUME_TABLE:
.IF (WITH_GLOBAL_CHANNEL_VOLM .EQ. 1H)
.IF (CHIPSERIES = 'W588C').OR.(CHIPSERIES = 'W588L')
DB GLOBAL_CHANNEL_VOLM0-GLOBAL_CHANNEL_VOLM0
DB GLOBAL_CHANNEL_VOLM1-GLOBAL_CHANNEL_VOLM0
.ENDIF
.IF (CHIPSERIES = 'W588D')
DB GLOBAL_CHANNEL_VOLM0-GLOBAL_CHANNEL_VOLM0
DB GLOBAL_CHANNEL_VOLM1-GLOBAL_CHANNEL_VOLM0
DB GLOBAL_CHANNEL_VOLM2-GLOBAL_CHANNEL_VOLM0
.ENDIF
.ENDIF
;==========================================================
PUBLIC MS_GLOBAL_CHANNEL_INS_TABLE
MS_GLOBAL_CHANNEL_INS_TABLE:
.IF (WITH_GLOBAL_CHANNEL_INS .EQ. 1H)
.IF (CHIPSERIES = 'W588C').OR.(CHIPSERIES = 'W588L')
DB GLOBAL_CHANNEL_INS0-GLOBAL_CHANNEL_INS0
DB GLOBAL_CHANNEL_INS1-GLOBAL_CHANNEL_INS0
.ENDIF
.IF (CHIPSERIES = 'W588D')
DB GLOBAL_CHANNEL_INS0-GLOBAL_CHANNEL_INS0
DB GLOBAL_CHANNEL_INS1-GLOBAL_CHANNEL_INS0
DB GLOBAL_CHANNEL_INS2-GLOBAL_CHANNEL_INS0
.ENDIF
.ENDIF
;==========================================================
PUBLIC ASSIGN_MELODY_CHANNEL_TABLE
ASSIGN_MELODY_CHANNEL_TABLE:
.IF (WITH_MULTI_CHANNEL .EQ. 1H)
.IF (CHIPSERIES = 'W588C').OR.(CHIPSERIES = 'W588L')
DB CH_SYNTH_CHANNEL0-CH_SYNTH_CHANNEL0
DB CH_SYNTH_CHANNEL1-CH_SYNTH_CHANNEL0
.ENDIF
.IF (CHIPSERIES = 'W588D')
DB CH_SYNTH_CHANNEL0-CH_SYNTH_CHANNEL0
DB CH_SYNTH_CHANNEL1-CH_SYNTH_CHANNEL0
DB CH_SYNTH_CHANNEL2-CH_SYNTH_CHANNEL0
.ENDIF
.ENDIF
.ENDIF ;(WITH_MS .EQ. 1)
;===================================================================
;
;===================================================================
.IF (WITH_TONE .EQ. 1)
PUBLIC MS_CHANNEL_TONE_TABLE
MS_CHANNEL_TONE_TABLE:
DB WITH_VS2A_TONE
DB WITH_VS1A_TONE
.ENDIF
;-------------------------------------------------------------------------------------------------------------------------
;-------------------------------------------------------------------------------------------------------------------------
.IF (WITH_HQPC8 .EQ. 1 || WITH_VMDPC8 .EQ. 1)
PUBLIC MS_CHANNEL_HQ_TABLE
MS_CHANNEL_HQ_TABLE:
.IF (CHIPSERIES = 'W588C')
DB WITH_VS2A_HQPC8+WITH_VS2A_VMDPC8
DB WITH_VS1A_HQPC8+WITH_VS1A_VMDPC8
.ENDIF
.IF (CHIPSERIES = 'W588D')
.IF (WITH_TONE .EQ. 0)
.IF (WITH_SP .EQ. 0)
DB WITH_VS0A_HQPC8+WITH_VS0A_VMDPC8
DB WITH_VS2A_HQPC8+WITH_VS2A_VMDPC8
DB WITH_VS1A_HQPC8+WITH_VS1A_VMDPC8
.ELSE
DB WITH_VS1A_HQPC8+WITH_VS1A_VMDPC8
DB WITH_VS2A_HQPC8+WITH_VS2A_VMDPC8
DB WITH_VS0A_HQPC8+WITH_VS0A_VMDPC8
.ENDIF
.ELSE ;WITH_TONE=1
DB WITH_VS2A_HQPC8+WITH_VS2A_VMDPC8
DB WITH_VS1A_HQPC8+WITH_VS1A_VMDPC8
DB WITH_VS0A_HQPC8+WITH_VS0A_VMDPC8
.ENDIF
.ENDIF
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -