home *** CD-ROM | disk | FTP | other *** search
/ Monster Media 1993 #2 / Image.iso / clipper / 52capi.zip / EXTENDA.MAC < prev    next >
Text File  |  1993-02-15  |  4KB  |  187 lines

  1. ;
  2. ; Filename: EXTENDA.MAC
  3. ; Program.: Clipper Extended Library
  4. ; Author..: Ralph Davis
  5. ; Date....: June 1, 1986
  6. ; Notice..: Placed in the public domain by Tom Rettig Associates.
  7. ;           Clipper is a registered trademark of Computer Associates
  8. ;           International, Inc.
  9. ; Notes...: Assembly language macros for Clipper interface
  10. ;           Modified for use with Microsoft Macro Assembler.
  11. ;
  12.          EXTRN    __PARINFO:FAR
  13.          EXTRN    __PARC:FAR
  14.          EXTRN    __PARNI:FAR
  15.          EXTRN    __PARNL:FAR
  16.          EXTRN    __PARND:FAR
  17.          EXTRN    __PARDS:FAR
  18.          EXTRN    __PARL:FAR
  19.  
  20.          EXTRN    __RETC:FAR
  21.          EXTRN    __RETNI:FAR
  22.          EXTRN    __RETNL:FAR
  23.          EXTRN    __RETND:FAR
  24.          EXTRN    __RETDS:FAR
  25.          EXTRN    __RETL:FAR
  26.  
  27.  
  28. ; Equates from EXTEND.H
  29.  
  30. UNDEF     EQU     0
  31. CHARACTER EQU     1
  32. NUMERIC   EQU     2
  33. LOGICAL   EQU     4
  34. DATE      EQU     8
  35. ALIAS     EQU     16
  36.  
  37.  
  38. ; get number of parms passed--returned in AX
  39.  
  40. GET_PCOUNT MACRO              
  41.          XOR      AX,AX
  42.          PUSH     AX
  43.          CALL     __PARINFO
  44.          ADD      SP,2
  45.          ENDM
  46.  
  47.  
  48. ; get type of requested parm--returned in AX
  49.  
  50. GET_PTYPE MACRO   N 
  51.          MOV      AX,N
  52.          PUSH     AX
  53.          CALL     __PARINFO
  54.          ADD      SP,2
  55.          ENDM
  56.  
  57.  
  58. ; get requested parm as string--returns segment and offset in AX:BX
  59.  
  60. GET_CHAR MACRO    N           
  61.          MOV      AX,N
  62.          PUSH     AX
  63.          CALL     __PARC
  64.          ADD      SP,2
  65.          ENDM
  66.  
  67.  
  68. ; get requested parm as integer--returned in AX
  69.  
  70. GET_INT  MACRO    N
  71.          MOV      AX,N
  72.          PUSH     AX
  73.          CALL     __PARNI
  74.          ADD      SP,2
  75.          ENDM
  76.  
  77.  
  78. ; get requested parm as long integer--returned in AX:BX
  79.  
  80. GET_LONG MACRO    N            
  81.          MOV      AX,N
  82.          PUSH     AX
  83.          CALL     __PARNL
  84.          ADD      SP,2
  85.          ENDM
  86.  
  87.  
  88. ; get requested parm as double--returned in AX:BX:CX:DX
  89.  
  90. GET_DBL  MACRO    N   
  91.          MOV      AX,N
  92.          PUSH     AX
  93.          CALL     __PARND
  94.          ADD      SP,2
  95.          MOV      ES,DX
  96.          MOV      SI,AX
  97.          MOV      AX,ES:[SI]
  98.          MOV      BX,ES:[SI + 2]
  99.          MOV      CX,ES:[SI + 4]        
  100.          MOV      DX,ES:[SI + 6]        
  101.          ENDM
  102.  
  103. ; get requested parm as date string--returns segment and offset as AX:BX
  104.  
  105. GET_DATESTR MACRO N           
  106.          MOV      AX,N
  107.          PUSH     AX
  108.          CALL     __PARDS
  109.          ADD      SP,2
  110.          ENDM
  111.  
  112.  
  113. ; get requested parm as logical true or false--returned in AX
  114.  
  115. GET_LOGICAL MACRO N
  116.          MOV      AX,N
  117.          PUSH     AX
  118.          CALL     __PARL
  119.          ADD      SP,2
  120.          ENDM
  121.  
  122.  
  123. ; return char pointer in REG1:REG2
  124.  
  125. RET_CHAR MACRO    REG1,REG2   
  126.          IRP      X,<REG1,REG2>
  127.          PUSH     X
  128.          ENDM
  129.          CALL     __RETC
  130.          ADD      SP,4
  131.          ENDM
  132.  
  133.  
  134. ; return integer in REG1
  135.  
  136. RET_INT  MACRO    REG1        
  137.          PUSH     REG1
  138.          CALL     __RETNI
  139.          ADD      SP,2
  140.          ENDM
  141.  
  142.  
  143. ; return long integer in REG1:REG2
  144.  
  145. RET_LONG MACRO    REG1,REG2   
  146.          IRP      X,<REG1,REG2>
  147.          PUSH     X
  148.          ENDM
  149.          CALL     __RETNL
  150.          ADD      SP,4
  151.          ENDM
  152.  
  153.  
  154. ; return 8-byte floating-point number in REG1:REG2:REG3:REG4
  155.  
  156. RET_DBL  MACRO    REG1,REG2,REG3,REG4 
  157.          IRP      X,<REG1,REG2,REG3,REG4>
  158.          PUSH     X
  159.          ENDM
  160.          CALL     __RETND
  161.          ADD      SP,8
  162.          ENDM
  163.  
  164.  
  165. ; return date string pointed to by REG1:REG2
  166.  
  167. RET_DATESTR MACRO REG1,REG2           ; return pointer to date string
  168.                                       ; in REG1:REG2
  169.          IRP      X,<REG1,REG2>
  170.          PUSH     X
  171.          ENDM
  172.          CALL     __RETDS
  173.          ADD      SP,4
  174.          ENDM
  175.  
  176.  
  177. ; return logical true (1) or false (0) in REG1
  178.  
  179. RET_LOGICAL MACRO REG1                ; return 1 or 0 in REG1
  180.          PUSH     REG1
  181.          CALL     __RETL
  182.          ADD      SP,2
  183.          ENDM
  184.  
  185. ; EOF:  EXTENDA.MAC
  186.  
  187.