📄 test4at303.dsp
字号:
// IFC = 0x00ff; // Clear all IRQ
//jump_idle:
// IMASK = 0x0100; // turn off bsb IRQ , only enable WaterMark
// IDLE; // wait for watermark interrupt
// Jump jump_idle; */
//--------------------------------------->Anna-
ISR_AuxCmdDecode :
ena sec_reg;
// Get MICROAUXCMD0
ay0 = io(0x709);
dm(MicroAuxCmd0) = ay0;
// Get MICROAUXDAT0
/* ay1 = io(0x70A);
dm(MicroAuxDat0) = ay1;
// Get MICROAUXDAT1
ay1 = io(0x70B);
dm(MicroAuxDat1) = ay1;
// Get MICROAUXDAT2
ay1 = io(0x70C);
dm(MicroAuxDat2) = ay1;*/
///-----------------------------------+<Anna
GET_MSGTYP :
// Check MSGTYP
ar = 0xFF00;
af = ar and ay0;
ar=0x0000;
none=ar xor af;
if eq jump GET_STATUS;
ar = 0x0100;
none = ar xor af;
if eq jump SET_WORK_MODE;
ar=0x1000;
none=ar xor af;
if eq jump PLAY;
ar=0x1100;
none=ar xor af;
if eq jump PAUSE_PLAY;
ar=0x1200;
none=ar xor af;
if eq jump RESUME_PLAY;
ar=0x1300;
none=ar xor af;
if eq jump END_PLAY;
ar=0x1400;
none=ar xor af;
if eq jump ABORT_PLAY;
ar=0x2000;
none=ar xor af;
if eq jump START_ENCODE;
ar=0x2100;
none=ar xor af;
if eq jump PAUSE_ENCODE;
ar=0x2200;
none=ar xor af;
if eq jump RESUME_ENCODE;
ar=0x2300;
none=ar xor af;
if eq jump END_ENCODE;
ar=0x2400;
none=ar xor af;
if eq jump ABORT_ENCODE;
ar=0x3100;
none=ar xor af;
if eq jump GET_FRAME_POS;
Exit_Auxcmd:
dis sec_reg;
rti;
GET_STATUS:
ax1=dm(PausePlay);
ay1=dm(PauseEncode);
none=ax1 or ay1;
if ne jump Busy;
ax1=dm(StartPlay);
ay1=dm(ResumePlay);
none=ax1 or ay1;
if ne jump Busy;
ax1=dm(StartEncode);
ay1=dm(ResumeEncode);
none=ax1 or ay1;
if ne jump Busy;
RegWrite(0x70D,0x0000,ax1);
RegWrite(0x707,b#1000000000000010,ax1);
jump Exit_Auxcmd;
Busy:
ar=dm(BusyFlag);
RegWrite(0x70D,ar,ax1);
RegWrite(0x707,b#1000000000000010,ax1);
jump Exit_Auxcmd;
SET_WORK_MODE: /******///-----+<Jinyan
ar=dm(EndPlay);
none=pass ar;
if eq jump Error_change;
ax0 = 0x0001;
dm(WmodeChange)=ax0;
ax0 = 0x00ff;
ar = ax0 and ay0;
dm(Workmode) = ar;
jump Exit_Auxcmd;
///---------------------------+>Jinyan
Error_change:
RegWrite(0x70D,0xff00,ax1);
RegWrite(0x707,b#1000000000000010,ax1);
jump Exit_Auxcmd;
PLAY:
ar=0x0001;
dm(StartPlay)=ar;
ar=0x0000;
dm(PausePlay)=ar;
dm(EndPlay)=ar;
dm(ResumePlay)=ar;
dm(AbortPlay)=ar;
ar=0x0080;
dm(BusyFlag)=ar;
///////////////////////
// AB_PLAY //
//////////////////////
#ifdef AB_PLAY
IO_REG_HILO(0x70A,Filepos_Low);
IO_REG_HILO(0x70B,Filepos_High);
IO_REG_HILO(0x70C,Skipoffset);
#endif
jump Exit_Auxcmd;
PAUSE_PLAY:
ax1=dm(StartPlay);
ay1=dm(ResumePlay);
none=ax1 or ay1;
if eq jump not_start_dec;
ar=0x0001;
dm(PausePlay)=ar;
ar=0x0000;
dm(StartPlay)=ar;
dm(ResumePlay)=ar;
dm(EndPlay)=ar;
dm(AbortPlay)=ar;
ar=0x0080;
dm(BusyFlag)=ar;
JUMP Exit_Auxcmd;
not_start_dec:
RegWrite(0x70D,0x0100,ax1);
RegWrite(0x707,b#1000000000000010,ax1);
jump Exit_Auxcmd;
RESUME_PLAY:
ar=dm(PausePlay);
none=pass ar;
if eq jump NoPauseStatus_dec;
ar=0x0001;
dm(ResumePlay)=ar;
ar=0x0000;
dm(PausePlay)=ar;
dm(StartPlay)=ar;
dm(EndPlay)=ar;
dm(AbortPlay)=ar;
ar=0x0080;
dm(BusyFlag)=ar;
jump Exit_Auxcmd;
NoPauseStatus_dec:
RegWrite(0x70D,0x0200,ax1);
RegWrite(0x707,b#1000000000000010,ax1);
jump Exit_Auxcmd;
END_PLAY:
ar=dm(AbortPlay);
none=pass ar;
if ne jump no_play_resume;
ar=0x0001;
dm(EndPlay)=ar;
ar=0x0000;
dm(StartPlay)=ar;
dm(ResumePlay)=ar;
dm(PausePlay)=ar;
dm(AbortPlay)=ar;
dm(BusyFlag)=ar;
jump Exit_Auxcmd;
no_play_resume:
RegWrite(0x70D,0xff00,ax1);
RegWrite(0x707,b#1000000000000010,ax1);
jump Exit_Auxcmd;
ABORT_PLAY:
ar=dm(AbortPlay);
none=pass ar;
if ne jump in_abortplay;
ax1=0x0001;
dm(AbortPlay)=ax1;
ar=0x0000;
dm(StartPlay)=ar;
dm(ResumePlay)=ar;
dm(PausePlay)=ar;
dm(EndPlay)=ar;
dm(BusyFlag)=ar;
jump START_TEST;
in_abortplay:
RegWrite(0x70D,0xff00,ax1);
RegWrite(0x707,b#1000000000000010,ax1);
jump Exit_Auxcmd;
GET_FRAME_POS:
REG_IO_HILO(0x70E,Filepos_Low);
REG_IO_HILO(0x70F,Filepos_High);
RegWrite(0x707,b#1000000000000010,ax1);
jump Exit_Auxcmd;
START_ENCODE:
ax1=dm(StartEncode);
ay1=dm(ResumeEncode);
none=ax1 or ay1;
if ne jump already_start_enc;
ar=0x0001;
dm(StartEncode)=ar;
ar=0x0000;
dm(PauseEncode)=ar;
dm(EndEncode)=ar;
dm(ResumeEncode)=ar;
dm(AbortEncode)=ar;
ar=0x0080;
dm(BusyFlag)=ar;
jump Exit_Auxcmd;
already_start_enc:
RegWrite(0x70D,0x0200,ax1);
RegWrite(0x707,b#1000000000000010,ax1);
jump Exit_Auxcmd;
PAUSE_ENCODE:
ax1=dm(StartEncode);
ay1=dm(ResumeEncode);
none=ax1 or ay1;
if eq jump not_start_enc;
ar=0x0001;
dm(PauseEncode)=ar;
ar=0x0000;
dm(StartEncode)=ar;
dm(ResumeEncode)=ar;
dm(EndEncode)=ar;
dm(AbortEncode)=ar;
ar=0x0080;
dm(BusyFlag)=ar;
JUMP Exit_Auxcmd;
not_start_enc:
RegWrite(0x70D,0xff00,ax1);
RegWrite(0x707,b#1000000000000010,ax1);
jump Exit_Auxcmd;
RESUME_ENCODE:
ar=dm(PauseEncode);
none=pass ar;
if eq jump NoPauseStatus_enc;
ar=0x0001;
dm(ResumeEncode)=ar;
ar=0x0000;
dm(PauseEncode)=ar;
dm(StartEncode)=ar;
dm(EndEncode)=ar;
dm(AbortEncode)=ar;
ar=0x0080;
dm(BusyFlag)=ar;
jump Exit_Auxcmd;
NoPauseStatus_enc:
RegWrite(0x70D,0x0200,ax1);
RegWrite(0x707,b#1000000000000010,ax1);
jump Exit_Auxcmd;
END_ENCODE:
ar=dm(AbortEncode);
none=pass ar;
if ne jump no_start_resume_enc;
ar=0x0001;
dm(EndEncode)=ar;
ar=0x0000;
dm(StartEncode)=ar;
dm(PauseEncode)=ar;
dm(ResumeEncode)=ar;
dm(AbortEncode)=ar;
dm(BusyFlag)=ar;
jump Exit_Auxcmd;
no_start_resume_enc:
RegWrite(0x70D,0x0200,ax1);
RegWrite(0x707,b#1000000000000010,ax1);
jump Exit_Auxcmd;
ABORT_ENCODE:
ar=dm(AbortEncode);
none=pass ar;
if ne jump in_abortencode;
ar=0x0001;
dm(AbortEncode)=ar;
ar=0x0000;
dm(StartEncode)=ar;
dm(PauseEncode)=ar;
dm(ResumeEncode)=ar;
dm(EndEncode)=ar;
dm(BusyFlag)=ar;
jump START_TEST;
in_abortencode:
RegWrite(0x70D,0xff00,ax1);
RegWrite(0x707,b#1000000000000010,ax1);
jump Exit_Auxcmd;
///---------------------------------------------+>Anna
//////////////////////////////////////////////////////////////
// //
// WorkMode Change sobroutine //
// //
//////////////////////////////////////////////////////////////
.global WorkModeChange;
.entry WorkModeChange;
WorkModeChange: //////////Jinyan+
ay0 = dm(Workmode);
ar = 0x0001;
none = ar xor ay0;
if eq jump Mp3decoderMode;
ar = 0x0002;
none = ar xor ay0;
if eq jump Mp3encoderMode;
ar = 0x0003;
none = ar xor ay0;
if eq jump G729decoderMode;
ar = 0x0004;
none = ar xor ay0;
if eq jump G729encoderMode;
ar = 0x00ff;
none = ar xor ay0;
if eq jump TopMode;
RegWrite (0x70D,0x0100,ax1);
RegWrite (0x707,b#1000000000000010,ax1);
rts;
Mp3decoderMode:
ax0 = B_CON_MP3D;
dm(BCONTROL) = ax0;
jump Bdma_load;
Mp3encoderMode:
RegWrite (0x70D,0x0100,ax1);
RegWrite (0x707,b#1000000000000010,ax1);
rts;
G729decoderMode:
/*ax0 = B_CON_G729;
dm(BCONTROL) = ax0;
jump Bdma_load;*/
ax0=0x0000;
dm(WModeChange)=ax0;
jump START_TEST;
rts;
G729encoderMode:
ax0 = B_CON_G729;
dm(BCONTROL) = ax0;
jump Bdma_load;
TopMode:
ax0 = B_CON_TOP;
dm(BCONTROL) = ax0;
Bdma_load:
RegWrite (0x70D,0x0000,ax1);
RegWrite (0x707,b#1000000000000010,ax1);
ax0 = B_EAD_CODE;
dm(BEAD) = ax0;
ax0 = B_IAD_CODE;
dm(BIAD) = ax0;
ax0 = BCODE;
dm(BWCOUNT) = ax0;
ifc = BMASK; //Clear pending BDMA interrupt
nop;
imask = BMASK; //Enable BDMA interrupt
idle; //Wait for BDMA to finish */
rts;
/*----------------------------------> sunny-*/
/*******************************************************************/
setup_system: L0=0; L1=0;
L2=0; L3=0;
L4=0; L5=0;
L6=0; L7=0;
AR=PASS 0;
AR=SETBIT 12 Of AR;
DM(Sport0_Autobuf_Ctrl)=AR;
DIS BIT_REV,DIS AV_LATCH,ENA AR_SAT,DIS M_MODE,ENA G_MODE;
M0=0; M1=1;
M4=1; M2=-1; M7=-1;
RTS;
/*******************************************************************/
.ENDMOD;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -