Trailing-Edge
-
PDP-10 Archives
-
AP-D348E-SM
-
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