Changeset 6216 for trunk/src


Ignore:
Timestamp:
Jul 8, 2001, 4:53:52 AM (24 years ago)
Author:
bird
Message:

Made getdosenv dev help work.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/win32k/dev32/d32hlp.asm

    r5204 r6216  
    1 ; $Id: d32hlp.asm,v 1.5 2001-02-20 05:00:53 bird Exp $
     1; $Id: d32hlp.asm,v 1.6 2001-07-08 02:53:52 bird Exp $
    22;
    33; d32hlp - 32-bit Device Driver Helper Function.
     
    103103
    104104
     105;
     106; Jump table used by D32Hlp_GetDOSVar
     107;
     108DosVarThunkTab  LABEL DWORD
     109    dd  0                               ; 0 - Reserved
     110    dd  FLAT:Load1600Thunk              ; 1 - GIS
     111    dd  FLAT:Load1616Thunk              ; 2 - LIS
     112    dd  0                               ; 3 - Reserved
     113    dd  FLAT:Load1616                   ; 4 - VectorSDF
     114    dd  FLAT:Load1616                   ; 5 - VectorReboot
     115    dd  FLAT:Load1616                   ; 6 - VectorMSATS
     116    dd  FLAT:ThunkPtr                   ; 7 - YieldFlag (Resched)
     117    dd  FLAT:ThunkPtr                   ; 8 - TCYieldFlag (TCResched)
     118    dd  FLAT:ThunkPtr                   ; 9 - DOSTable (yeah, reserved)
     119    dd  FLAT:Load1616                   ; a - VectorDEKKO (yeah, reserved)
     120    dd  FLAT:ThunkPtr                   ; b - CodePgBuff
     121    dd  FLAT:Load1616                   ; c - VectorRIPL
     122    dd  FLAT:ThunkPtr                   ; d - InterruptLevel
     123    dd  FLAT:ThunkPtr                   ; e - DevClassTables
     124    dd  FLAT:ThunkPtr                   ; f - DMQS_Sel
     125    dd  FLAT:ThunkPtr                   ;10 - APMInfo
     126    dd  FLAT:LoadWord                   ;11 - APM_Length (length of above structure)
     127DosVarThunkTabSize equ ($ - DosVarThunkTab) / 4
     128
     129
    105130;PVOID  D32HLPCALL D32Hlp_GetDOSVar(ULONG ulVarNumber,  /* eax */
    106131;                                   ULONG ulVarMember); /* edx */
     132;
     133; Note that we do post processing of the value....!
     134;
    107135D32Hlp_GetDOSVar proc near
    108     push    bx
     136    ASSUME DS:FLAT, ES:NOTHING
     137    push    ebx
     138    push    es
     139    push    ds
     140    push    ds
     141    pop     es                          ; paranoia
     142    ASSUME  es:FLAT
     143    push    eax
    109144    mov     ecx, edx
    110145    mov     dl, DevHlp_GetDOSVar
     
    112147Thunk32_GetDOSVar::
    113148    jc  Error
     149    mov     ds, ax
     150    pop     eax                         ; Index...
     151    cmp     eax, DosVarThunkTabSize
     152    jg      Error
     153    and     ebx, 0000ffffh              ; (ds:ebx is ptr to be processed)
     154    jmp     es:DosVarThunkTab[eax*4]
     155
     156; Load Word at ds:bx
     157LoadWord::
     158    xor     eax, eax
     159    mov     ax, word ptr [bx]
     160    jmp Finished
     161
     162; Load selector at ds:bx and thunk it.
     163Load1600Thunk::
     164    xor     eax, eax
     165    mov     ax, word ptr [bx]
     166    rol     ax, 16
     167    jmp ThunkIt
     168
     169; Load 16:16 ptr at ds:bx and thunk it.
     170Load1616Thunk::
     171    mov     eax, dword ptr [ebx]
     172    jmp ThunkIt
     173
     174; Load 16:16 ptr at ds:bx and return it.
     175Load1616::
     176    mov     eax, dword ptr [ebx]
     177    jmp Finished
     178
     179; Thunk the ds:bx ptr.
     180ThunkPtr::
     181    mov     ax, ds
    114182    shl     eax, 16
    115     mov     bx, ax
    116     xchg    eax, ebx
     183    mov     ax, bx
     184
     185; Thunks 16:16 ptr in eax
     186ThunkIt::
     187    pop     ds
    117188    call    D32Hlp_VirtToLin
    118     jmp Finished
     189    jmp Finished2
    119190
    120191Error:
    121     xor     eax, eax
    122 
    123 Finished:
    124     pop     bx
     192    add     esp, 4
     193    xor     eax, eax
     194
     195Finished:
     196    pop     ds
     197Finished2:
     198    pop     es
     199    pop     ebx
    125200    ret
    126201D32Hlp_GetDOSVar endp
     202
    127203
    128204
Note: See TracChangeset for help on using the changeset viewer.