[3829] | 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 |
|
---|
| 32 | CODE32 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
|
---|
| 46 | InitElf 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
|
---|
| 68 | Thunk32_InitElf::
|
---|
| 69 | movzx eax, ax ; Cast USHORT to ULONG.
|
---|
| 70 |
|
---|
| 71 | pop es
|
---|
| 72 | pop ds
|
---|
| 73 | pop ebx
|
---|
| 74 | ret
|
---|
| 75 | InitElf ENDP
|
---|
| 76 | CODE32 ENDS
|
---|
| 77 |
|
---|
| 78 | CODE16 SEGMENT
|
---|
| 79 | ; Call strategy entry point for $elf.
|
---|
| 80 | Thunk16_InitElf::
|
---|
| 81 | call far ptr CODE16:_strategyAsm0
|
---|
| 82 | jmp far ptr FLAT:Thunk32_InitElf
|
---|
| 83 | CODE16 ENDS
|
---|
| 84 |
|
---|
| 85 |
|
---|
| 86 |
|
---|
| 87 | CODE32 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
|
---|
| 101 | InitWin32k 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
|
---|
| 123 | Thunk32_InitWin32k::
|
---|
| 124 | movzx eax, ax ; Cast USHORT to ULONG.
|
---|
| 125 |
|
---|
| 126 | pop es
|
---|
| 127 | pop ds
|
---|
| 128 | pop ebx
|
---|
| 129 | ret
|
---|
| 130 | InitWin32k ENDP
|
---|
| 131 | CODE32 ENDS
|
---|
| 132 |
|
---|
| 133 | CODE16 SEGMENT
|
---|
| 134 | ; Call strategy entry point for $win32k.
|
---|
| 135 | Thunk16_InitWin32k::
|
---|
| 136 | call far ptr CODE16:_strategyAsm1
|
---|
| 137 | jmp far ptr FLAT:Thunk32_InitWin32k
|
---|
| 138 |
|
---|
| 139 | CODE16 ENDS
|
---|
| 140 |
|
---|
| 141 |
|
---|
| 142 | END
|
---|