Remove the 2026 Mario Fetka copyright line from ipx.asm. The file contains the split-out IPX and xmemmove assembly glue from the original Martin Stover kern.asm code, without new authorship-bearing changes. No behavior change.
210 lines
4.4 KiB
NASM
210 lines
4.4 KiB
NASM
;
|
|
; mars-nwe-dosutils - NetWare/DOS utility tools.
|
|
;
|
|
; Copyright (C) 1993,1996 Martin Stover, Marburg, Germany
|
|
;
|
|
; This program is free software; you can redistribute it and/or
|
|
; modify it under the terms of the GNU General Public License
|
|
; as published by the Free Software Foundation; either version 2
|
|
; of the License, or (at your option) any later version.
|
|
;
|
|
; This program is distributed in the hope that it will be useful,
|
|
; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
; GNU General Public License for more details.
|
|
;
|
|
; You should have received a copy of the GNU General Public License
|
|
; along with this program; if not, see <http://www.gnu.org/licenses/>.
|
|
|
|
; Purpose: Open Watcom WASM/MASM-syntax IPX and far-memory helper glue.
|
|
; Depends on: ipx.h declarations, netcall.c callers and net.h shared types.
|
|
;
|
|
|
|
|
|
|
|
; ipx.asm
|
|
;
|
|
; Open Watcom WASM/MASM-syntax port of the IPX and xmemmove parts of
|
|
; the old TASM IDEAL kern.asm.
|
|
; Intended for 16-bit DOS large memory model builds on Linux with Open Watcom v2.
|
|
;
|
|
; Keep doc/kern.asm as the historical TASM source and use this split file for
|
|
; the reproducible Open Watcom build.
|
|
|
|
.286
|
|
.model large
|
|
|
|
.data
|
|
enterIPX dd 0
|
|
|
|
.code
|
|
|
|
public _IPXinit
|
|
public _IPXopen_socket
|
|
public _IPXclose_socket
|
|
public _IPXlisten
|
|
public _xmemmove
|
|
_IPXinit proc far
|
|
push bp
|
|
mov bp, sp
|
|
push ds
|
|
push si
|
|
push di
|
|
|
|
mov ax, 7A00h
|
|
int 2Fh
|
|
cmp al, 0FFh
|
|
jne ipxinit_done
|
|
|
|
mov cx, @data
|
|
mov ds, cx
|
|
mov word ptr enterIPX, di
|
|
mov ax, es
|
|
mov word ptr enterIPX+2, ax
|
|
mov al, 1
|
|
|
|
ipxinit_done:
|
|
mov ah, 0
|
|
|
|
pop di
|
|
pop si
|
|
pop ds
|
|
pop bp
|
|
ret
|
|
_IPXinit endp
|
|
|
|
_xmemmove proc far
|
|
push bp
|
|
mov bp, sp
|
|
|
|
; far procedure stack layout, large model:
|
|
; [bp+0] old bp
|
|
; [bp+2] return offset
|
|
; [bp+4] return segment
|
|
; [bp+6] z offset
|
|
; [bp+8] z segment
|
|
; [bp+10] q offset
|
|
; [bp+12] q segment
|
|
; [bp+14] nmbr
|
|
|
|
cli
|
|
mov cx, [bp+14]
|
|
or cx, cx
|
|
jz xmem_done
|
|
|
|
push ds
|
|
push si
|
|
push di
|
|
pushf
|
|
|
|
lds si, dword ptr [bp+10]
|
|
les di, dword ptr [bp+6]
|
|
cmp di, si
|
|
jl xmem_forward
|
|
|
|
std
|
|
dec cx
|
|
add di, cx
|
|
add si, cx
|
|
inc cx
|
|
jmp xmem_copy
|
|
|
|
xmem_forward:
|
|
cld
|
|
|
|
xmem_copy:
|
|
rep movsb
|
|
|
|
popf
|
|
pop di
|
|
pop si
|
|
pop ds
|
|
|
|
xmem_done:
|
|
pop bp
|
|
sti
|
|
ret
|
|
_xmemmove endp
|
|
|
|
_IPXopen_socket proc far
|
|
push bp
|
|
mov bp, sp
|
|
push ds
|
|
push si
|
|
push di
|
|
|
|
; int IPXopen_socket(UI sock, int live)
|
|
mov ax, [bp+8] ; live
|
|
mov dx, [bp+6] ; sock
|
|
mov bx, @data
|
|
mov ds, bx
|
|
mov bx, 0
|
|
call dword ptr enterIPX
|
|
|
|
cmp al, 0FFh
|
|
jne ipxopen_not_already
|
|
mov ax, -1 ; socket already open
|
|
jmp ipxopen_done
|
|
|
|
ipxopen_not_already:
|
|
cmp al, 0FEh
|
|
jne ipxopen_ok
|
|
mov ax, -2 ; socket table full
|
|
jmp ipxopen_done
|
|
|
|
ipxopen_ok:
|
|
mov ax, dx
|
|
|
|
ipxopen_done:
|
|
pop di
|
|
pop si
|
|
pop ds
|
|
pop bp
|
|
ret
|
|
_IPXopen_socket endp
|
|
|
|
_IPXclose_socket proc far
|
|
push bp
|
|
mov bp, sp
|
|
push ds
|
|
push si
|
|
push di
|
|
|
|
; void IPXclose_socket(UI sock)
|
|
mov dx, [bp+6]
|
|
mov bx, @data
|
|
mov ds, bx
|
|
mov bx, 1
|
|
call dword ptr enterIPX
|
|
|
|
pop di
|
|
pop si
|
|
pop ds
|
|
pop bp
|
|
ret
|
|
_IPXclose_socket endp
|
|
|
|
_IPXlisten proc far
|
|
push bp
|
|
mov bp, sp
|
|
push ds
|
|
push si
|
|
push di
|
|
|
|
; int IPXlisten(ECB *ecb)
|
|
les si, dword ptr [bp+6]
|
|
mov bx, @data
|
|
mov ds, bx
|
|
mov bx, 4
|
|
call dword ptr enterIPX
|
|
|
|
pop di
|
|
pop si
|
|
pop ds
|
|
pop bp
|
|
mov ah, 0
|
|
ret
|
|
_IPXlisten endp
|
|
|
|
end
|