	.TITLE	TRANSFER_ALPHA
;+ ---
;
;	These Alpha transfer vectors are used because when compiling
;	XRN for use with MultiNet, the compiler options are that are
;	needed are /STAND=VAXC/PREFIX=ANSI which causes problems in
;	that certain functions don't get the DECC$ prefix.  This
;	allows us to use those functions anyways.
;
;- ---

;+ ---
;
;	Vector Generating Macro for Alpha/VMS
;
;- ---
	.MACRO	TRANSFER_VECTOR, NAME, FUNCTION_NAME

	.PSECT $LINK$,NOWRT,NOEXE
	.CODE_ADDRESS		'FUNCTION_NAME'		;Transfer to here
	.ADDRESS		'FUNCTION_NAME'		;New Procedure Descr

	.PROCEDURE_DESCRIPTOR	'NAME', _'NAME'		;Define Name
	.WORD			^X1808			;Flags, Kind=NULL
	.WORD			0
	.WORD			26			;Entry_RA
	.WORD			0			;No signature
	.ADDRESS		_'NAME'			;Code Address

	.PSECT $CODE,PIC,SHR,EXE,NORD,NOWRT
_'NAME':
	LDQ	R28,-16(R27)	;Get the Code Address
	LDQ	R27, -8(R27)
	JMP	R31,   (R28)	;Jump there
	.ENDM


	TRANSFER_VECTOR CLOSE,		DECC$CLOSE
	TRANSFER_VECTOR FSTAT,		DECC$FSTAT
	TRANSFER_VECTOR ACCESS,		DECC$ACCESS
	TRANSFER_VECTOR CHMOD,		DECC$CHMOD
	TRANSFER_VECTOR DELETE,		DECC$DELETE
	TRANSFER_VECTOR GETPID,		DECC$GETPID
	TRANSFER_VECTOR MKTEMP,		DECC$MKTEMP
	TRANSFER_VECTOR STAT,		DECC$STAT
	TRANSFER_VECTOR SLEEP,		DECC$SLEEP
	TRANSFER_VECTOR MKDIR,		DECC$MKDIR
	TRANSFER_VECTOR KILL,		DECC$KILL

	.END

