home *** CD-ROM | disk | FTP | other *** search
/ io Programmo 23 / IOPROG_23.ISO / SOFT / NFSRC305.ZIP / CPMI / FREESEL.ASM < prev    next >
Encoding:
Assembly Source File  |  1995-05-01  |  2.1 KB  |  72 lines

  1. ; File......: FREESEL.ASM
  2. ; Author....: Ted Means
  3. ; CIS ID....: 73067,3332
  4. ;
  5. ; This is an original work by Ted Means and is placed in the
  6. ; public domain.
  7. ;
  8. ; Modification history:
  9. ; ---------------------
  10. ;     Rev 1.0   01 Jan 1995 03:01:00   TED
  11. ;  Initial release
  12. ;
  13.  
  14. ;  $DOC$
  15. ;  $FUNCNAME$
  16. ;     cpmiFreeSelector()
  17. ;  $CATEGORY$
  18. ;     CPMI
  19. ;  $ONELINER$
  20. ;     Free a selector
  21. ;  $SYNTAX$
  22. ;     int pascal cpmiFreeSelector( SELECTOR Selector )
  23. ;  $ARGUMENTS$
  24. ;     Selector is the previously allocated selector.
  25. ;  $RETURNS$
  26. ;     SUCCEED if successful, FAIL otherwise.
  27. ;  $DESCRIPTION$
  28. ;     This function is used to free selectors that were allocated
  29. ;     with cpmiProtectedPtr(), cpmiMakeAlias(), or cpmiAllocSel().
  30. ;  $EXAMPLES$
  31. ;     FP_SEG( buffer ) = cpmiMakeAlias( selector, AR_WRITE );
  32. ;     FP_OFF( buffer ) = 0;
  33. ;
  34. ;     // Do whatever
  35. ;
  36. ;     cpmiFreeSelector( FP_SEG( buffer ) );
  37. ;  $INCLUDE$
  38. ;     CPMI.H
  39. ;  $SEEALSO$
  40. ;     cpmiAllocSel(), cpmiProtectedPtr(), cpmiMakeAlias()
  41. ;  $END$
  42. ;
  43.  
  44. IDEAL
  45. P286
  46.  
  47. Public    cpmiFreeSelector
  48.  
  49. Segment   _NanFor   Word      Public    "CODE"
  50.           Assume    CS:_NanFor
  51.  
  52. Proc      cpmiFreeSelector    Far
  53.  
  54.           Enter     0,0                           ; Create stack frame
  55.  
  56.           Mov       BX,[Word Ptr BP + 6]          ; Load selector
  57.           Mov       AX,ES                         ; Load ES into AX
  58.           Cmp       AX,BX                         ; ES contain selector?
  59.           JNE       @@Free                        ; If not, continue
  60.           Xor       AX,AX                         ; Clear AX
  61.           Mov       ES,AX                         ; Set ES to null selector
  62.  
  63. @@Free:   Mov       AX,1                          ; DPMI -- Free selector
  64.           Int       31h                           ; Call DPMI
  65.           Mov       AX,1                          ; Default to SUCCEED
  66.           SBB       AX,0                          ; Set to FAIL if carry set
  67.  
  68. @@Exit:   Leave                                   ; Destroy stack frame
  69.           RetF      2
  70. Endp      cpmiFreeSelector
  71. Ends      _NanFor
  72. End