aboutsummaryrefslogtreecommitdiff
path: root/msdos/ndis_0.asm
diff options
context:
space:
mode:
Diffstat (limited to 'msdos/ndis_0.asm')
-rw-r--r--msdos/ndis_0.asm376
1 files changed, 188 insertions, 188 deletions
diff --git a/msdos/ndis_0.asm b/msdos/ndis_0.asm
index 2990985fee30..ea65e0f8e15e 100644
--- a/msdos/ndis_0.asm
+++ b/msdos/ndis_0.asm
@@ -1,188 +1,188 @@
-PAGE 60,132
-NAME NDIS_0
-
-ifdef DOSX
- .386
- _TEXT SEGMENT PUBLIC DWORD USE16 'CODE'
- _TEXT ENDS
- _DATA SEGMENT PUBLIC DWORD USE16 'CODE'
- _DATA ENDS
- _TEXT32 SEGMENT PUBLIC BYTE USE32 'CODE'
- _TEXT32 ENDS
- CB_DSEG EQU <CS> ; DOSX is tiny-model
- D_SEG EQU <_TEXT SEGMENT>
- D_END EQU <_TEXT ENDS>
- ASSUME CS:_TEXT,DS:_TEXT
-
- PUSHREGS equ <pushad>
- POPREGS equ <popad>
-
- PUBPROC macro name
- align 4
- public @&name
- @&name label near
- endm
-else
- .286
- _TEXT SEGMENT PUBLIC DWORD 'CODE'
- _TEXT ENDS
- _DATA SEGMENT PUBLIC DWORD 'DATA'
- _DATA ENDS
- CB_DSEG EQU <SEG _DATA> ; 16bit is small/large model
- D_SEG EQU <_DATA SEGMENT>
- D_END EQU <_DATA ENDS>
- ASSUME CS:_TEXT,DS:_DATA
-
- PUSHREGS equ <pusha>
- POPREGS equ <popa>
-
- PUBPROC macro name
- public _&name
- _&name label far
- endm
-endif
-
-;-------------------------------------------
-
-D_SEG
-
-D_END
-
-
-_TEXT SEGMENT
-
-EXTRN _NdisSystemRequest : near
-EXTRN _NdisRequestConfirm : near
-EXTRN _NdisTransmitConfirm : near
-EXTRN _NdisReceiveLookahead : near
-EXTRN _NdisIndicationComplete : near
-EXTRN _NdisReceiveChain : near
-EXTRN _NdisStatusProc : near
-EXTRN _NdisAllocStack : near
-EXTRN _NdisFreeStack : near
-
-;
-; *ALL* interrupt threads come through this macro.
-;
-CALLBACK macro callbackProc, argsSize
-
- pushf
- PUSHREGS ;; Save the registers
-
- push es
- push ds
- mov ax,CB_DSEG ;; Load DS
- mov ds,ax
- call _NdisAllocStack ;; Get and install a stack.
-
- mov bx,ss ;; Save off the old stack in other regs
- mov cx,sp
- mov ss,dx ;; Install the new one
- mov sp,ax
- push bx ;; Save the old one on to the new stack
- push cx
- sub sp,&argsSize ;; Allocate space for arguments on the stack
-
- mov ax,ss ;; Set up the destination for the move
- mov es,ax
- mov di,sp
- mov ds,bx ;; Set up the source for the move.
- mov si,cx
- add si,4+6+32
-
- mov cx,&argsSize ;; Move the arguments to the stack.
- shr cx,1
- cld
- rep movsw
-
- mov ax,CB_DSEG ;; Set my data segment again.
- mov ds,ax
-
- call &callbackProc ;; Call the real callback.
- pop di ;; Pop off the old stack
- pop si
- mov bx,ss ;; Save off the current allocated stack.
- mov cx,sp
- mov ss,si ;; Restore the old stack
- mov sp,di
- push ax ;; Save the return code
- push bx ;; Free the stack. Push the pointer to it
- push cx
- call _NdisFreeStack
- add sp,4
- pop ax ;; Get the return code back
- add di,32 ;; Get a pointer to ax on the stack
- mov word ptr ss:[di],ax
- pop ds
- pop es
-
- POPREGS
- popf
-endm
-
-;
-; Define all of the callbacks for the NDIS procs.
-;
-
-PUBPROC systemRequestGlue
-CALLBACK _NdisSystemRequest,14
-RETF
-
-PUBPROC requestConfirmGlue
-CALLBACK _NdisRequestConfirm,12
-RETF
-
-PUBPROC transmitConfirmGlue
-CALLBACK _NdisTransmitConfirm,10
-RETF
-
-PUBPROC receiveLookaheadGlue
-CALLBACK _NdisReceiveLookahead,16
-RETF
-
-PUBPROC indicationCompleteGlue
-CALLBACK _NdisIndicationComplete,4
-RETF
-
-PUBPROC receiveChainGlue
-CALLBACK _NdisReceiveChain,16
-RETF
-
-PUBPROC statusGlue
-CALLBACK _NdisStatusProc,12
-RETF
-
-;
-; int FAR NdisGetLinkage (int handle, char *data, int size);
-;
-
-ifdef DOSX
- PUBPROC NdisGetLinkage
- push ebx
- mov ebx, [esp+8] ; device handle
- mov eax, 4402h ; IOCTRL read function
- mov edx, [esp+12] ; DS:EDX -> result data
- mov ecx, [esp+16] ; ECX = length
- int 21h
- pop ebx
- jc @fail
- xor eax, eax
- @fail: ret
-
-else
- PUBPROC NdisGetLinkage
- enter 0, 0
- mov bx, [bp+6]
- mov ax, 4402h
- mov dx, [bp+8]
- mov cx, [bp+12]
- int 21h
- jc @fail
- xor ax, ax
- @fail: leave
- retf
-endif
-
-ENDS
-
-END
+PAGE 60,132
+NAME NDIS_0
+
+ifdef DOSX
+ .386
+ _TEXT SEGMENT PUBLIC DWORD USE16 'CODE'
+ _TEXT ENDS
+ _DATA SEGMENT PUBLIC DWORD USE16 'CODE'
+ _DATA ENDS
+ _TEXT32 SEGMENT PUBLIC BYTE USE32 'CODE'
+ _TEXT32 ENDS
+ CB_DSEG EQU <CS> ; DOSX is tiny-model
+ D_SEG EQU <_TEXT SEGMENT>
+ D_END EQU <_TEXT ENDS>
+ ASSUME CS:_TEXT,DS:_TEXT
+
+ PUSHREGS equ <pushad>
+ POPREGS equ <popad>
+
+ PUBPROC macro name
+ align 4
+ public @&name
+ @&name label near
+ endm
+else
+ .286
+ _TEXT SEGMENT PUBLIC DWORD 'CODE'
+ _TEXT ENDS
+ _DATA SEGMENT PUBLIC DWORD 'DATA'
+ _DATA ENDS
+ CB_DSEG EQU <SEG _DATA> ; 16bit is small/large model
+ D_SEG EQU <_DATA SEGMENT>
+ D_END EQU <_DATA ENDS>
+ ASSUME CS:_TEXT,DS:_DATA
+
+ PUSHREGS equ <pusha>
+ POPREGS equ <popa>
+
+ PUBPROC macro name
+ public _&name
+ _&name label far
+ endm
+endif
+
+;-------------------------------------------
+
+D_SEG
+
+D_END
+
+
+_TEXT SEGMENT
+
+EXTRN _NdisSystemRequest : near
+EXTRN _NdisRequestConfirm : near
+EXTRN _NdisTransmitConfirm : near
+EXTRN _NdisReceiveLookahead : near
+EXTRN _NdisIndicationComplete : near
+EXTRN _NdisReceiveChain : near
+EXTRN _NdisStatusProc : near
+EXTRN _NdisAllocStack : near
+EXTRN _NdisFreeStack : near
+
+;
+; *ALL* interrupt threads come through this macro.
+;
+CALLBACK macro callbackProc, argsSize
+
+ pushf
+ PUSHREGS ;; Save the registers
+
+ push es
+ push ds
+ mov ax,CB_DSEG ;; Load DS
+ mov ds,ax
+ call _NdisAllocStack ;; Get and install a stack.
+
+ mov bx,ss ;; Save off the old stack in other regs
+ mov cx,sp
+ mov ss,dx ;; Install the new one
+ mov sp,ax
+ push bx ;; Save the old one on to the new stack
+ push cx
+ sub sp,&argsSize ;; Allocate space for arguments on the stack
+
+ mov ax,ss ;; Set up the destination for the move
+ mov es,ax
+ mov di,sp
+ mov ds,bx ;; Set up the source for the move.
+ mov si,cx
+ add si,4+6+32
+
+ mov cx,&argsSize ;; Move the arguments to the stack.
+ shr cx,1
+ cld
+ rep movsw
+
+ mov ax,CB_DSEG ;; Set my data segment again.
+ mov ds,ax
+
+ call &callbackProc ;; Call the real callback.
+ pop di ;; Pop off the old stack
+ pop si
+ mov bx,ss ;; Save off the current allocated stack.
+ mov cx,sp
+ mov ss,si ;; Restore the old stack
+ mov sp,di
+ push ax ;; Save the return code
+ push bx ;; Free the stack. Push the pointer to it
+ push cx
+ call _NdisFreeStack
+ add sp,4
+ pop ax ;; Get the return code back
+ add di,32 ;; Get a pointer to ax on the stack
+ mov word ptr ss:[di],ax
+ pop ds
+ pop es
+
+ POPREGS
+ popf
+endm
+
+;
+; Define all of the callbacks for the NDIS procs.
+;
+
+PUBPROC systemRequestGlue
+CALLBACK _NdisSystemRequest,14
+RETF
+
+PUBPROC requestConfirmGlue
+CALLBACK _NdisRequestConfirm,12
+RETF
+
+PUBPROC transmitConfirmGlue
+CALLBACK _NdisTransmitConfirm,10
+RETF
+
+PUBPROC receiveLookaheadGlue
+CALLBACK _NdisReceiveLookahead,16
+RETF
+
+PUBPROC indicationCompleteGlue
+CALLBACK _NdisIndicationComplete,4
+RETF
+
+PUBPROC receiveChainGlue
+CALLBACK _NdisReceiveChain,16
+RETF
+
+PUBPROC statusGlue
+CALLBACK _NdisStatusProc,12
+RETF
+
+;
+; int FAR NdisGetLinkage (int handle, char *data, int size);
+;
+
+ifdef DOSX
+ PUBPROC NdisGetLinkage
+ push ebx
+ mov ebx, [esp+8] ; device handle
+ mov eax, 4402h ; IOCTRL read function
+ mov edx, [esp+12] ; DS:EDX -> result data
+ mov ecx, [esp+16] ; ECX = length
+ int 21h
+ pop ebx
+ jc @fail
+ xor eax, eax
+ @fail: ret
+
+else
+ PUBPROC NdisGetLinkage
+ enter 0, 0
+ mov bx, [bp+6]
+ mov ax, 4402h
+ mov dx, [bp+8]
+ mov cx, [bp+12]
+ int 21h
+ jc @fail
+ xor ax, ax
+ @fail: leave
+ retf
+endif
+
+ENDS
+
+END