home *** CD-ROM | disk | FTP | other *** search
/ Shareware Overload / ShartewareOverload.cdr / database / trl14db.zip / TRLSRC.EXE / _TR_FREE.ASM < prev    next >
Assembly Source File  |  1990-10-22  |  2KB  |  57 lines

  1. ; _TR_FREE.ASM
  2. ;
  3. ; by Ralph Davis
  4. ; modified by Rick Spence
  5. ;
  6. ; Placed in the public domain by Tom Rettig Associates, 10/22/1990.
  7. ;
  8. ; TR-LIB low-level memory allocator for C functions
  9. ;
  10. ; Syntax: int _tr_freemem(cpntr);
  11. ;         char *cpntr;
  12. ; Return: 0 if successful, -1 if not.
  13. ; Note  : cpntr MUST be pointer returned by _tr_allocmem().
  14. ;
  15.  
  16.            PUBLIC   _TR_FREEMEM
  17.  
  18. ; Structure for passed parameters
  19. IN_PARMS   STRUC
  20.  
  21. OLD_BP     DW      ?             ; caller's BP
  22.            DD      ?             ; caller's return address
  23. PTR_OFFSET DW      ?             ; offset address of pointer
  24. PTR_SEGMNT DW      ?             ; segment address of pointer
  25.  
  26. IN_PARMS   ENDS
  27.  
  28. ;*********************************************
  29. CODESEG    SEGMENT BYTE PUBLIC 
  30.            ASSUME  CS:CODESEG
  31. ;---------------------------------------------
  32. _TR_FREEMEM    PROC    FAR
  33.            PUSH    BP                ; save caller's BP
  34.            MOV     BP,SP             ; set up stack addressability
  35.            PUSH    DS
  36.            PUSH    ES
  37.            MOV     AX,[BP].PTR_SEGMNT  ; pick up pointer
  38.            MOV     ES,AX
  39.            MOV     AH,49H            ; free the memory
  40.            INT     21H               
  41.            JNC     GOOD_EXIT
  42.            XOR     AX,AX             ; return -1
  43.            DEC     AX
  44.            JMP     SHORT EXIT
  45. GOOD_EXIT: 
  46.            XOR     AX,AX             ; return 0
  47. EXIT:      POP     ES
  48.            POP     DS
  49.            POP     BP
  50.            RET
  51. _TR_FREEMEM    ENDP
  52. ;----------------------------------------
  53. CODESEG    ENDS
  54. ;****************************************
  55.            END
  56.  
  57.