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

📄 echo.asm

📁 Using DSP/BIOS I/O in Multichannel Systems
💻 ASM
📖 第 1 页 / 共 2 页
字号:
; 109 | return(TRUE);                                                          
;----------------------------------------------------------------------
           MVK     .S1     0x1,A10           ; |109| 
;** --------------------------------------------------------------------------*
L1:    
	.line	20

           LDW     .D2T1   *+SP(28),A10      ; |110| 
||         MV      .L1     A10,A4            ; |110| 

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


	.sect	".text"
	.global	_echo
	.sym	_echo,_echo, 32, 2, 0
	.func	117
;----------------------------------------------------------------------
; 117 | void echo(void)                                                        
; 119 | Ptr                         buf;                                       
;----------------------------------------------------------------------

;******************************************************************************
;* 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	_buf,12, 16, 1, 32
           STW     .D2T2   B3,*SP--(16)      ; |117| 
	.line	6
;----------------------------------------------------------------------
; 122 | audioChannel[CHANNEL0].inStream = &inStream0;                          
;----------------------------------------------------------------------
           MVKL    .S1     _inStream0,A4     ; |122| 
           MVKH    .S1     _inStream0,A4     ; |122| 
           STW     .D2T1   A4,*+DP(_audioChannel) ; |122| 
	.line	7
;----------------------------------------------------------------------
; 123 | audioChannel[CHANNEL0].outStream = &outStream0;                        
;----------------------------------------------------------------------
           MVKL    .S2     _outStream0,B4    ; |123| 
           MVKH    .S2     _outStream0,B4    ; |123| 
           STW     .D2T2   B4,*+DP(_audioChannel+4) ; |123| 
	.line	8
;----------------------------------------------------------------------
; 124 | audioChannel[CHANNEL0].load = 0;                                       
;----------------------------------------------------------------------
           ZERO    .L1     A0                ; |124| 
           STW     .D2T1   A0,*+DP(_audioChannel+8) ; |124| 
	.line	10
;----------------------------------------------------------------------
; 126 | audioChannel[CHANNEL1].inStream = &inStream1;                          
;----------------------------------------------------------------------
           MVKL    .S1     _inStream1,A0     ; |126| 
           MVKH    .S1     _inStream1,A0     ; |126| 
           STW     .D2T1   A0,*+DP(_audioChannel+12) ; |126| 
	.line	11
;----------------------------------------------------------------------
; 127 | audioChannel[CHANNEL1].outStream = &outStream1;                        
;----------------------------------------------------------------------
           MVKL    .S2     _outStream1,B4    ; |127| 
           MVKH    .S2     _outStream1,B4    ; |127| 
           STW     .D2T2   B4,*+DP(_audioChannel+16) ; |127| 
	.line	12
;----------------------------------------------------------------------
; 128 | audioChannel[CHANNEL1].load = 0;                                       
;----------------------------------------------------------------------
           ZERO    .L2     B4                ; |128| 
           STW     .D2T2   B4,*+DP(_audioChannel+20) ; |128| 
	.line	15
;----------------------------------------------------------------------
; 131 | if (SIO_staticbuf(audioChannel[CHANNEL0].inStream, &buf) == 0) {       
;----------------------------------------------------------------------
           B       .S1     _SIO_staticbuf    ; |131| 
           MVKL    .S2     RL12,B3           ; |131| 
           ADD     .L2     12,SP,B4          ; |131| 
           MVKH    .S2     RL12,B3           ; |131| 
           NOP             2
RL12:      ; CALL OCCURS                     ; |131| 
           MV      .L1     A4,A1             ; |131| 
   [ A1]   B       .S1     L2                ; |131| 
           NOP             5
           ; BRANCH OCCURS                   ; |131| 
;** --------------------------------------------------------------------------*
	.line	16
;----------------------------------------------------------------------
; 132 | SYS_abort("Cannot get static buffer");                                 
;----------------------------------------------------------------------
           B       .S1     _SYS_abort        ; |132| 
           MVKL    .S1     SL4+0,A0          ; |132| 
           MVKH    .S1     SL4+0,A0          ; |132| 
           MVKL    .S2     RL14,B3           ; |132| 
           STW     .D2T1   A0,*+SP(4)        ; |132| 
           MVKH    .S2     RL14,B3           ; |132| 
RL14:      ; CALL OCCURS                     ; |132| 
;** --------------------------------------------------------------------------*
L2:    
	.line	20
;----------------------------------------------------------------------
; 136 | while (TRUE) {                                                         
;----------------------------------------------------------------------
;** --------------------------------------------------------------------------*
L3:    
	.line	21
;----------------------------------------------------------------------
; 137 | LOG_printf(&trace1, "channel 0");                                      
;----------------------------------------------------------------------
           B       .S1     _LOG_printf       ; |137| 
           MVKL    .S2     SL5+0,B4          ; |137| 
           MVKL    .S2     RL16,B3           ; |137| 
           MVKH    .S2     SL5+0,B4          ; |137| 
           MVKL    .S1     _trace1,A4        ; |137| 

           STW     .D2T2   B4,*+SP(4)        ; |137| 
||         MVKH    .S2     RL16,B3           ; |137| 
||         MVKH    .S1     _trace1,A4        ; |137| 

RL16:      ; CALL OCCURS                     ; |137| 
	.line	23
;----------------------------------------------------------------------
; 139 | if (!processChannel(&audioChannel[0], &buf)) {                         
;----------------------------------------------------------------------
           B       .S1     _processChannel   ; |139| 
           MVKL    .S2     RL18,B3           ; |139| 
           MVK     .S1     (_audioChannel-$bss),A0 ; |139| 
           ADD     .L1X    DP,A0,A4          ; 
           ADD     .L2     12,SP,B4          ; |139| 
           MVKH    .S2     RL18,B3           ; |139| 
RL18:      ; CALL OCCURS                     ; |139| 
           MV      .L1     A4,A1             ; |139| 
   [ A1]   B       .S1     L4                ; |139| 
           NOP             5
           ; BRANCH OCCURS                   ; |139| 
;** --------------------------------------------------------------------------*
	.line	24
;----------------------------------------------------------------------
; 140 | LOG_printf(&trace, "processing error on channel 0");                   
;----------------------------------------------------------------------
           B       .S1     _LOG_printf       ; |140| 
           MVKL    .S2     SL6+0,B4          ; |140| 
           MVKL    .S2     RL20,B3           ; |140| 
           MVKH    .S2     SL6+0,B4          ; |140| 
           MVKL    .S1     _trace,A4         ; |140| 

           STW     .D2T2   B4,*+SP(4)        ; |140| 
||         MVKH    .S2     RL20,B3           ; |140| 
||         MVKH    .S1     _trace,A4         ; |140| 

RL20:      ; CALL OCCURS                     ; |140| 
;** --------------------------------------------------------------------------*
L4:    
	.line	27
;----------------------------------------------------------------------
; 143 | LOG_printf(&trace1, "channel 1");                                      
;----------------------------------------------------------------------
           B       .S1     _LOG_printf       ; |143| 
           MVKL    .S2     SL7+0,B4          ; |143| 
           MVKL    .S2     RL22,B3           ; |143| 
           MVKH    .S2     SL7+0,B4          ; |143| 
           MVKL    .S1     _trace1,A4        ; |143| 

           STW     .D2T2   B4,*+SP(4)        ; |143| 
||         MVKH    .S2     RL22,B3           ; |143| 
||         MVKH    .S1     _trace1,A4        ; |143| 

RL22:      ; CALL OCCURS                     ; |143| 
	.line	29
;----------------------------------------------------------------------
; 145 | if (!processChannel(&audioChannel[1], &buf)) {                         
;----------------------------------------------------------------------
           B       .S1     _processChannel   ; |145| 
           MVKL    .S2     RL24,B3           ; |145| 
           MVK     .S1     (_audioChannel+12-$bss),A0 ; |145| 
           ADD     .L1X    DP,A0,A4          ; 
           ADD     .L2     12,SP,B4          ; |145| 
           MVKH    .S2     RL24,B3           ; |145| 
RL24:      ; CALL OCCURS                     ; |145| 
           MV      .L1     A4,A1             ; |145| 
   [ A1]   B       .S1     L3                ; |145| 
           NOP             5
           ; BRANCH OCCURS                   ; |145| 
;** --------------------------------------------------------------------------*
	.line	30
;----------------------------------------------------------------------
; 146 | LOG_printf(&trace, "processing error on channel 1");                   
;----------------------------------------------------------------------
           B       .S1     _LOG_printf       ; |146| 
           MVKL    .S2     SL8+0,B4          ; |146| 
           MVKL    .S2     RL26,B3           ; |146| 
           MVKH    .S2     SL8+0,B4          ; |146| 
           MVKL    .S1     _trace,A4         ; |146| 

           STW     .D2T2   B4,*+SP(4)        ; |146| 
||         MVKH    .S2     RL26,B3           ; |146| 
||         MVKH    .S1     _trace,A4         ; |146| 

RL26:      ; CALL OCCURS                     ; |146| 
	.line	32
           B       .S1     L3                ; |148| 
           NOP             5
           ; BRANCH OCCURS                   ; |148| 
;** --------------------------------------------------------------------------*
	.line	33
	.endfunc	149,000080000h,16


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

;******************************************************************************
;* FUNCTION NAME: _main                                                       *
;*                                                                            *
;*   Regs Modified     : A4                                                   *
;*   Regs Used         : A4,B3                                                *
;*   Local Frame Size  : 0 Args + 0 Auto + 0 Save = 0 byte                    *
;******************************************************************************
_main:
;** --------------------------------------------------------------------------*
	.line	2
           ZERO    .L1     A4                ; |152| 
	.line	3
           B       .S2     B3                ; |153| 
           NOP             5
           ; BRANCH OCCURS                   ; |153| 
	.endfunc	153,000000000h,0


;******************************************************************************
;* STRINGS                                                                    *
;******************************************************************************
	.sect	".const"
SL1:	.string	"sio_get uses buffer 0x%x",0
SL2:	.string	"sio_get returns buffer 0x%x",0
SL3:	.string	"sio_put returns buffer 0x%x",0
SL4:	.string	"Cannot get static buffer",0
SL5:	.string	"channel 0",0
SL6:	.string	"processing error on channel 0",0
SL7:	.string	"channel 1",0
SL8:	.string	"processing error on channel 1",0
;******************************************************************************
;* UNDEFINED EXTERNAL REFERENCES                                              *
;******************************************************************************
	.global	_LOG_printf
	.global	_SYS_abort
	.global	_SIO_get
	.global	_SIO_staticbuf
	.global	_SIO_put
	.global	_doLoad
	.global	_outStream1
	.global	_inStream1
	.global	_outStream0
	.global	_trace
	.global	_trace1
	.global	_inStream0

⌨️ 快捷键说明

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