summaryrefslogtreecommitdiffstats
path: root/private/ntos/nbt/vxd/wfwasm.asm
blob: 79b9cb8181895bcefdb28b5937df5cb643778078 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
;*****************************************************************;
;**            Copyright(c) Microsoft Corp., 1988-1993          **;
;*****************************************************************;
;:ts=8
        TITLE   WFWASM.ASM - WFW Specific vnbt routines
.XLIST
;***    VNBT -- NetBios over TCP/IP VxD
;
;
	.386p
        include vmm.inc
        include dosmgr.inc
        include netvxd.inc
        include vdhcp.inc
        include debug.inc
        include vtdi.inc

        include vnbtd.inc
        include vnetbios.inc
.LIST

IFNDEF CHICAGO

EXTRN   _GetDhcpOption:NEAR
EXTRN   NCB_Handler:NEAR

VxD_ICODE_SEG

public _NBTSectionName
_NBTSectionName db  'NBT',0     ; Section in system.ini parameters are stored
public _DNSSectionName
_DNSSectionName db  'DNS',0     ; DNS Section in system.ini

;****************************************************************************
;**     _GetProfileInt
;
;       Reads a parameter from our system.ini file (INIT TIME ONLY!)
;
;       Entry:  See ReadParamParams
;
;       Exit: Eax contains specified value or defaulted value
;

ReadParamParams struc
                dd      ? ; Return Address
                dd      ? ; Saved edi
                dd      ? ; Saved esi
                dd      ? ; ParametersHandle (unused)
ValueName       dd      ? ; Pointer to value name string
DefaultValue    dd      ? ; Value to use if not in .ini file
MinimumValue    dd      ? ; Specified value must be >= MinimumValue

ReadParamParams ends

BeginProc _GetProfileInt
    push    edi
    push    esi

    ;
    ;  Get the value from the system.ini file (if can't be found then eax
    ;  will contain the default value)
    ;
    mov     eax, [esp].DefaultValue
    mov     esi, OFFSET32 _NBTSectionName
    mov     edi, [esp].ValueName
    VMMCall Get_Profile_Decimal_Int

    jnc     GPI_Found

    push    eax                                 ; Default value
    push    edi                                 ; Value name
    call    _GetDhcpOption                      ; Returns DHCP value or default
    add     esp, 8

GPI_Found:
    ;
    ;  Does the value meet our standards?
    ;
    cmp     eax, [esp].MinimumValue             ; Unsigned comparison
    ja      RP10
    mov     eax, [esp].MinimumValue

RP10:
    pop     esi
    pop     edi
    ret
EndProc   _GetProfileInt

;****************************************************************************
;**     _GetProfileHex
;
;       Reads a hex parameter from our system.ini file (INIT TIME ONLY!)
;
;       Entry:  See ReadParamParams
;
;       Exit: Eax contains specified value or defaulted value
;

ReadParamParams struc
                dd      ? ; Return Address
                dd      ? ; Saved edi
                dd      ? ; Saved esi
                dd      ? ; ParametersHandle (unused)
ValueName       dd      ? ; Pointer to value name string
DefaultValue    dd      ? ; Value to use if not in .ini file
MinimumValue    dd      ? ; Specified value must be >= MinimumValue

ReadParamParams ends

BeginProc _GetProfileHex
    push    edi
    push    esi

    ;
    ;  Get the value from the system.ini file (if can't be found then eax
    ;  will contain the default value)
    ;
    mov     eax, [esp].DefaultValue
    mov     esi, OFFSET32 _NBTSectionName
    mov     edi, [esp].ValueName
    VMMCall Get_Profile_Hex_Int

    jnc     GPH_Found

    push    eax                                 ; Default value
    push    edi                                 ; Value name
    call    _GetDhcpOption                      ; Returns DHCP value or default
    add     esp, 8

GPH_Found:
    ;
    ;  Does the value meet our standards?
    ;
    cmp     eax, [esp].MinimumValue             ; Unsigned comparison
    ja      RHP10
    mov     eax, [esp].MinimumValue

RHP10:
    pop     esi
    pop     edi
    ret
EndProc   _GetProfileHex


;****************************************************************************
;**     _GetProfileString
;
;       Reads a string from our system.ini file (INIT TIME ONLY!)
;
;       Entry:  See GetProfileStrParams structure
;
;       Exit: Eax contains the found value or NULL if not found
;
;       History:
;          30-May-94  Koti
;                       this function modified to accept name of the section
;                       to look at as a parameter.  Getting DNS server ipaddrs
;                       from the DNS section in system.ini demanded this change
;

GetProfileStrParams struc
                 dd      ? ; Return Address
                 dd      ? ; saved edx
                 dd      ? ; Saved edi
                 dd      ? ; Saved esi
gps_ValueName    dd      ? ; Pointer to value name string
gps_DefaultValue dd      ? ; Value to use if not in .ini file
gps_SectionName  dd      ? ; Name of the section to look at (almost always NBT)
GetProfileStrParams ends

BeginProc _GetProfileString
    push    edx
    push    edi
    push    esi

    ;
    ;  Get the value from the system.ini file (if can't be found then eax
    ;  will contain the default value)
    ;
    mov     edx, [esp].gps_DefaultValue
    mov     esi, [esp].gps_SectionName
    mov     edi, [esp].gps_ValueName
    VMMCall Get_Profile_String

    jc      GetProf10
    mov     eax, edx                    ; Success
    jmp     short GetProf20

GetProf10:
    mov     eax, 0                      ; Couldn't find the string

GetProf20:

    pop     esi
    pop     edi
    pop     edx
    ret
EndProc   _GetProfileString

;****************************************************************************
;**     _RegisterLana
;
;       Registers the requested lana with the VNetbios driver.
;
;       Entry:  [ESP+4] - Lana number to register
;
;       Exit: EAX will be TRUE if successful, FALSE if not
;
;       Uses:
;
BeginProc _RegisterLana

        mov     eax, [esp+4]            ; Get the request lana to register

        push    ebx
        push    edx

        mov     ebx, 1                  ; Take over RM lana
        mov     edx, NCB_Handler
        VxDcall VNETBIOS_Register       ; Carry set on failure
        jnc     RegLana10
        mov     eax, 0                  ; Failed
        jmp     short RegLana20

RegLana10:
        mov     eax, 1                  ; Success

RegLana20:
        pop     edx
        pop     ebx
        ret

EndProc _RegisterLana

;****************************************************************************
;**     _DhcpSetInfo - Sets DHCP information
;
;       Stub callout to the Dhcp driver
;
;       Entry:  [ESP+4] - Info type
;               [ESP+8] - IP Address of interest
;               [ESP+12]- Pointer to buffer
;               [ESP+16]- Pointer to buffer size
;
;       INIT TIME ONLY!
;

BeginProc _DhcpSetInfo

        VxdCall VDHCP_Get_Version
        jnc     DSI_Installed

        mov     eax, 26             ; DHCP not installed, return invalid param
        ret

DSI_Installed:
        push    ebp
        mov     ebp,esp

        mov     eax, [ebp+20]       ; Buff size
        push    eax
        mov     eax, [ebp+16]       ; Buff
        push    eax
        mov     eax, [ebp+12]       ; IP Address
        push    eax
        mov     eax, [ebp+8]        ; Info type
        push    eax

        VxdCall VDHCP_Set_Info

        add     esp, 16

        pop     ebp
        ret

EndProc _DhcpSetInfo

VxD_ICODE_ENDS

ENDIF ;!CHICAGO

END