home *** CD-ROM | disk | FTP | other *** search
- ;----------------------------------
- ;
- ; EXTENDA.MAC
- ;
- ; by Ralph Davis
- ;
- ; Placed in the public domain.
- ;
- ; Assembly language macros for Clipper interface
- ;
- ;----------------------------------
-
- ; Declare all Clipper internal functions
-
- EXTRN _PARINFO:FAR
- EXTRN _PARC:FAR
- EXTRN _PARNI:FAR
- EXTRN _PARNL:FAR
- EXTRN _PARND:FAR
- EXTRN _PARDS:FAR
- EXTRN _PARL:FAR
-
- EXTRN _RETC:FAR
- EXTRN _RETNI:FAR
- EXTRN _RETNL:FAR
- EXTRN _RETND:FAR
- EXTRN _RETDS:FAR
- EXTRN _RETL:FAR
-
-
- ; Equates from EXTEND.H
-
- UNDEF EQU 0
- CHARACTER EQU 1
- NUMERIC EQU 2
- LOGICAL EQU 4
- DATE EQU 8
- ALIAS EQU 16
-
- TRUE EQU 1
- FALSE EQU 0
-
-
- ;--------------------------------------
- ;
- ; _PAR functions
- ;
- ;-----------------
-
- ; get number of parms passed--returned in AX
-
- GET_PCOUNT MACRO
- XOR AX,AX
- PUSH AX
- CALL _PARINFO
- ADD SP,2
- ENDM
-
-
- ; get type of requested parm--returned in AX
-
- GET_PTYPE MACRO N
- MOV AX,N
- PUSH AX
- CALL _PARINFO
- ADD SP,2
- ENDM
-
-
- ; get requested parm as string--returns segment and offset in AX:BX
-
- GET_CHAR MACRO N
- MOV AX,N
- PUSH AX
- CALL _PARC
- ADD SP,2
- ENDM
-
-
- ; get requested parm as integer--returned in AX
-
- GET_INT MACRO N
- MOV AX,N
- PUSH AX
- CALL _PARNI
- ADD SP,2
- ENDM
-
-
- ; get requested parm as long integer--returned in AX:BX
-
- GET_LONG MACRO N
- MOV AX,N
- PUSH AX
- CALL _PARNL
- ADD SP,2
- ENDM
-
-
- ; get requested parm as double--returned in AX:BX:CX:DX
-
- GET_DBL MACRO N
- MOV AX,N
- PUSH AX
- CALL _PARND
- ADD SP,2
- ENDM
-
-
- ; get requested parm as date string
- ; returns segment and offset as AX:BX
-
- GET_DATESTR MACRO N
- MOV AX,N
- PUSH AX
- CALL _PARDS
- ADD SP,2
- ENDM
-
-
- ; get requested parm as logical true or false--returned in AX
-
- GET_LOGICAL MACRO N
- MOV AX,N
- PUSH AX
- CALL _PARL
- ADD SP,2
- ENDM
-
-
- ;--------------------------------------
- ;
- ; _RET functions
- ;
- ;---------------
- ; return char pointer in REG1:REG2
-
- RET_CHAR MACRO REG1,REG2
- IRP X,<REG1,REG2>
- PUSH X
- ENDM
- CALL _RETC
- ADD SP,4
- ENDM
-
-
- ; return integer in REG1
-
- RET_INT MACRO REG1
- PUSH REG1
- CALL _RETNI
- ADD SP,2
- ENDM
-
-
- ; return long integer in REG1:REG2
-
- RET_LONG MACRO REG1,REG2
- IRP X,<REG1,REG2>
- PUSH X
- ENDM
- CALL _RETNL
- ADD SP,4
- ENDM
-
-
- ; return 8-byte floating-point number in REG1:REG2:REG3:REG4
-
- RET_DBL MACRO REG1,REG2,REG3,REG4
- IRP X,<REG1,REG2,REG3,REG4>
- PUSH X
- ENDM
- CALL _RETND
- ADD SP,8
- ENDM
-
-
- ; return date string pointed to by REG1:REG2
-
- RET_DATESTR MACRO REG1,REG2 ; return pointer to date string
- ; in REG1:REG2
- IRP X,<REG1,REG2>
- PUSH X
- ENDM
- CALL _RETDS
- ADD SP,4
- ENDM
-
-
- ; return logical true (1) or false (0) in REG1
-
- RET_LOGICAL MACRO REG1 ; return 1 or 0 in REG1
- PUSH REG1
- CALL _RETL
- ADD SP,2
- ENDM
-
- ; EOF: EXTENDA.MAC
-