home *** CD-ROM | disk | FTP | other *** search
/ High Voltage Shareware / high1.zip / high1 / DIR24 / EDMI5.ZIP / IFSR0.ZIP / R0DEVHLP.ASM < prev    next >
Assembly Source File  |  1993-07-02  |  3KB  |  143 lines

  1. ;******************************************************************************
  2. ;******************************************************************************
  3. ;*
  4. ;* EXR0R3 - A ring 0/ring 3 IFS skeleton
  5. ;* Copyright (C) 1993 by Andre Asselin
  6. ;*
  7. ;* R0DEVHLP.ASM - C interface to DevHelps
  8. ;*
  9. ;* History:
  10. ;* 6/23/93 - created
  11. ;*
  12. ;******************************************************************************
  13. ;******************************************************************************
  14.  
  15.         .386P
  16.    .MODEL FARSTACK USE16 OS2 LARGE, PASCAL
  17.    LOCALS
  18.  
  19. ;; Includes from the OS/2 Toolkit
  20. INCL_DOSERRORS  EQU     1
  21.    INCLUDE      BSEERR.INC
  22.    INCLUDE      DEVHLP.INC
  23.  
  24.  
  25.    .DATA
  26.    EXTRN _DevHelp:PTR PROC
  27.  
  28.  
  29.    .CODE
  30.  
  31. PUBLIC ALLOCGDTSELECTOR
  32. ALLOCGDTSELECTOR PROC
  33. ARG @@NumSels:WORD, @@pSelArr:PTR WORD
  34. USES DI
  35.    les   di, @@pSelArr
  36.    mov   cx, @@NumSels
  37.    mov   dl, DevHlp_AllocGDTSelector
  38.    call  [_DevHelp]
  39.    jc    @@out
  40.    mov   ax, NO_ERROR
  41.  
  42. @@out:
  43.    ret
  44. ENDP
  45.  
  46.  
  47. PUBLIC GETDOSVAR
  48. GETDOSVAR PROC
  49. ARG @@Index:WORD, @@Result:PTR DWORD
  50.    mov   al, BYTE PTR @@Index
  51.    mov   dl, DevHlp_GetDOSVar
  52.    call  [_DevHelp]
  53.    jc    @@out
  54.  
  55.    mov   cx, bx
  56.    les   bx, @@Result
  57.    mov   es:[bx], cx
  58.    mov   es:[bx+2], ax
  59.    mov   ax, NO_ERROR
  60.  
  61. @@out:
  62.    ret
  63. ENDP
  64.  
  65.  
  66. PUBLIC LINTOGDTSELECTOR
  67. LINTOGDTSELECTOR PROC
  68. ARG @@GDTSel:WORD, @@LinAddr:LARGE NEAR PTR, @@RgnSize:DWORD
  69.    mov   ax, @@GDTSel
  70.    mov   ebx, @@LinAddr
  71.    mov   ecx, @@RgnSize
  72.    mov   dl, DevHlp_LinToGDTSelector
  73.    call  [_DevHelp]
  74.    jc    @@out
  75.    mov   ax, NO_ERROR
  76.  
  77. @@out:
  78.    ret
  79. ENDP
  80.  
  81.  
  82. PUBLIC VMALLOC
  83. VMALLOC PROC
  84. ARG @@PhysAddr:DWORD, @@Size:DWORD, @@Flags:DWORD, @@LinAddr:PTR DWORD
  85. USES EDI
  86.    mov   ecx, @@Size
  87.    mov   edi, @@PhysAddr
  88.    mov   eax, @@Flags
  89.    mov   dl, DevHlp_VMAlloc
  90.    call  [_DevHelp]
  91.    jc    @@out
  92.  
  93.    les   bx, @@LinAddr
  94.    mov   es:[bx], eax
  95.    mov   ax, NO_ERROR
  96.  
  97. @@out:
  98.    ret
  99. ENDP
  100.  
  101.  
  102. PUBLIC VMLOCK
  103. VMLOCK PROC
  104. ARG @@LinAddr:LARGE NEAR PTR, @@RgnSize:DWORD, @@pPageList:LARGE NEAR PTR, \
  105.     @@pLockHandle:LARGE NEAR PTR, @@ActionFlags:DWORD, @@NumElements:PTR DWORD
  106. USES ESI, EDI
  107.    mov   ebx, @@LinAddr
  108.    mov   ecx, @@RgnSize
  109.    mov   edi, @@pPageList
  110.    mov   esi, @@pLockHandle
  111.    mov   eax, @@ActionFlags
  112.    mov   dl, DevHlp_VMLock
  113.    call  [_DevHelp]
  114.    jc    @@out
  115.  
  116.    cmp   @@pPageList, -1
  117.    je    @@nosave
  118.    les   bx, @@NumElements
  119.    mov   es:[bx], eax
  120.  
  121. @@nosave:
  122.    mov   ax, NO_ERROR
  123.  
  124. @@out:
  125.    ret
  126. ENDP
  127.  
  128.  
  129. PUBLIC VMUNLOCK
  130. VMUNLOCK PROC
  131. ARG @@pLockHandle:LARGE NEAR PTR
  132.    mov   esi, @@pLockHandle
  133.    mov   dl, DevHlp_VMUnlock
  134.    call  [_DevHelp]
  135.    jc    @@out
  136.    mov   ax, NO_ERROR
  137.  
  138. @@out:
  139.    ret
  140. ENDP
  141.  
  142.    END
  143.