Google
 

Trailing-Edge - PDP-10 Archives - isi-saio_19830204 - isi-sa10/stg.mac
There are 95 other files named stg.mac in the archive. Click here to see a list.
;<ISI-SA10>STG.MAC.5451	 3-Feb-83 14:44:52	Edit by ISI-SA10
;
;	SAIO Changes Copyright 1982, All Rights Reserved
;	University of Southern California
;
;<5.ISI.MONITOR>STG.MAC.5450, 16-Jan-83 22:21:36, Edit by BILKIS
;#545	NUPDL increased to 400 until MONPDL problem resolved
;<5.ISI.MONITOR>STG.MAC.5350	 6-Jan-83 21:05:46	Edit by JGOLDBERGER
;#535 	Add DEFAD0
;<5.ISI.MONITOR>STG.MAC.5310,  4-Jan-83 16:53:04, Edit by CHASE
;#531 Make RSI's for INTNIB and INTNFI be RS's again.
;<5.ISI.MONITOR>STG.MAC.5220, 19-Dec-82 22:28:52, Edit by BILKIS
;#522	Conditionally make RFNTC (RFNTO counter) if ISIQ monitor
;<5.ISI.MONITOR>STG.MAC.5200, 16-Dec-82 18:49:29, Edit by BILKIS
;#520	Counters and flags for TCP/IP debugging (OBCNT,HBCNT,FT410)
;<5.ISI.MONITOR>STG.MAC.5010	17-Nov-82 03:09:34	Edit by JGOLDBERGER
;#501   v5 MultiNet
;
;#470 Increase TCPDXI & TCPRX0 (default retransmission) to ^D10 seconds
;
;#460	TM78 support obsolesced by DEC for Rel 5
;
;#437	Change Ournam to be "LOCAL"
;
;#350	BA10 support
;
;#341	Soroc/Televideo-950 terminal types
;
;#261	Getok% parameters for ttmsg%
;
;#233	DM1520, Fox 1100, Hazeltine 1500, Tek 4025, Winning Tec
;	terminal types
;
;#212	Access to spooled device getok%
;
;#211	Class time support
;
;#167	Guarantee minimum number of magtape drives on startup
;
;#163	Increase addressable disk space
;
;#162	Increase NNAMES (Max number of subsystem names) to 80
;
;#157	Penguin support
;
;#156	Datamedia terminal type
;
;#112	Obsolesced by BBN edits to Rel 5/NCP sleep time stuff
;
;#53	QM1 support - removed
;
;#47	JOBACT table
;
;#43	Add HSYST5 for IMP Halt data
;
;#36	Rfnm table parameters
;
;#26 Add sa10 tapes
;
;#25 Add sa10 disks
;
;#14	SWPSTR holds a pointer to the swapping structure SDB
;
;[BBNF]<TAPPAN.NEW>STG.MAC.22,  2-Aug-82 15:18:58, Edit by: TAPPAN
; Add OLDSLD, OLDIDL back
;[BBNF]<TAPPAN.NEW>STG.MAC.21, 27-Jul-82 16:43:10, Edit by: TAPPAN
; Add HOSTPN, LOADMODULE HSTINI
;[BBNF]<TAPPAN.NEW>STG.MAC.20, 23-Jul-82 08:45:37, Edit by: TAPPAN
; Added RFN8TO
;[BBNF]<TAPPAN.NEW>STG.MAC.19, 16-Jul-82 14:06:42, Edit by: EONEIL
;Added NBHLD, #forks in balset wait, deleted OLDSLD and OLDIDL
;[BBNF]<TAPPAN.NEW>STG.MAC.17, 29-Jun-82 10:45:17, Ed: TAPPAN
; TEMP ADD OLDSLD AND OLDIDL
;REL5:<TAPPAN.NEW>STG.MAC.15 25-Jun-82 14:06:43, Edit by TAPPAN
; Remove TELENET, IMP2DV stuff for good.
; Take MNET stuff out from under conditionals
;[BBNF]<TAPPAN.NEW>STG.MAC.13, 18-Jun-82 10:00:55, Edit by TAPPAN
; Add 'DEFHDR's to label DEFWRD sets
;REL5:<TAPPAN.NEW>STG.MAC.11 15-Jun-82 12:04:17, Edit by TAPPAN
; Add RFNTSZ, RFNTAB
;<TAPPAN.NEW>STG.MAC.9, 28-Apr-82 09:02:22, Edit by TAPPAN
; Added Bitgraph terminal type (like Vt52 except bigger)
;<TAPPAN.NEW>STG.MAC.5, 10-Apr-82 14:07:00, Edit by TAPPAN
; Rename CNTPHY -> NFEPHY (and associated variables)
;<BBN-5-MONITOR.FT3>STG.MAC.4,  3-May-82 17:18:12, Edit by RBASCH
; Fix new DEC code for PI levels 5 and 6 - bugcheck when none
; of the service routines recognizes the interrupt as its own
;<BBN-5-MONITOR>STG.MAC.30, 29-Apr-82 11:55:58, Edit by TAPPAN
; FIX ERASE TO END OF LINE FUNCTION ON SCOPTB
;<TAPPAN.4>STG.MAC.14, 28-Feb-82 18:57:07, Edit by TAPPAN
; Change RS STATZZ,0 -> RS STATZZ,1 so USGJFN doesn't get clobbered
;<BBN-4-MONITOR>STG.MAC.4024, 21-Feb-82 16:32:27, Edit by TAPPAN
; Merge in some internet changes
;<BBN-5-MONITOR>STG.MAC.9, 22-Jan-82 17:55:42, Edit by TAPPAN
; Move DEC's LCSSEC to section 8 to avoid conflict with Internet
;<TAPPAN.4>STG.MAC.7,  7-Oct-81 17:27:22, Edit by TAPPAN
; merge in BBNBYT, CLSOVP variables
;<BBN-4-MONITOR>STG.MAC.4015, 25-Aug-81 11:48:21, Edit by TAPPAN
; 100: Added CHAOS variables
;<BBN-4-MONITOR>STG.MAC.4014, 12-Aug-81 10:39:45, Edit by TAPPAN
; Temporarily pushed the NCT's up a few words to try and
; catch whatever is clobbering the output Q's
;[BBND]<BBN-4-MONITOR>STG.MAC.4012, 20-Jul-81 10:47:58, Ed: RBASCH
;ADDED CLSCAP
;<BBN-4-MONITOR>STG.MAC.4012, 16-Jul-81 12:58:59, Edit by TAPPAN
; ADDED DSTLOC, TABSEC - move DST to TABSEC
;[BBND]<NEW-SCHED-MONITOR>STG.MAC.7,  2-Jun-81 15:46:49, Ed: EONEIL
;ADDED JOBCAP
;[BBND]<NEW-SCHED-MONITOR>STG.MAC.6,  7-May-81 17:53:45, Ed: RBASCH
;ADDED CLSJLM, CLSFLG, CLSTYP FOR JOB-BASED SCHEDULING
;[BBND]<TP-MONITOR>STG.MAC.1, 21-Jan-81 14:20:21, Ed: EONEIL
;ADDED CTITNT, CONTNT IN JSB FOR TELENET CONNECT TIME ACCOUNTING
;[BBND]<STRIPPED-MONITOR>STG.MAC.3, 19-Jan-81 16:09:42, Ed: JDELSIGNORE
;STRIPPED OUT OLD TELENET LINE ACCOUNTING
;[BBND]<MERGE.NEW>STG.MAC.3 17-Oct-80 12:41:25, Edit by BTOMCZAK
;Make OFNLEN resident to avoid page fault in scheduler context
;[BBND]<TCP-BBN-4-MONITOR>STG.MAC.4011, 29-Sep-80 11:02:36, Ed: EONEIL
;REMOVED NBSWP AND NBWT (HAD NOT BEEN SUPPORTED).  LEFT SKDFIL, ALSO
;NOT CORRECT, BUT HOLDS POSITION FOR SYSTAT TABLES.
; SETHIQ becomes SETSPQ
; UPD ID= 544, SNARK:<5.MONITOR>STG.MAC.143,  16-Mar-82 20:18:58 by PAETZOLD
;TCO 5.1756 - Increase NHOSTS.  Grumble.  Grumble.
; UPD ID= 498, SNARK:<5.MONITOR>STG.MAC.142,   4-Mar-82 23:23:45 by PAETZOLD
;TCO 5.1745 - Increase size of DTESKP
; UPD ID= 474, SNARK:<5.MONITOR>STG.MAC.141,  12-Feb-82 15:21:21 by GRANT
;TCO 5.1729 - Don't load NSPINT anymore
; UPD ID= 473, SNARK:<5.MONITOR>STG.MAC.140,  12-Feb-82 09:32:08 by MILLER
;Fix typeo in previous edit.
; UPD ID= 471, SNARK:<5.MONITOR>STG.MAC.139,  11-Feb-82 16:50:09 by MILLER
;TCO 5.1728. Fix PI 6 code and add stacks and storage for other PI levels
; UPD ID= 436, SNARK:<5.MONITOR>STG.MAC.138,  22-Jan-82 16:50:43 by MURPHY
;TCO 5.1697 - XSSEV%, etc.  Add PATLEV, DMSLEV.
; UPD ID= 435, SNARK:<5.MONITOR>STG.MAC.137,  22-Jan-82 15:41:05 by PAETZOLD
;TCO 5.1699 - Add VT125 and VK100 support to the monitor
; UPD ID= 433, SNARK:<5.MONITOR>STG.MAC.136,  22-Jan-82 12:03:07 by WALLACE
;TCO 5.1558 - Correct computation that tests whether location of PSB
;  variables and location of UDPL conflict
; UPD ID= 427, SNARK:<5.MONITOR>STG.MAC.135,  21-Jan-82 12:37:58 by MILLER
;TCO 6.1054. ADD .GOATJ FUNCTION OF ACJ
; UPD ID= 425, SNARK:<5.MONITOR>STG.MAC.134,  20-Jan-82 19:24:10 by PAETZOLD
;TCO 5.1684 - Make OFNLEN resident
; UPD ID= 383, SNARK:<5.MONITOR>STG.MAC.133,   8-Jan-82 13:52:04 by TORREY
;TCO 5.1659 - INCREASE SNOOP PAGES FROM 8 TO ^D12
; UPD ID= 359, SNARK:<5.MONITOR>STG.MAC.132,  13-Dec-81 10:47:33 by GRANT
;TCO 5.1636 - add SEGSZ
; UPD ID= 349, SNARK:<5.MONITOR>STG.MAC.131,   9-Dec-81 23:11:56 by SOUTH
;TCO 5.1633 - Add block of variables for dte timer test.
; UPD ID= 339, SNARK:<5.MONITOR>STG.MAC.130,   3-Dec-81 11:55:57 by GRANT
;More or previous edit - fix the second table
; UPD ID= 337, SNARK:<5.MONITOR>STG.MAC.129,   3-Dec-81 10:38:08 by GRANT
;TCO 5.1624 - Increase reserved TTY types from 4 to 20
; UPD ID= 314, SNARK:<5.MONITOR>STG.MAC.128,   7-Nov-81 13:20:08 by PAETZOLD
;TCP 5.1610 - Force NTTMCB off if DCN is off
; UPD ID= 256, SNARK:<5.MONITOR>STG.MAC.127,  13-Oct-81 10:55:14 by MURPHY
;TCO 5.1570 - Fix bug in utilization computation.
; UPD ID= 242, SNARK:<5.MONITOR>STG.MAC.126,   4-Oct-81 23:44:31 by PAETZOLD
;TCO 5.1554 - ADD SPTO3
; UPD ID= 239, SNARK:<5.MONITOR>STG.MAC.125,   2-Oct-81 13:31:51 by MURPHY
;REFINE PREVIOUS
; UPD ID= 206, SNARK:<5.MONITOR>STG.MAC.124,  22-Sep-81 17:28:14 by MURPHY
;TCO 5.1514 - INCREASE AMOUNT OF RES FREE MAINTAINED BY JOB 0
; UPD ID= 190, SNARK:<5.MONITOR>STG.MAC.123,  17-Sep-81 09:27:58 by GRANT
;Edit UPD ID=152 should say TCO 5.1490 not 5.1409
;Make AKLSTL a little bigger
; UPD ID= 183, SNARK:<5.MONITOR>STG.MAC.122,  15-Sep-81 16:53:47 by SCHMITT
;TCO 4.1.1051 - Include USGMUP
; UPD ID= 157, SNARK:<5.MONITOR>STG.MAC.121,   9-Sep-81 10:08:22 by PAETZOLD
;TCO 5.1494 - Increase size of TRAPSK
; UPD ID= 152, SNARK:<5.MONITOR>STG.MAC.120,   8-Sep-81 17:29:15 by GRANT
;Needed for TCO 5.1490 - Add LLSRVQ, LSTLLS, AKLSTL, AND ACKLST
; UPD ID= 131, SNARK:<5.MONITOR>STG.MAC.119,  30-Aug-81 20:08:37 by PAETZOLD
;More of TCO 5.1461
; UPD ID= 129, SNARK:<5.MONITOR>STG.MAC.118,  28-Aug-81 18:51:18 by PAETZOLD
;TCO 5.1461 - Add MMAPWD
; UPD ID= 128, SNARK:<5.MONITOR>STG.MAC.117,  27-Aug-81 20:15:47 by PAETZOLD
;change TCO 5.1010X to TCO 5.1473
; UPD ID= 117, SNARK:<5.MONITOR>STG.MAC.116,  23-Aug-81 13:31:16 by PAETZOLD
;TCO 5.1010X - ADD NCPLPC
; UPD ID= 103, SNARK:<5.MONITOR>STG.MAC.115,  17-Aug-81 11:18:11 by ZIMA
;TCO 5.1458 - Change LOADMODULEs for MFLIN/MFLOUT for Autopatch consistency.
; UPD ID= 73, SNARK:<5.MONITOR>STG.MAC.114,  24-Jul-81 05:24:15 by PAETZOLD
;TCO 5.1382 - Create dummy BLKASG if no decnet so sysdpy works
; UPD ID= 65, SNARK:<5.MONITOR>STG.MAC.113,  23-Jul-81 10:45:07 by PAETZOLD
;More of TCO 5.1333 - yet another bad pointer
;Remove TCO 5.1302 as it is no longer needed
; UPD ID= 61, SNARK:<5.MONITOR>STG.MAC.112,  22-Jul-81 11:26:00 by MURPHY
;TCO 5.1428 - HPSWRN
; UPD ID= 27, SNARK:<5.MONITOR>STG.MAC.111,  13-Jul-81 14:09:50 by GRANT
;Make LSTTMR resident - now used in NSPTST
; UPD ID= 24, SNARK:<5.MONITOR>STG.MAC.110,  13-Jul-81 08:26:03 by GRANT
;More of previous edit
; UPD ID= 12, SNARK:<5.MONITOR>STG.MAC.107,   9-Jul-81 17:53:35 by GRANT
;Increase resident free space for DECnet
; UPD ID= 2301, SNARK:<5.MONITOR>STG.MAC.106,   6-Jul-81 16:49:29 by MURPHY
;COMMENTS AT FKBSPW, ETC.
; UPD ID= 2284, SNARK:<5.MONITOR>STG.MAC.105,   1-Jul-81 21:10:56 by PAETZOLD
;TCO 5.1380 - Make SYSERR use resident free space.  Increase BUGPLN
; Remove SEBFRE, SEBEFE, SEBBSZ, SEBBFR, SEBFCT, SEBRLQ
; UPD ID= 2274, SNARK:<5.MONITOR>STG.MAC.104,  30-Jun-81 11:57:49 by GRANT
;Make LSTINT resident - now used in NSPTST
; UPD ID= 2264, SNARK:<5.MONITOR>STG.MAC.103,  26-Jun-81 18:07:14 by MURPHY
;TCO 5.1376
; UPD ID= 2227, SNARK:<5.MONITOR>STG.MAC.102,  19-Jun-81 13:47:11 by MILLER
;TCO 6.1021. ADD TLAB14
; UPD ID= 2206, SNARK:<5.MONITOR>STG.MAC.101,  17-Jun-81 15:17:42 by PAETZOLD
;Yet more of TCO 5.1333 Fix bad pointer and move location of EPTGBP 
; UPD ID= 2169, SNARK:<5.MONITOR>STG.MAC.100,  10-Jun-81 15:47:09 by MURPHY
;FLUSH SCDRQ
; UPD ID= 2164, SNARK:<5.MONITOR>STG.MAC.99,  10-Jun-81 09:52:53 by PAETZOLD
;More of TCO 5.1333 Change some of the OWGBP pointers
; UPD ID= 2160, SNARK:<5.MONITOR>STG.MAC.98,   9-Jun-81 17:08:08 by PAETZOLD
;TCO 5.1333 ADD DATA FOR OWGBP UCODE
; UPD ID= 2133, SNARK:<5.MONITOR>STG.MAC.97,   7-Jun-81 21:40:44 by GRANT
;ADD LSTTMR
; UPD ID= 2083, SNARK:<5.MONITOR>STG.MAC.96,  26-May-81 19:53:19 by GRANT
;INNSPI
; UPD ID= 2076, SNARK:<5.MONITOR>STG.MAC.95,  25-May-81 21:48:49 by GRANT
;ADD NSINAC AND LSTINT
; UPD ID= 1923, SNARK:<5.MONITOR>STG.MAC.94,   1-May-81 11:51:27 by PAETZOLD
;More of TCO 5.1301 add GETOK function for subsystem (compiler) tracking
; UPD ID= 1920, SNARK:<5.MONITOR>STG.MAC.93,   1-May-81 11:16:19 by PAETZOLD
;TCO 5.1301 add SCOUNT table for subsystem use counts
; UPD ID= 1832, SNARK:<5.MONITOR>STG.MAC.92,  17-Apr-81 14:23:31 by MURPHY
;REVISE SENDALL LOGIC
; UPD ID= 1783, SNARK:<5.MONITOR>STG.MAC.91,   3-Apr-81 16:32:17 by GRANT
;MAKE SOME NSP COUNTER TABLES RESIDENT
; UPD ID= 1776, SNARK:<5.MONITOR>STG.MAC.90,  27-Mar-81 14:50:22 by GRANT
;TCO 5.1277 - conditionalize the linking of PHYM2
; UPD ID= 1760, SNARK:<5.MONITOR>STG.MAC.89,  24-Mar-81 10:33:23 by GRANT
;FIX NODTSZ CALCULATION
; UPD ID= 1738, SNARK:<5.MONITOR>STG.MAC.88,  19-Mar-81 12:04:44 by GRANT
;INNSPT,NODTSZ
; UPD ID= 1730, SNARK:<5.MONITOR>STG.MAC.87,  19-Mar-81 08:39:14 by WACHS
;TCO 5.1272 DEFINE DIAGWT
; UPD ID= 1709, SNARK:<5.MONITOR>STG.MAC.86,  16-Mar-81 11:49:41 by LYONS
; FIX UNVECTORED INTERRUPT CODE
; UPD ID= 1704, SNARK:<5.MONITOR>STG.MAC.85,  16-Mar-81 11:40:18 by MURPHY
;NDTEMQ
; UPD ID= 1572, SNARK:<5.MONITOR>STG.MAC.84,  23-Feb-81 11:48:44 by GRANT
;SNTLKF,SNTLOK,NSSNTQ - for DECnet
; UPD ID= 1529, SNARK:<5.MONITOR>STG.MAC.83,   6-Feb-81 17:11:10 by MURPHY
;SPTO2
; UPD ID= 1525, SNARK:<5.MONITOR>STG.MAC.82,   6-Feb-81 12:47:04 by ZIMA
;TCO 5.1258 - remove IO dump buffers to recover unused address space.
; UPD ID= 1515, SNARK:<5.MONITOR>STG.MAC.81,   4-Feb-81 10:29:28 by GRANT
;INCREASE BIGNOD TO SUPPORT THE ENGINEERING NETWORK
; UPD ID= 1510, SNARK:<5.MONITOR>STG.MAC.80,   2-Feb-81 15:25:55 by GRANT
;Make NSBYTS and NSMSGS tables resident
; UPD ID= 1499, SNARK:<5.MONITOR>STG.MAC.79,  26-Jan-81 16:51:08 by ENGEL
;GET RID OF SOME OF THE LCS STUFF
; UPD ID= 1459, SNARK:<5.MONITOR>STG.MAC.78,  20-Jan-81 17:36:29 by MURPHY
;TQLNQ
; UPD ID= 1409, SNARK:<5.MONITOR>STG.MAC.77,   6-Jan-81 15:02:55 by MURPHY
;MAKE CERTAIN NSP VARIABLES RESIDENT
; UPD ID= 1365, SNARK:<5.MONITOR>STG.MAC.76,  18-Dec-80 10:17:09 by WACHS
; UPD ID= 1346, SNARK:<5.MONITOR>STG.MAC.75,  12-Dec-80 09:49:10 by GRANT
;TCO 5.1213 - Increase swappable free space allocation for DECnet
; UPD ID= 1343, SNARK:<5.MONITOR>STG.MAC.74,  12-Dec-80 09:05:10 by GRANT
;Add DTEEND for resident free space debugging
;TCO 5.1206 change parameters for rp07, load PHYM78
; UPD ID= 1331, SNARK:<5.MONITOR>STG.MAC.73,   1-Dec-80 17:33:05 by LYONS
;Add a page for KS's to do skip i/o functions to
; UPD ID= 1314, SNARK:<5.MONITOR>STG.MAC.72,  25-Nov-80 16:31:45 by GRANT
;Add NSP Node Counter Tables
; UPD ID= 1287, SNARK:<5.MONITOR>STG.MAC.71,  18-Nov-80 14:40:19 by OSMAN
;tco 5.1189 - make entry vector two words
; UPD ID= 1275, SNARK:<5.MONITOR>STG.MAC.70,  14-Nov-80 17:54:52 by MURPHY
;LFORKX
; UPD ID= 1193, SNARK:<5.MONITOR>STG.MAC.69,  25-Oct-80 12:14:23 by HALL
;TCO 5.1180 -- Move DST to non-zero section
;	DEFINE DST CONDITIONALLY ON EXADF
;	DEFINE DSTLOC
; UPD ID= 1184, SNARK:<5.MONITOR>STG.MAC.68,  21-Oct-80 14:42:34 by ENGEL
;MOVE MCBDTE
; UPD ID= 1173, SNARK:<5.MONITOR>STG.MAC.67,  20-Oct-80 10:26:48 by ENGEL
;ADD LOADMODULE FOR CISRV AND LCSSRV UNTIL WE DECIDE WHAT NEEDS TO BE DONE
; UPD ID= 1134, SNARK:<5.MONITOR>STG.MAC.66,   6-Oct-80 15:49:47 by GRANT
;Add dummy entry point .NTMAN:: for non-DECnet assembly
; UPD ID= 1070, SNARK:<5.MONITOR>STG.MAC.65,  30-Sep-80 14:25:45 by GRANT
;TCO 5.1161 - Increase size of, and add symbol for, KMC's stack
; UPD ID= 1052, SNARK:<5.MONITOR>STG.MAC.64,  26-Sep-80 11:17:07 by GRANT
;Add NODMAP, BIGNOD, and NMAPLK - the node name mapping table, its size, and lock
; UPD ID= 1050, SNARK:<5.MONITOR>STG.MAC.63,  25-Sep-80 17:35:39 by ENGEL
;ADD NEWNOD
; UPD ID= 989, SNARK:<5.MONITOR>STG.MAC.62,   4-Sep-80 18:37:58 by ENGEL
;ADD TABSEC FOR DST,CST, ETC.
; UPD ID= 976, SNARK:<5.MONITOR>STG.MAC.61,  29-Aug-80 08:46:06 by ENGEL
;CHANGE LCSMEM TO BE SET BY KLPRE
; UPD ID= 970, SNARK:<5.MONITOR>STG.MAC.60,  25-Aug-80 16:30:28 by ENGEL
;TCO 5.1136 - ADD DEVLKK
; UPD ID= 952, SNARK:<5.MONITOR>STG.MAC.59,  22-Aug-80 15:54:16 by ENGEL
; UPD ID= 942, SNARK:<5.MONITOR>STG.MAC.57,  20-Aug-80 17:54:12 by MURPHY
;ULLCZQ
; UPD ID= 941, SNARK:<5.MONITOR>STG.MAC.56,  20-Aug-80 17:00:36 by ENGEL
;TCO #5.1136 - ADD THE NEW LOCK STUFF
; UPD ID= 923, SNARK:<5.MONITOR>STG.MAC.54,  20-Aug-80 09:51:18 by MURPHY
;REMOVE FILNSP
; UPD ID= 917, SNARK:<5.MONITOR>STG.MAC.53,  19-Aug-80 14:10:51 by MURPHY
;Change legal mode mask for DCN:, SRV:
; UPD ID= 908, SNARK:<5.MONITOR>STG.MAC.52,  18-Aug-80 21:01:35 by LYONS
;Increase the size of the host name table, as it can overflow
; UPD ID= 906, SNARK:<5.MONITOR>STG.MAC.51,  18-Aug-80 13:02:42 by LYONS
;More of TCO 5.1062, add alternate swap address to force verification
;of the monitor as it swaps out.
; UPD ID= 897, SNARK:<5.MONITOR>STG.MAC.50,  14-Aug-80 10:30:38 by LYONS
;TCO 5.1062  add ERRSWP as a flag for an error in swapping a critical page,
;and bughlt later, after the bat block is updated.
; UPD ID= 894, SNARK:<5.MONITOR>STG.MAC.49,  14-Aug-80 10:23:09 by MURPHY
;Move in EPT definitions from DTESRV FOR DTE20
; UPD ID= 889, SNARK:<5.MONITOR>STG.MAC.48,  13-Aug-80 18:10:51 by MURPHY
;FEDBSW
; UPD ID= 879, SNARK:<5.MONITOR>STG.MAC.47,  12-Aug-80 16:16:21 by MURPHY
;NPRIVP
; UPD ID= 848, SNARK:<5.MONITOR>STG.MAC.46,   7-Aug-80 10:22:36 by ENGEL
;increase bytbuf to 210
; UPD ID= 813, SNARK:<5.MONITOR>STG.MAC.44,  30-Jul-80 11:16:01 by MURPHY
;ADD WEFLAG, MOVE DBUGSW, DCHKSW, EDDTF TO RSDAT
; UPD ID= 806, SNARK:<5.MONITOR>STG.MAC.43,  29-Jul-80 09:46:36 by HALL
;MOVE FFF TO POSTLD
; UPD ID= 799, SNARK:<5.MONITOR>STG.MAC.42,  24-Jul-80 15:04:04 by HALL
;MOVE INITIALIZATION OF DATA IN RSVAR FROM SYSGO1. PUT DATA IN RSDAT
;AND INITIALIZE AT ASSEMBLY TIME
; UPD ID= 791, SNARK:<5.MONITOR>STG.MAC.41,  23-Jul-80 20:30:25 by MURPHY
;TNETRQ
; UPD ID= 783, SNARK:<5.MONITOR>STG.MAC.40,  23-Jul-80 11:32:45 by HALL
;CLEAN UP COMMENTS FROM WRITE-PROTECTING PROJECT
; UPD ID= 779, SNARK:<5.MONITOR>STG.MAC.39,  23-Jul-80 10:50:25 by OSMAN
;tco 5.1109 - Add PDVS
; UPD ID= 775, SNARK:<5.MONITOR>STG.MAC.38,  22-Jul-80 16:35:34 by HALL
;CHANGES TO RESIDENT FREE SPACE: MAKE POOL NUMBERS START WITH 1
; IN ORDER TO DETECT ZEROED POOL NUMBER IN FREE SPACE
; UPD ID= 752, SNARK:<5.MONITOR>STG.MAC.37,  11-Jul-80 15:56:42 by DBELL
;TCO 5.1102 - INCREASE BTBMAX SO SINGLE UNIT RP20 WORKS FOR MODEL A'S
; UPD ID= 711, SNARK:<5.MONITOR>STG.MAC.36,  30-Jun-80 09:48:30 by ENGEL
;MAKE .RENSP 2 AGAIN (DONE BECAUSE OF THE 2102 PANIC)
;TEMPORARY - MAKE RESBTB PAGE ALIGNED SO IT CAN BE WRITE-PROTECTED
; UPD ID= 701, SNARK:<5.MONITOR>STG.MAC.34,  26-Jun-80 09:33:05 by LYONS
;Cycle the ARPAnet after a power fail to be sure we have updated info
; UPD ID= 664, SNARK:<5.MONITOR>STG.MAC.33,  16-Jun-80 17:23:40 by KONEN
;TCO 5.1063 - REMOVE PS: AS NAME OF PRIMARY STRUCTURE
; UPD ID= 617, SNARK:<5.MONITOR>STG.MAC.31,   9-Jun-80 16:07:08 by HALL
;FIX THE FEFLG CHANGES -- MAKE BOTH KL AND KS VERSIONS BE IN RSVAR
; UPD ID= 615, SNARK:<5.MONITOR>STG.MAC.30,   7-Jun-80 18:45:00 by KONEN
; UPD ID= 608, SNARK:<5.MONITOR>STG.MAC.29,   5-Jun-80 15:57:35 by KONEN
;Put FEFLG into writable area for KS code in PROINI
; UPD ID= 607, SNARK:<5.MONITOR>STG.MAC.28,   5-Jun-80 13:36:36 by ENGEL
; UPD ID= 604, SNARK:<5.MONITOR>STG.MAC.26,   5-Jun-80 08:36:27 by ENGEL
; UPD ID= 599, SNARK:<5.MONITOR>STG.MAC.24,   4-Jun-80 14:14:39 by ENGEL
;ADD BLKTRN FOR THE MEMORY DRIVER BLOCK TRANSFER SERVICE
; UPD ID= 589, SNARK:<5.MONITOR>STG.MAC.23,   3-Jun-80 08:16:53 by ENGEL
;MAKE SKDPDL LONGER
; UPD ID= 583, SNARK:<5.MONITOR>STG.MAC.22,   2-Jun-80 10:41:23 by ENGEL
;MAKE .RESNP EQUAL TO 0 (HIGHEST LEVEL SCHEDULAR CONTEXT)
; UPD ID= 571, SNARK:<5.MONITOR>STG.MAC.21,  30-May-80 09:03:31 by GRANT
;Move KLILNO from RESCD to RSVAR - needed for write protecting the
;resident monitor
; UPD ID= 570, SNARK:<5.MONITOR>STG.MAC.20,  30-May-80 08:58:22 by ENGEL
; UPD ID= 566, SNARK:<5.MONITOR>STG.MAC.19,  28-May-80 20:26:58 by ENGEL
;MAKE MCBDTE RESIDENT
; UPD ID= 513, SNARK:<5.MONITOR>STG.MAC.18,  12-May-80 11:07:12 by ENGEL
;MOVE LCSSEC OUT OF SMFLG CONDITIONAL
; UPD ID= 512, SNARK:<5.MONITOR>STG.MAC.17,   9-May-80 12:47:00 by ENGEL
;CHANGE MMALRM
; UPD ID= 511, SNARK:<5.MONITOR>STG.MAC.16,   8-May-80 20:15:58 by ENGEL
;CHANGE MEMHI TO REFLECT THE MF10
; UPD ID= 500, SNARK:<5.MONITOR>STG.MAC.15,   1-May-80 15:00:57 by GRANT
;TCO 5.1031 - Add GUDOBJ
; UPD ID= 488, SNARK:<5.MONITOR>STG.MAC.14,  29-Apr-80 14:36:22 by LYONS
;Move more ARPANET cells into RSADT
; UPD ID= 453, SNARK:<5.MONITOR>STG.MAC.13,  21-Apr-80 18:27:26 by LYONS
;Move GETOK, ARAPNET cells into RSDAT from RSCOD
; UPD ID= 447, SNARK:<5.MONITOR>STG.MAC.12,  19-Apr-80 12:30:38 by KONEN
;Write enable PRELDF
; UPD ID= 446, SNARK:<5.MONITOR>STG.MAC.11,  18-Apr-80 09:17:28 by ENGEL
; UPD ID= 440, SNARK:<5.MONITOR>STG.MAC.10,  13-Apr-80 15:13:45 by OSMAN
;Add CTTAB; remove FKCTTY
; UPD ID= 423, SNARK:<5.MONITOR>STG.MAC.9,  11-Apr-80 13:51:40 by HALL
;CHANGES TO WRITE-PROTECT THE RESIDENT MONITOR:
;	INVOKE RSI MACRO FOR BUGXXX WORDS, FFF, SVDTRJ, DDT ENTRY VECTOR
;	REMOVE CODE IN STARTUP TO INITIALIZE THESE LOCATIONS
; UPD ID= 417, SNARK:<5.MONITOR>STG.MAC.8,  11-Apr-80 09:18:58 by ENGEL
;ADD OURNOD
; UPD ID= 410, SNARK:<5.MONITOR>STG.MAC.7,   4-Apr-80 11:03:13 by LYONS
;ADD ACJ ENTRIES FOR ARPANET ACCESS AND DECNET ACCESS
; UPD ID= 408, SNARK:<5.MONITOR>STG.MAC.6,   3-Apr-80 17:03:10 by HALL
;CHANGES TO WRITE-PROTECT THE RESIDENT MONITOR:
;	CREATE RESIDENT DATA FOR SECPOND PROTOCOL TYPEOUT (BUGMON, ETC.)
;	CHANGE DTE DEFINITIONS TO CREATE RESIDENT STORAGE IN RSVAR
;	MOVE TO RSVAR PSECT: CONOPG,SVDTRJ,DDT'S DATA VECTOR
;	DO AN EXTRA IORST IN STARTUP CODE
; UPD ID= 368, SNARK:<4.1.MONITOR>STG.MAC.318,  26-Mar-80 11:08:50 by DBELL
;TCO 4.1.1119 - REARRANGE DISK DEFINITIONS TO HANDLE RP20 DISKS
; UPD ID= 382, SNARK:<5.MONITOR>STG.MAC.5,  27-Mar-80 10:24:04 by ENGEL
;FIX MEMHI
; UPD ID= 373, SNARK:<5.MONITOR>STG.MAC.4,  26-Mar-80 13:04:09 by ENGEL
;CHANGE MAXSEC TO 6
; UPD ID= 372, SNARK:<5.MONITOR>STG.MAC.3,  26-Mar-80 13:01:05 by ENGEL
;ADD MEMLO AND MEMHI
; UPD ID= 349, SNARK:<4.1.MONITOR>STG.MAC.317,  24-Mar-80 16:58:47 by ENGEL
;MAKE LCSMEM 0
; UPD ID= 348, SNARK:<4.1.MONITOR>STG.MAC.316,  24-Mar-80 16:30:54 by ENGEL
;PUT MEMBOT AND FRIENDS IN RSCOD
; UPD ID= 347, SNARK:<4.1.MONITOR>STG.MAC.315,  22-Mar-80 07:00:33 by ENGEL
;ADD MEMTOP,MEMBOT AND LCSMEM
; UPD ID= 346, SNARK:<4.1.MONITOR>STG.MAC.314,  21-Mar-80 16:18:08 by ENGEL
;ADD LCSSEC . LCS MEMORY DRIVER HAS SECTION 12
;MAKE CTYLNO BE IN RESIDENT DATA INSTEAD OF CODE
;MOVE CONOPG, DO IORST AT SYSLOD
; UPD ID= 170, SNARK:<4.1.MONITOR>STG.MAC.312,  20-Dec-79 15:21:07 by ENGEL
;ADD ERROR MESSAGE IF NTTBL IS GREATER THAN NTTBL1
; UPD ID= 133, SNARK:<4.1.MONITOR>STG.MAC.311,  13-Dec-79 10:53:31 by OSMAN
;Fix spelling
; UPD ID= 104, SNARK:<4.1.MONITOR>STG.MAC.310,   6-Dec-79 13:38:21 by DBELL
;TCO 4.1.1018 FOR R.ACE - REMOVE FCTFIL
; UPD ID= 36, SNARK:<4.1.MONITOR>STG.MAC.309,  28-Nov-79 10:58:37 by MILLER
;TCO 4.2582. ADD FKTIMW
; UPD ID= 20, SNARK:<4.1.MONITOR>STG.MAC.308,  27-Nov-79 13:36:59 by MILLER
;ADD LSTPFK
;<4.1.MONITOR>STG.MAC.307, 21-Nov-79 09:05:35, EDIT BY DBELL
;TCO 4.2574 - ADD PI5CNT
;<4.MONITOR>STG.MAC.305, 20-Nov-79 14:14:18, EDIT BY GRANT
;INCREASE MAXBLK, THE SWAPPABLE FREE SPACE USED BY NSP
;<4.MONITOR>STG.MAC.42,  7-Apr-78 10:49:03, EDIT BY MILLER
;THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY ONLY BE USED
;  OR COPIED IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE.
;
;COPYRIGHT (C) 1976,1977,1978,1979 BY DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.

	SEARCH PROLOG,PHYPAR,SERCOD
	TTITLE STG

   IFN KLFLG,<
	SEARCH PROKL>
   IFN SMFLG,<
	SEARCH PROKS>
   IFG INETN,<
	SEARCH INPAR>		; Only if we are including Internet
   IFG TCPN,<
	SEARCH TCPPAR>		; Only if we are including TCP
   IFN MNET,<
	SEARCH MNTPAR>		; if we are runninf Multinet

   IFN SSAN,<			;#25 .
	SEARCH MACSYM>		;#25 Only if SA10 is used



;PARAMETER-DEPENDENT STORAGE FOR ALL MODULES

EXT <PAGRST,PGRINI,TTINIT,SCDIN>
EXT <PI7P,PIAPR,PIINIT,PGRRST,SWPRST,PISC7,SCKATM>

	SWAPCD			;SOME SWAP CODE HERE BEFORE FIRST RESCD


;MISCELANEOUS DEFINITIONS

DEFINE NDG (SYM,VAL)<
   IFNDEF SYM,<
	SYM==:VAL>>

	DRSMDA==:30		;MAX SIZE OF A DIR ON A MODEL A
NDG	MNET,0			; DefaulT no Multinet
NDG	NETHSZ,^D23		; Size of network hash tables, must be prime
NDG	JSSTAT,0		;DEFAULT TO NO JSYS STATS KEPT
NDG	PIBITS,0		;PI ACCOUNTING BITS FOR KL METER
				; NOT USED ON OTHER PROCESSORS
NDG	BUGSTF,0		;BBN--DEFAULT TO NO BUGSTRINGS
				; (IF USE, MAKE SURE THEY FOLLOW NRCOD PSECT)
NDG	HIDSYM,1		;SYMBOLS NOT IN MONITOR VAS
				;USE /SYMSEG:PSECT:SYVAR IN LINK FILE IF OFF
				;USE /SYMSEG:PSECT:INCOD IN LINK FILE IF ON
NDG	CHAOS,0			; 100: CHAOSNET
NDG	EXADF,0			;EXTENDED DIRECTORY FLAG
NDG	NTTD10,0		;NUMBER OF DC10 LINES
   IFG DTFLG,<NDLL==:5>		;IF A FE PRESENT, MUST HAVE 5 DLS
   IFE DTFLG,<NDLL==:0>		;IF NO FE PRESENT, NDLL=0
   IFE DCN,<NTTMCB==:0>		;IF NO DECNET NO DECNET NVTS
	NTTFE==:NDHL+NDLL	;NUMBER OF FE LINES
NDG	NTTTVT,0		; Number TCP lines
NDG	NTTNVT,0		; Number of NVT lines
NDG	NTTCVT,0		; number of chaosnet lines
;NUMBER OF LINES, INCLUDING LINE 0 FOR THE CTY
NDG	NLINES,NTTFE+NTTMCB+NTTPTY+NTTD10+NTTTVT+NTTNVT+NTTDZ+NTTMLC+NTTCVT+1
   IFG ACTLNS-NLINES,<ACTLNS==:NLINES> ;ADJUST VALUE AS APPROPRIATE
NDG	DLSN,NTTD10		;NUMBER OF DC LINES
NDG	NTTBL,1			;DEFAULT NUMBER BUFFERS PER LINE
NDG	NTTBL1,2		;# OF BUFFERS FOR "FAST" LINES
NDG	NTTBF,ACTLNS*NTTBL1	;NUMBER OF TTY BUFFERS
NDG	TTSIZ,40		;SIZE OF INDIVIDUAL TTY BUFFER (POWER OF 4)
NDG TTBSIZ,200			;BIG BUFFER SIZE
NDG	DSKN,1			;DSK IS PRESENT (MANDATORY)
NDG	 RP10F,0		;DISK TYPE IS RP10
NDG	 RH10F,0		;RH10
NDG	 RH20F,1		;RH20
NDG	 RH11F,0		;RH11
NDG	 SSAN,0			;#25 SA10
NDG	  SSADF,0		;#25 SA10 disks
NDG	  SSATF,0		;#26 SA10 tapes
NDG	  RP04F,1		;RP04
NDG	DRMN,0			;DRUM IS PRESENT
NDG	 RS04F,0		;DRUM TYPE IS RS04
NDG	 RC10F,0		;DRUM TYPE IS RC10
NDG	DTAN,0			;NUMBER OF dectape units
NDG	 TM02F,1		;TM02/TU16
IFN KLFLG,<
NDG	DX20AF,1		;DX20-A/TU70,71,72
NDG	DX20BF,1		;DX20-B/RP20
NDG	TM78F,1			;TM78/TU78
>
IFN SMFLG,<
NDG	DX20AF,0		;DX20-A/TU70,71,72
NDG	DX20BF,0		;DX20-B/RP20
NDG	TM78F,0			;TM78/TU78
>

NDG	PCDPN,1			;CARD PUNCH IS PRESENT BY DEFAULT
NDG	PLTN,0			; PHYSICAL Plotter exists
NDG	PTPN,0			; Paper tape punch exists
NDG	PTRN,0			; Paper tape reader exists
Ndg	Qm1n,0			;#53 QM1 shouldn't be here
Ndg	PngN,0			;#157 PNG (Penguin) exists
NDG	VBCN,0			;VB10C PRESENT
NDG	 NRVCPG,0		;NUMBER OF PAGES TO RESERVE FOR VB10C
NDG	DLXN,0			;NUMBER OF UNITS ON DL10
NDG     CMAN,0                  ;NUMBER OF AYDIN DISPLAYS
NDG	BBNN,0			;BBN IMP10 IMP INTERFACE
NDG	ANXN,0			;DEC AN10 IMP INTERFACE
NDG	NFEN,0			; CHEAPNET DTE INTERFACES
%NETS==:	BBNN+ANXN+NFEN	; Total number of interfaces
IFLE <^D8-%NETS>,<
PRINTX %Too many network interfaces to work with current code
>
;;; Default device address'
NDG	ANX0,520		; Default for 1st AN20
NDG	IMP0,504		; Default for 1st IMP10
NDG	IMP1,500		; Default for 2nd IMP10
NDG	NFE0,DTE1		; Default for 1st Cheapnet DTE
NDG	IM2N,0			;RCCNET INTERFACE
NDG	MLCN,0			;NUMBER OF PTIP LINES
   IFG DLXN,<
	NDG	DLIBFP,<<DLXN+3>/4>	;# OF INPUT BUFFER AND CONTROL PAGES
	NDG	DLOBFP,<<DLXN+3>/4>	;  "  OUTPUT	"
   >;IFG DLXN


	DMSMAX==:1050		;LEGAL DMS JSYS'S ARE 1000-1050
	PRAMAX==:200		;MAXIMUM SIZE OF PRARG BLOCK

	SYSDPT==:777740		;DIRECTORY PROTECTION OF SYSTEM AND SUBSYS
	SYSFPT==:777752		;FILE PROTECTION DEFAULT FOR SUBSYS AND  SYSTEM

	PSNUM==:0		;PUBLIC STR NUMBER 
	USRLH==:500000		;LEFT HALF OF A 36 BIT USER NUMBER
	.DFACT==:^D220100	;DEFAULT ACCOUNT NUMBER

	DEFINE LOADMODULE (A) <
IRP A,<	EXTERNAL $'A>>
;section number definitions

NDG MSEC1,1			;section 1- code
NDG DRSECN,2			;section 2- directories
NDG IDXSEC,3			;section 3- index table
NDG BTSEC,4			;section 4- bit table
   IFE SMFLG,<
NDG ANBSEC,5			;section 5- arpanet buffers
   >
NDG LCSSEC,^D8			;SECTION 6 - LCS MEMORY DRIVER
NDG TABSEC,7			;SECTION FOR TABLES
   IFN SMFLG,<
NDG ANBSEC,0			;so KS code doesn't break
   >
NDG MNTSEC,ANBSEC		; Put Multinet stuff in teh same section as
				; ArpaNet for now
NDG INTSEC,6			; Section 6: Internet storage
NDG MAXSEC,^D8			;max section number
	MSEC1B==:<MSEC1>B17	;DEFINE SECTION 1 PC FORMAT
;FORCE THE LOADING OF THE CORRECT MODULES

LOADMODULE <LDINIT,SCHED,PAGEM,FORK,MEXEC,GETSAV,SYSERR,COMND>
LOADMODULE <DEVICE,DIRECT,ENQ,FREE,FUTILI,GTJFN,IO,IPCF,JSYSA>
LOADMODULE <JSYSF,LOGNAM,LOOKUP,MSTR,SWPALC,DISC,FILMSC,MFLIN>
LOADMODULE <MFLOUT,DATIME,TIMER,EDDT,MDDT>


;CONDITIONALS TO LOAD PROPER REL FILE

IFNDEF PHYIOF,<	PHYIOF==:0>
   IFN DX20AF!DX20BF!RP04F!TM02F!TM78F,<	PHYIOF==:1>
   IFN SSAN,<	PHYIOF==:1>	;#25 .
IFG PHYIOF,<	
		LOADMODULE PHYSIO
		LOADMODULE DIAG
		LOADMODULE POSTLD
		LOADMODULE DSKALC
>
IFE EXADF,<	LOADMODULE FILINI>
IFN EXADF,<	LOADMODULE EFILIN>
IFG RH20F,<	LOADMODULE PHYH2>
IFG RH11F,<	LOADMODULE PHYH11>
IFG RP04F,<	LOADMODULE PHYP4>
IFG SSAN,<	LOADMODULE PHYSA> ;#25 SA10
IFG SSADF,<	LOADMODULE PHYC1> ;#25 SA10: Disks
IFG SSATF,<	LOADMODULE PHYSAT> ;#26 SA10: Tapes
IFG DRMN,<
 IFE PHYIOF,<
  IFG RS04F,<	LOADMODULE RS04SV>
 >
 IFG PHYIOF&RS04F,<	LOADMODULE PHYS4>
 IFG RC10F,<	LOADMODULE RC10SV>>
IFG CMAN,<      LOADMODULE DSPLAY>
IFE SMFLG,<
IFE TCPN,<
   IFE NETN,<	LOADMODULE TTYSRV>
   IFG NETN,<	LOADMODULE TTYSNV>
	>
IFN TCPN,<	LOADMODULE TTYSTV>
>
IFN SMFLG,<	
	IFE NETN,<	LOADMODULE TTYSSM>
	IFN NETN,<	LOADMODULE TTYASM>
>
IFG DTAN,<	LOADMODULE DECTAP>
IFG FEN,<	LOADMODULE FESRV>
IFG MTAN,<
	MTDFDN==:4		;DEFAULT MAGTAPE DENSITY (1600 BPI)
	MTDFRS==:PGSIZ*1	;DEFAULT RECORD SIZE IS 1000 WORDS
	MTDFDM==:1		;DEFAULT MAGTAPE DATA MODE IS CORE DUMP
	MTDFPA==:0		;DEFAULT MAGTAPE PARITY IS ODD
MTMXDN==:5			;MAXIMUM DENSITY IS 6250 BPI
	LOADMODULE MAGTAP
	LOADMODULE TAPE
	IFG DX20AF,<LOADMODULE PHYX2>
	IFG DX20BF,<LOADMODULE PHYP2>
	IFG TM78F,<LOADMODULE PHYM78>
	IFG TM02F,<LOADMODULE PHYM2>>
IFN SMFLG,<	LOADMODULE APRSSM>
IFE SMFLG,<	LOADMODULE APRSRV>
IFG DTEN,<	LOADMODULE DTESRV>
IFG DCN,<	LOADMODULE <NSPSRV>>
IFN CHAOS,<	LOADMODULE CHAOS> 	; 100
IFN ATS,<	LOADMODULE <FILATS,ATSSRV,NRMSRV>>
IFG KDPN,<	LOADMODULE KDPSRV>
IFN SMFLG,<	LOADMODULE DTESM>
IFG LPTN,<
  IFE SMFLG,	<LOADMODULE LINEPR>
  IFN SMFLG,	<LOADMODULE LINPSM>
>
IFE LPTN,<.LPINI::RET>
IFG PCDPN,<	LOADMODULE CDPSRV>
IFG CDRN,<	
IFN SMFLG,<	LOADMODULE CDRSM>
IFE SMFLG,	<LOADMODULE CDRSRV>>
IFG PLTN,<	LOADMODULE PLT>
IFG PTPN,<	LOADMODULE PTP>
IFG PTRN,<	LOADMODULE PTR>
IFG VBCN,<	LOADMODULE VBC>
IFG DLXN,<	LOADMODULE DLX>
		LOADMODULE MNETDV
		LOADMODULE HSTINI
IFG NETN,<	LOADMODULE MIMPDV
		LOADMODULE MNETWK
 IFG MLCN,<	LOADMODULE MMLCDV>
> ; end IFG NETN
 IFG ANXN+BBNN,<LOADMODULE 1822DV>
 IFG ANXN,<	LOADMODULE ANXPHY>
 IFG BBNN,<	LOADMODULE IMPPHY>
 IFG NFEN,<	LOADMODULE NFEPHY>
 IFG INETN,<	LOADMODULE INFREE
		LOADMODULE INGWAY
		LOADMODULE INCMP
		LOADMODULE INGLUK
		LOADMOUDLE INLOCK
		LOADMODULE INPROC
		LOADMODULE INQ
		LOADMODULE INUQ
		LOADMODULE INWAIT
> ; end ifg inetn
 IFG TCPN,<	LOADMODULE TCPBFR
		LOADMODULE TCPBG
		LOADMODULE TCPCRC
		LOADMODULE TCPDG
		LOADMODULE TCPIP
		LOADMODULE TCPJS
		LOADMODULE TCPPRC
		LOADMODULE TCPMSC
		LOADMODULE TCPOPT
		LOADMODULE TCPPP
		LOADMODULE TCPPZ
		LOADMODULE TCPRA
		LOADMODULE TCPRX
		LOADMODULE TCPSTS
		LOADMODULE TCPUSR
> ; end IFG TCPN
;RESIDENT STORAGE WHICH MUST BE DEFINED ON A PAGE BOUNDARY.
;THESE ARE ALL DEFINED FIRST AND MUST BE A MULTIPLE OF 512 WORDS
;EACH.

RS(ZROCOR,0)			;START OF STORAGE AREA TO CLEAR
RS(RESBTB,PGSIZ)		;TEMPORARY - RESIDENT FREE SPACE BITTABLE
RS(KIEPT,PGSIZ)			;EXECUTIVE PAGE TABLE
	EP==:KIEPT/PGSIZ	;DEFINE PAGE NUMBER FOR FILDDT
RS(SKHWPT,PGSIZ)		;HW PAGE TABLE WHEN SCHED RUNNING
RS(MMAP,PGSIZ)			;MONITOR MAP
   IFG DLXN,<
RS(DLBASE,PGSIZ*DLIBFP)	 ;RESIDENT PAGES FOR DL10
RS(DLOBUF,PGSIZ*DLOBFP)
   >;IFG DLXN
IFN SMFLG,<RS(LPBUF,LPTN*PGSIZ)>	;LINEPRINTER BUFFER SPACE
IFN NETN,<
IFN SMFLG,<RS(NTBFIX,0)>	;NO INDEX PAGE FOR NET BUFFER SECTION
IFE SMFLG,<RS(NTBFIX,PGSIZ)>	;INDEX PAGE FOR NET BUFFER SECTION
>
IFN SSADF,<RS(CC1PGA,PGSIZ)>	;#25 Pg to read in pages being partly changed
IFN KDPN,<RS(KMCPAG,KDPN*PGSIZ)>	;A PAGE FOR EACH KDP(KMC11/DUP11)
IFN INETN,<RS(INTIX,PGSIZ)>	; Index page for Internet buffer section
IFE INETN,<INTIX==:0>		; If none

RS (BLKTRN,PGSIZ)		;LCS MEMORY DRIVER BLOCK TRANSFER PAGE
BLKTRP==:BLKTRN/PGSIZ		;DEFINE THE PAGE NUMBER

;THE READ AFTER WRITE VERIFICATION CODE NEEDS A PLACE TO READ DATA TO CHECK
;ECC.  THE RH20 HAS HARDWARE TO USE LOCATION 0 FOR THIS, BUT THE RH11 NEEDS A
;PHYSICAL PAGE TO USE. THE RH20, WHEN WRITING TO LOCATION 0, WILL TRANSFER NO
;DATA, BUT REQUIRE THE MASBUSS TO MOVE THE BITS AND THE DISK WILL CHECK ECC.
;ON WRITES, DATA IS TAKEN FROM LOACTIONS 70-73 OF THE EPT (WHICH TOPS-20 KEEP
;AS 0).

IFN SMFLG,<RS(SKPPAG,PGSIZ)>	;PAGE TO IMPLEMENT RH11 SKIP FUNCTION
IFE SMFLG,<SKPPAG==:0>		;RH20 CAN DO IT TO PHYSICAL 0 AND GET IT RIGHT


;MEMORY MANAGEMENT DATA BASE

RS CST0,MAXCOR			;CORE STATUS TABLES
	RS SPCRES,0		;END OF SPECIAL RESIDENT PAGES.
				;USED BY PAGEM CODE THAT
				;UNLOCKS PAGES. PUT ALL
				;SPECAIL PAGES (I.E. PAGE TABLES,
				;UPT'S) BEFORE THIS DEFINITION
RS CST1,MAXCOR
RS CST2,MAXCOR
RS CST3,MAXCOR
   IFN PHYIOF,<
RS CST5,MAXCOR		;**TEMP** UNTIL CSTONR MOVED
   >				;END IFN PHYIOF
IFG <NOFN-^D500>,<NOFN==:^D500>	;MAX OF 500 OFNS
RS SPTO,NOFN			;OFN TABLE ONLY
RS SPTO2,NOFN			;MORE OFN DATA
IFN SPTDSW,<			;ONLY IF USING SPTLKB DEBUGING
RS SPTO3,NOFN			;SPTLKB DEBUGING TABLE
 >				;END OF IFN SPTDSW
RS SPT,SSPT			;SPECIAL/SHARED PAGES TABLE
RS SPTH,SSPT
RS OSECTB,2			;STORAGE OF ORIGINAL MSECTB WORDS FOR EDDT
RS SSECTB,2			;NEW MSECTB WORDS FOR EDDT TO USE
RS TOTRC,1			;TOTAL NUMBER REAL CORE PAGES
RS NRPMIN,1			;MINIMUM VALUE OF NRPLQ
RS NRPLEV,1			;HIGHEST NORMAL LEVEL OF NRPLQ
RS GCMINP,1			;MIN PAGES NEEDED BY GC, = NRPMIN+NRPLEV
RS CGFLG,1			;DEASSIGNED PAGES MAY EXIST IF .G. 0

RS NRPLQ,1			;NUMBER OF PAGES ON REPLACABLE QUEUE
RS SRPLQ,1			;SWAP REPLACABLE QUEUE  TAIL,,HEAD
RS DRPLQ,1			;DISK REPLACABLE QUEUE  TAIL,,HEAD

RS NSPMQ,1			;NUMBER OF PAGES ON SPECIAL MEM QUEUE
RS SPMQ,1			;"SPECIAL" MEMORY QUEUE TAIL,,HEAD
RS SPMLCK,1			;LOCK ON PROCESS CONTEXT MANIPULATION OF SPMQ
RS SPMONR,1			;FORK WHICH OWNS SPMLCK
RS SPMTPG,1			;PAGE FOR SCHED TEST RTN
RS SPMTIM,1			;WATCHDOG TIME FOR SCHED TEST RTN
RS PI5CNT,1                     ;NUMBER OF UNVECTORED PI 5 INTERRUPTS
   IFE SMFLG,<
NMD16K==:<MAXCOR*PGSIZ+37777>/40000 ;MAX # MEM MODULES, 16K EACH
RS MEMTAB,<<NMD16K+^D35>/^D36>	;TABLE INDICATING INT/EXT MEM
   >				;END IFN SMFLG

;SYSTEM RESIDENT JOB TABLES

RS JOBDIR,NJOBS			;ATTACHED DIRECTORY,,LOGIN DIRECTORY
RS JOBNAM,NJOBS			;JOB BITS,,SUBSYS NAME INDEX
NR JOBPNM,NJOBS			;JOB PROGRAM NAME
RS JOBRT,NJOBS			;JOB RUN TIME
RS JOBRTL,NJOBS			;JOB RUN TIME LIMIT
	;DEFSTR JOBRTP,JOBRTL,35,23 ; Ptr to runtime limit blk
	;DEFSTR TIMCNT,JOBRTL,12,13 ; # of clocks in use by job
RS JOBPT,NJOBS			;CONTROL TTY,,TOP FORK
Rs Jobact,Njobs		;#47 Last CPU activity time (TODCLK)

;QUOTA ENFORCEMENT TABLES

NR ALOC1,NOFN			;DIR # ,, OFN COUNT
NR ALOC2,NOFN			;COUNT OF PAGES LEFT

RS OFNLEN,NOFN			;ACTUAL END OF FILE

;GET FILE CACHE STORAGE

NDG FSMAX,20			;MAX NUMBER OF ENTRIES IN CACHE
;FSN==:3				;# OF WORDS PER ENTRY
NR FGLOCK,1			;THE LOCK WORD
NR FSTTBL,FSMAX			;NUMBER OF ENTRIES


;TIME ZONE STORAGE

NR TIMZON,1			;NUMBER OF HOURS LOCAL TIME LAGS GREENWICH


;MEMORY ERROR REPORTING STORAGE

RS ERRTBL,1			;QUEUE HEADER

;ARCHIVE SYSTEM

RS IPPKFR,1			; Flag word used to indicate ARCMSG
				; waiting for a free packet (IPCF)
RS TPRCYC,1			; Tape recycle time (max offline expiration)
RS ARRCYC,1			; Archive tape recycle time
RS NRTWTS,1			; Should waits for retrievals fail?
				;  non-0 implies fail rather than wait
;CLASS SCHEDULER STORAGE

RS MJBUSE,1			;HIGHEST JOB IN USE
RS RDRTIM,1			;TIME TO DO NEXT REORDER
RS UTLTIM,1			;TIME TO COMPUTE UTILIZATION
RS UTLINT,1			;INTERVAL TO COMPUTE NEXT UTIL
RS CLSTIM,1			;#211 Time to do next CHKCLS/UPDCLS
RS USROTM,1			;#211 USRTIM at last UPDCLS
RS JOBORT,NJOBS			;#211 Job runtime at last UPDCLS
RS OLDTOD,1			;OLD TODCLK FOR NEWUTL
RS CLASSF,1			;IF NON-ZERO, DOING CLASSY SCHEDULING
RS CLSCTL,1			;CLASS CONTROL WORD
	NDG MAXCLS,10		;NUMBER OF CLASSES
RS CLSUTL,MAXCLS		;CLASS UTILIZATION
RS JOBSHM,1			;JOB SHARE MIN (PORTION OF CPU) FOR JOBLIM
RS JOBCLS,NJOBS			;CLASS PER JOB
RS JOBUTL,NJOBS			;JOB UTILIZATION
RS JOBIRT,NJOBS			;JOB INCREMENTAL RUN-TIME
RS JOBCAP,NJOBS			;JOB CAP ON CDIST (1.0 MEANS "NO WINDFALL")
RS JOBDST,NJOBS			;JOB "DISTANCE"
;RS JOBSLD,NJOBS			;ACCUMULATED SOLD TIME PER JOB
RS CLSSHR,MAXCLS		
RS WA,MAXCLS			;WINDFALL ALLOCATION (OR -1)
RS CLSJLM,MAXCLS		;JOB LIMIT FOR CLASS
RS CLSFLG,MAXCLS		;FLAGS
RS CLSTYP,MAXCLS		;SERVICE TYPE
RS CLSCAP,MAXCLS		;USAGE CAP
RS CLSOVP,MAXCLS		;JOB OVERFLOW POINTER FOR CLASS
RS CLSSHI,MAXCLS		;SHARE PER MEMBER
RS CLSCNT,MAXCLS
RS CLSDST,MAXCLS		;CLASS DISTANCE
RS CLSSUM,MAXCLS		;INTEGRAL OF NRUN FOR CLASSES
RS CLSIRT,MAXCLS		;CLASS INCREMENTAL RUN TIME

	NDG MXCASC,4		;#211 Keep track of upto 4 different shifts
NCLSPG==:<<1*MXCASC>+<MXCASC*MAXCLS>+PGSIZ-1>/PGSIZ
NRP CLSFIL,<NCLSPG*PGSIZ>	;#211 
CLSTRT=:CLSFIL+0		;#211 Total class runtime (by shifts)
CLSRT=:	CLSTRT+MXCASC		;#211 Individual class runtime (by shifts)
;SYSTEM RESIDENT FORK TABLES
; STRUCTURE DEFINED FOR SOME VARIABLES BUT NOT PRESENTLY USED
; CONSISTENTLY THROUGHOUT CODE.

RS FKPGS,NFKS			;PTB,,PSB   SPT NUMBERS
	;DEFSTR FKPSB,FKPGS(FX),35,18
	;DEFSTR FKUPT,FKPGS(FX),17,18
RS FKSTAT,NFKS			;FORK WAIT TEST
RS FKPGST,NFKS			;TEST WORD WHILE IN PAGE WAIT
				;ALSO TOD ENTERED WAITLIST
RS FKQ1,NFKS			;REMAINING QUANTUM
	;DEFSTR FKQTM,FKQ1(FX),35,36
RS FKQ2,NFKS			;FORK SCHEDULING QUANTITIES
	;B0-B17 - FLAGS, MAX QUEUE, CURRENT QUEUE
	;B18-35 - FKWTL: LOC OF WAIT LIST PTR FOR BLOCKED FORK
RS FKBSPW,NFKS			; GOLST POSITION ,, BALSET LIST PTR
RS FKSWP,NFKS			;SWAPPING DATA
	;B0-B17 - FLAGS; B18-B35 - FKHST: MEM DEMAND HISTORY
RS FKNBW,NFKS			;TIME OF START OF BALSET WAIT
RS FKJTQ,NFKS			; Jsys Traps queue of forks
				;  waiting to PSI their monitor
RS FKPT,NFKS			;BALSET ENTRY TIME ,, FORK QUEUE PTRS
	;DEFSTR FKBET,FKPT(FX),17,18
RS FKINT,NFKS			;FORK INTERRUPT COMMUNICATION REG
RS FKINTB,NFKS			;INTERRUPT CHANNELS REQUEST
RS FKJOB,NFKS			;JOB NUMBER ,, JSB
	;DEFSTR FKJSB,FKJOB(FX),35,18
	;DEFSTR FKJOBN,FKJOB(FX),17,18
RS FKNR,NFKS			;AGE,,BALANCE SET SIZE (RESERVE)
	;DEFSTR FKXAGE,FKNR(FX),8,9 ;AGE AT LAST XGC
	;DEFSTR FKAGE,FKNR(FX),17,9 ;CURRENT AGE
	;DEFSTR FKWSS,FKNR(FX),35,18 ;WORKING SET SIZE
RS FKWSP,NFKS			;WORKING SET PARAMETERS - NWSCE,,N
	;DEFSTR FKCSIZ,FKWSP(FX),35,18 ;CURRENT SIZE
				;ALSO LH USED WHILE ENTERING BALSET
RS FKTIME,NFKS			;TIME AT WHICH FORK WAS PUT ON CURRENT QUEUE
RS FKCNO,NFKS			; SPTN OF HWPT ,, CORE NUMBER
	;DEFSTR HWPTN,FKCNO(FX),17,18

;TABLES FOR SETNM

NNAMES==:^D80			;#162 NUMBER OF NAMES ALLOWED

RS SNAMES,NNAMES		;SIXBIT NAME OF SUBSYSTEM
RS STIMES,NNAMES		;ACCUMULATED RUNTIME OF SUBSYSTEM
RS SPFLTS,NNAMES		;ACCUMULATED PAGE FAULTS OF SUBSYSTEM
RS SSIZE,NNAMES			;WORKING SET SIZE INTEGRAL
RS SNBLKS,NNAMES		;NUMBER OF BLOCKS
RS SCOUNT,NNAMES		;NUMBER OF SETSN CALLS
;MONITOR STATISTICS
;N.B. THIS TABLE IS AVAILABLE THROUGH GTTAB AND IS USED BY WATCH, EXEC, ETC.
;THE RELATIVE LOCATION OF WORDS WITHIN THE TABLE SHOULD NOT BE CHANGED.

NSTAT==:0			;COUNT NUMBER STAT WORDS

;SPECIAL VERSION OF RS FOR STAT WORDS - COUNTS TOTAL

DEFINE STATRS (SYM,NUM)<
	NSTAT=NSTAT+NUM
   RS SYM,NUM
   >

STATRS SKDTM0,1			;TIME SPENT IN SKDNUL WITH BALSET EMPTY
STATRS SKDTM1,1			;TIME SPENT IN SKDNUL WITH BALSET NON-EMPTY
STATRS SKDTM2,1			;TIME SPENT RUNNING SCHEDULER
STATRS SPTTIM,1			;TIME SPENT IN PAGER TRAP CODE

STATRS DRMRD,1			;NUMBER OF DRUM READS
STATRS DRMWR,1			;NUMBER OF DRUM WRITES
STATRS DSKRD,1			;NUMBER OF DISK READS
STATRS DSKWR,1			;NUMBER OF DISK WRITES

STATRS TTYBKS,1			;NUMBER OF TTY WAKEUPS
STATRS TTINTS,1			;NUMBER OF TERMINAL INTERRUPTS
STATRS BSTSUM,1			;INTEGRAL OF NBPROC DT
STATRS RJTSUM,1			;INTEGRAL OF NBPROC+NGOJOB DT

NRJAVS==:3			;NUMBER OF EXPONENTIAL AVERAGES MAINTAINED
STATRS RJAV,NRJAVS			;EXPONENTIAL AVERAGE OF NUMBER RUNNABLE FORKS

STATRS DSKWT,1			;SUM OF PROCESS DSK WAIT TIMES
STATRS DRMWT,1			;SUM OF PROCESS DRUM WAIT TIMES

STATRS NTTYIN,1			;TOTAL NUMBER TERMINAL INPUT CHARS
STATRS NTTYOT,1			;TOTAL NUMBER TERMINAL OUTPUT CHARS

STATRS NGCCOR,1			;COUNT OF GCCOR'S
STATRS GCCTIM,1			;INTEGRAL OF GCCOR TIME
STATRS NREMR,1			;COUNT OF WS REMOVALS WHILE RUNNABLE
STATRS BSWT,1			;SUM OF PROCESS WAIT TIMES

STATRS SKDOVH,1			;ACCUMULATED SCHED OVERHEAD TIME IN HP UNITS
STATRS SKDIDL,1			;ACCUMULATED IDLE TIME IN HP UNITS
STATRS SKDSWP,1			;ACCUMULATED SWAP-WAIT TIME IN HP UNITS
STATRS USRTIM,1			;ACCUMULATED USER TIME IN MILLISECONDS

STATRS HQFSUM,1			;INTEGRAL OF NHQFK DT
STATRS LQFSUM,1			;INTEGRAL OF NLQFK DT

STATRS DWRWT,1			;SUM OF PROCESS DISK WRITE WAIT
STATRS NAJBAL,1			;NUMBER OF FORCED AJBALS CALLS
STATRS SNRSUM,1			;INTEGRAL OF SUMNR
STATRS RPQSUM,1			;INTEGRAL OF NRPLQ
STATRS HSPTTM,1			;HP PAGER TRAP TIME
STATRS NCSWCH,1			;NUMBER OF CONTEXT SWITCHES
STATRS BGNDTM,1			;TIME DOING BACKGROUND STUFF (TTCH7, ETC.)

STATRS STRPCT,1			;SYSTEM TOTAL PAGE TRAPS
STATRS SRPQSC,1			;SYSTEM TOTAL "SAVES" FROM RPLQ
STATRS SGCCWR,1			;NUMBER WRITES FROM GCCOR

STATRS NWSSUM,1			;INTEGRAL OF NUMBER WS IN MEM
STATRS SKDFIL,1			;INTEGRAL OF WAIT TIME WO SWAP WAITS
STATRS NWSLOD,1			;COUNT OF WS LOADS
STATRS NREMJ,1			;COUNT OF BALSET REMOVALS WHILE RUNNABLE
STATRS SXGCWR,1			;NUMBER WRITES FROM XGC

;***** END OF STATISTICS TABLE *****

;LOAD AVERAGE COMPONENTS (GETAB TABLES)

RS CLSRJA,<MAXCLS*NRJAVS>	;RUN AVGS FOR CLASSES
RS HQLAV,NRJAVS			;HIGH-QUEUE AVERAGES
RS LQLAV,NRJAVS			;LOW-QUEUE AVERAGES

;**TEMP** 3A ONLY
RS(XB2RED,1)
RS(XB2WRT,1)
;**TEMP END**
;SCHED VARIABLES

NSKDP==:200			;SIZE OF SCHED PDL
RS SKDPDL,NSKDP			;SCHEDULER LOCAL PDL

RS SCKATM,1			;ALARM TIME - MIN OF ALL SCHED CLOCKS
RS OLDTCK,1			;  "
RS PISC7R,4
RS PI7AC1,2			;TEMPS AT PISC7
RS ALARMT,1			;MIN TIME OF FORKS ON CLKLST
RS SKDTHS,1			;TIME IN SCHED SO FAR THIS PASS
RS SKDLST,1			;LAST READING OF HP CLOCK
RS SKDLRT,1			;RUNTIME OF LAST TRIP THRU SCHEDULER
RS SNPSV1,1			;PLACE TO SAVE AN AC WHILE CHECKING PC
				; TO SEE IF IT IS IN A SNOOP BREAK POINT

RS LSTPFK,1			;LAST FORK SCHEDULED
RS LFORKX,1			;LAST FORK BEFORE BGND TASKS
RS FORKX,1			;INDEX OF CURRENTLY RUNNING FORK
RS FREJOB,1			;LIST OF FREE JOBS

RS WTLST,1			;WAITING FORK LIST
RS WT2LST,1			;WAITING FORKS TO BE WAKED BY UNBLK1
RS TTILST,1			;LIST OF FORKS WAITING FOR TTY INPUT
RS TTOLST,1                     ; .. .. TTY OUTPUT EVENTS
RS FRZLST,1			; .. .. UNFREEZING
RS TRMLST,1			; .. .. INFERIOR FORK TERMINATION
RS CLKLST,1			; .. .. CLOCK

RS JTLST,1			; JSYS traps queue
RS JTLSTL,1			; ... last; doubly linked list of forks
				; waiting on JTLCK to PSI some mon fork

RS GOLST,1			;RUNNABLE FORK LIST

RS JB0FLG,1			;RUN JOB 0 REQUESTRS JB0FLG,1			;RUN JOB 0 REQUEST
RS FRECB,1			;FREE CORE NUMBER BITS

RS FREFK,1			;LIST OF FREE FORKS
RS SYSIFG,1			;SYSTEM HAS BEEN INITIALIZED IF NOT 0
RS PWRDWN,1			;POWER FAILURE DETECTED IF .G. 0, DONE IF .L. 0
RSI RLODPC,<0,0,0,RLDHLT>	;XPCW BLOCK FOR KEEP ALIVE RELOAD
RS FPTABL,MAXSEC+1		;PAGEM DISPATCH FOR SECTION NUMBERS
RS NBPROC,1			;NUMBER OF PROCESSES IN BAL SET
RS NBWT,1			;NUMBER WAITING PROCESSES IN BALSET
RS NBSWP,1			;NUMBER FORKS IN SWAP WAIT
RS NBHLD,1			;NUMBER FORKS IN BALSET WAIT
RS OLDSLD
RS OLDIDL
RS MAXBP,1			;MAX NUMBER OF JOBS IN BAL SET
RS BSQNT0,1			;VALUE OF BSQNT AT START OF LAST RUNNING

RS SUMNR,1			;SUM OF RESERVE PAGES, ALL PROCESSES IN MEM
RS SUMBNR,1			;SUM WORKING SETS IN BALSET

RS NWSEPG,1			;NUMBER PAGES WSETS ENTERING MEMORY
RS BALSHC,1			;COUNT OF PAGES IN BALSET BECAUSE OF SHARING
RS NXTCNF,1			;NEXT FORK TO CHECK - GCNO
RS RELCB,1			;MASK OF CORE NUMBERS RELEASED BUT NOT CLEARED
RS MAXNR,1			;MAX VALUE OF SUMNR
RS MAXHNR,1			;MAX NR OF BALSET HOLDING FORKS
RS BSLST,1			;LIST OF BALSET HOLDING FORKS
RS NBSL,1			;NUMBER OF BALSET HOLDING FORKS
RS NEBAL,1			;NUMBER OF PROCESSES NOW ENTERING BALSET

RS NPMAX,1			;MAX NUMBER OF PAGES IN CORE FOR ONE PROCESS
RS SNPMAX,1			;SMALL NPMAX FOR LOADED CONDITIONS
RS IRJAV,1			;NEAREST INTEGER TO RJAV
RS WSMTIM,1			;TIME FOR NEXT WSMGT
RS RWSOKF,1			;FLAG - OK TO DO REMWS
RS NWSMEM,1			;NUMBER WS IN MEM

RS NHQFK,1			;NUMBER FORKS ON .L. MAXQ
RS NLQFK,1			;NUMBER FORKS ON MAXQ
;SCHEDULER VARIABLES

RS SCHFLG,1			;PERMANENT SCHEDULER FLAGS
RS SKEDF1,1			;START PROCESS VIA CH7 BREAK IN 1
RS SKEDF3,1			;PROCESS CLOCK COUNTED TO 0
RS SKEDFC,1			;FORCE CLEAR OF BALSET & MEMORY
RS INSKED,1			;IN SCHEDULER IF NON-ZERO
RS SSKED,1			;LAST JOB RUNNING WAS NOSKED
RS SETPAG,1		;TEMP FOR SETTING PAGER AT SCDR
RS RSKCHK,4			;XPCW DESTINATION

RS PSKED,1			;PAGE TRANSFER COMPLETED
RS QSKED,1			;BLOCKED FORK NOW UNBLOCKED IF .G. 0
RS TSKED,1			;TTY OUTPUT EVENT IF .N. 0
RS BSKED,1			;FORK VOLUNTARILY LEFT BALSET IF .G. 0

RS NGOJOB,1			;NUMBER OF RUNNABLE JOBS

RS RJTTIM,1			;TIME AT LAST UPDATE TO RJTSUM
RS RJATIM,1			;TIME OF NEXT RJAV UPDATE
RS RJAVS1,1			;RJTSUM AT LAST RJAV UPDATE
RS RJAVS2,1			;HQFSUM AT LAST RJAV UPDATE
RS RJAVS3,1			;LQFSUM AT LAST RJAV UPDATE

;CLOCKS COUNTED DOWN AND TESTED, PARALLEL TO PCLKT, DON'T REORDER

RS BSQNT,1			;RUNNING JOB REMAINING QUANTUM
RS TIM1,1			;SCHED FAST CLOCK
RS TIM2,1			;SECOND CLOCK, 100 MS

RS FKT0,1			;CLOCK AT START OF RUNNING
RS FKT1,1			;TIME USED SINCE SETRT
RS TIM0,1			;TODCLK AT LAST C1STAT

RS TODCLK,1			;MILLISECOND CLOCK, MONOTONICALLY INCREASING
RS TODPWL,1			;TIME OF DAY (IN SECONDS) BY POWER LINE CLOCK
RS CHKTIM,1			;TIME AT WHICH JOB 0 CONSIDERED OVERDUE

RS SCDRN1,1			;RUN ONLY JOB N IF N .G. -1
IFN JSSTAT, <			;FOR JSYS STATS ONLY
RS JSTIM,PGSIZ			;PROCESSOR TIME PER TOP-LEVEL JSYS (MS)
RS JSFREQ,PGSIZ			;TOP-LEVEL JSYS CALLING FREQUENCY DISTRIBUTION
RS UTIM,1			;TOTAL USER RUN TIME DURING TEST
>
;DIRECTORY RELATED STORAGE

	RS MXDIRN,1		;MAXIMUM DIRECTORY NUMBER
	RS NDIRPG,1		;MAX # OF PAGES FOR A DIRECTORY FILE
	RS FBTSIZ,1		;SIZE OF FREE BIT TABLE BLOCK

RS IDXORA,1			;WORD CONTAINING START OF INDEX TABLE
RS DIRORA,1			;WORD CONTAINING BASE ADR OF MAPPED DIR
NDG DIRRDM,777777777700		;DEFAULT MASK FOR DIRECTORY READ UPDAATE
RS DIRRDU,1			;READ UPADTE MASK
RS DIRCLK,1			;DIRECTORY CACHE LOCK
NDG	DIRCSZ,^D25		;DIRECTORY CACHE SIZE
RS DIRCSH,DIRCSZ*5		;DIRECTORY CACHE TABLE
RS BTBORA,1			;WORD CONTAINING BASE ADR OF MAPPED BIT TABLE

;MISC STORAGE

;SYSTEM STARTUP FLAG. REPLACES DIDSCA AND STOKF

RS STARTF,1
NR (JB0XFR,1)			;WHERE TO GO ON ERROR IN FORK 0

;STORAGE FOR BUGHLT AND BUGCHK

;KEEP DBUGSW, DCHKSW, EDDTF, WEFLAG IN ORDER (FOR DEBUGGING CONVENIENCE ONLY)

RSI DBUGSW,<0>			;STOP ON BUGHLTS
RSI DCHKSW,<0>			;STOP ON BUGCHKS
RSI EDDTF,<IEDDTF>		;EDDT PRESENT IF NON-0
RSI WEFLAG,<0>			;WRITE-ENABLE MON IF NON-0 AND DBUGSW=1
RSI DINFSW,<0>			;STOP ON BUGINFS

RSI BUGHLT,<0,JRST BUGH0>	;JSR BLOCK FOR BUGHLT'S
RS SVVEXM,1			;SAVE VALID EXAMINE IN BUGTYO
				;USED IN KS10 TO SAVE KEEPALIVE WORD
RSI BUGLCK,<-1>			;LOCK ON BUGXXX ROUTINES
RSI BUGCHK,<0,JRST BUGC0>	;JSR BLOCK FOR BUGCHK'S
RSI BUGINF,<0,JRST BUGI0>	;JSR BLOCK FOR BUGINF'S

RS BUGACS,20			;ACS
RS BUGACU,20			;PLACE TO SAVE PREV CONTEXT ACS
	BUGPLN==:^D40		;PUSH DOWN LIST SIZE
RS BUGPDL,BUGPLN		;PUSH DOWN LIST
	BUGMAX==:5		;DONT LET MORE THAN 5 IN QUEUE
RS BUGCNT,1			;COUNT OF BUG BLOCKS IN QUEUE
RS BUGNUM,1			;NUMBER OF BUG CHECKS SINCE STARTUP
RS BUGSEB,1			;SYSERR BLOCK POINTER
RS BUGP,1			;PLACE TO STORE P DURING BUG HLT/CHK
RS BUGP1,1
RS BUGP2,1
RS BUGP3,1
RS BUGTMS,1			;TIME TO STORE NEXT BUGTIM
	BUGINT==:^D<5*60000>	;INTERVAL FOR STORING BUGTIM-5 MINUTES
RS BUGTIM,4			;ASCII TIME AND DATE STORED FOR BUGHLT

RS BUGT10			;START TIME FOR 10-MIN. BUGCHK COUNT
RS BUGN10			;COUNT FOR 10-MIN. BUGCHK COUNT
;STORAGE FOR JSR'S IN RESIDENT MONITOR

RSI BUGMON,<0,JRST BUGM0>	;TO GO TO SECONDARY PROTOCOL
RSI BUGPRI,<0,JRST BUGP0>	;TO GO TO PRIMARY PROTOCOL

;ROUTINES IN APRSRV TO TYPE CHARACTERS ON THE CTY IN SECONDARY PROTOCOL
;REACHED VIA JSR, WHICH STORES INTO THE FIRST WORD OF THE PAIR.
;THESE LOCATIONS ARE IN PSECT RSDAT

RSI BUGTYC,<0,JRST BUGT0>	;TYPEOUT DURING ERROR HANDLING
RSI BUGMSG,<0,JRST BUGMS0>	;TYPE OUT A STRING
RSI BUGTYO,<0,JRST BUGTY0>	;TYPE CHARACTER, PAD IF <LF>
RSI BUGNO,<0,JRST BUGNO0>	;TYPE A NUMBER

;STORAGE FOR THE UTEST JSYS

RS UTLOCK,1			;CONTAINS THE FORK # OF OWNER
RS UTBASE,1			;THE STARTING ADR OF ROUTINE BEING TESTED
RS UTLEN,1			;THE NUMBER OF WORDS BEING TESTED
UTNPG==:2			;NUMBER OF PAGES OF STORAGE SPACE
NUTWDS==UTNPG*PGSIZ		;WORDS OF BUFFER SPACE FOR UTEST
NRP UTPGS,NUTWDS		;BUFFER SPACE
;STORAGE FOR TTYSRV

NCHBF==:<TTSIZ-1>*4		;NUMBER OF CHARS IN 1 BUFFER

;TTY BUFFERS--INPUT, OUTPUT, AND ECHO
;BUFFERS ARE OF SIZE TTSIZ, AND START AT LOCATIONS N*TTSIZ+1

RS TTBUFS,NTTBF*TTSIZ+TTSIZ

;WORD THAT CONTAINS THE UNIT NUMBER ON THE .FEDLS DEVICE BY WHICH
;THE FRONT END KNOWS THE CTY.  USED IN IDCTY.

	RS CTYINT,1

RS TCOERR,1			;TCOUT SETS THIS IF FAILS IN SCHEDULER CONTEXT


;STORAGE

RS TTFREC,1			;COUNT OF FREE BUFFERS
RS TTFREB,1			;LIST OF FREE BUFFERS
NTSQWD==:<NLINES+^D35>/^D36	;NUMBER OF WORDS IN START OUTPUT QUEUE
RS TTSOQ,NTSQWD			;START OUTPUT QUEUE, ONE BIT PER LINE
RS PTYSTM,1                     ;PTY START TIME
RS TNETRQ,NTSQWD		;BIT MASK FOR ACTIVE NET USER LINES
RS TQLNQ,NTSQWD			;BIT MATRIX FOR LINE FUNCTION QUEUE

;BIG BUFFER

RS TTBIGI,1			;INPUT INDEX
RS TTBIGO,1			;OUTPUT INDEX
RS TTBIGC,1			;COUNT
RS TTBBUF,TTBSIZ		;BUFFER
RS TTQCNT,1			;COUNT OF SPECIAL LINE ITEMS

RS TTCQLN,1			;CONTROL OP CURRENT LINE NUMBER
RS TTHNGL,1			;LINE BEING EXAMINED FOR HUNG
RS TTHNGT,1			;TIME AT WHICH LINE WILL BE DEFINED AS HUNG
RS TTHNGN,1			;LAST HUNG LINE ,, NUMBER UNHANGS DONE
RS LINKF,1			;LINKED OUTPUT CHAR IN NOT 0
RS IMECHF,1			;IMMEDIATE ECHO OUTPUT CHAR IF NON-0
RS TTCHIC,1			;INPUT CHARACTER IN TTCHI
   IFN SMFLG,<RS DZCHCT,1>	;"CLOCK" FOR DZ11 PI CHECK
RS TTSTAT,NLINES		;STATIC DATA
RS TTACTL,NLINES		;POINTER TO DYNAMIC DATA
RS TTSPWD,NLINES		;INPUT,,OUTPUT SPEEDS
RS TTCSAD,NLINES		;ROUTINE FOR SCHEDULER TO CALL
RS TTCSTM,NLINES		;TIME TO CALL ROUTINE IN TTCSAD

RS CTYLNO,1			;CTY LINE NUMBER (STORED IN TTINIT)
;STORAGE FOR STRING CONTAINING VERSION AND NAME OF MONITOR
NR SVN,NSVNT			;TEXT IS READ FROM SYSTEM:MONNAM.TXT
				; OR DEFAULTED TO A PREASSEMBLED STRING
				; AT TSVN

IFN RP04F,<

BTBMAX==:16000			;MAXIMUM WORDS AVAILABLE FOR BIT TABLE
BTBTOP==:3100			;SIZE OF TOP HALF FOR OLD DISKS
BTBBOT==:11300			;SIZE OF BOTTOM HALF FOR OLD DISKS

;BIT TABLE

RS BTBSIZ,1			;MAXIMUM WORDS AVAILABLE FOR BITTABLE
BTBLEN==:BTBMAX		;LENGTH OF BITTABLE IF IN SECTION 0
IFN NETN!EXADF,<IFE SMFLG,<BTBLEN==:0>> ;DO NOT RESERVE SPACE IN SECTION 0
NRP BTB,BTBLEN

;NOTE THAT THE OLD ASSUMPTION THAT SOME CYLINDERS ARE NOT AVAILABLE
;FOR FILES HAS BEEN REMOVED.  LOTRK (THE FIRST AVAILABLE CYLINDER) IS
;NOW ALWAYS 0, AND HITRK (THE HIGHEST AVAILABLE CYLINDER) IS THE LAST
;CYLINDER IN THE STRUCTURE, WHICH IS CONTAINED IN SDBCYL IN THE SDB

LOTRK==:0
>
RS BTBLCK,1			;BIT TABLE LOCK
RS DERRHD,1			;HEADER FOR BAT BLOCK QUEUE
ERRLNK==:4			;OFFSET IN ERROR NODE FOR THE LINK

;VARIABLES HOLDING PARAMETERS OF PUBLIC STRUCTURE


RS NSSUN,1			;# OF SWAPPING SECTORS PER UNIT
RS FSSUN,1			;FIRST SWAPPING SECTOR ON UNIT 


;VARIABLES USED BY FSI ROUTINES

RS FSIBLK,20			;TEMPORARY BLOCK
RS FEFSIZ,1			;SIZE OF FRONT END FILE SYSTEM IN PAGES
RS BOTSIZ,1			;SIZE OF BOOTSTRAP.BIN IN PAGES
NPGSFE==:NTRFE*^D95		;DEFAULT NUMBER OF PAGES IN FE FILE SYSTEM
NPGSBT==:NTRBT			;DEFAULT NUMBER OF PAGES IN BOOTSTRAP.BIN

DSKMSK==:777770			;#163 BITS NOT USED IN LH OF DISK ADDRESS

;HOME BLOCKS

IFN RP04F,<
HOME::	0			;BOOT STRAP FOR THE 11
	1			;HOME BLOCK
	2			;BAT BLOCK
	3			;RESERVED
	4			;RESERVED
	5			;RESERVED
	6			;RESERVED
	7			;RESERVED
	10			;RESERVED
	11			;RESERVED
	12			;SECONDARY HOME BLOCK
	13			;SECONDARY BAT BLOCK
NHOME==:.-HOME
>


;DO NOT REORDER ERROR WORDS, USED BY GETAB

NDSKEW==:^D10			;NUMBER OF ERROR WORDS FOR GETAB

RS DSKRCE,1			;COUNT OF RECOVERABLE ERRORS
RS DSKRER,4			;COMMAND WORDS AND ERROR BITS OF LAST ERROR
RS DSKNRE,1			;COUNT OF NON-RECOVERABLE ERRORS
RS DSKLER,4			;COMMAND WORDS AND ERROR BITS LAST NON-REC ERR
RS DSPSFK,1			;FORK,,PSI FOR DISK ONLINE/OFFLINE INTERRUPT

;PARAMETERS FOR THE BAT BLOCK ERROR QUEUE

NODSIZ==:5			;SIZE OF AN ENTRY
MAXNOD==:^D10			;NUMBER IN FREE POOL
RS IOERRQ,MAXNOD*NODSIZ		;ALLOCATE THE POOL
RS IOERRH,1			;THE QUEUE HEADER
RS ERRSWP,1			;FLAG FOR A BAD BLOCK ON PSB, PT, UPT READ
RS VSMFLG,1			;FLAG FOR FORCED VERIFICATION OF MONITOR AT
				;SYSTEM STARTUP TIME

;BAT BLOCK VARIABLES

CODBAT==:606060			;UNLIKELY CODE IN BATCOD
MAXBFR==:^D61*2			;MAX FREE SPACE IN BAT BLOCK
MAXBAD==:^D511			;MAX BAD SPOTS IN A BAD PAIR
BAT1P==:4			;OFFSET OF FIRST BAD PAIR
;STRTAB AND SDB DEFINITIONS

NR (UCSEED,1)			;SEED FOR UNIQUE CODE FOR EACH STRUCTURE
NR (STRLOK)			;LOCK FOR THE DISMOUNT CODE

NDG STRN,^D16			;MAXIMUM NUMBER OF STR'S ALLOWED
RS STRTAB,STRN			;TABLE OF POINTERS TO SDB'S
RS DSMENB,1			;ENABLE FOR STRUCTURE DISMOUNTS (0=NO DISMNTS,
				;NON-0=OK TO DISMOUNT STRUCTURES)
RS BBNBYT,1			;ENABLE BBN FAST BYTE CODE
NDG MXSTRU,4			;MAX # OF PACKS IN A STRUCTURE
				; (ASSUMES RP04'S, USED TO LIMIT SDBUDB)
HOMTBL==:MXSTRU			;LENGTH OF HOMTAB
RS HOMTAB,HOMTBL		;LOGICAL TO PHYSICAL MAPPING
				; (CKU NUMBERS FOR EACH LOGICAL UNIT)

RS SWPSTR,1			;#14 points to SDB of swapping structure


;SDB - STRUCTURE DATA BLOCK FORMAT

SDBNAM==:0			;STRUCTURE NAME
SDBNUM==:1			;NUMBER OF UNITS IN STRUCTURE
SDBSIZ==:2			;SIZE IN SECTORS OF EACH UNIT IN STR
SDBSTS==:3			;STATUS FLAGS,,INITING FORK
SDBRXB==:4			;ADDRESS OF ROOT DIR INDEX BLOCK
SDBBXB==:5			;ADDRESS OF BACKUP COPY OF ROOT DIR
SDBNSS==:6			;NUMBER OF SWAPPING SECTORS PER UNIT
SDBFSS==:7			;FIRST SWAPPING SECTOR PER UNIT
SDBBTB==:10			;OFN OF BIT TABLE
SDBFRC==:11			;COUNT OF FREE PAGES ON STRUCTURE
SDBIDX==:12			;HANDLE'S OF INDEX TABLE AND ROOT-DIRECTORY
SDBLDN==:13			;LAST DIRECTORY NUMBER ON THIS STRUCTURE
SDBLCA==:14			;LAST CYLINDER ASSIGNED BY DSKASN
SDBCYL==:15			;TOTAL CYLINDERS IN STRUCTURE
SDBBT0==:16			;LENGTH OF TOP HALF OF BIT TABLE
SDBBT1==:17			;LENGTH OF BOTTOM HALF OF BIT TABLE
SDBTYP==:20			;ADDRESS OF DSKSIZ TABLE FOR THIS TYPE OF DISK
SDBFLK==:21			;FILE LOCK COUNT,,UNIQUE CODE
SDBCNT==:22			;MOUNT COUNT,,OPEN FILE COUNT
SDBPUC==:23			;PACK UNIQUE CODE FOR MEDIA IDENTIFICATION
SDBOMF==:24			;ORIGINAL MINIMUM FREE PAGES LIMIT
SDBMXF==:25			;BOUNDRY ABOVE WHICH SDBMFP=SDBOMF
SDBMFP==:26			;MIN FREE PAGES BELOW WHICH DSKASA
				;CHANGES ASSIGNMENT ALGORITHM
SDBUDB==:27			;FLAGS,,POINTERS TO UDB'S
SDBLN==:SDBUDB+MXSTRU		;LENGTH OF ONE SDB
RS SDBBL0,SDBLN			;STRUCTURE DATA BLOCK FOR PS
;STORAGE FOR RESIDENT FREE SPACE POOL

;PRIORITY LEVELS

	.RESP1==:0		;HIGHEST PRIORITY, ALWAYS TRY TO ASSIGN SPACE
				;NO PAGE FAULTS ALLOWED
	.RESP2==:1		;SECOND LEVEL, NO PAGE FAULTS ALLOWED
				;BUT DONT ASSIGN SPACE IF BELOW RESMIN
	.RESP3==:2		;PROCESS CONTEXT. PAGE FAULTS ALLOWED.
				;LOCK DOWN MORE SPACE IF NECESSARY

;POOL NUMBERS. NOTE: POOL NUMBERS START AT 1, SO THAT WE CAN DETECT
;INADVERTENT ZEROING OF POOL NUMBERS IN FREE SPACE. OFFSET 0 IN THE
;TABLES IS UNUSED. 

	.RESGP==:1		;GENERAL RESIDENT FREE SPACE POOL
	.RESTP==:2		;TERMINAL POOL
	.RESNP==:3		;NETWORK POOL
	.RSTMP==:4		; TIMER pool

	RESQTL==:5		;NUMBER OF POOLS OF RESIDENT FREE SPACE
				; USED FOR ALLOCATION OF QUOTA TABLE

;QUOTAS FOR EACH OF THE POOLS. INITIALIZATION CODE IN FREE STORES 
;VALUES INTO RESUTB

NDG .RESGQ,10000		;GENERAL QUOTA - USED BY PHYSIO FOR UDBS
				;   CDBS, KDBS, AND FOR SDBS.
				;   APPROXIMATELY 8 CHANNELS, 40 DRIVES,
				;   AND 16 ONLINE STRUCTURES
	.RESTQ==:40*ACTLNS	;TERMINAL QUOTA - USED BY TTYSRV
IFN CHAOS,<			;@@@ FOR CHAOSNET NEED MORE BUFFERS
IFN NETN!INETN,<		;IF HAVE ARPA OR INTERNET SUPPORT
	.RESNQ==:10000		; THIS IS ALL WE CAN SQUEEZE IN
>
IFE NETN!INETN,<		;ELSE,
	.RESNQ==:30000		; WE HAVE MORE ROOM
>
>;IFN CHAOS, 100
IFE CHAOS,<
	.RESNQ==:^D<50*2*30>	;NETWORK QUOTA - MESSAGE SIZE * ( # OF
				;   INPUT MESSAGES + # OF OUTPUT MESSAGES)
				;   * # OF ACTIVE LINKS
	IFN <ATS*SMFLG>,<.RESNQ==:.RESNQ+^D1000>
				;Increase buffers for DDCMP on 2020 with ATS
>; 100
	.RSTMQ==:3*^D8*NJOBS	; For TIMER 3 per job, 8 words each


;MISCELLANEOUS VALUES FOR RESIDENT FREE SPACE

IFE CHAOS,<RESFRM==:400/4>	; 100 BLOCKS GUARANTEED FOR .RESP1 REQUESTS
IFN CHAOS,<RESFRM==:<.RESNQ/3>/4> ;100 FOR NETWORK, NEED LOTS LOCKED DOWN
	RESFRA==:10000/4	;MINIMUM AMOUNT OF FREE SPACE MAINTAINED
				;BY JOB 0

;RESIDENT STORAGE FOR RESIDENT FREE SPACE MANAGER

RS RESMIN,1			;MINIMUM LEVEL FOR ALL BUT LEVEL 1 REQUESTS
RS RESAVE,1			;MINIMUM FREE SPACE LEVEL (BLOCK)
RS RESFRE,1			;COUNT OF FREE BLOCKS LEFT
RS RESFFB,1			;FIRST FREE 4 WORD BLOCK
RSI RESIFL,<-1>		;INITIALIZATION FLAG = -1 DURING STARTUP
	NRESFP==:2*<.RESGQ+.RESTQ+.RESNQ+.RSTMQ>/3000
  IFL NRESFP-10,<NRESFP==:10>	;ENSURE MINIMUM VALUE
				;# OF PAGES IS 2/3 OF SUM OF QUOTAS
	NRESFB==:NRESFP*PGSIZ/4	;NUMBER OF RESIDENT FREE 4 WORD BLOCKS
NRP RESFRP,<NRESFP*PGSIZ>	;RESERVE SPACE FOR RESIDENT FREE POOL
        RESFRZ==:RESFRP+<NRESFP*PGSIZ>-1 ;END OF RESIDENT FREE POOL
	RESBTL==:<NRESFP*PGSIZ/4+^D35>/^D36 ;LENGTH OF BIT TABLE
RS RESBAS,1			;BASE ADDRESS OF THE RESIDENT FREE POOL
RS RESUTB,RESQTL		;RESIDENT FREE SPACE USAGE TABLE
INTERN NDEV,DVXTT0

; Initial device tables used to initialize the working device tables

;CHARACTERISTICS DEFINITIONS AND MODE DEFINITIONS

DSCHR==DV%OUT!DV%IN!DV%DIR!DV%MDD
STRCHR==DV%OUT!DV%IN!DV%DIR!DV%MDD
DSCH1==0
STRCH1==0
DSMOD==DV%M0!DV%M1!DV%M2!DV%M3!DV%M4!DV%M5!DV%M6!DV%M7!DV%M10!DV%M11!DV%M12!DV%M13!DV%M14!DV%M15!DV%M16!DV%M17

MTCHR==DV%OUT!DV%IN!DV%AS
MTCH1==0
MTMOD==DV%M0!DV%M17

DTCHR==DV%MDV!DV%OUT!DV%IN!DV%DIR!DV%AS
DTCH1==0
DTMOD==DV%M0!DV%M17

   IFG FEN,<
FECHR==DV%IN!DV%OUT!DV%AS
FECHR1==0
FEMOD==DV%M0>

PRCHR==DV%IN!DV%AS
PRCH1==0
PRMOD==DV%M0!DV%M1!DV%M10!DV%M13!DV%M14

PPCHR==DV%OUT
PPPCHR==DV%OUT!DV%AS
PPCH1==D1%SPL
PPPCH1==0
PPMOD==DV%M0!DV%M1!DV%M10!DV%M13!DV%M14

VBCHR==DV%OUT!DV%IN!DV%AS
VBCH1==0
VBMOD==DV%M0!DV%M17


   IFG CDRN,<
CDRCHR==DV%IN!DV%AS
CDRCH1==0
CDRMOD==DV%M0!DV%M10
   >
LPCHR==DV%OUT
PLPCHR==DV%OUT!DV%AS
LPCH1==D1%SPL
PLPCH1==0
LPMOD==DV%M0

CRCHR==DV%IN
CRCH1==D1%SPL
CRMOD==DV%M0

CPCHR==DV%OUT			;SPOOLED CARD PUNCH
CPCH1==D1%SPL
CPMOD==DV%M0+DV%M10

PCPCHR==DV%OUT!DV%AS			;PHYSICAL CARD PUNCH
PCPCH1==0
PCPMOD==DV%M0

TTYCHR==DV%OUT!DV%IN!DV%AS
TTYCH1==0
TTYMOD==DV%M0!DV%M10

CHACHR==DV%IN!DV%OUT		;100
CHACH1==0			;100
CHAMOD==DV%M0!DV%M5!DV%M6!DV%M7	;100 Same modes as arpanet (not all meaningful)

PTYCHR==DV%OUT!DV%IN!DV%AS
PTYCH1==0
PTYMOD==DV%M0

NULCHR==DV%OUT!DV%IN
NULCH1==0
NULMOD==DV%M0!DV%M1!DV%M2!DV%M3!DV%M4!DV%M5!DV%M6!DV%M7!DV%M10!DV%M11!DV%M12!DV%M13!DV%M14!DV%M15!DV%M16!DV%M17

NETCHR==DV%OUT!DV%IN!DV%DIR
NETCH1==0
NETMOD==DV%M0!DV%M5!DV%M6!DV%M7

PLCHR==DV%OUT
PPLCHR==DV%OUT!DV%AS
PLCH1==D1%SPL
PPLCH1==0
PLMOD==DV%M0

DLXCHR==DV%IN!DV%OUT!DV%AS
DLXCH1==0
DLXMOD==DV%M0

DCNCHR==DV%IN!DV%OUT
DCNCH1==0
DCNMOD==DV%M0!DV%M1

;DEFINITIONS FOR APPLICATIONS TERMINALS

ATSCHR==DV%IN!DV%OUT
ATSCH1==0
ATSMOD==DV%M0

;DEFINITIONS FOR CMA DEVICE (AYDIN DISPLAY)
CMCHR==DV%OUT!DV%AS
CMCH1==0
CMMOD==DV%M17

IFG PNGN,<			;#157 .
PNGCHR==DV%OUT			;#157 .
PNGCH1==D1%SPL			;#157 .
PNGMOD==DV%M0			;#157 .
>				;#157 End IFG PNGN
DEFINE DV (NAME,UNITS,TYPE,DISP,CHAR1,CHAR2,MODES,CHAR3)<
	SIXBIT /NAME/
	XWD NDEV,DISP
	EXP CHAR1!<TYPE>B17!MODES
	EXP CHAR2+CHAR3+UNITS
   IFE UNITS,<NDEV==:NDEV+1>
NDEV==:NDEV+UNITS>
DVTSTP==:4			;STEP SIZE FOR INIDVT TABLE

;DEVICE INITIALIZATION TABLE (LOADED IN SWAPPABLE CODE SEGMENT)

NDEV==:0

INIDVT::	DV(DSK,0,0,DSKDTB,DSCHR,DSCH1,DSMOD,0) ;DSK ALWAYS EXISTS
DVXST0==:NDEV
		DV(STR,STRN,0,DSKDTB,STRCHR,STRCH1,DSMOD,0)
DVXSTN==:NDEV
IFG MTAN,<
	DV(MTA,MTAN,2,MTADTB,MTCHR,MTCH1,MTMOD,0) ;MAGTAPE
	DV(MT,MTAN,2,MTDTB,MTCHR,MTCH1,MTMOD,DV%PSD)	;MT (FOR USER)
>
IFG DTAN,<	DV(DTA,DTAN,3,DTADTB,DTCHR,DTCH1,DTMOD,0)> ;DECTAPE
IFG PTRN,<	DV(PTR,PTRN,4,PTRDTB,PRCHR,PRCH1,PRMOD,0)> ;PTR
IFG SPTPN,<	DV(PTP,0,5,SPLDTB,PPCHR,PPCH1,PPMOD,0) ;SPOOLED PTP
		DV(PTP,SPTPN,5,SPLDTB,PPCHR,PPCH1,PPMOD,0)> ;SPOOLED PTP UNITS
IFG PTPN,<	DV(PPTP,PTPN,5,PTPDTB,PPPCHR,PPPCH1,PPMOD,0)> ;PTP
IFG VBCN,<	DV(VBC,0,6,VBCDTB,VBCHR,VBCH1,VBMOD,0)> ;VB10 DISPLAY
IFG CMAN,<      DV(CMA,CMAN,.DVADS,CMADTB,CMCHR,CMCH1,CMMOD,0)> ;AYDIN DISPLAY
		DV(LPT,0,7,SPLDTB,LPCHR,LPCH1,LPMOD,0) ;SPOOL LPT ALWAYS EXISTS
IFG LPTN,<	DV(LPT,LPTN,7,SPLDTB,LPCHR,LPCH1,LPMOD,0)> ;SPOOLED LPT UNITS
DVXLP0==:NDEV
IFG LPTN,<
	DV(PLPT,LPTN,7,LPTDTB,PLPCHR,PLPCH1,LPMOD,0)> ;PHYSICAL LPT
		DV(CDR,0,10,SPLDTB,CRCHR,CRCH1,CRMOD,0)	;SPOOLED CDR
   IFG CDRN,<DVXCD0==:NDEV
	DV(PCDR,CDRN,10,CDRDTB,CDRCHR,CDRCH1,CDRMOD,0)> ;PCDR
   IFG CDPN,<	DV(CDP,0,21,SPLDTB,CPCHR,CPCH1,CPMOD)> ;SPOOLED CDP
   IFG PCDPN,<	DV(PCDP,PCDPN,21,CDPDTB,PCPCHR,PCPCH1,CPMOD)>	;PHYSICAL CDP
   IFG FEN,<	DV(FE,FEN,11,FEDTB,FECHR,FECHR1,FEMOD,0)	;THE FE DEVICES
   >
DVXTT0==:NDEV			;SAVE DEV TABLE INDEX OF FIRST TTY
		DV(TTY,NLINES,12,TTYDTB,TTYCHR,TTYCH1,TTYMOD,0) ;TTYS ALWAYS EXIST
IFG NTTPTY,<	DV(PTY,NTTPTY,13,PTYDTB,PTYCHR,PTYCH1,PTYMOD,0)> ;PSEUDO TTY
		DV(NUL,0,15,NILDTB,NULCHR,NULCH1,NULMOD,0) ;THE NULL DEVICE
IFG NETN,<	DV(NET,0,16,NETDTB,NETCHR,NETCH1,NETMOD,0)>
IFG SPLTN,<	DV(PLT,0,17,SPLDTB,PLCHR,PLCH1,PLMOD,0) ;SPOOLED PLOTTER
		DV(PLT,SPLTN,17,SPLDTB,PLCHR,PLCH1,PLMOD,0)> ;SPOOLED PLT UNITS
IFG PLTN,<	DV(PPLT,PLTN,17,PLTDTB,PPLCHR,PPLCH1,PLMOD,0)> ;PLOTTER
IFG DLXN,<	DV(DLX,DLXN,20,DLXDTB,DLXCHR,DLXCH1,DLXMOD,0)> ;DL10
IFG DCN,<	DV(DCN,0,22,DCNDTB,DCNCHR,DCNCH1,DCNMOD,0)
		DV(SRV,0,23,SRVDTB,DCNCHR,DCNCH1,DCNMOD,0)>
IFN ATS,<	DV(ATS,0,24,ATSDTB,ATSCHR,ATSCH1,ATSMOD,0)> ;APPLICATIONS TERMINALS
IFN CHAOS,<	DV(CHA,0,25,CHADTB,CHACHR,CHACH1,CHAMOD,0)> ; 100 CHAOSNET
IFG PNGN,<	DV(PNG,0,.DVPNG,SPLDTB,PNGCHR,PNGCH1,PNGMOD,0) ;#157 SPL'd PNG
	DV(PNG,PNGN,.DVPNG,SPLDTB,PNGCHR,PNGCH1,PNGMOD,0)> ;#157 SPLd PNG units

	BLOCK 2*DVTSTP		;LEAVE ROOM TO PATCH 2 DEVICES
NINIDV==:.-INIDVT

NDEV=NDEV+2			;LEAVE ROOM TO PATCH 2 DEVICES

RS(DEVL0K,LOKLEN)			; Lock for assigning devices
NR(DEVNAM,NDEV)			; Sixbit device name
NR(DEVCHR,NDEV)			; Device characteristics
NR(DEVCH1,NDEV)			;DEV CHAR WORD # 2
NR(DEVCH2,NDEV)		; DIR NUMBER OF SPOOL DIRECTORY
NR(DEVDSP,NDEV)			; Lh = ofn if any, rh = dispatch table address
RS(DEVUNT,NDEV)			; Lh = job of assigner, rh = unit number
;PARAMETERS AND STORAGE FOR ACCOUNT VALIDATION

NR ACTOFN,1		;OFN FOR <SYSTEM>ACCOUNTS-TABLE.BIN
NR ACTPGN,1		;FILE PG # MAPPED INTO ACCOUNT WINDOW PAGE
NR ACTLCK,1		;LOCK FOR HASH TABLE AND ACCOUNT WINDOW PAGE
NR AVALON,1		;ACCOUNT VALIDATION RUNNING IF NONZERO

NRP(HSHPG,PGSIZ)	;HASH TABLE PAGE
NRP(ACTPG,PGSIZ)	;ACCOUNT WINDOW PAGE

HASHLN==:PGSIZ-1		;# OF HASH VALUES FOR ACCOUNT VALIDATION
;PARAMETERS AND DATA STORAGE FOR IPCF,ENA, AND NETWORK STRINGS

ENQBKS==:6			;ENQ/DEQ BLOCK SIZE (OPTIMUM)
HSHLEN==:3*NJOBS		;LENGTH OF ENQ/DEQ HASH TABLE
ENFREL==:HSHLEN*ENQBKS		;FREE SPACE FOR ENQ/DEQ
PDFKTL==:<NFKS+^D35>/^D36	;LENGTH OF FORK BIT TABLE

PIDHDS==:5			;LENGTH OF PID HEADER
MESHDS==:6+MAXLW+WPN		;LENGTH OF MESSAGE HEADER (SEE MESALN, MESLLN IN IPCF.MAC)
PAGMSZ==:MESHDS+3		;LENGTH OF PAGE MESSAGE
MAXMSL==:^D30			;MAXIMUM LENGTH OF A NON-PAGE MESSAGE
MAXSMS==:^D60			; Maximum system packet size
MINPHL==:4			;MINIMUM SIZE OF PID DESCRIPTOR BLOCK
SWOPTL==:MESHDS+^D12		;OPTIMAL LENGTH OF FREE STORAGE BLOCK
PIDSSQ==:^D20			;STANDARD SEND QUOTA
PIDSRQ==:^D20			;STANDARD RECEIVE QUOTA
PIDSPQ==:5			;PID QUOTA, MAXIMUM PIDS ALLOWED PER NON-PRIVILEGED JOB
PIDSPJ==:2			;PIDS GUARANTEED PER JOB IF NONE USE MORE
IPCCFL==:<.IPCCC>B32		;FLAGS USED WHEN SENDING AN IPCC
				;   REQUEST TO INFO

MAXPID==:NJOBS*PIDSPJ		;HIGHEST POSSIBLE PIDTBL INDEX (0 ISN'T USED AS AN INDEX)
PIDTBS==:1+MAXPID/2		;NUMBER OF WORDS NEEDED FOR ONE HALFWORD PER PID
PDFREL==:MAXPID*<PIDHDS+SWOPTL>	;FREE SPACE SIZE (1 MESS/PID)

SRVSPC==^D32
DCNSPC==^D15
MAXBLK==:0
IFN DCN,<
MAXBLK==:SRVSPC*^D50+DCNSPC*^D40 ;STRING SPACE FOR NETWORK CONNECTIONS
>
ENQMXF==:ENFREL+PDFREL*3/4	;MAXIMUM ENQ FREE SPACE UTILIZATION
SWFREL==:PDFREL+MAXBLK+ENFREL	;IPCF STORAGE + ENQ/DEQ STORAGE+NET STRINGS
MAXPIT==:<SWFREL+PAGMSZ-1>/PAGMSZ ;MAXIMUM NUMBER OF PAGES IN TRANSIT
PIDPBL==:<MAXPIT+^D35>/^D36	;LENGTH OF PIT BIT TABLE
PIDFTL==:<MAXPIT+^D511>/^D512	;LENGTH OF PIT OFN TABLE

NR(PIDTBL,PIDTBS)		;PID TABLE HAS HALFWORD PER PID
				;  THE HALF WORD POINTS TO THE HEADER
				;  OF THE PID IF IT EXISTS

	SPDTBL==:10		;LENGTH OF SYSTEM PID TABLE SET BY USERS
NR(SPIDTB,SPDTBL)		;TABLE OF COMMONLY USED PIDS

NR(PIDL0K,LOKLEN)			;LOCK ON PID FREE POOL AND DATA STRUCT.
NR(NXTPID,1)			;NEXT UNIQUE # TO BE USED AS LH OF PID
NR(INFOPD,1)			;PID OF SYSTEM INFO
NR(INFOPV,1)			;PUBLIC VALUE OF SYSTEM INFO PID
NR(PIDLST,1)			;NUMBER OF FIRST FREE PID, 0 IF NONE

NR(PIDMXP,1)			;HIGHEST PAGE IN PAGES-IN-TRANSIT FILE
NR(PIDPBT,PIDPBL)		;BIT TABLE OF PAGES-IN-TRANSIT FILE
NR(PIDFTB,PIDFTL)		;TABLE OF PTN'S OF FORKS FOR PAGES IN TRANSIT

NR(SWPFRE,7)			;FREE SPACE HEADER BLOCK
NR(SWFREE,SWFREL)		;FREE STORAGE SPACE FOR MESSAGES
				;AND HEADERS

NR(PIDCNT,NJOBS)		;TABLE OF QUOTAS AND COUNTS FOR IPCF

RS(PDFKTB,PDFKTL)	;ONE BIT PER FORK, WAKE UP TABLE

   IFN SSAN,<			;#25 .

;#25  This needs to be loaded on page 2 (at 2000). 2000 & 2020 are set in the
;#25  SA10 hardware as the base addresses of SA0 and SA1 respectively.  A
;#25  single SA10 system will have only an SA0.
;#25  This is placed here to get it in before GTOKPR, which, contrary to the 
;#25  comment at FFF, is the 1st thing loaded after the JSYS table in standard
;#25  DEC TOPS-20

	RESCD			;#25 .

SA0BAS::BLOCK SSANSC*4		;#25 4 words per subchannel
SA1BAS::BLOCK SSANSC*4		;#25 4 words per subchannel

;#25  The rest of the storage on this page is not hardware determined, but
;#25   is here because it needs to be on an uncached page.

IFN SSADF,<			;#25 if disks exist on SA10
	CC1CP(CC1XCP,SHORT)	;#25 create channel program up to RD/WRT
	IOW PGSIZ,CC1PGA	;#25 read page into special page
	TCH .-.			;#25 transfer to normal CP
	EXP 0			;#25 end of chain (should not be needed)
	INTERN CC1XCP		;#25  .

>				;#25 end of IFN SSADF


   IFN SSATF,<			;#26 .
MTASEN::BLOCK 6			;#26 sense data from latest sense command
MTRECP::BLOCK 3			;#26 error recovery channel program
NMTCM==40			;#26 amount of channel command space needed
MTCHCL::BLOCK NMTCM		;#26 channel command list buffer
   >				;#26 end of IFN SSATF

SAXFRE::XWD -SAXSPC,.+1		;#25 <-length>,,next free word
SAXSPC==1000-<.-SA0BAS>		;#25 amount of free space available
	BLOCK	SAXSPC		;#25 finish up the uncached page 

   >				;#25 end of IFN SSAN

IFN ISIQ,RS(RFNTC)		;#522 RFNTOT counter
RS(FT410)			;#520 410 word blocks only runtime flag
RS(OBCNT)			;#520 OddBlock counter
RS(HBCNT)			;#520 Hashblock counter
; DEFAULT DEFINITIONS FOR GETOK

GT%DEF==77B11

NDG	DGOUSR,0!GT%DEF		;USER REQUESTS
NDG	DGOASD,SF%DOK!GT%DEF	;ASSIGN DEVICE
NDG	DGOCAP,SF%DOK!GT%DEF	;ENABLE CAPABILITIES
NDG	DGOCJB,SF%DOK!GT%DEF	;CREATE JOB
NDG	DGOLOG,SF%DOK!GT%DEF	;LOGIN
NDG	DGOFKN,5		;DEFAULT NUMBER OF FORKS BEFORE GETOK IS CALLED
NDG	DGOCFK,SF%DOK!GT%DEF+DGOFKN	;CREATE FORK
NDG	DGOTBR,SF%DOK!GT%DEF
NDG	DGOLGO,SF%DOK!GT%DEF	;LOGOUT OVER QUOTA
NDG	DGOENQ,0!GT%DEF		;ENQ OVER QUOTA
NDG	DGOCRD,SF%DOK!GT%DEF	;CREATE DIRECTORY
NDG	DGOSMT,SF%DOK!GT%DEF	;INCREMENT MOUNT COUNT
NDG	DGOMDD,SF%DOK!GT%DEF	;ENTRY TO MDDT
NDG	DGOCLS,SF%DOK!GT%DEF	;SET CLASS
NDG	DGOCL0,SF%DOK!GT%DEF	;SET CLASS AT LOGIN ONLY
NDG	DGOMTA,0!GT%DEF		;NO ACCESS FOR MT'S
NDG     DGOACC,0!GT%DEF         ;NO ACCESS
NDG     DGOOAD,SF%DOK!GT%DEF    ;OPEN ASSIGNABLE DEVICE
NDG	DGODNA,SF%DOK!GT%DEF	;DECNET ACCESS
NDG	DGOANA,SF%DOK!GT%DEF	;ARPANET ACCESS
NDG	DGOATJ,SF%DOK!GT%DEF	;ATTACH
NDG	DGOSPL,SF%DOK!GT%DEF	;#212 Access to spooled device
NDG	DGOTTM,0!GT%DEF		;#261 Access to TTMSG JSYS

;DEFAULT TIMEOUT FOR GETOK

NDG     GIVTIM,200000           ;GIVOK TIMEOUT TIMER
NDG     RCVTIM,200000           ;RCVOK TIMEOUT TIMER

; STORAGE FOR GETOK,GIVOK,RCVOK

	.PSECT RSDAT

GTOKPR::DGOUSR		;ONE ENTRY PER LEGAL GETOK/GIVOK FUNCTION (THIS ENTRY IS USER REQUESTS)
	DGOASD		;ASSIGN DEVICE
	DGOCAP		;ENABLE CAPABILITIES
	DGOCJB		;CREATE JOB
	DGOLOG		;LOGIN
	DGOCFK		;CREATE FORK
	DGOTBR		;TERMINAL BAUD RATE
	DGOLGO		;LOGOUT WHEN DIR OVER QUOTA
	DGOENQ		;ENQ QUOTA SETTING
	DGOCRD		;CREDIR
	DGOSMT		;SMOUNT
	DGOMDD		;MDDT ENTRY
	DGOCLS		;SET CLASS FOR JOB
	DGOCL0		;SET CLASS AT LOGIN
	DGOMTA		;MT ACCESS
        DGOACC          ;ENTRY FOR ACESS JSYS
        DGOOAD          ;ASSIGN DEVICE VIA OPENF
	DGODNA		;DECNET ACCESS
	DGOANA		;ARPANET ACCESS
	DGOATJ		;ATTACH
	DGOSPL		;#212 Access to spooled device
	DGOTTM		;#261 Access to TTMSG JSYS
MXGOKF==:.-GTOKPR	;SIZE OF TABLE

	SWAPCD

RS (GETOKF,1)		;ARGUMENT LIST POINTER
RS (GOKNRQ,1)		;REQUEST NUMBER FOR NEXT FREE NUMBER
RS (GOKQED,1)		;FLAG FOR Q'ED GETOK REQUESTS
RS (GOKLCK,1)		;LOCK FOR GETOK Q
RS (ACJJN,1)		;JOB NUMBER OF ACCESS CONTROL JOB
RS (ACJFN,1)		;FORK NUMBER OF ACCESS CONTROL JOB
RS (RCVTMO,1)           ;RCVOK TIMEOUT TIME
;LOCAL STORAGE FOR ENQ/DEQ
ENFKTL==:<NFKS+^D35>/^D36	;LENGTH OF FORK BIT TABLE

NR(HSHTBL,HSHLEN)		;HASH TABLE FOR ENQ LOCKS

NR(ENQL0K,LOKLEN)			;DATA BASE LOCK FOR ENQ AND DEQ
NR(ENQSPC,1)			;COUNT OF FREE SPACE AVAILABLE FOR ENQ'S
NR(ENQLTL,1)			;LIST OF LONG TERM LOCKS
NR(ENQLTS,1)			;TIME OF NEXT GARBAGE COLLECT

RS(ENFKTB,ENFKTL)		;WAKE UP TABLE - ONE BIT PER FORK

;LOCAL STORAGE FOR DIRECTORY LOCK ENQ/DEQ

LCKDBN==:<NFKS+^D35>/^D36	;LENGTH OF FORK BIT TABLE

RS LCKDBT,LCKDBN		;FORK BIT TABLE, ONE BIT PER FORK

; Local storage for TIMER

RS (TIMLCK,1)			; Lock on TIMER Q's
RS (TMLSTL,1)			;FORK THAT LAST LOCKED TIMLCK
RS (TIMMLQ,1)			; Elapsed time clock Q head
RS (TIMDTQ,1)			; Date & time clock Q head
RS (TMNSS,1)			; # times scheduler has scanned Q's
RS (TMMUSE,1)			; # milliseconds use by scheduler

;LOCAL STORAGE FOR PTY

RS PTYSTS,NTTPTY			;STATUS BITS

;STORAGE FOR CRJOB JSYS

NR (CRJAC1,1)			;CALLER'S AC1 FLAG BITS
NR (CRJACT,11)			;ACCOUNT FOR NEW JOB LOGIN (STRING)
RS (CRJANS,1)			;ANSWER CELL FROM SCHED OR EXEC0
RS (CRJCAM,1)			;CAP MASK TO APPLY AT LOGIN TIME
RS (CRJCPU,1)			;CPU TIME LIMIT
NR (CRJEVO,1)			;ENTRY VECTOR OFFSET FOR NEW JOB
NR (CRJEXF,1)			;EXEC FLAGS FOR NEW JOB
NR (CRJFAC,20)			;FORK'S AC'S FOR NEW JOB
NR (CRJFIL,40)			;FILE NAME TO RUN IN NEW JOB
RS (CRJJNO,1)			;JOB NUMBER, SET AT SCHED LEVEL
RS (CRJLCK,1)			;LOCK ON ALL THIS DATA, SCHED TESTED
NR (CRJOJC,1)			;OWNING JOB'S CAPABILITIES
NR (CRJONJ,1)			;OWNING JOB'S JOB NUMBER
NR (CRJPJF,1)			;PRIMARY JFNS FOR NEW JOB
NR (CRJPSW,10)			;LOGIN PASSWORD FOR NEW JOB
RS (CRJSLO,1)			;PID TO SIGNAL ON LOGOUT
NR (CRJTTY,1)			;REQUESTED TTY FOR NEW JOB
NR (CRJUSR,10)			;NAME STRING TO LOG NEW JOB IN AS
NR (JOBONT,NJOBS)		;OWNER OF THIS JOB IN RH, ELSE -1
				; ALSO, B1 MEANS JOB WANTS TO LOG OUT
;SM10 DEPENDENT DATA

; UNIBUS ADAPTER SAVE AREAS

   IFN SMFLG,<
RS (SMADNX,4)			;NXT FREE NPR MAP FOR UBA
RS (SMUAMR,1)			;VALUE TO USE FOR SM10 UNIBUS ADAPTER MAINT REG
RS (SMUASR,1)			;VALUE TO USE FOR SM10 UNIBUS ADAPTER STATUS REG

   > ;END IFN SMFLG
IFG DTAN,<

; Private storage for dectapes

DTNBUF==3*DTAN+2			;Number of buffers is one for read
				;One for write, one for directory, and
				;2 more for double buffering 1st files
DTNBUF==:<DTNBUF+3>/4*4		;Round to next higher page boundary
NDBMSK==:-1_<^D36-3*DTAN>		;Mask for unavailble 2nd buffers

RS(DTALCK,DTAN)			;Lock word
RS(DTASTS,DTAN)			;Lh -- status bits (see below)
				;Rh -- directory location (0 if none)
RS(DTIBF1,DTAN)			;Bit 0 -- buffer busy
				;Bit 1 -- error in this buffer
				;Bits 2-11 -- next input block number
				;Bits 13-17 -- input file number
				;Rh -- location of input buffer 1
RS(DTIBF2,DTAN)			;Bit 0 -- buffer busy
				;Bit 1 -- error in this buffer
				;Bits 2-11 -- current block number
				;Bit 12 -- if doing a nop spacing (rew etc)
				;Bit 13 -- if unloading
				;BIT 14 -- WRITE LOCK CHECK REQUESTED
				;BIT 15 -- WRITE OK (NOT LOCKED OUT) AT LAST CHECK
				;BIT 16 -- ACCESS OK (SELECTED) AT LAST CHECK
				;BIT 17 -- LAST MOUNT REQUESTED NO DIR READ
				;Rh -- location of input buffer 2 (0 if none)
RS(DTOBF1,DTAN)			;Bit 0 -- buffer busy
				;Bit 1 -- error in this buffer
				;Bits 2-11 -- next output block number
				;Bit 12 -- last buffer
				;Bits 13-17 -- output file number
				;Rh -- location of output buffer 1
RS(DTOBF2,DTAN)			;Bit 0 -- buffer busy
				;Bit 1 -- error in this buffer
				;Bits 2-11 -- first block number of output file
				;Bit 12 -- last buffer
				;Rh -- location of output buffer 2 (0 if none)
RS(DTAPTR,DTAN)			;Temp pointer to directory entry
RS(DTAIOW,DTAN)			;Iowd during dead reckoning
RS(DTARKN,DTAN)			;Bit 0 -- dead reckoning for a write
				;Bit 1 -- going backward
				;Bits 8-17 -- block number
				;Rh -- chain to next dead reckoning unit (-1 if end)
RS(DTARCE,DTAN)			;Total error count
NRP(DTABUF,DTNBUF*200)		;Dectape buffers
   >				;END IFG DTAN
   IFG DLXN,<

	DLMASK==:100		;SIZE OF PDP-10 MEMORY BLOCK IN PDP-11
	DLNPIS==:20		;SIZE OF PI LEVEL STACK
	DLIMIN==:20		;MINIMUM SIZE OF INPUT BUFFER
	DLNOB==:2		;NUMBER OF OUTPUT BUFFERS
	DLNIB==:2		;NUMBER OF INPUT BUFFERS

;SIZE OF EACH OUTPUT BUFFER
	DLOBFL==:<DLOBFP*PGSIZ/<<DLXN+3>/4*4*DLNOB>>

DEFINE DLSTOR (X,Y)<
	X==:DLPC+DLBASE
IFB <Y>,<DLPC==DLPC+1>
IFNB <Y>,<DLPC==DLPC+Y>>

DLPC==0			;DEFINE AREAS USED BY PDP-11'S

DLSTOR(DLINTW)			;INTERRUPT VECTOR WORD
DLSTOR(DLUNIT)			;UNIT NUMBER OF THIS PDP-11
DLSTOR(DLOC11)			;COUNT OF OUTPUT BYTES FOR TO 11 TRANS
DLSTOR(DLOP11)			;POINTER TO OUTPUT BUF FOR TO 11 TRANS
DLSTOR(DLIC11)			;COUNT OF BYTES IN INPUT BUF FOR TO 10
DLSTOR(DLIP11)			;POINTER TO INPUT BUF FOR TO 10 TRANS

DLPC==DLXN*DLMASK		;NOW DEFINE LOCAL STORAGE

DLSTOR(DLUBAS,0)		;START OF PER 11 LOCAL STORAGE AREA

DLSTOR(DLXSTS,DLXN)		;STATUS WORD
DLSTOR(DLXPNT,DLXN)		;LH=INITIAL BYTE POINTER, RH = S-FIELD
DLSTOR(DLXOCT,DLXN)		;COUNT OF BYTES IN A FULL OUTPUT BUF
DLSTOR(DLXICT,DLXN)		;COUNT OF BYTES IN A FULL INPUT BUF
DLSTOR(DLXBPW,DLXN)		;BYTES PER WORD
DLSTOR(DLOCNT,DLXN)		;# OF BYTES LEFT TO FILL OUTPUT BUFFER
DLSTOR(DLOPNT,DLXN)		;POINTER TO 10 OUTPUT BUFFER
DLSTOR(DLICNT,DLXN)		;# OF BYTES LEFT TO EMPTY BUFFER
DLSTOR(DLIPNT,DLXN)		;POINTER TO 10 INPUT BUFFER
DLSTOR(DLOBCT,DLXN)		;# OF FULL OUTPUT BUFFERS
DLSTOR(DLIBCT,DLXN)		;# OF FULL INPUT BUFFERS
DLSTOR(DLON11,DLXN)		;NEXT OUTPUT BUF TO BE GIVEN TO 11
DLSTOR(DLIN11,DLXN)		;NEXT INPUT BUF TO GIVE TO 11 TO FILL
DLSTOR(DLON10,DLXN)		;NEXT OUTPUT BUF TO BE FILLED BY 10
DLSTOR(DLIN10,DLXN)		;NEXT INPUT BUF TO BE GIVEN TO 10 USER
DLSTOR(DLOBFC,<DLNOB*DLXN>)	;# OF BYTES IN EACH OUTPUT BUFFER
DLSTOR(DLIBFC,<DLNIB*DLXN>)	;# OF BYTES IN EACH INPUT BUFFER
DLSTOR(DLXIMP,<<DLXN+3>/4*20>)	;4 WORD BLOCKS USED BY XPCW ON INTERRUPTS
DLSTOR(DLAC,5)			;PLACE TO STORE ACS DURING AN INTERRUPT
DLSTOR(DLACP,1)			;PLACE TO STORE P DURING INTERRUPTS
DLSTOR(DLPISK,DLNPIS)		;INTERRUPT LEVEL STACK

DLIBUF==:DLPC+DLBASE			;END OF LOCAL STORAGE
DLIBFL==:<PGSIZ*DLIBFP-DLPC>/<DLNIB*DLXN> ;REST OF PAGE IS FOR INPUT BUFFERS

IFL DLIBFL-DLIMIN,<PRINTX NOT ENOUGH ROOM FOR INPUT BUFFERS!>
   >				;END OF IFG DLXN
;STORAGE FOR CMA DEVICES (AYDIN DISPLAY)

  IFG CMAN,<

RS(DRBACS,20)                   ;STORAGE TO SAVE AC'S
        LCMAPD==:55             ;LENGTH OF PDL
RS(CMAIPD,LCMAPD)               ;INTERRUPT PDL
RS(CMALCK,CMAN)                 ;LOCK FOR DEVICE DATA BASE
RS(CMASTS,CMAN)                 ;STATUS
RS(CMINDX,1)                    ;COUNT OF CMA DEVICES
RS(CMOWNR,CMAN)                 ;OWNING FORK,,DR11-B BLOCK ADDRESS
RS(CMALAE,CMAN)                 ;LAST AYDIN ERROR
RS(CMAERC,CMAN)                 ;AYDIN ERROR INFO

        CMBUFN==:2              ;NUMBER OF IORBS/BUFFERS
        MAXPPT==:20             ;MAXIMUM PAGES PER BUFFER
                                ;.ALSO MAX PER DUMPI/O AND
                                ;EQUALS SIZE OF UBA WINDOW
        XRBLEN==:5+MAXPPT               ;ALSO IN CMAPAR
        CMXLST==:XRBLEN         ;START OF TRANSFER LIST
        CMIRBL==:CMXLST+MAXPPT+1 ;TOTAL LENGTH OF IORB
        CMABFL==:CMAN*CMBUFN*CMIRBL ;STORAGE REQUIRED FOR IORB'S
RS(CMXORB,CMABFL)               ;STORAGE FOR IORB'S
        DRCHNN==:2              ;MAX DR11-B'S (ALSO IN CMAPAR)
        DRBLEN==:21             ;ALSO IN CMAPAR
CMDRBL==:DRBLEN*DRCHNN  ;STORAGE REQUIRED FOR DR11B BLOCKS
RS(CMADRB,CMDRBL)               ;STORAGE FOR DR11-B BLOCKS
RS(DRBTAB,DRCHNN)               ;ADDRESSES OF DR11-B BLOCKS

NR(CMANR1,CMAN)                 ;CURRENT,,LAST XORB
NR(CMANR2,CMAN)                 ;LAST TRANSFER WORD COUNT,,LAST
NR(CMANR3,CMAN)                 ;LAST FUNCTION,NUMBER OF XORB'S QUEUED
NR(CMANR4,CMAN)                 ;FREE XORB'S LIST FOR UNIT
                                ;DUMP MODE IORB ADDRESS
NR(CMAPNM,CMAN)                 ;PROGRAM NAME
NR(CMAUDR,CMAN)                 ;USER DIRECTORY
  > ;END OF IFG CMAN


;STORAGE FOR LCS MEMORY DRIVER

MEMLOW==:2,,0			;BOTTOM OF MEMORY
MEMHI==:2,,177000		;TOP OF SHARED MEMORY
RS MEMBOT,1			;BOTTOM OF SHARED MEMORY
RS MEMTOP,1			;TOP OF SHARED MEMORY
RS NEWNOD,1			;NUMBER OF NODES COUNT FOR NEW ARRIVING PORTS
RS OURNOD,1			;HOLDS OUR SHARED MEMORY NODE NUMBER
RSI MMALRM,<.+1,0>,2		;SHARED MEMORY ALARM
	SWAPCD
;STORAGE FOR DECNET

   IFG DCN,<			;ONLY IF PRESENT
NDG DCOPNM,4			;MAX LINKS PER JOB FOR NO PRIVILEGES
RS LLLLCK,1			;LL TREE LOCK
MAXEXP==:7			;EXP FOR MAXIMUM LL ADDRESS
MAXLNK==:1_<MAXEXP>-1		;GENERATE LARGEST LL ADDRESS
RS LLHEAD,1			;HEAD OF LL TREE
OBJMAX==:377			;MAX # OF OBJECTS
DECOBJ==:177			;MAX OBJECT # RESERVED TO DEC
NR OBJTBL,OBJMAX+1		;GENERATE LOOK UP TABLE
NR LASTSK,1			;WORD FOR GENERATING RANDOM TASK NAMES
LLBIT==:<MAXLNK+1+43>/44	;WORDS IN LL ADDRESS BIT TABLE
NR LLBITS,LLBIT			;BIT TABLE FOR AVAILABLE LINK INDEXES
NR BLKASG,1			;AMOUNT OF SWAPPABLE STRING SPACE NOW ASSIGNED
RS OURNUM,1			;LOCAL NODE NUMBER
	NDG NODNUM,100		;DEFAULT NODE NUMBER
NR NODLOK,1			;LOCK ON NODTBL
AKLSTL==:12			;LENGTH OF ACKLST
RS ACKLST,AKLSTL		;LIST OF NSP ACK BUFFERS
RS LLSRVQ,1			;"LL NEEDS SERVICE" QUEUE HEADER
RS LSTLLS,1			;LAST TIME LOGICAL LINKS WERE SERVICED BY SCHEDULER
RS NSSNTQ,1			;NSP "SENT MESSAGE" TIMER QUEUE
RS INNSPT,1			;"IN NSP TIMER" FLAG
RS INNSPI,1			;"IN NSP INACTIVITY TIMER" FLAG
RS SNTLOK,1			;SENT MESSAGE QUEUE LOCK
RS SNTLKF,1			;SENT QUEUE LOCKER'S FORK
RS OUTQUE,1			;BACKGROUND TASK'S "OUTPUT REMAINING" QUEUE
NR OUTLOK,1			;LOCK ON OUTQUE
RS OUTTIM,1			;TIME TO RETRY BLOCKED OUTPUT
NR OUTIVL,1			;TIME INTERVAL BEFORE RETRYING BLOCKED OUTPUT
	NDG INIWAT,100		; DEFAULT IS 300 MS.
RS NSPMCB,1			;EACH BIT INDICATES A DED MCB PORT NUMBER (NSP)
RS RMSGQ,1			;EXPENDED MESSAGE QUEUE
RS MSGQ,1			;MESSAGE QUEUE
RS SMSGQ,1			;SCHEDULER'S MESSAGE Q
RS ULLCZQ,1			;QUEUE OF LL BLOCKS TO CLOSE BY NSPTSK
NR GUDOBJ,1			;FLAG FOR "FOUND CORRECT OBJECT"
RS NSPLPB,1			;RH IS PORT FOR LOOPBACK TESTING
RS SEGSZ,1			;NSP SEGMENT SIZE
	BIGNOD==:^D255		;MAX NUMBER OF DECNET NODES IN NETWORK
NR NODMAP,BIGNOD+1		;SESSION CONTROL'S NODE NAME MAPPING TABLE
NR NMAPLK,1			;LOCK FOR NODE NAME MAPPING TABLE
RS NSBYTR,BIGNOD+1		;NSP - "BYTES RECEIVED"
RS NSBYTS,BIGNOD+1		;NSP - "BYTES SENT"
RS NSMSGR,BIGNOD+1		;NSP - "MESSAGES RECEIVED"
RS NSMSGS,BIGNOD+1		;NSP - "MESSAGES SENT"
NR NSCONR,BIGNOD+1		;NSP - "CONNECTS RECEIVED"
NR NSCONS,BIGNOD+1		;NSP - "CONNECTS SENT"
NR NSTIMO,BIGNOD+1		;NSP - "TIMEOUTS"
NR NSRCNE,BIGNOD+1		;NSP - "CONNECT RESOURCE ERRORS"
RS NSALNK,BIGNOD+1		;NSP - "ACTIVE LINKS"
RS NSINAC,1			;NSP INACTIVITY TIMEOUT VALUE
RS LSTINT,1			;TIME OF LAST INACTIVITY TIMER CHECK
RS LSTTMR,1			;TIME OF LAST TIME OUT QUEUE CHECK
	NODTSZ==:<BIGNOD+21>/22	;SIZE OF REACHABLE NODES TABLE
NR NODTBL,NODTSZ		;REACHABLE NODES TABLE
	NTCMAX==:5		;MAX # OF FORKS TO REMEMBER
NR NTCTAB,NTCMAX		;NETWORK TOPOLOGY CHANGE FORK TABLE
NR NSPMAX,DCN			;MAX SEG SIZE OF INTERCEPT NODE
NR ITSNAM,<DCN*2>		;MCB'S NODE NAME
NR ITSNUM,DCN			;MCB'S NODE NUMBER
NR ITSID,<DCN*^D9>		;MCB'S SYSVER STRING
RS NAKCNT,DCN			;COUNT OF NAK'ED SEGS
MCPRON==:.VNMCB		;MCB PROTOCOL IF DCN ASSEMBLED IN
   >				;END OF IFG DCN CONDITIONAL

IFG DCN,<
RS MCBDTE,DCN			;THE DTE # OF THE MCB FRONT END
RS OURNAM,WPN			;SPACE TO HOLD LOCAL NODE NAME
RS OURCNT,1			;COUNT OF CHARS IN "OURNAM"
>

   IFE DCN,<MCPRON==:0>	;IF NO DCN, NO MCB PROTOCOL

;FOLLOWING IS A DUMMY FOR WHEN THERE IS NO DECNET. IT SHOULD NEVER BE EXECUTED

   IFE DCN,<
NTCOFF::SETZRO FKNTC		;TURN OFF BIT THAT CAUSED US TO GET HERE
	RETSKP>

;DEFINITION FOR ATS

IFN ATS,<
NDG ATJBMX,10			;MAXIMUM NUMBER OF HTN'S PER JOB
>
IFE ATS,<
NDG ATJBMX,0			;NO HTN'S IF NO ATS
>
RS ATSTYM,1			;ATS TIMER (NEEDED BY DUMMY ATSINI ALSO)
;;; 100 - begin addition
   IFN CHAOS,<
	SUBTTL	STORAGE FOR CHAOSNET

;PACKET SIZES (GLOBALS SO EVERYONE CAN GET AT THEM)
RS CHPMXC			;MAXIMUM NUMBER OF DATA BYTES LEGAL IN A PACKET
RS CHPMXT			;MAXIMUM NUMBER OF DATA BYTES ALLOWED IN FE PACKET
RS CHPMXW			;MAXIMUM NUMBER OF WORDS THEREIN

NDG MAXCON,100			;MAXIMUM NUMBER OF CONNECTIONS
NDG CHRFMX,40			;MAXIMUM NUMBER OF PENDING LISTENERS
NDG CHST2P,^D9			;231 MAXIMUM NUMBER OF PAGES ALLOWED IN HOSTS2.BIN IMAGE
;191 CHAON must precede CHASBL
RS CHAON,1			;NON-ZERO CHAOS NET IS ENABLED
RS CHASBL,0			;STATUS BLOCK TO SEND TO -10
RS CHASDS,1			;DEVICE STATUS
RS MYCHAD,1			;MY ADDRESS ON THE NETWORK
RS NPKSIN,1			;NUMBER OF PACKETS IN FROM INTERFACE
RS NPKSOU,1			;NUMBER OF PACKETS OUTPUT TO INTERFACE
RS NPKSAB,1			;NUMBER OF TRANSMISSIONS ABORTED
RS NPKSLS,1			;NUMBER LOST TO BUSY INTERFACE
RS NPKSER,1			;NUMBER OF PACKETS WITH CRC ERRORS BEFORE READ IN
RS NPKSRE,1			;NUMBER READ OUT AS GARBAGE
RS NPKSBB,1			;NUMBER WITH BAD BIT COUNT
RS NPKSIG,1			;NUMBER OF PACKETS IGNORED FOR OTHER REASONS
CHASBS==:NPKSIG-CHASBL+1	;191 LENGTH OF STATUS BLOCK
RS MXTWIN,1			;MAXIMUM WINDOW SIZES FOR XMISSION AND
RS MXRWIN,1			; RECEPTION
RS NMWIND,1			;NOMINAL WINDOW SIZE
RS CHAFLG,1			;CURRENT REQUESTS FOR CHAOS BACKGROUND FORK
NR CHAPFG,1			;LAST STATE OF CHAFLG AT START OF BACKGROUND CYCLE
RS CHABFT,1			;TODCLK SET BY BACKGROUND FORK ON EACH CYCLE
RS CHABFW,1			;WHERE THE BACKGROUND FORK IS NOW (FOR DEBUGGING)
NR CHAONL,1			;VALUE OF CHAON LAST TIME CHAOS FORK LOOKED
NR CHAONC,1			;-1: NET JUST WENT DOWN, 1: JUST CAME UP
RS CHAFHN,1			;CHAOS NET FORK HANDLE
RS CHATIM,1			;TIME (TODCLK) OF NEXT BASIC CHAOS FORK CYCLE
NR CHATM1,1			;TIME OF NEXT TIMEOUT PASS
NR CHATMA,1			;PARALLEL FLAGS FOR THE ABOVE 2 CLOCKS
NR CHAT1A,1			; COMING DUE
NR CHATM2,1			;TIME OF NEXT RFC MATCHING PASS
RS CHNGTM,1			;TIME FOR NEXT NEGOTIATION TIMEOUT CHECKS
RS CTMSTM,1			;TIME FOR NVT SENDALL CHECKS
RS CVTPTR,1			;AOBJN PTR FOR CHAOS NVTS
RS CHCNLK,1			;CONNECTION TABLE LOCK
RS CHANPD,1			;NUMBER OF PACKETS DISCARDED
RS CHANPO,1			;NUMBER OF PACKETS ACTUALLY SENT OVER TO -11
RS CHANOL,1			;NUMBER OF TIMES WE WANTED TO GO OVER -11 LIMIT
RS CHNPO1,1			;NUMBER OF PACKETS OUTSTANDING IN -11 STILL
RS CHNPOW,1			;WATCHDOG FOR CHNPO1
RS CHNPWT,1			; AND TIMER FOR CHNPOW
RS CHALRW,1			;LOCAL-ROUTING NEXT-CYCLE TIME
RS CHNPF,1			;NUMBER OF PACKETS FORWARDED
RS CHNPKI,1			;NUMBER OF PACKETS INPUT FROM -11
RS CHNSNS,1			;NUMBER OF SNS PACKETS SENT
RS CHNSTS,1			;NUMBER OF STS PACKETS SENT
RS CHNRTR,1			;NUMBER OF RETRANSMISSIONS
RS CHNPOL,1			;NUMBER OF PACKETS ROUTED LOCALLY
RS CHNNRS,1			;NUMBER OF TIMES NO PKT STORAGE AT PI LEVEL
RS CHQLCL,1			;LOCALLY-ROUTED PACKETS-IN-TRANSIT Q
				; (PACKETS LINKED THROUGH XMIT ACTIVE IN PKTLNK)
RS CHQRFC,1			;INCOMING RFC QUEUE
RS CHQRFP,1			;PACKET BEING LOOKED AT BY CHAOS FORK
RS CHRFLK,1			;LOCK FOR RFC TABLE
NR RFCTAB,CHRFMX		;RFC LISTENING TABLE
RS CHRFHC,1			;GLOBAL RFC-HANDLER CONNECTION
RS CHACON,MAXCON		;RESIDENT CONNECTION TABLE
RS MYHNAM,^D50/5		;MY OFFICIAL HOST NAME (FROM HOSTS2)
RS MYHTIM,1			;LIMIT FOR WAIT ON MYCHAD TO APPEAR FROM -11
RS CHPIOF,1			;USED FOR PI LOCKING
RS CHPIDF,1			;USED TO HANDLE NESTED PI LOCKING
RS CHATTW,NTTCVT+1		;NVTS-WITH-DATA-WAITING QUEUE
RS CHAPRO,1			;206 CHAOSNET PROTECTION FLAG
RS CHPKTI,1			; pointer to next chaos buffer
NR CHOSTP,1			;HAVE A HOST TABLE IN CHOSTB WHEN NON-ZERO
NR CHANET,1			;CHAOS NET NUMBER FROM HOST2
NR CHANAO,1			;OFFSET OF CHAOSNET ADDRESS TABLE IN CHOSTB
NRP CHOSTB,<CHST2P*PGSIZ>	;HOSTS2.BIN IMAGE FOR HOSTNAME LOOKUPS

EXTN <CHADTB,CHAINI,CHTTC7>	;NECESSARY EXTERNALS

IFN NETN,<
RS CHARPQ,1			;OUTGOING ARPANET QUEUE
RS CHATPB,^D<488/4>+CHPKDT	;TEMPORARY PACKET BUFFER IN SECTION 0
>;166
IFN SMFLG,<
;ON KS10, THE CHAOS HARDWARE IS PHYSICALLY ON THE MACHINE
;NEED STORAGE FOR INTERRUPT HANDLING
CHAIPS==:100			;NEED LARGE PDL TO HACK CHAOS NET
RS CHAACS,20			;INTERRUPT SAVE ACS
RS CHAIPL,CHAIPS		;INTERRUPT PDL FOR CHAOSNET
RS CHAXPC,4			;XPCW BLOCK FOR CHAOSNET INTERRUPTS
RS CHATXQ,1			;TRANSMIT QUEUE
>;IFN SMFLG,

>;IFN CHAOS, 100
;STORAGE FOR KMC11'S

    IFLE KDPN,< ;ONLY IF NOT PRESENT
KDPINI==:R
KDPTSK==:R
    IFN SMFLG,<
.BOOT::	MCENT
	JRST UJSYS0
	>
	>
    IFN DCN,<
RS KDPFLG,1		;SET NONZERO WHEN NEED KMCTSK
    >
    IFG KDPN,<	;ONLY IF PRESENT
KMCQLN==:4+2*4*KDPN		;LENGTH OF KMC11 INPUT QUEUE
RS KMCINQ,KMCQLN		;QUEUE OF INPUT FOR KMC11
				; 1ST WORD IS PUTTER, 2ND WORD IS TAKER
				; REST IS 2 WORD ENTRIES
RS KMCACS,20			;INTERRUPT SAVE ACS
KMCSZ==:50			;LENGTH OF KMC PDL
RS KMCIPL,KMCSZ			;INTERRUPT PDL FOR KMC
KMCPDL::IOWD KMCSZ,KMCIPL	;SETUP WORD FOR KMC PDL USE
RS KDPLIM,1			;LH IS NEGATIVE NUMBER OF DUP11'S ON SYSTEM
				; RH IS 0
RS KDPNLN,1			;POSITIVE NUMBER OF DUP11'S
RS KDPPAG,KDPN			;UBA ADR OF PAGE,,OUR ADR OF PAGE
RS KDPXPC,10			;XPCW BLOCK FOR KMC11 INTERRUPTS
    >
;STORAGE FOR DTE'S

IFG DTEN,<			;DTE STORAGE

RS UPFLAG,1			;WORD TO GENERATE CONTINUED MESSAGE
NRP DTERBT,1000			;PAGE TO DO -11 REBOOTS
EXTN <SVDTAC,INTDTE>		;NECESSARY EXTERNALS
RS LOAD11,1			;IF AN -11 NEEDS TO BE LOADED
RS LODFRK,1			;HANDLE OF MONITOR FORK DOING RELOADING
NQPKT==:^D20			;NUMBER OF QUEUE PACKETS
QPKT==:5			;SIZE OF A PACKET
RS(DTEDTE,1)			;CELL TO REMEMBER INTERRUPTING
				; DTE
RS CTYUNT,1			;FE PHYSICAL UNIT FOR TS TTY
RS DTEQS,DTEN			;SET UP DRIVER QUEUE HEADERS
RS NDTEMQ,DTEN			;COUNT OF MESSAGES QUEUED FOR EACH DTE
QPKT1==QPKT*NQPKT
RS(COMQ,QPKT1)			;SET UP PACKETS
RS(COMH,1)			;THE QUEUE HEADER
RS(DTESTS,DTEN)			;DTE STATUS WORD
RS(DTEST1,DTEN)			;SECONDARY STATUS WORD
RS(DTETMR,DTEN)			;TIMER VARIABLE
BUFSIZ==:^D34			;TRANSFER BUFFER SIZE
BYTBUF==:BUFSIZ*4		;BYTES PER BUFFER
RS(DTBFWD,DTEN)			;THE HEADER WORD FOR THE BUFFERS
DTESZ==:110			;SIZE OF INTERRUPT STACK
RS(DTETRA,2)			;WORD FOR INTERRUPT RETURN
RS(DTESKP,DTESZ)		;THE LOCAL STACK
RS(DTEACB,20)			;BLOCK TO SAVE REGISTERS
RS(DTEIND,DTEN)			;STORAGE FOR INDIRECT FUNCTIONS
RS(DTEEND,DTEN)			;RESIDENT FREE SPACE DEBUGGING STORAGE
PKTSIZ==:3			;THE QUEUE PACKETS
PKTSZ1==PKTSIZ*DTEN
RS(PKTADR,PKTSZ1)		;ONE PER DTE
COMSIZ==:COMDAT+COMRGN		;SIZE OF THE "BASIC" COMM REGION
CMSZ==:COMSIZ*<DTEN+1>+COMRGN*DTEN
RS(COMBUF,DTEN+1)		;SIZE OF "VECTOR" FOR THE COMM REGION
RS(COMBAS,CMSZ)			;ALLOCATE COMMUNICATIONS REGION
RS ENDRGN,0			;END OF COMM REGION
IEXSIZ==:CMSZ-<DTEN+1>		;INITIAL EXAMINE SIZE
RS(TAD11,3)			;TIME FROM -11 CELL
RS(TO11TM,3)			;PACKET TO SEND TIME TO THE -11
KLISIZ==^D10			;WORDS FOR KLINIK DATA BASE
KLIMAX==:<KLISIZ-1>*4		;MAX NUMBER OF BYTES IN KLINIK DATABASE
RS (KLIDTA,KLISIZ)		;KLINIK DATABASE

;THIS MACRO GENERATES RESIDENT STORAGE AND CODE FOR EACH DTE.
;FOR EACH DTE, IT GENERATES A 4-WORD BLOCK FOR XPCW'S. THE TABLE
;DTETRP CONTAINS A PROTOTYPE XPCW FOR EACH DTE, WHICH POINTS TO
;THE 4-WORD BLOCK GENERATED HERE

DEFINE DTEPRO (UNIT)<		;MACRO TO GENERATE DTE INTERRUPT VECTOR
	RS DTXPC'UNIT,4		;MAKE PLACE FOR XPCW
DTEN'UNIT:JSR SVDTRJ		;;SAVE REGISTERS
	MOVEI A,UNIT
	DMOVE B,DTXPC'UNIT	;;GET INTERRUPT PC
	DMOVEM B,DTETRA		;;TO COMMON TRAP CELL
	CONI DTE'UNIT,F		;;GET DTE STATUS
	JRST INTDTE		;;GO DO COMMON STUFF
>

;THIS MACRO GENERATES A PROTOTYPE XPCW FOR EACH DTE. THE VECTORS
;ARE STORED AT DTETRP AND COPIED AS NEEDED.

DEFINE DTEINN (UNIT)<		;;TO GENERATE INTERRUPT VECTOR
	XPCW DTXPC'UNIT		;;THE XPCW
>
   >				;END IFG DTEN

;THIS MACRO STORES IN THE XPCW BLOCK A POINTER TO THE CORRECT CODE
;FOR EACH DTE. THIS IN INVOKED IN THE STARTUP CODE AFTER RESIDENT
;STORAGE HAS BEEN CLEARED.

DEFINE DTXPCW (UNIT)<		;;TO STORE ADDRESS IN XPCW BLOCK
	MOVEI T1,DTEN'UNIT	;;THE ROUTINE FOR THIS DTE
	MOVEM T1,DTXPC'UNIT+3	;;MAKE THE XPCW POINT TO THE RIGHT ROUTINE
>

IFN DTFLG,<

;FIXED LOCATIONS FOR DTE #0, OTHER DTE'S IN FOLLOWING 8-WORD BLOCKS

DTEEBP==:KIEPT+140		;TO -11 BYTE POINTER
DTETBP==:KIEPT+141		;TO -10 BYTE POINTER
DTEINT==:KIEPT+142		;INTERRUPT LOCATION
; 143
DTEEPW==:KIEPT+144		;EXAMINE PROTECTION WORD
DTEERW==:KIEPT+145		;EXAMINE RELOCATION WORD
DTEDPW==:KIEPT+146		;DEPOSIT RELOCATION WORD
DTEDRW==:KIEPT+147		;DEPOSIT RELOCATION WORD

;FIXED CORE ADDRESSES IN EPT FOR DTE PROTOCOL

DTEFLG==:KIEPT+444			;OPERATION COMPLETE FLAG
DTECKF==:KIEPT+445			;CLOCK INTERRUPT FLAG
DTECKI==:KIEPT+446			;CLOCK INTERRUPT INSTRUCTION
DTET11==:KIEPT+447			;TO 11 ARGUMENT
DTEF11==:KIEPT+450			;FROM 11 ARGUMENT
DTECMD==:KIEPT+451			;COMMAND WORD
DTESEQ==:KIEPT+452			;DTE20 OPERATION SEQUENCE NUMBER
DTEOPR==:KIEPT+453			;OPERATION IN PROGRESS FLAG
DTECHR==:KIEPT+454			;LAST TYPED CHARACTER
DTETMD==:KIEPT+455			;MONITOR TTY OUTPUT COMPLETE FLAG
DTEMTI==:KIEPT+456			;MONITOR TTY INPUT FLAG
DTESWR==:KIEPT+457			;CONSOLE SWITCH REGISTER
SDTE==:3			;SHIFT VALUE FOR EPT DTE SET

   >				;END IFN DTFLG
   IFN SMFLG,<

; EPT RESERVED LOCATIONS

SMTEPT==:KIEPT+100	;POINTERS TO SM10 VECTOR TABLE
>

MSECTB=:KIEPT+540		;MONITOR SECTION TABLE

;CELLS IN EXEC PROCESS TABLE (EPT)
	USECTO==:540		;OFFSET IN PT FOR USER SECTION
	MXSECN==:37		;HIGHEST POSSIBLE SECTION NUMBER

EPTMHI=:KIEPT+200		;MAP FOR HIGH EXEC (400-777)
EPTTPI=:KIEPT+420		;TRAP INSTRUCTIONS
EPTMLO=:KIEPT+600		;MAP FOR LOW EXEC (0-337)
KIEMP==:KIEPT			;BASE FOR MONITOR PAGES 400-777
RS CONOPG,1			;WORD FOR CONO PAG,@CONOPG

EPTGBP=:KIEPT+700		;OWGBP UCODE TABLE STORAGE
OWGBPN==:722-700+1		;THE OWGBP UCODE USES EPT LOCS 700-722

RSI OWGBPV,<440606360607,300610220611,140612060613
	    000646441015,341016241017,141020041055
	    440722350723,260724170725,100726010762
	    441130331131,221132111133,001170442235
	    222236002275,000000000000,464750515253
	    626364656600,555657600000,707172730000
	    757600000000>,OWGBPN
;ADD RESIDENT STORAGE FOR TAPE SCEDULER TEST


;DTESRV STORAGE

NR BTLOCK			;LOCK ON BOOT PAGE (DTERBT)
NR RLDFRK                       ;SYSTEM WIDE HANDLE OF RELOAD FORK
RS SNGPK1,6
RS SNGPK2,6

;LINEPRINTER STORAGE

NDG NLPBF,400			;DEFAULT BUFFER SIZE

RS(LPTTYP,LPTN)			;TYPE OF LPT VECTOR FOR DEVICE INDEPENDENCE
RS(LPTSTS,LPTN)			; Status word
RS(LPTST1,LPTN)			;SECOND STATUS WORD
RS(LPTST2,LPTN)			;THIRD STATUS WORD
RS(LPTST3,LPTN)			;YES
RS(LPTERR,LPTN)			; LAST ERROR WORD
RS(LPTCNT,LPTN)			; Buffer counter
NRP(LPTBUF,LPTN*2*NLPBF)	;2 BUFFERS
RS LPTCLS,LPTN			;LPTCHK CLOCK SWITCH
RS LPTCCW,LPTN			;BLKI/O PTR
RS LPTICT,LPTN			;INTERRUPT BYTE COUNT
RS LPTCKT,LPTN			;INTERVAL FOR LPTTIM
RS(LPTLCK,LPTN)			; Lock on opening lpt
RS (PGDATA,LPTN)		;PAGE COUNTER PLACED HERE TO SEND IT TO -11

NR (LPTOFN,LPTN)		;VFU,,RAM OFN'S TO PREVENT OPENS FOR WRITE
	LPFLSZ==:^D28		;NUMBER OF WORDS IN FILENAME BUFFERS
NR (VFUFIL,LPFLSZ*LPTN)		;ALLOCATE SWAPPABLE STORAGE FOR VFU FILE NAMES
NR (RAMFIL,LPFLSZ*LPTN)		;ALLOCATE SWAPPABLE STORAGE FOR RAM FILE NAMES
IFN BALPTN,<			;#350 
RS LPBAUN,1			;#350 Unit # of the BA10 Lineprinter
RS LPBACC,1			;#350 Column Counter for the BA10
RS BASTS,1			;#350 Pseudo status of the BA10 LPT
           > ;#350 End IFN BALPTN
   IFN SMFLG,<
   IFG <LPTN-1>,<PRINTX %%ILLEGAL NUMBER OF LINEPRINTERS DEFINED FOR KS10>
RS L11A,LPTN			;HOLDS FAKE -11 ADDRESS OF BUFFER
RS LPWINA,LPTN			;ADDRESS OF UNIBUS WINDOW
RS LPACS,20			;AC'S DURING LPT INTERRUPT
	LPSLEN==:50		;LENGTH OF LPT INTERRUPT STACK
RS LPSTAK,LPSLEN		;PDL DURING LPT INTERRUPT
RS LPXJEN,1			;XJEN INSTRUCTION FOR DISMISSING LPT INTERRUPT
RS LPXPTB,LPTN*4		;LP INTERRUPT INSTRUCTION IS XPCW
				; TO 4-WORD BLOCK IN THIS TABLE
LPERSZ==:6			;NUMBER OF WORDS PER ERROR BLOCK
RS LPERBF,LPERSZ*LPTN		;ERROR BLOCK CONTAINING ERROR INFORMATION
				;FOR SYSERR.
   >	;END IFN SMFLG

   IFG FEN,<			;PRIVATE STORAGE FOR FE DEVICES
RS FEUDB0,FEN
RS FEUDB1,FEN
RS FEUDB5,FEN
RS FEUDB6,FEN
RS FEUDB7,FEN
RS FEUDB3,FEN
RS FEUDB4,FEN
RS FELOCK,1
   >				;END OF FE STORAGE DEFINITIONS

;PHYSICAL CARD PUNCH STORAGE	
	IFG PCDPN,<
CDPBFZ==:41			; Size of CDP buffer
RS(CDPBF1,CDPBFZ)		; First buffer
RS(CDPBF2,CDPBFZ)		; Second buffer
RS(CDPSTS)			; Status word
RS(CDPLCK)			; CDP open lock
RS(CDPCNT)			; Count of full buffers
RS(CDPITC)			; Count of items remaining in current buffer
RS(CDPPTR)			; Byte bointer for emptying current buffer
RS(CDPSIO)			; Saved ios during interrupt
   >				;END IFG PCDPN
;PHYSICAL CARD READER STORAGE

   IFG CDRN,<
CDRSIZ==:^D40			;SIZE OF A CARD IMAGE
CDRLEN==:2*CDRSIZ		;SPACE IN CDRBUF FOR 1 CDR
RS CDRCT1,CDRN			;BUFFER COUNT
RS CDRCKT,CDRN			;WORD FOR SCHEDULER TEST
RS CDRSTS,CDRN			;THE STATUS WORD
RS CDRST1,CDRN			;THE SECOND STATUS WORD
RS CDRST2,CDRN			;THIRD STATUS WORD
RS CARDCT,CDRN			;COUNT OF CARDS READ
RS CARDER,CDRN			;NUMBER OF "HARDWARE" ERRORS
RS CDRLCK,1			;THE CDR LOCK WORD
RS CDRCNT,1			;COUNT OF CDR'S OPENED
NRP CDRBUF,1000			;THE BUFFER PAGE
   IFN SMFLG,<			;KS PARAMETERS
RS CDUBAD,CDRN			;ADDRESS OF UBA WINDOW
RS CD11A,CDRN			;ADDRESS OF UBA-11 ADDRESS
RS CDERBF,CDRN*20		;ERROR STATUS FOR CARDREADER
RS CDUNIT,CDRN			;UNIT NUMBER OF CARDREADER
   >
   >

   IFG MTAN,<

;Private storage for magtapes

	RESCD			;#167 
GMTAN::	EXP MTAN		;#167 Will guarantee this many drives at
				;startup
;	SWAPCD			;#167 

RS(MTALCK,MTAN)			;Lock word
RS(MTASTS,MTAN)			;Status of unit
NR(MTANR1,MTAN)			;NON-RESIDENT STORAGE FOR MAGTAPE
NR(MTANR2,MTAN)
NR(MTANR3,MTAN)
NR(MTANR4,MTAN)
NR(MTANR5,MTAN)
NR(MTANR6,MTAN)
RS(MTARS1,MTAN)			;RESIDENT STORAGE FOR MAGTAPE
RS(MTINDX,1)			;NUMBER OF REAL MTA'S ON SYSTEM, SET UP BY PHYM2
				; AND/OR PHYX2
RS(MTPSFK,MTAN)			;PSI,,FORK # FOR ONLINE/OFFLINE INTERRUPTS ON TAPE
RS(MTCUTB,MTAN)			;CDB ,, UDB TABLE

	MTBUFN==:2		;NUMBER OF BUFFERS/IORB'S
	MAXPPB==:20		;MAXIMUM PAGES PER BUFFER
	IRBLEN==:6		;LENGTH OF AN IORB (ALSO IN PHYPAR)
	MTIRSD==:IRBLEN		;START OF DEVICE SPECIFIC AREA
				;SEE MAGTAP FOR DEFSTR'S OF THIS AREA
	MTIRTL==:MTIRSD+2	;START OF TRANSFER LIST
	MTIRBL==:MTIRTL+MAXPPB+1	;TOTAL LENGTH OF MAGTAPE IORB
	MTABFL==MTAN*MTBUFN*MTIRBL
	MTPBFL==MTBUFN*MAXPPB*MTAN
RS(MTAPBF,MTPBFL)		;SPACE FOR BUFFER PAGE POINTERS
RS(MTIRBF,MTABFL)		;SPACE FOR IORB'S

RS(MTIOWD,MTAN)			;Iowd for next transfer
RS(MTBIOW,MTAN)			;BACKUP IOWD (FOR NEXT XFER)
RS(MTAOLS,MTAN)			;LENGTH OF LAST XFER,,
RS(MTARCE,MTAN)			;Total error count
RS(REWCNT)			;Number of rewinding units
RS(MTERAS)			;Rewrite erase counter
RS(MTPNTR)			;Iowd during transfer
RS(MTAUNT)			;Unit currently attached to controller
RS(MTERRC)			;Retry counter
RS(MTERFL)			;State of retry
RS(MTACOM)			;Cono word of current operation
RS(MTDINR)			;Return address from data interrupt
RS(MTACLS)			;Clock routine switch, 0 for no clock wanted

;PRIVATE STORAGE FOR MT (DUMMY TAPES)

RS (TLABBP,2*MTAN)		;PNTR TO LOCKED BUFFER PAGE
RS (TLABR0,MTAN)		;RESIDENT STORAGE FOR LABEL INFO

NR (TLABL0,MTAN)		;NON-RESIDENT STORAGE FOR TAPE
NR (TLABL1,MTAN)		; LABEL INFORMATION
NR (TLABL2,MTAN)
NR (TLABL3,MTAN)
NR (TLABL4,MTAN)
NR (TLABL5,MTAN)
NR (TLABL6,MTAN)
NR (TLABL7,MTAN)
NR (TLABL8,MTAN)
NR (TLABL9,MTAN)
NR (TLAB10,MTAN)		;PROTECTION FIELD, ETC
NR (TLAB11,MTAN)		;WORD TO HOLD OF MAGTAP PARAMS
NR (TLAB12,MTAN)		;HOLD VOL SET NAME IN HERE
NR (TLAB13,MTAN)		;HOLD EXP DATE HERE
NR (TLAB14,MTAN)		;SEQUENCE NUMBERS
NR (TPFCNT,MTAN)		;MT FILCNT (JFN1
NR (TPFBYN,MTAN)		;MT FILBYN (JFN)
NR (TPFLEN,MTAN)		;MT FILLEN (JFN)
NR (TPFLNX,MTAN)		;COUNT OF BYTES (OF FILLEN(JFN))
				;WIICH ARE EXPECTED IN NEXT RECORD (SPANNED)
NR (TPSBYT,MTAN)		;SAVES POINTER TO WHERE SCW/SCW SHOULD GO
				;WHEN RECORD IS COMPLETE, ALSO TPSCUP
   >				;END IFG MTAN
IFE MTAN,<
MTCLVA::			;DUMMY FOR MTA CLEAR ALL VALID VOLUME BITS
MTCLVL::			;DUMMY FOR SINGLE CLEAR VALID VOLUME
MTAKFK::RET			;DUMMY FOR KILL PSI 
   >				;END IFE MTAN
RS(MTAJB0,1)			;JOB 0 FLAG FOR MTA UNIT CAME ON LINE
   IFG PLTN,<

;PLOTTER STORAGE

PLTBFZ==:401			; Size of plt buffer
RS(PLTBF1,PLTBFZ*PLTN)		; First buffer
RS(PLTBF2,PLTBFZ*PLTN)		; Second buffer
RS(PLTSTS,PLTN)		; Status word
RS(PLTLCK,PLTN)		; Plt open lock
RS(PLTCNT,PLTN)		; Count of full buffers
RS(PLTITC,PLTN)		; Count of items remaining in current buffer
RS(PLTFDC,PLTN)		; SPECIAL FUNCTION TO BE DONE
RS(PLTPTR,PLTN)		; Byte bointer for emptying current buffer
RS(PLTPWR,PLTN)		;PLOTTER HAS REMOTE POWER INDICATE
   >				;END OF IFG PLTN
   IFG PTPN,<
PTPBFZ==:41			; Size of ptp buffer
RS(PTPBF1,PTPBFZ)		; First buffer
RS(PTPBF2,PTPBFZ)		; Second buffer
RS(PTPSTS)			; Status word
RS(PTPLCK)			; Ptp open lock
RS(PTPCNT)			; Count of full buffers
RS(PTPITC)			; Count of items remaining in current buffer
RS(PTPFDC)			; Count of lines of feed left to punch
RS(PTPPTR)			; Byte bointer for emptying current buffer
RS(PTPSIO)			; Saved ios during interrupt
   >				;END IFG PTPN

   IFG PTRN,<
PTRBFZ==:41			; Size of ptr buffers
RS(PTRBF1,PTRBFZ)		; First buffer
RS(PTRBF2,PTRBFZ)		; Second buffer
RS(PTRSTS)			; Status word
RS(PTRLCK)			; Ptr open lock
RS(PTRCNT)			; Count of full buffers
RS(PTRITC)			; Count of room left in filling buffer
RS(PTRCHC)			; Count of items inserted in buffer
RS(PTRPTR)			; Byte pointer for filling buffers
RS(PTRSIO)			; Saved ios during int
   >				;END IFG PTRN

   IFG VBCN,<
RS(PENLOC,4)			;X,Y COORDINATE OF LAST PEN HIT
PENADR==:PENLOC+1		;PROGRAM ADDRESS OF WHERE HIT OCCURED
ERRLOC==:PENLOC+2		;X,Y COORDINATE OF FIRST ERROR SEEN
ERRADR==:PENLOC+3		;ADDRESS OF WHERE ERROR OCCURED

RS(DISREL)			;8 BIT BOUNDRY OF FIRST LOCKED PAGE
RS(DISPRT)			;# OF 1K PIECES OF CORE LOCKED
RS(DISBEG)			;LH=PROTECTION AND RELOCATION FOR DISPLAY
				;RH=STARTING ADDRESS OF DISPLAY PROGRAM

RS(VBCIOS)			;STATUS WORD
   >				;END IFG VBCN
	IFG NETN,<

;SIZES OF NETWORK TABLES.

NDG NSQ,10			;NUMBER OF SPECIAL IMP QUEUES TO HANDLE
IMP8XS==:40			;SIZE OF IRREG MESSAGE BUFFER
NIMSTK==:50			;SIZE OF PI LEVEL STACK
NDG IMPNLK,^D199		;SIZE OF LINK TABLES
NDG NSKT,^D127			;MAX NUMBER OF SOCKETS DEFINED AT ONCE
NDG NHOSTS,^D397		;LENGTH OF HOSTN TABLE (MUST BE PRIME)
NDG NHSTN,1400			;LENGTH OF HOST NAME TABLE (TEXT)
RfnTsz==:400			;#36 Size of Rfnm count table
IMPLBT==:10			;LENGTH OF OLD BIT TABLE
NHSTST==:200			;LENGTH OF OLD HOST STATUS TABLE

;STORAGE

RS RFNFLG,1			;#36 Flag to enable/disable rfnm counting
RS RFNTOP,1			;#36 Flag to say top msg on Q OK
RS RFNQBK,1			;#36 Temp back pointer for special DeQing
RS RFNMAX,1			;#36 Max # rfnms allowed out to any one host
RS RFNCTM,1			;#36 Time of next rfntab clear
RS RFNINT,1			;#36 Interval to do rfntab clearing
RS RFNBLK,1			;#36 Times ncp code blocked somebody
RS RFNLST,1			;#36 Last host that got blocked
RS RFNCLN,1			;#36 Times rfnm table gets cleared
RS NCPSTC,1			;#112 NCP Sleep time constant- min sleep time
RS NCPTIM,1			;#112 Time NCP fork can awake after min sleep

RS IMPFLG,1			;SERVICE NEEDED BY ASYNC PROCESS
RS IMPIBI,1			;IN BUFFERS IN PTR
RS IMPIBO,1			;IN BUFFERS OUT PTR
RS NCPFRK,1			;FORKX OF NCP FORK
RS IIMBUF,3			;IMP IRREG MSG BUFFER, FOR OUTPUT SIDE
RS TTNOF,1			;SCAN OF NET TTY LINES REQUESTED IF NON-0
RS NOIBFS,1			; Flag that input buffer pool ran dry
RS IMPNOS,1			;OUTPUT SCAN REQUEST FLAG
RS IMINFB,1			;BUFFERS MADE FREE BY PI ROUTINES
RS IDVLCK,1			;LOCAL LOCK
RS IDVLLK,1			;LAST IDVLCK LOCKER
RS IMPOJB,1			;OLD JOBBIT OF CURRENT IDVLCK LOCKER
RS IMPFRI,1			;LIST OF FREE INPUT BUFFERS
RS IMPNFI,1			;COUNT OF FREE INPUT BUFFERS
RS SIQNXT,1			; Time next special Q message expires
RS SIQIBI,NSQ			;SPECIAL QUEUE
RS SIQIBO,NSQ
RS SIQTIM,NSQ			;TIME OF FIRST MESSAGE ON SPECIAL QUEUE
RS SIQSPC,NSQ			;SPACE OCCUPIED BY SPECIAL INPUT Q
RS SQJOB,NSQ			;JOB TO WHICH SPECIAL Q IS ASSIGNED
RS SQVAL1,NSQ			;VALUES FOR UP TO 3 WORDS OF LEADER
RS SQVAL2,NSQ
RS SQVAL3,NSQ
RS SQMSK1,NSQ			;MASKS FOR UP TO 3 WORDS OF LEADER
RS SQMSK2,NSQ
RS SQMSK3,NSQ
RS SQLCK,1			;INTERLOCK FOR ASSIGNING SPECIAL Q
RS MLCIBI,1			;MLC (PTIP) TRAFFIC BUFFER LIST POINTERS
RS MLCIBO,1			; ..
RS IMPNCL,1			;NUMBER OF CONTROL INPUT CONNS
RS IMPNOL,1			;NUMBER OF CONTROL OUTPUT CONNS
RS LNKNDL,1			;NUMBER OF DELETES IN LINK TABLE
RS IMPTIM,1			;TIME OF NEXT CLOCK RUN DOWN
RS IBPTIM,1			;TIME OF NEXT IMPIBP RUN
RS NETTIM,1			;TIME OF NEXT CHECK OF FSM FOR HANGS
RS RFNTIM,1			;TIME OF NEXT CHECK FOR LOST RFNM'S
RS NEGTIM,1			;NEGOTIATION TIME-OUT CLOCK
RS ITMSTM			;TIME TO FLUSH ALL TTMSG'S TO NVT'S
RS IMPCHU,1			;0 IF CURRENT CONTROL MESS HOST NOT UP
RS IMPCHO,1			;HOST NUMBER OF CONTROL MSG, MUST PRECEDE I8CAL
RS I8CAL,5			;ARGS OF CONTROL OPERATION, MUST FOLLOW IMPCHO
RS I8COP,1			;LAST CONTROL OP-CODE
RS IMPGDM,1			;LAST IMP GOING DOWN MSG

RS IMP8XI,1			;IRREG MES BUFFER IN PTR
RS IMP8XO,1			;.. .. OUT
RS IMP8XC,1			;.. .. COUNT
RS IMP8XB,3*IMP8XS		;IRREG MES BUFFER
;;;
;;; Note that the following uses the DEFWRD macro, which is defined in
;;; MNTPAR.MAC
;;;

DEFHDR(<LINK-TABLES>,1000)	; Storage after first page

;;; *NOTE* That the following storage must be locked down before
;;; being used
;LINK TABLES
BIMPLK==:..OFST			; First address to lock

DEFWRD IMPLT1,IMPNLK		;LH -- UNIT (INDEX TO NCP TABLES)
				; OR -1 IF CONTROL LINK
				;B18-19 00 RECIEVE
				;	10 SEND
				;	11 FREE
				;	01 DELETE
				;B28-35 -- LINK
DEFWRD IMPLT2,IMPNLK		;B0-9 -- FLAGS
				;B10-17 -- BYTE SIZE
				;RH -- IN BFR PTR
DEFWRD IMPLT3,IMPNLK		;LH -- OUT BFR PTR
				;RH -- SAVE MESSAGE FOR RETRANSMISSION
DEFWRD IMPLT4,IMPNLK		;LH -- CURRENT BUFFER
				;RH -- MSG ALLOCATION
DEFWRD IMPLT5,IMPNLK		;B4-11 -- NETWORK
				;B12-27 -- IMP
				;B28-35 -- HOST

DEFHDR(<SOCKET-TABLES>,..OFST)	; Socket tables follow

DEFWRD(LSKT,NSKT)		;LOCAL SOCKET NUMBER
DEFWRD(FSKT,NSKT)		;FOREIGN SOCKET NUMBER
DEFWRD(NETHST,NSKT)		;-1 IF NO HOST
				;B4-11 -- NETWORK
				;B12-27 -- IMP
				;B28-35 -- HOST
DEFWRD(NETAWD,NSKT)		;B0-8 -- LINK NUMBER (0 IF NONE)
				;B18-23 -- TIME-OUT COUNTDOWN
				;B24-35 -- INDEX TO LINK TABLES
DEFWRD(NETBAL,NSKT)		;BITS OF ALLOCATION
DEFWRD(NETDAL,NSKT)		;DESIRED LEVEL OF BIT ALLOCATION
DEFWRD(NETBUF,NSKT)		;LH -- BYTES PER BUFFER
				;RH -- BUFFER LOCATION -1 (0 FOR NONE)
DEFWRD(NETSTS,NSKT)		;B0-3 -- FSM STATE
				;B4-11 -- FLAG BITS
				;B12-17 -- BIT STREAM BYTE SIZE
				;RH -- MESSAGE COUNT STATISTICS
DEFWRD(NETFRK,NSKT)		;B0-5 -- INTERRUPT CHANNEL FOR INS
				;B12-17 -- FSM STATE CHANGE INTERRUPT CHANNEL
				;RH -- FORKX OF FORK TO INTERRUPT
DEFWRD(NETBTC,NSKT)		;BIT COUNT STATISTICS

;;; End of locked dowm imp storage
EIMPLK==:..OFST			; ...
;;; The following tables are kept in MNTSEC (currently == ANBSEC )

DEFHDR(<HOST-TABLES>,100000)	; Move host tables up so no overlap

BMNTLK==:..OFST			; First location to lock down
DEFWRD(HOSTNN,NHOSTS)		;HOST NUMBERS
DEFWRD HSTSTS,NHOSTS		;DEAD HOST STATUS TABLE (18 BITS PER HOST)
EMNTLK==:..OFST			; last location to lck down

;;; the following are swappable
DEFWRD(HOSTN,NHOSTS)		;TABLE OF HOST FLAGS,,POINTERS TO NAMES.
DEFWRD(HOSTPN,NHOSTS)		; Primary name for this number
DEFWRD(HSTNAM,NHSTN)		;TEXT TABLE OF HOST NAMES

;;; The following parallel tables are used for looking up network numbers

RS(NETHTB,NETHSZ)		; Network number hash table
RS(NETGWY,NETHSZ)		; Path (interface or gateway) to a network
RS(NETIFC,NETHSZ)		; Interface that gateway is on


IFN NETN,<
NDG RFNTSZ,^D64		; Size of RFNM hash table (must be power of 2)
RS(RFNTAB,RFNTSZ)		; RFNM counting hash table
RS(RFN8TO,RFNTSZ)		; timeout
>

;;; These are part of the NETRDY GETAB Table 
RS NETENT,1			; Flags to drive NETSER etc.
RS IGDMSG,1			; Last IMP Going down message
RS IGDTIM,1			; time of it
NR ABFCNT			; Counter of NETABF BUGINFs

;;; Used by Multinet fork
RS	MNTFRK			; FORKX
RS	MNTFLG			; Wakeup flag
RS	MNTTIM			; when needed next

;;;
;;; Table used to initialize the other protocals, first entry is the 
;;; size, rest are routines to call to start the protocal up.
;;;
	RESCD
INIPTL::EXP INIPTS		; Number of entries
IFN INETN,<IFIW!INTBEG>		; Start up Internet
IFN NETN,<IFIW!IMPBEG>		; Start up NCP
IFN CHAOS,<IFIW!CHAINI>		; Start up chaos net
IFN MLCN,<IFIW!MLCBEG>		; Start up PTIP protocal
INIPTS==<.-INIPTL>-1		; Number of entries

;;;
;;; Storage for Multinet device drivers /NCTs
;;;
	.PSECT RSDAT		; In resident data area
.NCTS::
	MKNCTS			; Make the actual NCTS
;;; NCT Vector table
NCTVT::	MKPTRS			; And the pointers thereto


;;; Interrupt storage

IFG ANXN+BBNN,<		; If any 1822's are defined
RS IMSTK,NIMSTK		; Stack storage area
>
	.PSECT RSDAT		; In resident data area
IFG ANXN+BBNN,<
IMPPDP::	IOWD NIMSTK,IMSTK ; Stack pointer for AN20 interrupts
>
;;; (if we put all interfaces on one level, we can maybe combine these stacks)
IMPNIB::	^D8*<BBNN+ANXN>	; Number input buffers to keep on tap
IFG NFEN,<
IFE ANXN+BBNN,<
RS NFESTK,NIMSTK	; Actual stack
NFEPDP::IOWD NIMSTK,NFESTK	; Stack for Network-front-end DTE interrupts
	>	; End of IFE ANXN+BBNN

IFN ANXN+BBNN,<
NFEPDP==:IMPPDP			; Use IMP stack if it's defined
NFESTK==:IMSTK
	>	; End of IFN ANXN+BBNN
>	; End of IFG NFEN
RS NUMNCP,1		; Number of NCP Type nets up
RS NETSUP,1		; Flag That MNTINI has completed
;VARIABLES

DBGNBF==:100

RS(DBGFAC,1)			;FAILURE COUNTER
RS(DBGSP,1)			;STORE POINTER
RS(DBGRP,1)			;READ POINTER
RS(DBGNWD,1)			;NUMBER OF WORDS IN BUFFER
RS DBGERR,1			;SET TO LOG ERROR ACTIVITY
RS DBGNCP,1			;SET TO LOG NCP ACTIVITY
RS DBGINT,1			;SET TO LOG Internet ACTIVITY
NR(DBGBUF,DBGNBF)		;DEBUG BUFFER

RS(NCPLCK)			;LOCK TO PREVENT DOFSM CONFUSION
RS(NCPLLK)			;FORKX OF LAST NCPLCK LOCKER
RS(NCPLPC)			;PC OF LAST NCPLCK LOCKER
RS(NCPLCN)			;COUNT OF NCPLCK LOCKS
RS(NCPLFC)			;COUNT OF NCPLCK FAILURES
RS(ASNTBC)			;ASNTBF TRAFFIC COUNTER
RS(NETCNC)			;COUNT OF TOTAL CONECTIONS OPENED
RS(FUNNYC)			;COUNT OF FUNNY INPUTS TO FSM
   IFE SMFLG,<
NTBUFS==:400000			;START OF NETWORK BUFFER SECTION TO USE
   >
   IFN SMFLG,<
NRP(NTBUFS,NNTBFS)		;ARPAnet buffers for KS10
   >
RS(NETFRE,5)			;NET BUFFER FREE LIST HEADER
				;WD 0 IS BUFFER FREE LIST POINTER
				;WD 1 BUFFER LOCK
				;WD 2 TOTAL FREE BUFFER SPACE
				;WD 3 START OF BUFFER AREA
				;WD 4 END OF BUFFER AREA
	RESCD
ASNTHR::^D8
;RS(ASNTHR,1)			;THRESHOLD BELOW WHICH WE GET NERVOUS
	SWAPCD			; ABOUT BUFFER SPACE
NR(MHOSTS,1)			;MINUS NUMBER OF HOSTS IN TABLE.
	>	; END of IFG NETN
	IFE INETN,<		; Stuff when Internet not included
.ASNIQ::.RELIQ::.SNDIN::.RCVIN::	JRST UJSYS0
INTLGO::INTBEG::RET
RS INETID,1		; Our Internet ID
RS INETLB,1		; Logical host bits (a mask)
RS TNBFFL,1
RS INTNCP,1
RS INTOBI,1
RS INTOBO,1
RS INTON,1
RS INTIBI,1
RS INTIBO,1
RS INTNFI,1
RS INTFRI,1
RS INTNFB,1
RS INTFLG,1
	>	; End IFE INETN
	IFE TCPN,<		; Stuff when TCP not included

.SEND::	.RECV::	.OPEN::	.CLOSE:: .SCSLV::
.ABORT::.STAT::	.CHANL::	JRST UJSYS0
CHKTVT:: ABTJCS::	RET

RS TCPON,1
RS TCPIFG,1
RS TCPIPQ,1		; Pointer to TCP input queue head
RS TCPFLG,1
		 >; End IFE TCPN

    IFG INETN,<

NR INTRAN,1		; IP reassembly packet number
NR INTRAQ,1		; (Extended) pointer to IP fragment ra queue (PKTQ)
NR INTRAT,1		; TODLCK of next fragment to timeout (RCVFLS)
	RESCD
INTBYP::-1		; Internet bypass 0 no, -1 ok
..MXSZ==^D1004		;  **** (should be runtime configured)
INTXPB::..MXSZ	; Maximum PIPL for all interfaces (bytes)
INTXPW::<PKTELI+<<..MXSZ+3>/4>+1> ; # Words in max pkt bfr (+1) (PFSIZ=1)
NR PPBUF,PPBWDS		; Packet printer buffer
NR PPBLCK,LOCKSZ	; Lock on PPB
   TCPPFN::ASCIZ /PS:<OPERATOR>IPTRAC.BIN/ ;P777777
	   BLOCK 3
NR TCPPSJ,1		; Jfn of Simulation file (containing PKTs)
NR TCPPSQ,1		; Queue of PKTs read so far (maybe RXed)
   TCPPSA::BYTE (4)0(8)^D10,0,0,^D5 ; BBNF TCP Development System
IF2 <IFE INTSEC,<PRINTX % Warning: Cannot use default trace in single section machine>>
	.PSECT RSDAT		;in resident data area
   TCPPTB::INTSEC,,600	; Defaults if not CALL TCPPIN
   TCPPTC::INTSEC,,600	; Current buffer pointer
   TCPPTE::INTSEC,,730	; Sav Dump <N,,garb>,N<data>
   TCPPTO::0		; IMP Dump <N>,<time>,N<data>
			; IP  Dump <adr,,N+1>,N<data>
	.ENDPS RSDAT
RS INETID,1		; Our Internet ID
NR INTSCR,1		; Set non-0 to run in secure mode
NR INTSVC,1		; Count of scavenges of free storage
NR INTSVR,1		; Flag to request a scavenge
NR INTSVT,1		; TODCLK of most recent scavenge BUGINF
RS INTBFF,NTWBWD	; Free wait bit indicators
RS INTABC,NTACWD	; Per fork count of ABORTed TCBs
   INTCLS::EXP 4B6,4B6,4B6,4B6,6B6,6B6,7B6,7B6 ; Network class mask
   INTLHX::3		; Maximum logical host value delivered to protocols
   INTNET::EXP 37700000000,37700000000,37700000000,37700000000
           EXP 37777600000,37777600000,37777777400,37777777777
RS INTFLG,1		; Flag to make the Internet fork run
RS INTTIM,1		; TODCLK when Internet fork should run next
RS INTTRC,1		; Trace bits
RS INTFRK,1		; FORKX Running Internet

RS INTIBO,1		; ateway input queue output pointer
RS INTIBI,1		; Gateway input queue input pointer
RS INTNFB,1		; Empty output buffer list pointer
RS INTFRI,1		; Free input buffer list pointer
RS INTNFI,1		; Free input buffer count
RS INTNIB,1		; Number of free input buffers desired
RS INTON,1		; -1 If IP initialized, 0 if not


; Internet Protocol Tables
; *** Do not separate
	RESCD

DEFINE PCLTAB (NAM,PRT)<
.X=.
	RELOC	.X+.INTPC
	MSEC1,,NAM'CHK
	RELOC	.X+.INTPF
NAM'FLG::0
	RELOC	.X+.INTPI
	MSEC1,,NAM'INI
	RELOC	.X+.INTPQ
NAM'IPQ::0
	RELOC	.X+.INTPO
NAM'ON::	0
	RELOC	.X+.INTPL
IFB  <PRT>,<NAM'PCL::	.'NAM'FM>
IFNB <PRT>,<NAM'PCL::	PRT>
	RELOC	.X+.INTPP
	MSEC1,,NAM'PRC
	RELOC	.X+.INTPS
NAM'SID::0
	RELOC	.X+.INTPT
NAM'TIM::377777777777
	RELOC	.X+.INTPE
	MSEC1,,NAM'ICM
	RELOC	.X+.INTPZ
>

	.PSECT RSDAT		;in resident data area
INTPIX::-4,,.INTPZ	; -# protocols,,Table length
			; Tables follow INTPIX
; TCP table
	PCLTAB (TCP)

; GGP table
;;	PCLTAB (GGP)

; ICMP table
	PCLTAB (ICM)

; Internet User Queue table
; NOTE:	This must be last since protocol -1 takes anything
	PCLTAB (INQ,-1)

	BLOCK .INTPZ	; Spare for tests
	.ENDPS RSDAT
	SWAPCD
; *** End of do not separate
;;; extra ICMP storage
RS PINGTM		; Time of next gateway ping
RS NETHTM		; Time to re-init the network cache
RS GWTAB		; Pointer to gateway tables
	RESCD
   PINGT0::^D37000	; Ping interval (should be prime to
			; avoid interactions with other things,
			; and should be long enough to avoid putting a 
			; burden on the host)
   NETHT0::^D<6*60*60*1000> ; Interval to clear hash table, msec


; Internet queue storage:
	RESCD
   INTQMX::^D8		; Max # of packets in RCVIN queue (INTSQP)
   INTQT0::^D30000	; Internet user queue (packet) timeout, msec (INTQTM)

RS INTQFK,NIQ		; Forkx waiting for stuff on this queue
NR INTQHD,1		; Pointer to table of queue heads
NR INTQJB,NIQ		; Job owning this queue
NR INTQLK,LOCKSZ	; Lock on queue tables
NR INTQM0,NIQ
NR INTQM1,NIQ
NR INTQM2,NIQ
NR INTQM3,NIQ
NR INTQV0,NIQ
NR INTQV1,NIQ
NR INTQV2,NIQ
NR INTQV3,NIQ
NR INTQSP,NIQ		; Number of messages on this queue
NR INTQTM,NIQ		; Timeout for this queue

; Free Storage:

NR INTBLK,NFIXED
NR ODDBLK,1		; Odd length blocks list
NR BULKST,1		; Start of bulk storage
NR BULKND,1		; End of bulk storage
NR MRGFLG,1		; Non-0 if a garbage collect might help
NR INTFSP,1		; Amount of free space currently available
NR FRELCK,LOCKSZ	; Lock on the free storage area
IFKA <NR INTFRE,INTFSZ>	; The free storage area
IFSM <NR INTFRE,INTFSZ>	; The free storage area
IFKL <	INTFRE=:1000	; in INTSEC
	INTFSZ==:777000>; use all but page 0
NR BADPCT,1		; Packets received with bad checksum, etc
NR GENCFL,1		; General lock conflits counter
>
	IFG TCPN,<		; TCP STORAGE
		IFE INETN,<PRINTX ? You can't have TCP without Internet>
RS TVTPTR,1		; AOBJN ptr over TCP Virtual terminals
RS TVTNOF,1		; TCP output scan needed
RS TVTNTM,1		; Time to check for over TVT negotiations
RS TVMSTM,1		; TVT sendall timer
RS TVTLSN,1		; TVT listening JCN
   TVTWTM::^D2000	; Msec to wait when window filled

RS INTWTB,NTWBWD	; Scheduler wait bits. One per lock, buffer, etc

NR NXTLBL,1		; Next packet label
NR STATF,1		; Set non-0 to take statistics
NR TCBCNT,1		; Count of TCBs now in use

NR TCBDQ,1		; Head of dead TCB queue (SCAN:)
NR TCBH,1		; TCB Hash table location
NR TCBHLK,LOCKSZ	; TCBH Lock
NR TCBHUC,1		; TCBH Use Count
   TCBMAX::MAXTCB	; Maximum number of TCBs allowed
RS TCPABC,NTACWD	; Abort counters
RS TCPBDQ,1		; Buffer done queue
   TCPBGT::^D30000	; BG time interval, msec
   TCPBYS::4400+17*4+17*4 ; Max local (bypass) packet size - 1 page + overhead
   TCPCKT::^D10000	; TCP check interval, msec
   TCPDGT::^D30000	; DG time interval, msec
   TCPDTL::^D60		; Default Time to live, seconds
   TCPDXD::^D2		; Default RX denominator
   TCPDXI::^D10		;#470 Default RX interval, seconds
   TCPDXN::^D3		; Default RX numerator
RS TCPIDQ,1		; Head of IP's dead queue
RS TCPIFG,1		; Set non-0 after TCP initialized
   TCPISN::^D<<MAXSEQ/8>*<<24*60*60>/CYCTIM>> ; TCP sequence # per second
           EXP 3	; Scale factor (8 above) to prevent MUL overflow
   TCPPTM::^D300	; Maximum persistence time, seconds (send timeout)
   TCPRA0::^D100	; Msec to wait for RA to process input packet
   TCPRX0::^D10000	;#470 Initial RX interval, msec
   TCPRXF::0,,-4	; Scale factor for TCPRXS & TCPRXV (ASH x,@TCPRXF)
   TCPRXN::^D1000	; Minimum RX interval, msec
   TCPRXS::15		; 0.1101 = 0.8125
   TCPRXV::30		; 1.1000 = 1.5
   TCPRXW::^D120000	; RX probe into zero window, msec
   TCPRXX::^D60000	; Maximum RX interval, msec
   TCPSY0::^D2000	; Msec delay on re-synchronization attempts
RS TCPUS0,1		; Saved TCP fork UPT pointer

NR PROC,1		; Points to currently running "process" in TCP

; "Process" control blocks

NR PZ,PROCSZ		; Packetizer
NR IP,PROCSZ		; InputProcessor
NR RA,PROCSZ		; Reassembler
NR RX,PROCSZ		; Retransmitter
NR DG,PROCSZ		; Delayed Actions Generator
NR BG,PROCSZ		; Background
NR STAT0,0		; Marks first cell cleared by STSINI

NR SYNSCT,1		; SYNs counter
NR SYNRCT,1		; SYNs received counter
NR BYTSCT,1		; Bytes sent counter
NR BYTRCT,1		; Bytes received counter
NR FINSCT,1		; FINs sent counter
NR FINRCT,1		; FINs received counter
NR RSTSCT,1		; RSTs sent counter
NR RSTRCT,1		; RSTs received counter

NR PZPKCT,1		; Packets produced by Packtizer
NR OPPKCT,1		; Packets output to the network
NR IPPKCT,1		; Packets handled by InputProcessor
NR RAPKCT,1		; Packets processed by Reassembler
NR RXPKCT,1		; Packets retransmitted
NR DUPKCT,1		; Count of duplicates received


; Task counters

NR PZRNCT,1		; Count of times Packetizer has run
NR OPRNCT,1		; Count of times OutputProcessor has run
NR IPRNCT,1		; Count of times InputProcessor has run
NR RARNCT,1		; Count of times Reassembler has run
NR RXRNCT,1		; Count of times Retransmitter has run
NR DGRNCT,1		; Count of times Delay Action has run
NR BGRNCT,1		; Count of times Background has run
NR TASKCT,1		; Count of all tasks run
; Delay histograms

NR PZDLAY,HISTSZ
NR OPDLAY,HISTSZ
NR IPDLAY,HISTSZ
NR RADLAY,HISTSZ
NR RXDLAY,HISTSZ
NR ACDLAY,HISTSZ


; CPU Usage meters

NR PZUSE,1
NR OPUSE,1
NR IPUSE,1
NR RAUSE,1
NR BGUSE,1
NR RXUSE,1
NR DGUSE,1
NR OHUSE,1
NR TIMPTR,1		; Current timer.  Points to one of the above

NR STATZZ,1	; Marks last cell cleared by STSINI

		> ; END IFG TCP


; Dummy routines for Raw Packet Interface.  Needed only if TCP is included
; but no RPI is present.

IFE RPIN,<
  IFG TCPN,<
RPIQOB::BUG(RPINX)
RPICHK::RPIINI::RET
RPISRT::JRST 0(T4)
           >
         >

; Storage for Raw Packet Interface:

IFG RPIN,<

RS RPIIB,1
RS RPIICT,1
RS RPIINP,1
RS RPIOB,1
RS RPIOBI,1
RS RPIOBO,1
RS RPIOCT,1
RS RPIOUP,1
RS RPIS32,1
RS RPOS32,1
         >
	RESCD
IFN INETN,<
IF1 <PRINTX % SETSPQ assumed to be in SCHED (BBN) >
;;;;SETSPQ::RET		; Not able to do this with DEC scheduler
>
IFE TCPN,<
TVTPTR::0
TCPIX==:0
>
   IFE NETN,<


IFN INETN,<	; Internet but no network:
INTQOB::RET		; No skip return means pkt not accepted for o/p
DBGIN::RET		; DBGIM interface for TCP
MAXWPM::400		; Maximum words per message
>;END OF IFN INETN

;DUMMY ROUTINES FOR NON-ARPANET SYSTEMS


; Set local host number routine. Takes old or new style number.
; Sets to new style, and puts it in NLHOST.
; SETSPD does this.  We allow a host to have a name even though the
; ARPANET code is not assembled in.  This allows TCP, etc. to work.

; Called from SMON.  T2 has the argument.

STHSTJ::TDNE T2,[^-377]		; Stray bits means old format
	 JRST STHST1		; No conversion needed
	IMULI T2,2001		; Convert to new format
	ANDI T2,600077
	IOR T2,NETFLD		; Include network number
STHST1:	MOVEM T2,NLHOST
	ROTC T2,-6		; Save IMP number
	LSH T2,-^D10		; Flush middle bits
	ROTC T2,6		; Combine Host and IMP
	ANDI T2,377
	MOVEM T2,NOHOST
	RET

NETLGO::			;JOB LOGOUT TIME
IFG INETN,<	SETO T1,	; NO ARPANET, BUT MAY STILL HAVE INTERNET
		RELIQ
		 JFCL
>
	RET


IFE CHAOS,<
CHKNVT::			;IS TERMINAL AN NVT
>
CHKTVT::			;IS TERMINAL A  TVT
NETKFK::			;FORK KILLING TIME
IMPHLT::			;SYSTEM SHUTDOWN TIME (HSYS4)
IMPBEG::			;SYS STARTUP TIME, CREATE JOB 0 FORK
HSTINI::			;SYS STARTUP AND SMON. INIT HOST TABLES
CHKNET::			;WAIT FOR NET TO FINISH
GHOSTN::
GNTAWD::
GTBHSS::
GTBHRT::
IMPFPF::			;AN20 IOPGF CHECK ROUTINE
NETINI::RET			;INITIALIZATION OF NCP FORK
NR (NETON)			;CELL USED BY SMON, RSO DEFINE IT.
NR (IMPDRQ)			;EVEN THOUGH NEVER USED BY SYSTEM
.GTNCP::
.GTHST::
.ASNSQ::
.CVSKT::
.SNDIM::
.RELSQ::
.FLHST::
.CVHST::
.ATNVT::
.RCVIM::ITERR ILINS2		;NETWORK ONLY JSYS'S

NTBFIX==:0			;NEWORK BUFFER SECTION PAGE TABLE

IMPGTN==:0			;NETWORK GETAB TABLES
IMPRDY==:0
IMPLBT==:0
NHSTST==:0
NHSTN==:0
HSTNAM==:0
NHOSTS==:0
HOSTN==:0
NSKT==:0
LSKT==:0
FSKT==:0
NETAWD==:0
NETBAL==:0
NETSTS==:0
NETBUF==:0
NETBTC==:0
NETHST==:0
NETFRK==:0
NETDAL==:0
IMPNLK==:0
IMPLT1==:0
IMPLT2==:0
IMPLT3==:0
IMPLT4==:0
IMPLT5==:0

   >;END OF IFE NETN
; 100  Dummy CHAOS entries
IFE CHAOS,<
CHAINI::
CHIINT::
RELCON::RET
CATNVT::ITERR ILINS2
RS CVTPTR
CHASBS==:0		; length of status block
CHADTB==:0
CHPMXT::		; maximum packet size
CHAON::	0
CHASBS==0
MYCHAD::0		; Dummy local address
>
 ;STORAGE FOR PTIP SUPPORT

;TTYSRV REQUIRES MLCXWD

RS MLCXWD,1		;-#TTYS,,1ST ONE FILLED IN BY TTYSRV

IFN NMLCS,<		;REQUIRE PTIP PRESENT


RS MLCQDS,1		; MEASUREMENT CELLS
RS MLCQIN,1
RS MLCQIX,1
RS MLCQOU,1
RS MLCQOX,1
RS MLCQLN,1
RS MLCQLX,1
RS MLCQI1,1
RS MLCQO1,1
RS MLCIB,1		;Current (or last) input buffer addr
RS MLMIBC,1		;Meter. Input Buffer Count, traffic from MLC
RS MLMICC,1		;Meter. Input Character Count from MLC
RS MLMIXC,1		;Meter. Input control count - all but NOP
RS MLMOBC,1		;Meter. Output Buffer Count, traffic to MLC
RS MLMOCC,1		;Meter. Output Character Count to MLC
RS MLMOXC,1		;Meter. Output control count all but NOP
RS MLMRSC,MLCN		;Reset count (PTIP crashes), for each PTIP
RS MLMRST,MLCN		;Time of last reset (TODCLK), for each PTIP
RS MLCIHC,1		;NUMBER OF TIMES MLCHST HAS BEEN INITIALIZED
RS MLMERS,1		;Number of ERR's sent to PTIP
RS MLIDBG,1		; NON-ZERO IF BUGINF MLC ERRORS
RS MLILER,1		; LAST ERR FROM MLC (9 BIT BYTES)
RS MLMERL,1		;Line number of last ERR sent
RS MLISLN,1		;Line number of current input command or data (STATIC)
RS MLIDLN,1		;CURRENT DYNAMIC ADR OR WHAT STADYN OF STATIC RETURNED
RS MLISTS,1		;Status byte from Long Data input msg
RS MLIOPC,1		;Opcode of current input control msg
RS MLIARG,6		;Argument bytes of current opcode
RS MLCPVL,1		;Param value lock for set/read OPRFN
RS MLIPVP,1		;Place for Sched level to unpack Param value msg
RS MLIPVN,1		; .. the Phys line is in MLIPVP, arg number here
RS MLIPVV,1		; and the value here.
RS MLCPVP,1		;Phys line requested by process.
RS MLCICT,1		;Count of remaining input bytes in Imp msg
RS MLCIPT,2	;XTNDED	Pointer to current input byte in Imp msg
RS MLCINF,1		;Zero until a reset has been sent to MLC
RS MLCOB,1		;Current output buffer being built
RS MLCOCT,1		;Count of characters left in output buffer
RS MLCOPT,2	;XTENDED Pointer to current output byte in buffer
RS MLOBNE,1		;Output buffer non-empty flag.
RS MLOTTN,1		;Space for characters in long output data msg
RS MLCFRK,1		;Fork Index of the MLC Job 0 fork
RS MLCDED,1		;Minimum flow control. If non-0, delay outputs
RS MLCJ0F,1		;Flag to cause scheduling of Job 0 fork
RS MLCJ0A,1		;Storage for AC's A-D, Q1 for
RS MLCJ0B,1		; transfer from OPRFN to Job 0 for MLOCMD
RS MLCJ0C,1
RS MLCJ0D,1
RS MLCJ0Q,1		;This one also is a sched test arg
RS MLCNOS,1		;Need output scan for TTY characters
RS MLCNCS,1		;Need control scan for outputting commands
RS MBPTIM,1		;Scheduler wakeup TODCLK for job 0 fork
RS MLCDRQ,1		;Manual restart request. Clears and sends reset
RS MLCBGL,MLCN		;Background line number for periodic checks
RS MLCBGT,1		;And the time to check the next line
RS MLCNRP,1		;Need to reset parameters. MLC RST came in.
RS MLCNRR,1		;Need to send reset-reply code
RS MLCRSA,1		;Reset alarm-clock. Flow control on resets.
RS MLCIFH,1		;Inferior fork handle for MLCSET.SAV
RS DIALST,1		;COMMUNICATION CELL WHICH GETS DIALER STATUS
RS DILTTN,1		;AND ONE FOR CURRENT TTYN FOR PHYS DIALER LINE
RS MLMIOP,NMLIOP		;METERS ON THE OPCODES

RS MLICLN,1			;LINE # OR -1 FOR ALL IN CTL MSG RCDNG
RS MLICFZ,1			;0 MEANS FREEZE MLICTB WHEN FULL
				;NON-0 MEANS WRAP AROUND
RS MLICAD,1			;HOLDS PTR FOR NEXT SLOT IN MLICTB
RS MLICTB,MLICTN		;TABLE OF INCOMING MLC CTL MSGS

RS MLOCLN,1			;LINE # OR -1 FOR ALL OUT CTL MSG RCDNG
RS MLOCFZ,1			;0 MEANS FREEZE MLOCTB WHEN FULL
				;NON-0 MEANS WRAP AROUND
RS MLOCAD,1			;HOLDS PTR FOR NEXT SLOT IN MLOCTB
RS MLOCTB,MLOCTN		;TABLE OF OUTGOING MLC CTL MSGS
> ;END IFN NMLCS
;*****************
.PSECT RSVAR
;*****************

;STATIC STORAGE FOR MLC AND TELENET LINES
;MAY BE INDEXED BY STATIC LINE # - OFFSET TO TERMINAL LINE TYPE
;THE OFFSETS ARE DEFINED IN THE INDIVIDUAL LINE SPECIFIC MODULES
;IN TTYSRV
;EX.  MLCTTY=MLCFLX-OFFSET
;THEREFORE MLCTTY MAY BE INDEXED BY STATIC LINE # DIRECTLY

;REMOTE TTY WORDS
MLCTTX::BLOCK NTTMLC

;FLAG WORDS
MLCFLX::BLOCK NTTMLC

;ALLOCATION WORDS
MLCALX::BLOCK NTTMLC

;MLC LINES MUST BE ASSEMBLED AFTER FE LINES and cty
;MLC LINES MUST BE THE SECOND TYPE OF LINE
;TABLES INDEXED BY STATIC LINE # IF TTY,ALC,FLG USED INSTEAD
;OF TTX,FLX,ALX

IFE <TT.FE-TYPCTY>,<
	MLCTTY=:MLCTTX-NTTFE-1
	MLCFLG=:MLCFLX-NTTFE-1
	MLCALC=:MLCALX-NTTFE-1
>
IFN <TT.FE-TYPCTY>,<
	MLCTTY=:MLCTTX-NTTFE
	MLCFLG=:MLCFLX-NTTFE
	MLCALC=:MLCALX-NTTFE
>
;*****************
.ENDPS RSVAR
;*****************

IFE NMLCS,<MLCCKT::MLCCKD::RET>	; DUMMIES FOR TCOTST
; ACCOUNTING VARIABLES

RS TNTPVL,1		; LOCK WORD FOR GETTING ACCOUNNING
RS TNTPVI,1		; LENGTH OF GOTTEN REQUEST
RS TNTPVP,1		; LINE NUMBER CURRENTLY BEING FOUND
RS TNTABP,2		; TEMP BYTE POINTER

;;; Once (see above) is more than enough of this kakadoodoo
;;; IFE NMLCS,<MLCCKT::MLCCKD::RET>	; DUMMIES FOR TCOTST
;STORAGE FOR RS04 SERVICE

IFG DRMN,<
  IFG RS04F,<

NTRK==:^D8			;NUMBER OF TRACKS ON RS04
DRMSEC==:^D64			;NO. OF DRUM SECTORS

;SWAP ALLOCATOR PARAMETERS

SWPSEC==:DRMSEC			;USE DISK PARAMETERS
NDST=<<NDST+SWPSEC-1>/SWPSEC>*SWPSEC
SWPTRK==:NDST/SWPSEC		;..
SWPNUN==:1			;..

   IFN PHYIOF,<
NDRMEW==:1
RS DRMCFE,1

MAXDRM==:^D8			;MAX NUMBER OF UNITS
				;CAN BE GREATER THAN 8
RS DRMNUM,1			;NUMBER OF DRUMS (COUNTED BY RS4INI)
RS DRMTAB,MAXDRM		;VIRTUAL TO PHYSICAL DRUM ADDRESSES
				;CDB,,UDB
   >;IFN PHYIOF

   IFE PHYIOF,<

MAXDRM==:^D8			;MAX NUMBER UNITS

NDRCCW==:10			;NUMBER OF DRUM CCWS
DRMCCL==:50			;TEMP UNTIL RH20 FIXED

NDRMEW==:5			;NUMBER OF DRUM ERROR WORDS FOR GETAB
RS DRMCFE,5			;DRM ERR BLOCK (NAME IS HISTORICAL) SEE DRMERP FOR DESCR
RS DRMEC,1			;ERROR COUNT, THIS XFER
RS DRMERR,1			;TOTAL NUMBER OF DRUM ERRORS
RS DRMNRE,1			;DRM NON REC ERRS

RS DRMNRQ,1			;NUMBER OF REQUESTS IN QUEUE OR IN PROGRESS

;PER CHANNEL DATA (WILL LIVE IN CCB EVENTUALLY)

RS RHPBAR,1			;CURRENT BAR - ALSO USED AS ACTIVE FLG
RS RHPTCR,1			;CURRENT TCR
RS RHPUCB,1			;UCB CORRESPONDING TO ABOVE
RS RHPCCW,1			;WILL POINT TO BEG OF PRI. CCW LIST

RS RHSBAR,1			;SBAR
RS RHSTRC,1			;STCR
RS RHSUCB,1			;UCB FOR ABOVE
RS RHSCCW,1			;WILL POINT TO BEG OF SEC CCW LIST

RS RHCNI,1			;CONI ON LAST INTERRUPT
;PER UNIT DATA - UCB OFFSETS

RHURI==:0			;READ Q INPUT PTR
RHURO==:RHURI+DRMSEC		;READ Q OUTPUT PTR
RHUWI==:RHURO+DRMSEC		;WRITE Q INPUT PTR
RHUWO==:RHUWI+DRMSEC		;WRITE Q OUTPUT PTR
RHUSEC==:RHUWO+DRMSEC		;NEXT AVAILABLE SECTOR ON UNIT
RHUERR==:RHUSEC+1		;ERR REG,,TOTAL ERR COUNT
RHUNRE==:RHUERR+1		;ERR REG,NON REC ERRS
RHUNRQ==:RHUNRE+1		;NUMBER OF REQUESTS TO THIS UNIT
RHUUNI==:RHUNRQ+1		;DRIVE NUMBER
RHUODT==:RHUUNI+1		;TIME WHEN UNIT REQUEST IS OVERDUE
RHUSTS==:RHUODT+1		;UNIT STATUS:
				; B0 - OFFLINE

UCBLEN==:RHUSTS+1

RS UCBDAT,UCBLEN*MAXDRM		;STORAGE AREA FOR UCBS
RS RH0UTB,MAXDRM		;LH INDEX BY PHYS UNIT #, RH INDEX BY LOG UNIT #

RS DRMACS,5			;AC0-4 DURING DRUM INTERRUPT
RS DRMACP,1			;AC P DURING INTERRUPT
RS DRMP12,2			;INTERRUPT ACS P1&P2
NDRMPD==:25			;PDL SIZE FOR DRM PD LISTS
RS DRMPDL,NDRMPD			;PDL FOR DRUM INTERRUPT SERVICE
RS DRMSPP,1			;SAVED P AT NON INT LEVEL
RS DRMPD1,NDRMPD		;PDL FOR NON PI LEVEL

RS RHXIOA		;IO ADDRESS OF MBC
RS RHXICO		;INITIAL CONO
RS RHXATN		;CONI ATTN BIT
RS RHXRAE		;REG ACCESS ERR IN CONI
RS RHXENB		;CONO ENABLE BITS NEEDED TO SEE ALL CONI BITS
RS RHXCRE		;MACHINE INSTR. NEEDED TO CLEAR RAE
RS RHXERR		;CONI ERROR BITS
RS RHXBAR		;LH OF BLOCK ADDR REG LOAD DATAO
RS RHXTCR		;LH OF TRANSFER CONTROL REG LOAD DATAO
RS RHXCIJ		;CHANNEL INITIAL JUMP
RS RHXCHL		;CHANNEL HALT
RS RHXCWC		;CHANNEL WORD COULD
RS RHXLIA		;DATAO TO LOAD INT VECOTR
   >;END IFE PHYIOF
  >;END IFG RS04F
   >				;END IFG DRMN
;STORAGE FOR RC10 DRIVER

   IFG DRMN,<IFG RC10F,<
NTRK==:^D90/2			;NUMBER OF TRACKS PER DRIVE
DRMSEC==:^D15			;NO. OF DRUM SECTORS
MAXDRM==:^D4			;MAX NUMBER UNITS

;SWAP ALLOCATOR PARAMETERS

SWPSEC==:DRMSEC			;USE DRUM PARAMETERS
NDST=<<NDST+SWPSEC-1>/SWPSEC>*SWPSEC
NDST=<<NDST+SWPSEC-1>/SWPSEC>*SWPSEC
SWPTRK==:NTRK			;..
SWPNUN==:MAXDRM			;..

DRMPST==:^D60			;NUMBER OF PHYSICAL SECTORS PER TRACK
DRMNWS==:^D64			;NUMBER OF WORDS PER DRUM SECTOR
DRMNSP==:PGSIZ/DRMNWS		;NUMBER OF DRUM SECTORS PER PAGE
RS DRMRI,DRMSEC*MAXDRM		;DRUM READ  QUEUE INPUT POINTER
RS DRMRO,DRMSEC*MAXDRM		;DRUM READ  QUEUE OUTPUT POINTER
RS DRMWI,DRMSEC*MAXDRM		;DRUM WRITE QUEUE INPUT POINTER
RS DRMWO,DRMSEC*MAXDRM		;DRUM WRITE QUEUE OUTPUT POINTER

RS DRMCCL,2			;COMMAND LIST FOR DF10
RS DRMEC,1			;ERROR COUNT, THIS XFER
RS DRMACT,1			;DRUM IS ACTIVE IF NON-0
RS DRMDAO,1			;LAST DATAO TO DRUM

NDRMEW==:4			;NUMBER OF DRUM ERROR WORDS FOR GETAB

RS DRMCFE,1			;COUNT OF CFM ERRORS
RS DRMLER,3			;LAST ERRONEOUS DRUM COMMAND AND ERROR BITS
   >>				;END IFG DRMN & RC10F
;#25 Storage for SA10

   IFN SSAN,<			;#25 .

RS SAXICH,1			;#25 interrupting subchannel number
RS SAXSEL,1			;#25 word used to equalize SA10 selection
RS SAXCDB,SSAN*4		;#25 address of CDB for each subchannel
RS SAXERD,6			;#25 SA10 internal registers saved on error

 SAXTTL==:40			;#25 Trace table length		** TEMP? **
RS SAXTTP,1			;#25 Trace table pointer	** TEMP? **
RS SAXTT,SAXTTL			;#25 Trace table		** TEMP? **
   >
;STORAGE FOR DUMMY DRUM DRIVER

   IFE DRMN,<

DRMSEC==:0			;NO SECTORS...
NTRK==:0			;NO TRACKS...
MAXDRM==:0			;NO UNITS...

SWPSEC==:^D95			;USE DISK PARAMETERS
NDST=<<NDST+SWPSEC-1>/SWPSEC>*SWPSEC
SWPTRK==:NDST/SWPSEC		;..
SWPNUN==:1			;..

NDRMEW==:1			;NUMBER OF DRUM ERROR WORDS FOR GETAB

RS DRMCFE,1			;COUNT OF ERRORS

   IFN PHYIOF,<
RS DRMNUM,1			;PHONEY NUMBER OF DRUMS (0)
RS DRMTAB,1
   >;IFN PHYIOF

   >;IFE DRMN

;STORAGE FOR SWAP ALLOCATOR -- MUST FOLLOW ALL DRUM DRIVER DECLARATIONS

	NDG SWDST,NDST		;IF NOT ALREADY DEFINED, THIS IS DEFAULT
DRMMXB==:SWPNUN*SWPTRK		;MAX NUMBER OF BANDS POSSIBLE
DRMBSZ==:<SWPSEC+^D35>/^D36	;NUMBER OF BIT WORDS PER TRACK

;PARAMETERS FOR SWAPPING STRUCTURE

RS NPDRMS,1			;NUMBER OF PHYSICAL DRUMS, SET BY DRMIOI
RS MAXDRA,1			;NUMBER OF PAGES OF PHYSICAL DRUMS

;FOLLOWING VARIABLES ARE FOR "LOGICAL" DRUM, I.E. SWAPPING SPACE
;RESERVED ON DISK

RS DRMBND,1			;NUMBER OF DRUM TRACKS
RS MDRMBD,1			;MINUS DRMBND
RS DRMTPG,1			;TOTAL NUMBER OF PAGES ON DRUM

;STORAGE

RS DRMBBT,DRMMXB*DRMBSZ		;BIT TABLE - DRMMXB GROUPS OF DRMSEC BITS
RS DRMCNT,DRMMXB		;FREE PAGE COUNT FOR EACH TRACK
RS DRMBN0,1			;TRACK NUMBER OF LAST ADDRESS ASSIGNED
RS DRMFRE,1			;TOTAL FREE PAGE COUNT FOR DRUM
;STORAGE FOR SYSERR FACILITY

RS SEBQIN,1			;JOB 0 QUEUE - IN PTR
;SEBQOU IS IN A FIXED PLACE IN LOWER CORE
RS SEBJFN,1			;JFN FOR SYSERR.LOG FILE
RS SECHKF,1			;FLAG TO WAKE JOB 0 SYSERR FORK
RS SEIETM,1			;TIME AFTER WHICH FAILING SEBOFI TRIED AGAIN

;STORAGE COMMON TO ALL DRUM DRIVERS

RS DRMJ0R,1			;JOB 0 INTERLOCK ON ERROR BLOCK
RS DSTLOC			;CONTAINS ADDRESS OF DST
IFE EXADF,<
RS DST,NDST			;NOT EXTENDED. ALLOCATE DST IN RSVAR
>				;END IFE EXADF

IFN EXADF,<
DST==:0				;EXTENDED. DST WILL BE IN SEPARATE SECTION
>				;END IFN EXADF
;STORAGE IN THE SYMBOL TABLE PSECT
;IF HIDSYM IS ON, THIS STORAGE IS HIDDEN WITH THE SYMBOLS


IFN HIDSYM,<
ST SYMMAP,PGSIZ			;ALTERNATE MMAP
>;IFN HIDSYM


IFE HIDSYM,<
ST SYMMAP,0
>;IFE HIDSYM
;SWAPPER PAGES RESERVED IN PROCESSOR-PRIVATE AREA

DEFINE ASNPPG (P,N)<
	.PSECT PPVAR
P'A::	BLOCK N*PGSIZ
P==:P'A_-PGSFT
	.ENDPS PPVAR
...CNT==...CNT+N
>
...CNT==0


ASNPPG CSWPG,1			;SWAPPER TEMP
ASNPPG FITPG,1			;PRELOAD/POSTPG TEMP
ASNPPG PRLPG,1			;PRELOAD/POSTPURGE TEMP
ASNPPG PIPG,1			;FOR REAL-CORE REFS AT PI LEVEL

NRSPG==:...CNT
;STORAGE AND CODE BOUNDARIES

;JOB-COMMON AREA
DEFINE ASNJSB (P,N)<
P'A::	BLOCK N*PGSIZ
P=:P'A_-PGSFT
>
;JSB FREE PAGES

NDG NJSBPG,^D50		;NUMBER OF FREE JSB PAGES
	.PSECT JSVAR		;DECLARE ALL PAGES OWNED BY JSB


ASNJSB JSBPG,1			;JSB IS FIRST PAGE IN JOB-COMMON AREA
ASNJSB JFNPG,3			;3 PAGES FOR JFNS
ASNJSB JSJFN,0			;END OF THE JFN STORAGE AREA
ASNJSB JTBPG,2			;JSYS TRAP BLOCKS.  FIRST WORD USED BY
				; NEWJTB

JTBFRE=:JTBPGA			; Free JTB bit table (jffo)
JTBIFR==:777777,,770000		; initial contents of JTBFRE
JTBOFF==:JTBPGA+1		; address of 0th JTB

ASNJSB FREJP,NJSBPG		;JOB FREE STORAGE.  MUST BE LAST
				; DEFINITION IN JOB AREA
ASNJSB JSLST,0			;END OF JSB. MUST BE LAST.
	.ENDPS JSVAR		;END OF JSB OWNED PAGES
;JOB STORAGE BLOCK ASSIGNMENTS


;JSB STORAGE

DEFINE JS(T,N)<
	T=:JSBPGA+JSBLOC
	IFB <N>,<
	JSBLOC==JSBLOC+1>
	IFNB <N>,<
	JSBLOC==JSBLOC+N>
>

	.PSECT JSVAR
JSBLOC==0			;INITIAL VALUES

JS(JOBMAP,<<JSLSTA-JSBPGA>/PGSIZ>)	;OBJECT MAP FOR JOB-COMMON AREA
JOBM0=:JOBMAP-JSBPG		;BEG OF JOBMAP RELATIVE TO VIR PG 0

NUFKS==:30			;MAX NUMBER FORKS/JOB
JS SYSFK,NUFKS			;JOB FORK INDEX TO SYSTEM FORK INDEX
JS CTTAB,NUFKS			;rh:	-1 or controlling terminal number
				;lh:	vacant!
JS FKJTB,NUFKS			; Address of Jsys Trap Block
JS FKPTRS,NUFKS			;FORK POINTERS (STRUCTURE)
JS FKPSIE,NUFKS			;TERM INTERRUPT ENABLED WORD
JS FKDPSI,NUFKS			;DEFERRED TERM INTERRUPTS MASK
JS FREJFK,1			;FREE JOB FORK SLOT LIST
JS FKLOCK,1			;LOCK FOR FORK STRUCTURE MODIFICATION
JS FLKCNT,1			;NEST COUNT FOR FORK LOCK
JS FLKOWN,1			;FORK THAT LOCKED THE FORK LOCK
JS FKTIMW,1			;TIMER WORD
JS FKCNT,1			;COUNT OF ACTIVE FORKS IN THIS JOB
JS LSTLGN,1			; Last login D&T
JS SRTTIM,1			;DATE AND TIME THIS JOB WAS INITIALIZED
JS ARDFRT,1			; Job default for retrievals
JS CTRLTT,1			;LINE NUMBER OF CONTROLLING TTY
JS TTSPSI,1			;CODE ENABLED ANYWHERE IN THIS JOB
JS TTSDPS,1			;TERM INT CODE DEFERRED
JS TTJTIW,1			;TERMINAL INTERRUPT ENABLE MASK
JS (CONSTO,1)			;CONSOLE TIME ON (TODCLK UNITS)
JS (CTIMON,1)			;CONNECT TIME ON (GTAD UNITS)
JS (CONCON,1)			;CONSOLE CONNECT TIME (FOR USAGE)
JS (JBRUNT,1)			;JOB RUN TIME (FOR USAGE)
JS (CTITNT,1)			;TELENET CONNECT TIME ON (TODCLK UNITS)
JS (CONTNT,1)			;TELENET CONNECT TIME FOR SESSION (SEC.)
JS (JBNODE,1)			; NODE NAME (SIXBIT)
JS (JBBNAM,1)			; BATCH JOB NAME (SIXBIT)
JS (JBBSEQ,1)			; BATCH SEQUENCE NUMBER
JS (ACCTSL,1)			;LENGTH OF ACCTSR
JS (ACCTSR,MAXLW)		;ACCOUNT STRING
JS (ACCTSX,1)			;EXPIRATION DATE OF ACCTSR
JS (CSHACT,MAXLW)		;MOST RECENTLY VALIDATED ACCOUNT
JS (CSHUSR,1)			;USER FOR WHOM CACHED ACCOUNT WAS VALIDATED
JS (CSHACX,1)			;CSHACT EXPIRATION DATE
JS (CSHCLS,1)			;CLASS OF CACHED ACCOUNT
JS (LLSR,WPN)			;LOGICAL LOCATION (I DON'T UNDERSTAND WHY SOME OF THESE HAVE "+1")
JS (JSSRM,MAXLW+1)		;SESSION REMARK
JS (USRNAM,MAXLW+1)		;USER NAME STRING

JS(JFNLCK)			; Lock to prevent tampering with jfn's
JS(MAXJFN)
JS(ENQLST)			; LH - QUOTAS AND COUNTS
				; RH - POINTER TO Q-BLOCKS FOR THIS JOB
JS(TIMALC)			; TIMER clocks limit
JS(LNTABP)			; POINTER TO LOGICAL NAME TABLE
JS(LNMLCK)			; LOCK FOR LOGICAL NAME DATA BASE
JS NPRIVP,1			;NUMBER OF PRIVATE PAGES IN JOB
JS(JOBUNT)			; CONNECTED DSK UNIT
JS JBCLCK,1			; LOCK FOR ASGPAG
JS(JBCOR,4)			; Page allocation bit table
IFG TCPN,<JS JCNTCB,MAXJCN>	;#112 Pointer to TCB for each JCN
JS(JSBFRE,7)			; Job area free storage header
JS(JSFREE,IJSFRE)		; Free storage area in job block

;STRUCTURE TABLES, 3 WORDS PER STRUCTURE.  DATA INCLUDES STRUCTURE NUMBER

JSSTMX==:4			;NO ENTRIES PER STRUCTURE
JS JSSTRT,JSSTMX*STRN		;3 WORDS PER STRUCTURE
JSSTRF==:0			;OFFSET FOR (FLAGS,,STRUCTURE UNIQUE CODE)
JSGRPS==:1			;OFFSET FOR (AOBJN POINTER TO LIST OF GROUPS)
JSADIR==:2			;OFFSET FOR (UNUSED,,ACCESSED DIRECTORY NUMBER)
JSFKMT==:3			;OFFSET FOR FORK-MOUNT BIT WORD
IFG NUFKS-44,<PRINTX ONLY ONE WORD HAS BEEN ALLOCATED FOR FORKS IN JSFKMT>
JS JSSTLK,1			;LOCK ON THE JSSTRT BLOCK

JS(JSBSDN)			; CONNECTED STRUCTURE UNIQUE CODE,,DIRECTORY #
JS(JSBCDS)			;POINTER TO CONNECTED DIR NAME STRING
JS(MODES)			; DDBMOD WORD FROM LOGIN
JS(GROUPS)			; GROUPS TO WHICH LOGIN USER BELONGS

JS RSCNPT,1			;RESCAN POINTER
JS RSCNBP,1			;POINTER TO RSCAN BUFFER
RSCMXC==:777			;MAX SIZE OF RSCAN BUFFER

JS JBINFO,1			;PID OF PRIVATE [SYSTEM]INFO FOR JOB
JS JSCDR,1			;SPOOLED CDR INFORMATION
				;LH = NEXT VERSION NUMBER - 1
				;RH = ADDRESS OF SPOOL SET STRING
JS JSMTA1,1			;DEFAULT DENSITY, MODE, AND RECORD SIZE
				; FOR MAGTAPES BEING USED BY THIS JOB
JS JBFLAG,1			;LH = FLAGS SENT TO SPOOLER ON CLOSE
				; OF SPOOLED FILE AND LOGOUT
				;RH = GENERAL JOB WIDE FLAGS (SEE PROLOG)
				;RH = GENERAL JOB WIDE FLAGS (SEE PROLOG)
JS JSLOPD,1			;PID TO GET LOGOUT MESSAGE, FROM CRJOB.
JS JSLOJB,1			;JOB NUMBER OF WHO DID LGOUT TO ME
JS JSFSTK,1			;STACK OF THINGS TO BE DONE ON
				; FORK CLEAN UP
JS JSFLCK,1			;THE LOCK FOR THE JSFSTK STRUCTURE
JS CRJFLG,1			;FLAG THAT THIS IS A CRJOB STARTUP.
				; USED BY MEXEC AND LOGIN
JS DCNCNT,1			;NETWORK LINK QUOTA,,COUNT
JS JSSRTM,1			;Runtime at start of this accounting session
JS JSSCTM,1			;Console time at start of this session
JS JSATCT,1			;ATS HTN QUOTA,,COUNT
JS JOBSKD,1			;SPECIAL JOB SCHEDULING PARAMETER
JS BATSTF,1			;BATCH STREAM NUMBER AND FLAGS WORD

IFG TCPN,<JS JCNTCB,MAXJCN>	; POINTER TO TCB FOR EACH JCN
;JFN BLOCK - EACH JFN USES BLOCK OF N WORDS, JFNS CAN GROW
;BEYOND END OF JSB INTO SUCCESSIVE PAGES.
; *** THIS MUST BE LAST STORAGE DEFINED IN JSB ***

;NAMES DEFINED WITH 0 OVERLAY THE NAME FOLLOWING.   POSSIBLE
;BECAUSE THEY ARE USED ONLY DURING GTJFN

;FIRST DEFINE JFN LIMITS AND SIZES

MLJFN==:23			; # OF WORDS PER JFN BLOCK
MJFN==:<<JSJFNA-JFNPGA+MLJFN-1>/MLJFN> ;MAX NUMBER OF JFNS
RJFN==:MJFN*MLJFN		;ACTUAL SPACE USED BY JFNS

JS(JFN0,0)			; FIRST JFN
JS(FILTMP,0)			; Lh -0 ptr to temp string block for default
				; Rh -0 point to temp string block
JS(FILBYT)			; Byte pointers to current window
JS(FILPRT,0)			; Pointer to protection string or protection #
JS(FILBYN)			; Byte number of current byte
JS(FILACT,1)			; Pointer to account string or account number
JS(FILLEN)			; Total length of file in bytes
JS(FILCNT)			; Bytes remaining in current buffer
JS(FILLCK)			; File lock word
JS(FILSKT,0)			;ARPANET CONNECTION NUMBER,,UNUSED
JS(FILOPT,0)			; Byte pointer to store string in gtjfn
JS(FILWND)			; Lh - current page number
				; Rh - location of current window
JS(FILSTS)			; Lh - file status bits
				; RH - STATUS, AND MODE IN BITS 32-35
JS(FILDEV)			; Device dependent  information
JS (FILATB,0)			; FOR ATS, POINTER TO DATA NOT IN JOB SPACE
JS (FILLLB,0)			; FOR DECNET, POINTER TO LL BLOCK
JS (FILMTP,0)			;FOR MT ,HOLD PROTECTION WORD
JS(FILOFN)			; Lh - ofn for this file
				; Rh - ofn of long file pt table
JS(FILLNM,0)			; RH - POINTER TO LOGICAL NAME CHAIN
				; LH - POINTER TO RDTXT BUFFER
JS(FILLFW)			; LH - COUNT OF PAGES MAPPED
				; Rh - location of page table table
JS(FILDDN)			; Lh - pointer to device string block
				; Rh - directory number
JS(FILDNM)			; LH - DIR NAME STRING
				; RH - POINTER TO ATTRIBUTE LIST (FILATL)
	PFXMSK==:777		;UP TO 512 POSSIBLE PREFIXES
	NOATRF==:1B18		;THIS ATTRIBUTE DOES NOT HAVE A VALUE
	.PFACT==:1		;ACCOUNT STRING ATTRIBUTE
	.PFPRT==:2		;PROTECTION ATTRIBUTE
	.PFCOP==:3		;SPOOLED FILE COPIES
	.PFFRM==:4		;SPOOLED FILE FORMS
	.PFALC==:5		;PREALLOCATE FILE SPACE
	.PFBLK==:6		;MAGTAPE BLOCK LENGTH
	.PFEXP==:7		;MAGTAPE EXPIRATION DATE
	.PFFMT==:10		;MAGTAPE RECORD FORMAT
	.PFPOS==:11		;MAGTAPE POSITION
	.PFRLN==:12		;MAGTAPE RECORD LENGTH
	.PFUDT==:13		;NETWORK USER I.D.
	.PFPWD==:14		;NETWORK ASCII PASSWORD
	.PFBPW==:15		;NETWORK BINARY PASSWORD
	.PFACN==:16		;NETWORK ACCOUNT STRING
	.PFOPT==:17		;NETWORK OPTDATA FIELD
	.PFBOP==:20		;NETWORK BINARY OPTDATA
	.PFACC==:21		;MAGTAPE ACCESS
	.PFEXP==:22		;MAGTAPE EXPIRATION DATE
	.PFOFL==:23		; OFFLINE file attribute

JS(FILNEN)			; Lh - pointer to file name string block
				; Rh - pointer to extension string block
JS(FILVER)			; Lh - fork number of originator of this jfn
				; Rh - version number
JS (FILBFO,0)			;FOR DECNET, OUPTU BUFFER POINTER
JS(FILMS1)			; LH- DIRECTORY WILD MASK
				; RH- NAME WILD MASK
JS(FILIDX,0)			; RH - INDEX INTO DEVICE TABLES FOR THE
				;	ORIGINAL DEVICE GTJFN'ED.  I.E.
				;	DOES NOT CHANGE DURING SPOOLING
JS (FILBFI,0)			;FOR DECNET, POINTER TO INPUT BUFFER
JS(FILMS2)			; LH- EXTENSION WILD MASK
JS (FILBCT,0)			;FOR DECNET, POINTER TO COUNTS
JS(FILFDB)			; ADDRESS OF THE FDB IN THE DIRECTORY
JS(FILCOD)			;C(LH) := STRUCTURE UNIQUE CODE
				;C(RH) := PT0 OFN FOR LONG FILE

	.ENDPS JSVAR
;PROCESS-PRIVATE AREA

DEFINE ASNPSB (P,N)<
P'A::	BLOCK N*PGSIZ
P=:P'A_-PGSFT
>

.PSECT PSVAR		;START OF PSB OWNED PAGES


ASNPSB PSSPS,0			;START OF PSB SPECIAL PAGES,MUST BE FIRST
ASNPSB CXBPG,1			;SWAPPER, MAP TEMP
ASNPSB CPTPG,1			; ..
ASNPSB CPYPG,1			; ..
ASNPSB PSSPE,0			;END OF PSB SPECIAL PAGES
ASNPSB FPG0,1			;FORK UTILITY PAGES
ASNPSB FPG1,1			; ..
ASNPSB FPG2,1			;FORK UTILITY PAGES
ASNPSB FPG3,1			; ..
	NPSIPG==:2		;# OF PAGES FOR PI STORAGE
ASNPSB PSIPG,NPSIPG		;PSI IN PROGRESS STORAGE
	NIDXPG==:^D16		;NUMBER OF PAGES FOR THE INDEX
IFE EXADF,<ASNPSB IDXPG,NIDXPG>	;INDEX TABLE IS MAPPED HERE
IFN EXADF,<ASNPSB IDXPG,0>
   IFE EXADF,<NDG DRMASZ,DRSMDA>	;NUMBER OF DIR PAGES
   IFN EXADF,<NDG DRMASZ,0>
ASNPSB DIRPG,DRMASZ		;DIRECTORY WINDOW
	NDDTPG==:2		;NUMBER OF PAGES FOR MDDT
ASNPSB DDTPG,NDDTPG		;MDDT PRIVATE SEGMENT

;FROM HERE TO THE END OF THE PSB ARE MAGIC PAGES. THEY NEED TO LIVE
;TOGETHER AT THE END.

ASNPSB UPTPG,1			;USER SECTION 0 PAGE TABLE
ASNPSB HWPT,0			;HARDWARE VARIABLES IN PSB
ASNPSB PSBPG,1			;PROCESS CONTEXT VARIABLES
ASNPSB PSB1,1			;PSB ADDITION (STACK AND WS), MUST BE LAST

PSBMSZ==:<<PSB1A-PSSPSA>_-PGSFT>+1 ;SIZE OF PSB (PAGES)

.ENDPS PSVAR		;END OF PSB OWNED PAGES
;MACROS FOR DECLARATION OF STORAGE

;PSB STORAGE

DEFINE TS(T,N)<
	T=:PSBPGA+TSBLOC
	IFB <N>,<
	TSBLOC==TSBLOC+1>
	IFNB <N>,<
	TSBLOC==TSBLOC+N>
>


;PROCESS STORAGE BLOCK ASSIGNMENTS

	.PSECT PSVAR
TSBLOC==0			;INITIAL VALUES

TS UACB,NUACB			;MONITOR-CALL AC STACK
TS EUACB,0			;END

TS JOBNO,1			;JOB NUMBER TO WHICH THIS FORK BELONGS
TS JOBBIT,1			;SCHEDULER CONTROL BITS
TS FNPMAX,1			;MAX NUMBER PAGES IN WS FOR THIS FORK
TS JOBCK0,1			;VARIABLES FOR SCHEDULER TIME QUARANTEE
TS JOBCK1,1			; ..
TS RUNT2,1			;RUNTIME FRACTIONAL PARTS OF A MILLISECOND

NLFKS==:NUFKS			;MAX NUMBER FORK HANDLES/PROCESS
TS FKTAB,NLFKS/2		;LOCAL FORK HANDLE TO JOB HANDLE TABLE

TS FORKN,1			;JOB FORK NUMBER OF TOP FORK,,THIS FORK
TS FKRT,1			;FORK RUN TIME

TS PRARGP,1			;POINTER TO PROCESS ARGUMENTS
TS MPP,1			;MONITOR SAVED STACK POINTER AT LAST MENTR
TS(PRIMRY,1)			; Primary io indirection pointers
TS SLOWF,1			;SLOW MON ROUTINE FLAG
TS INTDF,1			;DEFER INTERRUPTS IF .GE. 0
TS INTDFF,1			;SOS INTDF  OR JSYS PSISV1
TS MJRSTF,1			;JRSTF @FPC  OR  JRST PSISV0
TS ACBAS,1			;CURRENT AC STACK POINTER

TS ITFFL,1			;FLAGS ON INTERRUPT TO MEXEC ***MUST STAY WITH ITFPC
TS ITFPC,1			;PC ON INTERRUPT TO MEXEC
TS TRPID,1			;IDENT OF PT OR PAGE CAUSING TRAP
TS TRPPTR,1			;STORAGE ADDRESS OR POINTER CAUSING TRAP

TS UAC,20			;USER AC'S (FROM BLOCK 1)
TS PAC,20			;PROCESS AC'S
TS PFL,1			;PROCESS FLAGS ***MUST STAY WITH PPC
TS PPC,1			;PROCESS PC
TS NSKED,1			;NO-SCHEDULE WORD
TS RSKED,1			;NO-SCHEDULE TRAP

NTSK==:102			;SIZE OF PAGER TRAP STACK
TS TRAPSK,NTSK			;STACK USED DURING PAGER TRAPS
TS TRAPSW,1			;TRAP STATUS WORD
TS TRAPAP,1			;PAGE TRAP SAVED P
TS TRAPC,1			;PAGER TRAP RECURSION COUNT
TS UTRPCT,1			;COUNT OF PAGER TRAPS FOR THIS PROCESS
TS USWPCT,1			;COUNT OF SWPINW CALLS FOR THIS PROCESS
TS PTTIM,1			;TIME SPENT IN PAGER TRAPS
TS LSTXGR,1			;TIME (FKRT) OF LAST XGC
TS FKTLST,1			;LOST TIME WHILE CLOCK TURNED OFF
TS CRSKED,1			;IN CRITICAL SECTION IF NON-0
TS SKDFL,1			;SCHEDULER TEMP (RETURN FLAGS)
TS SKDPC,1			;SCHEDULER TEMP (RETURN) **MUST STAY WITH SKDFL
TS MONFL,1			;TEMP MONITOR PC AND FLAGS
TS MONPC,1			;MUST STAY TOGETHER ****
TS PSIPT,1			;PSI STORAGE LIST POINTER
TS PIOLDS,1			;FKSTAT PRIOR TO PSI IF WAS WAITING
TS LEVCHN,1			;LEVEL TABLE,,CHANNEL TABLE  ADDRESSES
TS PSISYS,1			;NON-0 IF PSI SYSTEM OFF
TS MONCHN,1			;CHANNELS RESERVED BY MONITOR

NPIPDL==:35			;SIZE OF PSI STACK
				;*** NOTE, THIS VALUE SHOULD BE
				;GREATER THAN THE VALUE NUFKS.
				;HOW MUCH GREATER IS VARIABLE, BUT
				;IT SHOULD BE AT LEAST 2 MORE.***
TS PIPDB,NPIPDL			;PSI ROUTINES STACK
TS PSICHA,NTERMI/6		;CHANNEL ASSIGNED TO TERM CODE
TS PIMSK,1			;PSI REQUEST WORD BEING PASSED TO PSI SERVICE
TS PSIBW,1			;BREAK WAITING WORD
TS FORCTC,1			;CHANNEL WHICH CAUSED FORCED FORK TERMINATION
TS PSICHM,1			;CHANNEL ENABLED WORD
TS SUPCHN,1			;CHANNELS RESERVED BY SUPERIOR

   				;LEAVE ROOM FOR HARDWARE STORAGE

;WARNING: THESE VARIABLES MUST BEGIN AT OFFSET 420. THE CURRENT
;DEFINITIONS THAT PRECEDE THIS WARNING CREATE 420 WORDS. NO WORDS
;MAY BE ADDED WITHOUT MOVING AN EQUAL NUMBER BEYOND OFFSET 600

IFN TSBLOC-420,<PRINTX ?PSB STORAGE NOT ALIGNED TO HDWR BOUNDARY>

;CELLS IN USER PROCESS TABLE (UPT)

UPTPPM=:HWPTA+400		;PER-PROCESS MAP ORIGIN
NPPMPG==40			;NUMBER OF ENTRIES (2/WORD) IN PP MAP
UPTTPI=:HWPTA+420		;TRAP INSTRUCTIONS
KLLUUO=:HWPTA+420		;LUUO TRAP ADDRESS
UPTOVI=:HWPTA+421		;OVERFLOW TRAP INSTRUCTION
KIMUFL=:HWPTA+424		;MUUO FLAGS
KIMUPC=:HWPTA+425		;MUUO PC
KIMUEF=:HWPTA+426		;EFFECTIVE ADDRESS
KIMPCW=:HWPTA+427		;PROCESS CONTEXT WORD
UPTPCW=:HWPTA+427		;PROCESS CONTEXT WORD
UPTDSP=:HWPTA+430		;DISPATCH VECTOR-UUO NEW PC WORDS
USECTB=:HWPTA+540		;USER SECTION TABLE
UPTPFW=:HWPTA+500		;PAGE FAIL WORD
TRAPS0==:UPTPFW			;PAGE FAIL WORD USED DIRECTLY
UPTPFL=:HWPTA+501		;PAGE FAIL OLD FLAGS WORD
UPTPFO=:HWPTA+502		;PAGE FAIL OLD PC WORD
UPTPFN=:HWPTA+503		;PAGE FAIL NEW PC WORD

FFL==:KIMUFL			;MENTR-MRETN PC
FPC==:KIMUPC			;MENTR-MRETN PC

TRAPFL==:UPTPFL
TRAPPC==:UPTPFO
TSBLOC=600
TS PIAC,20			;SAVED USER AC'S DURING BREAK START
TS PSIBIP,1			;BREAK IN PROGRESS WORD (LEVELS)
TS ENSKR,4			;SCHEDULER TEMP (RETURN)
TS ADRBRK,1			;ADDRESS BREAK INFO
TS ADRBK1,1			;ADDRESS OF INSTRUCTION CAUSING ADDR BREAK
TS MONBK,1			;INTERRUPT TO MONITOR IF NON-0
TS LSTIPC,1			;PC OF LAST JSP T2,ITRAP1
TS FRKNOP,1			;CONTAINS A NOP OR MDDT BREAKPOINT
TS PIFL,1			;SAVED FLAGS MUST STAY WITH PIPC *****
TS PIPC,3			;SAVED PC DURING INITIAL PI SERVICE
				; CALLED WITH XPCW
TS FKTOFF,1			;TIME AT WHICH CPU CLOCK TURNED OFF
TS NWSCE,1			;NUMBER OF ENTRIES IN WS CACHE
TS LSTXGT,1			;TIME (TODCLK) OF LAST XGC
TS SYMPAG,1			;PAGE USED BY MDDT FOR MAPPING SYMBOLS
TS UTRSW,1			;SAVED TRAPSW FOR USER
TS UMUUOW,2			;SAVE MUUO WORD FOR USER
TS KIMUU1,2			;LAST UUO WORD FROM USER
TS PSLEVT,1			;ADDRESS OF USER'S LEVEL TABLE
TS PSCHNT,1			;ADDESS OF USER'S CHANNEL TABLE
TS PSBITS,1			;MISCELLANEOUS PER PROCESS BITS
TS TRPDSP,1                     ;DISPATCH FOR MON ILLEG MEM REF
TS HPSWRN,1			;TIME TO FLAG EXCESSIVE HP SCHEDULING
; Variables in psb associated with DIRECTORIES

TS(DRLOC,1)			;LOCATION IN DIR DURING SEARCHES
TS(DRINP,1)			;POINTER TO INPUT NAME DURING LOOKUP
TS(DRINL,1)			;LENGTH OF INPUT STRING
TS(DRMSK,1)			;MASK OF 0 BITS IN LAST WORD OF STRING
TS(DRSCN,1)			;POINTER TO FDB LINK DURING LOOKUPS
TS(DROFN,1)			;RH = OFN OF LAST DIRECTORY MAPPED
				;LH = LAST FDB CHECKED
TS(DRMAP,1)			;ADDRESS OF MAP PAGE WHEN SEC2
TS (DIRCAD,1)			;CACHE ADDRESS OF LAST MAPDIR
TS(IDXMAP,1)			;ADDRESS OF IDX TABLE PAGE MAP WHEN EXTENDED ADDRESSING

TS(STRINF,1)			;FILE STRUCTURE INFORMATION
		; ** KEEP EVLNTH/EVADDR TOGETHER IN ORDER 
TS EVLNTH,1			;ENTRY VECTOR LENGTH
TS EVADDR,1			;ENTRY VECTOR ADDRESS
		; ** KEEP EVLNTH/EVADDR TOGETHER IN ORDER 
TS PATLEV,1			;PA1050 ENTRY VECTOR LENGTH
TS PATADR,1			;10/50 COMPATABILITY ENTRY VECTOR
		; ** KEEP PATLEV/PATADR TOGETHER IN ORDER
TS PATU40,1			;WHERE TO STORE C(40), SETUP AS UMOVEM 1,XX
TS PATUPC,1			;WHERE TO STORE PC, SETUP AS UMOVEM 1,YY

TS DMSLEV,1			;RMS (FORMERLY DMS) ENTRY VECTOR LENGTH
TS DMSADR,1			;RMS (FORMERLY DMS) ENTRY VECTOR
		; ** KEEP DMSLEV/DMSADR TOGETHER IN ORDER
TS DMSU40,1			;WHERE TO STORE C(40) ON DMS CALL
TS DMSUPC,1			;WHERE TO STORE PC OF DMS CALL

TS(CAPMSK,1)
TS(CAPENB,1)
TS(SNPPGS,1)			; PAGES LOCKED DOWN FOR SNOOPING
				; XWD  COUNT  ,,  PAGE # OF FIRST PAGE
TS(SNPLST,1)			; XWD FLAGS ,, LINK TO 1ST BP FOR FORK
TS(LSTERR,1)			; Last error number
TS (PDVS,1)			; Pointer to PDV block
NERRSV==:4			; NUMBER OF ERROR PARAMETERS
TS(ERRSAV,NERRSV)		; Block of error parameters

TS(PSBMAP,PSBMSZ)		;MAP FOR PROCESS AREA
PSBM0=:PSBMAP-PSSPS		;BEG OF PSBMAP RELATIVE TO VIRT P G 0
PPLOW==:<PSBMAP-PSBPGA>+<PSSPEA-PSSPSA>/PGSIZ ;LOWEST NON-SPECIAL PAGE IN PP AREA
PPHI==:<PPLOW+<UPTPGA-PSSPEA>/PGSIZ>-1	;HIGHEST NONSPECIAL PAGE

; STORAGE ASSOCIATED WITH JSYS TRAPS

TS JTBLK,1			; FKJTB+forkn for this fork
TS JTLCK,1			; Lock on jsys traps to monitor (this)
				; fork;  protects JTTRW and allows only
				; one jsys trap interrupt at a time to
				; this monitor
TS JTTRW,1			; Jsys Trap Trap Word
				; (set by interrupting fork)
				; Contains trapping instruction
TS JTTFK,1			; Forkn of trapping fork
TS JTMNW,1			; Jsys Traps Monitor fork Word
				;  B12-B17: monitor's PSI channel,
				; 	  77 means don't PSI this montior
				;  RH: forkn of mon interrupted (PSI'd)
TS PNSKDC,1			;NOSKED'S DONE BY DIAG AND OTHER
				; RESOURCE MONGERS
TS ARTHTR,1			;USER-SPECIFIED ARITHMETIC TRAP
TS CRTRGN,1			;FLAG TO INDICATE CODE NOW
				; IN CRITICAL REGION OF MONITOR.
				; INHIBITS REMOVAL FROM BALSET
TS STRWRD,1			;FLAGS,,# OF STRUCTURES MOUNTED BY FORK.
				; THIS NUMBER MAY NOT BE ACCURATE AS IT
				; IS NOT DECREMENTED WHEN A DRIVE IS
				; REMOVED FROM THE SYSTEM, AND THE FORK
				; HAS NOT DECREMENTED IT.  THE COUNT IS
				; USED AT KSELF TIME TO SEE IF IT IS
				; NECESSARY TO GO THRU EXTRA STRUCTURE
				; CODE.
TS FKXORA,1			;FORK IDXORA DURING CREATION OF STRUCTURE
TS LOKHI,1			;INDEX OF HIGHEST LOCK HELD AT THIS TIME
IFN JSSTAT, <			; JSYS TIMING CONDITIONAL
TS JSNUM			; JSYS BEING TIMED
TS JSTIM0			; FORK RUN TIME AT USER-MONITOR INTERFACE
>
IFG TSBLOC-1000,<
	PRINTX PSB STORAGE OVERFLOWS ONE PAGE>

TSBLOC=1000			;PUT WS CACHE AT START OF SECOND PAGE
WSCNCW==:200			;SIZE OF WS CACHE - MUST MATCH VALUES IN PAGEM
TS WSCSH,WSCNCW			;WORKING SET CACHE

NUPDL==:400			;SIZE OF MONITOR CALL STACK
UPDL=:PSBPGA+2*PGSIZ-NUPDL		;PUT UPDL AT TOP OF STACK PAGE
IFL <2*PGSIZ-NUPDL-TSBLOC>,<PRINTX ?PSB Variables and Stack Conflict>
	.ENDPS PSVAR
;SWAPPABLE PATCH AREA:


	SWAPCD			;PUT SWPF IN SWAP MONITOR CODE

SWPF::	XLIST
	REPEAT 100,<0>
	LIST




;THE FOLLOWING MUST BE THE FIRST RESIDENT CODE LOADED

	RESCD

;PARAMETER DEPENDENT DEVICE CODE

;DTE
	

DTSCNW::0			;HOLD CONO WORD FOR MASTER DTE
MSTRDT::0			;ID OF MASTER DTE
	IFG DTEN,<		;DTE STORAGE
PWRFLE::CALL DTEPWF		;TELL MASTER -11 OF POWER FAIL
PROFLG::1			;IF 0 DON'T GO INTO PRIMARY PROTOCOL
RS FEFLG,1			;USE 2ND PROTOCOL UNITL FURTHER NOTICE
RS FEDBSW,1			;FE DEBUG SWITCH
RS FEDBST,1			;FE DEBUG STATE, TOGGLED BY .DFDBG MSG
RSI SVDTRJ,<0,JRST SVDTAC>	;DOES A JSR TO HERE

QQ==0				;GENERATE INT VECTOR
DTETRP::REPEAT DTEN,<DTEINN \QQ	;DO ONE
		QQ==QQ+1>	;DO ALL DTE'
QQ==0				;NOW DO INTERRUPT CODE
REPEAT DTEN,<DTEPRO \QQ		;DO ONE
		QQ==QQ+1>	;AND DO ALL

QQ==0
CNDO::	REPEAT DTEN,<CONO DTE0+QQ,
			QQ==QQ+4> ;DO ALL DTE'S
QQ==0
DATO::	REPEAT DTEN,<DATAO DTE0+QQ, ;THE DATAO TABLE
			QQ==QQ+4> ;DO ALL DTE'S
DTESTK::IOWD DTESZ,DTESKP	;DTE LOCAL STACK
	>
   IFE DTEN,<			;IF NO DTE
PWRFLE::JFCL			;NO SPECIAL POWER FAIL CODE
   >

IFG SSATF,<			;#25 If we have SA-10 magtapes
SMTSCN::SSATSC			;#25 Set to sub-channel number that magtapes are on
>				;#25 .

	IFN SMFLG,<

;SM10

;THESE ARE CURRENTLY USED ONLY FOR TTY SERVICE FOR SINGLE/MULTI TTYS.
PROFLG::1			;PROTOCOL FLAG 0 DON'T ENTER PROMAIY PROTOCOL
RS FEFLG,1			;USE 2ND PROTOCOL UNTIL FURTHER NOTICE
	>

   IFE DCN,<			;IF NO DECNET SUPPORT
DEDMCB::
NSPSPC::
NSPQ::  BUG(NSPUDF)
NODINI::
NSPINI::RET			;NOTHING TO DO
.NTMAN::JRST UJSYS0		;UNDEFINED IF NO DECNET SUPPORT

	SWAPCD

.NODE::	MCENT			;MONITOR CONTEXT ENTRY
	UMOVE T1,1		;GET FUNCTION CODE FROM USER
	CAIL T1,0		;FUNCTION CODE WITHIN
	CAIL T1,NDTLEN		;VALID RANGE ?
	ITERR (ARGX02)		;NO, RETURN "INVALID FUNCTION" ERROR
	XCT NODTAB(T1)		;DISPATCH TO PROPER ROUTINE
	 ITERR ()		;FAILED, RETURN ERROR CODE
	MRETNG			;SUCCESS, DONE.

; TABLE OF NODE JSYS FUNCTIONS

NODTAB:	SKIPA			;(0) SET LOCAL NODE NAME
	CALL NDGLN		;(1) GET LOCAL NODE NAME
	SKIPA			;(2) SET LOCAL NODE NUMBER
	SKIPA			;(3) GET LOCAL NODE NUMBER
	SKIPA			;(4) SET LOOPBACK PORT
	SKIPA			;(5) CLEAR LOOPBACK PORT
	SKIPA			;(6) FIND LOOPBACK PORT
	SKIPA			;(7) SET NETWORK TOPOLOGY INFO
	CALL NDGNT		;(10) GET NETWORK TOPOLOGY INFO
	SKIPA			;(11) SET ITERRUPT CHANNEL FOR TOPOLOGY CHANGE
	SKIPA			;(12) CLEAR ITERRUPT CHANNEL FOR TOPOLOGY CHANGE
	SKIPA			;(13) GET NSP VERSION INFORMATION
	SKIPA			;(14) GET LINE INFORMATION
	CALL NDVFY		;(15) VERIFY NODE NAME

NDTLEN==.-NODTAB

;NDGLN - RETURN LOCAL NODE NAME

NDGLN:	UMOVE T2,2		;GET ADDRESS OF USER'S ARGUMENT BLOCK
	UMOVE T1,.NDNOD(T2)	;GET POINTER TO WHERE NODE NAME IS TO GO
	MOVEI T3,.NDNOD(T2)	;GET ADDRESS TO RETURN UPDATED POINTER
	HRROI T2,OURNAM-1	;GET POINTER TO SOURCE STRING
	CALL CPYTU1		;COPY STRING TO USER SPACE, RETURN POINTER
	RETSKP			;DONE, RETURN SUCCESS

;NDGNT - GET NETWORK TOPOPLOGY INFORMATION

NDGNT:	UMOVE T4,2		;GET ADDRESS OF USER'S ARGUMENT BLOCK
	MOVEI T1,1		;ONLY LOCAL NODE IS KNOWN
	XCTU [HRLM T1,.NDNND(T4)];YES, STORE COUNT OF ITEMS RETURNED
	MOVX T1,.NDNBS		;GET SIZE OF A NODE BLOCK
	UMOVEM T1,.NDCNT(T4)	;STORE IN USER ARG BLOCK
	MOVEI T1,.NDBK1+1(T4)	;SET UP ADDRESS OF POINTER
	UMOVEM T1,.NDBK1(T4)	;STORE ADDRESS OF FIRST NODE BLOCK
	MOVEI T3,.NDNBS(T1)	;ADD IN BLOCK SIZE
	HRLI T3,(<POINT 7,0>)	;FORM A STRING POINTER
	UMOVEM T3,.NDNAM(T1)	;STORE NAME POINTER
	XCTU [SETZM .NDSTA(T1)]	;SAY IS UP
	XCTU [SETZM .NDNXT(T1)]	;NOT CONNECTED TO ANYBODY
	DMOVE T1,OURNAM		;GET LOCAL NAME
	UMOVEM T1,(T3)		;STORE STRING
	UMOVEM T2,1(T3)		;STORE STRING
	RETSKP			;DONE, RETURN SUCCESS

; NDVFY - VERIFY NODE NAME IS IN MONITOR'S DATABASE OF KNOWN NODES

NDVFY:	UMOVE T2,2		;GET ADDRESS OF USER ARGUMENT BLOCK
	MOVX T1,ND%EXM		;SUCCESS, NODE IS KNOWN
	UMOVEM T1,.NDFLG(T2)	;STORE RESULT IN USER SPACE
	RETSKP			;DONE, RETURN SUCCESS

NAMINI::RET			;NO NAME SETUP

BLKASG::EXP 0			;NO DECNET SPACE USED
OURNAM::ASCIZ/LOCAL/		;#437 DEFAULT NAME

	RESCD

DCOPNM==:0			;DEFAULT OF 0 IF NO DECNET

;ROUTINE TO INITIALIZE NODE NAME TO NULL FOR NON-DECNET SYSTEM

IFG DCN,<
NAMINI::SETZM OURNAM		;NO NODE NAME
	SETZM OURCNT		;NO CHARACTERS IN NAME
	RET
>
   >
; TCP

IFG TCPN,<
FKABCP::POINT ABTCBS,TCPABC	; Pointer to base of TCP abort counters
>; End IFG TCPN

   IFE MTAN,<			;IF NO MAGTAPES (YOU LUCKY DEVIL)
RELMT::RET>			;DUMMY ROUTINE

   IFE ATS,<			;IF NO APPLICATIONS TERMINAL SERVICE
ATSINI::HRLOI T1,377777		;SET ATS TIMER NOT TO GO REQUIRE WAKEUP
	MOVEM T1,ATSTYM
DOATSQ::RET			;FOR NSPTSK - DON'T DO ANYTHING
CKATSQ::			;FOR NSPTST - DON'T WAKEUP
CHKATS::RETSKP			;DUMMY CHKATS - INDICATES NOT AN ATS JFN
.SINM::	JRST UJSYS0		;UNDEFINED IF NO ATS SUPPORT
.SOUTM::JRST UJSYS0		;UNDEFINED IF NO ATS SUPPORT
>

;BUFFER ADDRESSES

LPTRLP::
	XX==0
   REPEAT LPTN,<
	-NLPBF,,LPTBUF+XX
	XX=XX+2*NLPBF>

;TTYSRV

IFL NTTBL1-NTTBL,<PRINTX ?NTTBL IS GREATER THAN NTTBL1. THAT IS AN ERROR.>

IBFRC::	EXP <^D20>B7+<NTTBL>B11+<NTTBL>B15+<NTTBL*NCHBF-1>B25+<NTTBL*NCHBF-2>B35
IBFRC1:: EXP <^D100>B7+<NTTBL>B11+<NTTBL1>B15+<NTTBL*NCHBF-1>B25+<NTTBL1*NCHBF-2>B35
OVRBCT==:1			;NUMBER OF EXTRA BUFFERS FOR HIGH SPEED LINES
;GLOBAL CONTROL FLAGS

DRUMP::	DRMN			;1 = SWAP ON DRUM, 0 = SWAP ON DSK,
				;-1 = DO NOT SWAP
NSWPGS::SWDST			;NUMBER OF SWAP PAGES TO ALLOCATE
RSI PRELDF,0			;NO PRELOADING IF 0
SWRSAF::1			;REASSIGN SWAP ADDRESSES IF .G. 0
POSPGF::1			;POST PURGE IF .G. 0

SMLKF::	0			; .G 0 MEANS LOCK SWPMON IN CORE,
				; .E 0 MEANS DEMAND PAGE SWPMON
HIDSYF::HIDSYM			;HIDE SYMBOLS IF NON-ZERO
CTYTYP::TYPCTY			;LINE TYPE FOR CTY
RS KLILNO,1			;KLINIK LINE NUMBER
PSNAM::	'PS    '			;NAME OF THE PUBLIC STRUCTURE
LPSNAM::0				;LOGICAN NAME IF OTHER THAN PS

;DISK QUOTA ENFORCEMENT FLAG AND VALUE

NDG	USRSCF,-1		;INITIAL CONTENTS OF USRSPC (NON-0 TO PREVENT
				; WRITE OPENF IF USER OVER ALLOCATION)

USRSPC:: USRSCF			;TRUE = DON'T ALLOW WRITE OPEN IF USER EXCEEDS
				;DIRECTORY DISK ALLOCATION

SYSSPC:: SYSSCF			;DON'T ALLOW WRITE OPEN IF SYSTEM FREE PAGE
				;COUNT IS .L. C(SYSSPC)

RS MADBRK,1			;MONITOR ADDRESS BREAK WORD
RS APRSER,1			;APR SERIAL NUMBER
EXADFL::0			;EXTENDED ADDRESSING FLAG 1=MODEL B MACHINE
EXADF1::0			;MUUO/PAGE FAIL FLAG 1=MODEL B MACHINE
SMFLAG::SMFLG			;VALUE OF SMFLG (0=NON SM10 1=SM10)

EXADDR::0			;DIRECTORY FLAG 0=SEC 0 740000
				;+>= SEC 2 MAX SIZE 30 PGS
				;- = SEC 2 MAX SIZE 256. PGS

SYSTAD::0			;SYSTEM LOAD DATE/TIME
SWCEND::
IFE BUGSTF<NRCODL>		;END OF SWAPPABLE MONITOR
IFN BUGSTF,<BGPTRL>		;END OF SWAPPABLE MONITOR+BUGSTRINGS+BUGPOINTERS


;POINTER TO BUGPOINTER TABLE

NBUGP==:BGPTRZ-BGPTR+1
BUGTP::	
IFE BUGSTF,<0>			;NO BUGPOINTERS IF BUGSTF=0
IFN BUGSTF,<-NBUGP,,BGPTR>	;-LEN,,ADDR OF BGPTR PSECT
;SYSTEM LOGICAL NAME INITIAL VALUES

	.PSECT RSDAT
;WHEN SIX SPACES PRECEDE THE COLON, SLNINI INSERTS THE NAME OF THE PRIMARY
;STRUCTURE INTO THAT LOCATION

SYNMTB::XWD [ASCIZ/SYS/],[ASCIZ/      :<SUBSYS>/]
	XWD [ASCIZ/HLP/],[ASCIZ/SYS:/]
	XWD [ASCIZ/SYSTEM/],[ASCIZ/      :<NEW-SYSTEM>,      :<SYSTEM>/]
	XWD [ASCIZ/EDITOR/],[ASCIZ/SYS:EDIT.EXE/]
	XWD [ASCIZ/ACCOUNT/],[ASCIZ/      :<ACCOUNTS>/]
	XWD [ASCIZ/PS/],[ASCIZ/      :/]

SYNMCT==:.-SYNMTB

ERRPT::	ASCIZ /      :<SYSTEM>ERROR.REPORT/
LCKTAB:: 0				;MUST BE HERE
	ALLOKS
;TERMINAL TYPE TABLES
; B0, B1, B2, B3, B4-7, B8-11, B12-15, B16-19
; FF,TAB, LC, --, CRPD, LFPAD, TABPAD, FF PAD

;NORMAL MODE IS LOWERCASE BIT ON, MOST DEVICES WILL PRINT LC CHAR
;AS UC.  FF AND TAB PADDING IS SPECIFIED FOR TTYS IN CASE
;FF OR TAB BIT TURNED ON MANUALLY

DEFINE TY(BB,CRPD,LFPD,TBPD,FFPD,WID,LEN)<
	^D<<BB>B2+<CRPD>B7+<LFPD>B11+<TBPD>B15+<FFPD>B19+<WID>B27+<LEN>B35>
>
	RESCD


TTYPE0::TY(0,0,0,2,12,72,66)	; 0 - MOD 33
	TY(6,0,0,2,12,72,66)	; 1 - MOD 35
	TY(1,0,0,2,12,72,66)	; 2 - MOD 37
	TY(1,10,0,0,0,80,66)	; 3 - TI
	TY(1,15,15,0,0,79,66)	;#156 4 - Line processor (for NLS)
	TY(1,0,0,0,0,80,24)	;#156 5 - Datamedia (for SRI)
	TY(5,0,12,0,0,79,24)	;#156 6 - HP 2640A
	TY(7,0,0,0,0,0,0)	;#156 7 - NVT (historical value)
	TY(1,6,6,2,12,72,66)	; 8 - DEFAULT: MAX PADDING, ETC.
	TY(7,0,0,0,0,0,0)	; 9 - 'IDEAL' TERMINAL, NO FILL INF SIZ
	TY(2,0,4,0,12,72,20)	; 10 - VT05
	TY(2,0,0,0,0,80,12)	; 11 - VT50
	TY(0,6,6,2,12,80,66)	; 12 - LA30
	TY(1,0,0,0,0,80,30)	; 13 - GT40 (WITH SMALL CHAR STRAPPING)
	TY(1,0,0,0,0,132,66)	; 14 - ;LA36. SAME AS VT50 BUT WIDER
	TY(3,0,0,0,0,80,24)	; 15 - VT52
	TY(3,0,0,0,0,80,24)	; 16 - VT100
	TY(3,0,0,0,0,132,66)	; 17 - LA38
	TY(7,0,0,0,0,132,66)	; 18 - LA120
	TY(1,0,0,2,12,130,0)	;#233 19 - MOD 43
	TY(1,0,0,0,0,80,24)	;#233 20 - WTEC
	TY(1,0,0,0,0,80,24)	;#233 21 - Hazeltine 1500
	TY(3,0,0,0,0,80,24)	;#233 22 - Teleray 1061
	TY(1,0,0,0,0,78,34)	;#233 23 - Tektronix 4025
	TY(5,0,0,0,1,80,40)	;#233 24 - Annarbor
	TY(3,0,0,0,0,80,24)	;#233 25 - Heath H-19
	TY(1,0,0,0,0,78,38)	;#233 26 - IMLAC
	TY(7,0,0,0,0,80,24)	;#233 27 - DM1520
	TY(3,0,0,0,0,80,24)	;#233 28 - Fox 1100
	TY(3,0,0,0,0,80,24)	;#233 29 - Concept 100
	TY(1,0,0,0,0,80,24)	;#341 30 - SOROC
	TY(1,0,0,0,0,80,24)	;#341 31 - TELEVIDEO-950
	TY(7,0,0,0,0,80,24)	;#357 32 - DM3025
	0			; 33 - Reserved for Customers
	0			; 34 -     "     "     "
	TY(3,0,0,0,0,80,24)	; 35 - VT125
	TY(3,0,0,0,0,80,24)	; 36 - VK100

MXDECT==:.-TTYPE0		; Max DEC TTY type index
	TY(1,2,6,0,0,80,66)	; TI733
	TY(1,0,4,0,0,79,24)	; Scopes (4023 etc.)
	TY(1,0,0,0,0,80,66)	; TI743/745
	TY(1,0,0,0,0,79,23)	; HP
	TY(7,0,0,0,0,79,34)	; 4024
	TY(7,0,0,0,0,79,34)	; 4025
	TY(1,16,0,0,16,80,66)	; Scope data, Inc.
	TY(3,0,0,0,0,80,24)	; Concept 100
	TY(3,0,0,0,0,80,24)	;Teleray 1061
	TY(3,0,0,0,0,80,64)	; BBN Bitgraph
NTTYPS==:.-TTYPE0
NLTTYP==:NTTYPS-MXDECT		; # of local TTY types
LTTYPS::SIXBIT /TI733/
	SIXBIT /4023/
	SIXBIT /TI743/
	SIXBIT /HP/
	SIXBIT /4024/
	SIXBIT /4025/
	SIXBIT /SCPDAT/
	SIXBIT /C100/
	SIXBIT /T1061/
	SIXBIT /BITGRF/
;SECOND PARALLEL TYPE INFORMATION TABLE

DEFSTR DSPTB,TTYPE1,35,18	;ADDRESS OF DISPLAY CONTROL TABLE

;BIT 0 OF TTYPE1 INDICATES WHETHER TERMINAL TYPE AUTOMATICALLY
;ENABLES XON AND XOFF PROCESSING.


DEFINE TY1(DPTAB)<
	DPTAB
>

TTYPE1::
   REPEAT ^D4,<			;#156 Types 0-3 are not displays
	TY1(0)
>
	Ty1(0)			;#156 4 - Line Processor
	Ty1(DMTB)		;#156 5 - Datamedia
	Ty1(Hptb)		;#156 6 - HP 2640a
	Ty1(0)			;#156 7 - NVT (historical value)
	Ty1(0)			;#156 8 - Reserved for customer
	Ty1(0)			;#156 9 - Reserved for customer
	TY1(VT05TB)		; 10 - VT05
	TY1(VT50TB)		; 11 - VT50
	TY1(0)			; 12 - LA30
	TY1(0)			; 13 - GT40
	TY1(0)			; 14 - LA36
	TY1 (VT52TB)		; 15 - VT52
	TY1 (VT100T)		; 16 - VT100
	TY1 (0)			; 17 - LA38
	TY1 (0)			; 18 - LA120
	Ty1(0)			;#233 19 - Model 43
	Ty1(WtecTb)		;#233 20 - WTec
	Ty1(Hazltb)		;#233 21 - Hazeltine 1500
	Ty1(Vt50tb)		;#233 22 - Teleray 1061
	TY1(Tektb)		;#233 23 - Tektronix 4025
	TY1(Anntb)		;#233 24 - Ann Arbor
	TY1(VT50TB)		;#233 25 - Heath H-19
	TY1(0)			;#233 26 - ImLac
	TY1(DM15tb)		;#233 27 - DM1520
	TY1(Foxtb)		;#233 28 - Fox 1100
	TY1(C100Tb)		;#233 29 - Concept 100
	TY1(Teletb)		;#233 30 - Soroc
	TY1(Teletb)		;#233 31 - TeleVideo-950
	TY1(DM25tb)		;#233 32 - DM3025
	TY1(0)			;#233 33
	TY1(0)			;#233 34
	TY1(VT125T)		; 35 - VT125
	TY1(VK100T)		; 36 - VK100 - GIGI
	TY1(0)			; 37 - TI733
	TY1(SCOPTB)		; 38 - Scope (4023)
	TY1(0)			; 39 - TI743/745
	TY1(VT52TB)		; 40 - HP's are same as VT52's
	TY1(SCOPTB)		; 41 - 4024 like 4023
	TY1(SCOPTB)		; 42 - Same for 4025
	TY1(0)			; 43 - Scope data isn't a scope...
	TY1(C100TB)		; 44 - CONCEPT 100
	TY1(T1061T)		; 45 - Teleray 1061
	TY1(BITGTB)		; 46 - BBN Bitgraph
IFN <.-TTYPE1>-NTTYPS,<PRINTX %%TERM TYPE TABLES OF DIFFERENT LENGTHS>
;CURSOR CONTROL TABLES.  TABLE FOR EACH TERMINAL TYPE, INDEXED 
;BY FUNCTION.

.STP==:377			;STOP CODE

;VT05 TABLE AND FUNCTION INDEX DEFINITIONS

VT05TB::
	PHASE 0
.CURUP::!Z [BYTE (8)32,0,0,0,0,.STP]
.CURDN::!Z [BYTE (8)13,0,0,0,0,.STP]
.CURBK::!BYTE (8).CHBSP,.STP
.CURFW::!BYTE (8)30,.STP
.CURHM::!Z [BYTE (8)35,0,0,0,0,.STP]
.CURES::!Z [BYTE (8)37,0,0,0,0,.STP]
.CUREL::!Z [BYTE (8)36,0,0,0,0,.STP]
	DEPHASE

AnnTb::				;#423/#233 Ann Arbor table
VK100T::				; VK100 TABLE
VT125T::				; VT125 TABLE
VT100T::				; VT100 TABLE
	BYTE (8).CHESC,"[","A",.STP	;UP
	BYTE(8).CHESC,"[","B",.STP	;DOWN
	BYTE(8).CHESC,"[","D",.STP	;BACK
	BYTE(8).CHESC,"[","C",.STP	;FORWARD
	BYTE(8).CHESC,"[","H",.STP	;HOME
	BYTE(8).CHESC,"[","J",.STP	;ERASE TO END OF SCREEN
	BYTE(8).CHESC,"[","K",.STP	;ERASE TO END OF LINE

;VT50 TABLE - USES ESCAPE SEQUENCES
HPtb::				;#156 HP2640a
BITGTB::
VT52TB::
VT50TB::BYTE (8).CHESC,"A",.STP	;CURSOR UP
	Z [BYTE (8).CHLFD,0,0,0,0,.STP] ;CURSOR DOWN
	BYTE (8).CHBSP,.STP	;CURSOR BACK
	BYTE (8).CHESC,"C",.STP	;CURSOR FORWARD
	BYTE (8).CHESC,"H",.STP	;CURSOR HOME
	BYTE (8).CHESC,"J",.STP	;ERASE SCREEN
	BYTE (8).CHESC,"K",.STP	;ERASE LINE

; 4023 (SCOPE type)
SCOPTB::BYTE (8).STP		; Cursor up (none)
	BYTE (8).CHLFD,.STP	; Cursor down
	BYTE (8).CHBSP," ",.CHBSP,.STP ; Cursor back (with erase)
	BYTE (8)" ",.STP	; Cursor forward
	Z [BYTE (8)^D28,^D32,^D32,0,0,.STP] ; Cursor HOME (position 0,0)
	BYTE (8).STP		; No erase end of screen on 4023
	BYTE (8).STP		; Erase line (NO FUNCTION)

;Concept 100
C100TB::BYTE (8).CHESC,";",.STP	;CURSOR UP
	BYTE (8).CHESC,"<",.STP	;CURSOR DOWN
	BYTE (8).CHESC,">",.STP	;CURSOR BACK
	BYTE (8).CHESC,"=",.STP	;CURSOR FORWARD
	BYTE (8).CHESC,"?",.STP	;CURSOR HOME
	BYTE (8).CHESC,3,.STP	;ERASE SCREEN
	BYTE (8).CHESC,^D19,.STP;ERASE LINE

;Teleray 1061
T1061T::BYTE (8).CHESC,"A",.STP	;CURSOR UP
	BYTE (8).CHESC,"B",.STP	;CURSOR DOWN
	BYTE (8).CHESC,"D",.STP	;CURSOR BACK
	BYTE (8).CHESC,"C",.STP	;CURSOR FORWARD
	BYTE (8).CHESC,"H",.STP	;CURSOR HOME
	BYTE (8).CHESC,"J",.STP	;ERASE SCREEN
	BYTE (8).CHESC,"K",.STP	;ERASE LINE

;#357 DM3025
DM25TB::BYTE (8).CHESC,"A",.STP	;CURSOR UP
	Z [BYTE (8).CHLFD,0,0,0,0,.STP] ;CURSOR DOWN
	BYTE (8).CHBSP,.STP	;CURSOR BACK
	BYTE (8).CHESC,"C",.STP	;CURSOR FORWARD
	BYTE (8).CHESC,"H",.STP	;CURSOR HOME
	BYTE (8).CHESC,"K",.STP	;#412 Erase Screen (Actually LINE also)
	BYTE (8).CHESC,"K",.STP	;ERASE LINE

DMTB::	BYTE (8)32,.STP		;#156 Datamedia screen controls
	BYTE (8)12,.STP		;#156 .
	BYTE (8)10,.STP		;#156 .
	BYTE (8)34,.STP		;#156 .
	BYTE (8)2,.STP		;#156 .
	BYTE (8)27,.STP		;#156 .
	BYTE (8)20,32,20,.STP	;#156 .
	
;#233 DM1520 - uses different funny control chars
DM15TB::BYTE (8)037,.STP	;#233 up
	BYTE (8)012,.STP	;#233 down
	BYTE (8)010,.STP	;#233 left
	BYTE (8)034,.STP	;#233 right
	BYTE (8)031,.STP	;#233 home
	BYTE (8)013,.STP	;#233 erase to end-of-screen
	BYTE (8)035,.STP	;#233 erase to end-of-line

;#233 Fox 1100
FOXTB::	BYTE (8).CHESC,"A",.STP	;#233 up
	Z [BYTE (8).CHLFD,0,0,0,0,.STP] ;#233 down
	BYTE (8).CHBSP,.STP	;#233 left
	BYTE (8).CHESC,"C",.STP	;#233 right
	BYTE (8).CHESC,"H",.STP	;#233 home
	BYTE (8).CHESC,"J",.STP	;#233 erase to end-of-screen
	BYTE (8).CHESC,"I",.STP	;#233 erase to end-of-line

;#233 Hazeltine 1500
HAZLTB::BYTE (8)176,014,.STP	;#233 up
	BYTE (8)176,013,.STP	;#233 down
	BYTE (8).CHBSP,.STP	;#233 left
	BYTE (8)020,.STP	;#233 right
	Z [BYTE (8)176,022,0,0,0,0,.STP] ;#233 home
	Z [BYTE (8)176,027,0,0,0,0,.STP] ;#233 erase to end-of-screen
	BYTE (8)176,017,.STP	;#233 erase to end-of-line

;#233 Tektronix 4025
TEKTB::	Z [BYTE (8)"`","U","P","1",015,.STP]	;#375 up
	Z [BYTE (8)"`","D","O","W","1",015,.STP]	;#375 down
	Z [BYTE (8)"`","L","E","F","1",015,.STP]	;#375 left
	Z [BYTE (8)"`","R","I","G","1",015,.STP]	;#375 right
	Z [BYTE (8)"`","U","P","5","0",015,.STP]	;#375 home
	Z [BYTE (8)"`","D","C","H","9","9",015,.STP]	;#375 erase to end-of-screen
	Z [BYTE (8)"`","D","L","I","5","0",015,.STP]	;#375 erase to end-of-line

;#233 Winning TEC
WTECTB::BYTE (8)030,.STP	;#233 up
	BYTE (8)021,.STP	;#233 down
	BYTE (8)010,.STP	;#233 left
	BYTE (8)027,.STP	;#233 right
	BYTE (8)011,.STP	;#233 home
	BYTE (8)023,.STP	;#233 erase to end-of-screen
	BYTE (8)003,.STP	;#233 erase to end-of-line

;#341 SOROC & TELEVIDEO-950
TELETB::BYTE (8).CHVTB,.STP	;#341 up
	BYTE (8).CHLFD,.STP	;#341 down
	BYTE (8).CHBSP,.STP	;#341 left
	BYTE (8).CHFFD,.STP	;#341 right
	BYTE (8)036,.STP	;#341 home
	BYTE (8).CHESC,"Y",.STP	;#341 erase to end-of-screen
	BYTE (8).CHESC,"T",.STP	;#341 erase to-end-of-line

	SWAPCD
; NAME OF FILE INTO WHICH ACCOUNTING INFO IS WRITTEN

USGFIL::ASCIZ /ACCOUNT:SYSTEM-DATA.BIN/
CKPFIL::ASCIZ /ACCOUNT:CHECKPOINT.BIN.1/

;ACCOUNTING SYSTEM DATA-BASE

NR USGJFN,1			;JFN OF USGFIL
NR USGEOF,1			;END OF FILE FOR USAGE FILE
NR USGBEG,1			;HEAD OF QUEUE FOR JOB 0
NR USGEND,1			;TAIL OF QUEUE FOR JOB 0
NR USQCNT,1			;COUNT OF ITEMS ON USAGE QUEUE
NR CKPJFN,1			;JFN OF CKPFIL
NR CKPINV,1			;CHECKPOINT INTERVAL (SETTABLE)
NR CKPTIM,1			;CHECKPOINT TIMER CELL
NR CKPDTL,1			;DATE/TIME OF LAST CHECKPOINT
NR USGMUP,1			; MONITOR UPTIME SINCE LAST RELOAD
RS USGLOK,1			;LOCK ON USAGE FILE
NR ASCTIM,1			;Next automatic accounting shift change time
				; relative to TODCLK
NR ASCPTR,1			;AOBJN pointer to accounting shift
				;change times block
Nr Ascptx,1			;#211 Current account shift change index
NR ASCFLG,1			;Flag -1 if accounting shift change, 0
				;if checkpoint
NR ASCLOK,1			;Lock on ASCPTR
	RESCD

;PHYSIO STORAGE

IFG PHYIOF,<

;TABLE OF KNOWN CHANNEL DISPATCH ROUTINES

PHYCHT::
	IFG RH20F,<	XWD .CTRH2,RH2DSP>
	IFG RH11F,<	XWD .CTRH2,RH2DSP>
	IFG SSAN,<	XWD .CTSSA,SSADSP> ;#25 SA10
PHYCHL==:PHYCHT-.		;NEGATIVE LENGTH OF TABLE

;TABLE OF KNOWN UNIT DISPATCH ROUTINES

PHYUNT::
	IFG RS04F,<	XWD .UTRS4,RS4DSP>
	IFG RP04F,<	XWD .UTRP4,RP4DSP>
	IFG TM02F,<	XWD .UTTM2,TM2DSP>
	IFG DX20AF,<	XWD .UTDXA,DXADSP>
	IFG DX20BF,<	XWD .UTDXB,DXBDSP>
	IFG SSADF,<	XWD .UTCC1,CC1DSP> ;#25 SA10 disks
	IFG SSATF,<	XWD .UTCT1,SATDSP> ;#26 SA10 tapes
	IFG TM78F,<	XWD .UTTM7,TM8DSP>
PHYUNL==:PHYUNT-.		;NEGATIVE LENGTH OF TABLE

RS CHNTAB,CHNN		;TABLE FOR CDB POINTERS
RS MAXCHN		;HIGHEST NUMBERED CHANNEL IN USE
RS ZSEND		;CURRENT END OF PAGE ZERO STORAGE
RS PHYSEC		;PHYSIO MINUTE COUNTER

;RESIDENT STORAGE FOR DIAG

RS(DIAGLK)		;LOCK ON DIAG
RS(DIAGFK)		;TEMP PAGE,,FORK WHO HAS DIAG LOCK
RS DIAGAR,1		;AR/ARX INTERCEPT LOCATION
RS DIAGCW		;ADDRESS OF CCW LIST
RS DIAGWT		;FLAG SET IF ANOTHER FORK WAITING TO DIAG

;UDSKIO STORAGE

RS UIOLST		;FREE LIST FOR UDSKIO IORBS
RS UDIORB,<NUIORB*UIOLEN> ;POOL FOR UDSKIO IORBS

;SAVE AREAS AND PDLS

RS PHYACS,20		;INTERRUPT SAVE ACS
RS PHYPDL,LPHYPD	;PRIVATE PDL FOR REQUESTS
RS PHYSVP		;CALLERS PDL
RS PHYIPD,LPHIPD	;INTERRUPT PDL


;STORAGE ASSOCIATED WITH THE HOME BLOCK CHECKING LOGIC

RS CHBUDB,1		;UDB BEING CHECKED
RS CHBODT,1		;OVERDUE TIME FOR CURRENT REQUEST
RS CHBLUC,1		;UDB OF LAST UNIT CHECKED - TO PREVENT LOCKOUT
RS CHBIRB,IRBLEN	;IORB
RS CHBCCL,2		;CHANNEL COMMAND LIST
RS CHBHB1,176		;BUFFER FOR FIRST PART OF HOME BLOCK
RS CHBHB2,2		;LAST 2 WORDS OF HOME BLOCK
   >			;END IFG PHYIOF

IFN SSADF,<			;#25 if disks exist on SA10
DPKSPT==:^D128			;#25 # HW sectors per track
DPKBPT==^D13440			;#25 # bytes possible on a track
NBYTES==<NWREC*^D36>/^D8	;#25 number of bytes in a record
DPKSEC::0			;#25 record 0: set sector to 0
	REPEAT NRECS,<		;#25 .
	EXP ^D<DPKSPT*<237+<<135+NBYTES>*<.-DPKSEC-1>>>/DPKBPT>> ;#25 .
DPKSPR==:^D<DPKSPT*<135+NBYTES>/DPKBPT> ;#25 # sectors per record
>				;#25 end of IFN SSADF

IFG SSAN,<			;#25 .

SAXMSA::EXP SSAN-1		;#25 maximum SA10
SAXMSC::EXP SSAN*SSANSC-1	;#25 maximum sub channel

RS SSASV			;#25 PI5 rtn calls this location

IFE SSADF,<CC1DSP==:0>		;#25 if no SA10 disks
IFE SSATF,<SATDSP==:0>		;#25 if no SA10 tapes

DEFINE SSADEF(..DEF)<		;#25 .
 DEFINE SSADF0(..SA,..SC)<	;#25 .
	..DEF			;#25 .
 >				;#25 .
 DEFINE SSADF1(..SA,..EX)<	;#25 .
  ..SC==-1			;#25 .
  REPEAT SSANSC,<		;#25 .
   SSADF0(..SA,\<..SC==..SC+1>)	;#25 .
  >				;#25 .
 >				;#25 .
 ..SA==-1			;#25 .
 REPEAT SSAN,<			;#25 .
  SSADF1(\<..SA==..SA+1>)	;#25 .
 >				;#25 .
 PURGE ..SA,..SC		;#25 .
>				;#25 .
			
SAXBAS::	;#25 addresses of base registers for each subchannel

	SSADEF <EXP SA'..SA'BAS+<..SC*4>> ;#25 .
		
SAXCNI::	;#25 CONI's for each subchannel

	SSADEF <CONI SA'..SA,T1> ;#25 .

SAXCNO::	;#25  CONO's for each subchannel

 	SSADEF <CONO SA'..SA,0(T1)> ;#25 .

SAXDTI::	;#25 DATAI for each subchannel

	SSADEF <DATAI SA'..SA,0(T1)> ;#25 .

      >				;#25 end IFG SSAN
IFN RP04F,<


;RESIDENT TABLES OF SIZE DATA FOR DISKS BASED ON TYPE.  DSKSIZ IS
;PARALLEL TO DSKUTP (DEFINED IN PHYSIO), WHICH CONTAINS CODES FOR THE
;KNOWN DISK TYPES.  WHEN AN ENTRY IS ADDED TO DSKUTP, A CORRESPONDING
;ENTRY MUST BE ADDED TO DSKSIZ TO POINT TO THE CORRECT SIZE DATA FOR
;THAT TYPE OF DISK.  DO NOT CHANGE THE ORDER OF THE SIZE DATA, SINCE
;THE MSTR JSYS USES A BLT TO COPY IT FOR THE .MSRNU FUNCTION.



;MACRO TO DEFINE DISK PARAMETERS.  THE ARGUMENTS ARE USED TO GENERATE
;A TABLE OF DERIVED QUANTITIES FOR EACH DISK, AND ALSO TO DEFINE GLOBAL
;OFFSETS FOR REFERENCING THE TABLES.  ALL ARGUMENTS ARE IN DECIMAL.
;
;SEPPG	  NUMBER OF SECTORS PER PAGE (ASSUMED TO BE A POWER OF 2 IN DSKALC)
;SEPSU	  NUMBER OF SECTORS PER SURFACE (TRACK)
;SUPCY	  NUMBER OF SURFACES PER CYLINDER
;CYPUN	  NUMBER OF CYLINDERS PER UNIT
;LATUNI	  MICROSECONDS PER LATOPT SECTOR UNIT



DEFINE DSKTAB(SEPPG,SEPSU,SUPCY,CYPUN,LATUNI),<

.INDX.==0		;INITIALIZE OFFSET

;** THE ORDER OF THESE ENTRIES MUST NOT CHANGE WITHOUT FIXING MSTR **

DSKDAT (SECPAG,<SEPPG>,<SECTORS PER PAGE>)	;** MUST BE A POWER OF TWO **
DSKDAT (SECCYL,<<<SEPSU*SUPCY>/SEPPG>*SEPPG>,<SECTORS PER CYLINDER>)
DSKDAT (PAGCYL,<$SECCYL/$SECPAG>,<PAGES PER CYLINDER>)
DSKDAT (CYLUNT,<CYPUN>,<CYLINDERS PER UNIT>)
DSKDAT (SECUNT,<$SECCYL*$CYLUNT>,<SECTORS PER UNIT>)
DSKDAT (BTWCYL,<<$PAGCYL+35>/36>,<NUMBER OF BIT WORDS PER CYLINDER IN BITTABLE>)
DSKDAT (LPPCYL,<SEPSU*SUPCY-$SECCYL>,<LOST SECTORS PER CYLINDER>)
DSKDAT (MINFPG,<$PAGCYL/3>,<MINIMUM FREE PAGES FOR FREE CHOICE>)
DSKDAT (MAXFPU,<$PAGCYL*CYPUN>,<MAXIMUM FREE PAGES BEFORE TURNING POINT>)
DSKDAT (SECSRF,<SEPSU>,<SECTORS PER SURFACE>)
DSKDAT (USSECU,<LATUNI>,<MICROSECONDS PER LATOPT SECTOR UNIT>)

IFG <MXSTRU*$PAGCYL*$CYLUNT-MXPGUN>,<	;;MAXIMUM PAGES IN STRUCTURE INCREASED?
 MXPGUN==:<MXSTRU*$PAGCYL*$CYLUNT>>	;;YES, DEFINE VALUE LARGER
IFGE <MXPGUN*$SECPAG-DSKAB>,<		;;BUT SEE IF SECTOR ADDRESS TOO LARGE
 MXPGUN==:<<DSKAB-1>/$SECPAG>>		;;YES, REDUCE SO SECTOR ADDRESS FITS
>
	MXPGUN==:0		;DEFINE INITIAL VALUE
;MACRO USED TO DO ACTUAL WORK.  IT DEFINES THE OFFSET FOR THIS DATA,
;REMEMBERS THE VALUE OF THIS DATA FOR USE IN LATER EXPRESSIONS, AND
;DUMPS THE DATA.


DEFINE DSKDAT(NAME,VALUE,TEXT),<

NAME==:<.INDX.==.INDX.+1>-1	;;DEFINE OFFSET INTO TABLES
$'NAME==^D<VALUE>		;;CONDENSE THE EXPRESSION
	EXP	$'NAME		;NAME - TEXT
>




;NOW DUMP OUT THE TABLES FOR EACH KIND OF DISK:



DSKSZ0::DSKTAB (4,20,19,400,13)		;DATA FOR RP04 AND RP05


DSKSZ1::DSKTAB (4,20,19,800,13)		;DATA FOR RP06


DSKSZ2::DSKTAB (4,43,32,629,7)		;DATA FOR RP07


DSKSZ3::DSKTAB (4,30,5,820,8)		;DATA FOR RM03


DSKSZ4::DSKTAB (1,6,30,1119,8)		;DATA FOR RP20
>

;BREAK POINT PAGE ASSIGNMENTS

	SNPBPS==:1000		;LEN OF BREAK POINT PAGE (MUST BE 1000)
NRP (SNPBPP,SNPBPS)		;BREAK POINT PAGE

;*** SNPDPC <= 36. SINCE SNPFTB BITTABLE IS 1 WORD
	SNPDPC==:8		;NUMBER OF PAGES FOR USER CODE
	SNPDPS==:1000*SNPDPC	;LENGTH OF SNOOP VIRTUAL AREA
NRP (SNPDAT,SNPDPS)		;DATA PAGES FOR USER CODE

;CAUTION:  SNPBPP AND SNPDAT MUST BE CONTIGUOUS FOR SCHED TEST. (CHKSNP)

;SNOOP BREAK POINT LABEL DEFINITIONS

REPEAT 0,<

BP$000	1 MILLISECOND INTERVAL
	RUNS AT APR INTERRUPT LEVEL WITH NO STACK SET UP.
	ALL ACS MUST BE SAVED AND RESTORED

BP$001	POWER LINE FREQUENCY INTERVAL (50 OR 60 CYCLES)
	RUNS AT APR INTERRUPT LEVEL WITH NO STACK SET UP.
	ALL ACS MUST BE SAVED AND RESTORED.

BP$002	1 SECOND INTERVAL
	RUNS AT APR INTERRUPT LEVEL WITH NO STACK SET UP.
	ALL ACS MUST BE SAVED AND RESTORED.

BP$003	BREAKPOINT FOR OPEN NEW FILE
	ASSUMPTIONS: JOB CONTEXT, STACK, OFN IN T1
	OFFSET FOR JOB'S JFN TABLE IN  11
	THESE ASSUMPTIONS HOLD FOR BP$003-BP$009

BP$004	BREAKPOINT FOR OPEN EXISTING FILE
	SEE ASSUMPTIONS FOR BP$003

BP$005	BREAKPOINT FOR  GET EXISTING PTT
	SEE ASSUMPTIONS FOR BP$003

BP$006	BREAKPOINT FOR  MAKE NEW PTT FOR LONG FILE
	SEE ASSUMPTIONS FOR BP$003

BP$007	BREAKPOINT FOR PT-0 OF LONG FILE
	SEE ASSUMPTIONS FOR BP$003

BP$008	BREAKPOINT FOR MAKE NEW PT IN LONG FILE
	ASSUMES PT-NUMBER IN -2(P); ALSO:
	SEE ASSUMPTIONS FOR BP$003

BP$009	BREAKPOINT FOR GET EXISTING PT IN LONG FILE
	ASSUMES PT-NUMBER IN 0(P); ALSO:
	SEE ASSUMPTIONS FOR BP$003

BP$010	(AT DASOFN) BREAKPOINT TO RELEASE OFN
	ASSUMES JOB CONTEXT, OFN IN T1, STACK

BP$011	(AT REMFP2) BREAKPOINT FOR DELETE PAGE IN CORE
	ASSUMES CST-INDEX IN T1

BP$012	(BELOW BKUP3) BREAKPOINT FOR WRITE TO DISC
	ASSUMES CST-INDEX IN T1

BP$013	(BELOW BKUP3) BREAKPOINT FOR WRITE TO RPLQ
	ASSUMES CST-INDEX IN T1

BP$014	(BELOW SWPO2) BREAKPOINT FOR WRITE TO DRUM
	ASSUMES CST-INDEX IN T1

BP$015	(BELOW BKUP0) BREAKPOINT FOR WRITE TO RPLQ (DRUM ADDR)
	ASSUMES CST-INDEX IN T1

BP$016	(AT SWPI5) BREAKPOINT FOR READ FROM DEVICE
	ASSUMES [STG-ADDR] IN T4, [IDENT] IN T1 (I.E., [SPTN,,PN])

BP$017	(BELOW TRP0C) BREAKPOINT FOR READ FROM RPLQ
	ASSUMES STACK.  WILL CALL GETPHA TO IDENTIFY PAGE

BP$018	(BELOW WCPY) BREAKPOINT FOR COPY-ON-WRITE
	ASSUMES TARGET [SPTN,,PN] IN T1, SOURCE CST-INDEX IN 0(P)

BP$019	(BELOW .CFORK) BREAKPOINT FOR CREATE SUB-FORK
	ASSUMES FORK-INDEX OF CREATED FORK IS IN 7

BP$020	(BELOW LOGI1) BREAKPOINT FOR CREATE MAIN FORK
	ASSUMES FORKX HAS FORK-INDEX, FKJOB(FORK-INDEX) HAS JOBNO

BP$021	(AT KSELF) BREAKPOINT FOR KILL FORK.
	ASSUMES FORKX HAS SUICIDAL FORK INDEX

BP$022	(AT MAPDI1-1 IN DIRECT) BREAKPOINT FOR ASOFN FOR DIRECTORIES
	ASSUMES DIRECTORY# IN T1, OFN IN DROFN USUALLY, BUT IN STRRDO
	IF T1=ROOTDN


>
;Define home block I/O page.  This page is used by fsiini and
;fsibat as a work page for home block I/O during system startup.

HOMPGA==:SNPDAT			;OVERLAY SNOOP DATA PAGES
HOMPG==:HOMPGA/1000		;DEFINE THE PAGE NUMBER AS WELL

;SCHEDULER TESTS - HERE BECAUSE NO OTHER RESIDENT CODE IN DIRECT

	EXTN <MLDTAB,NLDTAB>	;DEFINED IN DIRECT

LKDTST::HRRZ T1,Q3		;GET FORK INDEX
	IDIVI T1,^D36		;COMPUTE BIT ADDRESS
	MOVE T2,BITS(T2)
	TDNE T2,LCKDBT(T1)	;STILL WAITING?
	JRST 0(T4)		;YES
	JRST 1(T4)		;NO, WAKEUP

LKDSPT::MOVE T1,MLDTAB		;GET LIMIT OF TABLE
	CAIL T1,NLDTAB		;FULL?
	JRST 0(T4)		;YES
	JRST 1(T4)		;NO
;LOWER CORE DEFINITIONS - NOT CLEARED AT STARTUP

SCTLW==:20			;SCHEDULER HALT REQUEST WORD


	LOC 25			;DOWN TO LOWER CORE
MMAPWD:	EXP MMAP		;POINTER TO MMAP FOR SETSPD

	LOC	70		;DOWN TO LOW CORE

PWRTRP::BLOCK 1			;EXECUTED ON POWER-FAIL AUTO RESTART
RLDADR::BLOCK 1			;FE EXECUTE'S THIS ON CERTAIN RELAODS
	EDDTF			;FORMERLY EDDTF
CRSTAD::BLOCK 1			;TOD OF LAST CRASH
.JBDDT::DDTX			;JOBDDT
	BLOCK 1			;75 RESERVED - .JBHSO
	DBUGSW			;THIS CELL FORMERLY DBUGSW
	DCHKSW			;THIS CELL FORMERLY DCHKSW
	BLOCK 10		;100 THROUGH 107 RESERVED FOR
				;  FE COMMAND LANGUAGE FUNCTIONS

;CELLS NOT CHANGED DURING DISK RELOAD OF RES MON

STSBLK::BLOCK 1			;110-111: STATUS BLOCK POINTER
	BLOCK 1			;NEXT WORD TO HOLD PHYSICAL ADDRESS
.JBEDV::MONEDV			;112 - POINTER TO EXEC DATA VECTOR

;113-114 RESERVED FOR THE FUTURE.
;THESE TWO LOCATIONS ARE THE ONLY TWO IN LOW CORE STILL FREE IN
;BOTH THE TOPS-10 AND TOPS-20 MONITORS.  MAY BE NEEDED FOR EDDT
;ETC. IN THE FUTURE.

	RELOC			;BACK TO NORMAL

CRSTD1=:27			;CRASH TIME AND DATE SAVED WHILE RELOADING
BUGHAD=:26			;BUGHLT AND CHK ADDRESSES SAVED WHILE RELOADING
				;FORMERLY DBUGS1...NOW MMAPWD
SEBQOU=:24			;OUTPUT PTR FOR SYSERR BLOCKS
				;IN A FIXED PLACE SO JOB 0 CAN QUEUE UP
				;BUGHLT BLOCK AFTER A CRASH.
CRSHTM=:23			;INITIAL TIME FOR RELOADS. -1 INDICATES NOT SETUP YET

NPISK==24			;SIZE OF STACK FOR PI LEVELS


;MONITOR'S EXEC DATA VECTOR. EDDT REFERS TO THIS BLOCK BY THE OFFSET
;NAMES. THE MONITOR USES THE NAMES OF THE INDIVIDUAL ENTRIES.

RSI MONEDV,<<'EDV',,EDVLEN>>	;.EDCNT - COUNT OF WORDS FOLLOWING
RSI HSYBLK,<>,1			;.EDHSB - POINTER TO HSYSWP WHEN SYMBOLS HIDDEN
RSI HSYPTR,<>,1			;.EDSYM - .JBSYM IN SYMBOL SPACE
RSI HUSPTR,<>,1			;.EDUSY - .JBUSY IN SYMBOL SPACE
RSI HSYFLP,HSYFLG		;.EDHSF - POINTER TO SYMBOLS HIDDEN FLAG
EDVLEN==HSYFLP-MONEDV+1


;AREA USED BY EDDT WHEN IT SWAPS ADDRESS SPACES

HSYSWP::EXP 5		;COUNT OF TOTAL WORDS FOLLOWING
	EXP 2		;COUNT OF WORDS TO SWAP (SECTIONS 0 AND 1)
	EXP MSECTB	;ADDRESS OF WHERE TO SWAP WORDS
	EXP SSECTB	;ADDRESS OF DATA TO PUT INTO MSECTB
	EXP OSECTB	;ADDRESS WHERE EDDT SAVES OLD MSECTB


;HIDDEN SYMBOLS FLAG - NON-ZERO IF MSECTB POINTS TO SYMBOLS

RS HSYFLG,1			;-1 IF SYMS HIDDEN NOW, 0 IF NOT (SET BY EDDT)
;ORIGIN OF MANUAL START TRANSFER VECTOR

SVECT=:140

;MANUAL START TRANSFER VECTOR

	LOC SVECT
EVDDT::	JRST DDTX		;EDDT
	JRST SYSDDT		;RESET AND GO TO EDDT
EVDDT2::JRST DDTX		;COPY OF EDDT IN CASE OTHER CLOBBERED
EVSLOD::JRST SYSLOD		;INITIALIZE DISK FILE SYSTEM
EVVSM::	JRST SYSVSM		;VERIFY SWAPABLE MONITOR ON STARTUP.
EVRST::	JRST SYSRST		;RESTART
EVLDGO::JRST SYSGO		;RELOAD AND START
EVGO::	JRST SYSGO1		;START

DDTPRS::-1			;DDT PRESENT IF NON-0, INITIALLY IS PRESENT

;AUTOMATIC RELOAD AND SWPMON LOAD STORAGE

BUTRXB::0			;XB OF ROOT DIR ON SPECIFIED STR
BUTMUN::0			;MAX. UNIT ON SPECIFIED STR
BUTDRT:: BLOCK 8		;LOGICAL/ PHYSICAL MAPPING OF SPEC STR
BUTCMD:: BLOCK ^D15		;ASCIZ MONITOR FILE NAME
BUTPGS::0			;START,,END ADDRESSES OF VBOOT PAGES
BUTEPT::0			;ADDRESS OF VBOOT PAGE TABLE PAGE
BUTPHY::0			;# OF PAGES TO MAP,,# OF FIRST CORE PAGE
BUTVIR::0			;VIRTUAL ADDRESS OF FIRST PAGE TO MAP
BOOTFL::0			;0 - NORMAL BOOTSTRAP, +N - SPECIAL BOOT

TMPSMM==:500			;TEMP SWPMON MAP DURING RESTART

   IFN PHYIOF,<
;PAGE ZERO FREE STORAGE POOL FOR PHYSIO

PHYPZS::BLOCK PZSSIZ
   >				;END IFN PHYIOF

	RELOC

;PTR TO END OF RES VARS

ZROEND::RSVARZ

;NAME TO SAVE THE MONITOR IMAGE AFTER POSTLD AS

MONSNM::
IFE NETN,<IFN SMFLG,<	ASCIZ /SMONITR.EXE/>>
IFE SMFLG,<IFN NETN,<	ASCIZ /AMONITR.EXE/>>
IFN SMFLG,<IFN NETN,<	ASCIZ /TMONITR.EXE/>>
IFE SMFLG!NETN,< ASCIZ /MONITR.EXE/>

DEFINE ECALL (DEV)<
   IFG DEV'N,<
	CALL DEV'CHK
RS DEV'TIM>>

;SCHEDULER DEVICE-DEPENDENT CALLS

LV8CHK::ECALL VBC
   IFG DCN,<CALL NSPCH7>	;DO DECNET MESSAGES
   IFN CHAOS,<CALL CHTTC7>	; 100 Do Chaosnet NVT input handling
   IFN NMLCS,<CALL MLCCH7>	;DO MLC STUFF
	RET

;TABLE OF CALLS FOR SECOND LEVEL CLOCKS

RS CLK2TM,0			;SYMBOL OF FIRST CLOCK CELL IN TABLE

CLK2CL::
	CALL WTCHK		;CHECK NON-SPECIAL WAITING FORKS
RS WTTIM,1
   IFE PHYIOF,<
	ECALL DSK		;DISK RE-QUEUE CHECK
	ECALL DRM		;DRUM TIMEOUT CHECK
   >				;END IFE PHYIOF
   IFN PHYIOF,<
	CALL PHYCHK		;PHYSIO TIMER ROUTINE
	RS PHYTIM
   >				;END IFN PHYIOF
	ECALL DTE		;DO POLLER
	ECALL KDP		;CHECK KDP (KMC11/DUP11)
	ECALL PTP		;PAPER TAPE PUNCH
IFG PLTN,<	ECALL PLT>	;PLOTTER
IFG PCDPN,<                     ;CARD PUNCH
        CALL CDPCHK
        RS CDPTIM
   >
	ECALL DTA		;DECTAPE
	ECall LPT		;#161 PHYSICAL LPT
	ECALL CDR		;THE CARD READER
	ECALL DLX		;DL10
   IFN NETN,<
	CALL IMPCHK		;ARPANET
	RS IMPTM2
   >
	CALL TIMSCM
	RS TMMLTM		; Millisecond TIMER Q (elapsed time)
	CALL TIMSCD
	RS TMDTTM		; D&T TIMER Q
	CALL TTYCHK		;CHECK CONTROLLER THINGS
	RS TTYTIM		;ALLOCATE TIMER WORD
N2CLKS==:.-CLK2CL
;DEVICE INITIALIZATION AFTER SWPMON LOADED

	SWAPCD

DEFINE INICLL (DEV)<
   IFG DEV'N,<
	CALL DEV'INI>>

INIDEV::
	INICLL MTA
   IFG LPTN,< IFG LPTN-FELPTN,<
	INICLL LPT
   >>
   IFG CDRN,< IFG CDRN-FECDRN,<
	INICLL CDR
   >>
IFG PLTN,<	INICLL PLT>
IFG PCDPN,<	INICLL CDP>		;CARD PUNCH
	INICLL PTP
	INICLL PTR
	INICLL DTA
	INICLL VBC

	RET

;DEVICE DEPENDENT ROUTINES USED ON KFORK

DEVKFK::
	RET


;DEVICE INITIALIZATION FOR FRONT END DEVICES

INIDV1::
	INICLL FE
   IFG CDRN,<IFG FECDRN,<
	INICLL CDR
   >>
   IFG LPTN,<IFG FELPTN,<
	INICLL LPT
   >>
	RET
;GENERATE THE PROTOCOL DEVICE DISPATCH TABLE
	RESCD

   IFG DTEN,<			;ONLY IF A DTE EXISTS
DEFINE DTV (DEV)<
   IFG DEV'N,<
	DEV'DTV		;DISPACTH ADDRESS
   >
   IFE DEV'N,<
	0			;NO DISPATCH
   >>

MINDEV==:.FECTY			;FIRST KNOWN DEVICE

DTEDTV::
	BLOCK MINDEV		;RESERVE SPACE FOR UNKNOWN DEVICES
   REPEAT 4,<TTYDTV>		;THE CTY,DL11,DH11, AND DLS DEVICES
   IFG FELPTN,<			;FRONT END LPT'S?
	DTV LPT>		;YES
   IFE FELPTN,<			;BA10 LPT?
	0>			;YES
   IFG FECDRN,<
	DTV CDR>		;THE CDR
   IFE FECDRN,<			;IF NO CRD
	0>			;RESERVE SPACE ANYWAY
	0			;UNKNOWN
	DTV FE			;THE FE DEVICE

MAXDEV==:.-DTEDTV+MINDEV-1	;LAST KNOWN DEVICE
   >				;END OF PROTOCOL TRANSFER VECTOR LOGIC


;Keep these cells together. The ARPA GETAB% .LHOSTN requires this
RSI (NOHOST,<-1>)		; Old format host number
RSI (NVTPTR,<1>)		; -number of nvt's,,first nvt
RSI (DEFADR,<-1>)		; Default host address to use
RSI (DEFAD0,<-1>)		;#535 "backup" default
RS NETFLD			; "Default" network number, shifted
RS DEFNET			; Default network number
.PSECT RSDAT
NLHOST::REPEAT %NETS+3,<-1>	; Table of internet address' for host,
				; Indexed by interface number (currently)
	EXP	0		; end of table flag
	RESCD

;RESET ALL AND GO TO EDDT

SYSDDT:	XCT PIRST
	XCT IORST
	JRST EVDDT2

;RELOAD SYSTEM FROM DISK AND RESTART

SYSGO::

;START SYSTEM KEEP EXISTING SWPMON PAGES

SYSGOX::MOVE P,PI7P		;GET A STACK
	CALL SAVSMM		;SAVE PRESENT SWPMON MAP
	MOVEI T1,IRBOOT		;NOTE SPECIAL INTERNAL BOOT
	MOVEM T1,BOOTFL
	JRST SYSGO1
;START FROM SCRATCH AFTER LOADING
SYSVSM::SETOM VSMFLG		;INDICATE FORCED CHECKS ON SWAPABLE MONITOR
SYSGO1::TDZA 7,7		;INDICATE NORMAL STARTUP TO SAVE IN STARTF
SYSLOD::MOVX 7,MI%RFS		;INDICATE REFRESHING
	MOVE P,PI7P
	XCT PIRST		;RESET PI AND IO
	XCT IORST
	SETZM STSBLK		;NO STATUS BLOCK NOW


;IF HIDING SYMBOLS, BLT THE SYMBOLS UP OUT OF THE PPVAR AND RSCOD
;AREAS SO WE CAN CLEAR THE ZROCOR (RSVAR) AREA.

	SKIPN HIDSYF		;INTEND TO HIDE THE SYMBOLS?
	JRST SYSLD3		;NO, PROCEED
	HLLZ T2,.JBSYM		;COUNT OF SYMBOLS
	SKIPGE .JBUSY		;AN UNDEFINED TABLE?
	ADD T2,.JBUSY		;YES, BUMP COUNT
	HLRO T2,T2		;GET TOTAL LENGTH OF SYMBOL TABLE
	MOVN T2,T2		;FORM POSITIVE LENGTH
	SKIPL T3,.JBUSY		;GET START OF UNDEFINED TABLE
	MOVE T3,.JBSYM		;OR REGULAR TABLE IF  NO UNDEFINEDS
	ADD T3,T2		;THENCE TO LAST ADDRESS OF TABLE+1
        TLZ T3,-1               ;NOW CLEAR FOR INDEXING
        MOVEI T4,SYVARZ+1+200   ;FIRST WORD OF NEW HOME (200 WORDS FOR PATCHING)
        ADD T4,T2               ;LAST ADDRESS + 1
SYSLD2: SUBI T3,1               ;DECREMENT TO PREVIOUS SOURCE ADDRESS
        SUBI T4,1               ;AND PREVIOUS DESTINATION ADDRESS
        MOVE T1,0(T3)            ;FETCH NEXT WORD OF TABLE (GOING BACKWARDS)
        MOVEM T1,0(T4)          ;STORE IN NEW HOME
        SOJG T2,SYSLD2          ;LOOP OVER ENTIRE TABLE
        SUBM T4,T3              ;OFFSET TO SYMBOLS' NEW HOME
        ADDM T3,.JBSYM          ;UPDATE .JBSYM
        SKIPE .JBUSY            ;UNDEFINED PTR SET UP?
        ADDM T3,.JBUSY          ;YES, FIX IT TOO
        MOVE T1,[SYVAR,,SYVAR+1] ;NOW CLEAR SYMBOL MAPS AND PATCH SPACE
        SETZM SYVAR             ; ..
        BLT T1,-1(T4)           ; ..

;THIS BLT ZEROES THE RSVAR PSECT. BEFORE RELEASE 5, ANY RESIDENT DATA
;THAT WAS TO HAVE INITIAL VALUES OTHER THAN ZERO WAS INITIALIZED AFTER
;THIS BLT. THERE IS NOW A PSECT, RSDAT, THAT IS NOT ZEROED. THE RSI
;MACRO ALLOCATES SPACE AND ASSIGNS INITIAL VALUES IN RSDAT.

SYSLD3:	MOVE 1,[XWD ZROCOR,ZROCOR+1]
	SETZM ZROCOR		;CLEAR FIRST WORD
	BLT 1,@ZROEND		;CLEAR RESIDENT STORAGE AREA

;BLT THE VIRGIN COPY OF THE OWGBP TABLE INTO THE EPT

	HRRZI T1,EPTGBP		;BLT TO EPTGBP
	HRLI T1,OWGBPV		;BLT FROM OWGBPV
	BLT T1,EPTGBP+OWGBPN-1	;COPY THE OWGBP TABLE INTO THE EPT

;TELL THE HARDWARE WHERE THE EPT IS

	XCT IORST		;RESTORE CONOPG AND CASHF (CLEARED BY BLT)
	CALL MONEPT		;SET TO MONITOR'S EPT
	CALL PGRON		;TELL HARDWARE ABOUT IT


	; ..
;NOW FIND THE MASTER DTE

   IFE SMFLG,<
	MOVSI T1,-DTEN		;NUMBER TO POLL
	MOVE T2,[CONSO DTE0,DTEPRV] ;LOOK FOR PRIVILEGED BIT
	MOVE T3,[CONSO DTE0,DTEPI0+7] ;CHECK FOR PI ASSIGNED
	MOVE T4,[CONO DTE0,0]	; A CONO WORD
FDMST1:	XCT T3			;HAVE A PI ASSIGNMENT?
	JRST [	HRRI T4,DTEPI0+DTEPIE ;NO TRY TO TURN ON PI 0
		XCT T4		;DO IT
		XCT T3		;DID IT TURN ON?
		JRST FDMST0	;NO. NON-EX DEVICE
		TRZ T4,DTEPI0	;TURN IT OFF
		XCT T4
		JRST .+1]	;AND PROCEED
	XCT T2			;THIS IT?
	JRST [	MOVEI T2,0(T1)	;YES. GET DTE NUMBER
		MOVEM T2,MSTRDT	;SAVE DTE NUMBER
		LSH T1,^D26	;ADJUST DEVICE FIELD
		ADD T1,[CONO DTE0,0(T1)] ;FORM CONO WORD
		MOVEM T1,DTSCNW	;STORE IN THE PROTOTYPE WORD
		JRST SYSLD1]	;AND PROCEED
FDMST0:	ADD T2,[4B11]		;NEXT DTE
	ADD T3,[4B11]
	ADD T4,[4B11]		;ADJUST ALL I/O INSTRUCTIONS
	AOBJN T1,FDMST1		;LOOK AT NEXT
	HALT .			;THIS CAN'T HAPPEN!!!!!!!!!!!!

SYSLD1:
   IFN DTFLG,<			;DOING FE PROTOCOLS?
	PIOFF			;MAKE SURE MACHINE IS QUIET
	JSR BUGMON		;MAKE SURE IN PROPER PROTOCOL
   >
   > ;END IFE SMFLG
   IFN SMFLG,<

SYSLD1:
	MOVEI T1,1		;START WITH SECOND MAPPING REGISTER
				;FIRST ONE RESERVED FOR BOOT
	MOVEM T1,SMADNX
   > ;END IFN SMFLG
	SETOM BBNBYT		;FLAG FAST BYTE CODE
	SETOM DSMENB		;FLAG ENABLE DISMOUNTS
	SETZM CRSTD1
	MOVEM 7,STARTF		;SAVE INDICATION OF HOW WE STARTED
	MOVE 1,[BTB]		;GET ADDRESS OF BIT TABLE
	MOVEM 1,BTBORA		;SET UP BASE ADDRESS FOR REFERENCE ELSEWHERE
	SETOM BTBLCK		;INITIALIZE BIT TABLE LOCK
	SKIPE 1,CRSTAD		;HAVE SAVED PRE-CRASH INFO?
	MOVE 1,BUGHAD		;YES, RESTORE CELLS
	HRRZM 1,BUGHLT
	HLRZM 1,BUGCHK
	AOS INSKED

;SET UP XPCW BLOCK FOR EACH DTE TO POINT TO INTERRUPT CODE

QQ==0
REPEAT DTEN,<DTXPCW \QQ		;STORE WORD FOR THIS DTE
		QQ==QQ+1>	;DO THEM ALL

;STORE PROCESSOR'S SERIAL NUMBER. DETERMINE MODE OF ADDRESSING
;(EXTENDED VS: NONEXTENDED)

	CALL GAPRID		;READ APR SERIAL NUMBER
	MOVEM T1,APRSER
	APRID T1		;FIND TYPE OF MACHINE
	TRZ 1,737777		;CHECK FOR MODEL B MACHINE
   IFE SMFLG,<
	SKIPE [MSEC1]		;WANT TO TRY EXTENDED ADDRESSING SECTIONS?
	HRRZM 1,EXADFL		;YES, SET FLAG
	HRRZM 1,EXADF1		;AND SET PC FORMAT FLAG
   IFN EXADF,<			;IF INTENDING TO USE EXTENDED FEATURES
	TRNE T1,-1		;MUST HAVE EXTENDED MACHINE
	SKIPN [MSEC1]		;AND BE USING MULTIPLE SECTIONS
        BUG (NOXADR)
   >				;END OF IFN EXADF
   >
   IFN SMFLG,<
	SETOM EXADF1		;SM10 DOES MODEL B FORMAT ONLY
	HRRZM 1,EXADFL		;AND SET EXTENDED ADDRESSING FLAG
   >
	; ..
	CALL RESFPI		;INITIALIZE THE RESIDENT FREE POOL
	CALL PAGRST		;INIT PAGER SIMULATION (FOR KI10)
	CALL PGRINI		;INIT CST, ETC.
   IFN SMFLG,<
	CALL UNBINI		;INIT UNIBUS ADAPTER
   >
   IFN PHYIOF,<
	CALL PHYINI		;MUST INIT BEFORE PAGER (GRABS RES STG)
   >				;END IFN PHYIOF
   IFE PHYIOF,<
;	DRUM IS INITIALIZED AFTER CALLING FSIINI
	CALL DSKINI		 ;DISK
   >				;END IFE PHYIOF
	CALL TTINIT		 ;TELETYPE MODULE
	IFG DLXN,<CALL DLXINI> ;DL10 CONTROLER
	CALL SCDIN		;SCHEDULER
	CALL PIINIT		;PI MODULE - LAST INIT
	SETZM RESIFL		;END OF SYSTEM START UP (FOR RES FREE POOL)
	MOVS 1,CTYLNO		;GET CTY LINE NUMBER
	HRRI 1,JOBSRT		;START A NEW JOB LOCATION
	CALL SCDRQ7		;INITIATE FIRST JOB
	JRST SCHED0		;TO SCHEDULER
;ROUTINE TO RETURN THE LINE FREQUENCY OF THE POWER LINE
;RETURNS LINE FREQUENCY IN A. CLOBBERS ONLY A

LINFRQ::PUSH P,B		;SAVE AN AC
	MOVEI A,^D60		;ASSUME 60 HZ
	APRID B			;GET LINE FREQ INFO
	TRNE B,1B18		;60 HZ?
	MOVEI A,^D50		;NO. TELL HIM IT IS 50 HZ
	POP P,B			;RESTORE B
	RET			;RETURN VALUE IN A
;RESTART SYSTEM

DEFINE DEVRST (DEV)<
   IFG DEV'N,<CALL DEV'RST>>

SYSRST::MOVE P,PI7P
   IFG DTFLG,<			;DOING FE PROTOCOLS?
	PIOFF			;MAKE SURE ALL PI'S ARE OFF
	JSR BUGMON		;MAKE SURE IN PROPER PROTOCOL
   >
	XCT PIRST
	XCT IORST		;RESET PI AND IO
   IFN NETN,<			;CYCLE ARPANET AFTER POWERFAIL
	SKIPGE PWRDWN		;POWER RESTART?
	JRST [;;AOS IMPDRQ	;YES, CYCLE NET
	      AOS IMPFLG	;AND ASK NCPFRK TO RUN SOON
	      JRST .+1]		;CONTINUE ON
   >
	SETOM SCDRN1
	PUSH P,PWRDWN		;SAVE POWER FAIL INDICATOR
	SETZM PWRDWN
	CALL PAGRST		;INIT PAGER SIMULATION
	CALL PGRRST
   IFN SMFLG,<
	CALL UNBRST		;RESTART UNIBUS ADAPTER
   >
	CALL TTRSET
   IFE PHYIOF,<
	DEVRST DRM
	DEVRST DSK
	DEVRST MTA
   >				;END IFE PHYIOF
   IFN PHYIOF,<
	CALL PHYRST
   >				;END IFN PHYIOF
	DEVRST LPT
   IFG KSCDRN,<
	DEVRST CDR
   >
	DEVRST DTA
	DEVRST PTR
IFG PCDPN,<	DEVRST CDP>		;CARD PUNCH
	DEVRST PTP
IFG PLTN,<	DEVRST PLT>
	DEVRST VBC
	DEVRST DLX
	PUSH P,INSKED
	MOVEI 1,1
	MOVEM 1,INSKED
	SETZM SKEDF1
	CALL PIINIT
	CALL SWPRST		;SWAPPER CLEANUP
   IFG DTFLG,<			;DOING FE DH CONFIGURATIONS?
	SKIPE PROFLG		;AND DOING PRIMARY PROTOCOL?
	CALL DTERST>		;YES. GO INIT THE PROTOCOL
	POP P,1
	EXCH 1,0(P)		;SAVE OLD INSKED, RESTORE OLD PWRDWN
	SKIPGE 1		;DOING POWER RESTART?
	CALL TTDALL		;YES DETACH ALL JOBS THEN
	POP P,1			;GET OLD INSKED
	JUMPN 1,SCHED0		;RESUME SCHED IF THERE AT CRASH
	CALL SETPPG		;REESTABLISH CONTEXT
	SETZM INSKED
	SETOM TRAPC
	MOVSI 1,(UMODF)		;CRASH PROCESS RUNNING AT CRASH
	MOVEM 1,FFL
	SETZM FPC
	SETOM SLOWF		;FAKE A USER CONTEXT SO RETURN CODE
				; WILL ALWAYS WIN
	JRST ITRAP
;DISPATCHES FOR PI CHANNELS 5-6.
;EACH ROUTINE CALLED WITH 'CALL'.
;ROUTINE SHOULD RETURN WITH 'RET' (CALLER +1) IF PI IS NOT FOR IT.
;ROUTINE SHOULD RETURN WITH 'UNBRK DEV' (JRST DEVCHR) AFTER HANDLING
;INTERRUPT.

DEFINE PICALL (DEV)<
   IFG DEV'N,<CALL DEV'SV>>

PISC5::	XWD PI5R,.+1
   IFN SSAN+DTAN+PTRN+PCDPN,<	;#25 GENERATE IF HELLIWELL IS ASSEMBLING OR CDP PRESENT
	DMOVEM T1,PI5AC		;SAVE TEMP ACS
	DMOVEM T3,PI5AC+2
	DMOVEM CX,PI5CX		;SAVE CX, P
	MOVE P,[IOWD NPISK,PI5STK]
	PICALL CDP		;CARD PUNCH
	PICALL DTA
	PICALL SSA		;#25 SA10 channel
	PICALL PTR
>
   IFE SSAN+DTAN+PTRN+PCDPN,<		;#25 IF NO PI CODE
	PIOFF
	DMOVEM CX,PIXCX		;SAVE REGS
	MOVE P,[IOWD XPISK,PIXSTK]

	EXCH T1,PI5CNT		;SAVE AC AND GET COUNTER
	AOS T1			;BUMP COUNTER
	TRNN T1,7		;REACHED THRESHOLD YET?
   >;	IFE SSAN+DTAN+PTRN+PCDPN

	BUG (PI5ERR)		;YES, COMPLAIN

   IFE SSAN+DTAN+PTRN+PCDPN,<		;#25 IF NO PI CODE
	EXCH T1,PI5CNT		;RESTORE AC AND COUNT
	CLSB	5		;CLEAR THE INTERRUPT ON 5
   >;	IFE DTAN+PTRN+PCDPN

   IFN SSAN+DTAN+PTRN+PCDPN,<	;#25 GENERATE IF HELLIWELL IS ASSEMBLING OR CDP PRESENT
CDPCHR::
PTRCHR::
SSACHR::			;#25 .
DTACHR::
	DMOVE T1,PI5AC		;RESTORE TEMPS
	DMOVE T3,PI5AC+2
	DMOVE CX,PI5CX		;RESTORE CX, P

RS PI5AC,4
RS PI5CX,2
RS PI5STK,NPISK
>

   IFE SSAN+DTAN+PTRN+PCDPN,<	;#25.
	DMOVE CX,PIXCX
	PION
>
	XJEN PI5R

RS PI5R,4
PISC6::	XWD PI6R,.+1
   IFN SMFLG!<PLTN+VBCN+PTPN+BALPTN+BBNN>,<;#350/#53 Gen if needed
				; for KS10 and/or I/O bus devs
	DMOVEM T1,PI6AC		;SAVE TEMP ACS
	DMOVEM T3,PI6AC+2
	DMOVEM CX,PI6CX		;SAVE CX, P
	MOVE P,[IOWD NPISK,PI6STK]
	XJRSTF [0
		MSEC1,,.+1]
IFN BBNN,<CALL IMPSV>		;Primary IMP iterface
   IFN SMFLG,<
	CALL DZCTIN		;CALL TERMINAL SERVICE
   >
	PICALL PLT
	PICALL VBC
	PICALL PTP
>
IFN BALPTN,<
	PICALL	LPT		;#350
>

   IFE SMFLG!<PLTN+VBCN+PTPN+BALPTN+BBNN>,<	;#53 IF NO PI CODE
	PIOFF
	DMOVEM CX,PIXCX
	MOVE P,[IOWD XPISK,PIXSTK]
   >	;IFE SMFLG!<PLTN+VBCN+PTPN+BALPTN+BBNN

	BUG (PI6ERR)		;bugchk if nobody can service it

   IFE SMFLG!<PLTN+VBCN+PTPN+BALPTN+BBNN>,<	;#53 IF NO PI CODE
	CLSB	6		;CLEAR THE INTERRUPT ON 6
   >	;IFE SMFLG!<PLTN+VBCN+PTPN+BALPTN+BBNN

   IFN SMFLG!<PLTN+VBCN+PTPN+BALPTN+BBNN>,<	;#53 GENERATE FOR KS10

PLTCHR::
VBCCHR::
PTPCHR::
LPTCHR::
IMPCHR::
	DMOVE T1,PI6AC
	DMOVE T3,PI6AC+2
	DMOVE CX,PI6CX		;RESTORE ACS

RS PI6AC,4
RS PI6CX,2
RS PI6STK,NPISK
   >;IFN SMFLG!<PLTN+VBCN+PTPN+BALPTN+BBNN

   IFE SMFLG!<PLTN+VBCN+PTPN+BALPTN+BBNN>,<
	DMOVE CX,PIXCX
	PION
   >

	XJEN PI6R		;DONE

RS PI6R,4
RS PIXCX,2			;REG SAVE AREA
NDG XPISK,10			;SIZE OF STACK
RS PIXSTK,XPISK			;STACK FOR INT
;DUMMY ROUTINES FOR DEVICES NOT PRESENT

   IFE DTAN,<			;IF NO DECTAPES

DTADTB::
DTAACK::
DTAMCK::
DTASTS::
	RET
   >

   IFE DRMN!PHYIOF,<

;DRUM DRIVER - DUMMY DRUM, USES DSK
	RESCD

;DRUM IO DRIVER

; AC1/ 18-35 CORE PAGE NUMBER (CST INDEX) OF PAGE
;      DWRBIT WRITE OPERATION IF 1, READ IF 0

DRMIO::	HLLZS CST3(1)		;SINGLE PAGE REQUEST, ZERO REST OF LIST
DRMIOM::SKIPG DRUMP		;DRUM ON SYSTEM?
	JRST DSKIOM		;NO, USE DISK
        BUG(DRUMP1)

DRMINI::SETOM DRMJ0R
	RET
   >				;END IFE DRMN!PHYIOF
		;BBN LOCAL NET DUMMY STUFF

   IFE MLCN,<			;IF NO PTIP

MLCHLF::EXP -1			;NO LINK NUMBER FOR PTIP TRAFFIC
MLCCH7:: MLPTPA:: MLCINI:: MLFNCS::
MLCDE1:: MLCBEG::
OPRMLC::	RET			;DUMMY STARTUP ROUTINE
   >

IFG ATS,<	; If applications terminal support
		SUBTTL ATSSRV STORAGE

;POINTERS FOR BACKGROUND PROCESS QUEUES

NR ATBTR1			;HEAD OF TERMINAL BLOCK QUEUE
NR ATBTR2			;TAIL OF TERMINAL BLOCK QUEUE
NR ATBDD1			;HEAD OF DATA PIPE DATA QUEUE
NR ATBDD2			;TAIL OF DATA PIPE DATA QUEUE
NR ATBCD1			;HEAD OF CONTROL PIPE DATA QUEUE
NR ATBCD2			;TAIL OF CONTROL PIPE DATA QUEUE
NR ATBPI1			;HEAD OF PIPE BLOCK QUEUE
NR ATBPI2			;TAIL OF PIPE BLOCK QUEUE

RS ATBPFG			;FLAG TO WAKE UP BACKGROUND PROCESS
				; (-1 TO WAKE, 0 TO SLEEP)
NR NRBKGR			;NRM BACKROUND TASK NEEDS TO DISMS AND TRY AGAIN

NDG ATMAX,^D96			;MAXIMUM NUMBER OF HTN'S IN SYSTEM
NR HTNADR,ATMAX+1		;TABLE OF ADDRESSES OF TERMINAL DATA
				; INDEXED BY HTN (WORD 0 UNUSED)

;SYSTEM INPUT BIT MASK - ONE BIT PER HTN

AMDAT==:1			;FIRST WORD IN BLOCK THAT HAS VALID BITS
NATMSK==:<<ATMAX+^D36>/^D36>+AMDAT ;NUMBER WORDS OF FREE SPACE
>

Rs Hsyst5			;#43 [Wook] Halt time for IMP
	TNXEND
	END	EVGO