Google
 

Trailing-Edge - PDP-10 Archives - tops20v41_execsrcmod - exec/execpr.mac
There are 46 other files named execpr.mac in the archive. Click here to see a list.
;Edit 989 to EXECPR.MAC by TSANG on Wed 14-Dec-83
;              Allow wildcard defined in HLP: for HLEP command and only display
;;		the first file content. Add a new global symbol HELPSN for HELP command
; UPD ID= 53, FARK:<5-WORKING-SOURCES.EXEC>EXECPR.MAC.3,  17-May-82 17:59:58 by KROSENBLUH
;Edit 735 - Add INDQUS, used as a flag between .RUNST and %ETYPE routines.
; UPD ID= 20, FARK:<4-1-WORKING-SOURCES.EXEC>EXECPR.MAC.3,   6-Apr-82 16:45:12 by KROSENBLUH
;SAVE AC 15 DURING SUBCOMMAND PROCESSING [722]
; UPD ID= 4, FARK:<4-1-WORKING-SOURCES.EXEC>EXECPR.MAC.2,  29-Mar-82 09:51:27 by DONAHUE
;Edit 713 - Define MONVER to determine which version (4.1 or 5)
; UPD ID= 124, SNARK:<5.EXEC>EXECPR.MAC.7,  28-Dec-81 11:16:49 by CHALL
;TCO 5.1644 - UPDATE COPYRIGHT NOTICE
; UPD ID= 93, SNARK:<5.EXEC>EXECPR.MAC.6,  21-Oct-81 11:20:40 by GROUT
;TCO 5.1569 REMOVE EXTBUF AND DCSSTG
; UPD ID= 37, SNARK:<5.EXEC>EXECPR.MAC.5,  14-Aug-81 19:29:52 by CHALL
;TCO 5.1454 CHANGE NAMES FROM PRIVS TO EXECPR AND XDEF TO EXECDE
;<5.EXEC>EXECPR.MAC.4, 31-Jul-81 16:15:48, EDIT BY MURPHY
;PCWAIT
; UPD ID= 2234, SNARK:<5.EXEC>EXECPR.MAC.3,  22-Jun-81 11:30:16 by CHALL
; UPD ID= 2067, SNARK:<5.EXEC>EXECPR.MAC.2,  22-May-81 11:51:45 by GROUT
;Tco 5.1343 - Make IPCF code flush buffers only when necessary
;REMOVE MFRK CONDITIONALS
;<4.EXEC>EXECPR.MAC.1, 23-Dec-80 19:08:56, Edit by DK32
;Programmable Command Language
; UPD ID= 1436, SNARK:<5.EXEC>EXECPR.MAC.15,  15-Jan-81 10:51:26 by OSMAN
;Tco 5.1233 - Make FILE-OPENINGS and JSYS OPENF independent
; UPD ID= 1401, SNARK:<5.EXEC>EXECPR.MAC.14,   6-Jan-81 10:28:00 by OSMAN
;tco 5.1225 - Implement jsys trapping and file-opening trapping!
; UPD ID= 1387, SNARK:<5.EXEC>EXECPR.MAC.13,  29-Dec-80 16:13:17 by OSMAN
;More 1356 - Put SYMBF out of way of CMU's .DIF file context window
; UPD ID= 1382, SNARK:<5.EXEC>EXECPR.MAC.12,  24-Dec-80 15:07:10 by OSMAN
;tco 5.1214 - Make SBLOCK have symbolic size instead of "20"
; UPD ID= 1356, SNARK:<5.EXEC>EXECPR.MAC.11,  16-Dec-80 12:22:53 by OSMAN
;Move SYMBF to area not cleared at startup, so we can avoid trying to grab
;huge amount of freespace when starting a customized exec
; UPD ID= 1117, SNARK:<5.EXEC>EXECPR.MAC.10,   3-Oct-80 11:32:58 by OSMAN
;TCO 5.1162 - Add KEPNMS
; UPD ID= 1044, SNARK:<5.EXEC>EXECPR.MAC.9,  25-Sep-80 14:17:27 by OSMAN
;TCO 5.1156 - Add FRKDEF
; UPD ID= 915, SNARK:<5.EXEC>EXECPR.MAC.8,  19-Aug-80 14:00:46 by HESS
; Fix Examine/Deposit commands for multi-forking
; UPD ID= 858, SNARK:<5.EXEC>EXECPR.MAC.7,  10-Aug-80 15:20:21 by OSMAN
;tco 5.1129 - Add symbolic address and expression support
; UPD ID= 743, SNARK:<5.EXEC>EXECPR.MAC.6,   8-Jul-80 10:46:54 by OSMAN
;<5.EXEC>EXECPR.MAC.5,  8-Jul-80 08:54:01, EDIT BY OSMAN
;tco 5.1097 - Make "start" work to retry failing save after load
;<5.EXEC>EXECPR.MAC.4, 30-May-80 17:02:53, EDIT BY MURPHY
;PUT NEW ALERT AND MAIL WATCH UNDER NEWF
; UPD ID= 537, SNARK:<5.EXEC>EXECPR.MAC.3,  20-May-80 15:46:19 by MURPHY
;CHANGE SOME XTND TO NEWF OR MFRK
; UPD ID= 460, SNARK:<4.1.EXEC>EXECPR.MAC.6,  22-Apr-80 16:42:41 by OSMAN
;tco 4.1.1146 - Make CTRL/Q during advice work.
;Add SAVPGM
;<4.1.EXEC>EXECPR.MAC.2, 20-Nov-79 09:32:37, EDIT BY OSMAN
;tco 4.1.1023 - REMOVE ECHOF, PECHOF, OKERR.  ADD TAKDEF, TAKBTS
;REMOVE SAVFLG AND SAVPTR
;<4.EXEC>EXECPR.MAC.117,  3-Oct-79 19:20:00, EDIT BY OSMAN
;REDUCE EDSVB TO ONE WORD
;<4.EXEC>EXECPR.MAC.116,  3-Oct-79 15:27:14, EDIT BY OSMAN
;REDUCE CSVC TO ONE WORD (POINTER TO STRING)
;<4.EXEC>EXECPR.MAC.115, 20-Sep-79 13:33:08, Edit by HESS
; Move FRKTBL to perm free space
;<4.EXEC>EXECPR.MAC.114, 12-Sep-79 15:00:44, EDIT BY OSMAN
;move CLZFFF to area 0'ed before every command
;<4.EXEC>EXECPR.MAC.113, 12-Sep-79 11:05:58, EDIT BY OSMAN
;ADD CLZFFF
;<HESS.E>EXECPR.MAC.15, 19-Aug-79 22:49:53, Edit by HESS
; Add variable storage for extended features
;<4.EXEC>EXECPR.MAC.110,  1-Aug-79 09:58:55, EDIT BY OSMAN
;REMOVE SETNOF (MAKE IT LOCAL LIKE IT'S SUPPOSED TO BE!)
;<4.EXEC>EXECPR.MAC.109, 18-Jun-79 10:36:37, EDIT BY OSMAN
;MOVE JBUF TO AREA NOT ZEROED PER COMMAND SO THAT RLJFNS WILL WORK
;THIS IS NOW NECESSARY SINCE RLJFNS IS CALLED LATER THAN IT USED TO, AFTER
;MWATCH.
;<4.EXEC>EXECPR.MAC.108,  2-May-79 10:25:14, EDIT BY OSMAN
;FLUSH CJFN2
;<4.EXEC>EXECPR.MAC.107,  2-May-79 10:18:19, EDIT BY OSMAN
;GET RID OF CJFN1
;<4.EXEC>EXECPR.MAC.106, 20-Apr-79 14:56:34, EDIT BY OSMAN
;REMOVE ..REL
;<4.EXEC>EXECPR.MAC.105, 20-Apr-79 14:36:43, EDIT BY OSMAN
;MOVE ARCBLK ETC. TO BEFORE PAGE BUFFERS, TO FREE UP A PAGE
;<4.EXEC>EXECPR.MAC.104, 18-Apr-79 16:44:03, EDIT BY OSMAN
;MOVE PIDS TO AREA ZEROED AT STARTUP, SO MYPID GETS INITIALIZED THE FIRST TIME THROUGH
;<4.EXEC>EXECPR.MAC.103, 18-Apr-79 16:32:20, EDIT BY OSMAN
;remove oprpid
;<4.EXEC>EXECPR.MAC.102, 18-Apr-79 14:06:44, EDIT BY OSMAN
;REMOVE NOWQ, ADD NOWPTR
;<4.EXEC>EXECPR.MAC.101,  2-Apr-79 12:58:42, EDIT BY OSMAN
;REMOVE OPRFLG
;<4.EXEC>EXECPR.MAC.100, 30-Mar-79 10:08:29, EDIT BY OSMAN
;CHANGE FBLOCK SIZE FROM 10 TO FBLLEN
;<4.EXEC>EXECPR.MAC.99, 28-Mar-79 15:13:40, EDIT BY OSMAN
;ADD MPENDF
;<4.EXEC>EXECPR.MAC.98, 12-Mar-79 18:03:01, EDIT BY KONEN
;UPDATE COPYRIGHT FOR RELEASE 4
;<4.EXEC>EXECPR.MAC.97, 19-Feb-79 14:43:53, EDIT BY OSMAN
;ADD CLF
;<4.EXEC>EXECPR.MAC.96,  8-Feb-79 15:47:02, EDIT BY OSMAN
;ADD DPLPT, DPLSTK
;<4.EXEC>EXECPR.MAC.95,  1-Feb-79 17:21:14, EDIT BY OSMAN
;ADD IINTDF
;<4.EXEC>EXECPR.MAC.94, 18-Jan-79 11:36:59, EDIT BY OSMAN
;ADD INTDF
;<4.EXEC>EXECPR.MAC.93, 14-Jan-79 23:28:13, EDIT BY HEMPHILL
;ADD BLOCK FOR DOING LONG FORM RFSTS JSYSES
;MOVE JBUFP TO AREA NOT ZEROED EVERY COMMAND
;<4.EXEC>EXECPR.MAC.91, 13-Jan-79 15:53:16, EDIT BY OSMAN
;ADD XDICT
;<4.EXEC>EXECPR.MAC.90, 12-Jan-79 17:37:44, EDIT BY OSMAN
;REMOVE RUNFK
;<4.EXEC>EXECPR.MAC.89,  4-Jan-79 19:37:05, EDIT BY OSMAN
;REMOVE FREE
;<4.EXEC>EXECPR.MAC.88, 22-Dec-78 09:29:48, EDIT BY OSMAN
;move EDIT and COMPILE default strings to area zeroed at startup
;<4.EXEC>EXECPR.MAC.87,  6-Dec-89 10:44:47, EDIT BY OSMAN
;REMOVE BFP, ADD .P
;<4.EXEC>EXECPR.MAC.86,  1-Dec-78 10:33:58, EDIT BY KIRSCHEN
;ADD PECHOF
;<4.EXEC>EXECPR.MAC.85, 10-Nov-78 10:07:30, EDIT BY OSMAN
;tco 4.2087 - move defaults to area zeroed at initial startup
;<4.EXEC>EXECPR.MAC.84, 27-Oct-78 11:51:48, EDIT BY OSMAN
;REMOVE UGBUF, ACTBUF, DGBUF, SGBUF (MAKE THEM LOCAL STORAGE)
;<4.EXEC>EXECPR.MAC.82, 26-Oct-78 16:04:35, EDIT BY OSMAN
;REMOVE GSSBLK, SSSBLK
;<4.EXEC>EXECPR.MAC.81, 26-Oct-78 15:33:09, EDIT BY OSMAN
;REMOVE ALL "INTERN" STATEMENTS (PUT :: ON END OF ALL VARIABLES)
;<CALVIN>EXECPR.MAC.1,  9-Aug-78 14:39:12, EDIT BY CALVIN
; Insert variables for archive system
;<4.EXEC>EXECPR.MAC.78, 21-Oct-78 20:02:03, EDIT BY HEMPHILL
;TCO 4.2058
;MAKE XSAVE USE THE CONTENTS OF .JOBSY INSTEAD OF XEND AS THE LAST
;REQUIRED LOCATION WHEN SAVING THE EXEC WITHOUT SYMBOLS.  THIS MAKES
;ALLOWANCE FOR MACREL AND PAT.., WHICH ARE LOADED AFTER XEND
;<4.EXEC>EXECPR.MAC.77, 20-Oct-78 19:34:24, EDIT BY OSMAN
;ADD IPCAGE
;<4.EXEC>EXECPR.MAC.76, 20-Oct-78 11:25:32, EDIT BY OSMAN
;ADD MDAPID
;<4.EXEC>EXECPR.MAC.75,  8-Oct-78 14:57:10, EDIT BY OSMAN
;FLUSH NERET, CHANGE REFS TO RERET, SINCE THAT'S ALL NERET EVER;<4.EXEC>EXECPR.MAC.72,  3-Oct-78 12:47:29, EDIT BY OSMAN
;REMOVE MUTILB
;ADD IPC SYMBOLS
;<4.EXEC>EXECPR.MAC.69, 25-Sep-78 10:46:33, EDIT BY OSMAN
;REMOVE OQCF
;<4.EXEC>EXECPR.MAC.67, 17-Sep-78 17:28:37, EDIT BY OSMAN
;PUT IN CSBUFP, CHANGE CSBUF TO FREE, CHANGE CSBUFL TO FRESIZ
;<4.EXEC>EXECPR.MAC.66, 15-Sep-78 16:22:54, EDIT BY OSMAN
;ADD DICT, REMOVE CSBUFP, CSBUFE
;<4.EXEC>EXECPR.MAC.65, 21-Aug-78 16:49:29, EDIT BY HELLIWELL
;REMOVE "SET EDITOR" STORAGE
;<4.EXEC>EXECPR.MAC.64, 13-Aug-78 14:10:58, Edit by HELLIWELL
;ADD EDTYPE AND EDFILE BUFFER FOR "SET EDITOR"
;<4.EXEC>EXECPR.MAC.63, 10-Aug-78 09:08:31, EDIT BY OSMAN
;ADD PRGCEL
;<4.EXEC>EXECPR.MAC.61,  3-Aug-78 17:23:21, EDIT BY OSMAN
;ADD JOBNO
;<4.EXEC>EXECPR.MAC.60, 21-Jul-78 15:33:19, EDIT BY OSMAN
;ADD SAVNAM
;<4.EXEC>EXECPR.MAC.59, 21-Jul-78 10:08:37, Edit by PORCHER
;ADD SVPRMT
;<4.EXEC>EXECPR.MAC.58, 20-Jul-78 15:51:57, EDIT BY OSMAN
;ADD SAVT20
;<4.EXEC>EXECPR.MAC.57, 17-Jul-78 11:31:18, EDIT BY OSMAN
;REMOVE GTBUF
;<4.EXEC>EXECPR.MAC.56, 13-Jul-78 15:57:32, EDIT BY OSMAN
;REMOVE EDPTR AND EDCNT
;<4.EXEC>EXECPR.MAC.55, 13-Jul-78 15:47:39, EDIT BY OSMAN
;REMOVE FSPEC
;<4.EXEC>EXECPR.MAC.54, 13-Jul-78 15:43:37, EDIT BY OSMAN
;REMOVE CZBEG, LHED, CRFPNT, SAVPNT, CZEND
;<4.EXEC>EXECPR.MAC.53, 13-Jul-78 15:17:56, EDIT BY OSMAN
;REMOVE CWBUF
;<4.EXEC>EXECPR.MAC.52, 13-Jul-78 14:57:14, EDIT BY OSMAN
;REMOVE BEFDAT AND KEEPNM
;<4.EXEC>EXECPR.MAC.51, 13-Jul-78 14:37:59, EDIT BY OSMAN
;REMOVE SIZCN1, SIZCN2, PAGFL1, PAGFL2
;<4.EXEC>EXECPR.MAC.50, 13-Jul-78 14:25:52, EDIT BY OSMAN
;REMOVE POJFLG AND INDSG
;<4.EXEC>EXECPR.MAC.49, 13-Jul-78 14:23:05, EDIT BY OSMAN
;REMOVE "DEVICE"
;<4.EXEC>EXECPR.MAC.48, 13-Jul-78 14:17:08, EDIT BY OSMAN
;<4.EXEC>EXECPR.MAC.47, 13-Jul-78 13:42:31, EDIT BY OSMAN
;REMOVE DFBUF
;<4.EXEC>EXECPR.MAC.46, 13-Jul-78 13:32:56, EDIT BY OSMAN
;REMOVE FRAME
;<4.EXEC>EXECPR.MAC.45, 13-Jul-78 13:17:17, EDIT BY OSMAN
;<4.EXEC>EXECPR.MAC.44, 13-Jul-78 13:11:20, EDIT BY OSMAN
;REMOVE CSTRR
;<4.EXEC>EXECPR.MAC.42, 11-Jul-78 16:40:52, EDIT BY OSMAN
;REMOVE SYSDIR,SYSTNM,SYSJNM,SYSTAK
;<4.EXEC>EXECPR.MAC.41, 11-Jul-78 14:41:27, EDIT BY OSMAN
;REMOVE TADBLK
;<4.EXEC>EXECPR.MAC.39, 11-Jul-78 13:30:40, EDIT BY OSMAN
;REMOVE QUEUE-CLASS GLOBAL STORAGE
;<4.EXEC>EXECPR.MAC.38, 11-Jul-78 10:37:30, EDIT BY OSMAN
;REMOVE PREPAG
;<4.EXEC>EXECPR.MAC.37, 10-Jul-78 20:53:21, EDIT BY OSMAN
;REMOVE TEXTIB
;<4.EXEC>EXECPR.MAC.36, 10-Jul-78 20:40:44, EDIT BY OSMAN
;REMOVE SVCSBP
;<4.EXEC>EXECPR.MAC.34, 10-Jul-78 20:36:59, EDIT BY OSMAN
;REMOVE SVPRMT
;<4.EXEC>EXECPR.MAC.32, 29-Jun-78 16:03:38, EDIT BY OSMAN
;remove ertryf
;<4.EXEC>EXECPR.MAC.31, 29-Jun-78 15:00:10, EDIT BY OSMAN
;<4.EXEC>EXECPR.MAC.30, 28-Jun-78 16:29:24, EDIT BY OSMAN
;REMOVE LIST COMMAND STORAGE (DONE IN TRVAR)
;<4.EXEC>EXECPR.MAC.28, 28-Jun-78 15:48:00, EDIT BY OSMAN
;REMOVE DIRECTORY COMMAND STORAGE (ASSIGNED IN TRVAR INSTEAD)
;<4.EXEC>EXECPR.MAC.25, 27-Jun-78 16:22:51, EDIT BY OSMAN
;PUT BACK THE FEW GETAB CELLS REFERENCED FROM NON-GETABS
;<4.EXEC>EXECPR.MAC.24, 27-Jun-78 16:12:12, EDIT BY OSMAN
;REMOVE ALL THE GETAB CELLS (ROUTINES USE MONSYM SYMBOLS INSTEAD)
;<4.EXEC>EXECPR.MAC.22, 27-Jun-78 15:33:46, EDIT BY OSMAN
;REMOVE SRCSAV
;<4.EXEC>EXECPR.MAC.21, 27-Jun-78 15:16:03, EDIT BY OSMAN
;REMOVE COMPBP,LPROC,DEBAID,TMPJFN,INDJFN,INDBRK,LNGJFN,NXPROC,MAPPNT,
;CSJOB,CSPPN,STRP,STRC
;<4.EXEC>EXECPR.MAC.20, 27-Jun-78 14:35:42, EDIT BY OSMAN
;ADD ACTRCF
;<4.EXEC>EXECPR.MAC.19, 26-Jun-78 14:12:37, EDIT BY OSMAN
;ADD CIPF, COMSIX
;<4.EXEC>EXECPR.MAC.18, 23-Jun-78 21:17:35, EDIT BY OSMAN
;REMOVE UNREFERENCED SYMS: CBUFR, CMDBK, SBFP, TXTBRK
;<4.EXEC>EXECPR.MAC.16, 22-Jun-78 15:16:07, EDIT BY OSMAN
;ADD MAILF
;<4.EXEC>EXECPR.MAC.15, 22-Jun-78 14:51:21, EDIT BY OSMAN
;ADD MALWEN, SUBTRACT MWATCT
;<4.EXEC>EXECPR.MAC.14, 19-Jun-78 14:44:58, EDIT BY OSMAN
;ADD TINPF
;<4.EXEC>EXECPR.MAC.8,  9-Jun-78 16:35:58, EDIT BY OSMAN
;ADD SET COMPILER-SWITCHES VARIABLES (EXTRM, ETC.)
;<4.EXEC>EXECPR.MAC.7, 31-May-78 17:03:01, EDIT BY OSMAN
;REMOVE CHECK FOR DATA BOUNDARY BEING BEFORE PAGE 5
;<4.EXEC>EXECPR.MAC.6, 31-May-78 16:50:32, EDIT BY OSMAN
;<4.EXEC>EXECPR.MAC.5, 31-May-78 16:05:40, EDIT BY OSMAN
;ADD DCSTK, DCPT, DTSTK, DTPT
;<4.EXEC>EXECPR.MAC.4, 31-Jan-78 13:27:54, Edit by PORCHER
;<4.EXEC>EXECPR.MAC.3, 31-Jan-78 11:39:42, Edit by PORCHER
;<4.EXEC>EXECPR.MAC.2, 31-Jan-78 09:20:49, Edit by PORCHER
;Add stuff for execute-only
;Also ECHOF and SVPRMT for "TAKE,ECHO"
;<4.EXEC>EXECPR.MAC.1,  6-Jan-78 20:37:32, EDIT BY HELLIWELL
;ADD EDCNT FOR EDIT/CREATE
;THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY ONLY BE USED
;  OR COPIED IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE.
;
;COPYRIGHT (C) 1980,1981,1982 BY DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.

;TOPS20 'EXECUTIVE' COMMAND LANGUAGE - IMPURE STORAGE

	SEARCH EXECDE,MONSYM,QSRMAC
	TTITLE EXECPR
	SALL

	LOC 140

;NOTE: THIS MODULE SHOULD ONLY ASSIGN GLOBAL STORAGE.  THAT IS, ALL STORAGE
;FOR INDIVIDUAL COMMANDS SHOULD BE ALLOCATED AS LOCAL STORAGE WITHIN THE
;COMMAND'S CODE ITSELF, SUCH AS WITH TRVAR OR STKVAR

;STORAGE FOR EXEC COMMAND INTERPRETER

SBLOCK::BLOCK SBLKLN		;COMND JSYS STATE BLOCK
FBLOCK::BLOCK FBLLEN		;COMND JSYS FUNCTION BLOCK
CBUF::   BLOCK CBUFL		;BUFFER FOR ENTIRE COMMAND TEXT,
				;INCLUDING STUFF ECHOED BY ALT MODE.
CBUFE::	Z			;END OF CBUF
ATMBUF::BLOCK ATMLEN		;BUFFER FOR STORING LAST FIELD
TAKCUR::Z			;CURRENT SETTINGS
TAKLEN::Z			;NUMBER OF INPUT JFNS IN PROGRESS
TAKDEF::Z			;DEFAULTS FOR TAKE
TAKBTS::BLOCK TAKLNX		;CONTROL BITS FOR THIS LEVEL OF TAKE
TAKJFN::BLOCK TAKLNX		;INPUT,,OUTPUT
CIJFN::	Z			;COMMAND (PRIMARY) INPUT JFN
COJFN::	Z			;PRIMARY OUTPUT JFN
JBUFP::	Z			;PUSHDOWN-TYPE POINTER INTO JFN LIST
JBUF::	BLOCK JBUFL		;BUFFER (STACK) FOR JFN'S. JFN'S OF ALL FILES
				;MENTIONED IN A COMMAND MUST BE HERE SO ERROR ROUTINES
				;CAN CLOSE AND RELEASE THEM.

;PCL PROGRAMMABLE COMMAND LANGUAGE PERMANENT VARIABLES

PCFLDB::BLOCK 4			;FIELD DESCRIPTOR BLOCK FOR MERGED COMMANDS
PCFLDP::BLOCK 4			;FIELD DESCRIPTOR BLOCK FOR PRESERVED COMMANDS
PCTXFR::Z			;ADDRESS OF FIRST FREE TEXT BLOCK
PCVVAL::Z			;SYSTEM VARIABLE VALUE
PCVATM::Z			;SYSTEM VARIABLE ATOM
PCLGST::Z			;INDEX OF LAST ALLOCATED ENTRY IN GST
PCLPMT::BLOCK 6			;SELECTABLE PROMPT STRINGS (STRINGVALUES)
XDICT::	Z			;USED BY PERMANENT FREE SPACE MANAGER
CSVC::	Z			;0 OR POINTER TO SAVED COMMAND STRING
EDSVB::	Z			;PLACE TO SAVE POINTER TO EDIT ARGS
SYMBF::	Z			;ADDRESS OF SYMBOL TABLE WINDOW

CSZ1==:.			;CSZ1 TO CSZ2 IS ZEROED EVERY COMMAND

CLZFFF::Z			;POSITIVE IF CLZFF NEEDED AFTER ERROR OR ^C
COMAND::Z			;TABLE ADDRESS OF OR POINTER TO NAME OF COMMAND BEING EXECUTED
COMSIX::Z			;SIXBIT OF COMMAND NAME
PRGCEL::Z			;HOLDS FAKE KEYWORD TABLE ENTRY FOR PROGRAM NAME
CLF::	Z			;-1 WHILE AT COMMAND LEVEL
CIPF::	Z			;-1 WHEN COMMAND IN PROGRESS
BEGINP::Z			;MARKS BEGINNING OF COMMAND INPUT
SVPRMT::Z			;SAVES POINTER TO PROMPT STRING FOR "TAKE, ECHO"

REPARA::Z			;HOLDS REPARSE ADDRESS
CMDACS::BLOCK 20		;SAVED AC'S TO RESTORE THEM ON COMMAND REPARSE
.P::	Z			;SAVED P DURING SUBCOMMANDS
;**;	[722]	Insert 1 line	6-APR-82	KR
.PP::	Z			;[722]SAVED .FP DURING SUBCOMMANDS
.J::	Z			;JFN STACK POINTER, USED FOR COMMAND INPUT
.JBUFP::Z			;JFN STACK POINTER, SAVED DURING COMMAND EXECUTION
INIFH1::Z			;JBUFP VALUE FOR FIRST JFN IN INPUT FILE GROUP
INIFH2::Z			;SAME FOR LAST FILE.  SAME AS INIFH1 UNLESS SEVERAL
				;NAMES (SEPERATED BY COMMAS) WERE GIVEN.

EOFDSP::Z			;SPECIAL DISPATCH ADDRESS FOR EOF PSI, EG DURING "COPY"

DATDSP::Z			;SPECIAL DISPATCH FOR DATA ERROR, DURING CHECKSUM

ILIDSP::Z			;0 OR SPECIAL DISPATCH FOR ILLEG INSTRUCTION TRAP

QTADSP::Z			;0 OR SPECIAL DISPATCH FOR QUOTA EXCEEDED TRAP

;POINTER TO DATA TO RSCAN FOR PROGRAMS

RSPTR::	0

ERRMF::	Z			;NON-ZERO WHILE PROCESSING ERROR
				;CURTAILS PROCESSING OF NESTED ERRORS TO AVOID
				;INFINITE LOOPS IN ERROR CODE.
PCLDCO::Z			;PCL +1/-1 TO DO EXEC COMMAND IN ORIGINAL MODE

CSZ2==:.-1			;END OF AREA ZEROED EVERY COMMAND
   STAT,<
STPTR::	Z
   >;STAT

;SYSTEM CONSTANTS INITIALIZED ONCE AT STARTUP

QTIMES::Z
SNAMES::Z
SYSVER::Z
JOBRT::	Z
TTYJOB::Z
;**;[713] Add 1 line at TTYJOB:+1L	PED	24-MAR-82
MONVER::Z			;[713] -1=V4.1 0=V5

;THIS ONE NOT SET UP AT START UP BECAUSE IT MAY NOT EXIST
NETRDY::Z

CINITF::Z			;NON-ZERO AFTER STARTUP INITIALIZATION COMPLETED
CUSTMF::Z			;PCL SET TO INDICATE RUN OF CUSTOMIZED EXEC
UNIQUE::Z			;DO "AOS A,UNIQUE" TO GET UNIQUE NUMBER IN A
SAVT20::Z			;REMEMBERED EXEC/USER MODE AT STARTUP
SAVNAM::Z			;REMEMBERED PROG NAME WHEN EXEC STARTS

SYSMF::	Z			;SET TO -1 IF SYSTEM MESSAGES NEED PRINTING
LOGDAT::Z			;HOLDS DATE OF LOGIN
LOGINI::Z			;SET TO FLAG "TAKE INITIAL-LOGIN-TYPIN.TXT" AT NEXT OPPERTUNITY
FILINI::Z			;SET TO FLAG "TAKE EXEC-INITIALIZATION.TXT" COMPLETED.

CIDLYF::Z			;0:CLEAR INPUT AFTER ?, BUT BEFORE MESSAGE
				;-1:CLEAR INPUT AFTER ENTIRE ERROR MESSAGE
ACTRCF::Z			;-1 WHEN ^C ALLOWED
IINTDF::Z			;NUMBER OF NESTED IPCON'S
INTDF::	Z			;NUMBER OF NESTED PIOFF'S
IPCALF::Z			;-1 WHEN IPCF INTERRUPTS ALLOWED
IPCRCF::Z			;SET TO -1 WHEN AN IPCF MESSAGE HAS BEEN RECEIVED
IPCCTL::Z			;0 OR SPECIAL ADDRESS TO GO TO AFTER IPCF INTERRUPT
IPCWTF::Z			;SET TO -1 WHEN AN IPCF INTERRUPT HAS BEEN DEFERRED

OLDIDX::Z			;SET TO INDEX OF THE MESSAGE TO BE FLUSHED IF NECESSARY
IPCAGE::BLOCK IPCMAX		;BIRTHDAY OF MESSAGE, LARGER NUMBERS ARE MORE RECENTLY RECEIVED
IPCTBL::BLOCK IPCMAX		;0 OR PID THAT SEND NTH MESSAGE (SEE IPCBUF)
IPCFGS::BLOCK IPCMAX		;FLAGS FROM NTH IPCF MESSAGE IN BUFFER
NOWPTR::Z			;0 OR POINTER TO FIRST QUEUED MOUNT BLOCK
MPENDF::Z			;-1 IF WAITING FOR MOUNT ANSWER
SYMF::	Z			;-1 IF "SET TYPEOUT MODE SYMBOLIC"
PAXLFL::Z			;0:PA1050 ALLOWED
				;-1:PA1050 NOT ALLOWED
CCFLAG::Z			;0:XMIT ^C CAP TO PROGRAMS
				;-1:DON'T XMIT ^C CAP TO PROGRAMS

PRVENF::Z			;NON-0 IF PRIVILEGED COMMANDS "ENABLE"D


MESMSF::Z			;MESSAGE MESSAGE FLAG: NON-0 SAYS TO LOOP TO TYPE
				;"YOU HAVE A MESSAGE" IF APPROPRIATE


BATCHF::Z			;-1: BATCH MODE, 0:NON BATCH MODE
CUSRNO::Z			;USER # IF LOGGED IN, 0 IF NOT
LIDNO::	Z			;LOGGED-IN DIRECTORY NUMBER (SET ONLY AFTER LOGIN)
JOBNO::	Z			;JOB NUMBER
FORK::	Z			;-1 OR HANDLE OF INFERIOR FORK EXEC CURRENTLY KNOWS OF.
				;SET BY GET, RUN, FORK N, ETC.
				;USED BY START, /, \, GOTO, ETC.

RUNFK::	Z			;CURRENT RUNNING FORK
IDFORK::Z			;IDDT FORK
EDFORK::Z			;EDITOR FORK (AUTO KEEP)
CCKEEP::Z			;-1 := TREAT INTERRUPTED FORKS AS KEPT

FRKTAB::BLOCK NFRKS		;FORK TABLE FLAGS,,FRKTBL PNTR
SLFTAB=:FRKTAB+400000

FRKNMS::BLOCK NFRKS+1		;TBLUK STYLE TABLE FOR FORK NAMES
KEPNMS::BLOCK NFRKS+1		;TABLE OF KEPT FORK NAMES
FRKDEF::Z			;ADDRESS OF BLOCK OF FORK DEFAULTS (SEE "FORK BLOCK" IN EXECDE)
JSBDEF::BLOCK BITMLN		;DEFAULT JSYSES TO TRAP ON
TRPOKF::Z			;-1 IF TRAPS OK (TFORK ALREADY DONE)
TSTOPF::Z			;-1 IF STOPPING AFTER EACH TRAP
TFILEF::Z			;-1 IF "SET TRAP FILE-OPENINGS"
TOPENF::Z			;-1 IF "SET TRAP JSYS OPENF" OR "SET TRAP JSYS /ALL"
STAYF::	Z			;-1 TO STAY AT COMMAND LEVEL WHILE PROGRAM RUNNING

ADVFLG::Z			;FLAG TO INDICATE ADVISE CODE ACTIVE
ADVTNM::Z			;TERMINAL WE'RE ADVISING
SAVPGM::Z			; SAVED TT%PGM DURING ADVISE

NPAGE::	Z			;-1 OR XWD FORK HANDLE, ADDR FOR PAGE MAPPED AT "PAGEN"

EFORK::	Z			;FORK HANDLE FOR SPECIAL INFERIOR EXEC FORK
;**;[989]	Add one line			YKT	14-DEC-83
HELPSN::Z			;[989]GLOBAL SYMBOL FOR HELP COMMAND
;**;[735] Insert 1 line after EFORK::		KR	17-MAY-82
INDQUS::Z			;[735]TELL ETYPE NOT TO PRINT ? IN FIRST COL
				; OR EPHEMERALS
MIC,<				;STORAGE FOR MIC

MICFRK::Z			;FORK HANDLE OF MIC.EXE
MICPAG::Z			;AC BLOCK FOR INFERIOR (MIC.EXE)
	BLOCK 17
MICFPG::Z			;POINTER TO FIRST PAGE FREE
>
;PCL PROGRAMMABLE COMMAND LANGUAGE VARIABLES

PCCURC::Z			;ADDRESS OF INNERMOST ACTIVE ECB
PCSFRE::Z			;ADDRESS OF FIRST FREE STRING BLOCK
PCLSTF::Z			;WHILE IN EXEC, FIRST UNUSED WORD OF RUN STACK
PCPOTP::Z			;ADDRESS OF BLOCK OF USER PROGRAM TYPEOUT
PCPEOP::Z			;ADDRESS OF BLOCK OF EXEC TYPEOUT
PCPRGR::Z			;-1 WHILE RUNNING CONTROLLED PROGRAM
PCRPAS::Z			;SAVED P WHILE IN PARSE
PCFLAG::Z			;SEVERAL FLAGS
PCWAIT::Z			;PCL execution waiting for fork to stop

;MAILWATCH VALUES

   NONEWF,<
MAILF::	Z			;-1 IF MAIL WATCH INTERRUPT OCCURS
MALWEN::Z			;WHEN NEXT MAIL INTERRUPT WILL OCCUR
   >
MWATCF::Z			;0 FOR MAILWATCH OFF, -1 FOR ON
TYPING::Z			;-1 IF TYPEOUT IS IN PROGRESS
  NEWF,<
MWATAT::Z			;TIME FOR AUTO MAILWATCH
MWATCT::Z			;TIME FOR NEXT MAIL CHECK
MWATDR::BLOCK NMWAT		;USER NUMBERS FOR MAIL WATCH
MWATWR::BLOCK NMWAT		;LAST WRITE D/T OF MAIL.TXT.1
MWATN::	BLOCK NMWAT		;COUNT OF TIMES CHECKED
MWATN0::BLOCK NMWAT		;RESET COUNT FOR MWATN

MALBUF::BLOCK 20		;TEMP STORAGE FOR GFUST OF MAIL WRITER

;VARIABLES FOR TIME ALERTS

IITSET::Z			;-1 IF TIMER INTS ON
AUTOF::	Z			;-1 IF AUTO MAIL/ALERTS ON

ALRTIM::Z			;TIME OF NEXT ALERT
ALRTMS::BLOCK NALTS		;ADDITIONAL ALERT TIMES

REASON::BLOCK NALTS+1		;POINTERS TO ALERT MESSAGE
   >
;CRJOB/PRARG STORAGE

CRPRA::	BLOCK	20		;STORE PRARG DATA HERE (FROM CRJOB THAT
				;CREATED US)
;AUTOLOGOUT CRAP

STRTIM::Z			;DATE AND TIME EXEC WAS STARTED, IN "GTAD" FORMAT
TTYACF::Z			;TTY ACTIVITY FLAG: AOS'D FOR EACH CHARACTER IN OR OUT
PTTYAC::Z			;PREVIOUS TTY ACTIVITY FLAG (SAVE
				;OVER TIMER TIMEOUT)
ALOST::	Z			;0=> TIMER STUFF NOT STARTED; -1=> HAS BEEN
CJPTIM::Z			;NOT 0=> TIME LIMIT SET AT CRJOB STARTUP
				;THIS MEANS LGOUT AS WELL AS PRINTING
				;"? TIME LIMIT EXCEEDED"
				;-1 IF ALREADY KILLED.

;3 BLOCKS CONTAINING TTY MODE WORD, TAB STOPS (3 WORDS),
; CONTROL CHARACTER OUTPUT CONTROL INFO (CCOC) (2 WORDS).
;ALL THREE ARE CHANGED BY EXEC COMMANDS "HALFDUPLEX" ETC.
;	INITIAL VALUES: SAVED AT EXEC STARTUP fOR USE AT PROG STARTUP.

ITTYMD::BLOCK NTTYMD

;EXEC'S VALUES: USED DURING COMMAND INPUT.

ETTYMD::BLOCK NTTYMD
CERET::	Z			;WHERE TO GO AFTER ERROR MESSAGE. NORMALLY "RERET"
				;WHICH GOES BACK TO CMDIN, BUT IS CHANGED DURING
				;SUBCOMMAND INPUT AS FOR "DIRECTORY"

CTUUO:: Z			;TEMPORARY FOR UUO DISPATCHER

%EDAYT::Z			;DATE & TIME SAVED FROM %D TO

ERCOD::	Z			;ERROR CODE FROM JSYS ERROR RETURN OR FAKE ITRAP

;STORAGE LOCATIONS USED BY "DIRECTORY" AND OTHER COMMANDS FOR
;INFORMATION ABOUT ARGUMENTS

MCOJFN::Z			;MULTI COPY OUTPUT JFN
OUTDSG::Z			;DESIGNATOR OF FILE TO PRINT ON

;FLAG CONTROLLING JFN NAME PRINTING BY TYPIF ROUTINE
TYPGRP::Z			;0:PRINT ONLY IF PROCESSING GROUP
				;-1:PRINT ALWAYS

;PSEUDO-INTERRUPT PC STORAGE WORDS

PCTAB=:.-1
LEV1PC::Z
LEV2PC::Z
LEV3PC::Z
;BUFFERS

PD::    BLOCK PDL		;PUSHDOWN
				;WHILE A PUSHDOWN OVERFLOW ERROR MESSAGE IS BEING
				; TYPED PD OVERFLOWS INTO CBUF, WHICH IS OK.

CJFNBK::BLOCK JBLEN		;ARGUMENT BLOCK FOR "GTJFN" JSYS
				;ALWAYS ALL 0 EXCEPT WORDS 0, 1, 3, 4, 5.
;EXTENDED ARGS FOR GTJFN
LOC CJFNBK+.GJF2
XTNCNT::Z			;FLAGS AND COUNT GO HERE
ECHPTR::Z			;ECHO POINTER FOR GTJFN GOES HERE
ECHCNT::Z			;ECHO COUNT GOES HERE
CTRPTR::Z			;POINT TO SPACE IN FRONT OF COMMAND BUFFER
	Z			;TOP OF BUFFER POINTER

DICT::	Z			;WORD NEEDED BY FREE SPACE MANAGER
CSBUFP::Z			;POINTER TO STRING STORAGE

CSVCC::	BLOCK	1		;SAVE COMMAND INFO

DPLPT::	Z			;POINTER TO PLOT DEFAULTS
DPLSTK::BLOCK QSLEN		;PLOT DEFAULTS
DCPT::	Z			;POINTER TO CPUNCH DEFAULTS
DCSTK::	BLOCK QSLEN		;CPUNCH DEFAULTS
DPPT::	Z			;POINTER TO DEFAULTS FOR PRINT COMMAND
DPSTK::	BLOCK QSLEN		;DEFAULTS FOR PRINT COMMAND
DSPT::	Z			;POINTER TO SUBMIT DEFAULTS
DSSTK::	BLOCK QSLEN		;SUBMIT DEFAULTS
DTPT::	Z			;POINTER TO TPUNCH DEFAULTS
DTSTK::	BLOCK QSLEN		;TPUNCH DEFAULTS

;STORAGE FOR SET DEFAULT COMPILE-SWITCHES

DEXTBL::0			;TABLE HEADER WORD
	BLOCK NEXTS		;ROOM FOR MAXIMUM SIZE TABLE

;STORAGE FOR SYMBOL TABLE DATABASE

SYMOKF::Z			;-1 IF SYMBOL DATABASE OK
SOFF::	Z			;WILL CONTAIN A,,OFFSET FOR INDEXING
SYMBA::	Z			;BEGINNING ADDRESS MAPPED
SYMEA::	Z			;ENDING ADDRESS MAPPED
SYMBEG::Z			;FIRST ADDRESS OF PROG'S SYMBOL TABLE
SYMEND::Z			;LAST ADDRESS OF PROG'S SYMBOL TABLE
LASTP::	Z			;ADDRESS OF MOST RECENT PROGRAM NAME IN WHICH LAST SYMBOL WAS FOUND
NSYMS::	Z			;NUMBER OF PROGRAM SYMBOLS

;STORAGE FOR IPCF VARIABLES

MYPID::	Z			;EXEC PID
INFPID::Z			;INFO'S PID
QSRPID::Z			;PID OF QUASAR (QUEUE REQUESTS GET SENT TO QUASAR)
MDAPID::Z			;MOBY DEVICE ANIMAL'S PID
SNDPDB::BLOCK	PDBSIZ		;PDB FOR SENDING MESSAGES

ABKCNT::Z			;ADDRESS BREAK COUNTER
FTDBLK::BLOCK .RSFET+1		;SPACE FOR SET FILE ON/OFF/EXP
ARCBLK::BLOCK .ARPSZ+1		;BLOCK FOR ARCHIVE TAPE INFO

LRFSTS::BLOCK .RFSFL+1		;BLOCK FOR DOING LONG FORM RFSTS CALL

CSZ4==:.-1			;END OF AREA TO ZERO AT STARTUP (BEGINS AT CSZ1)
XPGD==.-1			;END OF NON-PAGE DATA

;BUFFERS FOR MAPPING PAGES

	LOC <.+777>&777000	;SET LOCATION TO NEXT PAGE BOUNDARY
BPGD==.				;BEGINNING OF PAGE DATA

MIC,<
PAGEMI::BLOCK ^D512		;PAGE TO SHARE WITH MIC.EXE
>

PAGEN::	BLOCK ^D512		;POSSIBLE PAGE MAPPED FOR EXAMINE, DEPOSIT, ETC.
				;OR LOOKING AT JOBDAT.
				;IF A PAGE IS MAPPED HERE "NPAGE" IDENTIFIES IT.

 XDEND==:.			;FIRST LOC OF PURE SEGMENT
SUBTTL ONCE-ONLY MODULE FOR EXEC CREATION

;USEFUL MACROS

DEFINE TMSG(TXT) <
	HRROI 1,[ASCIZ \TXT\]
	PSOUT		;;DUMP STRING ON TERMINAL
>

DEFINE TNOUT <
	MOVEI 1,.PRIOU	;;USE PRIMARY JFN
	MOVEI 3,^D10	;;DECIMAL NUMBER
	NOUT		;;DUMP IT
	 ERJMP .+1	;;IGNORE ERRORS
>

DEFINE EMSG(TXT) <
	TMSG <
?TXT
>
	HALTF		;;PRINT ?MESSAGE AND HALT
	JRST XSAVE	;;RETRY SAVE IF CONTINUED
>

;REGISTER USAGE

;C(10) := STARTING PAGE #
;C(11) := # OF PAGES WITHOUT SYMBOLS
;C(12) := HIGHEST PAGE # + 1
;C(13) := # OF PAGES IN SYMBOL TABLE
;C(14) := JFN TO FOR .EXE FILE
	LOC PAGEN		;USE THIS PAGE

XSAVE::!			;ENTRY POINT
	XCT INISTK		;JSERR NEEDS STACK POINTER
	MOVE 0,.JBSYM##		;GET SYM TABLE PNTR
	MOVEM 0,.JOBSY		;PLACE IN CORRECT LOC
	TMSG <
Data seg: >
	MOVEI 10,EXEC		;START ADDRS OF EXEC
	TRNE 10,777		;CHECK PAGE BOUNDARY
	JRST	[EMSG <EXEC doesn't start on page boundary>]
	LSH 10,-11		;STARTING PAGE #
	MOVE 2,10		;GET DATA SEGMENT SIZE
	TNOUT
	TMSG <. Pages
          >
	MOVEI 2,BPGD		;BEGINNING OF PAGE DATA
	SUBI 2,XPGD		;CALC REMAINDER
	TNOUT
	TMSG <. Words free

Pure seg: >
	HRRZ 2,.JOBSY		;GET LAST LOC OF EXEC
	ADDI 2,777		;ROUND TO NEXT HIGHEST PAGE
	LSH 2,-11		;PAGE #
	MOVEM 2,12		;SAVE INFO
	SUB 2,10		;SIZE OF EXEC W/O SYMS
	MOVEM 2,11		;SAVE IN 11
	TNOUT			;TELL US ABOUT IT
	TMSG <.+>
	HLRE 0,.JOBSY		;NEG. LEN OF S.T.
	HRRZ 2,.JOBSY		;START ADDRS
	SUB 2,0			;LAST LOC OF ENTIRE EXEC
	ADDI 2,777		;ROUND TO NEXT HIGHEST PAGE
	LSH 2,-11		;...
	SUB 2,12		;SIZE OF S.T.
	MOVEM 2,13		;SAVE FOR LATER
	TNOUT			;TELL US SIZE
	TMSG <. Pages + symbols
          >
	MOVE 2,12		;GET PAGE # +1 OF HIGHEST PAGE
	LSH 2,11		;CONVERT TO ADDRS
	HRRZ 0,.JOBSY
	SUB 2,0			;# OF WORDS REMAINING
	TNOUT			;TILL NEXT PAGE
	TMSG <. Words to next page boundary

Save symbols? >
XSV1:!	PBIN			;GET ANSWER
	ANDI 1,137		;ROUND TO UPPER CASE
	CAIN 1,"N"		;NO?
	JRST	[SETZM 13	;CLEAR SIZE OF S.T.
		 SETZM .JOBSY	; AND S.T. PNTR
		 JRST XSV2]	;SKIP TO EOL
	CAIE 1,"Y"		;YES?
	JRST	[TMSG <
?Type "Y" or "N"
>
		 MOVEI 1,.PRIIN
		 CFIBF		;CLEAR TYPEAHEAD
		 JRST XSV1]	;TRY AGAIN
XSV2:!	PBIN
	CAIE 1,12		;SKIP TILL LINE-FEED SEEN
	JRST XSV2
	MOVEI 1,.FHSLF		;SET UP ENTRY VECTOR
	MOVE 2,[EVLEN,,EXEC]
	SEVEC			;...
	MOVSI 1,(GJ%FOU!GJ%SHT)
	HRROI 2,[ASCIZ "EXEC.EXE"]
	GTJFN			;GET JFN FOR .EXE FILE
	 ERJMP	XSVE
	MOVEM 1,14		;SAVE JFN
	TMSG <
Saving EXEC on file: >
	MOVEI 1,.PRIOU		;WHERE TO SAY
	MOVE 2,14		;JFN
	MOVEI 3,0		;DEFAULT MSG
	JFNS
	MOVSI 1,.FHSLF		;MUMBLE UP SAVE FILE INFO
	HRR 1,14		;SELF,,JFN
	MOVE 2,11		;LEN OF EXEC
	ADD 2,13		;PLUS S.T. SIZE
	MOVEM 2,.NPAGS		;SAVE SIZE OF EXEC
	MOVNS 2			;NEGATE LENGTH
	HRLZS 2			; TO LHS
	HRR 2,10		;STARTING PAGE #
	TRO 2,SS%RD!SS%EXE	;READ & EXECUTE
	MOVEM 2,11		;STORE THIS TABLE ENTRY
	MOVEI 10,.JBSYM##	;GET ADDRESS OF SYMBOL TABLE POINTER
	LSH 10,-9		;CHANGE TO PAGE NUMBER (THIS IS ALL FOR
	HRLI 10,-1		;DDTS THAT USE "116" AS SYMBOL TABLE POINTER)
	IORI 10,SS%CPY+SS%RD+SS%EXE	;ALLOW ALL ACCESS TO SYMBOL POINTER
	MOVEI 12,0		;TERMINATE TABLE WITH A ZER0
	MOVEI 2,10		;POINT AT THE TABLE
	CAIN 13,0		;SYMBOLS SAVED?
	MOVEI 2,11		;NO, SO DON'T SAVE SYMBOL TABLE
	MOVEI 3,0		;ZERO FLAGS
	SSAVE			;DO IT
	 ERJMP XSVE
	TMSG < [OK]
>
	HALTF			;DONE!

XSVE:!	JSERR			;SAY WHY SAVE FAILED
	DMOVE A,[EXP .FHSLF,XWD 1,XSAVE]	;RESTORE ENTRY VECTOR IN CASE RETRY
	SEVEC
	EMSG <Failure during attempt to save EXEC.EXE>

	LIT			;DUMP LITS

	RELOC XDEND-140		;SO THAT NEXT MODULE LOADS CORRECTLY

	END XSAVE