⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 midiplay.lst

📁 midi file with midi play.it can run in the computer
💻 LST
📖 第 1 页 / 共 5 页
字号:
00008F7E 02 4E              		jnz	?L_KeyValueNotNull	
00008F7F 80 FE 9C 8F        		goto	?L_KeyDealOver		//No, key deal over
                            	?L_KeyValueNotNull:
00008F81 4F B4              		r2&=	0x000f			//Yes, get key pointer
                            	//----------------------------------------------------------------------------------------
00008F82 62 97              		r3 =	r2 lsr 1		//Get key Value from key buffer
00008F83 0B 07 C9 00        		r3+=	KeyQueueBuf
00008F85 C3 92              		r1 =	[r3]
00008F86 41 C4              		test	r2,0x0001
00008F87 02 5E              		jz	?L_KeyValueOk
00008F88 79 93              		r1 =	r1 lsr 4
00008F89 79 93              		r1 =	r1 lsr 4
                            	?L_KeyValueOk:
00008F8A 09 B3 FF 00        		r1&=	0x00ff
                            	//----------------------------------------------------------------------------------------
00008F8C 12 95 C8 00        		r2 =	[KeyQueueBufPtr]	//Shift key buffer pointer to
00008F8E 41 04              		r2+=	0x0001			//next key value
00008F8F 0A 25 00 01        		r2-=	0x0100
00008F91 0A B5 F7 FF        		r2&=	0xfff7
00008F93 1A D5 C8 00        		[KeyQueueBufPtr] = r2
                            	//----------------------------------------------------------------------------------------
00008F95 12 95 BF 00        		r2 =	[PhoneMode]
00008F97 0A B5 01 00        		r2&=	C_ModeRelatedBits
00008F99 0A 05 9D 8F        		r2+=	TW_PhoneMode
00008F9B C2 9E              		pc =	[r2]
                            	?L_KeyDealOver:
00008F9C 90 9A              		retf
                            	
                            	
                            	//----------------------------------------------------------------------------------------
                            	.const		C_ModeRelatedBits	= 0x0001
                            	.const		C_ModeSelectMode	= 0x0000
                            	.const		C_MidiPlayMode		= 0x0001
                            	TW_PhoneMode:
00008F9D 9F 8F              		.dw	F_ModeSelectKeyDeal
00008F9E BB 8F              		.dw	F_PlayMidiModeKeyDeal
                            	//----------------------------------------------------------------------------------------
                            	F_ModeSelectKeyDeal:
00008F9F 69 42              		cmp	r1,C_HandFree
00008FA0 19 4E              		jnz	?L_NotKeyDel
                            		
00008FA1 41 92              		r1 =	0x0001				// play_rate : 32768/2
00008FA2 46 94              		r2 =	0x0006				// channel_num
00008FA3 40 F0 B8 8C        		call    F_SACM_MS02_Initial
                            	
00008FA5 11 93 C0 00        		r1 =	[SongIndex]			// Song_Index
00008FA7 12 95 C1 00        		r2 =	[Volume]			// Volume : 0~3
00008FA9 40 F0 CB 8C        		call	F_SACM_MS02_Play		//Start play MIDI (Song_Index)
                            		
00008FAB 11 93 BF 00        		r1 =	[PhoneMode]
00008FAD 09 A3 00 80        		r1|=	Flag_PlayMidi
00008FAF 19 D3 BF 00        		[PhoneMode] = r1
                            		
00008FB1 41 92              		r1 =	C_MidiPlayMode			//Set MIDI play mode for key deal
00008FB2 41 B2              		r1&=	C_ModeRelatedBits
00008FB3 12 95 BF 00        		r2 =	[PhoneMode]
00008FB5 0A B5 FE FF        		r2&=	0xffff-C_ModeRelatedBits
00008FB7 01 A5              		r2|=	r1
00008FB8 1A D5 BF 00        		[PhoneMode] = r2
                            	?L_NotKeyDel:
00008FBA 90 9A              		retf
                            	//----------------------------------------------------------------------------------------
                            	
                            	//----------------------------------------------------------------------------------------
                            	F_PlayMidiModeKeyDeal:
00008FBB 6A 42              		cmp	r1,C_KeyVolumeUp
00008FBC 0C 4E              		jnz	?L_NotKeyVolumeUp
00008FBD 11 93 C1 00        		r1 =	[Volume]
00008FBF 41 02              		r1+=	0x0001
00008FC0 43 42              		cmp	r1,C_TopVolume
00008FC1 01 8E              		jbe	?L_VolumeOk
00008FC2 43 92              		r1 =	C_TopVolume
                            	?L_VolumeOk:
00008FC3 19 D3 C1 00        		[Volume] = r1
00008FC5 40 F0 05 8C        		call	F_SACM_MS02_Volume		// Adjust Volume
00008FC7 80 FE F6 8F        		goto	?L_KeyDealOver
                            	?L_NotKeyVolumeUp:
                            	//----------------------------------------------------------------------------------------
00008FC9 40 42              		cmp	r1,C_KeyVolumeDown
00008FCA 05 4E              		jnz	?L_NotKeyVolumeDown
00008FCB 11 93 C1 00        		r1 =	[Volume]
00008FCD 4B 5E              		jz	?L_VolumeOk
00008FCE 41 22              		r1-=	0x0001
00008FCF 4D EE              		jmp	?L_VolumeOk
                            	?L_NotKeyVolumeDown:
                            	//----------------------------------------------------------------------------------------
00008FD0 63 42              		cmp	r1,C_Up
00008FD1 10 4E              		jnz	?L_NotKeyUp
00008FD2 11 93 C0 00        		r1 =	[SongIndex]
00008FD4 41 02              		r1+=	0x0001
00008FD5 48 42              		cmp	r1,C_SongTotal
00008FD6 01 0E              		jb	?L_SongIndexOk
00008FD7 47 92              		r1 =	C_SongTotal-1
                            	?L_SongIndexOk:
00008FD8 19 D3 C0 00        		[SongIndex] = r1
                            	
00008FDA 11 93 C0 00        		r1 =	[SongIndex]			// Song_Index
00008FDC 12 95 C1 00        		r2 =	[Volume]			// Volume : 0~3
00008FDE 40 F0 CB 8C        		call	F_SACM_MS02_Play		// Start play MIDI (Song_Index)
                            	
00008FE0 80 FE F6 8F        		goto	?L_KeyDealOver
                            	?L_NotKeyUp:
                            	//----------------------------------------------------------------------------------------
00008FE2 64 42              		cmp	r1,C_Down
00008FE3 05 4E              		jnz	?L_NotKeyDown
00008FE4 11 93 C0 00        		r1 =	[SongIndex]
00008FE6 4F 5E              		jz	?L_SongIndexOk
00008FE7 41 22              		r1-=	0x0001
00008FE8 51 EE              		jmp	?L_SongIndexOk
                            	?L_NotKeyDown:
                            	//----------------------------------------------------------------------------------------
00008FE9 69 42              		cmp	r1,C_HandFree
00008FEA 0B 4E              		jnz	?L_NotKeyDel
                            		
00008FEB 40 F0 19 90        		call	F_StopPlay			//Stop play MIDI
                            		
00008FED 40 92              		r1 =	C_ModeSelectMode		//Set select mode for key deal
00008FEE 41 B2              		r1&=	C_ModeRelatedBits
00008FEF 12 95 BF 00        		r2=	[PhoneMode]
00008FF1 0A B5 FE FF        		r2&=	0xffff-C_ModeRelatedBits
00008FF3 01 A5              		r2|=	r1
00008FF4 1A D5 BF 00        		[PhoneMode] = r2
                            	?L_NotKeyDel:
                            	//----------------------------------------------------------------------------------------
                            	?L_KeyDealOver:
00008FF6 90 9A              		retf
                            	//----------------------------------------------------------------------------------------
                            	
                            	//----------------------------------------------------------------------------------------
                            	
                            	
                            	//----------------------------------------------------------------------------------------
                            	// Function Name:	F_SACM_MS02_Init_
                            	// Purpose:		Initialize related hardware
                            	//			(Set Fosc , TimerA or TimerB , TimerData , P_DAC_Ctrl)
                            	// Parameters:		None
                            	//----------------------------------------------------------------------------------------
                            	F_SACM_MS02_Init_:
00008FF7 40 F1              		int	off
                            	
00008FF8 09 93 81 00        		r1 =	0x0081
00008FFA 19 D3 15 70        		[P_SystemClock] = r1			//Set High Speed and (/1)
                            	
00008FFC 09 93 80 00        		r1 =	0x0080
00008FFE 19 D3 15 70        		[P_SystemClock] = r1			//Set High Speed and (/1)
                            	
00009000 09 93 FF FF        		r1 =	0xffff
00009002 19 D3 11 70        		[P_IntClr] = r1
                            	
00009004 09 93 00 D5        		r1 = 0xD500				//Base 32768Hz
00009006 19 D3 1A 70        		[P_Tmr_Ctrl] = r1
                            	
00009008 09 93 FE FF        		R1 = 0xFFFE				// 16.384k
0000900A 19 D3 1B 70        		[P_TmrA_Data] = r1			//Set play rate
0000900C 19 D3 1C 70        		[P_TmrA_Load] = r1
                            	
0000900E 11 93 10 70        		r1 =	[P_Int]
00009010 44 A2              		r1|=	B_TmrAInt
00009011 19 D3 10 70        		[P_Int]	= r1				//Enable TimerA interrupt
                            	
00009013 09 93 00 07        		R1 = 0x0700				//From DACO pin
00009015 19 D3 22 70        		[P_DtmfTone] = r1
                            	
00009017 43 F1              		int	fiq, irq
00009018 90 9A              		retf
                            	//----------------------------------------------------------------------------------------
                            	
                            	//----------------------------------------------------------------------------------------
                            	// Function Name:	F_StopPlay
                            	// Purpose:		Stop playing MIDI
                            	//			(Clear Flag, Disable TimerA and INT)
                            	// Parameters:		None
                            	//----------------------------------------------------------------------------------------
                            	F_StopPlay:
00009019 40 F0 ED 8C        		call	F_SACM_MS02_Stop
                            	
0000901B 09 93 FF FF        		r1 =	0xFFFF
0000901D 19 D3 11 70        		[P_IntClr] = r1
                            	
0000901F 40 92              		r1 =	0x0000			//Disable TimerA
00009020 19 D3 1A 70        		[P_Tmr_Ctrl] = r1
                            	
00009022 40 92              		r1 = 	0x0000			//Disable DAC
00009023 19 D3 22 70        		[P_DtmfTone] = r1
                            	
00009025 11 93 10 70        		r1 = 	[P_Int]
00009027 09 B3 FB FF        		r1&=	0xffff-0x0004
00009029 19 D3 10 70        		[P_Int]	= r1			//Disable TimerA INT
                            	
0000902B 90 9A              		retf
                            	//----------------------------------------------------------------------------------------
                            	
                            	
00008D9C                    	.TEXT
                            	//----------------------------------------------------------------------------------------
                            	//ISR : TimerA INT
                            	//----------------------------------------------------------------------------------------
                            	_FIQ:	
00008D9C A8 DA              		push	r1,r5 to [sp]
00008D9D 09 93 00 02        		r1=	B_Ioc1Int
00008D9F 19 D3 11 70        		[P_IntClr] = r1 	
00008DA1 A8 90              		pop	r1,r5 from [sp]
00008DA2 98 9A              		reti 
                            	//------------------------------------------------------------------------------
                            	_IRQ0:	
00008DA3 A8 DA              		push	r1,r5 to [sp] 
00008DA4 09 93 01 01        		r1=	B_Ioc0Int+B_RiInt
00008DA6 19 D3 11 70        		[P_IntClr] = r1
00008DA8 A8 90              		pop	r1,r5 from [sp] 
00008DA9 98 9A              		reti
                            	//------------------------------------------------------------------------------
                            	_IRQ1:	
00008DAA A8 DA              		push	r1,r5 to [sp]
00008DAB 42 92              		r1 =	B_IoaInt
00008DAC 19 D3 11 70        		[P_IntClr] = r1
00008DAE A8 90              		pop	r1,r5 from [sp]
00008DAF 98 9A              		reti 
                            	//------------------------------------------------------------------------------
                            	_IRQ2:	
00008DB0 A8 DA              		push r1,r5 to [sp]
00008DB1 44 92              		r1=	B_TmrAInt
00008DB2 19 D3 11 70        		[P_IntClr] = r1
00008DB4 40 F0 1B 8D        		call	F_ISR_Service_SACM_MS02
00008DB6 A8 90              		pop	r1,r5 from [sp]
00008DB7 98 9A              		ret

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -