📄 test56.asm
字号:
SN56085
SN0#XO.WAV
SN1#XO.WAV
SIL#XO.WAV
A.WAV
B.WAV
C.WAV
D.WAV
E.WAV
F.WAV
G.WAV
H.WAV
I.WAV
J.WAV
K.WAV
L.WAV
M.WAV
N.WAV
O.WAV
P.WAV
Q.WAV
R.WAV
S.WAV
T.WAV
U.WAV
V.WAV
W.WAV
X.WAV
Y.WAV
Z.WAV
R8_0#XO.dat
R8_1#XO.dat
R8_2#XO.dat
R10_0#XO.dat
R10_1#XO.dat
R10_2#XO.dat
R12_0#XO.dat
R12_1#XO.dat
R12_2#XO.dat
R16_2#XO.dat
INST#XO.dat
PROGRAM
includestd macro56000_2.h
deboc equ #0101b
IR_SPEED_SLOW EQU 1
IR_MODE EQU #0000B
@_4ms_@ equ #1
MRXB_2 EQU #1111B
MRX_2 EQU #0000B
MRXB_3 EQU #1111B
MRX_3 EQU #0000B
MRXB EQU #1111B
MRX EQU #0000B
KeyP1 EQU #0000B
KeyP2 EQU #0000B
KeyP3 EQU #0000B
KeyP6 EQU #0000B
Rand0Max EQU #0100B
Rand1Max EQU #1111B
Rand2Max EQU #1101B
;;**********************************************************
;; Standard Easy Variable: **
;; **
;;**********************************************************
@_fvMax_@ equ #3
;***************** page0 *****************
ifdef mrx_4
tr61_64 equ m11
tr57_60 equ m12
tr53_56 equ m13
tr49_52 equ m14
endif
ifdef mrx_3
tr45_48 equ m15
endif
;***************** page1 *****************
p1_go1 equ m0
p1_go2 equ m1
p1state equ m2
scanP1 equ m3 ;scankey port value
pause equ m4
tr1_4 equ m5
tr5_8 equ m6
tr9_12 equ m7
tr13_16 equ m8
ifdef mrx_2
tr17_20 equ m9
tr21_24 equ m10
tr25_28 equ m11
tr29_32 equ m12
endif
ifdef mrx_3
tr33_36 equ m13
tr37_40 equ m14
tr41_44 equ m15
endif
ifdef @_key_type_@
MTR2 equ m13
MTR3 equ m14
MTR6 equ m15 ;for direct key of mix key mode
endif
;***************** page2 *****************
vol_pp equ m0 ;push-pull vol
skblock equ m1 ;scan key block
delay8m equ m2 ;foreground routine delay
delay01 equ m3 ;foreground routine delay
delay1s equ m4 ;foreground routine delay
s_delay1 equ m5 ;output routine delay
s_delay2 equ m6 ;output routine delay
s_delay3 equ m7 ;output routine delay
p_delay1 equ m8 ;background routine delay
p_delay2 equ m9 ;background routine delay
p_delay3 equ m10 ;background routine delay
Rand0 equ m11 ;random1
Rand1 equ m12 ;random2
Rand2 equ m13 ;random3
delay_flag equ m14 ; Bit 0 --> Foreground Delay 8ms flag
; Bit 1 --> Background Delay 8ms flag
; Bit 2 --> Output Delay 8ms flag
; Bit 3 --> Scan all Key flag
enter_b equ m15 ;
;***************** page3 *****************
call_b1 equ m0 ;bit1:melody play at foreground/background;0=foreground
loop equ m1 ;repeat command of foreground(do loop)
outloop equ m2 ;repeat command of background (do loop)
BGround1 equ m3 ;background path
BGround2 equ m4 ;background path
TrigState1 equ m5 ;input states
TrigState2 equ m6 ;input states
debocr equ m7 ;bit3:keypress
;bit2:8ms
;bit1:eflag
;bit0:power down scan flag
keyid equ m8 ;scankey keyid
deboc_count equ m9 ;debounce counter=8ms*n
en_ret equ m10 ;check forground or background return.
;bit0:foreground speech ret1;1:enable
;bit1:foreground melody ret1;1:enable
;bit2:background speech ret1;1:enable
;bit3:background melody ret1;1:enable
mpF equ m11 ;MELODY PLAY FLAG
;0:LEFT CHANNEL PLAY
;1:RIGHT CHANNEL PLAY
;2:LEFT CHANNEL HEAD PLAY OK
;3:RIGHT CHANNEL HEAD PLAY OK
spF equ m12 ;SPEECH PLAY FLAG: 0:CH1 ,1:CH2 ,2:CH3 3:CH4
bspF equ m13 ;BACKGROUND SPEECH PLAY :0:CH1 ,1:CH2 ,2:CH3 3:CH4
temp3 equ m14
temp4 equ m15
;***************** page4 *****************
beat1_h equ m0 ;beat_H of CH1
beat1_l equ m1 ;beat_L of CH1
beat2_h equ m2 ;beat_H of CH2
beat2_l equ m3 ;beat_L of CH2
beat3_h equ m4 ;beat_H of CH3
beat3_l equ m5 ;beat_L of CH3
beat4_h equ m6 ;beat_H of CH4
beat4_l equ m7 ;beat_L of CH4
vol1_h equ m8
vol1_l equ m9
vol2_h equ m10
vol2_l equ m11
vol3_h equ m12 ;; bit1-0: melody MSB , bit3-2:voice MSB
vol3_l equ m13 ;;
vol4_h equ m14 ;;
vol4_l equ m15 ;;
;***************** page5 *****************
v_vol1 equ m0 ;;TONE1
v_vol2 equ m1 ;;TONE2
v_vol3 equ m2 ;;TONE3
v_vol4 equ m3 ;;TONE4
instyp1 equ m4 ;bit0,1:note octave of ch1
;bit2.3:sample rate of instrument 00:8k,01:10k,10:12.5k,11:16k
instyp2 equ m5 ;bit0,1:note octave of ch2
;bit2.3:sample rate of instrument 00:8k,01:10k,10:12.5k,11:16k
instyp3 equ m6 ;bit0,1:note octave of ch3
;bit2.3:sample rate of instrument 00:8k,01:10k,10:12.5k,11:16k
instyp4 equ m7 ;bit0,1:note octave of ch4
;bit2.3:sample rate of instrument 00:8k,01:10k,10:12.5k,11:16k
ins1 equ m8 ;ch1 instrument no.
ins2 equ m9 ;ch2 instrument no.
ins3 equ m10 ;ch3 instrument no.
ins4 equ m11 ;ch4 instrument no.
res1 equ m12 ;interval of release time of ch1
res2 equ m13 ;interval of release time of ch2
res3 equ m14 ;interval of release time of ch3
res4 equ m15 ;interval of release time of ch4
;***************** page6 *****************
resCnt equ m0 ;release counter for envelope downcount
resF equ m1 ;release step of channel,
tempo equ m2 ;tempo setting
t_count equ m3 ;tempo counter
mpStat equ m4 ;melody play state.bit0:encounter a stop;1:encount
;bit2:changenote
dsAD equ m5
dsEnvDC equ m6 ;disable envelope downcount.bit0~3=ch1~ch4;1=diable
adsr equ m7 ;adsr setting.bit0~bit3=ch1~ch4.0=adsr;1=adr
rhyF equ m8 ;rhythm playing flag. bit0~3=ch1~ch4; 1=playing
fvCnt equ m9 ;flash time counter
rStep1 equ m10 ;downcount step time of ch1
rStep2 equ m11 ;downcount step time of ch2
rStep3 equ m12 ;downcount step time of ch3
rStep4 equ m13 ;downcount step time of ch4
p2state equ m14 ;P2 state
p3state equ m15 ;P3 state
;***************** page7 *****************
p6state equ m0 ;P6 state
p2_go1 equ m1 ;P2 output state
p2_go2 equ m2 ;P2 output mask
p3_go1 equ m3 ;P3 output state
p3_go2 equ m4 ;P3 output mask
p6_go1 equ m5 ;P6 output state
p6_go2 equ m6 ;P6 output mask
p3_fv equ m7 ;P3 fv output state
p3_fv1 equ m8 ;P3 fv output mask
p6_fv equ m9 ;P6 fv output state
p6_fv1 equ m10 ;P6 fv output mask
p2_mdy equ m11
p3_mdy equ m12
p6_mdy equ m13
temp1 equ m14
temp2 equ m15
;--------------------------------------------
; CallTo Macro Label
;--------------------------------------------
JumpTo Macro label
Jmp label
@@&label&_Bk:
ENDM
;;**************** power on routine ***************
start: ;power on initial routine
JumpTo Initial_Chip
JumpTo Update_Key
jmp @@_init
@@Scankey1:
JumpTo Check_EnterB ; Check Enter B function.
Main_Loop:
JumpTo ScanKey ; Scankey Function.
JumpTo Check_Speech ; Speech Play Function.
JumpTo Update_Output ; I/O output Function.
JumpTo Check_Delay
JumpTo Check_Random ; Random Function.
@@ChkRandReg_Back:
JumpTo Check_Event ; Event Mark Function.
jmp @@ChkBGround ; check back ground event
@@ChkBGround_Back:
@@TOGGLE_2_BACK:
JumpTo Check_Timer ; 4ms Timer. unmet 4ms jmp to main_loop
ifdef @_MELODY_@
JumpTo Melody_routine
endif
@@melody_back1:
ifdef @_ChangeNote_@ ;;\
page6 ;; | 2.4.1999
mov a mpstat ;; | ChangeNote
and a #0100b ;; |
caje #0000b @@_changeNoteRet ;;/
mov a mpstat
and a #1011b
mov mpstat a
jmp @@_ChangeNote
endif
@@_changeNoteRet:
JumpTo Check_PowerDown ; Power Down Routine
jmp Main_Loop
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
trigger:
rstc
@@ini_lp:
mov a timer
and a #0010b ;;wait 4mS
caje #0010b @f ;;s1
jmp @@ini_lp
@@: ;;@@ready_scan:
rstcf #0010b
mov a mrx
page6
and a p2state
mov p2state a
mov p2 a
ifdef mrx_2
mov a mrx_2
page7
and a p6state
mov p6state a
mov p6 a
endif
page3
mov a #0111b ;clear key press
and a debocr
mov debocr a
mov deboc_count #0 ;clear debounce counter
page2
mov delay8m #0000b
mov s_delay1 #0000b
mov p_delay1 #0000b
mov a delay_flag ;set scan all key flag
or a #1000b
mov delay_flag a
Jmp Main_Loop
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; EZ Command need function
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;**********************************************
ifdef @_melody_@
@@chk_mdy1:
page3
mov a spF ;; STOP Current Voice
mov temp3 a
call4 @@off_channel ;; turn-off f-speech
page3
mov spF #0 ;;
call4 @@off_melody
;; dsAD ... move to start_melody(1.11)
page3
mov a #1101b ;; disable B-melody
and a call_b1 ;;
mov call_b1 a ;;
mov a en_ret
or a #0010b ;; enable f-melody return
and a #1110b ;; disable f-voice return
mov en_ret a ;;
page2
mov delay8m #0000b
ret1
;;**********************************************
@@chk_mdy2:
page3
mov a bspF ;; STOP Current Background Voice
mov temp3 a
call4 @@off_channel
page3
mov bspF #0 ;; turn-off b-speech
call4 @@off_melody
page6
mov dsAD #0
mov dsEnvDC #0
mov rhyF #0
mov fvcnt #0fh
page3
mov a #0010b ;; enable B-melody
or a call_b1 ;;
mov call_b1 a ;;
mov a en_ret
or a #1000b ;; enable b-melody return
and a #1011b ;; disable b-voice return
mov en_ret a
page2
mov p_delay1 #0000b
ret2
;;******* initialize melody playing ok**********
@@melody_start:
page1
mov pause #0 ;;pause melody
page3
mov a mpF
and a #0011b
caje #0 @f
mov a mpF
and a #1100b
caje #1100b @f ;;sn1
call4 @@HEAD
@@:
_@@mlst_head_ok:
rstc
page6
mov t_count #0000b
mov mpStat #0
mov resF #0 ;;\ insert 1.11
mov dsAD #0 ;; | move from chk_mdy1
mov dsEnvDC #0 ;; | chk_mdy2 (1.11)
mov rhyF #0 ;; |
mov fvcnt #0fh ;;/
page3
mov a mpF
and a #0001b
caje #0 _@@mlst_Right ;check left play
call4 @@melody_load_ch1
page6
mov a mpStat
and a #0001b
caje #0001b _@@mlst_stop ;check melody play over
call4 @@melody_load_ch2
_@@mlst_Right:
page3
mov a mpF
and a #0010b
caje #0 @@scankey1
call4 @@melody_load_ch3
page6
mov a mpStat
and a #0001b
caje #0001b _@@mlst_stop
call4 @@melody_load_ch4
jmp @@scankey1
_@@mlst_stop:
page1
mov pause #0
page3
mov a #1100b
and a mpF
mov mpF a
mov a call_b1
and a #0010b
caje #0010b @f ;;s1
nop
ret1
@@:
;;_@@mlst_stop_bk:
ret2
endif
;;*****************************************************************
@@chk_voc1:
page3
mov a spF ;; STOP Current Voice
mov temp3 a
call4 @@off_channel
page3
mov a call_b1 ;; if b-melody ON then don't off it.
and a #0010b ;;
caje #0010b @f ;;s1 ;;
call4 @@off_melody ;;
@@:
page2
mov delay8m #0000b
page3
mov a en_ret
or a #0001b ;; enable f-voice return
and a #1101b ;; disable f-melody return
mov en_ret a ;;
ret1
;;*****************************************************************
@@chk_voc2:
page3
mov a bspF ;; STOP Current Background Voice
mov temp3 a
call4 @@off_channel
page3
mov a call_b1 ;; if b-melody ON then off it.
and a #0010b ;;
caje #0 @f ;;s1 ;;
call4 @@off_melody ;;
@@:
page3
mov a call_b1
and a #1101b
mov call_b1 a
mov a en_ret
or a #0100b ;; enable b-voice return
and a #0111b ;; disable b-melody return
mov en_ret a ;;
page2
mov p_delay1 #0000b
ret2
;;*********** initialize speech playing ok ************************
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -