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

📄 echo.asm

📁 Using DSP/BIOS I/O in Multichannel Systems
💻 ASM
📖 第 1 页 / 共 4 页
字号:
	.line	7
;----------------------------------------------------------------------
; 115 | if (SIO_issue(channel->inStream,                                       
; 116 |                           channel->buf,                                
; 117 |                           channel->bufSize,                            
; 118 |                           NULL) < 0) {                                 
;----------------------------------------------------------------------
           LDW     .D2T2   *+SP(12),B4       ; |115| 
           MVKL    .S2     RL2,B3            ; |115| 
           MVKH    .S2     RL2,B3            ; |115| 
           ZERO    .L2     B6                ; |115| 
           NOP             1

           B       .S1     _SIO_issue        ; |115| 
||         LDW     .D2T1   *+B4(20),A6       ; 
||         MV      .L1X    B4,A0             ; |115| 

           LDW     .D2T1   *B4,A4            ; 
||         LDW     .D1T2   *+A0(8),B4        ; 

           NOP             4
RL2:       ; CALL OCCURS                     ; |115| 
           CMPLT   .L1     A4,0,A1           ; 
	.line	11
;----------------------------------------------------------------------
; 119 | return(FALSE);                                                         
;----------------------------------------------------------------------
   [ A1]   B       .S1     L1                ; |119| 
   [ A1]   ZERO    .L1     A10               ; |119| 
           NOP             4
           ; BRANCH OCCURS                   ; |119| 
;** --------------------------------------------------------------------------*
	.line	14
;----------------------------------------------------------------------
; 122 | if (SIO_reclaim(channel->inStream,                                     
; 123 |                                 &channel->buf,                         
; 124 |                                 &arg) < 0) {                           
;----------------------------------------------------------------------
           LDW     .D2T2   *+SP(12),B4       ; |122| 
           ADD     .D2     SP,16,B5          ; |122| 
           MVKL    .S2     RL4,B3            ; |122| 
           MV      .L1X    B5,A6             ; |122| 
           B       .S1     _SIO_reclaim      ; |122| 
           LDW     .D2T1   *B4,A4            ; 
           ADD     .L2     8,B4,B4           ; 
           MVKH    .S2     RL4,B3            ; |122| 
           NOP             2
RL4:       ; CALL OCCURS                     ; |122| 
           CMPLT   .L1     A4,0,A1           ; 
	.line	17
;----------------------------------------------------------------------
; 125 | return(FALSE);                                                         
;----------------------------------------------------------------------
   [ A1]   B       .S1     L1                ; |125| 
   [ A1]   ZERO    .L1     A10               ; |125| 
           NOP             4
           ; BRANCH OCCURS                   ; |125| 
;** --------------------------------------------------------------------------*
	.line	20
;----------------------------------------------------------------------
; 128 | LOG_printf(&trace1, "sio_reclaim in returns buffer 0x%x", channel->buf)
;     | ;                                                                      
;----------------------------------------------------------------------
           LDW     .D2T1   *+SP(12),A0       ; |128| 
           MVKL    .S2     SL2+0,B4          ; |128| 
           MVKH    .S2     SL2+0,B4          ; |128| 
           STW     .D2T2   B4,*+SP(4)        ; |128| 
           MVKL    .S2     RL6,B3            ; |128| 

           B       .S1     _LOG_printf       ; |128| 
||         LDW     .D1T1   *+A0(8),A0        ; |128| 

           MVKL    .S1     _trace1,A4        ; |128| 
           MVKH    .S2     RL6,B3            ; |128| 
           MVKH    .S1     _trace1,A4        ; |128| 
           NOP             1
           STW     .D2T1   A0,*+SP(8)        ; |128| 
RL6:       ; CALL OCCURS                     ; |128| 
	.line	23
;----------------------------------------------------------------------
; 131 | doLoad(channel->load);                                                 
;----------------------------------------------------------------------
           LDW     .D2T2   *+SP(12),B4       ; |131| 
           MVKL    .S2     RL8,B3            ; |131| 
           MVKH    .S2     RL8,B3            ; |131| 
           NOP             1
           B       .S1     _doLoad           ; |131| 
           LDW     .D2T1   *+B4(24),A4       ; |131| 
           NOP             4
RL8:       ; CALL OCCURS                     ; |131| 
	.line	25
;----------------------------------------------------------------------
; 133 | LOG_printf(&trace1, "sio_issue out uses buffer 0x%x", channel->buf);   
;----------------------------------------------------------------------
           LDW     .D2T2   *+SP(12),B4       ; |133| 
           MVKL    .S1     SL3+0,A0          ; |133| 
           MVKH    .S1     SL3+0,A0          ; |133| 
           STW     .D2T1   A0,*+SP(4)        ; |133| 
           MVKL    .S2     RL10,B3           ; |133| 

           B       .S1     _LOG_printf       ; |133| 
||         LDW     .D2T2   *+B4(8),B5        ; |133| 

           NOP             1
           MVKL    .S2     _trace1,B4        ; |133| 
           MVKH    .S2     _trace1,B4        ; |133| 
           MV      .L1X    B4,A4             ; |133| 

           STW     .D2T2   B5,*+SP(8)        ; |133| 
||         MVKH    .S2     RL10,B3           ; |133| 

RL10:      ; CALL OCCURS                     ; |133| 
	.line	27
;----------------------------------------------------------------------
; 135 | if (SIO_issue(channel->outStream,                                      
; 136 |                           channel->buf,                                
; 137 |                           channel->bufSize,                            
; 138 |                           NULL) < 0) {                                 
;----------------------------------------------------------------------
           LDW     .D2T2   *+SP(12),B5       ; |135| 
           MVKL    .S2     RL12,B3           ; |135| 
           ZERO    .L2     B6                ; |135| 
           MVKH    .S2     RL12,B3           ; |135| 
           NOP             1
           LDW     .D2T1   *+B5(4),A4        ; 

           B       .S1     _SIO_issue        ; |135| 
||         MV      .L2     B5,B4             ; |135| 
||         LDW     .D2T1   *+B5(20),A6       ; 

           LDW     .D2T2   *+B4(8),B4        ; 
           NOP             4
RL12:      ; CALL OCCURS                     ; |135| 
           CMPLT   .L1     A4,0,A1           ; 
	.line	31
;----------------------------------------------------------------------
; 139 | return(FALSE);                                                         
;----------------------------------------------------------------------
   [ A1]   B       .S1     L1                ; |139| 
   [ A1]   ZERO    .L1     A10               ; |139| 
           NOP             4
           ; BRANCH OCCURS                   ; |139| 
;** --------------------------------------------------------------------------*
	.line	34
;----------------------------------------------------------------------
; 142 | if (SIO_reclaim(channel->outStream,                                    
; 143 |                                 &channel->buf,                         
; 144 |                                 &arg) < 0) {                           
;----------------------------------------------------------------------
           LDW     .D2T2   *+SP(12),B4       ; |142| 
           ADD     .D2     SP,16,B5          ; |142| 
           MVKL    .S2     RL14,B3           ; |142| 
           MV      .L1X    B5,A6             ; |142| 
           B       .S1     _SIO_reclaim      ; |142| 
           LDW     .D2T1   *+B4(4),A4        ; 
           ADD     .L2     8,B4,B4           ; 
           MVKH    .S2     RL14,B3           ; |142| 
           NOP             2
RL14:      ; CALL OCCURS                     ; |142| 
           CMPLT   .L1     A4,0,A1           ; 
	.line	37
;----------------------------------------------------------------------
; 145 | return(FALSE);                                                         
;----------------------------------------------------------------------
   [ A1]   B       .S1     L1                ; |145| 
   [ A1]   ZERO    .L1     A10               ; |145| 
           NOP             4
           ; BRANCH OCCURS                   ; |145| 
;** --------------------------------------------------------------------------*
	.line	40
;----------------------------------------------------------------------
; 148 | LOG_printf(&trace1, "sio_reclaim out returns buffer 0x%x", channel->buf
;     | );                                                                     
;----------------------------------------------------------------------
           LDW     .D2T2   *+SP(12),B4       ; |148| 
           MVKL    .S2     SL4+0,B5          ; |148| 
           MVKH    .S2     SL4+0,B5          ; |148| 
           STW     .D2T2   B5,*+SP(4)        ; |148| 
           MVKL    .S2     RL16,B3           ; |148| 

           B       .S1     _LOG_printf       ; |148| 
||         LDW     .D2T2   *+B4(8),B4        ; |148| 

           MVKL    .S1     _trace1,A4        ; |148| 
           MVKH    .S2     RL16,B3           ; |148| 
           MVKH    .S1     _trace1,A4        ; |148| 
           NOP             1
           STW     .D2T2   B4,*+SP(8)        ; |148| 
RL16:      ; CALL OCCURS                     ; |148| 
	.line	41
;----------------------------------------------------------------------
; 149 | return(TRUE);                                                          
;----------------------------------------------------------------------
           MVK     .S1     0x1,A10           ; |149| 
;** --------------------------------------------------------------------------*
L1:    
	.line	42

           LDW     .D2T1   *+SP(20),A10      ; |150| 
||         MV      .L1     A10,A4            ; |150| 

           LDW     .D2T2   *++SP(24),B3      ; |150| 
           NOP             4
           B       .S2     B3                ; |150| 
           NOP             5
           ; BRANCH OCCURS                   ; |150| 
	.endfunc	150,000080400h,24


	.sect	".text"
	.global	_echo
	.sym	_echo,_echo, 32, 2, 0
	.func	152
;----------------------------------------------------------------------
; 152 | void echo(Int channelNum)                                              
;----------------------------------------------------------------------

;******************************************************************************
;* 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 + 4 Auto + 4 Save = 16 byte                   *
;******************************************************************************
_echo:
;** --------------------------------------------------------------------------*
	.sym	_channelNum,4, 4, 17, 32
	.sym	_channelNum,12, 4, 1, 32
           STW     .D2T2   B3,*SP--(16)      ; |152| 
	.line	2
           STW     .D2T1   A4,*+SP(12)       ; |153| 
	.line	7
;----------------------------------------------------------------------
; 158 | if ((audioChannel[channelNum].buf = (Ptr)MEM_alloc(IDRAM,              
; 159 | 
;     |                             SAMPLE_BUF_SIZE,                           
; 160 | 
;     |                             0)) == NULL) {                             
;----------------------------------------------------------------------
           B       .S1     _MEM_alloc        ; |158| 
           LDW     .D2T1   *+DP(_IDRAM),A4   ; |158| 
           MVKL    .S2     RL18,B3           ; |158| 
           MVK     .S2     0x140,B4          ; |158| 
           MVKH    .S2     RL18,B3           ; |158| 
           ZERO    .L1     A6                ; |158| 
RL18:      ; CALL OCCURS                     ; |158| 
           LDW     .D2T2   *+SP(12),B4       ; |158| 
           MV      .L1     A4,A1             ; 
           MVK     .S1     (_audioChannel+8-$bss),A0 ; |158| 
   [ A1]   B       .S1     L2                ; |158| 
           ADD     .L1X    DP,A0,A0          ; |158| 
           SHL     .S2     B4,5,B5           ; |158| 
           SUBAW   .D2     B5,B4,B4          ; |158| 
           ADD     .L1X    A0,B4,A0          ; |158| 
           STW     .D1T1   A1,*A0            ; |158| 
           ; BRANCH OCCURS                   ; |158| 
;** --------------------------------------------------------------------------*
	.line	10
;----------------------------------------------------------------------
; 161 | SYS_abort("MEM_alloc failed");                                         
;----------------------------------------------------------------------
           B       .S1     _SYS_abort        ; |161| 
           MVKL    .S1     SL5+0,A0          ; |161| 
           MVKH    .S1     SL5+0,A0          ; |161| 
           MVKL    .S2     RL20,B3           ; |161| 
           STW     .D2T1   A0,*+SP(4)        ; |161| 
           MVKH    .S2     RL20,B3           ; |161| 
RL20:      ; CALL OCCURS                     ; |161| 
;** --------------------------------------------------------------------------*
L2:    
	.line	13
;----------------------------------------------------------------------
; 164 | if ((audioChannel[channelNum].buf1 = (Ptr)MEM_alloc(IDRAM,             
; 165 | 
;     |                              SAMPLE_BUF_SIZE,                          
; 166 | 
;     |                              0)) == NULL) {                            
;----------------------------------------------------------------------
           B       .S1     _MEM_alloc        ; |164| 
           LDW     .D2T1   *+DP(_IDRAM),A4   ; |164| 
           MVKL    .S2     RL22,B3           ; |164| 

⌨️ 快捷键说明

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