Trailing-Edge
-
PDP-10 Archives
-
BB-M080V-SM_1990
-
monitor-sources/mexec.mac
There are 53 other files named mexec.mac in the archive. Click here to see a list.
; Edit= 9113 to MEXEC.MAC on 30-Jun-89 by GSCOTT
;Include (if appopriate) system name, structure name, date time on messages to
;CTY, all users, and ORION.
; Edit= 9109 to MEXEC.MAC on 15-Jun-89 by GSCOTT
;Use XGVEC% in CRJOB startup code so that non section zero entry vectors work.
; Edit= 9093 to MEXEC.MAC on 26-May-89 by GSCOTT
;Prevent ILMNRFs (and possibly other bad things) by moving the entry point to
;LOGBUG into RSCOD so it can be called from any section.
; Edit= 9041 to MEXEC.MAC on 13-Dec-88 by RASPUZZI
;Finish off some of the security features that were started at one time (like
;password expiration). Also, add new features to help a system manager secure
;the system.
; Edit= 8998 to MEXEC.MAC on 2-Nov-88 by LOMARTIRE
;Merge Production changes to BUG text
; Edit= 8964 to MEXEC.MAC on 8-Sep-88 by RASPUZZI
;Add CLUDGR joining sequence to occur after CFSJYN has finished.
;Insert call to CLUJYN after CFS joining has completed.
; Edit= 8924 to MEXEC.MAC on 22-Aug-88 by LOMARTIRE
;Improve BUG. documentation
; Edit= 8818 to MEXEC.MAC on 5-Apr-88 by RASPUZZI (TCO 7.1266)
;Install TCO 7.1266. Ask the startup questions when someone hits ENABLE/DISK
;buttons.
; UPD ID= 8681, RIP:<7.MONITOR>MEXEC.MAC.31, 6-Mar-88 19:54:09 by GSCOTT
;TCO 7.1253 - Don't cause CHKR to be blocked while we copy a DOB.
; UPD ID= 8654, RIP:<7.MONITOR>MEXEC.MAC.29, 18-Feb-88 20:46:47 by GSCOTT
;TCO 7.1230 - Add call to routine BLINKS which breaks links and advice and
; defaults the CTY to type contained in CTYTY if SAVTRE is nonzero.
; UPD ID= 8643, RIP:<7.MONITOR>MEXEC.MAC.28, 16-Feb-88 14:25:06 by RASPUZZI
;TCO 7.1226 - Make the startup procedure smarter. Don't prompt for "Why
; reload?" or "Run CHECKD?" if we are recovering from a BUGHLT.
; Do prompt if we are being manually reloaded.
; UPD ID= 8551, RIP:<7.MONITOR>MEXEC.MAC.27, 11-Feb-88 11:02:46 by GSCOTT
;TCO 7.1218 - Update copyright date.
; UPD ID= 8423, RIP:<7.MONITOR>MEXEC.MAC.26, 4-Feb-88 13:23:54 by GSCOTT
;TCO 7.1210 - Set KLIPAF, LGFAIL, NODMPF, NOLODF, NOSERF, SERFOF, TTFSMS
; normally not dumpable.
; UPD ID= 8390, RIP:<7.MONITOR>MEXEC.MAC.25, 27-Jan-88 10:36:38 by GSCOTT
;TCO 7.1200 - Move most JSYS code in MEXEC to JSYSM.
; UPD ID= 272, RIP:<7.MONITOR>MEXEC.MAC.24, 6-Nov-87 15:06:52 by GSCOTT
;TCO 7.1119 - Replace occurances of [ASCIZ/<crlf>/] with CRLF, remove ASZSIX
; UPD ID= 265, RIP:<7.MONITOR>MEXEC.MAC.23, 6-Nov-87 11:53:26 by GSCOTT
;TCO 7.1117 - Remove code that is a slow no-op in CHKR having to do with drums.
; UPD ID= 249, RIP:<7.MONITOR>MEXEC.MAC.22, 4-Nov-87 16:42:11 by MCCOLLUM
;TCO 7.1112 - Fix STCRJB, EXEC2, and .GETJI to use LGSIDX.
; Make system-wide expunge work for Boot Structure
; Look for IPALOD and IPADMP on BS:
; UPD ID= 239, RIP:<7.MONITOR>MEXEC.MAC.21, 3-Nov-87 13:18:46 by GSCOTT
;TCO 7.1075 - Update TOC, repaginate.
; UPD ID= 237, RIP:<7.MONITOR>MEXEC.MAC.20, 2-Nov-87 11:43:28 by GSCOTT
;TCO 7.1107 - Don't hang in a DOBE at LOGDES
; UPD ID= 217, RIP:<7.MONITOR>MEXEC.MAC.19, 27-Oct-87 15:52:39 by RASPUZZI
;TCO 7.1086 - Broadcast system going down messages to all systems in the
; cluster. Also, add system name to the System going down string.
; UPD ID= 204, RIP:<7.MONITOR>MEXEC.MAC.18, 23-Oct-87 15:24:50 by GSCOTT
;TCO 7.1081 - Call DOBINI during system startup, run SETSPD to copy DOB dumps
; UPD ID= 193, RIP:<7.MONITOR>MEXEC.MAC.17, 21-Oct-87 20:24:47 by RASPUZZI
;More of TCO 7.1076 - This time really put the changes in!
; UPD ID= 180, RIP:<7.MONITOR>MEXEC.MAC.16, 21-Oct-87 17:05:23 by RASPUZZI
;TCO 7.1076 - Start up the CLUDGR fork and make GETRTL global.
; UPD ID= 163, RIP:<7.MONITOR>MEXEC.MAC.15, 19-Oct-87 17:15:38 by LOMARTIRE
;TCO 7.1072 - Create the two new ENQ forks for cluster-wide ENQ
; UPD ID= 149, RIP:<7.MONITOR>MEXEC.MAC.14, 29-Sep-87 18:20:17 by MCCOLLUM
;More of TCO 7.1063 - Fix accidental register change in GTDAL%
; UPD ID= 130, RIP:<7.MONITOR>MEXEC.MAC.13, 23-Sep-87 15:45:15 by MCCOLLUM
;TCO 7.1063 - Check for STRX10 in CHKAC% and GTDAL%
; UPD ID= 104, RIP:<7.MONITOR>MEXEC.MAC.12, 8-Sep-87 17:24:06 by GSCOTT
;TCO 7.1051 - Implement two new GETAB words called ACTJOB and WHOJOB.
; UPD ID= 101, RIP:<7.MONITOR>MEXEC.MAC.11, 4-Sep-87 10:55:19 by MCCOLLUM
;TCO 7.1050 - Call RESLCI instead of RESLCK in RUNDD
; UPD ID= 73, RIP:<7.MONITOR>MEXEC.MAC.10, 12-Aug-87 14:47:43 by MCCOLLUM
;TCO 7.1037 - SC.ALM in SCAMPI is now SC.MAL
; UPD ID= 63, RIP:<7.MONITOR>MEXEC.MAC.9, 10-Aug-87 14:12:21 by RASPUZZI
;TCO 7.1034 - Move IPCF to XCDSEC. Change call to LOGOMO to call KJOMO.
; UPD ID= 45, RIP:<7.MONITOR>MEXEC.MAC.7, 17-Jul-87 12:45:58 by RASPUZZI
;TCO 7.1022 - Prevent ILMNRFs during JOBCOF at LDTACH when the controlling
; terminal disappears on us before we expect it to.
; UPD ID= 37, RIP:<7.MONITOR>MEXEC.MAC.6, 9-Jul-87 16:13:32 by RASPUZZI
;TCO 7.1019 - Fix mistake in TCO 7.1003 and then castrate engineer.
; UPD ID= 17, RIP:<7.MONITOR>MEXEC.MAC.5, 5-Jun-87 11:44:31 by MCCOLLUM
;TCO 7.1010 - Fix up ENACT to check for a null file and return an
; error. Fix RUNDI1 to display a more useful error message.
; UPD ID= 15, RIP:<7.MONITOR>MEXEC.MAC.4, 2-Jun-87 15:30:28 by GSCOTT
;TCO 7.1006 - Repair various accounting problems - put back lost autopatch
; edit 7477, install autopatch edits 7484 to 7488.
; UPD ID= 13, RIP:<7.MONITOR>MEXEC.MAC.3, 28-May-87 16:25:08 by RASPUZZI
;TCO 7.1003 - Put a timeout restriction on the questions "Why Reload?"
; and "Run CHECKD?" so that the system will boot if they are not
; answered in a reasonable amount of time.
; *** Edit 7479 to MEXEC.MAC by MCCOLLUM on 12-May-87, for SPR #21607
; Turn of LAT lines when shuting down system at CHKHS4:
; *** Edit 7456 to MEXEC.MAC by GSCOTT on 23-Apr-87, for SPR #19597
; Write session records properly when a job is attached, detached, or its
; session remark is changed. Also make sure session start time is correct.
; *** Edit 7432 to MEXEC.MAC by MCCOLLUM on 1-Apr-87, for SPR #21552
; Rearrange code and define dummy routine XCKNI so building monitors with
; KNIN=0 will work
; *** Edit 7414 to MEXEC.MAC by RASPUZZI on 10-Feb-87
; Make the LGOUT% JSYS obey ACJ's wishes
; *** Edit 7316 to MEXEC.MAC by RASPUZZI on 11-Jun-86, for SPR #20381
; Change MEXEC to start SETSPD at entry vector plus 1 when setting terminal
; lines, etc for system startup.
; *** Edit 7279 to MEXEC.MAC by MRASPUZZI on 31-Mar-86, for SPR #20779
; Make MEXEC setup a PRARG block when CJ%FIL is set for an EXEC besides the
; system EXEC
; *** Edit 7259 to MEXEC.MAC by WONG on 14-Mar-86, for SPR #18580
; Add batch info to Usage Session Record.
; *** Edit 7247 to MEXEC.MAC by LOMARTIRE on 19-Feb-86
; Implement OFN caching
;Edit 7247 - Add CHKOFN for OFN caching cleanup
; *** Edit 7211 to MEXEC.MAC by GRANT on 18-Dec-85
; Add CI counters for WATCH
; Edit 7173 to MEXEC.MAC by PALMIERI on 23-Oct-85 (TCO 6.1.1542)
; Move modules NIUSR and LLMOP to an extended section. This required the
; changing of some global routine names in LLMOP; Therefor the changes to
; MEXEC, JSYSA, and FORK.
; Edit 7160 to MEXEC.MAC by WAGNER on 16-Oct-85
; Modify JOBCOF code to respect ACJs wishes regarding logout of jobs even if
; detached job timeout has expired.
;Edit 7160 Fix Logout of detached jobs to obey ACJ even if it denies
; request to logout. If ACJ denies, wait COFTIM and ask again.
; UPD ID= 2290, SNARK:<6.1.MONITOR>MEXEC.MAC.284, 29-Jun-85 22:38:22 by GRANT
;TCO 6.1.1477 - IPALOD has new entry point for monitor
; UPD ID= 2238, SNARK:<6.1.MONITOR>MEXEC.MAC.283, 19-Jun-85 10:57:37 by GROSSMAN
;TCO 6.1.1461 - Add call to LLMJB0 to CHKR.
; UPD ID= 2220, SNARK:<6.1.MONITOR>MEXEC.MAC.282, 12-Jun-85 17:45:43 by GRANT
;Change IPAFOO back to IPALOD
; UPD ID= 2120, SNARK:<6.1.MONITOR>MEXEC.MAC.281, 5-Jun-85 09:55:21 by MCCOLLUM
;TCO 6.1.1406 - Update copyright notice.
; UPD ID= 2026, SNARK:<6.1.MONITOR>MEXEC.MAC.280, 28-May-85 16:34:16 by MCCOLLUM
;Add ERJMPs
; UPD ID= 1965, SNARK:<6.1.MONITOR>MEXEC.MAC.279, 13-May-85 10:11:15 by GRANT
;TCO 6.1.1377 - Load CI ucode into resident memory during system startup. CIFORK
;no longer does loading of CI ucode.
; UPD ID= 1890, SNARK:<6.1.MONITOR>MEXEC.MAC.278, 4-May-85 15:14:42 by MCCOLLUM
;TCO 6.1.1238 - Fix more BUG. documentation
; UPD ID= 1862, SNARK:<6.1.MONITOR>MEXEC.MAC.277, 2-May-85 15:02:58 by GROSSMAN
;TCO 6.1.1354 - Fix CRJOB hangs when created job gets logged out too soon.
; UPD ID= 1858, SNARK:<6.1.MONITOR>MEXEC.MAC.276, 30-Apr-85 15:58:06 by LOMARTIRE
;TCO 6.1.1350 - Set local time from cluster first, then local system
; UPD ID= 1838, SNARK:<6.1.MONITOR>MEXEC.MAC.275, 26-Apr-85 15:09:38 by MCCOLLUM
;TCO 6.1.1238 - Fix more BUG. documentation
; UPD ID= 1837, SNARK:<6.1.MONITOR>MEXEC.MAC.274, 26-Apr-85 15:06:45 by MCCOLLUM
;TCO 6.1.1238 - Fix more BUG. documentation
; UPD ID= 1768, SNARK:<6.1.MONITOR>MEXEC.MAC.273, 22-Apr-85 09:02:38 by GRANT
;More 6.1.1284 - CALL CFSKPR should have been removed
; UPD ID= 1711, SNARK:<6.1.MONITOR>MEXEC.MAC.272, 5-Apr-85 13:47:27 by MCCOLLUM
;TCO 6.1.1238 - Fix BUG. documentation
; UPD ID= 1672, SNARK:<6.1.MONITOR>MEXEC.MAC.271, 25-Mar-85 08:20:11 by GRANT
;TCO 6.1.1284 - Change TEFORK to CIFORK and keep it around to do CI stuff
; UPD ID= 1643, SNARK:<6.1.MONITOR>MEXEC.MAC.270, 18-Mar-85 08:10:03 by GRANT
;More TCO 6.1.1245 - Minor enhancement
; UPD ID= 1624, SNARK:<6.1.MONITOR>MEXEC.MAC.269, 12-Mar-85 15:57:06 by LOMARTIRE
;TCO 6.1.1247 - Remove the extra wait after call to CFSJYN
; UPD ID= 1613, SNARK:<6.1.MONITOR>MEXEC.MAC.268, 11-Mar-85 09:54:05 by GRANT
;TCO 6.1.1245 - Broadcast cease, shutdown canceled, and timesharing is over.
;Add a check for cluster ceases in CHKR.
; UPD ID= 1581, SNARK:<6.1.MONITOR>MEXEC.MAC.267, 4-Mar-85 08:00:58 by LOMARTIRE
;TCO 6.1.1227 - Move the starting of TEFORK earlier to help insure CFS joining
; UPD ID= 1283, SNARK:<6.1.MONITOR>MEXEC.MAC.266, 7-Jan-85 11:03:26 by HAUDEL
;TCO 6.1.1115 - Add ERJMPs after a few JSYSes in logout,attach,and detach code
; Fix typo in UPD ID=1249.
; UPD ID= 1270, SNARK:<6.1.MONITOR>MEXEC.MAC.264, 4-Jan-85 15:01:26 by MCCOLLUM
;TCO 6.1.1111 - Get JFN's for job 0 forks with GJ%ACC on
; UPD ID= 1249, SNARK:<6.1.MONITOR>MEXEC.MAC.263, 31-Dec-84 13:12:53 by MCCOLLUM
;TCO 6.1.1112 - In GETAB%, translate local job number to global for DEVUNT table.
; UPD ID= 1230, SNARK:<6.1.MONITOR>MEXEC.MAC.262, 19-Dec-84 18:35:28 by GRANT
;Move SAVTRE to STG.MAC
; UPD ID= 1218, SNARK:<6.1.MONITOR>MEXEC.MAC.261, 18-Dec-84 12:48:47 by TBOYLE
;TCO 6.1.1092 - Fix jobs hung in LOGOUT - Put CFOBF at LOG2 after SOBE loop
; UPD ID= 1018, SNARK:<6.1.MONITOR>MEXEC.MAC.260, 9-Nov-84 13:25:40 by GRANT
;TCO 6.2278 - fix BUGxxx output
; UPD ID= 944, SNARK:<6.1.MONITOR>MEXEC.MAC.259, 4-Nov-84 15:25:06 by GLINDELL
;More TCO 6.1.1021 - Change MDDTP to reflect MDDT's new position in XCDSEC
; UPD ID= 5050, SNARK:<6.MONITOR>MEXEC.MAC.258, 31-Oct-84 18:08:38 by MOSER
;TCO 6.2256 - FIX CRJOB IF CJ%WTA SPECIFIED
; UPD ID= 5038, SNARK:<6.MONITOR>MEXEC.MAC.257, 30-Oct-84 13:55:40 by MCLEAN
;FIX LOGOUT
; UPD ID= 5037, SNARK:<6.MONITOR>MEXEC.MAC.256, 30-Oct-84 09:59:56 by PAETZOLD
;TCO 6.2267 - Save CX in JOBCOF.
; UPD ID= 5003, SNARK:<6.MONITOR>MEXEC.MAC.255, 24-Oct-84 20:15:31 by GLINDELL
;Put in a call to DCNJB0 in CHKR
; UPD ID= 4974, SNARK:<6.MONITOR>MEXEC.MAC.254, 22-Oct-84 16:31:20 by GRANT
;Remove references to FTCI
; UPD ID= 4965, SNARK:<6.MONITOR>MEXEC.MAC.253, 19-Oct-84 14:46:22 by GLINDELL
;More TCO 6.1.1021 - clear T3 before SOUT in LOGBUG
; UPD ID= 4964, SNARK:<6.MONITOR>MEXEC.MAC.252, 19-Oct-84 13:42:26 by GLINDELL
;More TCO 6.1.1021 - get only section-relative address of BUG. for compare
; UPD ID= 4948, SNARK:<6.MONITOR>MEXEC.MAC.251, 17-Oct-84 15:17:44 by HAUDEL
;TCO 6.2250 - Add an ERJMP after an ODTIM% in LOGJ2 code.
; UPD ID= 4947, SNARK:<6.MONITOR>MEXEC.MAC.250, 17-Oct-84 13:58:59 by HAUDEL
;TCO 6.2249 - Add some ERJMPs after a few JSYSes.
; UPD ID= 4945, SNARK:<6.MONITOR>MEXEC.MAC.249, 17-Oct-84 11:57:16 by TGRADY
; TCO 6.2247 (QAR 706189) Print proper job number in ATTACH JSYS.
; TCO 6.2214 (QAR 706279) Fix up STCRJB and ELOGO to understand that JOBONT
; contains GLOBAL job numbers, not local. Oversight in edit 4785.
; UPD ID= 4944, SNARK:<6.MONITOR>MEXEC.MAC.248, 17-Oct-84 10:55:47 by HAUDEL
;TCO 6.2246 - Add ERJMP .+1 after BOUTs in LOGTIM: code.
; UPD ID= 4935, SNARK:<6.MONITOR>MEXEC.MAC.247, 15-Oct-84 13:06:30 by GRANT
;The assembly switch CFSCOD has been eliminated
; UPD ID= 4915, SNARK:<6.MONITOR>MEXEC.MAC.246, 10-Oct-84 17:13:06 by GLINDELL
;TCO 6.1.1021 - 6.1 address space
; BGPTR entries are now two words long (full 30-bit addresses)
; UPD ID= 4884, SNARK:<6.MONITOR>MEXEC.MAC.245, 26-Sep-84 16:40:18 by GRANT
;In CHKR, CALL KLPRCT
; UPD ID= 4882, SNARK:<6.MONITOR>MEXEC.MAC.244, 26-Sep-84 15:59:55 by GRANT
;TCO 6.2225 - Add "save a tree" option to LOGBUG
; UPD ID= 4863, SNARK:<6.MONITOR>MEXEC.MAC.243, 23-Sep-84 15:24:41 by TBOYLE
;Clear output buffer during LOGOUT after STPAR in LOG1
; UPD ID= 4813, SNARK:<6.MONITOR>MEXEC.MAC.242, 17-Sep-84 10:13:22 by PURRETTA
;Update copyright notice
; UPD ID= 4785, SNARK:<6.MONITOR>MEXEC.MAC.241, 31-Aug-84 14:29:47 by TGRADY
;TCO 6.2214 (QAR 706071) Fix up use of CRJONJ and JOBONT for CRJOB'ed jobs.
; UPD ID= 4777, SNARK:<6.MONITOR>MEXEC.MAC.240, 30-Aug-84 10:48:24 by PAETZOLD
;TCO 6.2211 - Carrier off needs to preserve KIMUFL and KIMUPC.
; UPD ID= 4771, SNARK:<6.MONITOR>MEXEC.MAC.239, 29-Aug-84 13:57:18 by TGRADY
;TCO 6.2201 (QAR 706198) - Remove edit 4444 (TCO 6.2121) and fix the
;general problem of needing a local job index in the USAGE record.
; UPD ID= 4743, SNARK:<6.MONITOR>MEXEC.MAC.238, 24-Aug-84 09:43:58 by PAETZOLD
;TCO 6.2191 - Change unsafe SETJSB calls to MAPJSB.
; UPD ID= 4702, SNARK:<6.MONITOR>MEXEC.MAC.237, 16-Aug-84 13:28:15 by GROSSMAN
;More TCO 6.2176 - Reverse order of IPALOD and KNIJB0.
; UPD ID= 4698, SNARK:<6.MONITOR>MEXEC.MAC.236, 15-Aug-84 18:51:40 by GROSSMAN
;TCO 6.2176 - Add call to KNIJB0 in CHKR.
; UPD ID= 4677, SNARK:<6.MONITOR>MEXEC.MAC.235, 13-Aug-84 10:26:47 by GLINDELL
;Type out the full 30-bit address on entry to the MX
; UPD ID= 4676, SNARK:<6.MONITOR>MEXEC.MAC.234, 11-Aug-84 00:54:45 by TBOYLE
;TCO 6.2171 Save all registers at JOBCOF.
; UPD ID= 4620, SNARK:<6.MONITOR>MEXEC.MAC.233, 28-Jul-84 15:58:40 by MOSER
;TCO 6.2083 - ENHANCE MONBK - ADD MONBKX
; UPD ID= 4610, SNARK:<6.MONITOR>MEXEC.MAC.232, 27-Jul-84 14:51:19 by TBOYLE
;New SYSERR - At LOGBF6-1 use XMOVEI.
; UPD ID= 4507, SNARK:<6.MONITOR>MEXEC.MAC.231, 12-Jul-84 21:55:51 by TGRADY
;TCO 6.2126 Use Global job number as argument to GTOKM .GOATJ function
; UPD ID= 4455, SNARK:<6.MONITOR>MEXEC.MAC.230, 12-Jul-84 10:43:05 by CDUNN
;More TCO 6.1127 Add call to SCSLGO at FLOGO to delete SCS% data on top
;fork kill
; UPD ID= 4444, SNARK:<6.MONITOR>MEXEC.MAC.229, 6-Jul-84 16:54:45 by TBOYLE
;TCO 6.2121 - Make UCKSET convert jobno to local before mapping checkpoint pg.
; UPD ID= 4418, SNARK:<6.MONITOR>MEXEC.MAC.228, 2-Jul-84 13:46:13 by TGRADY
;TCO 6.2114 - Fix typo in TTY2GL to return waiting fork number...
; UPD ID= 4364, SNARK:<6.MONITOR>MEXEC.MAC.227, 20-Jun-84 15:59:58 by TBOYLE
;TCO 6.2104 - Fix session start and end times at USGSEN.
; UPD ID= 4363, SNARK:<6.MONITOR>MEXEC.MAC.226, 20-Jun-84 15:10:36 by TGRADY
;TCO 6.2103 (QAR 706052) - Fix ATACH% to prevent 'Wheel or Opr required' error
; UPD ID= 4358, SNARK:<6.MONITOR>MEXEC.MAC.225, 18-Jun-84 15:48:47 by TGRADY
;TCO 6.2077 (QAR 706022) Make GETAB% return a -1 for non-existant jobs.
; UPD ID= 4356, SNARK:<6.MONITOR>MEXEC.MAC.224, 18-Jun-84 14:13:38 by GRANT
;TCO 6.2102 (QAR 706050) - During system shutdown disallow incoming nvt
;(ARPANET and DECnet) logins.
; UPD ID= 4300, SNARK:<6.MONITOR>MEXEC.MAC.223, 4-Jun-84 23:01:34 by MOSER
;TCO 6.2059 - ALLOW EXEC XCT ONLY - FIX CRJOB - CHANGES FOR NON WHEEL STARTUP
; UPD ID= 4219, SNARK:<6.MONITOR>MEXEC.MAC.222, 14-May-84 18:55:34 by WEISBACH
;~6.0 - Add call to LAT host initialization (LATINI)
; UPD ID= 4211, SNARK:<6.MONITOR>MEXEC.MAC.221, 11-May-84 12:15:11 by GRANT
;In RUNDD2, add call to SRVCFS (moved here from CFSJYN in CFSSRV)
; UPD ID= 4207, SNARK:<6.MONITOR>MEXEC.MAC.220, 11-May-84 08:18:39 by GRANT
;In EGET, ERJMP after the GET%
; UPD ID= 4128, SNARK:<6.MONITOR>MEXEC.MAC.219, 25-Apr-84 11:07:42 by LOMARTIRE
;TCO 6.2046 - Record fork number for various job 0 forks created in RUNDD
; UPD ID= 4115, SNARK:<6.MONITOR>MEXEC.MAC.218, 24-Apr-84 12:59:05 by TGRADY
;TCO 6.2042 - Fix CFSILJ BUGCHK's from GETJI% called with .TTDES+n
; UPD ID= 4069, SNARK:<6.MONITOR>MEXEC.MAC.217, 11-Apr-84 19:12:50 by MOSER
;TCO 6.2023 - REMOVE ALL ERCAL INSTRUCTIONS
; UPD ID= 4062, SNARK:<6.MONITOR>MEXEC.MAC.215, 11-Apr-84 14:47:35 by GRANT
;In IPACHK, more graceful handling of no IPALOD or IPADMP
; UPD ID= 4012, SNARK:<6.MONITOR>MEXEC.MAC.214, 31-Mar-84 08:10:17 by GRANT
;Remove SEARCH of SCAPAR
; UPD ID= 4001, SNARK:<6.MONITOR>MEXEC.MAC.213, 28-Mar-84 20:46:37 by GRANT
;In IPACHK, look on PS:<SYSTEM> instead of SYSTEM:
; UPD ID= 3998, SNARK:<6.MONITOR>MEXEC.MAC.212, 28-Mar-84 17:22:15 by GUNN
;Revoke UPD ID 3741 - Put under FTNSPSRV conditional.
; UPD ID= 3946, SNARK:<6.MONITOR>MEXEC.MAC.211, 19-Mar-84 16:57:31 by MOSER
;TCO 6.2003 - ADD .JILJI FUNCTION OF GETJI
; UPD ID= 3924, SNARK:<6.MONITOR>MEXEC.MAC.210, 14-Mar-84 10:51:46 by TGRADY
;TCO 6.1998 - Fix ELOGO to compare user-specified job number to GBLJNO,
; not JOBNO
;
; UPD ID= 3869, SNARK:<6.MONITOR>MEXEC.MAC.209, 7-Mar-84 11:30:21 by LEACHE
;More TCO 6.1969 - move init of SWPMWF from MEXEC to PAGUTL
; UPD ID= 3850, SNARK:<6.MONITOR>MEXEC.MAC.207, 5-Mar-84 12:12:38 by GRANT
;In IPACHK, do dumping as well as loading.
; UPD ID= 3816, SNARK:<6.MONITOR>MEXEC.MAC.206, 29-Feb-84 17:04:39 by LEACHE
;TCO 6.1969 Change swappable monitor load to reflect single-pass load
; UPD ID= 3802, SNARK:<6.MONITOR>MEXEC.MAC.205, 29-Feb-84 01:44:07 by TGRADY
; Implement Global Job Numbers
; - In SYSINE, assign a Global Job number from CFS, and save it in GBLJNO
; - In STCRJB, return Global job number to CRJOB creator, put index in JOBONT
; - In RUNDD3, Initialize CFS Global Job Number database...
; - In HSYS41:, convert local job index to global job number for LGOUT Jsys
; - In LOG2, call JBAVAL to release Global job number just before HLTJB call.
; - In LOGJOB, Print Global job number during logout.
; - In ELOGO, translate user-specified global job number into local index
; - In .GJINF, use GBLJNO to return user's own job number, instead of JOBNO
; - In .GETAB, overhaul GTTAB table to use new GTJOB routine to translate
; user-specified Global Job number into local job index. Make the tables'
; 'size' be the highest legal Global Job number, MXGLBS, for range checking
; instead of NJOBS, which is only the highest index value.
; Also, create jacket routine TTY2GL to convert job index returned by
; GTBTTF to a global job number
; - In .GETJI, translate user-specified global job number into local index
; - In GETJI4, translate job index into Global job number before returning it.
; - In GETJIT table, return other jobs Global Job number (from JSB)
; - In ATACH1, same as .GETJI
;
; UPD ID= 3741, SNARK:<6.MONITOR>MEXEC.MAC.204, 22-Feb-84 17:27:14 by PAETZOLD
;Revoke previous edit until he gets it right.
; UPD ID= 3725, SNARK:<6.MONITOR>MEXEC.MAC.203, 22-Feb-84 11:39:52 by GUNN
;~6.0 - Add call to initialize Ethernet LLMOP Protocol Servers
; UPD ID= 3721, SNARK:<6.MONITOR>MEXEC.MAC.202, 22-Feb-84 05:36:57 by GRANT
;Call CFSJ0 from CHKR
; UPD ID= 3698, SNARK:<6.MONITOR>MEXEC.MAC.201, 15-Feb-84 21:28:14 by MURPHY
;Make definition of MDDT include section number so MDDT$G always works.
; UPD ID= 3741, SNARK:<6.MONITOR>MEXEC.MAC.204, 22-Feb-84 17:27:14 by PAETZOLD
;Revoke previous edit until he gets it right.
; UPD ID= 3725, SNARK:<6.MONITOR>MEXEC.MAC.203, 22-Feb-84 11:39:52 by GUNN
;~6.0 - Add call to initialize Ethernet LLMOP Protocol Servers
; UPD ID= 3721, SNARK:<6.MONITOR>MEXEC.MAC.202, 22-Feb-84 05:36:57 by GRANT
;Call CFSJ0 from CHKR
; UPD ID= 3698, SNARK:<6.MONITOR>MEXEC.MAC.201, 15-Feb-84 21:28:14 by MURPHY
;Make definition of MDDT include section number so MDDT$G always works.
; UPD ID= 3656, SNARK:<6.MONITOR>MEXEC.MAC.200, 4-Feb-84 10:32:35 by MILLER
;Call BRDTIM if CFS stuff is around
; UPD ID= 3648, SNARK:<6.MONITOR>MEXEC.MAC.199, 2-Feb-84 14:35:36 by MURPHY
;Ditto - fix bugs.
; UPD ID= 3640, SNARK:<6.MONITOR>MEXEC.MAC.198, 2-Feb-84 11:53:23 by MURPHY
;Different way of getting to BOOT to load swap mon.
; UPD ID= 3633, SNARK:<6.MONITOR>MEXEC.MAC.197, 1-Feb-84 22:08:42 by MURPHY
;Reference bug strings and pointers in symsec.
; UPD ID= 3565, SNARK:<6.MONITOR>MEXEC.MAC.196, 27-Jan-84 13:34:03 by PAETZOLD
;More TCO 6.1954 - Make CHKPER and DDPPER resident. Fix DDPWAT bug.
; UPD ID= 3557, SNARK:<6.MONITOR>MEXEC.MAC.195, 26-Jan-84 13:56:47 by PAETZOLD
;More TCO 6.1954 - Make CHKPER and DDPPER global. Make DDPDUE force DDMP.
; UPD ID= 3539, SNARK:<6.MONITOR>MEXEC.MAC.194, 25-Jan-84 15:14:38 by PAETZOLD
;TCO 6.1954 - Add code for DDPDUE and CHKDUE.
; UPD ID= 3510, SNARK:<6.MONITOR>MEXEC.MAC.193, 23-Jan-84 09:44:12 by PRATT
;TCO 6.1924 - Use "display type" block with "msg" block in WROPER
; UPD ID= 3490, SNARK:<6.MONITOR>MEXEC.MAC.192, 20-Jan-84 11:09:27 by CDUNN
;More TCO 6.1127 - Add new "temp" fork at startup to handle SCA buffer deferal
;requests until after DDMP has mounted PS.
; UPD ID= 3456, SNARK:<6.MONITOR>MEXEC.MAC.191, 13-Jan-84 17:16:14 by TBOYLE
;TCO 6.1933 - (RUNDD4) Do processing if SPRCNT not reset, and start
;SYSERR queue
; UPD ID= 3449, SNARK:<6.MONITOR>MEXEC.MAC.190, 12-Jan-84 14:22:41 by PAETZOLD
;TCO 6.1929 - Change FKJOBN to FKJBN
; UPD ID= 3420, SNARK:<6.MONITOR>MEXEC.MAC.189, 6-Jan-84 18:13:00 by MILLER
;Add CFSCOD conditional around call to CFTADC
; UPD ID= 3418, SNARK:<6.MONITOR>MEXEC.MAC.188, 6-Jan-84 09:07:27 by PRATT
;TCO 6.1912 - In WROPER, QU%NRS should be set in the arg block, not ac 1
; UPD ID= 3310, SNARK:<6.MONITOR>MEXEC.MAC.187, 13-Dec-83 18:16:03 by PAETZOLD
;TCO 6.1906 - Add code to update DDPTIM
; UPD ID= 3270, SNARK:<6.MONITOR>MEXEC.MAC.186, 7-Dec-83 09:06:17 by MILLER
;TCO 6.1806. Add calls to DTTIME
; UPD ID= 3192, SNARK:<6.MONITOR>MEXEC.MAC.185, 18-Nov-83 11:01:36 by PAETZOLD
;Do not call CHKIMP
; UPD ID= 3183, SNARK:<6.MONITOR>MEXEC.MAC.184, 17-Nov-83 14:15:55 by PRATT
;TCO 6.1796 - Lots of ERJMPs after TTMSGs in case of refusals
; UPD ID= 3151, SNARK:<6.MONITOR>MEXEC.MAC.183, 15-Nov-83 09:47:34 by PAETZOLD
;TCO 6.1862 - Fix problem with incorrect .XPCN2 word being returned in XPEEK
; UPD ID= 3114, SNARK:<6.MONITOR>MEXEC.MAC.182, 8-Nov-83 09:01:15 by MCINTEE
;~6.0 Remove NSP% jsys
; UPD ID= 3095, SNARK:<6.MONITOR>MEXEC.MAC.181, 3-Nov-83 23:37:50 by GROSSMAN
;TCO 6.1849 - Reset CRJTTY to a value of -1 only during CRJOB startup.
; UPD ID= 3084, SNARK:<6.MONITOR>MEXEC.MAC.180, 28-Oct-83 15:54:56 by HAUDEL
;TCO 6.1840 - Add an ERJMP .+1 after TTMSG
; UPD ID= 3004, SNARK:<6.MONITOR>MEXEC.MAC.179, 7-Oct-83 17:55:34 by GUNN
;~6.0 Add call to LLMRSJ from FLOGO to clean up LLMOP resources at logout.
; UPD ID= 2993, SNARK:<6.MONITOR>MEXEC.MAC.178, 5-Oct-83 14:49:33 by PAETZOLD
;More TCO 6.1733 - Remove call to IMPBEG. NCPFRK has gone away.
; UPD ID= 2978, SNARK:<6.MONITOR>MEXEC.MAC.177, 4-Oct-83 08:07:04 by MILLER
;TCO 6.1806 Once again.
; UPD ID= 2944, SNARK:<6.MONITOR>MEXEC.MAC.176, 27-Sep-83 20:35:08 by MILLER
;MORE TCO 6.1806. CHECK ON TAD IN CHKR
; UPD ID= 2930, SNARK:<6.MONITOR>MEXEC.MAC.175, 23-Sep-83 14:00:41 by MILLER
;More TCO 6.1806. Output date and time so operator knows
; UPD ID= 2926, SNARK:<6.MONITOR>MEXEC.MAC.174, 23-Sep-83 10:37:51 by MILLER
;TCO 6.1806. Try to get TAD from CFS
; UPD ID= 2914, SNARK:<6.MONITOR>MEXEC.MAC.173, 20-Sep-83 15:33:39 by LOMARTIRE
;TCO 6.1791 - Do not allow ATACH from batch unless WHEEL or OPR enabled
; UPD ID= 2842, SNARK:<6.MONITOR>MEXEC.MAC.172, 17-Aug-83 21:41:01 by MURPHY
;More 6.1525 - Separate section 0/1 maps. Remove NRCOD from sec 0 map.
; UPD ID= 2807, SNARK:<6.MONITOR>MEXEC.MAC.171, 9-Aug-83 11:46:15 by MURPHY
;Move MOVCST from here to PAGUTL.
; UPD ID= 2797, SNARK:<6.MONITOR>MEXEC.MAC.170, 4-Aug-83 00:30:32 by LEACHE
;TCO 6.1641 Change swappable freespace initialization
; UPD ID= 2768, SNARK:<6.MONITOR>MEXEC.MAC.169, 25-Jul-83 17:48:48 by MCCOLLUM
;TCO 6.1743 - Add XPEEK% JSYS
; UPD ID= 2749, SNARK:<6.MONITOR>MEXEC.MAC.168, 22-Jul-83 16:38:22 by PAETZOLD
;TCO 6.1733 - Reflect that NCP has gone away.
; UPD ID= 2745, SNARK:<6.MONITOR>MEXEC.MAC.167, 22-Jul-83 16:33:16 by MURPHY
;More 6.1568 - Make COFTIM settable by SMON.
;TCO 6.1719 - Customer-selectable hangup action.
; UPD ID= 2673, SNARK:<6.MONITOR>MEXEC.MAC.166, 5-Jul-83 16:04:54 by MILLER
;Various changes for CFS CI error recovery
; UPD ID= 2669, SNARK:<6.MONITOR>MEXEC.MAC.165, 5-Jul-83 15:48:20 by MOSER
;TCO 6.1568 - USE COFMIN AS VALUE FOR CARRIER OFF WAIT BEFORE LOGOUT
; UPD ID= 2667, SNARK:<6.MONITOR>MEXEC.MAC.164, 5-Jul-83 13:32:48 by MURPHY
;More 6.1525 - Remove hidden symbol table, add symtab in separate section.
; UPD ID= 2602, SNARK:<6.MONITOR>MEXEC.MAC.163, 20-Jun-83 15:40:03 by HALL
;TCO 6.1689 - Move fork tables to extended section
; Reference FKINT bits via DEFSTR
; UPD ID= 2577, SNARK:<6.MONITOR>MEXEC.MAC.162, 10-Jun-83 17:39:29 by PAETZOLD
;TCO 6.1680 - Turn on QU%NRS in WROPR0
; UPD ID= 2546, SNARK:<6.MONITOR>MEXEC.MAC.161, 31-May-83 16:44:49 by MURPHY
;TCO 6.1525 - Move subsys names tables to ext section.
; UPD ID= 2382, SNARK:<6.MONITOR>MEXEC.MAC.160, 29-Apr-83 15:03:02 by MCINTEE
;TCO 6.1630 - MONBK/PSIMB fix
; UPD ID= 2286, SNARK:<6.MONITOR>MEXEC.MAC.158, 16-Apr-83 19:14:33 by PAETZOLD
;TCO 6.1557 - TCP Merge - Delete old edit history - Update copyright.
; UPD ID= 2245, SNARK:<6.MONITOR>MEXEC.MAC.157, 12-Apr-83 13:15:09 by MCINTEE
;Remove IFNDEF FTNSPSRV
; UPD ID= 2219, SNARK:<6.MONITOR>MEXEC.MAC.156, 8-Apr-83 13:06:09 by MILLER
;TCO 6.1602 again. Fix call to RUNDII in IPACHK
; UPD ID= 2218, SNARK:<6.MONITOR>MEXEC.MAC.155, 8-Apr-83 12:29:03 by MILLER
;Fix IPACHK some
; UPD ID= 2216, SNARK:<6.MONITOR>MEXEC.MAC.154, 8-Apr-83 09:37:05 by MILLER
;Once more. Wait for KLIPA reload at system start-up
; UPD ID= 2215, SNARK:<6.MONITOR>MEXEC.MAC.153, 8-Apr-83 08:36:24 by MILLER
;TCO 6.1602. Load KLIPA microcode when needed
; UPD ID= 2205, SNARK:<6.MONITOR>MEXEC.MAC.152, 8-Apr-83 05:58:57 by WACHS
;TCO 6.1604 - Call KLIPA initialization late
; UPD ID= 2130, SNARK:<6.MONITOR>MEXEC.MAC.151, 2-Apr-83 22:46:44 by LEACHE
;TCO 6.1247 Add centralized penalties for bad passwords
; UPD ID= 2111, SNARK:<6.MONITOR>MEXEC.MAC.149, 28-Mar-83 19:43:31 by MILLER
;TCO 6.1094. Get rid of GETALF
; UPD ID= 2102, SNARK:<6.MONITOR>MEXEC.MAC.148, 28-Mar-83 17:43:19 by MURPHY
;TCO 6.1472 - Minor cleanup re. LSTERR.
; UPD ID= 1995, SNARK:<6.MONITOR>MEXEC.MAC.147, 15-Mar-83 10:58:40 by MILLER
;TCO 6.1544. Call MAPPHQ when mapping BOOT
; UPD ID= 1967, SNARK:<6.MONITOR>MEXEC.MAC.146, 10-Mar-83 17:57:28 by CDUNN
;More TCO 6.1127 - Add lost edit to call SC.RAP to clean up SCA data as
;needed.
; UPD ID= 1929, SNARK:<6.MONITOR>MEXEC.MAC.145, 7-Mar-83 21:02:14 by CDUNN
;Change default to include KLIPA code
; UPD ID= 1913, SNARK:<6.MONITOR>MEXEC.MAC.144, 3-Mar-83 13:05:37 by MCINTEE
;TCO 6.1532 - Remove SE1ENT & SE0ENT in routine STCJB2. Put in a TSTMS0.
; UPD ID= 1908, SNARK:<6.MONITOR>MEXEC.MAC.143, 2-Mar-83 17:30:32 by MILLER
;TCO 6.1094 again. CALL CFSJYN
; UPD ID= 1904, SNARK:<6.MONITOR>MEXEC.MAC.142, 2-Mar-83 15:44:36 by MILLER
;TCO 6.1094 again. Move MNTPS yet again, and call FILRST with it
; UPD ID= 1888, SNARK:<6.MONITOR>MEXEC.MAC.141, 1-Mar-83 10:37:34 by MILLER
;TCO 6.1094. Move call to MNTPS
; UPD ID= 1880, SNARK:<6.MONITOR>MEXEC.MAC.140, 27-Feb-83 22:05:25 by MURPHY
;More TCO 6.1514 and 6.1142 - Use ERJMPS after DIRST in LOGBUG.
;TCO 6.1525 - Get rid of unneeded XJRSTs.
; UPD ID= 1860, SNARK:<6.MONITOR>MEXEC.MAC.139, 22-Feb-83 20:24:48 by MILLER
;TCO 6.1520. Enable disk preallocation after CHECKD runs
; UPD ID= 1858, SNARK:<6.MONITOR>MEXEC.MAC.138, 22-Feb-83 14:12:36 by MILLER
;TCO 6.1094. Add call to MNTPS during start-up
; UPD ID= 1847, SNARK:<6.MONITOR>MEXEC.MAC.137, 21-Feb-83 16:21:26 by MURPHY
;More 6.1507 - JOBCOF should jump to FLOGO1 not FLOGO after UPDL reset.
; UPD ID= 1842, SNARK:<6.MONITOR>MEXEC.MAC.136, 20-Feb-83 22:17:36 by MURPHY
;TCO 6.1514 - Use ITERX instead of JRST ITRAP.
; and revise the fixup to the fix to the fix to 6.1142 now that DIRST works.
; UPD ID= 1821, SNARK:<6.MONITOR>MEXEC.MAC.135, 18-Feb-83 07:32:51 by MCINTEE
;FIXUP THE FIX TO THE FIX TO 6.1142 - USE A TRVAR, NOT THE STACK
; UPD ID= 1814, SNARK:<6.MONITOR>MEXEC.MAC.134, 16-Feb-83 15:03:35 by MCINTEE
;FIX THE FIX TO 6.1142
; UPD ID= 1810, SNARK:<6.MONITOR>MEXEC.MAC.133, 15-Feb-83 14:22:21 by MILLER
;TCO 6.1094. Improve call to GETALF
; UPD ID= 1809, SNARK:<6.MONITOR>MEXEC.MAC.132, 15-Feb-83 10:16:24 by MURPHY
;TCO 6.1472 - Clean up uses of MCENTR.
;TCO 6.1506 - BUGCHK on unexpected job 0 interrupts.
;TCO 6.1507 - Fix MONPDL in JOBCOF.
;Fix to 6.1142 - Pointer clobbered if DIRST fails in LOGBUG.
; UPD ID= 1773, SNARK:<6.MONITOR>MEXEC.MAC.131, 5-Feb-83 18:55:25 by MILLER
;TCO 6.1094. Use DDMPF to flush pages for CFS
; UPD ID= 1768, SNARK:<6.MONITOR>MEXEC.MAC.130, 4-Feb-83 11:18:53 by MILLER
;TCO 6.1094. Distinguish DDMP for CFS from regular cycle
; UPD ID= 1745, SNARK:<6.MONITOR>MEXEC.MAC.129, 2-Feb-83 18:44:23 by MILLER
;TCO 6.1142. Some code clean ups. More to come...
; UPD ID= 1707, SNARK:<6.MONITOR>MEXEC.MAC.128, 27-Jan-83 20:06:53 by MILLER
;TCO 6.1094.CFS "get directory allocation".
; UPD ID= 1700, SNARK:<6.MONITOR>MEXEC.MAC.127, 26-Jan-83 14:25:30 by WEETON
;TCO 6.1401 - Fix ITRLGO BUGCHKs and WAITNI BUGHLTs
; UPD ID= 1680, SNARK:<6.MONITOR>MEXEC.MAC.126, 19-Jan-83 15:40:31 by MCINTEE
;TCO 6.1471 - MOVE SEBINI FROM EXEC0
; UPD ID= 1661, SNARK:<6.MONITOR>MEXEC.MAC.125, 15-Jan-83 16:45:12 by CHALL
;REMOVE RS(SWPMBP,1), WHICH IS DUPLICATED IN STG
; UPD ID= 1650, SNARK:<6.MONITOR>MEXEC.MAC.124, 13-Jan-83 17:10:37 by CHALL.WIZARD
;Add call to .NSPRS at SJLGO4 (to clean up NSP% DECnet lines for top fork)
; UPD ID= 1630, SNARK:<6.MONITOR>MEXEC.MAC.123, 7-Jan-83 12:39:46 by MCINTEE
;TCO 6.1445 - Monitor version number in SYSJOB.EXE
; UPD ID= 1619, SNARK:<6.MONITOR>MEXEC.MAC.122, 5-Jan-83 10:27:35 by HALL
;TCO 6.1000 and 6.1094
; Fix code at RUNDE1 to set up context correctly for all processors
; Clean up the comments a bit. Move JB0INT to be near CHKR
; UPD ID= 1615, SNARK:<6.MONITOR>MEXEC.MAC.121, 4-Jan-83 11:30:55 by MILLER
;TCO 6.1094. Set up MONBK for new CHKR fork
; UPD ID= 1550, SNARK:<6.MONITOR>MEXEC.MAC.120, 21-Dec-82 09:16:12 by MILLER
;TCO 6.1094. Enhance DDMP error code by creating routine DDMPER
; UPD ID= 1539, SNARK:<6.MONITOR>MEXEC.MAC.119, 20-Dec-82 17:27:55 by NICHOLS
;Add FTNSPSRV to distinguish between release 6.0 and 6.1
;Make SYSJOB.EXE into 6-1-SYSJOB.EXE for 6.1 monitors
;Add initialization of CTERM host and other DECnet-36 features
;TCO 6.1030 - DAPLGO added to logout code (McIntee)
; UPD ID= 1511, SNARK:<6.MONITOR>MEXEC.MAC.118, 2-Dec-82 15:17:55 by MOSER
;TCO 6.1110 - CHECK CHKAC ARGUMENT BLOCK LENGTH CORRECTLY
; UPD ID= 1491, SNARK:<6.MONITOR>MEXEC.MAC.117, 30-Nov-82 14:59:23 by MOSER
;TCO 6.1109 - LET CHKAC SUCCEED IF CONNECTED DIRECTORY WRONG BUT ACCESS OK
; UPD ID= 1490, SNARK:<6.MONITOR>MEXEC.MAC.116, 30-Nov-82 12:32:58 by HAUDEL
;More TCO 6.1357
; UPD ID= 1486, SNARK:<6.MONITOR>MEXEC.MAC.115, 29-Nov-82 14:19:55 by GRANT
;TCO 6.1010 - Remove EA.ENT at USGINI, startup runs totally in section 1 now
; UPD ID= 1479, SNARK:<6.MONITOR>MEXEC.MAC.114, 29-Nov-82 09:26:47 by GRANT
;TCO 6.1010 - In EXEC0, add call to MOVCST
; UPD ID= 1466, SNARK:<6.MONITOR>MEXEC.MAC.113, 18-Nov-82 13:59:16 by MOSER
;TCO 6.1380 - PREVENT HUNG JOBS AT LOGOUT
; UPD ID= 1461, SNARK:<6.MONITOR>MEXEC.MAC.112, 18-Nov-82 12:59:42 by MOSER
;TCO 6.1353 - PASS CORRECT ARGS TO ACJ FOR ATACH
; UPD ID= 1454, SNARK:<6.MONITOR>MEXEC.MAC.111, 17-Nov-82 14:15:54 by COBB
;TCO 5.1.1107 - Don't PUSH in STKVAR context at LDTACH+10 or so
; UPD ID= 1452, SNARK:<6.MONITOR>MEXEC.MAC.110, 17-Nov-82 08:23:57 by HAUDEL
;More TCO 6.1357
; UPD ID= 1432, SNARK:<6.MONITOR>MEXEC.MAC.109, 10-Nov-82 10:21:04 by HAUDEL
;TCO 6.1357 - CHANGE SHUTDOWN MESSAGE,ADD CTY MESSAGE
; UPD ID= 1430, SNARK:<6.MONITOR>MEXEC.MAC.108, 9-Nov-82 16:34:53 by WEETON
;Fix TCO 6.1344
; UPD ID= 1426, SNARK:<6.MONITOR>MEXEC.MAC.107, 8-Nov-82 13:52:49 by WEETON
;TCO 6.1344 - Allow enabled WHEEL or OPERATORs to load any program in top fork
; UPD ID= 1405, SNARK:<6.MONITOR>MEXEC.MAC.106, 3-Nov-82 07:00:12 by GRANT
;More TCO 6.1010 - Make RUNDD start in section 1, make USGINI run in section 1.
;Also, print out RUNNING DDMP sooner.
; UPD ID= 1400, SNARK:<6.MONITOR>MEXEC.MAC.105, 2-Nov-82 01:42:01 by CDUNN
;More TCO 6.1127 - Make KACCHG reflect the new keep alive scheme for the
;CI emulator
; UPD ID= 1397, SNARK:<6.MONITOR>MEXEC.MAC.104, 1-Nov-82 14:42:46 by LEACHE
;TCO 6.1342 Add MONVER
; UPD ID= 1386, SNARK:<6.MONITOR>MEXEC.MAC.103, 27-Oct-82 23:07:58 by CDUNN
;More TCO 6.1127 - Add further support for CI emulator keep alive
; UPD ID= 1379, SNARK:<6.MONITOR>MEXEC.MAC.102, 25-Oct-82 14:40:02 by MILLER
;TCO 6.1094. Create CFS section at system start up
; UPD ID= 1366, SNARK:<6.MONITOR>MEXEC.MAC.101, 22-Oct-82 03:52:48 by CDUNN
;More TCO 6.1127, add short routine to job init code to update the CI
;emulation keep alive boundries...
; UPD ID= 1348, SNARK:<6.MONITOR>MEXEC.MAC.99, 18-Oct-82 13:27:46 by COBB
;TCO 6.1315 - Clear CRJTTY after assignment to prevent 2 jobs on 1 tty bug
; UPD ID= 1345, SNARK:<6.MONITOR>MEXEC.MAC.98, 18-Oct-82 11:53:09 by MILLER
;TCO 6.1094. Enhance DDMPA some more
; UPD ID= 1335, SNARK:<6.MONITOR>MEXEC.MAC.97, 13-Oct-82 17:22:13 by MILLER
;Rerun DDMP right away if need be
; UPD ID= 1330, SNARK:<6.MONITOR>MEXEC.MAC.96, 12-Oct-82 17:50:23 by MILLER
;Restart DDMP soon if someone needed it while it was running
; UPD ID= 1301, SNARK:<6.MONITOR>MEXEC.MAC.95, 8-Oct-82 14:35:14 by MILLER
;Put DDMP in its own fork for CFS (TCO 6.1094)
; UPD ID= 1259, SNARK:<6.MONITOR>MEXEC.MAC.94, 29-Sep-82 20:20:00 by MILLER
;Make sure time is not negative
; UPD ID= 1251, SNARK:<6.MONITOR>MEXEC.MAC.93, 27-Sep-82 23:38:29 by MILLER
;Make sure job 0 wakes up in time to run DDMP
; UPD ID= 1247, SNARK:<6.MONITOR>MEXEC.MAC.92, 27-Sep-82 22:24:26 by MILLER
;CFS -- Fix DDMP restart
; UPD ID= 1240, SNARK:<6.MONITOR>MEXEC.MAC.91, 24-Sep-82 14:58:10 by MILLER
;Make DDMP retry wait a bit before trying again
; UPD ID= 1237, SNARK:<6.MONITOR>MEXEC.MAC.90, 24-Sep-82 12:27:19 by LEACHE
;TCO 6.1273 Add MS%ASG
; UPD ID= 1230, SNARK:<6.MONITOR>MEXEC.MAC.89, 24-Sep-82 11:48:26 by MOSER
;TCO 5.1614 MAKE CJ%ETF WORK WITH CJ%FIL.
; UPD ID= 1226, SNARK:<6.MONITOR>MEXEC.MAC.88, 23-Sep-82 23:44:50 by MILLER
;Handle failure from DDMP
; UPD ID= 1178, SNARK:<6.MONITOR>MEXEC.MAC.87, 14-Sep-82 11:07:46 by MOSER
;TCO 6.1264 - CORRECT ARGS TO ACJ AT JOBCF1
; UPD ID= 1159, SNARK:<6.MONITOR>MEXEC.MAC.86, 10-Sep-82 13:30:19 by MILLER
;tco 6.1259. Make JOBCOF go to FLOGO whnever it wants to LOGOUT
; UPD ID= 1151, SNARK:<6.MONITOR>MEXEC.MAC.85, 7-Sep-82 11:10:27 by MILLER
;TCO 6.1255. Suppress start-up dialog if DBUGSW = 3
; UPD ID= 1139, SNARK:<6.MONITOR>MEXEC.MAC.84, 3-Sep-82 15:13:55 by MCINTEE
;More TCO 6.1184 - Eliminate unwanted OKSKED from ATACH code
; UPD ID= 1097, SNARK:<6.MONITOR>MEXEC.MAC.83, 19-Aug-82 13:36:37 by MCINTEE
;TCO 6.1030 - Add call to DAPLGO during logout
; UPD ID= 1075, SNARK:<6.MONITOR>MEXEC.MAC.82, 10-Aug-82 14:19:26 by LEACHE
;TCO 6.1223 - Make "WHY RELOAD" accept a lowercase answer.
; UPD ID= 1009, SNARK:<6.MONITOR>MEXEC.MAC.81, 28-Jul-82 08:21:04 by COBB
;MORE TCO 6.1193 - Fix typo in previous edit...
; UPD ID= 1008, SNARK:<6.MONITOR>MEXEC.MAC.80, 27-Jul-82 15:19:05 by COBB
;TCO 6.1193 - ZERO out count of NOSKED p-faults after startup complete AND...
;TCO 6.1194 - Add call to ENQFKR when killing top fork to release ENQ locks
; UPD ID= 984, SNARK:<6.MONITOR>MEXEC.MAC.79, 12-Jul-82 13:52:05 by CDUNN
;TCO 6.1184 Fix ATACH JSYS to allow attach to terminal assigned by calling job
; UPD ID= 980, SNARK:<6.MONITOR>MEXEC.MAC.78, 7-Jul-82 16:16:30 by COBB
;TCO 6.1183 - Change SYSTEM:EXEC.EXE to DEFAULT-EXEC:
; UPD ID= 859, SNARK:<6.MONITOR>MEXEC.MAC.77, 7-Jun-82 09:39:33 by MURPHY
;TCO 6.1147 - Move bugdefs from BUGS.MAC to here and put them in-line.
; UPD ID= 779, SNARK:<6.MONITOR>MEXEC.MAC.76, 24-May-82 09:12:23 by HALL
;TCO 6.1144 - REMOVE "BLT SWAPPABLE MONITOR"
; UPD ID= 777, SNARK:<6.MONITOR>MEXEC.MAC.75, 21-May-82 11:41:57 by CDUNN
;TCO 6.1127 - Add code to call CISRV for a periodic check from job 0.
; UPD ID= 763, SNARK:<6.MONITOR>MEXEC.MAC.74, 19-May-82 10:09:54 by MILLER
;;TCO 6.1142. Send system messages to ORION
; UPD ID= 719, SNARK:<6.MONITOR>MEXEC.MAC.73, 11-May-82 02:15:55 by CDUNN
;More TCO 6.127 - Add free space assurance for SCA in CHKR routine
; UPD ID= 707, SNARK:<6.MONITOR>MEXEC.MAC.72, 9-May-82 13:02:19 by HALL
;TCO 6.1000- Support the 2080
; Make flags word for user mode include user AC block (EXEC0, EXECI1,
; EXBUGH, HSYS4, EXPAL0, JOBCOF
; At EXECI, preserve full word of flags instead of left half only
; Make CHKR use XJRST to get to section 1
; UPD ID= 540, SNARK:<6.MONITOR>MEXEC.MAC.71, 20-Mar-82 19:42:50 by PAETZOLD
;TCO 5.1766 - Turn on FH%EPN in PMAP call in SJLGO4. PM%EPN does not work.
; UPD ID= 471, SNARK:<6.MONITOR>MEXEC.MAC.70, 12-Mar-82 14:41:32 by PAETZOLD
;TCO 5.1753 - Turn on PM%EPN in PMAP call in logout code. Prevents PAGLCKs
; UPD ID= 433, SNARK:<6.MONITOR>MEXEC.MAC.69, 4-Mar-82 13:59:51 by MURPHY
;TCO 5.1744 - Refers to changes made approx June, 1980. Make default
; settings of system messages more like release 4.
; UPD ID= 379, SNARK:<6.MONITOR>MEXEC.MAC.68, 4-Feb-82 09:55:41 by HALL
;TCO 6.1000 - Support the 2080
; Remove call to KDPINI. Don't need it now that KS isn't supported
; UPD ID= 347, SNARK:<6.MONITOR>MEXEC.MAC.67, 24-Jan-82 23:50:20 by MURPHY
;TCO 5.1697 - XSSEV%, etc. Move GETPAT and GETDMS to FORK.MAC
; UPD ID= 313, SNARK:<6.MONITOR>MEXEC.MAC.66, 18-Jan-82 10:50:17 by MILLER
; UPD ID= 407, SNARK:<5.MONITOR>MEXEC.MAC.64, 18-Jan-82 10:37:36 by MILLER
;TCO 5.1678 again. Enhance check in ATACH for specific TTY designator
; UPD ID= 305, SNARK:<6.MONITOR>MEXEC.MAC.65, 15-Jan-82 16:27:34 by MILLER
;More TCO 5.1678. Check for same job number
; UPD ID= 302, SNARK:<6.MONITOR>MEXEC.MAC.64, 15-Jan-82 14:04:49 by MILLER
;TCO 5.1678. Make detach of object job in ATACH race-free.
; UPD ID= 386, SNARK:<5.MONITOR>MEXEC.MAC.60, 9-Jan-82 18:30:36 by MILLER
;TCO 5.1661. Unlatch MOS cotrollers after TGHA runs
;MORE OF TCO 6.1054
; UPD ID= 278, SNARK:<6.MONITOR>MEXEC.MAC.61, 6-Jan-82 10:11:09 by MILLER
;TCO 6.1054. ADD GTOKM IN ATTACH.
; UPD ID= 191, SNARK:<6.MONITOR>MEXEC.MAC.60, 6-Nov-81 13:39:04 by MURPHY
;Make monitor forks start in section 1
; UPD ID= 162, SNARK:<6.MONITOR>MEXEC.MAC.59, 23-Oct-81 15:23:34 by COBB
; UPD ID= 247, SNARK:<5.MONITOR>MEXEC.MAC.58, 6-Oct-81 15:21:24 by MOSER
;MORE TCO 5.1512 FIX A BUG.
; UPD ID= 222, SNARK:<5.MONITOR>MEXEC.MAC.57, 28-Sep-81 16:20:34 by PAETZOLD
;TCO 5.1544 - CORRECT CALCULATION FOR UPPER LIMIT OF VBOOT GROUP IN GSMDSK
; UPD ID= 209, SNARK:<5.MONITOR>MEXEC.MAC.56, 23-Sep-81 13:41:05 by MURPHY
;DITTO
; UPD ID= 187, SNARK:<5.MONITOR>MEXEC.MAC.55, 16-Sep-81 17:50:34 by MURPHY
;TCO 5.1514 - Start SYSERR fork earlier in RUNDD so messages from FE don't pile up.
; UPD ID= 184, SNARK:<5.MONITOR>MEXEC.MAC.54, 16-Sep-81 12:09:35 by SCHMITT
;More TCO 4.1051 - Remove definition of USGMUP, it is in STG
; UPD ID= 182, SNARK:<5.MONITOR>MEXEC.MAC.53, 15-Sep-81 16:51:13 by SCHMITT
;TCO 4.1.1051 - Make system restart entry include Monitor uptime
; UPD ID= 179, SNARK:<5.MONITOR>MEXEC.MAC.52, 15-Sep-81 16:26:04 by MOSER
;TCO 5.1512 ADD SE1ENT TO JOBCOF.
; UPD ID= 134, SNARK:<5.MONITOR>MEXEC.MAC.51, 1-Sep-81 16:22:40 by GRANT
;Fix the check for DETACHed before CALL TTHNGU in LOG1 - dataset line was not
;being hung up if user was not logged in
; UPD ID= 57, SNARK:<5.MONITOR>MEXEC.MAC.50, 21-Jul-81 15:22:56 by GRANT
;Change "PS:" to "system structure"
;TCO 5.1375 - Fix bugs in ATACH JSYS
; UPD ID= 19, SNARK:<5.MONITOR>MEXEC.MAC.49, 12-Jul-81 15:44:27 by PAETZOLD
;Replace .FHSLF with .TTDES at DETMS3+3
; UPD ID= 18, SNARK:<5.MONITOR>MEXEC.MAC.48, 11-Jul-81 17:45:10 by PAETZOLD
;TCO 5.1407 - Make sure we dont ask to lock more memory than is on
; replacable queue in GSMD2
; UPD ID= 2289, SNARK:<5.MONITOR>MEXEC.MAC.47, 2-Jul-81 13:36:37 by PAETZOLD
;TCO 5.1393 - Change reference of BUGINT from immediate to full word
; UPD ID= 2265, SNARK:<5.MONITOR>MEXEC.MAC.46, 26-Jun-81 18:07:46 by MURPHY
;TCO 5.1376 - JOBCOF, FLOGO, FRKNOP
; UPD ID= 2125, SNARK:<5.MONITOR>MEXEC.MAC.45, 4-Jun-81 10:11:31 by GRANT
;Make sure all 23 bits of address get returned in GETSEG
; UPD ID= 2069, SNARK:<5.MONITOR>MEXEC.MAC.44, 22-May-81 16:48:23 by ZIMA
;TCO 5.1344 - Correct ATACH and DTACH privilege checking for batch jobs.
; UPD ID= 2056, SNARK:<5.MONITOR>MEXEC.MAC.43, 21-May-81 10:46:10 by SCHMITT
;More of TCO 5.1308
; UPD ID= 1967, SNARK:<5.MONITOR>MEXEC.MAC.42, 8-May-81 14:24:43 by SCHMITT
;More of TCO 5.1308 - Check for system shutdown in CHKR loop
; UPD ID= 1941, SNARK:<5.MONITOR>MEXEC.MAC.41, 5-May-81 17:06:32 by SCHMITT
;TCO 5.1308 - Latch HSYST1 to -1 when system shutdown
; UPD ID= 1921, SNARK:<5.MONITOR>MEXEC.MAC.40, 1-May-81 11:33:52 by PAETZOLD
;TCO 5.1301 add SCOUNT to GETAB tables, also bump SCOUNT in SETSN
; UPD ID= 1910, SNARK:<5.MONITOR>MEXEC.MAC.39, 30-Apr-81 16:29:05 by CHALL
;Inform the victim of a LOGOUT about the killer and his terminal
; UPD ID= 1817, SNARK:<5.MONITOR>MEXEC.MAC.38, 17-Apr-81 09:42:10 by WACHS
;TCO 5.1287 Restrict the possible answers to Why Reload question
; UPD ID= 1778, SNARK:<5.MONITOR>MEXEC.MAC.37, 31-Mar-81 17:43:13 by MURPHY
;Default is shutdown messages at 5 and 1 min
; UPD ID= 1719, SNARK:<5.MONITOR>MEXEC.MAC.36, 16-Mar-81 16:37:05 by MURPHY
;Add "PS:" to system expunge message
; UPD ID= 1569, SNARK:<5.MONITOR>MEXEC.MAC.35, 19-Feb-81 14:07:50 by HALL
;TCO 5.1180 - Move DST to non-zero section
; Fix EXEC0 so that it can run in section 1, because call to SETMPG
; can get to GDSTX
; BSRAD - Use extra stack location and avoid clobbering PC
; GOTSWM - Change BLT to initialize SYSFK table
; UPD ID= 1496, SNARK:<5.MONITOR>MEXEC.MAC.34, 26-Jan-81 13:25:47 by ENGEL
;GET RID OF THE LCS CALLS. NOT PART OF NEXT RELEASE ANYMORE
; UPD ID= 1485, SNARK:<5.MONITOR>MEXEC.MAC.33, 24-Jan-81 23:20:07 by ZIMA
;TCO 5.1240 - Fix connect time calculation in CPGCON checkpoint routine.
; UPD ID= 1479, SNARK:<5.MONITOR>MEXEC.MAC.32, 22-Jan-81 12:37:41 by ZIMA
;TCO 5.1238 - expunge properly on logout.
; UPD ID= 1292, SNARK:<5.MONITOR>MEXEC.MAC.31, 18-Nov-80 18:11:05 by MURPHY
;FIX BUG IN JOBCOF - MAKE DETACH HAPPEN BEFORE LOGOUT
; UPD ID= 1286, SNARK:<5.MONITOR>MEXEC.MAC.30, 18-Nov-80 14:40:13 by OSMAN
; UPD ID= 1248, SNARK:<5.MONITOR>MEXEC.MAC.29, 7-Nov-80 15:01:32 by SCHMITT
;TCO 5.1194 - Fix code at USGIN7 to not cause CHKPNT errors
; UPD ID= 1221, SNARK:<5.MONITOR>MEXEC.MAC.28, 2-Nov-80 11:48:37 by HALL
;TCO 5.1180 - MOVE THE DST TO NON-ZERO SECTION
; CHKR - RUN IN SECTION 1
; GSMDX - RUN IN SECTION 1
;tco 5.1189 - Make entry vector two words
; UPD ID= 1221, SNARK:<5.MONITOR>MEXEC.MAC.28, 2-Nov-80 11:48:37 by HALL
;TCO 5.1180 - MOVE THE DST TO NON-ZERO SECTION
; CHKR - RUN IN SECTION 1
; GSMDX - RUN IN SECTION 1
; UPD ID= 1143, SNARK:<5.MONITOR>MEXEC.MAC.27, 8-Oct-80 15:14:08 by MURPHY
;BUG IN JOBCOF
; UPD ID= 1103, SNARK:<5.MONITOR>MEXEC.MAC.26, 2-Oct-80 09:28:08 by MURPHY
;DITTO
; UPD ID= 1081, SNARK:<5.MONITOR>MEXEC.MAC.25, 1-Oct-80 11:53:31 by MURPHY
;FIX ACVAR, ETC.
; UPD ID= 975, SNARK:<5.MONITOR>MEXEC.MAC.24, 29-Aug-80 08:41:47 by ENGEL
;ADD LCS INITIALIZATION CALL
; UPD ID= 972, SNARK:<5.MONITOR>MEXEC.MAC.23, 25-Aug-80 16:53:39 by HALL
;TCO 5.1139 - ADD FAILING PC AND LSTERR TO OUTPUT WHEN FORK 0 CRASHES
; UPD ID= 965, SNARK:<5.MONITOR>MEXEC.MAC.22, 25-Aug-80 16:28:07 by ENGEL
;TCO 5.1136 - ADD DEVLKK
; UPD ID= 932, SNARK:<5.MONITOR>MEXEC.MAC.21, 20-Aug-80 14:59:31 by LYONS
;TCO 5.1062 WRITE VERIFICATION ON WRITE FOR DISKS
; UPD ID= 841, SNARK:<5.MONITOR>MEXEC.MAC.20, 5-Aug-80 16:20:06 by OSMAN
;tco 5.1109 - Add PDV support to SSAVE and GET
; UPD ID= 812, SNARK:<5.MONITOR>MEXEC.MAC.19, 30-Jul-80 11:03:46 by MURPHY
;WEFLAG - DON'T WRITE-PROTECT MONITOR IF NON-0
; UPD ID= 789, SNARK:<5.MONITOR>MEXEC.MAC.18, 23-Jul-80 17:20:10 by R.ACE
;TCO 5.1112 - REMOVE VESTIGIAL "MOVE T1,FORKX" AT JOBCF1+2
; UPD ID= 747, SNARK:<5.MONITOR>MEXEC.MAC.17, 8-Jul-80 17:50:12 by HALL
;FIX LYONS' EDIT TO CHKUM1
; UPD ID= 723, SNARK:<5.MONITOR>MEXEC.MAC.15, 2-Jul-80 11:28:18 by LYONS
;Fix ILMNRF in SAVE% JSYS by maping read only page to non-existant page
; with no access, and fooling SAVEB1 into thinking page is really there
;Fix missing checks for tty detached when we get CTRLTT in LOG1
;Fix time race in CHKUM1 that can cause J0NRUN
;Fix reason why system down as told to IMP
;Fix CTY login after ^ECEASE if it was prohibited before
;ARPAnet can cause UPDL overflows if user in JSYS which locks tty data
;A job with PSI for carrier off does not get it until reattach time.
; UPD ID= 703, SNARK:<5.MONITOR>MEXEC.MAC.14, 26-Jun-80 09:52:06 by LYONS
;Add code to call ACJ on an implicit logout (i.e. thru a hangup of a dataset)
; UPD ID= 700, SNARK:<5.MONITOR>MEXEC.MAC.13, 25-Jun-80 17:26:40 by MURPHY
;FIRST SHUTDOWN MESSAGE CONTROLLED BY SF%MS1
; UPD ID= 698, SNARK:<5.MONITOR>MEXEC.MAC.12, 25-Jun-80 17:05:46 by GRADY
;TCO 5.1079 - FIX RACE AT LDTAC2, BUT UNLOKK DEVLKK AND GO OKINT TOO.
; UPD ID= 666, SNARK:<5.MONITOR>MEXEC.MAC.10, 16-Jun-80 19:06:25 by LYONS
;FIX RACE AT LDTAC2, WHERE CTRLTT MAY NOT BE RIGHT
; UPD ID= 662, SNARK:<5.MONITOR>MEXEC.MAC.9, 16-Jun-80 17:23:27 by KONEN
;TCO 5.1063 - REMOVE PS: AS NAME OF PRIMARY STRUCTURE
; UPD ID= 597, SNARK:<5.MONITOR>MEXEC.MAC.8, 3-Jun-80 17:45:02 by MURPHY
;FACTSW BITS TO CONTROL SYSTEM MESSAGES
; UPD ID= 498, SNARK:<5.MONITOR>MEXEC.MAC.7, 30-Apr-80 15:06:35 by GRANT
;TCO 5.1030 - Add description to ?FULL
; UPD ID= 468, SNARK:<5.MONITOR>MEXEC.MAC.6, 23-Apr-80 15:52:58 by LYONS
;pushed literals as PC dont allow for non zero sections
; UPD ID= 445, SNARK:<5.MONITOR>MEXEC.MAC.5, 15-Apr-80 11:01:18 by HALL
;MOVE LOGDES AND JB0TT INTO RSDAT
; UPD ID= 401, SNARK:<5.MONITOR>MEXEC.MAC.4, 2-Apr-80 15:52:50 by HALL
;FIX LOWER CASE IN PREVIOUS EDIT
; UPD ID= 394, SNARK:<5.MONITOR>MEXEC.MAC.3, 1-Apr-80 15:44:01 by HALL
;MAKE JB0TT AND USGMUP BE PART OF RSVAR PSECT
; UPD ID= 374, SNARK:<5.MONITOR>MEXEC.MAC.2, 26-Mar-80 13:36:09 by ENGEL
;STOP EDDT SYMBOL FROM PRINTING
; UPD ID= 288, SNARK:<4.1.MONITOR>MEXEC.MAC.447, 21-Feb-80 10:58:17 by MURPHY
;NEW FKINT DEFS
; UPD ID= 266, SNARK:<4.1.MONITOR>MEXEC.MAC.446, 15-Feb-80 17:39:58 by MURPHY
;PROPER LENGTH FOR QTIMES TABLE IN GETAB
; UPD ID= 240, SNARK:<4.1.MONITOR>MEXEC.MAC.445, 1-Feb-80 14:40:27 by ENGEL
; UPD ID= 110, SNARK:<4.1.MONITOR>MEXEC.MAC.444, 7-Dec-79 16:30:00 by SCHMITT
;TCO 4.1.1051 - CALC. MONITR UPTIME IN SEC AND GIVE TO USAGE JSYS FOR RESTART
; UPD ID= 106, SNARK:<4.1.MONITOR>MEXEC.MAC.443, 7-Dec-79 09:34:57 by R.ACE
;TCO 4.2591 - SECTION-0 PAGE TABLE SHARE COUNT PROBLEM FROM SSAVE
;ADD ERJMP AFTER SOUT IN LITERAL AFTER SSAVB4
; UPD ID= 91, SNARK:<4.1.MONITOR>MEXEC.MAC.442, 5-Dec-79 09:13:00 by OSMAN
;tco 4.1.1044 - Make EXEC command in mini-exec do implicit RESET
;<4.1.MONITOR>MEXEC.MAC.441, 16-Nov-79 13:47:41, EDIT BY MILLER
;PREVIOUS CHANGES UNDER TCO 4.1.1021
;<4.1.MONITOR>MEXEC.MAC.440, 16-Nov-79 13:00:38, EDIT BY MILLER
;ADD TTFSMS BUGINF
;<4.1.MONITOR>MEXEC.MAC.439, 16-Nov-79 11:46:24, EDIT BY MILLER
;CHANGE ALLMSG TO TIME-OUT TTMSG
; COPYRIGHT (c) DIGITAL EQUIPMENT CORPORATION 1976, 1988.
; ALL RIGHTS RESERVED.
;
; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE
; INCLUSION OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER
; COPIES THEREOF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY
; OTHER PERSON. NO TITLE TO AND OWNERSHIP OF THE SOFTWARE IS HEREBY
; TRANSFERRED.
;
; THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE
; AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
; CORPORATION.
;
; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
; SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY DIGITAL.
SEARCH MONSYM,PROLOG,SERCOD
TTITLE MEXEC
Subttl Table of Contents
; Table of Contents for MEXEC
;
; Section Page
;
;
; 1. Assembly Parameters . . . . . . . . . . . . . . . . . 4
; 2. Job and System Initialization . . . . . . . . . . . . 5
; 2.1 Job Initialization . . . . . . . . . . . . . . 9
; 2.2 Non-zero Jobs . . . . . . . . . . . . . . . . 11
; 2.3 CRJOB Created Job . . . . . . . . . . . . . . 13
; 2.4 Read MONNAM.TXT (GETNAM) . . . . . . . . . . . 19
; 3. Job 0 Forks
; 3.1 Initialization (RUNDD) . . . . . . . . . . . . 20
; 3.2 Page Movement to Disk (DDMP) . . . . . . . . . 32
; 3.3 KLIPA Checking (IPACHK) . . . . . . . . . . . 34
; 3.4 CI Buffer Checks (CIRUN) . . . . . . . . . . . 35
; 3.5 CHKR Initialization . . . . . . . . . . . . . 36
; 3.6 Fork Startup (RUNDIR/RUNDII) . . . . . . . . . 39
; 3.7 Set Error Address (MONBKX) . . . . . . . . . . 41
; 3.8 Make System Restart Record (LOGSST) . . . . . 42
; 3.9 Ask "Why Reload?" (WHYRLD) . . . . . . . . . . 44
; 3.10 Ask "Run CHECKD?" (RUNCKD) . . . . . . . . . . 45
; 3.11 Timeout starup questions (TIMOUT) . . . . . . 46
; 3.12 Check "Why Reload?" Response (MATRLA) . . . . 47
; 3.13 Get Time and Date for Startup (RDDTAD) . . . . 49
; 3.14 Start Next Special job (DONSJ) . . . . . . . . 50
; 3.15 Scheduler Tests . . . . . . . . . . . . . . . 51
; 3.16 Fork Error Catcher . . . . . . . . . . . . . . 52
; 3.17 Periodic Checker (CHKR) . . . . . . . . . . . 54
; 3.17.1 Sniff the ACJ (CHKACJ) . . . . . . . . . 57
; 3.17.2 Start DOB SETSPD (DOBSSP) . . . . . . . 59
; 3.17.3 Kill DOB SETSPD (DOBKSP) . . . . . . . . 60
; 3.17.4 Magtape Online (MTASSP) . . . . . . . . 61
; 3.17.5 TGHA Check (CHKMOS) . . . . . . . . . . 62
; 3.17.6 Check Swapping Space (CHKDMS) . . . . . 63
; 3.17.7 Check OFNs Used (CHKOFN) . . . . . . . . 64
; 3.17.8 Check SPTs in use (CHKSPT) . . . . . . . 65
; 3.17.9 Check Boot Structure Space (CHKDKS) . . 66
; 3.17.10 Expunge Boot Structure (EXPALL) . . . . 68
; 3.17.11 Utility Routines . . . . . . . . . . . . 72
; 4. Mini-EXEC . . . . . . . . . . . . . . . . . . . . . . 75
; 4.1 Command Dispatch . . . . . . . . . . . . . . . 77
; 4.2 BLT Swappable Monitor (Historical) . . . . . . 78
; 4.3 Reset Command . . . . . . . . . . . . . . . . 79
; 4.4 Exec Command . . . . . . . . . . . . . . . . . 80
; 4.5 Jump Command . . . . . . . . . . . . . . . . . 81
; 4.6 Get/Start/Dump Commands . . . . . . . . . . . 82
; 4.7 Utility Routines . . . . . . . . . . . . . . . 83
; 4.8 Handle Interrupts (EXECI) . . . . . . . . . . 84
Subttl Table of Contents (page 2)
; Table of Contents for MEXEC
;
; Section Page
;
;
; 5. BUGxxx Processing . . . . . . . . . . . . . . . . . . 86
; 5.1 BUGHLT In Job Context (EXBUGH) . . . . . . . . 93
; 5.2 Store Time For BUGxxx (CHKBGS) . . . . . . . . 94
; 5.3 Log Parity Error (PFCPJ0) . . . . . . . . . . 95
; 6. Send Message To All Lines (ALLMSG) . . . . . . . . . . 96
; 7. End of MEXEC . . . . . . . . . . . . . . . . . . . . . 97
SUBTTL Assembly Parameters
EXTN <BRDTIM,DDMPF,MOSULE,HNGU0F,HNGU1F,BUGTL>
IFNDEF FTKLIPA,<FTKLIPA==-1> ;Default is include KLIPA support code
IFNDEF FTMSCP,<FTMSCP==0> ;Default is no MSCP
IFN <FTKLIPA!FTMSCP>,<EXTERN SC.RAP>
IFE FTNSPSRV,<EXTERN LLMINI> ;[7.1200][7173] ~6.0 Defined in LLMOP
;AC DEFINITIONS USED HEREIN
DEFAC (FX,Q3) ;FORK INDEX
;NOTE: THE NEXT TWO LOCATIONS MUST BE TOGETHER. GETAB REQUIRES IT
RSI LOGDES,LOGTTY ;DESIGNATOR FOR LOG MSGS - DEF IN PARAMS
RSI JB0TT,0 ;DESIG FOR JOB 0 AND ERR MSGS
MICHN==:1B34+1B35 ;CHANNELS THAT MONITOR ENABLES
EXWTIM==:^D120 ;NUMBER MINUTES BETWEEN AUTO EXPUNGES
SWAPCD
;REGULAR SUBSYSTEM NAMES FOR INCLUSION IN SNAMES TABLE AT STARTUP
SBSNMS: SIXBIT /EXEC/
SIXBIT /(PRIV)/
NSBSNM==.-SBSNMS
;TABLE DEFINES SPECIAL PURPOSE FOR FIRST FEW JOBS
SPECJT: MSEC1,,RUNDD ;JOB 0 IS ALWAYS DISK CHECKER, ETC.
NSPECJ==.-SPECJT ;NUMBER OF SPECIAL JOBS
RESCD
SUBTTL Job and System Initialization
;CODE TO INITIALIZE JOB ON FIRST STARTUP. ALSO INVOKES SYSTEM
;INITIALIZATION IF FIRST JOB AFTER SYSTEM STARTED FROM SCRATCH
;SYSIFG IS 0 WHEN SYSTEM IS JUST STARTING
EXEC0:: MOVX 1,LOGIOB ;SAY JOB CREATION IN PROGRESS
IORM 1,JOBBIT
SETZM FPC
MOVX 1,USRCTX ;SIMULATE CALL FROM USER
MOVEM 1,FFL
MCENTR
SKIPE SYSIFG ;NEW SYSTEM?
JRST GOTSWM ;NO
MOVEI T1,MFRKWD ;GET SPECIAL PRIORITY FOR MONITOR FORKS
MOVEM T1,JOBSKD ;AND SET THIS JOB AS SUCH
CALL FSIINI ;GO MOUNT THE PUBLIC STRUCTURE
CALL SWPINI ;SWAPPER CAN NOW BE INITIALIZED
;IT MUST BE CALLED AFTER NSSUN AND
; THE SDB FOR PS ARE SET UP BY FSIINI
MOVEI T1,PSNUM ;T1/ STRUCTURE NUMBER (PUBLIC STRUCTURE)
MOVEI T2,HOMPGA ;T2/ ADDRESS OF PAGE TO USE FOR BAT BLOCKS
MOVX T3,MI%MSG ;T3/ FLAGS TO TELL OPERATOR, FIX INCONSISTENT
CALL CHKBAT ;AND NOW THE BAT BLOCKS CAN BE CHECKED
; AND THE OVERFLOW SWAPPING ADDRESSES
; IN THE BAT BLOCKS PROCESSED
GETSWM::
; IFN CFSCOD,<
CALL CFSCSC ;First, create CFS data section
; >
SETOM SWPMLF ; INIT COUNT OF LOCKERS OF SWP MON
SKIPN EDDTF ;KEEP EDDT?
CALL ULKINI ;NO, UNLOCK IT
SKIPE SMLKF ;KEEP SWPMON LOCKED?
CALL SWPMLK ;YES, RE-LOCK IT
CALL MOVNRC ;MAKE SWPMON (NRCOD) BE IN SEC 1 ONLY
CALL RESLCK ;LOCK DOWN SOME RESIDENT FREE SPACE
CALL DOBINI ;[7.1081] () Initialize DOB
JFCL ;[7.1081] Ignore error for now
SKIPE VSMFLG ;SWAP MONITOR NEED TO BE FORCED OUT TO DISK?
JRST [ SETOM SKEDFC ;YES, FORCE IT ALL TO HAPPEN
MOVEI T1,1000 ;1 SECOND OF SLEEP TIME
DISMS ;SHOULD BE LONG ENOUGH FOR THE SWAPABLE
;MONITOR TO GET OUT, WITH OUT ANY PROBLEMS.
SETZM VSMFLG ;STOP FORCING DATA VERIFICATION
SETZM SKEDFC ;MAKE SURE WE DONT SPEND EXTRA TIME SWAPPING, TOO
JRST .+1] ;BACK TO THE MAIL LINE CODE
;AT THIS POINT THE SWAPPABLE MONITOR HAS BEEN LOADED. IF THE MONITOR WAS
;STARTED AT 144, IT HAS ALSO BEEN SWAPPED OUT TO THE DISK.
; IF IT IS DESIRABLE TO PATCH THE SWAPPABLE MONITOR A BREAKPOINT CAN
; BE PUT HERE. NO PART OF THE SWAPPABLE MONITOR WILL HAVE BEEN EXECUTED YET.
;INITIALIZE THE FORK STRUCTURE FOR THIS JOB. ASSIGN FIRST WORD OF FKPTRS
;AND SYSFK TO THIS FORK. MAKE EACH REMAINING WORD OF FKPTRS POINT TO NEXT
;AVAILABLE SLOT AND FREJFK POINT TO THE FIRST AVAILABLE SLOT
;INITIALIZE REMAINING WORDS OF SYSFK TO -1
GOTSWM: MOVEI 1,FKPTRS ;1/NAME OF FORK STRUCTURE LIST
MOVEI 2,NUFKS ;2/NUMBER OF WORDS IN LIST
CALL ILIST ;INITIALIZE FREE WORDS IN FKPTRS
MOVE 1,0(1) ;POINT TO SECOND FREE SLOT
MOVEM 1,FREJFK ;MAKE FREE LIST START WITH SECOND SLOT
SETZM FKPTRS ;TAKE FIRST SLOT FO THIS FORK
MOVE 1,FORKX ;GET SYSTEM-WIDE INDEX FOR THIS FORK
HRRZM 1,SYSFK ;STORE IN JOB STORAGE AREA
;Note that this clears all the flag bits
; (defined in FORK) in LH of SYSFK
MOVEI T1,NUFKS-2 ;T1/ NUMBER OF WORDS TO COPY
MOVEI T2,SYSFK+1 ;T2/ STARTING SOURCE WORD
SETOM (T2) ;INITIALIZE IT TO -1
MOVEI T3,1(T2) ;T3/ STARTING DESTINATION WORD
CALL XBLTA ;INITIALIZE BLOCK TO -1 (EXCEPT FIRST WORD)
MOVE T1,[JTBIFR] ; Initialize JTB free bit table
MOVEM T1,JTBFRE ; ..
SETOM FKLOCK ;INIT FORK LOCK FOR THIS JOB
SETZM FLKCNT ;CLEAR NEST COUNT
SETOM FLKOWN ;CLEAR OWNING FORK
;SET UP FOR INTERRUPTS TO BE PROCESSED BY THE MONITOR
;IF AN INTERRUPT OCCURS ON A CHANNEL WHOSE BIT IS SET IN MONCHN,
;THE MONITOR WILL GO TO EXECI
;CHANNELS 34 AND 35 ARE ACTIVATED HERE, AND CTRL/P IS ASSIGNED
;TO THEM IN THE MINI-EXEC
SETOM TTJTIW
MOVE 1,[XWD MSEC1,EXECI] ;GO TO EXECI ON INTERRUPT
CALL MONBKX
MOVE T1,FORKN ;GET RELATIVE FORK NUMBER
CALL SETVGN ;AND RESTORE VIRGINITY
JRST JBI0 ;CONTINUE IN SWAPPABLE CODE
;JOB INITIALIZATION...
;SYSIFG IS 0 IF SYSTEM IS BEING STARTED
RSI SPJCAP,<SC%CTC!SC%GTB!SC%LOG!SC%SCT!SC%SUP!SC%WHL!SC%OPR!SC%CNF!SC%MNT!SC%IPC!SC%ENQ!SC%NWZ!SC%NAS!SC%DNA!SC%ANA> ;SPECIAL JOB CAPS
SWAPCD
JBI0: CALL JBFINI ;INIT FILE SYS FOR THIS JOB
SKIPE SYSIFG ;SYSTEM INITIALIZED?
JRST SYSINE ;YES
;SYSTEM IS BEING STARTED. DO ONCE-ONLY INITIALIZATION
MOVE T1,SPJCAP ;GET SPECIAL JOB CAPS
MOVEM T1,CAPENB ;ENABLE ALL CAPABILITIES FOR INITIALIZATION
MOVEM T1,CAPMSK ;HERE TOO
EXTERN SWFREE,SWOPTL,SWFREL
MOVE T1,[SWFREE,,SWFREE+1]
SETZM SWFREE ;ZERO THE FREE POOL
BLT T1,SWFREE+SWFREL-1 ;...
MOVEI T1,SWFREE ;GET ADR OF FREE POOL
HRLOM T1,SWPFRE ;INITIALIZE POINTER TO FREE BLOCK
MOVEI T1,SWFREL ;GET LENGTH OF FREE AREA
HRRZM T1,SWFREE ;MAKE IT ONE LARGE BLOCK
MOVEM T1,SWPFRE+2 ;STORE IN SPACE COUNTER
SETOM SWPFRE+1 ;INITIALIZE LOCK ON FREE STORE
MOVE T1,[XWD SWFREE+SWFREL,SWFREE]
MOVEM T1,SWPFRE+4 ;SET UP TOP AND BOTTOM POINTERS
MOVEI T1,SWOPTL ;GET OPTIMUM LENGTH OF MESSAGES
MOVEM T1,SWPFRE+3 ;SAVE IN HEADER BLOCK
CALL FSPINI ;Initialize swappable free space
SETOM FGLOCK ;INIT FAST GET LOCK
SETOM SYLNLK ;INIT SYSTEM LOGICAL NAME LOCK
SETOM CRJLCK ;INIT LOCK OF CRJOB DATA BASE
CALL FILINI ;INIT FILE SYSTEM
SETOM GOKLCK ;INIT GETOK LOCK
SETOM TIMLCK ;INIT LOCK ON TIMER Q'S
MOVEI T1,0
DO.
MOVE T2,SBSNMS(T1) ;MOVE REGULAR SUBSYSTEM NAMES TO TABLE
MOVEM T2,@[EP. SNAMES(T1)]
CAIGE T1,NSBSNM-1
AOJA T1,TOP.
ENDDO.
MOVNI 1,NSBSNM ;INIT TABLE POINTER WITH NEG COUNT
MOVEM 1,SNMPT
SETOM SNMLCK ;AND INIT LOCK
MOVE T1,[JOBONT,,JOBONT+1]
SETOM JOBONT ;NO JOBS ARE YET OWNED BY ANYONE
BLT T1,JOBONT+NJOBS-1 ; ..
CALL PIDINI ;INITIALIZE THE IPCF DATA BASE AND FORKS
CALL SLNINI ;INITIALIZE SYSTEM LOGICAL NAMES
SETOM UTLOCK ;INITIALIZE THE UTEST JSYS DATA BASE
CALL GETNAM ;INITIALIZE STRING CONTAINING
; MONITOR VERSION AND NAME
IFN FTNSPSRV,CALL NAMINI ;INITIALIZE NODE NAME TO "TOPS20", IF DECNET
MOVEI T1,TMZONE ;INITIALIZE TIMZON
MOVEM T1,TIMZON
SETOM ACTLCK ;INITIALIZE LOCK ON ACCT WINDOW PAGES
SETOM ACTOFN ;NO OFN FOR ACCT VALIDATION DATA FILE YET
SETOM AVALON ;ALWAYS TURN ON ACCT VALIDATION TILL STATED OTHERWISE
SUBTTL Job and System Initialization -- Job Initialization
;JOB INITIALIZATION...
;THIS CODE IS REACHED FOR ALL JOBS, INCLUDING FIRST ONE AFTER SYSTEM
;STARTUP
SYSINE: MOVE T1,JOBNO ;GET OUR LOCAL JOB INDEX
CALL JBGET1 ;ASK CFS FOR A GLOBAL JOB NUMBER
IFNSK. ;IF NO SKIP, WE HAVE NO MORE JOBS LEFT
TMSG <
?No Global Job slots available.
> ;TELL THE USER WHY HE'S GETTING...
JRST FLOGO1 ; LOGGED OUT.
ENDIF. ;[7.1051]
MOVEM T1,GBLJNO ;[7.1051] Save the global job number here (JSB)
HLRZ T2,ACTJOB ;[7.1051] Get the lowest job number used
SKIPE T2 ;[7.1051] Skip if there isn't a lowest yet
CAML T2,T1 ;[7.1051] Is the lowest lower?
HRLM T1,ACTJOB ;[7.1051] No, store new lowest job
HRRZ T2,ACTJOB ;[7.1051] Get the highest job number
SKIPE T2 ;[7.1051] Skip if there isn't a highest yet
CAMG T2,T1 ;[7.1051] Is highest job still highest?
HRRM T1,ACTJOB ;[7.1051] Nope, store new highest
MOVE T1,JOBNO ;INITIALIZE THE PID QUOTA
CALL PIDJBI ; AND SEND QUOTA
CALL ENQJBI ;INITIALIZE ENQ/DEQ QUOTA
MOVE T1,JOBNO ;GET JOB NUMBER
SETZM CRJFLG ;ASSUME NOT A CREATE-JOB STARTUP
HLRZ T2,JOBPT(T1) ;CHECK FOR SPECIAL STARTUP FLAG
CAIE T2,-2 ;FROM CRJOB?
JRST SYSIN1 ;NO. NORMAL STARTUP.
MOVE T2,CRJTTY ;CRJOB. HERE IS THE REQUESTED TTY.
HRLM T2,JOBPT(T1) ;PUT IT IN JOBPT OF NEW JOB.
MOVEM T2,CTRLTT ;AND IN THE JSB
SETOM CRJFLG ;FLAG IN JSB THIS IS A CRJOB STARTUP
SYSIN1: JUMPL T2,SYSIN2 ;JUMP IF JOB IS DETACHED
CALL TTYASN ;ASSIGN CONTROLLING TTY
JRST SYSIN9
SKIPGE CRJFLG ;CRJOB STARTUP??
SETOM CRJTTY ; YES, CRJOB TTY IS NO LONGER SPECIAL
MOVE T2,CTRLTT ;GET TTY NUMBER
CALL TTCKSP ;GO SEE IF SPEED SETTING NEEDED
;Continue with job initialization...
SYSIN2: MOVE T1,TODCLK
MOVEM T1,CONSTO ;SET CONSOLE TIME ON
CALL LGTAD ;[7456] (/T1,T2) Get the current date time
MOVEM T1,JSSCTI ;[7456] Save as the session start time
SETZM JSSRTM ;Reset session runtime
SETZM JSSCTM ; and session console time
MOVE T1,[OURNAM,,LLSR] ;BLT POINTER TO INITIALIZE NODE NAME
BLT T1,LLSR+WPN-1 ;MAKE JOB'S NODE NAME BE OUR LOCAL NAME
MOVX T1,LOGIOB ;SAY JOB CREATION FINISHED
ANDCAM T1,JOBBIT
;JOBS 0 THROUGH NSPECJ-1 ARE SPECIAL. SPECJT CONTAINS ADDRESS TO WHICH
;TO TRANSFER. FOR NOW, ONLY JOB 0 IS SPECIAL, AND IT GOES TO RUNDD.
;SEE IF THIS IS A SPECIAL JOB
NOTJB0: MOVE 1,JOBNO ;FIRST FEW JOBS ARE SPECIAL,
CAIL 1,NSPECJ ;IS THIS ONE OF THEM?
IFSKP.
MOVEI 2,OPERDN ;YES, GET DIRECTORY NUMBER OF <OPERATOR>
HRRM 2,JOBDIR(1) ;INDICATE LOGGED IN AS <OPERATOR>
STOR 2,JSDIR ;SAVE AS CONNECTED DIRECTORY
SETZRO JSCDF ;NO STRING IN JSB
MOVE 2,STRTAB+PSNUM ;GET SDB ADDRESS OF PRIMARY STRUCTURE
LOAD 2,STRUC,(2) ;GET ITS UNIQUE STRUCTURE CODE
STOR 2,JSUC ;SAVE AS CONNECTED STRUCTURE CODE
MOVE 2,[[3
ASCIZ "OPERATOR"],,USRNAM]
BLT 2,USRNAM+2 ;SET UP DEFAULT USER NAME STRING
MOVE 2,SPECJT(1)
JRST 0(2) ;GO DO THE SPECIAL FUNCTION
ENDIF.
SUBTTL Job and System Initialization -- Non-zero Jobs
;NOT A SPECIAL JOB. SET UP TERMINAL INFORMATION
MOVE A,CTRLTT ; GET CONTROLLING TERMINAL
JUMPL A,SYSINP ;NO TTY. DON'T INIT TTY PARAMETERS
CALL CHKPTY ;IS IT A PTY?
SKIPA ;NO. INIT TTY PARAMETERS
JRST SYSINP ;YES. DON'T INIT TTY PARAMETERS
MOVEI 1,100
MOVEI 2,3B33 ;SET TO HDX HERE, SO SETTING TO FDX
STPAR ;BELOW WILL FORCE OUT TELNET CONTROL
MOVE 2,NORMTF ;GET TTY TO STANDARD STATE
SFMOD
STPAR ;SET DEVICE PARAMETERS TOO
MOVE B,CTRLTT ;GET CONTROLLING TERMINAL
CALL CHKTVT ;SEE IF A TCP VIRTUAL TERMINAL
SKIPA T2,NORMTY ;[7.1230] No, load system default
MOVEI T2,.TTIDL ;[7.1230] Yes, load ideal terminal type
MOVEI T1,.PRIOU
STTYP
MOVE 2,TTICB1
MOVE 3,TTICB2
SFCOC
CALL BLINKS ;[7.1230] () Do a TLINK to clear links/advice
;...
;GO START THE EXEC. IF SYSTEM IS STAND-ALONE, TELL THE USER
SYSINP: SKIPE CRJFLG ;IF CREATED JOB, GO SET IT UP.
JRST STCRJB ; ..
MOVE B,CTRLTT ;GET CONTROLLING TERMINAL
CALL CHKTVT ;ARE WE A TVT?
SKIPA ;NO
CALL TVTMSG ;YES SO OUTPUT THE MESSAGE
MOVE T1,DBUGSW
CAIGE 1,2 ;DEBUG MODE OPERATION?
JRST STEX ;NO, GO START EXEC
TMSG <
[Caution--System is stand-alone]
>
JRST STEX ;WARN USERS FIRST
SYSIN9: SETOM CTRLTT ;INDICATE DETACHED SO LOGOUT WON'T
MOVE T2,JOBNO ; TRY TO WRITE ON THIS TERMINAL
HRROS JOBPT(T2) ;..
SKIPL CRJFLG ;IS THIS JOB BEING CREATED BY CRJOB JSYS?
JRST FLOGO1 ;NO. GO KILL THE JOB
SETOM CRJTTY ;YES, CRJOB TTY IS NO LONGER SPECIAL
CALL SETANS ;SETUP CRJANS AND CRJFLG
JRST LOGO ;GO KILL THE JOB
SUBTTL Job and System Initialization -- CRJOB Created Job
;HERE AT STARTUP OF JOB BY CRJOB JSYS.
STCRJB: MOVE T1,GBLJNO ;GET GLOBAL JOB INDEX FOR CREATOR
HRLM T1,CRJONJ ;TELL CREATOR, IF WE GET THERE.
MOVE Q1,JOBNO ;CARRY AROUND MY JOB NUMBER
MOVE Q2,CRJAC1 ;AND CONTROL FLAGS OF CRJOB AC1
HRRZ T1,CRJONJ ;Get creator's global job number
CALL GL2LCL ;Convert it into a local job index
JRST SCJXX4 ;No such job...give up
HRRM T1,CRJAC1 ;Save the local index for later
HRRZ T1,CRJONJ ;Get the global job number of creator
HRL T1,GBLJNO ;GET JOB NUMBER FOR JOBONT.
TXNE Q2,CJ%OWN ;CREATOR WANTS TO OWN ME?
MOVEM T1,JOBONT(Q1) ;YES. REMEMBER WHO HE IS.
MOVE T1,CRJSLO ;SIGNAL ON LOGOUT?
TXNN Q2,CJ%SLO ; ..
MOVEI T1,0 ;NO. CLEAR THE PID
MOVEM T1,JSLOPD ;SAVE THE PID FOR THE SIGNAL
JN CJ%LOG,Q2,STCJB1 ;JUMP IF WANTS TO LOG IN
HRRZ T1,CRJAC1 ;NO LOGIN, GET CREATOR'S JOB INDEX
HRRZ T1,JOBDIR(T1) ; TO FETCH CREATOR'S LOGIN DIRECTORY
STOR T1,JSDIR ;AND MAKE IT OUR CONNECTED DIRECTORY
MOVE T1,LGSIDX ;[7.1112]Get number of Login Structure
MOVE T1,STRTAB(T1) ;[7.1112]Get SDB address
LOAD T1,STRUC,(T1) ; AND FETCH THE PRIMARY STRUCTURE UNIQUE CODE
STOR T1,JSUC ;SET IN JSB, COMPLETING CONNECT TO PRIMARY STR
SETZM CAPENB ;MAKE SURE I HAVE NO CAPS ENABLED
HLLZS CAPMSK ;OR POTENTIAL
MOVE T1,CRJOJC ;GET OWNING JOB'S CAPS
AND T1,CRJCAM ;MASKED, IF ASKED
TXNE Q2,CJ%CAP ;DOES HE WANT TO GIVE ME HIS?
HRRM T1,CAPMSK ;YES, I'LL TAKE THEM, UNTIL LOGIN JSYS
JRST STCJ1A ;DONE WITH LOGIN-ISH STUFF
;HERE IF CJ%LOG IS ON IN CALL. I AM TO TRY TO LOG THIS JOB IN.
STCJB1: HRROI B,CRJUSR ;POINT TO THE USER NAME STRING
MOVX T1,RC%EMO ;EXACT MATCH ONLY
RCUSR ; AND CONVERT TO USER NUMBER
ERJMP SCJXXX ;PASS FAILURE CODE BACK
TXNE T1,RC%NOM!RC%AMB ;FILES ONLY, NO MATCH OR
JRST SCJXX1 ; AMBIGUOUS? FAIL. CAN'T LOG IN.
MOVEM T3,CRJUSR ;STORE THE NUMBER
HRRZ T3,T3 ;CLEAN FOR CAMN LATER
MOVE T4,CRJOJC ;GET CREATOR'S CAPS
HRRZ T1,CRJAC1 ;AND JOB INDEX
HRRZ T1,JOBDIR(T1) ;CREATOR'S LOGIN DIRECTORY
TRNN T4,SC%WHL!SC%OPR ;PRIVILEGED CREATOR?
CAMN T1,T3 ;OR LOGGING IN AS SAME USER?
JRST STCJ1E ;YES. NO NEED FOR PSWD CHECK.
TXZE Q2,<CJ%NPW!CJ%NUD> ;NO, SO REQUIRE PASSWORD, AND LOGIN DATE
JRST [ MOVEI T1,CRJBX1 ;ILLEGAL REQUEST
JRST SCJXXX]
STCJ1E: LOAD T1,CJ%ACT,Q2 ;WHAT KIND OF ACCOUNT DO WE USE?
CAIE T1,.CJUCA ;USE CURRENT ACCOUNT OF CREATOR
CAIN T1,.CJUAA ;OR ARG BLOCK ACCOUNT?
JRST STCJ1C ;YES, IT'S IN THE COMMON STORAGE.
SETZM CRJACT ;USE DEFAULT
;FALL THRU
;CAN FALL IN
STCJ1C: MOVEI T1,0 ;BUILD FLAGS FOR LOGIN JSYS
TXNE Q2,CJ%NPW ;NO PASSWORD NEEDED?
TRO T1,1 ;RIGHT.
TXNE Q2,CJ%NUD ;NO UPDATE LOGIN DATE?
TRO T1,2 ;RIGHT. TELL LOGIN.
HRRM T1,CRJFLG ;STORE FOR IT TO SEE
MOVE T1,CRJUSR ;LET'S DO THE LOGIN NOW.
HRROI T2,CRJPSW ;PASSWORD, IF ANY.
MOVE T3,CRJACT ;AND ACCOUNT
LOGIN ;SEE IF THIS IS ALL VALID.
JRST SCJXXX ;APPARENTLY NOT.
TXNN Q2,CJ%CAP ;Test if CAP flag is on
JRST STCJ1A ;No, skip over the rest
MOVE T1,CRJOJC ;Get caller's caps back
AND T1,CAPMSK ;AND them with user's available caps
HLL T1,CAPMSK ;Copy cap allowed to LH of new jobs caps
MOVEM T1,CAPENB ;Save caps enabled
STCJ1A: MOVE T2,CRJCPU ;GET TIME LIMIT FOR THIS JOB
JUMPE T2,SCJBNL ;JUMP IF NO LIMIT
MOVE T1,[.FHJOB,,.TIMRT] ;SET TIME LIMIT FOR JOB
MOVEI T3,.ICMSE ;ON MACHINE-SIZE EXC CHANNEL, SO PANIC
TIMER ;DO IT
JRST SCJXXX ;GIVE BACK FAILURE
SCJBNL: MOVEI T1,.FHSLF ;SET UP TO DO SPJFN
MOVE T2,CRJPJF ;FROM THIS ARGUMENT
TXNE Q2,CJ%FIL ;IS THERE BOTH AN EXEC AND AN INFERIOR?
TXNN Q2,CJ%ETF ; ..
SKIPA ;NO. DO THE SPJFN HERE.
JRST STCJ1D ;YES. ONLY DO THE SPJFN ON THE INFERIOR
TXNE Q2,CJ%SPJ ;REQUESTED TO DO SPJFN?
SPJFN ;YES, DO IT.
ERJMP SCJXX4 ;FAILED. HANDLE IT
STCJ1D: HLLZS CRJFLG ;NO FLAGS FOR A LATER LOGIN
TXNN Q2,CJ%FIL ;WANT TO RUN A FILE?
JRST CJSTEX ;NO. JUST GO GET THE EXEC.
STCJB2: TXNE Q2,CJ%ETF ;WANT A FILE. AN EXEC TOO?
JRST STCJB3 ;YES.
SKIPE CRJEXF ;[7279] Are we passing flags to an EXEC?
CALL SCJPRA ;[7279] (/) Yes, set up a PRARG block
MOVX T1,GJ%OLD!GJ%SHT ;GET THE REQUESTED FILE IN TOP FORK
HRROI T2,CRJFIL ;POINT TO THE TEXT
GTJFN ;GET JFN FOR REQUESTED FILE
JRST SCJXXX ;CAN'T
HRLI T1,.FHSLF ;OK, GET IT INTO THIS FORK.
GET
ERJMP SCJXX4 ;IF GET FAILS, QUIT.
;NOTE: THIS CODE RUNS IN SECTION 0 FOR SOME UNKNOWN REASON. IN
;ORDER FOR THIS CALL TO BLTMU TO WORK CORRECTLY, THIS CODE TEMPORARILY
;ENTERS SECTION 1. IF STRCJB IS MADE TO RUN ENTIRELY IN SECTION 1, THESE
;MACROS SHOULD BE REMOVED.
TSTMS0 ;We had better be in section 1
MOVEI T1,20 ; Length of AC block
XMOVEI T2,CRJFAC ; From there
SETZ T3,
TXNE Q2,CJ%ACS ;AC SET REQUESTED?
CALL BLTMU
MOVEI T1,.FHSLF ;GET THE ENTRY VECTOR
XGVEC% ;[9109] Get the length and address of ent vec
IFXN. T2,777000 ;[9109] TOPS-10 style entry vector?
HRRZ T3,CRJEVO ;[9109] Old style, where does start point?
CAILE T3,1 ;[9109] Start or reenter?
JRST SCJXX3 ;[9109] No, fail
XCTU [HRRZ T2,120] ;[9109] Assume start, load JOBSA
TRNE T3,-1 ;[9109] Was it reenter?
XCTU [HRRZ T2,124] ;[9109] Yes, get JOBREN instead
ELSE. ;[9109] Otherwise its a TOPS-20 style
MOVE T2,CRJEVO ;[9109] New style, get offset into it and
ADD T2,T3 ;[9109] add in the base address form XGVEC
ENDIF. ;[9109] Desired address is now in T2
MOVEM T2,-1(P) ;WHERE MRETN WILL GO.
CALL SUCANS ;SETUP CRJANS WITH SUCCESS
CALL SCJWTA ;WAIT FOR ATTACH, IF WANTED
JRST MRETN ;AND GO TO USER MODE.
;Here to setup CRJANS and CRJFLG in an interlocked manner
SUCANS: SETO T1, ;SAY WE HAVE SUCCEEDED.
SETANS: NOSKED ;NO INTERRUPTS PLEASE
SKIPGE CRJFLG ;DO WE HAVE AN ANSWER ALREADY?
MOVEM T1,CRJANS ; NO, PUT THE RESPONSE IN CRJANS
MOVEI T1,1 ;INDICATE JOB HAS ALREADY SET CRJANS
HRLM T1,CRJFLG ; BY MAKING FLAG POSITIVE
OKSKED ;ENABLE INTERRUPTS
RET ;ALL DONE!
;HERE IF WANT BOTH A FILE AND AN EXEC.
STCJB3: MOVX T1,GJ%OLD!GJ%SHT ;GET A JFN FOR THE FILE.
HRROI T2,CRJFIL ;WITH SUPPLIED NAME
GTJFN
JRST SCJXXX ;CAN'T FIND THE FILE.
PUSH P,T1 ;SAVE JFN A MOMENT
MOVX T1,CR%CAP ;CREATE THE NEW FORK, MY CAPS.
TXNE Q2,CJ%ACS ;WANT SOME AC'S LOADED?
TXO T1,CR%ACS ;YES, HAVE CFORK LOAD THEM.
MOVEI T2,CRJFAC ;HERE ARE THE AC'S
CFORK ;MAKE ME A FORK! (YOU'RE A FORK)
JRST SCJXX2 ;CAN'T DO IT.
EXCH T1,0(P) ;GET BACK JFN, SAVE FHANDLE
HRL A,0(P) ;SET UP FOR THE GET
GET
ERJMP SCJXX2 ;CAN'T GET THE FILE
MOVE T1,0(P) ;HANDLE OF INFERIOR
MOVE T2,CRJPJF ;PRIMARY I/O FOR IT
TXNE Q2,CJ%SPJ ;IF REQUESTED,
SPJFN ;SET IT.
POP P,T1 ;INFERIOR FORK HANDLE.
HRLZS T1 ;FORK,,0
HRR T1,CRJEVO ;WHERE TO START IT.
CJSTEX: CALL SCJPRA ;SET UP PRARG FOR EXEC
CALL STEX ;GET EXEC
CALL SUCANS ;SETUP CRJANS WITH SUCCESS
CALL SCJWTA ;WAIT FOR ATTACH, IF REQUESTED
JRST GEX1 ;AND START THE EXEC.
;CALL THIS ROUTINE BEFORE GOING TO MRETN FROM CRJOB PATHS. IT WILL
;WAIT FOR JOB TO BECOME ATTACHED, IF THAT'S REQUESTED BY CALLER.
SCJWTA: TXNN Q2,CJ%WTA ;WANT TO WAIT?
RET ;NO.
MOVE T1,JOBNO ;YES. GET MY JOB NUMBER
MOVEI T1,JOBPT(T1) ;AND JOBPT SLOT FOR THIS JOB
CALL DISGE ;WAIT FOR LH TO BECOME POSITIVE
RET ;NOW ATTACHED. RETURN.
SCJXX3: MOVEI T1,SFRVX1 ;BAD ENTRY VECTOR OFFSET
JRST SCJXXX ;RETURN THAT ERROR
SCJXX2: POP P,0(P) ;ADJUST STACK POINTER
SCJXX4: HRRZ T1,LSTERR ;AND RETURN THIS FORK'S LAST ERROR
JRST SCJXXX ; TO CREATOR
SCJXX1: MOVEI T1,CRJBX5 ;UNKNOWN NAME FOR LOGIN
SCJXXX: ANDI T1,-1 ;REDUCE TO JUST ERROR CODE
CALL SETANS ;GO SETUP CRJANS
JRST LOGO ;AND KILL OFF THIS STARTED JOB.
;ROUTINE TO SET UP PRARG FOR EXEC TO READ IN NEW JOB
NCJPRA==3 ;NUMBER OF ARGUMENT ITEMS
LCJPRA==6 ;LENGTH OF BLOCK TO SET
SCJPRA: TRVAR <<SCJPRB,10>> ;SPACE TO BUILD PRARG BLOCK
PUSH P,T1 ;PRESERVE FORKX,,SFRKV OFFSET
MOVEI T1,NCJPRA ;NUMBER OF ARGUMENTS
MOVEM T1,SCJPRB ;INTO THE BLOCK
MOVEI T1,SCJPRB ;POINT TO BLOCK WITH PUSH POINTER
PUSH T1,[1B0+3B6+2B12+CR%PRA] ;I AM A CRJOB PRARG
PUSH T1,[1B0+4] ;WORD 4 IS ANOTHER DATUM
PUSH T1,[1B0+5] ;WORD 5 IS ANOTHER DATUM
MOVE T2,CRJEXF ;FLAGS FOR EXEC IS ONE DATUM
TXNE Q2,CJ%FIL ;IF THERE IS A PROGRAM
TXO T2,1B1 ;TURN ON "THERE'S A FORK" BIT
PUSH T1,T2 ;FLAGS TO ARG BLOCK
POP P,T2 ;RESTORE FORKX,, ENT-VEC-OFFSET
TXNE Q2,CJ%FIL ;IF THERE IS A PROGRAM
PUSH T1,T2 ;PUT IT IN BLOCK
MOVE T1,[.PRAST,,.FHSLF] ; SET MY OWN PRARG BLOCK
MOVEI T2,SCJPRB ;HERE'S THE BLOCK TO SET
MOVEI T3,LCJPRA ;HERE'S ITS LENGTH
PRARG ;SET IT
ERJMP SCJXX4 ;CATCH TRAP IF FAILED
RET ;SUCCESS.
SUBTTL Job and System Initialization -- Read MONNAM.TXT (GETNAM)
;GETNAM -- Subroutine to construct version and system name from text in the
; file SYSTEM:MONNAM.TXT, or if the file does not exist, to use the default
; text assembled into the monitor in the block labelled TSVN. The format of
; the resulting text is:
; <text>, TOPS-20 Monitor m.v(e)
; The <text> comes either from the file or from the preassembled string. The
; last several characters identify the monitor version and always come from the
; preassembled string; the entire string may be up to 132(10) characters long,
; so <text> may be 122(10), or 172(8) characters long. The <text> in the file
; should be terminated by a CRLF pair.
SWAPCD
GETNAM: STKVAR <A1> ;RESERVE SPACE FOR ONE TEMP
MOVE T1,[POINT 7,SVN] ;BYTE POINTER TO DESTINATION
MOVEM T1,A1 ;SAVE UPDATED PTR. TO DEST. STRING
MOVX T1,GJ%SHT!GJ%OLD ;FLAG FOR SHORT GTJFN CALL AND OLD FILE ONLY
HRROI T2,[ASCIZ /SYSTEM:MONNAM.TXT/] ;IMPLICIT STRING PTR TO FILE NAME
GTJFN ;IS THERE A FILE?
JRST GETNA1 ;NO FILE - DOESN'T MATTER WHY
MOVX T2,<OF%RD+FLD(7,OF%BSZ)> ;FILE EXISTS, SET UP OPENF CALL
OPENF ; ..
JRST GETNA1 ;UNSUCCESFUL FOR ANY REASON, USE
; DEFAULT STRING
MOVEI T3,<NSVNT-VTSVNT>*5-1 ;MAX. # OF BYTES WE CAN MOVE
MOVE T4,A1 ;RECALL BYTE PTR TO BUFFER
GETNA2: BIN ;GET NEXT CHARACTER FROM FILE
CAIE T2,.CHCRT ;IS IT A CARRIAGE RETURN?
CAIN T2,.CHLFD ;NO, IS IT A LINE FEED?
JRST GETNA3 ;A CR OR A LF WAS ENCOUNTERED
JUMPE T2,GETNA3 ;JUMP ALSO IF IT'S A NULL
IDPB T2,T4 ;IT'S A GOOD CHARACTER, PUT INTO BUFFER
SOJG T3,GETNA2 ;JUMP IF WE HAVN'T EXHAUSTED ALL BUT
; ONE BYTE POSITION IN BUFFER.
;MANUAL MERGE OF 1B CHANGES
GETNA3: CLOSF ;YES, CLOSE FILE, RELEASE JFN
JFCL ;IGNORE FAILURE
MOVE T1,T4 ;GET STRING POINTER AGAIN
HRROI T2,VTSVN ;IMPLICIT STRING POINTER TO VERSION
SETZ T3, ;STOP ON A NULL
SOUT ;MOVE PREASSEMBLED VERSION TO BUFFER
RET ;EXIT
GETNA1: HRROI T1,SVN ;IMPLICIT BYTE POINTER OF DESTINATION
HRROI T2,TSVN ;IMPLICIT BYTE POINTER TO PREASSEMBLED
; MONITOR NAME
GETNA5: SETZ T3, ;SPECIFY TERMINATION ON A NULL
SOUT ;MOVE PREASSEMBLED STRING TO BUFFER
; THE MOVE INCLUDED A TERMINATING NULL
RET ; SO -- WE'RE DONE
SUBTTL Job 0 Forks -- Initialization (RUNDD)
;SYSTEM INITIALIZATION. RUN ONCE ONLY BY JOB 0.
SWAPCD
RUNDD:: MOVE T1,SPJCAP ;GET SPECIAL JOB CAPS
MOVEM T1,CAPENB ;ENABLE ALL CAPABILITIES FOR INITIALIZATION
MOVEM T1,CAPMSK ;HERE TOO
MOVEI T1,RUNDD3 ;GO TO RUNDD3 IF AN INTERRUPT OCCURS
MOVEM T1,JB0XFR ;SAVE THE ADDRESS FOR JB0INT
MOVE T1,[MSEC1,,JB0INT] ;XFR TO JB0INT ON ERROR
CALL MONBKX
MOVX T1,SF%BGS ;Make all messages type on CTY
IORM T1,FACTSW
MOVE T1,CTYLNO ;GET CTY LINE NUMBER
MOVEI T1,.TTDES(T1) ;CONVERT TO 400000+N
MOVEM T1,JB0TT ;CONTROLLING TERMINAL FOR JOB 0
HRRM T1,PRIMRY ;AND PRIMARY OUTPUT FOR US
CALL ASCINI ;Initialize accounting shift change stuff
CALL RESLCI ;[7.1050]()Init resident free space
CALL SERINI ;START SYSERR LOGGING
SKIPN PROFLG ;WANT PRIMARY PROTOCOL?
JRST RUNDI7 ;NO. SKIP ALL PRIMARY STUFF
MOVEI A,.PRIOU ;YES. FIRST WAIT FOR CTY TO STOP
DOBE ;"
CALL TTSPIN ;INITIALIZE TERMINAL SPEEDS TO NULL
CALL PROINI ;TURN ON PRIMARY PROTOCOL
CALL DTRMDS ;TELL -11 NOT TO ANSWER DATA SETS
;TRY TO GET TIME AND DATE FROM THE 11. DTE SERVICE SENDS THE REQUEST TO
;THE 11 AND STORES ITS ANSWER IN TAD11. IF THE 11 DOES NOT KNOW, IT
;RETURNS -1. IN THIS CASE, ASK THE OPERATOR FOR THE TIME. IF THE 11 HAS
;IT, DON'T ASK THE OPERATOR
SKIPE SMFLAG ;IF SM10 THEN WE ALREADY HAVE TIME AND DATE CORRECT
JRST RUNDD3
SETZM TAD11 ;ZERO TIME CELL
CALL RQTAD1 ;REQUEST TIME/DATE FROM 11
JFCL ;THIS FAILURE CAN'T OCCUR
SKIPN TAD11 ;HAS 11 SENT TIME/DATE YET?
JRST .-1 ;NO. WAIT UNTIL IT DOES
MOVE B,TAD11 ;GET TIME SENT FROM -11
SETOM TAD11 ;YES. RESET TO INDICATE NOT SET BY 11
CAMN B,[-1] ;DOES THE -11 HAVE IT?
JRST RUNDI7 ;NO
DMOVE C,TAD11+1 ;YES. GET REST OF IDCNV ARGS
IDCNV ;CONVERT TO INTERNAL
JRST RUNDI7 ;FAILED. GET FROM OPERATOR THEN
MOVEM B,CRSTAD ;LET IT FIND IT LATER
;..
;RUNDD...
;SET SYSTEM TIME AND DATE IF THE 11 PROVIDED IT
;..
RUNDI7: MOVEI 1,101
DOBE
SKIPE 1,CRSTAD ;DO WE HAVE A SAVED TIME FROM CRASH?
JRST RUNDD3 ;Yes, wait to set time till after cluster join
MOVX A,SF%MST ;NO. SAY IS A MANUAL START
IORM A,FACTSW ;""
;Initialize checkpoint interval
RUNDD3: MOVEI T1,RUNDI4 ;GO TO RUNDI4 IF AN INTERRUPT OCCURS
MOVEM T1,JB0XFR ;SAVE THE ADDRESS FOR JB0INT
MOVE T1,[^D<10*60000>] ;SET DEFALUT CHECKPOINT INTERVAL
MOVEM T1,CKPINV ;...
;RUNDD...
;Get SCA going, read the CI20 ucode into resident memory, start up IPALOD to
;do the DIAG JSYS that actually loads and starts the port.
IFN FTKLIPA,<
CALL PPDINX ;CRANK UP PORT/SCA/SYSAPS
CALL KLPUCD ;GET PORT UCODE INTO MEMORY
IFNSK.
CAIE T1,GJFX18 ;FAILED, WAS IT NO FILE
CAIN T1,KLPX7 ; OR NO KLIPA?
SKIPA ;YES, THAT'S OK FOR NOW
BUG.(CHK,KLIPAF,MEXEC,SOFT,<Failed to read in CI20 microcode>,<<T1,ERRCOD>>,<
Cause: At system startup we tried to read in the CI20 ucode. Routine KLPUCD
in module PHYKLP got a JSYS error while attempting the read.
Action: This BUG will only appear if the system has a KLIPA and if the GTJFN%
attempt on the file succeeded. So, the I/O on the file failed (OPENF%,
RIN%, SFPTR%, SIN%, CLOSF%) or the monitor was unable to obtain
enough free space to hold the microcode. First, insure that the file
is not corrupted. If, after this is done, this BUG still persists,
make it dumpable and submit an SPR with the dump and a copy of
MONITR.EXE. If possible, include any known method for reproducing
the problem and/or the state of the system at the time the BUG was
observed.
Data: ERRCOD - Error code returned
>,,<DB%NND>) ;[7.1210]
ENDIF.
MOVX T1,1B1 ;Make a fork to prevent hanging
CFORK ;""
IFSKP. ;If it made it...
DO.
MOVE T2,[MSEC1,,CIRUN] ;Where it is to run
MSFRK ;Do it
ERJMP ENDLP. ;If failed, go on
MOVEM T1,CIFORK ;Save fork handle for later
ENDDO.
ENDIF. ;Now we can't get hung by SCA buffer deferral
> ;IFN <FTKLPA>
CALL IPACHK ;Check on the KLIPA
IFNSK. ;If +1, we did reload the KLIPA
MOVEI T1,^D2000 ;Wait here for the driver to see it
DISMS ;""
ENDIF.
; IFN CFSCOD,<
AOS CFSSKC ;Check on CI utility now
; >
;RUNDD...
;Startup fork for cluster ENQ/DEQ replies and fork fork ENQ/DEQ rescheds
IFN CLEQIN,< ;[7.1072] If cluster ENQ code present
MOVX T1,CR%CAP ;[7.1072] Pass capabilities down
CFORK ;[7.1072] Create fork to be ENQ reply fork
RUNDEQ: BUG.(HLT,NOEQFK,MEXEC,SOFT,<Creation or starting of ENQ fork failed>,,<
Cause: A CFORK and MSFRK was done to create and start a fork for one of
the ENQ forks. For some reason, this has failed.
>) ;[7.1072]
MOVE T2,[XCDSEC,,EQARUN];[7.1072] Start inferior ...
MSFRK ;[7.1072] ... in monitor mode
ERJMP RUNDEQ ;[7.1072] An error occurred!
MOVX T1,CR%CAP ;[7.1072] Pass capabilities down
CFORK ;[7.1072] Create fork to be ENQ resched fork
ERJMP RUNDEQ ;[7.1072] Some kind of error
MOVE T2,[XCDSEC,,EQRRUN];[7.1072] Start inferior ...
MSFRK ;[7.1072] ... in monitor mode
ERJMP RUNDEQ ;[7.1072] An error occurred!
> ;[7.1072]
;RUNDD...
;RUN SETSPD TO SET LINE SPEEDS, SYSTEM LOGICAL NAMES, OTHER SYSTEM
;PARAMETERS
MOVX T1,GJ%OLD!GJ%SHT!GJ%PHY ;YES. SET LINE SPEEDS
HRROI T2,SETSPD ;GET POINTER TO "SYSTEM:X-SETSPD.EXE"
MOVEI T3,1 ;[7316] 3/Offset 1 in entry vector
SETZM T4 ;DO NOT RECORD FORK NUMBER
CALL RUNDII ;GO RUN IT
JRST [ TMSG <
%%No SETSPD.
>
MOVEI T1,.PRIOU ;WAIT UNTIL THE TERMINAL
DOBE ; STOPS SO THE NEXT MESSAGE IS OK
JRST .+1] ;SAY IT FAILED
CALL GETNAM ;DO AGAIN,SINCE SYSTEM: MAY BE REDEFINED
; IFN CFSCOD,< ;If CFS...
CALL FILRST ;reset all file accesses now
CALL CFSJYN ;Join the network now
CALL CFGTJB ;Initialize CFS Global Job numbers
CALL MNTPS ;And mount PS: correctly
; > ;IFN CFSCOD
XCALL (XCDSEC,CLUJYN) ;[8964](/) Now check CLUDGR connections
;IF DBUGSW IS 0 OR 1, TELL ALL USERS THAT SYSTEM IS RESTARTING
RUNDD6: MOVE 1,DBUGSW
SOJG T1,RUNDI4 ;If .GE. 2, don't send notification
SETO 1,
HRROI 2,[ASCIZ /
System restarting, wait.../]
TTMSG
ERJMP .+1
;..
;RUNDD...
;GET DATE AND TIME FROM OPERATOR UNLESS 11 SENT IT EARLIER
;..
RUNDI4: MOVEI T1,RUNDI1 ;GO TO RUNDI1 IF AN INTERRUPT OCCURS
MOVEM T1,JB0XFR ;SAVE THE ADDRESS FOR JB0INT
; IFN CFSCOD,< ;Only if doing CFS code
SKIPN CRSTAD ;[7.1266] Someone hit ENABLE DISK?
SETZM BOOTFL ;[7.1266] Yes, ask the questions
CALL CFTADC ;See if CFS has a better time
IFNSK. ;CFS does not have the time yet
SKIPN T1,CRSTAD ;Did the -11 ever have it?
ANSKP. ;Yes, get most recent time from the -11
SETZM CRSTAD ;Clear unneeded cell
SETZM TAD11 ;Zero time cell
CALL RQTAD1 ;Request time/date from 11
JFCL ;This failure can't occur
SKIPN TAD11 ;Has 11 sent time/date yet?
JRST .-1 ;No. Wait until it does
MOVE T2,TAD11 ;Get time sent from -11
SETOM TAD11 ;Reset to indicate not set by 11
SETZ T1, ;Assume -11 does not have the time
CAMN B,[-1] ;Does the -11 HAVE IT?
IFSKP. ;Yes, process it
DMOVE T3,TAD11+1 ;Get rest of IDCNV args
IDCNV ;Convert to internal
SETZ T2, ;Failed
MOVE T1,T2 ;Repositon for check
ENDIF.
ENDIF.
SKIPN T1 ;Did we get the time from anyone?
IFSKP. ;If so
STAD ;Set it
ANSKP. ;And if it got set
HRROI T1,[ASCIZ /
Date and time is: /]
PSOUT ;Tell the operator
MOVEI T1,.PRIOU
SETOM T2 ;Use time we just set
MOVX 3,1B1+1B2+1B4+1B5+1B10+1B11+1B17
ODTIM ;TYPE IT IN VERBOSE FORMAT
HRROI T1,CRLF ;[7.1119] Point to crlf
PSOUT ;Make it pretty
CALL DTTIME ;If a KL, tell the FE
JRST RUNDI1 ;And go on
ENDIF.
; > ;IFN CFSCOD
;RUNDD...
CALL LGTAD ;DOES SYSTEM HAVE TIME AND DATE?
CAME A,[-1]
JRST RUNDI1 ;YES
MOVE T1,DBUGSW ;Get mode of system
CAIE T1,3 ;Defaulting time/date?
JRST RUNDI3 ;No. Ask then
MOVE T1,SYSTAD ;Get monitor creation time
STAD ;Set system time with it
NOP
JRST RUNDI1 ;And go on
RUNDI3: TMSG <
Enter current date and time: >
RUNDI2: CALL RDDGTD ;GET TAD INTO 2
PUSH P,2 ;SAVE TAD JUST ENTERED
TMSG <
You have entered >
MOVEI 1,.PRIOU
MOVE 2,0(P)
MOVX 3,1B1+1B2+1B4+1B5+1B10+1B11+1B17
ODTIM ;TYPE IT IN VERBOSE FORMAT
MOVE 2,0(P)
CAMGE 2,SYSTAD ;IS IT GREATER THAN SYSTEM LOAD TAD?
JRST [ MOVEI 1,.PRIIN ;CLEAR TYPE AHEAD
CFIBF
MOVEI 1,.PRIOU
DOBE ;WAIT FOR TYPE OUT TO STOP
TMSG <,
that cannot be correct.
Please try again in form MMM-DD-YY HHMM >
JRST RUNDI2]
TMSG <,
is this correct (Y,N) >
CALL YESNO ;GET VERIFICATION
JUMPE A,RUNDI3 ;IF 'NO', TRY AGAIN
POP P,1 ;CONFIRMED, RECOVER IT
STAD ;SET IT
JFCL
; IFN CFSCOD,<
CALL BRDTIM ;If CFS stuff around, reconcile any differences
; >
; ..
;RUNDD...
;DECIDE WHETHER TO RUN CHECKD OR NOT. IF CHKBT FOUND ERRORS, FACTSW HAS
;SF%BTE SET; RUN CHECKDTO DO A BIT TABLE CONSISTENCY CHECK. IF BIT
;TABLE FILE DOESN'T EXIST, MS%ASG IS SET IN SDB. DON'T RUN CHECKD.
;(OPERATOR WILL HAVE TO RUN IT WITH THE REBUILD FUNCTION). IF DOING
;RECONSTRUCTION OF ROOT-DIRECTORY OR REBUILD OF BIT TABLE, STARTF HAS
;MI%BTB SET; RUN CHECKD TO DO A REBUILD OF THE BIT TABLE. IF DOING
;A REFRESH OF THE FILE SYSTEM, DON'T TRY TO RUN CHECKD. IF NONE OF
;THE ABOVE, ASK THE OPERATOR UNLESS AUTO RELOADING. IN ALL CASES,
;ONLY PS IS MOUNTED AT THIS POINT, SO CHECKD IS ONLY RUN ON PS.
;..
RUNDI1: MOVEI T1,RUNDD1 ;GO TO RUNDD1 IF AN INTERRUPT OCCURS
MOVEM T1,JB0XFR ;SAVE THE ADDRESS FOR JB0INT
CALL LOGSST ;LOG RESTART IN SYSERR FILE
SKIPN AVALON ;RUNNING ACCOUNT VALIDATION?
JRST RUNDI5 ;NO, PROCEED
CALL ENACT ;[7.1010](/T1)INITIALIZE THINGS FOR ACCT VALIDATION
IFNSK. ;[7.1010]IF AN ERROR OCCURRED...
HRRZ T2,T1 ;[7.1010]SAVE THE ERROR CODE
TMSG <Problem with <SYSTEM>ACCOUNTS-TABLE.BIN
> ;[7.1010]TELL THE USER THE FILE NAME
MOVEI T1,.PRIOU ;[7.1010]TO THE CTY
HRLI T2,.FHSLF ;[7.1010]THIS PROCESS
SETZ T3, ;[7.1010]ENTIRE STRING
ERSTR% ;[7.1010]PRINT THE ERROR STRING
ERJMP .+2 ;[7.1010]IGNORE ERRORS
ERJMP .+1 ;[7.1010]...
TMSG < - Account validation is disabled
> ;[7.1010]
SETZM AVALON ;[7.1010]TURN OFF VALIDATION
ENDIF. ;[7.1010]
;RUNDD...
RUNDI5: MOVX T4,MI%BTB ;IF REBUILDING THE BIT TABLE (BIT IS
TDNE T4,STARTF ; SET BY FILINI)
JRST RUNDC2 ;ALWAYS RUN CHECKD IN REBUILD MODE
MOVE 2,DBUGSW ;IF DEBUGGING,
CAIL T2,2 ;If debugging...
JRST RUNDD2 ;DON'T RUN CHECKD
MOVX T4,MI%RFS ;IF REFRESHING (BIT IS SET
TDNE T4,STARTF ; BY FSIINI)
JRST RUNDD2 ;DON'T RUN CHECKD (IT ISN'T THERE)
MOVE T2,STRTAB+PSNUM ;POINT TO SDB FOR PS
MOVE T2,SDBSTS(T2) ;GET STATUS BITS FOR PS
MOVE T1,FACTSW
TXNE T1,SF%BTE ;BIT TABLE ERRORS?
TXNE T2,MS%ASG ;YES. ARE DISK ASSIGNMENTS PROHIBITED?
SKIPA ;YES. DON'T RUN CHECKD
JRST RUNDC1 ;BIT TABLE ERRORS BUT BT FILE EXISTS. RUN CHECKD
TXNN A,SF%MST ;MANUAL STARTUP?
JRST RUNDD2 ;NO. NO QUESTIONS AND NO CHECKD
;..
;RUNDD...
;CHECKD NOT REQUIRED. SEE IF OPERATOR WANTS IT
;..
CALL RUNCKD ;[7.1003] (/) Do we run CHECKD?
JRST RUNDD2 ;[7.1003] No
RUNDC1: SKIPA T1,[-1,,[ASCIZ/[Checking file consistency]
/]]
RUNDC2: HRROI T1,[ASCIZ/[Rebuilding bit table]
/]
PSOUT
MOVSI 1,(GJ%OLD!GJ%PHY!GJ%SHT)
HRROI 2,[ASCIZ /SYSTEM:CHECKD.EXE/]
MOVX T3,SF%CDR ;SAY CHECKD NOW RUNNING
IORM T3,FACTSW ;DO IT
SETZ T3, ;NORMAL ENTRY POINT
MOVX T4,MI%BTB
TDNE T4,STARTF ;REBUILDING BIT TABLE?
MOVEI T3,3 ;YES. START AT SPECIAL ENTRY POINT
SETZM T4 ;DO NOT RECORD FORK NUMBER
CALL RUNDII ;GO START IT
JRST [ MOVX T1,SF%CDR ;NOT RUNNING
ANDCAM T1,FACTSW
JRST RUNDD1] ;FAILED
SETZM STARTF ;INDICATE STARTUP IS COMPLETE
IFN SKEDSW,<
SETZM NNSBE ;RESTART COUNTING NOSKED P-FAULTS
> ;END IFN SKEDSW
MOVX T1,SF%CDR ;SAY CHECKD NOT RUNNING ANYMORE
ANDCAM T1,FACTSW ;""
JRST RUNDD2 ;PROCEED
;FAILED TO FIND CHECKD WHEN RUNNING IT WAS REQUIRED BY THE SYSTEM
;OR REQUESTED BY THE OPERATOR. PRETEND THAT IT RAN AND FOUND
;ERRORS. IF IT IS RUN LATER AND FINDS PS TO BE OK, IT WILL CLEAR
;SF%CDE.
;IT ALSO CAUSES THE 'FILE STRUCTURE NEEDS REPAIR' MESSAGE BELOW
;AND PREVENTS SYSJOB FROM DOING ITS USUAL THING
RUNDD1: MOVEI T1,RUNDD2 ;GO TO RUNDD2 IF AN INTERRUPT OCCURS
MOVEM T1,JB0XFR ;SAVE THE ADDRESS FOR JB0INT
TMSG <
No CHECKD
>
SETZM STARTF ;INDICATE STARTUP COMPLETED
IFN SKEDSW,<
SETZM NNSBE ;RESTART COUNTING NOSKED P-FAULTS
> ;END IFN SKEDSW
MOVX T4,SF%CDE ;PRETEND CHECKD FOUND ERRORS
IORM T4,FACTSW
;..
;RUNDD...
;IF DEBUGGING, TELL ALL USERS. IF CHECKD FOUND ERRORS, TELL ALL USERS
;THEN PROCEED AS USUAL
;..
RUNDD2: CALL SRVCFS ;NOTIFY MSCP SERVER THAT INIT IS COMPLETE
SETZM LGSIDX ;[7.1112]Initialize LGSIDX
SKIPE LGSFLG ;[7.1112]Login Structure enabled?
CALL FNDLGS ;[7.1112]()Yes. Try to mount one
SETONE SF%DPR,FACTSW ;Now enable disk preallocation
MOVEI 1,RUNDD7 ;GO TO RUNDD7 IF AN INTERRUPT OCCURS
MOVEM T1,JB0XFR ;SAVE THE ADDRESS FOR JB0INT
MOVEI 1,101
DOBE ;WAIT FOR ANY CHECKD OUTPUT
MOVE 1,DBUGSW
CAIL 1,2 ;DEBUG MODE OPERATION?
JRST [ SETO 1, ;YES, DIFFERENT MESSAGE
HRROI 2,[ASCIZ /
[System is stand-alone]
/]
TTMSG
ERNOP. ;IN CASE OF REFUSALS
JRST RUNDE1]
MOVX 1,SF%CDE
TDNE 1,FACTSW ;DID CHECKD FIND DISK ERRORS?
JRST [ HRROI 2,[ASCIZ /
[System not in operation - file structure needs repair]
/]
SETO 1,
TTMSG
ERNOP. ;IN CASE OF REFUSALS
JRST RUNDE1]
;RUNDD...
;Create a fork to be the old "job 0" fork -- the one that runs at CHKR.
;Continue the current fork at DDMP.
RUNDE1: MOVX T1,1B1 ;Create a fork
CFORK ;Do it
RUNDDX: BUG.(HLT,DDXFRK,MEXEC,SOFT,<Cannot create CHKR fork>,<<T1,ERRCOD>>,<
Cause: CFORK% failed to create the old "Job 0" fork that runs CHKR or the
fork could not be be started in monitor mode with the MSFRK% JSYS.
Data: ERRCOD - Error code returned from JSYS
>)
XMOVEI T2,RUNDEC ;Where to proceed
MSFRK ;Continue things below
ERJMP RUNDDX
;Continue the current fork at DDMP0.
MOVE T1,[MSEC1,,DDMPER] ;GO TO DDMPER ON ERRORS
CALL MONBKX
TMSG <
Running DDMP
>
MOVE T1,FORKX ;GET FORK NUMBER
MOVEM T1,DDMFRK ;RECORD IT
JRST DDMP0 ;DO DDMP HERE
SUBTTL Job 0 Forks -- Page Movement to Disk (DDMP)
DDMP0: TSTMS0 ;BE SURE NO SECTION 0
SETZM P1 ;Not doing CFS-forced DDMP
DDMP00: MOVE T1,TODCLK ;GET THE CURRENT TIME
ADD T1,DDPPER ;CALCULATE NEXT ALARM TIME
MOVEM T1,DDPTIM ;AND SAVE IT FOR THE SCHED TO CHECK
SETZM DDPDUE ;RESET THE OVERDUE COUNTER
MOVE T1,DRMFRE ;DRUM SPACE LOW?
CAML T1,DRMIN0 ;[9113] Is the swapping space low?
JRST DDMPA ;[9113] Nope, don't say anything
MOVEI T1,.PRIOU ;[9113] Point to the console terminal
CALL BCRLF ;[9113] (T1/T1) Output a crlf first
CALL BSTAMP ;[9113] Output crlf and time of day
TMSG < DDMP: Swapping space low action
> ;[9113] Output message to the console
DDMPA: IFE. P1 ;Check which flavor we are doing
CALL DDMP ;DO THE WORK
NOP
ELSE.
CALL DDMPF ;DO force out
AOS DDCFSF
ENDIF.
IFE. P1 ;If this was a regular run
MOVX A,^D60000 ;SET TIME FOR NEXT CYCLE AS 1 MINUTE
ADD A,TODCLK ;When to do it again
MOVEM A,DDTIME
ENDIF.
SETZM P1
SKIPN DDCFSF ;[9113] Need another force?
IFSKP. ;[9113] Yes
MOVEI T1,^D50 ;Wait a short while
DISMS ;""
ELSE.
MOVEI A,DDPWAT ;The test
HDISMS ;Wait a bit
ENDIF.
EXCH P1,DDCFSF ;Zero the word, get new value for flag
JRST DDMP00 ;And do it again
;Here when DDMP fork gets an error
DDMPER: BUG.(CHK,DDMINT,MEXEC,SOFT,<Unexpected interrupt in DDMP process>,<<ITFPC,ITFPC>,<LSTERR,LSTERR>>,<
Cause: An unexpected error has occurred in the process which handles
migration of pages to disk. The error handler attempts
to reinitialize the context and resume processing. The
stack may be examined for an indication of where the error
occurred.
Action: If this BUG persists, make it dumpable and submit an SPR with the
dump and a copy of MONITR.EXE. If possible, include any known
method for reproducing the problem and/or the state of the system
at the time the BUG was observed.
Data: ITFPC - PC when error occurred.
LSTERR - Last error code in fork.
>)
SETZM NSKED ;BE OKSKED
SETZM CRSKED ;BE NOT 'CRITICAL SECTION'
MOVX CX,USRCTX
MOVEM CX,FFL
MCENTR ;RESET STACK, REINIT CONTEXT
MOVE T1,FORKX ;T1/ FORK NUMBER
SETZM T2 ;T2/ ALL INTERRUPT LEVELS
CALL JSBSTF ;CLEAN THE JSB STACK
JRST DDMP0 ;RESUME
SUBTTL Job 0 Forks -- KLIPA Checking (IPACHK)
;Routine to see if a KLIPA load/dump is needed.
;Returns:
; +1 did something
; +2 didn't
IPACHK: CALL CHKKLP ;(/T2) Ask the port driver
RETSKP ;NOTHING NEEDED
MOVX T1,GJ%SHT!GJ%OLD ;EXISTING FILE
MOVEI T3,3 ;SPECIAL ENTRY FOR MONITOR STARTUP
SKIPE T2 ;LOADING?
IFSKP.
;We will try to load the port's u-code
HRROI T2,[ASCIZ /BS:<SYSTEM>IPALOD.EXE/] ;[7.1112]The file
XMOVEI T4,CILFRK ;PLACE TO PUT FORK NUMBER OF IPALOD
CALL RUNDII ;Do it
SKIPA ;Failed
RET ;Did it. Say so.
BUG.(CHK,NOLODF,MEXEC,SOFT,<Could not find CI-20 microcode load program>,,<
Cause: The KLIPA (IPA20) RAM needs to be reloaded. The program
BS:<SYSTEM>IPALOD.EXE is supposed to be run to do this. However,
the program does not exist. TOPS-20 is now ignoring the CI20.
Action: If you wish to use the CI20, you must install the load progam, which
also contains the CI20 microcode, as BS:<SYSTEM>IPALOD.EXE and reload
the system.
>,,<DB%NND>) ;[7.1210][7.1112]
CALL KLPNLF ;DECLARE THE KLIPA DEAD
RET
ENDIF.
;We will try to dump the port's u-code
HRROI T2,[ASCIZ /BS:<SYSTEM>IPADMP.EXE/] ;[7.1112]The file
XMOVEI T4,CIDFRK ;PLACE TO PUT FORK NUMBER OF IPADMP
CALL RUNDII ;Do it
SKIPA ;Failed
RET ;Did it. Say so.
BUG.(CHK,NODMPF,MEXEC,SOFT,<Could not find CI-20 microcode dump program>,,<
Cause: The KLIPA (IPA20) RAM needs to be dumped. The file
BS:<SYSTEM>IPADMP.EXE is supposed to be run to do this. However,
the file does not exist.
Action: Currently, TOPS-20 does not support dumping of the CI20 via the
IPADMP.EXE program. Presently, nothing in TOPS-20 should be
attempting to dump the KLIPA and this BUG should never appear.
>,,<DB%NND>) ;[7.1210][7.1112]
CALL KLPNDF ;RELOAD AND START THE PORT
RET
SUBTTL Job 0 Forks -- CI Buffer Checks (CIRUN)
;This is CIFORK. It is started during system startup, immediately after
;the CI20 is started. This fork must be started before CHKR becuase it
;performs functions which are needed before CHECKD had completed.
CIRUN: MOVX T1,USRCTX ;Start with user context set
MOVEM T1,FFL ;. . .
MCENTR ;Start a new process
CILOOP: MOVEI T1,CIWAIT ;The wait test
MDISMS ;Wait up
TMNE CIBUF ;NEED TO CREATE BUFFERS?
CALL SC.MAL ;[7.1037]YES, Do buffer checking now
TMNE CIREP ;NEED TO REAP CONNECT BLOCKS?
CALL SC.RAP ;YES
JRST CILOOP ;And do it agaain
SUBTTL Job 0 Forks -- CHKR Initialization
;System initialization fork resumes here
RUNDEC: MOVX T1,USRCTX ;Start with user context set
MOVEM T1,FFL
MCENTR ;Start a new process
MOVE T1,FORKX ;GET FORK NUMBER
MOVEM T1,JB0FRK ;RECORD IT
MOVE T1,[MSEC1,,JB0INT] ;Where to go on error
CALL MONBKX
MOVE 1,JB0TT ;JOB 0 TTY
CAIE 1,377777 ;REAL TTY?
JRST RUNDD4 ;YES
;INITIALIZE SYSERR LOGGING
MOVEI 1,ERRPT ;GET NAME OF SYSTEM ERROR FILE
CALL PUTNAM ;ADD STRUCTURE NAME
MOVSI 1,(GJ%FOU!GJ%PHY!GJ%SHT) ;NONE, SO OPEN FILE FOR MESSAGES
HRROI 2,ERRPT ;GET NAME OF SYSTEM ERROR FILE
GTJFN
BUG.(CHK,NOSERF,MEXEC,HARD,<Cannot GTJFN error report file>,<<T1,ERRCOD>>,<
Cause: The CHKR fork failed to get a JFN for the ERROR.REPORT file.
Action: Based upon the error code returned from GTJFN%, attempt to diagnose
the problem. If all appears to be in order and the BUG still
persists, make it dumpable and submit an SPR with the dump and a
copy of MONITR.EXE. If possible, include any known method for
reproducing the problem and/or the state of the system at the time
the BUG was observed.
Data: ERRCOD - GTJFN error code
>,,<DB%NND>) ;[7.1210]
MOVE 2,[44B5+1B20]
OPENF
BUG.(CHK,SERFOF,MEXEC,HARD,<Cannot OPENF error report file>,<<T1,ERRCOD>>,<
Cause: The CHKR fork could not open the ERROR.REPORT file.
Action: Based upon the error code returned from OPENF%, attempt to diagnose
the problem. If all appears to be in order and the BUG still
persists, make it dumpable and submit an SPR with the dump and a
copy of MONITR.EXE. If possible, include any known method for
reproducing the problem and/or the state of the system at the time
the BUG was observed.
Data: ERRCOD - OPENF error code
>,,<DB%NND>) ;[7.1210]
RUNDD4: HRRM 1,PRIMRY ;USE IT FOR OUTPUT
;START ACCOUNTING
CALL USGINI ;START ACCOUNTING
;..
;RUN SETSPD AGAIN. THIS TIME, START IT AT A SPECIAL PLACE TO MAKE
;IT COPY THE DUMP FILE.
;..
MOVX T1,SF%CDE ;DON'T CREATE DUMP.CPY IF THE BIT
TDNE T1,FACTSW ; TABLE IS BAD
JRST RUNDD7 ;CHECKD FOUND ERRORS IN THE BT
MOVX T1,GJ%OLD!GJ%PHY!GJ%SHT
HRROI T2,SETSPD ;GET POINTER TO "SYSTEM:X-SETSPD.EXE"
MOVEI T3,3 ;3/ OFFSET 3 IN ENTRY VECTOR
SETZM T4 ;DO NOT RECORD FORK NUMBER
CALL RUNDII ;GO RUN IT
JFCL ;IGNORE FAILURE
SKIPL SPRCNT ;IF SPRCNT<0 THEN SETSPD DID NOT RE-INIT IT
IFSKP. ;SO.. TELL WORLD
TMSG <
%SPEAR entry counter was not re-initialized, resynching to 0.
>
SETZM SPRCNT ;AND RESET TO 0 TO START LOGGING
ENDIF.
AOS SECHKF ;FORCE STUFF GOING ON THE SYSERR QUEUE
;DO NETWORK-RELATED FUNCTIONS
RUNDD7: MOVEI T1,RUNDD8 ;GO TO RUNDD8 IF AN INTERRUPT OCCURS
MOVEM T1,JB0XFR ;SAVE THE ADDRESS FOR JB0INT
;Now start up the CLUDGR fork
CALLX (XCDSEC,CLSFRK) ;[7.1076] (/) Get the fork meowing
IFE FTNSPSRV,<
CALL D36INI ;INIT DECNET
JFCL ;IGNORE (SPURIOUS) NON-SKIP RETURN
CALL LLMINI ;INITIALIZE Ethernet LLMOP Protocol Servers
CALL CTHINI ;INITIALIZE FOR CTERM HOST
CALL OBJINI ;INITIALIZE OBJECT TYPE TABLE FOR DECNET
>;END IFE NSPSRV
CALL LATINI ;INITIALIZE LAT HOST
CALL MNTINI ;INITIALIZE MULTINET
CALL INTBEG ;INITIALIZE THE INTERNET FORK
IFN FTNSPSRV,<
CALL ATSINI ;INITIALIZE APPLICATIONS TERMINAL SERVICE
CALL NSPINI ;INIT DECNET FORK AND DATA BASE
>;END IFE NSPSRV
RUNDD8: MOVEI T1,RUNDD5 ;GO TO RUNDD5 IF AN INTERRUPT OCCURS
MOVEM T1,JB0XFR ;SAVE THE ADDRESS FOR JB0INT
AOS SYSIFG ;INDICATE NO LONGER IN STARTUP
; (NEXT JOB WON'T GO THROUGH RUNDD)
CALL DONSJ ;START NEXT SPECIAL JOB
;..
;CREATE FORK UNDER JOB 0 AND RUN SYSJOB IN IT. SYSJOB READS A COMMAND
;FILE, WHOSE NAME IS DETERMINED BY THE SETTING OF DBUGSW. IF CHECKD
;HAS NOT BLESSED THE PRIMARY STRUCTURE (SF%CDE IS SET IN FACTSW), SYSJOB
;DOES NOT READ A COMMAND FILE. AMONG OTHER THINGS, THIS WILL PREVENT
;LOGINS FROM TERMINALS OTHER THAN THE CTY
;..
MOVX T1,<GJ%OLD!GJ%PHY!GJ%SHT>
HRROI T2,SYSJOB
SETZM T3 ;MAIN ENTRY POINT
XMOVEI T4,SJBFRK ;LOCATION TO PLACE FORK NUMBER OF SYSJOB
CALL RUNDIR ;RUN SYSJOB AND RETURN
JRST [ TMSG<
No SYSJOB
>
JRST .+1]
RUNDD5: MOVEI 1,1 ;KEEP JOB 0 IN QUEUE 1 ALWAYS
MOVEM 1,JOBBIT ;SET PRIORITY FOR CHKR
XMOVEI T1,CHKR ;GO TO CHKR IF AN INTERRUPT OCCURS
MOVEM T1,JB0XFR ;SAVE THE ADDRESS FOR JB0INT
SETZM EXPFRK ;CLEAR FORK HANDLE
SKIPN SMFLAG ;IF NOT 2020
CALL RUNMO1 ;RUN MOS MEM DIAG
SE1ENT ;Make sure we are in section one
JRST CHKR ;GO DO BACKGROUND
SUBTTL Job 0 Forks -- Fork Startup (RUNDIR/RUNDII)
;ROUTINE TO RUN A PROGRAM IN A FORK UNDER JOB 0
; A/ GTJFN T1 ARGS
; B/ GTJFN T2 ARGS
; C/ OFFSET IN ENTRY VECTOR WHERE WE START FORK
; D/ LOCATION IN WHICH TO PLACE FORK NUMBER (0 IF NOT DESIRED)
; CALL RUNDII
; or
; CALL RUNDIR
;RETURNS +1: FAILED, PROGRAM NOT RUN
; +2: RUNDII - PROGRAM RAN TO COMPLETION, FORK KILLED
; RUNDIR - PROGRAM STARTED, A/ FORK HANDLE
RUNDIR: SAVEAC <Q1> ;SAVE TRASHED AC
SETZM Q1 ;NO WAIT FLAG
JRST RUNDIC ;CONTINUE
RUNDII::SAVEAC <Q1> ;SAVE TRASHED AC
SETOM Q1 ;WAIT FLAG
RUNDIC: STKVAR<EVEC,LOCFN,WFLAG,FKHNDL,FILJFN>
MOVEM C,EVEC ;SAVE OFFSET IN ENTRY VECTOR
MOVEM D,LOCFN ;SAVE LOCATION TO PUT FORK NUMBER
MOVEM Q1,WFLAG ;SAVE WAIT FLAG
GTJFN
RET ;FAILED
MOVEM T1,FILJFN ;SAVE JFN
MOVX T1,CR%CAP ;XMIT CAPABILITIES
CFORK ;CREATE A FORK FOR CHECKD
JRST [ EXCH T1,FILJFN ;SAVE ERROR CODE. GET JFN
RLJFN ;RELEASE IT
NOP
MOVE T1,FILJFN ;GET BACK ERROR CODE
RET] ;AND DONE
MOVEM T1,FKHNDL ;SAVE FORK HANDLE
SKIPN T2,LOCFN ;WANT TO SAVE FORK NUMBER?
IFSKP. ;YES
CALL GSWFRK ;(T1/T1) GET SYSTEM WIDE FORK NUMBER
JFCL ;IGNORE ERROR
MOVEM T1,(T2) ;SAVE FORK NUMBER OR ERROR CODE WHERE SPECIFIED
ENDIF.
;...
;...
MOVE T2,JOBBIT ;SET TO SAME AS OURS
SPRIW ;BY SETTING PRIORITY WORD
ERJMP .+1 ;JUST IN CASE
HRL T1,FKHNDL ;FORK HANDLE TO LH
HRR T1,FILJFN ;JFN TO RH
GET
ERJMP [MOVE T1,FKHNDL ;GET FORK HANDLE
KFORK ;KILL THE FORK
RET] ;AND DONE
MOVE T1,FKHNDL ;GET FORK HANDLE
MOVE 2,EVEC ;2/OFFSET IN ENTRY VECTOR
SFRKV ;START AT MAIN ENTRY
ERJMP [MOVE T1,FKHNDL ;GET HANDLE
KFORK ;KILL FORK
RET]
SKIPN WFLAG ;WANT TO WAIT?
RETSKP ;NO. RETURN NOW
WFORK
KFORK
RETSKP ;ALL DONE
SUBTTL Job 0 Forks -- Set Error Address (MONBKX)
;ROUTINE TO SETUP A MONITOR FORK TO HANDLE ERRORS
; ACCEPTS: T1/ 30 BIT ADDRESS OF ROUTINE TO TRANSFER TO ON ERROR
;
MONBKX::MOVEM 1,MONBK
MOVEI 1,.FHSLF ;1/THIS FORK
MOVEI 2,MICHN ;2/CHANNELS TO ENABLE
MOVEM 2,MONCHN ;MAKE THE MONITOR TAKE INTERRUPTS ON THEM
AIC ;ACTIVATE CHANNELS 34 AND 35
ERJMPR [BUG.(CHK,MONBKB,MEXEC,SOFT,<Cannot set monitor error interrupt>,<<T1,LSTERR>>,<
Cause: The monitor was attempting to enable interrupts on the monitor error
channels. This BUG. indicates that the AIC failed.
Action: If this BUG persists, make it dumpable and submit an SPR with the
dump and a copy of MONITR.EXE. If possible, include any known
method for reproducing the problem and/or the state of the system
at the time the BUG was observed.
Data: LSTERR - Last process error
>,R)]
RET
SUBTTL Job 0 Forks -- Make System Restart Record (LOGSST)
;ROUTINE TO MAKE RESTART ENTRY IN SYSERR FILE
LOGSST: TRVAR <<RDDBFR,.RLBSZ>>
SAVEQ
SKIPE BOOTFL ;[7.1226] An old boot?
IFSKP. ;[7.1226] If so, do old method
JE SF%MST,FACTSW,LOGSS3 ;[7.1226] Jump if auto restart
ENDIF. ;[7.1226]
MOVX T1,SF%MST ;[7.1226] Get auto restart flag
SKIPL BOOTFL ;[7.1226] Auto restart?
IFSKP. ;[7.1226] If so,
ANDCAM T1,FACTSW ;[7.1226] Flag it such
JRST LOGSS3 ;[7.1226] And go on (don't ask questions)
ENDIF. ;[7.1226]
IORM T1,FACTSW ;[7.1226] Say it isn't auto restart
MOVE T1,DBUGSW ;Get mode of system
CAIE T1,3 ;Default startup stuff?
JRST LOGSS1 ;No
MOVX T1,<ASCIZ /SA/> ;yes. It is Stand-alone then
MOVEM T1,RDDBFR ;Stash it
JRST LOGSS3 ;And go on
LOGSS1: CALL WHYRLD ;[7.1003] (/) Get answer for Why Reload?
MOVE T1,[-RLALEN,,RLATAB] ;SET TO VERIFY HIS ANSWER
CALL MATRLA ;SEE IF ANSWER MATCHES TABLE
JRST LOGSS2 ;NO, TELL HIM HIS CHOICES
AOBJP T1,LOGSS3 ;YES, SEE IF IT'S UNIQUE
CALL MATRLA ;ANY OTHER MATCHES?
JRST LOGSS3 ;NO, THIS IS A WINNER
LOGSS2: TMSG < Not a valid response (?=HELP)
>
JRST LOGSS1 ;TRY, TRY AGAIN
LOGSS3: MOVX T1,RL%LEN
MOVX T2,RL%SIZ
CALL ALCSEB ;GET SYSERR STORAGE
JRST [BUG.(CHK,SYSERF,MEXEC,SOFT,<LOGSST - No SYSERR storage for restart entry>,,<
Cause: ALCSEB in LOGSST failed to allocate a SYSERR storage block.
Action: As a result, there is no restart reason entered in ERROR.SYS.
This is informational and no action is required.
>)
RET]
MOVEM T1,Q1
MOVE T2,[-NWHYIT,,WHYIT]
CALL SEBCPY ;COPY DATA INTO BLOCK
JFCL
MOVE T2,[-1,,[SEBPTR RL%OPR,SBTSTR,RDDBFR]]
MOVE T3,FACTSW
TXNN T3,SF%MST ;USE OPR ANSWER IF MANUAL START
MOVE T2,[-1,,[SEBPTR RL%HLT,SBTWD,BUGHLT]]
MOVE T1,Q1 ;USE BUGHLT ADDRESS OTHERWISE
CALL SEBCPY
JFCL
MOVE T1,Q1
CALL QUESEB ;QUEUE BLOCK FOR SYSERR FILE
RET
SUBTTL Job 0 Forks -- Ask "Why Reload?" (WHYRLD)
;[7.1003]
;WHYRLD - ROUTINE TO ANSWER THE "WHY RELOAD?" QUESTION
;This routine will display the question "WHY RELOAD?" on the CTY and
;then get an answer for it. The answer is returned in RDDBFR.
;
; Call with:
; no arguments
; CALL WHYRLD
;
; Returns:
; +1 - answer to "WHY RELOAD?" in RDDBFR
WHYRLD: TMSG <Why reload? > ;Manual restart, find out why
CALL TIMOUT ;(/) Only give the user 60 seconds to answer
JRST WHYDEF ;60 seconds passed with no answer - use default
HRROI T1,RDDBFR ;Put answer here
MOVX T2,RD%BRK+RD%BEL+RD%RAI+RD%CRF+20*5 ;Flags,,number of chars
HRROI T3,[ASCIZ /Why reload? /] ;Reprompt text
RDTTY% ;Get answer
ERJMP .+1 ;Don't care about miscues
SETZ T3, ;End answer with a NULL
DPB T3,T1
MOVE T1,[POINT 7,RDDBFR] ;Setup pointer to source string
WHYRL1: ILDB T2,T1 ;Get a char
CAIE T2,.CHSPC ;Space?
CAIN T2,.CHTAB ;Tab?
JRST WHYRL1 ;One of the two
CAIE T2,"?" ;Did he ask for help?
RET ;No, must be a real answer
HRROI T1,LOGMSG ;Get the help message
PSOUT% ;Display it
JRST WHYRLD ;Try again
WHYDEF: TMSG <
Why reload? > ;[7.1019] Retype the question
HRROI T1,DEFMSG ;Show the default message
PSOUT%
HRROI T1,RDDBFR ;Put default answer here
HRROI T2,DEFMSG ;This is where the default message is
SETZB T3,T4 ;End on NULL
SOUT% ;Blast default message into RDDBFR
ERJMP .+1 ;Don't care about failures
RET ;Done
SUBTTL Job 0 Forks -- Ask "Run CHECKD?" (RUNCKD)
;[7.1003]
;RUNCKD - ROUTINE TO ANSWER THE "RUN CHECKD?" QUESTION
;This routine displays the question "RUN CHECKD?" and
;obtains a "YES" or "NO" answer for it.
;
; Call with:
; no arguments
; CALL RUNCKD
;
; Returns:
; +1 - "RUN CHECKD?" answered with a "NO"
; +2 - "RUN CHECKD?" answered with a "YES"
RUNCKD: TMSG <Run CHECKD? > ;Pose the question
CALL TIMOUT ;(/) Start timer
JRST NOCHKD ;No answer was given in 60 seconds
CALL YESNO ;(/T1) Something was typed, see what it was
JUMPE T1,R ;No was the answer
RETSKP ;Answer was yes
NOCHKD: TMSG <
Run CHECKD? NO - Question timeout
>
RET ;Return as no
SUBTTL Job 0 Forks -- Timeout starup questions (TIMOUT)
;[7.1003]
;TIMOUT - ROUTINE TO PERFORM TIMING FEATURE FOR RUNCKD AND WHYRLD
;This routine performs the timeout service required for
;WHYRLD and RUNCKD.
;
; Call with:
; no arguments
; CALL TIMOUT
;
; Uses T4 as the counter. T4 contains the number of times 1/10 of a
; second has passed.
;
; Returns:
; +1 - A 60 second timeout occurred and nothing was typed
; +2 - Something was typed (assume an answer is on the way)
TIMOUT: SETZ T4, ;No time has elapsed yet
TMOUT1: MOVE T1,CTYLNO ;Get CTY line number
MOVEI T1,.TTDES(T1) ;Make it a TTY designator
SIBE% ;Anything typed?
RETSKP ;Yes, we're done here
CAIL T4,^D600 ;Has 1 minute passed?
RET ;Yes it has, return
MOVEI T1,^D100 ;Sleep for 1/10 of a second
DISMS%
AOJA T4,TMOUT1 ;Increment our time counter and try again
SUBTTL Job 0 Forks -- Check "Why Reload?" Response (MATRLA)
;ROUTINE TO SEE IF RDDBFR MATCHES ENTRY IN TABLE
;CALL T1/AOBJN POINTER TO TABLE
;RETURNS +1 NO MATCH
;RETURNS +2 MATCH
MATRLA: MOVE T2,[POINT 7,RDDBFR,] ;POINTER TO HIS ANSWER
MOVE T3,[POINT 7,(T1),] ;POINTER TO LEGAL ANSWERS
MATRL1: ILDB T4,T2 ;GET NEXT CHAR OF HIS ANSWER
JUMPE T4,MATRL3 ;DONE IF A ZERO CHARACTER
CAIE T4," " ;END OF FIRST WORD?
CAIN T4,.CHLFD ;END OF LINE?
JRST MATRL3 ;YES
ILDB CX,T3 ;NO, GET NEXT CHAR OF THIS ANSWER
CAIN CX,(T4) ;MATCH?
JRST MATRL2 ;YES, KEEP ON GOINT
AOBJN T1,MATRLA ;NO, TRY NEXT TABLE ENTRY
RET ;NO MATCH - NON SKIP RETURN
MATRL2: TLNN T3,760000 ;END OF THIS TABLE ENTRY?
RETSKP ;YES, SKIP RETURN
JRST MATRL1 ;NO, LOOK AT NEXT CHARACTER HE TYPED
MATRL3: CAME T2,[POINT 7,RDDBFR,6] ;ANYTHING BEFORE THE END-OF-LINE?
RETSKP ;YES, TAKE MATCH-RETURN
RET ;NO, NON-MATCH
RLATAB: ASCIZ /OPR/
ASCIZ /PARIT/
ASCIZ /POWER/
ASCIZ /STATI/
ASCIZ /HARDW/
ASCIZ /HALT/
ASCIZ /HUNG/
ASCIZ /PM/
ASCIZ /CM/
ASCIZ /SA/
ASCIZ /NEW/
ASCIZ /SCHED/
ASCIZ /OTHER/
RLALEN==.-RLATAB
DEFMSG: ASCIZ /OTHER - Question timeout
/
LOGMSG: ASCIZ #
The following is a list of valid responses. Any comment (up to 72
characters) may be appended to a response. In case more than one
response is appropriate, choose the earliest one in the list.
Previous system problem: Different monitor wanted:
OPR NEW
PARITY SCHED
POWER
STATIC Operator doesn't know or not in list:
HARDWARE OTHER
HALT
HUNG If Operator doesn't answer within 60 seconds:
PM OTHER - Question timeout
CM
SA
#
;POINTER TABLE TO BUILD RELOAD ENTRY
WHYIT: SEBPTR 0,SBTEVC,SEC%RL ;EVENT CODE (IMMEDIATE)
SEBPTR RL%SVN,SBTSTR,SVN ;SYSTEM NAME
SEBPTR RL%STD,SBTWD,SYSTAD ;BUILD TAD
SEBPTR RL%VER,SBTWD,[EXP SVNM] ;SYSTEM VERSION NUMBER
SEBPTR RL%SER,SBTWD,APRSER ;APR SERIAL NUMBER
NWHYIT==.-WHYIT
SUBTTL Job 0 Forks -- Get Time and Date for Startup (RDDTAD)
;LOCAL ROUTINE TO READ TAD FROM CTY
; CALL RDDTAD
; RETURN +1 ALWAYS, 2/ TAD
RDDGTD: STKVAR <<RDDBFR,20>>
RDDGT1: HRROI 1,RDDBFR
MOVE 2,[RD%BRK+RD%BEL+RD%RAI+20*5]
MOVEI 3,0
RDTTY ;READ LINE FROM CTY
JRST RDDGT2 ;FAILED, REPROMPT
TXNN 2,RD%BTM ;BREAK CHAR TERMINATED INPUT?
JRST RDDGT2 ;NO, GARBAGE INPUT
HRROI 1,RDDBFR
MOVEI 2,0
IDTIM ;CONVERT STRING TO TAD
JRST RDDGT2 ;INVALID, REPROMPT
RET ;OK, RETURN IT
RDDGT2: TMSG <
? Invalid, please try again in form MMM-DD-YY HHMM: >
JRST RDDGT1 ;TRY AGAIN
SUBTTL Job 0 Forks -- Start Next Special job (DONSJ)
;EACH SPECIAL JOB CALLS THIS TO DETACH AND START THE NEXT ONE
DONSJ: CALL LOGONM ;RECORD START OF CURRENT JOB ON LOGGING TERMINAL
MOVE 4,CTRLTT ;SAVE THIS JOB'S CONTROLLING TERMINAL
DTACH ;DETACH THE CURRENT JOB
MOVE 1,JB0TT
HRRM 1,PRIMRY ;USE JOB 0 TTY FOR ANY OUTPUT
MOVE 1,JOBNO ;GET CURRENT JOB NUMBER
CAIL 1,NSPECJ-1 ;MORE SPECIAL JOBS TO DO?
JRST [ MOVX T1,SF%PTY!SF%CTY ;NO. ALLOW CTY AND PTY LOGINS
IORM T1,FACTSW
RET] ; AND DON'T CREATE ANOTHER JOB
MOVE 2,4 ;YES. GET LINE NUMBER FOR CALL
CALLRET SPCSTJ ;START ANOTHER JOB ON SAME TTY
SPCSTJ: NOSKED
PUSH P,T2 ;SAVE LINE NUMBER
CALL STADYN ;GET ADDRESS OF DYNAMIC DATA
SKIPA ;NOT FULLY ACTIVE
JRST [ POP P,2
OKSKED
RET]
JUMPG T2,SPCST1 ;IF TEMPORARILY ACTIVE, WAIT
POP P,2 ;GET LINE NUMBER BACK
SETOM TTACTL(T2) ;INDICATE JOB STARTING
MOVEI 1,JOBSRT ;REQUEST JOB STARTUP FROM SCHED
HRL 1,2
CALL SCDRQ7
OKSKED
RET
;LINE IS TEMPORARILY IN USE. WAIT UNTIL IT'S AVAILABLE
SPCST1: POP P,1 ;RESTORE LINE NUMBER
OKSKED
HRLZS T1 ;T1/ (LINE NUMBER,,ROUTINE)
HRRI T1,TSACT1 ;ROUTINE TO WAIT FOR LINE
PUSH P,T2
MOVSI T2,FHV1 ;LOW BLOCK PRIORITY
HDISMS
POP P,T2
JRST SPCSTJ
SUBTTL Job 0 Forks -- Scheduler Tests
;MAXIMUM CHECK PERIOD - USED TO SET SCHEDULER ALARM
RESCD
CHKPER::^D<1*60000> ;1 MINUTE - CHKR ALARM PERIOD
DDPPER::^D<1*60000> ;1 MINUTE - DDMP ALARM PERIOD
JB0TST: SKIPE JB0FLG ;EXPLICIT REQUEST?
JRST 1(4) ;YES, WAKEUP
JRST BLOCKT ;NO, GO TEST TIME
;Test routine for DDMP
DDPWAT: MOVE T1,TODCLK ;Get now
SKIPN DDCFSF ;Force for CFS?
CAML T1,DDTIME ;Time to do it?
JRST 1(4) ;yes
SKIPN DDPDUE ;ddmp force?
JRST 0(4) ;no
JRST 1(4) ;yes
;TEST ROUTINE TO CIFORK
CIWAIT: SKIPE CIFRKF ;ANYTHING TO DO?
JRST 1(4) ;Yes
JRST 0(4) ;No
SWAPCD
NR UMSGTM,1 ;TIME OF NEXT USER MESSAGES
NR MTCHNG,1 ;FLAG FOR MTA STATUS CHANGE
SUBTTL Job 0 Forks -- Fork Error Catcher
;JB0INT - HERE WHEN INTERRUPT OCCURS IN FORK 0
;THIS ROUTINE IS POINTED TO BY MONBK. THE SCHEDULER TRANSFERS
;CONTROL TO HERE WHEN AN INTERRUPT OCCURS ON CHANNEL 34 OR 35 IN
;FORK 0. JB0XFR CONTAINS THE ROUTINE TO WHICH THIS CODE TRANSFERS
;AFTER CLEANING THINGS UP
JB0INT: BUG.(CHK,JB0INX,MEXEC,SOFT,<Unexpected interrupt in job 0 during initialization>,<<ITFPC,PC>,<JB0XFR,NEWPC>,<LSTERR,LSTERR>>,<
Cause: An unexpected error has occurred in Job 0 which results
in control being transferred to the default error handler.
This has happened during job 0 initialization. The error handler
attempts to reset the context and continue at the specified
error address, however some system resources may be hung as a result
of locks not being cleared.
Action: If this BUG persists, make it dumpable and submit an SPR with the
dump and a copy of MONITR.EXE. If possible, include any known
method for reproducing the problem and/or the state of the system
at the time the BUG was observed. In the dump, the stack
can be examined to determine what was in progress when
the error occurred.
Data: PPC - PC at which error occurred
NEWPC - Address to which control will be transferred after cleanup
LSTERR - Last error code in this fork
>)
SETZM NSKED ;BE OKSKED
SETZM CRSKED ;BE NOT 'CRITICAL SECTION'
MOVX CX,USRCTX
MOVEM CX,FFL ;RESET CONTEXT
MCENTR
MOVE T1,[XWD MSEC1,J0EMER] ;IN CASE OF EMERGENCY
CALL MONBKX
CALL CLRINT ;CLEAR THE INTERRUPT SYSTEM
MOVE T1,FORKX ;T1/ FORK NUMBER
SETZM T2 ;T2/ ALL INTERRUPT LEVELS
CALL JSBSTF ;CLEAN THE JSB STACK
MOVE T1,FORKX ;T1/ FORK NUMBER
SETZM T2 ;T2/ ALL LEVELS
CALL GOKFRE ;CLEAN UP GETOK QUEUES (SHOULDN'T HAVE ANY)
MOVE T1,[XWD MSEC1,JB0INT] ;BACK TO HERE IF ANOTHER INTERRUPT
CALL MONBKX
MOVE T1,JB0XFR ;SEE WHERE WE ARE TO GO NEXT
JRST 0(T1) ; AND GO THERE
;HERE WHEN AN ERROR OCCURRED WHILE IN JB0INT. GIVE UP.
J0EMER: BUG.(HLT,STRTER,MEXEC,SOFT,<Fatal error while processing previous startup error>,,<
Cause: When a software channel 34 or 35 interrupt happens on fork
0, the monitor transfers control to the routine specified in
MONBK. This address is often the starting address of
JB0INT. JB0INT handles errors in fork 0. While JB0INT is doing its
error recovery, it sets MONBK to J0EMER, so that this STRTER BUGHLT
occurs if another error happens during JB0INT execution.
>)
;CLRINT - CLEAR THE INTERRUPT SYSTEM
CLRINT: MOVEI 1,400000 ;DEACTIVATE SOFTWARE INTERRUPT CHANNELS
SETO 2, ; FOR THIS PROCESS
DIC
CALL DTIALL ;IN CASE PROGRAM TURNED ANY ON
MOVE 2,PSIBW
CIS ;CLEAR ALL INTERRUPTS IN PROGRESS
RET
SUBTTL Job 0 Forks -- Periodic Checker (CHKR)
;PERIODIC (10 SEC) CHECK OF THINGS
CHKR:: TSTMS0 ;BE SURE NO SECTION 0
SETZM JB0FLG ;CLEAR REQUEST FLAG
MOVE 1,TODCLK
ADD T1,CHKPER ;NOW PLUS MAX CHECK PERIOD
MOVEM 1,CHKTIM ;LEAVE FOR SCHED TO CHECK
SETZM CHKDUE ;RESET THE OVERDUE COUNTER
CALL KNIJB0 ;Check on the KLNI's
CALL LLMJB0 ;[7432]Check on LLMOP
CALL CHKACJ ;[9041] Check ACJ fork
; IFN CFSCOD,<
CALL CFTADC ;See if a TAD is around
IFSKP. ;If so
STAD ;Set it
NOP ;
CALL DTTIME ;If a KL, tell the FE
ENDIF.
CALL CFSJ0 ;And see if any background action is needed
; > ;IFN CFSCOD
CALL KLPRCT ;DO PERIODIC CI READ-COUNTERS
CALL RESLCK ;LOCK OR UNLOCK RESIDENT FREE SPACE
CALL DTEPOL ;GO SEE IF ANY DTE'S NEED ATTENTION
CALL MNTCHK ;KEEP MULTINET RUNNING
SKIPE DOBFRK ;[7.1253] Is there a DOB fork to watch?
CALL DOBKSP ;[7.1253] () Yes, see if it has finished
SKIPE DOBJB0 ;[7.1081] Need to copy a dump file?
CALL DOBSSP ;[7.1081] () Yes, run SETSPD to do that
SKIPE MTAJB0 ;MTA ON LINE INTERRUPT?
CALL MTASSP ;YES REQUEST SETSPD
IFE FTNSPSRV < ;[6.1]
CALL DCNJB0 ;Do DECnet periodic functions
>
SKIPE USGBEG ;CHECK USAGE QUEUE
CALL USGMES ;HAVE SOMETHING - EMPTY QUEUE
CALL CHKCKP ;CHECK ON CHECKPOINT
CALL CHKASC ;Check for accounting shift change
CALL CHKBGS ;CHECK IF TIME TO STORE ASCII TIME
;...
;...
SKIPE A,HSYST1 ;SHUTDOWN PROCESS ACTIVE?
CAMN A,[-1] ;OR IS SYSTEM SHUTDOWN
SKIPA ;SYSTEM SHUTDOWN OR PROCESS NOT ACTIVE
CALL CHKHSY ;YES, CHECK IT
SKIPE CCHEAD ;ANY CLUSTER CEASES?
CALL CHKCLC ;YES, GO OUTPUT THEM
CALL IMICHK ;MAKE SURE IMP INPUT Q'S EMPTIED
CALL CHKOFN ;[7247] Check OFNS
MOVE A,TODCLK
CAMGE A,UMSGTM ;TIME FOR USER MESSAGES?
JRST CHKUM1 ;NO
CALL CHKDKS ;CHECK DISK SPACE
CALL CHKDMS ;CHECK DRUM SPACE
CALL CHKSPT ;CHECK SPT SPACE
MOVE A,TODCLK ;SET TIME FOR NEXT MSG
ADD A,[^D<5*60000>] ;IN 5 MINUTES
MOVEM A,UMSGTM
CHKUM1:
CALL CHKMOS ;CHECK IF MEMORY DIAG NEEDS TO RUN
MOVEI A,^D30000 ;SETUP TO DISMISS FOR 30 SEC
SKIPE B,HSYST1 ;SHUTDOWN ACTIVE?
CAMN B,[-1] ;OR SYSTEM SHUTDOWN?
SKIPA ;NO SHUTDOWN OR ALREADY SHUTDOWN
SKIPGE B,HSYST2 ;YES, REASONABLE TIME TO WAIT?
JRST CHKUM2 ;NOT ACTIVE OR BAD TIME
CAMLE A,B ;LESS THAN 30 SECONDS AWAY
MOVE A,B ;YES, DISMISS UNTIL THEN
;..
;..
CHKUM2: MOVE B,DDTIME ;Time for DDMP
SUB B,TODCLK ;Relative time for DDMP
IFG. B ;If still in the future
CAMLE A,B ;Will we run in time?
MOVE A,B ;No. So use this time instead
ENDIF.
CALL SETBKT ;SETUP TIME FOR DISMISS TEST
HRRI A,JB0TST ;OR JB0FLG
MOVSI B,FHV1 ;LOW BLOCK PRIORITY
HDISMS
JRST CHKR
SUBTTL Job 0 Forks -- Periodic Checker (CHKR) -- Sniff the ACJ (CHKACJ)
;[9041]
;CHKACJ - Routine called by CHKR every periodic scan. It checks to see
;if the ACJ fork has died or is supposed to be started.
;
; Called with:
; no arguments
; CALL CHKACJ
;
; Returns:
; +1 - Always
CHKACJ: SKIPG ACJRUN ;Is ACJ running in user context?
SKIPE ACJRUN ;Are we running in monitor context?
RET ;Not running at all, see ya
SKIPE T1,ACJFKH ;Has CHKR started an ACJ fork?
JRST CHKAC1 ;Yes, go see how it is doing
;Here when we have determined that a user has requested an ACJ fork be
;started up as part of the monitor.
MOVX T1,GJ%SHT+GJ%OLD+GJ%PHY ;ACJ must be around and use system definition
HRROI T2,[ASCIZ /DEFAULT-ACJ:/] ;Get ACJ from here
SETZB T3,T4 ;Start it normally
CALL RUNDIR ;(T1-T4/T1) Fire that puppy up
IFSKP. ;If it succeeded,
MOVEM T1,ACJFKH ;Save fork handle
RET ;And done
ENDIF.
;RUNDIR may return No such ... and therefore, a range check of
;GTJFN% error codes is done here.
CAIL T1,GJFX16 ;Beginning of error range
CAILE T1,GJFX24 ;Are they cool errors?
JRST BADACJ ;No, something bad happened
MOVX T1,GJ%SHT+GJ%OLD+GJ%PHY ;Now try a different one
HRROI T2,[ASCIZ /SYSTEM:ACJ.EXE/] ;This is the one
SETZB T3,T4 ;Fire it up
CALL RUNDIR ;(T1-T4/T1) Try and start the ACJ
IFSKP. ;Started!
MOVEM T1,ACJFKH ;Save fork handle
RET ;And done
ENDIF.
CAIL T1,GJFX16 ;Beginning of error range
CAILE T1,GJFX24 ;Are they cool errors?
JRST BADACJ ;No, something far worse
BUG.(CHK,NOACJF,MEXEC,SOFT,<No ACJ file to run>,,<
Cause: CHKR attempted to service a user request to start up an ACJ fork
under job 0. This request failed because CHKR could not find an
ACJ program to run.
Action: One of two things can be done:
1. Define DEFAULT-ACJ: on the system to point to the ACJ program.
2. Insure that there is an ACJ.EXE on SYSTEM:
>,,<DB%NND>) ;Report problem
CHKAC2: SETOM ACJRUN ;Say no ACJ fork
SETZM ACJFKH ;And have no fork handle either
RET ;Done
BADACJ: BUG.(CHK,JB0NMF,MEXEC,SOFT,<Job 0 - no more forks to start an ACJ>,<<T1,ERR>>,<
Cause: RUNDIR was called to attempt to start up an ACJ fork within the
monitor and this call failed for some reason.
Action: Find out why this call failed. Look at the error code. It is possible
that the system already has too many forks running under job 0. If this
is the case, move some of the programs that are run under job 0 to
another job.
Data: ERR - Error code from RUNDIR
>,,<DB%NND>)
JRST CHKAC2 ;Clean up mess
;Here when a known ACJ is running under job 0. CHKR is just going to
;open the door and peek in on it. It is assumed that T1 has the ACJ
;relative fork handle
CHKAC1: RFSTS% ;Get ACJ's status
ERJMP SHOOT ;If failed, shoot it
LDB T1,[POINTR T1,RF%STS] ;Get fork status
CAIE T1,.RFHLT ;Is it halted
CAIN T1,.RFFPT ; or forced termination?
IFSKP. <RET> ;Everything is cool, let it be
;Here to shoot the ACJ fork
SHOOT: MOVE T1,ACJFKH ;Get fork handle back
KFORK% ;Bye-bye ACJ fork
ERJMP .+1 ;What error?
BUG.(CHK,ACJDIE,MEXEC,SOFT,<ACJ fork has crashed>,,<
Cause: The ACJ fork was running under monitor context but has terminated.
The monitor is killing the fork.
Action: Find out why the ACJ fork died. It is possible it crashed because
of a coding error within the program. Debug the ACJ in user mode.
The ACJ can be restarted in monitor context.
>,,<DB%NND>) ;Write an obituary for the ACJ
JRST CHKAC2 ;And clean up it's mess
SUBTTL Job 0 Forks -- Periodic Checker (CHKR) -- Start DOB SETSPD (DOBSSP)
;[7.1081] This routine calls SETSPD at offset 5 in entry vector to check all
;[7.1081] dumpable structures for uncopied DUMP.EXE files.
DOBSSP: SKIPE DOBFRK ;[7.1253] Is there still a fork running?
RET ;[7.1253] Yes, only run one at a time
SETZM DOBJB0 ;[7.1081] Clear request flag
MOVX T1,GJ%OLD!GJ%PHY!GJ%SHT ;[7.1081]GTJFN Flags
HRROI T2,SETSPD ;[7.1081] Point to program name
MOVEI T3,5 ;[7.1081] Offset 5 in entry vector
XMOVEI T4,DOBFRK ;[7.1253] Place to save fork number
CALL RUNDIR ;[7.1253] (T1-T4/T1) Call the program
JRST DOBSS0 ;[7.1253] It didn't work
HRLM T1,DOBFRK ;[7.1253] Save fork number
RET ;[7.1253] then return
;[7.1081] Here if couldn't get a fork for SETSPD, probably this site is running
;all of GALAXY under SYSJOB or something like that.
DOBSS0: TMSG <
? DOB Error: Can't copy dump - > ;[7.1081] Output error prefix
MOVX T1,.PRIOU ;[7.1081] Write it to default device
MOVX T2,<.FHSLF,,-1> ;[7.1081] Say this fork's latest error
ERSTR ;[7.1081] Do it
JFCL ;[7.1081] Ignore
JFCL ;[7.1081] errors
TMSG <
> ;[7.1081] Finish it with a CRLF
RET ;[7.1081] Return
SUBTTL Job 0 Forks -- Periodic Checker (CHKR) -- Kill DOB SETSPD (DOBKSP)
;[7.1253] Here with dump fork already around, see if it is still running.
;[7.1253] DOBFRK holds fork handle,,fork number (for MDDTing)
;[7.1253] Returns: +1 always
DOBKSP: HLRZ T1,DOBFRK ;Get the fork handle for DOBFRK
RFSTS% ;Read fork's status
ERJMP DOBKS3 ;Murder it if error
LDB T1,[POINTR T1,RF%STS] ;Get fork status
CAIE T1,.RFHLT ;Is it halted
CAIN T1,.RFFPT ; or forced termination?
JRST DOBKS3 ;Yes, time for a murder
RET ;It still must be running, let it
;Here to murder the current DOB fork.
DOBKS3: HLRZ T1,DOBFRK ;Get the fork handle back
KFORK% ;Kill it
ERJMP .+1 ;Punt the error
SETZM DOBFRK ;Now no longer a fork
RET ;Return
SUBTTL Job 0 Forks -- Periodic Checker (CHKR) -- Magtape Online (MTASSP)
; ROUTINE TO REQUEST SETSPD FOR MAGTAPE ON LINE
MTASSP: SETZM MTAJB0 ;CLEAR REQUEST FLAG
MOVX T1,GJ%OLD!GJ%PHY!GJ%SHT
HRROI T2,SETSPD ;GET POINTER TO "SYSTEM:X-SETSPD.EXE"
MOVEI T3,4 ;START AT ENTRY VECTOR POSITION 4
SETZM T4 ;DO NOT RECORD FORK NUMBER
CALL RUNDII ;RUN SETSPD AND WAIT UNTIL IT'S DONE
JFCL ;IGNORE FAILURE
RET
SUBTTL Job 0 Forks -- Periodic Checker (CHKR) -- TGHA Check (CHKMOS)
;ROUTINE CALLED BY CHKR TO SEE IF ANY ACTION NEEDED FOR THE
;MOS MEMORY DIAGNOSTIC
CHKMOS: SKIPN T1,MOSFRK ;NOW RUNNING?
JRST CHKMO1 ;NO. SEE IF WE SHOULD RUN IT
RFSTS ;YES. SEE WHAT IT IS DOING
LOAD T1,RF%STS,T1 ;GET ITS STATUS
CAIE T1,.RFHLT ;HALTED?
CAIN T1,.RFFPT ;OR ERROR?
SKIPA T1,MOSFRK ;YES.
RET ;NO. ALL DONE THEN
KFORK ;KILL THE PROCESS
SETZM MOSFRK ;NO MORE FORK HERE
CALL MOSULE ;UNLATCH CONTROLLER NOW
;HERE IF NO FORK NOW RUNNING. SEE IF ONE NEEDED
CHKMO1: SKIPE ERRTBL ;HAVE SOME ENTRIES TO PROCESS
CALL RUNMOS ;YES. START THE DIAG
RET ;DONE
;ROUTINE TO RUN THE MOS MEM DIAGNOSTIC
RUNMOS: TDZA T3,T3 ;MAIN ENTRY POINT
RUNMO1: MOVEI T3,1 ;SYS START UP ENTRY
MOVX T1,<GJ%OLD!GJ%SHT!GJ%PHY>
HRROI T2,[ASCIZ /SYSTEM:TGHA.EXE/] ;THE DIAG
SETZM T4 ;DO NOT RECORD FORK NUMBER
CALL RUNDIR ;RUN TGHA
RET ;DIDN'T DO IT.
MOVEM T1,MOSFRK ;SAVE FORK HANDLE FOR LATER
RET ;AND DONE
SUBTTL Job 0 Forks -- Periodic Checker (CHKR) -- Check Swapping Space (CHKDMS)
;Here to see if swapping space is low
CHKDMS: MOVE 1,DRMFRE
CAMLE 1,DRMIN0 ;DRUM SPACE LOW?
RET ;NO
;Send message about swapping space
STKVAR <<MSGBBF,^D70>> ;[9113] A place to build strings
MOVE T3,FACTSW ;[9113] Do we
TXNN T3,SF%MS0 ;[9113] want level 0 messages?
IFSKP. ;[9113] Yes
HRROI T1,MSGBBF ;[9113] Start the message here please
CALL BNNAME ;[9113] (T1/T1) Start with crlf, bell, sys name
HRROI T2,[ASCIZ /: Caution, swapping space low]
/] ;[9113] Point to informative message
CALL BASCIZ ;[9113] (T1,T2/T1) Append that information
HRROI T2,MSGBBF ;[9113] Point back at buffer
CALL ALLMSG ;[9113] (T2/) Send the message
ENDIF. ;[9113] Done with message code
HRROI T1,MSGBBF ;[9113] Where it's going now
HRROI T2,[ASCIZ/ Swapping space low, currently /] ;[9113] The message
MOVE T4,DRMFRE ;[9113] Load the value to print
CALLRET BMESS ;[9113] (T1,T2,T4/) Build message and send
ENDSV.
SUBTTL Job 0 Forks -- Periodic Checker (CHKR) -- Check OFNs Used (CHKOFN)
;[7247] CHKOFN - Check the number of OFNS in system and release some if needed
;[7247] Note - Performance counters - Charge this time to BKGND/FILW?
;[7247] Tricky because low level routines can cause OKSKED/reschedule
;[7247] Time is now charged to job 0 so this may be enough...
CHKOFN: NOSKED ;[7247] Lock up system
SKIPL OFNTIM ;[7247] Should we release only cached OFNS?
IFSKP. ;[7247] Yes
CALL FREOFC ;[7247] Free all cached OFNS now
JFCL ;[7247] Don't care about this return
OKSKED ;[7247]
RET ;[7247]
ENDIF. ;[7247]
MOVE T1,TODCLK ;[7247] Get now
CAMLE T1,OFNTIM ;[7247] Time to do this?
CALL FREOFG ;[7247] Yes
JFCL ;[7247] Ignore +1 return
MOVEI T1,NOFN ;[7247] Get number OFNS
SUB T1,NOF ;[7247] ... left in system
CAIG T1,^D50 ;[7247] Below threshold?
CALL FREOFG ;[7247] Yes so try again
JFCL ;[7247]
OKSKED ;[7247] Safe to run again!
RET ;[7247]
SUBTTL Job 0 Forks -- Periodic Checker (CHKR) -- Check SPTs in use (CHKSPT)
;Here to check to see if SPT space is about to run out, give a message if so.
CHKSPT: MOVE 1,SPTC
CAMGE 1,SPC1 ;SPT LOW?
RET ;NO
;Send out a message about the SPT space
STKVAR <<MSGBBF,^D70>> ;[9113] Place to build strings
MOVE T3,FACTSW ;[9113] Do we
TXNN T3,SF%MS0 ;[9113] want level 0 messages?
IFSKP. ;[9113] Yes, we do
HRROI T1,MSGBBF ;[9113] Point to buffer
CALL BNNAME ;[9113] (T1/T1) Send the name first
HRROI T2,[ASCIZ /: Caution, SPT space low]
/] ;[9113] Point to informative message
CALL BASCIZ ;[9113] (T1,T2/T1) Send that last
HRROI T2,MSGBBF ;[9113] Point to message buffer again
CALL ALLMSG ;[9113] (T2/) Blast them
ENDIF. ;[9113] End of message code
HRROI T1,MSGBBF ;[9113] Point to place to build the message
HRROI T2,[ASCIZ/ SPT space low, currently /] ;[9113] The message
MOVN T4,[NOFN-SSPT] ;[9113] Load total
SUB T4,SPTC ;[9113] Compute the space left
CALLRET BMESS ;[9113] (T1,T2,T4/) Build and send message
ENDSV.
SUBTTL Job 0 Forks -- Periodic Checker (CHKR) -- Check Boot Structure Space (CHKDKS)
;This routine is called to check disk space on the boot structure.
CHKDKS: SKIPGE T1,EXPFRK ;EXPUNGE FORK RUNNING?
RET ;YES - EXIT QUIETLY
JUMPE T1,CKDKS1 ;NO - EXISTS?
SETZM EXPFRK ;YES - KILL IT
KFORK ;...
CKDKS1: MOVEI T1,PSNUM ;[7.1112]Use boot structure
CALL GSTRPG ;GET COUNT OF USED AND FREE PAGES ON STRUCTURE
MOVE T1,T2 ;GET FREE COUNT
SUB 1,SYSSPC ;LESS 'BUFFER'
CAILE 1,SYWRND ;LOW?
RET ;NO
;We need to output a message about the disk space on BS.
STKVAR <<MSGBBF,^D70>,SAVSIZ,SAVSTR> ;[9113] Storage for message
MOVEM T2,SAVSIZ ;[9113] Save the free space count
MOVE T2,STRTAB+PSNUM ;[9113] Load the SDB address for STRTAB
MOVE T2,SDBNAM(T2) ;[9113] Load the name of that structure
MOVEM T2,SAVSTR ;[9113] Save real structure name
MOVE T3,FACTSW ;[9113] Load current system state
TXNN T3,SF%MS0 ;[9113] Are level 0 messages wanted today?
IFSKP. ;[9113] Yes, they are
HRROI T1,MSGBBF ;[9113] Point to message buffer
CALL BNNAME ;[9113] (T1/T1) Start with node name
HRROI T2,[ASCIZ/: Caution, disk space low on structure /] ;[9113]
CALL BASCIZ ;[9113] (T1,T2/T1) Append that string
MOVE T2,SAVSTR ;[9113] Load real structure name
CALL B6BIT ;[9113] (T1,T2/T1) Convert that to SIXBIT
HRROI T2,[ASCIZ/:]
/] ;[9113] Complete the message
CALL BASCIZ ;[9113] (T1,T2/T1) Append that string
HRROI T2,MSGBBF ;[9113] Point to that string now please
CALL ALLMSG ;[9113] (T2/) Now send it everywhere
ENDIF. ;[9113] Fall through to send message to ORION
;Send a message to ORION about the BS: space
HRROI T1,MSGBBF ;[9113] Load the address of buffer
CALL BSTAMP ;[9113] (T1/T1) The time goes first
HRROI T2,[ASCIZ/ Disk space low on structure /] ;[9113] Message
CALL BASCIZ ;[9113] (T1,T2/T1) Append this string
MOVE T2,SAVSTR ;[9113] Get structure name
CALL B6BIT ;[9113] (T1,T2/T1) Convert that from SIXBIT
HRROI T2,[ASCIZ/:, /] ;[9113] Tie off previous string
CALL BASCIZ ;[9113] (T1,T2/T1) append that string
MOVE T2,SAVSIZ ;[9113] Load free count
CALL BNOUT ;[9113] (T1,T2/T1) Output that number
HRROI T2,[ASCIZ/ free
/] ;[9113] Tie off previous string
CALL BASCIZ ;[9113] (T1,T2/T1) append that string
MOVEI T2,MSGBBF ;[9113] Point to beginning of resident buffer
MOVEI T3,.QBSYS ;[9113] .QBDTY value for system message
CALL WROPR0 ;[9113] (T1,T2,T3/) Send the message to ORION
SKIPN T1,EXPTIM ;ENOUGH TIME SINCE LAST EXPUNGE?
MOVX T1,<EXWTIM*^D60000> ;DONT DO EXPUNGES IN FIRST n MIN
CAMG T1,TODCLK
CALL EXPALL ;YES, DO EXPUNGE *
RET ;[9113] Return
ENDSV. ;[9113] End of STKVAR for CHKDKS
SUBTTL Job 0 Forks -- Periodic Checker (CHKR) -- Expunge Boot Structure (EXPALL)
;ROUTINE TO DO EXPUNGE * WHEN DISK SPACE LOW
;START FORK AND MARK IT RUNNING
; CALL EXPALL
;RETURNS +1 ALWAYS
NR EXPTIM,1 ;TIME OF LAST EXPUNGE PLUS MIN INTERVAL
NR EXPFRK,1 ; 0 := NO EXPUNGE FORK
; -1,,FRKH := FORK RUNNING
; 0,,FRKH := EXPUNGE DONE
EXPALL: MOVX T1,CR%CAP ;PASS CAPABILITIES DOWN
CFORK ;CREATE FORK
BUG.(HLT,EXPAFK,MEXEC,SOFT,<EXPALL - Job 0 CFORK failed>,,<
Cause: This happens if the CFORK JSYS fails to create a fork
for doing the system-wide expunge of structure BS:. This could most
likely happen if all the fork slots are used up.
>) ;[7.1112]
HRROM T1,EXPFRK ;MARK FORK RUNNING
MOVE T2,[MSEC1,,EXPAL0] ;START INFERIOR
MSFRK ; IN MONITOR MODE
RET ;RETURN (WAIT TILL DONE)
;EXPUNGE FORK STARTS HERE
EXPAL0: MOVX T1,USRCTX ;SET FUNNY JSYS CONTEXT
MOVEM T1,FFL
SETZM FPC ;SET PC
MCENTR
CALL EXPAL1 ;AWAY WE GO
HRRZS EXPFRK ;SAY WE ARE DONE
HALTF ;AND STOP
;Worker routine for EXPAL0
EXPAL1: STKVAR <<MSGBBF,^D70>,SAVSIZ,SAVSTR> ;[9113] Storage for message
MOVE T2,FACTSW ;[9113] Load current system settings
TXNE T2,SF%CDE!SF%BTE ;[9113] Bit table errors on startup?
RET ;[9113] Yes, don't expunge
MOVE T1,STRTAB+PSNUM ;[9113] Load the SDB address for STRTAB
MOVE T1,SDBNAM(T1) ;[9113] Load the name of that structure
MOVEM T1,SAVSTR ;[9113] Save it for later
TXNN T2,SF%MS1 ;[9113] Are level 1 messages wanted?
IFSKP. ;[9113] Yes
HRROI T1,MSGBBF ;[9113] Point to message buffer
CALL BNNAME ;[9113] (T1/T1) Give system identification
HRROI T2,[ASCIZ/: Deleted files will be expunged from structure /] ;[9113]
CALL BASCIZ ;[9113] (T1,T2/T1) Append that string
MOVE T2,SAVSTR ;[9113] Save real structure name
CALL B6BIT ;[9113] (T1,T2/T1) Convert that to SIXBIT
HRROI T2,[ASCIZ/: in 30 seconds]
/] ;[9113] Complete the message
CALL BASCIZ ;[9113] (T1,T2/T1) Append that string
HRROI T2,MSGBBF ;[9113] Point to that message now
CALL ALLMSG ;[9113] (T2/) Yes send the message
ENDIF.
MOVEI T1,^D30000 ;Load thirty seconds
DISMS ;GIVE USERS TIME TO UNDELETE
MOVX T1,RC%AWL ;ALLOW WILD CARDS
HRROI T2,[ASCIZ "BS:<*>"] ;[7.1112]Clean up Boot Structure
RCDIR ;GET FIRST DIRECTORY NUMBER
ERJMP [BUG.(CHK,EXPRCD,MEXEC,HARD,<EXPALL - RCDIR failure>,,<
Cause: RCDIR% failed to translate the first directory of BS:<*> to a
directory number in routine EXPALL.
Action: The system-wide expunge of PS: has not been done. There may be
hardware or directory structure problems with the boot structure.
If this BUG persists, make it dumpable and submit an SPR with the
dump and a copy of MONITR.EXE. If possible, include any known
method for reproducing the problem and/or the state of the system
at the time the BUG was observed.
>) ;[7.1112]
JRST EXPAL3] ;WE TRIED
; JRST EXPAL2 ;[9113] Start expunging
;Loop to expunge each directory
EXPAL2: SETZ T1, ;NOTHING SPECIAL
MOVE T2,T3 ;PUT DIRECTORY NUMBER IN RIGHT PLACE
DELDF ;EXPUNGE
ERJMP .+1 ;IGNORE FAILURES
MOVX T1,RC%STP!RC%AWL ;STEP TO NEXT
MOVE T3,T2 ;WHERE WE LEFT OFF
HRROI T2,[ASCIZ "BS:<*>"] ;[7.1112]WHERE WE STARTED
RCDIR ;...
ERJMP EXPAL3 ;QUIT ON FAILURE
TXNN T1,RC%NMD ;DONE?
JRST EXPAL2 ;NO - KEEP GOING
;Here when we have completed looping through all directories on BS:.
EXPAL3: MOVX T1,<EXWTIM*^D60000> ;DONE, SET NEXT POSSIBLE TIME
ADD T1,TODCLK
MOVEM T1,EXPTIM
MOVE T3,FACTSW ;[9113] Load current settings
TXNN T3,SF%MS1 ;[9113] Want level 1 messages?
IFSKP. ;[9113] Yes
HRROI T1,MSGBBF ;[9113] Point to message buffer
CALL BNNAME ;[9113] (T1/T1) Start with showing id
HRROI T2,[ASCIZ/: Expunge of structure /] ;[9113] More message
CALL BASCIZ ;[9113] (T1,T2/T1) Get that string off right
MOVE T2,SAVSTR ;[9113] Get real structure name
CALL B6BIT ;[9113] (T1,T2/T1) Convert that to SIXBIT
HRROI T2,[ASCIZ/: completed]
/] ;[9113] Complete the message
CALL BASCIZ ;[9113] (T1,T2/T1) Append that string
HRROI T2,MSGBBF ;[9113] Point to that string now please
CALL ALLMSG ;[9113] (T2/) Notify users
ENDIF. ;[9113] End of sendall code
MOVEI T1,PSNUM ;[9113] Use boot structure
CALL GSTRPG ;[9113] (T1/T1,T2) Get count of used and free
MOVEM T2,SAVSIZ ;[9113] Save free now
HRROI T1,MSGBBF ;[9113] Where it's going
CALL BSTAMP ;[9113] (T1/T1) Timestamp first
HRROI T2,[ASCIZ/ Expunge completed for structure /] ;[9113] Message
CALL BASCIZ ;[9113] (T1,T2/T1) Start that string please
MOVE T2,SAVSTR ;[9113] Load the name of that structure
CALL B6BIT ;[9113] (T1,T2/T1) Convert that from SIXBIT
HRROI T2,[ASCIZ/:, /] ;[9113] Tie off previous string
CALL BASCIZ ;[9113] (T1,T2/T1) append that string
MOVE T2,SAVSIZ ;[9113] Load free count
CALL BNOUT ;[9113] (T1,T2/T1) Output that number
HRROI T2,[ASCIZ/ free
/] ;[9113] Tie off previous string
CALL BASCIZ ;[9113] (T1,T2/T1) append that string
MOVEI T2,MSGBBF ;[9113] Point to beginning of resident buffer
MOVEI T3,.QBSYS ;[9113] .QBDTY value for system message
CALLRET WROPR0 ;[9113] (T1,T2,T3/) Send the message to ORION
ENDSV. ;[9113] End of that STKVAR at EXPAL1
SUBTTL Job 0 Forks -- Periodic Checker (CHKR) -- Utility Routines
;[9113] Here to convert a SIXBIT word in T2 to a ASCIZ string.
;Call with
; T1/ destination designator
; T2/ SIXBIT word
;Returns +1 always
B6BIT: JUMPE T2,R ;[9113] Return if end of SIXBIT
SETZ T3, ;[9113] Load a clear word to rotate into
ROTC T2,6 ;[9113] Get one character into T3
ADDI T3,"A"-'A' ;[9113] Convert to ASCII from SIXBIT
IDPB T3,T1 ;[9113] Store character
JRST B6BIT ;[9113] Loop for all characters
;[9113] Here to append a ASCIZ strings
;Call BASCIZ with
; T1/ destination designator
; T2/ source designator
;Call BCRLF to append a string with
; T1/ destination designator
;Returns +1 always, smashes T3
BCRLF: HRROI T2,CRLF ;[9113] Point to crlf
BASCIZ: SETZ T3, ;[9113] Terminate on null
SOUT ;[9113] Send the string
ERJMP .+1 ;[9113] Ignore that problem please
RET ;[9113] Return +1 always with T1 updated
;[9113] Here to do a NOUT of a decimal number.
;Call with
; T1/ destination designator
; T2/ number
;Returns +1 always, smashes T3
BNOUT: MOVEI T3,^D10 ;[9113] Send number outin decimal
NOUT ;[9113] Slowly grind the number out
ERJMP .+1 ;[9113] Again be ignorant
RET ;[9113] and then return
;[9113] Here to append the system name to a message to be sent to all users.
;Call with
; T1/ destination designator
;Returns +1 always, T2 and T3 updated.
BNNAME: HRROI T2,[ASCIZ/
[/] ;[9113] Point to crlf bell bracket
CALL BASCIZ ;[9113] (T1,T2/T1) Start the string
DMOVE T2,OURNAM ;[9113] Load the local DECnet node name
CAMN T2,[ASCII/TOPS2/] ;[9113] Is the node name
CAME T3,[ASCII/0/] ;[9113] Unchanged from the default?
IFSKP. ;[9113] Yes
MOVE T2,T1 ;[9113] Copy the destination pointer
MOVX T1,.GTHNS ;[9113] Number to name conversion function
SETO T3, ;[9113] -1 means local host name please
GTHST% ;[9113] Try getting internet host name
IFNJE. ;[9113] If that worked
MOVE T1,T2 ;[9113] Get pointer back in T1
RET ;[9113] and return with internet name used
ENDIF. ;[9113] So, no DECnet or Internet name to use
HRROI T1,[ASCIZ/System/] ;[9113] Point to string to use
EXCH T1,T2 ;[9113] Swap output pointer with input pointer
CALLRET BASCIZ ;[9113] (T1,T2/T1) Append that string in last
ENDIF. ;[9113] So the local DECnet name will be used
HRROI T2,OURNAM ;[9113] Point to local system name
CALLRET BASCIZ ;[9113] (T1,T2/T1) Send that along and return
;[9113] Routine to output a timestamp for any message if system time set.
;Call with
; T1/ destination designator
;Returns +1 always, T2 and T3 smashed
BSTAMP: PUSH P,T1 ;[9113] Save output pointer for a little bit
CALL LGTAD ;[9113] (/T1) Get current time and date
POP P,T2 ;[9113] Restore the pointer to T2
EXCH T1,T2 ;[9113] Swap the time with the pointer
JUMPLE T2,R ;[9113] Return now if time not set
SETO T2, ;[9113] Now is the time
SETZ T3, ;[9113] Default format
ODTIM% ;[9113] Now do it in normal short format
ERJMP .+1 ;[9113] Avoid MONNEJ
RET ;[9113] and return
;[9113] Here to build string to send to ORION.
;Call with
; T1/ Byte pointer to current position in buffer
; T2/ ASCIZ message pointer to be appended to buffer
; T3/ Address of start of buffer to send to ORION
; T4/ number to print, in decimal radix
;Returns +1 always with message sent
BMESS: MOVE T3,T1 ;[9113] Start of buffer is right here
STKVAR <BMESMP,BMESAS,BMESNP> ;[9113] Some storage for later
MOVEM T2,BMESMP ;[9113] Save pointer to message
HRRZM T3,BMESAS ;[9113] Save start of buffer
MOVEM T4,BMESNP ;[9113] Save number to print
CALL BSTAMP ;[9113] (T1/T1) Yes output time first
MOVE T2,BMESMP ;[9113] Load message pointer
CALL BASCIZ ;[9113] (T1,T2/T1) Append that message string
MOVE T2,BMESNP ;[9113] Copy number to print
CALL BNOUT ;[9113] (T1,T2/T1) Send the number
CALL BCRLF ;[9113] (T1/T1) Output a crlf to tie off string
MOVE T2,BMESAS ;[9113] Point to beginning of resident buffer
MOVEI T3,.QBSYS ;[9113] .QBDTY value for system message
CALLRET WROPR0 ;[9113] (T1,T2,T3/) Send the message to ORION
SUBTTL Mini-EXEC
;'MINI-EXEC' - SIMPLE COMMAND INTERPRETER FOR SPECIAL FUNCTIONS
SWAPCD
EXEC2: MOVE T1,JOBBIT
IFXN. T1,LOGIOB ;LOGIN OR OUT?
BUG.(CHK,EXILGO,MEXEC,SOFT,<EXECI - Interrupt during login or logout>,,<
Cause: Control has passed to the mini-exec because the top fork hit a
terminating condition or monitor interrupt. The top fork EXEC may
have been wiped out. In addition, the job was trying to log in or
out. The fork is put into an infinite wait state since any other
action might lead to further itraps, interrupts, looping, etc.
Action: If this BUG persists, make it dumpable and submit an SPR with the
dump and a copy of MONITR.EXE. If possible, include any known
method for reproducing the problem and/or the state of the system
at the time the BUG was observed.
>)
WAIT% ;YES, SOME KIND OF DISASTER. GO AWAY QUIETLY.
ENDIF.
MOVEI 1,100 ;ESTABLISH CORRECT TTY MODES
MOVE 2,NORMTF
SFMOD
MOVE 2,TTICB1
MOVE 3,TTICB2
SFCOC
CALL DTIALL ;DISABLE ALL TERMINAL INTERRUPTS
MOVE 1,[XWD 20,^D34] ;T1/ CTRL/P ON CHANNEL 34
ATI ;ASSIGN CONTROL-P FOR INTERRUPTS
MOVE 1,[MSEC1,,EXECI] ;SETUP TO GET INTERRUPTS IN MON
CALL MONBKX
MOVE 2,JOBNO
HRRZ 1,JOBDIR(2)
IFE. T1
SETZM CAPMSK ;IF NOT LOGGED, FLUSH ALL CAPS
SETZM CAPENB
MOVE 3,CTRLTT
CAME 3,CTYLNO ;ALLOW MINI-EXEC ONLY ON CTY
ANSKP.
MOVE T3,SPJCAP ;CTY, NOT LOGGED IN, GIVE ALL CAPABILITIES
MOVEM T3,CAPENB
MOVEM T3,CAPMSK
MOVEI T3,OPERDN ;[7.1112]Get directory number of <OPERATOR>
MOVEM T3,JOBDIR(T2) ;[7.1112]INDICATE LOGGED IN AS <OPERATOR>
STOR T3,JSDIR ;[7.1112]Save as connected directory
SETZRO JSCDF ;[7.1112]No string in JSB
MOVE T3,LGSIDX ;[7.1112]Get number of Login Structure
MOVE T3,STRTAB(T3) ;[7.1112]Get SDB address
LOAD T3,STRUC,(T3) ;[7.1112]GET ITS UNIQUE STRUCTURE CODE
STOR T3,JSUC ;[7.1112]SAVE AS CONNECTED STRUCTURE CODE
MOVE T3,[[3
ASCIZ "OPERATOR"],,USRNAM] ;[7.1112]
BLT T3,USRNAM+2 ;[7.1112]SET DEFAULT USER NAME TO OPERATOR
ENDIF.
JN JBMX,,EXECT0 ;IF BEEN IN MX BEFORE, DONT CHECK CAPS
MOVE T1,CAPENB ;[7.1112]LOOK AT CAPS, ALLOW MINI-EXEC
TRNE T1,SC%WHL ;[7.1112]ONLY IFWHEEL
IFSKP.
SKIPE FORKN ;OTHERWISE,
HALTF ;HALTF IF BELOW EXEC
SETONE JSFLO ;REMEMBER THE FORCED LOGOUT
JRST LOGO ;LOGOUT IF TOP FORK
ENDIF.
SETONE JBMX ;REMEMBER THAT JOB WAS IN MINI-EXEC
; ..
SUBTTL Mini-EXEC -- Command Dispatch
;MINI-EXEC...
EXECT0: TMSG (MX>)
EXECT1: PBIN ;GET USER INPUT
CAIN T1,.CHCRT ;FLUSH CR
JRST EXECT1
CAIL 1,"A"+40 ;LC CHAR?
CAILE 1,"Z"+40
SKIPA ;NO
SUBI 1,40 ;YES, CONVERT
CAIN T1,.CHLFD ;IGNORE BLANK LINE
JRST EXECT0
MOVSI 4,-NXCMD ;SCAN COMMAND TABLE
EXECT2: HLRZ 2,XCMD(4) ;GET KEY LETTER FOR THIS COMMAND
CAMN 1,2 ;SAME AS JUST TYPED?
JRST [ HRRZ 2,XCMD(4) ;YES, GET DISPATCH ADDRESS
JRST 0(2)] ;GO TO IT
AOBJN 4,EXECT2 ;TRY ALL COMMANDS
JRST EXERR ;NOT FOUND, INDICATE ERROR
;MINI-EXEC COMMANDS
DEFINE CM (NAM,LOC)<
XWD "NAM",LOC>
XCMD:
REPEAT 0,<
CM B,EBLT ;BLT SWP MON
>
CM D,EDMP ;DUMP ON FILE
CM E,GEX ;EXEC
CM G,EGET ;GET FILE
CM J,EJMP ;JUMP TO ADDRESS
CM R,EREST ;RESET
CM S,EST ;START
CM <^>,MRETN ;DO MRETN
CM </>,TODDT ;GO TO MDDT
NXCMD==.-XCMD
SUBTTL Mini-EXEC -- BLT Swappable Monitor (Historical)
;'BLT SWP MON' - BLT SWAPPABLE CODE TO USER SPACE. SHOULD DO RESET FIRST,
;THEN DUMP ON DTA--
REPEAT 0,<
EBLT: TMSG <LT SWP MON>
CALL OKGO
MOVE 2,SWCEND ;LST PAGE
LSH 2,^D9
MOVE T1,[NRCOD,,NRCOD]
XBLTMU [BLT 1,777(2)]
JRST EXEC2
> ;END OF REPEAT 0
SUBTTL Mini-EXEC -- Reset Command
;'RESET'
EREST: TMSG <ESET>
CALL OKGO
CALL DRESET ;DO THE RESET
JRST EXEC2
;DRESET IS COMMON ROUTINE USED BY SEVERAL COMMANDS TO DO A RESET
DRESET: MOVEI 1,-4
KFORK ;KILL ALL FORKS
MOVNI 1,1
MOVSI 2,400000
MOVE 3,[1B0+1000] ;CLEAR ALL PAGES FROM USER MAP
PMAP
MOVNI 1,1 ;CLOSE ALL FILES
CLOSF
JFCL
RET
;OKGO - ROUTINE TO LOOK FOR CONFIRMATION AFTER MINI-EXEC HAS
;TYPED THE COMPLETION OF THE COMMAND.
; CALL OKGO
;RETURNS +1: CONFIRMATION FOUND
;IF NO CONFIRMATION WAS FOUND, GOES TO ERROR ROUTINE
OKGO: PBIN
CAIN T1,.CHCRT ;FLUSH CR
JRST OKGO
CAIN T1,.CHLFD ;CRLF MEANS GO
RET
NODD1: POP P,1 ;ANYTHING ELSE MEANS ABORT
JRST EXERR
SUBTTL Mini-EXEC -- Exec Command
;'EXEC'
GEX: TMSG <XEC>
CALL OKGO ;CONFIRM
CALL DRESET ;CLEAR PREVIOUS PROGRAM TO GUARANTEE CINITF IN EXEC IS CLEAR
;HERE TO GET A NEW COPY OF THE EXEC. REACHED FROM MINI-EXEC 'EXEC'
;COMMAND OR WHEN A NEW JOB IS BEING CREATED. IF FILE EXISTS,
;GOES TO START IT. IF NOT, PRINTS MESSAGE AND GOES TO MINI-EXEC
STEX: MOVSI 1,(GJ%OLD!GJ%PHY!GJ%SHT) ;OLD FILE+SHORT FORM
HRROI 2,[ASCIZ /DEFAULT-EXEC:/]
GTJFN
STEXF: JRST [ SKIPE CRJFLG ;IS THIS A CRJOB FAILURE?
JRST CRJMEX ;YES. GO GIVE FAIL CODE
TMSG <NO EXEC>
JRST EXCRR]
HRLI 1,.FHSLF
GET
ERJMP STEXF ;CATCH FAILURE OF GET
SKIPN CRJFLG ;CREATED JOB?
JRST GEX1
RET ;RETURN TO FINISH CRJOB STUFF
CRJMEX: MOVEI T1,CRJBX2 ;PREVENT CRJOB GETTING INTO MINIEXEC
CALL SETANS ;GO SETUP CRJANS
JRST LOGO ;AND FLUSH OUT THIS JOB.
SUBTTL Mini-EXEC -- Jump Command
;'JUMP TO ADDRESS' - JUMP TO USER ADDRESS
EJMP: TMSG <UMP TO >
MOVEI 1,100
MOVEI 3,^D8 ;GET OCTAL ADDRESS
NIN
JRST EXERR
HRRZM 2,-1(P) ;SAVE ADDRESS
BKJFN ;BACKUP TO READ TERMINATOR
JFCL
CALL OKGO
JRST MRETN ;RETURN TO USER ADDRESS ON STACK
SUBTTL Mini-EXEC -- Get/Start/Dump Commands
;'GET FILE'
EGET: TMSG <ET FILE >
MOVSI 1,(1B2+1B4+1B16+1B17) ;OLD FILE,CONFIRM,IFOF,SHORT
MOVE 2,[XWD 100,101]
GTJFN
JRST EXERR
HRLI 1,400000 ;THIS FORK
GET
ERJMP EXERR
JRST EXEC2
;'START' - STARTS PROGRAM GOTTEN VIA 'GET'
EST: TMSG <TART>
CALL OKGO
GEX1: MOVE 1,EVADDR
JUMPN 1,.+2
UMOVE 1,120 ;USE JOBSA
MOVEM 1,-1(P)
JRST MRETN
;'DUMP ON FILE'
EDMP: TMSG <UMP ON FILE >
MOVSI 1,(1B0+1B3+1B4+3B17) ;NEW V,PNT O/N,CONFRM,IFOF,SHRT
MOVE 2,[XWD 100,101]
GTJFN
JRST EXERR
HRLI 1,400000 ;THIS FORK
MOVE 2,[XWD -1000,520000] ;SAVE ALL ADDRESS SPACE
SETZ 3,
SSAVE
JRST EXEC2
SUBTTL Mini-EXEC -- Utility Routines
;ERROR CONDITION - PRINT A QUESTION MARK AND GO BACK TO START OF
;MINI-EXEC
EXERR: TMSG < ?>
MOVEI 1,100
CFIBF ;CLEAR INPUT BUFFER
;PRINT CARRIAGE RETURN/LINE FEED
EXCRR: SKIPE CRJFLG ;IS THIS A CRJOB?
JRST CRJMEX ;YES. GET OUT OF MINIEXEC.
TMSG <
>
JRST EXEC2
EXCRRW: TMSG <
>
JRST EXEC2
SUBTTL Mini-EXEC -- Handle Interrupts (EXECI)
;PSI TRAPPED TO HERE
EXECI:: XCT FRKNOP ;NOP UNLESS MDDT BPT SET
EXCH 1,ITFFL ;SAVE 1, GET TRAP FL
TLNN 1,(UMODF) ;USER?
JRST EXECI1 ;NO
MOVEM 1,FFL ;SET FLAGS
MOVE 1,ITFPC ;SET PC
MOVEM 1,FPC ;YES, ENTER MONITOR AT THAT LOC
MOVE 1,ITFFL ;RESTORE AC1
EXECI2: MCENTR
SETOM PRIMRY
SKIPE CRJFLG ;IS THIS A CRJOB?
JRST CRJMEX ;YES. GET OUT OF MINIEXEC.
MOVEI 1,100
CFIBF ;CLEAR INPUT BUFFER
ERJMP EXECI4 ;error while attempting to LOG IN/OUT
CALL CLRINT ;CLEAR THE SOFTWARE INTERRUPT SYSTEM
TRNN 2,2 ;CHANNEL 34?
JRST EXECI3
MOVEI 1,-4
FFORK ;FREEZE FORKS
MOVEI 1,101
CFOBF ;CLEAR OUTPUT BUFFER
ERJMP EXECI4 ;error while attempting to LOG IN/OUT
TMSG <
Abort
>
JRST EXEC2
;...
;...
EXECI1: MOVE P,UPP ;RESTORE TOP OF PDL
MOVE 2,1(P) ;GET USER PC
MOVEM 2,FPC ;STORE PC
MOVX T1,USRCTX ;SET USER MODE FLAGS WORD
MOVEM 1,FFL
JRST EXECI2
EXECI3: TMSG <
Interrupt at >
MOVEI 1,101
HRRZ 2,UPP
MOVE 2,1(2) ;GET TOP PC
MOVEI 3,10 ;RADIX
NOUT ;PRINT ADDRESS
JFCL
JRST EXCRRW ;TO MINI-EXEC IF SC%WHL
EXECI4: MOVE T1,JOBNO ;get current job number
HLRZ T1,JOBPT(T1) ;get controlling TTY:
MOVE T2,LSTERR ;get last error this process
BUG.(INF,LGFAIL,MEXEC,SOFT,<LGOUT or LOGIN JSYS failed>,<<T1,JOBPT>,<T2,LSTERR>>,<
Cause: An attempt to log in/out a job has failed when it should have succeded.
The most likely cause of this is terminals that have been TTYSTPed,
then a LGOUT or LOGIN JSYS was attemped. An attempt to detach the
terminal, then logout the job is made. If either of these fail,
the job is put in a permanent wait state.
Action: If this BUG persists, make it dumpable and submit an SPR with the
dump and a copy of MONITR.EXE. If possible, include any known
method for reproducing the problem and/or the state of the system
at the time the BUG was observed.
Data: JOBPT - The terminal number
LSTERR - The reason of the failure
>,,<DB%NND>) ;[7.1210]
DTACH ;attempt to detach myself
ERJMP .+1 ;ignore errors
SETOM T1 ;me
LGOUT ;logout myself
ERJMP .+1 ;ignore errors
WAIT ;can't log myself out, go to sleep
ERJMP .+1 ;ignore errors
JRST .-2 ;try to sleep again.
SUBTTL BUGxxx Processing
;ROUTINE CALLED BY JOB 0 TO FINISH LOADING UP SYSERR BLOCK
; FOR BUGHLT'S AND BUGCHK'S
;ACCEPTS IN T1/ ADDRESS OF SYSERR BLOCK
;RETURNS +1: ALWAYS
;[9093] Make LOGBUG a RSCOD entry point so it can be called from any section.
RESCD ;[9093] Callable from any section
LOGBUG::XCALLRET (MSEC1,XLOGBU) ;[9093] Get to section one now
SWAPCD ;[9093] Back to section one swappable
XLOGBU: SAVEAC <Q1,Q2,P1> ;[9093] Save some ACs
TRVAR <BUGSP,BUGPNM,BUGTAD,<LOGBUF,^D70>,<QBLK,4>>
MOVEM T1,Q1 ;SAVE POINTER TO SYSERR BLOCK
HRROI T1,LOGBUF ;POINTER TO BLOCK
SKIPN SAVTRE ;SAVING TREES?
IFSKP.
CALL SLOGTM ;YES, OUTPUT THE TIME
FMSG < ***BUG>
CALL LOGNAM ;OUTPUT THE BUG NAME
FMSG <*** >
ELSE.
FMSG <
********************
*BUG>
CALL LOGNAM ;OUTPUT THE BUG NAME
CALL RLOGTM ;OUTPUT THE DATE AND TIME
FMSG <
*>
ENDIF.
SETZB T2,BUGSP ;CLEAR POINTERS
IFN FTNSPSRV,< ;[6.0]
MOVE Q2,BUGTP ;ADDRESS OF BUG POINTERS
MOVE P1,BUGTL ;LENGTH OF TABLE
DO.
SOJL P1,[HRROI T2,[ASCIZ/Message not found for this address/]
JRST ENDLP.]
MOVE T4,0(Q2) ;SEARCH FOR ADDRESS IN TABLE
HLRZ T2,T4 ;GET ADDRESS
HRRZ T3,SEBDAT+BG%ADR(Q1) ;Get BUGHLT address
CAME T2,T3 ;Found it?
AOJA Q2,TOP. ;NO, STEP POINTER AND LOOP
HRRZ T2,T4 ;GET POINTER TO MESSAGE STRING
HLL T2,Q2 ;INCLUDE SECTION NUMBER
MOVEM T2,BUGSP ;SAVE IT FOR SYSERR BLOCK
>
IFE FTNSPSRV,< ;[6.1]
MOVE Q2,BUGTP ;ADDRESS OF BUG POINTERS
MOVE P1,BUGTL ;LENGTH OF TABLE
MOVE T4,SEBDAT+BG%ADR(Q1) ;Get PC of BUG
TLNN T4,-1 ;Skip if not section 0
HRLI T4,MSEC1 ; otherwise load section 1 for compare
DO.
SOJL P1,[HRROI T2,[ASCIZ/Message not found for this address/]
JRST ENDLP.]
CAMN T4,0(Q2) ;Compare with BUG in BGPTR
IFSKP. ; -not the one,
ADDI Q2,2 ; Move to next entry
LOOP. ; and go back to try next
ENDIF.
MOVE T2,1(Q2) ;Get BGSTR pointer
MOVEM T2,BUGSP ;SAVE IT FOR SYSERR BLOCK
>
TXO T2,<.P07> ;MAKE OWGBP
ENDDO.
SETZ T3, ;Set up for SOUT
SOUT ;TYPE OUT STRING
SETZM BUGPNM ;START WITH A NULL PROGRAM NAME
SKIPGE SEBDAT+BG%JOB(Q1) ;IS THERE A JOB?
JRST LOGBF5 ;NO, SKIP JOB/USER LINE
SKIPN SAVTRE ;SAVING TREES?
IFSKP.
FMSG < Job: > ;YES
ELSE.
FMSG <
*Job: >
ENDIF.
HRRZ T2,SEBDAT+BG%JOB(Q1) ;GET JOB NUMBER
MOVEI T3,12 ;TYPE IT IN DECIMAL
NOUT
ERJMP .+1
MOVE T2,JOBPNM(T2) ;GET PROGRAM NAME
MOVEM T2,BUGPNM ;SAVE NAME OF PROGRAM
FMSG <, User: >
HRRZ T2,SEBDAT+BG%USR(Q1) ;GET USER LOGGED IN DIR NUMBER
HRLI T2,USRLH ;TURN IT INTO PROPER FORMAT USER NUMBER
DIRST ;TYPE OUT USER NAME
ERJMPS .+1 ;IGNORE ERROR, PRESERVE PTR IN T1
LOGBF5: SKIPG Q2,SEBDAT+BG%RCT(Q1) ;GET COUNT OF REGISTERS SAVED
JRST LOGBF7 ;NO REGISTERS TO BE TYPED
SKIPE SAVTRE ;[9113] Saving trees?
SKIPA T2,[-1,,[ASCIZ/, Data: /]] ;[9113] Yes, Saving trees
HRROI T2,[ASCIZ/
*Additional data: /] ;[9113] Not saving trees be verbose
CALL BASCIZ ;[9113] (T1,T2/T1) Send that text along
XMOVEI T4,SEBDAT+BG%REG(Q1) ;GET POINTER TO REGISTER AREA
LOGBF6: MOVE T3,[NO%MAG+10] ;TYPE THEM IN UNSIGNED OCTAL
MOVE T2,0(T4) ;GET NEXT REG TO TYPE
NOUT
ERJMP .+1
SOJLE Q2,LOGBF7 ;DONE?
FMSG <, > ;NO
AOJA T4,LOGBF6 ;GO TYPE OUT REST
LOGBF7: SKIPN SAVTRE ;SAVING TREES?
IFSKP.
FMSG <
>
ELSE.
FMSG <
********************
>
ENDIF.
SETZ T2,
IDPB T2,T1 ;TIE IT OFF
MOVEI T2,LOGBUF
MOVE T4,SEBDAT+BG%FLG(Q1) ;GET TYPE OF BUG
MOVEI T3,.QBCHK ;BUGCHK BY DEFAULT (BUGHLTS DON'T MAKE IT)
CAIN T4,BG%CHK ;BUGCHK?
MOVEI T3,.QBCHK ;YES, .QBDTY VALUE FOR BUGCHK
CAIN T4,BG%INF ;INFORMATIONAL BUG CHECK?
MOVEI T3,.QBINF ;YES, .QBDTY VALUE FOR BUGINF
CALL WROPR0 ;SEND IT
MOVE T1,CRSTD1 ;GET DATE OF BUGCHK
CAMN T1,[-1] ;IS THERE ONE SET?
CALL LGTAD ;NO, SEE IF IT IS SET NOW
MOVEM T1,BUGTAD ;SAVE DATE AND TIME OF BUGCHK
MOVE T1,Q1 ;GO COPY REST OF DATA TO BLOCK
MOVE T2,[-NBUGET,,BUGET]
CALL SEBCPY
JFCL
SOS BUGCNT ;COUNT DOWN THE QUEUED UP BLOCK COUNT
SETZM BUGCHK ;CLEAR OUT LAST BUGCHK ADR
RET ;FINISHED
BUGET: SEBPTR BG%SVN,SBTSTR,SVN ;SYSTEM NAME
SEBPTR BG%PNM,SBTWD,BUGPNM ;PROGRAM NAME
SEBPTR BG%DAT,SBTWD,BUGTAD ;TIME AND DATE OF CRASH
SEBPTR BG%MSG,SBTSTR,@BUGSP ;BUG MESSAGE
NBUGET==.-BUGET
;LOCAL ROUTINE TO OUTPUT THE TIME
;RETURNS: +1
RLOGTM: FMSG <" at >
SKIPA
SLOGTM: MOVX T3,OT%NDA ;NO DATE, JUST THE TIME
MOVE T2,SEBDAT+BG%DAT(Q1) ;GET TIME AND DATE OF BUG CHECK
ODTIM ;TYPE OUT TIME AND DATE
ERJMP .+1
RET
;LOCAL ROUTINE TO OUTPUT THE BUGXXX TYPE AND NAME
;RETURNS: +1
LOGNAM: MOVE T4,SEBDAT+BG%FLG(Q1) ;GET TYPE OF BUG CHECK
HRROI T2,[ASCIZ/HLT /]
CAIN T4,BG%CHK ;BUGCHK?
HRROI T2,[ASCIZ/CHK /] ;YES
CAIN T4,BG%INF ;INFORMATIONAL BUG CHECK?
HRROI T2,[ASCIZ/INF /] ;YES
SOUT
ERJMP .+1
SKIPE SAVTRE ;SAVING TREES?
IFSKP.
FMSG <"> ;NO
ENDIF.
MOVE T4,[POINT 6,SEBDAT+BG%NAM(Q1)]
LOGNA1: ILDB T2,T4 ;NOW TYPE OUT 6 CHAR NAME
JUMPE T2,R ;IF AT END, STOP TYPING
ADDI T2," " ;TRANSLATE SIXBIT TO ASCII
IDPB T2,T1 ;STORE IT
TLNE T4,770000 ;AT END OF NAME YET?
JRST LOGNA1 ;NO, LOOP BACK FOR REST OF CHARS
RET
;Routine to write message to operator. Uses ORION if it can
; T1/ count of words in string
; T2/ string address
; T3/ .QBDTY value (.QBCHK,.QBINF,.QBSYS)
; CALL WROPER
; or
; T1/ ending bp
; T2/ buffer address
; T3/ .QBDTY value (.QBCHK,.QBINF,.QBSYS)
; CALL WROPR0
; Returns +1 always
;Clobbers all temps
;Format of the QBLK STKVAR storage:
;
; QBLK/ Function and flags ;.QUFNC
; +1/ Response block (not used) ;.QURSP
; +2/ QA%IMM!<Length=1>!.QBDTY ;.QUARG+.QATYP (DISPLAY TYPE)
; +3/ .QBCHK,.QBINF,or .QBSYS ;.QUARG+.QADAT
; +4/ <Length>,,.QBMSG ;.QUARG+.QATYP+2 (MESSAGE BLOCK)
; +5/ ADDR OF STRING ;.QUARG+.QADAT+2
QLNG==6
WROPR0::HRRZS T1 ;GET ADDRESS
SUBI T1,-1(T2) ;COMPUTE WORDS
WROPER::STKVAR<<QBLK,QLNG>>
MOVEI T4,QBLK ;POINT AT OUR BLOCK
MOVEM T2,.QUARG+.QADAT+2(T4) ;STORE STRING
MOVEM T3,.QUARG+.QADAT(T4) ;STORE MESSAGE TYPE
HRLI T1,.QBMSG ;SUBFUNCTION ARG
MOVSM T1,.QUARG+.QATYP+2(T4) ;STASH SUBFUNC STUFF
MOVX T3,<QU%NRS!.QUWTO> ;NO RESPONSE FOR WRITE TO OPERATOR
MOVEM T3,.QUFNC(T4) ;SAVE THE FUNCTION AND FLAGS
MOVX T3,<QA%IMM!<FLD(1,QA%LEN)>!<FLD(.QBDTY,QA%TYP)>>
MOVEM T3,.QUARG+.QATYP(T4) ;SAVE THE DISPLAY TYPE, LENGTH, FLAGS
SETZM .QURSP(T4) ;NO RESPONSE BLOCK
MOVEI T1,QLNG ;LENGTH OF ARG BLOCK
MOVEI T2,QBLK ;POINT AT ARG BLOCK
QUEUE% ;DO IT
ERJMP WROPE0 ;IF FAILED, PUT ON THE CTY
JE SF%BGS,FACTSW,R ;CHECK IF WANT BOTH
WROPE0: HRRO T1,.QUARG+.QADAT+2(T4) ;GET POINTER TO STRING
PSOUT ;SO DO IT
RET ;DONE
ENDSV.
SUBTTL BUGxxx Processing -- BUGHLT In Job Context (EXBUGH)
RESCD
;BUGHLT IN JOB CONTEXT TRAPS TO HERE
EXBUGH::SETZM NSKED ;BE OKSKED
SETZM CRSKED ;BE NOT 'CRITICAL SECTION'
SETOM TRAPC
MOVE 1,UPDL ;RESET STACK, ETC.
MOVEM 1,FPC ;SET PC
MOVX T1,USRCTX ;SET USER MODE FLAGS WORD
MOVEM 1,FFL
MCENTR
SETZM INTDF
SKIPN JOBNO ;JOB 0?
JRST CHKRI ;YES, INTERRUPT
HRRZ 1,PRIMRY
HRROI 2,[ASCIZ /
BUGHLT at /]
SETZ 3,
SOUT
HRRZ 2,BUGHLT
MOVEI 3,^D8
NOUT
JFCL
TMSG <
>
ITERX ;GENERATE ITRAP
SWAPCD
;ANY INTERRUPT WILL EVENTUALLY TRAP TO HERE
CHKRI: BUG.(CHK,JB0CSH,MEXEC,SOFT,<Job 0 crash>,<<ITFPC,PC>,<LSTERR,LSTERR>>,<
Cause: An unexpected interrupt has occurred in the job 0 fork which
checks system status. The context is reinitialized, and
the process is restarted.
Action: If this BUG persists, make it dumpable and submit an SPR with the
dump and a copy of MONITR.EXE. If possible, include any known
method for reproducing the problem and/or the state of the system
at the time the BUG was observed. In the dump, the stack may be
examined to determine the situation which caused the error.
Data: PC - PC at which error occurred.
LSTERR - Last error code for this fork.
>)
SETZM NSKED ;BE OKSKED
SETZM CRSKED ;BE NOT 'CRITICAL SECTION'
MOVX CX,USRCTX
MOVEM CX,FFL
MCENTR ;REINIT CONTEXT
SETZM PSIBW
JRST CHKR
SUBTTL BUGxxx Processing -- Store Time For BUGxxx (CHKBGS)
;CHKBGS - CHECK IF TIME TO STORE NEW ASCII TIME AND DATE FOR TYPEOUT
; AT BUGHLT TIME
;
;RETURNS: +1, ALWAYS
CHKBGS: MOVE T1,TODCLK ;GET CURRENT DATE AND TIME
CAML T1,BUGTMS ;TIME TO STORE ASCII STRING?
SKIPGE TADIDT ;HAS TIME BEEN SET
RET ;NO, NOT YET
MOVX T2,<BUGINT> ;GET TIME INTERVAL FOR STORING STRING
ADD T1,T2 ;GET NEXT TIME FOR STORING STRING
MOVEM T1,BUGTMS ;STORE
MOVE T1,[POINT 7,BUGTIM] ;GET BYTE POINTER FOR STORING TIME
MOVNI T2,1 ;GET CURRENT TIME AND DATE
SETZ T3, ; IN DEFAULT FORMAT
ODTIM
MOVE T2,"/" ;STORE DELIMITER FOR BUGMSG ROUTINE
IDPB T2,T1
RET
SUBTTL BUGxxx Processing -- Log Parity Error (PFCPJ0)
;ROUTINE TO FINISH LOGGING OF PARITY ERROR - RUN IN JOB 0 CONTEXT
; T1/ ADDRESS OF SYSERR BLOCK
PFCPJ0::SAVEQ
HLRZ FX,SEBDAT+PT%JOB(T1) ;GET FORKX AT TRAP
CAIE FX,-1
SKIPGE FKPT(FX)
RET ;IN SCHED OR FORK KILLED, NO DATA
LOAD T2,FKJBN ;GET JOB NUMBER
HRRM T2,SEBDAT+PT%JOB(T1) ;REPORT IT
HRRZ T3,JOBDIR(T2) ;GET LOGGED-IN DIRECTORY
HRLI T3,USRLH ;MAKE IT A USER NUMBER
MOVEM T3,SEBDAT+PT%USR(T1) ;REPORT IT
MOVE T3,JOBPNM(T2) ;GET PROGRAM NAME
MOVEM T3,SEBDAT+PT%PGM(T1) ;REPORT IT
RET
SUBTTL Send Message To All Lines (ALLMSG)
;Send text to all lines
;Call with T2/ pointer to ASCIZ message
; CALL ALLMSG
;Returns +1 always
ALLMSG::SETZ 1, ;SAY NO WAIT
REPEAT 0,<
HLRZ 3,2 ;CHECK LH OF POINTER
CAIN 3,-1 ;DEFAULT?
HRLI 2,(<POINT 7,0>) ;YES, DO IT
>
SETO T3, ;SAY ALL LINE
TTMSG ;TYPE THE STUFF
ERCAL MESFAL ;[7.1086] Failure, let CTY now
RET ; AND RETURN
MESFAL::BUG.(INF,TTFSMS,MEXEC,SOFT,<Failed to send system message>,<<LSTERR,LSTERR>>,<
Cause: The most likely reason for this failure is that RSX20F cannot
complete the previous TTMSG request. Typically this is caused by a
hung DH11 line, but could be a software bug as well.
Action: Look at the error code which explains the reason for the send
failure. Some error conditions (such as a remote CI node going
down) can cause this BUG to appear and are perfectly legitimate.
If this BUG persists and the last error appears to be something
suspicious, make it dumpable and submit an SPR with the
dump and a copy of MONITR.EXE. If possible, include any known
method for reproducing the problem and/or the state of the system
at the time the BUG was observed.
Data: LSTERR - Last TOPS-20 error code for this fork
>,,<DB%NND>) ;[7.1210][7.1200][7.1086] Bug!
RET ;[7.1086] Now return
SUBTTL End of MEXEC
RESCD
TNXEND
END