File: TASK.MA of Tape: OS8/OS8-V3D/al-5642a-ba-macrel-linker
(Source file text) 

/.TASK DIRECTIVE AS A MACRO
/
/
/
/
/
/
/
/
/
/COPYRIGHT  (C)  1977 BY DIGITAL EQUIPMENT CORPORATION
/
/
/
/
/
/
/
/
/
/
/THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT NOTICE
/AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
/CORPORATION.  DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY
/FOR ANY ERRORS THAT MAY APPEAR IN THIS DOCUMENT.
/
/THE SOFTWARE DESCRIBED IN THIS DOCUMENT IS FURNISHED TO THE PURCHASER
/UNDER A LICENSE FOR USE ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED
/(WITH INCLUSION OF DIGITAL'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH
/SYSTEM, EXCEPT AS MAY OTHERWISE BE PROVIDED IN WRITING BY DIGITAL.
/
/DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY FOR THE USE
/OR RELIABILITY OF ITS SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY
/DIGITAL.
/
/
/
/
/
/
/
/
/
/
/.TASK DIRECTIVE AS A MACRO-V1A

/WHERE	TSKNUM IS TASK NUMBER           (DEFAULT "TASK")
/	STRTAD IS TASK STARTING ADDRESS (DEFAULT "START" OR ".")
/	STATUS IS TASK FLAGS            (DEFAULT "INIWT" OR 0)
/	VERSON IS TASK VERSION          (DEFAULT "VER" OR 0)
/	AC     IS TASK AC               (DEFAULT 0)
/	MESS1  IS MESSAGE TABLE ENTRY 1 (DEFAULT 0)
/	MESS2  IS MESSAGE TABLE ENTRY 2 (DEFAULT 0)



	.MACRO	.TASK	TSKNUM,STRTAD,STATUS,VERSON,AC,MESS1,MESS2

	.IF NB	TSKNUM	<..TASK=TSKNUM>		//USES SYMBOLS:
	.IF BL	TSKNUM	<..TASK=TASK>		//..TASK=CURRENT TASK NUMBER

	$TASK=.					//$TASK=CURRENT ADDRESS
	.IF ABS	$TASK	<$$TASK=.FLD>		//$$TASK=CURRENT FIELD


	.DSECT	TSTABX				//SET UP TASK STATE TABLE
	*..TASK-1^4				//ORIGIN IN
						//SET $TASK TO STARTING
						//ADDRESS IF NOT "."
	.IF NB	STRTAD	<$TASK=STRTAD>
	.IF BL	STRTAD	<
	IFDEF	START	<$TASK=START>
	>

						//DO STARTING FIELD
	.IF ABS	$TASK	<$$TASK%10+$$TASK>
	.IF REL	$TASK	< <EDF $TASK>%10+<EDF $TASK> >

	$TASK					//DO STARTING ADDRESS

						//DO ACC
	.IF NB	AC	<AC>
	.IF BL	AC	<0>

						//DO MQ
	.IF NB VERSON	<VERSON>
	.IF BL	VERSON	<
	IFDEF	VER	<VER>
	IFNDEF	VER	<0>
	>


	.SECT	*				//RESTORE OLD SECT


	.DSECT	TFTABX				//SET UP TASK FLAGS TABLE
	*..TASK-1				//ORIGIN INTO IT

	.IF NB	STATUS	<STATUS>
	.IF BL	STATUS	<
	IFDEF	INIWT	<INIWT>
	IFNDEF	INIWT	<0>
	>


	.SECT	*				//RESTORE OLD SECT


	.DSECT	MSGTBX				//SET UP MESSAGE TABLE
	*..TASK-1^2				//ORIGIN INTO TABLE

	.IF NB	MESS1	<MESS1>
	.IF BL	MESS1	<0>

	.IF NB	MESS2	<MESS2>
	.IF BL	MESS2	<0>



	.SECT	*				//RESTORE OLD SECT


	.ENDM	.TASK				//DONE