📄 echo.asm
字号:
;******************************************************************************
;* FUNCTION NAME: _initChannelData *
;* *
;* Regs Modified : A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,B0,B1,B2,B3,B4,B5,B6, *
;* B7,B8,B9,SP *
;* Regs Used : A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,B0,B1,B2,B3,B4,B5,B6, *
;* B7,B8,B9,DP,SP *
;* Local Frame Size : 8 Args + 4 Auto + 4 Save = 16 byte *
;******************************************************************************
_initChannelData:
;** --------------------------------------------------------------------------*
.sym _pChannel,12, 24, 1, 32, _dataChannel
STW .D2T2 B3,*SP--(16) ; |87|
.line 6
;----------------------------------------------------------------------
; 92 | pChannel = &audioChannel[CHANNEL0];
;----------------------------------------------------------------------
MVK .S2 (_audioChannel-$bss),B4 ; |92|
ADD .L2 DP,B4,B4 ; |92|
STW .D2T2 B4,*+SP(12) ; |92|
.line 7
;----------------------------------------------------------------------
; 93 | pChannel->inStream = &inStream0;
;----------------------------------------------------------------------
MVKL .S2 _inStream0,B5 ; |93|
MVKH .S2 _inStream0,B5 ; |93|
STW .D2T2 B5,*B4 ; |93|
.line 8
;----------------------------------------------------------------------
; 94 | pChannel->outStream = &outStream0;
;----------------------------------------------------------------------
LDW .D2T1 *+SP(12),A3 ; |94|
MVKL .S1 _outStream0,A0 ; |94|
MVKH .S1 _outStream0,A0 ; |94|
NOP 2
STW .D1T1 A0,*+A3(4) ; |94|
.line 10
;----------------------------------------------------------------------
; 96 | if (SIO_staticbuf(pChannel->inStream, &pChannel->buf) == 0) {
;----------------------------------------------------------------------
LDW .D2T2 *+SP(12),B4 ; |96|
MVKL .S2 RL4,B3 ; |96|
MVKH .S2 RL4,B3 ; |96|
NOP 1
B .S1 _SIO_staticbuf ; |96|
LDW .D2T1 *B4,A4 ;
ADD .L2 8,B4,B4 ;
NOP 3
RL4: ; CALL OCCURS ; |96|
MV .L1 A4,A1 ; |96|
[ A1] B .S1 L1 ; |96|
NOP 5
; BRANCH OCCURS ; |96|
;** --------------------------------------------------------------------------*
.line 11
;----------------------------------------------------------------------
; 97 | SYS_abort("Cannot get static buffer");
;----------------------------------------------------------------------
B .S1 _SYS_abort ; |97|
MVKL .S1 SL1+0,A0 ; |97|
MVKH .S1 SL1+0,A0 ; |97|
MVKL .S2 RL6,B3 ; |97|
STW .D2T1 A0,*+SP(4) ; |97|
MVKH .S2 RL6,B3 ; |97|
RL6: ; CALL OCCURS ; |97|
;** --------------------------------------------------------------------------*
L1:
.line 13
;----------------------------------------------------------------------
; 99 | pChannel->load = 0;
;----------------------------------------------------------------------
LDW .D2T1 *+SP(12),A3 ; |99|
ZERO .L1 A0 ; |99|
NOP 3
STW .D1T1 A0,*+A3(12) ; |99|
.line 16
;----------------------------------------------------------------------
; 102 | pChannel = &audioChannel[CHANNEL1];
;----------------------------------------------------------------------
MVK .S2 (_audioChannel+16-$bss),B4 ; |102|
ADD .L2 DP,B4,B4 ; |102|
STW .D2T2 B4,*+SP(12) ; |102|
.line 17
;----------------------------------------------------------------------
; 103 | pChannel->inStream = &inStream1;
;----------------------------------------------------------------------
MVKL .S2 _inStream1,B5 ; |103|
MVKH .S2 _inStream1,B5 ; |103|
STW .D2T2 B5,*B4 ; |103|
.line 18
;----------------------------------------------------------------------
; 104 | pChannel->outStream = &outStream1;
;----------------------------------------------------------------------
LDW .D2T1 *+SP(12),A3 ; |104|
MVKL .S1 _outStream1,A0 ; |104|
MVKH .S1 _outStream1,A0 ; |104|
NOP 2
STW .D1T1 A0,*+A3(4) ; |104|
.line 19
;----------------------------------------------------------------------
; 105 | if (SIO_staticbuf(pChannel->inStream, &pChannel->buf) == 0) {
;----------------------------------------------------------------------
LDW .D2T2 *+SP(12),B4 ; |105|
MVKL .S2 RL8,B3 ; |105|
MVKH .S2 RL8,B3 ; |105|
NOP 1
B .S1 _SIO_staticbuf ; |105|
LDW .D2T1 *B4,A4 ;
ADD .L2 8,B4,B4 ;
NOP 3
RL8: ; CALL OCCURS ; |105|
MV .L1 A4,A1 ; |105|
[ A1] B .S1 L2 ; |105|
NOP 5
; BRANCH OCCURS ; |105|
;** --------------------------------------------------------------------------*
.line 20
;----------------------------------------------------------------------
; 106 | SYS_abort("Cannot get static buffer");
;----------------------------------------------------------------------
B .S1 _SYS_abort ; |106|
MVKL .S1 SL1+0,A0 ; |106|
MVKH .S1 SL1+0,A0 ; |106|
MVKL .S2 RL10,B3 ; |106|
STW .D2T1 A0,*+SP(4) ; |106|
MVKH .S2 RL10,B3 ; |106|
RL10: ; CALL OCCURS ; |106|
;** --------------------------------------------------------------------------*
L2:
.line 22
;----------------------------------------------------------------------
; 108 | pChannel->load = 0;
;----------------------------------------------------------------------
LDW .D2T2 *+SP(12),B4 ; |108|
ZERO .L2 B5 ; |108|
NOP 3
STW .D2T2 B5,*+B4(12) ; |108|
.line 23
LDW .D2T2 *++SP(16),B3 ; |109|
NOP 4
B .S2 B3 ; |109|
NOP 5
; BRANCH OCCURS ; |109|
.endfunc 109,000080000h,16
.sect ".text"
.global _processChannel
.sym _processChannel,_processChannel, 45, 2, 0
.func 111
;----------------------------------------------------------------------
; 111 | Bool processChannel(dataChannel *channel)
;----------------------------------------------------------------------
;******************************************************************************
;* FUNCTION NAME: _processChannel *
;* *
;* Regs Modified : A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,B0,B1,B2,B3,B4,B5, *
;* B6,B7,B8,B9,SP *
;* Regs Used : A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,B0,B1,B2,B3,B4,B5, *
;* B6,B7,B8,B9,SP *
;* Local Frame Size : 8 Args + 8 Auto + 8 Save = 24 byte *
;******************************************************************************
_processChannel:
;** --------------------------------------------------------------------------*
.sym _channel,4, 24, 17, 32, _dataChannel
.sym _channel,12, 24, 1, 32, _dataChannel
.sym _nbytes,16, 4, 1, 32
STW .D2T2 B3,*SP--(24) ; |111|
STW .D2T1 A10,*+SP(20) ; |111|
.line 2
;----------------------------------------------------------------------
; 113 | Int nbytes;
;----------------------------------------------------------------------
STW .D2T1 A4,*+SP(12) ; |112|
.line 5
;----------------------------------------------------------------------
; 115 | LOG_printf(&trace1, "sio_get uses buffer 0x%x", channel->buf);
;----------------------------------------------------------------------
MVKL .S2 SL2+0,B4 ; |115|
MVKH .S2 SL2+0,B4 ; |115|
STW .D2T2 B4,*+SP(4) ; |115|
B .S1 _LOG_printf ; |115|
|| LDW .D1T1 *+A4(8),A0 ; |115|
MVKL .S1 _trace1,A4 ; |115|
MVKL .S2 RL12,B3 ; |115|
MVKH .S1 _trace1,A4 ; |115|
MVKH .S2 RL12,B3 ; |115|
STW .D2T1 A0,*+SP(8) ; |115|
RL12: ; CALL OCCURS ; |115|
.line 7
;----------------------------------------------------------------------
; 117 | nbytes = SIO_get(channel->inStream, &channel->buf);
;----------------------------------------------------------------------
LDW .D2T2 *+SP(12),B4 ; |117|
MVKL .S2 RL14,B3 ; |117|
MVKH .S2 RL14,B3 ; |117|
NOP 1
B .S1 _SIO_get ; |117|
LDW .D2T1 *B4,A4 ;
ADD .L2 8,B4,B4 ;
NOP 3
RL14: ; CALL OCCURS ; |117|
STW .D2T1 A4,*+SP(16) ; |117|
.line 8
;----------------------------------------------------------------------
; 118 | if (nbytes < 0)
;----------------------------------------------------------------------
CMPLT .L1 A4,0,A1 ;
.line 9
;----------------------------------------------------------------------
; 119 | return(FALSE);
;----------------------------------------------------------------------
[ A1] B .S1 L3 ; |119|
[ A1] ZERO .L1 A10 ; |119|
NOP 4
; BRANCH OCCURS ; |119|
;** --------------------------------------------------------------------------*
.line 11
;----------------------------------------------------------------------
; 121 | LOG_printf(&trace1, "sio_get returns buffer 0x%x", channel->buf);
;----------------------------------------------------------------------
LDW .D2T2 *+SP(12),B5 ; |121|
MVKL .S2 SL3+0,B4 ; |121|
MVKH .S2 SL3+0,B4 ; |121|
STW .D2T2 B4,*+SP(4) ; |121|
MVKL .S2 RL16,B3 ; |121|
B .S1 _LOG_printf ; |121|
|| LDW .D2T2 *+B5(8),B4 ; |121|
MVKL .S1 _trace1,A4 ; |121|
MVKH .S2 RL16,B3 ; |121|
MVKH .S1 _trace1,A4 ; |121|
NOP 1
STW .D2T2 B4,*+SP(8) ; |121|
RL16: ; CALL OCCURS ; |121|
.line 14
;----------------------------------------------------------------------
; 124 | doLoad(channel->load);
;----------------------------------------------------------------------
LDW .D2T2 *+SP(12),B4 ; |124|
MVKL .S2 RL18,B3 ; |124|
MVKH .S2 RL18,B3 ; |124|
NOP 1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -