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

📄 echo.asm

📁 Using DSP/BIOS I/O in Multichannel Systems
💻 ASM
📖 第 1 页 / 共 3 页
字号:
;  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 + -