📄 123.lst
字号:
FillRamBuf1:
00009B9A 11 93 31 00 R1 = [HascDEC_FIFO_PTR]; // Fill Ring-Buf
00009B9C 12 95 76 01 R2 = [W_InterRAM_Ptr];
00009B9E 02 43 CMP R1,R2;
00009B9F 2A 5E JZ EndFillRingBuf;
00009BA0 13 97 77 01 R3 = [DataFlag];
00009BA2 0B 47 FF FF CMP R3,0xFFFF;
00009BA4 25 5E JZ EndFillRingBuf; // Data is over , don't fill memory.
00009BA5 13 97 75 01 R3 = [SegDataRomAddr]
00009BA7 15 9B 74 01 R5 = [DataRomAddr];
00009BA9 0E BD FF 03 Sr &= 0x3FF
00009BAB 03 AD SR |= R3
00009BAC E5 98 R4 =DS: [R5];
00009BAD 41 0A R5 +=1
00009BAE 04 4E JNZ ?L_Nover
00009BAF 0B 07 00 04 R3 +=0x400
00009BB1 1B D7 75 01 [SegDataRomAddr] = R3 //以上程序应该是获取音频的基地址
?L_Nover:
00009BB3 1D DB 74 01 [DataRomAddr] = R5;
00009BB5 40 F0 CE 9B CALL F_ChangeHighLowByte;
00009BB7 0A 07 01 00 R3 = R2 + HASC_FIFO;
00009BB9 41 04 R2 += 1;
00009BBA 5F B4 R2 &= 0x001F;
00009BBB 1A D5 76 01 [W_InterRAM_Ptr] = R2;
00009BBD 0C 49 FF FF CMP R4,0xFFFF;
00009BBF 0C 4E JNZ NotCheckEndingCode;
00009BC0 15 9B 74 01 R5 = [DataRomAddr];
00009BC2 E5 9A R5 = DS:[R5];
00009BC3 0D 4B FF 00 CMP R5,0x00FF;
00009BC5 06 4E JNZ NotCheckEndingCode;
00009BC6 0C 99 FF FF R4 = 0xFFFF;
00009BC8 1C D9 77 01 [DataFlag] = R4; // Ending Code,don't store in the HASC_FIFO
EndFillRingBuf:
00009BCA A8 90 pop R1,R5 from [sp];
00009BCB 90 9A retf
.endp
NotCheckEndingCode:
00009BCC C3 D8 [R3] = R4; // Not Ending Code
00009BCD 74 EE JMP FillRamBuf1;
//-----------------------------------
//将R4的高、低字节进行交换(16字节的)
//-----------------------------------
// ------------------------------------------------------------------------------------------------------------//
// Purpose: To make encode data is compatible with SPDC. We must change High-Low Byte
// Input: R4
// Output: R4
// Change: R4,R5;
// ------------------------------------------------------------------------------------------------------------//
F_ChangeHighLowByte:
00009BCE 0C BB FF 00 R5 = R4 And 0x00FF;
00009BD0 5D 9B R5 = R5 LSL 4;
00009BD1 5D 9B R5 = R5 LSL 4;
00009BD2 7C 99 R4 = R4 LSR 4;
00009BD3 7C 99 R4 = R4 LSR 4;
00009BD4 05 A9 R4 |= R5;
00009BD5 90 9A RETF;
//--------------------------
//发送DAC信号的
//--------------------------
////////////////////////////////////////////////////////
// Function: F_SACM_DVR1600_SendDAC
// Description: send data to DAC from library
// Syntax : F_SACM_DVR1600_SendDAC
// Destory: R4
// Input : R4: 16-bit sign PCM
// Return :None
////////////////////////////////////////////////////////
.PUBLIC F_SACM_DVR1600_SendDAC
F_SACM_DVR1600_SendDAC: .PROC
// push R4 to [sp];
00009BD6 0C B9 C0 FF R4 &=0xFFC0
00009BD8 0C 49 00 87 CMP R4,0x8700;
00009BDA 02 BE JG ?NotUnderFlow;
00009BDB 0C 99 00 87 R4 = 0x8700;
?NotUnderFlow:
00009BDD 0C 09 00 79 R4 += 0x7900;
00009BDF 1C D9 29 70 [0x7029] = r4
00009BE1 90 9A retf;
.ENDP
.public _T_SACM_DVR1600_ServiceLoop
_T_SACM_DVR1600_ServiceLoop:.proc
00009BE2 A8 DA push R1,R5 to [sp];
00009BE3 40 F0 9B 96 CALL F_SACM_DVR1600_ServiceLoop;
00009BE5 A8 90 pop R1,R5 from [sp];
00009BE6 90 9A retf
.endp
.public _T_SACM_DVR1600_Status
_T_SACM_DVR1600_Status:.proc
00009BE7 A8 DA push R1,R5 to [sp];
00009BE8 40 F0 E1 99 CAll F_SACM_DVR1600_Status;
00009BEA 19 D3 7A 01 [_StatusData]=R1;
00009BEC A8 90 pop R1,R5 from [sp];
00009BED 90 9A retf
.endp
.public _T_SACM_DVR1600_Volume
_T_SACM_DVR1600_Volume: .proc //设定DVR1600的播放音量
00009BEE 88 DA push bp to [sp];
00009BEF 08 0B 01 00 BP=sp+1;
00009BF1 03 92 R1=[BP+3];
00009BF2 40 F0 D9 99 CALL F_SACM_DVR1600_Volume;
00009BF4 88 98 pop bp from [sp];
00009BF5 90 9A retf
.endp
.public _T_SACM_DVR1600_Pause
_T_SACM_DVR1600_Pause: .proc
00009BF6 A8 DA push R1,R5 to [sp];
00009BF7 40 F0 C9 99 CALL F_SACM_DVR1600_Pause;
00009BF9 A8 90 pop R1,R5 from [sp];
00009BFA 90 9A retf
.endp
.public _T_SACM_DVR1600_Resume
_T_SACM_DVR1600_Resume: .proc
00009BFB A8 DA push R1,R5 to [sp];
00009BFC 40 F0 D1 99 CALL F_SACM_DVR1600_Resume;
00009BFE A8 90 pop R1,R5 from [sp];
00009BFF 90 9A retf
.endp
//*************************************************************************************
//ISR : TimerA INT //定时器中断
//*************************************************************************************
00009497 .TEXT
_IRQ2:
00009497 A8 DA push R1, R5 to [sp];
00009498 44 92 R1 = 0x0004;
00009499 19 D3 11 70 [P_IntClr] = R1;
0000949B 40 F0 A7 99 CALL F_SACM_DVR1600_IRQ_ServiceLoop; //怎么没有看到啊?
0000949D A8 90 pop R1, R5 from [sp];
0000949E 98 9A RETI;
//---语音信息表
T_SACM_A1600_Table:
//.DW _RES_A13_ENC_SA;
//.DW _RES_A39_ENC_SA;
0000949F 77 94 .DW _RES_A02_ENC_SA;
000094A0 7B 94 .DW _RES_A03_ENC_SA;
000094A1 7F 94 .DW _RES_A04_ENC_SA;
000094A2 83 94 .DW _RES_A05_ENC_SA;
000094A3 87 94 .DW _RES_A06_ENC_SA;
000094A4 8B 94 .DW _RES_A07_ENC_SA;
000094A5 8F 94 .DW _RES_A08_ENC_SA;
000094A6 93 94 .DW _RES_A09_ENC_SA;
//.DW _RES_A10_ENC_SA;
//
//.DW _RES_A11_ENC_SA;
//.DW _RES_A12_ENC_SA;
//.DW _RES_A13_ENC_SA;
//.DW _RES_A14_ENC_SA;
//.DW _RES_A15_ENC_SA;
//.DW _RES_A16_ENC_SA;
//.DW _RES_A17_ENC_SA;
//.DW _RES_A18_ENC_SA;
//.DW _RES_A19_ENC_SA;
//.DW _RES_A20_ENC_SA;
//.DW _RES_A21_ENC_SA;
//.DW _RES_A22_ENC_SA;
//.DW _RES_A23_ENC_SA;
//.DW _RES_A24_ENC_SA;
//.DW _RES_A25_ENC_SA;
//.DW _RES_A26_ENC_SA;
//.DW _RES_A27_ENC_SA;
//.DW _RES_A28_ENC_SA;
//.DW _RES_A29_ENC_SA;
//.DW _RES_A30_ENC_SA;
//
//.DW _RES_A31_ENC_SA;
//.DW _RES_A32_ENC_SA;
//.DW _RES_A33_ENC_SA;
//.DW _RES_A34_ENC_SA;
//.DW _RES_A35_ENC_SA;
//.DW _RES_A36_ENC_SA;
//.DW _RES_A37_ENC_SA;
//.DW _RES_A38_ENC_SA;
//.DW _RES_A39_ENC_SA;
//.DW _RES_A40_ENC_SA;
//.DW _RES_A41_ENC_SA;
//.DW _RES_A42_ENC_SA;
//.DW _RES_A43_ENC_SA;
//.DW _RES_A44_ENC_SA;
//.DW _RES_A45_ENC_SA;
//.DW _RES_A46_ENC_SA;
//.DW _RES_A47_ENC_SA;
//.DW _RES_A48_ENC_SA;
//.DW _RES_A49_ENC_SA;
//.DW _RES_A50_ENC_SA;
//
//.DW _RES_A51_ENC_SA;
//.DW _RES_A52_ENC_SA;
//.DW _RES_A53_ENC_SA;
//.DW _RES_A54_ENC_SA;
//.DW _RES_A55_ENC_SA;
//.DW _RES_A56_ENC_SA;
//.DW _RES_A57_ENC_SA;
//.DW _RES_A58_ENC_SA;
0 error(s), 0 warning(s).
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -