;
; system-wide definition of per-task impure pointers
;

; refer to TKB manual, appendix B ("Detailed Task Image File Structure"),
; section B.3.1 ("Low Memory Context"), for explanation.


	.title	vext

	.globl	$VEXTA	;make sure vector area is linked

	.enabl	gbl

	.psect	$$VEX1,D,GBL,RW,REL,OVR
base = .

	. = . + 20	;skip over area used by PL/I clustered resident runtime
			;for FCS vectoring (not used in RMS version built with
			;PLJRES, but offsets must be constant for all libraries
			;- we dont want to rule out use of FCS version...).
			;(note that things will blow up if PL/I actually uses
			;more than this; currently it uses 0 thru 13 octal)
vx$fms == .-base
	.word  0	;PL/I FMS interface: pointer to user impure area,
			; must be initially 0 meaning no impure area yet

vx$fme == .-base
	.word  0,0	;PL/I FMS interface: 2-word error/status block

vx$fmd == .-base
	.word  $FDV	;PL/I FMS interface: pointer to forms driver entry
			; point, which could be in cluster

vx$tkl == .-base
	.limit		;PLIENT (to allow PL/I-callable C routines to be in a
			; cluster library): task lowest address (stack limit)
vx$tkh == vx$tkl + 2	;.limit also gives task highest address, want it or not


vx$nrg == .-base
	.word  fmsnrg	;PL/I FMS interface (debugging version): pointer to 
			; error message for wrong number of arguments

vx$stl == .-base
	.word  fmsstl	;PL/I FMS interface (debugging version): pointer to 
			; warning message for string longer than variable 

vx$fmi == .-base
	.word  0	;PL/I FMS interface: flag for initializing FCS - must
			; initially be 0 meaning FCS not initialized

	.end
