echo.asm

来自「Using DSP/BIOS I/O in Multichannel Syste」· 汇编 代码 · 共 1,261 行 · 第 1/5 页

ASM
1,261
字号
           ZERO    .L2     B6                ; |207| 
           MVKH    .S2     RL52,B3           ; |207| 
           NOP             1
RL52:      ; CALL OCCURS                     ; |207| 
           CMPLT   .L1     A4,0,A1           ; 
   [!A1]   B       .S1     L9                ; |207| 
           NOP             5
           ; BRANCH OCCURS                   ; |207| 
;** --------------------------------------------------------------------------*
	.line	59
;----------------------------------------------------------------------
; 211 | SYS_abort("error on issue for chan %d", channelNum);                   
;----------------------------------------------------------------------

           B       .S1     _SYS_abort        ; |211| 
||         LDW     .D2T2   *+SP(12),B4       ; |211| 

           MVKL    .S1     SL6+0,A0          ; |211| 
           MVKH    .S1     SL6+0,A0          ; |211| 
           STW     .D2T1   A0,*+SP(4)        ; |211| 
           MVKL    .S2     RL54,B3           ; |211| 

           STW     .D2T2   B4,*+SP(8)        ; |211| 
||         MVKH    .S2     RL54,B3           ; |211| 

RL54:      ; CALL OCCURS                     ; |211| 
;** --------------------------------------------------------------------------*
L9:    
	.line	61
;----------------------------------------------------------------------
; 213 | if (SIO_issue(audioChannel[channelNum].inStream,                       
; 214 |                           audioChannel[channelNum].buf1,               
; 215 |                           audioChannel[channelNum].bufSize,            
; 216 |                           NULL) < 0) {                                 
;----------------------------------------------------------------------
           LDW     .D2T2   *+SP(12),B7       ; |213| 
           MVK     .S2     (_audioChannel+20-$bss),B5 ; |213| 
           MVK     .S1     (_audioChannel+12-$bss),A3 ; |213| 
           ADD     .L2     DP,B5,B5          ; |213| 
           MVK     .S2     (_audioChannel-$bss),B8 ; |213| 
           SHL     .S2     B7,5,B4           ; |213| 

           SUBAW   .D2     B4,B7,B6          ; |213| 
||         MV      .L1X    B7,A4             ; |213| 
||         SHL     .S2     B7,5,B4           ; |213| 

           SUBAW   .D2     B4,B7,B4          ; |213| 
||         SHL     .S1     A4,5,A0           ; |213| 

           ADD     .L2     B5,B4,B4          ; |213| 
||         SUBAW   .D1     A0,A4,A0          ; |213| 
||         ADD     .S2     DP,B8,B8          ; |213| 
||         ADD     .L1X    DP,A3,A3          ; |213| 

           B       .S1     _SIO_issue        ; |213| 
||         LDW     .D2T1   *B4,A6            ; 
||         ADD     .L1     A3,A0,A0          ; |213| 
||         ADD     .L2     B8,B6,B6          ; |213| 

           LDW     .D1T2   *A0,B4            ; 
||         LDW     .D2T1   *B6,A4            ; 

           MVKL    .S2     RL56,B3           ; |213| 
           ZERO    .L2     B6                ; |213| 
           MVKH    .S2     RL56,B3           ; |213| 
           NOP             1
RL56:      ; CALL OCCURS                     ; |213| 
           CMPLT   .L1     A4,0,A1           ; 
   [!A1]   B       .S1     L10               ; |213| 
           NOP             5
           ; BRANCH OCCURS                   ; |213| 
;** --------------------------------------------------------------------------*
	.line	65
;----------------------------------------------------------------------
; 217 | SYS_abort("error on issue for chan %d", channelNum);                   
;----------------------------------------------------------------------

           B       .S1     _SYS_abort        ; |217| 
||         LDW     .D2T2   *+SP(12),B4       ; |217| 

           MVKL    .S1     SL6+0,A0          ; |217| 
           MVKH    .S1     SL6+0,A0          ; |217| 
           STW     .D2T1   A0,*+SP(4)        ; |217| 
           MVKL    .S2     RL58,B3           ; |217| 

           STW     .D2T2   B4,*+SP(8)        ; |217| 
||         MVKH    .S2     RL58,B3           ; |217| 

RL58:      ; CALL OCCURS                     ; |217| 
;** --------------------------------------------------------------------------*
L10:    
	.line	68
;----------------------------------------------------------------------
; 220 | while (TRUE) {                                                         
;----------------------------------------------------------------------
;** --------------------------------------------------------------------------*
L11:    
	.line	69
;----------------------------------------------------------------------
; 221 | LOG_printf(&trace1, "channel %d", channelNum);                         
;----------------------------------------------------------------------

           B       .S1     _LOG_printf       ; |221| 
||         LDW     .D2T2   *+SP(12),B5       ; |221| 

           MVKL    .S2     SL9+0,B4          ; |221| 
           MVKH    .S2     SL9+0,B4          ; |221| 
           STW     .D2T2   B4,*+SP(4)        ; |221| 

           MVKL    .S1     _trace1,A4        ; |221| 
||         MVKL    .S2     RL60,B3           ; |221| 

           STW     .D2T2   B5,*+SP(8)        ; |221| 
||         MVKH    .S2     RL60,B3           ; |221| 
||         MVKH    .S1     _trace1,A4        ; |221| 

RL60:      ; CALL OCCURS                     ; |221| 
	.line	71
;----------------------------------------------------------------------
; 223 | if (!processChannel(&audioChannel[channelNum])) {                      
;----------------------------------------------------------------------
           LDW     .D2T2   *+SP(12),B5       ; |223| 
           MVK     .S1     (_audioChannel-$bss),A0 ; |223| 
           B       .S1     _processChannel   ; |223| 
           MVKL    .S2     RL62,B3           ; |223| 
           ADD     .L1X    DP,A0,A0          ; |223| 
           SHL     .S2     B5,5,B4           ; |223| 
           SUBAW   .D2     B4,B5,B4          ; |223| 

           ADD     .L1X    A0,B4,A4          ; |223| 
||         MVKH    .S2     RL62,B3           ; |223| 

RL62:      ; CALL OCCURS                     ; |223| 
           MV      .L1     A4,A1             ; |223| 
   [ A1]   B       .S1     L11               ; |223| 
           NOP             5
           ; BRANCH OCCURS                   ; |223| 
;** --------------------------------------------------------------------------*
	.line	72
;----------------------------------------------------------------------
; 224 | LOG_printf(&trace, "processing error on channel %d", channelNum);      
;----------------------------------------------------------------------

           B       .S1     _LOG_printf       ; |224| 
||         LDW     .D2T2   *+SP(12),B5       ; |224| 

           MVKL    .S2     SL10+0,B4         ; |224| 
           MVKH    .S2     SL10+0,B4         ; |224| 
           STW     .D2T2   B4,*+SP(4)        ; |224| 

           MVKL    .S1     _trace,A4         ; |224| 
||         MVKL    .S2     RL64,B3           ; |224| 

           STW     .D2T2   B5,*+SP(8)        ; |224| 
||         MVKH    .S2     RL64,B3           ; |224| 
||         MVKH    .S1     _trace,A4         ; |224| 

RL64:      ; CALL OCCURS                     ; |224| 
	.line	75
           B       .S1     L11               ; |227| 
           NOP             5
           ; BRANCH OCCURS                   ; |227| 
;** --------------------------------------------------------------------------*
	.line	76
	.endfunc	228,000080000h,16


	.sect	".text"
	.global	_main
	.sym	_main,_main, 36, 2, 0
	.func	230
;----------------------------------------------------------------------
; 230 | main()                                                                 
;----------------------------------------------------------------------

;******************************************************************************
;* FUNCTION NAME: _main                                                       *
;*                                                                            *
;*   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,SP                                      *
;*   Local Frame Size  : 0 Args + 0 Auto + 4 Save = 4 byte                    *
;******************************************************************************
_main:
;** --------------------------------------------------------------------------*
           STW     .D2T2   B3,*SP--(8)       ; |230| 
	.line	3
;----------------------------------------------------------------------
; 232 | CSL_Init();                                                            
;----------------------------------------------------------------------
           B       .S1     _CSL_Init         ; |232| 
           MVKL    .S2     RL66,B3           ; |232| 
           MVKH    .S2     RL66,B3           ; |232| 
           NOP             3
RL66:      ; CALL OCCURS                     ; |232| 
	.line	4
;----------------------------------------------------------------------
; 233 | initChannelData();                                                     
;----------------------------------------------------------------------
           B       .S1     _initChannelData  ; |233| 
           MVKL    .S2     RL68,B3           ; |233| 
           MVKH    .S2     RL68,B3           ; |233| 
           NOP             3
RL68:      ; CALL OCCURS                     ; |233| 
           ZERO    .L1     A4                ; |233| 
	.line	5
           LDW     .D2T2   *++SP(8),B3       ; |234| 
           NOP             4
           B       .S2     B3                ; |234| 
           NOP             5
           ; BRANCH OCCURS                   ; |234| 
	.endfunc	234,000080000h,8


;******************************************************************************
;* STRINGS                                                                    *
;******************************************************************************
	.sect	".const"
SL1:	.string	"sio_issue in uses buffer 0x%x",0
SL2:	.string	"sio_reclaim in returns buffer 0x%x",0
SL3:	.string	"sio_issue out uses buffer 0x%x",0
SL4:	.string	"sio_reclaim out returns buffer 0x%x",0
SL5:	.string	"MEM_alloc failed",0
SL6:	.string	"error on issue for chan %d",0
SL7:	.string	"sio_issue uses buffer 0x%x",0
SL8:	.string	"Cannot get static buffer",0
SL9:	.string	"channel %d",0
SL10:	.string	"processing error on channel %d",0
;******************************************************************************
;* UNDEFINED EXTERNAL REFERENCES                                              *
;******************************************************************************
	.global	_MEM_alloc
	.global	_LOG_printf
	.global	_SYS_abort
	.global	_SIO_staticbuf
	.global	_SIO_issue
	.global	_SIO_reclaim
	.global	_CSL6211_LIB_
	.global	_CSLINIT_Init
	.global	_doLoad
	.global	_SDRAM
	.global	_outStream1
	.global	_inStream1
	.global	_outStream0
	.global	_trace
	.global	_trace1
	.global	_inStream0

⌨️ 快捷键说明

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