home *** CD-ROM | disk | FTP | other *** search
/ Shareware Overload / ShartewareOverload.cdr / database / dba1186.zip / EXTENDA.MAC < prev    next >
Text File  |  1986-10-06  |  4KB  |  199 lines

  1. ;----------------------------------
  2. ;
  3. ; EXTENDA.MAC
  4. ;
  5. ;   by Ralph Davis
  6. ;
  7. ; Placed in the public domain.
  8. ;
  9. ; Assembly language macros for Clipper interface
  10. ;
  11. ;----------------------------------
  12.  
  13.           ; Declare all Clipper internal functions
  14.  
  15.           EXTRN    _PARINFO:FAR
  16.           EXTRN    _PARC:FAR
  17.           EXTRN    _PARNI:FAR
  18.           EXTRN    _PARNL:FAR
  19.           EXTRN    _PARND:FAR
  20.           EXTRN    _PARDS:FAR
  21.           EXTRN    _PARL:FAR
  22.  
  23.           EXTRN    _RETC:FAR
  24.           EXTRN    _RETNI:FAR
  25.           EXTRN    _RETNL:FAR
  26.           EXTRN    _RETND:FAR
  27.           EXTRN    _RETDS:FAR
  28.           EXTRN    _RETL:FAR
  29.  
  30.  
  31. ; Equates from EXTEND.H
  32.  
  33. UNDEF     EQU      0
  34. CHARACTER EQU      1
  35. NUMERIC   EQU      2
  36. LOGICAL   EQU      4
  37. DATE      EQU      8
  38. ALIAS     EQU      16
  39.  
  40. TRUE      EQU      1
  41. FALSE     EQU      0
  42.  
  43.  
  44. ;--------------------------------------
  45. ;
  46. ; _PAR functions
  47. ;
  48. ;-----------------
  49.  
  50. ; get number of parms passed--returned in AX
  51.  
  52. GET_PCOUNT MACRO
  53.           XOR      AX,AX
  54.           PUSH     AX
  55.           CALL     _PARINFO
  56.           ADD      SP,2
  57.           ENDM
  58.  
  59.  
  60. ; get type of requested parm--returned in AX
  61.  
  62. GET_PTYPE MACRO    N
  63.           MOV      AX,N
  64.           PUSH     AX
  65.           CALL     _PARINFO
  66.           ADD      SP,2
  67.           ENDM
  68.  
  69.  
  70. ; get requested parm as string--returns segment and offset in AX:BX
  71.  
  72. GET_CHAR  MACRO    N
  73.           MOV      AX,N
  74.           PUSH     AX
  75.           CALL     _PARC
  76.           ADD      SP,2
  77.           ENDM
  78.  
  79.  
  80. ; get requested parm as integer--returned in AX
  81.  
  82. GET_INT   MACRO    N
  83.           MOV      AX,N
  84.           PUSH     AX
  85.           CALL     _PARNI
  86.           ADD      SP,2
  87.           ENDM
  88.  
  89.  
  90. ; get requested parm as long integer--returned in AX:BX
  91.  
  92. GET_LONG  MACRO    N
  93.           MOV      AX,N
  94.           PUSH     AX
  95.           CALL     _PARNL
  96.           ADD      SP,2
  97.           ENDM
  98.  
  99.  
  100. ; get requested parm as double--returned in AX:BX:CX:DX
  101.  
  102. GET_DBL   MACRO    N
  103.           MOV      AX,N
  104.           PUSH     AX
  105.           CALL     _PARND
  106.           ADD      SP,2
  107.           ENDM
  108.  
  109.  
  110. ; get requested parm as date string
  111. ; returns segment and offset as AX:BX
  112.  
  113. GET_DATESTR MACRO N
  114.           MOV      AX,N
  115.           PUSH     AX
  116.           CALL     _PARDS
  117.           ADD      SP,2
  118.           ENDM
  119.  
  120.  
  121. ; get requested parm as logical true or false--returned in AX
  122.  
  123. GET_LOGICAL MACRO N
  124.           MOV      AX,N
  125.           PUSH     AX
  126.           CALL     _PARL
  127.           ADD      SP,2
  128.           ENDM
  129.  
  130.  
  131. ;--------------------------------------
  132. ;
  133. ; _RET functions
  134. ;
  135. ;---------------
  136. ; return char pointer in REG1:REG2
  137.  
  138. RET_CHAR  MACRO    REG1,REG2
  139.           IRP      X,<REG1,REG2>
  140.           PUSH     X
  141.           ENDM
  142.           CALL     _RETC
  143.           ADD      SP,4
  144.           ENDM
  145.  
  146.  
  147. ; return integer in REG1
  148.  
  149. RET_INT   MACRO    REG1
  150.           PUSH     REG1
  151.           CALL     _RETNI
  152.           ADD      SP,2
  153.           ENDM
  154.  
  155.  
  156. ; return long integer in REG1:REG2
  157.  
  158. RET_LONG  MACRO    REG1,REG2
  159.           IRP      X,<REG1,REG2>
  160.           PUSH     X
  161.           ENDM
  162.           CALL     _RETNL
  163.           ADD      SP,4
  164.           ENDM
  165.  
  166.  
  167. ; return 8-byte floating-point number in REG1:REG2:REG3:REG4
  168.  
  169. RET_DBL   MACRO    REG1,REG2,REG3,REG4
  170.           IRP      X,<REG1,REG2,REG3,REG4>
  171.           PUSH     X
  172.           ENDM
  173.           CALL     _RETND
  174.           ADD      SP,8
  175.           ENDM
  176.  
  177.  
  178. ; return date string pointed to by REG1:REG2
  179.  
  180. RET_DATESTR MACRO REG1,REG2           ; return pointer to date string
  181.                                       ; in REG1:REG2
  182.           IRP      X,<REG1,REG2>
  183.           PUSH     X
  184.           ENDM
  185.           CALL     _RETDS
  186.           ADD      SP,4
  187.           ENDM
  188.  
  189.  
  190. ; return logical true (1) or false (0) in REG1
  191.  
  192. RET_LOGICAL MACRO REG1                ; return 1 or 0 in REG1
  193.           PUSH     REG1
  194.           CALL     _RETL
  195.           ADD      SP,2
  196.           ENDM
  197.  
  198. ; EOF:  EXTENDA.MAC
  199.