📄 channeltable.asm
字号:
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
.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')
.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
.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')
.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')
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
.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
.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
.ENDIF
;------------------------------------------------------------------------------------------------------------
;------------------------------------------------------------------------------------------------------------
.IF (WITH_PCSPC8 .EQ. 1)
PUBLIC MS_CHANNEL_PCSPC8_TABLE
MS_CHANNEL_PCSPC8_TABLE:
.IF (CHIPSERIES = 'W588C')
DB WITH_VS2A_PCSPC8
DB WITH_VS1A_PCSPC8
.ENDIF
.IF (CHIPSERIES = 'W588D')
.IF (WITH_TONE .EQ. 0)
.IF (WITH_SP .EQ. 0)
DB WITH_VS0A_PCSPC8
DB WITH_VS2A_PCSPC8
DB WITH_VS1A_PCSPC8
.ELSE
DB WITH_VS1A_PCSPC8
DB WITH_VS2A_PCSPC8
DB WITH_VS0A_PCSPC8
.ENDIF
.ELSE ;WITH_TONE=1
DB WITH_VS2A_PCSPC8
DB WITH_VS1A_PCSPC8
DB WITH_VS0A_PCSPC8
.ENDIF
.ENDIF
.ENDIF
;------------------------------------------------------------------------------------------------------------------
;------------------------------------------------------------------------------------------------------------------
PUBLIC MS_CHANNEL_TABLE
MS_CHANNEL_TABLE:
.IF (WITH_MS .EQ. 1)
.IF (CHIPSERIES = 'W588C')
DB WITH_VS2A_HQPC8+WITH_VS2A_VMDPC8+WITH_VS2A_PCSPC8+WITH_VS2A_TONE
DB WITH_VS1A_HQPC8+WITH_VS1A_VMDPC8+WITH_VS1A_PCSPC8+WITH_VS1A_TONE
.ENDIF
.IF (CHIPSERIES = 'W588D')
.IF (WITH_TONE .EQ. 0)
.IF (WITH_SP .EQ. 0)
DB WITH_VS0A_HQPC8+WITH_VS0A_VMDPC8+WITH_VS0A_PCSPC8
DB WITH_VS2A_HQPC8+WITH_VS2A_VMDPC8+WITH_VS2A_PCSPC8
DB WITH_VS1A_HQPC8+WITH_VS1A_VMDPC8+WITH_VS1A_PCSPC8
.ELSE
DB WITH_VS1A_HQPC8+WITH_VS1A_VMDPC8+WITH_VS1A_PCSPC8
DB WITH_VS2A_HQPC8+WITH_VS2A_VMDPC8+WITH_VS2A_PCSPC8
DB WITH_VS0A_HQPC8+WITH_VS0A_VMDPC8+WITH_VS0A_PCSPC8
.ENDIF
.ELSE ;WITH_TONE=1
DB WITH_VS2A_HQPC8+WITH_VS2A_VMDPC8+WITH_VS2A_PCSPC8+WITH_VS2A_TONE
DB WITH_VS1A_HQPC8+WITH_VS1A_VMDPC8+WITH_VS1A_PCSPC8+WITH_VS1A_TONE
DB WITH_VS0A_HQPC8+WITH_VS0A_VMDPC8+WITH_VS0A_PCSPC8+WITH_VS0A_TONE
.ENDIF
.ENDIF
.ENDIF
;==============================================================================
;
;==============================================================================
.IF (WITH_MS .EQ. 1)
PUBLIC ASSIGN_CHANNEL_PROC_TABLE
ASSIGN_CHANNEL_PROC_TABLE:
.IF (WITH_DYNAMIC_CH .EQ. 1)
EXTERNAL FIND_IDLE_CHANNEL_PROC
DW FIND_IDLE_CHANNEL_PROC
.ELSE
EXTERNAL ASSIGN_MIDI_CHANNEL_PROC
DW ASSIGN_MIDI_CHANNEL_PROC
.ENDIF
.ENDIF
;==============================================================================
; Timer tables
;==============================================================================
PUBLIC SP_SET_TMV_PROC_TABLE
PUBLIC MS_SET_TMV_PROC_TABLE
SP_SET_TMV_PROC_TABLE:
MS_SET_TMV_PROC_TABLE:
.IF (WITH_VS0A .EQ. 1)
EXTERNAL SET_TM0V_PROC
DW SET_TM0V_PROC ;VS0A
.ELSE
DW 0000H
.ENDIF
.IF (WITH_VS1A .EQ. 1)
EXTERNAL SET_TM1V_PROC
DW SET_TM1V_PROC ;VS1A
.ELSE
DW 0000H
.ENDIF
.IF (WITH_VS2A .EQ. 1)
EXTERNAL SET_TM2V_PROC
DW SET_TM2V_PROC ;VS2A
.ELSE
DW 0000H
.ENDIF
;------------------------------------------------------------------------
;
;------------------------------------------------------------------------
PUBLIC SP_SET_TMC_PROC_TABLE
PUBLIC MS_SET_TMC_PROC_TABLE
SP_SET_TMC_PROC_TABLE:
MS_SET_TMC_PROC_TABLE:
.IF (WITH_VS0A .EQ. 1)
EXTERNAL SET_TM0C_PROC
DW SET_TM0C_PROC ;VS0A
.ELSE
DW 0000H
.ENDIF
.IF (WITH_VS1A .EQ. 1)
EXTERNAL SET_TM1C_PROC
DW SET_TM1C_PROC ;VS1A
.ELSE
DW 0000H
.ENDIF
.IF (WITH_VS2A .EQ. 1)
EXTERNAL SET_TM2C_PROC
DW SET_TM2C_PROC ;VS2A
.ELSE
DW 0000H
.ENDIF
;------------------------------------------------------------------------
;
;------------------------------------------------------------------------
PUBLIC SP_GET_TMC_PROC_TABLE
PUBLIC MS_GET_TMC_PROC_TABLE
SP_GET_TMC_PROC_TABLE:
MS_GET_TMC_PROC_TABLE:
.IF (WITH_VS0A .EQ. 1)
EXTERNAL GET_TM0C_PROC
DW GET_TM0C_PROC
.ELSE
DW 0000H
.ENDIF
.IF (WITH_VS1A .EQ. 1)
EXTERN GET_TM1C_PROC
DW GET_TM1C_PROC
.ELSE
DW 0000H
.ENDIF
.IF (WITH_VS2A .EQ. 1)
EXTERN GET_TM2C_PROC
DW GET_TM2C_PROC
.ELSE
DW 0000H
.ENDIF
;------------------------------------------------------------------------
;
;------------------------------------------------------------------------
PUBLIC SP_GET_TMV_PROC_TABLE
PUBLIC MS_GET_TMV_PROC_TABLE
SP_GET_TMV_PROC_TABLE:
MS_GET_TMV_PROC_TABLE:
.IF (WITH_VS0A .EQ. 1)
EXTERNAL GET_TM0V_PROC
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -