home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CP/M
/
CPM_CDROM.iso
/
simtel
/
sigm
/
vols000
/
vol028
/
exorg.src
< prev
next >
Wrap
Text File
|
1984-04-29
|
1KB
|
44 lines
;
; FUNCTION EXORG( VAR VALUE: CHAR): INTEGER;EXTERNAL;
;
; THIS EXTERNAL FUNCTION WILL RETURN THE ADDRESS LOCATION OF THE
; ARGUMENT OF THE FUNCTION. BECAUSE ALL VARIABLES EXCEPT INTEGERS
; HAVE THEIR ORIGIN ADDRESS IN THE SAME LOCATION THIS SAME
; FUNCTION COULD BE USED FOR MANY DIFFERENT ARGUMENT TYPES. FOR
; EXAMPLE:
;
; FUNCTION EXORG( VAR VALUE: REAL): INTEGER;EXTERNAL;
; FUNCTION EXORG( VAR VALUE: STRING255): INTEGER;EXTERNAL;
;
; THIS ROUTINE WILL HOPEFULLY COVER ALL CASES WHERE THE USER
; WANTS THE ADDRESS (OR STARTING ADDRESS) OF A VARIABLE . ALTHOUGH
; ALL THE ABOVE DEFINITIONS PROBABLY WILL NOT BE NEEDED ALL ARE
; AVAILABLE BY JUST CHANGING THE VARIABLE TYPE DEFINITION IN THE EXTERNAL
; FUNCTION DEFINITION, AND THEREBY FOOL THE COMPILER.
;
; THIS PROCEDURE COULD BE ADAPTED TO ACCOMMODATE INTEGERS BY ORGH AND
; ORGL TO 10 AND 9 RESP.
;
; A TYPICAL APPLICATION FOR THIS FUNCTION WOULD BE TO FIND OUT AN ARRAYS
; STARTING ADDRESS SO YOU COULD DMA DIRECTLY INTO IT.
;
;
ORGH EQU 9;
ORGL EQU 8; HIGH AND LOW ORDER ORIGIN ADDR OF THE VARIABLE
FUNCL EQU 2;
FUNCH EQU 3;FUNCTION RETURN OFFSET LOCATION
NAME ORGEX; LINKER MODULE NAME
ENTRY RLORG
ENTRY STRORG
ENTRY EXORG; LINKER ENTRY PTS FOR ALL ABOVE FUNCTIONS
RLORG:
STRORG;
EXORG: ENTR D,2,0; MACRO SETUP ROUTINE
MOV A,ORGL(IX)
MOV FUNCL(IX),A; STORING LOW ORDER BYTE
MOV A,ORGH(IX)
MOV FUNCH(IX),A; STORING HIGH ORDER BYTE
EXIT D,2; CLEANUP AND WE'RE FINISHED
;
;