;<PUP>PFUDEF.MAC;10     2-SEP-79 15:57:36    EDIT BY TAFT
;<PUP>PFUDEF.MAC;9     2-JUN-77 21:27:34    EDIT BY TAFT
; Add "List" and "Rename" commands
;<PUP>PFUDEF.MAC;8    15-APR-77 09:57:01    EDIT BY TAFT
; Move some flag bits to avoid conflict with PUPDEF
;<PUP>PFUDEF.MAC;7    12-APR-77 10:11:57    EDIT BY TAFT
; Remove VERTXT to PUPFTP.MAC
; Add "Exec" and "Halt" commands
;<PUP>PFUDEF.MAC;6    19-MAR-77 20:05:08    EDIT BY TAFT
; Add "Delete" and "Preserve" commands
; Add "No" prefix
;<PUP>PFUDEF.MAC;5    18-MAR-77 17:05:22    EDIT BY TAFT
; Remove mark and property definitions to PUPDEF.MAC
;<PUP>PFUDEF.MAC;4    15-MAR-77 19:33:33    EDIT BY TAFT
; Improve the help strings a bit
;<PUP>PFUDEF.MAC;3    15-MAR-77 18:54:55    EDIT BY TAFT
; Change "Selective" to "Automatic", add "List" and "Version"
;<PUP>PFUDEF.MAC;2    10-MAR-77 14:16:52    EDIT BY TAFT
; Split out from PUPFTP.MAC

; Copyright 1979 by Xerox Corporation

	UNIVERSAL PFUDEF -- DEFINITIONS SPECIFIC TO PUPFTP (USER)
	SUBTTL E. A. Taft / March 1977

	LOC 140		; Labels in Universal must be unrelocatable


; Parameters

; Herald for version reply
FTPVER==1		; Protocol version implemented

STKLEN==100		; Length of stack
CMDLEN==100		; Length of command buffer (words)


; Storage assignment parameters
; Must be in the order given and multiples of 1000

ILSLOC==200000		; Start of local storage
ILSPLC==240000		; Start of local page storage
ELSLOC==300000		; Assumed end of local storage

FTPVAR=:ILSLOC		; Initialize the globals for LS, LSP
FTPPVR=:ILSPLC



; Flag assignments (accumulator F)

; LH flags -- global
CONOPF==1B9		; A connection is open
PREVRF==1B10		; Version numbers should be preserved

; RH flags -- local, reset at start of each command
DSKDVF==1B27		; Current file is on disk
NECHOF==1B28		; No echoing of typein
NEOLEF==1B29		; No echoing of typed-in eol's
ESCAPF==1B30		; Last input was terminated by Escape
AUTOF==1B31		; Store or Retrieve is "Automatic"
NOPREF==1B32		; "No" prefix in force


; Character attribute flags (in CHRTAB)

	C.PUNC==1B0	; Punctuation
	C.ALPH==1B1	; Alphabetic
	C.NUM==1B2	; Numeric
	C.SPAC==1B3	; Space and tab
	C.CEOL==1B4	; End-of-line
	C.CDEL==1B5	; Command delete
	C.ESC==1B6	; Escape
	C.HSTC==1B7	; Legal host name constituents
	C.HSTP==1B8	; Legal punct in host name expression
	C.CTRL==1B9	; Non-editing control chars

; Main command table
; Entries are of the form
;	X command name, help string, flags
; The dispatch for a given command is C.' mnemonic

; Flag assignments
	CONREQ==1B0		; Connection required
	PRECNF==1B1		; Confirm command before dispatch
	SPCREQ==1B2		; Require space after command

DEFINE COMMANDS <
	X AUTOMATIC,<RETRIEVE, STORE, or DELETE>,CONREQ+SPCREQ
	X BYTE,<byte-size>,SPCREQ
	X CLOSE,<(connection to remote host)>,CONREQ
	X CONNECT,<(to) remote-directory-name  password>,SPCREQ
	X DEBUG,<(printout enabled)>
	X DELETE,<remote-filename>,CONREQ+SPCREQ
	X DIRECTORY,<default-remote-directory>,SPCREQ
	X DISCONNECT,<(same as CLOSE)>,CONREQ
	X EOL,<(convention) CR, CRLF, or TRANSPARENT>,SPCREQ
	X EXEC,<>,PRECNF
	X GET,<(same as RETRIEVE)>,CONREQ+SPCREQ
	X HALT,<>,PRECNF
	X HELP,<>
	X LIST,<remote-file-designator>,CONREQ+SPCREQ
	X LOGIN,<username  password  account>
	X NO,<DEBUG or PRESERVE>
	X OPEN,<(connection to) host-name>,SPCREQ
	X PRESERVE,<VERSION (numbers)>,SPCREQ
	X QUIT,<>,PRECNF
	X RENAME,<old-remote-filename (to be) new-remote-filename>,CONREQ+SPCREQ
	X RETRIEVE,<remote-filename (as) local-filename>,CONREQ+SPCREQ
	X SEND,<(same as STORE)>,CONREQ+SPCREQ
	X STORE,<local-filename (as) remote-filename>,CONREQ+SPCREQ
	X TYPE,<TEXT, BINARY, PAGED, or UNSPECIFIED>,SPCREQ
	X VERSION,<>
>

; Commands following "Automatic"
DEFINE AUTCMDS <
	X DELETE
	X GET
	X RETRIEVE
	X SEND
	X STORE
>

; Commands following "No"
DEFINE NOCMDS <
	X DEBUG
	X PRESERVE
>


	RELOC .-140	; Bypass unrelocatable data
	END