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

📄 echo.asm

📁 Using DSP/BIOS I/O in Multichannel Systems
💻 ASM
📖 第 1 页 / 共 4 页
字号:
           B       .S1     _SYS_abort        ; |201| 
           MVKL    .S1     SL8+0,A0          ; |201| 
           MVKH    .S1     SL8+0,A0          ; |201| 
           MVKL    .S2     RL46,B3           ; |201| 
           STW     .D2T1   A0,*+SP(4)        ; |201| 
           MVKH    .S2     RL46,B3           ; |201| 
RL46:      ; CALL OCCURS                     ; |201| 
;** --------------------------------------------------------------------------*
L8:    
	.line	55
;----------------------------------------------------------------------
; 206 | if (SIO_issue(audioChannel[channelNum].inStream,                       
; 207 |                           audioChannel[channelNum].buf2,               
; 208 |                           audioChannel[channelNum].bufSize,            
; 209 |                           NULL) < 0) {                                 
;----------------------------------------------------------------------
           LDW     .D2T2   *+SP(12),B4       ; |206| 
           MVK     .S2     (_audioChannel-$bss),B5 ; |206| 
           MVK     .S2     (_audioChannel+20-$bss),B6 ; |206| 
           MVK     .S1     (_audioChannel+16-$bss),A3 ; |206| 
           ADD     .L2     DP,B5,B5          ; |206| 

           SHL     .S2     B4,5,B7           ; |206| 
||         MV      .L1X    B4,A0             ; |206| 

           SUBAW   .D2     B7,B4,B7          ; |206| 
||         SHL     .S1     A0,5,A4           ; |206| 
||         SHL     .S2     B4,5,B8           ; |206| 

           ADD     .L2     B5,B7,B4          ; |206| 
||         SUBAW   .D2     B8,B4,B5          ; |206| 
||         SUBAW   .D1     A4,A0,A0          ; |206| 
||         ADD     .L1X    DP,A3,A3          ; |206| 
||         ADD     .S2     DP,B6,B6          ; |206| 

           B       .S1     _SIO_issue        ; |206| 
||         ADD     .L2     B6,B5,B4          ; |206| 
||         LDW     .D2T1   *B4,A4            ; 
||         ADD     .L1     A3,A0,A0          ; |206| 

           LDW     .D1T2   *A0,B4            ; 
||         LDW     .D2T1   *B4,A6            ; 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

           MVKL    .S1     _trace1,A4        ; |220| 
||         MVKL    .S2     RL56,B3           ; |220| 

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

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

           ADD     .L1X    A0,B4,A4          ; |222| 
||         MVKH    .S2     RL58,B3           ; |222| 

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

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

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

           MVKL    .S1     _trace,A4         ; |223| 
||         MVKL    .S2     RL60,B3           ; |223| 

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

RL60:      ; CALL OCCURS                     ; |223| 
	.line	75
           B       .S1     L11               ; |226| 
           NOP             5
           ; BRANCH OCCURS                   ; |226| 
;** --------------------------------------------------------------------------*
	.line	76
	.endfunc	227,000080000h,16


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

;******************************************************************************
;* FUNCTION NAME: _main                                                       *
;*                                                                            *
;*   Regs Modified     : A0,A3,A4,B3,B4,B5,SP                                 *
;*   Regs Used         : A0,A3,A4,B3,B4,B5,SP                                 *
;*   Local Frame Size  : 0 Args + 0 Auto + 4 Save = 4 byte                    *
;******************************************************************************
_main:
;** --------------------------------------------------------------------------*
           STW     .D2T2   B3,*SP--(8)       ; |229| 
	.line	3
;----------------------------------------------------------------------
; 231 | initChannelData();                                                     
;----------------------------------------------------------------------
           B       .S1     _initChannelData  ; |231| 
           MVKL    .S2     RL62,B3           ; |231| 
           MVKH    .S2     RL62,B3           ; |231| 
           NOP             3
RL62:      ; CALL OCCURS                     ; |231| 
           ZERO    .L1     A4                ; |231| 
	.line	4
           LDW     .D2T2   *++SP(8),B3       ; |232| 
           NOP             4
           B       .S2     B3                ; |232| 
           NOP             5
           ; BRANCH OCCURS                   ; |232| 
	.endfunc	232,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	_doLoad
	.global	_IDRAM
	.global	_outStream1
	.global	_inStream1
	.global	_outStream0
	.global	_trace
	.global	_trace1
	.global	_inStream0

⌨️ 快捷键说明

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