Category : C Source Code
Archive   : VAP.ZIP
Filename : VSETUP.ASM

 
Output of file : VSETUP.ASM contained in archive : VAP.ZIP
;*****************************************************************************
;*
;* Program Name: VAP_Setup_Module
;*
;* Filename: vsetup.asm
;*
;* Version: 1.0
;*
;* Programmers: Bryan Sparks
;*
;* Comments: This is the startup and setup code for VAPs.
;*
;*****************************************************************************
name VAPSetUpAndStartModule

DGROUP GROUP _DATA

PGROUP GROUP _TEXT
assume cs:PGROUP

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; TEXT definitions
;; Define header, ESR routines, Handler routines,
;; and ProcessStart procedures
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
_TEXT segment public 'CODE'
;VAP definitions
public NetWareShellServices, ProcessControlServices
public ConsoleControlServices, IPXSPXServices

;IPX/SPX Definitions
public _ReceiveESRHandler, _SendESRHandler

;SAP Definitions
public _SAPWaitESRHandler, _SAPAdvertiseESRHandler

;Handler front-ends
extrn _ConsoleHandler: near, _DownHandler: near

;IPX/SPX ESR Externals
;;;; extrn _ReceiveESR: near, _SendESR: near
extrn _SAPWaitESR: near, _SAPAdvertiseESR: near


;VAP Header
Signature db 'NWProc'
NetWareShellServices dd ?
ProcessControlServices dd ?
ConsoleControlServices dd ?
IPXSPXServices dd ?
VAPConsoleHandler dd ConsoleHandlerCALL
VAPDownHandler dd DownHandlerCALL
VAPConsoleOrDownDataSegment dw DGroup
VAPConnectionRequestFlag dw 1 ;No connection
VAPNameString db 'Name String', 64-($-VAPNameString) dup(0)
VAPConsoleKeyWordCount dw 2
VAPKeyword1 db 'FIRST', 16-($-VAPKeyword1) dup(0)
VAPKeyword2 db 'SECOND', 16-($-VAPKeyword2) dup(0)
VAPSignOnMessage db 'Sign-on message.', 0
db 500-($-VAPSignOnMessage) dup(0)


VAPStart proc near
mov ax, DGroup
mov di, 1 ;change segment to data (read/write)
call dword ptr cs:ProcessControlServices
cli
mov ax, DGroup
mov ds, ax
mov es, ax
mov ss, ax
mov ax, OFFSET DGroup:MainStackEnd
mov sp, ax
sti
call _MAIN
VAPStart endp

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Spawned Process front-ends
;; These set the process up by assigning the segment registers
;; and assigning a stack to the process.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; The following lines will change as YOUR VAP dictates.
;; You will need to have you own names, etc.
;;
;; Note that you will also need to change the KEYWORDs and the
;; Stack names at the bottom of this file.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;Process definitions
public _FirstProcessStart
public _SecondProcessStart

extrn _Main: near
extrn _FirstProcess: near
extrn _SecondProcess: near

_FirstProcessStart proc near
cli
mov ax, DGroup
mov ds, ax
mov es, ax
mov ss, ax
mov ax, OFFSET DGroup:FirstStackEnd
mov sp, ax
sti
call _FirstProcess
_FirstProcessStart endp

_SecondProcessStart proc near
cli
mov ax, DGroup
mov ds, ax
mov es, ax
mov ss, ax
mov ax, OFFSET DGroup:SecondStackEnd
mov sp, ax
sti
call _SecondProcess
_SecondProcessStart endp

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Handler front-ends
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
assume ds: DGroup

ConsoleHandlerCALL proc far
mov _Keyword, ax
call _ConsoleHandler
ret
ConsoleHandlerCALL endp


DownHandlerCALL proc far
call _DownHandler
ret
DownHandlerCALL endp


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Event Service Routine front-ends
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
_ReceiveESRHandler proc far
mov ax, DGroup
mov ds, ax
push es
push si
;;; call _ReceiveESR
add sp, 4
ret
_ReceiveESRHandler endp

_SendESRHandler proc far
mov ax, DGroup
mov ds, ax
push es
push si
;;; call _SendESR
add sp, 4
ret
_SendESRHandler endp

_SAPWaitESRHandler proc far
mov ax, DGroup
mov ds, ax
push es
push si
call _SAPWaitESR
add sp, 4
ret
_SAPWaitESRHandler endp

_SAPAdvertiseESRHandler proc far
mov ax, DGroup
mov ds, ax
push es
push si
call _SAPAdvertiseESR
add sp, 4
ret
_SAPAdvertiseESRHandler endp

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Misc Procedures
;; MSC stack check fake-out
;; IPX Functions
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
public __CHKSTK
public _IPXOpenSocket
public _IPXCloseSocket
public _IPXGetInternetworkAddress
public _IPXSendPacket
public _IPXListenForPacket
public _IPXScheduleIPXEvent
public _IPXCancelEvent
public _IPXGetLocalTarget
public _IPXRelinquishControl
public _IntSwap

__CHKSTK proc near
pop cx ; get return offset
sub sp,ax ; allocate stack space
jmp cx ; return to cx
__CHKSTK endp

;Parameters:
; On Entry: Pointer to socket to open
; Socket Longevity
; On Exit: Error codes in AX
_IPXOpenSocket proc near
push bp
mov bp, sp

mov bx, [bp+4]
mov dx, [bx]
mov ax, [bp+6]

call dword ptr cs: IPXSPXServices

pop bp
ret
_IPXOpenSocket endp

;Parameters:
; On Entry: Socket Number
; On Exit: nothing
_IPXCloseSocket proc near
push bp
mov bp, sp

mov dx, [bp+4]

call dword ptr cs: IPXSPXServices

pop bp
ret
_IPXCloseSocket endp



;Parameters:
; On Entry: 10 byte buffer
; On Exit: 10 byte buffer will contain address
_IPXGetInternetworkAddress proc near
push bp
mov bp,sp

mov ax, DGroup
mov es, ax
mov bx, [bp+4]
mov si, bx
mov bx, 09h
call dword ptr cs: IPXSPXServices
push ds
pop es

pop bp
ret
_IPXGetInternetworkAddress endp


;Parameters
; On Entry: Pointer to ECB
_IPXSendPacket proc near
push bp
mov bp, sp

mov ax, DGroup
mov es, ax
mov bx, [bp+4]
mov si, bx
mov bx, 03h

call dword ptr cs: IPXSPXServices

push ds
pop es

pop bp
ret
_IPXSendPacket endp

;Parameters
; On Entry: Pointer to ECB
_IPXListenForPacket proc near
push bp
mov bp, sp

mov ax, DGroup
mov es, ax
mov bx, [bp+4]
mov si, bx
mov bx, 04h
call dword ptr cs: IPXSPXServices
push ds
pop es

pop bp
ret
_IPXListenForPacket endp

_IPXScheduleIPXEvent proc near
push bp
mov bp, sp

mov ax, DGroup
mov es, ax
mov bx, [bp+6]
mov si, bx
mov ax, [bp+4]
mov bx, 05h

call dword ptr cs: IPXSPXServices

push ds
pop es

pop bp
ret
_IPXScheduleIPXEvent endp


;Parameters
; On Entry: Pointer to ECB
_IPXCancelEvent proc near
push bp
mov bp, sp

mov ax, DGroup
mov es, ax
mov bx, [bp+4]
mov si, bx
mov bx, 06h

call dword ptr cs: IPXSPXServices

push ds
pop es

pop bp
ret
_IPXCancelEvent endp

;Parameters:
; On Entry: Pointer to 12 byte address
; Pointer to 6 byte empty buffer
_IPXGetLocalTarget proc near
push bp
mov bp,sp

mov ax, DGroup
mov es, ax
mov bx, [bp+4]
mov si, bx
mov bx, [bp+6]
mov di, bx
mov bx, 02h

call dword ptr cs: IPXSPXServices

push ds
pop es

pop bp
ret
_IPXGetLocalTarget endp

;Parameters:
; On Entry: nothing
; On Exit: nothing
_IPXRelinquishControl proc near
mov bx, 0Ah
call dword ptr cs: IPXSPXServices
ret
_IPXRelinquishControl endp


;Parameters:
; On Entry: Parameter to swap
; On Exit: Returns swapped integer in AX
_IntSwap proc near
push bp
mov bp, sp
mov ax, [bp+4]
xchg ah, al
pop bp
ret
_IntSwap endp

_TEXT ends


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Data definitions
;; Define all stacks for all processes and also define keyword variable
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
_DATA SEGMENT word public 'DATA'
assume ds:DGROUP

;Stacks
dw 2000 dup (0)
MainStackEnd label word

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Here are the stacks appropiate for each process.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
dw 2000 dup (0)
FirstStackEnd label word
dw 2000 dup (0)
SecondStackEnd label word


;Keyword that will be used in C program
public _Keyword

_Keyword dw 0


_DATA ENDS

end VAPStart


  3 Responses to “Category : C Source Code
Archive   : VAP.ZIP
Filename : VSETUP.ASM

  1. Very nice! Thank you for this wonderful archive. I wonder why I found it only now. Long live the BBS file archives!

  2. This is so awesome! 😀 I’d be cool if you could download an entire archive of this at once, though.

  3. But one thing that puzzles me is the “mtswslnkmcjklsdlsbdmMICROSOFT” string. There is an article about it here. It is definitely worth a read: http://www.os2museum.com/wp/mtswslnk/