home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Power-Programmierung
/
CD1.mdf
/
magazine
/
d_b_a
/
86_11
/
extenda.mac
< prev
next >
Wrap
Text File
|
1986-10-06
|
4KB
|
199 lines
;----------------------------------
;
; 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