]> pd.if.org Git - mmurtl/blob - ossource/initcode.asm
autocommit for file dated 2003-12-29 17:36:54
[mmurtl] / ossource / initcode.asm
1 ;   MMURTL Operating System Source Code\r
2 ;   Copyright 1991,1992,1993,1994 Richard A. Burgess\r
3 ;   ALL RIGHTS RESERVED    Version 1.0\r
4 \r
5 .DATA\r
6 .INCLUDE MOSEDF.INC\r
7 .INCLUDE TSS.INC\r
8 \r
9 \r
10 .CODE\r
11 \r
12 \r
13 EXTRN IntQ NEAR\r
14 EXTRN IntDivBy0 NEAR\r
15 EXTRN IntDbgSS  NEAR\r
16 EXTRN IntDebug  NEAR\r
17 EXTRN IntOverFlow NEAR\r
18 EXTRN INTOpCode   NEAR\r
19 EXTRN IntDblExc   NEAR\r
20 EXTRN INTInvTss   NEAR\r
21 EXTRN INTNoSeg    NEAR\r
22 EXTRN INTStkOvr   NEAR\r
23 EXTRN IntGP       NEAR\r
24 EXTRN INTPgFlt    NEAR\r
25 EXTRN IntPICU2    NEAR\r
26 EXTRN IntTimer    NEAR\r
27 EXTRN IntKeyBrd   NEAR\r
28 \r
29 ;=============================================================================\r
30 ;The following code     initializes structures just after bootup\r
31 ;=============================================================================\r
32 ;\r
33 ; INPUT : ECX,EDX\r
34 ; OUTPUT : NONE\r
35 ; REGISTERS : EAX,EBX,ECX,FLAGS\r
36 ; MODIFIES : pFreeLB,rgLBs\r
37 ;\r
38 ; This routine will initialize a free pool of link blocks.\r
39 ; The data used in this algorithm are an array of ECX link blocks (rgLBs),\r
40 ; each EDX bytes long and pointer to a list of free link blocks (pFreeLB).\r
41 ;\r
42 ; The pFreeLB pointer is set to address the first element in rgLBs. Each\r
43 ; element of rgLBs is set to point to the next element of rgLBs. The\r
44 ; last element of rgLBs is set to point to nothing (NIL).\r
45 ;\r
46 PUBLIC InitFreeLB:\r
47                 LEA EAX,rgLBs           ; pFreeLB <= ^rgLBs;\r
48                 MOV pFreeLB,EAX         ;\r
49 LB_Loop:\r
50                 MOV EBX,EAX                             ; for I = 0 TO ECX\r
51                 ADD EAX,EDX                             ;  rgLBs[I].Next <=\r
52                 MOV [EBX+NextLB],EAX                    ;    ^rgLBs[I+1];\r
53                 LOOP LB_Loop                            ;\r
54                 MOV DWORD PTR [EBX+NextLB], 0   ; rgFree[1023].Next <= NIL;\r
55                 RETN                                    ;\r
56 ;=============================================================================\r
57 ; AddTSSDesc\r
58 ; Builds a descriptor for a task and places it in the GDT.  If you\r
59 ; check the intel documentation the bits of data that hold this\r
60 ; information are scattered through the descriptor entry, so\r
61 ; we have to do some shifting, moving, anding and oring to get\r
62 ; the descriptor the way the processor expects it.  See the Intel\r
63 ; docs for a complete description of the placement of the bits.\r
64 ;\r
65 ; Note: The granularity bit represents the TSS itself, not the code\r
66 ; that will run under it!\r
67 ;\r
68 ;\r
69 ; IN:\r
70 ;       EAX - Size of TSS\r
71 ;       EBX - Decriptor type (default for OS TSS is 0089h)\r
72 ;               (0089h - G(0),AV(0),LIM(0000),P(1),DPL(00),(010),B(0),(1))\r
73 ;       EDX - Address of TSS\r
74 ;       EDI - Address of Desc in GDT\r
75 ; OUT:\r
76 ;       GDT is updated with descriptor\r
77 ; USED:\r
78 ;       EFlags  (all other registers are saved)\r
79 \r
80 PUBLIC AddTSSDesc:\r
81                 ;The following code section builds a descriptor entry for\r
82                 ;the TSS and places it into the GDT\r
83                 PUSH EAX\r
84                 PUSH EBX\r
85                 PUSH EDX\r
86                 PUSH EDI\r
87                 DEC EAX                 ; (Limit is size of TSS-1)\r
88             SHL EBX,16              ; Chinese puzzle rotate\r
89                 ROL EDX,16              ; Exchange hi & lo words of Base Addr\r
90                 MOV BL,DH               ; Base 31 .. 24\r
91                 MOV BH,DL               ; Base 23 .. 16\r
92                 ROR EBX,8               ; Rotate to Final Alignment\r
93                 MOV DX,AX               ; Limit 15 .. 0 with Base 15 .. 0\r
94                 AND EAX,000F0000h       ; Mask Limit 19 .. 16\r
95                 OR EBX,EAX              ; OR into high order word\r
96                 MOV [EDI],EDX           ; Store lo double word\r
97                 MOV [EDI+4],EBX         ; Store hi double word\r
98                 POP EDI\r
99                 POP EDX\r
100                 POP EBX\r
101                 POP EAX\r
102                 RETN\r
103 \r
104 ;=============================================================================\r
105 ; InitFreeTSS\r
106 ; INPUT :  EAX, ECX\r
107 ; OUTPUT : NONE\r
108 ; USED :   ALL General registers, FLAGS\r
109 ; MODIFIES : pFreeTSS (and the dynamic array of TSSs)\r
110 ;\r
111 ; This routine initializes the free pool of Task State Segments.\r
112 ; On entry:\r
113 ;       EAX points to the TSSs to initialize (allocated memory).\r
114 ;   ECX has the count of TSSs to initialize.\r
115 ;   The size of the TSS is taken from the constant sTSS.\r
116 ;\r
117 ; The pFreeTSS pointer is set to address the first TSS. The NextTSS\r
118 ; field in each TSS is set to point to the next free TSS. The\r
119 ; last TSS is set to point to nothing (NIL). The IOBitBase field is\r
120 ; also set to FFFFh for NULL I/O permissions in each TSS.\r
121 ; NOTE: The allocated memory area for the TSS MUST BE ZEROED before\r
122 ; calling this routine.  By deafult, we add the TSS descriptors at OS\r
123 ; protection level. If we spawn or add a User level TSS we must\r
124 ; OR the DPL bits with 3!\r
125 \r
126 PUBLIC InitFreeTSS:\r
127                 MOV pFreeTSS,EAX                ; First one free to use\r
128                 MOV EDI, OFFSET rgTSSDesc       ; ptr to TSS descriptors\r
129                 ADD EDI, 16                                     ; First two TSSs are Static (Mon & Dbgr)\r
130                 MOV EDX, sTSS                           ; Size of TSS (in bytes) into EDX\r
131                 MOV EBX, 3                                      ; Number of first dynamic TSS\r
132 TSS_Loop:\r
133                 MOV ESI,EAX                             ; for I = 0 TO ECX\r
134                 ADD EAX,EDX                             ;   EAX <= rgTSSs[I].Next\r
135                 MOV [ESI+NextTSS],EAX                   ;     ^rgTSSs[I+1];\r
136                 MOV WORD PTR [ESI+TSS_IOBitBase], 0FFFFh        ; IOBitBase\r
137                 MOV [ESI+TSSNum], BX                    ; TSS Number\r
138                 MOV WORD PTR [ESI+TSS_DS], DataSel              ;Set up for Data Selectors\r
139                 MOV WORD PTR [ESI+TSS_ES], DataSel\r
140                 MOV WORD PTR [ESI+TSS_FS], DataSel\r
141                 MOV WORD PTR [ESI+TSS_GS], DataSel\r
142                 MOV WORD PTR [ESI+TSS_SS], DataSel\r
143                 MOV WORD PTR [ESI+TSS_SS0], DataSel\r
144                 PUSH EAX                                        ;Save pTSS\r
145                 MOV EAX,EDI                     ; Get offset of Curr TssDesc in EAX\r
146                 SUB EAX, OFFSET GDT             ; Sub offset of GDT Base to get Sel of TSS\r
147                 MOV WORD PTR [ESI+Tid],AX   ; Store TSS Selector in TSS (later use)\r
148                 PUSH EBX\r
149                 PUSH EDX\r
150 \r
151                 MOV EAX,EDX             ; Size of TSS (TSS + SOFTSTATE)\r
152                 MOV EDX,ESI             ; Address of TSS\r
153                 MOV EBX,0089h           ; G(0),AV(0),LIM(0),P(1),DPL(0),B(0)\r
154 \r
155                 CALL AddTSSDesc\r
156 \r
157                 ADD EDI,8               ; Point to Next GDT Slot (for next one)\r
158                 POP EDX\r
159                 POP EBX\r
160                 POP EAX\r
161                 INC EBX                                                 ; TSS Number\r
162                 LOOP TSS_Loop                           ;\r
163                 MOV DWORD PTR [ESI+NextTSS], 0  ; rgFree[LastOne].Next <= NIL;\r
164                 RETN                                    ;\r
165 \r
166 ;=============================================================================\r
167 ; DUMMY CALL for uninitialized GDT call gate slots\r
168 ;=============================================================================\r
169 \r
170 DummyCall:\r
171                 MOV EAX, ercBadCallGate\r
172                 RETF\r
173 \r
174 \r
175 ;=============================================================================\r
176 ; InitCallGates inits the array of call gates with an entry to a generic\r
177 ; handler that returns ErcNotInstalled when called. This prevents new code\r
178 ; running on old MMURTLs or systems where special call gates don't exist\r
179 ; without crashing too horribly.\r
180 ;\r
181 ; IN: Nothing\r
182 ; Out : Nothing\r
183 ; Used : ALL registers and flags\r
184 ;\r
185 PUBLIC InitCallGates:\r
186 \r
187                 ;First we set up all call gates to point to a\r
188                 ;dummy procedure\r
189 \r
190                 MOV ECX, nCallGates             ;Number of callgates to init\r
191 InitCG01:\r
192                 PUSH ECX                                ;Save nCallGates\r
193                 DEC ECX                                 ;make it an index, not the count\r
194                 SHL ECX, 3                              ;\r
195                 ADD ECX, 40h                    ;Now ecx is selector number\r
196                 MOV EAX, 0EC00h                 ;DPL 3, 0 Params\r
197                 MOV DX, OSCodeSel\r
198                 MOV ESI, OFFSET DummyCall\r
199 \r
200                 ;Same code as in PUBLIC AddCallGate\r
201                 MOVZX EBX, CX\r
202                 SUB EBX, 40                     ;sub call gate base selector\r
203                 SHR EBX, 3                      ;make index vice selector\r
204                 MOVZX EBX, CX           ;Extend selector into EBX\r
205                 ADD EBX, GDTBase        ;NOW a true offset in GDT\r
206                 MOV WORD PTR [EBX+02], 8        ;Put Code Seg selector into Call gate\r
207                 MOV [EBX], SI           ;0:15 of call offset\r
208                 SHR ESI, 16                     ;move upper 16 of offset into SI\r
209                 MOV [EBX+06], SI        ;16:31 of call offset\r
210                 MOV [EBX+04], AX        ;call DPL & ndParams\r
211 \r
212                 POP ECX                                 ;ignore error...\r
213                 LOOP InitCG01                   ;This decrements ECX till 0\r
214 \r
215                 ;Another chicken and egg here.. In order to be able\r
216                 ;to call the FAR PUBLIC "AddCallGate" though a callgate,\r
217                 ;we have to add it as a callgate... ok....\r
218 \r
219                 MOV EAX, 08C00h         ;AddCallGate -- 0 DWord Params  DPL 0\r
220                 MOV ECX, 0C8h\r
221                 MOV DX, OSCodeSel\r
222                 MOV ESI, OFFSET __AddCallGate\r
223                 ;Same code as in PUBLIC AddCallGate\r
224                 MOVZX EBX, CX\r
225                 SUB EBX, 40                     ;sub call gate base selector\r
226                 SHR EBX, 3                      ;make index vice selector\r
227                 MOVZX EBX, CX           ;Extend selector into EBX\r
228                 ADD EBX, GDTBase        ;NOW a true offset in GDT\r
229                 MOV WORD PTR [EBX+02], 8        ;Put Code Seg selector into Call gate\r
230                 MOV [EBX], SI           ;0:15 of call offset\r
231                 SHR ESI, 16                     ;move upper 16 of offset into SI\r
232                 MOV [EBX+06], SI        ;16:31 of call offset\r
233                 MOV [EBX+04], AX        ;call DPL & ndParams\r
234                 RETN\r
235 \r
236 ;=============================================================================\r
237 ; InitIDT\r
238 ; First, inits the IDT with 256 entries to a generic\r
239 ; handler that does nothing (except IRETD) when called.\r
240 ; Second, adds each of the basic IDT entries for included\r
241 ; software and hardware interrupt handlers.\r
242 ; ISRs loaded with device drivers must use SetIRQVector.\r
243 ;\r
244 ; IN    : Nothing\r
245 ; Out   : Nothing\r
246 ; Used  : ALL registers and flags\r
247 ;\r
248 PUBLIC InitIDT:\r
249                 MOV ECX, 255                    ;Last IDT Entry\r
250 InitID01:\r
251                 PUSH ECX\r
252                 MOV EAX, 08F00h                 ;DPL 3, TRAP GATE\r
253                 MOV EBX, OSCodeSel\r
254                 MOV ESI, OFFSET IntQ\r
255                 CALL FWORD PTR _AddIDTGate\r
256                 POP ECX\r
257                 LOOP InitID01\r
258 \r
259                 ;Now we add each of the known interrupts\r
260 \r
261                 MOV ECX, 0                              ;Divide By Zero\r
262                 MOV EAX, 08F00h                 ;DPL 3, TRAP GATE\r
263                 MOV EBX, OSCodeSel              ;\r
264                 MOV ESI, OFFSET IntDivBy0\r
265                 CALL FWORD PTR _AddIDTGate\r
266 \r
267                 MOV ECX, 1                              ;Single Step\r
268                 MOV EAX, 08F00h                 ;DPL 3, Trap gate\r
269                 MOV EBX, OSCodeSel              ;\r
270                 MOV ESI, Offset IntDbgSS\r
271                 CALL FWORD PTR _AddIDTGate\r
272 \r
273                 ;Trying 8E00 (Int gate vice trap gate which leaves Ints disabled)\r
274 \r
275                 MOV ECX, 3                              ;Breakpoint\r
276                 MOV EAX, 08F00h                 ;DPL 3, Trap Gate (for Debugger) WAS 8F00\r
277                 MOV EBX, OSCodeSel              ;This will be filled in with TSS of Dbgr later\r
278                 MOV ESI, OFFSET IntDebug\r
279                 CALL FWORD PTR _AddIDTGate\r
280 \r
281                 MOV ECX, 4                              ;Overflow\r
282                 MOV EAX, 08F00h                 ;DPL 3, TRAP GATE\r
283                 MOV EBX, OSCodeSel              ;\r
284                 MOV ESI, OFFSET IntOverFlow\r
285                 CALL FWORD PTR _AddIDTGate\r
286 \r
287                 MOV ECX, 6                              ;Invalid OPcode\r
288                 MOV EAX, 08F00h                 ;DPL 3, TRAP GATE\r
289                 MOV EBX, OSCodeSel              ;\r
290                 MOV ESI, OFFSET IntOpCode\r
291                 CALL FWORD PTR _AddIDTGate\r
292 \r
293                 MOV ECX, 8                              ;Double Exception\r
294                 MOV EAX, 08F00h                 ;DPL 3, TRAP GATE\r
295                 MOV EBX, OSCodeSel              ;\r
296                 MOV ESI, OFFSET IntDblExc\r
297                 CALL FWORD PTR _AddIDTGate\r
298 \r
299                 MOV ECX, 0Ah                    ;Invalid TSS\r
300                 MOV EAX, 08F00h                 ;DPL 3, TRAP GATE\r
301                 MOV EBX, OSCodeSel              ;\r
302                 MOV ESI, OFFSET IntInvTSS\r
303                 CALL FWORD PTR _AddIDTGate\r
304 \r
305                 MOV ECX, 0Bh                    ;Seg Not Present\r
306                 MOV EAX, 08F00h                 ;DPL 3, TRAP GATE\r
307                 MOV EBX, OSCodeSel              ;\r
308                 MOV ESI, OFFSET IntNoSeg\r
309                 CALL FWORD PTR _AddIDTGate\r
310 \r
311                 MOV ECX, 0Ch                    ;Int Stack Overflow\r
312                 MOV EAX, 08F00h                 ;DPL 3, TRAP GATE\r
313                 MOV EBX, OSCodeSel              ;\r
314                 MOV ESI, OFFSET IntStkOvr\r
315                 CALL FWORD PTR _AddIDTGate\r
316 \r
317                 MOV ECX, 0Dh                    ;GP fault\r
318                 MOV EAX, 08F00h                 ;DPL 3, TRAP GATE\r
319                 MOV EBX, OSCodeSel              ;\r
320                 MOV ESI, OFFSET IntGP\r
321                 CALL FWORD PTR _AddIDTGate\r
322 \r
323                 MOV ECX, 0Eh                    ;Int Page Fault\r
324                 MOV EAX, 08F00h                 ;DPL 3, TRAP GATE\r
325                 MOV EBX, OSCodeSel              ;\r
326                 MOV ESI, OFFSET IntPgFlt\r
327                 CALL FWORD PTR _AddIDTGate\r
328 \r
329                 MOV ECX, 20h                    ;Int TIMER                              IRQ0\r
330                 MOV EAX, 08E00h                 ;DPL 3, INTERRUPT GATE\r
331                 MOV EBX, OSCodeSel              ;\r
332                 MOV ESI, OFFSET IntTimer\r
333                 CALL FWORD PTR _AddIDTGate\r
334 \r
335                 MOV ECX, 21h                    ;Int KEYBOARD                   IRQ1\r
336                 MOV EAX, 08E00h                 ;DPL 3, INTERRUPT GATE\r
337                 MOV EBX, OSCodeSel              ;\r
338                 MOV ESI, OFFSET IntKeyBrd\r
339                 CALL FWORD PTR _AddIDTGate\r
340 \r
341                 MOV ECX, 22h                    ;Int PICU 2 (from PICU) IRQ2\r
342                 MOV EAX, 08E00h                 ;DPL 3, INTERRUPT GATE\r
343                 MOV EBX, OSCodeSel              ;\r
344                 MOV ESI, OFFSET IntPICU2\r
345                 CALL FWORD PTR _AddIDTGate\r
346 \r
347                 MOV ECX, 23h                    ;Int COM2                               IRQ3\r
348                 MOV EAX, 08E00h                 ;DPL 3, INTERRUPT GATE\r
349                 MOV EBX, OSCodeSel              ;\r
350                 MOV ESI, OFFSET IntQ\r
351                 CALL FWORD PTR _AddIDTGate\r
352 \r
353                 MOV ECX, 24h                    ;Int COM1                               IRQ4\r
354                 MOV EAX, 08E00h                 ;DPL 3, INTERRUPT GATE\r
355                 MOV EBX, OSCodeSel              ;\r
356                 MOV ESI, OFFSET IntQ\r
357                 CALL FWORD PTR _AddIDTGate\r
358 \r
359                 MOV ECX, 25h                    ;Int LPT2                               IRQ5\r
360                 MOV EAX, 08E00h                 ;DPL 3, INTERRUPT GATE\r
361                 MOV EBX, OSCodeSel              ;\r
362                 MOV ESI, OFFSET IntQ\r
363                 CALL FWORD PTR _AddIDTGate\r
364 \r
365                 MOV ECX, 26h                    ;Int Floppy                             IRQ6\r
366                 MOV EAX, 08E00h                 ;DPL 3, INTERRUPT GATE\r
367                 MOV EBX, OSCodeSel              ;\r
368                 MOV ESI, OFFSET IntQ    ;FDD will set this himself\r
369                 CALL FWORD PTR _AddIDTGate\r
370 \r
371                 MOV ECX, 27h                    ;Int ..........                 IRQ7\r
372                 MOV EAX, 08E00h                 ;DPL 3, INTERRUPT GATE\r
373                 MOV EBX, OSCodeSel              ;\r
374                 MOV ESI, OFFSET IntQ\r
375                 CALL FWORD PTR _AddIDTGate\r
376 \r
377                 MOV ECX, 28h                    ;Int ..........                 IRQ8\r
378                 MOV EAX, 08E00h                 ;DPL 3, INTERRUPT GATE\r
379                 MOV EBX, OSCodeSel              ;\r
380                 MOV ESI, OFFSET IntQ\r
381                 CALL FWORD PTR _AddIDTGate\r
382 \r
383                 MOV ECX, 29h                    ;Int ..........                 IRQ9\r
384                 MOV EAX, 08E00h                 ;DPL 3, INTERRUPT GATE\r
385                 MOV EBX, OSCodeSel              ;\r
386                 MOV ESI, OFFSET IntQ\r
387                 CALL FWORD PTR _AddIDTGate\r
388 \r
389                 MOV ECX, 2Ah                    ;Int ..........                 IRQ10\r
390                 MOV EAX, 08E00h                 ;DPL 3, INTERRUPT GATE\r
391                 MOV EBX, OSCodeSel              ;\r
392                 MOV ESI, OFFSET IntQ\r
393                 CALL FWORD PTR _AddIDTGate\r
394 \r
395                 MOV ECX, 2Bh                    ;Int ..........                 IRQ11\r
396                 MOV EAX, 08E00h                 ;DPL 3, INTERRUPT GATE\r
397                 MOV EBX, OSCodeSel              ;\r
398                 MOV ESI, OFFSET IntQ\r
399                 CALL FWORD PTR _AddIDTGate\r
400 \r
401                 MOV ECX, 2Ch                    ;Int ..........                 IRQ12\r
402                 MOV EAX, 08E00h                 ;DPL 3, INTERRUPT GATE\r
403                 MOV EBX, OSCodeSel              ;\r
404                 MOV ESI, OFFSET IntQ\r
405                 CALL FWORD PTR _AddIDTGate\r
406 \r
407                 MOV ECX, 2Dh                    ;Int ..........                 IRQ13\r
408                 MOV EAX, 08E00h                 ;DPL 3, INTERRUPT GATE\r
409                 MOV EBX, OSCodeSel              ;\r
410                 MOV ESI, OFFSET IntQ\r
411                 CALL FWORD PTR _AddIDTGate\r
412 \r
413                 MOV ECX, 2Eh                    ;Int ..........                 IRQ14\r
414                 MOV EAX, 08E00h                 ;DPL 3, INTERRUPT GATE\r
415                 MOV EBX, OSCodeSel              ;\r
416                 MOV ESI, OFFSET IntQ\r
417                 CALL FWORD PTR _AddIDTGate\r
418 \r
419                 MOV ECX, 2Fh                    ;Int ..........                 IRQ15\r
420                 MOV EAX, 08E00h                 ;DPL 3, INTERRUPT GATE\r
421                 MOV EBX, OSCodeSel              ;\r
422                 MOV ESI, OFFSET IntQ\r
423                 CALL FWORD PTR _AddIDTGate\r
424 \r
425                 RETN\r
426 \r
427 ;=============================================================================\r
428 ; InitOSPublics adds all OS primitives to the array of call gates. This can't\r
429 ; before initcallgates, but MUST be called before the first far call to any\r
430 ; OS primitive thorugh a call gate!!!\r
431 ; IF YOU ADD AN OS PUBLIC MAKE SURE IT GETS PUT HERE!!!!!\r
432 ;\r
433 ; IN   : Nothing\r
434 ; Out  : Nothing\r
435 ; Used : ALL registers and flags\r
436 ;\r
437 PUBLIC InitOSPublics:\r
438 \r
439                 MOV EAX, 0EC02h         ;WaitMsg -- 2 DWord Params, DPL 3\r
440                 MOV ECX, 40h\r
441                 MOV DX, OSCodeSel\r
442                 MOV ESI, OFFSET __WaitMsg\r
443                 CALL FWORD PTR _AddCallGate\r
444 \r
445                 MOV EAX, 0EC03h         ;SendMsg -- 3 DWord Params, DPL 3\r
446                 MOV ECX, 48h\r
447                 MOV DX, OSCodeSel\r
448                 MOV ESI, OFFSET __SendMsg\r
449                 CALL FWORD PTR _AddCallGate\r
450 \r
451                 MOV EAX, 08C03h         ;ISendMsg -- 3 DWord params, DPL 0\r
452                 MOV ECX, 50h\r
453                 MOV DX, OSCodeSel\r
454                 MOV ESI, OFFSET __ISendMsg\r
455                 CALL FWORD PTR _AddCallGate\r
456 \r
457                 MOV EAX, 0EC01h         ;Set Priority - 1Dword param, DPL 3\r
458                 MOV ECX, 58h\r
459                 MOV DX, OSCodeSel\r
460                 MOV ESI, OFFSET __SetPriority\r
461                 CALL FWORD PTR _AddCallGate\r
462 \r
463                 MOV EAX, 0EC0Ch         ;Request --  12 nDWord params\r
464                 MOV ECX, 60h\r
465                 MOV DX, OSCodeSel\r
466                 MOV ESI, OFFSET __Request\r
467                 CALL FWORD PTR _AddCallGate\r
468 \r
469                 MOV EAX, 0EC02h         ;Respond -- 2 nDWord params\r
470                 MOV ECX, 68h\r
471                 MOV DX, OSCodeSel\r
472                 MOV ESI, OFFSET __Respond\r
473                 CALL FWORD PTR _AddCallGate\r
474 \r
475                 MOV EAX, 0EC02h         ;Check -- 2 DWord Params, DPL 3\r
476                 MOV ECX, 70h\r
477                 MOV DX, OSCodeSel\r
478                 MOV ESI, OFFSET __CheckMsg\r
479                 CALL FWORD PTR _AddCallGate\r
480 \r
481                 MOV EAX, 0EC07h         ;NewTask -- 7 DWord param, DPL 3\r
482                 MOV ECX, 78h\r
483                 MOV DX, OSCodeSel\r
484                 MOV ESI, OFFSET __NewTask\r
485                 CALL FWORD PTR _AddCallGate\r
486 \r
487                 MOV EAX, 0EC01h         ;AllocExch -- 1 DWord param, DPL 3\r
488                 MOV ECX, 80h\r
489                 MOV DX, OSCodeSel\r
490                 MOV ESI, OFFSET __AllocExch\r
491                 CALL FWORD PTR _AddCallGate\r
492 \r
493                 MOV EAX, 0EC01h         ;DeAllocExch -- 1 DWord param, DPL 3\r
494                 MOV ECX, 88h\r
495                 MOV DX, OSCodeSel\r
496                 MOV ESI, OFFSET __DeAllocExch\r
497                 CALL FWORD PTR _AddCallGate\r
498 \r
499                 MOV EAX, 0EC01h         ;Sleep -- 1 DWord param, DPL 3\r
500                 MOV ECX, 90h\r
501                 MOV DX, OSCodeSel\r
502                 MOV ESI, OFFSET __Sleep\r
503                 CALL FWORD PTR _AddCallGate\r
504 \r
505                 MOV EAX, 0EC02h         ;Alarm -- 2 DWord params, DPL 3\r
506                 MOV ECX, 98h\r
507                 MOV DX, OSCodeSel\r
508                 MOV ESI, OFFSET __Alarm\r
509                 CALL FWORD PTR _AddCallGate\r
510 \r
511                 MOV EAX, 0EC02h         ;AllocOSPage -- 2 DWord params, DPL 3\r
512                 MOV ECX, 0A0h\r
513                 MOV DX, OSCodeSel\r
514                 MOV ESI, OFFSET __AllocOSPage\r
515                 CALL FWORD PTR _AddCallGate\r
516 \r
517                 MOV EAX, 0EC02h         ;AllocPage -- 2 DWord params, DPL 3\r
518                 MOV ECX, 0A8h\r
519                 MOV DX, OSCodeSel\r
520                 MOV ESI, OFFSET __AllocPage\r
521                 CALL FWORD PTR _AddCallGate\r
522 \r
523                 MOV EAX, 0EC02h         ;RegisterSvc -- 2 DWord params, DPL 3\r
524                 MOV ECX, 0B0h\r
525                 MOV DX, OSCodeSel\r
526                 MOV ESI, OFFSET __RegisterSvc\r
527                 CALL FWORD PTR _AddCallGate\r
528 \r
529                 MOV EAX, 08C05h         ;DMASetUp -- 5 DWord Params  DPL 0\r
530                 MOV ECX, 0B8h\r
531                 MOV DX, OSCodeSel\r
532                 MOV ESI, OFFSET __DMASetUp\r
533                 CALL FWORD PTR _AddCallGate\r
534 \r
535                 MOV EAX, 0EC02h         ;ReadKBD -- 2 DWord Param  DPL 3\r
536                 MOV ECX, 0C0h\r
537                 MOV DX, OSCodeSel\r
538                 MOV ESI, OFFSET __ReadKBD\r
539                 CALL FWORD PTR _AddCallGate\r
540 \r
541                 MOV EAX, 08C00h         ;AddCallGate -- 0 DWord Params  DPL 0\r
542                 MOV ECX, 0C8h\r
543                 MOV DX, OSCodeSel\r
544                 MOV ESI, OFFSET __AddCallGate\r
545                 CALL FWORD PTR _AddCallGate\r
546 \r
547                 MOV EAX, 08C00h         ;AddIDTGate -- 0 DWord Params  DPL 0\r
548                 MOV ECX, 0D0h\r
549                 MOV DX, OSCodeSel\r
550                 MOV ESI, OFFSET __AddIDTGate\r
551                 CALL FWORD PTR _AddCallGate\r
552 \r
553                 MOV EAX, 08C01h         ;EndOfIRQ -- 1 DWord Params  DPL 0\r
554                 MOV ECX, 0D8h\r
555                 MOV DX, OSCodeSel\r
556                 MOV ESI, OFFSET __EndOfIRQ\r
557                 CALL FWORD PTR _AddCallGate\r
558 \r
559                 MOV EAX, 08C01h         ;MaskIRQ -- 1 DWord Params  DPL 0\r
560                 MOV ECX, 0E0h\r
561                 MOV DX, OSCodeSel\r
562                 MOV ESI, OFFSET __MaskIRQ\r
563                 CALL FWORD PTR _AddCallGate\r
564 \r
565                 MOV EAX, 08C01h         ;UnMaskIRQ -- 1 DWord Params  DPL 0\r
566                 MOV ECX, 0E8h\r
567                 MOV DX, OSCodeSel\r
568                 MOV ESI, OFFSET __UnMaskIRQ\r
569                 CALL FWORD PTR _AddCallGate\r
570 \r
571                 MOV EAX, 08C02h         ;SetIRQVector -- 2 DWord Params  DPL 0\r
572                 MOV ECX, 0F0h\r
573                 MOV DX, OSCodeSel\r
574                 MOV ESI, OFFSET __SetIRQVector\r
575                 CALL FWORD PTR _AddCallGate\r
576 \r
577                 MOV EAX, 08C02h         ;GetIRQVector -- 2 DWord Params  DPL 0\r
578                 MOV ECX, 0F8h\r
579                 MOV DX, OSCodeSel\r
580                 MOV ESI, OFFSET __GetIRQVector\r
581                 CALL FWORD PTR _AddCallGate\r
582 \r
583                 MOV EAX, 08C04h         ;InitDevDr -- 4 DWord Params  DPL 0\r
584                 MOV ECX, 100h\r
585                 MOV DX, OSCodeSel\r
586                 MOV ESI, OFFSET __InitDevDr\r
587                 CALL FWORD PTR _AddCallGate\r
588 \r
589                 MOV EAX, 0EC03h         ;DeviceInit -- 3 DWord Params  DPL 3\r
590                 MOV ECX, 108h\r
591                 MOV DX, OSCodeSel\r
592                 MOV ESI, OFFSET __DeviceInit\r
593                 CALL FWORD PTR _AddCallGate\r
594 \r
595                 MOV EAX, 0EC05h         ;DeviceOp -- 5 DWord Params  DPL 3\r
596                 MOV ECX, 110h\r
597                 MOV DX, OSCodeSel\r
598                 MOV ESI, OFFSET __DeviceOp\r
599                 CALL FWORD PTR _AddCallGate\r
600 \r
601                 MOV EAX, 0EC04h         ;DeviceStat -- 4 DWord Params  DPL 3\r
602                 MOV ECX, 118h\r
603                 MOV DX, OSCodeSel\r
604                 MOV ESI, OFFSET __DeviceStat\r
605                 CALL FWORD PTR _AddCallGate\r
606 \r
607                 MOV EAX, 0EC00h         ;Beep -- 0 DWord Params  DPL 3\r
608                 MOV ECX, 120h\r
609                 MOV DX, OSCodeSel\r
610                 MOV ESI, OFFSET __Beep\r
611                 CALL FWORD PTR _AddCallGate\r
612 \r
613                 MOV EAX, 0EC02h         ;Tone -- 2 DWord Params  DPL 3\r
614                 MOV ECX, 128h\r
615                 MOV DX, OSCodeSel\r
616                 MOV ESI, OFFSET __Tone\r
617                 CALL FWORD PTR _AddCallGate\r
618 \r
619                 MOV EAX, 0EC01h         ;KillAlarm -- 1 DWord Params  DPL 3\r
620                 MOV ECX, 130h\r
621                 MOV DX, OSCodeSel\r
622                 MOV ESI, OFFSET __KillAlarm\r
623                 CALL FWORD PTR _AddCallGate\r
624 \r
625                 MOV EAX, 0EC01h         ;MicroDelay -- 1 DWord Params  DPL 3\r
626                 MOV ECX, 138h\r
627                 MOV DX, OSCodeSel\r
628                 MOV ESI, OFFSET __MicroDelay\r
629                 CALL FWORD PTR _AddCallGate\r
630 \r
631                 MOV EAX, 0EC05h         ;SpawnTask -- 5 DWord param, DPL 3\r
632                 MOV ECX, 140h\r
633                 MOV DX, OSCodeSel\r
634                 MOV ESI, OFFSET __SpawnTask\r
635                 CALL FWORD PTR _AddCallGate\r
636 \r
637                 MOV EAX, 0EC01h         ;GetCMOSTime -- 1 DWord param, DPL 3\r
638                 MOV ECX, 148h\r
639                 MOV DX, OSCodeSel\r
640                 MOV ESI, OFFSET __GetCMOSTime\r
641                 CALL FWORD PTR _AddCallGate\r
642 \r
643                 MOV EAX, 0EC01h         ;GetTimerTick -- 1 DWord param, DPL 3\r
644                 MOV ECX, 150h\r
645                 MOV DX, OSCodeSel\r
646                 MOV ESI, OFFSET __GetTimerTick\r
647                 CALL FWORD PTR _AddCallGate\r
648 \r
649                 MOV EAX, 08C02h         ;OutByte -- 2 DWord param, DPL 0\r
650                 MOV ECX, 158h\r
651                 MOV DX, OSCodeSel\r
652                 MOV ESI, OFFSET __OutByte\r
653                 CALL FWORD PTR _AddCallGate\r
654 \r
655                 MOV EAX, 08C02h         ;OutWord -- 2 DWord param, DPL 0\r
656                 MOV ECX, 160h\r
657                 MOV DX, OSCodeSel\r
658                 MOV ESI, OFFSET __OutWord\r
659                 CALL FWORD PTR _AddCallGate\r
660 \r
661                 MOV EAX, 08C02h         ;OutDWord -- 2 DWord param, DPL 0\r
662                 MOV ECX, 168h\r
663                 MOV DX, OSCodeSel\r
664                 MOV ESI, OFFSET __OutDWord\r
665                 CALL FWORD PTR _AddCallGate\r
666 \r
667                 MOV EAX, 08C01h         ;InByte -- 1 DWord param, DPL 0\r
668                 MOV ECX, 170h\r
669                 MOV DX, OSCodeSel\r
670                 MOV ESI, OFFSET __InByte\r
671                 CALL FWORD PTR _AddCallGate\r
672 \r
673                 MOV EAX, 08C01h         ;InWord -- 1 DWord param, DPL 0\r
674                 MOV ECX, 178h\r
675                 MOV DX, OSCodeSel\r
676                 MOV ESI, OFFSET __InWord\r
677                 CALL FWORD PTR _AddCallGate\r
678 \r
679                 MOV EAX, 08C01h         ;InDWord -- 1 DWord param, DPL 0\r
680                 MOV ECX, 180h\r
681                 MOV DX, OSCodeSel\r
682                 MOV ESI, OFFSET __InDWord\r
683                 CALL FWORD PTR _AddCallGate\r
684 \r
685                 MOV EAX, 0EC01h         ;ReadCMOS -- 1 DWord param, DPL 3\r
686                 MOV ECX, 188h\r
687                 MOV DX, OSCodeSel\r
688                 MOV ESI, OFFSET __ReadCMOS\r
689                 CALL FWORD PTR _AddCallGate\r
690 \r
691                 MOV EAX, 0EC03h         ;CopyData -- 3 DWord param, DPL 3\r
692                 MOV ECX, 190h\r
693                 MOV DX, OSCodeSel\r
694                 MOV ESI, OFFSET __CopyData\r
695                 CALL FWORD PTR _AddCallGate\r
696 \r
697                 MOV EAX, 0EC03h         ;CopyDataR -- 3 DWord param, DPL 3\r
698                 MOV ECX, 198h\r
699                 MOV DX, OSCodeSel\r
700                 MOV ESI, OFFSET __CopyDataR\r
701                 CALL FWORD PTR _AddCallGate\r
702 \r
703                 MOV EAX, 0EC03h         ;FillData -- 3 DWord param, DPL 3\r
704                 MOV ECX, 1A0h\r
705                 MOV DX, OSCodeSel\r
706                 MOV ESI, OFFSET __FillData\r
707                 CALL FWORD PTR _AddCallGate\r
708 \r
709                 MOV EAX, 0EC03h         ;CompareNCS -- 3 DWord param, DPL 3\r
710                 MOV ECX, 1A8h\r
711                 MOV DX, OSCodeSel\r
712                 MOV ESI, OFFSET __CompareNCS\r
713                 CALL FWORD PTR _AddCallGate\r
714 \r
715                 MOV EAX, 0EC03h         ;Compare -- 3 DWord param, DPL 3\r
716                 MOV ECX, 1B0h\r
717                 MOV DX, OSCodeSel\r
718                 MOV ESI, OFFSET __Compare\r
719                 CALL FWORD PTR _AddCallGate\r
720 \r
721                 MOV EAX, 08C03h         ;InWords -- 3 DWord param, DPL 0\r
722                 MOV ECX, 1B8h\r
723                 MOV DX, OSCodeSel\r
724                 MOV ESI, OFFSET __InWords\r
725                 CALL FWORD PTR _AddCallGate\r
726 \r
727                 MOV EAX, 08C03h         ;OutWords -- 3 DWord param, DPL 0\r
728                 MOV ECX, 1C0h\r
729                 MOV DX, OSCodeSel\r
730                 MOV ESI, OFFSET __OutWords\r
731                 CALL FWORD PTR _AddCallGate\r
732 \r
733                 MOV EAX, 0EC02h         ;MoveRequest --  2 nDWord params DPL 3\r
734                 MOV ECX, 1C8h\r
735                 MOV DX, OSCodeSel\r
736                 MOV ESI, OFFSET __MoveRequest\r
737                 CALL FWORD PTR _AddCallGate\r
738 \r
739                 MOV EAX, 0EC02h         ;DeAllocPage --  2 nDWord params DPL 3\r
740                 MOV ECX, 1D0h\r
741                 MOV DX, OSCodeSel\r
742                 MOV ESI, OFFSET __DeAllocPage\r
743                 CALL FWORD PTR _AddCallGate\r
744 \r
745                 MOV EAX, 0EC03h         ;LoadNewJob --  3 nDWord params DPL 3\r
746                 MOV ECX, 1D8h\r
747                 MOV DX, OSCodeSel\r
748                 MOV ESI, OFFSET __LoadNewJob\r
749                 CALL FWORD PTR _AddCallGate\r
750 \r
751                 MOV EAX, 0EC01h         ;SetVidOwner --  1 nDWord params DPL 3\r
752                 MOV ECX, 1E0h\r
753                 MOV DX, OSCodeSel\r
754                 MOV ESI, OFFSET __SetVidOwner\r
755                 CALL FWORD PTR _AddCallGate\r
756 \r
757                 MOV EAX, 0EC01h         ;GetVidOwner --  1 nDWord params DPL 3\r
758                 MOV ECX, 1E8h\r
759                 MOV DX, OSCodeSel\r
760                 MOV ESI, OFFSET __GetVidOwner\r
761                 CALL FWORD PTR _AddCallGate\r
762 \r
763                 MOV EAX, 0EC00h         ;ClrScr --  0 nDWord params DPL 3\r
764                 MOV ECX, 1F0h\r
765                 MOV DX, OSCodeSel\r
766                 MOV ESI, OFFSET __ClrScr\r
767                 CALL FWORD PTR _AddCallGate\r
768 \r
769                 MOV EAX, 0EC03h         ;TTYOut --  3 nDWord params DPL 3\r
770                 MOV ECX, 1F8h\r
771                 MOV DX, OSCodeSel\r
772                 MOV ESI, OFFSET __TTYOut\r
773                 CALL FWORD PTR _AddCallGate\r
774 \r
775                 MOV EAX, 0EC05h         ;PutVidChars --  5 nDWord params DPL 3\r
776                 MOV ECX, 200h\r
777                 MOV DX, OSCodeSel\r
778                 MOV ESI, OFFSET __PutVidChars\r
779                 CALL FWORD PTR _AddCallGate\r
780 \r
781                 MOV EAX, 0EC02h         ;SetXY --  2 nDWord params DPL 3\r
782                 MOV ECX, 208h\r
783                 MOV DX, OSCodeSel\r
784                 MOV ESI, OFFSET __SetXY\r
785                 CALL FWORD PTR _AddCallGate\r
786 \r
787                 MOV EAX, 0EC02h         ;GetXY --  2 nDWord params DPL 3\r
788                 MOV ECX, 210h\r
789                 MOV DX, OSCodeSel\r
790                 MOV ESI, OFFSET __GetXY\r
791                 CALL FWORD PTR _AddCallGate\r
792 \r
793                 MOV EAX, 0EC06h         ;EditLine --  6 nDWord params DPL 3\r
794                 MOV ECX, 218h\r
795                 MOV DX, OSCodeSel\r
796                 MOV ESI, OFFSET __EditLine\r
797                 CALL FWORD PTR _AddCallGate\r
798 \r
799                 MOV EAX, 0EC01h         ;GetTSSExch --  1 nDWord params DPL 3\r
800                 MOV ECX, 220h\r
801                 MOV DX, OSCodeSel\r
802                 MOV ESI, OFFSET __GetTSSExch\r
803                 CALL FWORD PTR _AddCallGate\r
804 \r
805                 MOV EAX, 0EC05h         ;OpenFile --  5 nDWord params DPL 3\r
806                 MOV ECX, 228h\r
807                 MOV DX, OSCodeSel\r
808                 MOV ESI, OFFSET __OpenFile\r
809                 CALL FWORD PTR _AddCallGate\r
810 \r
811                 MOV EAX, 0EC01h         ;CloseFile --  1 nDWord params DPL 3\r
812                 MOV ECX, 230h\r
813                 MOV DX, OSCodeSel\r
814                 MOV ESI, OFFSET __CloseFile\r
815                 CALL FWORD PTR _AddCallGate\r
816 \r
817                 MOV EAX, 0EC05h         ;ReadBlock --  5 nDWord params DPL 3\r
818                 MOV ECX, 238h\r
819                 MOV DX, OSCodeSel\r
820                 MOV ESI, OFFSET __ReadBlock\r
821                 CALL FWORD PTR _AddCallGate\r
822 \r
823                 MOV EAX, 0EC05h         ;WriteBlock --  5 nDWord params DPL 3\r
824                 MOV ECX, 240h\r
825                 MOV DX, OSCodeSel\r
826                 MOV ESI, OFFSET __WriteBlock\r
827                 CALL FWORD PTR _AddCallGate\r
828 \r
829                 MOV EAX, 0EC04h         ;ReadBytes --  4 nDWord params DPL 3\r
830                 MOV ECX, 248h\r
831                 MOV DX, OSCodeSel\r
832                 MOV ESI, OFFSET __ReadBytes\r
833                 CALL FWORD PTR _AddCallGate\r
834 \r
835                 MOV EAX, 0EC04h         ;WriteBytes --  4 nDWord params DPL 3\r
836                 MOV ECX, 250h\r
837                 MOV DX, OSCodeSel\r
838                 MOV ESI, OFFSET __WriteBytes\r
839                 CALL FWORD PTR _AddCallGate\r
840 \r
841                 MOV EAX, 0EC02h         ;GetFileLFA --  2 nDWord params DPL 3\r
842                 MOV ECX, 258h\r
843                 MOV DX, OSCodeSel\r
844                 MOV ESI, OFFSET __GetFileLFA\r
845                 CALL FWORD PTR _AddCallGate\r
846 \r
847                 MOV EAX, 0EC02h         ;SetFileLFA --  2 nDWord params DPL 3\r
848                 MOV ECX, 260h\r
849                 MOV DX, OSCodeSel\r
850                 MOV ESI, OFFSET __SetFileLFA\r
851                 CALL FWORD PTR _AddCallGate\r
852 \r
853                 MOV EAX, 0EC02h         ;GetFileSize --  2 nDWord params DPL 3\r
854                 MOV ECX, 268h\r
855                 MOV DX, OSCodeSel\r
856                 MOV ESI, OFFSET __GetFileSize\r
857                 CALL FWORD PTR _AddCallGate\r
858 \r
859                 MOV EAX, 0EC03h         ;CreateFile --  3 nDWord params DPL 3\r
860                 MOV ECX, 270h\r
861                 MOV DX, OSCodeSel\r
862                 MOV ESI, OFFSET __CreateFile\r
863                 CALL FWORD PTR _AddCallGate\r
864 \r
865                 MOV EAX, 0EC04h         ;RenameFile --  4 nDWord params DPL 3\r
866                 MOV ECX, 278h\r
867                 MOV DX, OSCodeSel\r
868                 MOV ESI, OFFSET __RenameFile\r
869                 CALL FWORD PTR _AddCallGate\r
870 \r
871                 MOV EAX, 0EC01h         ;DeleteFile --  1 nDWord params DPL 3\r
872                 MOV ECX, 280h\r
873                 MOV DX, OSCodeSel\r
874                 MOV ESI, OFFSET __DeleteFile\r
875                 CALL FWORD PTR _AddCallGate\r
876 \r
877                 MOV EAX, 0EC02h         ;GetpJCB --  2 nDWord params DPL 3\r
878                 MOV ECX, 288h\r
879                 MOV DX, OSCodeSel\r
880                 MOV ESI, OFFSET __GetpJCB\r
881                 CALL FWORD PTR _AddCallGate\r
882 \r
883                 MOV EAX, 0EC01h         ;QueryPages --  1 nDWord params DPL 3\r
884                 MOV ECX, 290h\r
885                 MOV DX, OSCodeSel\r
886                 MOV ESI, OFFSET __QueryPages\r
887                 CALL FWORD PTR _AddCallGate\r
888 \r
889                 MOV EAX, 0EC02h         ;GetPhyAdd --  2 nDWord params DPL 3\r
890                 MOV ECX, 298h\r
891                 MOV DX, OSCodeSel\r
892                 MOV ESI, OFFSET __GetPhyAdd\r
893                 CALL FWORD PTR _AddCallGate\r
894 \r
895                 MOV EAX, 0EC05h         ;ScrollVid --  5 nDWord params DPL 3\r
896                 MOV ECX, 2A0h\r
897                 MOV DX, OSCodeSel\r
898                 MOV ESI, OFFSET __ScrollVid\r
899                 CALL FWORD PTR _AddCallGate\r
900 \r
901                 MOV EAX, 0EC05h         ;GetDirSector --  5 nDWord params DPL 3\r
902                 MOV ECX, 2A8h\r
903                 MOV DX, OSCodeSel\r
904                 MOV ESI, OFFSET __GetDirSector\r
905                 CALL FWORD PTR _AddCallGate\r
906 \r
907                 MOV EAX, 0EC01h         ;GetJobNum --  1 nDWord params DPL 3\r
908                 MOV ECX, 2B0h\r
909                 MOV DX, OSCodeSel\r
910                 MOV ESI, OFFSET __GetJobNum\r
911                 CALL FWORD PTR _AddCallGate\r
912 \r
913                 MOV EAX, 0EC01h         ;ExitJob --  1 nDWord params DPL 3\r
914                 MOV ECX, 2B8h\r
915                 MOV DX, OSCodeSel\r
916                 MOV ESI, OFFSET __ExitJob\r
917                 CALL FWORD PTR _AddCallGate\r
918 \r
919                 MOV EAX, 0EC02h         ;SetUserName --  2 nDWord params DPL 3\r
920                 MOV ECX, 2C0h\r
921                 MOV DX, OSCodeSel\r
922                 MOV ESI, OFFSET __SetUserName\r
923                 CALL FWORD PTR _AddCallGate\r
924 \r
925                 MOV EAX, 0EC02h         ;GetUserName --  2 nDWord params DPL 3\r
926                 MOV ECX, 2C8h\r
927                 MOV DX, OSCodeSel\r
928                 MOV ESI, OFFSET __GetUserName\r
929                 CALL FWORD PTR _AddCallGate\r
930 \r
931                 MOV EAX, 0EC02h         ;SetCmdLine --  2 nDWord params DPL 3\r
932                 MOV ECX, 2D0h\r
933                 MOV DX, OSCodeSel\r
934                 MOV ESI, OFFSET __SetCmdLine\r
935                 CALL FWORD PTR _AddCallGate\r
936 \r
937                 MOV EAX, 0EC02h         ;GetCmdLine --  2 nDWord params DPL 3\r
938                 MOV ECX, 2D8h\r
939                 MOV DX, OSCodeSel\r
940                 MOV ESI, OFFSET __GetCmdLine\r
941                 CALL FWORD PTR _AddCallGate\r
942 \r
943                 MOV EAX, 0EC02h         ;SetPath --  2 nDWord params DPL 3\r
944                 MOV ECX, 2E0h\r
945                 MOV DX, OSCodeSel\r
946                 MOV ESI, OFFSET __SetPath\r
947                 CALL FWORD PTR _AddCallGate\r
948 \r
949                 MOV EAX, 0EC03h         ;GetPath --  3 nDWord params DPL 3\r
950                 MOV ECX, 2E8h\r
951                 MOV DX, OSCodeSel\r
952                 MOV ESI, OFFSET __GetPath\r
953                 CALL FWORD PTR _AddCallGate\r
954 \r
955                 MOV EAX, 0EC02h         ;SetExitJob --  2 nDWord params DPL 3\r
956                 MOV ECX, 2F0h\r
957                 MOV DX, OSCodeSel\r
958                 MOV ESI, OFFSET __SetExitJob\r
959                 CALL FWORD PTR _AddCallGate\r
960 \r
961                 MOV EAX, 0EC02h         ;GetExitJob --  2 nDWord params DPL 3\r
962                 MOV ECX, 2F8h\r
963                 MOV DX, OSCodeSel\r
964                 MOV ESI, OFFSET __GetExitJob\r
965                 CALL FWORD PTR _AddCallGate\r
966 \r
967                 MOV EAX, 0EC02h         ;SetSysIn --  2 nDWord params DPL 3\r
968                 MOV ECX, 300h\r
969                 MOV DX, OSCodeSel\r
970                 MOV ESI, OFFSET __SetSysIn\r
971                 CALL FWORD PTR _AddCallGate\r
972 \r
973                 MOV EAX, 0EC02h         ;SetSysOut --  2 nDWord params DPL 3\r
974                 MOV ECX, 308h\r
975                 MOV DX, OSCodeSel\r
976                 MOV ESI, OFFSET __SetSysOut\r
977                 CALL FWORD PTR _AddCallGate\r
978 \r
979                 MOV EAX, 0EC02h         ;GetSysIn --  2 nDWord params DPL 3\r
980                 MOV ECX, 310h\r
981                 MOV DX, OSCodeSel\r
982                 MOV ESI, OFFSET __GetSysIn\r
983                 CALL FWORD PTR _AddCallGate\r
984 \r
985                 MOV EAX, 0EC02h         ;GetSysOut --  2 nDWord params DPL 3\r
986                 MOV ECX, 318h\r
987                 MOV DX, OSCodeSel\r
988                 MOV ESI, OFFSET __GetSysOut\r
989                 CALL FWORD PTR _AddCallGate\r
990 \r
991                 MOV EAX, 0EC04h         ;PutVidAttrs --  4 nDWord params DPL 3\r
992                 MOV ECX, 320h\r
993                 MOV DX, OSCodeSel\r
994                 MOV ESI, OFFSET __PutVidAttrs\r
995                 CALL FWORD PTR _AddCallGate\r
996 \r
997                 MOV EAX, 0EC04h         ;GetVidChar --  4 nDWord params DPL 3\r
998                 MOV ECX, 328h\r
999                 MOV DX, OSCodeSel\r
1000                 MOV ESI, OFFSET __GetVidChar\r
1001                 CALL FWORD PTR _AddCallGate\r
1002 \r
1003                 MOV EAX, 0EC01h         ;SetNormVid --  1 nDWord params DPL 3\r
1004                 MOV ECX, 330h\r
1005                 MOV DX, OSCodeSel\r
1006                 MOV ESI, OFFSET __SetNormVid\r
1007                 CALL FWORD PTR _AddCallGate\r
1008 \r
1009                 MOV EAX, 0EC01h         ;GetNormVid --  1 nDWord params DPL 3\r
1010                 MOV ECX, 338h\r
1011                 MOV DX, OSCodeSel\r
1012                 MOV ESI, OFFSET __GetNormVid\r
1013                 CALL FWORD PTR _AddCallGate\r
1014 \r
1015                 MOV EAX, 0EC03h         ;Chain --  3 nDWord params DPL 3\r
1016                 MOV ECX, 340h\r
1017                 MOV DX, OSCodeSel\r
1018                 MOV ESI, OFFSET __Chain\r
1019                 CALL FWORD PTR _AddCallGate\r
1020 \r
1021                 MOV EAX, 0EC02h         ;SetFileSize --  2 nDWord params DPL 3\r
1022                 MOV ECX, 348h\r
1023                 MOV DX, OSCodeSel\r
1024                 MOV ESI, OFFSET __SetFileSize\r
1025                 CALL FWORD PTR _AddCallGate\r
1026 \r
1027                 MOV EAX, 0EC01h         ;GetCMOSDate --  1 nDWord params DPL 3\r
1028                 MOV ECX, 350h\r
1029                 MOV DX, OSCodeSel\r
1030                 MOV ESI, OFFSET __GetCMOSDate\r
1031                 CALL FWORD PTR _AddCallGate\r
1032 \r
1033                 MOV EAX, 0EC02h         ;CreateDir --  2 nDWord params DPL 3\r
1034                 MOV ECX, 358h\r
1035                 MOV DX, OSCodeSel\r
1036                 MOV ESI, OFFSET __CreateDir\r
1037                 CALL FWORD PTR _AddCallGate\r
1038 \r
1039                 MOV EAX, 0EC03h         ;DeleteDir --  3 nDWord params DPL 3\r
1040                 MOV ECX, 360h\r
1041                 MOV DX, OSCodeSel\r
1042                 MOV ESI, OFFSET __DeleteDir\r
1043                 CALL FWORD PTR _AddCallGate\r
1044 \r
1045                 MOV EAX, 0EC03h         ;DeAliasMem --  3 DWord params DPL 3\r
1046                 MOV ECX, 368h\r
1047                 MOV DX, OSCodeSel\r
1048                 MOV ESI, OFFSET __DeAliasMem\r
1049                 CALL FWORD PTR _AddCallGate\r
1050 \r
1051                 MOV EAX, 0EC04h         ;AliasMem --  4 DWord params DPL 3\r
1052                 MOV ECX, 370h\r
1053                 MOV DX, OSCodeSel\r
1054                 MOV ESI, OFFSET __AliasMem\r
1055                 CALL FWORD PTR _AddCallGate\r
1056 \r
1057                 MOV EAX, 08C02h         ;GetDMACount --  2 DWord params DPL 0\r
1058                 MOV ECX, 378h\r
1059                 MOV DX, OSCodeSel\r
1060                 MOV ESI, OFFSET __GetDMACount\r
1061                 CALL FWORD PTR _AddCallGate\r
1062 \r
1063                 MOV EAX, 08C03h         ;AllocDMAPage --  3 DWord params DPL 0\r
1064                 MOV ECX, 380h\r
1065                 MOV DX, OSCodeSel\r
1066                 MOV ESI, OFFSET __AllocDMAPage\r
1067                 CALL FWORD PTR _AddCallGate\r
1068 \r
1069                 MOV EAX, 0EC02h         ;SetJobName --  2 DWord params DPL 3\r
1070                 MOV ECX, 388h\r
1071                 MOV DX, OSCodeSel\r
1072                 MOV ESI, OFFSET __SetJobName\r
1073                 CALL FWORD PTR _AddCallGate\r
1074 \r
1075                 MOV EAX, 0EC01h         ;KillJob --  1 DWord params DPL 3\r
1076                 MOV ECX, 390h\r
1077                 MOV DX, OSCodeSel\r
1078                 MOV ESI, OFFSET __KillJob\r
1079                 CALL FWORD PTR _AddCallGate\r
1080 \r
1081                 MOV EAX, 0EC01h         ;GetSystemDisk --  1 DWord params DPL 3\r
1082                 MOV ECX, 398h\r
1083                 MOV DX, OSCodeSel\r
1084                 MOV ESI, OFFSET __GetSystemDisk\r
1085                 CALL FWORD PTR _AddCallGate\r
1086 \r
1087                 MOV EAX, 0EC01h         ;UnRegisterSvc --  1 DWord params DPL 3\r
1088                 MOV ECX, 3A0h\r
1089                 MOV DX, OSCodeSel\r
1090                 MOV ESI, OFFSET __UnRegisterSvc\r
1091                 CALL FWORD PTR _AddCallGate\r
1092 \r
1093                 RETN\r
1094 \r
1095 ;================== END of Module =================\r