home *** CD-ROM | disk | FTP | other *** search
- ; ***************************************************************
- ; DEVELOP.MAC
- ; ***************************************************************
- ;
- ; Assembly language macros for the Developer's Library.
- ;
- ; Copyright(c) 1991 -- James Occhiogrosso
- ;
- ;
- ; To use this file, include it by placing the directive
- ;
- ; INCLUDE DEVELOP.MAC
- ;
- ; at the top of your assembly language source file.
- ;
- ;
- ;
- ; ---------------------------------------------------------------
- PUSH_REGS MACRO ; Save Clipper stack/return address
- ; ---------------------------------------------------------------
- PUSH BP
- MOV BP,SP
- PUSH DS
- PUSH ES
- PUSH SI
- PUSH DI
- ENDM
-
-
- ; ---------------------------------------------------------------
- POP_REGS MACRO ; Restore Clipper stack/return address
- ; ---------------------------------------------------------------
- POP DI
- POP SI
- POP ES
- POP DS
- POP BP
- ENDM
-
-
- ; ---------------------------------------------------------------
- RET_LOGIC MACRO ; Returns a logic value
- ; ---------------------------------------------------------------
- PUSH AX ; Put return value on stack
- CALL __RETL ; Call - return logic function
- ADD SP, 2 ; Clean up stack
- RET ; Actual return
- ENDM
-
-
- ; ---------------------------------------------------------------
- RET_LONG MACRO ; Returns a LONG integer value
- ; ---------------------------------------------------------------
- PUSH DX ; Put return value on stack
- PUSH AX ; as DX:AX (32 bit) long number
- CALL __RETNL ; Call - return long number function
- ADD SP, 4 ; Clean up stack
- RET ; Actual return
- ENDM
-
-
- ; ---------------------------------------------------------------
- RET_NONE MACRO ; Returns to Clipper with no value passed
- ; ---------------------------------------------------------------
- CALL __RET ; Call - return nothing function
- RET ; Actual return
- ENDM
-
- ; ---------------------------------------------------------------
- RET_INT MACRO ; Returns a numeric integer
- ; ---------------------------------------------------------------
- PUSH AX ; Place value on stack
- CALL __RETNI ; Call - return integer function
- ADD SP,2 ; Clean up stack
- RET
- ENDM
-
-
- ; ---------------------------------------------------------------
- RET_DATE MACRO REG1, REG2 ; Returns a date string
- ; ---------------------------------------------------------------
- PUSH REG1 ; Place segment address on stack
- PUSH REG2 ; Place offset address on stack
- CALL __RETDS ; Call - return date function
- ADD SP,4 ; Clean up stack
- RET
- ENDM
-
-
- ; ---------------------------------------------------------------
- RET_STRING MACRO REG1, REG2 ; Returns a character string
- ; ---------------------------------------------------------------
- PUSH REG1 ; Place segment address on stack
- PUSH REG2 ; Place offset address on stack
- CALL __RETC ; Call - return character function
- ADD SP,4 ; Clean up stack
- RET
- ENDM
-
- ; ---------------------------------------------------------------
- P_COUNT MACRO ; Returns number of passed parameters in AX
- ; ---------------------------------------------------------------
- MOV AX, 0 ; Request number of parameters
- PUSH AX ; Place value on stack
- CALL __PARINFO ; Call - parameter info function
- ADD SP, 2 ; Clean up stack
- ENDM
-
-
- ; ---------------------------------------------------------------
- P_TYPE MACRO par_num ; Get value for parameter type to AX
- ; ---------------------------------------------------------------
- MOV AX, par_num ; Request info on parameter
- PUSH AX ; Place value on stack
- CALL __PARINFO ; Return it in AX
- ADD SP, 2 ; Clean up stack
- ENDM
-
-
- ; ---------------------------------------------------------------
- GET_PARNI MACRO par_num ; Place numeric integer parameter in AX
- ; ---------------------------------------------------------------
- MOV AX, par_num ; Parameter number
- PUSH AX ; Place value on stack
- CALL __PARNI ; Return its value in AX
- ADD SP, 2 ; Clean up stack
- ENDM
-
-
- ; ---------------------------------------------------------------
- GET_PARL MACRO par_num ; Place logical value in AX (1 or 0)
- ; ---------------------------------------------------------------
- MOV AX, par_num ; Parameter number
- PUSH AX ; Place value on stack
- CALL __PARL ; Return its value in AX
- ADD SP, 2 ; Clean up stack
- ENDM
-
-
- ; ---------------------------------------------------------------
- GET_PARC MACRO par_num ; Place string pointer in DX:AX
- ; ---------------------------------------------------------------
- MOV AX, par_num ; Parameter number
- PUSH AX ; Place value on stack
- CALL __PARC ; Return pointer in DX:AX
- ADD SP, 2 ; Clean up stack
- ENDM
-
-
- ; ---------------------------------------------------------------
- GET_PARDS MACRO par_num ; Place date pointer in DX:AX (YYYYMMDD)
- ; ---------------------------------------------------------------
- MOV AX, par_num ; Parameter number
- PUSH AX ; Place value on stack
- CALL __PARDS ; Return pointer in DX:AX
- ADD SP, 2 ; Clean up stack
- ENDM
-