Google
 

Trailing-Edge - PDP-10 Archives - AP-4178E-RM - swskit-sources/exec0.mac
There are 47 other files named exec0.mac in the archive. Click here to see a list.
;<3-EXEC>EXEC0.MAC.166, 11-Nov-77 16:51:28, EDIT BY MILLER
;FIX DEFAULT IN "TERMINAL TYPE" COMMAND
;<3-EXEC>EXEC0.MAC.164, 10-Nov-77 09:28:32, EDIT BY KIRSCHEN
;UPDATE COPYRIGHT FOR RELEASE 3
;<3-EXEC>EXEC0.MAC.163, 23-Sep-77 14:46:35, EDIT BY HELLIWELL
;ADD DMOUNT UNDER NOSHIP
;<3-EXEC>EXEC0.MAC.162, 17-Sep-77 23:16:47, EDIT BY HELLIWELL
;ADD TV COMMAND UNDER NOSHIP
;<3-EXEC>EXEC0.MAC.161, 15-Sep-77 20:23:34, EDIT BY P.HURLEY
;<3-EXEC>EXEC0.MAC.160, 15-Sep-77 19:58:08, EDIT BY P.HURLEY
;<3-EXEC>EXEC0.MAC.159, 15-Sep-77 19:48:56, EDIT BY P.HURLEY
;ADD STEPPING OF USER NAMES IN SYSTAT COMMAND
;<3-EXEC>EXEC0.MAC.158,  3-Sep-77 12:12:17, EDIT BY OSMAN
;PREVENT "?INTERNAL ILL INS TRAP" IF "DEF SYS: FOO:" FOLLOWED BY "Q"
;<3-EXEC>EXEC0.MAC.157, 10-Aug-77 16:55:29, EDIT BY HURLEY
;<3-EXEC>EXEC0.MAC.156, 10-Aug-77 15:42:03, EDIT BY HURLEY
;<3-EXEC>EXEC0.MAC.155, 10-Aug-77 15:23:06, EDIT BY HURLEY
;<3-EXEC>EXEC0.MAC.154, 10-Aug-77 15:08:49, EDIT BY HURLEY
;MAKE QUEUE BE INVISIBLE
;<3-EXEC>EXEC0.MAC.153, 10-Aug-77 10:53:06, Edit by LCAMPBELL
;MORE ADDRESS BREAK STUFF
;<3-EXEC>EXEC0.MAC.152,  9-Aug-77 14:24:00, EDIT BY HURLEY
;CLEAN UP FOR RELEASE 3 DOCUMENTATION
;<3-EXEC>EXEC0.MAC.151,  8-Aug-77 20:02:03, Edit by LCAMPBELL
;<3-EXEC>EXEC0.MAC.150,  1-Aug-77 13:18:39, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.149,  1-Aug-77 12:45:15, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.148,  1-Aug-77 12:23:22, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.147,  1-Aug-77 12:10:11, EDIT BY OSMAN
;DON'T LET UNLOGGED IN USERS TYPE "SYS:MACRO"!!!
;<3-EXEC-NSW>EXEC0.MAC.4, 22-Jul-77 20:32:07, EDIT BY CALVIN
; Changes for CRJOB/PRARG start up & TIMER autologout stuff
;<3-EXEC>EXEC0.MAC.145, 25-Jul-77 08:13:49, EDIT BY OSMAN
;FIX PROBLEM WHEREBY EVERY  COMMAND LIKE "SM$" CAUSES
;"?UNRECOGNIZED COMMAND"
;<3-EXEC>EXEC0.MAC.144, 21-Jul-77 17:17:04, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.143, 21-Jul-77 17:09:47, EDIT BY OSMAN
;MAKE "DEV:PROGRAM TEXT" WORK LIKE "PROGRAM TEXT" AS A COMMAND
;<3-EXEC>EXEC0.MAC.142,  8-Jul-77 17:13:15, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.141,  8-Jul-77 15:09:18, EDIT BY OSMAN
;FIX RSCAN STUFF
;<3-EXEC>EXEC0.MAC.140,  7-Jul-77 19:16:45, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.139,  5-Jul-77 15:33:24, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.138,  5-Jul-77 15:12:42, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.137, 30-Jun-77 20:28:12, EDIT BY CROSSLAND
;<3-EXEC>EXEC0.MAC.136, 29-Jun-77 14:22:10, EDIT BY OSMAN
;PUT  BEFORE FILESPEC IN PARSE CHAIN SO "?" WORKS
;<3-EXEC>EXEC0.MAC.135, 29-Jun-77 13:04:00, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.134, 29-Jun-77 12:28:32, EDIT BY OSMAN
;MAKE "SYS:MACRO" NOT LOOK LIKE SYSTAT COMMAND FOLLOWED BY ":MACRO"
;<3-EXEC>EXEC0.MAC.132, 29-Jun-77 11:49:54, EDIT BY OSMAN
;MAKE EXEC NOT CHECK FOR SYSTEM MAIL IF BATCH JOB
;<3-EXEC>EXEC0.MAC.131, 28-Jun-77 14:26:41, EDIT BY OSMAN
;MAKE "^E?" LIST ^E COMMANDS.
;<3-EXEC>EXEC0.MAC.130, 27-Jun-77 14:49:44, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.129, 17-Jun-77 15:20:32, EDIT BY OSMAN
;MAKE SURE JFN ON <SYSTEM>MAIL.TXT GOES AWAY AFTER PRINTING MAIL
;<3-EXEC>EXEC0.MAC.128, 16-Jun-77 20:37:23, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.127, 16-Jun-77 20:36:00, EDIT BY OSMAN
;GET RID OF TE MACRO CALLS
;<3-EXEC>EXEC0.MAC.126, 14-Jun-77 16:34:04, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.125, 14-Jun-77 16:18:00, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.124, 13-Jun-77 00:26:00, EDIT BY CROSSLAND
;MERGE ARPANET EXEC COMMANDS
;<3-EXEC>EXEC0.MAC.123, 10-Jun-77 17:23:19, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.122,  9-Jun-77 16:27:59, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.121,  9-Jun-77 15:31:12, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.120,  9-Jun-77 14:54:50, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.119,  7-Jun-77 16:32:17, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.118,  7-Jun-77 15:25:21, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.117,  7-Jun-77 11:46:51, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.116,  3-Jun-77 14:53:37, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.115,  3-Jun-77 14:15:47, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.114,  2-Jun-77 16:54:38, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.113,  2-Jun-77 16:14:47, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.112,  2-Jun-77 14:34:10, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.111,  2-Jun-77 14:18:12, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.110,  2-Jun-77 13:46:31, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.109,  1-Jun-77 16:09:02, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.108,  1-Jun-77 16:05:16, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.107,  1-Jun-77 15:56:58, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.106,  1-Jun-77 15:07:51, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.105,  1-Jun-77 14:59:48, EDIT BY OSMAN
;MAKE ^T SHOW WHICH COMMAND IS BEING EXECUTED
;<3-EXEC>EXEC0.MAC.104,  1-Jun-77 14:30:54, EDIT BY OSMAN
;SET UP OVER-QUOTA DISPATCH ADDRESS FOR EACH COMMAND
;<3-EXEC>EXEC0.MAC.103, 27-May-77 20:27:15, EDIT BY OSMAN
;add "remark" command to enter remark mode
;<3-EXEC>EXEC0.MAC.102, 26-May-77 14:55:55, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.101, 25-May-77 14:39:18, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.100, 23-May-77 20:25:11, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.99, 23-May-77 20:17:26, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.98, 17-May-77 14:35:49, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.97, 17-May-77 11:44:56, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.96, 16-May-77 14:19:10, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.95, 13-May-77 16:52:51, EDIT BY OSMAN
;<3-EXEC>NEXEC0.MAC.2, 13-May-77 16:32:23, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.93, 12-May-77 21:01:37, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.92, 12-May-77 16:18:02, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.91, 11-May-77 16:05:18, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.90, 10-May-77 16:15:03, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.89, 10-May-77 14:03:07, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.88,  4-May-77 15:33:48, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.87, 29-Apr-77 16:49:59, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.86, 29-Apr-77 15:07:08, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.85, 27-Apr-77 15:07:50, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.84, 22-Apr-77 10:42:38, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.83, 21-Apr-77 13:24:08, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.82, 21-Apr-77 10:56:03, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.81, 11-Apr-77 17:01:25, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.80, 11-Apr-77 14:31:36, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.79, 10-Apr-77 17:44:55, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.78, 10-Apr-77 14:30:44, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.77,  8-Apr-77 14:37:37, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.76,  7-Apr-77 10:19:04, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.75,  6-Apr-77 16:30:25, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.74,  6-Apr-77 16:10:39, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.73,  6-Apr-77 15:50:05, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.72,  6-Apr-77 15:33:48, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.71,  6-Apr-77 15:28:37, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.70,  4-Apr-77 16:47:09, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.69,  4-Apr-77 15:06:18, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.68,  1-Apr-77 16:13:34, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.67,  1-Apr-77 15:50:11, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.66,  1-Apr-77 15:47:56, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.65, 15-Mar-77 11:07:12, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.64, 11-Mar-77 15:53:13, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.63, 11-Mar-77 14:21:46, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.62, 11-Mar-77 13:55:37, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.61, 10-Mar-77 16:11:37, EDIT BY OPERATOR
;<3-EXEC>EXEC0.MAC.60,  2-Mar-77 15:08:27, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.59, 23-Feb-77 21:16:12, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.58, 23-Feb-77 20:24:26, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.57, 23-Feb-77 14:30:34, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.56, 23-Feb-77 13:58:11, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.55, 23-Feb-77 13:26:46, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.54, 23-Feb-77 13:03:11, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.53, 22-Feb-77 14:57:45, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.52, 22-Feb-77 14:52:23, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.51, 22-Feb-77 14:36:36, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.50, 21-Feb-77 15:42:56, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.49, 21-Feb-77 13:44:31, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.48, 18-Feb-77 18:28:09, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.47, 18-Feb-77 17:44:36, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.46, 18-Feb-77 17:35:53, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.45, 17-Feb-77 17:24:45, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.44, 17-Feb-77 17:12:28, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.43, 17-Feb-77 15:47:15, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.42, 16-Feb-77 13:53:35, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.41, 15-Feb-77 17:08:35, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.40, 15-Feb-77 13:36:00, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.39, 10-Feb-77 21:23:38, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.38,  9-Feb-77 18:34:31, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.37,  9-Feb-77 14:19:20, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.36,  8-Feb-77 14:51:04, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.35,  8-Feb-77 14:30:48, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.34,  8-Feb-77 13:56:10, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.33,  8-Feb-77 12:02:53, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.32,  8-Feb-77 11:48:07, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.31,  7-Feb-77 15:23:01, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.30,  4-Feb-77 12:21:43, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.29,  4-Feb-77 12:09:46, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.28,  3-Feb-77 22:07:24, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.27,  3-Feb-77 21:05:56, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.26,  3-Feb-77 15:57:46, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.25,  3-Feb-77 11:05:10, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.24,  3-Feb-77 10:53:21, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.23,  2-Feb-77 19:51:37, EDIT BY OSMAN
;<3-EXEC>EXECDE.MAC.24,  2-Feb-77 19:42:05, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.21,  2-Feb-77 18:40:17, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.20,  2-Feb-77 17:53:17, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.19,  2-Feb-77 17:23:48, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.18,  2-Feb-77 17:07:10, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.17,  2-Feb-77 16:48:13, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.16,  2-Feb-77 16:25:37, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.15, 31-Jan-77 23:31:29, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.14, 31-Jan-77 23:03:03, EDIT BY OSMAN
;<3-EXEC>EXEC0.MAC.8, 28-Jan-77 14:35:38, EDIT BY OSMAN
;<2-EXEC>EXEC0.MAC.619, 12-Nov-76 11:42:02, EDIT BY OSMAN
;<2-EXEC>EXEC0.MAC.618,  8-Nov-76 20:33:19, EDIT BY OSMAN
;<2-EXEC>EXEC0.MAC.617,  4-Nov-76 17:01:48, EDIT BY HELLIWELL
;REMOVE SOME NOSHIP CODE
;<2-EXEC>EXEC0.MAC.616,  3-Nov-76 16:57:20, EDIT BY OSMAN
;<2-EXEC>EXEC0.MAC.615, 26-Oct-76 23:07:49, EDIT BY OSMAN
;<2-EXEC>EXEC0.MAC.614, 26-Oct-76 17:33:22, EDIT BY OSMAN
;TCO 1630 - CHANGE SYSTAT "?" MESSAGE
;<2-EXEC>EXEC0.MAC.613, 26-Oct-76 16:10:29, EDIT BY OSMAN
;<2-EXEC>EXEC0.MAC.612, 26-Oct-76 00:08:25, EDIT BY OSMAN
;<2-EXEC>EXEC0.MAC.611, 25-Oct-76 22:41:30, EDIT BY OSMAN
;<2-EXEC>EXEC0.MAC.610, 23-Oct-76 15:17:27, EDIT BY OSMAN
;<2-EXEC>EXEC0.MAC.609, 23-Oct-76 14:28:38, EDIT BY OSMAN
;<2-EXEC>EXEC0.MAC.608, 23-Oct-76 14:15:13, EDIT BY OSMAN
;<2-EXEC>EXEC0.MAC.607, 23-Oct-76 01:42:51, EDIT BY OSMAN
;<OSMAN>EXEC0.MAC.1, 23-Oct-76 00:59:39, EDIT BY OSMAN
;<2-EXEC>EXEC0.MAC.605, 22-Oct-76 23:41:15, EDIT BY OSMAN
;<2-EXEC>EXEC0.MAC.604, 22-Oct-76 23:36:24, EDIT BY OSMAN
;<2-EXEC>EXEC0.MAC.603, 22-Oct-76 19:24:19, EDIT BY OSMAN
;<2-EXEC>EXEC0.MAC.602, 22-Oct-76 16:25:06, EDIT BY OSMAN
;<2-EXEC>EXEC0.MAC.601, 20-Oct-76 15:48:05, EDIT BY OSMAN
;<2-EXEC>EXEC0.MAC.600, 13-Oct-76 10:18:54, EDIT BY OSMAN
;<2-EXEC>EXEC0.MAC.599,  7-Oct-76 14:12:58, EDIT BY OSMAN
;<2-EXEC>EXEC0.MAC.598, 28-Sep-76 23:00:34, EDIT BY OSMAN
;<2-EXEC>EXEC0.MAC.597, 28-Sep-76 22:41:39, EDIT BY OSMAN
;<2-EXEC>EXEC0.MAC.596, 27-Sep-76 20:16:00, EDIT BY OSMAN
;<2-EXEC>EXEC0.MAC.595, 24-Sep-76 13:16:57, EDIT BY OSMAN
;<2-EXEC>EXEC0.MAC.594, 23-Sep-76 15:01:02, EDIT BY OSMAN
;<2-EXEC>EXEC0.MAC.593, 23-Sep-76 14:41:54, EDIT BY OSMAN
;<2-EXEC>EXECGL.MAC.169, 23-Sep-76 13:59:10, EDIT BY OSMAN
;<2-EXEC>EXEC0.MAC.591, 21-Sep-76 16:17:17, EDIT BY OSMAN
;<2-EXEC>EXEC0.MAC.590, 20-Sep-76 22:54:26, EDIT BY OSMAN
;<2-EXEC>EXEC0.MAC.589,  9-Sep-76 15:30:46, EDIT BY OSMAN
LALL
;<2-EXEC>EXEC0.MAC.587,  9-Sep-76 14:20:52, EDIT BY OSMAN
;<2-EXEC>EXEC0.MAC.586,  8-Sep-76 11:31:35, EDIT BY OSMAN
;<2-EXEC>EXEC0.MAC.585,  8-Sep-76 11:25:22, EDIT BY OSMAN
;<2-EXEC>EXEC0.MAC.584,  8-Sep-76 10:16:49, EDIT BY OSMAN
;<2-EXEC>EXEC0.MAC.583,  8-Sep-76 10:10:50, EDIT BY OSMAN
;<2-EXEC>EXEC0.MAC.582,  7-Sep-76 22:28:54, EDIT BY OSMAN
;<2-EXEC>EXEC0.MAC.581,  7-Sep-76 16:40:41, EDIT BY OSMAN
;<2-EXEC>EXEC0.MAC.580, 10-Aug-76 19:44:04, EDIT BY OSMAN
;<2-EXEC>EXEC0.MAC.578,  5-Aug-76 21:32:27, Edit by HESS
;	NEW VERSION NUMBER HANDLING
;<2-EXEC>EXEC0.MAC.577,  5-Aug-76 20:48:47, EDIT BY OSMAN
;<2-EXEC>EXEC0.MAC.576,  5-Aug-76 20:44:39, EDIT BY OSMAN
;<2-EXEC>EXEC0.MAC.574,  5-Aug-76 20:01:51, EDIT BY OSMAN
;<2-EXEC>EXEC0.MAC.571,  5-Aug-76 16:13:53, EDIT BY OSMAN
;<2-EXEC>EXEC0.MAC.570,  5-Aug-76 14:32:07, EDIT BY OSMAN
;<2-EXEC>EXEC0.MAC.569,  5-Aug-76 14:19:19, EDIT BY OSMAN
;<2-EXEC>EXEC0.MAC.567,  5-Aug-76 14:16:00, EDIT BY OSMAN
;<2-EXEC>EXEC0.MAC.566,  5-Aug-76 14:01:07, EDIT BY OSMAN
;<2-EXEC>NEW1.MAC.3,  4-Aug-76 23:27:23, EDIT BY OSMAN
;<2-EXEC>NEW1.MAC.2,  4-Aug-76 23:21:47, EDIT BY OSMAN
;<2-EXEC>NEWSYS.MAC.1,  4-Aug-76 23:10:00, EDIT BY OSMAN
;<2-EXEC>EXEC0.MAC.563,  4-Aug-76 19:25:38, EDIT BY OSMAN
;<2-EXEC>EXEC0.MAC.562,  4-Aug-76 19:11:05, EDIT BY OSMAN
;	CHANGE VERSION TO 2
;<2-EXEC>EXEC0.MAC.561,  4-Aug-76 15:16:42, EDIT BY OSMAN
;	1477 AGAIN - "LIDNO" HOLDS LOGGED-IN DIR NUMBER
;<2-EXEC>EXEC0.MAC.560,  4-Aug-76 14:07:05, EDIT BY OSMAN
;	MORE OF TCO 1477 - MAKE CUSRNO=0 IFF JOB IS LOGGED IN
;<2-EXEC>EXEC0.MAC.558,  3-Aug-76 20:29:16, Edit by HESS
;	TCO 1481 - QUOTA CHECK AND HANDLING IN EXEC
;<2-EXEC>EXEC0.MAC.557,  3-Aug-76 17:45:19, EDIT BY OSMAN
;	TCO 1480 - ALLOW EDITING THROUGH FIELDS
;<2-EXEC>EXEC0.MAC.556,  2-Aug-76 14:25:05, EDIT BY OSMAN
;<2-EXEC>EXEC0.MAC.553, 31-Jul-76 22:20:35, EDIT BY OSMAN
;<2-EXEC>EXEC0.MAC.552, 30-Jul-76 15:15:15, EDIT BY OSMAN
;<2-EXEC>EXEC0.MAC.551, 26-Jul-76 16:51:30, EDIT BY OSMAN
;	TCO 1477 - RELEASE 2 36-BIT USER AND DIR NUMBERS
;<1B-EXEC>EXEC0.MAC.550, 23-Jun-76 11:36:03, Edit by HESS
;	CORRECT SPELLING ERRORS (REF TCO 1368)
;<1B-EXEC>EXEC0.MAC.549, 17-Jun-76 15:36:06, Edit by HESS
;	TCO 1441 - CHANGE SIGN-ON MESSAGE
;<1B-EXEC>EXEC0.MAC.547, 16-Jun-76 17:20:11, Edit by HESS
;	TCO 1439 - MAKE ^EQUIT REQUIRE WHEEL CAPAB.
;<1B-EXEC>EXEC0.MAC.546, 16-Jun-76 16:20:02, Edit by HESS
;	TCO 1432
;<1B-EXEC>EXEC0.MAC.545, 14-JUN-76 22:25:29, Edit by HESS
;	TCO 1417 - WRITE PROTECT EXEC
;<1B-EXEC>EXEC0.MAC.544, 11-JUN-76 16:21:34, Edit by HESS
;<1B-EXEC>EXEC0.MAC.544, 11-JUN-76 15:29:51, Edit by HESS
;<1B-EXEC>EXEC0.MAC.543, 10-JUN-76 17:26:30, Edit by HESS
;	TCO 1331 - REWRITE HELP TEXT FOR TERMINAL CMD
;<1B-EXEC>EXEC0.MAC.542, 10-JUN-76 12:14:49, Edit by HESS
;<1B-EXEC>EXEC0.MAC.541,  8-JUN-76 19:14:55, Edit by HESS
;<1B-EXEC>EXEC0.MAC.540,  8-JUN-76 16:26:48, Edit by HESS
;	TCO 1368 AND OTHERS
;<1B-EXEC>EXEC0.MAC.539,  7-JUN-76 16:51:16, Edit by HESS
;<1B-EXEC>EXEC0.MAC.538, 10-MAY-76 13:08:37, Edit by HESS
;	TCO 1287
;<1B-EXEC>EXEC0.MAC.537,  4-MAY-76 12:59:06, Edit by HESS
;	FIRST 1B ASSEMBLY
;<EXEC>EXEC0.MAC.536, 20-APR-76 16:27:21, Edit by HESS
;<EXEC>EXEC0.MAC.535, 13-APR-76 16:40:48, Edit by HESS
;<EXEC>EXEC0.MAC.534, 26-MAR-76 01:34:26, Edit by HESS
;<EXEC>EXEC0.MAC.533, 23-MAR-76 15:13:15, Edit by HESS
;	CHANGE DEFAULT OF OLD-STYLE-CCL IN NOSHIP VERSION
;<EXEC>EXEC0.MAC.532, 23-MAR-76 14:08:51, Edit by HESS
;	ADD TMOUNT CMD FOR 1B
;<EXEC>EXEC0.MAC.531, 18-MAR-76 16:14:56, Edit by HESS
;<EXEC>EXEC0.MAC.530, 17-MAR-76 16:23:43, Edit by HESS
;	TCO 1190
;<EXEC>EXEC0.MAC.529, 16-MAR-76 13:44:23, Edit by HESS
;	CHANGE 'ACCT' TO 'ACCOUNT' IN USER PRINTOUT
;<EXEC>EXEC0.MAC.528,  8-MAR-76 01:32:22, Edit by HESS
;	TCO 1154
;<EXEC>EXEC0.MAC.527, 27-FEB-76 22:48:53, Edit by HESS
;<EXEC>EXEC0.MAC.526, 27-FEB-76 16:46:03, Edit by HESS
;	TCO 1126
;<EXEC>EXEC0.MAC.525, 19-FEB-76 00:14:31, Edit by HESS
;	ADD TCO'S 1101,1102,1103,1104,1105
;<EXEC>EXEC0.MAC.524, 13-FEB-76 14:31:45, Edit by HESS
;	FIX TO .RUNSTAT TO PRINT ENTIRE FORK STRUCTURE
;<EXEC>EXEC0.MAC.523, 30-JAN-76 14:17:10, Edit by HESS
;	ALLOW 1: BE A LEGAL DEVICE NAME, FIX ERROR MSG AT DSKCNT
;<EXEC>EXEC0.MAC.522,  9-JAN-76 11:41:34, Edit by HESS
;TOPS20 'EXECUTIVE' COMMAND LANGUAGE


;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 BY DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.

	SEARCH MONSYM,XDEF,MACSYM
	TTITLE EXEC0

;THIS FILE CONTAINS
; START AND REENTER INITIALIZATION
; MAIN LOOP TO READ FIRST WORD OF COMMAND AND DISPATCH
; COMMAND TABLES AND OTHER MISC TABLES
; STATUS AND TERMINAL CHARACTERISTICS COMMANDS

; TOPS10 JOB DATA AREA

JOBSA==:120
JOBREN==:124
JOBSYM==:116
.JBUSY==:117
JOBOPC==:130
JOBDDT==:74
JOBVER==:137
;TOPS20 ENTRY VECTOR
; NOTE: "EXEC" IS ASSUMED TO BE FIRST SYMBOL IN EXEC.REL, AND AT A
; PAGE BOUNDARY, BY PAGE BOUNDARY CHECK IN "ALOFRK" AT END OF THIS FILE.

EXEC::	JRST REENTE		;START ENTRY
	JRST REENTE		;REENTER ENTRY
	%%LVER,,%%RVER		;VERSION NUMBER

;POINTER TO SYMBOL TABLE
;SAVED HERE FROM JOBSYM WHEN THAT PAGE REMOVED FOR SHARABLE SUBSYSTEM

.JOBSYM::0
.NPAGS::0			;SIZE OF EXEC IN PAGES

 EVLEN==:3		;ENTRY VECTOR LENGTH (STARTING AT "EXEC")

;PATCH AREA
;ALSO THERE'S A WRITEABLE PATCH AREA (PPAT) IN EXECPR.MAC.

PATS::
PAT:: BLOCK 200

;ACTIVATION TABLES FOR TEXTI

;ACTIVATE ON EVERYTHING
TEXTIA::-1
	-1
	-1
	-1

;ACTIVATE ON NON-ALPHANUMERICS (EXCLUDING DASH)
TEXTIC::777777,,777760
	737754,,001760		;#, -, 0-9
	400000,,000760		;A-Z (UC)
	400000,,000760		;A-Z (LC)

;ACTIVATE ON NON-ALPHANUMERICS (INCLUDING DASH)
TEXTID::777777,,777760
	737774,,001760		;#, 0-9
	400000,,000760		;A-Z (UC)
	400000,,000760		;A-Z (LC)
;SUBROUTINE TO "AUTOLOGOUT" THIS JOB IF NOT LOGGED IN AND MORE
; THAN "AUTOL1" SECONDS HAVE ELAPSED SINCE STARTUP.
;ONE CALL IN CMDIN4 AREA.

ALOTST:	PUSH P,A
	GTAD
	SUB A,STRTIM
	SUB A,[AUTOL1]
	JUMPG A,AUTOLO		;DO AUTOLOGOUT (XSUBRS.MAC)
	POP P,A
	RET


CHNMSK:	370777,,704000		;MASK FOR ACTIVE CHANNELS - 1-5, 9-19, 20, 24

; Routine to clear CRJOB/PRARG start up block

CLPRA:	SETZM CRPRA
	MOVE A,[XWD CRPRA,CRPRA+1]
	BLT A,CRPRA+17
	RET
;SUBROUTINE TO TYPE SYSTEM AND EXEC VERSIONS.
;USED AT STARTUP TO PRINT SIGN-ON MESSAGE; THIS IS ALSO THE
; EXECUTION ROUTINE FOR "VERSION" COMMAND.
;HERE TO MINIMIZE PAGE-FAULTS DURING STARTUP.

.VERSI::CALL %VERSI		;PRINT MONITOR VERSION
	CALL EXECV		;PRINT EXEC VERSION
	SKIPG A,FORK		;ANY INFERIOR FORK?
	RET			;NO
	GEVEC			;GET ENTRY VECTOR
	HLRZ A,B
	CAIE A,(<JRST>)		;COMPATIBLE?
	JRST [	CAIGE A,3	;NO, DOES +2 EXIST?
		JRST NOVERS	;NO, NO VERSION
		MOVEI A,2(B)	;YES, LOOK THERE
		JRST ISVER1]
	MOVEI A,JOBVER		;READ VERSION WORD
ISVER1:	CALL VERGET
NOVERS:	 SETZ Q1,		;NO VERSION
	SKIPN A,PTTYMD+TTWPNM
	JRST [	JUMPE Q1,VERSI2
		TYPE < Version is >
		JRST VERSI0]
	TYPE < Program is >
	PUSHJ P,SIXPRT
	JUMPE Q1,VERSI2		;DONE IF NO VERSION
	TYPE <, version is >
VERSI0:	CALL VERPNT		;PRINT VERSION
	MOVE A,FORK
	GCVEC			;GET COMPATIBILITY ENTRY VECTOR
	JUMPLE B,[RET]		;RETURN IF COMPATIBILITY DISABLED OR NOT THERE
	HLRZ A,B
	CAIGE A,2		;DOES VERSION ENTRY EXIST?
	RET			;NO
	MOVEI A,2(B)		;GET ADDR
	CALL VERGET		;GET VERSION
	 RET			;LEAVE IF NONE
	TYPE < UUO simulation in use, version is >
	CALLRET VERPNT		;PRINT VERSION AND LEAVE

VERGET:	PUSH P,A
	CALL MAPPF
	POP P,Q1
	TLNN A,B5
	RET			;NO PAGE
	TLNN A,B2
	RET			;CAN'T READ IT
	ANDI Q1,777
	MOVE Q1,PAGEN(Q1)	;LOAD VERSION INTO Q1
	JUMPE Q1,[RET]
	RETSKP

VERPNT:	LDB A,[POINT 9,Q1,11]	;GET MAJOR VERSION
	SKIPE A
	ETYPE <%1O>		;PRINT IF NON-ZERO
	LDB A,[POINT 6,Q1,17]	;GET MINOR VERSION
	JUMPE A,VERSI1		;SKIP IF 0
	SUBI A,1
	IDIVI A,^D26		;MAKE 2 LETTERS
	SKIPE A			;ANY FIRST LETTER?
	PRINT "A"-1(A)		;YES, PRINT
	PRINT "A"(B)		;PRINT SECOND LETTER
VERSI1:	HRRZ A,Q1		;GET EDIT NUMBER
	SKIPE A
	ETYPE <(%1O)>		;PRINT IF NON-ZERO
	LDB A,[POINT 3,Q1,2]	;GET GROUP CODE
	SKIPE A
	ETYPE <-%1O>		;PRINT IF NON-ZERO
VERSI2:	ETYPE<%_>
	RET

$VERSI:	GJINF
	JUMPN A,EXECV		;EXEC VERSION ONLY IF LOGGED IN
%VERSI:	PRINT " "
	HLLZ D,SYSVER		;XWD LENGTH, INDEX
%VERS1:	GTB SYSVER		;GET A DATA WORD FROM TABLE (USES D)
	MOVE B,A
	MOVEI C,5		;PRINT 5 CHARS FROM EACH WORD
%VERS2:	SETZ A,
	LSHC A,7
	JUMPE A,%VERS3		;END ON NULL
	PRINT (A)
	SOJG C,%VERS2
	AOBJN D,%VERS1		;ALSO END ON END OF TABLE
%VERS3:	ETYPE<%_>
	RET

;"EXEC" AND ITS VERSION

EXECV::	TYPE < TOPS-20 Command processor >
	MOVE Q1,EXEC+2		;GET VERSION #
	CALLRET VERPNT		;PRINT IT
;SUBROUTINE TO INIT GTTAB NUMBERS - USED AT STARTUP ONLY

STSYST:	MOVSI D,-NGTTBS		;NUMBER OF TABLES
STSYS1:	MOVE A,GTTBS(D)		;GET THE SIXBIT NAME OF THE TABLE
	SYSGT			;GET ITS NUMBER
	JUMPN B,STSYS2		;JUMP UNLESS NO SUCH TABLE
	TYPE <%No system table named: >
	MOVE A,GTTBS(D)
	CALL SIXPRT
	SETZ B,
STSYS2:	MOVEM B,@GTTBS+1(D)	;PUT NUMBER IN VARIABLE
	AOBJN D,.+1
	AOBJN D,STSYS1		;DO ALL TABLES
	RET

;LIST OF GTTAB TABLES KNOWN TO EXEC

DEFINE XX (NAMS)<
	IRP NAMS,<
	SIXBIT /NAMS/
	Z NAMS>>

GTTBS:	XX <JOBTTY,JOBRT,TTYJOB,NCPGS,DEVNAM>
	XX <DEVCHR,DEVUNT,DSKERR,DRMERR,SYSVER,SYSTAT>
	XX <QTIMES,JOBNAM,SNAMES,STIMES,SPFLTS,SSIZE>
	XX <SNBLKS,DBUGSW,LOGDES,PTYPAR,SYMTAB,DWNTIM>
	XX <JOBPNM>
NGTTBS==.-GTTBS

;ROUTINE TO INITIALIZE COMND JSYS.  ITEMS INITIALIZED IN THIS ROUTINE
;ARE ONES NOT NECESSARY TO REINITIALIZE FOR EACH COMMAND.

CMDINI:	MOVEI A,REPARS		;SET UP REPARSE HANDLER ADDRESS
	MOVEM A,CMFLG
	HRROI A,CBUF		;POINTER TO COMMAND BUFFER
	MOVEM A,CMBFP
	MOVEM A,CMPTR		;NO "NEXT FIELD" YET
	MOVEI B,CBUFL*5	;ANNOUNCE HOW MUCH ROOM FOR TYPEIN THERE IS
	MOVEM B,CMCNT
	SETZM CMINC		;NO UNPARSED CHARACTERS YET
	HRROI A,ATMBUF		;POINTER TO ATOM BUFFER
	MOVEM A,CMABP
	MOVEI A,ATMLEN*5	;LENGTH OF ATOM BUFFER
	MOVEM A,CMABC
	MOVEI A,CJFNBK		;ADDRESS OF GTJFN BLOCK
	MOVEM A,CMGJB
	RET
;REENTER ENTRY

REENTE::
REE::	SKIPN CINITF		;IS EXEC INITIALIZED?
	JRST EXEC0		;NO, "REENTER" GIVEN BEFORE "START",
				;FULL INITIALIZATION REQUIRED.

;THE FOLLOWING CODE IS EXECUTED ON "REENTER" ONLY.

;RE-INITIALIZE PSI SYSTEM
; (^C OUT OF EXEC DDT TO SUPERIOR EXEC LEAVES IT WRONG).

	MOVEI A,.FHSLF
	MOVE B,CHNMSK		;GET ACTIVE CHANNEL MASK
	AIC			;ACTIVATE CHANNELS SPECIFIED BY MASK
	EQV B,[1B0]		;DEACTIVATE ALL BUT THOSE USED BY
	DIC			; THE MINIEXEC
	EIR			;ENABLE PROCESS PSEUDOINTERRUPT SYSTEM
	CALL CPULIM		;GET AND SET CPU TIME LIMIT
	JRST CMDIN2		;JOIN STARTUP CASE

;FIRST STARTUP INITIALIZATION

EXEC0::	SETZM CSZ1
        MOVE A,[XWD CSZ1,CSZ1+1]
        BLT A,CSZ4

;SET UP 41 FOR UUO'S, P=17 FOR PUSHDOWN POINTER

        MOVE A,[CALL CUUO]
        MOVEM A,41
        MOVE P,[IOWD PDL,PD]

;CLEAR FLAGS

	SETZ Z,

;RANDOM THINGS

	CALL CLPRA		; Clear CRJOB/PRARG area
	MOVE A,[.PRARD,,.FHSLF]	; Read our blk if there
	MOVEI B,CRPRA
	MOVEI C,20		; Length of our blk
	PRARG
	JUMPE C,EXEC01		; Nothing waiting for us
	MOVE A,CRPRA+.CJPHD	; Pick up ID that identifies CRJOB-PRARG
	CAME A,[1B0+3B6+2B12+CR%PRA] ; PRARG from CRJOB?
	 JRST [ CALL CLPRA	; No, who knows what, ditch it
		JRST EXEC01]
	SETO A,			; This job
	HRROI B,CJPTIM		; 1 word into our flag word
	MOVEI C,.JIRTL		; Get job runtime limit (if set)
	GETJI
	 SETZM CJPTIM		; Failed, flag as none present
	HRRZ A,CRPRA+.CJPLP	; Get ptr to flags
	MOVE B,CRPRA(A)		; Pick up flags
	TLNN B,(1B1+1B2)	; A fork handle given to us?
	 JRST EXEC01		; No, continue
	HRRZ A,CRPRA+.CJPKP	; Get ptr to FORK,,SFRKV offset
	MOVE B,CRPRA(A)
	HLRZM B,FORK		; Set it as current lower fork
	JRST EXEC02
EXEC01:	SETOM FORK		;SAY NO INFERIOR FORK
EXEC02:	SETOM RUNFK		;SAY NO FORK HAS BEEN RUN
	SETOM NPAGE		;SAY NO PAGE OF INFERIOR IS MAPPED
;INITIALIZE PROCESS PSI SYSTEM,
; DONE EARLY SO ERRORS IN REST OF INITIALIZATION WILL BE HANDLED.
;ENABLE ALL ERROR CHANNELS BUT OVERFLOW,
; ALSO CHANNEL 1 FOR ASSIGNMENT TO ^C BELOW,
; AND 2 FOR AUTOLOGOUT.

	MOVEI A,B0		;SAY THIS FORK
	MOVE B,[XWD LEVTAB,CHNTAB]
	SIR			;SET UP TABLE ADDRESSES
	MOVE B,CHNMSK		;GET ACTIVE CHANNEL MASK
	AIC			;ACTIVATE SPECIFIED CHANNELS
	EQV B,[1B0]		;DON'T CHANGE CHANS USED BY MINI-EXEC.
				;ABOVE FOR DEBUGGING .  SETCA B, TO DEACTIVATE ALL.
	DIC			;DEACTIVATE ALL OTHERS
	EIR			;ENABLE PROCESS PSI SYSTEM
	CALL CPULIM		;GET AND SET CPU TIME LIMIT
	CALL CMDINI		;INITALIZE ALL COMND PARAMETERS
	MOVE A,IOPTB		;GET INITIAL COMMAND JFN BUFFER POINTER
	MOVEM A,IOPT		;INITIALIZE COMMAND JFNS
	MOVE A,[100,,101]
	CALL PUSHIO		;START FIRST COMMAND STREAM
	CALL STSYST		;INIT GETAB NUMBERS

;INITIALIZE TELETYPE MODE, TABS, CONTROL CHARACTER OUTPUT (CCOC).
; INITIALIZE MODES FOR USE IN RUNNING PROGRAM FROM PRESENT MODES.

	MOVEI Q1,ITTYMD		;INITIAL MODES FOR "START"
	CALL RTTYMD		;THIS SUBR SAVES MODE WORD, TABS, CCOC.
	MOVE A,[SIXBIT /(PRIV)/]
	MOVEM A,ITTYMD+TTWSNM	;SUBSYSTEM NAME UNLESS OTHERWISE SPEC
	MOVE A,[XWD ITTYMD,PTTYMD]
	BLT A,PTTYMD+NTTYMD-1	;MOVE INITIAL TO ACTIVE PGM BLOCK

; INITIALIZE MODES FOR USE WHEN EXEC IS RUNNING:
;  ASSUME ITS ALREADY CORRECT WITH REGARD TO HARDWARE FEATURES; 

	MOVEI Q1,ETTYMD		;KEEP EXEC MODES UP TO DATE IN STORAGE
	CALL RTTYMD		;...FOR ^C.
	MOVEI A,2		;CODE SAYING "TYPE LITERAL CONTROL CHARACTER"
	DPB A,[POINT 2,ETTYMD+TTWCOC+""*2/^D36,""*2+1-""*2/^D36*^D36]
				;MAKE CONTROL-V ECHO LITERALLY AS IN FILENAMES
	MOVEI A,3		;FORMAT LINEFEED (MAKE IT ECHO AS CRLF)
	DPB A,[POINT 2,ETTYMD+TTWCOC+<"J"-100>*2/^D36,<"J"-100>*2+1-<"J"-100>*2/^D36*^D36]

;DISABLE COMPAT FOR EXEC

	MOVEI	A,.FHSLF	;FOR SELF
	MOVNI	B,1		;SET TO -1
	MOVEI	C,0		;...
	SCVEC			;BYE
;DETERMINE HERE IF BATCH MODE

	SETZM BATCHF		;ASSUME NOT BATCH JOB
	MOVNI A,1
	MOVE B,[-1,,A]
	MOVEI C,.JIBAT		;GET BATCH FLAG
	GETJI
	 CALL JERR
	JUMPE A,NOBTCH		;0 := NOT BATCH
ISBTCH:	SETOM	BATCHF		;SET BATCH FLAG
	SETOM	CCFLAG		;NO CTRL-C CAPABILITY
NOBTCH:
STAT,<	HRROI B,[ASCIZ /PS:<QUEUES>COMMANDS-USAGE.THAW;0/]
	CALL TRYGTJ
	JRST STLOSE		;GIVE UP IF NO FILE
	MOVEI B,OF%RD!OF%WR!OF%THW
	OPENF
	JRST STLOSE
	HRLZ A,A
	MOVE B,[.FHSLF,,<STBUF>B44]
	LDF C,PM%RD!PM%WT
	PMAP
STLOSE:
>;STAT

;SAY PRINT SIGN-ON HEARLD
	SKIPE CRPRA		; CRJOB startup?
	 JRST [ HRRZ A,CRPRA+.CJPLP ; Yes, get flags ptr
		MOVE B,CRPRA(A)	; Now get flags
		TLNE B,(1B0)	; Suppress herald?
		 JRST CMDIN2	; Yes
		JRST .+1]
	TLOA Z,F1

;COMMANDS THAT RUN PROGRAM RETURN HERE WHEN IT STOPS.
;START, CONT, REENTER, RUN, <SUBSYSTEM NAME>, GOTO.
;RE-ENTRY JOINS MAIN FLOW HERE

CMDIN2::TLZ Z,F1		;SAY NO SIGN-ON MESSAGE, DON'T REPARSE
	JRST CMDIN3

;THIS ROUTINE GET TIME LIMIT WHICH WAS POSSIBLY SET BY ANOTHER
;PROCESS AND SETS IT ON THE CORRECT CHANNEL
CPULIM:	MOVNI A,1
	MOVE B,[-1,,D]		;GET CURRENT LIMIT INTO D
	MOVEI C,.JIRTL
	GETJI
	 CALL JERR
	MOVE A,[.FHJOB,,.TIMRT]	;SET TIME LIMIT CODE
	SETZB B,C		;CLEAR LIMIT
	TIMER
	 CALL [	CAIE A,TIMX4	;NOT SET BY THIS FORK?
		JRST JERR	;NOPE, PRINT IT
		POP P,(P)
		RET]		;RETURN HAVING DONE NOTHING
	MOVE A,[.FHJOB,,.TIMRT]	;SET TIME LIMIT CODE
	MOVE B,D		;GET TIME TO SET
	MOVEI C,4		;CHANNEL
	TIMER
	 CALL JERR
	RET

;^C AND COMMAND ERRORS COME BACK HERE.
;AFTER ^C IT IS NECESSARY TO EXECUTE CODE TO FIND OUT WHETHER LOGGED IN,
; HAVE INFERIOR FORK, UPDATE CAPABILITIES, KILL AUTOLOGOUT FORK,
; ETC IN CASE INTERRUPTED COMMAND WAS LOGIN, RUN, ETC.

ERRET::	TLZ Z,F1		;SAY NO SIGN-ON MESSAGE

;INDICATE NOT IN ADVISE CODE

	SKIPE ADVFLG
	TYPE <
?Error while giving advice - ADVICE terminated
>
	SETZM ADVFLG

CMDIN3:

;MAKE SURE ^C PSI CHANNEL ACTIVATED
; (IT IS TURNED OFF DURING PART OF "LOGIN" AND "RESET")

	MOVEI A,B0
	HRLZI B,B1
	AIC

;PUT EXEC'S TTY MODES INTO EFFECT.
;NECESSARY AFTER REENTER, GOOD SECURITY IN OTHER CASES.

	MOVEI Q1,ETTYMD
	CALL LTTYMD

;SET SUBSYSTEM NAME TO "EXEC".
;THIS UPDATES MONITOR TABLES USED BY "SYSTAT".

	MOVE A,[SIXBIT /EXEC/]
	MOVEM A,ETTYMD+TTWSNM
	MOVEM A,ETTYMD+TTWPNM	;PROGRAM NAME TOO
	SETNM

;MISCELLANEOUS INITIALIZATION

	MOVEI A,RERET		;SAY WHERE TO GO ON ERROR WHILE TYPING
	MOVEM A,CERET		; ...LOGIN MESSAGE
	MOVEM A,NERET		;WHAT TO RESET CERET TO ON FATAL ERROR

;SIGN-ON MESSAGE, FIRST TIME ONLY

	TLZN Z,F1
	JRST CMDN2B
	ETYPE<%_>

;PRINT SYSTEM AND EXEC VERSION. SUBS AT BEGINNING OF XMAIN.MAC.

	CALL $VERSI

;NOTIFY OF PENDING DOWN TIME IF ANY

	CALL DWNTYP
;SAY INITIALIZATION HAS COMPLETED SUCCESSFULLY.
;UNTIL CINITF><0, ERROR ROUTINES HALT RATHER HAN TYPE MESSAGES.
; AND "REENTER" DOES A "START".

CMDN2B:	SETOM CINITF

;FIND OUT IF THIS JOB IS LOGGED IN. (MIGHT BE AT STARTUP IF SUBSIDIARY.
;  OR A SUBSYSTEM COULD LOG JOB IN.)

	GJINF			;USER # IN A, 0 IF NOT LOGGED
	MOVEM A,CUSRNO		;SAVE USER # OR 0
	MOVEM A,LIDNO		;SAVE AS LOGGED-IN DIR NUMBER IN CASE OLD MONITOR AND GETJI FAILS
	MOVE A,C		;GET THE JOB NUMBER
	HRROI B,LIDNO		;READ LOGGED-IN DIRECTORY NUMBER INTO LIDNO
	MOVEI C,.JILNO		;ASK FOR ONLY THIS ONE.
	GETJI			;DO IT.
	 JFCL			;IGNORE FAILURE, SEE LIDNO REF. ABOVE.
;ENABLE SPECIAL CAPABILITIES

CMDN2C:	MOVEI A,B0		;SAY THIS FORK
	RPCAP			;GET SPECIAL CAPABILITIES POSSIBLE IN 2
	HLLZ C,B		;ENABLE ALL PROCESS (LH) CAPABILITIES
	SKIPE PRVENF		;IF "ENABLE" COMMAND IS IN EFFECT,
	HRR C,B			;ALSO ENABLE RH (USER) CAPABILITIES.
	EPCAP

;SPECIAL CAPABILITIES ENABLED WORD MUST REMAIN IN C FOR THE FOLLOWING...
;ASSIGN ^C TO CHANNEL 1 IF PROCESS IS EMPOWERED TO DO SO.

	MOVEI A,.FHSLF
	CIS
	MOVE A,[XWD CTRLC,1]
	TLNE C,B0		;TEST SPEC CAP BIT 0
	ATI

;ASSIGN CHAR TO PRINT TIME USED (^T) TO PSI CHANNEL 3

	MOVE A,[XWD CTCODE,3]
	ATI

;ASSIGN CHARACTER TO CLEAR OUTPUT BUFFER

	MOVE A,[CTRLO,,5]	;CONTROL-O IS USED
	ATI

;ASSIGN ADVICE ESCAPE CHARACTER

	MOVE A,[ADVESC,,^D24]	;CONTROL-E IS USED
	ATI

	MOVE A,[ST%DIM+.FHSLF]	;SET DEFERRED+OURSELF
	RTIW			;GET CURRENT TIW FOR FOLLOWING STIW
	LDF C,1B<CTRLC>		;DEFER ^C
	TXZ	B,1B<ADVESC>	;DISABLE ^E UNTIL ADVICE CODE ENTERED
	STIW
	MOVEI A,.FHJOB
	RTIW			;UPDATED JOB TIW FOR EXEC
	MOVEM B,ETTYMD+TTWJTI
	MOVEM B,ITTYMD+TTWJTI	;INITIALLY, SAME FOR PGM

;PRINT "YOU HAVE A MESSAGE" IF APPROPRIATE
;HERE SO DONE EVEN AFTER ^C DURING LOGIN MESSAGE

	SKIPE CRPRA		; In CRJOB start up?
	 JRST [ HRRZ A,CRPRA+.CJPLP ; Get flags ptr
		MOVE B,CRPRA(A)
		TLNN B,(1B3)	; Creator want system messages etc?
		 JRST CMDIN4	; No
		ETYPE < Job %J on %L %D %E
>
		SETO A,		; This job
		HRROI B,LOGDAT
		MOVEI C,.JILLN	; Get last login D&T
		GETJI
		 SETZ A,	; Fails, used never logged in
		SETOM SYSMF	; Init guy so it works...
		MOVE A,[POINT 7,CSBUF,-1] ; This hasn't been init'd yet either
		MOVEM A,CSBUFP
		CALL PNTMES	; Print system message(s)
		JRST .+1]
	SKIPE MESMSF		;SKIP IF WE NEEDN'T CHECK FOR A MESSAGE
				;(NON-0 FROM LOGIN TO SUCCESSFUL
				;COMPLETION OF "MESMES")
	CALL MESMES		;SUBROUTINE NEAR "LOGIN"
;HERE WHEN READY TO INPUT A COMMAND.
;ALL COMMANDS RETURN HERE OR ABOVE HERE WHEN DONE.

CMDIN4::

	MOVE A,IOPT		;GET POINTER TO COMMAND STREAM JFNS
	HLRZ B,(A)		;GET INPUT JFN
	MOVEM B,CIJFN
	HRRZ B,(A)		;AND OUTPUT
	MOVEM B,COJFN		;RESET IT TOO.  "GARBAG" ROUTINE MAY HAVE LEFT COJFN WRONG.
	MOVEI Q1,ETTYMD
	CALL LTTYMD		;IN CASE LAST COMMAND DIDN'T RESTORE IT
	SETO A,
	CAME A,NPAGE
	CALL MAPPF		;DON'T LEAVE FORK PAGES MAPPED
	SETZM CSZ1		;ZERO STORAGE
	MOVE A,[XWD CSZ1,CSZ1+1]
        BLT A,CSZ2

;INITIALIZE WHAT NEEDS INITIALIZING

        MOVE A,[POINT 7,CBUF,-1] ;BYTE POINTER INTO COMMAND BUFFER,
				;IN WHICH ENTIRE LINE IS ACCUMULATED.
	MOVEM A,BFP		;STAYS IN BFP
	MOVEM A,BEGINP		;REMEMBER WHERE INPUT LINE BEGINS (FOR REPARSES)
        MOVE P,[IOWD PDL,PD]	;INIT PD POINTER

	MOVE A,[IOWD JBUFL,JBUF] ;INIT PTR INTO JFN BUFFER
	MOVEM A,JBUFP		;..
	SETOM 1(A)		;INIT JFN BUFFER TO -1'S: 0 IS A JFN.
	AOBJN A,.-1		;..

	MOVE A,[POINT 7,CSBUF,-1] ;INIT PTR INTO STR BUFFER FOR JSYS ARGS
	MOVEM A,CSBUFP
;INITIALIZE AUTOLOGOUT STUFF IF NECESSARY

	SKIPE CUSRNO
	JRST CMDN5E		;LOGGED IN, NOT RELEVANT.
	IFNBATCH (CMDN5E)	;NO ALO STUFF IF IN BATCH
	SKIPE ALOST		; Have we started the autologout stuff up?
	 JRST CMDN5D		; Yes, the following already done
	GTAD			;SAVE STARTUP TIME FOR USE IN
	MOVEM A,STRTIM		;"ALOTST" SUBR

; Setup a pending TIMER interrupt for AUTO-LOGOUT if job is inactive

	MOVE A,[.FHSLF,,.TIMEL]	; Set an elapsed timer for self
	MOVE B,[AUTOL2*^D1000]	; For that far in future
	MOVEI C,2		; On channel 2
	SETOM ALOST		; Say autologout stuff started
	TIMER
	 CALL JERR

;JOB ISN'T LOGGED IN, SEE IF ITS TIME TO AUTO-LOGOUT IT.

CMDN5D:	CALL ALOTST
;PRINT READY CHARACTER

CMDN5E:
; Check to see if CRJOB/PRARG start up & if so, a program to run

	SKIPE CRPRA		; CRJOB start up?
	 JRST [ HRRZ A,CRPRA+.CJPLP ; Yes, get flags ptr
		MOVE B,CRPRA(A)	; then flags
		TLNN B,(1B2)	; Want fork started?
		 JRST .+1	; No
		HRRZ A,CRPRA+.CJPKP ; Get ptr to fork & SFRKV offset
		HRRZ B,CRPRA(A)
		CALL CLPRA	; Clear CRJOB/PRARG area
		PUSH P,[CMDIN4] ; Where to return when done
		JRST ..STCR]	; Run it
	CALL CLPRA

;CHECK FOR DEFAULT "TAKE" COMMANDS

	MOVE A,CIJFN
	CAIE A,.PRIIN		;IF INPUT NOT FROM PRIMARY
	JRST NLGINI		;THEN NO CHANGE OF INPUT NOW
	SKIPE CUSRNO		;IF NOT LOGGED IN,
	SKIPE FILINI		;OR INITIALIZATION DONE,
	JRST NEXINI		;THEN SKIP FOR NOW
	SETOM FILINI		;DON'T COME BACK HERE AGAIN
	HRROI B,[ASCIZ "COMAND.CMD"]
	CALL TAKEIN
	CAIA			;DON'T RESET ANYTHING UNLESS WE'RE REALLY DOING "TAKE" NOW
	JRST CMDIN4		;RESET ALL COMMAND INFO AFTER TAKEIN ATTEMPT

NEXINI:	SKIPN LOGINI		;LOGIN JUST DONE?
	JRST NLGINI		;NO, SKIP THIS
	SETZM LOGINI		;CLEAR FLAG
	HRROI B,[ASCIZ "LOGIN.CMD"]
	SKIPE	BATCHF		;UNDER BATCH?
	HRROI	B,[ASCIZ "BATCH.CMD"] ;YES - USER OTHER FILE
	CALL TAKEIN		;SETUP EXEC INPUT
	CAIA			;DON'T RESET ANYTHING IF NOTHING GOT TAKEN
	JRST CMDIN4		;RESET ALL COMMAND INFO AFTER TAKEIN ATTEMPT

NLGINI:	MOVE A,CIJFN		;SEE WHERE INPUT IS COMING FROM
	CAIN A,.PRIIN		;INPUTTING FROM TERMINAL?
	CALL PNTMES		;YES, SO DONE WITH INITIALIZATION, TYPE SYSTEM MESSAGES

;PREFORM MAIL WATCH FUNCTION, IF REQUESTED BY SET MAIL-WATCH

	SKIPE MWATCF		;MAIL WATCH ON?
	CALL MWATCH		;YES.  SEE IF ANY NEW MAIL.

	CALL READY		;INITIALIZE FOR COMND JSYS
	MOVEI A,RERET		;REGULAR ERROR RETURN ADDRESS
	MOVEM A,CERET		;SAY WHERE TO GO AFTER PRINTING ERR MSG
	MOVEM A,NERET		;WHAT TO RESET CERET TO ON FATAL ERROR


;CLEAR SOME FLAGS

	MOVEI Z,0		;CLEAR FLAGS

;BEGIN INPUTTING AND DECODING A COMMAND

CIN0:	CALL COMSET		;SET UP THINGS FOR COMMAND INPUT
	MOVSI B,WHLUO+OPRUO+ERRUO
	CALL PRVCK	;CHECK FOR PRIVILEGED USER
	 JRST CIN9		;NOT PRIVILEGED, SO ^E NO POSSIBILITY
	MOVEI B,[FLDDB. .CMKEY,,CTBL1,<Command,>,,[
		FLDDB. .CMTOK,,<-1,,[ASCIZ //]>,,,[
		FLDDB. .CMFIL,CM%SDH,,<system program name>,,]]]
	JRST CIN10		;GO INPUT FIELD
CIN9:	MOVEI B,[FLDDB. .CMKEY,,CTBL1,<Command,>,,[
		FLDDB. .CMFIL,CM%SDH,,<system program name>,,]]
	SKIPN CUSRNO		;IF NOT LOGGED IN, CAN'T RUN PROGRAMS
	MOVEI B,[FLDDB. .CMKEY,,CTBL1,<Command,>]
CIN10:	MOVE A,CMFLG
	MOVEM A,SAVFLG		;SAVE FLAGS IN CASE REPARSE IS NEEDED
	MOVE A,CMPTR
	MOVEM A,SAVPTR
	CALL FIELD		;TRY TO READ COMMAND NAME
	TXNE A,CM%NOP		;MAKE SURE USER TYPED A VALID COMMAND
	 JRST CIN4		;NO
	LDB D,[331100,,(C)]	;GOOD PARSE,  SEE WHAT GOT TYPED
	CAIN D,.CMFIL		;FILESPEC?
	JRST CIN3		;YES, GO RUN PROGRAM
	CAIN D,.CMTOK		;^E?
	JRST CINE		;YES
	MOVE A,CMPTR
	ILDB A,A		;GET TERMINATOR OF COMMAND
	SKIPE CMINC		;IF NO UNPARSED CHARACTERS, CAN'T POSSIBLY BE ":" THERE
	CAIE A,":"		;DOES COMMAND END WITH COLON?
	JRST CIN2		; MUST BE COMMAND
	HLR D,C			;GET ADDRESS OF FUNCTION BLOCK
CINBAK:	LDB A,[331100,,(D)]	;GET FUNCTION CODE
	CAIN A,.CMFIL		;FILESPEC?
	JRST CINYES		;YES
	MOVE D,(D)		;NO, TRACE CHAIN
	JUMPE D,CIN4		;IF END OF CHAIN, NO FILESPEC POSSIBLE,
				;SO DON'T CHECK FOR ":".
				;NOTE: IF WE MERELY CHECKED FOR ":"
				;WITHOUT SEEING IF FILESPEC POSSIBLE,
				;USERS WOULD BE ABLE TO RUN PROGRAMS
				;WITHOUT BEING LOGGED IN!!!!
	JRST CINBAK		;NOT END OF CHAIN, GO CHECK FOR FILESPEC FIELD FURTHER IN CHAIN
CINYES:	MOVE A,SAVFLG		;COLON FOLLOWED COMMAND
	MOVEM A,CMFLG		;SOMETHING LIKE "SYS:" WHICH ISN'T REALLY A COMMAND
	MOVE A,CMPTR		;SEE WHERE WE ARE ON LINE NOW
	MOVE B,SAVPTR		;SEE WHERE WE WERE AT BEGINNING OF LINE
	MOVEM B,CMPTR		;RESET FIELD POINTER TO BEGINNING OF LINE
	CALL SUBBP		;GET NUMBER OF CHARACTERS WE WANT TO BACK UP
	ADDM A,CMINC		;INCREASE NUMBER OF UNPARSED CHARACTERS
	ADDM A,CMCNT		;SHOW INCREASE IN SPACE LEFT
	CALL COMSET		;SET UP FOR COMMAND AGAIN
	MOVEI B,[FLDDB. .CMFIL,CM%SDH,,<system program name>,,]
	JRST CIN10		;REREAD INPUT AS PROGRAM NAME

;ROUTINE TO SET UP WAKEUP CLASS AND DEFAULTS FOR COMMAND INPUT

COMSET:	CALL DOECHO		;MAKE SURE ECHOING IS ON FOR COMMAND INPUT!
	CALL WAKE		;WAKE ON EVERY FIELD IN CASE PASSWORD-CLASS COMMAND
	DEXTX <EXE>		;DEFAULT PROGRAM EXTENSION IS "EXE"
	HRROI A,[ASCIZ /SYS/]	;DEFAULT DEVICE FOR PROGRAMS IS SYS:
	MOVEM A,CJFNBK+.GJDEV
	MOVX A,GJ%OLD		;PROGRAM MUST EXIST
	MOVEM A,CJFNBK+.GJGEN
	RET

;PRIVILEGED, AND ^E TYPED

CINE:	call nowake		;^e seen, so all echoing on rest of this line
	KEYWD CTBL2		;USER PRIVILEGED, LOOKUP SPECIAL COMMAND
	0			;NO DEFAULT
	 CMERRX			;COMMAND ERROR IF COMMAND NOT FOUND
	JRST CIN22		;FOUND, HANDLE LIKE REAL COMMAND
;HAVE VALID FIRST KEYWORD IN COMMAND
;MAKE PRE-DISPATCH CHECKS

CIN2:	MOVEM B,COMAND		;REMEMBER WHICH COMMAND WE'RE DOING
	CALL NOWAKE		;ASSUME NOT WAKING UP ON EVERY FIELD
	MOVE P3,(B)		;GET ADDRESS OF COMMAND DISPATCH DATA
	MOVE P3,(P3)		;GET		COMMAND DISPATCH DATA
CIN22:	MOVE P4,P3		;1ST KW'S VALUE WD STAYS IN P4.
	TLNE P4,NOLOG
	JRST .+3
	SKIPN CUSRNO		;SKIP IF LOGGED IN
	ERROR <LOGIN please>
	TLNE P4,EASUB		;DOES CMND EXAMINE, ALTER, OR RUN PROG?
	JRST [	SKIPN PRVENF	;YES, PRIVILEGES ENABLED?
		SKIPN PROPSF	;NO, PROPRIETARY PROGRAM?
		JRST .+1	;OK
		JRST CERR]	;UNAUTHORIZED MEDDLING
	MOVE B,P3		;FOUND PRIVILEGED COMMAND, MAKE SURE PRIVILEGES
	CALL PRVCK
	 JRST CERR		;INSUFFICIENT PRIVILEGES
	TLNE P4,ONEWD		;IS IT A ONE-WORD COMMAND?
        CONFIRM			;YES, HANDLE CONFIRMATION NOW.

;DISPATCH TO ROUTINE TO DECODE REST OF (NON-ONE-WORD) COMMAND THEN
;EXECUTE COMMAND.
;IF "INFILN" BIT WAS ON, JFN IS STILL IN A, AS WELL AS "CJFN1".

	CALL (P4)		;DISPATCH WITH PUSHJ,
				;CAN RETURN WITH POPJ
				;OR JRST CMDIN2,3,4.
	JRST CMDIN4		;WHERE MOST COMMANDS SHOULD RETURN.
	JRST CMDIN4		;IN CASE SOMEBODY SKIPS

;COMMANDS WHICH CLANK QUEUE SYSTEM

QCM::	HRROI B,[GETSAVE (SYS:QUENCH.)]
	JRST DOCC1

;DO CCL COMMAND - RUN SYS:COMPILE AND PASS INPUT LINE

   NOSHIP,<
DOCCL::	HRROI B,[GETSAVE(SYS:COMPIL.)]
   >;NOSHIP
DOCC1::	CALL TRYGTJ		;CCL COMMAND, BEGIN GET OF COMPIL
	 JRST CIN4		;NO COMPIL THEREFORE NO CCL COMMANDS...
	LINEX <Data line to be sent to program>
	 CMERRX
	confirm
	JRST RSUBS4		;CONTINUE WITH RUN OF PROGRAM
;FIRST KEYWORD IS NOT A COMMAND NAME,
; SEE IF ITS A SUBSYSTEM NAME

CIN3:
CIN3C:	MOVE A,B
	CALL JFNSTK		;REMEMBER THE PROGRAM JFN
	MOVE A,CSBUFP		;GET POINTER TO SPACE IN WHICH TO BUILD COMMAND LINE FOR PROGRAM
	MOVE B,JBUFP		;GET POINTER TO JFN OF PROGRAM
	MOVE B,(B)		;NOW B HAS JFN
	MOVX C,1B8		;WE WANT JUST THE NAME FIELD
	JFNS			;GET FILE NAME
	EXCH A,CSBUFP		;UPDATE POINTER TO STRING BUFFER
	MOVEM A,RSPTR		;REMEMBER RSCAN POINTER
	LINEX <Data line to be sent to program>
	 CMERRX
	MOVE B,CMABP			;GET POINTER TO BEGINNING OF END OF LINE
	ILDB C,B		;GET FIRST CHARACTER OF REST OF LINE
	MOVEI B,40		;SPACE TO SEPERATE FILENAME FROM REST OF LINE
	MOVE A,CSBUFP		;POINT TO END OF FILENAME
	CAIE C,0		;IS THERE ANY MORE TO THE LINE?
	BOUT			;YES, SO PUT THE SPACE IN
	MOVE B,CMABP		;GET POINTER TO ATOM BUFFER (REST OF LINE)
	MOVEI C,0		;END ON NULL
	SOUT			;COPY REST OF LINE FOR RSCAN
	HRROI B,[BYTE (7)12,0]	;LINEFEED TO END RSCAN BUFFER
	MOVEI C,0
	SOUT			;FINISH LINE WITH LF
	IBP A			;LEAVE NULL AFTER LINE
	MOVEM A,CSBUFP		;SAVE NEW POINTER TO STRING STORAGE
	CONFIRM			;GET CONFIRMATION AFTER DATA LINE
RSUBS4:	MOVEI Q1,ETTYMD		;MAKE SURE NORMAL TTY MODE RESTORED
	CALL LTTYMD
	CALL ERESET		;PREPARE TO LOAD AND RUN PGM
	PUSH P,[..STRT]		;SET RETURN TO JOIN "START" COMMAND
	JRST $GET2		;AND JOIN GET

;NOT A SUBSYSTEM NAME,
; GO TO SPECIAL ERROR PROCESSOR IF THIS USER HAS ONE
;4/30/70: AT THIS POINT WE DON'T KNOW THE WHOLE INPUT TEXT
;	BECAUSE WE HAVEN'T CAPTURED CHARACTERS READ BY GTJFN.

CIN4:	ERROR <Unrecognized command>
;EXAMINE (MEMORY LOCATION) N

.EXAMI:	NOISE <MEMORY LOCATION>
	OCTX <Memory address to be examined, in octal>
	 CMERRX <Octal number required>
	CONFIRM
	TLNE B,-1		;THIS COMMAND ONLY ALLOWS ADDRESS = 0 THRU 777777
	ERROR <Memory address not between 0 and 777777>
	PUSH P,B		;SAVE ADDRESS BEING EXAMINED
	move a,b		;GET ADDRESS BEING EXAMINED
	CALL MAPPF		;MAP THAT PAGE & GET ACCESS INFO
	TXNN A,PA%PEX
	ERROR <No such page>
	TXNN A,PA%RD
	ERROR <Can't read that page>
	POP P,A			;RETRIEVE ADDRESS
	MOVE B,A
	CALL TOCT		;TYPE ADDRESS IN OCTAL
	MOVEM A,DOT		;UPDATE CURRENT LOCATION
	ANDI A,777		;MASK OFF PAGE # TO GET REL ADDRESS IN PAGE
	TYPE </	>		;TYPE SLASH AND TAB AFTER ADDRESS
	HLRZ B,PAGEN(A)		;LH OF WORD IN PAGE BUFFER
	JUMPE B,CSLSH1		;LH NON-0?
	CALL TOCT		;YES, TYPE IT IN OCTAL
	TYPE <,,>
CSLSH1:	HRRZ B,PAGEN(A)		;RH
	CALL TOCT		;TYPE IT
	ETYPE<%_>		;TYPE CARRIAGE RETURN
	JRST CMDIN4		;DONE, GET NEXT COMMAND
;DEPOSIT (MEMORY LOCATION) N (CONTENTS) M

.DEPOS:	NOISE <MEMORY LOCATION>
	OCTX <Memory address whose contents is being changed, in octal>
	 CMERRX <Octal number required>
	TLNE B,-1		;THIS COMMAND ONLY ALLOWS ADDRESS = 0 THRU 777777
	ERROR <Memory address not between 0 and 777777>
	PUSH P,B		;SAVE ADDRESS
	NOISE <CONTENTS>
	CALL OCTCOM		;INPUT VALUE, ACCEPTING LH,,RH ETC,
	PUSH P,A		;SAVE DATA FOR DEPOSITING
	CONFIRM
	SKIPG FORK		;FORK EXISTS?
	CALL ECFORK		;NO, CREATE ONE
	MOVE A,-1(P)		;GET LOCATION BEING WRITTEN INTO
	CALL MAPPF		;MAP THAT PAGE AND GET ACCESS INFO
	MOVEM A,-1(P)		;SAVE ACCESS INFO WITH ADDRESS
	TXNN A,PA%WT
	JRST [	TXNN A,PA%CPY	;COPY-ON-WRITE BIT
		ERROR <Can't write that page>
		TYPE < [Shared] >
		JRST .+1]
	TXNN A,PA%PEX
	JRST [	TYPE < [New] > ;ADVISORY MESSAGE
		JRST .+1]

;GET VALUE

	POP P,A		;RESTORE DATA TO BE WRITTEN
	POP P,B		;GET LOCATION BEING WRITTEN INTO
	HRRZM B,DOT		;UPDATE CURRENT LOCATION

;STORE A AT B IN FORK. ASSUME WE STILL HAVE THE PAGE.

	ANDI B,777		;MASK OFF PAGE # PART OF ADDRESS
	MOVEM A,PAGEN(B)	;STORE INTO PAGE BUFFER

;EXECUTION OF "\"...
;IF ADDRESS < 20, SET FORK AC'S. NON-AC PAGES HANDLE THEMSELVES.

	MOVE C,DOT
	CAILE C,17
	JRST CMDIN4
	MOVE A,FORK
	MOVEI B,PAGEN
	CAIGE C,20
	SFACS
	JRST CMDIN4

;	READ ONLY STORAGE AREA

;EXTERNS FOR CELLS REFERENCED IN THIS AREA ONLY
; SPECIAL CHARACTER ROUTINES:

;COMMAND TABLES

;FORM:
;       LABEL:  NUMBER OF ENTRIES
;               XWD [VALUE],[ASCIZ @TEXT@]  FOR EACH ENTRY, ALPH ORDER
;   VALUE IS GENERALLY  XWD BITS,ADDRESS
;       SEE "DEFINITIONS" FILE FOR BIT SYMBOLS AND MACRO DEFINITIONS

;MACROS USED TO GENERATE TABLES (DEFINED IN "DEFINITIONS" FILE)
;
;	T TEXT[,BITS[,ADDRESS]]		;HERE []'S MEAN OPTIONAL
;		SETS UP ENTRY. DEFAULTS ADDRESS TO ".TEXT", OR IF
;		THAT IS UNDEFINED, TO "NOT IMPLEMENTED" ERROR ROUTINE
;
;	X TEXT
;		CREATES A SPECIAL FAKE ENTRY, TO MAKE AN OTHERWISE
;		UNIQUE SUBSET AMBIGUOUS (EVEN THE EXACT TEXT GIVEN TO X 
;		MACRO WILL BE TREATED AS AMBIGUOUS).  USED WHERE ACTUAL
;		AMBIGUITY IS WITH AN ENTRY IN ANOTHER TABLE SEARCHED
;		LATER.
;
;	TABLE	RESERVES WD FOR # ENTRIES AT TOP OF TABLE
;
;	TEND	FILLS IN # OF ENTRIES SINCE LAST "TABLE" MACRO
;		IN LOCATION RESERVED BY THAT "TABLE" MACRO
;COMMANDS NOT PREFIXED BY ^E.
;CCL COMMANDS ALL DISPATCH TO DOCCL, QUEUE COMMANDS DISPATCH
;TO QCM

CTBL1:  TABLE

T ACCESS,	;ACCESS (TO DIRECTORY) <NAME>
T ADVISE,			;ADVISE USER/TTY
T APPEND,			;APPEND <FILE> (TO) <FILE>
T ASSIGN,			;ASSIGN <DEVICE> (AS) <NAME>
T ATTACH,NOLOG	;ATTACH (TO JOB) <JOBNO>
T BACKSPACE,		;BACKSPACE
T BREAK,NOLOG	;BREAK (LINKS)
T BUILD,,.CREAT			;BUILD OR MODIFY DIRECTORY
T CANCEL				;KILL QUEUE REQUEST
   NOSHIP,<
T CLEAR,			;CLEAR DEVICE DIRECTORY
   >;NOSHIP
T CLOSE,			;CLOSE (JFN) <JFN NUMBER>
T COMPILE,		;COMPILE (FROM)
ta CON			;"con" means continue
T CONNECT,	;CONNECT (TO DIRECTORY) <NAME>
.con:	T CONTINUE,		;CONTINUE
T COPY,		;COPY (FROM) <FILE> (TO) <FILE>
T CREATE,,.EDITC		;CREATE (FILE) <FILE>
T CREF,			;CREF (FILE)
T CSAVE,EASUB	;SAVE ... (ON) <FILE>.
TA D				;"D" IS DEPOSIT
T DAYTIME,ONEWD+NOLOG		;DAYTIME
T DDT,ONEWD+EASUB		;START DDT
T DEASSIGN,		;DEASSIGN (DEVICE)
T DEBUG,			;DEBUG (FROM)
T DEFINE,			;DEFINE (LOGICAL NAME)--(AS)--
T DELETE,		;DELETE <FILE>
.D:	T DEPOSIT			;DEPOSIT INTO MEMORY LOCATION
T DETACH,	;DETACH JOB
T DIRECTORY, ;DIRECTORY.
T DISABLE,		;DISABLE PRIV CMNDS
   IPCF,<
   NOSHIP,<
T DMOUNT,			;DMOUNT (TAPE) <LOGICAL> (VOLID) ...
   >;NOSHIP
   >;IPCF
TA E		;"E" SAME AS "EXAMINE"
T EDIT,			;EDIT (FILE) <FILE> (OUTPUT AS) <FILE>
T ENABLE,		;ENABLE PRIV CMDS
T END-ACCESS,,.ENDAC	;END-ACCESS (TO DIRECTORY) <NAME>
T EOF,			;END OF FILE
TA EX 	;SPECIAL ABBREV FOR EXECUTE
.E:	T EXAMINE			;EXAMINE MEMORY CONTENTS
.EX:	T EXECUTE,		;EXECUTE (FROM)
T EXPUNGE, ;EXPUNGE (DELETED FILES)
T FDIRECTORY, ;DIR, CRAM, EVERYTHING, NO HEADING
T FORK,			;FORK <N>. AFFECTS /, \, ETC.
T GET,		;GET <FILE>
T HELP			;HELP COMMAND
T INFORMATION,NOLOG	;INFORMATION COMMANDS
   NOSHIP,<
T LABEL,,DOCCL		;LABEL
   >;NOSHIP
IT LIST			;LIST <FILE>. TAKES SUBCOMMANDS.
T LOAD,			;LOAD (FROM)
TA LOG		;FUDGE TO RECOG "LOG" AS "LOGIN"
.LOG:	T LOGIN,NOLOG	;LOGIN <USER> <PASSWD> <ACCT>
T LOGOUT,NOLOG		;LOGOUT
   NOSHIP,<
T MAKE,,DOCCL		;MAKE (FILE)
   >;NOSHIP
T MERGE,EASUB	;MERGE <FILE>
T MODIFY			;MODIFY QUEUE REQUESTS
   NOSHIP,<
T MOUNT				;MOUNT <DEVICE>
   >;NOSHIP
T POP,		;POP EXEC LEVEL
T PRINT				;PRINT
IT PSAVE				;SAME AS SAVE, PUT PAGE ACCESS PRESERVED
   NOSHIP,<
T PUNCH,,QCM		;PUNCH
   >;NOSHIP
T PUSH,		;PUSH EXEC LEVEL
IT QUEUE,,QCM		;RUN QMANGR
T R,			;= RUN SYS:
T RECEIVE,			;RECEIVE (LINKS/ADVICE)
T REENTER,		;REENTER
T REFUSE,			;REFUSE (LINKS/ADVICE)
T REMARK			;ENTER REMARK MODE
T RENAME,		;RENAME (...) -- (TO BE) --
T RESET,ONEWD		;RELEASES MEMORY & CLOSES FILES
T REWIND,			;REWIND
T RUN,		;RUN <FILE>. STARTS ENV FILE.
T SAVE,EASUB	;SHARABLE SAVE
   IPCF,<
T SDISMOUNT,		;SDISMOUNT (FILE STRUCTURE) <NAME>
   >;IPCF
T SET,NOLOG			;SET COMMAND
T SKIP,			;SKIP
   IPCF,<
T SMOUNT,			;SMOUNT (FILE STRUCTURE) <NAME> ...
T SREMOVE,			;SREMOVE (FILE STRUCTURE) <NAME> ...
   >;IPCF
T START,			;START PROGRAM
T SUBMIT			;SUBMIT
T SYSTAT,NOLOG,.SISTA	;SYSTEM STATUS PRINTOUT
T TAKE,		;TAKE (EXEC INPUT FROM) FILESPEC
T TALK,		;TALK (TO)
T TDIRECTORY, ;DIR, TIME W, CHRON W, REV
   NOSHIP,<
T TECO,,DOCCL		;TECO (FILE)
   >;NOSHIP
T TERMINAL,NOLOG		;TERMINAL TYPE IS N
   IPCF,<
T TMOUNT,			;TMOUNT (TAPE) <LOGICAL> (VOLID) ...
   >;IPCF
T TRANSLATE			;TRANSLATE BETWEEN DIRS AND PPNS
   NOSHIP,<
T  TV,			;TV COMMAND (IN EXECED)
   >;NOSHIP
T TYPE,			;LIST FILE TO TTY
T UNATTACH,NOLOG		;DETACH REMOTE JOB
T UNDELETE,		;UNDELETE <FILE>
T UNLOAD,			;UNLOAD
   NOSHIP,<
T UNMOUNT,			;UNMOUNT <DEVICE>
   >;NOSHIP
T VDIRECTORY, ;DIR, PROT, SIZ, LEN, TIM W, USER W

        TEND

STAT,<IFG .-CTBL1-1000,<PRINTX COMMAND TABLE TO LARGE FOR STATISTICS>>
;PRIVILEGED COMMANDS PREFIXED WITH ^E
;ONLY LEGAL FOR PRIV USERS WHO HAVE "ENABLE"D PRIV COMMANDS

CTBL2:  TABLE

T CEASE,,ECEASE	;SYSTEM SHUTDOWN
T CREATE,			;CREAT/MODIFY DIRECTORY
T DEFINE,,EDEFIN		;CREATE LOGICAL NAME
T EDDT,ONEWD+WHLUO		;GO TO DDT LOOKING AT EXEC
T PRINT,,EPRINT	;PRINT DIRECTORY INFORMATION
T QUIT,ONEWD+WHLUO	;QUIT: EXIT TO SUPERIOR EXEC
T SEND,			;SEND (MESSAGE) TO ALL
T SET,,ESET		;SET DATE AND TIME
T SPEAK,			;SPEAK (TO SYSJOB)

	TEND
;PSEUDO-INTERRUPT SYSTEM TABLES

; IN "SUBRS" ASSEMBLY:

;LEVEL TABLE: WHERE TO STORE PC'S FOR VARIOUS LEVELS

LEVTAB::LEV1PC
	LEV2PC
	LEV3PC

;CHANNEL TABLE
;INDEXED BY CHANNEL NUMBER. XWD LEVEL,ADDRESS FOR EACH.

CHNTAB:
 0				;0: GENERAL, AVAILABLE
 XWD 2,CCPSI			;1: ASSIGNED BY PROGRAM TO ^C
				; NOTE: ^C ENTRY IS CHANGED BY "HALT"
 XWD 1,ALOPSI			;2: ASSIGNED BY PROGRAM TO AUTO-LOGOUT
 XWD 3,USEPSI			;3: ASS BY PROG TO CHAR TO PRINT RUNTIME (^T)
 XWD 2,TLMPSI			;4: TIME LIMIT EXCEEDED TRAP
 XWD 2,COBPSI			;5: ASS BY PROG TO CLEAR OUTBUF ON ^O
 0				;6: OV, FOV, NODIV, FXU (SHOULDN'T BE ENABLED)
 0
 0
 XWD 1,[TRAP (1,<Pushdown overflow>)] ;9: PDL OVERFLOW
 XWD LV.EOF,EOFPSI		;10: END OF FILE
 XWD LV.DAT,DATPSI		;11: FILE DATA ERROR
 XWD LV.QTA,QTAPSI		;12: QUOTA EXCEEDED (OR DISK FULL)
 XWD 1,[TRAP (1,<File error 4>)] ;13: "FILE CONDITION 4" ( " " " )
 0				;14: TIME OF DAY.
 XWD LV.ILI,ILIPSI		;15-18: I>>, MR>>, MW>>, MX>>
 XWD 1,[TRAP (1,<Illegal memory READ>)]
 XWD 1,[TRAP (1,<Illegal memory WRITE>)]
 XWD 1,[TRAP (1,<Illegal memory EXECUTE>)]
 XWD 1,INFTRM			;19: INFERIOR FORK TERMINATION
 XWD 1,[TRAP (1,<File or Swapping space exceeded>)]
				;20: MACHINE SIZE EXCEEDED
 REPEAT 3,<0
>				;21-23: UNASSIGNED
XWD LV.ESC,ESCPSI		;24: ESCAPE CHARACTER FOR ADVISE
 REPEAT ^D11,<0
>				;24-35: GENERAL
IFN .-CHNTAB-^D36,<PRINTX CHNTAB SCREWED UP
>

;INITIAL WORD FOR COMMAND STREAM JFN POINTER

IOPTB::	IOWD IOLEN,IOLST	;INITIAL POINTER FOR COMMAND STREAM
;SPECIFIC EXEC COMMAND ROUTINES
;THESE ROUTINES ARE DISPATCHED TO BY THE MAIN LOOP, AS DRIVEN
;BY THE TABLES

;THE COMMAND ROUTINES ARE GROUPED AS FOLLOWS:

;  REST OF XMAIN.MAC:
;    STATUS COMMANDS GROUP -- STATUS, JOBSTAT, RUNSTAT, USESTAT,
;	FILSTAT, DSKSTAT, SYSTAT, STATISTICS, ERRSTAT, MEMSTAT.
;    TERMINAL CHARACTERISTICS COMMANDS GROUP -- HALFDUPLEX, FULLDUPLEX,
;	TABS, FORMFEED, LOWERCASE, NO ... , INDICATE.

;  X1CMD.MAC:
;    OTHER COMMANDS, IN ALPHABETICAL ORDER.
;    MOST PRIVILEGED COMMANDS.

;  X2CMD.MAC, X3CMD.MAC, X4CMD.MAC:
;    SOME COMMANDS WITH LONG ROUTINES, SEGREGATED TO REDUCE
;    NORMAL WORKING PAGE SET:
;	X2CMD.MAC:	COPY, LIST/TYPE, REDIRECT/DETACH
;	X3CMD.MAC:	DIRECTORY,
;	X4CMD.MAC:	CREATE, PRINT

;  ABOVE IN XMAIN.MAC:
;    /, \, VERSION
;SYSTAT

;BITS IN Q1 USED FOR SYSTAT OUTPUT CONTROL

SYSIND==1

DEFINE SYSBIT(A)
<	IRP A,<
IFE SYSIND,<PRINTX SYSTAT CONTROL BITS EXHAUSTED
>
SY%'A==SYSIND
SYSIND==SYSIND+SYSIND
>>

SYSBIT <HED,NHD,TTY,USR,SUB,TIM,CON,LIM,CJB,JOB,NJB,STA,NOP>

SYSDEF==SY%TTY!SY%USR!SY%SUB	;DEFAULT LISTING

SYSALL==SY%TTY!SY%USR!SY%SUB!SY%TIM!SY%CON!SY%LIM!SY%CJB!SY%STA ;ALL (EVERYTHING)

;INDICES FOR STACK ARGS
SY$JOB==0	;JOB NUMBER
SY$TTY==1	;LINE NUMBER
SY$DIR==2	;DIRNUM
SY$USR==3	;USER NUMBER

.SISTA:	STKVAR <SISTAS,SISTAN>
	MOVE A,COJFN
	MOVEM A,OUTDSG
	MOVE Q1,[SYSDEF]
	MOVE A,[-SYSTAL,,SYSTAK]
	MOVEM A,FRAME		;SAVE ARG START
	TLZ Z,F3
	JRST SYSTK1		;GO READ THE LINE AFTER WORD "SYSTAT"

SYSTK.:	GJINF
	MOVEI A,SY$JOB
	CALL SSTACK		;PUT FLAVOR ON STACK
	MOVE A,C
	CALL SSTACK		;PUT ITEM ON STACK
	JRST SYST1J

SYSTK1:	MOVEI B,[
		FLDDB. .CMKEY,,$SYSTA,,,[
		FLDDB. .CMUSR,,CM%DWC,,,[
		FLDDB. .CMDIR,,CM%DWC,,,[
		FLDDB. .CMNUM,CM%SDH,5+5,<Decimal job number>,,[
		FLDDB. .CMCMA,,,,,[
		FLDDB. .CMTOK,,<-1,,[ASCIZ /./]>,,,[
		flddb. .cmcfm,,,,,]]]]]]]
	call field		;get some input
	txne a,cm%nop		;did user did something legitimate?
	 jrst SYSNX		;no
	ldb d,[331100,,(c)]	;get function code
	cain d,.cmkey		;keyword?
	jrst syskey		;yes
	cain d,.cmusr		;user name?
	jrst systu		;yes
	cain d,.cmdir		;directory name?
	jrst systd		;yes
	cain d,.cmnum		;decimal job number?
	jrst SYSTJ		;yes
	cain d,.cmcma		;comma?
	jrst syssub		;yes, maybe subcommands coming
	cain d,.cmtok		;dot?
	jrst systk.		;yes
	cain d,.cmcfm		;end of line?
	jrst systs0		;yes go execute command
	call screwup		;should never get here

;keyword typed after systat

syskey:	call getkey		;change table address to dispatch data
	CALL (P3)
	JRST SYSTK1

;comma typed..

SYSSUB:	CRRX <Carriage return to enter subcommands, or another SYSTAT argument>
	 JRST SYSTK1		;NO CR AFTER COMMA, NOT TIME FOR SUBCOMMANDS
	JRST SYSUB1		;COMMA CR, SO GO GET SUBCOMMANDS

SYSNX:	CMERRX <Invalid SYSTAT argument>

SYSUB1:	SUBCOM $SYSTB
SYSTS0:	MOVE A,OUTDSG		;OUTJFN
	LDF B,OF%WR		;WRITE
	CALL $OPEN7		;OPEN, 7 BIT BYTES, MODE 0.
	TXNN	Q1,SY%JOB!SY%NJB ;IF NEITHER JOB NOR NON-JOB NOR DEBUG
	TXO	Q1,SY%JOB!SY%NJB ;THEN DEFAULT TO JOB AND NON-JOB
	TXNN	Q1,SY%HED!SY%NHD ;IF HEADER NOT DECIDED,
	TXO	Q1,SY%HED		;DEFAULT TO HEADER
	TXNE	Q1,SY%NJB
	CALL SYPART		;TYPE SYSTEM PART
	TXNE	Q1,SY%JOB
	CALL JBPART		;TYPE JOB LINES
	RET

SYPART:	PUSH P,Q1
	MOVE A,OUTDSG
	MOVEI B," "
	CALL TBOUT
	GTAD
	MOVE B,A
	CAMN B,[-1]
	MOVSI B,1		;DO SAME AS %A IF NO DATE
	MOVE A,OUTDSG
	MOVSI C,B1+B17
	ODTIM
	HRROI B,[ASCIZ/  Up /]
	SETZ C,
	SOUT
	TIME
	IDIV A,B
	CALL TOUTD
	MOVE A,OUTDSG
	HRROI B,[ASCIZ/
 /]
	SETZ C,
	SOUT
	CALL USRCNT		;COUNT USERS
	PUSH P,A		;SAVE NUMBER OF OPR JOBS
	MOVE A,OUTDSG
	MOVEI C,^D10
	NOUT
	 CALL JERRC
	MOVEI B,"+"
	CALL TBOUT
	POP P,B
	NOUT
	 CALL JERRC
	HRROI B,[ASCIZ/ Jobs   Load av /]
	SETZ C,
	SOUT
	MOVE A,[SIXBIT /SYSTAT/]
	MOVEI B,14
	CALL MORET		;GET LOAD AVERAGES
	MOVE A,OUTDSG
	MOVE C,[1B4+1B6+1B11+3B23+2B29]
	MOVE B,4
	FLOUT
	 CALL JERRC
	MOVEI B," "
	CALL TBOUT
	MOVE B,5
	FLOUT
	 CALL JERRC
	MOVEI B," "
	CALL TBOUT
	MOVE B,6
	FLOUT
	 CALL JERRC
	CALL SNDEOL
	CALL SNDEOL		;TWO END OF LINES
	MOVEI A,.SFOPR		;READ OPR STATUS
	TMON
	JUMPN B,SYOPRI		;JUMP IF OPR IN ATTENDANCE
	MOVE A,OUTDSG
	HRROI B,[ASCIZ / No operator in attendance

/]
	SETZ C,
	SOUT
SYOPRI:	SETZ D,
	GTB DBUGSW		;READ DBUGSW
	JUMPE A,SYDBG1		;0=NORMAL, DON'T PRINT
	HRROI B,[ASCIZ/ System is stand-alone/]	;ASSUME THIS
	CAIN A,1		;1=REMEDIAL
	HRROI B,[ASCIZ / System is remedial/]
	MOVE A,OUTDSG
	SETZ C,
	SOUT
	CALL SNDEOL
	CALL SNDEOL		;TWO END OF LINES
SYDBG1:	CALL SYSDWN		;PRINT DOWN-TIME INFO
	POP P,Q1		;RESTORE AC
	RET

SYSDWN::MOVEI D,0		;GET ITEM 0 FROM DWNTIM TABLE
	GTB DWNTIM
	JUMPE A,R		;DO NOTHING IF NOT SET
	MOVE D,A
	MOVE A,OUTDSG
	HRROI B,[ASCIZ/ System shutdown scheduled for /]
	SETZ C,
	SOUT
	MOVE B,D
	ODTIM
	MOVEI D,1		;GET ITEM 1
	GTB DWNTIM
	JUMPE A,SYDWN1		;JUMP IF UPTIME NOT SET
	MOVE D,A
	MOVE A,OUTDSG
	HRROI B,[ASCIZ/,
 Up again at /]
	SETZ C,
	SOUT
	MOVE B,D
	ODTIM
SYDWN1:	MOVE A,OUTDSG
	CALL SNDEOL
	CALL SNDEOL		;TWO END OF LINES
	RET

;LOOP TO TYPE TSS JOB #, TTY #, USER  FOR EACH JOB

JBPART:	TLZ Z,F1+F2		;CLEAR LOCAL FLAGS
	MOVSI A,(RC%EMO)	;EXACT MATCH ONLY
	HRROI B,[ASCIZ /OPERATOR/]
	RCUSR			;GET OPERATOR'S USER NUMBER
	TLNE A,(RC%NOM+RC%AMB)	;GOT IT?
	 MOVEI C,-1		;IF NO SUCH, USE -1
	MOVEM C,SYSDIR
	TLZ Z,F3		;NO JOBS PRINTED YET
SYST9A:	SETO D,
	GTB JOBRT		;GET # POSSIBLE JOBS
	HRLZ D,A		;XWD AOBJN COUNT, JOB #

;TOP OF LOOP

DEFINE .JIBAS<CSBUF-.JITNO>

SYST2:	HRRZ A,D
	MOVE B,[.JITNO-<.JILNO-1>-1,,CSBUF];.JITNO TO .JILNO
	MOVEI C,.JITNO		;STARTING WITH .JITNO
	GETJI
	 CALL [	CAIE A,GTJIX4	;NO SUCH JOB?
		JRST JERR	;NO, COMPLAIN
		POP P,(P)
		JRST SYST9]	;YES, SKIP IT
	HRROI B,.JIBAS+.JILNO	;PREPARE TO GET LOGGED-IN DIR NUMBER
	MOVE C,.JIBAS+.JIUNO	;ASSUME OLD MONITOR AND UNUM=LNUM
	MOVEM C,.JIBAS+.JILNO
	MOVEI C,.JILNO
	GETJI			;TRY TO GET LOGGED-IN DIR NUMBER
	JFCL			;FAILED, BUT SEE "MOVE C," ABOVE
	SKIPGE .JIBAS+.JIRT	;NEG RUN TIME MEANS NO JOB
	JRST SYST9		;SO SKIP IT

;CHECK FOR PASS 1 OR 2

	SETO B,			;ASSUME NOT OPR
	MOVE A,SYSDIR
	CAMN A,.JIBAS+.JIUNO
	SETZ B,			;FLAG OPR
	TLNE Z,F2
	SETCA B,		;REVERSE TEST FOR PASS 2
	JUMPE B,SYST9		;PASS 1, SKIP OPR. PASS 2, DO OPR

;CHECK IF REQUESTED JOB

	MOVE A,[-SYSTAL,,SYSTAK]
	CAMN A,FRAME		;ANY ARGS?
	JRST SYST2Y
SYST2A:	MOVE B,(A)		;GET INDEX INTO FUNCTION TABLE
	MOVE C,1(A)		;GET ARG 
	XCT [	JRST SYST2D
		CAMN C,.JIBAS+.JITNO
		JRST SYST2C
		JRST SYS2U](B)		;NOTE INDEX ***
	JRST SYST2Z		;MATCH
SYST2B:	ADD A,[2,,2]
	CAME A,FRAME
	JRST SYST2A
	JRST SYST9		;NO MATCH

SYS2U:	CAMN C,.JIBAS+.JIUNO	;CORRECT USER NUMBER?
	JRST SYST2Z		;YES
	JRST SYST2B

SYST2C:	CAMN C,.JIBAS+.JILNO
	JRST SYST2Z
	TXNN	Q1,SY%CON	;SHOWING CONNECTED DIR'S?
	JRST SYST2B
	CAMN C,.JIBAS+.JIDNO
	JRST SYST2Z
	JRST SYST2B

SYST2D:	CAIN C,(D)		;CURRENT JOB?
	JRST SYST2Z
	TXNN	Q1,SY%CJB
	JRST SYST2B
	CAMN C,.JIBAS+.JICPJ
	JRST SYST2Z
	JRST SYST2B

SYST2Y:	TRNE D,-1
	JRST SYST2Z
	SKIPGE .JIBAS+.JITNO
	JRST SYST9		;SKIP JOB 0 FOR NORMAL PRINT IF DETACHED
SYST2Z:

;HAVE A REAL JOB #. PRINT IT.

	TLOE Z,F1		;TYPE HEADER FIRST TIME.
	JRST SYSTS2
	TXNN	Q1,SY%HED
	JRST SYSTS2
	MOVE A,OUTDSG
	HRROI B,[ASCIZ/ Job /]
	SETZ C,
	SOUT
	HRROI B,[ASCIZ/ CJB/]
	TXNE	Q1,SY%CJB
	SOUT
	HRROI B,[ASCIZ/ Line/]
	TXNE	Q1,SY%TTY
	SOUT
	HRROI B,[ASCIZ/ Program/]
	TXNE	Q1,SY%SUB
	SOUT
	HRROI B,[ASCIZ/ State/]
	TXNE	Q1,SY%STA
	SOUT
	HRROI B,[ASCIZ/  Time   /]
	TXNE	Q1,SY%TIM
	SOUT
	HRROI B,[ASCIZ/  Limit  /]
	TXNE	Q1,SY%LIM
	SOUT
	HRROI B,[ASCIZ/  User/]
	TXNN	Q1,SY%USR
	JRST SYST2U
	SOUT
	HRROI B,[ASCIZ/, <Directory>/]
	TXNE	Q1,SY%CON
	SOUT
SYST2U:	CALL SNDEOL
	TLZ Z,F3		;NO NEW LINE AFTER TITLE
SYSTS2:	MOVE A,OUTDSG
	TLZE Z,F3		;SEPERATE USER FROM OPR?
	CALL SNDEOL
	HRRZ B,D
	MOVE C,[XWD  B2+4,^D10]	;LEFT ADJ IN 4 COLS, DECIMAL
	NOUT			;CONVERT AND PRINT JOB #
	 CALL JERRC
	PUSH P,D
	GJINF
	POP P,D
	MOVEI B," "		;ASSUME NOT CURRENT JOB
	CAIN C,(D)		;OUR JOB?
	MOVEI B,"*"		;YES, INDICATE
	MOVE A,OUTDSG
	CALL TBOUT

;CONTROLLING JOB OF PTY

	TXNN	Q1,SY%CJB
	JRST SYST4A
	SKIPGE B,.JIBAS+.JICPJ
	JRST [	HRROI B,[ASCIZ/    /]
		SETZ C,
		SOUT
		JRST SYST4A]
	MOVE C,[XWD B2+4,^D10]
	NOUT
	 CALL JERRC
SYST4A:

;"DET" OR "TTY N"

	TXNN	Q1,SY%TTY
	JRST SYST4
	SKIPGE B,.JIBAS+.JITNO
	JRST [	HRROI B,[ASCIZ /  DET/]
		SETZ C,
		SOUT
		JRST SYST4]
	MOVE C,[XWD B2+5,10]	;LEFT ADJ IN 5 COLS, OCTAL
	NOUT			;LINE #.
	 CALL JERRC

SYST4:
;SYSTAT...
;SUBSYSTEM NAME

	TXNN	Q1,SY%SUB
	JRST SYST8
	HRROI B,[ASCIZ/  /]
	SETZ C,
	SOUT
	SKIPN A,.JIBAS+.JIPNM
	MOVE A,.JIBAS+.JISNM	;IF NO PROGRAM NAME, USE SUBSYSTEM NAME
	CALL SIXPRS		;PRINT IT
SYST8:	TXNN	Q1,SY%STA
	JRST SYST8A
	PUSH P,D
	SKIPGE D,.JIBAS+.JITNO
	JRST SYST8B		;IF NO TERMINAL, SAY RUNNING
	GTB TTYJOB		;GET TERMINAL WORD
	HRRZ A,A
	CAIE A,-1		;OTHER THAN -1 MEANS FORK WAITING
	SKIPA B,[-1,,[ASCIZ/  TI  /]]
SYST8B:	HRROI B,[ASCIZ/  RUN /]
	MOVE A,OUTDSG
	SETZ C,
	SOUT
	POP P,D
SYST8A:	TXNN	Q1,SY%TIM
	JRST SYSTS3
	MOVE A,OUTDSG
	HRROI B,[ASCIZ/  /]
	SETZ C,
	SOUT
	MOVE A,.JIBAS+.JIRT
	IDIVI A,^D1000
	CALL TOUTD		;PRINT TIME

SYSTS3:	TXNN	Q1,SY%LIM
	JRST SYSTS4
	MOVE A,OUTDSG
	HRROI B,[ASCIZ/  /]
	SETZ C,
	SOUT
	SKIPG A,.JIBAS+.JIRTL
	JRST [	MOVE A,OUTDSG
		HRROI B,[ASCIZ/       /]
		SETZ C,
		SOUT
		JRST SYSTS4]
	IDIVI A,^D1000
	CALL TOUTD

;USER NAME OR "?" IF CONVERSION FAILS.

SYSTS4:	TXNN	Q1,SY%USR
	JRST SYSTS5
	MOVE A,OUTDSG
	HRROI B,[ASCIZ/  /]
	SETZ C,
	SOUT
	SKIPN B,.JIBAS+.JIUNO
	JRST [	HRROI B,[ASCIZ /Not logged in/]
		SETZ C,
		SOUT
		JRST SYSTS5]
	DIRST
	 JRST [	MOVEI B,"?"
		MOVE A,OUTDSG
		CALL TBOUT
		JRST SYSTS6]
SYSTS6:	TXNN	Q1,SY%CON
	JRST SYSTS5
	MOVE B,.JIBAS+.JIDNO
	CAMN B,.JIBAS+.JILNO
	JRST SYSTS5
	HRROI B,[ASCIZ/, /]
	SETZ C,
	SOUT
	MOVE B,.JIBAS+.JIDNO
	DIRST
	 JRST [	MOVE A,OUTDSG	;FAILING DIRST LEFT ERROR CODE IN A.
		MOVEI B,"?"
		CALL TBOUT
		JRST .+1]
SYSTS5:	MOVE A,OUTDSG
	CALL SNDEOL
SYST9:	AOBJN D,SYST2
	TXNE	Q1,SY%NOP
	JRST RLJFNS		;QUIT NOW IF NO OPERATOR JOBS
	TLO Z,F3		;FLAG CRLF SECOND TIME THROUGH
	TLON Z,F2		;SECOND PASS DONE?
	JRST SYST9A		;NO, DO IT (PRINT ONLY OPR JOBS)
	JRST RLJFNS

SYSTD:	MOVEM B,SISTAN		;SAVE DIR NUMBER
	CALL BUFFF		;GET THE DIR NAME STRING
	MOVEM A,SISTAS		;SAVE STRING POINTER
SYSTD1:	MOVEI A,SY$DIR
	CALL SSTACK		;ANNOUNCE DIRECTORY NUMBER COMING UP
	MOVE A,SISTAN		;GET NUMBER
	CALL SSTACK
	MOVE A,SISTAN		;STEP THE NUMBER
	MOVE B,SISTAS
	CALL STPDIR
	 JRST SYST1J		;NO MORE
	MOVEM A,SISTAN		;SAVE NEW DIR NUMBER
	JRST SYSTD1		;LOOP BACK FOR OTHERS

SYSTU:	MOVEM B,SISTAN		;SAVE THE USER NUMBER
	CALL BUFFF		;GET THE ATOM BUFFER
	MOVEM A,SISTAS		;SAVE STRING POINTER TO USER NAME
SYSTU1:	MOVEI A,SY$USR		;ANNOUNCE THAT USER NAME COMING UP
	CALL SSTACK
	MOVE A,SISTAN		;PICK UP USER NUMBER
	CALL SSTACK		;PUT IT ON STACK
	MOVE A,SISTAN		;NOW STEP THE USER
	MOVE B,SISTAS		;IF NEEDED
	CALL STPUSR
	 JRST SYST1J		;NO MORE USER NAMES
	MOVEM A,SISTAN		;SAVE NEW USER NUMBER
	JRST SYSTU1		;LOOP BACK FOR OTHER NAMES

SYST1J:	CALL .SYSEL
	JRST SYSTK1

SYSTJ:	PUSH P,B		;SAVE THE JOB NUMBER
	MOVEI A,SY$JOB		;FLAVOR IS "JOB NUMBER"
	CALL SSTACK
	POP P,A			;GET THE JOB NUMBER
	CALL SSTACK
	JRST SYST1J

SIXPRS::ATSAVE
	MOVE C,A
	MOVE A,OUTDSG
	MOVEI D,6
SXPRS1:	SETZ B,
	LSHC B,6
	ADDI B,40
	CALL TBOUT
	SOJG D,SXPRS1
	RET


DEFINE TB(TEXT,FLAGS,BIT)<
	T <TEXT>,FLAGS+,<[TXO Q1,SY%'BIT
				RET]>
>

$SYSTA:	TABLE

T ALL,,.SYSAL
TB CONTROLLING,,CJB
TB DIRECTORY,,CON
TB HEADER,,HED
TB LIMIT,,LIM
T LINE,,.SYSTT
T LPT,,.$LPT
T NO,,.SYSNO
TB STATE,,STA
TB SYSTEM,,NJB
TB TIME,,TIM
TB WHAT,,SUB
TB WHERE,,TTY
TB WHO,,USR

TEND
DEFINE TB(TEXT,FLAGS,BIT)<
	T <TEXT>,FLAGS+,<[CONFIRM
				TXO Q1,SY%'BIT
				RET]>
>

$SYSTB:	TABLE

T ALL,,..SYSA
TB CONTROLLING,,CJB
TB DIRECTORY,,CON
TB HEADER,,HED
T JOB,,.SYJOB
TB LIMIT,,LIM
T LINE,,..SYST
T LPT,,..LPT
T NO,,..SYSN
T OUTPUT,,.SYOUT
TB STATE,,STA
TB SYSTEM,,NJB
TB TIME,,TIM
T USER,,.SYUSR
TB WHAT,,SUB
TB WHERE,,TTY
TB WHO,,USR

TEND

.SYOUT:	SKIPN CUSRNO
	ERROR <LOGIN please>
	NOISE <TO FILE>
	MOVE A,[XWD [ASCIZ /SYSTAT/],[ASCIZ /LST/]] ;DEFAULT NAME & EXT
	CALL COUTFN
	 JRST CERR
	CONFIRM
	MOVEM A,OUTDSG
	RET

.$LPT:	SKIPN CUSRNO
	ERROR <LOGIN please>
	JRST $LPT

..LPT:	SKIPN CUSRNO
	ERROR <LOGIN please>
	JRST .LPT

.SYJOB:	DECX <Decimal job number>
	 CMERRX
	PUSH P,B		;SAVE THE NUMBER
	CONFIRM			;WAIT FOR CONFIRMATION
	MOVEI A,SY$JOB		;FLAVOR
	CALL SSTACK
	POP P,A			;RESTORE THE NUMBER
				;DON'T TRY TO BUM CODE BY STACKING THE
				;FLAVOR BEFORE READING VALUE.  THE
				;TYPIST MIGHT TYPE CONTROL-U, LEAVING
				;THE ARG STACK AMUCK
	CALL SSTACK
	JRST .SYSEL

.SYUSR:	STKVAR <SYUSN,SYUSS>
	TLZ Z,F1		;ALLOW DEFAULT
	SKIPN CUSRNO		;LOGGED IN?
	TLO Z,F1		;NO, SO DON'T ALLOW DEFAULTING
	CALL USRNMS
	 ERROR <No such user>
	MOVEM B,SYUSS		;SAVE POINTER TO WILD STRING
	MOVEM C,SYUSN		;SAVE USER NUMBER
	CONFIRM
.SYUS1:	MOVEI A,SY$USR		;ANNOUNCE FLAVOR IS USER
	CALL SSTACK
	MOVE A,SYUSN		;GET USER NUMBER
	CALL SSTACK
	MOVE A,SYUSN		;GET DIRECTORY NUMBER
	MOVE B,SYUSS		;AND POINTER TO STRING
	CALL STPUSR		;STEP TO NEXT USER NUMBER
	 JRST .SYSEL		;NO MORE
	MOVEM A,SYUSN		;SAVE THE NEW USER NUMBER
	JRST .SYUS1		;LOOP BACK FOR REST OF NUMBERS

..SYST:	CALL .SYSTT
	CONFIRM
	RET

.SYSTT:	HELPX <octal line number or>
	KEYWD $SYTTY
	 0
	 JRST .SYST1
	HRROI B,-1		;FLAG FOR DETACHED LINES
	JRST .SYST2

$SYTTY:	TABLE
T DETACHED,,0
TEND

.SYST1:	OCTX			;IF NOT A KEYWORD, HAS TO BE OCTAL NUMBER
	 CMERRX			;NOT EITHER
.SYST2:	PUSH P,B			;SAVE NUMBER
	MOVEI A,SY$TTY
	CALL SSTACK
	POP P,A				;GET NUMBER
	CALL SSTACK			;PUT IT ON STACK
.SYSEL:	TXO	Q1,SY%JOB!SY%NHD
	RET

SSTACK::SKIPL FRAME
	 ERROR <Too many arguments>
	EXCH B,FRAME
	MOVEM A,(B)
	ADD B,[1,,1]
	EXCH B,FRAME
	RET

..SYSA:	CONFIRM
.SYSAL:	TXO	Q1,SYSALL
	RET

..SYSN:	CALL .SYSNO
	CONFIRM
	RET

.SYSNO:	KEYWD $SYSNO
	 0
	 JRST CERR
	JRST (P3)

DEFINE TB(TEXT,FLAGS,BIT)<
	T <TEXT>,FLAGS+,<[TXZ Q1,SY%'BIT
				RET]>
>

$SYSNO:	TABLE

TB CONTROLLING,,CJB
TB DIRECTORY,,CON
T HEADER,,.SYSNH
TB LIMIT,,LIM
T OPERATOR,,.NOOPR
TB STATE,,STA
T SYSTEM,,.SYSNS
TB TIME,,TIM
TB WHAT,,SUB
TB WHERE,,TTY
TB WHO,,USR

TEND

.SYSNH:	TXZ	Q1,SY%HED
	TXO	Q1,SY%NHD
	RET

.NOOPR:	TXO	Q1,SY%NOP
	RET

.SYSNS:	TXO	Q1,SY%JOB
	RET
;STATISTICS

MONSTA::MOVE A,[SIXBIT /SYSTAT/]
	CALL READT		;READ SYSTEM STATISTICS TABLE INTO AC'S 4-13
	ETYPE < Up %K
 Idle %4T  Waiting %5T  Sched ovh %6T  Pager traps %7T
 Swap reads %10Q Writes %11Q  File reads %12Q Writes %13Q
>
	MOVE A,[SIXBIT /NCPGS/]
	SYSGT
	ETYPE < %1Q Pages of user core
>
	MOVE A,[SIXBIT /SYSTAT/]
	MOVEI B,10
	CALL MORET		;READ MORE OF TABLE
	TIME			;TOTAL UPTIME OF SYSTEM
	CALL FLOAT
	EXCH 1,6
	CALL FLOAT		;FLOAT NBAL TOTAL
	EXCH 1,7
	CALL FLOAT		;FLOAT NRUN TOTAL
	EXCH 1,6
	FDVR 6,1		;NRUN AVERAGE
	FDVR 7,1		;NBAL AVERAGE
	ETYPE < %4Q Term wakeups  %5Q Term interrupts
 NBAL av %7Q  NRUN av %6Q
>
	HLRE A,QTIMES		;GET NUMBER OF SHCED QUEUES
	MOVM A,A		;MAKE POSITIVE
	SUBI A,1		;MAKE LIMIT INCLUSIVE
	ETYPE < Runtime of jobs on sched queues 0-%1Q (sec)
>
	HLLZ D,QTIMES		;SETUP TO LOOP OVER QTIMES
STAT5C:	GTB QTIMES
	IDIVI A,^D1000		;CONVERT TO SECONDS
	ETYPE <	%1Q>
	AOBJN D,STAT5C
	ETYPE<%_>
	ETYPE<%_>
	RET
;STATISTICS...
;TABLE OF SUBSYSTEM USAGE

SUBSTA::ETYPE<%_>
SUBSTB: TYPE < Subsys  Time(sec)   PGF/SEC   Nblocks   WS-size
>
	HLLZ D,SNAMES		;SETUP TO LOOP OVER ALL NAMES
STAT5A:	GTB SNAMES		;GET SIXBIT NAME
	JUMPE A,STAT5Z		;0 MEANS NONE
	PRINT " "
	CALL SIXPRT		;PRINT IT
	PRINT TAB
	GTB STIMES		;GET RUNTIME
	IDIVI A,^D1000		;CONVERT TO SECONDS
	CALL STAT5N		;PRINT SECONDS
	GTB STIMES		;GET TIME AGAIN
	JUMPE A,[CALL STAT5N	;IF 0, PRINT 0 FOR PGF/SEC ALSO
		JRST STAT5B]
	CALL FLOAT
	FDVRI A,(1000.0)	;CONVERT TO SECONDS
	MOVEM A,C
	GTB SPFLTS		;GET PAGE FAULTS
	CALL FLOAT		;FLOAT IT
	FDVR A,C		;COMPUTE PAGE FAULTS PER SECOND
	ETYPE <    %1Q>		;PRINT IT IN 10-SPACE FIELD
STAT5B:	GTB SNBLKS		;GET NUMBER OF BLOCKS
	PUSH P,A
	CALL STAT5N		;PRINT IT
	POP P,A
	JUMPE A,[CALL STAT5N	;IF 0, PRINT 0 FOR WSSIZE ALSO
		JRST STAT5Y]
	CALL FLOAT		;FLOAT IT
	PUSH P,A
	GTB SSIZE		;GET SIZE INTEGRAL
	CALL FLOAT		;FLOAT IT
	POP P,B
	FDVR A,B		;COMPUTE WSSIZE
	ETYPE <    %1Q>		;PRINT IT IN 10-SPACE FIELD
STAT5Y:	ETYPE<%_>
STAT5Z:	AOBJN D,STAT5A		;DO ALL NAMES
	JRST EOLRET

;PRINT FORMATTED NUMBER

STAT5N:	MOVE B,A
	MOVE A,COJFN
	MOVE C,[1B0+1B2+1B4+12B17+^D10]
	NOUT
	JRST [	CAIE A,NOUTX2	;CHECK FOR COLUMN OVERFLOW ERROR CODE
		CAIN C,NOUTX2	;IN A OR C
		RET		;ALLOW IT
		JRST JERR]	;REPORT ANY OTHER ERROR
	RET
;SUBROUTINE TO READ SYSTEM TABLE WHOSE NAME IS IN A INTO AC'S 4-16.
;USED IN SYSTAT, ERRSTAT.

READT:	SETZ B,			;NORMAL ENTRY: START AT BEGINNING OF TABLE
MORET:	MOVE D,B		;ENTRY FOR TABLE INDEX IN B
	SYSGT
	JUMPN B,.+2
	CALL SCREWUP		;NO SUCH TABLE
	HLLZ C,B		;FORM AOBJN INDEX
	SOJGE D,[AOBJP C,[RET]	;PASS UNWANTED ENTRIES
		JRST .]
	PUSH P,[D]		;INIT PTR TO AC'S TO STORE VALUES IN
READT1:	HRR A,B			;TABLE #
	HRL A,C			;INDEX
	GETAB			;READ A WORD OF TABLE INTO A
	 CALL JERR
	MOVEM A,@(P)
	AOS A,(P)
	CAIGE A,P		;STOP BEFORE OVERWRITING P!
	AOBJN C,READT1		;END-OF-TABLE TEST AND LOOP
	SUB P,[XWD 1,1]
	RET
;TERMINAL CHARACTERISTICS COMMANDS GROUP
;	LOWERCASE, FORMFEED, TABS, NO LOWERCASE, NO FORMFEED, NO TABS,
;	RAISE, NO RAISE, HALFDUPLEX, FULLDUPLEX, INDICATE.

;THESE COMMANDS CHANGE THE FILE MODE WORD AND THE CONTROL CHARACTER
;OUTPUT CONTROL (CCOC) WORDS FOR THE PRIMARY OUTPUT FILE,
;AND ALSO THE THREE SETS OF THESE VALUES KEPT IN STORAGE.

;THE "NO" PREFIXED VERSIONS GO THRU THE SAME ROUTINES AS THE UNPREFIXED
;VERSIONS, BUT WITH F1 SET WHICH REVERSES THE EFFECT OF THE SUBROUTINES
;THEY CALL.  F1 IS CLEAR ON DISPATCH FROM THE MAIN LOOP.

.TERNO:	KEYWD $TERNO		;"NO". LOOK UP NEXT WORD.
	 0			;NO DEFAULT
	JRST CERR		;NULL ILLEGAL
	TLO Z,F1		;SAY NO
	JRST (P3)		;GO TO .FORMF, .TABS, OR .LOWER.

$TERNO:	TABLE
	T FLAG
	T FORMFEED
	T IMMEDIATE
	T INDICATE
	T LOWERCASE
	T PAGE
	T RAISE
	T TABS
	TEND

;LOW ORDER BIT POSITION OF TT%DUM
LB.DUM==<TT%DUM&-TT%DUM>

.LINE:	LDF C,<.TTLDX>*<LB.DUM>	;SET LINE HALFDUPLEX
	JRST SETDU		;DO SET DUPLEX

.FULLD:	LDF C,<.TTFDX>*<LB.DUM>	;SET FULLDUPLEX
	JRST SETDU

.HALFD:	LDF C,<.TTHDX>*<LB.DUM>
SETDU:	NOISE (MODE FOR TERMINAL)
	CONFIRM
setdu1:	MOVEI A,.CTTRM
	RFMOD
	TXZ B,TT%DUM		;CLEAR ALL DUPLEX BITS
	IOR B,C			;SET THE DESIRED ONES
	STPAR			;SET NEW DUPLICITY
	RET

.FORMF:	NOISE (EXISTS ON TERMINAL)
FORMF1:	LDF C,TT%MFF		;SET MECH FORMFEED BIT
	MOVE D,[POINT 2,(Q1),25] ;POINTER TO ^L CCOC BYTE
	JRST TABS1

.TABS:	NOISE (EXIST ON TERMINAL)
	LDF C,TT%TAB		;SET