📄 echo.asm
字号:
; 94 | Bool processChannel(dataChannel *channel, Ptr *buffer)
;----------------------------------------------------------------------
;******************************************************************************
;* 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 + 12 Auto + 8 Save = 28 byte *
;******************************************************************************
_processChannel:
;** --------------------------------------------------------------------------*
.sym _channel,4, 24, 17, 32, _dataChannel
.sym _buffer,20, 80, 17, 32
.sym _channel,12, 24, 1, 32, _dataChannel
.sym _buffer,16, 80, 1, 32
.sym _nbytes,20, 4, 1, 32
STW .D2T2 B3,*SP--(32) ; |94|
STW .D2T1 A10,*+SP(28) ; |94|
.line 2
;----------------------------------------------------------------------
; 96 | Int nbytes;
;----------------------------------------------------------------------
STW .D2T2 B4,*+SP(16) ; |95|
STW .D2T1 A4,*+SP(12) ; |95|
.line 5
;----------------------------------------------------------------------
; 98 | LOG_printf(&trace1, "sio_get uses buffer 0x%x", *buffer);
;----------------------------------------------------------------------
MVKL .S2 SL1+0,B5 ; |98|
MVKH .S2 SL1+0,B5 ; |98|
STW .D2T2 B5,*+SP(4) ; |98|
B .S1 _LOG_printf ; |98|
|| LDW .D2T2 *B4,B4 ; |98|
MVKL .S1 _trace1,A4 ; |98|
MVKL .S2 RL4,B3 ; |98|
MVKH .S1 _trace1,A4 ; |98|
MVKH .S2 RL4,B3 ; |98|
STW .D2T2 B4,*+SP(8) ; |98|
RL4: ; CALL OCCURS ; |98|
.line 7
;----------------------------------------------------------------------
; 100 | if ((nbytes = SIO_get(channel->inStream, buffer)) < 0)
;----------------------------------------------------------------------
LDW .D2T2 *+SP(12),B5 ; |100|
LDW .D2T2 *+SP(16),B4 ; |100|
MVKL .S2 RL6,B3 ; |100|
MVKH .S2 RL6,B3 ; |100|
B .S1 _SIO_get ; |100|
LDW .D2T1 *B5,A4 ;
NOP 4
RL6: ; CALL OCCURS ; |100|
CMPLT .L1 A4,0,A1 ;
|| STW .D2T1 A4,*+SP(20) ; |100|
.line 8
;----------------------------------------------------------------------
; 101 | return(FALSE);
;----------------------------------------------------------------------
[ A1] B .S1 L1 ; |101|
[ A1] ZERO .L1 A10 ; |101|
NOP 4
; BRANCH OCCURS ; |101|
;** --------------------------------------------------------------------------*
.line 10
;----------------------------------------------------------------------
; 103 | LOG_printf(&trace1, "sio_get returns buffer 0x%x", *buffer);
;----------------------------------------------------------------------
LDW .D2T2 *+SP(16),B5 ; |103|
MVKL .S2 SL2+0,B4 ; |103|
MVKH .S2 SL2+0,B4 ; |103|
STW .D2T2 B4,*+SP(4) ; |103|
MVKL .S2 RL8,B3 ; |103|
B .S1 _LOG_printf ; |103|
|| LDW .D2T2 *B5,B4 ; |103|
MVKL .S1 _trace1,A4 ; |103|
MVKH .S2 RL8,B3 ; |103|
MVKH .S1 _trace1,A4 ; |103|
NOP 1
STW .D2T2 B4,*+SP(8) ; |103|
RL8: ; CALL OCCURS ; |103|
.line 13
;----------------------------------------------------------------------
; 106 | doLoad(channel->load);
;----------------------------------------------------------------------
LDW .D2T2 *+SP(12),B4 ; |106|
MVKL .S2 RL10,B3 ; |106|
MVKH .S2 RL10,B3 ; |106|
NOP 1
B .S1 _doLoad ; |106|
LDW .D2T1 *+B4(8),A4 ; |106|
NOP 4
RL10: ; CALL OCCURS ; |106|
.line 15
;----------------------------------------------------------------------
; 108 | if ((nbytes = SIO_put(channel->outStream, buffer, nbytes)) < 0)
;----------------------------------------------------------------------
LDW .D2T2 *+SP(12),B5 ; |108|
LDW .D2T1 *+SP(20),A6 ;
LDW .D2T2 *+SP(16),B4 ; |108|
MVKL .S2 RL12,B3 ; |108|
B .S1 _SIO_put ; |108|
LDW .D2T1 *+B5(4),A4 ;
MVKH .S2 RL12,B3 ; |108|
NOP 3
RL12: ; CALL OCCURS ; |108|
STW .D2T1 A4,*+SP(20) ; |108|
|| CMPLT .L1 A4,0,A1 ;
.line 16
;----------------------------------------------------------------------
; 109 | return(FALSE);
;----------------------------------------------------------------------
[ A1] B .S1 L1 ; |109|
[ A1] ZERO .L1 A10 ; |109|
NOP 4
; BRANCH OCCURS ; |109|
;** --------------------------------------------------------------------------*
.line 18
;----------------------------------------------------------------------
; 111 | LOG_printf(&trace1, "sio_put returns buffer 0x%x", *buffer);
;----------------------------------------------------------------------
LDW .D2T2 *+SP(16),B5 ; |111|
MVKL .S2 SL3+0,B4 ; |111|
MVKH .S2 SL3+0,B4 ; |111|
STW .D2T2 B4,*+SP(4) ; |111|
MVKL .S2 RL14,B3 ; |111|
B .S1 _LOG_printf ; |111|
|| LDW .D2T2 *B5,B4 ; |111|
MVKL .S1 _trace1,A4 ; |111|
MVKH .S2 RL14,B3 ; |111|
MVKH .S1 _trace1,A4 ; |111|
NOP 1
STW .D2T2 B4,*+SP(8) ; |111|
RL14: ; CALL OCCURS ; |111|
.line 19
;----------------------------------------------------------------------
; 112 | return(TRUE);
;----------------------------------------------------------------------
MVK .S1 0x1,A10 ; |112|
;** --------------------------------------------------------------------------*
L1:
.line 21
LDW .D2T1 *+SP(28),A10 ; |114|
|| MV .L1 A10,A4 ; |114|
LDW .D2T2 *++SP(32),B3 ; |114|
NOP 4
B .S2 B3 ; |114|
NOP 5
; BRANCH OCCURS ; |114|
.endfunc 114,000080400h,32
.sect ".text"
.global _echo
.sym _echo,_echo, 32, 2, 0
.func 121
;----------------------------------------------------------------------
; 121 | void echo(void)
; 123 | Ptr buf;
; 124 | Uns mask;
; 125 | SIO_Handle inStreams[NUM_CHANNELS];
;----------------------------------------------------------------------
;******************************************************************************
;* FUNCTION NAME: _echo *
;* *
;* 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 + 16 Auto + 4 Save = 28 byte *
;******************************************************************************
_echo:
;** --------------------------------------------------------------------------*
.sym _buf,12, 16, 1, 32
.sym _mask,16, 14, 1, 32
.sym _inStreams,20, 120, 1, 64, _SIO_Obj, 2
STW .D2T2 B3,*SP--(32) ; |121|
.line 8
;----------------------------------------------------------------------
; 128 | audioChannel[CHANNEL0].inStream = &inStream0;
;----------------------------------------------------------------------
MVKL .S1 _inStream0,A4 ; |128|
MVKH .S1 _inStream0,A4 ; |128|
STW .D2T1 A4,*+DP(_audioChannel) ; |128|
.line 9
;----------------------------------------------------------------------
; 129 | audioChannel[CHANNEL0].outStream = &outStream0;
;----------------------------------------------------------------------
MVKL .S2 _outStream0,B4 ; |129|
MVKH .S2 _outStream0,B4 ; |129|
STW .D2T2 B4,*+DP(_audioChannel+4) ; |129|
.line 10
;----------------------------------------------------------------------
; 130 | audioChannel[CHANNEL0].load = 0;
;----------------------------------------------------------------------
ZERO .L1 A0 ; |130|
STW .D2T1 A0,*+DP(_audioChannel+8) ; |130|
.line 12
;----------------------------------------------------------------------
; 132 | audioChannel[CHANNEL1].inStream = &inStream1;
;----------------------------------------------------------------------
MVKL .S1 _inStream1,A0 ; |132|
MVKH .S1 _inStream1,A0 ; |132|
STW .D2T1 A0,*+DP(_audioChannel+12) ; |132|
.line 13
;----------------------------------------------------------------------
; 133 | audioChannel[CHANNEL1].outStream = &outStream1;
;----------------------------------------------------------------------
MVKL .S2 _outStream1,B4 ; |133|
MVKH .S2 _outStream1,B4 ; |133|
STW .D2T2 B4,*+DP(_audioChannel+16) ; |133|
.line 14
;----------------------------------------------------------------------
; 134 | audioChannel[CHANNEL1].load = 0;
;----------------------------------------------------------------------
ZERO .L2 B4 ; |134|
STW .D2T2 B4,*+DP(_audioChannel+20) ; |134|
.line 17
;----------------------------------------------------------------------
; 137 | if (SIO_staticbuf(audioChannel[CHANNEL0].inStream, &buf) == 0) {
;----------------------------------------------------------------------
B .S1 _SIO_staticbuf ; |137|
MVKL .S2 RL16,B3 ; |137|
ADD .L2 12,SP,B4 ; |137|
MVKH .S2 RL16,B3 ; |137|
NOP 2
RL16: ; CALL OCCURS ; |137|
MV .L1 A4,A1 ; |137|
[ A1] B .S1 L2 ; |137|
NOP 5
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -