Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

44 lines
1.9 KiB

;;***********************************************************************
;; NAME: pathlabl
;; DESC: creates a public label at the spot it is placed, using the name
;; given.
;; INPUT: either module name or procedure name
;; OUTPUT: public label
;; LOGIC: LBL-parameter-name will have four values -
;; - one for each pass (2)
;; - one for start and one for stop
;; if LBL is not defined, it is first pass, at beginning label
;; - set it to 1 and create the start label
;; if LBL = 1, it is first pass, at end label
;; - set it to 2 and create stop label
;; if LBL = 2, it is second pass, at beginning label
;; - set it to 3 and create the start label
;; if LBL = 3, it is second pass, at end label
;; - set it to 4 and create stop label
;; if LBL = 4, it is second pass,
;; - this macro has been invoked more than twice with same parm
;; - issue error message
;;***********************************************************************
IF1
; %OUT COMPONENT=COMMON, MODULE=PATHMAC.INC ...
ENDIF
pathlabl MACRO pnam
IFNDEF LBL_&pnam ;;IF THIS IS THE FIRST TIME,
LBL_&pnam = 0 ;;DEFINE IT, INITIALLY ZERO
ELSE ;;SINCE IT IS DEFINED
IF (LBL_&pnam GT 3) ;;IF USED TOO MANY TIMES,
.ERR NON-UNIQUE OPERAND ON PATHLABL
EXITM ;;ABORT THIS GENERATION
ENDIF
ENDIF
IF (LBL_&pnam EQ 0) OR (LBL_&pnam EQ 2) ;;ready for START?
$$A_START_&pnam: ;;create START label
PUBLIC $$A_START_&pnam ;;make it public
ELSE ;;SINCE SWITCH MAY BE 1 OR 3,
$$A_STOP_&pnam: ;;create STOP label
PUBLIC $$A_STOP_&pnam ;;make it public
ENDIF
LBL_&pnam = LBL_&pnam + 1 ;;INCREMENT SWITCH
ENDM