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

📄 echo.asm

📁 Using DSP/BIOS I/O in Multichannel Systems
💻 ASM
📖 第 1 页 / 共 5 页
字号:
;******************************************************************************
;* FUNCTION NAME: _initChannelData                                            *
;*                                                                            *
;*   Regs Modified     : A0,A3,B4,B5,SP                                       *
;*   Regs Used         : A0,A3,B3,B4,B5,DP,SP                                 *
;*   Local Frame Size  : 0 Args + 4 Auto + 0 Save = 4 byte                    *
;******************************************************************************
_initChannelData:
;** --------------------------------------------------------------------------*
	.sym	_pChannel,4, 24, 1, 32, _dataChannel
           SUB     .L2     SP,8,SP           ; |91| 
	.line	6
;----------------------------------------------------------------------
;  96 | pChannel = &audioChannel[CHANNEL0];                                    
;----------------------------------------------------------------------
           MVK     .S2     (_audioChannel-$bss),B4 ; |96| 
           ADD     .L2     DP,B4,B4          ; |96| 
           STW     .D2T2   B4,*+SP(4)        ; |96| 
	.line	7
;----------------------------------------------------------------------
;  97 | pChannel->inStream = &inStream0;                                       
;----------------------------------------------------------------------
           MVKL    .S2     _inStream0,B5     ; |97| 

           MV      .L1X    B4,A0             ; |97| 
||         MVKH    .S2     _inStream0,B5     ; |97| 

           STW     .D1T2   B5,*A0            ; |97| 
	.line	8
;----------------------------------------------------------------------
;  98 | pChannel->outStream = &outStream0;                                     
;----------------------------------------------------------------------
           LDW     .D2T1   *+SP(4),A3        ; |98| 
           MVKL    .S1     _outStream0,A0    ; |98| 
           MVKH    .S1     _outStream0,A0    ; |98| 
           NOP             2
           STW     .D1T1   A0,*+A3(4)        ; |98| 
	.line	9
;----------------------------------------------------------------------
;  99 | pChannel->bufSize = SAMPLE_BUF_SIZE;                                   
;----------------------------------------------------------------------
           LDW     .D2T1   *+SP(4),A3        ; |99| 
           MVK     .S1     320,A0            ; |99| 
           NOP             3
           STW     .D1T1   A0,*+A3(20)       ; |99| 
	.line	10
;----------------------------------------------------------------------
; 100 | pChannel->load = 0;                                                    
;----------------------------------------------------------------------
           LDW     .D2T1   *+SP(4),A3        ; |100| 
           ZERO    .L1     A0                ; |100| 
           NOP             3
           STW     .D1T1   A0,*+A3(24)       ; |100| 
	.line	13
;----------------------------------------------------------------------
; 103 | pChannel = &audioChannel[CHANNEL1];                                    
;----------------------------------------------------------------------
           MVK     .S2     (_audioChannel+28-$bss),B4 ; |103| 
           ADD     .L2     DP,B4,B4          ; |103| 
           STW     .D2T2   B4,*+SP(4)        ; |103| 
	.line	14
;----------------------------------------------------------------------
; 104 | pChannel->inStream = &inStream1;                                       
;----------------------------------------------------------------------
           MVKL    .S1     _inStream1,A0     ; |104| 

           MV      .L1X    B4,A3             ; |104| 
||         MVKH    .S1     _inStream1,A0     ; |104| 

           STW     .D1T1   A0,*A3            ; |104| 
	.line	15
;----------------------------------------------------------------------
; 105 | pChannel->outStream = &outStream1;                                     
;----------------------------------------------------------------------
           LDW     .D2T1   *+SP(4),A0        ; |105| 
           MVKL    .S2     _outStream1,B4    ; |105| 
           MVKH    .S2     _outStream1,B4    ; |105| 
           NOP             2
           STW     .D1T2   B4,*+A0(4)        ; |105| 
	.line	16
;----------------------------------------------------------------------
; 106 | pChannel->bufSize = SAMPLE_BUF_SIZE;                                   
;----------------------------------------------------------------------
           LDW     .D2T1   *+SP(4),A0        ; |106| 
           MVK     .S1     320,A3            ; |106| 
           NOP             3
           STW     .D1T1   A3,*+A0(20)       ; |106| 
	.line	17
;----------------------------------------------------------------------
; 107 | pChannel->load = 0;                                                    
;----------------------------------------------------------------------
           LDW     .D2T2   *+SP(4),B4        ; |107| 
           ZERO    .L2     B5                ; |107| 
           NOP             3
           STW     .D2T2   B5,*+B4(24)       ; |107| 
	.line	18
           B       .S2     B3                ; |108| 
           ADD     .L2     8,SP,SP           ; |108| 
           NOP             4
           ; BRANCH OCCURS                   ; |108| 
	.endfunc	108,000000000h,8


	.sect	".text"
	.global	_processChannel
	.sym	_processChannel,_processChannel, 45, 2, 0
	.func	110
;----------------------------------------------------------------------
; 110 | 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	_arg,16, 4, 1, 32
           STW     .D2T2   B3,*SP--(24)      ; |110| 
           STW     .D2T1   A10,*+SP(20)      ; |110| 
	.line	2
;----------------------------------------------------------------------
; 112 | Arg             arg;                                                   
;----------------------------------------------------------------------
           STW     .D2T1   A4,*+SP(12)       ; |111| 
	.line	5
;----------------------------------------------------------------------
; 114 | LOG_printf(&trace1, "sio_issue in uses buffer 0x%x", channel->buf);    
;----------------------------------------------------------------------
           MVKL    .S2     SL1+0,B4          ; |114| 
           MVKH    .S2     SL1+0,B4          ; |114| 
           STW     .D2T2   B4,*+SP(4)        ; |114| 

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

           MVKL    .S1     _trace1,A4        ; |114| 
           MVKL    .S2     RL4,B3            ; |114| 
           MVKH    .S1     _trace1,A4        ; |114| 
           MVKH    .S2     RL4,B3            ; |114| 
           STW     .D2T1   A0,*+SP(8)        ; |114| 
RL4:       ; CALL OCCURS                     ; |114| 
	.line	7
;----------------------------------------------------------------------
; 116 | if (SIO_issue(channel->inStream,                                       
; 117 |                           channel->buf,                                
; 118 |                           channel->bufSize,                            
; 119 |                           NULL) < 0) {                                 
;----------------------------------------------------------------------
           LDW     .D2T2   *+SP(12),B4       ; |116| 
           MVKL    .S2     RL6,B3            ; |116| 
           MVKH    .S2     RL6,B3            ; |116| 
           ZERO    .L2     B6                ; |116| 
           NOP             1

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

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

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

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

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

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

           NOP             1

⌨️ 快捷键说明

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