Google
 

Trailing-Edge - PDP-10 Archives - bb-kl11k-bm_tops20_v7_0_tsu02_2_of_2 - t20src/acjsym.mac
There are 9 other files named acjsym.mac in the archive. Click here to see a list.
; Edit= 133 to ACJSYM.MAC on 14-Sep-89 by GSCOTT
;Implement support for GETOK functions .GODSK, .GOSJP, and .GOSPR. 
; Edit= 132 to ACJSYM.MAC on 13-Sep-89 by GSCOTT
;Change edit number to decimal radix for GIMME program. 
;RIP:<7.UTILITIES>ACJSYM.MAC.322 14-Jul-89 11:56:04, Edit by GSCOTT
;(131) Allow attach of not-logged-in jobs for FTPSRT.
;RIP:<7.UTILITIES>ACJSYM.MAC.321 25-May-89 15:39:44, Edit by GSCOTT
;(130) Edit 127 forgot about the case that the user is not enabled.
;RIP:<7.UTILITIES>ACJSYM.MAC.320 23-May-89 20:37:35, Edit by GSCOTT
;(127) Fix unkillable directories, RCDIR in GOCRDT kept directory cached.
;RIP:<7.UTILITIES>ACJSYM.MAC.319  8-Apr-89 14:31:14, Edit by GSCOTT
;(126) Add GETOK functions .GOGTD and .GOSTD.
;RIP:<7.UTILITIES>ACJSYM.MAC.318  4-Apr-89 16:00:39, Edit by GSCOTT
;(125) Sweep log file cache at time that system is going to be shutdown.
;RIP:<7.UTILITIES>ACJSYM.MAC.317 30-Mar-89 12:00:33, Edit by GSCOTT
;(124) Substitute "*" in log file name for the current time.
;RIP:<7.UTILITIES>ACJSYM.MAC.316 30-Mar-89 10:57:50, Edit by GSCOTT
;(123) Read LSN ACCESS.CONTROL files for feeble users.
;RIP:<7.UTILITIES>ACJSYM.MAC.315 29-Mar-89 15:33:46, Edit by GSCOTT
;(122) Small log file fixes, cause entry into MDDT to sweep the log file cache.
;RIP:<7.UTILITIES>ACJSYM.MAC.311 29-Mar-89 11:52:23, Edit by GSCOTT
;(121) Check for user deletion of access.control file to flush cache.
;RIP:<7.UTILITIES>ACJSYM.MAC.309 29-Mar-89 01:43:03, Edit by GSCOTT
;(120) Write summary info to log file when closing it.
;RIP:<7.UTILITIES>ACJSYM.MAC.308 29-Mar-89 01:38:11, Edit by GSCOTT
;(117) Change default to 16 access.control cache entries of 16 pages each.
;RIP:<7.UTILITIES>ACJSYM.MAC.306 28-Mar-89 23:59:06, Edit by GSCOTT
;(116) Fix log file line counter.
;RIP:<7.UTILITIES>ACJSYM.MAC.305 28-Mar-89 22:54:21, Edit by GSCOTT
;(115) Look for filename first in cache flush of access.control files.
;RIP:<7.UTILITIES>ACJSYM.MAC.304 28-Mar-89 22:39:47, Edit by GSCOTT
;(114) Add counter for cache flushes.
;RIP:<7.UTILITIES>ACJSYM.MAC.303 28-Mar-89 10:50:41, Edit by GSCOTT
;(113) Log file cache sweep interval of zero disables the cache.
;RIP:<7.UTILITIES>ACJSYM.MAC.301 28-Mar-89 10:42:31, Edit by GSCOTT
;(112) Make the log buffer three pages.
;RIP:<7.UTILITIES>ACJSYM.MAC.300 24-Mar-89 02:13:40, Edit by GSCOTT
;(111) Implement the access control cache.
;RIP:<7.UTILITIES>ACJSYM.MAC.290 21-Mar-89 13:45:46, Edit by GSCOTT
;(110) Sweep log file cache here and there.
;RIP:<7.UTILITIES>ACJSYM.MAC.288 20-Mar-89 13:46:16, Edit by GSCOTT
;(107) Implement the log file cache.
;RIP:<7.UTILITIES>ACJSYM.MAC.286 20-Mar-89 10:46:16, Edit by GSCOTT
;(106) Bad ND definitions of arguments to GOSMN and GOHSY.
;RIP:<7.UTILITIES>ACJSYM.MAC.285  9-Feb-89 10:13:19, Edit by GSCOTT
;(105) CRDIR policy had a bug allowing building new non-files-only directories.
;RIP:<7.UTILITIES>ACJSYM.MAC.284  4-Feb-89 10:41:04, Edit by GSCOTT
;(104) Do not log on special cases of FB%SEC bit changes.
;RIP:<7.UTILITIES>ACJSYM.MAC.283  2-Feb-89 21:06:37, Edit by GSCOTT
;(103) Always allow setting of new file nosecure.
;RIP:<7.UTILITIES>ACJSYM.MAC.282  2-Feb-89 10:27:21, Edit by GSCOTT
;(102) Change a couple of strings output to the log file.
;RIP:<7.UTILITIES>ACJSYM.MAC.281  2-Feb-89 10:23:03, Edit by GSCOTT
;(101) Don't output cap mask if job 0 in LOGSTA routine.
;RIP:<7.UTILITIES>ACJSYM.MAC.280  1-Feb-89 11:39:31, Edit by GSCOTT
;(100) Bug in TAKCHK broke TAKE command lines over half the buffer size.
;RIP:<7.UTILITIES>ACJSYM.MAC.279 31-Jan-89 18:24:16, Edit by GSCOTT
;(77) Make the log files secure when writing them.
;RIP:<7.UTILITIES>ACJSYM.MAC.277, 31-Jan-89 14:29:10, Edit by RASPUZZI
;(76) Test T4 for CD%MOD before making a decision about the mode bits in CRDIRT
;RIP:<7.UTILITIES>ACJSYM.MAC.276 30-Jan-89 10:55:15, Edit by GSCOTT
;(75) Don't output bad information in spy file trailer.
;RIP:<7.UTILITIES>ACJSYM.MAC.275 30-Jan-89 10:23:11, Edit by GSCOTT
;(74) Kill all inferior forks when crashing.
;RIP:<7.UTILITIES>ACJSYM.MAC.274 30-Jan-89 10:03:02, Edit by GSCOTT
;(73) Output spy filename to log file if we can't open the spy file.
;RIP:<7.UTILITIES>ACJSYM.MAC.271 26-Jan-89 11:13:15, Edit by GSCOTT
;(72) Add NOSECURE keyword to ACCESS.CONTROL
;RIP:<7.UTILITIES>ACJSYM.MAC.270 26-Jan-89 10:06:29, Edit by GSCOTT
;(71) Add DENY-CTY and LOGIN-CTY support.
;RIP:<7.UTILITIES>ACJSYM.MAC.268 25-Jan-89 09:49:28, Edit by GSCOTT
;(70) Minor bug and a bad comment in CRDIR policy code.
;RIP:<7.UTILITIES>ACJSYM.MAC.267 24-Jan-89 17:00:49, Edit by GSCOTT
;(67) Make job information blocks, clean up attach and login policy code.
;RIP:<7.UTILITIES>ACJSYM.MAC.265 19-Jan-89 22:40:52, Edit by GSCOTT
;(66) Fill text displayed by the SHOW command.
;RIP:<7.UTILITIES>ACJSYM.MAC.264 19-Jan-89 21:21:51, Edit by GSCOTT
;(65) Fill command lines output by the WRITE command.
;RIP:<7.UTILITIES>ACJSYM.MAC.263 19-Jan-89 17:47:27, Edit by GSCOTT
;(64) Improve logging of illegal requests.
;RIP:<7.UTILITIES>ACJSYM.MAC.262 19-Jan-89 13:30:02, Edit by GSCOTT
;(63) Add support for user functions.
;RIP:<7.UTILITIES>ACJSYM.MAC.259 12-Jan-89 23:13:08, Edit by GSCOTT
;(62) Ignore increment mount counts for ACJ just to be sure.
;RIP:<7.UTILITIES>ACJSYM.MAC.257 12-Jan-89 22:44:24, Edit by GSCOTT
;(61) Log "function n" if SMON function not in table of functions.
;RIP:<7.UTILITIES>ACJSYM.MAC.256 12-Jan-89 21:59:43, Edit by GSCOTT
;(60) Remove extra definition of RSKP, use MACREL's instead.
;RIP:<7.UTILITIES>ACJSYM.MAC.251 12-Jan-89 09:42:05, Edit by GSCOTT
;(57) Add "new" short bug typeout SMON function.
;RIP:<7.UTILITIES>ACJSYM.MAC.249 10-Jan-89 10:50:34, Edit by GSCOTT
;(56) Test was backwards in GOCRDL to say "set" or "clear".
;RIP:<7.UTILITIES>ACJSYM.MAC.248  5-Jan-89 12:13:23, Edit by GSCOTT
;(55) Provide check for CRDIRs on FOREIGN structures.
;RIP:<7.UTILITIES>ACJSYM.MAC.247  4-Jan-89 14:59:04, Edit by GSCOTT
;(54) Don't allow user/directory groups or passwords on any <ROOT-DIRECTORY>.
;RIP:<7.UTILITIES>ACJSYM.MAC.244  4-Jan-89 11:09:50, Edit by GSCOTT
;(53) Asciify the GETAB tables for logging.
;RIP:<7.UTILITIES>ACJSYM.MAC.243  3-Jan-89 15:29:24, Edit by GSCOTT
;(52) Asciify the INFO% functions logged.
;RIP:<7.UTILITIES>ACJSYM.MAC.242  3-Jan-89 15:20:19, Edit by GSCOTT
;(51) Update copyright date.
;RIP:<7.UTILITIES>ACJSYM.MAC.241  3-Jan-89 15:18:39, Edit by GSCOTT
;(50) Add output in log file of number requests failed.
;RIP:<7.UTILITIES>ACJSYM.MAC.239  3-Jan-89 13:29:53, Edit by GSCOTT
;(47) Log more information for CRDIRs.
;RIP:<7.UTILITIES>ACJSYM.MAC.238 30-Dec-88 11:32:33, Edit by GSCOTT
;(46) Prevent logging into ROOT-DIRECTORY or making it non-files-only.
;RIP:<7.UTILITIES>ACJSYM.MAC.236 29-Dec-88 10:48:57, Edit by GSCOTT
;(45) Remove edit 43, instead allow any secure operation if no ACCESS.CONTROL.
;RIP:<7.UTILITIES>ACJSYM.MAC.234 28-Dec-88 14:04:19, Edit by GSCOTT
;(44) Add support for OF%NXS bit on .GOOPN function.
;RIP:<7.UTILITIES>ACJSYM.MAC.231 28-Dec-88 13:02:51, Edit by GSCOTT
;(43) Allow setting and clearing of FB%SEC if enabled and file is new.
;RIP:<7.UTILITIES>ACJSYM.MAC.230 20-Dec-88 11:42:01, Edit by GSCOTT
;(42) Enhance logging of TMON/SMON functions.
;RIP:<7.UTILITIES>ACJSYM.MAC.229 20-Dec-88 10:06:02, Edit by GSCOTT
;(41) Problem with previous edit (extra comma in BYTE 7 statement).
;RIP:<7.UTILITIES>ACJSYM.MAC.228 16-Dec-88 10:57:22, Edit by GSCOTT
;(40) Paginate the logging file.
;RIP:<7.UTILITIES>ACJSYM.MAC.227 14-Dec-88 18:50:02, Edit by GSCOTT
;(37) Add LOGIN-xxxx keywords to user profile.
;RIP:<7.UTILITIES>ACJSYM.MAC.223 14-Dec-88 17:57:14, Edit by GSCOTT
;(36) Restart ourselves if under job 0.
;RIP:<7.UTILITIES>ACJSYM.MAC.222 13-Dec-88 11:15:29, Edit by GSCOTT
;(35) Put username first in logging for easier reading.
;RIP:<7.UTILITIES>ACJSYM.MAC.221 12-Dec-88 14:04:42, Edit by GSCOTT
;(34) Add invisible bit when looking for ACCESS.CONTROL.
;RIP:<7.UTILITIES>ACJSYM.MAC.220 12-Dec-88 13:56:11, Edit by GSCOTT
;(33) Add execute bit to those typed out on secure OPENF.
;RIP:<7.UTILITIES>ACJSYM.MAC.219  7-Dec-88 15:29:08, Edit by GSCOTT
;(32) In WRITE command only send keywords that differ from default enable bits.
;RIP:<7.UTILITIES>ACJSYM.MAC.218  7-Dec-88 14:38:28, Edit by GSCOTT
;(31) DECnet policy routine can now be activated due to NO POLICY setting.
;RIP:<7.UTILITIES>ACJSYM.MAC.217  6-Dec-88 22:40:42, Edit by GSCOTT
;(30) Implement DENY-xxx keywords for functions.
;RIP:<7.UTILITIES>ACJSYM.MAC.208  6-Dec-88 20:43:24, Edit by GSCOTT
;(27) Implement ALL as keyword in ACCESS.CONTROL, clean up here and there.
;RIP:<7.UTILITIES>ACJSYM.MAC.204  6-Dec-88 19:24:57, Edit by GSCOTT
;(26) Implement SET PRIME-TIME-BEGIN and SET PRIME-TIME-END
;RIP:<7.UTILITIES>ACJSYM.MAC.203  6-Dec-88 18:01:30, Edit by GSCOTT
;(25) Check for no functions enabled in SAVE command.
;RIP:<7.UTILITIES>ACJSYM.MAC.202  6-Dec-88 10:41:51, Edit by GSCOTT
;(24) Use TIME rather than HPTIM for uptime to prevent overflows after 4 days.
;RIP:<7.UTILITIES>ACJSYM.MAC.201  3-Dec-88 02:53:25, Edit by GSCOTT
;(23) OTIME routine needs to handle times in the range of days.
;RIP:<7.UTILITIES>ACJSYM.MAC.200  1-Dec-88 11:08:36, Edit by GSCOTT
;(22) Wrong AC tested in FINDIT after call to WTBLUK.
;RIP:<7.UTILITIES>ACJSYM.MAC.199 30-Nov-88 13:35:29, Edit by GSCOTT
;(21) Don't use TEXTBU in HDRLOG routine as logging routines could be using it.
;RIP:<7.UTILITIES>ACJSYM.MAC.195 30-Nov-88 10:34:14, Edit by GSCOTT
;(20) Allow policy for GOACC to allow connections to "owned" subdirectories.
;RIP:<7.UTILITIES>ACJSYM.MAC.194 30-Nov-88 10:03:04, Edit by GSCOTT
;(17) Add POLICY keyword.
;RIP:<7.UTILITIES>ACJSYM.MAC.191 29-Nov-88 17:33:50, Edit by GSCOTT
;(16) Allow hyphen at end of line as continuation in ACCESS.CONTROL.
;RIP:<7.UTILITIES>ACJSYM.MAC.189 29-Nov-88 09:53:56, Edit by GSCOTT
;(15) Implement ACCESS.CONTROL facility for secure files.
;RIP:<7.UTILITIES>ACJSYM.MAC.187 28-Nov-88 09:44:25, Edit by GSCOTT
;(14) Ignore errors from SPRIW.
;RIP:<7.UTILITIES>ACJSYM.MAC.186 22-Nov-88 17:06:48, Edit by GSCOTT
;(13) Support wild username specifications.
;RIP:<7.UTILITIES>ACJSYM.MAC.183 22-Nov-88 11:10:06, Edit by GSCOTT
;(12) Calculation of next midnight time was flawed.  Yet more info to log file.
;RIP:<7.UTILITIES>ACJSYM.MAC.181 21-Nov-88 22:11:56, Edit by GSCOTT
;(11) Another log file bug, more info with TLINK logging.
;RIP:<7.UTILITIES>ACJSYM.MAC.179 21-Nov-88 15:37:12, Edit by GSCOTT
;(10) Allow WHEEL to login to batch under OPERATOR.
;RIP:<7.UTILITIES>ACJSYM.MAC.178 21-Nov-88 15:12:48, Edit by GSCOTT
;(7) Statistics should be sent to log file.
;RIP:<7.UTILITIES>ACJSYM.MAC.177 21-Nov-88 14:30:16, Edit by GSCOTT
;(6) Repair setting timer interrupt in midnight routine.
;RIP:<7.UTILITIES>ACJSYM.MAC.176 21-Nov-88 13:33:27, Edit by GSCOTT
;(5) Fix bug in GOLOGT where second GTDIR would fail.
;RIP:<7.UTILITIES>ACJSYM.MAC.175 20-Nov-88 22:27:39, Edit by GSCOTT
;(4) Suppress created symbol on ERSKP, support log file switch at midnight.
;RIP:<7.UTILITIES>ACJSYM.MAC.169 20-Nov-88 14:11:36, Edit by GSCOTT
;(3) Define some more flags for sending errors to log file.
;RIP:<7.UTILITIES>ACJSYM.MAC.167 20-Nov-88 12:31:51, Edit by GSCOTT
;(2) Fix problem with DISFNC, adding FU%GOK.
;RIP:<GSCOTT>ACJSYM.MAC.165 20-Nov-88 12:05:32, Edit by GSCOTT
;(1) Creation.

;	COPYRIGHT (c) DIGITAL EQUIPMENT CORPORATION 1988, 1989.
;	ALL RIGHTS RESERVED.
;
;	THIS SOFTWARE IS FURNISHED UNDER A  LICENSE AND MAY BE USED AND  COPIED
;	ONLY IN  ACCORDANCE  WITH  THE  TERMS OF  SUCH  LICENSE  AND  WITH  THE
;	INCLUSION OF THE ABOVE  COPYRIGHT NOTICE.  THIS  SOFTWARE OR ANY  OTHER
;	COPIES THEREOF MAY NOT BE PROVIDED  OR OTHERWISE MADE AVAILABLE TO  ANY
;	OTHER PERSON.  NO  TITLE TO  AND OWNERSHIP  OF THE  SOFTWARE IS  HEREBY
;	TRANSFERRED.
;
;	THE INFORMATION IN THIS  SOFTWARE IS SUBJECT  TO CHANGE WITHOUT  NOTICE
;	AND SHOULD  NOT  BE CONSTRUED  AS  A COMMITMENT  BY  DIGITAL  EQUIPMENT
;	CORPORATION.
;
;	DIGITAL ASSUMES NO  RESPONSIBILITY FOR  THE USE OR  RELIABILITY OF  ITS
;	SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY DIGITAL.

	UNIVERSAL ACJSYM - Access Control Universal File
	SUBTTL Gregory A. Scott

	SEARCH MONSYM		;Get standard JSYS symbols
	SEARCH MACSYM		;[132] Get standard macros (and VI%DEC)

	SALL			;Clean the listing
	Subttl	Table of Contents

;		     Table of Contents for ACJSYM
;
;				  Section		      Page
;
;
;    1. General Comments . . . . . . . . . . . . . . . . . . .   3
;    2. Version  . . . . . . . . . . . . . . . . . . . . . . .   4
;    3. Definitions
;        3.1    Parameters Defaulted at Assembly Time  . . . .   5
;        3.2    Symbols Not (yet) In MONSYM
;            3.2.1    GETOK functions  . . . . . . . . . . . .   6
;            3.2.2    Other Symbols  . . . . . . . . . . . . .   8
;        3.3    Bits . . . . . . . . . . . . . . . . . . . . .   9
;        3.4    Interesting Constants  . . . . . . . . . . . .  10
;    4. Macros
;        4.1    PSECT Selection Macros . . . . . . . . . . . .  11
;        4.2    Command Parsing  . . . . . . . . . . . . . . .  12
;        4.3    Ignore or Skip on JSYS Errors  . . . . . . . .  13
;        4.4    JSYS Error Handler . . . . . . . . . . . . . .  14
;        4.5    Crash Handler  . . . . . . . . . . . . . . . .  15
;    5. Globular Symbols . . . . . . . . . . . . . . . . . . .  16
;    6. End of ACJSYM  . . . . . . . . . . . . . . . . . . . .  17
	SUBTTL General Comments

	COMMENT ~

This Access Control Facility operates in two phases.  In the first ("profile")
phase, commands are entered to set up a database of which GETOK functions are
desired and which users need special treatment.  In the second ("policy") phase
the program implements the policy specified in the first phase by running as
the system access control facility.

This is the ACJSYM module.  This module of the access control facility where
the version, revision history, defaulted paramaters, constants, macros, and the
global symbol list are defined.  Most of these symbols defined here are those
that are used in more than one ACJ source file.  Currently there are two
modules making use of ACJSYM: ACJDEC (profile generation, subroutines, policy
driver) and ACJUSR (function specific codes and tables).

The design of the program allows site specific policy implementations and
access control functions to be changed in the ACJUSR module.  It is expected
that any site should not have to change any code in the ACJDEC module,
particularly in the core access control code.  The ACJSYM module contains all
symbols that need to be shared between ACJDEC and ACJUSR.

This program was written in November 1988 by Gregory A. Scott, Digital
Equipment Corporation, Marlboro, Massachusetts.

	~
	SUBTTL Version

;The revision history is kept in usual TOPS-20 development format at the
;beginning of the file, most recent edits first.  Each time one or more of the
;other source modules are edited, the version number must be changed here.

;Define the version of today's program.

VMAJOR==7			;Version (Same as monitor)
VMINOR==0			;Minor version
VEDIT==DEC 133			;Edit (in decimal for GIMME program)
VWHO==0				;Who last edited (0=DEC development)

VACJ==BYTE(3)VWHO(9)VMAJOR(6)VMINOR(18)VEDIT+VI%DEC ;Build version number

;Make a macro that generates a string with the version in it

DEFINE ....VG(MAJOR,EDIT),<ASCIZ/ACJ MAJOR(EDIT)/>

DEFINE VERSIO,<			;[132] Create ASCIZ version number
	RADIX 5+5		;[132] Set decimal for stupid GIMME program
	....VG(\VMAJOR,\VEDIT)	;[132] Generate version
	RADIX 4+4		;[132] Back to reasonable radix
>				;[132] End of DEFINE VERSIO
	SUBTTL Definitions --  Parameters Defaulted at Assembly Time

DEFINE ND(SYM,VAL),<		;Defines default values for symbols
	IFNDEF SYM,<SYM==VAL>>	;If not defined yet, do so now

ND DBUGSW,0			;Nonzero for debug version
IFN DBUGSW,SAVCNT==770		;Save everything if debug mode
ND SAVCNT,400			;Normally only save pages 0-377

ND ARGLEN,1000			;Largest possible argument block for RCVOK
ND NUSERS,100			;Sixty four user profiles allowed today

ND PAGLEN,^D58			;Lines per page as if we really cared

ND BUGLEN,200			;BUG PDL size
ND PLEN,400			;Generous stack size today

ND PRIMDB,^D<7*60*60>		;Load 7 am default for prime time
ND PRIMDE,^D<18*60*60>		;Load 6 pm default for prime time

ND LOGDCI,^D30			;[107] Default log file cache sweep interval
ND LOGBPC,3			;[112] Number of pages in log file cache

ND SPYDCI,^D10			;Default check interval 10 seconds
ND SPLEN,400			;Size of fork spy stacks
ND NSPYS,10			;Number of spy forks

ND WRICPL,^D<79-7>		;Maximum characters in lines in WRITE command

ND SECCPL,^D80*5		;Maximum length of line in ACCESS.CONTROL
ND SECDCI,^D60			;[111] Access control cache stale time
ND NCACHE,^D16			;[117] Entries in the access control cache
ND SCACHE,^D16			;[117] Size of each cache buffer in pages
	SUBTTL Definitions -- Symbols Not (yet) In MONSYM -- GETOK functions

;Define symbols that may not be in MONSYM yet.  We provide this so that the
;program may be built and used on 4.1, 6.1, or early 7.0 systems.  No testing
;has been done under 4.1 or 6.1 however.

ND .GECFL,1			;(.GOCRD) CRDIR% flags from AC 2
ND .GEDIR,2			;(.GOCRD) Start of STR:<DIRECTORY> 
ND .GECAB,15			;(.GOCRD) Start of CRDIR% argument block
ND CD%SEC,1B8			;(.GOCRD) Directory is secure (in .CDMOD word)

ND .GEHST,1			;(.GODNA) Host name

ND .GEHSN,1			;(.GOANA) Host number
ND .GEPRT,2			;(.GOANA) Port number

ND .GOCTM,26			;CTERM connection
  ND .GEWHO,1			;(.GOCTM) ASCIZ/NODE::USER/ on remote system

ND .GOTTM,27			;TTMSG% monitor call
  ND .GEDTY,1			;(.GOTTM) AC1 as given to the TTMSG% JSYS
  ND TT%REM,1B1			;(TTMSG% AC1) Remote send indicator
  ND .TTCIN,37B17		;(TTMSG% AC1) CI node designator
  ND .CSALL,37B17		;(TTMSG% AC1) Send to all nodes mnemonic
  ND .TTTTY,777777B35		;(TTMSG% AC1) Terminal destined for message

ND  .GOSMN,30			;SMON% monitor call
  ND .GESMF,1			;[106] (.GOSMN) SMON% function number
  ND .GESMV,2			;[106] (.GOSMN) New value for function

ND .GOHSY,31			;HSYS% monitor call
  ND .GESDT,1			;[106] (.GOHSY) Shutdown time (internal format)
  ND .GERES,2			;[106] (.GOHSY) System resume time (internal)

ND .GOSGT,32			;Allow SYSGT% monitor call
  ND .GETBN,1			;(.GOSGT) SIXBIT table name

ND .GOGTB,33			;Allow access of information via GETAB%
  ND .GETBN,1			;(.GOGTB) Index into table,,table number
ND .GOOPN,34			;Allow opening a file that is set secure
  ND .GEOAC,1			;(.GOOPN) AC 2 of OPENF%
    ND OF%NXS,1B35		;(.GEOAC) File is a new file
  ND .GEFIL,2			;(.GOOPN) 226 (octal) words for filespec

ND .GORNF,35			;Allow renaming a file that is set secure
  ND .GEFIL,2			;(.GORNF) 226 (octal) words for filespec

ND .GODLF,36			;Allow deleting a file that is set secure 
  ND .GEDAC,1			;(.GODLF) Bits selected in user's AC 1
  ND .GEFIL,2			;(.GODLF) 226 (octal) words containing filename

ND .GOTLK,37			;Allow use of the TLINK% monitor call
  ND .GETTB,1			;(.GOTLK) AC1 (flags,,object)
  ND .GERMT,2			;(.GOTLK) AC2 (remote designator)

ND .GOCRL,40			;CRLNM% functions .CLNS1, .CLNSA or .CLNSY
  ND .GECFN,1			;(.GOCRL) CRLNM% function
  ND .GELNM,2			;(.GOCRL) 16. words that contain logical name

ND .GODTC,41			;Inform access control job of DTACH%
  ND .GEJOB,1			;(.GODTC) Job number

ND .GOCFD,42			;Allow CHFDB% to set or clear FB%SEC on a file
  ND .GESFS,1			;(.GOCFD) New .FBCTL word for this file
    ND FB%SEC,1B21		;(.FBCTL) File is secure
  ND .GEFIL,2			;(.GOCFD) 226 (octal) words containing filename

ND .GOGTD,43			;[126] GTDIR% JSYS
  ND .GEDNO,1			;[126] (.GOGTD) Directory number

ND .GOSTD,44			;[126] STAD% JSYS
  ND .GESTT,1			;[126] (.GOSTD) Time to set


ND .GOUSR,400000		;Special user functions start at 400000
	SUBTTL Definitions -- Symbols Not (yet) In MONSYM -- Other Symbols

;Define symbols (other than GETOK functions) that may not be in MONSYM yet.  We
;provide this so that the program may be built and used on 4.1, 6.1, or early
;7.0 systems.  No testing has been done under 4.1 or 6.1 however.

;SMON/TMON functions that are in new (7.0 after security project) monitors.

ND .SFWDN,33			;WHEEL LOGINs over DECnet connections
ND .SFBUG,63			;Short bug output
ND .SFACJ,102			;System ACJ
ND .SFPEX,103			;Password expiration
ND .SFPWD,104			;Password dictionary function
ND .SFHDT,105			;Hangup on DETACH

;INFO% functions (INFO% JSYS not in 4.1/6.1 monitors).

ND .INCIN,0			;Get CI nodes in cluster
ND .INCFG,1			;Do remote CNFIG%
ND .INDST,2			;Do remote DIRST%
ND .INGTB,3			;Do remote GETAB%
ND .INGJI,4			;Do remote GETJI%
ND .INGTY,5			;Do remote GTTYP%
ND .ININL,6			;Do remote INLNM%
ND .INLNS,7			;Do remote LNMST%
ND .INMSR,10			;Do remote MSTR%
ND .INMTO,11			;Do remote MTOPR%
ND .INMUT,12			;Do remote MUTIL%
ND .INRCR,13			;Do remote RCUSR%
ND .INSKD,14			;Do remote SKED%
ND .INSNP,15			;Do remote SNOOP%
ND .INSGT,16			;Do remote SYSGT%
ND .INTMN,17			;Do remote TMON%
ND .INXPK,20			;Do remote XPEEK%
ND .INDVC,21			;Do remote DVCHR%
ND .INNTF,22			;Do remote NTINF%
ND .INSTV,23			;Do remote STDEV%
ND .INDVT,24			;Do remote DEVST%
ND .INSYS,25			;Obtain remote SYSTAT information
ND .INJOB,26			;Obtain remote jobs for supplied user
ND .INRCD,27			;Do remote RCDIR%
ND .INTIM,30			;Do remote TIME%
	SUBTTL Definitions -- Bits

;Define the flags in AC F

	FL%NO==1B0		;"NO" keyword typed
	FL%DEN==1B1		;Request is denied
	FL%UNU==1B2		;User did something unusual
	FL%FAI==1B3		;User request eventually failed
	FL%SIO==1B4		;Spy file I/O has happened recently
	FL%ACJ==1B5		;Running as ACJ now (rather than profile phase)
	FL%ERR==1B6		;Running in error processing code now
	FL%NLF==1B7		;New ACJ log file is needed
	FL%NOI==1B8		;ACJ is not interruptable (NOINT)
	FL%SLF==1B9		;[107] Need to sweep log file cache if set
	FL%LAC==1B10		;[111] Page mapped in long access.control
				;[111] 1B11-1B35 free

;Define flags used for function profile bits (needed in both ACJUSR and ACJDEC)

	FU%SET==1B0		;If 1 if set this bit (command table only)
	FU%ENA==1B1		;If 1 enable this function, if 0 do not enable
	FU%GOK==1B2		;If 1 we are getting OKs on this function
	FU%POL==1B3		;If 1 call the policy routine for this function
				;1B3-1B6 reserved by DEC for future 
				;All other bits are defined in ACJUSR


;Bits 1B35 through 1B18 of the ACCESS.CONTROL keyword table has bits to
;determine the access type that this keyword applies to.  The definition of
;these bits follow.

	SF.APP==1B35		;Append access (OPENF)
	SF.DEL==1B34		;Delete access (DELF)
	SF.NOS==1B33		;Clear secure access (CHFDB)
	SF.REA==1B32		;Read access (OPENF)
	SF.REN==1B31		;Rename access (RNAMF)
	SF.SEC==1B30		;Set secure access (CHFDB)
	SF.WRI==1B29		;Write access (OPENF)
	;1B28-1B18		;Free
	SF.ALL==SF.APP!SF.DEL!SF.REA!SF.REN!SF.SEC!SF.NOS!SF.WRI ;All bits
	SUBTTL Definitions -- Interesting Constants

;Define a few well used constants today.

.SAT==:5			;Saturday
.SUN==:6			; and Sunday days of week

USRCHR==^D40			;Number of characters in username

PGSIZ==1000			;Number of words in a page
PGSFT==11			;Used to shift something to a page value

ROOTDN==1			;Root-directory number is always directory 1
INFQUO==377777,,0		;Special inf quota number

;Define format of job information block used by ACJDEC and ACJUSR.  This block
;consists of a complete GETJI block, a complete NTINF block, the job's origin
;string (only if network terminal), and the terminal's speed word (only if
;local terminal).  The following offsets are used in routines GETINF and OGETJI
;as well as the policy routines.

GETJIB==0			;The GETJI block must be first please
NTINFB==GETJIB+.JIMAX+1		;NTINF block after complete GETJI block
NTBLK==NTINFB+.NWNU1+1		;Job's origin string after complete NTINF block
MORSPW==NTBLK+<^D<40+8+2+8+1>/5> ;Speed word is after origin name
JISIZ==MORSPW+1			;Size of block

;The following two definitons are from the historical ACJ.MEM "document".

ERRILR==400001			;Illegal GETOK request, access denied
ERRAEC==400002			;Invalid error code returned from ACJ routine
				;(This indicates a bug in ACJ)
	SUBTTL Macros -- PSECT Selection Macros

;Code that is kept with ACJ.EXE should be in LOWCD

DEFINE LOHIGH,<
	TWOSEG 400000		;Tell LINK to expect two segments
	RELOC			;Get to low segment
	CODSEC==0		;We are now in the low seg
	.TEXT \/SYMSEG:HIGH\	;Put symbols in high segment
>				;End of DEFINE LOHIGH

DEFINE LOWCD,<
	IFN CODSEC,<
		XLIST		;Turn off listing of literals
		LIT		;Dump literals in high
		LIST		;Turn on listing
		RELOC		;Do a reloc statement to get to low seg
	>			;End of IFN CODSEC
	CODSEC==0		;Zero is low
>

;Code that is used in policy formation only is kept in HIGHCD.

DEFINE HIGHCD,<
	IFE CODSEC,<
		XLIST		;Turn off listing of literals
		LIT		;Dump literals in low seg
		LIST		;Turn on listing
		RELOC		;Do a reloc statement to get to high seg
	>			;End of IFN CODSEC 
	CODSEC==1		;We are now in high section
>
	SUBTTL Macros -- Command Parsing

;Macro to parse noise words

DEFINE NOISE (GWRD) <
	MOVEI T2,[FLDDB. .CMNOI,,<-1,,[ASCIZ /GWRD/]>]
	CALL COMANE>

;Macro to output just error message text.

DEFINE EMSG (TEXT),<
	HRROI T1,[ASCIZ |TEXT|]
	ESOUT%
>

;Macros used to define a table

DEFINE TBEGIN(%A,%B),<
	XWD %B,%B
%A:	DEFINE TEND,<%B==.-%A>
>				;End of DEFINE TBEGIN

DEFINE TENTRY(A,B),<[ASCIZ/A/],,<B>>
	SUBTTL Macros -- Ignore or Skip on JSYS Errors

;Macro to take skip return if a JSYS fails.

DEFINE ERSKP.(%A),<
	ERJMP %A+1
%A:!>

;Macro to ignore errors from a JSYS.

DEFINE ERNOP.(%A),<
	ERJMP %A
%A:!>
	SUBTTL Macros -- JSYS Error Handler

;Macro to catch a JSYS error.  First argument is the error string to print, it
;will be followed by the last JSYS error.  The second argument is optional code
;to execute and the third argument is a place to JRST to.

DEFINE JSERRO(TEXT,CODE,WHERE),<
IFB <WHERE>,<
	IFB <CODE>,<
	ERCAL [	JSP CX,JSERR1
		ASCIZ/TEXT: /]
	>; End of IFB <CODE>
	IFNB <CODE>,<
	ERCAL [	MOVEI CX,[ASCIZ/TEXT: /]
		CALL JSERR1
		CODE
		RET]
	>; End of IFNB <CODE>
>;End of IFB <WHERE>
IFNB <WHERE>,<
	ERJMP [	MOVEI CX,[ASCIZ/TEXT: /]
		CALL JSERR1
		CODE
		JRST WHERE]
>;End of IFB <WHERE>
>;End of DEFINE JSERR

;Macro to just output a string and the last JSYS error.

DEFINE OJSERR(TEXT,CODE,WHERE),<
IFB <WHERE>,<
	IFB <CODE>,<
	CALL [	JSP CX,JSERR1
		ASCIZ/TEXT: /]
	>; End of IFB <CODE>
	IFNB <CODE>,<
	CALL [	MOVEI CX,[ASCIZ/TEXT: /]
		CALL JSERR1
		CODE
		RET]
	>; End of IFNB <CODE>
>;End of IFB <WHERE>
IFNB <WHERE>,<
	JRST [	MOVEI CX,[ASCIZ/TEXT: /]
		CALL JSERR1
		CODE
		JRST WHERE]
>;End of IFB <WHERE>
>;End of DEFINE JSERR
	SUBTTL Macros -- Crash Handler

;Macro that is used to crash the ACJ.

DEFINE BUG(TYP,COD,TEXT),<
	IFIDN <TYP>,<HLT>,<
		CALL [	JSR BUGHLT
			ASCIZ/COD/
			ASCIZ/TEXT/]
	>			;End of IFIDN
	IFDIF <TYP>,<HLT>,<PRINTX ?Bad BUG macro>
>				;End of define crash
	SUBTTL Globular Symbols

DEFINE GGLOBS,<
	.XCREF

	DEFINE QEXT (SYM)<
		IRP SYM,<
		.IF SYM,NEEDED,<EXTERN SYM> ;Symbol is extern if not defined
		.IF SYM,LOCAL,<INTERN SYM> ;[120] Symbol is intern if local
		>		;End of IRP SYM
	>			;End of DEFINE QEXT

;Routines in ACJDEC called globally.

	QEXT <GETINF,ISOUT,JSERR1,LOGTAR>
	QEXT <OCAPAB,OCRLF,OCOMMA,ODEC,ODEVST,ODIRST,OGETJI>
	QEXT <OLDEC,OLOCT,OLPPN,ODEC,OOCT,OPPN,OODTIM,OSIXBI,OSPACE>
	QEXT <PRSBIT,PRSDEC,PTEXT,SECFIL,SHOBIT,SHODEC,SENLOG,SPYON>
	QEXT <WRIBIT,WRIDEC,WTBLUK>

;Routines in ACJUSR called globally.

	QEXT <SETUNU,USRLOG,USRPOL>

;Data in ACJUSR used globally.

	QEXT <ENAAOB,ENADEF,ENANOT,ENASHO,ENATBL,ENAKEY>
	QEXT <FUNAOB,FUNCTB,FUNCOD,FUNCTB,FUNKEY,FUNLOG,FUNTBL,FUNTMO,FUNTST>
	QEXT <GOCFDB,GODLFB,GOOPNB,GORNFB,GOTLKB> ;[111]
	QEXT <USEAOB,USEDEF,USEKEY,USENOT,USEPRS,USESHO,USETBL,USEWRI>
	
;Data in ACJDEC used globally.

	QEXT <ACRLF,ARGBLK,CJBLK,CHNTAB,CTYLNO,FUNCTB,JIBLK,LOGIDX,MAXPTY>
	QEXT <OPRUNO,OURNAM,PRIMEB,PRIMEE,TEXTBP,TEXTBU,TJBLK,TTYPTY>
	QEXT <USRNUM,USRPRO,USRSTG,USRSTR,USRTBL>

>				;End of DEFINE GGLOBS
	SUBTTL End of ACJSYM
	END