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

📄 dss.asm

📁 Using DSP/BIOS I/O in Multichannel Systems
💻 ASM
📖 第 1 页 / 共 5 页
字号:
;----------------------------------------------------------------------
;** --------------------------------------------------------------------------*
L18:    
	.line	18
;----------------------------------------------------------------------
; 214 | chan = 0;                                                              
; 215 | break;                                                                 
; 216 | case '1':                                                              
;----------------------------------------------------------------------
           ZERO    .L2     B4                ; |214| 
           STW     .D2T2   B4,*+SP(16)       ; |214| 
           B       .S1     L22               ; |214| 
           NOP             5
           ; BRANCH OCCURS                   ; |214| 
;** --------------------------------------------------------------------------*
L19:    
	.line	21
;----------------------------------------------------------------------
; 217 | chan = 1;                                                              
; 218 | break;                                                                 
; 219 | default:                                                               
;----------------------------------------------------------------------
           MVK     .S2     1,B4              ; |217| 
           STW     .D2T2   B4,*+SP(16)       ; |217| 
           B       .S1     L22               ; |217| 
           NOP             5
           ; BRANCH OCCURS                   ; |217| 
;** --------------------------------------------------------------------------*
L20:    
	.line	24
;----------------------------------------------------------------------
; 220 | return SYS_ENODEV;                                                     
;----------------------------------------------------------------------
           B       .S1     L30               ; |220| 
           MVK     .S1     0x3,A4            ; |220| 
           NOP             4
           ; BRANCH OCCURS                   ; |220| 
;** --------------------------------------------------------------------------*
;** --------------------------------------------------------------------------*
L21:    
           LDW     .D2T2   *+SP(8),B4        ; |220| 
           MVK     .S1     48,A0             ; |220| 
           MVK     .S2     49,B5             ; |220| 
           NOP             2
           LDB     .D2T2   *B4,B4            ; |220| 
           NOP             4
           CMPEQ   .L1X    B4,A0,A1          ; |220| 
   [ A1]   B       .S1     L18               ; |220| 
           CMPEQ   .L2     B4,B5,B0          ; |220| 
           NOP             4
           ; BRANCH OCCURS                   ; |220| 
;** --------------------------------------------------------------------------*
   [ B0]   B       .S1     L19               ; |220| 
           NOP             5
           ; BRANCH OCCURS                   ; |220| 
;** --------------------------------------------------------------------------*
           B       .S1     L20               ; |220| 
           NOP             5
           ; BRANCH OCCURS                   ; |220| 
;** --------------------------------------------------------------------------*
L22:    
	.line	28
;----------------------------------------------------------------------
; 224 | if (device->mode == DEV_INPUT) {                                       
;----------------------------------------------------------------------
           LDW     .D2T2   *+SP(4),B4        ; |224| 
           NOP             4
           LDW     .D2T2   *+B4(20),B0       ; |224| 
           NOP             4
   [ B0]   B       .S1     L24               ; |224| 
           NOP             5
           ; BRANCH OCCURS                   ; |224| 
;** --------------------------------------------------------------------------*
	.line	29
;----------------------------------------------------------------------
; 225 | if (DSS_adcObj[chan] != NULL) {                                        
;----------------------------------------------------------------------
           LDW     .D2T2   *+SP(16),B5       ; |225| 
           MVK     .S2     (_DSS_adcObj-$bss),B4 ; |225| 
           ADD     .L2     DP,B4,B4          ; |225| 
           NOP             2
           LDW     .D2T2   *+B4[B5],B0       ; |225| 
           NOP             4
   [!B0]   B       .S1     L23               ; |225| 
           NOP             5
           ; BRANCH OCCURS                   ; |225| 
;** --------------------------------------------------------------------------*
	.line	30
;----------------------------------------------------------------------
; 226 | return SYS_EBUSY;                                                      
;----------------------------------------------------------------------
           B       .S1     L30               ; |226| 
           MVK     .S1     0x4,A4            ; |226| 
           NOP             4
           ; BRANCH OCCURS                   ; |226| 
;** --------------------------------------------------------------------------*
	.line	31
;----------------------------------------------------------------------
; 227 | } else {                                                               
;----------------------------------------------------------------------
;** --------------------------------------------------------------------------*
L23:    
	.line	32
;----------------------------------------------------------------------
; 228 | DSS_adcObj[chan] = device;                                             
;----------------------------------------------------------------------
           LDW     .D2T2   *+SP(16),B5       ; |228| 
           LDW     .D2T2   *+SP(4),B6        ; |228| 
           MVK     .S2     (_DSS_adcObj-$bss),B4 ; |228| 
           ADD     .L2     DP,B4,B4          ; |228| 
           NOP             2
           STW     .D2T2   B6,*+B4[B5]       ; |228| 
	.line	34
;----------------------------------------------------------------------
; 230 | } else if (device->mode == DEV_OUTPUT) {                               
;----------------------------------------------------------------------
           B       .S1     L27               ; |230| 
           NOP             5
           ; BRANCH OCCURS                   ; |230| 
;** --------------------------------------------------------------------------*
L24:    
           LDW     .D2T2   *+SP(4),B4        ; |230| 
           NOP             4
           LDW     .D2T2   *+B4(20),B4       ; |230| 
           NOP             4
           CMPEQ   .L2     B4,1,B0           ; |230| 
   [!B0]   B       .S1     L26               ; |230| 
           NOP             5
           ; BRANCH OCCURS                   ; |230| 
;** --------------------------------------------------------------------------*
	.line	35
;----------------------------------------------------------------------
; 231 | if (DSS_dacObj[chan] != NULL) {                                        
;----------------------------------------------------------------------
           LDW     .D2T2   *+SP(16),B5       ; |231| 
           MVK     .S2     (_DSS_dacObj-$bss),B4 ; |231| 
           ADD     .L2     DP,B4,B4          ; |231| 
           NOP             2
           LDW     .D2T2   *+B4[B5],B0       ; |231| 
           NOP             4
   [!B0]   B       .S1     L25               ; |231| 
           NOP             5
           ; BRANCH OCCURS                   ; |231| 
;** --------------------------------------------------------------------------*
	.line	36
;----------------------------------------------------------------------
; 232 | return SYS_EBUSY;                                                      
;----------------------------------------------------------------------
           B       .S1     L30               ; |232| 
           MVK     .S1     0x4,A4            ; |232| 
           NOP             4
           ; BRANCH OCCURS                   ; |232| 
;** --------------------------------------------------------------------------*
	.line	37
;----------------------------------------------------------------------
; 233 | } else {                                                               
;----------------------------------------------------------------------
;** --------------------------------------------------------------------------*
L25:    
	.line	38
;----------------------------------------------------------------------
; 234 | DSS_dacObj[chan] = device;                                             
;----------------------------------------------------------------------
           LDW     .D2T2   *+SP(16),B5       ; |234| 
           LDW     .D2T2   *+SP(4),B6        ; |234| 
           MVK     .S2     (_DSS_dacObj-$bss),B4 ; |234| 
           ADD     .L2     DP,B4,B4          ; |234| 
           NOP             2
           STW     .D2T2   B6,*+B4[B5]       ; |234| 
	.line	40
;----------------------------------------------------------------------
; 236 | } else {                                                               
;----------------------------------------------------------------------
           B       .S1     L27               ; |236| 
           NOP             5
           ; BRANCH OCCURS                   ; |236| 
;** --------------------------------------------------------------------------*
L26:    
	.line	42
;----------------------------------------------------------------------
; 238 | return SYS_EMODE;                                                      
;----------------------------------------------------------------------
           B       .S1     L30               ; |238| 
           MVK     .S1     0x7,A4            ; |238| 
           NOP             4
           ; BRANCH OCCURS                   ; |238| 
;** --------------------------------------------------------------------------*
L27:    
	.line	45
;----------------------------------------------------------------------
; 241 | objptr = MEM_alloc(IDRAM, sizeof(DSS_Obj), 0);                         
;----------------------------------------------------------------------
           B       .S1     _MEM_alloc        ; |241| 
           LDW     .D2T1   *+DP(_IDRAM),A4   ; |241| 
           MVKL    .S2     RL44,B3           ; |241| 
           MVK     .S2     0xc,B4            ; |241| 
           MVKH    .S2     RL44,B3           ; |241| 
           ZERO    .L1     A6                ; |241| 
RL44:      ; CALL OCCURS                     ; |241| 
           STW     .D2T1   A4,*+SP(12)       ; |241| 
	.line	47
;----------------------------------------------------------------------
; 243 | if (device->mode == DEV_INPUT) {                                       
;----------------------------------------------------------------------
           LDW     .D2T2   *+SP(4),B4        ; |243| 
           NOP             4
           LDW     .D2T2   *+B4(20),B0       ; |243| 
           NOP             4
   [ B0]   B       .S1     L28               ; |243| 
           NOP             5
           ; BRANCH OCCURS                   ; |243| 
;** --------------------------------------------------------------------------*
	.line	49
;----------------------------------------------------------------------
; 245 | objptr->sync = SEM_create(0, NULL);                                    
;----------------------------------------------------------------------
           B       .S1     _SEM_create       ; |245| 
           MVKL    .S2     RL46,B3           ; |245| 
           MVKH    .S2     RL46,B3           ; |245| 
           ZERO    .L2     B4                ; |245| 
           ZERO    .L1     A4                ; |245| 
           NOP             1
RL46:      ; CALL OCCURS                     ; |245| 
           LDW     .D2T2   *+SP(12),B4       ; |245| 
           NOP             4
           STW     .D2T1   A4,*B4            ; |245| 
	.line	50
;----------------------------------------------------------------------
; 246 | } else {                                                               
;----------------------------------------------------------------------
           B       .S1     L29               ; |246| 
           NOP             5
           ; BRANCH OCCURS                   ; |246| 
;** --------------------------------------------------------------------------*
L28:    
	.line	51
;----------------------------------------------------------------------
; 247 | objptr->sync = SEM_create(0, NULL); /* used to be set to device->nbufs
;     | */                                                                     
;----------------------------------------------------------------------
           B       .S1     _SEM_create       ; |247| 
           MVKL    .S2     RL48,B3           ; |247| 
           MVKH    .S2     RL48,B3           ; |247| 
           ZERO    .L2     B4                ; |247| 
           ZERO    .L1     A4                ; |247| 
           NOP             1
RL48:      ; CALL OCCURS                     ; |247| 
           LDW     .D2T2   *+SP(12),B4       ; |247| 
           NOP             4
           STW     .D2T1   A4,*B4            ; |247| 
;** --------------------------------------------------------------------------*
L29:    
	.line	53
;----------------------------------------------------------------------
; 249 | objptr->ready = NULL;                                                  
;----------------------------------------------------------------------
           LDW     .D2T2   *+SP(12),B5       ; |249| 
           ZERO    .L2     B4                ; |249| 
           NOP             3
           STW     .D2T2   B4,*+B5(4)        ; |249| 
	.line	54
;----------------------------------------------------------------

⌨️ 快捷键说明

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