Google
 

Trailing-Edge - PDP-10 Archives - BB-D348F-SM - exec/execpr.mac
There are 46 other files named execpr.mac in the archive. Click here to see a list.
;<4.EXEC>EXECPR.MAC.119,  3-Jan-80 16:07:19, EDIT BY R.ACE
;UPDATE COPYRIGHT DATE
;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) 1976,1977,1978,1979,1980 BY DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.

;TOPS20 'EXECUTIVE' COMMAND LANGUAGE - IMPURE STORAGE

	SEARCH XDEF,MONSYM,QSRMAC
	TTITLE PRIV
	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 20	;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
OKERR::	Z			;-1 TO IGNORE ERRORS DURING "TAKE" FILE
ECHOF::	Z			;-1 to echo TAKE file
PECHOF::	Z		;"PERMANENT" ECHO (SET WITH SET DEFAULT TAKE)
IOPT::	Z			;POINTER TO COMMAND JFN LIST
IOLST::	BLOCK IOLEN		;HOLDS COMMAND STREAM JFNS
CIJFN::  Z			;COMMAND (PRIMARY) INPUT JFN
TINPF::	Z			;-1 IF CIJFN REFERS TO A TERMINAL
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.

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
.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.

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

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

CINITF::	Z			;NON-ZERO AFTER STARTUP INITIALIZATION COMPLETED
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 DEFFERED

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
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


EXDPLC:: Z			;Last location examined or deposited, -1 if none
EXDPF::	Z			;0 if examine last, -1 if deposit last

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.
XTND,<
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
>
STAYF::	Z		;-1 TO STAY AT COMMAND LEVEL WHILE PROGRAM RUNNING

NOXTND,<
DDTFLG::	Z			;-1 IF DDT HAS BEEN MERGED INTO SUBSIDIARY FORK
>
ADVFLG::	Z			;FLAG TO INDICATE ADVISE CODE ACTIVE

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

EFORK::	Z			;FORK HANDLE FOR SPECIAL INFERIOR EXEC FORK
				; 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
>

;MAILWATCH VALUES

   NOXTND,<
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
  XTND,<
TYPING::	Z		; -1 IF TYPEOUT IS IN PROGRESS

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
NOXTND,<
;	PROGRAM'S VALUES: SAVED ON ^C, RESTORED ON CONTINUE.

PTTYMD::	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

;FLAG SET TO -1 IN "SET" COMMAND IF "NO" TYPED
SETNOF::	Z

;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
XDICT::	Z			;USED BY PERMANENT FREE SPACE MANAGER
CSBUFP::	Z			;POINTER TO STRING STORAGE

CSVC::	Z			;0 OR POINTER TO SAVED COMMAND STRING
CSVCC::	BLOCK	1		;SAVE COMMAND INFO
EDSVB::	Z			;PLACE TO SAVE POINTER TO EDIT ARGS

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

EXTBUF::	BLOCK NEXTS*EXTSIZ	;ROOM FOR EXTENSION STRINGS
DEXTBL::	0		;TABLE HEADER WORD
	BLOCK NEXTS		;ROOM FOR MAXIMUM SIZE TABLE
DCSSTG::	BLOCK NEXTS*DCSSIZ	;ROOM FOR DEFAULTS

;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
>

;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
	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:!	MOVEI 1,.PRIOU
	HRLOI 2,.FHSLF		; SELF,,MOST RECENT ERROR
	MOVEI 3,0
	ERSTR
	 JFCL			;LOSE
	 JFCL			;LOSE
	EMSG <Failure during attempt to save EXEC.EXE>

	LIT			;DUMP LITS

	RELOC XDEND-140		;SO THAT NEXT MODULE LOADS CORRECTLY

	END XSAVE