source: trunk/src/win32k/test/init.asm@ 10366

Last change on this file since 10366 was 3829, checked in by bird, 25 years ago

Early development.

File size: 2.9 KB
Line 
1; $Id: init.asm,v 1.1 2000-07-16 22:18:15 bird Exp $
2;
3; Thunks to call stratgy entry points with init packets.
4;
5; Copyright (c) 2000 knut st. osmundsen (knut.stange.osmundsen@pmsc.no)
6;
7; Project Odin Software License can be found in LICENSE.TXT
8;
9 .386
10
11
12;
13; Include files
14;
15 include devsegdf.inc
16 include os2.inc
17
18
19;
20; Exported symbols
21;
22 public InitElf
23 public InitWin32k
24
25
26;
27; extrns
28;
29 extrn _strategyAsm0:PROC
30 extrn _strategyAsm1:PROC
31
32CODE32 SEGMENT
33;;
34; Initiates the $elf device driver.
35; @cproto ULONG _Optlink InitElf(PVOID pvPacket);
36; @returns
37; @param (ss:)eax pvPacket
38; This parameter is pointer to a stack object which haven't
39; had SSToDS() applied. This is done in this way because it
40; lightens the job to make a far 16 bits pointer of it.
41; @uses eax, ecx, edx
42; @sketch
43; @status
44; @author knut st. osmundsen (knut.stange.osmundsen@pmsc.no)
45; @remark
46InitElf PROC NEAR
47 ASSUME ds:FLAT, es:NOTHING, ss:NOTHING
48 push ebx
49 push ds
50 push es
51 ;
52 ; Make 16:16 ptr to packet pointed to by ss:eax
53 ;
54 mov bx, ss
55 mov es, bx
56 mov bx, ax
57
58 ;
59 ; Set ds to DATA16
60 ;
61 mov ax, seg DATA16
62 mov ds, ax
63
64 ;
65 ; Call stratgy entry point.
66 ;
67 jmp far ptr CODE16:Thunk16_InitElf
68Thunk32_InitElf::
69 movzx eax, ax ; Cast USHORT to ULONG.
70
71 pop es
72 pop ds
73 pop ebx
74 ret
75InitElf ENDP
76CODE32 ENDS
77
78CODE16 SEGMENT
79 ; Call strategy entry point for $elf.
80Thunk16_InitElf::
81 call far ptr CODE16:_strategyAsm0
82 jmp far ptr FLAT:Thunk32_InitElf
83CODE16 ENDS
84
85
86
87CODE32 SEGMENT
88;;
89; Initiates the $win32k device driver.
90; @cproto ULONG _Optlink InitWin32k(PVOID pvPacket);
91; @returns
92; @param (ss:)eax pvPacket
93; This parameter is pointer to a stack object which haven't
94; had SSToDS() applied. This is done in this way because it
95; lightens the job to make a far 16 bits pointer of it.
96; @uses eax, ecx, edx
97; @sketch
98; @status
99; @author knut st. osmundsen (knut.stange.osmundsen@pmsc.no)
100; @remark
101InitWin32k PROC NEAR
102 ASSUME ds:FLAT, es:NOTHING, ss:NOTHING
103 push ebx
104 push ds
105 push es
106 ;
107 ; Make 16:16 ptr to packet pointed to by ss:eax
108 ;
109 mov bx, ss
110 mov es, bx
111 mov bx, ax
112
113 ;
114 ; Set ds to DATA16
115 ;
116 mov ax, seg DATA16
117 mov ds, ax
118
119 ;
120 ; Call stratgy entry point.
121 ;
122 jmp far ptr CODE16:Thunk16_InitWin32k
123Thunk32_InitWin32k::
124 movzx eax, ax ; Cast USHORT to ULONG.
125
126 pop es
127 pop ds
128 pop ebx
129 ret
130InitWin32k ENDP
131CODE32 ENDS
132
133CODE16 SEGMENT
134 ; Call strategy entry point for $win32k.
135Thunk16_InitWin32k::
136 call far ptr CODE16:_strategyAsm1
137 jmp far ptr FLAT:Thunk32_InitWin32k
138
139CODE16 ENDS
140
141
142END
Note: See TracBrowser for help on using the repository browser.