Google
 

Trailing-Edge - PDP-10 Archives - bb-x141b-bb - rsxt10.l10
Click rsxt10.l10 to see without markup as text/plain
There is 1 other file named rsxt10.l10 in the archive. Click here to see a list.
LC -- LOW CORE FOR RSX20F	MACRO M1113  03-APR-86 20:41
TABLE OF CONTENTS

     8-  342	LOW CORE -- TRAP VECTORS
     9-  456	LOW CORE -- COMMON GLOBAL DATA
    10-  596	LOW CORE -- KLINIK DATA BASE
    11-  630	LOW CORE -- COMMIUNICATIONS REGION DATA BASE
    12-  665	LOW CORE -- QUEUED PROTOCOL DATA BASE
    13-  771	LOW CORE -- KEEP-ALIVE DATA BASE
    14-  785	LOW CORE -- CORE MANAGER DATA BASE
    15-  821	LOW CORE -- CLOCK REQUEST LIST
    17-  862	LOW CORE -- TERMINAL SERVICE DATA BASE
    18-  920	LOW CORE -- PDP-11 CTY SERVICE DATA BASE
    19-  935	LOW CORE -- TERMINAL DRIVER DATA BASE
    20-  955	LOW CORE -- DATA LINE SCANNER DATA BASE
    21-  985	LOW CORE -- DH-11 DATA BASE
    30- 1041	LOW CORE -- DECTAPE DRIVER DATA BASE
    32- 1074	LOW CORE -- DISC DRIVER DATA BASE
    33- 1095	LOW CORE -- FE DRIVER DATA BASE
    34- 1134	LOW CORE -- CD-11 DRIVER DATA BASE
    35- 1179	LOW CORE -- LP-20 DRIVER DATA BASE
    36- 1266	LOW CORE -- STD (SYSTEM TASK DIRECTORY)
    37- 1388	LOW CORE -- ATL (ACTIVE TASK LIST)
    38- 1460	LOW CORE -- TPD (TASK PARTITION DIRECTORY)
    39- 1521	LOW CORE -- DEVICE QUEUE POINTERS
    40- 1574	LOW CORE -- LOGICAL UNIT TABLES
    41- 1688	LOW CORE -- KL10 HARDWARE ENVIRONMENT DATA
    42- 1746	LOW CORE -- INITLM (INITIALIZATION)
    43- 1775	LOW CORE -- TRAP SERVICE FOR COMMON PROGRAM TRAPS
    44- 1896	LOW CORE -- CRASH ROUTINE
    45- 2001	LOW CORE -- I/O PAGE SNAPSHOT
    46- 2052	EXEC MODULE ONE -- TITLE PAGE
    47- 2114	EXEC MODULE ONE -- SYSTEM NOTES
    48- 2169	EXEC MODULE ONE -- GLOSSARY
    48- 2194	MACRO CALLS (MCALL)
    49- 2206	EXEC MODULE ONE -- SYMBOLIC DEFINITIONS
    65- 2788	EXEC MODULE ONE -- NUL TASK
    67- 2893	EXEC MODULE TWO -- SERVICE FOR "EMT" & "TRAP" INSTRUCTIONS
    68- 3159	EXEC MODULE THREE -- SCAN OF ACTIVE TASK LIST
    75- 3550	EXEC MODULE NINE -- COMMON RETURN TO INTERRUPTED PROGRAM
    80- 3963	SECONDARY PROTOCOL -- COPYRIGHT STATEMENT
    81- 4026	SECONDARY PROTOCOL -- BOOT PROTOCOL SERVICE
    82- 4300	POWERFAIL HANDLER -- COPYRIGHT STATEMENT
    83- 4351	POWERFAIL -- POWER DOWN
    84- 4437	POWERFAIL -- POWER UP ENTRY
    85- 4486	POWERFAIL -- POWER FAIL RESTART
    86- 4558	DTE DIRECTIVES -- COPYRIGHT STATEMENT
    87- 4619	DTE20 EMT DISPATCH DECODER
    88- 4698	$DORBL -- RING THE KL-10 DOORBELL
    89- 4729	$DTEOF -- TURN THE DTE20 OFF
    90- 4765	$DTEON -- TURN THE DTE20 ON
    91- 4896	$DPMYG -- DEPOSIT INTO MY GENERAL SECTION
    92- 4943	$EXMYG -- EXAMINE MY GENERAL SECTION
    93- 4979	$EXMYN -- EXAMINE MY SECTION FOR PROCESSOR N
    94- 5013	$DPMYN -- DEPOSIT INTO MY SECTION FOR COMM WITH PROCESSOR N
    95- 5047	$EXHSG -- EXAMINE HIS GENERAL COMMUNICATION SECTION
    96- 5082	$EXHSM -- EXAMINE HIS SECTION FOR COMMUNICATING WITH ME
    97- 5116	$KLDFX -- EXECUTE A DIAGNOSTIC FUNCTION
    98- 5213	$PRVDP -- PRIVILEDGED DEPOSIT
    99- 5244	$PRVEX -- PRIVILEDGED EXAMINE
DMDTE	- DTE DIRECTIVES MODULE	MACRO M1113  03-APR-86 20:41
TABLE OF CONTENTS

   100- 5283	$RWDRG -- READ/WRITE DIAGNOSTIC REGISTER
   101- 5322	CESCHK -- CHECK FOR CLOCK ERROR STOP
   102- 5345	ASIGN LUN -- COPYRIGHT STATEMENT
   103- 5382	DIRECTIVE -- ASSIGN LUN
   104- 5488	GET LUN INFO -- COPYRIGHT STATEMENT
   105- 5524	DIRECTIVE -- GET LUN INFORMATION
   106- 5593	GET TIME PARAMETERS -- COPYRIGHT STATEMENT
   107- 5629	DIRECTIVE -- GET TIME PARAMETERS
   108- 5702	SIGNIFICANT EVENT DIRECTIVES -- COPYRIGHT STATEMENT
   109- 5744	DIRECTIVE -- CLEAR EVENT FLAG
   110- 5794	DIRECTIVE -- SET EVENT FLAG
   111- 5844	DIRECTIVE -- DECLARE SIGNIFICANT EVENT
   112- 5905	DIRECTIVE -- READ EVENT FLAG
   113- 5953	DIRECTIVE -- READ ALL EVENT FLAGS
   114- 5996	DIRECTIVE -- WAITFOR SINGLE EVENT FLAG
   115- 6059	DIRECTIVE -- WAITFOR LOGICAL 'OR' OF FLAGS
   116- 6151	DIRECTIVE -- WAITFOR NEXT SIGNIFICANT EVENT
   117- 6189	MARK TIME -- COPYRIGHT STATEMENT
   118- 6225	DIRECTIVE -- MARK TIME
   119- 6326	CANCEL MARK TIME -- COPYRIGHT STATEMENT
   120- 6363	DIRECTIVE -- CANCEL MARK-TIME REQUESTS
   121- 6424	EXIT -- COPYRIGHT STATEMENT
   122- 6461	DIRECTIVE -- TASK EXIT
   123- 6506	QUEUE I/O -- COPYRIGHT STATEMENT
   124- 6544	DIRECTIVE -- QUEUE I/O
   125- 6872	SEND AND RECEIVE -- COPYRIGT STATEMENT
   126- 6913	DIRECTIVE -- SEND DATA
   127- 6969	DIRECTIVE -- SEND AND REQUEST OR RESUME
   129- 7190	DIRECTIVE -- RECEIVE DATA
   130- 7227	DIRECTIVE -- RECEIVE DATA OR EXIT
   131- 7268	DIRECTIVE -- RECEIVE DATA OR SUSPEND
   132- 7410	SPECIFY SST TABLE -- COPYRIGHT STATEMENT
   133- 7446	DIRECTIVE -- SPECIFY SST VECTOR TABLE FOR TASK
   134- 7501	SPECIFY AST SERVICE -- COPYRIGHT STATEMENT
   135- 7537	DIRECTIVE -- SPECIFY POWER FAIL AST
   136- 7595	REQUEST AND EXECUTE -- COPYRIGHT STATEMENT
   137- 7631	DIRECTIVE -- TASK SCHEDULING -- REQUEST
   138- 7757	GET TASK PARAMETERS -- COPYRIGHT STATEMENT
   139- 7793	DIRECTIVE -- GET TASK PARAMETERS
   140- 7882	GET PARTITION PARAMETERS -- COPYRIGHT STATEMENT
   141- 7919	DIRECTIVE -- GET PARTITION PARAMETERS
   142- 8019	CLOCK HANDLER -- COPYRIGHT STATEMENT
   143- 8061	CLOCK TICK RECOGNITION
   144- 8127	QUEUED PROTOCOL DRIVER -- COPYRIGHT STATEMENT
   147- 8344	QUEUED PROTOCOL DRIVER -- PROTOCOL PACKET SERVICE DISPATCH
   148- 8383	QUEUED PROTOCOL DRIVER -- DISPATCH TABLE
   149- 8421	QUEUED PROTOCOL DRIVER -- UNRECOGNIZED FUNCTION
   150- 8431	QUEUED PROTOCOL DRIVER -- ENABLE/DISABLE REMOTE TERMINALS
   151- 8442	QUEUED PROTOCOL DRIVER -- ENABLE/DISABLE SENDALL AND XOFF PROCESSING
   152- 8455	QUEUED PROTOCOL DRIVER -- ENABLE/DISABLE SENDALLS
   153- 8479	QUEUED PROTOCOL -- DIALUP
   154- 8499	QUEUED PROTOCOL DRIVER -- HANGUP
   155- 8550	QUEUED PROTOCOL DRIVER -- ACKNOWLEDGE DEVICE
   156- 8562	QUEUED PROTOCOL DRIVER -- SET LINE ALLOCATION
   157- 8576	QUEUED PROTOCOL DRIVER -- SET LINE SPEED
   158- 8633	QUEUED PROTOCOL DRIVER -- STOP LINE INPUT
   159- 8664	QUEUED PROTOCOL DRIVER -- BREAK-THROUGH WRITE
QPRDRV	-- QUEUED PROTOCOL DRIV	MACRO M1113  03-APR-86 20:41
TABLE OF CONTENTS

   160- 8681	QUEUED PROTOCOL DRIVER -- XOFF
   161- 8709	QUEUED PROTOCOL DRIVER -- XON
   162- 8741	QUEUED PROTOCOL DRIVER -- HERE IS INITIAL STATUS
   163- 8792	QUEUED PROTOCOL DRIVER -- RETURN TIME OF DAY
   164- 8807	QUEUED PROTOCOL DRIVER -- STRING DATA
   165- 8840	QUEUED PROTOCOL DRIVER -- LINE NUMBER - CHARACTER
   166- 8885	QUEUED PROTOCOL DRIVER -- RETURN TIME OF DAY
   167- 8909	QUEUED PROTOCOL DRIVER -- FLUSH DEVICE OUTPUT QUEUE
   168- 8928	QUEUED PROTOCOL DRIVER -- RECIEVE KLINIK PARAMETERS
   169- 8948	QUEUED PROTOCOL DRIVER -- SET/CLEAR HOST DEBUG MODE
   170- 8963	QUEUED PROTOCOL DRIVER -- SENDALL
   171- 9112	QUEUED PROTOCOL DRIVER -- COPY BUFFER
   172- 9156	QUEUED PROTOCOL DRIVER -- MAP DH-11 TO DM-11
   173- 9185	QUEUED PROTOCOL DRIVER -- FIND LINE SPEED
   174- 9218	QUEUED PROTOCOL DRIVER -- FIND DEVICE NAME
   175- 9253	QUEUED PROTOCOL DRIVER -- FIND DEVICE NAME
   176- 9343	DTE-20 DRIVER -- COPYRIGHT STATEMENT
   177- 9387	DTE-20 DRIVER -- DTE-20 INTERRUPT HEAD
   178- 9463	DTE-20 DRIVER -- TO-10 DONE SERVICE
   179- 9567	DTE-20 DRIVER -- TO-11 DONE SERVICE
   180- 9683	DTE-20 DRIVER -- DOORBELL SERVICE
   181- 9820	DTE-20 DRIVER -- START TO ELEVEN DIRECT TRANSFER
   182- 9888	DTE-20 DRIVER -- START TO ELEVEN INDIRECT TRANSFER
   183- 9958	DTE-20 DRIVER -- UPDATE AND TRANSMIT FRONT-END KEEP-ALIVE COUNT
   184- 9993	DTE-20 DRIVER -- START TO TEN QUEUE
   185-10054	DTE-20 DRIVER -- SEND STATUS TO TEN
   186-10089	DTE-20 DRIVER -- GET A BUFFER FOR INCOMING TRANSFER
   187-10140	DTE-20 DRIVER -- START BYTE TRANSFER
   188-10166	DTE-20 DRIVER -- LOAD TO-11 QUEUE NODE
   189-10193	TERMINAL DRIVER -- COPYRIGHT STATEMENT
   190-10381	TERMINAL DRIVER -- DEFINITIONS
   193-10652	TERMINAL DRIVER -- TTINI (TTY QUEUE SERVICE)
   194-10692	TERMINAL DRIVER -- TIMEOUT SERVICE
   195-10711	TERMINAL DRIVER -- ACK ALL SERVICE
   196-10728	TERMINAL DRIVER -- QUEUED PROTOCOL KEEP-ALIVE SERVICE
   197-10818	TERMINAL DRIVER -- GENERAL ERROR LOGGING
   198-10831	TERMINAL DRIVER -- CTY SERVICE
   199-10879	TERMINAL DRIVER -- CTY I/O DONE SERVICE
   200-10893	TERMINAL DRIVER -- CTY INPUT SERVICE
   201-10910	TERMINAL DRIVER -- CTY OUTPUT SERVICE
   202-10939	TERMINAL DRIVER -- $DHOUT (DH-11 OUTPUT INTERRUPT)
   203-10982	TERMINAL DRIVER -- STTYDN (REMOVE PROCESSED OUTPUT NODE)
   205-11053	TERMINAL DRIVER -- STNXT (START NEXT OUTPUT OPERATION)
   206-11100	TERMINAL DRIVER -- .DHSTO (START DH-11 OUTPUT)
   207-11129	TERMINAL DRIVER -- $TTOUT (DL11 OUTPUT INTERRUPT)
   208-11160	TERMINAL DRIVER -- .DLSTO (START DL-11 OUTPUT)
   209-11187	TERMINAL DRIVER -- .TTACK (ACKNOWLEDGE A TTY LINE)
   210-11234	TERMINAL DRIVER -- OUTPT3 (PDP-11 CTY OUTPUT ROUTINES)
   211-11312	TERMINAL DRIVER -- INPTT (PDP-11 CTY INPUT ROUTINES)
   212-11347	TERMINAL DRIVER -- ECHOB (PDP-11 CTY ECHO ROUTINES)
   213-11463	TERMINAL DRIVER -- .KW11S (KW11 LINE CLOCK INTERRUPT)
   214-11525	TERMINAL DRIVER -- $DHINP (DH-11 INPUT INTERRUPT)
   216-11748	TERMINAL DRIVER -- $TTINP (DL-11 INPUT INTERRUPT)
   217-11781	TERMINAL DRIVER -- TTSTCH (STORE CHARACTER IN TO10Q)
   218-11886	TERMINAL DRIVER -- .DLINT (DL-11E DATASET INTERRUPT SERVICE)
   219-11952	TERMINAL DRIVER -- TTCTY (CTY SERVICE)
   220-12099	TERMINAL DRIVER -- DHSAV (DH-11 REGISTER SAVE/RESTORE CO-ROUTINE)
TTYDRR	- GENERAL TERMINAL HAND	MACRO M1113  03-APR-86 20:41
TABLE OF CONTENTS

   221-12158	TERMINAL DRIVER -- .STDHL (SET UP DH-11 LINE NUMBER IN CONTROLLER)
   222-12192	TERMINAL DRIVER -- .DHSPZ (ZERO INPUT SPEED OF A LINE)
   223-12220	TERMINAL DRIVER -- .DHSPR (RESET TO DEFAULT AUTO-BAUD SPEED)
   224-12267	TERMINAL DRIVER -- .DHSPF (FLAG AUTO-BAUD REPORT)
   225-12296	TERMINAL DRIVER -- .DHSPD (SET LINE SPEED)
   226-12338	TERMINAL DRIVER -- $DMINT (DM-11/BB MODEM CONTROL INTERRUPT)
   227-12448	TERMINAL DRIVER -- .STTYD (DIALUP/HANGUP SERVICE)
   228-12492	TERMINAL DRIVER -- .DMHUP (DM-11 HANGUP)
   229-12521	TTY DRIVER -- .DMUHU (UN-HANGUP DM11)
   230-12548	TERMINAL DRIVER -- .STPDM (STOP DM-11/BB SCAN)
   231-12577	TERMINAL DRIVER -- .DLHUP (DL-11E HANGUP)
   232-12629	TERMINAL DRIVER -- .DLTMO (DL-11E MODEM CONTROL TIMEOUT)
   233-12765	TERMINAL DRIVER -- .DHTMO (DH-11 CONTROLLER TIMEOUT)
   234-12952	TERMINAL DRIVER -- .DMTMO (DM-11/BB MODEM CONTROL TIMEOUT)
   235-13047	TERMINAL DRIVER -- .TTFDI (INPUT CONTROL SERVICE)
   236-13085	TERMINAL DRIVER -- .TTERL (TERMINAL ERROR LOGGING)
   237-13142	TERMINAL DRIVER -- .TTXOF (DEVICE DEPENDENT XOFF PROCESSING)
   238-13194	TERMINAL DRIVER -- .TTSTP (STOP TERMINAL OUTPUT)
   239-13219	TERMINAL DRIVER -- .TTXON (DEVICE DEPENDENT XON PROCESSING)
   240-13286	TERMINAL DRIVER -- .TTRST (RESET A TERMINAL LINE)
   241-13343	TERMINAL DRIVER -- CHECK INPUT XOFF DELAY
   242-13371	TERMINAL DRIVER -- .TTICK (INPUT BUFFER CHECKS)
   243-13406	TERMINAL DRIVER -- .TTQDS (QUEUED PROTOCOL INPUT DISABLE SERVICE)
   244-13451	TERMINAL DRIVER -- .TTIXC (INPUT CONTROL CHECKS)
   245-13484	TERMINAL DRIVER -- .TTDIS (DISABLE INPUT FROM LINE)
   246-13567	TERMINAL DRIVER -- .TTENB (ENABLE INPUT FOR LINE)
   247-13642	TERMINAL DRIVER -- .TTBTW (BREAK-THROUGH WRITE FUNCTION)
   248-13698	TERMINAL DRIVER -- BLDPKT (BUILD A TERMINAL PACKET)
   249-13734	TERMINAL DRIVER -- .TTSW2 (FIND OFFSET INTO "STSW2" TABLE)
   250-13756	TERMINAL DRIVER -- .TFXON (FORCE AN XON FOR A LINE)
   252-13801	SYSTEM COMMON SUBROUTINES -- COPYRIGHT STATEMENT
   254-13887	SCOMM MODULE -- BITTBL (ASH/BIC/BIS SIMULATION)
   255-13907	SCOMM MODULE -- .CEFN   (CONVERT EFN)
   256-13978	SCOMM MODULE -- .CKDEL  (CLOCK DELETE)
   258-14060	SCOMM MODULE -- ..ERLG	(ERROR LOGGING)
   259-14114	SCOMM MODULE -- ..IODN	(SUBROUTINE TO COMPLETE I/O)
   260-14170	SCOMM MODULE -- ..DQRN	(DEQUEUE A NORMAL REQUEST)
   261-14288	SCOMM MODULE -- ..SEFN	(SET EVENT FLAG)
   262-14329	SCOMM MODULE -- ..DSEV	(DECLARE SIGNIFICANT EVENT)
   263-14347	SCOMM MODULE -- DIV216   (DIV R2 BY 16)
   264-14375	SCOMM MODULE -- ..NDEL	(NODE DELETE)
   265-14402	SCOMM MODULE -- ..IPRI	(INSERT NODE BY PRIORITY)
   266-14441	SCOMM MODULE -- ..NADD	(NODE ADD)
   267-14470	SCOMM MODULE -- ..PICK	(PICK A NODE)
   268-14515	SCOMM MODULE -- ..ENB0	(ENABLE TASK SWITCHING)
   269-14558	SCOMM MODULE -- ..FSTD	(FIND STD ENTRY)
   270-14609	SCOMM MODULE -- ..ALCB/..ALC2	(ALLOCATE CORE)
   271-14701	SCOMM MODULE -- ..DECB/..DECN/..DEC2 (DEALLOCATE CORE)
   272-14798	SCOMM MODULE -- ..ALOW	(ALLOCATE OR WAIT)
   273-14819	SCOMM MODULE -- ..STTY (START TERMINAL OUTPUT)
   274-14950	SCOMM MODULE -- ..STPT	(STOP TTY)
   275-15028	SCOMM MODULE -- ..STCH	(STORE CHARACTER IN TO 10 QUEUE)
   276-15069	SCOMM MODULE -- ..SACK	(SEND ACKNOWLEDGEMENT)
   277-15116	SCOMM MODULE -- ..STFC	(STORE FUNCTION)
   278-15172	SCOMM MODULE -- ..STIN	(START INDIRECT FUNCTION)
   279-15253	SCOMM MODULE -- ..STQ	(STORE IN TO 10 QUEUE)
   280-15319	SCOMM MODULE -- ..WFED	(WAIT FOR EXAMINE/DEPOSIT)
SCOMM	- COMMON DATA AND SUBRO	MACRO M1113  03-APR-86 20:41
TABLE OF CONTENTS

   282-15556	SCOMM MODULE -- ..SWED	(START AND WAIT FOR EXAMINE/DEPOSIT)
   283-15609	SCOMM MODULE -- ..DTSP	(STOP DTE PROTOCOLS)
   284-15634	SCOMM MODULE -- ..DTP2	(START SECONDARY PROTOCOL)
   285-15661	SCOMM MODULE -- ..DTP1 (START PRIMARY PROTOCOL)
   286-15687	SCOMM MODULE -- ..VXFR	(VALADATE TRANSFER)
   287-15841	SCOMM MODULE -- ..BLXO	(BLOCK OUTPUT) ..BLXI  (BLOCK INPUT)
   288-15938	SCOMM MODULE -- ..VTOL	(MAP VIRTUAL TO LOGICAL BLOCK, EXTERNAL)
   289-16023	SCOMM MODULE -- ..VVLL	(MAP VIRTUAL TO LOGICAL BLOCK, INTERNAL)
   291-16125	END
RSXFC	-- RSX20F PARAMETER FIL	MACRO M1113  03-APR-86 20:41  PAGE 1


      1						.TITLE	RSXFC	-- RSX20F PARAMETER FILE (TOPS-10 SYSTEM DEFINITION)
      2						.IDENT	/013100/
      3					;
      4					;                             COPYRIGHT (C) 1977, 1978, 1985 BY
      5					;                     DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
      6					;				ALL RIGHTS RESERVED
      7					;
      8					;       THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE  USED  AND  COPIED
      9					;       ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
     10					;       OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR ANY OTHER COPIES THERE-
     11					;       OF  MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
     12					;       NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
     13					;
     14					;       THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT
     15					;       NOTICE  AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
     16					;       CORPORATION.
     17					;
     18					;       DIGITAL ASSUMES NO RESPONSIBILITY FOR THE  USE  OR  RELIABILITY  OF  ITS
     19					;       SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
     20					;
     21					; VERSION 13-10
     22					;
     23					; ALAN D. PECKHAM  19-APR-77
     24					;
     25					; MODIFIED BY:
     26					;
     27					;		R. BELANGER -- ELIMINATE 1090T "ARPA" CONFIGURATTION
     28					;		R. BELANGER -- ADD 1091 CONFIGURATION
     29					;
     30					; FUNCTION: THIS MODULE PROVIDES THE PARAMETERS FOR ASSEMBLY OF RSX20F FOR
     31					;  THE TOPS-10 SYSTEM.
     32					;
     33					; EQUATED SYMBOLS
     34					;
     35		000001 				$TOP10	=1	; DEFINE TOPS-10 OPTION
     36
     37		000001 				$LP20	=1	; INCLUDE LP20 DRIVER
     38		000002 				L$$P20	=2	; INCLUDE 2 LP-20'S
     39		000001 				$CD11	=1	; INCLUDE CD11 CARD READER DRIVER
     40		000001 				$RP04	=1	; INCLUDE RP04 DISK DRIVER
     41		000001 				$FE	=1	; INCLUDE FE PSEUDO-DEVICE DRIVER
     42		000001 				$F11	=1	; INCLUDE FILES-11 ACP
     43		000001 				$DH11	=1	; INCLUDE DH11 DRIVER
     44		000010 				D$$H11	=8.	; INCLUDE 8 DH-11'S
     45		000001 				$DBDTE	=1	; INCLUDE DTE20 DEBUGGING CODE
     46		000001 				$DTE	=1	; INCLUDE DTE20 DTE DRIVER
     47		000001 				R$$11D	=1	; RSX-11D BASE
     48
     49					.IF DF	$T1091
     50						$TOP10	=1	; DEFINE TOPS-10 BASE FOR 1091
     51					.ENDC			; $T1091
     52
     53					.IF DF	$TOP10
     54					.IF NDF	$T1091
     55		000001 				$DTA	=1	; INCLUDE DECTAPE DRIVER FOR TOPS-10
     56					.IFF
     57						$RX11	=1	; INCLUDE FLOPPY DRIVER FOR TOPS-10/1091
RSXFC	-- RSX20F PARAMETER FIL	MACRO M1113  03-APR-86 20:41  PAGE 1-1


     58					.ENDC			; $T1091
     59					.ENDC			; $TOP10
     60
     61					.IF DF	$TOP20
     62						$RX11	=1	; INCLUDE FLOPPY DRIVER
     63					.ENDC			; $TOP20
RSXFC	-- RSX20F PARAMETER FIL	MACRO M1113  03-APR-86 20:41  PAGE 2


     65
     66						.TITLE	RSX20F	-- RESIDENT EXECUTIVE (SYSTEM DEFINITION)
     67						.IDENT	/015500/
     68						.ENABL	AMA
     69						.LIST	MEB
     70						.NLIST	CND
     71					;
     72					;                             COPYRIGHT (C) 1975, 1984, 1985 BY
     73					;                     DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
     74					;			ALL RIGHTS RESERVED
     75					;       THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE  USED  AND  COPIED
     76					;       ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
     77					;       OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR ANY OTHER COPIES THERE-
     78					;       OF  MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
     79					;       NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
     80					;
     81					;       THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT
     82					;       NOTICE  AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
     83					;       CORPORATION.
     84					;
     85					;       DIGITAL ASSUMES NO RESPONSIBILITY FOR THE  USE  OR  RELIABILITY  OF  ITS
     86					;       SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
     87					;
     88					; R.  MCLEAN   19-MAR-75
     89					;
     90					;	VERSION 15-50
     91					;
     92					; MODIFIED BY:
     93					;
     94					;
     95					;
RSX20F	-- RESIDENT EXECUTIVE (	MACRO M1113  03-APR-86 20:41  PAGE 3


     97					;
     98					; SET VERSION OF RSX20F EXEC HERE
     99					;
    100		000015 			RSX$$V	=	15		; VERSION 15
    101		000050 			RSX$$E	=	50		; EDIT 50
    102					;
    103					; RELEASE VERSION
    104					;
    105		000126 			RSX$$K	=	'V		; KEY FOR RELEASE-TYPE
    106									; "X" -- EXPERIMENTAL
    107									; "Y" -- FIELD/LOAD TEST
    108									; "V" -- RELEASE
    109		000000 			RSX$$F	=	0		; DEFINE FORM AS NULL
    112		000101 			RSX$$F	=	'A		; TOPS-10 FORM OF THE EXEC.
    123					;
    124					; DTE-20 REGISTER OFFSETS
    125					;
    126		000036 			DAG3	=36
    127		000034 			STATD	=34
    128		000032 			DAG2	=32
    129		000030 			DAG1	=30
    130		000022 			T11AD	=22
    131		000020 			T10AD	=20
    132		000016 			T11BC	=16
    133		000010 			TNAD1	=10
    134		000012 			TNAD2	=12
    135		000006 			DXWD1	=6
    136		000004 			DXWD2	=4
    137		000002 			DXWD3	=2
RSX20F	-- RESIDENT EXECUTIVE (	MACRO M1113  03-APR-86 20:41  PAGE 4


    139					;+
    140					; MACRO TO SET IDENT FOR EXEC MODULES.
    141					; FORMAT OF CALL IS:
    142					;	IDENT$	VERSION,EDIT
    143					; OR
    144					;	IDENT$	VERSION,EDIT,RSX$$F
    145					; IF MODULE CODING CHANGES WITH DIFFERENT FORMS
    146					;-
    147
    148						.MACRO	IDENT$ VER,EDT,FRM,NUM
    149						.IF	B,NUM
    150						.IF	B,FRM
    151						IDENT$	\VER,\EDT,0,0
    152						.IFF
    153						.IF	EQ,<FRM-'A>
    154						IDENT$	\VER,\EDT,A,0
    155						.IFF
    156						.IF	EQ,<FRM-'B>
    157						IDENT$	\VER,\EDT,B,0
    158						.IFF
    159						IDENT$	\VER,\EDT,E,0
    160						.ENDC
    161						.ENDC
    162						.ENDC
    163						.MEXIT
    164						.IFF
    165						.IF	GE,VER-10
    166						.IF	GE,EDT-10
    167						.LIST
    168						.IDENT	/'FRM'VER'EDT'0/
    169						.NLIST
    170						.IFF
    171						.LIST
    172						.IDENT	/'FRM'VER'0'EDT'0/
    173						.NLIST
    174						.ENDC
    175						.IFF
    176						.IF	GE,EDT-10
    177						.LIST
    178						.IDENT	/'FRM'0'VER'EDT'0/
    179						.NLIST
    180						.IFF
    181						.LIST
    182						.IDENT	/'FRM'0'VER'0'EDT'0/
    183						.NLIST
    184						.ENDC
    185						.ENDC
    186						.ENDC
    187						.ENDM	IDENT$
RSX20F	-- RESIDENT EXECUTIVE (	MACRO M1113  03-APR-86 20:41  PAGE 6


    190
    191						.TITLE	LC -- LOW CORE FOR RSX20F
    192	000000					IDENT$	15,05,RSX$$F
						.IDENT	/A15050/
    193					;
    194					;
    195					;                             COPYRIGHT (C) 1975, 1984, 1985 BY
    196					;                     DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
    197					;			ALL RIGHTS RESERVED.
    198					;       THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE  USED  AND  COPIED
    199					;       ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
    200					;       OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR ANY OTHER COPIES THERE-
    201					;       OF  MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
    202					;       NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
    203					;
    204					;       THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT
    205					;       NOTICE  AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
    206					;       CORPORATION.
    207					;
    208					;       DIGITAL ASSUMES NO RESPONSIBILITY FOR THE  USE  OR  RELIABILITY  OF  ITS
    209					;       SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
    210					;
    211					;		MODULE: LOW CORE
    212					;
    213					;		VERSION: 15-05
    214					;
    215					;		AUTHOR: R. MCLEAN
    216					;
    217					;		DATE: 19 JUL 75
    218					;
    219					;
    220					;	THIS MODULE CONTAINS:
    221					;
    222					;	1 -- CODE TO SERVICE LOW CORE TRAPS AND ERRORS
    223					;	2 -- TRAP VECTORS
    224					;	3 -- SYSTEM COMMON DATABASE
    225					;	4 -- INITIALIZATION CODE
    226					;	5 -- PATCH SPACE
    227					;
    228					; MODIFICATIONS:
    229					;
    230					;	NO.	DATE		PROGRAMMER	PURPOSE
    231					;	---	----		----------	-------
    232					;	001	03-FEB-77	R. BELANGER	ADD DL11E INTERRUPT VECTORS
    233					;	002	15-MAR-77	R. BELANGER	LIMIT SIZE OF PATCH SPACE
    234					;						TO 40 BYTES AND DEFINE SYMBOL .PAT..
    235					;	003	18-AUG-77	R. BELANGER	DIFFERENTIATE BETWEEN DTE-20
    236					;						BUS TIMEOUTS AND OTHERS
    237					;	004	28-AUG-77	R. BELANGER	LOAD CRASH CODE INTO 0 AND 2
    238					; TCO 4.2212	08-MAR-79	R. BELANGER	INTEGRATE SYTEM COMMON DATABASE
    239					; TCO 4.2217	19-MAR-79	R. BELANGER	SNAPSHOT EBUS PARITY ERRORS
    240					; TCO 4.2245	10-APR-79	R. BELANGER	ADD FRAMING ERROR LOGGING
    241					; TCO 4.2263	29-MAY-79	R. BELANGER	PAD DECTAPE DRIVER DATABASE
    242					; TCO 4.2309	25-JUN-79	R. BELANGER	ADD BELL 212A MODEM SUPPORT
    243					; TCO 4.2314	29-JUN-79	R. BELANGER	SNAPSHOT I/O PAGE ON CRASH
    244					; TCO 4.2333	16-JUL-79	R. BELANGER	ADD KL10 HARDWARE DATA
    245					; TCO 5.1004	12-SEP-79	R. BELANGER	ADD NON-CONTIGUOUS DEVICE SUPPORT
LC -- LOW CORE FOR RSX20F	MACRO M1113  03-APR-86 20:41  PAGE 6-1


    246					; TCO 5.1008	11-OCT-79	R. BELANGER	ADD EBUS PARITY ERROR AND DEX ERROR LOGGING
    247					; TCO 5.1009	15-0CT-79	R. BELANGER	ADD RH-11 ERROR LOGGING
    248					; TCO 5.1015	25-OCT-79	R. BELANGER	ADD TERMINAL INPUT CONTROL TABLE
    249					; TCO 4.1.1035	16-NOV-79	R. BELANGER	ADD QUEUE ARBITRATION
    250					; TCO 4.1.1066	10-JAN-80	R. BELANGER	ROUND-ROBIN DEFERRED ACKS
    251					; TCO 4.1.1091	12-FEB-80	R. BELANGER	FIX MISSING DM-11/BB'S
    252					; TCO 4.1.1092	25-FEB-80	R. BELANGER	LOCAL INPUT CONTROL
    253					; TCO 4.1.1104	05-MAR-80	R. BELANGER	CHANGE KEEP-ALIVE
    254					; TCO 4.1.1121	19-MAR-80	R. BELANGER	SUPPORT BLOCKED DTE-20
    255					; TCO 4.1.1137	-5-APR-80	R. BELANGER	REDEFINE PATCH SPACE TO UNUSED VECTORS
    256					;						REMOVE DEFERRED ACK SUPPORT
    257					;
    258					;17-DEC-82  TCO 6.1509	D. WEAVER
    259					;	FIX CONDITIONAL GENERATION OF ATL SO THAT A NODE'S BACKWARD POINTER
    260					;	DOESN'T POINT TO ITSELF.
    261					;19-JAN-83  TCO 6.1508	D. WEAVER
    262					;	ADD WORD .KLCPU TO GET THE CPU NUMBER OF THE KL WE ARE RUNNING ON
    263					;	SO WE CAN DO WARM RESTART ON SMP SYSTEMS (USED BY KLINIT)
    264					;15-MAR-83  TCO 6.1543  D.WEAVER
    265					;	ADD TABLE .KLMF2 WHICH IS A TABLE OF RETRY COUNTERS FOR EACH
    266					;	MF20 CONTROLLER.  MEMCON WILL NOW TRY TO FORCE THE CONTROLLER
    267					;	FOR N RETRIES BEFORE DELETING IT.
    268					;22-MAR-83  TCO 6.1657	D. WEAVER
    269					;	ADD WORD ABCHAR TO GET THE LAST AUTOBAUD CHARACTER TYPED (DEBUGGING)
    270					;09-JUN-83  TCO 6.1675	D. WEAVER
    271					;	MOVE .ERCOD FROM KLINIT INTO THE FRONT-END STATUS BLOCK FOR WARM
    272					;	RESTART AND RENAME IT TO .ERRCD.  ALSO MOVE KLPCRG FROM KLINIT TO
    273					;	THE STATUS BLOCK AND RENAME IT TO BE .ERRPC.
    274					;       REMOVE AUTO-TAKE FLAG AS IT IS NOT LONGER VALID.
    275					;12-JUN-83  TCO 6.1724	D. WEAVER
    276					;	ADD COPYRIGHT TO LOW CORE AFTER THE FE STATUS BLOCK.
    277					;
LC -- LOW CORE FOR RSX20F	MACRO M1113  03-APR-86 20:41  PAGE 7


    279					;
    280					;
    281					; MACRO LIBRARY CALLS
    282					;
    283						.MCALL	.CRASH,MFPS,CALL
    284						.MCALL	.PUDEN,.STDEN,.ATLEN
    285						.MCALL	$DEF,F11DF$
    286						.MCALL	.TPDEN,.PUDEN,.DQPEN
    287
    288	000000					$DEF
    289	000000					F11DF$
    290
    291						.MACRO	RSXVR$ KEY,FRM,VER,EDT,NUM
    292						.IF	B,NUM
    293						.IF	NB,FRM
    294						RSXVR$	\KEY,\FRM,\VER,\EDT,0
    295						.IFF
    296						RSXVR$	\KEY,200,\VER,\EDT,0
    297						.ENDC
    298						.MEXIT
    299						.IFF
    300						.IF	GE,VER-10
    301						.IF	GE,EDT-10
    302						.ASCIZ	<KEY><FRM>\'VER'-'EDT'\<200>
    303						.IFF
    304						.ASCIZ	<KEY><FRM>\'VER'-0'EDT'\<200>
    305						.ENDC
    306						.IFF
    307						.IF	GE,EDT-10
    308						.ASCIZ	<KEY><FRM>\0'VER'-'EDT'\<200>
    309						.IFF
    310						.ASCIZ	<KEY><FRM>\0'VER'-0'EDT'\<200>
    311						.ENDC
    312						.ENDC
    313						.ENDC
    314						.ENDM	RSXVR$
    315					;
    316					;	MACRO FOR GENERATING LOW CORE
    317					;
    318						.MACRO	PSW	PRI,TRPADR,UNIT
    319						.IF	B,<TRPADR>
    320						 .WORD	.-LOWCOD+1
    321						.IFF
    322						 .WORD	TRPADR
    323						.ENDC		; IFB <TRPADR>
    324						.IF	B,<UNIT>
    325						 .WORD	0+<40*PRI>+4000
    326						.IFF
    327						 .WORD	UNIT+<40*PRI>+4000
    328						.ENDC		; IFB <UNIT>
    329						.ENDM		; PSW
    330					;
    331						.MACRO	DHPSW	U
    332						 .WORD	$DMINT		; DM-11/BB #'U INTERRUPT
    333						 .WORD	U+<40*6>+4000
    334						 .WORD	.-LOWCOD+1	; ILLEGAL INTERRUPT
    335						 .WORD	<40*6>+4000
LC -- LOW CORE FOR RSX20F	MACRO M1113  03-APR-86 20:41  PAGE 7-1


    336						 .WORD	$DHINP		; DH-11 #'U INPUT INTERRUPT
    337						 .WORD	U+<40*6>+4000
    338						 .WORD	$DHOUT		; DH-11 #'U OUTPUT INTERRUPT
    339						 .WORD	U+<40*6>+4000
    340						.ENDM
LC -- LOW CORE FOR RSX20F	MACRO M1113  03-APR-86 20:41  PAGE 8
LOW CORE -- TRAP VECTORS

    342						.SBTTL	LOW CORE -- TRAP VECTORS
    343
    344		000000'			LOWCOD==.
    345	000000					PSW	6		; ILLEGAL INTERRUPT
	000000	000001 				 .WORD	.-LOWCOD+1
	000002	004300 				 .WORD	0+<40*6>+4000
    346					;
    347	000004					PSW	7,COMTRP,0	; TRAP TO 4 (TIMEOUT)
	000004	011562'				 .WORD	COMTRP
	000006	004340 				 .WORD	0+<40*7>+4000
    348					;
    349	000010					PSW	7,COMTRP,2	; RESERVED INSTRUCTION
	000010	011562'				 .WORD	COMTRP
	000012	004342 				 .WORD	2+<40*7>+4000
    350					;
    351	000014					PSW	6,COMTRP,4	; T BIT OR BPT TRAP
	000014	011562'				 .WORD	COMTRP
	000016	004304 				 .WORD	4+<40*6>+4000
    352					;
    353	000020					PSW	6,COMTRP,6	; IOT TRAP
	000020	011562'				 .WORD	COMTRP
	000022	004306 				 .WORD	6+<40*6>+4000
    354					;
    355	000024					PSW	7,.PWRDN	; POWER FAIL (POWER DOWN)
	000024	020164'				 .WORD	.PWRDN
	000026	004340 				 .WORD	0+<40*7>+4000
    356					;
    357	000030					PSW	7,EMTTRP,STXDX	; EMT TRAP
	000030	013266'				 .WORD	EMTTRP
	000032	004340 				 .WORD	STXDX+<40*7>+4000
    358					;
    359	000034					PSW	6,.DRSRN	; TRAP TRAP
	000034	013602'				 .WORD	.DRSRN
	000036	004300 				 .WORD	0+<40*6>+4000
    360					;
    361	000040				.PAT1.::			; [4.1.1137] PATCH SPACE -- 20 BYTES
    362		000004 				.REPT	4
    363						PSW	6		; ILLEGAL INTERRUPTS
    364						.ENDR
	000040	000041 				 .WORD	.-LOWCOD+1
	000042	004300 				 .WORD	0+<40*6>+4000
	000044	000045 				 .WORD	.-LOWCOD+1
	000046	004300 				 .WORD	0+<40*6>+4000
	000050	000051 				 .WORD	.-LOWCOD+1
	000052	004300 				 .WORD	0+<40*6>+4000
	000054	000055 				 .WORD	.-LOWCOD+1
	000056	004300 				 .WORD	0+<40*6>+4000
    365					;
    366	000060					PSW	6,$TTINP,0	; TTY LINE 0 INPUT (CTY)
	000060	037220'				 .WORD	$TTINP
	000062	004300 				 .WORD	0+<40*6>+4000
    367	000064					PSW	6,$TTOUT,0	; TTY LINE 0 OUTPUT (CTY)
	000064	035074'				 .WORD	$TTOUT
	000066	004300 				 .WORD	0+<40*6>+4000
    368					;
    369		000002 				.REPT	2.
    370						PSW	6		; ILLEGAL TRAPS
LC -- LOW CORE FOR RSX20F	MACRO M1113  03-APR-86 20:41  PAGE 8-1
LOW CORE -- TRAP VECTORS

    371						.ENDR
	000070	000071 				 .WORD	.-LOWCOD+1
	000072	004300 				 .WORD	0+<40*6>+4000
	000074	000075 				 .WORD	.-LOWCOD+1
	000076	004300 				 .WORD	0+<40*6>+4000
    372					;
    373	000100					PSW	6,.KW11S	; CLOCK INTERRUPT
	000100	036236'				 .WORD	.KW11S
	000102	004300 				 .WORD	0+<40*6>+4000
    374					;
    375		000002 				.REPT	2
    376						PSW	6		; ILLEGAL INTERRUPT
    377						.ENDR
	000104	000105 				 .WORD	.-LOWCOD+1
	000106	004300 				 .WORD	0+<40*6>+4000
	000110	000111 				 .WORD	.-LOWCOD+1
	000112	004300 				 .WORD	0+<40*6>+4000
    378					;
    379	000114					PSW	7,.PARER	; PARITY ERROR
	000114	012040'				 .WORD	.PARER
	000116	004340 				 .WORD	0+<40*7>+4000
    380					;
    381	000120				.PAT2.::			; [4.1.1137] PATCH SPACE -- 74 BYTES
    382		000017 				.REPT	15.
    383						PSW	6		; ILLEGAL INTERRUPT
    384						.ENDR
	000120	000121 				 .WORD	.-LOWCOD+1
	000122	004300 				 .WORD	0+<40*6>+4000
	000124	000125 				 .WORD	.-LOWCOD+1
	000126	004300 				 .WORD	0+<40*6>+4000
	000130	000131 				 .WORD	.-LOWCOD+1
	000132	004300 				 .WORD	0+<40*6>+4000
	000134	000135 				 .WORD	.-LOWCOD+1
	000136	004300 				 .WORD	0+<40*6>+4000
	000140	000141 				 .WORD	.-LOWCOD+1
	000142	004300 				 .WORD	0+<40*6>+4000
	000144	000145 				 .WORD	.-LOWCOD+1
	000146	004300 				 .WORD	0+<40*6>+4000
	000150	000151 				 .WORD	.-LOWCOD+1
	000152	004300 				 .WORD	0+<40*6>+4000
	000154	000155 				 .WORD	.-LOWCOD+1
	000156	004300 				 .WORD	0+<40*6>+4000
	000160	000161 				 .WORD	.-LOWCOD+1
	000162	004300 				 .WORD	0+<40*6>+4000
	000164	000165 				 .WORD	.-LOWCOD+1
	000166	004300 				 .WORD	0+<40*6>+4000
	000170	000171 				 .WORD	.-LOWCOD+1
	000172	004300 				 .WORD	0+<40*6>+4000
	000174	000175 				 .WORD	.-LOWCOD+1
	000176	004300 				 .WORD	0+<40*6>+4000
	000200	000201 				 .WORD	.-LOWCOD+1
	000202	004300 				 .WORD	0+<40*6>+4000
	000204	000205 				 .WORD	.-LOWCOD+1
	000206	004300 				 .WORD	0+<40*6>+4000
	000210	000211 				 .WORD	.-LOWCOD+1
	000212	004300 				 .WORD	0+<40*6>+4000
    385					;
LC -- LOW CORE FOR RSX20F	MACRO M1113  03-APR-86 20:41  PAGE 8-2
LOW CORE -- TRAP VECTORS

    387	000214					PSW	6,$DTINT	; DECTAPE INTERRUPT
	000214	000000G				 .WORD	$DTINT
	000216	004300 				 .WORD	0+<40*6>+4000
    391					;
    392		000002 				.REPT	2.
    393						PSW	6		; ILLEGAL INTERRUPT
    394						.ENDR
	000220	000221 				 .WORD	.-LOWCOD+1
	000222	004300 				 .WORD	0+<40*6>+4000
	000224	000225 				 .WORD	.-LOWCOD+1
	000226	004300 				 .WORD	0+<40*6>+4000
    395					;
    396	000230					PSW	4,$CDINT	; CARD READER INTERRUPT
	000230	000000G				 .WORD	$CDINT
	000232	004200 				 .WORD	0+<40*4>+4000
    397					;
    398	000234				.PAT3.::			; [4.1.1137] PATCH SPACE -- 20 BYTES
    399		000004 				.REPT	4.
    400						PSW	6		; ILLEGAL INTERRUPT
    401						.ENDR
	000234	000235 				 .WORD	.-LOWCOD+1
	000236	004300 				 .WORD	0+<40*6>+4000
	000240	000241 				 .WORD	.-LOWCOD+1
	000242	004300 				 .WORD	0+<40*6>+4000
	000244	000245 				 .WORD	.-LOWCOD+1
	000246	004300 				 .WORD	0+<40*6>+4000
	000250	000251 				 .WORD	.-LOWCOD+1
	000252	004300 				 .WORD	0+<40*6>+4000
    402					;
    403	000254					PSW	4,.DBINT	; RH-11 (RP04/RP06) INTERRUPT
	000254	000000G				 .WORD	.DBINT
	000256	004200 				 .WORD	0+<40*4>+4000
    404					;
    405	000260					PSW	6		; ILLEGAL INTERRUPT
	000260	000261 				 .WORD	.-LOWCOD+1
	000262	004300 				 .WORD	0+<40*6>+4000
    406					;
    410	000264					PSW	6		; RX-11 INTERRUPT
	000264	000265 				 .WORD	.-LOWCOD+1
	000266	004300 				 .WORD	0+<40*6>+4000
    412					;
    413	000270					PSW	6		; ILLEGAL INTERRUPT
	000270	000271 				 .WORD	.-LOWCOD+1
	000272	004300 				 .WORD	0+<40*6>+4000
    414	000274					PSW	6		; ILLEGAL INTERRUPT
	000274	000275 				 .WORD	.-LOWCOD+1
	000276	004300 				 .WORD	0+<40*6>+4000
    415					;
    416	000300					PSW	6,$TTINP,1	; DL-11E # 0 INPUT (KLINIK) INTERRUPT
	000300	037220'				 .WORD	$TTINP
	000302	004301 				 .WORD	1+<40*6>+4000
    417	000304					PSW	6,$TTOUT,1	; DL-11E # 0 OUTPUT (KLINIK) INTERRUPT
	000304	035074'				 .WORD	$TTOUT
	000306	004301 				 .WORD	1+<40*6>+4000
    418					;
    419	000310					PSW	6		; ILLEGAL INTERRUPT
	000310	000311 				 .WORD	.-LOWCOD+1
LC -- LOW CORE FOR RSX20F	MACRO M1113  03-APR-86 20:41  PAGE 8-3
LOW CORE -- TRAP VECTORS

	000312	004300 				 .WORD	0+<40*6>+4000
    420	000314					PSW	6		; ILLEGAL INTERRUPT
	000314	000315 				 .WORD	.-LOWCOD+1
	000316	004300 				 .WORD	0+<40*6>+4000
    421					;
    422		000000 				U=0
    423						.IRP	U,<0,1,2,3,4,5,6,7>
    424						DHPSW	U
    425					;
    426						.ENDR
	000320	040766'				 .WORD	$DMINT		; DM-11/BB #0 INTERRUPT
	000322	004300 				 .WORD	0+<40*6>+4000
	000324	000325 				 .WORD	.-LOWCOD+1	; ILLEGAL INTERRUPT
	000326	004300 				 .WORD	<40*6>+4000
	000330	036400'				 .WORD	$DHINP		; DH-11 #0 INPUT INTERRUPT
	000332	004300 				 .WORD	0+<40*6>+4000
	000334	034422'				 .WORD	$DHOUT		; DH-11 #0 OUTPUT INTERRUPT
	000336	004300 				 .WORD	0+<40*6>+4000
	000340	040766'				 .WORD	$DMINT		; DM-11/BB #1 INTERRUPT
	000342	004301 				 .WORD	1+<40*6>+4000
	000344	000345 				 .WORD	.-LOWCOD+1	; ILLEGAL INTERRUPT
	000346	004300 				 .WORD	<40*6>+4000
	000350	036400'				 .WORD	$DHINP		; DH-11 #1 INPUT INTERRUPT
	000352	004301 				 .WORD	1+<40*6>+4000
	000354	034422'				 .WORD	$DHOUT		; DH-11 #1 OUTPUT INTERRUPT
	000356	004301 				 .WORD	1+<40*6>+4000
	000360	040766'				 .WORD	$DMINT		; DM-11/BB #2 INTERRUPT
	000362	004302 				 .WORD	2+<40*6>+4000
	000364	000365 				 .WORD	.-LOWCOD+1	; ILLEGAL INTERRUPT
	000366	004300 				 .WORD	<40*6>+4000
	000370	036400'				 .WORD	$DHINP		; DH-11 #2 INPUT INTERRUPT
	000372	004302 				 .WORD	2+<40*6>+4000
	000374	034422'				 .WORD	$DHOUT		; DH-11 #2 OUTPUT INTERRUPT
	000376	004302 				 .WORD	2+<40*6>+4000
	000400	040766'				 .WORD	$DMINT		; DM-11/BB #3 INTERRUPT
	000402	004303 				 .WORD	3+<40*6>+4000
	000404	000405 				 .WORD	.-LOWCOD+1	; ILLEGAL INTERRUPT
	000406	004300 				 .WORD	<40*6>+4000
	000410	036400'				 .WORD	$DHINP		; DH-11 #3 INPUT INTERRUPT
	000412	004303 				 .WORD	3+<40*6>+4000
	000414	034422'				 .WORD	$DHOUT		; DH-11 #3 OUTPUT INTERRUPT
	000416	004303 				 .WORD	3+<40*6>+4000
	000420	040766'				 .WORD	$DMINT		; DM-11/BB #4 INTERRUPT
	000422	004304 				 .WORD	4+<40*6>+4000
	000424	000425 				 .WORD	.-LOWCOD+1	; ILLEGAL INTERRUPT
	000426	004300 				 .WORD	<40*6>+4000
	000430	036400'				 .WORD	$DHINP		; DH-11 #4 INPUT INTERRUPT
	000432	004304 				 .WORD	4+<40*6>+4000
	000434	034422'				 .WORD	$DHOUT		; DH-11 #4 OUTPUT INTERRUPT
	000436	004304 				 .WORD	4+<40*6>+4000
	000440	040766'				 .WORD	$DMINT		; DM-11/BB #5 INTERRUPT
	000442	004305 				 .WORD	5+<40*6>+4000
	000444	000445 				 .WORD	.-LOWCOD+1	; ILLEGAL INTERRUPT
	000446	004300 				 .WORD	<40*6>+4000
	000450	036400'				 .WORD	$DHINP		; DH-11 #5 INPUT INTERRUPT
	000452	004305 				 .WORD	5+<40*6>+4000
	000454	034422'				 .WORD	$DHOUT		; DH-11 #5 OUTPUT INTERRUPT
LC -- LOW CORE FOR RSX20F	MACRO M1113  03-APR-86 20:41  PAGE 8-4
LOW CORE -- TRAP VECTORS

	000456	004305 				 .WORD	5+<40*6>+4000
	000460	040766'				 .WORD	$DMINT		; DM-11/BB #6 INTERRUPT
	000462	004306 				 .WORD	6+<40*6>+4000
	000464	000465 				 .WORD	.-LOWCOD+1	; ILLEGAL INTERRUPT
	000466	004300 				 .WORD	<40*6>+4000
	000470	036400'				 .WORD	$DHINP		; DH-11 #6 INPUT INTERRUPT
	000472	004306 				 .WORD	6+<40*6>+4000
	000474	034422'				 .WORD	$DHOUT		; DH-11 #6 OUTPUT INTERRUPT
	000476	004306 				 .WORD	6+<40*6>+4000
	000500	040766'				 .WORD	$DMINT		; DM-11/BB #7 INTERRUPT
	000502	004307 				 .WORD	7+<40*6>+4000
	000504	000505 				 .WORD	.-LOWCOD+1	; ILLEGAL INTERRUPT
	000506	004300 				 .WORD	<40*6>+4000
	000510	036400'				 .WORD	$DHINP		; DH-11 #7 INPUT INTERRUPT
	000512	004307 				 .WORD	7+<40*6>+4000
	000514	034422'				 .WORD	$DHOUT		; DH-11 #7 OUTPUT INTERRUPT
	000516	004307 				 .WORD	7+<40*6>+4000
    427		000040 				U=<20-D$$H11>*4
    428					;
    429	000520				.PAT4.::			; [4.1.1137] PATCH SPACE -- 200 BYTES
    430		000040 				.REPT	U
    431						PSW	6		; ILLEGAL INTERRUPT
    432						.ENDR
	000520	000521 				 .WORD	.-LOWCOD+1
	000522	004300 				 .WORD	0+<40*6>+4000
	000524	000525 				 .WORD	.-LOWCOD+1
	000526	004300 				 .WORD	0+<40*6>+4000
	000530	000531 				 .WORD	.-LOWCOD+1
	000532	004300 				 .WORD	0+<40*6>+4000
	000534	000535 				 .WORD	.-LOWCOD+1
	000536	004300 				 .WORD	0+<40*6>+4000
	000540	000541 				 .WORD	.-LOWCOD+1
	000542	004300 				 .WORD	0+<40*6>+4000
	000544	000545 				 .WORD	.-LOWCOD+1
	000546	004300 				 .WORD	0+<40*6>+4000
	000550	000551 				 .WORD	.-LOWCOD+1
	000552	004300 				 .WORD	0+<40*6>+4000
	000554	000555 				 .WORD	.-LOWCOD+1
	000556	004300 				 .WORD	0+<40*6>+4000
	000560	000561 				 .WORD	.-LOWCOD+1
	000562	004300 				 .WORD	0+<40*6>+4000
	000564	000565 				 .WORD	.-LOWCOD+1
	000566	004300 				 .WORD	0+<40*6>+4000
	000570	000571 				 .WORD	.-LOWCOD+1
	000572	004300 				 .WORD	0+<40*6>+4000
	000574	000575 				 .WORD	.-LOWCOD+1
	000576	004300 				 .WORD	0+<40*6>+4000
	000600	000601 				 .WORD	.-LOWCOD+1
	000602	004300 				 .WORD	0+<40*6>+4000
	000604	000605 				 .WORD	.-LOWCOD+1
	000606	004300 				 .WORD	0+<40*6>+4000
	000610	000611 				 .WORD	.-LOWCOD+1
	000612	004300 				 .WORD	0+<40*6>+4000
	000614	000615 				 .WORD	.-LOWCOD+1
	000616	004300 				 .WORD	0+<40*6>+4000
	000620	000621 				 .WORD	.-LOWCOD+1
	000622	004300 				 .WORD	0+<40*6>+4000
LC -- LOW CORE FOR RSX20F	MACRO M1113  03-APR-86 20:41  PAGE 8-5
LOW CORE -- TRAP VECTORS

	000624	000625 				 .WORD	.-LOWCOD+1
	000626	004300 				 .WORD	0+<40*6>+4000
	000630	000631 				 .WORD	.-LOWCOD+1
	000632	004300 				 .WORD	0+<40*6>+4000
	000634	000635 				 .WORD	.-LOWCOD+1
	000636	004300 				 .WORD	0+<40*6>+4000
	000640	000641 				 .WORD	.-LOWCOD+1
	000642	004300 				 .WORD	0+<40*6>+4000
	000644	000645 				 .WORD	.-LOWCOD+1
	000646	004300 				 .WORD	0+<40*6>+4000
	000650	000651 				 .WORD	.-LOWCOD+1
	000652	004300 				 .WORD	0+<40*6>+4000
	000654	000655 				 .WORD	.-LOWCOD+1
	000656	004300 				 .WORD	0+<40*6>+4000
	000660	000661 				 .WORD	.-LOWCOD+1
	000662	004300 				 .WORD	0+<40*6>+4000
	000664	000665 				 .WORD	.-LOWCOD+1
	000666	004300 				 .WORD	0+<40*6>+4000
	000670	000671 				 .WORD	.-LOWCOD+1
	000672	004300 				 .WORD	0+<40*6>+4000
	000674	000675 				 .WORD	.-LOWCOD+1
	000676	004300 				 .WORD	0+<40*6>+4000
	000700	000701 				 .WORD	.-LOWCOD+1
	000702	004300 				 .WORD	0+<40*6>+4000
	000704	000705 				 .WORD	.-LOWCOD+1
	000706	004300 				 .WORD	0+<40*6>+4000
	000710	000711 				 .WORD	.-LOWCOD+1
	000712	004300 				 .WORD	0+<40*6>+4000
	000714	000715 				 .WORD	.-LOWCOD+1
	000716	004300 				 .WORD	0+<40*6>+4000
    433					;
    434	000720					PSW	6,$TTINP,4	; DL-11E # 3 INPUT (DN20 #2)
	000720	037220'				 .WORD	$TTINP
	000722	004304 				 .WORD	4+<40*6>+4000
    435	000724					PSW	6,$TTOUT,4	; DL-11E # 3 OUTPUT (DN20 #2)
	000724	035074'				 .WORD	$TTOUT
	000726	004304 				 .WORD	4+<40*6>+4000
    436					;
    437	000730					PSW	6,$TTINP,3	; DL-11E # 2 INPUT (DN20 #1)
	000730	037220'				 .WORD	$TTINP
	000732	004303 				 .WORD	3+<40*6>+4000
    438	000734					PSW	6,$TTOUT,3	; DL-11E # 2 OUTPUT (DN20 #1)
	000734	035074'				 .WORD	$TTOUT
	000736	004303 				 .WORD	3+<40*6>+4000
    439					;
    440	000740					PSW	6,$TTINP,2	; DL-11E # 1 INPUT (DN20 #0)
	000740	037220'				 .WORD	$TTINP
	000742	004302 				 .WORD	2+<40*6>+4000
    441	000744					PSW	6,$TTOUT,2	; DL-11E # 1 OUTPUT (DN20 #0)
	000744	035074'				 .WORD	$TTOUT
	000746	004302 				 .WORD	2+<40*6>+4000
    442					;
    444	000750					PSW	4,$LPINT,1	; LP-20 #1 INTERRUPT
	000750	000000G				 .WORD	$LPINT
	000752	004201 				 .WORD	1+<40*4>+4000
    445	000754					PSW	4,$LPINT,0	; LP-20 #0 INTERRUPT
	000754	000000G				 .WORD	$LPINT
LC -- LOW CORE FOR RSX20F	MACRO M1113  03-APR-86 20:41  PAGE 8-6
LOW CORE -- TRAP VECTORS

	000756	004200 				 .WORD	0+<40*4>+4000
    450					;
    451		000004 				.REPT	4
    452						PSW	7,.DTINT	; DTE-20 # 0 INTERRUPT VECTORS
    453						.ENDR
	000760	030442'				 .WORD	.DTINT
	000762	004340 				 .WORD	0+<40*7>+4000
	000764	030442'				 .WORD	.DTINT
	000766	004340 				 .WORD	0+<40*7>+4000
	000770	030442'				 .WORD	.DTINT
	000772	004340 				 .WORD	0+<40*7>+4000
	000774	030442'				 .WORD	.DTINT
	000776	004340 				 .WORD	0+<40*7>+4000
    454					;
LC -- LOW CORE FOR RSX20F	MACRO M1113  03-APR-86 20:41  PAGE 9
LOW CORE -- COMMON GLOBAL DATA

    456						.SBTTL	LOW CORE -- COMMON GLOBAL DATA
    457
    458	001000				.FESTB::
    459	001000	004176 				.WORD	<.LCEND-.FESTB>/2 ; [4.2333] WORD SIZE OF THIS STATUS BLOCK
    460	001002				.EXEND::
    461	001002	000000 	000000 			.LIMIT			; DEFINE LIMITS OF THE FRONT-END
    462									; FIRST WORD LOW LIMIT
    463									; SECOND WORD IS HIGH LIMIT
    464					;
    465					;	CURRENT TASK POINTER (POINTS TO ACTIVE TASK LIST NODE OF CURRENT TASK
    466					;
    467
    468	001006				.CRTSK::
    469	001006	000000 				.WORD	0
    470
    471	001010				.COMEF::
    472	001010	000000 	000000 			.WORD	0,0		; COMMON EVENT FLAGS
    473
    474	001014				.SERFG::
    475	001014	000000 				.WORD	0		; SIG EVENT FLAG
    476	001016				.SEWFL::
    477	001016	000000 				.WORD	0		; SIG EVENT WAIT FLAG
    478	001020				SPSAV::
    479	001020	000000 				.WORD	0		; SAVE AREA FOR STACK
    480					;
    481	001022				PARSAV::
    482	001022					.BLKW	2		; SAVE AREA FOR PARITY ERROR REGISTERS
    483									; (USED BY LC)
    484					;
    485					;	.PFAIL INDICATES POWER FAIL IN PROGRESS
    486					;	IT IS USED ONLY TO INDICATE TO PRI7 TASKS THAT
    487					;	POWER FAIL UNDERWAY AND A RETURN TO THE PROGRAM
    488					;	SHOULD NOT OCCUR
    489					;
    490	001026				.PFAIL::
    491	001026	000000 				.WORD	0
    492	001030				.PFIOW::
    493	001030	000000 				.WORD	0		; POWER FAIL RECOVERY FLAG
    494	001032				PWRXSP::
    495	001032	000000 				.WORD	0		; BUFFER FOR STACK POINTER
    496	001034				CROBAR::
    497	001034	000000 				.WORD	0		; POWER-UP CROBAR TIMER
    498	001036				.VERNO::
    499	001036					RSXVR$	RSX$$K,RSX$$F,RSX$$V,RSX$$E ; RSX20F VERSION NUMBER.
	001036	   126 	   101 	   061 		.ASCIZ	<126><101>\15-50\<200>
	001041	   065 	   055 	   065
	001044	   060 	   200 	   000
    500						.EVEN
    501	001050				.CKASS::
    502	001050	000000 				.WORD	0		; AST ADDRESS FOR CURRENT TASK (CLOCK)
    503	001052				.PFASS::
    504	001052	000000 				.WORD	0		; AST ADDRESS FOR CURRENT TASK (POWER FAIL)
    505
    506	001054					.BLKW	20
    507					;
    508	001114				.MSIZE::
    509	001114	001600 				.WORD	1600		; MEMORY SIZE
LC -- LOW CORE FOR RSX20F	MACRO M1113  03-APR-86 20:41  PAGE 9-1
LOW CORE -- COMMON GLOBAL DATA

    510	001116				EMTSTK::
    511	001116	000000 				.WORD	0		; EMT SAVED DURING EMT STACK
    512	001120				TRPASV::
    513	001120	000000 				.WORD	0		; SAVED PS OF EMT/TRAP
    514
    515					;
    516					;	THE NEXT TWO BYTES MUST BE KEPT TOGETHER IN THEIR CURRENT ORDER !!!!
    517					;
    518
    519	001122				.NOERR::
    520	001122	000401 				.WORD	401		; DO NOT RECOGNIZE KL ERROR IF NON-ZERO
    521		001123'			.NOHLT	==	.NOERR+1	; DO NOT PANIC IF KL HALTS IF NON-ZERO
    522
    523	001124				.TKTN::
    524	001124	000000 				.WORD	0		; NON ZERO IF TKTN REQUIRED
    525	001126				.KLITK::
    526	001126	000000 				.WORD	0		; KL ATTENTION REQUEST
    527
    528	001130				.KLERQ::
    529	001130	000000 				.WORD	0		; KLERR SNAPSHOT INTERLOCK
    530
    531	001132				.KLIWD::
    532	001132	000000 				.WORD	0		; KL WORD TO DETERMINE BOOT PARAMETERS
    533
    534	001134				.TICKS::
    535	001134	000000 				.WORD	0		; CLOCK TICK COUNTER
    536	001136				.CLKSW::
    537	001136	000000 				.WORD	0		; CLOCK OVERFLOW SWITCH
    538	001140				.DATE::
    539	001140				.DATE3::
    540	001140	000000 				.WORD	0		; FRONT-END DATE VALID FLAG
    541									; FRONT-END DATE IS VALID IF .NE. 0
    542	001142				.YEAR::
    543	001142	003673 				.WORD	1979.		; DECIMAL YEAR
    544	001144				.DAY::
    545	001144	   000 				.BYTE	0.		; DAY OF MONTH
    546	001145				.MON::
    547	001145	   000 				.BYTE	0.		; MONTH OF YEAR
    548	001146				.DST::
    549	001146	   000 				.BYTE	0		; DAYLIGHT SAVING TIME FLAG
    550	001147				.DOW::
    551	001147	   000 				.BYTE	0		; DAY OF WEEK INDEX
    552	001150				.SSM::
    553	001150	000000 	000400 			.WORD	0,400		; ELAPSED TIME IN SECONDS SINCE MIDNIGHT
    554	001154				.TKPS::
    555	001154	000074 				.WORD	.CYLTM		; CLOCK RATE IN JIFFIES
    556
    557	001156				.SYUIC::
    558	001156	002405 				.WORD	5.*400+5.	; SYSTEM UIC [5,5]
    559	001160				.BTPRM::
    560	001160	000000 				.WORD	0		; BOOT PARAMETER
    561	001162				.BTSCH::
    562	001162	000000 				.WORD	0		; CHARACTER SAVED -- FOR SECONDARY PROTOCOL
    563	001164				.ACKAL::
    564	001164	000001 				.WORD	1		; ACK ALL SWITCH
    565	001166				.KLERW::
    566	001166	000000 				.WORD	0		; KL WORD FOR ERROR REPORTING BY SETSPD
LC -- LOW CORE FOR RSX20F	MACRO M1113  03-APR-86 20:41  PAGE 9-2
LOW CORE -- COMMON GLOBAL DATA

    567	001170				.FEMOD::
    568	001170	000001 				.WORD	1		; FRONT END CONSOLE MODE FLAG
    569	001172				.KLRLD::
    570	001172	   000 				.BYTE	0		;KL RELOAD FLAG
    571	001173				.KLFCF::
    572	001173	   001 				.BYTE	1		;KL FAULT CONTINUATION FLAG
    573	001174				.KLFLG::
    574	001174	000000 				.WORD	0		; FLAG FOR PARSER TO INDICATE STATE OF KL10
    575	001176				.KLCPU::
    576	001176	   000 				.BYTE	0		;CPU NUMBER FOR WARM RESTART
    577	001177				.KLMON::
    578	001177	   000 				.BYTE	0		;CODE FOR MONITOR THAT IS RUNNING (NOT USED)
    579
    580					;	THESE ARE THE CODES FOR DIFFERENT MONITORS: (SAME AS GETTAB)
    581
    582		000001 				.MNT10=1	;TOPS10
    583		000002 				.MNITS=2	;ITS
    584		000003 				.MNTNX=3	;TENEX
    585		000004 				.MNT20=4	;TOPS20
    586
    587		000001 				MF2RTY=1		;RETRY EACH CONTROLLER ONCE
    588		000004 				MF2NUM==4.		;NUMBER OF MF20 CONTROLLERS
    589
    590	001200				.KLMF2::			;RETRY COUNTERS FOR MF20 CONTROLLERS
    591		000004 				.REPT MF2NUM
    592						.BYTE	MF2RTY		;RETRY COUNT BEFORE WE GIVE UP ON MF20
    593						.ENDR
	001200	   001 				.BYTE	MF2RTY		;RETRY COUNT BEFORE WE GIVE UP ON MF20
	001201	   001 				.BYTE	MF2RTY		;RETRY COUNT BEFORE WE GIVE UP ON MF20
	001202	   001 				.BYTE	MF2RTY		;RETRY COUNT BEFORE WE GIVE UP ON MF20
	001203	   001 				.BYTE	MF2RTY		;RETRY COUNT BEFORE WE GIVE UP ON MF20
    594						.EVEN			;BACK TO A WORD BOUNDRY
LC -- LOW CORE FOR RSX20F	MACRO M1113  03-APR-86 20:41  PAGE 10
LOW CORE -- KLINIK DATA BASE

    596						.SBTTL	LOW CORE -- KLINIK DATA BASE
    597					;
    598					;	NOTE --
    599					;	THE NEXT 32 BYTES MUST REMAIN CONTIGUOUS AND IN THE SAME ORDER
    600					;
    601
    602	001204				.KLNPB::
    603	001204	000026 				.WORD	KLNPLN		; KLINIK PARAMETER BLOCK LENGTH
    604									; BUFFER FOR PARAMETER SAVE STARTS HERE
    605	001206				.KLNLB::			;
    606	001206				.KLNBC::
    607	001206	000024 				.WORD	KLNPLN-2	; BYTE COUNT FOR TRANSFER
    608	001210				.KLNFT::
    609	001210	000000 				.WORD	0		; KLINIK ENABLE START TIME --
    610									;	SECONDS SINCE MIDNIGHT
    611	001212				.KLNFD::
    612	001212	   000 	   000 	   000 		.BYTE	0,0,0,0		; KLINIK ENABLE START DATE
	001215	   000
    613	001216				.KLNTT::
    614	001216	000000 				.WORD	0		; KLINIK ENABLE END TIME --
    615									;	 SECONDS SINCE MIDNIGHT
    616	001220				.KLNTD::
    617	001220	   000 	   000 	   000 		.BYTE	0,0,0,0		; KLINIK ENABLE END DATE
	001223	   000
    618	001224				.KLNMD::
    619	001224	   000 	   000 			.BYTE	0,0		; KLINIK MODE FLAGS
    620					.EVEN				;
    621		000016 			KLNLGL==.-.KLNFT		; KLINIK EVENT LOG BUFFER LENGTH IN BYTES
    622		001226'			.KLNPE==.
    623	001226				.KLNPW::
    624	001226	000000 	000000 	000000 		.WORD	0,0,0		; ASCII PASSWORD FOR KLINIK
    625					.EVEN
    626		000026 			KLNPLN==.-.KLNBC		; SAVE BUFFER LENGTH IN BYTES
    627	001234				.KLNSW::
    628	001234	   000 	   000 			.BYTE	0,0		; KLINIK LINE STATUS BYTES
LC -- LOW CORE FOR RSX20F	MACRO M1113  03-APR-86 20:41  PAGE 11
LOW CORE -- COMMIUNICATIONS REGION DATA BASE

    630						.SBTTL	LOW CORE -- COMMIUNICATIONS REGION DATA BASE
    631
    632					;
    633					;	POINTERS TO COMMUNICATIONS AREA
    634					;
    635	001236				COMBSE::
    636	001236	000000 				.WORD	0	; BASE OF COMMUNICATION AREA
    637	001240				PRMEMN::
    638	001240	000000 				.WORD	0	; MY PROCESSOR NUMBER
    639	001242				DEPOF::
    640	001242	000000 				.WORD	0	; DEPOSIT OFFSET FROM EXAMINE
    641					;
    642					;
    643					;	PROCESSOR IDENTIFICATION TABLE
    644					;
    645					;	PROTBL FORMAT:
    646					;
    647					; 		DTENM -- ADDRESS OF DTE-20 TO ACCESS THIS PROCESSOR
    648		000000 			DTENM=0
    649					;		 EMYN -- ADDRESS TO COMMUNICATE TO PROCESSOR 0
    650		000002 			EMYN==2
    651					;		 DMYN -- ADDRESS TO COMMUNICATE TO PROCESSOR 0 (WRITE)
    652		000004 			DMYN==4
    653					;		 EHSG -- ADDRESS FROM GENERAL
    654		000006 			EHSG==6
    655					;		 EHSM -- ADDRESS FROM SPECIFIC
    656		000010 			EHSM==10
    657
    658	001244				PROTBL::
    659	001244	174400 				.WORD	174400	; DTENM
    660	001246	000000 				.WORD	0	; EMYN
    661	001250	000000 				.WORD	0	; DMYN
    662	001252	000000 				.WORD	0	; EHSG
    663	001254	000000 				.WORD	0	; EHSM
LC -- LOW CORE FOR RSX20F	MACRO M1113  03-APR-86 20:41  PAGE 12
LOW CORE -- QUEUED PROTOCOL DATA BASE

    665						.SBTTL	LOW CORE -- QUEUED PROTOCOL DATA BASE
    666
    667	001256				.CRQZ::
    668	001256	000000 				.WORD	0		; CURRENT QUEUE SIZE
    669	001260				.CPFN::
    670	001260	000000 				.WORD	0		; CURRENT FUNCTION IN TO 10 QUEUE
    671	001262				.CPDV::
    672	001262	000000 				.WORD	0		; CURRENT DEVICE IN TO 10 QUEUE
    673	001264				.CRSZ::
    674	001264	000000 				.WORD	0		; CURRENT SIZE OF TO10 QUEUE
    675	001266				.CRPB::
    676	001266	000000 				.WORD	0		; CURRENT BUFFER POINTER IN TO10 QUEUE
    677	001270				.CRHD::
    678	001270	000000 				.WORD	0		; HEAD OF CURRENT TO10 QUEUE
    679	001272				.CRSB::
    680	001272	000000 				.WORD	0		; POINTER TO CURRENT FUNCTION SIZE
    681
    682	001274				DTEMSK::
    683	001274	000000 				.WORD	0		; DTE DEVICE EVENT FLAG MASK
    684	001276				DTEADR::
    685	001276	000000 				.WORD	0		; DTE DEVICE INDIRECT FLAG ADDRESS
    686
    687	001300				TO11NP::
    688	001300	000000 				.WORD	0		; NODE POINTER FOR NODE
    689	001302				TO11HD::
    690	001302	000000 				.WORD	0		; COUNT OF BYTES IN THIS QUEUE
    691	001304				TO11FN::
    692	001304	000000 				.WORD	0		; TO ELEVEN FUNCTION CODE
    693	001306				TO11DV::
    694	001306	000000 				.WORD	0		; TO ELEVEN DEVICE NUMBER
    695	001310				TO11SP::
    696	001310	000000 				.WORD	0		; SPACE
    697	001312				TO11FW::
    698	001312	000000 				.WORD	0		; FIRST WORD OF FUNCTION
    700	001314				TO11GW::
    701	001314	177777 				.WORD	-1		; GUARD WORD FOR DTE20
    702	001316				TO11AS::
    703	001316	000000 				.WORD	0		; ADDRESS SAVE
    704	001320				TO11BS::
    705	001320	000000 				.WORD	0		; BYTE COUNT SAVE
    706	001322				TO10SZ::
    707	001322	000000 				.WORD	0		; BYTE COUNT OF XFER
    708	001324				TO10AS::
    709	001324	000000 				.WORD	0
    711
    712	001326				STSTT::
    713	001326	000001 	000000 	000000 		.WORD	1,0,0		; TO 10 STATUS
    714
    715		001332'			TO10QC==STSTT+4			; TO 10 QUEUE COUNT
    716		001333'			TO11QC==STSTT+5			; TO 11 QUEUE COUNT
    717
    718	001334	001334'			TO10Q:: .WORD	.		; LISTHEAD FOR TO 10 QUEUE
    719	001336	001334'				.WORD	.-2
    720
    721	001340				EQSZ::
    722	001340	000000 				.WORD	0		; ELEVEN QUEUE SIZE
    723
LC -- LOW CORE FOR RSX20F	MACRO M1113  03-APR-86 20:41  PAGE 12-1
LOW CORE -- QUEUED PROTOCOL DATA BASE

    724	001342				TO11Q::
    725	001342	000000 				.WORD	0		; TO 11 QUEUE
    726	001344				STATI::
    727	001344					.BLKW	3		; STATUS/SCRATCH WORD FOR EXAMINES/DEPOSITS
    728	001352				DEXST::
    729	001352	000000 				.WORD	0		; DEXDONE TIMEOUT
    730	001354				DEXTM3::
    731	001354	000000 				.WORD	0		; EXAMINE WORD 3 (TEMP STORAGE) TO BE
    732	001356				DEXTM2::
    733	001356	000000 				.WORD	0		; EXAMINE WORD 2 -USED ONLY BECAUSE EXAMINE
    734	001360				DEXTM1::
    735	001360	000000 				.WORD	0		; EXAMINE WORD 1 - OR DEPOSIT MAY FAIL AND MUST BE REDONE
    736	001362				.PRADR::
    737	001362	000000 				.WORD	0		; ADDRESS OF PRIV OFFSET TABLE ENTRY
    738	001364				.PRSTA::
    739	001364	174434 				.WORD	174434		; PRIVILEDGED DTE20 STATUS WORD
    740	001366				.PRDTE::
    741	001366	174400 				.WORD	174400		; FIRST DTE ADDRESS OF PRIVILEDGED DTE20
    742	001370				.PRDCT::
    743	001370	000000 				.WORD	0		; DOORBELL COUNTER FOR KLINIT.
    744					;
    745					;	THE NEXT TWO BYTES MUST REMAIN CONTIGUOUS AND IN THE SAME ORDER
    746					;
    747	001372				.DXRTY::
    748	001372	   001 				.BYTE	1		; [5.1008] DEX ERROR PROCESSING FLAG (SEE BELOW)
    749	001373				.EBRTY::
    750	001373	   001 				.BYTE	1		; [5.1008] EBUS PARITY ERROR PROCESSING FLAG
    751									;		+1 -- NO EBUS PARITY ERROR
    752									;		 0 -- RETRY SUCCEEDED
    753									;		-1 -- RETRY FAILED
    754					;
    755					;	THE NEXT TWO WORDS MUST REMAIN CONTIGUOUS AND IN THE SAME ORDER
    756					;
    757	001374				.EBPEQ::
    758	001374	000000 				.WORD	0		; [4.2217] CONTAINS POINTER TO DTE-20 EBUS PARITY
    759									;	       SNAPSHOT IF ALLOCATION WAS SUCCESSFUL
    760	001376				.EBPEC::
    761	001376	000000 				.WORD	0		; [5.1008] COUNT OF NODES IN THIS QUEUE (MAX = 2)
    762
    763	001400				.PRPSE::
    764	001400	   000 				.BYTE	0		; PROTOCOL PAUSE FLAG
    765	001401				TOXQIP::
    766	001401	   000 				.BYTE	0		; [4.1.1035] TO 10 QUEUE IN PROGRESS FLAG
    767						.EVEN
    768	001402				.DTBLK::
    769	001402	000000 				.WORD	0		; [4.1.1121] HOLDS RE-ENTRY POINT TO START BLOCKED TRANSFER
LC -- LOW CORE FOR RSX20F	MACRO M1113  03-APR-86 20:41  PAGE 13
LOW CORE -- KEEP-ALIVE DATA BASE

    771						.SBTTL	LOW CORE -- KEEP-ALIVE DATA BASE
    772
    773	001404				KPAL0::
    774	001404	000000 	000000 	000000 		.WORD	0,0,0		; 10 KEEP ALIVE
    775	001412				OKPAL0::
    776	001412	000000 				.WORD	0		; SAVED KEEP ALIVE
    777	001414				KPAL1::
    778	001414	000000 				.WORD	0		; [4.1.1104] 11 KEEP ALIVE
    779	001416				.KPAC::
    780	001416	000005 				.WORD	5		; COUNTER FOR KEEP-ALIVE.
    781	001420				.KACFL::
    782	001420	000001 				.WORD	1		; [4.2107] FLAG TO ALLOW XCT 71
    783									; [4.2107] OR DUMP/RELOAD ON KEEP-ALIVE CEASE
LC -- LOW CORE FOR RSX20F	MACRO M1113  03-APR-86 20:41  PAGE 14
LOW CORE -- CORE MANAGER DATA BASE

    785						.SBTTL	LOW CORE -- CORE MANAGER DATA BASE
    786
    787		076000 				.BGBST==76000		; START OF BIG BUFFER
    788		002000 				.BGLEN==2000		; LENGTH OF BIG BUFFER
    789
    790					;
    791					;	POOL FREE CORE AREA
    792					;
    793	001422				.BGBUF::
    794	001422	076000 				.WORD	.BGBST		; BIG BUFFER SPACE (1000 EACH)
    795	001424	002000 				.WORD	.BGLEN
    796
    797	001426				.FREPL::
    798	001426	000000 				.WORD	0		; FREE POOL BASE ADDRESS
    799	001430	000000 				.WORD	0		; FREE POOL SIZE IN BYTES
    800
    801	001432				.POLLH::
    802	001432	001436'				.WORD	.POLST		; HEAD OF POOL
    803	001434	002336'				.WORD	.POLND		; END OF POOL
    804
    805	001436				.POLST::
    806	001436	001476'				.WORD	.+40
    807	001440	001432'				.WORD	.POLLH
    808	001442					.BLKW	14.
    809
    810		000015 				.REPT	15
    811						.WORD	.+40
    812						.WORD	.-40
    813						.BLKW	14.
    814						.ENDR
	001476	001536'				.WORD	.+40
	001500	001440'				.WORD	.-40
	001536	001576'				.WORD	.+40
	001540	001500'				.WORD	.-40
	001576	001636'				.WORD	.+40
	001600	001540'				.WORD	.-40
	001636	001676'				.WORD	.+40
	001640	001600'				.WORD	.-40
	001676	001736'				.WORD	.+40
	001700	001640'				.WORD	.-40
	001736	001776'				.WORD	.+40
	001740	001700'				.WORD	.-40
	001776	002036'				.WORD	.+40
	002000	001740'				.WORD	.-40
	002036	002076'				.WORD	.+40
	002040	002000'				.WORD	.-40
	002076	002136'				.WORD	.+40
	002100	002040'				.WORD	.-40
	002136	002176'				.WORD	.+40
	002140	002100'				.WORD	.-40
	002176	002236'				.WORD	.+40
	002200	002140'				.WORD	.-40
	002236	002276'				.WORD	.+40
	002240	002200'				.WORD	.-40
	002276	002336'				.WORD	.+40
	002300	002240'				.WORD	.-40
    815
LC -- LOW CORE FOR RSX20F	MACRO M1113  03-APR-86 20:41  PAGE 14-1
LOW CORE -- CORE MANAGER DATA BASE

    816	002336				.POLND::
    817	002336	001432'				.WORD	.POLLH
    818	002340	002300'				.WORD	.-40
    819	002342					.BLKW	14.
LC -- LOW CORE FOR RSX20F	MACRO M1113  03-APR-86 20:41  PAGE 15
LOW CORE -- CLOCK REQUEST LIST

    821						.SBTTL	LOW CORE -- CLOCK REQUEST LIST
    822
    823					;
    824					;	CLOCK LIST (LIST OF ENTRIES IN THE CLOCK QUEUE TO RECEIVE
    825					;	EVENT FLAGS SET ON COMPLETION OF CLOCK TIMER
    826					;
    827		000007 			.CLKSZ==7.	; CLOCK QUEUE SIZE
    828		000014 			C.SZ=14		; CLOCK ENTRY SIZE LOCAL DEFINITION (NOTE: IS A GLOBAL VAR.)
    829
    830	002376				.CLKBA::
    831	002376	007202'				.WORD	TTYTSK
    832	002400	000000 				.WORD	0
    833	002402	000074 				.WORD	.CYLTM
    834	002404	000074 				.WORD	.CYLTM
    835	002406	000100 				.WORD	EF.TMO
    836	002410	007222'				.WORD	TTYTSK+A.EF
    837		000074 				.REPT	.CLKSZ-2*C.SZ
    838						.WORD	0
    839						.ENDR
	002412	000000 				.WORD	0
	002414	000000 				.WORD	0
	002416	000000 				.WORD	0
	002420	000000 				.WORD	0
	002422	000000 				.WORD	0
	002424	000000 				.WORD	0
	002426	000000 				.WORD	0
	002430	000000 				.WORD	0
	002432	000000 				.WORD	0
	002434	000000 				.WORD	0
	002436	000000 				.WORD	0
	002440	000000 				.WORD	0
	002442	000000 				.WORD	0
	002444	000000 				.WORD	0
	002446	000000 				.WORD	0
	002450	000000 				.WORD	0
	002452	000000 				.WORD	0
	002454	000000 				.WORD	0
	002456	000000 				.WORD	0
	002460	000000 				.WORD	0
	002462	000000 				.WORD	0
	002464	000000 				.WORD	0
	002466	000000 				.WORD	0
	002470	000000 				.WORD	0
	002472	000000 				.WORD	0
	002474	000000 				.WORD	0
	002476	000000 				.WORD	0
	002500	000000 				.WORD	0
	002502	000000 				.WORD	0
	002504	000000 				.WORD	0
	002506	000000 				.WORD	0
	002510	000000 				.WORD	0
	002512	000000 				.WORD	0
	002514	000000 				.WORD	0
	002516	000000 				.WORD	0
	002520	000000 				.WORD	0
	002522	000000 				.WORD	0
	002524	000000 				.WORD	0
LC -- LOW CORE FOR RSX20F	MACRO M1113  03-APR-86 20:41  PAGE 15-1
LOW CORE -- CLOCK REQUEST LIST

	002526	000000 				.WORD	0
	002530	000000 				.WORD	0
	002532	000000 				.WORD	0
	002534	000000 				.WORD	0
	002536	000000 				.WORD	0
	002540	000000 				.WORD	0
	002542	000000 				.WORD	0
	002544	000000 				.WORD	0
	002546	000000 				.WORD	0
	002550	000000 				.WORD	0
	002552	000000 				.WORD	0
	002554	000000 				.WORD	0
	002556	000000 				.WORD	0
	002560	000000 				.WORD	0
	002562	000000 				.WORD	0
	002564	000000 				.WORD	0
	002566	000000 				.WORD	0
	002570	000000 				.WORD	0
	002572	000000 				.WORD	0
	002574	000000 				.WORD	0
	002576	000000 				.WORD	0
	002600	000000 				.WORD	0
    840	002602				.CLKEA::
    841	002602	000000 				.WORD	0		; END OF CLOCK LIST
    842
LC -- LOW CORE FOR RSX20F	MACRO M1113  03-APR-86 20:41  PAGE 17
LOW CORE -- TERMINAL SERVICE DATA BASE

    862						.SBTTL	LOW CORE -- TERMINAL SERVICE DATA BASE
    863
    864	002604				.INHDM::
    865	002604	000001 				.WORD	1		; INBIBIT/ENABLE REMOTE LINES (0)=ENABLE
    866	002606				.ABCNT::
    867	002606	000000 				.WORD	0		; COUNT OF AUTO BAUDED LINES
    868	002610				.ABFLG::
    869	002610	000000 				.WORD	0		; FLAG FOR "SETSPD"
    870					;
    871					;	SENDALL MESSAGE POINTERS
    872					;
    873	002612				.SNDLP::
    874	002612	000000 				.WORD	0		; POINTER TO SENDALL BUFFER IN USE
    875	002614				.SNDBF::
    876	002614	000000 	000000 	000000 		.WORD	0,0,0,0		; SENDALL BUFFER RING
	002622	000000
    877	002624				.SNDCN::
    878	002624	000000 	000000 	000000 		.WORD	0,0,0,0		; SENDALL TTY COUNT (THIS AND ABOVE MUST BE TOGETHER)
	002632	000000
    879	002634				.CRSND::
    880	002634	000000 				.WORD	0		; CURRENT SENDALL NODE POINTER -- USED BY ..STTY
    881	002636				.BRKCH::
    882	002636	000034 				.WORD	'\-100		; BREAK CHARACTER (^\)
    883	002640				.TTP11::
    884	002640	000000 				.WORD	0		; TTY PDP11 INPUT IN PROGRESS
    885	002642				.CTYPT::
    886	002642				CTYPTR::
    887	002642	003004'				.WORD	DLTBL		; CONSOLE TTY TABLE POINTER
    888	002644				.KLNPT::
    889	002644				KLNPTR::
    890	002644	003014'				.WORD	DLETBL		; KLINIK LINE POINTER
    891	002646				$UNIT::
    892	002646	000000 				.WORD	0		; DH-11 UNIT NUMBER IF CTY
    893	002650				$BTMSK::
    894	002650	000000 				.WORD	0		; MASK TO START CONSOLE TTY (DH-11)
    895	002652				DMTMP::
    896	002652	000000 				.WORD	0		; TEMPORARY STORAGE FOR DM-11/BB CONTROLLER NUMBER
    897	002654				DHTMP::
    898	002654	000000 				.WORD	0		; TEMPORARY STORAGE FOR DH-11 CONTROLLER NUMBER
    899	002656				DLTMP::
    900	002656	000000 				.WORD	0		; TEMPORARY STORAGE FOR DL-11 CONTROLLER NUMBER
    901	002660				DHSTSV::
    902	002660	000000 				.WORD	0		; DH-11 TABLE POINTER SAVE
    903	002662				.TTELQ::
    904	002662	000000 				.WORD	0		; [4.2245] TERMINAL ERROR LOGGING QUEUE POINTER
    905					;
    906					;	THE NEXT TWO WORDS MUST REMAIN CONTIGUOUS AND IN THE SAME ORDER
    907					;
    908	002664				.TTELC::
    909	002664	000000 				.WORD	0		; [5.1008] COUNT OF NODES IN THIS QUEUE
    910	002666				.TTELB::
    911	002666	000000 				.WORD	0		; [4.2245] TEMPORARY BUFFER FOR ERROR LOGGING
    912					;
    913					;	THE NEXT TWO BYTES MUST REMAIN CONTIGUOUS AND IN THE SAME ORDER
    914					;
    915	002670				TMOCNT::
    916	002670	   012 				.BYTE	^D10		; [4.2309] TERMINAL TIMEOUT COUNTER
LC -- LOW CORE FOR RSX20F	MACRO M1113  03-APR-86 20:41  PAGE 17-1
LOW CORE -- TERMINAL SERVICE DATA BASE

    917	002671	   026 				.BYTE	^D22		; [4.2309] MODEM TIMEOUT COUNTER
    918						.EVEN
LC -- LOW CORE FOR RSX20F	MACRO M1113  03-APR-86 20:41  PAGE 18
LOW CORE -- PDP-11 CTY SERVICE DATA BASE

    920						.SBTTL	LOW CORE -- PDP-11 CTY SERVICE DATA BASE
    921
    922	002672				CTYSTS::
    923		000020 				.REPT	16.		; CONSOLE TTY STATUS BLOCK
    924						.WORD	0
    925						.ENDR
	002672	000000 				.WORD	0
	002674	000000 				.WORD	0
	002676	000000 				.WORD	0
	002700	000000 				.WORD	0
	002702	000000 				.WORD	0
	002704	000000 				.WORD	0
	002706	000000 				.WORD	0
	002710	000000 				.WORD	0
	002712	000000 				.WORD	0
	002714	000000 				.WORD	0
	002716	000000 				.WORD	0
	002720	000000 				.WORD	0
	002722	000000 				.WORD	0
	002724	000000 				.WORD	0
	002726	000000 				.WORD	0
	002730	000000 				.WORD	0
    926	002732				CNT::
    927	002732	000000 				.WORD	0
    928	002734				BYCNT::
    929	002734	000000 				.WORD	0
    930	002736				CRADR::
    931	002736	000000 				.WORD	0
    932	002740				TTPKT::
    933	002740	000000 				.WORD	0		; I/O PACKET ADDRESS
LC -- LOW CORE FOR RSX20F	MACRO M1113  03-APR-86 20:41  PAGE 19
LOW CORE -- TERMINAL DRIVER DATA BASE

    935						.SBTTL	LOW CORE -- TERMINAL DRIVER DATA BASE
    936
    937					;
    938					;	TTY TABLES
    939					;
    940					; CONTROLLER IMPURE DATA TABLES (INDEXED BY CONTROLLER (UNIT) NUMBER)
    941					;
    942
    943	002742				DMTBL::
    944	002742	170500 	003054'			.WORD	170500,DHTBL		; DM11BB TABLE
    945	002746	170510 	003254'			.WORD	170510,16.*8.+DHTBL
    946	002752	170520 	003454'			.WORD	170520,16.*8.*2.+DHTBL
    947	002756	170530 	003654'			.WORD	170530,16.*8.*3.+DHTBL
    948	002762	170540 	004054'			.WORD	170540,16.*8.*4.+DHTBL
    949	002766	170550 	004254'			.WORD	170550,16.*8.*5.+DHTBL
    950	002772	170560 	004454'			.WORD	170560,16.*8.*6.+DHTBL
    951	002776	170570 	004654'			.WORD	170570,16.*8.*7.+DHTBL
    952	003002	000000 				.WORD	0			; [5.1004] END OF TABLE MARKER
    953		003004'			DMTBE==.
LC -- LOW CORE FOR RSX20F	MACRO M1113  03-APR-86 20:41  PAGE 20
LOW CORE -- DATA LINE SCANNER DATA BASE

    955						.SBTTL	LOW CORE -- DATA LINE SCANNER DATA BASE
    956
    957					;	THE DATA LINE SCANNER TABLE IS ORGANIZED AS FOLLOWS:
    958					;	THE DL-11'S ARE FIRST IN THE TABLE AND THE DL-11C (CTY) IS UNIT 0,
    959					;	THE DL-11E(S) FOLLOW AND BEGIN AT UNIT 1. THE DH-11'S FOLLOW THE
    960					;	DL-11E'S
    961					;
    962					;	ALL TERMINALS HAVE A FOUR WORD ENTRY IN THE FOLLOWING FORMAT:
    963					;
    964					;	+----------------------------------+
    965					;	!    OUTPUT THREAD LIST POINTER    !
    966					;	+----------------------------------+
    967					;	!	EXTERNAL PAGE POINTER	   !
    968					;	+----------------------------------+
    969					;	!	 TERMINAL SPEED WORD	   !
    970					;	+----------------------------------+
    971					;	!	 TERMINAL STATUS WORD	   !
    972					;	+----------------------------------+
    973
    974	003004				TTTBL::					; START OF DATA LINE SCANNER TABLE
    975	003004				DLTBL::
    976	003004	000000 	177560 	000000 		.WORD	0,177560,0,TT.CTY	; TERMINAL STATUS FOR DL-11C
	003012	000002
    977	003014				DLETBL::				; DL-11E TABLE
    978	003014	000000 	175610 	000000 		.WORD	0,175610,0,TT.RMT	; DL-11E # 0 (KLINIK)
	003022	000100
    979	003024	000000 	175630 	000000 		.WORD	0,175630,0,TT.RMT	; DL-11E # 1
	003032	000100
    980	003034	000000 	175640 	000000 		.WORD	0,175640,0,TT.RMT	; DL-11E # 2
	003042	000100
    981	003044	000000 	175650 	000000 		.WORD	0,175650,0,TT.RMT	; DL-11E # 3
	003052	000100
    982		000005 			DLCNT	==.-DLTBL/8.			; NUMBER OF DL-11'S
    983		000004 			DLECNT	==.-DLETBL/8.			; NUMBER OF DL-11E'S
LC -- LOW CORE FOR RSX20F	MACRO M1113  03-APR-86 20:41  PAGE 21
LOW CORE -- DH-11 DATA BASE

    985						.SBTTL	LOW CORE -- DH-11 DATA BASE
    986
    987	003054				DHTBL::
    988		000020 				.REPT	16.
    989						.WORD	0,160020,16003,0	; DH-11 MUX CONRTOLLER 0
    990						.ENDR
	003054	000000 	160020 	016003 		.WORD	0,160020,16003,0	; DH-11 MUX CONRTOLLER 0
	003062	000000
	003064	000000 	160020 	016003 		.WORD	0,160020,16003,0	; DH-11 MUX CONRTOLLER 0
	003072	000000
	003074	000000 	160020 	016003 		.WORD	0,160020,16003,0	; DH-11 MUX CONRTOLLER 0
	003102	000000
	003104	000000 	160020 	016003 		.WORD	0,160020,16003,0	; DH-11 MUX CONRTOLLER 0
	003112	000000
	003114	000000 	160020 	016003 		.WORD	0,160020,16003,0	; DH-11 MUX CONRTOLLER 0
	003122	000000
	003124	000000 	160020 	016003 		.WORD	0,160020,16003,0	; DH-11 MUX CONRTOLLER 0
	003132	000000
	003134	000000 	160020 	016003 		.WORD	0,160020,16003,0	; DH-11 MUX CONRTOLLER 0
	003142	000000
	003144	000000 	160020 	016003 		.WORD	0,160020,16003,0	; DH-11 MUX CONRTOLLER 0
	003152	000000
	003154	000000 	160020 	016003 		.WORD	0,160020,16003,0	; DH-11 MUX CONRTOLLER 0
	003162	000000
	003164	000000 	160020 	016003 		.WORD	0,160020,16003,0	; DH-11 MUX CONRTOLLER 0
	003172	000000
	003174	000000 	160020 	016003 		.WORD	0,160020,16003,0	; DH-11 MUX CONRTOLLER 0
	003202	000000
	003204	000000 	160020 	016003 		.WORD	0,160020,16003,0	; DH-11 MUX CONRTOLLER 0
	003212	000000
	003214	000000 	160020 	016003 		.WORD	0,160020,16003,0	; DH-11 MUX CONRTOLLER 0
	003222	000000
	003224	000000 	160020 	016003 		.WORD	0,160020,16003,0	; DH-11 MUX CONRTOLLER 0
	003232	000000
	003234	000000 	160020 	016003 		.WORD	0,160020,16003,0	; DH-11 MUX CONRTOLLER 0
	003242	000000
	003244	000000 	160020 	016003 		.WORD	0,160020,16003,0	; DH-11 MUX CONRTOLLER 0
	003252	000000
LC -- LOW CORE FOR RSX20F	MACRO M1113  03-APR-86 20:41  PAGE 22
LOW CORE -- DH-11 DATA BASE

    992		000020 				.REPT	16.
    993						.WORD	0,160040,16003,0	; DH-11 MUX CONTROLLER 1
    994						.ENDR
	003254	000000 	160040 	016003 		.WORD	0,160040,16003,0	; DH-11 MUX CONTROLLER 1
	003262	000000
	003264	000000 	160040 	016003 		.WORD	0,160040,16003,0	; DH-11 MUX CONTROLLER 1
	003272	000000
	003274	000000 	160040 	016003 		.WORD	0,160040,16003,0	; DH-11 MUX CONTROLLER 1
	003302	000000
	003304	000000 	160040 	016003 		.WORD	0,160040,16003,0	; DH-11 MUX CONTROLLER 1
	003312	000000
	003314	000000 	160040 	016003 		.WORD	0,160040,16003,0	; DH-11 MUX CONTROLLER 1
	003322	000000
	003324	000000 	160040 	016003 		.WORD	0,160040,16003,0	; DH-11 MUX CONTROLLER 1
	003332	000000
	003334	000000 	160040 	016003 		.WORD	0,160040,16003,0	; DH-11 MUX CONTROLLER 1
	003342	000000
	003344	000000 	160040 	016003 		.WORD	0,160040,16003,0	; DH-11 MUX CONTROLLER 1
	003352	000000
	003354	000000 	160040 	016003 		.WORD	0,160040,16003,0	; DH-11 MUX CONTROLLER 1
	003362	000000
	003364	000000 	160040 	016003 		.WORD	0,160040,16003,0	; DH-11 MUX CONTROLLER 1
	003372	000000
	003374	000000 	160040 	016003 		.WORD	0,160040,16003,0	; DH-11 MUX CONTROLLER 1
	003402	000000
	003404	000000 	160040 	016003 		.WORD	0,160040,16003,0	; DH-11 MUX CONTROLLER 1
	003412	000000
	003414	000000 	160040 	016003 		.WORD	0,160040,16003,0	; DH-11 MUX CONTROLLER 1
	003422	000000
	003424	000000 	160040 	016003 		.WORD	0,160040,16003,0	; DH-11 MUX CONTROLLER 1
	003432	000000
	003434	000000 	160040 	016003 		.WORD	0,160040,16003,0	; DH-11 MUX CONTROLLER 1
	003442	000000
	003444	000000 	160040 	016003 		.WORD	0,160040,16003,0	; DH-11 MUX CONTROLLER 1
	003452	000000
LC -- LOW CORE FOR RSX20F	MACRO M1113  03-APR-86 20:41  PAGE 23
LOW CORE -- DH-11 DATA BASE

    996		000020 				.REPT	16.
    997						.WORD	0,160060,16003,0	; DH-11 MUX CONTROLLER 2
    998						.ENDR
	003454	000000 	160060 	016003 		.WORD	0,160060,16003,0	; DH-11 MUX CONTROLLER 2
	003462	000000
	003464	000000 	160060 	016003 		.WORD	0,160060,16003,0	; DH-11 MUX CONTROLLER 2
	003472	000000
	003474	000000 	160060 	016003 		.WORD	0,160060,16003,0	; DH-11 MUX CONTROLLER 2
	003502	000000
	003504	000000 	160060 	016003 		.WORD	0,160060,16003,0	; DH-11 MUX CONTROLLER 2
	003512	000000
	003514	000000 	160060 	016003 		.WORD	0,160060,16003,0	; DH-11 MUX CONTROLLER 2
	003522	000000
	003524	000000 	160060 	016003 		.WORD	0,160060,16003,0	; DH-11 MUX CONTROLLER 2
	003532	000000
	003534	000000 	160060 	016003 		.WORD	0,160060,16003,0	; DH-11 MUX CONTROLLER 2
	003542	000000
	003544	000000 	160060 	016003 		.WORD	0,160060,16003,0	; DH-11 MUX CONTROLLER 2
	003552	000000
	003554	000000 	160060 	016003 		.WORD	0,160060,16003,0	; DH-11 MUX CONTROLLER 2
	003562	000000
	003564	000000 	160060 	016003 		.WORD	0,160060,16003,0	; DH-11 MUX CONTROLLER 2
	003572	000000
	003574	000000 	160060 	016003 		.WORD	0,160060,16003,0	; DH-11 MUX CONTROLLER 2
	003602	000000
	003604	000000 	160060 	016003 		.WORD	0,160060,16003,0	; DH-11 MUX CONTROLLER 2
	003612	000000
	003614	000000 	160060 	016003 		.WORD	0,160060,16003,0	; DH-11 MUX CONTROLLER 2
	003622	000000
	003624	000000 	160060 	016003 		.WORD	0,160060,16003,0	; DH-11 MUX CONTROLLER 2
	003632	000000
	003634	000000 	160060 	016003 		.WORD	0,160060,16003,0	; DH-11 MUX CONTROLLER 2
	003642	000000
	003644	000000 	160060 	016003 		.WORD	0,160060,16003,0	; DH-11 MUX CONTROLLER 2
	003652	000000
LC -- LOW CORE FOR RSX20F	MACRO M1113  03-APR-86 20:41  PAGE 24
LOW CORE -- DH-11 DATA BASE

   1000		000020 				.REPT	16.
   1001						.WORD	0,160100,16003,0	; DH-11 MUX CONTROLLER 3
   1002						.ENDR
	003654	000000 	160100 	016003 		.WORD	0,160100,16003,0	; DH-11 MUX CONTROLLER 3
	003662	000000
	003664	000000 	160100 	016003 		.WORD	0,160100,16003,0	; DH-11 MUX CONTROLLER 3
	003672	000000
	003674	000000 	160100 	016003 		.WORD	0,160100,16003,0	; DH-11 MUX CONTROLLER 3
	003702	000000
	003704	000000 	160100 	016003 		.WORD	0,160100,16003,0	; DH-11 MUX CONTROLLER 3
	003712	000000
	003714	000000 	160100 	016003 		.WORD	0,160100,16003,0	; DH-11 MUX CONTROLLER 3
	003722	000000
	003724	000000 	160100 	016003 		.WORD	0,160100,16003,0	; DH-11 MUX CONTROLLER 3
	003732	000000
	003734	000000 	160100 	016003 		.WORD	0,160100,16003,0	; DH-11 MUX CONTROLLER 3
	003742	000000
	003744	000000 	160100 	016003 		.WORD	0,160100,16003,0	; DH-11 MUX CONTROLLER 3
	003752	000000
	003754	000000 	160100 	016003 		.WORD	0,160100,16003,0	; DH-11 MUX CONTROLLER 3
	003762	000000
	003764	000000 	160100 	016003 		.WORD	0,160100,16003,0	; DH-11 MUX CONTROLLER 3
	003772	000000
	003774	000000 	160100 	016003 		.WORD	0,160100,16003,0	; DH-11 MUX CONTROLLER 3
	004002	000000
	004004	000000 	160100 	016003 		.WORD	0,160100,16003,0	; DH-11 MUX CONTROLLER 3
	004012	000000
	004014	000000 	160100 	016003 		.WORD	0,160100,16003,0	; DH-11 MUX CONTROLLER 3
	004022	000000
	004024	000000 	160100 	016003 		.WORD	0,160100,16003,0	; DH-11 MUX CONTROLLER 3
	004032	000000
	004034	000000 	160100 	016003 		.WORD	0,160100,16003,0	; DH-11 MUX CONTROLLER 3
	004042	000000
	004044	000000 	160100 	016003 		.WORD	0,160100,16003,0	; DH-11 MUX CONTROLLER 3
	004052	000000
LC -- LOW CORE FOR RSX20F	MACRO M1113  03-APR-86 20:41  PAGE 25
LOW CORE -- DH-11 DATA BASE

   1004		000020 				.REPT	16.
   1005						.WORD	0,160120,16003,0	; DH-11 MUX CONTROLLER 4
   1006						.ENDR
	004054	000000 	160120 	016003 		.WORD	0,160120,16003,0	; DH-11 MUX CONTROLLER 4
	004062	000000
	004064	000000 	160120 	016003 		.WORD	0,160120,16003,0	; DH-11 MUX CONTROLLER 4
	004072	000000
	004074	000000 	160120 	016003 		.WORD	0,160120,16003,0	; DH-11 MUX CONTROLLER 4
	004102	000000
	004104	000000 	160120 	016003 		.WORD	0,160120,16003,0	; DH-11 MUX CONTROLLER 4
	004112	000000
	004114	000000 	160120 	016003 		.WORD	0,160120,16003,0	; DH-11 MUX CONTROLLER 4
	004122	000000
	004124	000000 	160120 	016003 		.WORD	0,160120,16003,0	; DH-11 MUX CONTROLLER 4
	004132	000000
	004134	000000 	160120 	016003 		.WORD	0,160120,16003,0	; DH-11 MUX CONTROLLER 4
	004142	000000
	004144	000000 	160120 	016003 		.WORD	0,160120,16003,0	; DH-11 MUX CONTROLLER 4
	004152	000000
	004154	000000 	160120 	016003 		.WORD	0,160120,16003,0	; DH-11 MUX CONTROLLER 4
	004162	000000
	004164	000000 	160120 	016003 		.WORD	0,160120,16003,0	; DH-11 MUX CONTROLLER 4
	004172	000000
	004174	000000 	160120 	016003 		.WORD	0,160120,16003,0	; DH-11 MUX CONTROLLER 4
	004202	000000
	004204	000000 	160120 	016003 		.WORD	0,160120,16003,0	; DH-11 MUX CONTROLLER 4
	004212	000000
	004214	000000 	160120 	016003 		.WORD	0,160120,16003,0	; DH-11 MUX CONTROLLER 4
	004222	000000
	004224	000000 	160120 	016003 		.WORD	0,160120,16003,0	; DH-11 MUX CONTROLLER 4
	004232	000000
	004234	000000 	160120 	016003 		.WORD	0,160120,16003,0	; DH-11 MUX CONTROLLER 4
	004242	000000
	004244	000000 	160120 	016003 		.WORD	0,160120,16003,0	; DH-11 MUX CONTROLLER 4
	004252	000000
LC -- LOW CORE FOR RSX20F	MACRO M1113  03-APR-86 20:41  PAGE 26
LOW CORE -- DH-11 DATA BASE

   1008		000020 				.REPT	16.
   1009						.WORD	0,160140,16003,0	; DH-11 MUX CONTROLLER 5
   1010						.ENDR
	004254	000000 	160140 	016003 		.WORD	0,160140,16003,0	; DH-11 MUX CONTROLLER 5
	004262	000000
	004264	000000 	160140 	016003 		.WORD	0,160140,16003,0	; DH-11 MUX CONTROLLER 5
	004272	000000
	004274	000000 	160140 	016003 		.WORD	0,160140,16003,0	; DH-11 MUX CONTROLLER 5
	004302	000000
	004304	000000 	160140 	016003 		.WORD	0,160140,16003,0	; DH-11 MUX CONTROLLER 5
	004312	000000
	004314	000000 	160140 	016003 		.WORD	0,160140,16003,0	; DH-11 MUX CONTROLLER 5
	004322	000000
	004324	000000 	160140 	016003 		.WORD	0,160140,16003,0	; DH-11 MUX CONTROLLER 5
	004332	000000
	004334	000000 	160140 	016003 		.WORD	0,160140,16003,0	; DH-11 MUX CONTROLLER 5
	004342	000000
	004344	000000 	160140 	016003 		.WORD	0,160140,16003,0	; DH-11 MUX CONTROLLER 5
	004352	000000
	004354	000000 	160140 	016003 		.WORD	0,160140,16003,0	; DH-11 MUX CONTROLLER 5
	004362	000000
	004364	000000 	160140 	016003 		.WORD	0,160140,16003,0	; DH-11 MUX CONTROLLER 5
	004372	000000
	004374	000000 	160140 	016003 		.WORD	0,160140,16003,0	; DH-11 MUX CONTROLLER 5
	004402	000000
	004404	000000 	160140 	016003 		.WORD	0,160140,16003,0	; DH-11 MUX CONTROLLER 5
	004412	000000
	004414	000000 	160140 	016003 		.WORD	0,160140,16003,0	; DH-11 MUX CONTROLLER 5
	004422	000000
	004424	000000 	160140 	016003 		.WORD	0,160140,16003,0	; DH-11 MUX CONTROLLER 5
	004432	000000
	004434	000000 	160140 	016003 		.WORD	0,160140,16003,0	; DH-11 MUX CONTROLLER 5
	004442	000000
	004444	000000 	160140 	016003 		.WORD	0,160140,16003,0	; DH-11 MUX CONTROLLER 5
	004452	000000
LC -- LOW CORE FOR RSX20F	MACRO M1113  03-APR-86 20:41  PAGE 27
LOW CORE -- DH-11 DATA BASE

   1012		000020 				.REPT	16.
   1013						.WORD	0,160160,16003,0	; DH-11 MUX CONTROLLER 6
   1014						.ENDR
	004454	000000 	160160 	016003 		.WORD	0,160160,16003,0	; DH-11 MUX CONTROLLER 6
	004462	000000
	004464	000000 	160160 	016003 		.WORD	0,160160,16003,0	; DH-11 MUX CONTROLLER 6
	004472	000000
	004474	000000 	160160 	016003 		.WORD	0,160160,16003,0	; DH-11 MUX CONTROLLER 6
	004502	000000
	004504	000000 	160160 	016003 		.WORD	0,160160,16003,0	; DH-11 MUX CONTROLLER 6
	004512	000000
	004514	000000 	160160 	016003 		.WORD	0,160160,16003,0	; DH-11 MUX CONTROLLER 6
	004522	000000
	004524	000000 	160160 	016003 		.WORD	0,160160,16003,0	; DH-11 MUX CONTROLLER 6
	004532	000000
	004534	000000 	160160 	016003 		.WORD	0,160160,16003,0	; DH-11 MUX CONTROLLER 6
	004542	000000
	004544	000000 	160160 	016003 		.WORD	0,160160,16003,0	; DH-11 MUX CONTROLLER 6
	004552	000000
	004554	000000 	160160 	016003 		.WORD	0,160160,16003,0	; DH-11 MUX CONTROLLER 6
	004562	000000
	004564	000000 	160160 	016003 		.WORD	0,160160,16003,0	; DH-11 MUX CONTROLLER 6
	004572	000000
	004574	000000 	160160 	016003 		.WORD	0,160160,16003,0	; DH-11 MUX CONTROLLER 6
	004602	000000
	004604	000000 	160160 	016003 		.WORD	0,160160,16003,0	; DH-11 MUX CONTROLLER 6
	004612	000000
	004614	000000 	160160 	016003 		.WORD	0,160160,16003,0	; DH-11 MUX CONTROLLER 6
	004622	000000
	004624	000000 	160160 	016003 		.WORD	0,160160,16003,0	; DH-11 MUX CONTROLLER 6
	004632	000000
	004634	000000 	160160 	016003 		.WORD	0,160160,16003,0	; DH-11 MUX CONTROLLER 6
	004642	000000
	004644	000000 	160160 	016003 		.WORD	0,160160,16003,0	; DH-11 MUX CONTROLLER 6
	004652	000000
LC -- LOW CORE FOR RSX20F	MACRO M1113  03-APR-86 20:41  PAGE 28
LOW CORE -- DH-11 DATA BASE

   1016		000020 				.REPT	16.
   1017						.WORD	0,160200,16003,0	; DH-11 MUX CONTROLLER 7
   1018						.ENDR
	004654	000000 	160200 	016003 		.WORD	0,160200,16003,0	; DH-11 MUX CONTROLLER 7
	004662	000000
	004664	000000 	160200 	016003 		.WORD	0,160200,16003,0	; DH-11 MUX CONTROLLER 7
	004672	000000
	004674	000000 	160200 	016003 		.WORD	0,160200,16003,0	; DH-11 MUX CONTROLLER 7
	004702	000000
	004704	000000 	160200 	016003 		.WORD	0,160200,16003,0	; DH-11 MUX CONTROLLER 7
	004712	000000
	004714	000000 	160200 	016003 		.WORD	0,160200,16003,0	; DH-11 MUX CONTROLLER 7
	004722	000000
	004724	000000 	160200 	016003 		.WORD	0,160200,16003,0	; DH-11 MUX CONTROLLER 7
	004732	000000
	004734	000000 	160200 	016003 		.WORD	0,160200,16003,0	; DH-11 MUX CONTROLLER 7
	004742	000000
	004744	000000 	160200 	016003 		.WORD	0,160200,16003,0	; DH-11 MUX CONTROLLER 7
	004752	000000
	004754	000000 	160200 	016003 		.WORD	0,160200,16003,0	; DH-11 MUX CONTROLLER 7
	004762	000000
	004764	000000 	160200 	016003 		.WORD	0,160200,16003,0	; DH-11 MUX CONTROLLER 7
	004772	000000
	004774	000000 	160200 	016003 		.WORD	0,160200,16003,0	; DH-11 MUX CONTROLLER 7
	005002	000000
	005004	000000 	160200 	016003 		.WORD	0,160200,16003,0	; DH-11 MUX CONTROLLER 7
	005012	000000
	005014	000000 	160200 	016003 		.WORD	0,160200,16003,0	; DH-11 MUX CONTROLLER 7
	005022	000000
	005024	000000 	160200 	016003 		.WORD	0,160200,16003,0	; DH-11 MUX CONTROLLER 7
	005032	000000
	005034	000000 	160200 	016003 		.WORD	0,160200,16003,0	; DH-11 MUX CONTROLLER 7
	005042	000000
	005044	000000 	160200 	016003 		.WORD	0,160200,16003,0	; DH-11 MUX CONTROLLER 7
	005052	000000
   1019
   1020		000200 			DHCNT	==.-DHTBL/8.			; COUNT OF DH-11'S
   1021		000205 			TTCNT	==.-TTTBL/8.			; NUMBER OF ENTRIES OF DATA LINE SCANNER TABLE
   1022		005054'			TTYEND==.
LC -- LOW CORE FOR RSX20F	MACRO M1113  03-APR-86 20:41  PAGE 29
LOW CORE -- DH-11 DATA BASE

   1024					;
   1025					; TERMINAL INPUT CONTROL TABLE, ONE WORD PER LINE
   1026					;
   1027	005054				.TTS2F::
   1028	005054	000000 				.WORD	0		; [5.1015] FLAG FOR CLOCK SERVICE
   1029	005056				.S2IDC::
   1030	005056	000000 				.WORD	0		; [4.1.1092] CURRENT COUNT OF LOCALLY DISABLED LINES
   1031	005060				.S2ITP::
   1032	005060	003004'				.WORD	TTTBL		; [4.1.1092] TABLE POSITION OF LAST LOCALLY ENABLED LINE
   1033	005062				.IBFLO::
   1034	005062	001600 				.WORD	1600		; [4.1.1092] INPUT BUFFER LOW THRESHOLD
   1035	005064				.IBFOK::
   1036	005064	002000 				.WORD	2000		; [4.1.1092] INPUT BUFFER OK THRESHOLD
   1037	005066				STSW2::
   1038	005066					.BLKW	TTCNT		; [5.1015] STATUS BLOCK FOR EACH LINE
LC -- LOW CORE FOR RSX20F	MACRO M1113  03-APR-86 20:41  PAGE 30
LOW CORE -- DECTAPE DRIVER DATA BASE

   1041						.SBTTL	LOW CORE -- DECTAPE DRIVER DATA BASE
   1042	005500				DTRTC::
   1043	005500	000000 				.WORD	0		; ERROR RETRY COUNT AND DRIVE RESET FLAG
   1044	005502				DTRNA::
   1045	005502	000000 				.WORD	0		; REQUEST NODE ADDRESS
   1046	005504				DTBUF::
   1047	005504	000000 	000000 			.WORD	0,0		; DECTAPE BUFFER
   1048	005510				DTCNT::
   1049	005510	000000 				.WORD	0		; BUFFER SIZE
   1050	005512				DTCW2::
   1051	005512	000000 				.WORD	0
   1052	005514				DTCW3::
   1053	005514	000000 				.WORD	0
   1054	005516					.BLKB	10		; [4.2263] PADDING
LC -- LOW CORE FOR RSX20F	MACRO M1113  03-APR-86 20:41  PAGE 32
LOW CORE -- DISC DRIVER DATA BASE

   1074						.SBTTL	LOW CORE -- DISC DRIVER DATA BASE
   1075
   1076	005526				RPRTC::
   1077	005526	000000 				.WORD	0		; RETRY COUNT FOR CURRENT OPERATION
   1078	005530				RPRNA::
   1079	005530	000000 				.WORD	0		; ADDRESS OF RNA
   1080	005532				RPBUF::
   1081	005532	000000 	000000 			.WORD	0,0		; BUFFER ADDRESS
   1082	005536				RPCNT::
   1083	005536	000000 				.WORD	0		; SIZE
   1084	005540				RPUNIT::
   1085	005540	000000 				.WORD	0		; CURRENT UNIT
   1086	005542				RPCW2::
   1087	005542	000000 				.WORD	0
   1088	005544				.RPELQ::
   1089	005544	000000 				.WORD	0		; [5.1009] RH-11 ERROR LOGGING QUEUE LISTHEAD
   1090	005546				.RPELC::
   1091	005546	000000 				.WORD	0		; [5.1009] RH-11 ERROR LOGGING QUEUE COUNT
   1092	005550	000020 			.RHPB::	.WORD	20
   1093	005552				.RHSN::	.BLKW	10
LC -- LOW CORE FOR RSX20F	MACRO M1113  03-APR-86 20:41  PAGE 33
LOW CORE -- FE DRIVER DATA BASE

   1095						.SBTTL	LOW CORE -- FE DRIVER DATA BASE
   1096
   1097	005572				FETBL::
   1098	005572	000000 				.WORD	0		; ENTRY FOR FE0:
   1099	005574	000000 				.WORD	0		; ENTRY FOR FE1:
   1100	005576	000000 				.WORD	0		; ENTRY FOR FE2:
   1101	005600	000000 				.WORD	0		; ENTRY FOR FE3:
   1102	005602				NODADR::
   1103	005602	000000 				.WORD	0
   1104	005604				ADRSAV::
   1105	005604	000000 				.WORD	0		; ADDRESS SAVED
   1106	005606				BYTESA::
   1107	005606	000000 				.WORD	0		; COUNT
   1108	005610				STSWD::
   1109	005610	000000 	000000 			.WORD	0,0		; STATUS WORDS
   1110	005614				TO10PK::
   1111	005614	000000 				.WORD	0		; -11 REQUEST TO -10
   1112	005616					.BLKB	20
   1113	005636				DNBLK::
   1114	005636	000000 				.WORD	0		; RESPONSE TO -10 REQUEST
   1115	005640				DNFCN::
   1116	005640	000000 				.WORD	0
   1117	005642	000000 	000000 			.WORD	0,0
   1118	005646				DNSTS::
   1119	005646	000000 	000000 			.WORD	0,0
   1120	005652	000000 				.WORD	0
   1121	005654				BLKTT::
   1122	005654					.BLKW	20
   1123	005714				.RPUNT::
   1124	005714	000000 				.WORD	0		; RP UNIT NUMBER FOR RPADR ETC.
   1125	005716				.FEACT::
   1126	005716	000000 				.WORD	0		; FE DEVICE AVAILABLE FOR DB ACCESS WHEN .NE. 0
   1127	005720				.RPADR::
   1128	005720	000000 	000000 			.WORD	0,0		; !!!!RPADR AND RPSIZ MUST BE IN THIS ORDER
   1129	005724				.RPSIZ::
   1130	005724	000000 	000000 			.WORD	0,0		; !!!
   1131
LC -- LOW CORE FOR RSX20F	MACRO M1113  03-APR-86 20:41  PAGE 34
LOW CORE -- CD-11 DRIVER DATA BASE

   1134						.SBTTL	LOW CORE -- CD-11 DRIVER DATA BASE
   1135
   1136		177160 				CDST==177160		; CONTROL AND STATUS REGISTER ADDRESS
   1137		177162 				CDCC==177162		; COLUMN COUNT REGISTER ADDRESS
   1138		177164 				CDBA==177164		; BUS ADDRESS REGISTER ADDRESS
   1139		177166 				CDDB==177166		; DATA BUFFER REGISTER ADDRESS
   1140
   1141	005730				CREVFG::
   1142	005730	005732'				.WORD	CRCEVF		; ADDRESS OF CR TASK'S EVENT FLAGS
   1143	005732				CRCEVF::
   1144	005732					.BLKW	1		; CURRENT EVENT FLAGS
   1145	005734				CRHUNG::
   1146	005734	000000 				.WORD	0		; # TIMES CR WAS CAUGHT SNOOZING
   1147	005736				.CRPFL::
   1148	005736	000000 				.WORD	0		; POWER FAIL FLAG FOR CARD READER
   1149					;
   1150	005740				CRSTBH::
   1151	005740					.BLKW	1		; HEADER WORD (UNIT/BYTE COUNT) OF STATUS BLOCK
   1152	005742				CRSTBK::
   1153	005742					.BLKW	2+1+<<CDDB+2-CDST>/2> ; STATUS RETURN BLOCK TO -10
   1154		000016 			CRSTLN==.-CRSTBK
   1155					;
   1156	005760				CRBUFH::
   1157	005760					.BLKW	1		; HEADER WORD (UNIT/BYTE COUNT) OF DATA BUFFER
   1158	005762				CRBUFF::
   1159	005762					.BLKW	80.		; DATA BUFFER FROM CD-11
   1160		000240 			CRBFLN==.-CRBUFF
   1161	006222	000000 				.WORD	0		; FOR OVERRUN
   1162					;
   1163					; CR DEVICE STATUS TABLE
   1164					;
   1165	006224				CRTBL::
   1166		006224'			CRTHD==.			; THREADED LIST POINTER (FOR ..STCR)
   1167	006224	000000 				.WORD	0
   1168		006226'			CREXP==.			; EXTERNAL PAGE ADDR OF CD-11
   1169	006226	177160 				.WORD	CDST
   1170		006230'			CRSTS==.			; STATUS BITS
   1171	006230	000000 				.WORD	0
   1172	006232	000000 				.WORD	0		; (NOT USED)
   1173					;
   1174		000010 			CRSIZE==.-CRTBL
   1175
LC -- LOW CORE FOR RSX20F	MACRO M1113  03-APR-86 20:41  PAGE 35
LOW CORE -- LP-20 DRIVER DATA BASE

   1179						.SBTTL	LOW CORE -- LP-20 DRIVER DATA BASE
   1180
   1181		175400 				LPEXPA==175400		; EXTERNAL PAGE ADDRESS OF LPCSRA
   1182		000020 				LPEXPZ==20		; SIZE OF  EXTERNAL PAGE ADDRESSES IN BYTES
   1183
   1184					;
   1185					; MISCELLANEOUS VARIABLES
   1186					;
   1187	006234				LPUNIT::
   1188	006234					.BLKW	1		; LP UNIT # FROM PS ON INTERRUPT
   1189					;
   1190	006236				LPEVFG::
   1191	006236	006240'				.WORD	LPCEVF		; ADDRESS OF WHERE TO SET EVENT FLAGS FOR LP TASK
   1192					;
   1193	006240				LPCEVF::
   1194	006240					.BLKW	1		; CURRENT EVENT FLAGS
   1195					;
   1196	006242				LPHUNG::
   1197	006242	000000 				.WORD	0		; COUNT OF # TIMES LP WAS HUNG
   1198					;
   1199	006244				.LPPFL::
   1200	006244	000000 				.WORD	0		; POWER FAIL FLAG
   1201					;
   1202	006246				LPSTBH::
   1203	006246					.BLKW	1		; HEADER WORD (UNIT/BYTE COUNT)
   1204	006250				LPSTBK::
   1205	006250					.BLKB	4+2+2+LPEXPZ	; STATUS RETURN BLOCK TO -10
   1206						.EVEN
   1207		000030 			LPSTLN==.-LPSTBK
   1208					;
   1209					;
   1210					; LP DEVICE STATUS TABLE
   1211					;  ONE ENTRY FOR EVERY LP, SIZE= LPSIZE
   1212					;
   1213	006300				LPTBL::
   1214		000000 			$$$UNI=0			; START WITH UNIT 0
   1215		000002 				.REPT	L$$P20		; MAKE ONE FOR EACH LP
   1216					;
   1217					LPSTS==	0			; MISC STATUS BITS: *** MUST BE ZERO ***
   1218						.WORD	$$$UNI
   1219					LPCSA==	2			; EXTERNAL PAGE ADDRESS FOR THIS LP
   1220						.WORD	LPEXPA+<20*$$$UNI>
   1221					LPTHD==	4			; POINTER TO THREADED OUTPUT QUEUE
   1222									; ZERO IF NO QUEUE
   1223						.WORD	0
   1224					LPITH==	6			; INTERRUPT-LEVEL THREAD POINTER
   1225									; POINTS TO CURRENT BUFFER BEING
   1226									; OUTPUT AT INTERRUPT LEVEL
   1227						.WORD	0
   1228					;
   1229					$$$UNI=$$$UNI+1
   1230						.ENDR
	006300	000000 				.WORD	$$$UNI
	006302	175400 				.WORD	LPEXPA+<20*$$$UNI>
	006304	000000 				.WORD	0
	006306	000000 				.WORD	0
	006310	000001 				.WORD	$$$UNI
LC -- LOW CORE FOR RSX20F	MACRO M1113  03-APR-86 20:41  PAGE 35-1
LOW CORE -- LP-20 DRIVER DATA BASE

	006312	175420 				.WORD	LPEXPA+<20*$$$UNI>
	006314	000000 				.WORD	0
	006316	000000 				.WORD	0
   1231		000010 			LPSIZE==<.-LPTBL>/L$$P20	; SIZE OF EACH ENTRY
   1232					;
   1233					; SECOND (PARALLEL) LP TABLE-- INDEXES ARE FROM LPTBL
   1234					;
   1235	006320				LPTBL2::
   1236		000010 				.REPT	LPSIZE*L$$P20/2	; MAKE SPACE
   1237						.WORD	0
   1238						.ENDR
	006320	000000 				.WORD	0
	006322	000000 				.WORD	0
	006324	000000 				.WORD	0
	006326	000000 				.WORD	0
	006330	000000 				.WORD	0
	006332	000000 				.WORD	0
	006334	000000 				.WORD	0
	006336	000000 				.WORD	0
   1239					;
   1240		000020 			LPMCB==	0+LPTBL2-LPTBL		; MULTI-CHARACTER BUFFER (TWO BYTES)
   1241		000022 			LPCSM==	2+LPTBL2-LPTBL		; ACCUMULATED CHECKSUM (LOW BYTE IS TRASH)
   1242		000024 			LPRTY==	4+LPTBL2-LPTBL		; RETRY COUNTER
   1243					;
   1244					; THIRD (PARALLEL) LP TABLE-- INDEXES ARE ALSO FROM LPTBL
   1245					;
   1246	006340				LPTBL3::
   1247		000010 				.REPT	LPSIZE*L$$P20/2	; MAKE SPACE
   1248						.WORD	0
   1249						.ENDR
	006340	000000 				.WORD	0
	006342	000000 				.WORD	0
	006344	000000 				.WORD	0
	006346	000000 				.WORD	0
	006350	000000 				.WORD	0
	006352	000000 				.WORD	0
	006354	000000 				.WORD	0
	006356	000000 				.WORD	0
   1250					;
   1251		000040 			LPRMA==	0+LPTBL3-LPTBL		; RAM/VFU DATA ADDRESS
   1252		000042 			LPRMZ==	2+LPTBL3-LPTBL		; RAM/VFU DATA BUFFER SIZE
   1253		000044 			LPRMC==	4+LPTBL3-LPTBL		; CURRENT POINTER INTO RAM/VFU DATA
   1254					;
   1255					; POINTERS TO LPTBL BY UNIT NUMBER
   1256					;
   1257	006360				LPUTBL::
   1258		000000 			$$$UNI=0
   1259		000002 				.REPT	L$$P20		; ONE PER LP
   1260						.WORD	LPTBL+<$$$UNI*LPSIZE>
   1261					$$$UNI=$$$UNI+1
   1262						.ENDR
	006360	006300'				.WORD	LPTBL+<$$$UNI*LPSIZE>
	006362	006310'				.WORD	LPTBL+<$$$UNI*LPSIZE>
   1263
LC -- LOW CORE FOR RSX20F	MACRO M1113  03-APR-86 20:41  PAGE 36
LOW CORE -- STD (SYSTEM TASK DIRECTORY)

   1266						.SBTTL	LOW CORE -- STD (SYSTEM TASK DIRECTORY)
   1267
   1268					;
   1269					;	SYSTEM TASK DIRECTORY
   1270					;
   1271	006364				.STDTA::
   1272	006364	006372'				.WORD	.STDTB		; STD ALPHA TABLE ADDRESS
   1273	006366				.STDTC::
   1274	006366	000044 				.WORD	36.		; STD ALPHA TABLE MAX SIZE *2
   1275	006370				.STDTZ::
   1276	006370	000024 				.WORD	24		; STD "SIZE" (2N-2)
   1277					;
   1278	006372				.STDTB::
   1280	006372	006776'				.WORD	STDCDR		; CARD READER ENTRY
   1282	006374	006436'				.WORD	STDDTE		; DTE CLOCK ENTRY
   1284	006376	006536'				.WORD	STDDTP		; DECTAPE
   1287	006400	006476'				.WORD	STDFED		; FE DRIVER
   1293	006402	006576'				.WORD	STDF11		; F11ACP
   1296	006404	006736'				.WORD	STDLPT		; LP20
   1298	006406	007076'				.WORD	STDQPR		; QUEUE'D PROTOCOL
   1300	006410	006636'				.WORD	STDRPT		; RP04 ENTRY
   1302	006412	007036'				.WORD	STDTTY		; TTY ENTRY
   1304	006414	006676'				.WORD	STDINS		; INSTALL
   1306	006416	000000 	000000 	000000 		.WORD	0,0,0,0,0,0,0
	006424	000000 	000000 	000000
	006432	000000
   1320	006434	000000 				.WORD	0
   1328					;
   1329					;
   1330					;
   1331	006436				STDDTE::
   1332	006436					.STDEN	DTE20,DTETPD,SF.TA!SF.FX!SF.ST,200,0,DTEHD,0,0,0,0,0,0
	006436	016045 	146260 			.RAD50	"DTE20"
	006442	007622'				.WORD	DTETPD
	006444	100003 				.WORD	SF.TA!SF.FX!SF.ST
	006446	   200 	   000 			.BYTE	200,0
	006450	025304'				.WORD	DTEHD
	006452	000000 				.WORD	0
	006454	000000 				.WORD	0
	006456	000000 				.WORD	0
	006460	000000 				.WORD	0
	006462	006462'				.WORD	.
	006464	006462'				.WORD	.-2
	006466	000000 				.WORD	0
	006470	000000 				.WORD	0
	006472	000000 				.WORD	0
	006474	000000 				.WORD	0
   1334					;
   1335	006476				STDFED::
   1336	006476					.STDEN	FE....,FETPD,SF.TA!SF.FX!SF.ST,176,0,FEHD,0,0,0,0,0,0
	006476	023144 	131574 			.RAD50	"FE...."
	006502	007642'				.WORD	FETPD
	006504	100003 				.WORD	SF.TA!SF.FX!SF.ST
	006506	   176 	   000 			.BYTE	176,0
	006510	000000G				.WORD	FEHD
	006512	000000 				.WORD	0
	006514	000000 				.WORD	0
LC -- LOW CORE FOR RSX20F	MACRO M1113  03-APR-86 20:41  PAGE 36-1
LOW CORE -- STD (SYSTEM TASK DIRECTORY)

	006516	000000 				.WORD	0
	006520	000000 				.WORD	0
	006522	006522'				.WORD	.
	006524	006522'				.WORD	.-2
	006526	000000 				.WORD	0
	006530	000000 				.WORD	0
	006532	000000 				.WORD	0
	006534	000000 				.WORD	0
   1339					;
   1340	006536				STDDTP::
   1341	006536					.STDEN	DT....,DTTPD,SF.TA!SF.FX!SF.ST,176,0,DTHD,0,0,0,0,0,0
	006536	016074 	131574 			.RAD50	"DT...."
	006542	007762'				.WORD	DTTPD
	006544	100003 				.WORD	SF.TA!SF.FX!SF.ST
	006546	   176 	   000 			.BYTE	176,0
	006550	000000G				.WORD	DTHD
	006552	000000 				.WORD	0
	006554	000000 				.WORD	0
	006556	000000 				.WORD	0
	006560	000000 				.WORD	0
	006562	006562'				.WORD	.
	006564	006562'				.WORD	.-2
	006566	000000 				.WORD	0
	006570	000000 				.WORD	0
	006572	000000 				.WORD	0
	006574	000000 				.WORD	0
   1349					;
   1350	006576				STDF11::
   1355	006576					.STDEN	F11ACP,F11TPD,SF.ST,220,<<DT0PEN-.PUDBA>/U.SZ>,145400,7700,0,145400,145400,0,5
	006576	025167 	003310 			.RAD50	"F11ACP"
	006602	010022'				.WORD	F11TPD
	006604	100000 				.WORD	SF.ST
	006606	   220 	   011 			.BYTE	220,<DT0PEN-.PUDBA>/U.SZ
	006610	145400 				.WORD	145400
	006612	007700 				.WORD	7700
	006614	000000 				.WORD	0
	006616	145400 				.WORD	145400
	006620	145400 				.WORD	145400
	006622	006622'				.WORD	.
	006624	006622'				.WORD	.-2
	006626	000000 				.WORD	0
	006630	000000 				.WORD	0
	006632	000005 				.WORD	5
	006634	000000 				.WORD	0
   1362					;
   1363	006636				STDRPT::
   1364	006636					.STDEN	RP....,RPTPD,SF.TA!SF.FX!SF.ST,176,0,RPHD,0,0,0,0,0,0
	006636	071434 	131574 			.RAD50	"RP...."
	006642	010002'				.WORD	RPTPD
	006644	100003 				.WORD	SF.TA!SF.FX!SF.ST
	006646	   176 	   000 			.BYTE	176,0
	006650	000000G				.WORD	RPHD
	006652	000000 				.WORD	0
	006654	000000 				.WORD	0
	006656	000000 				.WORD	0
	006660	000000 				.WORD	0
	006662	006662'				.WORD	.
LC -- LOW CORE FOR RSX20F	MACRO M1113  03-APR-86 20:41  PAGE 36-2
LOW CORE -- STD (SYSTEM TASK DIRECTORY)

	006664	006662'				.WORD	.-2
	006666	000000 				.WORD	0
	006670	000000 				.WORD	0
	006672	000000 				.WORD	0
	006674	000000 				.WORD	0
   1367					;
   1368	006676				STDINS::
   1369	006676					.STDEN	.INST.,INSTPD,SF.FX!SF.ST,200,0,INSHD,0,0,INSTAL,INSTK-16,0,0
	006676	130166 	074774 			.RAD50	".INST."
	006702	007602'				.WORD	INSTPD
	006704	100002 				.WORD	SF.FX!SF.ST
	006706	   200 	   000 			.BYTE	200,0
	006710	000000G				.WORD	INSHD
	006712	000000 				.WORD	0
	006714	000000 				.WORD	0
	006716	000000G				.WORD	INSTAL
	006720	177762G				.WORD	INSTK-16
	006722	006722'				.WORD	.
	006724	006722'				.WORD	.-2
	006726	000000 				.WORD	0
	006730	000000 				.WORD	0
	006732	000000 				.WORD	0
	006734	000000 				.WORD	0
   1372					;
   1373	006736				STDLPT::
   1374	006736					.STDEN	LPDRV,LPTPD,SF.TA!SF.FX!SF.ST,176,0,LPHD,0,0,0,0,0,0
	006736	046604 	071760 			.RAD50	"LPDRV"
	006742	007702'				.WORD	LPTPD
	006744	100003 				.WORD	SF.TA!SF.FX!SF.ST
	006746	   176 	   000 			.BYTE	176,0
	006750	000000G				.WORD	LPHD
	006752	000000 				.WORD	0
	006754	000000 				.WORD	0
	006756	000000 				.WORD	0
	006760	000000 				.WORD	0
	006762	006762'				.WORD	.
	006764	006762'				.WORD	.-2
	006766	000000 				.WORD	0
	006770	000000 				.WORD	0
	006772	000000 				.WORD	0
	006774	000000 				.WORD	0
   1377					;
   1378	006776				STDCDR::
   1379	006776					.STDEN	CDDRV,CDRTPD,SF.TA!SF.FX!SF.ST,210,0,CRHD,0,0,57252,55130-16,0,0
	006776	011544 	071760 			.RAD50	"CDDRV"
	007002	007722'				.WORD	CDRTPD
	007004	100003 				.WORD	SF.TA!SF.FX!SF.ST
	007006	   210 	   000 			.BYTE	210,0
	007010	000000G				.WORD	CRHD
	007012	000000 				.WORD	0
	007014	000000 				.WORD	0
	007016	057252 				.WORD	57252
	007020	055112 				.WORD	55130-16
	007022	007022'				.WORD	.
	007024	007022'				.WORD	.-2
	007026	000000 				.WORD	0
	007030	000000 				.WORD	0
LC -- LOW CORE FOR RSX20F	MACRO M1113  03-APR-86 20:41  PAGE 36-3
LOW CORE -- STD (SYSTEM TASK DIRECTORY)

	007032	000000 				.WORD	0
	007034	000000 				.WORD	0
   1381					;
   1382	007036				STDTTY::
   1383	007036					.STDEN	TTYDRV,TTYTPD,SF.TA!SF.FX!SF.ST,177,0,TTYHD,0,0,0,0,0,0
	007036	100071 	015746 			.RAD50	"TTYDRV"
	007042	007662'				.WORD	TTYTPD
	007044	100003 				.WORD	SF.TA!SF.FX!SF.ST
	007046	   177 	   000 			.BYTE	177,0
	007050	032554'				.WORD	TTYHD
	007052	000000 				.WORD	0
	007054	000000 				.WORD	0
	007056	000000 				.WORD	0
	007060	000000 				.WORD	0
	007062	007062'				.WORD	.
	007064	007062'				.WORD	.-2
	007066	000000 				.WORD	0
	007070	000000 				.WORD	0
	007072	000000 				.WORD	0
	007074	000000 				.WORD	0
   1384					;
   1385	007076				STDQPR::
   1386	007076					.STDEN	QDPROT,QPRTPD,SF.TA!SF.FX!SF.ST,176,0,BTPHD,0,0,0,0,0,0
	007076	065360 	071354 			.RAD50	"QDPROT"
	007102	007742'				.WORD	QPRTPD
	007104	100003 				.WORD	SF.TA!SF.FX!SF.ST
	007106	   176 	   000 			.BYTE	176,0
	007110	016262'				.WORD	BTPHD
	007112	000000 				.WORD	0
	007114	000000 				.WORD	0
	007116	000000 				.WORD	0
	007120	000000 				.WORD	0
	007122	007122'				.WORD	.
	007124	007122'				.WORD	.-2
	007126	000000 				.WORD	0
	007130	000000 				.WORD	0
	007132	000000 				.WORD	0
	007134	000000 				.WORD	0
LC -- LOW CORE FOR RSX20F	MACRO M1113  03-APR-86 20:41  PAGE 37
LOW CORE -- ATL (ACTIVE TASK LIST)

   1388						.SBTTL	LOW CORE -- ATL (ACTIVE TASK LIST)
   1389
   1390					;
   1391					;	ACTIVE TASK LISTHEAD
   1392					;
   1393	007136				.ATLLH::
   1394	007136	007142'				.WORD	DTETSK		; FORWARD POINTER IN ACTIVE TASK LIST
   1395	007140	007542'				.WORD	NULTSK		; NULL TASK
   1396					;
   1397					;
   1398	007142				DTETSK::
   1399	007142					.ATLEN	TTYTSK,.ATLLH,DTESP,0,200,DTEHD,TS.RUN,0,STDDTE,0,0,0,0,0,0,0
	007142	007202'				.WORD	TTYTSK
	007144	007136'				.WORD	.ATLLH
	007146	025564'				.WORD	DTESP
	007150	000000 				.WORD	0
	007152	000200 				.WORD	200
	007154	025304'				.WORD	DTEHD
	007156	   010 	   000 			.BYTE	TS.RUN,0
	007160	006436'				.WORD	STDDTE
	007162	000000 	000000 			.WORD	0,0
	007166	000000 	000000 	000000 		.WORD	0,0,0,0
	007174	000000
	007176	000000 				.WORD	0
	007200	000000 				.WORD	0
   1400		007142'				PRVTSK==DTETSK
   1401					;
   1402	007202				TTYTSK::
   1403	007202					.ATLEN	RPTSK,PRVTSK,TTYSP,0,177,TTYHD,TS.RUN,0,STDTTY,0,0,0,0,0,0,0
	007202	007242'				.WORD	RPTSK
	007204	007142'				.WORD	PRVTSK
	007206	033034'				.WORD	TTYSP
	007210	000000 				.WORD	0
	007212	000177 				.WORD	177
	007214	032554'				.WORD	TTYHD
	007216	   010 	   000 			.BYTE	TS.RUN,0
	007220	007036'				.WORD	STDTTY
	007222	000000 	000000 			.WORD	0,0
	007226	000000 	000000 	000000 		.WORD	0,0,0,0
	007234	000000
	007236	000000 				.WORD	0
	007240	000000 				.WORD	0
   1404		007202'				PRVTSK==TTYTSK
   1405					;
   1407	007242				RPTSK::
   1408	007242					.ATLEN	LPTSK,PRVTSK,RPSTK,0,176,RPHD,TS.RUN,0,STDRPT,0,0,0,0,0,0,0
	007242	007302'				.WORD	LPTSK
	007244	007202'				.WORD	PRVTSK
	007246	000000G				.WORD	RPSTK
	007250	000000 				.WORD	0
	007252	000176 				.WORD	176
	007254	000000G				.WORD	RPHD
	007256	   010 	   000 			.BYTE	TS.RUN,0
	007260	006636'				.WORD	STDRPT
	007262	000000 	000000 			.WORD	0,0
	007266	000000 	000000 	000000 		.WORD	0,0,0,0
	007274	000000
LC -- LOW CORE FOR RSX20F	MACRO M1113  03-APR-86 20:41  PAGE 37-1
LOW CORE -- ATL (ACTIVE TASK LIST)

	007276	000000 				.WORD	0
	007300	000000 				.WORD	0
   1409		007242'				PRVTSK==RPTSK
   1413					;
   1415	007302				LPTSK::
   1416	007302					.ATLEN	CDTSK,PRVTSK,LPSTK,0,176,LPHD,TS.RUN,0,STDLPT,0,0,0,0,0,0,0
	007302	007342'				.WORD	CDTSK
	007304	007242'				.WORD	PRVTSK
	007306	000000G				.WORD	LPSTK
	007310	000000 				.WORD	0
	007312	000176 				.WORD	176
	007314	000000G				.WORD	LPHD
	007316	   010 	   000 			.BYTE	TS.RUN,0
	007320	006736'				.WORD	STDLPT
	007322	000000 	000000 			.WORD	0,0
	007326	000000 	000000 	000000 		.WORD	0,0,0,0
	007334	000000
	007336	000000 				.WORD	0
	007340	000000 				.WORD	0
   1417		007302'				PRVTSK==LPTSK
   1422	007342				CDTSK::
   1423	007342					.ATLEN	DTTSK,PRVTSK,CRSTK,CDRTPD,176,CRHD,TS.RUN,0,STDCDR,0,0,0,0,0,0,0
	007342	007402'				.WORD	DTTSK
	007344	007302'				.WORD	PRVTSK
	007346	000000G				.WORD	CRSTK
	007350	007722'				.WORD	CDRTPD
	007352	000176 				.WORD	176
	007354	000000G				.WORD	CRHD
	007356	   010 	   000 			.BYTE	TS.RUN,0
	007360	006776'				.WORD	STDCDR
	007362	000000 	000000 			.WORD	0,0
	007366	000000 	000000 	000000 		.WORD	0,0,0,0
	007374	000000
	007376	000000 				.WORD	0
	007400	000000 				.WORD	0
   1424		007342'				PRVTSK==CDTSK
   1428					;
   1430	007402				DTTSK::
   1431	007402					.ATLEN	FETSK,PRVTSK,DTSTK,0,176,DTHD,TS.RUN,0,STDDTP,0,0,0,0,0,0,0
	007402	007442'				.WORD	FETSK
	007404	007342'				.WORD	PRVTSK
	007406	000000G				.WORD	DTSTK
	007410	000000 				.WORD	0
	007412	000176 				.WORD	176
	007414	000000G				.WORD	DTHD
	007416	   010 	   000 			.BYTE	TS.RUN,0
	007420	006536'				.WORD	STDDTP
	007422	000000 	000000 			.WORD	0,0
	007426	000000 	000000 	000000 		.WORD	0,0,0,0
	007434	000000
	007436	000000 				.WORD	0
	007440	000000 				.WORD	0
   1432		007402'				PRVTSK==DTTSK
   1436					;
   1438	007442				FETSK::
   1439	007442					.ATLEN	DXTSK,PRVTSK,FESTK,0,176,FEHD,TS.RUN,0,STDFED,0,0,0,0,0,0,0
	007442	007502'				.WORD	DXTSK
LC -- LOW CORE FOR RSX20F	MACRO M1113  03-APR-86 20:41  PAGE 37-2
LOW CORE -- ATL (ACTIVE TASK LIST)

	007444	007402'				.WORD	PRVTSK
	007446	000000G				.WORD	FESTK
	007450	000000 				.WORD	0
	007452	000176 				.WORD	176
	007454	000000G				.WORD	FEHD
	007456	   010 	   000 			.BYTE	TS.RUN,0
	007460	006476'				.WORD	STDFED
	007462	000000 	000000 			.WORD	0,0
	007466	000000 	000000 	000000 		.WORD	0,0,0,0
	007474	000000
	007476	000000 				.WORD	0
	007500	000000 				.WORD	0
   1440		007442'				PRVTSK==FETSK
   1444					;
   1450	007502				DXTSK::
   1452					;
   1453	007502				QPRTSK::
   1454	007502					.ATLEN	NULTSK,PRVTSK,.BTSTK,0,1,BTPHD,TS.RUN,0,STDQPR,0,0,0,0,0,0,0
	007502	007542'				.WORD	NULTSK
	007504	007442'				.WORD	PRVTSK
	007506	016542'				.WORD	.BTSTK
	007510	000000 				.WORD	0
	007512	000001 				.WORD	1
	007514	016262'				.WORD	BTPHD
	007516	   010 	   000 			.BYTE	TS.RUN,0
	007520	007076'				.WORD	STDQPR
	007522	000000 	000000 			.WORD	0,0
	007526	000000 	000000 	000000 		.WORD	0,0,0,0
	007534	000000
	007536	000000 				.WORD	0
	007540	000000 				.WORD	0
   1455		007502'				PRVTSK==QPRTSK
   1456					;
   1457	007542				NULTSK::
   1458	007542					.ATLEN	.ATLLH,PRVTSK,NTKXSP,0,0,NULHD,TS.RUN,0,0,0,0,0,0,0,0,0
	007542	007136'				.WORD	.ATLLH
	007544	007502'				.WORD	PRVTSK
	007546	012752'				.WORD	NTKXSP
	007550	000000 				.WORD	0
	007552	000000 				.WORD	0
	007554	012472'				.WORD	NULHD
	007556	   010 	   000 			.BYTE	TS.RUN,0
	007560	000000 				.WORD	0
	007562	000000 	000000 			.WORD	0,0
	007566	000000 	000000 	000000 		.WORD	0,0,0,0
	007574	000000
	007576	000000 				.WORD	0
	007600	000000 				.WORD	0
LC -- LOW CORE FOR RSX20F	MACRO M1113  03-APR-86 20:41  PAGE 38
LOW CORE -- TPD (TASK PARTITION DIRECTORY)

   1460						.SBTTL	LOW CORE -- TPD (TASK PARTITION DIRECTORY)
   1461
   1462					;
   1463					;	TASK PARTITION DIRECTORY
   1464					;
   1465	007602				.TPDBA::
   1467					;
   1468	007602				INSTPD::
   1469	007602					.TPDEN	INSTPD,INSHD,0,0,TF.OU
	007602	000000 	000000 			.WORD	0,0
	007602	035203 	077604 			.RAD50	"INSTPD"
	007606	000000G				.WORD	INSHD
	007610	000000 				.WORD	0
	007612	000000 				.WORD	0
	007614	000002 				.WORD	TF.OU
	007616	007616'				.WORD	.
	007620	007616'				.WORD	.-2
   1471					;
   1472	007622				DTETPD::
   1473	007622					.TPDEN	DTETPD,DTEHD,0,0,TF.OU
	007622	000000 	000000 			.WORD	0,0
	007622	016045 	077604 			.RAD50	"DTETPD"
	007626	025304'				.WORD	DTEHD
	007630	000000 				.WORD	0
	007632	000000 				.WORD	0
	007634	000002 				.WORD	TF.OU
	007636	007636'				.WORD	.
	007640	007636'				.WORD	.-2
   1475					;
   1476	007642				FETPD::
   1477	007642					.TPDEN	FETPD,FEHD,0,0,TF.OU
	007642	000000 	000000 			.WORD	0,0
	007642	023134 	062240 			.RAD50	"FETPD"
	007646	000000G				.WORD	FEHD
	007650	000000 				.WORD	0
	007652	000000 				.WORD	0
	007654	000002 				.WORD	TF.OU
	007656	007656'				.WORD	.
	007660	007656'				.WORD	.-2
   1479					;
   1480	007662				TTYTPD::
   1481	007662					.TPDEN	TTYTPD,TTYHD,0,0,TF.OU
	007662	000000 	000000 			.WORD	0,0
	007662	100071 	077604 			.RAD50	"TTYTPD"
	007666	032554'				.WORD	TTYHD
	007670	000000 				.WORD	0
	007672	000000 				.WORD	0
	007674	000002 				.WORD	TF.OU
	007676	007676'				.WORD	.
	007700	007676'				.WORD	.-2
   1483					;
   1484	007702				LPTPD::
   1485	007702					.TPDEN	LPTPD,LPHD,0,0,TF.OU
	007702	000000 	000000 			.WORD	0,0
	007702	046624 	062240 			.RAD50	"LPTPD"
	007706	000000G				.WORD	LPHD
	007710	000000 				.WORD	0
LC -- LOW CORE FOR RSX20F	MACRO M1113  03-APR-86 20:41  PAGE 38-1
LOW CORE -- TPD (TASK PARTITION DIRECTORY)

	007712	000000 				.WORD	0
	007714	000002 				.WORD	TF.OU
	007716	007716'				.WORD	.
	007720	007716'				.WORD	.-2
   1488					;
   1489	007722				CDRTPD::
   1490	007722					.TPDEN	CDRTPD,CRHD,0,0,TF.OU
	007722	000000 	000000 			.WORD	0,0
	007722	011562 	077604 			.RAD50	"CDRTPD"
	007726	000000G				.WORD	CRHD
	007730	000000 				.WORD	0
	007732	000000 				.WORD	0
	007734	000002 				.WORD	TF.OU
	007736	007736'				.WORD	.
	007740	007736'				.WORD	.-2
   1492					;
   1493	007742				QPRTPD::
   1494	007742					.TPDEN	QPRTPD,BTPHD,0,0,TF.OU
	007742	000000 	000000 			.WORD	0,0
	007742	066322 	077604 			.RAD50	"QPRTPD"
	007746	016262'				.WORD	BTPHD
	007750	000000 				.WORD	0
	007752	000000 				.WORD	0
	007754	000002 				.WORD	TF.OU
	007756	007756'				.WORD	.
	007760	007756'				.WORD	.-2
   1496					;
   1497	007762				DTTPD::
   1498	007762					.TPDEN	DTTPD,DTHD,0,0,TF.OU
	007762	000000 	000000 			.WORD	0,0
	007762	016064 	062240 			.RAD50	"DTTPD"
	007766	000000G				.WORD	DTHD
	007770	000000 				.WORD	0
	007772	000000 				.WORD	0
	007774	000002 				.WORD	TF.OU
	007776	007776'				.WORD	.
	010000	007776'				.WORD	.-2
   1506					;
   1507	010002				RPTPD::
   1508	010002					.TPDEN	RPTPD,RPHD,0,0,TF.OU
	010002	000000 	000000 			.WORD	0,0
	010002	071424 	062240 			.RAD50	"RPTPD"
	010006	000000G				.WORD	RPHD
	010010	000000 				.WORD	0
	010012	000000 				.WORD	0
	010014	000002 				.WORD	TF.OU
	010016	010016'				.WORD	.
	010020	010016'				.WORD	.-2
   1511					;
   1512	010022				F11TPD::
   1513	010022					.TPDEN	F11TPD,145400,12400,0,0
	010022	000000 	000000 			.WORD	0,0
	010022	025167 	077604 			.RAD50	"F11TPD"
	010026	145400 				.WORD	145400
	010030	012400 				.WORD	12400
	010032	000000 				.WORD	0
	010034	000000 				.WORD	0
LC -- LOW CORE FOR RSX20F	MACRO M1113  03-APR-86 20:41  PAGE 38-2
LOW CORE -- TPD (TASK PARTITION DIRECTORY)

	010036	010036'				.WORD	.
	010040	010036'				.WORD	.-2
   1515					;
   1516	010042				GENTPD::
   1517	010042					.TPDEN	GEN,100000,45400,0,0
	010042	000000 	000000 			.WORD	0,0
	010042	026226 				.RAD50	"GEN"
	010046	100000 				.WORD	100000
	010050	045400 				.WORD	45400
	010052	000000 				.WORD	0
	010054	000000 				.WORD	0
	010056	010056'				.WORD	.
	010060	010056'				.WORD	.-2
   1518					;
   1519	010062				.TPDEA::		;END OF TPD
LC -- LOW CORE FOR RSX20F	MACRO M1113  03-APR-86 20:41  PAGE 39
LOW CORE -- DEVICE QUEUE POINTERS

   1521						.SBTTL	LOW CORE -- DEVICE QUEUE POINTERS
   1522
   1523					;
   1524					;	DEVICE QUEUE POINTERS
   1525					;
   1526		000020 			Q.SZ=20		; QUEUE ENTRY SIZE (NOTE:IS A GLOBAL VAR.)
   1527
   1528		000001 				D.CCTY==1	; DEVICE CODE FOR CTY
   1529	010062				.DQPBA::
   1530	010062					.DQPEN	TTTBL,8.,..STTY,..STPT,IGNO,IGNO,0,TTCNT
	010062	003004'				.WORD	TTTBL
	010064	000010 				.WORD	8.
	010066	046164'				.WORD	..STTY
	010070	046400'				.WORD	..STPT
	010072	012364'				.WORD	IGNO
	010074	012364'				.WORD	IGNO
	010076	000000 				.WORD	0
	010100	000205 				.WORD	TTCNT
   1531
   1532		000002 				D.CDL1==2	; DEVICE CODE FOR DL-11
   1533	010102				.DQDL1::
   1534	010102					.DQPEN	DLTBL,8.,..STTY,..STPT,IGNO,IGNO,0,DLCNT
	010102	003004'				.WORD	DLTBL
	010104	000010 				.WORD	8.
	010106	046164'				.WORD	..STTY
	010110	046400'				.WORD	..STPT
	010112	012364'				.WORD	IGNO
	010114	012364'				.WORD	IGNO
	010116	000000 				.WORD	0
	010120	000005 				.WORD	DLCNT
   1535
   1536		000003 				D.CDH1==3	; DEVICE CODE FOR DH-11 (1)
   1537	010122				.DQDH0::
   1538	010122					.DQPEN	DHTBL,8.,..STTY,..STPT,IGNO,IGNO,0,DHCNT
	010122	003054'				.WORD	DHTBL
	010124	000010 				.WORD	8.
	010126	046164'				.WORD	..STTY
	010130	046400'				.WORD	..STPT
	010132	012364'				.WORD	IGNO
	010134	012364'				.WORD	IGNO
	010136	000000 				.WORD	0
	010140	000200 				.WORD	DHCNT
   1539
   1540		000004 				D.CDLS==4	; DEVICE CODE FOR DATA LINE SCANNER (1)
   1541	010142				.DQDLS::
   1542	010142					.DQPEN	TTTBL,8.,..STTY,..STPT,IGNO,IGNO,0,TTCNT
	010142	003004'				.WORD	TTTBL
	010144	000010 				.WORD	8.
	010146	046164'				.WORD	..STTY
	010150	046400'				.WORD	..STPT
	010152	012364'				.WORD	IGNO
	010154	012364'				.WORD	IGNO
	010156	000000 				.WORD	0
	010160	000205 				.WORD	TTCNT
   1543
   1544		000005 				D.CLPT==5	; DEVICE CODE FOR LPT
   1545	010162				.DQLPT::
LC -- LOW CORE FOR RSX20F	MACRO M1113  03-APR-86 20:41  PAGE 39-1
LOW CORE -- DEVICE QUEUE POINTERS

   1546	010162					.DQPEN	LPTBL,8.,..STLP,..SPLP,IGNO,..AKLP,0,2
	010162	006300'				.WORD	LPTBL
	010164	000010 				.WORD	8.
	010166	000000G				.WORD	..STLP
	010170	000000G				.WORD	..SPLP
	010172	012364'				.WORD	IGNO
	010174	000000G				.WORD	..AKLP
	010176	000000 				.WORD	0
	010200	000002 				.WORD	2
   1547
   1548		000006 				D.CCDR==6	; DEVICE CODE FOR CDR
   1549	010202				.DQCDR::
   1550	010202					.DQPEN	CRTBL,8.,..STCR,IGNO,IGNO,..AKCR,0,1
	010202	006224'				.WORD	CRTBL
	010204	000010 				.WORD	8.
	010206	000000G				.WORD	..STCR
	010210	012364'				.WORD	IGNO
	010212	012364'				.WORD	IGNO
	010214	000000G				.WORD	..AKCR
	010216	000000 				.WORD	0
	010220	000001 				.WORD	1
   1551
   1552		000007 				D.CCLK==7	; DEVICE CODE FOR CLOCK
   1553	010222					.DQPEN	0,0,IGNO,IGNO,IGNO,IGNO,0,1
	010222	000000 				.WORD	0
	010224	000000 				.WORD	0
	010226	012364'				.WORD	IGNO
	010230	012364'				.WORD	IGNO
	010232	012364'				.WORD	IGNO
	010234	012364'				.WORD	IGNO
	010236	000000 				.WORD	0
	010240	000001 				.WORD	1
   1554
   1555		000010 				D.FEPD==10	; PSEUDO DEVICE FOR FE
   1556	010242					.DQPEN	FETBL,2.,.FEST,IGNO,IGNO,.FEACK,0,4
	010242	005572'				.WORD	FETBL
	010244	000002 				.WORD	2.
	010246	000000G				.WORD	.FEST
	010250	012364'				.WORD	IGNO
	010252	012364'				.WORD	IGNO
	010254	000000G				.WORD	.FEACK
	010256	000000 				.WORD	0
	010260	000004 				.WORD	4
   1557
   1558
   1559	010262				.DQPEA::			; END OF DEVICE QUEUE POINTER TABLE
   1560		000010 			.DQPSZ==.DQPEA-.DQPBA/Q.SZ	; SIZE OF DEVICE QUEUE POINTER TABLE
   1561
   1562					;
   1563					;	NOTE -- THESE PSUEDO-DEVICES ARE OUTPUT-ONLY AND
   1564					;		ARE ASSOCIATED WITH ERROR LOGGING
   1565					;
   1566		000200 				D.CCPU==200		; PSEUDO DEVICE PDP10 CPU
   1567		000201 				D.CKLE==201		; KL ERROR PSEUDO DEVICE
   1568		000202 				D.CDTE==202		; [5.1008] DTE-20 PSEUDO DEVICE CODE
   1569		000203 				D.CRJP==203		; [5.1009] RH-11/RJP-04/06 PSEUDO DEVICE CODE
   1570		000204 				D.CDMB==204		; [4.1.1091] DM-11/BB CONFIGURATION CODE
LC -- LOW CORE FOR RSX20F	MACRO M1113  03-APR-86 20:41  PAGE 39-2
LOW CORE -- DEVICE QUEUE POINTERS

   1571		000205 				D.CLOG==205		; ASCII 'PARSER.LOG'
   1572		000210 				D.CKLN==210		; KLINIK PSEUDO-DEVICE
LC -- LOW CORE FOR RSX20F	MACRO M1113  03-APR-86 20:41  PAGE 40
LOW CORE -- LOGICAL UNIT TABLES

   1574						.SBTTL	LOW CORE -- LOGICAL UNIT TABLES
   1575
   1576					;
   1577					;	LOGICAL UNIT TABLE
   1578					;
   1579	010262				.PUDBA::			; START OF LOGICAL UNIT TABLE
   1580					;
   1581		000001 				L.TTY==1	; LOGICAL UNIT 1
   1582	010262				TTPEN::
   1583	010262					.PUDEN	TT,0,0,UC.REC!UC.CCL!UC.TTY,0,0,80.,TTPEN,TTYTSK,0,0,0
	010262	   124 	   124 			.ASCII	"TT"
	010264	   000 				.BYTE	0
	010265	   000 				.BYTE	0
	010266	000007 				.WORD	UC.REC!UC.CCL!UC.TTY
	010270	000000 				.WORD	0
	010272	000000 				.WORD	0
	010274	000120 				.WORD	80.
	010276	000000 				.WORD	0
	010300	010262'				.WORD	TTPEN
	010302	007202'				.WORD	TTYTSK
	010304	010304'				.WORD	.
	010306	010304'				.WORD	.-2
	010310	000000 				.WORD	0
	010312	   005 	   005 			.BYTE	5,5
	010314	000000 				.WORD	0
	010316	177777 				.WORD	-1
	010320	135600 				.RAD50	/0/
	010322	000000 				.WORD	0
	010324	000000 				.WORD	0
	010326	000000 				.WORD	0
	010330	000000 				.WORD	0
   1584					;
   1585		000002 				L.RP4==2
   1586						;DVCH=CH.OFF+CH.NAT*400+CH.OFF+CH.NAT
   1587		110220 				DVCH=110220
   1588						;FW=UF.TL!UF.RH
   1589		000300 				FW=300
   1590						;C1=UC.MNT!UC.F11!UC.DIR
   1591		140010 				C1=140010
   1592						;C1DB=UC.MNT!UC.F11!UC.DIR!UC.ETB
   1593		140110 				C1DB=140110
   1594					;
   1596	010332				RPPEN::
   1597	010332					.PUDEN	DB,0,FW,C1DB,0,0,512.,RPPEN,RPTSK,DVCH,F11,0
	010332	   104 	   102 			.ASCII	"DB"
	010334	   000 				.BYTE	0
	010335	   300 				.BYTE	FW
	010336	140110 				.WORD	C1DB
	010340	000000 				.WORD	0
	010342	000000 				.WORD	0
	010344	001000 				.WORD	512.
	010346	000000 				.WORD	0
	010350	010332'				.WORD	RPPEN
	010352	007242'				.WORD	RPTSK
	010354	010354'				.WORD	.
	010356	010354'				.WORD	.-2
	010360	000000 				.WORD	0
LC -- LOW CORE FOR RSX20F	MACRO M1113  03-APR-86 20:41  PAGE 40-1
LOW CORE -- LOGICAL UNIT TABLES

	010362	   005 	   005 			.BYTE	5,5
	010364	110220 				.WORD	DVCH
	010366	177777 				.WORD	-1
	010370	025167 				.RAD50	/F11/
	010372	000000 				.WORD	0
	010374	000000 				.WORD	0
	010376	000000 				.WORD	0
	010400	000000 				.WORD	0
   1598					; THIS IS DONE TO KEEP .PUDEN MACROS SHORTER THAN 80 CHARS
   1599		010376'			.=.-4
   1600	010376	000002 				.WORD	2
   1601	010400	050700 				.WORD	50700		; RP SIZE IS 140000. BLOCKS
   1602	010402				.RP1PE::
   1603	010402					.PUDEN DB,1,FW,C1DB,0,0,512.,.RP1PE,RPTSK,DVCH,F11,0
	010402	   104 	   102 			.ASCII	"DB"
	010404	   001 				.BYTE	1
	010405	   300 				.BYTE	FW
	010406	140110 				.WORD	C1DB
	010410	000000 				.WORD	0
	010412	000000 				.WORD	0
	010414	001000 				.WORD	512.
	010416	000000 				.WORD	0
	010420	010402'				.WORD	.RP1PE
	010422	007242'				.WORD	RPTSK
	010424	010424'				.WORD	.
	010426	010424'				.WORD	.-2
	010430	000000 				.WORD	0
	010432	   005 	   005 			.BYTE	5,5
	010434	110220 				.WORD	DVCH
	010436	177777 				.WORD	-1
	010440	025167 				.RAD50	/F11/
	010442	000000 				.WORD	0
	010444	000000 				.WORD	0
	010446	000000 				.WORD	0
	010450	000000 				.WORD	0
   1604		010446'				.=.-4
   1605	010446	000002 				.WORD	2
   1606	010450	050700 				.WORD	50700
   1607	010452				.RP2PE::
   1608	010452					.PUDEN DB,2,FW,C1DB,0,0,512.,.RP2PE,RPTSK,DVCH,F11,0
	010452	   104 	   102 			.ASCII	"DB"
	010454	   002 				.BYTE	2
	010455	   300 				.BYTE	FW
	010456	140110 				.WORD	C1DB
	010460	000000 				.WORD	0
	010462	000000 				.WORD	0
	010464	001000 				.WORD	512.
	010466	000000 				.WORD	0
	010470	010452'				.WORD	.RP2PE
	010472	007242'				.WORD	RPTSK
	010474	010474'				.WORD	.
	010476	010474'				.WORD	.-2
	010500	000000 				.WORD	0
	010502	   005 	   005 			.BYTE	5,5
	010504	110220 				.WORD	DVCH
	010506	177777 				.WORD	-1
	010510	025167 				.RAD50	/F11/
LC -- LOW CORE FOR RSX20F	MACRO M1113  03-APR-86 20:41  PAGE 40-2
LOW CORE -- LOGICAL UNIT TABLES

	010512	000000 				.WORD	0
	010514	000000 				.WORD	0
	010516	000000 				.WORD	0
	010520	000000 				.WORD	0
   1609		010516'				.=.-4
   1610	010516	000002 				.WORD	2
   1611	010520	050700 				.WORD	50700
   1612	010522				.RP3PE::
   1613	010522					.PUDEN DB,3,FW,C1DB,0,0,512.,.RP3PE,RPTSK,DVCH,F11,0
	010522	   104 	   102 			.ASCII	"DB"
	010524	   003 				.BYTE	3
	010525	   300 				.BYTE	FW
	010526	140110 				.WORD	C1DB
	010530	000000 				.WORD	0
	010532	000000 				.WORD	0
	010534	001000 				.WORD	512.
	010536	000000 				.WORD	0
	010540	010522'				.WORD	.RP3PE
	010542	007242'				.WORD	RPTSK
	010544	010544'				.WORD	.
	010546	010544'				.WORD	.-2
	010550	000000 				.WORD	0
	010552	   005 	   005 			.BYTE	5,5
	010554	110220 				.WORD	DVCH
	010556	177777 				.WORD	-1
	010560	025167 				.RAD50	/F11/
	010562	000000 				.WORD	0
	010564	000000 				.WORD	0
	010566	000000 				.WORD	0
	010570	000000 				.WORD	0
   1614		010566'				.=.-4
   1615	010566	000002 				.WORD	2
   1616	010570	050700 				.WORD	50700
   1617	010572				.RP4PE::
   1618	010572					.PUDEN DB,4,FW,C1DB,0,0,512.,.RP4PE,RPTSK,DVCH,F11,0
	010572	   104 	   102 			.ASCII	"DB"
	010574	   004 				.BYTE	4
	010575	   300 				.BYTE	FW
	010576	140110 				.WORD	C1DB
	010600	000000 				.WORD	0
	010602	000000 				.WORD	0
	010604	001000 				.WORD	512.
	010606	000000 				.WORD	0
	010610	010572'				.WORD	.RP4PE
	010612	007242'				.WORD	RPTSK
	010614	010614'				.WORD	.
	010616	010614'				.WORD	.-2
	010620	000000 				.WORD	0
	010622	   005 	   005 			.BYTE	5,5
	010624	110220 				.WORD	DVCH
	010626	177777 				.WORD	-1
	010630	025167 				.RAD50	/F11/
	010632	000000 				.WORD	0
	010634	000000 				.WORD	0
	010636	000000 				.WORD	0
	010640	000000 				.WORD	0
   1619		010636'				.=.-4
LC -- LOW CORE FOR RSX20F	MACRO M1113  03-APR-86 20:41  PAGE 40-3
LOW CORE -- LOGICAL UNIT TABLES

   1620	010636	000002 				.WORD	2
   1621	010640	050700 				.WORD	50700
   1622	010642				.RP5PE::
   1623	010642					.PUDEN DB,5,FW,C1DB,0,0,512.,.RP5PE,RPTSK,DVCH,F11,0
	010642	   104 	   102 			.ASCII	"DB"
	010644	   005 				.BYTE	5
	010645	   300 				.BYTE	FW
	010646	140110 				.WORD	C1DB
	010650	000000 				.WORD	0
	010652	000000 				.WORD	0
	010654	001000 				.WORD	512.
	010656	000000 				.WORD	0
	010660	010642'				.WORD	.RP5PE
	010662	007242'				.WORD	RPTSK
	010664	010664'				.WORD	.
	010666	010664'				.WORD	.-2
	010670	000000 				.WORD	0
	010672	   005 	   005 			.BYTE	5,5
	010674	110220 				.WORD	DVCH
	010676	177777 				.WORD	-1
	010700	025167 				.RAD50	/F11/
	010702	000000 				.WORD	0
	010704	000000 				.WORD	0
	010706	000000 				.WORD	0
	010710	000000 				.WORD	0
   1624		010706'				.=.-4
   1625	010706	000002 				.WORD	2
   1626	010710	050700 				.WORD	50700
   1627	010712				.RP6PE::
   1628	010712					.PUDEN DB,6,FW,C1DB,0,0,512.,.RP6PE,RPTSK,DVCH,F11,0
	010712	   104 	   102 			.ASCII	"DB"
	010714	   006 				.BYTE	6
	010715	   300 				.BYTE	FW
	010716	140110 				.WORD	C1DB
	010720	000000 				.WORD	0
	010722	000000 				.WORD	0
	010724	001000 				.WORD	512.
	010726	000000 				.WORD	0
	010730	010712'				.WORD	.RP6PE
	010732	007242'				.WORD	RPTSK
	010734	010734'				.WORD	.
	010736	010734'				.WORD	.-2
	010740	000000 				.WORD	0
	010742	   005 	   005 			.BYTE	5,5
	010744	110220 				.WORD	DVCH
	010746	177777 				.WORD	-1
	010750	025167 				.RAD50	/F11/
	010752	000000 				.WORD	0
	010754	000000 				.WORD	0
	010756	000000 				.WORD	0
	010760	000000 				.WORD	0
   1629		010756'				.=.-4
   1630	010756	000002 				.WORD	2
   1631	010760	050700 				.WORD	50700
   1632	010762				.RP7PE::
   1633	010762					.PUDEN DB,7,FW,C1DB,0,0,512.,.RP7PE,RPTSK,DVCH,F11,0
	010762	   104 	   102 			.ASCII	"DB"
LC -- LOW CORE FOR RSX20F	MACRO M1113  03-APR-86 20:41  PAGE 40-4
LOW CORE -- LOGICAL UNIT TABLES

	010764	   007 				.BYTE	7
	010765	   300 				.BYTE	FW
	010766	140110 				.WORD	C1DB
	010770	000000 				.WORD	0
	010772	000000 				.WORD	0
	010774	001000 				.WORD	512.
	010776	000000 				.WORD	0
	011000	010762'				.WORD	.RP7PE
	011002	007242'				.WORD	RPTSK
	011004	011004'				.WORD	.
	011006	011004'				.WORD	.-2
	011010	000000 				.WORD	0
	011012	   005 	   005 			.BYTE	5,5
	011014	110220 				.WORD	DVCH
	011016	177777 				.WORD	-1
	011020	025167 				.RAD50	/F11/
	011022	000000 				.WORD	0
	011024	000000 				.WORD	0
	011026	000000 				.WORD	0
	011030	000000 				.WORD	0
   1634		011026'				.=.-4
   1635	011026	000002 				.WORD	2
   1636	011030	050700 				.WORD	50700
   1638		000003 				L.DT0==3
   1640	011032				DT0PEN::
   1641	011032					.PUDEN	DT,0,FW,C1,0,0,512.,DT0PEN,DTTSK,DVCH,F11,0
	011032	   104 	   124 			.ASCII	"DT"
	011034	   000 				.BYTE	0
	011035	   300 				.BYTE	FW
	011036	140010 				.WORD	C1
	011040	000000 				.WORD	0
	011042	000000 				.WORD	0
	011044	001000 				.WORD	512.
	011046	000000 				.WORD	0
	011050	011032'				.WORD	DT0PEN
	011052	007402'				.WORD	DTTSK
	011054	011054'				.WORD	.
	011056	011054'				.WORD	.-2
	011060	000000 				.WORD	0
	011062	   005 	   005 			.BYTE	5,5
	011064	110220 				.WORD	DVCH
	011066	177777 				.WORD	-1
	011070	025167 				.RAD50	/F11/
	011072	000000 				.WORD	0
	011074	000000 				.WORD	0
	011076	000000 				.WORD	0
	011100	000000 				.WORD	0
   1642		011100'			.=.-2
   1643	011100	001102 				.WORD	1102
   1644	011102				DT1PEN::
   1645	011102					.PUDEN	DT,1,FW,C1,0,0,512.,DT1PEN,DTTSK,DVCH,F11,0
	011102	   104 	   124 			.ASCII	"DT"
	011104	   001 				.BYTE	1
	011105	   300 				.BYTE	FW
	011106	140010 				.WORD	C1
	011110	000000 				.WORD	0
	011112	000000 				.WORD	0
LC -- LOW CORE FOR RSX20F	MACRO M1113  03-APR-86 20:41  PAGE 40-5
LOW CORE -- LOGICAL UNIT TABLES

	011114	001000 				.WORD	512.
	011116	000000 				.WORD	0
	011120	011102'				.WORD	DT1PEN
	011122	007402'				.WORD	DTTSK
	011124	011124'				.WORD	.
	011126	011124'				.WORD	.-2
	011130	000000 				.WORD	0
	011132	   005 	   005 			.BYTE	5,5
	011134	110220 				.WORD	DVCH
	011136	177777 				.WORD	-1
	011140	025167 				.RAD50	/F11/
	011142	000000 				.WORD	0
	011144	000000 				.WORD	0
	011146	000000 				.WORD	0
	011150	000000 				.WORD	0
   1646		011150'			.=.-2
   1647	011150	001102 				.WORD	1102
   1663					;
   1664	011152				LP0PUD::
   1665	011152					.PUDEN	LP,0,0,UC.REC!UC.CCL,0,0,132.,LP0PUD,LPTSK,0,0,0
	011152	   114 	   120 			.ASCII	"LP"
	011154	   000 				.BYTE	0
	011155	   000 				.BYTE	0
	011156	000003 				.WORD	UC.REC!UC.CCL
	011160	000000 				.WORD	0
	011162	000000 				.WORD	0
	011164	000204 				.WORD	132.
	011166	000000 				.WORD	0
	011170	011152'				.WORD	LP0PUD
	011172	007302'				.WORD	LPTSK
	011174	011174'				.WORD	.
	011176	011174'				.WORD	.-2
	011200	000000 				.WORD	0
	011202	   005 	   005 			.BYTE	5,5
	011204	000000 				.WORD	0
	011206	177777 				.WORD	-1
	011210	135600 				.RAD50	/0/
	011212	000000 				.WORD	0
	011214	000000 				.WORD	0
	011216	000000 				.WORD	0
	011220	000000 				.WORD	0
   1668					;
   1669	011222				FE0PUD::
   1670	011222					.PUDEN	FE,0,UF.RH,C1,0,0,512.,FE0PUD,FETSK,DVCH,T20,0
	011222	   106 	   105 			.ASCII	"FE"
	011224	   000 				.BYTE	0
	011225	   200 				.BYTE	UF.RH
	011226	140010 				.WORD	C1
	011230	000000 				.WORD	0
	011232	000000 				.WORD	0
	011234	001000 				.WORD	512.
	011236	000000 				.WORD	0
	011240	011222'				.WORD	FE0PUD
	011242	007442'				.WORD	FETSK
	011244	011244'				.WORD	.
	011246	011244'				.WORD	.-2
	011250	000000 				.WORD	0
LC -- LOW CORE FOR RSX20F	MACRO M1113  03-APR-86 20:41  PAGE 40-6
LOW CORE -- LOGICAL UNIT TABLES

	011252	   005 	   005 			.BYTE	5,5
	011254	110220 				.WORD	DVCH
	011256	177777 				.WORD	-1
	011260	101036 				.RAD50	/T20/
	011262	000000 				.WORD	0
	011264	000000 				.WORD	0
	011266	000000 				.WORD	0
	011270	000000 				.WORD	0
   1672					;
   1673	011272				SY0PUD::
   1677
   1680	011272					.PUDEN	SY,0,0,0,0,0,0,DT0PEN,0,0,0,0
	011272	   123 	   131 			.ASCII	"SY"
	011274	   000 				.BYTE	0
	011275	   000 				.BYTE	0
	011276	000000 				.WORD	0
	011300	000000 				.WORD	0
	011302	000000 				.WORD	0
	011304	000000 				.WORD	0
	011306	000000 				.WORD	0
	011310	011032'				.WORD	DT0PEN
	011312	000000 				.WORD	0
	011314	011314'				.WORD	.
	011316	011314'				.WORD	.-2
	011320	000000 				.WORD	0
	011322	   005 	   005 			.BYTE	5,5
	011324	000000 				.WORD	0
	011326	177777 				.WORD	-1
	011330	135600 				.RAD50	/0/
	011332	000000 				.WORD	0
	011334	000000 				.WORD	0
	011336	000000 				.WORD	0
	011340	000000 				.WORD	0
   1685	011342				.PUDEA::
   1686							; END OF LOGICAL UNIT ABLE
LC -- LOW CORE FOR RSX20F	MACRO M1113  03-APR-86 20:41  PAGE 41
LOW CORE -- KL10 HARDWARE ENVIRONMENT DATA

   1688						.SBTTL	LOW CORE -- KL10 HARDWARE ENVIRONMENT DATA
   1689
   1690
   1691	011342				.CPUSN::
   1692	011342	000000 				.WORD	0		; [4.2333] KL10 CPU SERIAL NUMBER
   1693									; [4.2333] .EQ. 0 ==> MUST BE READ
   1694									; [4.2333] .LT. 0 ==> CAN'T BE READ
   1695									; [4.2333] .GT. 0 ==> ALREADY READ
   1696	011344				.HRDWR::
   1697	011344	000000 				.WORD	0		; [4.2333] HARDWARE OPTION BIT MASK
   1698
   1699		000001 				H.KUDF==BIT0		; [4.2333] UNDEFINED
   1700		000002 				H.KMOS==BIT1		; [4.2333] MOS MASTER OSCILLATOR
   1701		000004 				H.KEXT==BIT2		; [4.2333] EXTENDED ADDRESING
   1702		000010 				H.KCHN==BIT3		; [4.2333] INTERNAL CHANNELS
   1703		000020 				H.KCAC==BIT4		; [4.2333] CACHE
   1704		000040 				H.KPWR==BIT5		; [4.2333] LINE FREQUENCY
   1705									; [4.2333] .EQ. 0 ==> 60 HZ.
   1706									; [4.2333] .NE. 0 ==> 50 HZ.
   1707					;
   1708					; LOCATIONS TO STORE PC AND FLAGS FOR WARM RESTART VIA "SAVE PC" COMMAND
   1709					; TO PARSER
   1710					;
   1711	011346				.ERRPC::
   1712	011346	000000 	000000 	000000 		.WORD	0,0,0		; KL PC REGISTER GOES HERE
   1713	011354				.ERRCD::
   1714	011354	000000 	000000 	000000 		.WORD	0,0,0		; KL FLAGS AND ERRCOD GO HERE
   1715					;
   1716					; WARM RESTART (FAULT CONTINUATION) ERROR CODES
   1717					;
   1718		000001 				ERRCES==1		; CLOCK ERROR STOP
   1719		000002 				ERREPE==2		; EBUS PARITY ERROR
   1720		000003 				ERRDEX==3		; DEPOSIT EXAMINE ERROR
   1721		000004 				ERRCST==4		; KEEP ALIVE STOPPED
   1722		000005 				ERRPTO==5		; PROTOCOL TIMEOUT
   1723		000006 				ERRFME==6		; FAST MEMORY PARITY ERROR
   1724		000007 				ERRCPE==7		; CRAM PARITY ERROR
   1725		000010 				ERRDPE==10		; DRAM PARITY ERROR
   1726		000011 				ERRTSP==11		; KL HALTED
   1727		000012 				ERRTRR==12		; TEN REQUESTED REBOOT
   1728
   1729	011362				.MISC::
   1730	011362	   000 				.BYTE	0		; MISC. , SEE BELOW FOR BIT DEFINETIONS
   1731
   1732		000002 				M.PARQ==BIT1		; USED IN TTYDRR WHEN PARSER IS REQUESTED
   1733						.EVEN
   1734	011364				ABCHAR::
   1735	011364	000000 				.WORD	0		; [6.1567] LAST AUTO BAUD CHARACTER
   1736	011366	000000 			.RHPD::	.WORD	0
   1737	011370				.PFDBG::
   1738	011370	000000 				.WORD	0		;[**]
   1739	011372				.IODBG::
   1740	011372	000000 				.WORD	0		;[**]
   1741		011374'				.LCEND==.		; [4.2333] DEFINE THE END OF THE STATUS BLOCK
   1742	011374				CPYRGT::
   1743	011374	   103 	   117 	   120 		.ASCII	/COPYRIGHT (C) 1984 DIGITAL EQUIPMENT CORPORATION/
	011377	   131 	   122 	   111
LC -- LOW CORE FOR RSX20F	MACRO M1113  03-APR-86 20:41  PAGE 41-1
LOW CORE -- KL10 HARDWARE ENVIRONMENT DATA

	011402	   107 	   110 	   124
	011405	   040 	   050 	   103
	011410	   051 	   040 	   061
	011413	   071 	   070 	   064
	011416	   040 	   104 	   111
	011421	   107 	   111 	   124
	011424	   101 	   114 	   040
	011427	   105 	   121 	   125
	011432	   111 	   120 	   115
	011435	   105 	   116 	   124
	011440	   040 	   103 	   117
	011443	   122 	   120 	   117
	011446	   122 	   101 	   124
	011451	   111 	   117 	   116
   1744						.EVEN
LC -- LOW CORE FOR RSX20F	MACRO M1113  03-APR-86 20:41  PAGE 42
LOW CORE -- INITLM (INITIALIZATION)

   1746						.SBTTL	LOW CORE -- INITLM (INITIALIZATION)
   1747
   1748					;
   1749					;	INITIALIZATION CODE ALSO DOUBLES AS
   1750					;	EMERGENCY STACK AREA FOR CRASH
   1751					;
   1752	011454				INITLM::
   1753	011454	013700 	001004'			MOV	.EXEND+2,R0	; GET ABSOLUTE EXEC LIMIT
   1754	011460	062700 	000003 			ADD	#3,R0		; ROUND UP TO NEXT 4 BYTES
   1755	011464	042700 	000003 			BIC	#3,R0		; SO
   1756	011470	010037 	001426'			MOV	R0,.FREPL	; SET BASE OF FREE POOL
   1757	011474	012701 	075774 			MOV	#.BGBST-4,R1	; END OF FREE POOL MINUS 10 BYTES
   1758	011500	160001 				SUB	R0,R1		; COMPUTE SIZE OF FREE POOL
   1759	011502	005020 				CLR	(R0)+		; INDICATE NO LINKS
   1760	011504	010110 				MOV	R1,@R0		; SET FREE POOL SIZE
   1761	011506	010137 	001430'			MOV	R1,.FREPL+2	; HERE TOO
   1762	011512	013700 	001422'			MOV	.BGBUF,R0
   1763	011516	005020 				CLR	(R0)+
   1764	011520	012710 	002000 			MOV	#.BGLEN,@R0
   1765	011524	105237 	001123'			INCB	.NOERR+1	; SET FORCED STOP
   1766	011530	010706 				MOV	PC,SP		; SET UP THE STACK
   1767	011532	012737 	000200 	001014'		MOV	#EV.PF,.SERFG+0	; SET POWER FAIL
   1768	011540	012737 	004000 	177776 		MOV	#4000,@#PS	; ENABLE INTERRUPTS
   1769	011546	012746 	014040'			MOV	#ASXE1,-(SP)
   1770	011552	162706 	000006 			SUB	#6,SP		; SET UP INITIAL TO TEN Q
   1771	011556	000137 	047366'			JMP	INIAN		; GO DO IT
   1772						;
   1773	011562				EMGSTK::			; EMERGENCY STACK AREA
LC -- LOW CORE FOR RSX20F	MACRO M1113  03-APR-86 20:41  PAGE 43
LOW CORE -- TRAP SERVICE FOR COMMON PROGRAM TRAPS

   1775						.SBTTL	LOW CORE -- TRAP SERVICE FOR COMMON PROGRAM TRAPS
   1776					;
   1777					;	TRAPS HANDLED HERE ARE:
   1778					;
   1779					;	TRAP TO 4 (DEVICE OR MEMORY TIMEOUT AND 11 CATCH ALL)
   1780					;	TRAP TO 10 (ILLEGAL INSTRUCTION)
   1781					;	T-BIT AND BPT TRAPS
   1782					;	IOT INSTRUCTION
   1783					;	TRAP INSTRUCTION
   1784					;
   1785					;	ILLEGAL INTERRUPTS TRAP HERE.  THEY ARE DETERMINED
   1786					;	BY PLACING AN ODD ADDRESS IN UNUSED TRAP VECTORS
   1787					;	WHEN THE PROCESSOR TRAPS TO AN ILLEGAL TRAP VECTOR IT WIL
   1788					;	PUT THE ILLEGAL (ODD) ADDRESS IN THE PC AND TRAP TO 4
   1789					;	THIS WILL THEN ALLOW THE FIELD SERVICE PEOPLE TO
   1790					;	DETERMINE WHAT LOCATION THE PROCESSOR HAS PICKED
   1791					;	TO DO AN ILLEGAL TRAP
   1792					;
   1793					;
   1794					;	GENERALLY THESE TRAPS LIKE THE OTHERS THAT TRAP TO UN ATTACHED
   1795					;	TRAP VECTORS ARE FATAL.  THESE HAVE BEEN SEPARATED OUT
   1796					;	BECAUSE THEY ARE PROBABLY PROGRAM ERRORS AND NOT
   1797					;	HARDWARE ERRORS.  IT IS POSSIBLE THAT IF THESE ARE
   1798					;	SEPARATED FROM HARDWARE TRAPS THAT IT WILL BE POSSIBLE
   1799					;	TO PROVIDE SOME PROGRAM DEBUGGING BY IDENTIFICATION OF
   1800					;	THESE SPECIFIC TYPES.
   1801					;
   1802					;	HARDWARE/SOFTWARE ERROR TRAPS HANDLED HERE ARE:
   1803					;
   1804					;	1. TRAP TO UNASSIGNED TRAP VECTOR
   1805					;	2. PARITY ERROR
   1806					;	3. RESERVED INSTRUCTION TRAP
   1807					;	4. IOT TRAP
   1808					;
   1809					;	STACK SUMMARY:
   1810					;			0(SP) -- TRAP PC
   1811					;			2(SP) -- TRAP PS
   1812					;
   1813						.ENABL	LSB
   1814	011562				COMTRP:
   1815	011562	013737 	177776 	001120'		MOV	PS,TRPASV	; SAVE THE COMTRP PS
   1816	011570	042737 	177760 	001120'		BIC	#177760,TRPASV	; MASK OFF PRIORITY BITS
   1817	011576	022706 	001000 			CMP	#1000,SP	; LEGAL STACK?
   1818	011602	103403 				BLO	10$		; YES -- NOT RED VIOLATION
   1819	011604	012706 	011562'			MOV	#EMGSTK,SP	; NO -- BETTER RESCUE STACK
   1820	011610	000451 				BR	30$		; THEN CRASH SYSTEM
   1821						;
   1822	011612				10$:
   1823	011612	010546 				MOV	R5,-(SP)
   1824	011614	032766 	000340 	000004 		BIT	#340,4(SP)	; EXEC?
   1825	011622	001044 				BNE	30$		; YES -- CRASH
   1826									; FIND THE TRAP VECTOR
   1827	011624	013705 	001006'			MOV	.CRTSK,R5	; FIND THE CURRENT TASK
   1828	011630	001441 				BEQ	30$		; [DSW-DEBUG] NONE, JUST CRASH
   1829	011632	016505 	000016 			MOV	A.TD(R5),R5	; FIND STD POINTER
   1830	011636	016505 	000030 			MOV	S.SS(R5),R5	; FIND THE SST VECTOR
   1831	011642	001410 				BEQ	CMNABO		; NONE -- CRASH
LC -- LOW CORE FOR RSX20F	MACRO M1113  03-APR-86 20:41  PAGE 43-1
LOW CORE -- TRAP SERVICE FOR COMMON PROGRAM TRAPS

   1832	011644	063705 	001120'			ADD	TRPASV,R5	; FIND WHICH VECTOR
   1833	011650					MFPS	@R5,R5		; FIND THE ADDRESS
	011650	011505 				MOV	@R5,R5
   1834	011652	001404 				BEQ	CMNABO		; NONE FOUND -QUIT
   1835	011654	012637 	001116'			MOV	(SP)+,EMTSTK	; SAVE R5 FOR COMMON TRAP
   1836	011660	000137 	013556'			JMP	.SSTCO
   1837						;
   1838	011664				CMNABO::
   1839	011664	013705 	001006'			MOV	.CRTSK,R5	; FIND THE CURRENT TASK
   1840	011670	013765 	001120'	000024 		MOV	TRPASV,A.FM+0(R5) ;SET THE REASON FOR ABORT
   1841	011676	112765 	000004 	000014 		MOVB	#TS.TKN,A.TS(R5) ;SET TASK STATUS TO ABORT
   1842	011704	005237 	001124'			INC	.TKTN		; SET TKTN FLAG
   1843	011710	026527 	000006 	010022'		CMP	A.PD(R5),#F11TPD ;FILES 11 TPD?
   1844	011716	001003 				BNE	20$		; NO -- TKTN WILL WORK
   1845	011720					.CRASH	FTA		; YES -- CAN'T GET TKTN IN
	011720	000004 				IOT
	011722	   106 	   124 	   101 		.ASCIZ	/FTA/
	011725	   000
   1846						;
   1847	011726				TRPXIT:
   1848	011726				20$:
   1849	011726	012605 				MOV	(SP)+,R5	; RESTORE R5
   1850	011730	000137 	015062'			JMP	..INTX		; RETURN
   1851						;
   1852	011734				30$:
   1853	011734	013705 	001120'			MOV	TRPASV,R5	; DO COMMON CRASH PROCEDURE
   1854	011740	000175 	011744'			JMP	@CRSTB(R5)	; CRASH
   1855						.DSABL	LSB
   1856					;
   1857	011744				CRSTB:
   1858	011744	011754'				.WORD	TRP4
   1859	011746	012024'				.WORD	RESERV
   1860	011750	012032'				.WORD	BPTTRP
   1861	011752	012070'				.WORD	IOTTRP
   1862					;
   1863	011754				TRP4:
   1864	011754	012705 	000004 			MOV	#4,R5		; POINT TO TRAP VECTOR
   1865	011760	011546 				MOV	(R5),-(SP)	; SAVE IT
   1866	011762	012715 	012002'			MOV	#10$,(R5)	; SET UP TEMPORARY VECTOR
   1867	011766	005777 	167372 			TST	@.PRSTA		; WAS IT THE DTE20??
   1868	011772	012615 				MOV	(SP)+,(R5)	; NO -- OTHER BUS TIMEOUT
   1869	011774					.CRASH	T04
	011774	000004 				IOT
	011776	   124 	   060 	   064 		.ASCIZ	/T04/
	012001	   000
   1870						;
   1871	012002				10$:				; HERE ON DTE-20 BUS TIMEOUT
   1872	012002	022626 				CMP	(SP)+,(SP)+	; GET RID OF SECOND TRAP PS, PC
   1873	012004	012615 				MOV	(SP)+,(R5)	; RESTORE TRAP VECTOR
   1874	012006	032737 	004000 	001012'		BIT	#EF.PFR,.COMEF+2 ; POWERFAIL IN PROGRESS??
   1875	012014	001344 				BNE	TRPXIT		; YES -- IGNORE TRAP
   1876	012016					.CRASH	DTD		; NO -- DTE20 IS DEAD
	012016	000004 				IOT
	012020	   104 	   124 	   104 		.ASCIZ	/DTD/
	012023	   000
   1877						;
   1878	012024				RESERV:
LC -- LOW CORE FOR RSX20F	MACRO M1113  03-APR-86 20:41  PAGE 43-2
LOW CORE -- TRAP SERVICE FOR COMMON PROGRAM TRAPS

   1879	012024					.CRASH	RES
	012024	000004 				IOT
	012026	   122 	   105 	   123 		.ASCIZ	/RES/
	012031	   000
   1880						;
   1881	012032				BPTTRP:
   1882	012032					.CRASH	TBT
	012032	000004 				IOT
	012034	   124 	   102 	   124 		.ASCIZ	/TBT/
	012037	   000
   1883						;
   1884	012040				.PARER:
   1885	012040	012700 	172100 			MOV	#.PARRG,R0	; SET UP POINTER TO REGISTERS
   1886	012044	012737 	012062'	000004 		MOV	#20$,@#4	; SET UP TO POINT TO CRASH MESSAGE ON NXM
   1887	012052	012701 	001022'			MOV	#PARSAV,R1	; SET UP SAVE AREA POINTER
   1888	012056				10$:
   1889	012056	012021 				MOV	(R0)+,(R1)+
   1890	012060	000776 				BR	10$
   1891						;
   1892	012062				20$:
   1893	012062					.CRASH	MPE		; MEMORY PARITY ERROR
	012062	000004 				IOT
	012064	   115 	   120 	   105 		.ASCIZ	/MPE/
	012067	   000
   1894						;
LC -- LOW CORE FOR RSX20F	MACRO M1113  03-APR-86 20:41  PAGE 44
LOW CORE -- CRASH ROUTINE

   1896						.SBTTL	LOW CORE -- CRASH ROUTINE
   1897					;
   1898					;	CRASH -- SUBROUTINE THAT WILL NOT RETURN TO SAVE THE
   1899					;	INFORMATION NECESSARY WHEN THE MACHINE ENTERS AN UNRECOVERABLE
   1900					;	STATE THAT REQUIRES RE-LOAD.  CRASH ATTEMPTS TO SAVE ALL THE
   1901					;	VOLATILE REGISTERS THAT MIGHT BE NECESSARY TO DEBUG
   1902					;	THE SOFTWARE OR HARDWARE WHEN THE PDP-11 SYSTEM CRASHES.
   1903					;
   1904					;	STACK SUMMARY:
   1905					;
   1906					;			0(SP) -- IOT TRAP PC
   1907					;			2(SP) -- IOT TRAP PS
   1908					;
   1909	012070				IOTTRP:
   1910	012070	005737 	011372'			TST	.IODBG		;[**]
   1911	012074	001413 				BEQ	5$		;[**]
   1912	012076	010546 				MOV	R5,-(SP)	;[**]
   1913	012100	012705 	012366'			MOV	#CMSG,R5	;[**]
   1914	012104					CALL	20$		;[**]
	012104	004737 	012276'			JSR	PC,20$
   1915	012110	012705 	012402'			MOV	#TTTMSG,R5	;[**]
   1916	012114					CALL	20$		;[**]
	012114	004737 	012276'			JSR	PC,20$
   1917	012120	012605 				MOV	(SP)+,R5	;[**]
   1918	012122	000442 				BR	10$		;[**]
   1919	012124	005237 	011372'		5$:	INC	.IODBG		;[**]
   1920	012130	016605 	000002 			MOV	2(SP),R5	; TRAP PC POINTS TO THE CRASH CODE TEXT
   1921	012134	010637 	001020'			MOV	SP,SPSAV	; SAVE SP
   1922	012140	012706 	011562'			MOV	#EMGSTK,SP	; SET UP THE EMERGENCY STACK POINTER
   1923	012144					CALL	.IOSNP		; [4.2314] SNAPSHOT THE I/O PAGE
	012144	004737 	012406'			JSR	PC,.IOSNP
   1924	012150	010546 				MOV	R5,-(SP)
   1925	012152	012705 	012366'			MOV	#CMSG,R5	; SET UP THE CRASH MESSAGE POINTER
   1926	012156					CALL	20$		; PRINT THE MESSAGE
	012156	004737 	012276'			JSR	PC,20$
   1927	012162	011605 				MOV	(SP),R5		; CRASH CODE POINTER TO R5
   1928	012164	010446 				MOV	R4,-(SP)	; SAVE R4
   1929	012166	005004 				CLR	R4		; CLEAR R4
   1930	012170	012524 				MOV	(R5)+,(R4)+	; SAVE THE CRASH CODE
   1931	012172	011524 				MOV	(R5),(R4)+	;
   1932	012174	013705 	001022'			MOV	PARSAV,R5	; GET PARITY ERROR DATA
   1933	012200	006205 				ASR	R5		; POSITION IT
   1934	012202	006205 				ASR	R5		;
   1935	012204	006205 				ASR	R5		;
   1936	012206	006205 				ASR	R5		;
   1937	012210	006205 				ASR	R5		;
   1938	012212	150544 				BISB	R5,-(R4)	; SAVE IT IN HIGH BYTE
   1939	012214	012604 				MOV	(SP)+,R4	; RESTORE REGISTERS
   1940	012216	012605 				MOV	(SP)+,R5	; CRASH CODE POINTER TO R5
   1941	012220					CALL	20$		; PRINT THE CRASH CODE
	012220	004737 	012276'			JSR	PC,20$
   1942					;
   1943					; CLOSED LOOP TO RING THE KL DOORBELL AND REQUEST A RELOAD.  IN RESPONSE TO
   1944					; THIS REQUEST, THE KL10 WILL "PUSH THE ELECTRONIC SWITCH" IN THE BM873 ROM.
   1945					; THIS WILL:
   1946					;
   1947					;	1. FORCE A "POWERFAIL" TRAP
LC -- LOW CORE FOR RSX20F	MACRO M1113  03-APR-86 20:41  PAGE 44-1
LOW CORE -- CRASH ROUTINE

   1948					;	2. DUMP AN RELOAD THE FRONT-END
   1949					;
   1950					; NOTE THAT THE FRONT-END CPU MUST BE RUNNING FOR THE CONTEXT SAVE OF THE
   1951					; POWERFAIL TRAP TO COMPLETE PROPERLY.
   1952					;
   1953	012224	005037 	011372'			CLR	.IODBG		;[**]
   1954	012230				10$:
   1955	012230	012737 	000006 	000004 		MOV	#6,@#4		; FORCE AN EARLY HALT IF NXM
   1956	012236	005037 	000006 			CLR	@#6
   1957	012242	013705 	001366'			MOV	.PRDTE,R5	; FIND DTE20
   1958	012246	062705 	000006 			ADD	#6,R5		; POINT TO DEXWD1
   1959	012252	012725 	000004 			MOV	#LOAD11,(R5)+
   1960	012256	012725 	010000 			MOV	#DEP,(R5)+
   1961	012262	012725 	000022 			MOV	#22,(R5)+	; REQUEST RELOAD
   1962	012266	012777 	000400 	167070 		MOV	#TO10DB,@.PRSTA	; RING BELL
   1963	012274	000755 				BR	10$
   1964						;
   1965	012276				20$:				;
   1966	012276	105737 	001234'			TSTB	.KLNSW+0	; IS KLINIK ACTIVE??
   1967	012302	003402 				BLE	30$		; NOT THAT WE CARE...
   1968	012304	111537 	175616 			MOVB	(R5),@#PRB1	; YES -- PRINT A CHARACTER ON KLINIK LINE
   1969	012310				30$:				;
   1970	012310	112537 	177566 			MOVB	(R5)+,@#PRB0	; PRINT THE SAME CHARACTER ON THE CTY
   1971	012314				40$:				;
   1972	012314	105737 	177564 			TSTB	@#PRS0		; IS THE CTY DONE???
   1973	012320	100375 				BPL	40$		; NO -- WAIT SOME MORE
   1974	012322	105737 	001234'			TSTB	.KLNSW+0	; YES -- IS KLINIK ACTIVE??
   1975	012326	003403 				BLE	50$		; NO -- NOT THAT WE CARE...
   1976	012330	105737 	175614 			TSTB	@#PRS1		; YES -- IS THE KLINIK LINE FINISHED??
   1977	012334	100367 				BPL	40$		; NO -- WAIT SOME MORE
   1978	012336				50$:				;
   1979	012336	105715 				TSTB	(R5)		; MESSAGE DONE??
   1980	012340	001356 				BNE	20$		; NO -- CONTINUE THE MESSAGE
   1981	012342	005737 	011370'			TST	.PFDBG		; [**]
   1982	012346	001406 				BEQ	IGNO		;[**]
   1983	012350	112737 	000120 	177566 		MOVB	#'P,@#PRB0	;[**]
   1984	012356	105737 	177564 		60$:	TSTB	@#PRS0		;[**]
   1985	012362	100375 				BPL	60$		;[**]
   1986	012364				IGNO::
   1987	012364					RETURN			; YES -- RETURN TO CALLER
	012364	000207 				RTS	PC
   1988					;
   1989					;
   1990					;
   1991					;	AFTER THE SYSTEM HALTS THE PDP-10 WILL EVENTUALLY REALIZE
   1992					;	THAT THE PDP11 HAS CRASHED AND ATTEMPT TO
   1993					;	RELOAD IT.
   1994					;
   1995	012366				CMSG:
   1996	012366	   015 	   012 	   061 		.ASCIZ	<15><12>"11-HALT"<15><12>
	012371	   061 	   055 	   110
	012374	   101 	   114 	   124
	012377	   015 	   012 	   000
   1997	012402				TTTMSG:
   1998	012402	   124 	   124 	   124 		.ASCIZ	/TTT/			;[**]
	012405	   000
   1999						.EVEN
LC -- LOW CORE FOR RSX20F	MACRO M1113  03-APR-86 20:41  PAGE 45
LOW CORE -- I/O PAGE SNAPSHOT

   2001						.SBTTL	LOW CORE -- I/O PAGE SNAPSHOT
   2002
   2003					;+
   2004					; .IOSNP -- SNAPHOT THE I/O PAGE INTO THE GEN PARTITION
   2005					;
   2006					; THIS SUBROUTINE IS INVOKED WHENEVER RSX-20F REQUESTS A RELOAD.
   2007					; THE CONTENT OF ALL REGISTERS IN THE I/O PAGE (160000 - 177776) ARE
   2008					; LOADED INTO THE GEN PARTITION (100000 - 107776).  NON-EXISTENT REGISTERS
   2009					; CONTAIN "123456" IN THE DUMP.
   2010					;
   2011					; INPUTS:
   2012					;
   2013					;	NONE.
   2014					;
   2015					; OUTPUTS:
   2016					;
   2017					;	THE I/O PAGE IS LOADED INTO 100000 THRU 107776.
   2018					;
   2019					; NOTE:
   2020					;
   2021					;	THIS ROUTINE MUST BE CALLED AT BR6, OR HIGHER.
   2022					;-
   2023
   2024		007777 				IOPSIZ = <177776-160000>/2
   2025
   2026	012406				.IOSNP:
   2027	012406	010046 				MOV	R0,-(SP)	;;; [4.2314] SAVE REGISTERS
   2028	012410	010146 				MOV	R1,-(SP)
   2029	012412	010246 				MOV	R2,-(SP)
   2030	012414	013746 	000004 			MOV	@#4,-(SP)	;;; [4.2314] SAVE TRAP-AT-4 VECTOR
   2031	012420	012737 	012462'	000004 		MOV	#30$,@#4	;;; [4.2314] SET ALTERNATE VECTOR
   2032	012426	012700 	160000 			MOV	#160000,R0	;;; [4.2314] BASE OF I/O PAGE
   2033	012432	012701 	100000 			MOV	#100000,R1	;;; [4.2314] BASE OF GEN PARTITION
   2034	012436	012702 	007777 			MOV	#IOPSIZ,R2	;;; [4.2314] I/O PAGE SIZE
   2035	012442				10$:
   2036	012442	012021 				MOV	(R0)+,(R1)+	;;; [4.2314] SAVE THE I/O PAGE
   2037	012444				20$:
   2038	012444	077202 				SOB	R2,10$		;;; [4.2314] LOOP TILL DONE
   2039	012446	012637 	000004 			MOV	(SP)+,@#4	;;; [4.2314] RESTORE VECTOR
   2040	012452	012602 				MOV	(SP)+,R2	;;; [4.2314] AND REGISTERS
   2041	012454	012601 				MOV	(SP)+,R1
   2042	012456	012600 				MOV	(SP)+,R0
   2043	012460					RETURN			;;; [4.2314] TO CALLER
	012460	000207 				RTS	PC
   2044	012462				30$:
   2045	012462	012721 	123456 			MOV	#123456,(R1)+	;;; [4.2314] MARK NON-EXISTENT REGISTER
   2046	012466	032626 				BIT	(SP)+,(SP)+	;;; [4.2314] RESET STACK
   2047	012470	000765 				BR	20$		;;; [4.2314] AND CONTINUE
   2048						;
LC -- LOW CORE FOR RSX20F	MACRO M1113  03-APR-86 20:41  PAGE 46
LOW CORE -- I/O PAGE SNAPSHOT

   2050
   2051						.TITLE	SCH	- TASK SCHEDULER & GLOBAL DEFS
   2052						.SBTTL	EXEC MODULE ONE -- TITLE PAGE
   2053	012472					IDENT$	15,05,RSX$$F
						.IDENT	/A15050/
   2054					;
   2055					;                             COPYRIGHT (C) 1975, 1984, 1985 BY
   2056					;                     DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
   2057					;			ALL RIGHTS RESERVED.
   2058					;       THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE  USED  AND  COPIED
   2059					;       ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
   2060					;       OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR ANY OTHER COPIES THERE-
   2061					;       OF  MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
   2062					;       NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
   2063					;
   2064					;       THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT
   2065					;       NOTICE  AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
   2066					;       CORPORATION.
   2067					;
   2068					;       DIGITAL ASSUMES NO RESPONSIBILITY FOR THE  USE  OR  RELIABILITY  OF  ITS
   2069					;       SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
   2070					;
   2071					;
   2072					;		MODULE: EXEC MODULE ONE
   2073					;
   2074					;		VERSION: 15-05
   2075					;
   2076					;		AUTHOR:  R. MCLEAN
   2077					;
   2078					;		DATE: 19 MAR 75
   2079					;
   2080					;
   2081					;	THIS MODULE CONTAINS:
   2082					;
   2083					;	1 -- SYSTEM NOTES,
   2084					;	2 -- GLOSSARY,
   2085					;	3 -- SYMBOLIC DEFINITIONS,
   2086					;	4 -- NUL TASK.
   2087					;
   2088					; MODIFICATIONS:
   2089					;
   2090					;	NO.	DATE		PROGRAMMER	PURPOSE
   2091					;	---	----		----------	-------
   2092					;	001	18-OCT-76	A. PECKHAM	ADDITIONAL .KLIWD FLAGS
   2093					;	002	20-OCT-76	A. PECKHAM	FIX FOR F11 PARTITION
   2094					;						LOAD REQUEST FAILURE.
   2095					;	003	03-FEB-77	R. BELANGER	CHANGED KLR EVENT FLAG
   2096					;						ADDED KLD EVENT FLAG
   2097					;	004	04-MAR-77	R. BELANGER	ADDED CODE IN NULL TASK
   2098					;						TO INVOKE TIME OF DAY TASK
   2099					;	005	07-MAR-77	A. PECKHAM	REMOVE BUG FROM DOWN MESSAGE CODE.
   2100					;	006	01-JUL-77	R. BELANGER	ADD KLINIK EVENT LOGGING CODES.
   2101					;	007	18-AUG-77	R. BELANGER	ADD POWER RESTART IN PROGRESS FLAG
   2102					;	008	05-OCT-77	R. BELANGER	ADD COMM REGION INVALID FLAG
   2103					;	009	27-MAY-78	R. BELANGER	DEFINE PROTOCOL TIMEOUT FLAG FOR "TKTN"
   2104					;  TCO 4.1.1035	16-NOV-79	R. BELANGER	CHANGES TO SUPPORT QUEUE ARBITRATION
   2105					;  TCO 4.1.1105	11-MAR-80	R. BELANGER	CHANGE "EF.PR1" RECOGNITION
SCH	- TASK SCHEDULER & GLOB	MACRO M1113  03-APR-86 20:41  PAGE 46-1
EXEC MODULE ONE -- TITLE PAGE

   2106					;  TCO 5.1127	08-AUG-80	S. LEAPLINE	MAKE SNDMSG GLOBAL FOR HOST DEBUG
   2107					;	010	27-MAR-81	S. LEAPLINE	REMOVE "RSUM" AND "SPND"
   2108					;
   2109					;11-JUL-83  TCO 6.1721	D.WEAVER
   2110					;	CHANGE THE %DECSYSTEM-XX NOT RUNNING MESSAGES TO EVEN PARITY AND AT
   2111					;	THE SAME TIME MAKE THEM UPPER AND LOWER CASE.
   2112					;
SCH	- TASK SCHEDULER & GLOB	MACRO M1113  03-APR-86 20:41  PAGE 47
EXEC MODULE ONE -- SYSTEM NOTES

   2114						.SBTTL	EXEC MODULE ONE -- SYSTEM NOTES
   2115					;+
   2116					; PROCESSOR PRIORITIES
   2117					;
   2118					; PERIPHERIAL DEVICE INTERRUPT SERVICE ROUTINES RUN AT PROCESSOR PRIORITY
   2119					; LEVELS FOUR THRU SEVEN (4-7).  ALSO, PARTS OF THE SOFTWARE THAT CANNOT BE
   2120					; INTERRUPTED ARE ALSO RUN AT PRIORITY SEVEN (PRI=7).  THESE UNINTERRUPTABLE
   2121					; PERIODS ARE AS SHORT AS POSSIBLE.
   2122					;
   2123					; PRIORITY LEVELS ZERO THRU THREE (0-3) ARE USED BY THE SYSTEM AS OPERATION
   2124					; INDICATORS.  I.E., THERE ARE NO "SOFTWARE INTERRUPTS", AND THEREFORE, THERE
   2125					; IS NO PRECEDENCE IMPLIED (OR ENVOKED) BY LEVELS ZERO THRU THREE.
   2126					;
   2127					; LEVEL ZERO (PRI=0) IS USED EXCLUSIVELY FOR TASK EXECUTION.
   2128					;
   2129					; LEVELS ONE, TWO, AND THREE ARE USED FOR "SYSTEM LEVEL" EXECUTION.
   2130					;
   2131					; LEVEL TWO (PRI=2) IS USED FOR THE RECOGNITION OF "SYSTEM EVENTS".
   2132					; THESE EVENTS ARE INDICATED IN THE "SYSTEM EVENT RECOGNITION" FLAG
   2133					; '.SERFG' AND ARE RECOGNIZED (SERVICED) ONLY WHEN RETURNING TO
   2134					; TASK EXECUTION (VIZ., FROM AN INTERRUPT, OR FROM A DIRECTIVE).
   2135					; SYSTEM EVENTS ARE (1) SIGNIFICANT EVENT DECLARATIONS, (2) CLOCK
   2136					; TICKS, AND (3) POWER FAILURE RECOVERIES.
   2137					;
   2138					; LEVEL THREE (PRI=3) IS USED FOR EXECUTION OF ROUTINES WHICH CANNOT BE
   2139					; INTERRUPTED BY SIGNIFICANT-EVENT OR CLOCK-TICK RECOGNITION, BUT CAN BE
   2140					; INTERRUPTED BY PERIPHERIAL DEVICE INTERRUPTS
   2141					;  IN THESE CASES, THE LEVEL
   2142					; MAY BE SET TO THREE BY ANY MEANS, BUT MUST BE LOWERED TO ZERO BY
   2143					; TRANSFERRING CONTROL TO '..INTX' TO ALLOW RECOGNITION OF "SYSTEM
   2144					; EVENTS THAT MIGHT HAVE OCCURED WHILE RUNNING AT PRI=3.
   2145					; THE SYSTEM TRACE (DEBUGGING) ROUTINE  RUNS AT PRI=7.
   2146					;
   2147					;
   2148					;
   2149					; FORMAT OF PROCESSOR STATUS (PS) WORD
   2150					;
   2151					;	C CPP RXX XLL LTN ZVC
   2152					;
   2153					;	CC	CURRENT MODE (00:KERNEL, 11:USER)
   2154					;	PP	PREVIOUS MODE (00:KERNEL, 11:USER)
   2155					;	R	REGISTER CLEAR (BIT ALWAYS CLEAR)
   2156					;	XXX	UNUSED BITS
   2157					;	LLL	PROCESSOR PRIORITY LEVEL
   2158					;	T	TRACE BIT
   2159					;	N	CONDITION CODE -- NEGATIVE
   2160					;	Z	CONDITION CODE -- ZERO
   2161					;	V	CONDITION CODE -- OVERFLOW
   2162					;	C	CONDITION CODE -- CARRY
   2163					;
   2164					; KEY TEXT IN THIS LISTING IS DELIMITED BY LINES CONATINING A ";+" AND A ";-"
   2165					; AS THE FIRST TWO CHARACTERS OF A SOURCE LINE.  A ";+" LINE  DEFINES THE
   2166					; BEGINNING OF A BLOCK OF KEY TEXT, AND A ";-" LINE DEFINES THE END.
   2167					;-
SCH	- TASK SCHEDULER & GLOB	MACRO M1113  03-APR-86 20:41  PAGE 48
EXEC MODULE ONE -- GLOSSARY

   2169						.SBTTL	EXEC MODULE ONE -- GLOSSARY
   2170					;+
   2171					;
   2172					;
   2173					; ATL -- ACTIVE TASK LIST
   2174					;
   2175					; CKL -- CLOCK LIST
   2176					;
   2177					; DTL -- DTE20 LIST
   2178					;
   2179					; MRL -- MEMORY REQUEST LIST
   2180					;
   2181					; PUD -- PHYSICAL UNIT DEVICE TABLE
   2182					;
   2183					; DEQUE -- DOUBLE ENDED QUEUE.  FORWARD AND BACKWARD CIRCULAR LINKAGES.
   2184					;
   2185					; EXTERNAL PAGE -- 4K PAGE OF REAL MEMORY SPACE (760000-777776) CONTAINING
   2186					; CPU & PERIPHERIAL DEVICE CONTROL & STATUS REGISTERS (THE DEVICE PAGE).
   2187					;
   2188					; ISR -- INTERRUPT SERVICE ROUTINE
   2189					;
   2190					;
   2191					; STD -- SYSTEM TASK DIRECTORY
   2192					;-
   2193
   2194						.SBTTL	MACRO CALLS (MCALL)
   2195
   2199						.MCALL	.ENB0,.INH0,.ENB6,.INH6,.INH,.ENB,.INH5,.ENB5,.CRASH,RQST$
   2200						.MCALL	DIR$,CLEF$S,QIOW$,WTSE$,WTSE$S,.STKM,$DEF
   2201						.MCALL	CALL,RETURN,DTON$S,MFPS,MTPS,MTPI,MFPI,.DQPEN,DECL$S,CMKT$S
   2202						.MCALL	MRKT$,WTLO$,WSIG$S,WTLO$C,CLEF$C,QIOSY$,MRKT$S
   2203	012472					QIOSY$
   2204	012472					$DEF
SCH	- TASK SCHEDULER & GLOB	MACRO M1113  03-APR-86 20:41  PAGE 49
EXEC MODULE ONE -- SYMBOLIC DEFINITIONS

   2206						.SBTTL	EXEC MODULE ONE -- SYMBOLIC DEFINITIONS
   2207					;
   2208					; EXTERNAL PAGE DEFINITIONS
   2209					;
   2210		177776 			PS==177776	;PROCESSOR STATUS WORD
   2211		177546 			LKS==177546	;KW11L CLOCK
   2212		177560 			KBS0==177560	;CTY TTY
   2213		177562 			KBB0==177562	;CTY BUFFER (INPUT)
   2214		177564 			PRS0==177564	;CTY OUTPUT STATUS
   2215		177566 			PRB0==177566	;CTY OUTPUT BUFFER
   2216		175610 			KBS1==175610
   2217		175612 			KBB1==175612
   2218		175614 			PRS1==175614
   2219		175616 			PRB1==175616
   2220		173000 			.BM873==173000	;START OF BOOTSTRAP
   2221		172100 			.PARRG==172100	;PARITY ERROR REGISTER 0
   2222					;
   2223		000340 			PR7==340	;PRIORITY 7
   2224		000340 			PRI7==340
   2225		000100 			.INTEN==000100	;INTERRUPT ENABLE BIT
   2226					;
   2227		172360 			KPAR0=172360	;KERNEL PAGE ADDRESS REG 0
   2228		172362 			KPAR1=172362	;REG 1
   2229		172364 			KPAR2=172364	;REG 2
   2230		172366 			KPAR3=172366	;REG 3
   2231		172370 			KPAR4=172370	;REG 4
   2232		172372 			KPAR5=172372	;REG 5
   2233		172374 			KPAR6=172374	;REG 6
   2234		172376 			KPAR7=172376	;REG 7
   2235					;
   2236		172300 			KPDR0=172300	;KERNEL PAGE DESCRIPTOR REGISTER 0
   2237		172302 			KPDR1=172302	;REG 1
   2238		172304 			KPDR2=172304	;REG 2
   2239		172306 			KPDR3=172306	;REG 6
   2240		172310 			KPDR4=172310	;REG 4
   2241		172312 			KPDR5=172312	;REG 5
   2242		172314 			KPDR6=172314	;REG 6
   2243		172316 			KPDR7=172316	;REG 7
   2244					;
   2245		177640 			UPAR0=177640	;USER PAGE ADDRESS REG 0
   2246		177642 			UPAR1=177642	;REG 1
   2247		177644 			UPAR2=177644	;REG 2
   2248		177646 			UPAR3=177646	;REG 3
   2249		177650 			UPAR4=177650	;REG 4
   2250		177652 			UPAR5=177652	;RRG 5
   2251		177654 			UPAR6=177654	;REG 6
   2252		177656 			UPAR7=177656	;REG 7
   2253					;
   2254		177600 			UPDR0=177600	;USER PAGE DESCRIPTOR REG 0
   2255		177602 			UPDR1=177602	;REG 1
   2256		177604 			UPDR2=177604	;REG 2
   2257		177606 			UPDR3=177606	;REG 3
   2258		177610 			UPDR4=177610	;REG 4
   2259		177612 			UPDR5=177612	;REG 5
   2260		177614 			UPDR6=177614	;REG 6
   2261		177616 			UPDR7=177616	;REG 7
   2262					;
SCH	- TASK SCHEDULER & GLOB	MACRO M1113  03-APR-86 20:41  PAGE 49-1
EXEC MODULE ONE -- SYMBOLIC DEFINITIONS

   2263		000046 			$DSW==46	;DIRECTIVE STATUS WORD
   2264		000050 			.FSRPT==50	;FCS POINTER
   2265		000054 			N.OVPT==54	;FCP OVERLAY POINTER
   2266					;
   2267					;
   2268					; SYSTEM TRACE (T-BIT) DEBUGGING AID CONDITIONAL DEFINITIONS
   2269					;
   2270		000020 			TBIT==20	;TRACE BIT IN PS
   2271					;
   2272		000000 			STXAS==0	;SIGNIFICANT EVENT RECOGNITION (ATL SCAN) TRACE SWITCH
   2273		000000 			STXCS==0	;CLOCK TICK RECOGNITION TRACE SWITCH
   2274		000000 			STXDX==0	;DIRECTIVE EXECUTION TRACE SWITCH
   2275					;
   2276					; PRIVLEDGED TASK EVENT FLAG BIT MASKS
   2277					;
   2278		000001 			EF.DTE==1	;EVENT FLAG FOR DTE20 DOORBELL (UNUSED)
   2279		000001 			E.DTE==1.
   2280		000002 			EF.CLK==2	;EVENT FLAG FOR CLOCK (UNUSED)
   2281		000002 			E.CLK==2.
   2282		000004 			EF.TTY==4	;EVENT FLAG FOR TTY INPUT COMPLETE (UNUSED)
   2283		000003 			E.TTY==3.
   2284		000010 			EF.NIR==10	;EVENT FLAG TO SIGNAL QIO REQUEST ENTERED (DRIVERS)
   2285		000004 			E.NIR==4.
   2286		000020 			EF.IOD==20	;EVENT FLAG TO SIGNAL QIO REQUEST DONE (DRIVERS)
   2287		000005 			E.IOD==5.
   2288		000040 			EF.BOV==40	;EVENT FLAG TO SIGNAL NOT ENOUGH NODE SPACE (UNUSED)
   2289		000006 			E.BOV==6.
   2290		000100 			EF.TMO==100	;EVENT FLAG TO SIGNAL TIMOUT REQUEST FOR TTY (TTYDRR & SCOMM)
   2291		000007 			E.TMO==7.
   2292		000200 			EF.RQM==200	;REQUEST MCR (TTYDRR)
   2293		000010 			E.RQM==8.
   2294		000400 			EF.WFM==400	;WAIT FOR MARK TIME (UNUSED)
   2295		000011 			E.WFM==9.
   2296		001000 			EF.RKR==1000	; +++003 REQUEST KLINIK RING SERVICE (TTYDRR)
   2297		000012 			E.RKR==10.	; +++003
   2298		002000 			EF.RKH==2000	; +++003 REQUEST KLINIK HANG-UP SERVICE (TTYDRR)
   2299		000013 			E.RKH==11.	; +++003
   2300		004000 			EF.RSS==4000	; +++009 REQUEST SETSPD FOR AUTOBAUD (TTYDRR)
   2301		000014 			E.RSS==12.	; +++009
   2302					;
   2303					; RESERVED LOCAL EVENT FLAG BIT MASKS (25. - 32.)
   2304					;
   2305		100000 			EF.SND==100000	;SEND ALL FINISHED
   2306		000040 			E.FSND==32.
   2307					;
   2308					; RESERVED GLOBAL EVENT FLAG BIT MASKS (57. - 64.)
   2309					;
   2310		100000 			EF.PR1==100000	; [4.1.1105] PRIMARY PROTOCOL RUNNING FLAG
   2311		000100 			E.FPR1==64.
   2312		040000 			EF.CTC==040000	; [4.1.1105] ^C FLAG
   2313		000077 			E.FCTC==63.
   2314		020000 			EF.PR2==020000	;SECONDARY PROTOCOL RUNNING FLAG
   2315		000076 			E.FPR2==62.
   2316		010000 			EF.RKP==010000	; +++003 KLINIK PARAMETERS RECIEVED (QPRDTE, SAVE)
   2317		000075 			E.FRKP==61.
   2318		004000 			EF.PFR==004000	; +++007 POWER FAIL RESTART IN PROGRESS (SCOMM, KLINIT)
   2319		000074 			E.FPFR==60.
SCH	- TASK SCHEDULER & GLOB	MACRO M1113  03-APR-86 20:41  PAGE 49-2
EXEC MODULE ONE -- SYMBOLIC DEFINITIONS

   2320		002000 			EF.CRI==002000	; +++008 COMM REGION IS INVALID (BOOT, TKTN)
   2321		000073 			E.FCRI==59.
   2322		001000 			EF.FCP==001000	; FAULT CONTINUATION IN PROGRESS (BOOT)
   2323		000072 			E.FFCP==58.
   2324					;
   2325					; COMMON NODE DEFINITONS
   2326					;
   2327		000000 			N.FP==0		;FORWARD POINTER
   2328		000002 			N.BP==2		;BACKWARD POINTER
   2329		000010 			N.PR==10	;PRIORITY BYTE
SCH	- TASK SCHEDULER & GLOB	MACRO M1113  03-APR-86 20:41  PAGE 50
EXEC MODULE ONE -- SYMBOLIC DEFINITIONS

   2331					; TPD -- TASK PARTITION DIRECTORY
   2332					;
   2333					; THE "TPD" IS A FIXED LIST OF ENTRIES DESCRIBING EACH PARTITION IN A
   2334					; SYSTEM.
   2335					;  CONSISTING OF ENTRIES OF THE FOLLOWING FORMAT:
   2336					;
   2337		000000 			T.PN==00 ; WD. 00 (B 00) -- PARTITION NAME (FIRST HALF)
   2338						 ; WD. 01 (B 02) -- PARTITION NAME (SECOND HALF)
   2339		000004 			T.BA==04 ; WD. 02 (B 04) -- BASE ADDRESS OF PARTITION (IN BYTES)
   2340		000006 			T.PZ==06 ; WD. 03 (B 06) -- SIZE OF PARTITION (IN BYTES)
   2341		000010 			T.FW==10 ; WD. 04 (B 10) -- PARTITION FLAGS WORD
   2342		000012 			T.HP==12 ; WD. 05 (B 12) -- 1/64 TH OF BASE ADR OF FIRST HOLE, OR ZERO IF NO HOLES.
   2343		000014 			T.RF==14 ; WD. 06 (B 14) -- MRL LISTHEAD (FORWARD LINKAGE)
   2344		000016 			T.RB==16 ; WD. 07 (B 16) -- MRL LISTHEAD (BACKWARD LINKAGE)
   2345					;
   2346		000020 			T.SZ==20		;SIZE (IN BYTES) OF TPD ENTRIES
   2347					;
   2348					;
   2349					;	FLAGS WORD BIT DEFINITIONS:
   2350					;
   2351		000002 			TF.OU==000002	;[01] SET IF OCCUPIED USER CONTROLLED PARTITION.
   2352					;
SCH	- TASK SCHEDULER & GLOB	MACRO M1113  03-APR-86 20:41  PAGE 51
EXEC MODULE ONE -- SYMBOLIC DEFINITIONS

   2354					;
   2355					;	TASK HEADER DEFINITIONS
   2356					;
   2357		000000 			H.CSP==0		;CURRENT STACK POINTER (UNUSED)
   2358		000002 			H.HSZ==2		;LENGTH OF HEADER
   2359		000046 			H.DSW==46		;DIRECTIVE STATUS WORD SAVE AREA
   2360		000050 			H.FCP==50		;FCP SAVE AREA
   2361		000052 			H.FOR==52		;FORTRAN SAVE AREA
   2362		000054 			H.OVL==54		;OVERLAY SAVE AREA
   2363		000074 			H.IPS==74		;INITIAL PS
   2364		000076 			H.IPC==76		;INITIAL PC
   2365		000100 			H.ISP==100		;INITIAL SP
   2366		000106 			H.TKVA==106		;TASK SST VECTOR ADDRESS
   2367		000130 			H.LUT==130		;LOGICAL UNIT TABLE SIZE
   2368					;
SCH	- TASK SCHEDULER & GLOB	MACRO M1113  03-APR-86 20:41  PAGE 52
EXEC MODULE ONE -- SYMBOLIC DEFINITIONS

   2370					;
   2371					; STD -- SYSTEM TASK DIRECTORY
   2372					;
   2373					; THE SYSTEM TASK DIRECTORY IS A MEMORY RESIDENT DIRECTORY OF ALL TASKS
   2374					; THAT HAVE BEEN INSTALLED INTO A SYSTEM THAT ARE NOT PREMANENTLY RESIDENT.
   2375					;  THIS DIRECTORY CONSISTS OF TWO
   2376					; PARTS: (1) A FIXED SIZE AREA OF ONE WORD FOR EACH TASK THAT COULD
   2377					; BE INSTALLED AT ANY TIME, AND (2) AN STD ENTRY FOR EACH TASK THAT IS
   2378					; INSTALLED.  THE FIXED SIZED AREA IS CALLED THE "ALPHA TABLE AREA", AND
   2379					; PROVIDES SPACE FOR AN ALPHABETICALLY ORDERED CONTIGUOUS LIST POINTERS
   2380					; TO STD ENTRIES (TO FACILLATE BINARY SEARCH FOR STD ENTRY BY TASK NAME).
   2381					; EACH STD ENTRY IS OF THE FOLLOWING FORMAT:
   2382					;
   2383		000000 			S.TN==00 ; WD. 00 (B 00) -- TASK NAME (6 CHAR IN RADIX-50, 2 WORDS)
   2384						 ; WD. 01 (B 02) -- (SECOND HALF OF TASK NAME)
   2385		000004 			S.TD==04 ; WD. 02 (B 04) -- DEFAULT TASK PARTITION (TPD ADDRESS)
   2386		000006 			S.FW==06 ; WD. 03 (B 06) -- FLAGS WORD
   2387		000010 			S.DP==10 ; WD. 04 (B 10) -- DEFAULT PRIORITY (BYTE)
   2388		000011 			S.DI==11 ;        (B 11) -- SYSTEM DISK INDICATOR (BYTE)
   2389		000012 			S.BA==12 ; WD. 05 (B 12) -- 1/64 TH OF BASE ADDRESS OF LOAD IMAGE
   2390		000014 			S.LZ==14 ; WD. 06 (B 14) -- SIZE OF LOAD IMAGE
   2391		000016 			S.TZ==16 ; WD. 07 (B 16) -- MAX TASK SIZE
   2392		000020 			S.PC==20 ; WD. 10 (B 20) -- INITIAL PC OF TASK
   2393		000022 			S.SP==22 ; WD. 11 (B 22) -- INITIAL SP OF TASK
   2394		000024 			S.RF==24 ; WD. 12 (B 24) -- SEND AND REQUEST QUEUE FORWARD PTR
   2395		000026 			S.RB==26 ; WD. 13 (B 26) -- SEND AND REQUEST QUEUE BACKWARD PTR
   2396		000030 			S.SS==30 ; WD. 14 (B 30) -- SST VECTOR TABLE ADDRESS
   2397		000032 			S.DL==32 ; WD. 15 (B 32) -- LOAD IMAGE FIRST BLOCK NUMBER (32-BITS)
   2398						 ; WD. 16 (B 34)    (SECOND HALF OF DISK ADDRESS)
   2399					;
   2400		000036 			S.SZ==36		;SIZE OF STD ENTRY
   2401					;
   2402					;
   2403					;
   2404					;	FLAGS WORD BIT DEFINITIONS:
   2405					;
   2406		000001 			SF.TA==000001	;[00] SET WHEN TASK IS ACTIVE
   2407		000001 			SF.PT==000001	;[00] SET WHEN TASK IS PRIVILEDGED (ACTIVE FOR NOW)
   2408		000002 			SF.FX==000002	;[01] SET WHEN TASK IS FIXED IN MEMORY
   2409		000004 			SF.EX==000004	;[02] SET WHEN TASK IS TO BE REMOVED ON EXIT
   2410		040000 			SF.IR==040000	;[14] SET WHEN INSTALL IS REQUESTED
   2411		100000 			SF.ST==100000	;[15] SET WHEN TASK IS SYSTEM TASK
   2412					;
SCH	- TASK SCHEDULER & GLOB	MACRO M1113  03-APR-86 20:41  PAGE 53
EXEC MODULE ONE -- SYMBOLIC DEFINITIONS

   2414					;
   2415					; ATL -- ACTIVE TASK LIST
   2416					;
   2417					; THE "ATL" IS A PRIORITY ORDERED DEQUE OF "ATL" NODES FOR ACTIVE TASKS
   2418					; THAT HAVE MEMORY ALLOCATED FOR THEIR EXECUTION.  THE TASKS REPRESENTED
   2419					; BY ENTRIES IN THE ATL ARE EITHER MEMORY RESIDENT, OR A REQUEST FOR THEIR
   2420					; LOADING HAS BEEN QUEUED.  THE LISTHEAD FOR THIS DEQUE IS IN THE SYSTEM
   2421					; COMMUNICATIONS AREA (SCOM), AND THE NODES ARE OF THE FOLLOWING FORMAT:
   2422					;
   2423						 ; WD. 00 (B 00) -- FORWARD LINKAGE
   2424						 ; WD. 01 (B 02) -- BACKWARD LINKAGE
   2425		000004 			A.SP==04 ; WD. 02 (B 04) -- STACK POINTER (R6) OF RUNNING TASK
   2426						 ;			WHEN TASK IS NOT CURRENT TASK
   2427		000006 			A.PD==06 ; WD. 03 (B 06) -- TASK'S RUN PARTITION (TPD ADDRESS)
   2428		000010 			A.RP==10 ; WD. 04 (B 10) -- TASK'S RUN PRIORITY (BYTE)
   2429		000012 			A.HA==12 ; WD. 05 (B 12) -- 1/64TH REAL ADR OF LOAD IMAGE
   2430		000014 			A.TS==14 ; WD. 06 (B 14) -- TASK STATUS (BYTE)
   2431		000015 			A.FB==15 ; WD. 06 (B 15) -- TASK FLAGS BYTE
   2432		000016 			A.TD==16 ; WD. 07 (B 16) -- SYSTEM TASK DIRECTORY (STD) ENTRY ADDRESS
   2433		000020 			A.EF==20 ; WD. 10 (B 20) -- TASK'S EVENT FLAGS (1-32)
   2434						 ; WD. 11 (B 22) -- (SECOND HALF OF TASK'S EVENT FLAGS)
   2435		000024 			A.FM==24 ; WD. 12 (B 24) -- TASK'S EVENT FLAGS MASKS (64-BITS)
   2436						 ; WD. 13 (B 26) -- (SECOND WORD OF FLAGS MASK)
   2437						 ; WD. 14 (B 30) -- (THIRD WORD OF FLAGS MASK)
   2438						 ; WD. 15 (B 32) -- (FOURTH WORD OF FLAGS MASK)
   2439		000034 			A.PF==34 ; WD. 16 (B 34) -- POWER FAIL AST TRAP ADDRESS
   2440					;
   2441		000036 			A.SZ==36		;SIZE OF ATL
   2442					;
   2443					; TASK STATUS VALUES ARE DESCRIBED AT 'ASXDT'
   2444					;
   2445					; BEFORE EXECUTION , THE FIRST THREE
   2446					; FLAGS MASK WORDS ARE USED AS FOLLOWS:
   2447					;
   2448					;	A.FM+0 -- ADDRESS OF TASK LOAD I/O REQUEST DEQUE LISTHEAD,
   2449					;	A.FM+2 -- ADDRESS OF TASK LOAD I/O REQUEST NODE,
   2450					;
   2451					; MRL -- MEMORY REQUIRED LIST
   2452					;
   2453					; THE "MRL" IS A PRIORITY ORDERED DEQUE OF "ATL" NODES FOR ACTIVE TASKS
   2454					; THAT REQUIRE MEMORY IN A PARTITION.  EACH PARTITION HAS ITS OWN MRL.
   2455					; WHENEVER A NON-FIXED TASK RUNNING IN A PARTITION EXITS, AN
   2456					; ATTEMPT IS MADE TO ASSIGN MEMORY TO THE FIRST (HIGHEST PRIORITY)
   2457					; TASK IN THE LIST.  IF MEMORY IS FOUND, THE TASK'S NODE IS
   2458					; MOVED FROM THE "MRL" TO THE "ATL" DEQUE.  THE MRL LISTHEAD IS IN
   2459					; THE TPD ENTRY FOR THE CORRESPONDING PARTITION.
   2460					;
   2461					;
   2462					;	FLAGS BYTE BIT DEFINITIONS
   2463					;
   2464		000200 			AF.PP==200	;[07] SET WHEN TASK IS PRIMARY PROTOCOL TASK
   2465					;
SCH	- TASK SCHEDULER & GLOB	MACRO M1113  03-APR-86 20:41  PAGE 54
EXEC MODULE ONE -- SYMBOLIC DEFINITIONS

   2467					;
   2468					; CKL -- CLOCK TABLE
   2469					;
   2470					; THE CLOCK LIST IS A TABLE CONSISTING OF ONE ENTRY FOR EACH OPERATION
   2471					; SCHEDULED TO BE PERFORMED AT SOME FUTURE TIME.  A "SCHEDULE DELTA-
   2472					; TIME" EACH ENTRY (IF ANY) OF THE CLOCK QUEUE IS DECREMENTED
   2473					; AT EACH CLOCK TICK UNTIL THE ENTRY "COMES DUE", AT WHICH TIME THE
   2474					; INDICATED OPERATION IS PERFORMED.  CLOCK TABLE ENTRIES ARE OF
   2475					; FOLLOWING FORMAT.
   2476					;
   2477		000000 			C.AT==00 ; WD. 00 -- ATL NODE ADDRESS OF REQUESTOR
   2478		000002 			C.AS==02 ; WD. 02 -- AST TRAP ADDRESS OF REQUESTOR
   2479		000004 			C.SD==04 ; WD. 02 -- SCHEDULE DELTA IN TICKS (16-BITS)
   2480		000006 			C.RS==06 ; WD. 03 -- RESCHEDULE DELTA IN TICKS (16-BITS)
   2481		000010 			C.FM==10 ; WD. 04 -- FLAG MASK (BIS SRC)
   2482		000012 			C.FA==12 ; WD. 05 -- FLAGS WORD ADR (BIS DST ADR)
   2483					;
   2484		000014 			C.SZ==14 ; SIZE OF CLOCK TABLE ENTRY
   2485					;
   2486					;
   2487		000074 			.CYLTM==60.	;CYCLE TIME OF CLOCK
   2488					;
   2489		000005 			.KALSC==5	;TIMEOUT INTERVAL FOR KL10
   2490					;
SCH	- TASK SCHEDULER & GLOB	MACRO M1113  03-APR-86 20:41  PAGE 55
EXEC MODULE ONE -- SYMBOLIC DEFINITIONS

   2492					;
   2493					; DTE -- DTE TABLE
   2494					;
   2495					; THE DTE LIST IS A TABLE CONSISTING OF ONE ENTRY FOR EACH OPERATION
   2496					; SCHEDULED TO BE PERFORMED AT SOME FUTURE TIME WHEN THE DTE20
   2497					; INTERRUPTS.  THE DTE20 TABLE ENTRIES ARE OF THE FOLLOWING
   2498					; FORMAT.
   2499					;
   2500		000000 			D.AT==00 ; WD. 00 -- ATL NODE ADDRESS OF REQUESTOR
   2501		000002 			D.FM==02 ; WD. 01 -- FLAG MASK (BIS SRC)
   2502		000004 			D.FA==04 ; WD. 02 -- FLAGS WORD ADR (BIS DIST ADR)
   2503					;
   2504		000006 			D.SZ==06 ; SIZE OF DTE20 TABLE ENTRY
   2505					;
SCH	- TASK SCHEDULER & GLOB	MACRO M1113  03-APR-86 20:41  PAGE 56
EXEC MODULE ONE -- SYMBOLIC DEFINITIONS

   2507					;
   2508					;	KLI PARAMETER WORD DEFINITIONS (.KLIWD)
   2509					;
   2510		000001 			KL.LRM==1		;LOAD RAMS
   2511		000002 			KL.CFM==2		;CONFIGURE MEMORY
   2512		000004 			KL.LVB==4		;LOAD VBOOT
   2513		000010 			KL.VBN==10		;VBOOT START AT START+1
   2514		000020 			KL.VBD==20		;DUMP MONITOR
   2515		000040 			KL.SPF==40		;START AT LOC 70 (AFTER POWER FAIL)
   2516		000100 			KL.LCA==100		; +001 LOAD CACHE
   2518		000200 			KL.SSC==200		; +001 START AT LOCATION 407 (AFTER SYSTEM CRASH)
   2520		000400 			KL.CFL==400		; +001  IF = 0, CONFIGURE FROM FILE
   2521		001000 			KL.KAC==1000		; [4.2107] KEEP-ALIVE-CEASED ERROR
   2522		002000 			KL.DEF==2000		; OPERATOR ACTUATED REBOOT
   2523		004000 			KL.REQ==4000		; KLINIT REQUESTED
   2524		010000 			KL.ABO==10000		; KLINIT CANCELED
   2525					;
   2526					; ALL BITS 0 IMPLIES ASK QUESTIONS TO CONTROL LOADING
   2527					;
   2528					;
   2529					;	PARAMETER DEFINITIONS FOR KL ERROR WORD
   2530					;
   2531		000001 			KS.TSP==1		;TEN STOPPED (HALTED)
   2532		000002 			KS.CES==2		;CLOCK ERROR STOP
   2533		000004 			KS.EPE==4		;E BOX PARITY ERROR
   2534		000010 			KS.DEX==10		;DEPOSIT EXAMINE ERROR
   2535		000020 			KS.CST==20		;KEEP ALIVE STOPPED
   2536		000040 			KS.TRR==40		;TEN REQUEST'S RE-BOOT
   2537		000100 			KS.PFT==100		;POWER FAIL RESTART
   2538		000200 			KS.PTO==200		; +++012 PROTOCOL TIMEOUT
   2539		000400 			KS.FME==400		;FAST MEMORY PARITY ERROR
   2540		001000 			KS.CPE==1000		;CRAM PARITY ERROR
   2541		002000 			KS.DPE==2000		;DRAM PARITY ERROR
   2542		004000 			KS.FCF==4000		;FAULT-CONTNUATION FAILED
   2543					;
SCH	- TASK SCHEDULER & GLOB	MACRO M1113  03-APR-86 20:41  PAGE 57
EXEC MODULE ONE -- SYMBOLIC DEFINITIONS

   2545					;
   2546					; PUD -- PHYSICAL UNIT DEVICE TABLE
   2547					;
   2548					; THE "PUD" IS A FIXED LIST OF ENTRIES DESCRIBING EACH PHYSICAL DEVICE-
   2549					; UNIT IN A SYSTEM.
   2550					;  CONSISTS OF ENTRIES OF THE FOLLOWING FORMAT:
   2551					;
   2552		000000 			U.DN==00 ; WD. 00 (B 00) -- DEVICE NAME (2 ASCII CHARS)
   2553		000002 			U.UN==02 ; WD. 01 (B 02) -- UNIT NUMBER (BYTE)
   2554		000003 			U.FB==03 ;        (B 03) -- FLAGS (BYTE)
   2555		000004 			U.C1==04 ; WD. 02 (B 04) -- CHARACTERISTICS WORD ONE (DEVICE INDEPENDENT INDICATORS)
   2556		000006 			U.C2==06 ; WD. 03 (B 06) -- CHARACTERISTICS WORD TWO (DEVICE DEPENDENT INDICATORS
   2557		000010 			U.C3==10 ; WD. 04 (B 10) -- CHARACTERISTICS WORD THREE (DEVICE DEPENDENT INDICATORS)
   2558		000012 			U.C4==12 ; WD. 05 (B 12) -- CHARACTERISTICS WORD FOUR (SIZE OF BLOCK, BUFFER, LINE)
   2559		000014 			U.AF==14 ; WD. 06 (B 14) -- ATTACH FLAG (ATL NODE ADDRESS OF ATTAC HING TASK
   2560		000016 			U.RP==16 ; WD. 07 (B 16) -- REDIRECT POINTER
   2561		000020 			U.HA==20 ; WD. 10 (B 20) -- HANDLER TASK ATL NODE ADDRESS
   2562		000022 			U.RF==22 ; WD. 11 (B 22) -- UNIT REQUEST DEQUE LISTHEAD (FWD PNTR)
   2563		000024 			U.RB==24 ; WD. 12 (B 24) -- UNIT REQUEST DEQUE LISTHEAD (BKG PNTR)
   2564					;
   2565					; PHYSICAL UITS ARE CONSIDERED "VOLUMES" BY THE FILES SYSTEM, AND THE
   2566					; REMAINDER OF THE PUD ENTRY IS A "VOLUME CONTROL BLOCK".
   2567					;
   2568		000026 			U.VA==26 ; WD. 13 (B 26) -- ADDRESS OF VOLUME CONTROL BLOCK EXTENSION
   2569		000030 			U.UI==30 ; WD. 14 (B 30) -- USER IDENTIFICATION CODE (UIC)
   2570		000030 			U.PC==30 ;        (B 30) -- UIC PROGRAMMER CODE
   2571		000031 			U.GC==31 ;        (B 31) -- UIC GROUP CODE
   2572		000032 			U.VP==32 ; WD. 15 (B 32) -- VOLUME PROTECTION WORD
   2573		000032 			U.CH==32 ;        (B 32) -- CHARACTERISTICS FLAGS
   2574						 ;        (B 33) -- RESERVED BYTE
   2575		000034 			U.AR==34 ; WD. 16 (B 34) -- ACCESS RIGHTS FLAGS WORD
   2576		000036 			U.DACP==36;WD. 20 (B 36) -- DEFAULT ACP NAME, RAD50 (FIRST WORD)
   2577		000040 			U.ACP==40 ; WD. 20 (B 40) -- STD ENTRY ADDRESS OF CURRENT ACP
   2578		000042 			U.TF==42 ; WD. 21 (B 42) -- TERMINAL FLAGS WORD
   2579		000042 			U.PR==42 ;        (B 42) -- TERMINAL PRIVILEDGE WORD
   2580		000043 			U.FO==43 ;        (B 43) -- TERMINAL FORMS BYTE
   2581		000044 			U.LBH==44 ; WD. 22 (B 44) -- HIGH ORDER - TOTAL # OF BLOCKS FOR DEVICE
   2582		000046 			U.LBN==46 ; WD. 24 (B46) -- LOW ORDER TOTAL # OF BLOCKS FOR DEVICE
   2583		000050 			U.SZ==50		;SIZE (IN BYTES OF PUD ENTRIES
   2584					;
   2585					;	FLAGS BYTE DEFINITIONS
   2586					;
   2587		000040 			UF.RD==040		; **************TEMP*********
   2588		000200 			UF.RH==200	; [7] SET WHEN HANDLER TASK IS DECLARED RESIDENT
   2589		000100 			UF.TL==100	; [6] SET WHEN HANDLER TASK RECOGNIZES LOAD AND RECORD
   2590		000040 			UF.OFL==040	; [5] SET WHEN DEVICE IS OFFLINE
   2591					;
   2592					;	BIT DEFINITIONS FOR CHARACTERISTICS WORD ONE
   2593					;
   2594		000001 			UC.REC==000001	;[00] SET IF RECORD ORIENTED DEVICE (VIZ., TT,LP, CR)
   2595		000002 			UC.CCL==000002	;[01] SET IF CARRIAGE CONTROL DEVICE (VIZ., TT LP)
   2596		000004 			UC.TTY==000004	;[02] SET IF TTY DEVICE (VIZ., KSR, LA30)
   2597		000010 			UC.DIR==000010	;[03] SET IF DEVICE IS A DIRECTORY DEVICE
   2598		000020 			UC.SDI==000020	;[04] SET  IF DEVICE IS A SINGLE DIRECTORY DEVICE
   2599		000040 			UC.SQD==000040	;[05] SET IF DEVICE IS A SEQUENTIAL DEVICE
   2600		000100 			UC.ETB==000100  ;[06] SET IF DEVICE IS EIGHTEEN BIT MODE
   2601		000400 			UC.INB==000400	;+003 [08] SET IF THE DEVICE IS INTERMEDIATE BUFFERED
SCH	- TASK SCHEDULER & GLOB	MACRO M1113  03-APR-86 20:41  PAGE 57-1
EXEC MODULE ONE -- SYMBOLIC DEFINITIONS

   2602		001000 			UC.SWL==001000	;[09] SET IF THE DEVICE IS SOFTWARE WRITE LOCKED
   2603		002000 			UC.ISP==002000	;[10] SET IF DEVICE IS INPUT SPOOLED
   2604		004000 			UC.0SP==004000	;[11] SET IF DEVICE IS OUTPUT SPOOLED
   2605		010000 			UC.PSE==010000	;[12] SET IF DEVICE IS PSEUDO DEVICE
   2606		020000 			UC.COM==020000	;[13] SET IF DEVICE IS COMMUNICATIONS CHANNEL
   2607		040000 			UC.F11==040000	;[14] SET IF DEVICE IS FILES-11
   2608		100000 			UC.MNT==100000	;[15] SET IF DEVICE IS MOUNTABLE
   2609					;
   2610					;	BIT DEFINITIONS FOR CHARACTERISTICS WORD TWO
   2611					;
   2612		000200 			CH.OFF==200	;VOLUME IS OFF-LINE
   2613		000100 			CH.FOR==100	;VOLUME IS FOREIGN
   2614		000040 			CH.UNL==40	;DISMOUNT PENDING
   2615		000020 			CH.NAT==20	;ATTACH/DETACH NOT PERMITTED
   2616		000010 			CH.NDC==10	;DEVICE CONTROL FUNCTIONS NOT PERMITTED
   2617		000001 			CH.LAB==1	;VOLUME IS LABELED TAPE
   2618					;
   2619					;	BIT DEFINITIONS FOR TERMINAL PRIVILEDGE BYTE
   2620					;
   2621		000001 			UT.PR==1	;SET IF TY ID PRIVILEDGED
   2622		000002 			UT.SL==2	;SET IF TTY IS SLAVED
   2623		000004 			UT.LG==4	;SET IF TERMINAL IS LOGGED ON
   2624					;
SCH	- TASK SCHEDULER & GLOB	MACRO M1113  03-APR-86 20:41  PAGE 58
EXEC MODULE ONE -- SYMBOLIC DEFINITIONS

   2626					;
   2627					; TASK TERMINATION NOTICE ERROR CODES FOR A.FM+0
   2628					;
   2629		000012 			TN.EMT==12		;NON-RSX EMT
   2630		000014 			TN.TRP==14		;TRAP INSTRUCTION
   2631		000040 			TN.LRF==40		;LOAD FAILURE
   2632					;
   2633					; SEND AND REQUEST QUEUE ENTRY
   2634					;
   2635		000004 			Q.SI==04 ; WD. 02 (B 04) -- SYSTEM TASK LIST ADDRESS
   2636		000006 			Q.D1==06 ; WD. 03 (B 06) -- FIRST DATA WORD
   2637					;
SCH	- TASK SCHEDULER & GLOB	MACRO M1113  03-APR-86 20:41  PAGE 59
EXEC MODULE ONE -- SYMBOLIC DEFINITIONS

   2639					;
   2640					;	DEVICE QUEUE POINTER TABLE (TO 11 QUEUE ENTRIES)
   2641					;
   2642		000000 			Q.DA==0	; WD. 00 (B 00) -- ADDRESS OF DEVICE TABLE LIST
   2643		000002 			Q.TS==02 ; WD. 01 (B 02) -- SIZE OF AN ENTRY IN THE DEVICE TABLE LIST
   2644		000004 			Q.ST==04 ; WD. 02 (B 04) -- ADDRESS OF DEVICE START SUBROUTINE
   2645		000006 			Q.SP==06 ; WD. 03 (B 06) -- ADDRESS OF DEVICE STOP SUBROUTINE
   2646						; WD. 04 (B 10) -- SPARE
   2647		000012 			Q.AK==12 ; WD. 05 (B 12) -- ACKNOWLEDGE ROUTINE
   2648						 ; WD. 06 (B 14) -- SPARE
   2649		000016 			Q.DZ==16 ; WD. 07 (B 16) -- DEVICE COUNT
   2650		000020 			Q.SZ==20	; SIZE OF TABLE ENTRY
   2651					;
SCH	- TASK SCHEDULER & GLOB	MACRO M1113  03-APR-86 20:41  PAGE 60
EXEC MODULE ONE -- SYMBOLIC DEFINITIONS

   2653					;
   2654					;	DEVICE ERROR LOGGING INFORMATION AND STATUS BLOCK DEFINITONS
   2655					;
   2656					;	WORD 0 -- STANDARD STATUS BITS (DV.XXX)
   2657					;
   2658					;	1	DEVICE-DEPENDENT BITS
   2659					;	2	...........
   2660					;	N
   2661					;
   2662					;	DEVICE ERROR LOGGING BITS (FIRST WORD BITS ONLY)
   2663					;
   2664		000001 			DV.NXD==1	;NON-EX DEVICE
   2665		000002 			DV.OFL==2	;OFF-LINE
   2666		000004 			DV.OIR==4	;HARDWARE ERROR. OPERATOR INTERVENTION REQ'D
   2667		000010 			DV.SCN==10	;SOFTWARE CONDITION. ACKNOWLEDGE REQUIRED
   2668		000020 			DV.IOP==20	;I/O IN PROGRESS
   2669		000040 			DV.EOF==40	;END-OF-FILE ENCOUNTERED
   2670		000100 			DV.LOG==100	;ERROR LOGGING REQUIRED
   2671		000200 			DV.URE==200	;UN-RECOVERABLE ERROR
   2672		000400 			DV.F11==400	;ERROR ON FROM -11 REQUEST
   2673		001000 			DV.HNG==1000	;DEVICE HUNG
   2674		002000 			DV.LIN==2000	;DEVICE LOST INTERRUPT ENABLE
   2675		004000 			DV.CFG==4000	; CONFIGURATION INFORMATION
   2676					;
SCH	- TASK SCHEDULER & GLOB	MACRO M1113  03-APR-86 20:41  PAGE 61
EXEC MODULE ONE -- SYMBOLIC DEFINITIONS

   2678					;
   2679					; KLINIK EVENT LOGGING CODES
   2680					;
   2681
   2682		000000 			K.LUND==0		; UNDEFINED CODE
   2683
   2684		000001 			K.LSCK==1		; SET/CLEAR KLINIK COMMAND
   2685		000001 				K.LSKL==1	; SET KLINIK
   2686		177777 				K.LCKL==-1	; CLEAR KLINIK
   2687
   2688		000002 			K.LRNG==2		; KLINIK RING
   2689		000001 				K.LRAC==1	; ACCEPTED (WINDOW OPEN)
   2690		177777 				K.LRRJ==-1	; REJECTED (WINDOW CLOSED)
   2691
   2692		000003 			K.LDSC==3		; KLINIK LINE DISCONNECT
   2693		000001 				K.LDCM==1	; DIRECTED DISCONNECT (COMMAND)
   2694		177777 				K.LDRP==-1	; CARRIER DROP
   2695
   2696		000004 			K.LCON==4		; KLINIK LINE CONNECT
   2697		000001 				K.LROP==1	; REMOTE -- OPERATOR MODE
   2698		000002 				K.LRPR==2	; REMOTE -- PROGRAMMER MODE
   2699		000003 				K.LRMN==3	; REMOTE -- MAINTENANCE MODE
   2700		177777 				K.LUSR==-1	; USER MODE
   2701
   2702		000005 			K.LBPW==5		; BAD PASSWORD
   2703
   2704		000006 			K.LLTO==6		; LOGON TIMEOUT
   2705
   2706		000007 			K.LRBA==7		; KLINIK ACTIVE ON REBOOT
SCH	- TASK SCHEDULER & GLOB	MACRO M1113  03-APR-86 20:41  PAGE 62
EXEC MODULE ONE -- SYMBOLIC DEFINITIONS

   2708					;
   2709					;	OFFSETS FOR SST TRAPS TABLE IN USER'S AREA
   2710					;
   2711		000000 			T.RAP4==0		;TRAP AT 4
   2712		000002 			T.RAPM==2		;MEMORY PROTECT VIOLATOION
   2713		000004 			T.RAPB==4		;T BIT OR BPT TRAP
   2714		000006 			T.RAPI==6		;IOT TRAP
   2715		000010 			T.RAPR==10		;RESERVED INSTRUCTION TRAP
   2716		000012 			T.RAPE==12		;EMT TRAP (NON RSX)
   2717		000014 			T.RAPT==14		;TRAP TRAP
   2718		000016 			T.RAPF==16		;FLOATING POINT TRAP
   2719					;
SCH	- TASK SCHEDULER & GLOB	MACRO M1113  03-APR-86 20:41  PAGE 63
EXEC MODULE ONE -- SYMBOLIC DEFINITIONS

   2721					;
   2722					; IRQ -- I/O REQUEST QUEUE
   2723					;
   2724					; THE "IRQ" IS A PRIORITY ORDERED DEQUE OF I/O REQUEST NODES WITH ITS
   2725					; LISTHEAD IN THE PUD ENTRY OF THE PHYSICAL UNIT FOR WHICH THE I/O
   2726					; REQUEST WAS QUEUED.  EACH PHYSICAL UNIT HAS ITS OWN I/O REQUEST QUEUE.
   2727					; I/O REQUEST NODES ARE CREATED AND QUEUED PRIMARILY BY THE "QUEUE I/O"
   2728					; DIRECTIVE.  HOWEVER, THE EXEC ALSO CREATES I/O REQUESTS TO:
   2729					; (1) LOAD A TASK IMAGE,
   2730					; I/O REQUEST NODES ARE
   2731					; THE FOLLOWING FORMAT.
   2732					;
   2733						 ; WD. 00 (B 00) -- FORWARD LINKAGE
   2734						 ; WD. 01 (B 02) -- BACKWARD LINKAGE
   2735		000004 			R.TD==04 ; WD. 02 (B 04) -- STD NODE OF REQUESTOR
   2736		000006 			R.AT==06 ; WD. 03 (B 06) -- ATL NODE OF REQUESTOR ***
   2737		000010 			R.PR==10 ; WD. 04 (B 10) -- PRIORITY (BYTE)
   2738		000011 			R.DP==11 ;        (B 11) -- DPB SIZE (BYTE) ***
   2739		000012 			R.LU==12 ; WD. 05 (B 12) -- LOGICAL UNIT NUMBER (BYTE)
   2740		000013 			R.FN==13 ;        (B 13) -- EVENT FLAG NUMBER (BYTE)
   2741		000014 			R.FC==14 ; WD. 06 (B 14) -- I/O FUNCTION CODE
   2742		000016 			R.SB==16 ; WD. 07 (B 16) -- ADDRESS OF STATUS BLOCK
   2743		000020 			R.AS==20 ; WD. 10 (B 20) -- AST ADDRESS
   2744		000022 			R.UI==22 ; WD. 11 (B 22) -- UIC (UNUSED)
   2745		000024 			R.PB==24 ; WD. 12 (B 24) -- PARAMETER #1
   2746						 ; WD. 13 (B 26) -- PARAMETER #2
   2747						 ; WD. 14 (B 30) -- PARAMETER #3
   2748						 ; WD. 15 (B 32) -- PARAMETER #4
   2749						 ; WD. 16 (B 34) -- PARAMETER #5
   2750						 ; WD. 17 (B 36) -- PARAMETER #6
   2751					;
   2752					; THE LOW ORDER THREE-BITS OF THE I/O FUNCTION CODE ARE USED BY THE SYSTEM
   2753					; AS FOLLOWS:
   2754					;
   2755							;[0] -- RESERVED FOR FUTURE USE
   2756		000002 			RF.XR==000002	;RESERVED
   2757							;[2] -- RESERVED FOR FUTURE USE
   2758					;
   2759					; *** WHENEVER AN I/O REQUEST IS QUEUED BY THE "QUEUE I/O" DIRECTIVE, THE
   2760					; DPB SIZE AND THE REQUESTOR'S ATL NODE ADDRESS ARE RECORDED IN THE I/O
   2761					; REQUEST NODE.  WHENEVER AN I/O REQUEST IS QUEUED AS A RESULT OF ANOTHER
   2762					; DIRECTIVE (VIZ., "REQUEST" CAUSING A TASK IMAGE TO BE LOADED), THE DPB
   2763					; SIZE AND THE REQUESTOR'S ATL NODE ADDRESS ARE SET TO ZERO.  THUS, BOTH
   2764					; BOTH THE DPB SIZE AND THE ATL NODE ADDRESS ARE ALSO "EXEC REQUEST"
   2765					; INDICATORS.
   2766					;
SCH	- TASK SCHEDULER & GLOB	MACRO M1113  03-APR-86 20:41  PAGE 64
EXEC MODULE ONE -- SYMBOLIC DEFINITIONS

   2768					;+
   2769					;  SIGNIFICANT EVENT FLAG DEFINITIONS
   2770					;
   2771					;
   2772					; THE HIGH-ORDER BYTE '.SERFG+1' IS INCREMENTED WHENEVER A CLOCK
   2773					; TICK OCCURS (WHENEVER THE CLOCK INTERRUPT SERVICE ROUTINE RUNS).
   2774					; HENCE, '.SERFG+1' IS A BYTE CONTAINING A COUNT OF UNRECOGNIZED
   2775					; CLOCK TICKS.
   2776					;
   2777					; THE BITS OF THE LOW-ORDER BYTE '.SERFG+0' ARE USED TO FLAG THE
   2778					; FOLLOWING EVENTS:
   2779					;
   2780		000001 			EV.SE==001 ; [0] SET WHENEVER A SIGNIFICANT EVENT IS TO BE
   2781						   ; RECOGNIZED,
   2782					;
   2783		000002 			EV.AS==002 ; [1] SET WHEN POWER FAIL IS REQUIRED
   2784		000200 			EV.PF==200 ; [7] SET WHEN POWER DOWN HAS OCCURRED AND MUST BE RECOGNIZED
   2785						   ;     ** MUST BE SIGN BIT **
   2786					;-
SCH	- TASK SCHEDULER & GLOB	MACRO M1113  03-APR-86 20:41  PAGE 65
EXEC MODULE ONE -- NUL TASK

   2788						.SBTTL	EXEC MODULE ONE -- NUL TASK
   2789					;
   2790					; THE NUL TASK EXISTS TO ELIMINATE EXCEPTION TESTING WHEN SCANNING THE
   2791					; ACTIVE TASK LIST, AND WHEN PROCESSING DIRECTIVES THAT CAUSE AN
   2792					; ATL SCAN TO CONTINUE FROM THE NEXT TASK OF LOWER PRIORITY THAN THE
   2793					; DIRECTIVE ISSUING TASK.
   2794					;
   2795					; THE NUL TASK IS THE LOWEST PRIORITY TASK IN A SYSTEM.
   2796					;
   2797					; THE NUL TASK HAS AN ATL NODE WITH STATUS OF "RUNNING", BUT HAS NO STD
   2798					; ENTRY.
   2799					;
   2800					; THE NUL TASK DOES NOT RESIDE IN A PARTITION.
   2801					;
   2802					; THE NUL TASK EXECUTION CONSISTS OF "WAIT" INSTRUCTIONS (TO INCREASE
   2803					; UNIBUS THROUGHPUT).  HOWEVER, THE NUL TASK DOES HAVE CONTEXT, AND CAN
   2804					; EXECUTE PDP-11 INSTRUCTIONS
   2805					;
   2806					;
   2807	012472				NULHD::	.STKM	170017,0,0,0,0,0,0,NTKXEP,174000,NTKXSP
	012540	000000 	000000 	000000 		.WORD	0,0,0,0
	012546	000000
	012566	174000 	012776'	012752'		.WORD	174000,NTKXEP,NTKXSP
	012622	000005 				.WORD	5
	012624	010262'				.WORD	TTPEN
	012626	000000 				.WORD	0
	012630	000000 				.WORD	0
	012632	000000 				.WORD	0
	012634	000000 				.WORD	0
	012636	000000 				.WORD	0
	012640	000000 				.WORD	0
	012642	000000 				.WORD	0
	012644	000000 				.WORD	0
	012646	000000 				.WORD	0
	012650	000000 				.WORD	0
	012752	170017 				.WORD	170017
	012754	000000 				.WORD	0
	012756	000000 				.WORD	0
	012760	000000 				.WORD	0
	012762	000000 				.WORD	0
	012764	000000 				.WORD	0
	012766	012776'				.WORD	NTKXEP
	012770	174000 				.WORD	174000
SCH	- TASK SCHEDULER & GLOB	MACRO M1113  03-APR-86 20:41  PAGE 66
EXEC MODULE ONE -- NUL TASK

   2809	012772				NTKXEN:
   2810	012772					.ENB6			; ENABLE INTERRUPTS
	012772	012637 	177776 			MOV	(SP)+,@#PS
   2811	012776				NTKXEP:
   2812	012776	000001 				WAIT
   2813	013000	000001 				WAIT
   2814	013002	005200 				INC	R0
   2815	013004					.INH6			; [4.1.1035] DISALLOW INTERRUPTS
	013004	013746 	177776 			MOV	@#PS,-(SP)
	013010	112737 	000300 	177776 		MOVB	#300,@#PS
   2816	013016	005737 	001012'			TST	.COMEF+2	;;; [4.1.1105] IF PRIMARY PROTOCOL IS DEAD
   2817	013022	100033 				BPL	40$		;;; [4.1.1105] THEN SEND DOWN MESSAGE
   2818	013024	005737 	001164'			TST	.ACKAL		;;; IF ACKAL HAS NOT BEEN SENT
   2819	013030	001002 				BNE	20$		;;; THEN KL MAY STILL BE SHAKY
   2820	013032	105037 	013264'			CLRB	SNDMSG		;;; OTHERWISE RESET MSG FLAG
   2821	013036				20$:
   2822	013036	005737 	001124'			TST	.TKTN		;;; CHECK FOR TASK TERMINATION REQUIRED
   2823	013042	001410 				BEQ	30$		;;; NO -- LOOK AT TIME OF DAY FLAG
   2824	013044	005037 	001124'			CLR	.TKTN		;;; CLEAR REQUEST FOR TASK TERMINTATION
   2826	013050					.ENB6			;;; ENABLE INTERRUPTS
	013050	012637 	177776 			MOV	(SP)+,@#PS
   2827	013054					DIR$	#.TKTN.		; REQUEST TASK TERMINATION
	013054	012746 	013170'			MOV	#.TKTN.,-(SP)
	013060	104375 				EMT	375
   2828	013062	000745 				BR	NTKXEP		; AND CONTINUE
   2829						;
   2833	013064				30$:
   2834	013064	005737 	001136'			TST	.CLKSW		;;; NEED TIME CHANGE?
   2835	013070	100340 				BPL	NTKXEN		;;; [4.1.1035] NO -- JUST GO ON
   2836	013072	005037 	001136'			CLR	.CLKSW		;;; YES -- RESET CLOCK SWITCH
   2837	013076					.ENB6			;;; ENABLE INTERRUPTS
	013076	012637 	177776 			MOV	(SP)+,@#PS
   2838	013102					DIR$	#.TOD.		; REQUEST TIME OF DAY TASK
	013102	012746 	013152'			MOV	#.TOD.,-(SP)
	013106	104375 				EMT	375
   2839	013110	000732 				BR	NTKXEP		; AND CONTINUE IDLE LOOP
   2840						;
   2841	013112				40$:
   2842	013112	105737 	001400'			TSTB	.PRPSE		;;; ARE WE JUST PAUSING??
   2843	013116	001347 				BNE	20$		;;; YES -- BACK TO MAIN LOOP
   2844	013120	005737 	013264'			TST	SNDMSG		;;; HAVE WE INFORMED THE TTYS ?
   2845	013124	001344 				BNE	20$		;;; YES -- DON'T RE-SEND
   2846	013126	012704 	013206'			MOV	#DWNMSG,R4	;;; SEND DOWN MESSAGE
   2847	013132					CALL	COPBUF		;;; COPY BUFFER TO FREE SPACE
	013132	004737 	030130'			JSR	PC,COPBUF
   2848	013136	010004 				MOV	R0,R4		;;; SET UP TO SEND IT
   2849	013140					CALL	.SNDAL		;;; SEND MESSAGE
	013140	004737 	027624'			JSR	PC,.SNDAL
   2850	013144	105237 	013264'			INCB	SNDMSG		;;; SYSTEM DOWN MESSAGE HAS BEEN SENT.
   2851	013150	000732 				BR	20$		;;; CHECK FOR TERMINATION NOTIFICATION
   2852						;
   2853	013152				.TOD.:
   2854	013152					RQST$	MIDNIT
	013152	   013 	   007 			.BYTE	11.,7
	013154	051254 	054374 			.RAD50	/MIDNIT/
	013160	000000 	000000 			.WORD	0,0
	013164	000000 				.WORD
SCH	- TASK SCHEDULER & GLOB	MACRO M1113  03-APR-86 20:41  PAGE 66-1
EXEC MODULE ONE -- NUL TASK

	013166	   000 	   000 			.BYTE	,
   2855
   2857	013170				.TKTN.:
   2858	013170					RQST$	TKTN
	013170	   013 	   007 			.BYTE	11.,7
	013172	077314 	053600 			.RAD50	/TKTN/
	013176	000000 	000000 			.WORD	0,0
	013202	000000 				.WORD
	013204	   000 	   000 			.BYTE	,
   2860
   2861					;A MACRO TO ASSEMBLE AN EVEN PARITY ASCII STRING
   2862					.MACRO EPASCI STR
   2863					.IRPC CHR,<STR>
   2864						PB==0			;;PARITY BIT INITIALLY ZERO
   2865						CH==''CHR		;;GET THE VALUE OF THE CHAR
   2866						.REPT 8.		;;FOR ALL EIGHT BITS
   2867							PB==200&<PB+CH>	;;XOR THE TOP BIT INTO PB
   2868							CH==CH*2	;; AND SHIFT TO THE NEXT BIT
   2869						.ENDR
   2870						.BYTE	PB+''CHR	;;STORE THE BYTE WITH THE PARITY BIT
   2871					.ENDM				;;END THE IRPC
   2872					.ENDM				;;END THE MACRO
   2873
   2874	013206				DWNMSG:
   2875	013206	000000 	000060 	013220'		.WORD	0,60,DWNMS,DWNMSZ,DWNMSZ*400
	013214	000043 	021400
   2876
   2877	013220				DWNMS:
   2878	013220	   215 	   012 	   207 		.ASCII	<215><12><207><207><207>
	013223	   207 	   207
   2879						.ENABL LC
   2883	013225					EPASCI	<%DECsystem-10 not running>
	013225	   245 				.BYTE	PB+'%	;;STORE THE BYTE WITH THE PARITY BIT
	013226	   104 				.BYTE	PB+'D	;;STORE THE BYTE WITH THE PARITY BIT
	013227	   305 				.BYTE	PB+'E	;;STORE THE BYTE WITH THE PARITY BIT
	013230	   303 				.BYTE	PB+'C	;;STORE THE BYTE WITH THE PARITY BIT
	013231	   363 				.BYTE	PB+'s	;;STORE THE BYTE WITH THE PARITY BIT
	013232	   371 				.BYTE	PB+'y	;;STORE THE BYTE WITH THE PARITY BIT
	013233	   363 				.BYTE	PB+'s	;;STORE THE BYTE WITH THE PARITY BIT
	013234	   164 				.BYTE	PB+'t	;;STORE THE BYTE WITH THE PARITY BIT
	013235	   145 				.BYTE	PB+'e	;;STORE THE BYTE WITH THE PARITY BIT
	013236	   355 				.BYTE	PB+'m	;;STORE THE BYTE WITH THE PARITY BIT
	013237	   055 				.BYTE	PB+'-	;;STORE THE BYTE WITH THE PARITY BIT
	013240	   261 				.BYTE	PB+'1	;;STORE THE BYTE WITH THE PARITY BIT
	013241	   060 				.BYTE	PB+'0	;;STORE THE BYTE WITH THE PARITY BIT
	013242	   240 				.BYTE	PB+' 	;;STORE THE BYTE WITH THE PARITY BIT
	013243	   356 				.BYTE	PB+'n	;;STORE THE BYTE WITH THE PARITY BIT
	013244	   157 				.BYTE	PB+'o	;;STORE THE BYTE WITH THE PARITY BIT
	013245	   164 				.BYTE	PB+'t	;;STORE THE BYTE WITH THE PARITY BIT
	013246	   240 				.BYTE	PB+' 	;;STORE THE BYTE WITH THE PARITY BIT
	013247	   162 				.BYTE	PB+'r	;;STORE THE BYTE WITH THE PARITY BIT
	013250	   365 				.BYTE	PB+'u	;;STORE THE BYTE WITH THE PARITY BIT
	013251	   356 				.BYTE	PB+'n	;;STORE THE BYTE WITH THE PARITY BIT
	013252	   356 				.BYTE	PB+'n	;;STORE THE BYTE WITH THE PARITY BIT
	013253	   151 				.BYTE	PB+'i	;;STORE THE BYTE WITH THE PARITY BIT
	013254	   356 				.BYTE	PB+'n	;;STORE THE BYTE WITH THE PARITY BIT
	013255	   347 				.BYTE	PB+'g	;;STORE THE BYTE WITH THE PARITY BIT
SCH	- TASK SCHEDULER & GLOB	MACRO M1113  03-APR-86 20:41  PAGE 66-2
EXEC MODULE ONE -- NUL TASK

   2885						.DSABL LC
   2886	013256	   215 	   012 	   207 		.ASCII	<215><12><207><207><207>
	013261	   207 	   207
   2887		000043 			DWNMSZ=.-DWNMS
   2888						.EVEN
   2889	013264				SNDMSG::
   2890	013264	   001 				.BYTE	1		;  +++005 A SYSTEM DOWN MSG HAS BEEN SENT
   2891	013265	   000 				.BYTE	0		; [5.1127] HOST DEBUG NO MESSAGE FLAG
SCH	- TASK SCHEDULER & GLOB	MACRO M1113  03-APR-86 20:41  PAGE 67
EXEC MODULE TWO -- SERVICE FOR "EMT" & "TRAP" INSTRUCTIONS

   2893						.SBTTL	EXEC MODULE TWO -- SERVICE FOR "EMT" & "TRAP" INSTRUCTIONS
   2894					;
   2895					;
   2896					;	EMT INSTRUCTIONS ARE ONLY EXECUTED BY NON-INTERRUPT SERVICE ROUTINES
   2897					;
   2898					;	DIRECTIVE DISPATCH -- CONTROL IS TRANSFERRED TO A DIRECTIVE SERVICE
   2899					;	ROUTINE PER DIRECTIVE IDENTIFICATION CODE (DIC)
   2900					;
   2901					;	REGISTER DEFINITIONS ON EXIT:
   2902					;	R0 -- PC OF EMT INSTRUCTION
   2903					;	R1 -- POINTER TO WORD FOLLOWING DIC & SIZE
   2904					;	R2 -- DPB SIZE
   2905					;	R3 -- DIC (DIRECTIVE IDENTIFICATION CODE)
   2906					;	R5 -- CURRENT TASK POINTER
   2907					;
   2908		000020 			EM.DRO==20	;OFFSET TO DPB OR DPB POINTER ON STACK
   2909					;
   2910					;
   2911					;
   2912	013266	010546 			EMTTRP::MOV	R5,-(SP)	;SAVE R5 INCASE OF TRAP(SST)
   2913	013270	016605 	000002 			MOV	2(SP),R5	;=PC+2 OF EMT INSTRUCTION
   2914	013274	024527 				CMP	-(R5),(PC)+	;WAS IT A
   2915	013276	104375 				EMT	375		; DIRECTIVE ?
   2916	013300	001421 				BEQ	10$		;YES -- LEGAL DIRECTIVE REQUEST
   2917	013302	011637 	001116'			MOV	@SP,EMTSTK	;SAVE R5
   2918	013306	111516 				MOVB	@R5,@SP		;NO -- MUST SET IT UP FOR SST
   2919	013310	013705 	001006'			MOV	.CRTSK,R5	;FIND THE CURRENT TASK POINTER
   2920	013314	016505 	000016 			MOV	A.TD(R5),R5	;FIND STD ADDRESS
   2921	013320	016505 	000030 			MOV	S.SS(R5),R5	;FIND THE SST TABLE
   2922	013324	001403 				BEQ	5$		;NONE -- FORGET IT
   2923	013326					MFPS	T.RAPE(R5),R5	;IS THERE AN ENTRY IN THE TABLE?
	013326	016505 	000012 			MOV	T.RAPE(R5),R5
   2924	013332	001106 				BNE	.SSTET		;DO SST SERVICE
   2925
   2926	013334	012737 	000012 	001120'	5$:	MOV	#TN.EMT,TRPASV	;SAVE THE TERMINATION TYPE
   2927	013342	000513 				BR	CMNABT		;AND GO TO COMMON ABORT
   2928
   2929	013344				10$:				;REMOVE THE SAVED R0 -- NOT NEEDED NOW
   2930									;SAVE REGISTERS
   2931	013344	010446 				MOV	R4,-(SP)
   2932	013346	010346 				MOV	R3,-(SP)
   2933	013350	010246 				MOV	R2,-(SP)
   2934	013352	010146 				MOV	R1,-(SP)
   2935	013354	010046 				MOV	R0,-(SP)
   2936	013356	010637 	001116'			MOV	SP,EMTSTK	;SAVE EMT STACK POINTER
   2938	013362	016601 	000020 			MOV	EM.DRO(SP),R1	;FIND THE DIRECTIVE OR DIRECTIVE POINTER
   2944					;
   2945					;	IF R1 IS EVEN, IT IS ASSUMED TO BE A DPB POINTER
   2946					;	IF R1 IS ODD, IT IS ASSUMED TO BE THE FIRST WORD OF A DPB THAT
   2947					;	HAS BEEN PUSHED ONTO THE STACK.
   2948					;
   2949					;
   2950					;	TEST FOR ODD OR EVEN
   2951					;
   2952	013366	032701 	000001 			BIT	#1,R1
   2953	013372	001003 				BNE	20$
   2954					;
SCH	- TASK SCHEDULER & GLOB	MACRO M1113  03-APR-86 20:41  PAGE 67-1
EXEC MODULE TWO -- SERVICE FOR "EMT" & "TRAP" INSTRUCTIONS

   2955					;	EVEN -- R1 CONTAINS A DPB POINTER (ADDRESS).
   2956					;
   2957	013374					MFPS	@R1,R2		;FIND THE FIRST DPB WORD
	013374	011102 				MOV	@R1,R2
   2958	013376	010203 				MOV	R2,R3		;FIND THE DIRECTIVE IDENTIFICATION CODE
   2959	013400	000405 				BR	30$		;EXECUTE DIRECTIVE
   2960					;
   2961					;	ODD WORD ON STACK -- DPB IS ON THE ISSUING
   2962					;	TASK'S STACK, AND R1 CONTAINS THE FIRST DPB WORD.
   2963					;
   2964					;	SET R1 TO THE DPB ADDRESS, R2 TO THE DPB SIZE (IN WORDS),
   2965					;	R3 TO THE DIRECTIVE IDENTIFICATION CODE.
   2966					;
   2967	013402	010102 			20$:	MOV	R1,R2		;SET DPB SIZE IN R2
   2968	013404	010103 				MOV	R1,R3		;SET DIRECTIVE CODE
   2969	013406	010601 				MOV	SP,R1		;FIND THE ADDRESS OF THE DPB
   2970	013410	062701 	000020 			ADD	#EM.DRO,R1	;POINT PAST SAVED STACK
   2971	013414	042703 	177400 		30$:	BIC	#177400,R3
   2972	013420	105002 				CLRB	R2
   2973	013422	000302 				SWAB	R2		;SET SIZE IN LOW ORDER
   2974					;
   2975					;	R3 CONTAINS  THE DIRECTIVE IDENTIFICATION CODE.
   2976					; THE DIC IS AN ODD QUANTITY AND SHOULD BE IN THE RANGE
   2977					;	001-127.(MAX RANGE)
   2978					;
   2979	013424	005721 				TST	(R1)+		;ADVANCE R1 TO POINT TO THE WORD FOLLOWING
   2980									;THE FIRST WORD DPB WORD.
   2981	013426	013705 	001006'			MOV	.CRTSK,R5	;SET UP CURRENT TASK POINTER
   2982	013432	022703 	000102 			CMP	#DIRMAX,R3	;CHECK TO SEE IF LEGAL DIRECTIVE
   2983	013436	103001 				BHIS	DIROK		;OK -- LEGAL RANGE
   2984	013440	104635 			DS.99:	TRAP	DE.99		;ILLEGAL DIRECTIVE
   2985	013442	000173 	013445'		DIROK:	JMP	@DIRDPT-1(R3)	;DISPATCH TO APPROPRIATE DIRECTIVE SERVICE CODE.
   2986					;
   2987	013446	023170'			DIRDPT:	.WORD	.D.QIO	;001. -- QIO
   2988	013450	023170'				.WORD	.D.QIO	;003. -- QIO AND WAIT
   2989	013452	022316'				.WORD	.D.GLI	;005. -- GET LUN INFORMATION
   2990	013454	022212'				.WORD	.D.ASS	;007. -- ASSIGN LUN
   2991	013456	020746'				.WORD	.D.DTE	;009. -- DTE20 FUNCTIONS
   2992	013460	024310'				.WORD	.D.REQ	;011. -- REQUEST
   2993	013462	023640'				.WORD	.D.SEN	;013. -- SEND
   2994	013464	023654'				.WORD	.D.SAR	;015. -- SEND AND REQUEST
   2995	013466	024106'				.WORD	.D.REC	;017. -- RECEIVE
   2996	013470	024106'				.WORD	.D.ROE	;019. -- RECEIVE OR EXIT
   2997	013472	024106'				.WORD	.D.ROS	;021. -- RECEIVE OR SUSPEND
   2998	013474	022776'				.WORD	.D.MKT	;023. -- MARK TIME
   2999	013476	024266'				.WORD	.D.PUT	;025. -- POWER UP AST
   3000	013500	023100'				.WORD	.D.CMT	;027. -- CANCEL MARK TIME REQUESTS
   3001	013502	013440'				.WORD	DS.99	; 029. -- ILLEGAL DIRECTIVE
   3002	013504	022462'				.WORD	.D.CEF	;031. -- CLEAR EVENT FLAG
   3003	013506	022500'				.WORD	.D.SEF	;033. -- SET EVENT FLAG
   3004	013510	022516'				.WORD	.D.DSE	;035. -- DECLARE SIGNIFICANT EVENT
   3005	013512	022540'				.WORD	.D.REF	;037. -- READ EVENT FLAG
   3006	013514	022554'				.WORD	.D.RAF	;039. -- READ ALL EVENT FLAGS
   3007	013516	022600'				.WORD	.D.WFS	;041. -- WAIT FOR SINGLE EVENT FLAG
   3008	013520	022656'				.WORD	.D.WFL	;043. -- WAIT FOR LOGICAL "OR" OF EVENT FLAGS
   3009	013522	013440'				.WORD	DS.99	;045. -- SUSPEND EXECUTION -- 010 REMOVED -- ILLEGAL
   3010	013524	013440'				.WORD	DS.99	;047. -- RESUME TASK EXECUTION -- 010 REMOVED -- ILLEGAL
SCH	- TASK SCHEDULER & GLOB	MACRO M1113  03-APR-86 20:41  PAGE 67-2
EXEC MODULE TWO -- SERVICE FOR "EMT" & "TRAP" INSTRUCTIONS

   3011	013526	022764'				.WORD	.D.WSE	;049. -- WAIT FOR NEXT SIGNIFICANT EVENT
   3012	013530	023146'				.WORD	.D.EXT	;051. -- TASK EXIT
   3017	013532	013440'				.WORD	DS.99	; 053. -- ILLEGAL DIRECTIVE
   3018	013534	013440'				.WORD	DS.99	; 055. -- ILLEGAL DIRECTIVE
   3020	013536	024254'				.WORD	.D.STV	;057. -- SPECIFY SST VECTOR
   3021	013540	022346'				.WORD	.D.GTP	;059. -- GET TIME PARAMETERS
   3022	013542	013440'				.WORD	DS.99	;061. -- ILLEGAL
   3023	013544	024536'				.WORD	.D.GPP	;063. -- GET TASK PARAMETERS
   3024	013546	024660'				.WORD	.D.GMP	;065. -- GET PARTITION PARAMETERS
   3025		000102 			DIRMAX=.-DIRDPT	;LEGAL NUMBER OF DIRECTIVES
   3026					;
   3027					; .SSTET -- SST FOR TRAP AND EMT'S
   3028					;
   3029	013550				.SSTET::
   3030	013550	105066 	000001 			CLRB	1(SP)		;CLEAR HIGH BYTE
   3031	013554	006316 				ASL	@SP		;MULTIPLY BY 2
   3032	013556				.SSTCO::
   3034	013556	012746 	004000 			MOV	#004000,-(SP)	;SET PS
   3038	013562	010546 				MOV	R5,-(SP)	;SET TRAP ADDRESS
   3039	013564	013705 	001116'			MOV	EMTSTK,R5	;RESTORE R5
   3040	013570	000002 				RTI			;RETURN TO USER
   3041					;
   3042	013572	013705 	001116'		CMNABT:	MOV	EMTSTK,R5	;RESTORE R5
   3043	013576	000137 	011664'			JMP	CMNABO		;AND GO TO COMMON ABORT
   3044					;
   3045					; CONTROL IS RETUNRED TO ".DR.NS" TO EXIT DIRECTIVE SERVICE WITHOUT ALTERING
   3046					; AN ISSUING TASK'S DIRECTIVE STATUS OR CONDITION CODES.
   3047					;
   3048					; DIRECTIVE RETURN STATUSES
   3049					;
   3050		000000 			DR.00==0		;DIRECTIVE RETURN 00
   3051		000001 			DR.01==1		;DIRECTIVE RETURN 01
   3052		000002 			DR.02==2		;DIRECTIVE RETURN 02
   3053		000003 			DR.03==3		;DIRECTIVE RETURN 03
   3054					;
   3055					; DIRECTIVE ERROR RETURNS
   3056					;
   3057		000377 			DE.01==-1&377		;ERR 01
   3058		000376 			DE.02==-2&377		;ERR 02
   3059		000375 			DE.03==-3&377		;ERR 03
   3060		000374 			DE.04==-4&377		;ERR 04
   3061		000373 			DE.05==-5&377		;ERR 05
   3062		000372 			DE.06==-6&377		;ERR 06
   3063		000371 			DE.07==-7&377		;ERR 07
   3064		000370 			DE.08==-8.&377		;ERR 08
   3065		000367 			DE.09==-9.&377		;ERR 09
   3066		000366 			DE.10==-10.&377		;ERR 10
   3067		000365 			DE.11==-11.&377		;ERR 11
   3068		000260 			DE.80==-80.&377		;ERR 80
   3069		000257 			DE.81==-81.&377		;ERR 81
   3070		000246 			DE.90==-90.&377		;ERR 90
   3071		000245 			DE.91==-91.&377		;ERR 91
   3072		000244 			DE.92==-92.&377		;ERR 92
   3073		000243 			DE.93==-93.&377		;ERR 93
   3074		000242 			DE.94==-94.&377		;ERR 94
   3075		000241 			DE.95==-95.&377		;ERR 95
   3076		000240 			DE.96==-96.&377		;ERR 96
SCH	- TASK SCHEDULER & GLOB	MACRO M1113  03-APR-86 20:41  PAGE 67-3
EXEC MODULE TWO -- SERVICE FOR "EMT" & "TRAP" INSTRUCTIONS

   3077		000237 			DE.97==-97.&377		;ERR 97
   3078		000236 			DE.98==-98.&377		;ERR 98
   3079		000235 			DE.99==-99.&377		;ERR 99
   3080					;
   3081	013602	132766 	000340 	000002 	.DRSRN::BITB	#340,2(SP)	;FROM EXEC?
   3082	013610	001025 				BNE	20$		;YES -- CONTIUE
   3083	013612	011646 				MOV	@SP,-(SP)	;PUT IT ON STACK TWICE
   3084	013614	162716 	000002 			SUB	#2,@SP
   3085	013620	117616 	000000 			MOVB	@(SP),@SP
   3086	013624	010537 	001116'			MOV	R5,EMTSTK
   3087	013630	013705 	001006'			MOV	.CRTSK,R5	;FIND THE CURRENT TASK
   3088	013634	016505 	000016 			MOV	A.TD(R5),R5	;FIND STD ADDRESS
   3089	013640	016505 	000030 			MOV	S.SS(R5),R5	;IS THERE AN SST VECTOR?
   3090	013644	001403 				BEQ	10$		;NO -- CRASH
   3091	013646					MFPS	T.RAPT(R5),R5	;FIND THE ADDRESS
	013646	016505 	000014 			MOV	T.RAPT(R5),R5
   3092	013652	001336 				BNE	.SSTET		;NONE -- CRASH
   3093	013654	012737 	000014 	001120'	10$:	MOV	#TN.TRP,TRPASV	;SET TRAP TYPE
   3094	013662	000743 				BR	CMNABT		;AND GO TO COMMON ABORT
   3095					;
   3096					;
   3097	013664	162716 	000002 		20$:	SUB	#2,@SP		;FIND THE TRAP VALUE
   3098	013670	113600 				MOVB	@(SP)+,R0
   3099	013672	100006 				BPL	DRXCOM		;BRANCH IF THE DIRECTIVE SUCCEEDED
   3100	013674	013706 	001116'		DEXCOM:	MOV	EMTSTK,SP	;RESTORE STACK FOR REGISTER SAVE
   3101	013700	052766 	000001 	000016 		BIS	#1,EM.DRO-2(SP)	;SET CC-C -2(ISSUING TASK'S PS)
   3102	013706	000405 				BR	DRXRR		;---
   3103					;
   3104	013710				.DR.NS::			;RETURN NO STATUS
   3105	013710	013706 	001116'		DRXCOM:	MOV	EMTSTK,SP	;RESTORE STACK FOR REGISTER SAVE
   3106	013714	042766 	000001 	000016 		BIC	#1,EM.DRO-2(SP)	;CLEAR CC-C -2(ISSUING TASK'S PS)
   3107	013722				DRXRR:				;-----
   3108	013722	010037 	000046 			MOV	R0,$DSW		;SAVE THE DSW
   3109	013726	012600 				MOV	(SP)+,R0	;POP (RESORE) R0
   3110	013730	012601 				MOV	(SP)+,R1	;POP (RESTORE) R1
   3111	013732	012602 				MOV	(SP)+,R2	;POP (RESTORE) R2
   3112	013734	012603 				MOV	(SP)+,R3	;POP (RESTORE) R3
   3114	013736	016604 	000010 			MOV	10(SP),R4	;FIND DPB OR DPB ADDRESS
   3119	013742	106004 				RORB	R4		;ADDRESS OR DPB?
   3120	013744	103402 				BCS	10$		;DPB -- FOUND SIZE REQ'D
   3121	013746	012704 	000400 			MOV	#400,R4		;SET UP TO POP ONLY 1 WORD
   3122	013752	105004 			10$:	CLRB	R4
   3123	013754	000304 				SWAB	R4		;PUT SIZE IN LOW ORDER
   3124	013756	006304 				ASL	R4		;MAKE +2 FOR COUNT
   3126	013760	062704 	000020 			ADD	#EM.DRO,R4	;POINT TO USER STACK LOCATION
   3127	013764	063704 	001116'			ADD	EMTSTK,R4
   3133	013770	016644 	000006 			MOV	6(SP),-(R4)	;RESET STACK
   3134	013774	016644 	000004 			MOV	4(SP),-(R4)
   3135	014000	016644 	000002 			MOV	2(SP),-(R4)
   3136	014004	011644 				MOV	@SP,-(R4)
   3137	014006	010406 				MOV	R4,SP		;SET STACK POINTER
   3138					;
   3139					; A DIRECTIVE HAS BEEN PROCESSED -- IF A TASK IS CURRENT (THE ISSUING
   3140					; TASK) ITS PS, PC, R5, & R4 ARE ON THE KERNEL STACK, AND '.CRTSK' POINTS
   3141					; TO THE ATL NODE OF THAT TASK.  IF A TASK IS NOT CURRENT (ISSUING
   3142					; TASK EXIT'ED), '.CRTSK' IS SET TO ZERO.
   3143					;
SCH	- TASK SCHEDULER & GLOB	MACRO M1113  03-APR-86 20:41  PAGE 67-4
EXEC MODULE TWO -- SERVICE FOR "EMT" & "TRAP" INSTRUCTIONS

   3144					; R0 CONTAINS THE ADDRESS OF THE NEXT ATL NODE TO BE EXAMINED.
   3145					;
   3146	014010	032766 	000340 	000006 		BIT	#PRI7,+6(SP)	;IS PROCESSOR PRIORITY OF DIRECTIVE ISSUING TASK ZERO?
   3147	014016	001403 				BEQ	20$		;YES -- SCAN ATL FROM ENTRY POINTED TO BY R5.
   3148	014020	012604 				MOV	(SP)+,R4	;NO -- TASK SWITCHING HAS BEEN INHIBITED BY ISSUING TASK,
   3149	014022	012605 				MOV	(SP)+,R5	;RESTORE R4, R5, PC, & PS, AND RETURN TO ISSUING TASK.
   3150	014024	000002 				RTI			;(PRIORITY IS ZEROED IF TASK EXIT'ED.)
   3151					;
   3152					; TRANSFER CONTROL TO THE SCAN ATL ROUTINE AT PRIORITY TWO,
   3153					; PREVIOUS MODE: USER, CURRENT MODE: KERNEL, AND CC'S ZERO.
   3154					;
   3155	014026	012746 	034100 		20$:	MOV	#034100+STXAS,-(SP)
   3156	014032	012746 	014054'			MOV	#ASXE2,-(SP)
   3157	014036	000002 				RTI
SCH	- TASK SCHEDULER & GLOB	MACRO M1113  03-APR-86 20:41  PAGE 68
EXEC MODULE THREE -- SCAN OF ACTIVE TASK LIST

   3159						.SBTTL	EXEC MODULE THREE -- SCAN OF ACTIVE TASK LIST
   3160					;+
   3161					; THE ACTIVE TASK LIST (ATL) IS A PRIORITY ORDERED LIST OF TASKS THAT
   3162					; HAVE BEEN ASSIGNED MEMORY SPACE FOR EXECUTION, AND HAVE NOT EXIT'ED.
   3163					;
   3164					; THE SYSTEM IS DRIVEN BY SCANNING THE ATL FROM THE TOP (HIGH PRIORITY)
   3165					; WHETHER A TASK IS CAPABLE OF EXECUTION IS INDICATED BY THE 'A.TS'TH
   3166					; BYTE OF EACH ATL NODE (ENTRY).
   3167					;
   3168					; THE ATL IS SCANNED DOWNWARD FROM A TASK WHENEVER THAT TASK VOLUNTARILY
   3169					; STOPS EXECUTION (VIZ., WAITFOR, EXIT) AND A SIGNIFICANT
   3170					; EVENT HAS NOT BEEN DECLARED.
   3171					;
   3172					; SIGNIFICANT EVENTS ARE DECLARED BY TASKS (PRI=0) VIA SYSTEM DIRECTIVES,
   3173					; AND BY INTERRUPT SERVICE ROUTINES (PRI 4,5,6,7) VIA SYSTEM SUBROUTINES.
   3174					; A DECLARATION OF A SIGNIFICANT EVENT IS INDICATED BY THE SOFTWARE FLAG
   3175					; (BYTE) '.SERFG+0'.
   3176					;
   3177					; CONTROL IS TRANSFERRED TO THE ATL SCAN ROUTINE UNDER TWO CONDITIONS:
   3178					; (1) WHEN CONTROL IS RETURNED TO A TASK (PRI 0) VIA THE "COMMON RETURN TO
   3179					; INTERRUPTED PROGRAM" AND A SIGNIFICANT EVENT HAS BEEN DECLARED (NON-ZERO
   3180					; '.SERFG+0'), AND (2) WHEN CONTROL IS RETURNED FROM A DIRECTIVE SERVICE
   3181					; ROUTINE.
   3182					;
   3183					; THERE ARE TWO ENTRY POINTS TO THE ATL SCAN ROUTINE:
   3184					; ASXE1 -- TO SCAN THE ATL DOWNWARD FROM THE TOP.  I.E., TO EFFECT A
   3185					; DECLARATION OF A SIGNIFICANT EVENT.
   3186					;
   3187					; CONTROL IS TRANSFERRED TO 'ASXE1' FROM THE 'COMMON RETURN TO INTERRUPTED
   3188					; PROGRAM', OR FROM ATL SCAN TASK STATUS SERVICE, WHENEVER A SIGNIFICANT
   3189					; EVENT DECLARATION IS TO BE EFFECTED.
   3190					;
   3191					; ASXE2 -- TO SERVICE THE STATUS OF THE TASK WHOSE ATL NODE ADDRESS
   3192					; IS IN R5, AND THEN TO EITHER: (1) RETURN CONTROL TO THAT TASK,
   3193					; (2) SCAN THE ATL FROM THAT TASK THRU LOWER PRIORITY TASKS, OR
   3194					; (3) TO SCAN THE ATL FROM THE TOP.
   3195					;
   3196					; CONTROL IS TRANSFERRED TO 'ASXE2' FROM THE COMMON EXIT FOR DIRECTIVE
   3197					; (EMT 375) SERVICE CODE.
   3198					;
   3199					; IF A SIGNIFICANT EVENT HAS BEEN DECLARED (EITHER COINCIDENTLY OR AS
   3200					; A RESULT OF DIRECTIVE EXECUTION) CONTROL IS TRANSFERRED TO 'ASXE1'.
   3201					; HOWEVER, THE DECISION TO TRANSFER TO 'ASXE1' IS NOT MADE UNTIL THE
   3202					; "TASK STATUS SERVICE" FOR THE DIRECTIVE ISSUING TASK HAS BEEN PERFORMED.
   3203					;
   3204					; WHENEVER CONTROL IS TRANSFERRED TO THE ATL SCAN ROUTINE AND A TASK IS
   3205					; CURRENT, THE PS, PC, R5, & R4 OF THE CURRENT TASK  HAVE BEEN PUSHED
   3206					; ONTO THE  STACK.
   3207					;-
SCH	- TASK SCHEDULER & GLOB	MACRO M1113  03-APR-86 20:41  PAGE 69
EXEC MODULE THREE -- SCAN OF ACTIVE TASK LIST

   3209	014040	142737 	000001 	001014'	ASXE1::	BICB	#EV.SE,.SERFG+0	;CLEAR SIGNIFICANT EVENT FLAG, AND SET
   3210	014046	012705 	007136'			MOV	#.ATLLH,R5	;R5 TO THE ADDRESS OF THE FIRST ATL NODE.
   3211									;DISPATCH PER TASK STATUS
   3212					;
   3213					; SCAN LOOP -- AFTER PROCESSING AN ATL ENTRY, CONTROL IS TRANSFERRED EITHER:
   3214					; (1) TO 'ASXSCN' TO PROCESS THE NEXT ATL NODE, OR (2) TO 'ASXTE' TO
   3215					; TERMINATE THE ATL SCAN (A RUNABLE TASK HAS BEEN FOUND).
   3216					;
   3217					; CONTROL IS TRANSFERRED HERE FROM A ATL SCAN SERVICE ROUTINE, WITH THE
   3218					;  STACK AND R5 UNCHANGED FROM THE DISPATCH TO THAT SERVICE ROUTINE.
   3219					;
   3220	014052	011505 			ASXSCN:	MOV	@R5,R5		;ADVANCE R5 TO THE NEXT ATL NODE,
   3221	014054	116504 	000014 		ASXE2:	MOVB	A.TS(R5),R4	;DISPATCH PER ACTIVE TASK STATUS, WITH
   3222	014060	000174 	014062'			JMP	@ASXDT-02(R4)	;R0 = ATL NODE ADR & R4 = STATUS.
   3223					;
   3224	014064				ASXDT:		;STATUS DEFINITIONS & DISPATCH ADDRESS TABLE.
   3225							;
   3226							;THE DISPATCH ROUTINE AT 'ASXE2' EXPECTS THE DISPATCH TABLE
   3227							;TO BEGIN WITH STATUS "02" AND INCREASE SEQUENTIALLY BY TWOS.
   3228							;
   3229					;
   3230		000002 			TS.LRQ==02	;TASK LOAD REQEUST QUEUED
   3231	014064	014262'				ASXLRQ
   3232		000004 			TS.TKN==04	;TASK WAITING FOR TERMINATION NOTICE
   3233	014066	014052'				ASXSCN
   3234		000006 			TS.LRF==06	;TASK LOAD REQUEST FAILED
   3235	014070	014224'				ASXLRF
   3236		000010 			TS.RUN==10	;** TASK IS RUNNING
   3237	014072	014672'				ASXTE
   3238		000012 			TS.SUS==12	;** TASK IS SUSPENDED
   3239	014074	014052'				ASXSCN
   3240		000014 			TS.WF0==14	;** TASK WAITING FOR AN EVENT FLAG 1-14
   3241							;** ('TS.WF0'-'TS.WS4' ARE EXPECTED IN SEQUENCE
   3242							;** BY THE WAITFOR DIRECTIVES.)
   3243	014076	014112'				ASXWR0
   3244		000016 			TS.WF1==16	;** TASK WAITING FOR AN EVENT FLAG 17-32
   3245	014100	014122'				ASXWR1
   3246		000020 			TS.WF2==20	;** TASK WAITING FOR AN EVENT FLAG 33-48
   3247	014102	014132'				ASXWR2
   3248		000022 			TS.WF3==22	;** TASK WAITING FOR AN EVENT FLAG 49-64
   3249	014104	014142'				ASXWR3
   3250		000024 			TS.WF4==24	;** TASK WAITING FOR AN EVENT FLAG 1-64
   3251	014106	014152'				ASXWR4
   3252		000026 			TS.EXT==26	;TASK EXITED
   3253	014110	014400'				ASXEXT
SCH	- TASK SCHEDULER & GLOB	MACRO M1113  03-APR-86 20:41  PAGE 70
EXEC MODULE THREE -- SCAN OF ACTIVE TASK LIST

   3255					;
   3256					; SERVICE FOR "WAITFOR" TASK STATUSES
   3257					;
   3258					; A TASK (THE TASK WHOSE ATL NODE IS POINTED TO BY R5) HAS ISSUED A
   3259					; WAITFOR DIRECTIVE.  IF ANY INDICATED EVENT FLAG IS SET, CHANGE TASK'S
   3260					; TO "RUNNING", AND TERMINATE ATL SCAN TO RUN THE TASK.
   3261					;
   3262					; TASK IS WAITING FOR INDICATED FLAG(S) IN RANGE ZERO (FLAGS 1-16)
   3263					;
   3264	014112	036565 	000024 	000020 	ASXWR0:	BIT	A.FM+0(R5),A.EF+0(R5)
   3265	014120	000433 				BR	ASXCMN
   3266					;
   3267					; TASK IS WAITING FOR INDICATED FLAG(S) IN RANGE ONE (FLAGS 17-32)
   3268					;
   3269	014122	036565 	000024 	000022 	ASXWR1:	BIT	A.FM+0(R5),A.EF+2(R5)
   3270	014130	000427 				BR	ASXCMN
   3271					;
   3272					; TASK IS WAITING FOR INDICATED FLAG(S) IN RANGE TWO (FLAGS 33-48)
   3273					;
   3274	014132	036537 	000024 	001010'	ASXWR2:	BIT	A.FM+0(R5),.COMEF+0
   3275	014140	000423 				BR	ASXCMN
   3276					;
   3277					; TASK IS WAITING FOR INDICATED FLAG(S) IN RANGE THREE (FLAGS 49-64)
   3278					;
   3279	014142	036537 	000024 	001012'	ASXWR3:	BIT	A.FM+0(R5),.COMEF+2
   3280	014150	000417 				BR	ASXCMN
   3281					;
   3282					; TASK IS WAITING FOR INDICATED FLAG(S) IN RANGE FOUR (FLAGS 1-64)
   3283					;
   3284	014152	036565 	000024 	000020 	ASXWR4:	BIT	A.FM+0(R5),A.EF+0(R5)
   3285	014160	001014 				BNE	WFXSET
   3286	014162	036565 	000026 	000022 		BIT	A.FM+2(R5),A.EF+2(R5)
   3287	014170	001010 				BNE	WFXSET
   3288	014172	036537 	000030 	001010'		BIT	A.FM+4(R5),.COMEF+0
   3289	014200	001004 				BNE	WFXSET
   3290	014202	036537 	000032 	001012'		BIT	A.FM+6(R5),.COMEF+2
   3291	014210	001720 			ASXCMN:	BEQ	ASXSCN
   3292	014212				WFXSET:
   3293	014212	112765 	000010 	000014 		MOVB	#TS.RUN,A.TS(R5)
   3294	014220	000137 	014672'			JMP	ASXTE
SCH	- TASK SCHEDULER & GLOB	MACRO M1113  03-APR-86 20:41  PAGE 71
EXEC MODULE THREE -- SCAN OF ACTIVE TASK LIST

   3296					;
   3297					; SERVICE FOR TASK STATUS: LOAD REQUEST FAILED
   3298					;
   3299	014224	012765 	000040 	000024 	ASXLRF:	MOV	#TN.LRF,A.FM+0(R5) ;SET LOAD REQUEST FAILURE
   3300	014232	112765 	000004 	000014 		MOVB	#TS.TKN,A.TS(R5) ;SET TERMINATION NOTICE REQUESTED
   3301	014240	005237 	001124'			INC	.TKTN		;REQUEST TASK TERMINATION
   3302	014244	026527 	000006 	010022'		CMP	A.PD(R5),#F11TPD ;F11  TPD PARTITION?
   3303	014252	001300 				BNE	ASXE2		;NO -- CONTINUE
   3304	014254					.CRASH	LRF		;LOAD REQUEST FAILURE
	014254	000004 				IOT
	014256	   114 	   122 	   106 		.ASCIZ	/LRF/
	014261	   000
SCH	- TASK SCHEDULER & GLOB	MACRO M1113  03-APR-86 20:41  PAGE 72
EXEC MODULE THREE -- SCAN OF ACTIVE TASK LIST

   3306					;
   3307					; SERVICE FOR TASK REQUEST QUEUE'D SERVICE
   3308					;
   3309	014262	006265 	000020 		ASXLRQ:	ASR	A.EF+0(R5)	;CHECK FOR REQUEST TO LOAD DONE
   3310	014266	103271 				BCC	ASXSCN		;NO -- CONTINUE TO WAIT
   3311	014270	105765 	000030 			TSTB	A.FM+4(R5)	;DID THE I/O SUCCEED?
   3312	014274	100753 				BMI	ASXLRF		;NO -- COMPLAIN
   3313	014276	112765 	000010 	000014 		MOVB	#TS.RUN,A.TS(R5) ;SET THE TASK STATUS TO RUNNING
   3314	014304	016504 	000012 			MOV	A.HA(R5),R4	;FIND THE HEADER ADDRESS
   3321	014310	016446 	000106 			MOV	H.TKVA(R4),-(SP) ;SAVE THE SST ADDRESS
   3322	014314	016446 	000076 			MOV	H.IPC(R4),-(SP)	;SAVE INITIAL PC
   3323	014320	016446 	000074 			MOV	H.IPS(R4),-(SP)	;SAVE INITIAL PS
   3324	014324	016446 	000130 			MOV	H.LUT(R4),-(SP)	;FIND OVERLAY LUN
   3325	014330	006316 				ASL	@SP		;MAKE OFFSET
   3326	014332	006316 				ASL	@SP
   3327	014334	062716 	000126 			ADD	#H.LUT-2,@SP	;POINT TO START OF LUT
   3328	014340	060416 				ADD	R4,@SP		;POINT TO CORRECT LUT
   3329	014342	016536 	000022 			MOV	A.EF+2(R5),@(SP)+ ;SET LUT
   3330	014346	016404 	000100 			MOV	H.ISP(R4),R4	;FIND INITIAL STACK
   3331	014352	012644 				MOV	(SP)+,-(R4)	;STORE THE PS
   3332	014354	012644 				MOV	(SP)+,-(R4)	;STORE THE PC
   3333	014356	162704 	000014 			SUB	#14,R4		;INCLUDE REGISTER SAVE
   3334	014362	010465 	000004 			MOV	R4,A.SP(R5)	;SET STACK VALUE
   3335	014366	016504 	000016 			MOV	A.TD(R5),R4	;FIND THE STD ADDRESS
   3336	014372	012664 	000030 			MOV	(SP)+,S.SS(R4)	;SET SST ADDRESS
   3337	014376	000535 				BR	ASXTE		;GO TO START THE TASK
SCH	- TASK SCHEDULER & GLOB	MACRO M1113  03-APR-86 20:41  PAGE 73
EXEC MODULE THREE -- SCAN OF ACTIVE TASK LIST

   3339					;
   3340					; SERVICE FOR TASK STATUS: EXIT
   3341					;
   3342	014400	010446 			ASXEXT:	MOV	R4,-(SP)
   3343	014402	010346 				MOV	R3,-(SP)
   3344	014404	010246 				MOV	R2,-(SP)
   3345	014406	010146 				MOV	R1,-(SP)
   3346	014410	010046 				MOV	R0,-(SP)
   3347	014412	016502 	000016 			MOV	A.TD(R5),R2	;FIND THE STD ADDRESS
   3348	014416	016500 	000006 			MOV	A.PD(R5),R0	;FIND THE TPD ADDRESS
   3349	014422	042762 	000001 	000006 		BIC	#SF.TA,S.FW(R2)	;CLEAR ACTIVE FLAG IN STD
   3350	014430				10$:
   3351	014430	032762 	000002 	000006 		BIT	#SF.FX,S.FW(R2)	;CHECK TO SEE IF TASK FIXED
   3352	014436	001003 				BNE	20$		;YES -- DON'T FREE CORE
   3353					;
   3354					;
   3355					; FREE MEMORY (AND POSSIBLY START TASK WAITING FOR MEMORY) AND RETURN
   3356					; ATL NODE TO POOL.
   3357					;
   3358	014440	042760 	000002 	000010 		BIC	#TF.OU,T.FW(R0) ;RELEASE PARTITION
   3359					;
   3360					;
   3361	014446	010504 			20$:	MOV	R5,R4		;POINT R5 TO THE NEXT LOWEST PRIORITY TASK'S
   3362	014450	010501 				MOV	R5,R1		;ATL NODE, DELETE NODE FROM ATL, AND RETURN
   3363	014452	011505 				MOV	@R5,R5		;IT TO THE POOL.
   3364	014454					CALL	..NDEL
	014454	004737 	045320'			JSR	PC,..NDEL
   3365	014460	012704 	001432'			MOV	#.POLLH,R4	;RETURN THE NODE TO THE POOL
   3366	014464					CALL	..NADD
	014464	004737 	045434'			JSR	PC,..NADD
   3367	014470	032762 	000004 	000006 		BIT	#SF.EX,S.FW(R2)	;HAS THE TASK BEEN REQUESTED TO EXIT?
   3368	014476	001426 				BEQ	50$		;NO -- JUST CONTINUE
   3369	014500	010046 				MOV	R0,-(SP)	;SAVE R0 (TPD ADDRESS)
   3370	014502	013700 	006364'			MOV	.STDTA,R0	;FIND THE HEAD OF THE STD LIST
   3371	014506	013703 	006370'			MOV	.STDTZ,R3	;FIND THE SIZE OF THE LIST
   3372	014512	162737 	000002 	006370'		SUB	#2,.STDTZ	;RESET THE SIZE FOR NOW IT IS SMALLER
   3373	014520	006203 				ASR	R3		;DIVIDE BY 2
   3374	014522	005203 				INC	R3		;MAKE 1 LARGER BECAUSE IT IS 2*N-2
   3375	014524	020210 			30$:	CMP	R2,@R0		;THE CORRECT ENTRY?
   3376	014526	001403 				BEQ	40$		;YES -- FOUND IT
   3377	014530	005720 				TST	(R0)+		;NO -- CONTINUE SEARCH
   3378	014532	005303 				DEC	R3		;CONTINUE SCAN
   3379	014534	000773 				BR	30$
   3380					;
   3381	014536	016020 	000002 		40$:	MOV	2(R0),(R0)+	;MOVE ENTRIES BACK
   3382	014542	077303 				SOB	R3,40$		;UNTIL DONE
   3383	014544	010201 				MOV	R2,R1		;RETURN NODE TO POOL
   3384									;NOTE -- R4 STILL POINTS TO .POLLH
   3385									;FROM ABOVE RETURN OF ATL!!!!!
   3386	014546					CALL	..NADD		;RETURN NODE
	014546	004737 	045434'			JSR	PC,..NADD
   3387	014552	012600 				MOV	(SP)+,R0	;RESTORE R0
   3388	014554	032760 	000002 	000010 	50$:	BIT	#TF.OU,T.FW(R0)	;CHECK FOR PARTITION OCCUPIED
   3389	014562	001025 				BNE	60$		;YES -- DON'T TRY TO START TASK
   3390	014564	010004 				MOV	R0,R4		;SET UP TO PICL A NODE FROM MRL
   3391	014566	062704 	000014 			ADD	#T.RF,R4	;POINT TO MRL
   3392	014572					CALL	..PICK		;PICK NODE
SCH	- TASK SCHEDULER & GLOB	MACRO M1113  03-APR-86 20:41  PAGE 73-1
EXEC MODULE THREE -- SCAN OF ACTIVE TASK LIST

	014572	004737 	045476'			JSR	PC,..PICK
   3393	014576	103417 				BCS	60$		;NONE FOUND -- DON'T ATTEMPT TO START
   3394	014600	010401 				MOV	R4,R1		;SAVE THE NODE ADDRESS FOUND
   3395	014602	022424 				CMP	(R4)+,(R4)+	;POINT TO THE ENTRIES IN THE NDOE
   3396	014604	012402 				MOV	(R4)+,R2	;SET UP TO CALL .REQS
   3397	014606	012403 				MOV	(R4)+,R3
   3398	014610	012446 				MOV	(R4)+,-(SP)	;PUSH PRI
   3399	014612	012704 	001432'			MOV	#.POLLH,R4	;RETURN THE NODE TO THE POOL
   3400	014616					CALL	..NADD		;RETURN NODE
	014616	004737 	045434'			JSR	PC,..NADD
   3401	014622	012604 				MOV	(SP)+,R4	;GET THE PRIORITY
   3402	014624	042762 	000001 	000006 		BIC	#SF.TA,S.FW(R2) ;CLEAR TASK ACTIVE FLAGS
   3403	014632					CALL	.REQS		;REQUEST THE TASK
	014632	004737 	015276'			JSR	PC,.REQS
   3404					;
   3405	014636	012600 			60$:	MOV	(SP)+,R0	;POP (RESTORE) R0,R2,R1
   3406	014640	012601 				MOV	(SP)+,R1
   3407	014642	012602 				MOV	(SP)+,R2
   3408	014644	012603 				MOV	(SP)+,R3
   3409	014646	012604 				MOV	(SP)+,R4
   3410					;
   3411					; IF EXITING TASK IS NOT "CURRENT", ITS CONTEXT IS STORED IN ITS STACK.
   3412					; IF EXITING TASK IS "CURRENT", ITS PS, PC, R5, & R4 ARE STORED ON THE
   3413					;  STACK AND THE REMAINDER OF ITS CONTEXT IS LOADED.
   3414					;
   3415					; R1 CONTAINS THE ADDRESS OF THE ATL NODE (WHICH HAS BEEN RETURNED TO THE
   3416					; POOL) OF THE EXITING TASK.
   3417					;
   3418	014650	020537 	001006'			CMP	R5,.CRTSK	;IF EXITING TASK IS "CURRENT", REMOVE (POP)
   3419	014654	001004 				BNE	70$		;ITS R4, R5, PC, & PS FROM THE  STACK
   3420	014656	062706 	000010 			ADD	#8.,SP		;(POP)
   3421	014662	005037 	001006'			CLR	.CRTSK
   3422	014666				70$:
   3423	014666	000137 	014054'			JMP	ASXE2		;DISPATCH PER STATUS OF TASK POINTED TO BY R5.
SCH	- TASK SCHEDULER & GLOB	MACRO M1113  03-APR-86 20:41  PAGE 74
EXEC MODULE THREE -- SCAN OF ACTIVE TASK LIST

   3425					;
   3426					; TERMINATION OF ATL SCAN -- A TASK THAT CAN BE RUN HAS BEEN FOUND
   3427					;
   3428					; CONTROL IS TRANSFERRED HERE WITH THE PS, PC, R5, & R4 OF THE CURRENT
   3429					; TASK PUSHED ONTO THE  STACK.
   3430					;
   3431					; CONTROL IS TRANSFERRED HERE EITHER BY DIRECT DISPATCH, OR FROM AN ATL
   3432					; SCAN SERVICE ROUTINE.  IN EITHER CASE, THE  STACK AND R5 ARE
   3433					; UNCHANGED FROM THE LAST ATL SCAN DISPATCH.
   3434	014672	020537 	001006'		ASXTE:	CMP	R5,.CRTSK	;IS CONTROL RETURNING TO CURRENT TASK?
   3435	014676	001461 				BEQ	CSDONE		;YES -- RESTORE R5, R4, PS, & PC FROM STACK
   3436	014700	132737 	000001 	001014'		BITB	#EV.SE,.SERFG+0	;NO -- HAS A SIGNIFICANT EVENT OCCURRED?
   3437	014706	001402 				BEQ	10$
   3438	014710	000137 	014040'			JMP	ASXE1		;YES -- RESTART ATL SCAN
   3439
   3440	014714	112737 	000340 	177776 	10$:	MOVB	#340,@#PS	;INHIBIT INTERRUPTS WHILE CONTEXT SWITCHING
   3441	014722	013704 	001006'			MOV	.CRTSK,R4	;NO -- IS THERE A CURRENT TASK?
   3442	014726	001420 				BEQ	40$		;NO -- (CURRENT TASK EXITED) NO CONTEXT TO SAVE
   3443									;YES -- SAVE CONTEXT OF OLD CURRENT TASK, AND
   3444									;LOAD CONTEXT OF NEW CURRENT TASK.
   3445
   3447	014730	010346 				MOV	R3,-(SP)	;PUSH R3
   3448	014732	010246 				MOV	R2,-(SP)	;PUSH R2
   3449	014734	010146 				MOV	R1,-(SP)	;PUSH R1
   3450	014736	010046 				MOV	R0,-(SP)	;PUSH R0
   3451	014740	016400 	000012 			MOV	A.HA(R4),R0	;FIND THE HEADER ADDRESS
   3458	014744	062700 	000046 			ADD	#H.DSW,R0	;POINT TO DSW
   3459	014750	012701 	000046 			MOV	#$DSW,R1	;POINT TO DSW
   3460	014754	012120 				MOV	(R1)+,(R0)+	;SAVE THE CONTEXT OF LOW CORE
   3461	014756	012120 				MOV	(R1)+,(R0)+
   3462	014760	012120 				MOV	(R1)+,(R0)+
   3463	014762	011110 				MOV	@R1,@R0
   3464	014764	010664 	000004 			MOV	SP,A.SP(R4)	;SAVE OLD PS
   3465	014770	016506 	000004 		40$:	MOV	A.SP(R5),SP	;SET UP NEW STACK
   3466	014774	016500 	000012 			MOV	A.HA(R5),R0	;RESTORE CONTEXT
   3473	015000	062700 	000054 			ADD	#H.DSW+6,R0	;POINT TO DSW SAVE
   3474	015004	012701 	000054 			MOV	#$DSW+6,R1
   3475	015010	011011 				MOV	@R0,@R1
   3476	015012	014041 				MOV	-(R0),-(R1)
   3477	015014	014041 				MOV	-(R0),-(R1)
   3478	015016	014041 				MOV	-(R0),-(R1)
   3479	015020	012600 				MOV	(SP)+,R0	;RESTORE REGISTERS FROM THE IS TASK
   3480	015022	012601 				MOV	(SP)+,R1
   3481	015024	012602 				MOV	(SP)+,R2
   3482	015026	012603 				MOV	(SP)+,R3
   3484
   3521
   3522	015030	010537 	001006'			MOV	R5,.CRTSK	;SET NEW '.CRTSK' (ATL NODE ADR OF CURRENT TASK).
   3523	015034	142737 	000300 	177776 		BICB	#300,@#PS	;LOWER TO PRI 1 AFTER CONTEXT SWITCH
   3524
   3525	015042				CSDONE:		;CONTEXT SWITCH (IF REQUIRED) IS DONE.
   3527	015042	052766 	004000 	000006 		BIS	#4000,6(SP)	;SET REG SET 1
   3528	015050	042766 	170000 	000006 		BIC	#170000,6(SP)	;CLEAR OFF MODE BITS
   3530					;
   3531					; A TASK'S PS, PC, R5, & R4 ARE ON THE  STACK, AND THE TASK'S ATL
   3532					; NODE ADDRESS IS IN R5.  I.E., CONDITIONS ARE CORRECT FOR AN ATL SCAN
   3533					;
SCH	- TASK SCHEDULER & GLOB	MACRO M1113  03-APR-86 20:41  PAGE 74-1
EXEC MODULE THREE -- SCAN OF ACTIVE TASK LIST

   3534					;
   3535					; IF THE TASK'S STATUS IS "RUNNING", CONTROL IS RETURNED TO THE TASK
   3536					; (UNLESS A SIGNIFICANT EVENT HAS BEEN DECLARED, IN WHICH CASE, CONTROL
   3537					; WILL BE RETURNED LATER).
   3538					;
   3539					;
   3540	015056	012604 				MOV	(SP)+,R4	;POP (RESTORE) R4
   3541	015060	012605 				MOV	(SP)+,R5	;POP (RESTORE) R5
   3542					;
   3543					; TRANSFER CONTROL TO TASK VIA COMMON "RETURN TO INTERRUPTED PROGRAM"
   3544					; ROUTINE (CLOCK AND/OR EVENT RECOGNITION MAY CAUSE ACTUAL TRANSFER TO
   3545					; OCCUR LATER IN REAL TIME).
   3546					;
   3547					;	BR	..INTX
   3548						;
SCH	- TASK SCHEDULER & GLOB	MACRO M1113  03-APR-86 20:41  PAGE 75
EXEC MODULE NINE -- COMMON RETURN TO INTERRUPTED PROGRAM

   3550						.SBTTL	EXEC MODULE NINE -- COMMON RETURN TO INTERRUPTED PROGRAM
   3551					;
   3552					; MOST INTERRUPT SERVICE ROUTINES ARE CONTAINED WITHIN I/O HANDLER TASKS
   3553					; CONTROL IS TRANSFERRED TO A TASK CONTAINED INTERRUPT SERVICE ROUTINE,
   3554					; WHEN THE INTERRUPT SERVICE ROUTINE WAS "CONNECTED" TO THE INTERRUPT.
   3555					;
   3556					; CONTROL IS TRANSFERRED TO A TASK CONTAINED INTERRUPT SERVICE ROUTINE
   3557					; WITH THE INTERRUPTED PROGRAM'S PS & PC,
   3558					;
   3559					; ALL TASK CONTAINED INTERRUPT SERVICE ROUTINES EXIT VIA "JMP ..INTX" WITH
   3560					; PS & PC OF THE INTERRUPTED PROGRAM
   3561					;
   3562					; THE '..INTX' ROUTINE  EFFECTS A RETURN OF CONTROL
   3563					; TO THE INTERRUPTED PROGRAM.
   3564					;
   3565					; WITH THE PS & PC OF THE INTERRUPTED PROGRAM ON THE  STACK.
   3566					;
   3567					; THE 'EXINTX' ROUTINE EFFECTS A RETURN TO THE INTERRUPTED PROGRAM.
   3568					;
   3569					; WHENEVER CONTROL IS RETURNED TO OTHER THAN A TASK (NON-ZERO PRI),
   3570					; CONTROL IS TRANSFERRED DIRECTLY TO THE INTERRUPTED PROGRAM.  HOWEVER,
   3571					; WHEN CONTROL IS BEING RETURNED TO A TASK (PRI=0), THE "SYSTEM
   3572					; EVENT RECOGNITION FLAG" IN THE SYSTEM COMMUNICANTIONS AREA (SCOM) IS
   3573					; EXAMINED, AND IF FOUND NON-ZERO, THE INDICATED EVENTS ARE RECOGNIZED
   3574					; BEFORE CONTROL IS RETURNED TO THE INTERRUPTED TASK.
   3575					;
   3576
   3577	015062				..INTX::			;NORMAL ISR EXIT
   3578	015062	052737 	000340 	177776 		BIS	#000340,@#PS	;;;INHIBIT INTERRUPTS (RAISE PRIORITY TO 7)
   3579	015070	032766 	000340 	000002 		BIT	#000340,+2(SP)	;;;IS CONTROL RETURNING TO A TASK (PRI=0)?
   3580	015076	001010 				BNE	CRTNXA		;;;YES -- EXAMINE SYSTEM EVENT RECOGNITION FLAG
   3581
   3582	015100	005737 	001026'			TST	.PFAIL		;;;POWER FAIL SERVICE?
   3583	015104	001402 				BEQ	CRTNX1		;;;NO -- JUST RETURN
   3584	015106	000137 	020164'			JMP	.PWRDN		;;;YES -- POWER DOWN
   3585
   3586	015112	005737 	001014'		CRTNX1:	TST	.SERFG		;;;** ANY UNRECOGNIZED "SYSTEM EVENTS"?
   3587	015116	001001 				BNE	CRTNX3		;;;** YES -- TRANSFER CONTROL TO APPROPRIATE
   3588									;;;** EVENT RECOGNITON ROUTINE.
   3589	015120				CRTNXA:
   3590					;	CMP	.DBRTT,SP	;;;** ## NO -- IS CONTROL RETURNING FROM SYSTEM
   3591					;	BNE	10$		;;;** ## TRACE DEBUGGING ROUTINE?
   3592					;	CLR	.DBRTT		;;;** ## YES -- RETURN VIA "RTT" INSTEAD OF "RTI"
   3593					;	RTT			;;;** ##
   3594	015120				10$:				;;;** ##
   3595	015120	000002 			CRTNX2:	RTI			;;;** NO -- RETURN CONTROL TO TASK
   3596
   3597									;** A RACE CONDITION EXISTS WHENEVER A
   3598									;POWER FAILURE OCCURS WHILE EXECUTING
   3599									;BETWEEN 'CRTNX1' AND 'CRTNX2'.  TO
   3600									;AVOID THIS CONDITION, THE POWER FAIL
   3601									;TRAP SERVICE ROUTINE SETS THE PC TO
   3602									;'CRTNX1' WHENEVER IT INTERRUPTS EXECUTION
   3603									;IN THE RANGE 'CRTNX1' THRU 'CRTNX2'.
   3604					;
   3605					; A SYSTEM EVENT IS TO BE RECOGNIZED (NON-ZERO '.SERFG'), CONTROL IS
   3606					; TRANSFERRED TO SERVICE ROUTINE PER '.SERFG'
SCH	- TASK SCHEDULER & GLOB	MACRO M1113  03-APR-86 20:41  PAGE 75-1
EXEC MODULE NINE -- COMMON RETURN TO INTERRUPTED PROGRAM

   3607					;   PRI=2, CONDITION CODES CLEARED, AND THE
   3608					; INTERRUPTED TASK'S PS, PC, R5 & R4 PUSHED ONTO THE  STACK.
   3609					;
   3610	015122	010546 			CRTNX3:	MOV	R5,-(SP)	;;;PUSH R5
   3611	015124	010446 				MOV	R4,-(SP)	;;;PUSH R4
   3612
   3613	015126	012746 	034100 			MOV	#034100,-(SP)
   3614	015132	105737 	001015'			TSTB	.SERFG+1	;;;UN-RECOGNIZED CLOCK TICK(S)?
   3615	015136	001403 				BEQ	10$		;;;
   3616						 			;;;YES -- RECOGNIZE CLOCK TICKS (NORMALLY
   3617	015140	012746 	025012'			MOV	#.TICK,-(SP)	;;;ONLY ONE)
   3618	015144	000002 				RTI			;;;
   3619	015146	132737 	000201 	001014'	10$:	BITB	#EV.SE!EV.PF,.SERFG+0	;;;NO -- SIGNIFICANT EVENT RECOGNITION?
   3620	015154	100437 				BMI	60$			;;;OR POWER FAIL
   3621	015156	001403 				BEQ	30$		;;;
   3622						 			;;;YES -- SCAN ATL FROM THE TOP
   3623	015160	012746 	014040'		20$:	MOV	#ASXE1,-(SP)	;;;
   3624	015164	000002 				RTI			;;;
   3625
   3626	015166	132737 	000002 	001014'	30$:	BITB	#EV.AS,.SERFG+0	;;;AST?
   3627	015174	001435 				BEQ	70$		;;;YIPES -- GOOFED AND SYSTEM BROKEN
   3628	015176	010316 				MOV	R3,@SP		;;;SAVE CONTEXT
   3629	015200	010246 				MOV	R2,-(SP)
   3630	015202	010146 				MOV	R1,-(SP)
   3631	015204	010046 				MOV	R0,-(SP)
   3635	015206	012746 	004000 			MOV	#004000,-(SP)
   3637	015212	013746 	001050'			MOV	.CKASS,-(SP)	;;;SET AST ADDRESS
   3638	015216	001411 				BEQ	50$		;;;NOT THIS TYPE
   3639	015220	005037 	001050'			CLR	.CKASS		;;;CLEAR THIS FOR NEXT TIME
   3640	015224	005737 	001052'			TST	.PFASS		;;;POWER FAIL ALSO?
   3641	015230	001334 				BNE	CRTNX3		;;;YES -- BETTER DO IT TOO
   3642	015232	142737 	000002 	001014'	40$:	BICB	#EV.AS,.SERFG+0	;;;CLEAR THIS FLAG
   3643	015240	000002 				RTI			;;;RETURN TO USER
   3644
   3645	015242	013716 	001052'		50$:	MOV	.PFASS,@SP	;;;SET UP POWER FAIL AST
   3646	015246	005037 	001052'			CLR	.PFASS		;;;CLEAR POWER FAIL AST ADDRESS
   3647	015252	000767 				BR	40$		;;;AND RETURN TO USER
   3648
   3649	015254	142737 	000200 	001014'	60$:	BICB	#EV.PF,.SERFG+0	;;;CLEAR POWER FAIL FLAG
   3650	015262					CALL	.PFRST		;;;POWER FAIL RESTART
	015262	004737 	020522'			JSR	PC,.PFRST
   3651	015266	000734 				BR	20$		;;;RETURN
   3652
   3653	015270				70$:	.CRASH	IAS		;;;CRASH SYSTEM UNKNOWN SIG EVENT
	015270	000004 				IOT
	015272	   111 	   101 	   123 		.ASCIZ	/IAS/
	015275	   000
SCH	- TASK SCHEDULER & GLOB	MACRO M1113  03-APR-86 20:41  PAGE 76
EXEC MODULE NINE -- COMMON RETURN TO INTERRUPTED PROGRAM

   3655					;
   3656					;  .REQS -- SUBROUTINE TO ATTEMPT TO MAKE A TASK ACTIVE
   3657					;
   3658					; ENTRY CONDITIONS:
   3659					;
   3660					;	R2 -- STD ENTRY ADDRESS (TASK ID ) OF REQUESTED TASK
   3661					;	R3 -- TPD ENTRY ADDRESS, OR ZERO (DEFAULT PARTITION) , FOR REQUESTED TASK
   3662					;	R4 -- RUN PRIORITY, OR ZERO (DEFAULT PRIORITY), FOR REQUESTED TASK
   3663					;
   3664					;  CALLING SEQUENCE:
   3665					;
   3666					;	CALL	.REQS
   3667					;
   3668					;   EXIT CONDITIONS:
   3669					;
   3670					;	R2=00 -- TASK MADE ACTIVE
   3671					;	R2=02 -- TASK NOT MADE ACTIVE, TASK ALREADY ACTIVE
   3672					;	R2=06 -- TASK NOT MADE ACTIVE, INSUFFICIENT POOL NODE(S)
   3673					;
   3674					;	REGISTERS ALTERED:
   3675					;	R0,R1,R2,R3,R4
   3676					;
   3677					;
   3678	015276	032762 	000001 	000006 	.REQS::	BIT	#SF.TA,S.FW(R2)	;IS TASK ACTIVE?
   3679	015304	001403 				BEQ	10$		;NO -- IT IS LEGAL TO ACTIVATE IT
   3680	015306	012702 	000002 			MOV	#2,R2		;YES -- RETURN +2
   3681	015312					RETURN
	015312	000207 				RTS	PC
   3682
   3683	015314	005703 			10$:	TST	R3		;CHECK THE PARTITION
   3684	015316	001002 				BNE	20$		;PARTITION SPECIFIED
   3685	015320	016203 	000004 			MOV	S.TD(R2),R3	;PARTITION NOT SPECIFIED -- USE DEFAULT
   3686	015324	005704 			20$:	TST	R4		;PRIORITY?
   3687	015326	001002 				BNE	30$		;YES -- DON'T USE DEFAULT
   3688	015330	156204 	000010 			BISB	S.DP(R2),R4	;FIND THE DEFAULT PRIORITY
   3689	015334	010446 			30$:	MOV	R4,-(SP)	;SAVE PRI
   3690	015336	010346 				MOV	R3,-(SP)	;SAVE TPD
   3691	015340	012704 	001432'			MOV	#.POLLH,R4	;PICK AN ATL NODE
   3692	015344					CALL	..PICK
	015344	004737 	045476'			JSR	PC,..PICK
   3693	015350	103004 				BCC	50$		;GOT NODE
   3694	015352	022626 			40$:	CMP	(SP)+,(SP)+	;REMOVE SAVED TPD AND PRI
   3695	015354	012702 	000006 			MOV	#6,R2		;COMPLAIN NO NODES AVAILABLE
   3696	015360					RETURN			;RETURN TO CALLER
	015360	000207 				RTS	PC
   3697
   3698	015362	032762 	000002 	000006 	50$:	BIT	#SF.FX,S.FW(R2)	;FIXED IN CORE?
   3699	015370	001436 				BEQ	70$		;NO -- MUST READ THE TASK IN
   3700	015372	010401 				MOV	R4,R1		;SAVE NODE ADDRESS
   3701	015374	016204 	000022 			MOV	S.SP(R2),R4	;SET UP STACK
   3702	015400	062704 	000014 			ADD	#14,R4		;SET POINTER TO PC
   3703	015404	016224 	000020 			MOV	S.PC(R2),(R4)+	;SET PC
   3704	015410	012724 	174000 			MOV	#174000,(R4)+	;SET UP PS
   3705	015414	012703 	000010 			MOV	#TS.RUN,R3	;SET UP TO START TASK
   3706	015420	010104 			60$:	MOV	R1,R4		;SAVE THE ATL NODE ADDRESS
   3707	015422	022424 				CMP	(R4)+,(R4)+	;MOVE OVER LISTHEAD
   3708	015424	016224 	000022 			MOV	S.SP(R2),(R4)+	;SET INITIAL STACK POINTER
SCH	- TASK SCHEDULER & GLOB	MACRO M1113  03-APR-86 20:41  PAGE 76-1
EXEC MODULE NINE -- COMMON RETURN TO INTERRUPTED PROGRAM

   3709	015430	012624 				MOV	(SP)+,(R4)+	;SET UP TPD AND PRI
   3710	015432	012624 				MOV	(SP)+,(R4)+
   3711	015434	016224 	000012 			MOV	S.BA(R2),(R4)+	;SET BASE ADDRESS
   3712	015440	010324 				MOV	R3,(R4)+	;SET RUN STATE
   3713	015442	010224 				MOV	R2,(R4)+	;SET STD NODE ADDRESS
   3714	015444	005024 				CLR	(R4)+
   3715	015446	005064 	000012 			CLR	A.PF-A.EF-2(R4)	;CLEAR POWER FAIL AST ADDRESS
   3716	015452	052762 	000001 	000006 		BIS	#SF.TA,S.FW(R2)	;SET TASK ACTIVE
   3717	015460	012702 	007136'			MOV	#.ATLLH,R2	;INSERT NODE INTO ATL
   3718	015464	000535 				BR	120$
   3719
   3720	015466	032763 	000002 	000010 	70$:	BIT	#TF.OU,T.FW(R3)	;PARTITION BUSY?
   3721	015474	001116 				BNE	110$		;YES -- BETER PUT IN MRL
   3722	015476	010446 				MOV	R4,-(SP)	;SAVE NODE ADDRESS OF ATL NODE
   3723	015500	012701 	000040 			MOV	#32.,R1		;PICK AN I/O NODE
   3724	015504					CALL	..ALCB
	015504	004737 	045654'			JSR	PC,..ALCB
   3725	015510	010004 				MOV	R0,R4		;SET CORRECT NODE ADDRESS
   3726	015512	103006 				BCC	80$		;GOT ONE
   3727	015514	012601 				MOV	(SP)+,R1	;NONE AVAILABLE -- RETURN ATL NODE
   3728	015516	012704 	001432'			MOV	#.POLLH,R4
   3729	015522					CALL	..NADD		;ADD NODE BACK TO ATL
	015522	004737 	045434'			JSR	PC,..NADD
   3730	015526	000711 				BR	40$		;RETURN +6
   3731
   3732	015530	010446 			80$:	MOV	R4,-(SP)	;SAVE NODE ADDRESS
   3733	015532	022424 				CMP	(R4)+,(R4)+	;MOVE OVER LISTHEAD
   3734	015534	010224 				MOV	R2,(R4)+	;SET UP STD ADDRESS
   3735	015536	016624 	000002 			MOV	2(SP),(R4)+	;SET UP ATL NODE ADDRESS
   3736	015542	012724 	175014 			MOV	#250.*400+12.,(R4)+ ;SET UP PRI/DPB SIZE
   3737	015546	012724 	000400 			MOV	#400,(R4)+	;SET EFN
   3738	015552	012724 	000050 			MOV	#IO.LTK,(R4)+	;CLAIM THIS IS A READ
   3739	015556	005024 				CLR	(R4)+		;NO I/O STATUS
   3740	015560	005024 				CLR	(R4)+		;NO AST ADDRESS
   3741	015562	022424 				CMP	(R4)+,(R4)+	;ADDRESS IS NOT SPECIFIED HERE
   3742	015564	016224 	000014 			MOV	S.LZ(R2),(R4)+	;SET UP INITIAL SIZE
   3743	015570	005024 				CLR	(R4)+		;SKIP THIS PARAMETER
   3744	015572	016224 	000032 			MOV	S.DL(R2),(R4)+	;SET UP DISK ADDRESS
   3745	015576	016224 	000034 			MOV	S.DL+2(R2),(R4)+ ;LOW ORDER DISK ADDRESS
   3746	015602	012601 				MOV	(SP)+,R1	;RESTORE R1
   3747	015604	016603 	000002 			MOV	2(SP),R3	;RESTORE THE TPD ADDRESS
   3748	015610	032763 	000002 	000010 		BIT	#TF.OU,T.FW(R3)	;PARTITON OCCUPIED?
   3749	015616	001407 				BEQ	90$		;NO -- MUST BE OK TO LOAD
   3750	015620	012603 				MOV	(SP)+,R3	;YES -- BETTER ADD IT TO MRL
   3751	015622	012601 				MOV	(SP)+,R1	;RESTORE ATL ADDRESS
   3752	015624	010361 	000030 			MOV	R3,A.FM+4(R1)	;SET THE NODE ADDRESS IN FLAGS MASK WORD TO PRESERVE IT
   3753	015630	012703 	100002 			MOV	#TS.LRQ+100000,R3 ;SET LOAD REQUEST QUEUE'D AND PARTITION BUSY
   3754	015634	000671 				BR	60$		;SET UP ATL
   3755
   3756	015636	010246 			90$:	MOV	R2,-(SP)	;SAVE STD ADDRESS
   3757	015640	052763 	000002 	000010 		BIS	#TF.OU,T.FW(R3)	;DECLARE THE PARTITION OCCUPIED
   3758	015646	005003 				CLR	R3		;FIND PUD ENTRY
   3759	015650	156203 	000011 			BISB	S.DI(R2),R3	;SET DISK INDICATOR
   3760	015654	012702 	010262'			MOV	#.PUDBA,R2	;SET UP FOR ..IPRI
   3761	015660	062702 	000050 		100$:	ADD	#U.SZ,R2	;POINT TO AN ENTRY
   3762	015664	077303 				SOB	R3,100$		;LOOP UNTIL CORRECT ENTRY FOUND
   3763	015666	010203 				MOV	R2,R3		;SAVE THE LOGICAL UNIT NUMBER
SCH	- TASK SCHEDULER & GLOB	MACRO M1113  03-APR-86 20:41  PAGE 76-2
EXEC MODULE NINE -- COMMON RETURN TO INTERRUPTED PROGRAM

   3764	015670	062702 	000022 			ADD	#U.RF,R2	;POINT TO LISTHEAD
   3765	015674					CALL	..IPRI		;ENTER IN LIST
	015674	004737 	045360'			JSR	PC,..IPRI
   3766	015700	014202 				MOV	-(R2),R2	;FIND ATL NODE ADDRESS OF HANDLER TASK
   3767	015702	052762 	000010 	000020 		BIS	#EF.NIR,A.EF(R2) ;START HANDLER
   3768	015710					CALL	..DSEV		;DECLARE SIG EVENT
	015710	004737 	045264'			JSR	PC,..DSEV
   3769	015714	012602 				MOV	(SP)+,R2	;RESTORE STD ADDRESS
   3770	015716	012601 				MOV	(SP)+,R1	;RESTORE R1 (ATL NODE ADDRESS)
   3771	015720	010361 	000022 			MOV	R3,A.EF+2(R1)	;SAVE THE OVERLAY PUD ADDRESS
   3772	015724	012703 	000002 			MOV	#TS.LRQ,R3	;SET UP TO INDICATE LOAD REQUEST QUEUE'D
   3773	015730	000633 				BR	60$		;AND START TASK
   3774
   3775	015732	010401 			110$:	MOV	R4,R1		;SAVE THE NODE ADDRESS
   3776	015734	052762 	000001 	000006 		BIS	#SF.TA,S.FW(R2)	;SET TASK ACTIVE
   3777	015742	022424 				CMP	(R4)+,(R4)+
   3778	015744	010224 				MOV	R2,(R4)+	;SAVE THE ATTRIBUTES OF THIS CALL
   3779	015746	012624 				MOV	(SP)+,(R4)+
   3780	015750	012624 				MOV	(SP)+,(R4)+
   3781	015752	010302 				MOV	R3,R2		;FIND THE MRL
   3782	015754	062702 	000014 			ADD	#T.RF,R2	;POINT TO IT IN TPD
   3783	015760				120$:	CALL	..IPRI		;INSERT THIS NODE IN MRL BY PRI
	015760	004737 	045360'			JSR	PC,..IPRI
   3784	015764	005002 				CLR	R2		;DECLARE TASK ACTIVE
   3785	015766					RETURN			;RETURN TO CALLER
	015766	000207 				RTS	PC
   3786
   3787	015770	104401 			.RQESD::TRAP	DR.01		;RETURN +1
   3788	015772	104771 				TRAP	DE.07		;RETURN -7
   3789	015774	104401 				TRAP	DR.01		;RETURN+1 (CURRENTLY UNUSED)
   3790	015776	104777 				TRAP	DE.01		;RETURN -1
SCH	- TASK SCHEDULER & GLOB	MACRO M1113  03-APR-86 20:41  PAGE 77
EXEC MODULE NINE -- COMMON RETURN TO INTERRUPTED PROGRAM

   3792					;
   3793					;  .FEPPU -- SUBROUTINE TO FETCH PARTITION AND PRIORITY
   3794					;
   3795					;  ENTRY CONDITIONS:
   3796					;
   3797					;	R1 -- DPB PLUS SIX -- POINTING TO FOLLOWING DATA IN PREVIOUS SPACE
   3798					;		[PARTITION NAME (FIRST HALF),
   3799					;		[PARTITION NAME (SECOND HALF),
   3800					;		[PRIORITY],
   3801					;		[UNUSED].
   3802					;
   3803					;	IT IS ASSUMED THAT THESE WORDS CAN BE FETCHED WITHOUT SEGMENT FAULT.
   3804					;
   3805					;	R2 -- STD ENTRY OF TASK TO FIT IN PARTITION
   3806					;	R5 -- ATL NODE ADDRESS OF ISSUING TASK
   3807					;
   3808					;	CALLING SEQUENCE:
   3809					;
   3810					;	CALL	.FEPPU
   3811					;
   3812					;  EXIT CONDITIONS:
   3813					;
   3814					;	R1 -- ADVANCED BY 8 (4 WORDS)
   3815					;	R3 -- TPD ENTRY ADDRESS, OR ZERO (DEFAULT PARTITION)
   3816					;	R4 -- RUN PRIORITY, OR ZERO (DEFAULT PRIORITY)
   3817					;
   3818					;	REGISTERS ALTERED R1,R3,R4
   3819					;
   3820	016000				.FEPPU::MFPI	(R1)+		;PUSH 2-WORD PARTITION NAME ONTO STACK
	016000	012146 				MOV	(R1)+,-(SP)
   3821	016002					MFPI	(R1)+
	016002	012146 				MOV	(R1)+,-(SP)
   3822	016004	005003 				CLR	R3		;CLEAR R3 (TPD ADDRESS
   3823	016006	005766 	000002 			TST	2(SP)		;WAS A PARTITION NAME SPECIFIED?
   3824	016012	001423 				BEQ	20$		;NO -- RETURN WITH ZERO IN R3
   3825	016014	012703 	007602'			MOV	#.TPDBA,R3	;YES -- SET UP TO SCAN TPD FOR PARTITION
   3826	016020	020327 	007602'		10$:	CMP	R3,#.TPDBA	;END OF TPD?
   3827	016024	001425 				BEQ	X.X94		;YES -- RETURN STS=-94.
   3828	016026	162703 	000020 			SUB	#T.SZ,R3	;NO -- SET UP R3 TO EXAMINE ENTRY
   3829	016032	021366 	000002 			CMP	@R3,2(SP)	;PARTITION NAME MATCH?
   3830	016036	001370 				BNE	10$		;NO -- CHECK NEXT TPD
   3831	016040	026316 	000002 			CMP	2(R3),@SP	;MAYBE -- CHECK SECOND HALF OF NAME
   3832	016044	001365 				BNE	10$		;NO -- CHECK NEXT TPD
   3833	016046	016204 	000016 			MOV	S.TZ(R2),R4	;SET R4 TO THE NUMBER OF 32-WORD BLOCKS
   3834									;REQUIRED FOR THE TASK INDICATED BY R2.
   3835	016052	020463 	000006 			CMP	R4,T.PZ(R3)	;IS PARTITION LARG ENOUGH FOR TASK?
   3836	016056	101401 				BLOS	20$		;YES -- SET R4 PER PRIORITY SPECIFIED
   3837	016060	104775 				TRAP	DE.03		;NO -- RETURN STS=-03
   3838
   3839	016062	022626 			20$:	CMP	(SP)+,(SP)+	;REMOVE PARTITION NAME FROM STACK
   3840	016064					MFPS	(R1)+,R4	;SET R4 TO PRIORITY INDICATOR
	016064	012104 				MOV	(R1)+,R4
   3841	016066	020427 	000372 			CMP	R4,#250.	;IS PRIORITY GREATER THAN 250?
   3842	016072	101003 				BHI	X.X95		;YES -- RETURN STS=-95.
   3843	016074	005721 				TST	(R1)+		;MOVE OVER UNUSED WORD
   3844	016076					RETURN			;RETURN TO CALLER
	016076	000207 				RTS	PC
SCH	- TASK SCHEDULER & GLOB	MACRO M1113  03-APR-86 20:41  PAGE 77-1
EXEC MODULE NINE -- COMMON RETURN TO INTERRUPTED PROGRAM

   3845
   3846	016100	104642 			X.X94:	TRAP	DE.94		;RETURN STS=94.
   3847	016102	104641 			X.X95:	TRAP	DE.95		;RETURN STS=95.
SCH	- TASK SCHEDULER & GLOB	MACRO M1113  03-APR-86 20:41  PAGE 78
EXEC MODULE NINE -- COMMON RETURN TO INTERRUPTED PROGRAM

   3849					;
   3850					; .VCLUN -- VERIFY & CONVER LOGICAL UNIT NUMBER
   3851					;
   3852					; ENTRY CONDITIONS:
   3853					;
   3854					;	R5 -- ATL NODE ADR OF DIRECTIVE ISSUING TASK
   3855					;	TOP OF STACK -- LOGICAL UNIT NUMBER
   3856					;
   3857					; CALLING SEQUENCE:
   3858					;
   3859					;	CALL  .VCLUN
   3860					;
   3861					; EXIT CONDITIONS:
   3862					;
   3863					;	R4 -- POINTS TO FIRST LUT ENTRY
   3864					;	CC-C SET IF TASK NOT FOUND
   3865					;
   3866					;	IF LUN IS ASSIGNED TO A PHYSICAL UNIT, THE  LUN (ON TOP OF
   3867					;	STACK) IS REPLACED BY THE ADDRESS OF THE CORRESPONDING PUD
   3868					;	ENTRY.
   3869					;
   3870					;	IF AN INVALID LUN, RETURN STS-96.
   3871					;
   3872					;	IF THE LUN IS NOT ASSIGNED, IT IS REPLACED BY A ZERO.
   3873					;
   3874					;
   3875					; REGISTERS ALTERED:
   3876					;
   3877					;	NONE
   3878					;
   3879	016104	010046 			.VCLUN::MOV	R0,-(SP)	;PUSH  (SAVE) R0
   3880	016106	016600 	000004 			MOV	4(SP),R0	;LUN MINUS ONE TO R0
   3881	016112	005300 				DEC	R0
   3882
   3887	016114	016504 	000012 			MOV	A.HA(R5),R4	;POINT TO HEADER ADDRESS
   3894	016120	062704 	000130 			ADD	#H.LUT,R4
   3896
   3897	016124	020024 				CMP	R0,(R4)+	;IS LUN <1, OR >MAX FOR TASK?
   3898	016126	103013 				BHIS	X9X96		;YES -- RETURN STS=-96
   3899	016130	006300 				ASL	R0		;NO -- SET LUT CONTENTS (PER LUN) IN R0
   3900	016132	006300 				ASL	R0
   3901	016134	060400 				ADD	R4,R0
   3902	016136	011000 				MOV	@R0,R0		;(PUD ENT ADR OR ZERO IN R0)
   3903	016140	001402 				BEQ	10$		;IF ASSIGNED, EFFECT REDIRECTION (IF ANY)
   3904	016142	016000 	000016 			MOV	U.RP(R0),R0
   3905	016146				10$:
   3906	016146	010066 	000004 			MOV	R0,4(SP)	;REPLACE LUN (ON STACK) BY PUD
   3907									;ENTRY ADDRESS (OR ZERO).
   3908
   3909	016152	012600 				MOV	(SP)+,R0	;POP (RESTORE) R0
   3910	016154					RETURN			;EXIT SUBROUTINE
	016154	000207 				RTS	PC
   3911					;
   3912					; COMMON JMP'S TO DIRECTIVE EXITS
   3913					;
   3914	016156	104640 			X9X96:	TRAP	DE.96
SCH	- TASK SCHEDULER & GLOB	MACRO M1113  03-APR-86 20:41  PAGE 79
EXEC MODULE NINE -- COMMON RETURN TO INTERRUPTED PROGRAM

   3916					;
   3917					;	.STAST -- SUBROUTINE TO SET AN AST IN A TASK
   3918					;
   3919					;  ENTRY CONDITONS:
   3920					;
   3921					;	R5 -- ACTIVE TASK LIST POINTER
   3922					;	R4 -- ENTRY ADDRESS
   3923					;
   3924					;	CALLING SEQUENCE:
   3925					;
   3926					;	CALL	.STAST
   3927					;
   3928					;	EXIT CONDITIONS:
   3929					;
   3930					;	CC-C CLEAR -- AST SET AND ALL OK
   3931					;	CC-C SET -- THE TASK IS CURRENT AND CAN'T SET AST
   3932					;
   3933	016160	010246 			.STAST::MOV	R2,-(SP)	;SAVE REGISTERS
   3934	016162	010346 				MOV	R3,-(SP)
   3935	016164					CALL	..DSEV		;DECLARE A SIG EVENT
	016164	004737 	045264'			JSR	PC,..DSEV
   3936	016170	012702 	000006 			MOV	#6,R2		;SET UP TO SAVE REGISTERS
   3937	016174	000241 				CLC			;ASSUME SUCCESS
   3938	016176					.INH0			;;INHIBIT INTERRUPTS
	016176	013746 	177776 			MOV	@#PS,-(SP)
	016202	112737 	000140 	177776 		MOVB	#140,@#PS
   3939	016210	020537 	001006'			CMP	R5,.CRTSK		;;CURRENT TASK?
   3940	016214	001415 				BEQ	30$		;;YES 0-- BETTER SET CARRY
   3941	016216	016503 	000004 			MOV	A.SP(R5),R3	;;SET UP A POINTER TO THE TASK'S STACK
   3942	016222	010443 				MOV	R4,-(R3)	;;SET UP NEW PC
   3946	016224	012743 	004000 			MOV	#004000,-(R3)
   3948	016230	016343 	000016 		10$:	MOV	16(R3),-(R3)	;SET UP NEW STACK SAVE
   3949	016234	077203 				SOB	R2,10$		;;CONTINUE TIL DONE
   3950	016236				20$:	.ENB0			;ENABLE INTERRUPTS
	016236	004737 	045540'			JSR	PC,..ENB0
   3951	016242	012603 				MOV	(SP)+,R3	;RESTORE
   3952	016244	012602 				MOV	(SP)+,R2
   3953	016246					RETURN			;RETURN TO CALLER
	016246	000207 				RTS	PC
   3954
   3955	016250	005216 			30$:	INC	@SP		;ENABLE INTERRUPTS
   3956	016252	152737 	000002 	001014'		BISB	#EV.AS,.SERFG+0	;SET AST REQUIRED
   3957	016260	000766 				BR	20$		;AND RETURN
   3958						;
SCH	- TASK SCHEDULER & GLOB	MACRO M1113  03-APR-86 20:41  PAGE 80
EXEC MODULE NINE -- COMMON RETURN TO INTERRUPTED PROGRAM

   3960
   3961
   3962						.TITLE	BOOT -- BOOT PROTOCOL HANDLER
   3963						.SBTTL	SECONDARY PROTOCOL -- COPYRIGHT STATEMENT
   3964	016262					IDENT$	15,00
						.IDENT	/015000/
   3965
   3966					;
   3967					;                             COPYRIGHT (C) 1975, 1984, 1985 BY
   3968					;                     DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
   3969					;			ALL RIGHTS RESERVED.
   3970					;       THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE  USED  AND  COPIED
   3971					;       ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
   3972					;       OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR ANY OTHER COPIES THERE-
   3973					;       OF  MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
   3974					;       NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
   3975					;
   3976					;       THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT
   3977					;       NOTICE  AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
   3978					;       CORPORATION.
   3979					;
   3980					;       DIGITAL ASSUMES NO RESPONSIBILITY FOR THE  USE  OR  RELIABILITY  OF  ITS
   3981					;       SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
   3982					;
   3983					;		MODULE: "BOOT PROTOCOL HANDLER"
   3984					;
   3985					;		VERSION: 14-37
   3986					;
   3987					;		AUTHOR: R. MCLEAN
   3988					;
   3989					;		DATE: 12 OCT 76
   3990					;
   3991					;	THIS MODULE CONTAINS:
   3992					;
   3993					;	1 -- CODE TO SERVICE BOOT PROTOCOL ETC.
   3994					;
   3995					; MODIFIED:
   3996					;	NO.	DATE		PROGRAMMER	PURPOSE
   3997					;	---	----		----------	-------
   3998					;	001	12-OCT-76	R. BELANGER	CHANGED PHYSICAL EXAMINES &
   3999					;						DEPOSITS TO EPT RELATIVE
   4000					;	002	21-OCT-76	A. PECKHAM	ADDITION OF CODE TO COUNT
   4001					;						DOORBELLS.
   4002					;
   4003					;	003	04-NOV-76	R. BELANGER	ADDED CODE TO DELETE
   4004					;						ENTRIES FROM TO10Q ON
   4005					;						PRIMARY PROTOCOL RESTART.
   4006					;	004	29-NOV-76	A. PECKHAM	CHANGES TOO NUMEROUS TO MENTION.
   4007					;	005	07-MAR-77	A. PECKHAM	ADDED CHANGE TO AVOID RESETTING TO -10 Q.
   4008					;	006	21-MAR-77	A. PECKHAM	FIXED BUG IN ACKNOWLEGE
   4009					;	007	28-AUG-77	R. BELANGER	RESET POWERFAIL FLAG ON
   4010					;						PRIMARY PROTOCOL START
   4011					;	008	07-OCT-77	R. BELANGER	IGNORE COMM REGION IF SO DIRECTED BY "TKTN"
   4012					;
   4013					;	009	27-MAY-78	R. BELANGER	ADD PROTOCOL TIMEOUT
   4014					;   TCO 4.2207	08-MAR-79	R. BELANGER	FIX BUG WHICH CAN CAUSE
   4015					;						PROTOCOL PAUSE LOOPS
BOOT -- BOOT PROTOCOL HANDLER	MACRO M1113  03-APR-86 20:41  PAGE 80-1
SECONDARY PROTOCOL -- COPYRIGHT STATEMENT

   4016					;  TCO 4.1.1035	16-NOV-79	R. BELANGER	ADD QUEUE ARBITRATION
   4017					;  TCO 4.1.1121	19-MAR-80	R. BELANGER	SUPPORT BLOCKED DTE-20
   4018					;  TCO 4.1.1137	05-APR-80	R. BELANGER	REMOVE SUPPORT FOR RESTRICTED DTE-20
   4019					;
   4020					;	MACRO CALLS
   4021					;
   4022						.MCALL	CALL,RETURN,.STKM,CLEF$S,WTSE$S,QIOW$,DTON$S,.CRASH
   4023						.MCALL	WSIG$S,.ENB0,.INH6,.ENB6,$DEF
   4024	016262					$DEF
BOOT -- BOOT PROTOCOL HANDLER	MACRO M1113  03-APR-86 20:41  PAGE 81
SECONDARY PROTOCOL -- BOOT PROTOCOL SERVICE

   4026						.SBTTL	SECONDARY PROTOCOL -- BOOT PROTOCOL SERVICE
   4027					;
   4028					;	BTPRO -- ROUTINE TO HANDLE THE PROTOCOL TRANSITION INTO
   4029					;	SECONDARY PROTOCOL.
   4030					;	IT IS ASSUMED THAT THIS PROTOCOL WILL BE USED
   4031					;	DURING INITALIZATION AND IN CASE OF MONITOR CRASHED ETC
   4032					;	WHEN THE NORMAL MEANS OF COMMUNICATIONS THRU THE COMM REGION ARE DESTROYED
   4033					;
   4034					;	"EF.CRI" INDICATES THAT THE FRONT-END BELEIVES THE COMM-REGION TO BE
   4035					;	INVALID.  THIS BIT IS SET ON POWERFAIL AND BY "KLI" ON A KL RELOAD.
   4036					;	IF THE COMM REGION INVALID FLAG IS NOT SET, THE TRANSITION INTO SECONDARY
   4037					;	PROTOCOL IS TIMED-OUT FOR 30 SECONDS.  IF NO TRANSITION IS MADE WITHIN
   4038					;	THAT PERIOD, THE KL IS RELOADED.
   4039					;
   4040					;	NOTE -- IF THE COMM-REGION IS FOUND TO BE VALID DURING A NORMAL PROTOCOL
   4041					;		TRANSITION, PRIMARY PROTOCOL IS IS IMMEDIATELY RE-ENTERED.
   4042					;
   4043					;	IF SUCCESS IN COMMUNICATION WITH THE KL IT WILL ENTER SECONDARY
   4044					;	PROTOCOL (OR RE-ENTER PRIMARY PROTOCOL)
   4045					;
   4046
   4047	016262				BTPHD::
   4048	016262					.STKM	0,1,2,3,4,5,0,BTPRO,174000,.BTSTK
	016330	000000 	000000 	000000 		.WORD	0,0,0,0
	016336	000000
	016356	174000 	016562'	016542'		.WORD	174000,BTPRO,.BTSTK
	016412	000005 				.WORD	5
	016414	010262'				.WORD	TTPEN
	016416	000000 				.WORD	0
	016420	000000 				.WORD	0
	016422	000000 				.WORD	0
	016424	000000 				.WORD	0
	016426	000000 				.WORD	0
	016430	000000 				.WORD	0
	016432	000000 				.WORD	0
	016434	000000 				.WORD	0
	016436	000000 				.WORD	0
	016440	000000 				.WORD	0
	016542	000000 				.WORD	0
	016544	000001 				.WORD	1
	016546	000002 				.WORD	2
	016550	000003 				.WORD	3
	016552	000004 				.WORD	4
	016554	000005 				.WORD	5
	016556	016562'				.WORD	BTPRO
	016560	174000 				.WORD	174000
   4049
   4050	016562				BTPRO:
   4051	016562	105037 	001400'			CLRB	.PRPSE		; RESET THE PAUSE FLAG
   4052	016566					WTSE$S	#E.FPR2		;WAIT FOR ACTIVATION.
	016566	012746 	000076 			MOV	#E.FPR2,-(SP)
	016572	012746 				MOV	(PC)+,-(SP)
	016574	   051 	   002 			.BYTE	41.,2
	016576	104375 				EMT	375
   4053	016600	052737 	100000 	007462'		BIS	#BIT15,FETSK+A.EF ;SET SECONDARY PROTOCOL FLAG FOR FETSK
   4054	016606	013700 	001154'			MOV	.TKPS,R0	; +++009 TICKS PER SECOND TO R0
   4055	016612	012701 	000036 			MOV	#^D30,R1	; +++009 30. SECONDS
BOOT -- BOOT PROTOCOL HANDLER	MACRO M1113  03-APR-86 20:41  PAGE 81-1
SECONDARY PROTOCOL -- BOOT PROTOCOL SERVICE

   4056	016616				5$:
   4057	016616					CALL	$MUL		; +++009 CALCULATE PAUSE PERIOD
	016616	004737 	000000G			JSR	PC,$MUL
   4058	016622	010104 				MOV	R1,R4		; +++009 SAVE IT IN R4
   4059	016624	013700 	001366'			MOV	.PRDTE,R0	;FIND ADDRESS OF PRIVILEDGED DTE
   4060	016630	013705 	001364'			MOV	.PRSTA,R5
   4061	016634	012715 	000010 			MOV	#INTROF,@R5	;CLEAR THE STATUS
   4062	016640	000405 				BR	20$		;GO LOOK FOR CHANGE TO BOOT PROTOCOL
   4063						;
   4064	016642				10$:
   4065	016642					.ENB6			;;;ENABLE INTERRUPTS
	016642	012637 	177776 			MOV	(SP)+,@#PS
   4066	016646					WSIG$S			;WAIT FOR SIG EVENT
	016646	012746 				MOV	(PC)+,-(SP)
	016650	   061 	   001 			.BYTE	49.,1
	016652	104375 				EMT	375
   4067	016654				20$:
   4068	016654					.INH6			;INHIBIT INTERRUPTS
	016654	013746 	177776 			MOV	@#PS,-(SP)
	016660	112737 	000300 	177776 		MOVB	#300,@#PS
   4069	016666	032737 	002000 	001012'		BIT	#EF.CRI,.COMEF+2 ;;; +++008 IS THE COMM REGION VALID??
   4070	016674	001020 				BNE	30$		;;; +++008 NO -- GO ON
   4071	016676	112737 	177777 	001400'		MOVB	#-1,.PRPSE	;;; +++009 MARK THAT  WE ARE PAUSING
   4072	016704	005060 	000010 			CLR	TNAD1(R0)	;;; MAYBE -- LOOK FOR PROTOCOL CHANGE
   4073	016710	005060 	000012 			CLR	TNAD2(R0)	;;;BY TESTING RELATIVE ADDR WORD
   4074	016714					CALL	..WFED		;;; [4.1.1121] WAIT FOR EXAMINE
	016714	004737 	047454'			JSR	PC,..WFED
   4075	016720	103453 				BCS	47$		;;;KL HAS BEEN LOST..
   4076	016722	005760 	000002 			TST	DXWD3(R0)	;;;IF NON-ZERO
   4077	016726	001403 				BEQ	30$		;;;THEN EXAMINE VALID, SO
   4078	016730	010702 				MOV	PC,R2		;;; +++006 SAY NO ACKNOWLEGE NEEDED
   4079	016732	000137 	020024'			JMP	120$		;;; +++005 RETURN TO PRIMARY PROTOCOL.
   4080						;
   4081	016736				30$:
   4082	016736	032760 	004000 	000030 		BIT	#DS04,DAG1(R0)	;;;CHECK FOR CLOCK ERROR STOP
   4083	016744	001174 				BNE	86$		;;;STOP ALL PROTOCOLS IF SO
   4084	016746				31$:
   4085	016746	032715 	004000 			BIT	#TO11DB,@R5	;;;WAIT OR A DOORBELL INTERRUPT
   4086	016752	001021 				BNE	40$		;;; +++009 GOT ONE -- PROCESS IT
   4087	016754	032737 	002000 	001012'		BIT	#EF.CRI,.COMEF+2 ;;; +++009 IS THIS A PAUSE??
   4088	016762	001327 				BNE	10$		;;; +++009 YES -- WAIT FOR SECONDARY PROTOCOL
   4089	016764	077452 				SOB	R4,10$		;;; +++009 NO -- DID WE TIME OUT??
   4090	016766	105237 	001124'			INCB	.TKTN		;;; +++009 YES -- SAY GOODNIGHT....
   4091	016772	105237 	001122'			INCB	.NOERR		;;; +++009 DON'T CARE ABOUT ERRORS NOW
   4092	016776	052737 	000200 	001126'		BIS	#KS.PTO,.KLITK	;;; +++009 FLAG PROTOCOL TIMEOUT
   4093	017004					CALL	..DTSP		;;; [4.2207] STOP ALL PROTOCOLS
	017004	004737 	050226'			JSR	PC,..DTSP
   4094	017010					.ENB6			;;; +++009 ALLOW INTERRUPTS
	017010	012637 	177776 			MOV	(SP)+,@#PS
   4095	017014	000662 				BR	BTPRO		; +++009 AND GO BACK TO SLEEP
   4096						;
   4097	017016				40$:
   4098	017016	042737 	001000 	001012'		BIC	#EF.FCP,.COMEF+2 ;;;CLEAR FAULT CONTINUATION IN PROGRESS IN CASE
   4099	017024	005237 	001370'			INC	.PRDCT		;;; +002 ONE MORE DOORBELL....
   4100	017030	012760 	004000 	000010 		MOV	#PRTOFF!EPTR,TNAD1(R0) ;;; +001 PROTECT OFF
   4101	017036	012760 	000451 	000012 		MOV	#DTECMD,TNAD2(R0) ;;;READ THE COMMAND PASSED
   4102	017044					CALL	..WFED		;;; [4.1.1121] WAIT FOR EXAMINE DEPOSIT
BOOT -- BOOT PROTOCOL HANDLER	MACRO M1113  03-APR-86 20:41  PAGE 81-2
SECONDARY PROTOCOL -- BOOT PROTOCOL SERVICE

	017044	004737 	047454'			JSR	PC,..WFED
   4103	017050				47$:
   4104	017050	103534 				BCS	87$
   4105	017052	012715 	002000 			MOV	#INT11C,@R5	;;;ALLOW MORE DOORBEL INTERRUPTS
   4106	017056	122760 	000011 	000003 		CMPB	#11,DXWD3+1(R0)	;;;LOOK AT THE COMMAND WORD
   4107	017064	001266 				BNE	10$		;;;NOT WHAT WE WANT...
   4108					;
   4109					;	CHANGE PROTOCOL TO SECONDARY (FUNCTION 11)
   4110					;
   4111	017066				50$:
   4112	017066	105037 	001400'			CLRB	.PRPSE		;;; +++009 RESET PAUSE FLAG
   4113	017072	012760 	177776 	000002 	55$:	MOV	#-2,DXWD3(R0)	;;;ACKNOWLEDGE THE COMMAND
   4114	017100	052760 	014000 	000010 		BIS	#DEP!EPTR!PRTOFF,TNAD1(R0) ;;; +001 SET DEPOSIT IN TEN MEMORY FLAG
   4115	017106	012760 	000444 	000012 		MOV	#DTEFLG,TNAD2(R0) ;;;START TRANSFER TO DTE FLAG WORD
   4116	017114					CALL	..WFED		;;; [4.1.1121] WAIT FOR EXAMINE DEPOSIT
	017114	004737 	047454'			JSR	PC,..WFED
   4117	017120	103510 				BCS	87$		;;;TEN STOPPED
   4118	017122	012715 	000400 			MOV	#TO10DB,@R5	;;;SET 10'S DOORBELL
   4119	017126	005037 	001162'			CLR	.BTSCH		;;;CLEAR ANY SAVED CHARACTERS
   4120					;
   4121					;	AT THIS POINT WE ARE OFFICIALLY IN SECONDARY PROTOCOL
   4122					;
   4123					;	THIS IS THE MAIN COMMAND LOOP WHICH PROCESSES THE SECONDARY
   4124					;	PROTOCOL COMMANDS AND PASSES CTY CHARACTERS TO THE -10.
   4125					;
   4126	017132				60$:
   4127	017132					.ENB6			;;;ENABLE INTERRUPTS
	017132	012637 	177776 			MOV	(SP)+,@#PS
   4128	017136					WSIG$S			;WAIT FOR SIG EVENT
	017136	012746 				MOV	(PC)+,-(SP)
	017140	   061 	   001 			.BYTE	49.,1
	017142	104375 				EMT	375
   4129	017144					.INH6			;INHIBIT INTERRUPTS
	017144	013746 	177776 			MOV	@#PS,-(SP)
	017150	112737 	000300 	177776 		MOVB	#300,@#PS
   4130	017156	032715 	004000 			BIT	#TO11DB,@R5	;;;WAIT FOR ANOTHER DOORBELL
   4131	017162	001073 				BNE	90$		;;;FOUND IT -- CHECK THE COMMAND
   4132	017164	032760 	004000 	000030 		BIT	#DS04,DAG1(R0)	;;;CHECK FOR CLOCK ERROR STOP
   4133	017172	001061 				BNE	86$		;;;YES -- STOP PROTOCOL
   4134	017174				70$:
   4135	017174	113701 	001162'			MOVB	.BTSCH,R1	;;;CHECK FOR CTY CHARACTER
   4136	017200	001754 				BEQ	60$
   4137					;
   4138					;	TRANSFER CTY CHARACTER TO -10
   4139					;
   4140	017202				80$:
   4141	017202	012760 	004000 	000010 		MOV	#PRTOFF!EPTR,TNAD1(R0) ;;; +001 SET PROTECT OFF
   4142	017210	012760 	000456 	000012 		MOV	#DTEMTI,TNAD2(R0) ;;;PICK UP THE INPUT BUSY FLAG
   4143	017216				81$:
   4144	017216					CALL	..WFED		;;; [4.1.1121] WAIT FOR EXAMINE DEPOSIT
	017216	004737 	047454'			JSR	PC,..WFED
   4145	017222	103447 				BCS	87$		;;;TEN STOPPED
   4146	017224	005760 	000004 			TST	DXWD2(R0)
   4147	017230	001340 				BNE	60$		;;;TEN CAN'T ACCEPT ANOTHER CHARACTER YET
   4148	017232	042701 	177600 			BIC	#^C177,R1	;;;MASK OFF JUNK
   4149	017236	010160 	000002 			MOV	R1,DXWD3(R0)	;;;PUT THE WORD IN THE DTE
   4150	017242	005060 	000004 			CLR	DXWD2(R0)
BOOT -- BOOT PROTOCOL HANDLER	MACRO M1113  03-APR-86 20:41  PAGE 81-3
SECONDARY PROTOCOL -- BOOT PROTOCOL SERVICE

   4151	017246	005060 	000006 			CLR	DXWD1(R0)
   4152	017252	012760 	014000 	000010 		MOV	#DEP!PRTOFF!EPTR,TNAD1(R0) ;;; +001 SET DEP!PRTOFF!EPTR DEPOSIT FLAG
   4153	017260	012760 	000450 	000012 		MOV	#DTEF11,TNAD2(R0) ;;;STORE THE CHARACTER IN THE 10
   4154	017266					CALL	..WFED		;;; [4.1.1121] WAIT FOR EXAMINE/DEPOSIT
	017266	004737 	047454'			JSR	PC,..WFED
   4155	017272	103423 				BCS	87$		;;;TEN STOPPED
   4156	017274	105037 	001162'			CLRB	.BTSCH		;;;CHARACTER HAS NOW BEEN SENT
   4157	017300	012760 	177776 	000002 		MOV	#-2,DXWD3(R0)	;;;SET CHARACTER IN BUFFER FLAG
   4158	017306	012760 	014000 	000010 		MOV	#DEP!PRTOFF!EPTR,TNAD1(R0) ;;; +001 SET DEP!PRTOFF!EPTR DEPOSIT FLAG
   4159	017314	012760 	000456 	000012 		MOV	#DTEMTI,TNAD2(R0) ;;;TRANSFER TO 10 MEMORY
   4160	017322					CALL	..WFED		;;; [4.1.1121] WAIT FOR TRANSFER
	017322	004737 	047454'			JSR	PC,..WFED
   4161	017326	103405 				BCS	87$		;;;TEN STOPPED
   4162	017330	012715 	000400 			MOV	#TO10DB,@R5	;;;SET THE 10'S DOORBELL
   4163	017334	000676 				BR	60$		;;;CONTINUE POLLING
   4164					;
   4165					;	AN ERROR ON EXAMINE / DEPOSIT TURNS OFF BOOT PROTOCOL
   4166					;
   4167	017336				86$:
   4168	017336					CALL	..WFED		;;; [4.1.1121] RECOGNIZE ERROR, THEN
	017336	004737 	047454'			JSR	PC,..WFED
   4169	017342				87$:
   4170	017342					.ENB0			;;; +++006 ENABLE INTERRUPTS
	017342	004737 	045540'			JSR	PC,..ENB0
   4171	017346	000137 	016562'			JMP	BTPRO		;AND GO TO WAIT FOR REACTIVATION.
   4172					;
   4173					;	RECIEVE A COMMAND FROM THE -10
   4174					;
   4175	017352				90$:
   4176	017352	005237 	001370'			INC	.PRDCT		;;; +002 ONE MORE DOORBELL...
   4177	017356	012760 	004000 	000010 		MOV	#PRTOFF!EPTR,TNAD1(R0) ;;; +001 SET PROTECT OFF
   4178	017364	012760 	000451 	000012 		MOV	#DTECMD,TNAD2(R0) ;;;READ THE COMMAND WORD
   4179	017372					CALL	..WFED		;;; [4.1.1121] WAIT FOR EXAMINE DEPOSIT
	017372	004737 	047454'			JSR	PC,..WFED
   4180	017376	012715 	002000 			MOV	#INT11C,@R5	;;;WARNING !!!!!DON'T MOVE THIS INSTRUCTION!!!!!!!
   4181									;;;DOORBELL MUST NOT BE CLEARED BEFORE THE
   4182									;;;10 FINISHES THE SET DOORBELL!!!!!!
   4183									;;;IT IS GUARANTEED TO BE SAFE AFTER ..WFED
   4184	017402	103757 				BCS	87$		;;;TEN STOPPED
   4185	017404	122760 	000013 	000003 		CMPB	#13,DXWD3+1(R0)	;;; [**]
   4186	017412	001447 				BEQ	97$		;;; [**]
   4187	017414	122760 	000012 	000003 		CMPB	#12,DXWD3+1(R0)	;;;MONITOR MODE CONTROL OFF?
   4188	017422	001515 				BEQ	100$		;;;YES -- RE-ENTER RSX20F
   4189	017424	122760 	000011 	000003 		CMPB	#11,DXWD3+1(R0)	;;;MONITOR MODE CONTROL ON?
   4190	017432	001003 				BNE	95$		;;;NO -- MUST BE CTY CHARACTER
   4191	017434	012715 	002000 			MOV	#INT11C,@R5	;;;ALLOW MORE DOORBELLS AND
   4192	017440	000612 				BR	50$		;;;ACKNOWLEDGE THE COMMAND.
   4193					;
   4194					;	OUTPUT A CHARACTER TO THE CTY (FUNCTION 10)
   4195					;
   4196	017442				95$:
   4197	017442	116037 	000002 	020162'		MOVB	DXWD3(R0),QPROAD ;;;OUTPUT A CHARACTER
   4198	017450					.ENB6			;;;ENABLE INTERRUPTS
	017450	012637 	177776 			MOV	(SP)+,@#PS
   4199	017454					DIR$	#QPROMS		;OUTPUT CHARACTER
	017454	012746 	020140'			MOV	#QPROMS,-(SP)
	017460	104375 				EMT	375
BOOT -- BOOT PROTOCOL HANDLER	MACRO M1113  03-APR-86 20:41  PAGE 81-4
SECONDARY PROTOCOL -- BOOT PROTOCOL SERVICE

   4200	017462					.INH6			;INHIBIT INTERRUPTS
	017462	013746 	177776 			MOV	@#PS,-(SP)
	017466	112737 	000300 	177776 		MOVB	#300,@#PS
   4201	017474	012760 	177776 	000002 		MOV	#-2,DXWD3(R0)	;;;ACKNOWLEDGE CHARACTER OUTPUT
   4202	017502	012760 	014000 	000010 		MOV	#DEP!PRTOFF!EPTR,TNAD1(R0) ;;; +001 SET DEPOSIT
   4203	017510	012760 	000455 	000012 		MOV	#DTEMTD,TNAD2(R0) ;;;START TRANSFER TO INDICATE CHARACTER OUTPUT
   4204	017516					CALL	..WFED		;;; [4.1.1121] WAIT FOR EXAMINE DEPOSIT
	017516	004737 	047454'			JSR	PC,..WFED
   4205	017522	103707 				BCS	87$		;;;WHOOPS !
   4206	017524	012715 	000400 			MOV	#TO10DB,@R5	;;;CLEAR THE 11 DOORBELL AND SET THE 10'S DOORBELL
   4207	017530	000621 				BR	70$		;;;CONTINUE POLLING
   4208
   4209					;
   4210					;	SEND DATE/TIME INFO (FUNCTION 13)
   4211					;
   4212	017532				97$:
   4213	017532	005060 	000006 			CLR	DXWD1(R0)	;;; [**]
   4214	017536	016001 	000004 			MOV	DXWD2(R0),R1	;;; [**]
   4215	017542	013760 	001140'	000004 		MOV	.DATE,DXWD2(R0)	;;; [**]
   4216	017550	013760 	001142'	000002 		MOV	.YEAR,DXWD3(R0)	;;; [**]
   4217	017556					CALL	98$		;;; [**]
	017556	004737 	017634'			JSR	PC,98$
   4218	017562	103667 				BCS	87$		;;; [**]
   4219	017564	013760 	001144'	000004 		MOV	.DAY,DXWD2(R0)	;;; [**]
   4220	017572	013760 	001146'	000002 		MOV	.DST,DXWD3(R0)	;;; [**]
   4221	017600					CALL	98$		;;; [**]
	017600	004737 	017634'			JSR	PC,98$
   4222	017604	103656 				BCS	87$		;;; [**]
   4223	017606	013760 	001150'	000004 		MOV	.SSM,DXWD2(R0)	;;; [**]
   4224	017614	013760 	001152'	000002 		MOV	.SSM+2,DXWD3(R0)  ;;; [**]
   4225	017622					CALL	98$		;;; [**]
	017622	004737 	017634'			JSR	PC,98$
   4226	017626	103645 				BCS	87$		;;; [**]
   4227	017630	000137 	017072'			JMP	55$		;;; [**]
   4228	017634				98$:
   4229	017634	012760 	014000 	000010 		MOV	#DEP!EPTR!PRTOFF,TNAD1(R0)	;;; [**]
   4230	017642	010160 	000012 			MOV	R1,TNAD2(R0)	;;; [**]
   4231	017646					CALL	..WFED		;;; [**]
	017646	004737 	047454'			JSR	PC,..WFED
   4232	017652	005201 				INC	R1		;;; [**]
   4233	017654					RETURN			;;; [**]
	017654	000207 				RTS	PC
   4234
   4235					;
   4236					;	CHANGE PROTOCOL TO PRIMARY (FUNCTION 12)
   4237					;
   4238	017656				100$:
   4239	017656	005037 	001402'			CLR	.DTBLK		;;; [4.1.1121] DTE-20 IS NO LONGER BLOCKED
   4240	017662	005002 				CLR	R2		;;; +++006 NEED ACKNOWLEGE
   4241	017664	042737 	006000 	001012'		BIC	#EF.PFR!EF.CRI,.COMEF+2 ;;; +++007 GUARD AGAINST SPURIOUS POWERFAIL
   4242									;;; +++008 DECLARE COMM REGION VALID
   4243	017672	032760 	000001 	000002 		BIT	#1,DXWD3(R0)	;;;CHECK FOR RE-INIT
   4244	017700	001451 				BEQ	120$		;;; +++006 NO
   4245	017702				110$:
   4246	017702	010046 				MOV	R0,-(SP)
   4247	017704				113$:
   4248	017704	013704 	001334'			MOV	TO10Q,R4	;;; +003 Q LISTHEAD TO R4
BOOT -- BOOT PROTOCOL HANDLER	MACRO M1113  03-APR-86 20:41  PAGE 81-5
SECONDARY PROTOCOL -- BOOT PROTOCOL SERVICE

   4249	017710	022704 	001334'			CMP	#TO10Q,R4	;;; +003 DONE?
   4250	017714	001416 				BEQ	112$		;;; +003 YES -- LEAVE
   4251	017716					CALL	..NDEL		;;; +003 NO -- REMOVE THIS ENTRY FROM Q
	017716	004737 	045320'			JSR	PC,..NDEL
   4252	017722	005764 	000012 			TST	12(R4)		;;; +003 TEST INDIRECT INDICATOR
   4253	017726	003003 				BGT	111$		;;; +003 NOT INDIRECT -- GO ON
   4254	017730	056474 	000024 	000026 		BIS	24(R4),@26(R4)	;;; +003 INDIRECT -- DECLARE XFER COMPLETE
   4255	017736				111$:
   4256	017736	010400 				MOV	R4,R0		;;; +003 SET UP TO
   4257	017740	016001 	000004 			MOV	4(R0),R1	;;; +003 RETURN CORE BLOCK
   4258	017744					CALL	..DECB		;;; +003 RETURN IT
	017744	004737 	046010'			JSR	PC,..DECB
   4259	017750	000755 				BR	113$		;;; +003 DO NEXT ENTRY IN Q
   4260						;
   4261	017752				112$:
   4262	017752	005037 	001332'			CLR	TO10QC		;;; +003 DONE -- CLEAR CURRENT COUNTS
   4263	017756	005037 	001262'			CLR	.CPDV		;;; CLEAR CURRENT TO-10 DEVICE
   4264	017762	013700 	001270'			MOV	.CRHD,R0	;;; GET CURRENT NODE
   4265	017766	062700 	000010 			ADD	#10,R0		;;; POINT TO DATA AREA
   4266	017772	010037 	001266'			MOV	R0,.CRPB	;;; AND SET BUFFER POINTER.
   4267	017776	005060 	177776 			CLR	-2(R0)		;;; CLEAR ENTRY COUNT
   4268	020002	016000 	177774 			MOV	-4(R0),R0	;;; GET LENGTH OF NODE
   4269	020006	162700 	000012 			SUB	#10.,R0		;;; ADJUST,
   4270	020012	010037 	001264'			MOV	R0,.CRSZ	;;; AND SET BUFFER SIZE.
   4271	020016	005037 	001256'			CLR	.CRQZ		;;; NOTHING ENTERED YET.
   4272	020022	012600 				MOV	(SP)+,R0
   4273	020024				120$:				;;; +++005
   4274	020024	105037 	001401'			CLRB	TOXQIP		;;; [4.1.1035] RESET THE QUEUE INTERLOCK
   4275	020030					CLEF$S	#E.FPR2		;;;TURN SECONDARY PROTOCOL OFF
	020030	012746 	000076 			MOV	#E.FPR2,-(SP)
	020034	012746 				MOV	(PC)+,-(SP)
	020036	   037 	   002 			.BYTE	31.,2
	020040	104375 				EMT	375
   4276	020042					DTON$S			;;;ENABLE DTE20
	020042	012746 	000003 			MOV	#DF.ON,-(SP)
	020046	012746 	001011 			MOV	#400*2.+DR.DTE,-(SP)
	020052	104375 				EMT	375
   4277	020054	103002 				BCC	125$		;;; [**]
   4278	020056	000137 	017342'			JMP	87$		;;; +++006 LOST COMM REGION
   4279	020062				125$:
   4280	020062	005702 				TST	R2		;;; +++006 ACKNOWLEGE??
   4281	020064	001013 				BNE	130$		;;; +++006 NO -- GO ON
   4282	020066	012760 	177776 	000002 		MOV	#-2,DXWD3(R0)	;;; +++006 ACK THE COMMAND
   4283	020074	012760 	014000 	000010 		MOV	#DEP!EPTR!PRTOFF,TNAD1(R0) ;;; +++001 SET DEPOSIT
   4284	020102	012760 	000444 	000012 		MOV	#DTEFLG,TNAD2(R0)  ;;;  +++006 START IT
   4285	020110					CALL	..WFED		;;; [4.1.1121] WAIT FOR IT
	020110	004737 	047454'			JSR	PC,..WFED
   4286	020114				130$:				;;;  +++006
   4287	020114	012715 	000440 			MOV	#INTRON!TO10DB,@R5 ;;;ENABLE INTERRUPTS
   4288	020120					.ENB0			;;;ENABLE INTERRUPTS
	020120	004737 	045540'			JSR	PC,..ENB0
   4289	020124	005237 	001164'			INC	.ACKAL		;SEND ACK ALL
   4290	020130	005037 	005716'			CLR	.FEACT		;FE IS NOW AVAILABLE
   4291	020134	000137 	016562'			JMP	BTPRO		;WAIT FOR PROTOCOL REACTIVICATION.
   4292						;
   4293	020140				QPROMS:
   4294	020140					QIOW$	IO.WLB,1,2,0,0,0,<QPROAD,1,0>
BOOT -- BOOT PROTOCOL HANDLER	MACRO M1113  03-APR-86 20:41  PAGE 81-6
SECONDARY PROTOCOL -- BOOT PROTOCOL SERVICE

	020140	   003 	   011 			.BYTE	3,$$$ARG
	020142	000400 				.WORD	IO.WLB
	020144	000001 				.WORD	1
	020146	   002 	   000 			.BYTE	2,0
	020150	000000 				.WORD	0
	020152	000000 				.WORD	0
	020154	020162'				.WORD	QPROAD
	020156	000001 				.WORD	1
	020160	000000 				.WORD	0
   4295	020162				QPROAD:
   4296	020162	000000 				.WORD	0
BOOT -- BOOT PROTOCOL HANDLER	MACRO M1113  03-APR-86 20:41  PAGE 82
SECONDARY PROTOCOL -- BOOT PROTOCOL SERVICE

   4298
   4299						.TITLE	PF -- POWER FAIL HANDLER
   4300						.SBTTL	POWERFAIL HANDLER -- COPYRIGHT STATEMENT
   4301	020164					IDENT$	14,05
						.IDENT	/014050/
   4302					;
   4303					;                             COPYRIGHT (C) 1975, 1984, 1985 BY
   4304					;                     DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
   4305					;			ALL RIGHTS RESERVED.
   4306					;       THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE  USED  AND  COPIED
   4307					;       ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
   4308					;       OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR ANY OTHER COPIES THERE-
   4309					;       OF  MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
   4310					;       NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
   4311					;
   4312					;       THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT
   4313					;       NOTICE  AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
   4314					;       CORPORATION.
   4315					;
   4316					;       DIGITAL ASSUMES NO RESPONSIBILITY FOR THE  USE  OR  RELIABILITY  OF  ITS
   4317					;       SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
   4318					;
   4319					;		MODULE: "POWER FAIL"
   4320					;
   4321					;		VERSION: 14-05
   4322					;
   4323					;		AUTHOR: R. MCLEAN
   4324					;
   4325					;		DATE: 19 JUL 75
   4326					;
   4327					;
   4328					;	THIS MODULE CONTAINS:
   4329					;
   4330					;	1 -- CODE TO SUPPORT POWER FAIL
   4331					;
   4332					; MODIFICATIONS:
   4333					;
   4334					;	NO.	DATE		PROGRAMMER	REASON
   4335					;	---	----		----------	------
   4336					;	001	10-AUG-77	R. BELANGER	WAIT FOR KL CROBAR TO
   4337					;						SETTLE ON POWER RESTART
   4338					;	002	18-AUG-77	R. BELANGER	FLAG POWER RESTART
   4339					;  TCO 4.2205	08-MAR-79	R. BELANGER	RESET SENADALL DATABASE
   4340					;						ON POWER UP
   4341					;  TCO 4.2249	09-MAY-79	R. BELANGER	ALLOW POWER FAIL RECOVERY
   4342					;						TO COMPLETE BEFORE NOTIFYING KL10
   4343					;						MODIFY PARITY REGISTER INITIALIZATION
   4344					;						NOT NOT ALTER CPU PRIORITY ON TRAP
   4345
   4347						.MCALL	CALL,$DEF,.CRASH
   4348	020164					$DEF
PF -- POWER FAIL HANDLER	MACRO M1113  03-APR-86 20:41  PAGE 83
POWERFAIL -- POWER DOWN

   4351						.SBTTL	POWERFAIL -- POWER DOWN
   4352
   4353					;+
   4354					;	POWER FAILURE AND RECOVERY SERVICE
   4355					;
   4356					;	WHEN A POWER FAILURE TRAP OCCURS, THE VOLATILE REGISTERS
   4357					;	ARE SAVED AND THE TRAP VEECTOR FOR POWER UP IS SET.
   4358					;
   4359					;	IF POWER FAIL INTERRUPTS A PRI 7 (I/O INITALIZE OR DTE
   4360					;	EXAMINE/DEPOSIT) THEN .PFAIL IS SET AND RTI
   4361					;	IS EXECUTED.  ROUTINES WHICH BREAK DOWN FROM PRI7
   4362					;	MUST CHECK TO SEE IF .PFAIL IS SET AND JUMP TO
   4363					;	.PFRTN -- THIS WILL ALLOW THEM TO FINISH AND
   4364					;	STILL PROTECT POWERFAIL FROM FAILING
   4365					;
   4366					;
   4367					;	NOTE: POWERFAIL TRAP CANNOT BE INHIBITED.
   4368					;	POWER FAIL TRAP SERVICE CAN NOT USE ROUTINES THAT INHIBIT
   4369					;	INTERRUPTS TO AVOID RACE CONDITIONS
   4370					;
   4371					;	NOTE: ALL MEMORY IS ASSUMED TO BE NON-VOLATILE (IT CANNOT BE
   4372					;	SAVED IN THE TIME PERMITTED FOR POWER FAIL SAVE)
   4373					;
   4374					;	NOTE: A KL10 INITIATED FRONT-END RELOAD SIMULATES A POWER-FAIL
   4375					;	TRAP TO STOP THE FRONT-END
   4376					;
   4377					;	POWER DOWN ENTRY -- CONTROL IS TRANSFERRED HERE (VIA POWER
   4378					;	FAIL TRAP VECTOR) AT PRIORITY SEVEN.
   4379					;
   4380					;	STACK SUMMARY:
   4381					;
   4382					;	0(SP) -- POWERFAIL TRAP PC
   4383					;	2(SP) -- POWERFAIL TRAP PS
   4384					;	4(SP) -- BEGINNING OF INTERRUPTED PROCESS STACK
   4385					;-
   4386
   4387	020164				.PWRDN::
   4388	020164	052737 	006000 	001012'		BIS	#EF.PFR!EF.CRI,.COMEF+2 ; +++002 ALWAYS FLAG POWER FAIL (ALWAYS!)
   4389	020172	005237 	011370'			INC	.PFDBG		;[**]
   4390	020176	016646 	000002 			MOV	2(SP),-(SP)	;FIND THE PS
   4391	020202	042716 	177437 			BIC	#177437,@SP	;MASK OFF ALL BUT PRI
   4392	020206	022726 	000340 			CMP	#340,(SP)+	;IS IT PRI 7?
   4393	020212	001005 				BNE	10$		;NO -- THEN ACCEPT POWER FAIL
   4394	020214	005237 	001026'			INC	.PFAIL		;SET POWER FAIL ERROR
   4395	020220	105237 	001014'			INCB	.SERFG+0	; +++001 LEST WE FORGET...
   4396	020224	000006 				RTT			;RETURN TO CALLER
   4397
   4398	020226	013746 	000006 		10$:	MOV	@#6,-(SP)	;SAVE LOW CORE
   4399	020232	013746 	000004 			MOV	@#4,-(SP)
   4400	020236	012737 	020312'	000004 		MOV	#20$,@#4	;SET UP TO HALT IF FAKE POWER FAIL
   4401	020244	012737 	000340 	000006 		MOV	#340,@#6	;SET PRIORITY 7 IN ODD ADDRESS TRAP ADDRESS
   4402					;
   4403					; STACK SUMMARY:
   4404					;
   4405					;	 0(SP) -- SAVED ABSOLUTE 4
   4406					;	 2(SP) -- SAVED ABSOLUTE 6
   4407					;	 4(SP) -- POWERFAIL TRAP PC
PF -- POWER FAIL HANDLER	MACRO M1113  03-APR-86 20:41  PAGE 83-1
POWERFAIL -- POWER DOWN

   4408					;	 6(SP) -- POWERFAIL TRAP PS
   4409					;	10(SP) -- INTERRUPTED PROCESS STACK
   4410					;
   4411	020252	005737 	173000 			TST	.BM873		;IF NOT POWER FAIL THIS WILL TRAP TO 4
   4412									; AND IMMEDIATELY HALT AT "20$" BELOW,
   4413									; IN WHICH CASE THE TRAP PS/PC WILL BE ON STACK
   4414	020256	010046 				MOV	R0,-(SP)	;SAVE REGISTERS
   4415	020260	010146 				MOV	R1,-(SP)
   4416	020262	010246 				MOV	R2,-(SP)
   4417	020264	010346 				MOV	R3,-(SP)
   4418	020266	010446 				MOV	R4,-(SP)
   4419	020270	010546 				MOV	R5,-(SP)
   4420	020272	010637 	001032'			MOV	SP,PWRXSP	;SAVE STACK REGISTER
   4421	020276	012737 	020314'	000024 		MOV	#PWR.UP,@#24	;SET UP POWER UP TRAP VECTOR ADDRESS
   4422	020304	012737 	000006 	001034'		MOV	#6,CROBAR	; +++001 SET UP CROBAR COUNTER
   4423	020312	000000 			20$:	HALT
   4424					;
   4425					; CRASH (NON-POWERFAIL) STACK SUMMARY:
   4426					;
   4427					;	 0(SP) -- BM873 ROM TRAP PC
   4428					;	 2(SP) -- BM873 ROM TRAP PS
   4429					;	 4(SP) -- SAVED ABSOLUTE 4
   4430					;	 6(SP) -- SAVED ABSOLUTE 6
   4431					;	10(SP) -- POWERFAIL TRAP PC
   4432					;	12(SP) -- POWERFAIL TRAP PS
   4433					;	14(SP) -- INTERRUPTED PROCESS STACK
   4434					;
   4435					; THE TOP OF THIS STACK IS POINTED TO BY LOCATION 54 IN THE CRASH DUMP
PF -- POWER FAIL HANDLER	MACRO M1113  03-APR-86 20:41  PAGE 84
POWERFAIL -- POWER UP ENTRY

   4437						.SBTTL	POWERFAIL -- POWER UP ENTRY
   4438
   4439					;
   4440					;
   4441					;	POWER UP ENTRY
   4442					;
   4443	020314				PWR.UP::
   4444	020314	013706 	001032'			MOV	PWRXSP,SP	;RESTORE STACK POINTER
   4445	020320	012737 	020314'	000004 		MOV	#PWR.UP,@#4	; +++001 MAKE BUS TIMEOUT TRAP TO "PWR.UP"
   4446	020326	012737 	004340 	000006 		MOV	#4340,@#6
   4447	020334	005337 	001034'			DEC	CROBAR		; +++001 COUNT THIS ATTEMPT
   4448	020340	003003 				BGT	10$		; +++001 ALL OK IF STILL .GT. 0
   4449	020342					.CRASH	CBR		; +++001 CRASH IF MORE THAN ONE MINUTE
	020342	000004 				IOT
	020344	   103 	   102 	   122 		.ASCIZ	/CBR/
	020347	   000
   4450						;
   4451	020350				10$:
   4452	020350	013701 	001366'			MOV	.PRDTE,R1	; +++001 ADDRESS OF DTE20 TO R1
   4453	020354					CALL	20$		; +++001 WAIT FOR KL CROBAR
	020354	004737 	020474'			JSR	PC,20$
   4454	020360					CALL	20$		; +++001 AND BE VERY SURE OF IT
	020360	004737 	020474'			JSR	PC,20$
   4455	020364	012761 	000100 	000032 		MOV	#DRESET,DAG2(R1) ; +++001 RESET THE DTE20
   4456	020372	005037 	001026'			CLR	.PFAIL		;CLEAR POWER FAIL FLAG
   4457	020376	012737 	177777 	001030'		MOV	#-1,.PFIOW	;SET POWER FAIL BITS TO INTERRUPT ROUTINES
   4458	020404	012605 				MOV	(SP)+,R5	;RESTORE REGISTERS
   4459	020406	012604 				MOV	(SP)+,R4
   4460	020410	012603 				MOV	(SP)+,R3
   4461	020412	012602 				MOV	(SP)+,R2
   4462	020414	012601 				MOV	(SP)+,R1
   4463	020416	012600 				MOV	(SP)+,R0
   4464	020420	012637 	000004 			MOV	(SP)+,@#4	;RESTORE LOW CORE
   4465	020424	012637 	000006 			MOV	(SP)+,@#6
   4466	020430	012737 	020164'	000024 		MOV	#.PWRDN,@#24	;SET UP POWER DOWN TRAP AGAIN
   4467	020436	052737 	000100 	001126'		BIS	#KS.PFT,.KLITK	;FORCE POWER RESTART
   4468	020444	012737 	000401 	001122'		MOV	#401,.NOERR	;SET NO ERROR OR HALT
   4469	020452					CALL	..DTSP		;TURN OFF PROTOCOL TASKS
	020452	004737 	050226'			JSR	PC,..DTSP
   4470	020456	105237 	001124'			INCB	.TKTN		;TASK TERMINATION REQUEST
   4471	020462	152737 	000200 	001014'		BISB	#EV.PF,.SERFG+0	;INDICATE POWER FAIL & SIG EVENT
   4472	020470	000137 	015062'			JMP	..INTX		;RETURN TO INTERRUPTED ROUTINE
   4473						;
   4474	020474				20$:				; +++001
   4475	020474	012700 	000454 			MOV	#^D<5*60>,R0	; +++001 WAIT FOR CROWBAR TO SETTLE (5 SECONDS)
   4476	020500				30$:				; +++001
   4477	020500	105737 	177546 			TSTB	@#LKS		; +++001 CHECK WITH CLOCK
   4478	020504	100375 				BPL	30$		; +++001 WAIT FOR TICK
   4479	020506	105037 	177546 			CLRB	@#LKS		; +++001 CLEAR CLOCK FLAG
   4480	020512	077006 				SOB	R0,30$		; +++001 WAIT THE FULL COUNT
   4481	020514	005777 	160644 			TST	@.PRSTA		; +++001 LOOK AT DTE20 STATUS REGISTER
   4482									; +++001 IF NOT THERE (CROBAR TRUE) TRAP
   4483									; +++001 TO "PWR.UP", ELSE GO ON
   4484	020520					RETURN			; +++001 MADE IT -- RETURN
	020520	000207 				RTS	PC
PF -- POWER FAIL HANDLER	MACRO M1113  03-APR-86 20:41  PAGE 85
POWERFAIL -- POWER FAIL RESTART

   4486						.SBTTL	POWERFAIL -- POWER FAIL RESTART
   4487
   4488					;	.PFAIL INDICATES POWER FAIL IN PROGRESS
   4489					;	.PFIOW IS BIT ENCODED TO INDICATE POWER FAIL
   4490					;	OCCURED AND POWER UP RECOVERY IS NECESSARY
   4491
   4492	020522				.PFRST::
   4493	020522	000005 				RESET			; [**] DO A UNIBUS INIT
   4494	020524	013746 	000004 			MOV	@#4,-(SP)	; SAVE ABSOLUTE 4 (NEXM STOP)
   4495	020530	010046 				MOV	R0,-(SP)	; SAVE REGISTERS
   4496	020532	010146 				MOV	R1,-(SP)
   4497	020534	010246 				MOV	R2,-(SP)
   4498	020536	010346 				MOV	R3,-(SP)
   4499	020540	010446 				MOV	R4,-(SP)
   4500	020542	010546 				MOV	R5,-(SP)
   4501	020544	012737 	177777 	001030'		MOV	#-1,.PFIOW	; INDICATE POWER/FAIL TTY ENABLE
   4502	020552	012702 	002612'			MOV	#.SNDLP,R2	; [4.2205] INIT SENDALL POINTER
   4503	020556	012703 	000004 			MOV	#4,R3		; [4.2205] INIT SENDALL COUNTER
   4504	020562	005022 				CLR	(R2)+		; [4.2205] CLEAR SENDALL INDEX
   4505	020564				10$:
   4506	020564	005062 	000010 			CLR	10(R2)		; [4.2205] CLEAR SENDALL COUNT
   4507	020570	012200 				MOV	(R2)+,R0	; [4.2205] GET BUFFER POINTER
   4508	020572	001402 				BEQ	20$		; [4.2205] GO ON IF NULL
   4509	020574					CALL	..DECN		; [4.2205] DEALLOCATE THE BUFFER
	020574	004737 	046004'			JSR	PC,..DECN
   4510	020600				20$:
   4511	020600	077307 				SOB	R3,10$		; [4.2205] LOOP THROUGH ALL 4 NODES
   4512	020602					CALL	.DHTMO		; [4.2205] DO TIMEOUT
	020602	004737 	042030'			JSR	PC,.DHTMO
   4513	020606					CALL	.DLTMO
	020606	004737 	041520'			JSR	PC,.DLTMO
   4514	020612					CALL	.DMTMO
	020612	004737 	042336'			JSR	PC,.DMTMO
   4515	020616	005237 	006244'			INC	.LPPFL
   4516	020622	005237 	005736'			INC	.CRPFL
   4517	020626	005037 	002606'			CLR	.ABCNT
   4518	020632	005037 	002610'			CLR	.ABFLG
   4519	020636	105037 	001400'			CLRB	.PRPSE
   4520	020642	005037 	001030'			CLR	.PFIOW		; CLEAR POWER FAIL FLAG
   4521	020646	005037 	011370'			CLR	.PFDBG		;[**]
   4522	020652	012704 	000020 			MOV	#16.,R4		; SET UP TO RESTORE PARITY ERROR REGISTERS
   4523	020656	012705 	172100 			MOV	#.PARRG,R5	; SET UP THE ADDRESS OF THE REGISTERS
   4524	020662	012737 	020742'	000004 		MOV	#PARLOT,@#4	; [4.2249] SET UP 4 TO TRAP TO "PARLOT"
   4525
   4526						.ENABL	LSB
   4527
   4528	020670				PARLOA:
   4529	020670	012725 	000001 			MOV	#1,(R5)+	; [4.2249] ENABLE PARITY CHECKING
   4530	020674				10$:
   4531	020674	077403 				SOB	R4,PARLOA	; [4.2249] LOOP THROUGH ALL REGISTERS
   4532	020676	012605 				MOV	(SP)+,R5	; [4.2249] DONE -- RESTORE REGISTERS
   4533	020700	012604 				MOV	(SP)+,R4
   4534	020702	012603 				MOV	(SP)+,R3
   4535	020704	012602 				MOV	(SP)+,R2
   4536	020706	012601 				MOV	(SP)+,R1
   4537	020710	012600 				MOV	(SP)+,R0
   4538	020712	012637 	000004 			MOV	(SP)+,@#4	; [4.2249] RESTORE LOW CORE
PF -- POWER FAIL HANDLER	MACRO M1113  03-APR-86 20:41  PAGE 85-1
POWERFAIL -- POWER FAIL RESTART

   4539	020716	042737 	004000 	001012'		BIC	#EF.PFR,.COMEF+2 ; [4.2249] CLEAR POWERFAIL IN PROGRESS FLAG
   4540	020724	012737 	000100 	177546 		MOV	#.INTEN,@#LKS	; [4.2249] ENABLE CLOCK
   4542	020732	012777 	000400 	160424 		MOV	#TO10DB,@.PRSTA	; [4.2249] RING THE DOORBELL TO TELL 10 WE ARE HERE AND READY
   4544	020740					RETURN			; [4.2249] RETURN TO CALLER
	020740	000207 				RTS	PC
   4545					;
   4546					; HERE ON A TRAP FROM A NON-EXISTENT PARITY REGISTER
   4547					;
   4548	020742				PARLOT:
   4549	020742	032626 				BIT	(SP)+,(SP)+	; [4.2249] FLUSH THE TRAP PS/PC
   4550	020744	000753 				BR	10$		; [4.2249] AND CONTINUE THROUGH ALL REGISTERS
   4551						;
   4552
   4553						.DSABL	LSB
PF -- POWER FAIL HANDLER	MACRO M1113  03-APR-86 20:41  PAGE 86
POWERFAIL -- POWER FAIL RESTART

   4555
   4556
   4557						.TITLE	DMDTE	- DTE DIRECTIVES MODULE
   4558						.SBTTL	DTE DIRECTIVES -- COPYRIGHT STATEMENT
   4559	020746					IDENT$	RSX$$V,RSX$$E,RSX$$F
						.IDENT	/A15500/
   4560					;
   4561					;                             COPYRIGHT (C) 1975, 1984, 1985 BY
   4562					;                     DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
   4563					;			ALL RIGHTS RESERVED.
   4564					;       THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE  USED  AND  COPIED
   4565					;       ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
   4566					;       OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR ANY OTHER COPIES THERE-
   4567					;       OF  MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
   4568					;       NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
   4569					;
   4570					;       THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT
   4571					;       NOTICE  AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
   4572					;       CORPORATION.
   4573					;
   4574					;       DIGITAL ASSUMES NO RESPONSIBILITY FOR THE  USE  OR  RELIABILITY  OF  ITS
   4575					;       SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
   4576					;
   4577					;		MODULE: "DTE20" DIRECTIVE
   4578					;
   4579					;		VERSION: 14-45
   4580					;
   4581					;		AUTHOR: R. MCLEAN
   4582					;
   4583					;		DATE: 19 MAR 75
   4584					;
   4585					;
   4586					;	THIS MODULE CONTAINS:
   4587					;
   4588					;	1 --  CODE TO SERVICE THE DTE20 EMT SERVICE
   4589					;
   4590					; MODIFICATIONS:
   4591					;
   4592					;	NO.	DATE		PROGRAMMER	PURPOSE
   4593					;	---	----		----------	-------
   4594					;	001	14-MAR-77	R. BELANGER	CONDITIONALLY REMOVE UNUSED
   4595					;						DTE-20 EMT SERVICES
   4596					;	002	01-APR-77	A. PECKHAM	FIX BUG IN "$DTEON"
   4597					;	003	18-AUG-77	R. BELANGER	FIX "$DTEON" TO RETURN CORRECT STATUS
   4598					;						AND NOT START PRIMARY PROTOCOL IF
   4599					;						"..SWED" FAILS.
   4600					;	004	21-FEB-78	R. BELANGER	FIX "$DTEON" TO SET UP
   4601					;						"PROTBL" PROPERLY.
   4602					;  TCO 4.2107	06-DEC-78	R. BELANGER	INITIALIZE KEEP-ALIVE DATA-BASE
   4603					;						IN "$DTEON".
   4604					; TCO 4.1.1105	11-MAR-80	R. BELANGER	CHANGE "EF.PR1" RECOGNITION
   4605					; TCO 4.1.1121	19-MAR-80	R. BELANGER	SUPPORT BLOCKED DTE-20
   4606					; TCO 4.1.1137	05-APR-80	R. BELANGER	REMOVE RESTRICTED DTE-20 SUPPORT
   4607					;
   4608					;19-JAN-83  TCO 6.1508	D. WEAVER
   4609					;	GET THE CPU NUMBER OF THE KL WE ARE RUNNING AND STORE IN .KLCPU
   4610					;	SO WE CAN DO WARM RESTART ON SMP SYSTEMS (USED BY KLINIT)
DMDTE	- DTE DIRECTIVES MODULE	MACRO M1113  03-APR-86 20:41  PAGE 86-1
DTE DIRECTIVES -- COPYRIGHT STATEMENT

   4611					;
   4612
   4613					;	MACRO CALLS
   4614
   4615						.MCALL	CALL,RETURN,MFPI,MTPI,MFPS,MTPS,.CRASH,.INH,.ENB,$DEF
   4616
   4617	020746					$DEF
DMDTE	- DTE DIRECTIVES MODULE	MACRO M1113  03-APR-86 20:41  PAGE 87
DTE20 EMT DISPATCH DECODER

   4619						.SBTTL	DTE20 EMT DISPATCH DECODER
   4620					;
   4621					;	CALLED BY EMT DISPATCH
   4622					;	THIS ROUTINE DECODES THE SPECIFIC DTE FUNCTION CODE
   4623					;	AND DISPATCHES TO THE CORRECT FUNCTION
   4624					;
   4625					;	ENTRY CONDITIONS:
   4626					;
   4627					;	R1 -- ADDRESS OF DPB
   4628					;	R2 -- SIZE OF DPB
   4629					;	R3 -- DIRECTIVE IDENTIFICATION CODE
   4630					;	R5 -- ATL NODE ADDRESS OF ISSUING TASK (.CRTSK)
   4631					;
   4632					;	REGISTERS SAVED AND RESTORED BY EMT SERVICE
   4633					;
   4634					;	R0,R1,R2,R3,R4,R5
   4635					;
   4636					;	REGISTERS FOR USER AND DOES NOT REQUIRE EMT SERVICE
   4637					;	ROUTINES TO SAVE EMT'S REGISTERS.
   4638					;
   4639					;	EXIT TO DTE EMT SERVICE ROUTINE CONDITIONS:
   4640					;
   4641					;	3(SP) -- FUNCTION CODE PLUS HIGH ORDER BYTE OF SECOND WORD  OF DPB
   4642					;	R0 -- POINTER TO EXAMINE/DEPOSIT ADDRESSES
   4643					;	R1 -- WORD 5 OF DPB
   4644					;	R2 -- WORD 3 OF DPB
   4645					;	R3 -- WORD 4 OF DPB
   4646					;	R4 -- ADDRESS OF DPB
   4647					;	R5 -- ATL NODE ADDRESS OF ISSUING TASK (.CRTSK)
   4648					;
   4649					;
   4650					;
   4651	020746				.D.DTE::
   4652	020746	005046 				CLR	-(SP)
   4653	020750	005046 				CLR	-(SP)
   4654	020752	010146 				MOV	R1,-(SP)	;SAVE POINTER TO DPB FOR R4
   4655	020754					MFPS	(R1)+,R0	;PUT THE FUNCTION CODE IN R0
	020754	012100 				MOV	(R1)+,R0
   4656	020756	150066 	000002 			BISB	R0,2(SP)
   4657	020762	105000 				CLRB	R0
   4658	020764	010066 	000004 			MOV	R0,4(SP)
   4659	020770	010204 				MOV	R2,R4		;SAVE SIZE OF DPB
   4660	020772	005046 				CLR	-(SP)		;SET DEFAULT PROCESSOR NUMBER
   4661	020774	162704 	000002 			SUB	#2,R4		;CHECK COUNT OF PARAMETERS
   4662	021000	001407 				BEQ	10$		;IF ZERO REGISTERS DON'T NEED BE SET UP (NO PARAMS)
   4663	021002					MFPS	(R1)+,R2	;MOVE THE CPU ADDRESS
	021002	012102 				MOV	(R1)+,R2
   4664	021004					MFPS	(R1)+,R3	;MOVE IN OFFSET ADDRESS TO COMM AREA
	021004	012103 				MOV	(R1)+,R3
   4665	021006	162704 	000002 			SUB	#2,R4		;CHECK TO SEE IF CPU PARAMETER
   4666	021012	001402 				BEQ	10$		;NO -- DON'T ATTEMPT TO SET REGISTER
   4667	021014					MFPS	(R1)+,@SP	;YES -- SET CPU NUMBER
	021014	012116 				MOV	(R1)+,@SP
   4668	021016	001031 				BNE	CPUERR		; [4.1.1137] ERROR IF NOT CPU 0
   4669	021020				10$:
   4670	021020	012601 				MOV	(SP)+,R1	;SET CPU NUMBER
   4671	021022	012604 				MOV	(SP)+,R4
DMDTE	- DTE DIRECTIVES MODULE	MACRO M1113  03-APR-86 20:41  PAGE 87-1
DTE20 EMT DISPATCH DECODER

   4672	021024	012700 	001244'			MOV	#PROTBL,R0	; [4.1.1137] FIND PROCESSOR BLOCK
   4673	021030	006316 				ASL	@SP		;MULTIPLY FUNCTION CODE BY 2 TO FORM OFFSET
   4674	021032	062716 	021042'			ADD	#DTEDSP-2,@SP	;POINT INTO DISPATCH TABLE
   4675	021036	017616 	000000 			MOV	@(SP),@SP
   4676	021042	000136 				JMP	@(SP)+		;GO TO ROUTINE AND REMOVE ELEMENTFROM STACK
   4677						;
   4678	021044	021104'			DTEDSP:	.WORD	$DORBL		;RING DORBELL (FUNCTION CODE 1)
   4679	021046	021106'				.WORD	$DTEOF		;TURN OFF DTE20 (FUNCTION CODE 2)
   4680	021050	021114'				.WORD	$DTEON		;TURN ON DTE20 (FUNCTION CODE 3)
   4681	021052	021536'				.WORD	$DPMYG		;DEPOSIT MY GENERAL SECTION (FUNCTION CODE 4)
   4682	021054	021570'				.WORD	$EXMYG		;EXAMINE MY GENERAL SECTION (FUNCTION CODE 5)
   4683	021056	021600'				.WORD	$EXMYN		;EXAMINE MY SECTION FOR CPU N (FUNCTION CODE 6)
   4684	021060	021606'				.WORD	$DPMYN		;DEPOSIT MY SECTION FOR CPU N (FUNCTION CODE 7)
   4685	021062	021614'				.WORD	$EXHSG		;EXAMINE HIS GENERAL COMM (FUNCTION CODE 10)
   4686	021064	021622'				.WORD	$EXHSM		;EXAMINE HIS SECTION FOR ME (FUNCTION CODE 11)
   4687	021066	021630'				.WORD	$KLDFR		;START KL10 DIAGNOSTIC FUNCTION READ
   4688	021070	021770'				.WORD	$KLDFW		;START KL10 DIAGNOSTIC FUNCTION WRITE
   4689	021072	021746'				.WORD	$KLDFX		;START KL10 DIAGNOSTIC FUNCTION (FUNCTION CODE 12)
   4690	021074	022102'				.WORD	$PRVEX		;PRIVILEDGED EXAMINE (FUNCTION 13)
   4691	021076	022066'				.WORD	$PRVDP		;PRIVILEDGED DEPOSIT (FUNCTION 14)
   4692	021100	022136'				.WORD	$RWDRG		;READ/WRITE DIAGNOSTIC REGISTER (FUNCTION 15)
   4693						;
   4694	021102				CPUERR:
   4695	021102	104776 				TRAP	DE.02		; ILLEGAL CPU
   4696						;
DMDTE	- DTE DIRECTIVES MODULE	MACRO M1113  03-APR-86 20:41  PAGE 88
$DORBL -- RING THE KL-10 DOORBELL

   4698						.SBTTL	$DORBL -- RING THE KL-10 DOORBELL
   4699
   4700					;+
   4701					;	$DORBL -- RING THE DOORBELL OF THE KL-10 SPECIFIED
   4702					;
   4703					;		* * *  U N S U P P O R T E D  F U N C T I O N  * * *
   4704					;
   4705					;-
   4706
   4707	021104				$DORBL::
   4724
   4725	021104	104635 				TRAP	DE.99		; +++001 THIS ISN'T HERE
   4726						;
DMDTE	- DTE DIRECTIVES MODULE	MACRO M1113  03-APR-86 20:41  PAGE 89
$DTEOF -- TURN THE DTE20 OFF

   4729						.SBTTL	$DTEOF -- TURN THE DTE20 OFF
   4730
   4731					;+
   4732					;	$DTEOF -- TURN OFF THE DTE20
   4733					;
   4734					;	CALLING SEQUENCE:
   4735					;
   4736					;	JMP	$DTEOF
   4737					;
   4738					;	EXIT CONDITIONS:
   4739					;
   4740					;	R0 --1 TO INDICATE SUCCESS
   4741					;	CC-C CLEAR TO INDICATE SUCCESS
   4742					;
   4743					;	ERROR CONDITIONS: NONE
   4744					;
   4745					;	REGISTERS SAVED AND RESTORED BY EMT SERVICE
   4746					;-
   4747
   4748	021106				$DTEOF::
   4761	021106					CALL	..DTP2		;+ START UP SECONDARY PROTOCOL.
	021106	004737 	050244'			JSR	PC,..DTP2
   4762	021112	104401 				TRAP	DR.01		;RETURN STATUS OK
   4763						;
DMDTE	- DTE DIRECTIVES MODULE	MACRO M1113  03-APR-86 20:41  PAGE 90
$DTEON -- TURN THE DTE20 ON

   4765						.SBTTL	$DTEON -- TURN THE DTE20 ON
   4766
   4767					;+
   4768					;	$DTEON -- TURN ON THE DTE20
   4769					;	THIS ROUTINE WILL SET UP THE TABLES NECESSARY TO
   4770					;	INITALIZE THE COMMUNICATON BETWEEN THE PDP10 AND PDP11'S
   4771					;
   4772					;	CALLING SEQUENCE:
   4773					;
   4774					;	JMP	$DTEON
   4775					;
   4776					;	EXIT CONDITIONS:
   4777					;
   4778					;	R0 --1 TO INDICATE SUCCESS
   4779					;	CC-C CLEAR TO INDICATE SUCCESS
   4780					;
   4781					;	ERROR CONDITIONS:
   4782					;
   4783					;	R0 -2 -- E BOX STOPPED
   4784					;	CC-C SET
   4785					;
   4786					;	REGISTERS SAVED AND RESTORED BY EMT SERVICE
   4787					;-
   4788
   4789	021114				$DTEON::
   4790	021114	010546 				MOV	R5,-(SP)
   4791	021116	011000 				MOV	(R0),R0		;;; [4.1.1137] FIND THE COMMON DTE20
   4792	021120	005001 				CLR	R1		;;;SET UP TO FIND PROCESSOR NUMBER
   4793	021122	005002 				CLR	R2		;;;START TRANSFER OF ABS WORD 0 OF EPT (MY PROCESSOR NUMBER
   4794	021124	012703 	001354'			MOV	#DEXTM3,R3	;;;SET UP ADDRESS TO STORE WORDS
   4795	021130					CALL	..SWED		;;; [4.1.1121] WAIT FOR EXAMINE/DEPOSIT
	021130	004737 	050126'			JSR	PC,..SWED
   4796	021134	103417 				BCS	1$		;;;E BOX STOP
   4797	021136	011304 				MOV	@R3,R4		;;;YES --FIND OFFSET TO MY R/W AREA
   4798	021140	113702 	001357'			MOVB	@#DEXTM2+1,R2	;;;FIND THE PROCESSOR NUMBER
   4799									;;; PROCESSOR NUMBER TO LOW ORDER BITS
   4800	021144	042702 	177740 			BIC	#^C37,R2	;;;MASK OFF JUNK(0.-31. LEGAL)
   4801	021150	010237 	001240'			MOV	R2,PRMEMN	;;;SAVE PROCESSOR NUMBER
   4802	021154	005202 				INC	R2		;;;FIND COMMUNICATIONS VIRTUAL 2
   4803	021156	010237 	001236'			MOV	R2,COMBSE	;;;SAVE BASE OF COMMUNICATIONS AREA
   4804	021162	060402 				ADD	R4,R2		;;;ADD OFFSET TO BASE OF COMM AREA
   4805	021164	010237 	001242'			MOV	R2,DEPOF	;;;SET CORRECT OFFSETT
   4806	021170					CALL	..SWED		;;; [4.1.1121] WAIT FOR TRANSFER
	021170	004737 	050126'			JSR	PC,..SWED
   4807	021174				1$:
   4808	021174	103555 				BCS	80$		;;; +++003
   4809	021176				2$:
   4810	021176	013705 	001356'			MOV	@#DEXTM2,R5	;;;PICK UP THE NUMBER OF 8 TM BLOCKS
   4811	021202	042705 	177770 			BIC	#177770,R5	;;;FIND THE NUMBER OF 8 WORD BLOCKS IN MY AREA
   4812	021206	162705 	000002 			SUB	#2,R5		;;;ACCOUNT FOR MY GENERAL SECTION
   4813	021212	010246 				MOV	R2,-(SP)
   4814	021214	010546 				MOV	R5,-(SP)	;;;SAVE COUNT OF BLOCKS
   4815	021216	062702 	000002 			ADD	#CPUNUM,R2	;;;[TCO?] GET THE CPU # OF OUR KL
   4816	021222					CALL	..SWED		;;;WAIT FOR TRANSFER
	021222	004737 	050126'			JSR	PC,..SWED
   4817	021226	113737 	001354'	001176'		MOVB	DEXTM3,.KLCPU	;;;SAVE CPU NUMBER FOR KLINIT
   4818	021234	113737 	001360'	001177'		MOVB	DEXTM1,.KLMON	;;;SAVE MONITOR TYPE (FOR FUTURE)
DMDTE	- DTE DIRECTIVES MODULE	MACRO M1113  03-APR-86 20:41  PAGE 90-1
$DTEON -- TURN THE DTE20 ON

   4819	021242				16$:
   4820									;;; +++002
   4821	021242	062766 	000020 	000002 		ADD	#FORPRO,2(SP)	;;;LOOK AT A COMMUNICATIONS AREA TO ANOTHER PROCESSOR
   4822	021250	016602 	000002 			MOV	2(SP),R2
   4823	021254					CALL	..SWED		;;; [4.1.1121] WAIT FOR TRANSFER
	021254	004737 	050126'			JSR	PC,..SWED
   4824	021260	103523 				BCS	80$		;;; +++003 E BOX STOPPED
   4825	021262	011304 				MOV	@R3,R4		;;;FIND PROCESSOR NUMBER
   4826	021264	012705 	001244'			MOV	#PROTBL,R5	;SET INITIAL POINTER
   4827	021270	042704 	177770 			BIC	#177770,R4	;;;MASK OFF JUNK
   4828
   4835
   4836	021274				19$:
   4837	021274	013704 	001356'			MOV	@#DEXTM2,R4	;;;FIND NUMBER OF 8 WORD BLOCS
   4838	021300	042704 	177770 			BIC	#177770,R4	;;;MASK OFF POSSIBLE GARBAGE
   4839	021304	160416 				SUB	R4,@SP		;;;UPDATE COUNT OF BLOCKS
   4840	021306	005015 				CLR	@R5		;;;SET UP TO CLEAR TABLE IF NO DTE
   4841	021310	013704 	001360'			MOV	@#DEXTM1,R4	;;;PICK UP DTE NUMBER
   4842	021314	032704 	000004 			BIT	#4,R4		;;;DTE HERE?
   4843	021320	001422 				BEQ	20$		;;;NO -- DON'T ENTER IN TABLE
   4844	021322	000304 				SWAB	R4		;;;MAKE MOD 40 (8)
   4845	021324	006004 				ROR	R4
   4846	021326	006004 				ROR	R4
   4847	021330	006004 				ROR	R4
   4848	021332	042704 	177637 			BIC	#177637,R4	;;;MASKOFF JUNK
   4849	021336	062704 	174400 			ADD	#174400,R4	;;;POINT TO FIRST BLOCK OF DTE'S
   4850	021342	020437 	001366'			CMP	R4,.PRDTE	;;;PRIMARY DTE?
   4851	021346	001002 				BNE	10$		;;;NO -- DON'T SET TABLE POINTER
   4852	021350	010537 	001362'			MOV	R5,.PRADR	;;;SAVE TABLE OFFSET
   4853	021354				10$:
   4854	021354	010415 				MOV	R4,@R5		;;;SET DTE ADDRESS IN TABLE
   4855	021356	005014 				CLR	@R4		 ;;; [4.1.1105] SET UP DELAY COUNTER
   4856	021360	012764 	000040 	000034 		MOV	#INTRON,STATD(R4) ;;;YES -- ENABLE INTERRUPT ON IT
   4857	021366				20$:
   4858	021366	010265 	000002 			MOV	R2,EMYN(R5) 	;;;SET THE ADDRESS OF EXAMINE MY AREA FOR N
   4859									;;;MAKE ADDRESS OF THE ADDRESS OF DEPOSIT MY AREA FOR N
   4860	021372	010265 	000004 			MOV	R2,DMYN(R5) 	;;;STORE IT
   4861	021376	163765 	001242'	000004 		SUB	DEPOF,DMYN(R5) 	;;;RESTORE ADDRESS FOR EXAMINE OF THIS BLOCK
   4862	021404	062702 	000001 			ADD	#PROPNT-FORPRO,R2 ;;;READ POINTER TO HIS COMM AREA
   4863	021410					CALL	..SWED		;;; [4.1.1121] WAIT FOR EXAMINE/DEPOSIT
	021410	004737 	050126'			JSR	PC,..SWED
   4864	021414	103445 				BCS	80$		;;; +++003 E BOX STOPPED
   4865	021416	011302 				MOV	@R3,R2		;;;FIND THE EXAMINE ADDRESS
   4866	021420	063702 	001236'			ADD	COMBSE,R2	;;;ADD OFFSET TO COMMON AREA
   4867	021424	010265 	000006 			MOV	R2,EHSG(R5) 	;;;SET EHSG ADDRESS IN TABLE
   4868	021430	062702 	000020 			ADD	#FORPRO,R2	;;;POINT TO HIS FIRST TABLE FOR OTHER PROCESSORS
   4869	021434				50$:
   4870	021434					CALL	..SWED		;;; [4.1.1121] WAIT FOR EXAMINE/DEPOSIT
	021434	004737 	050126'			JSR	PC,..SWED
   4871	021440	103433 				BCS	80$		;;; +++003
   4872	021442	123713 	001240'			CMPB	PRMEMN,@R3 	;;;SAME PROCESSOR NUMBER?
   4873	021446	001411 				BEQ	60$		;;;YES -- FOUND MY ENTRY
   4874	021450	013704 	001356'			MOV	@#DEXTM2,R4	;;;NO -- FIND NEXT ENTRY IN LIST
   4875	021454	042704 	177770 			BIC	#177770,R4	;;;IT IS IN 8 WORD INCREMENTS
   4876	021460	006304 				ASL	R4		;;;SO IT MUST BE SHIFTED LEFT 3 BITS
   4877	021462	006304 				ASL	R4		;;;
   4878	021464	006304 				ASL	R4		;;;
DMDTE	- DTE DIRECTIVES MODULE	MACRO M1113  03-APR-86 20:41  PAGE 90-2
$DTEON -- TURN THE DTE20 ON

   4879	021466	060402 				ADD	R4,R2		;;;READ NEXT BLOCK
   4880	021470	000761 				BR	50$		;;;AND TRY AGAIN
   4881						;
   4882	021472				60$:
   4883	021472	010265 	000010 			MOV	R2,EHSM(R5)	;;;STORE EHSM ADDRESS
   4884	021476	011605 				MOV	@SP,R5		;;;DONE ALL BLOCKS??
   4885	021500	101260 				BHI	16$		;;; +++002 NO -- TRY NEXT BLOCK
   4886	021502				70$:
   4887	021502	112737 	000005 	001416'		MOVB	#.KALSC,.KPAC+0	;;; [4.2107] INIT KEEP-ALIVE TIMER
   4888	021510	112737 	000001 	001417'		MOVB	#1,.KPAC+1	;;; [4.2107] AND RETRY COUNTER
   4889	021516	013737 	001404'	001412'		MOV	KPAL0,OKPAL0	;;; [4.2107] INIT LAST KEEP ALIVE COUNT
   4890	021524					CALL	..DTP1		;;;START THE PRIMARY PROTOCOL TASK
	021524	004737 	050274'			JSR	PC,..DTP1
   4891	021530				80$:				;;; +++003
   4892	021530	012605 				MOV	(SP)+,R5	;;; +++003 RESTORE R5
   4893	021532	000137 	013710'			JMP	.DR.NS		;RETURN STATUS IN R0
   4894						;
DMDTE	- DTE DIRECTIVES MODULE	MACRO M1113  03-APR-86 20:41  PAGE 91
$DPMYG -- DEPOSIT INTO MY GENERAL SECTION

   4896						.SBTTL	$DPMYG -- DEPOSIT INTO MY GENERAL SECTION
   4897
   4898					;+
   4899					;	$DPMYG -- DEPOSIT INTO MY GENERAL SECTION WITH PROCESSOR N
   4900					;
   4901					;	ENTRY CONDITIONS:
   4902					;
   4903					;	R2 -- ADDRESS OF PDP-10 LOCATION TO TRANSFER  RELATIVE TO MY GEN REGION
   4904					;	R3 -- ADDRESS OF PDP-11 CORE ADDRESS TO WRITE FROM
   4905					;	CALLING SEQUENCE:
   4906					;
   4907					;	JMP		$DPMYG
   4908					;
   4909					;	EXIT CONDITIONS:
   4910					;
   4911					;	R0 -- +1 TRANSFER COMPLETED
   4912					;	CC-C CLEAR -- TRANSFER COMPLETED
   4913					;
   4914					;	ERROR CONDITIONS:
   4915					;
   4916					;	CC-C SET
   4917					;
   4918					;	R0 -2  -- E BOX STOPPED
   4919					;	R0 -3 -- SECONDARY PROTOCOL IN USE
   4920					;
   4921					;	REGISTERS SAVED AND RESTORED BY EMT SERVICE
   4922					;-
   4923
   4924	021536				$DPMYG::
   4925	021536	005001 				CLR	R1
   4926	021540				DPCMN:
   4927	021540	052701 	010000 			BIS	#DEP,R1		;;;SET DEPOSIT BIT IN ADDRESS WORD
   4928	021544				CMEDP:
   4929	021544	005737 	001012'			TST	.COMEF+2	;;; [4.1.1105] PRIMARY PROTOCOL RUNNING?
   4930	021550	100006 				BPL	DPMSEP		;;; [4.1.1105] NO -- ERROR
   4931	021552	011000 				MOV	@R0,R0		;;;FIND DTE20 ADDRESS
   4932	021554					CALL	..SWED		;;; [4.1.1121] WAIT FOR EXAMINE/DEPOSIT
	021554	004737 	050126'			JSR	PC,..SWED
   4933	021560	103401 				BCS	DPSEC		;;;ERROR -2
   4934	021562	104401 				TRAP	DR.01
   4935						;
   4936	021564				DPSEC:
   4937	021564	104776 				TRAP	DE.02		;E BOX STOPPED
   4938						;
   4939	021566				DPMSEP:
   4940	021566	104775 				TRAP	DE.03		;SECONDARY PROTOCOL IN USE
   4941						;
DMDTE	- DTE DIRECTIVES MODULE	MACRO M1113  03-APR-86 20:41  PAGE 92
$EXMYG -- EXAMINE MY GENERAL SECTION

   4943						.SBTTL	$EXMYG -- EXAMINE MY GENERAL SECTION
   4944
   4945					;+
   4946					;	$EXMYG -- EXAMINE MY (PDP-11) GENERAL SECTION
   4947					;
   4948					;	ENTRY CONDITIONS:
   4949					;
   4950					;	R2 -- ADDRESS OF A PDP10 ADDRESS TO EXAMINE RELATIVE TO THE BASE OF MY GENERAL SECTION
   4951					;	R3 -- ADDRESS OF THE THREE WORD BLOCK TO TRANSFER TO
   4952					;
   4953					;	CALLING SEQUENCE:
   4954					;
   4955					;	JMP	$EXMYG
   4956					;
   4957					;	EXIT CONDITIONS:
   4958					;
   4959					;	R0 -- +1 SUCCESS
   4960					;	CC-C CLEAR -- SUCCESS
   4961					;
   4962					;	ERROR CONDITIONS:
   4963					;
   4964					;	CC-C SET
   4965					;
   4966					;	R0 -2 -- E BOX STOPPED
   4967					;	R0 -3 -- SECONDARY PROTOCOL IN USE
   4968					;
   4969					;	REGISTERS SAVED AND RESTORED BY EMT SERVICE
   4970					;-
   4971
   4972	021570				$EXMYG::
   4973	021570	063702 	001242'			ADD	DEPOF,R2	;ADD DEPOSIT OFFSET TO EXAMINE ADDRESS
   4974	021574				EXCMN:
   4975	021574	005001 				CLR	R1		;;;CLEAR HIGH ORDER 10 ADDRESS (FORCES EXAMINE)
   4976	021576	000762 				BR	CMEDP
   4977						;
DMDTE	- DTE DIRECTIVES MODULE	MACRO M1113  03-APR-86 20:41  PAGE 93
$EXMYN -- EXAMINE MY SECTION FOR PROCESSOR N

   4979						.SBTTL	$EXMYN -- EXAMINE MY SECTION FOR PROCESSOR N
   4980
   4981					;+
   4982					;	$EXMYN -- EXAMINE MY SECTION FOR COMMUNICATING WITH PROCESSOR N
   4983					;
   4984					;	ENTRY CONDITIONS:
   4985					;
   4986					;	R2 -- ADDRESS WORD WITHIN REGION TO EXAMINE
   4987					;	R3 -- PDP-11 CORE ADDRESS
   4988					;
   4989					;	CALLING SEQUENCE:
   4990					;
   4991					;	JMP	$EXMYN
   4992					;
   4993					;	EXIT CONDITIONS:
   4994					;
   4995					;	R0 -- +1 - SUCCESS
   4996					;	CC-C CLEAR -- SUCCESS
   4997					;
   4998					;	ERROR CONDITIONS:
   4999					;
   5000					;	CC-C SET
   5001					;	R0 -1 -- ILLEGAL CPU NUMBER
   5002					;	R0 -2 -- E BOX STOPPED
   5003					;	R0 -3 -- SECONDARY PROTOCOL IN USE
   5004					;
   5005					;	REGISTERS SAVED AND RESTORED BY EMT SERVICE
   5006					;-
   5007
   5008	021600				$EXMYN::
   5009	021600	066002 	000002 			ADD	EMYN(R0),R2	;SET CALCULATED ADDRESS TO COMM AREA
   5010	021604	000773 				BR	EXCMN		;GO TO COMMON AREA
   5011						;
DMDTE	- DTE DIRECTIVES MODULE	MACRO M1113  03-APR-86 20:41  PAGE 94
$DPMYN -- DEPOSIT INTO MY SECTION FOR COMM WITH PROCESSOR N

   5013						.SBTTL	$DPMYN -- DEPOSIT INTO MY SECTION FOR COMM WITH PROCESSOR N
   5014
   5015					;+
   5016					;	$DPMYN --  DEPOSIT INTO MY SECTION FOR COMMUNICATING WITH PROCESSOR N
   5017					;
   5018					;	ENTRY CONDITIONS:
   5019					;
   5020					;	R2 -- ADDRESS WORD WITHIN REGION TO DEPOSIT
   5021					;	R3 -- ADDRESS IN PDP-11 TO TRANSFER FROM
   5022					;
   5023					;	CALLING SEQUENCE:
   5024					;
   5025					;	JMP	$DPMYN
   5026					;
   5027					;	EXIT CONDITIONS:
   5028					;
   5029					;	R0 -- +1 -SUCCESS
   5030					;	CC-C CLEAR - SUCCESS
   5031					;
   5032					;	ERROR CONDITIONS:
   5033					;
   5034					;	CC-C SET
   5035					;	R0 -1 -- ILLEGAL CPU NUMBER
   5036					;	R0 -2 -- E BOX STOPPED
   5037					;	R0 -3 -- SECONDARY PROTOCOL IN USE
   5038					;
   5039					;	REGISTERS SAVED AND RESTORED BY EMT SERVICE
   5040					;-
   5041
   5042	021606				$DPMYN::
   5043	021606	066002 	000004 			ADD	DMYN(R0),R2	;FIND CORRECT ADDRESS IN COMMON AREA
   5044	021612	000752 				BR	DPCMN		;DEPOSIT IN COMMON AREA
   5045						;
DMDTE	- DTE DIRECTIVES MODULE	MACRO M1113  03-APR-86 20:41  PAGE 95
$EXHSG -- EXAMINE HIS GENERAL COMMUNICATION SECTION

   5047						.SBTTL	$EXHSG -- EXAMINE HIS GENERAL COMMUNICATION SECTION
   5048
   5049					;+
   5050					;	$EXHSG -- EXAMINE HIS GENERAL COMMUNICATION SECTION
   5051					;
   5052					;	ENTRY CONDITIONS:
   5053					;
   5054					;	R2 -- WORD NUMBER IN HIS GENERAL SECTION
   5055					;	R3 -- ADDRESS TO STORE EXAMINE
   5056					;
   5057					;	CALLING SEQUENCE:
   5058					;
   5059					;	JMP	$EXHSG
   5060					;
   5061					;	EXIT CONDITIONS:
   5062					;
   5063					;	R0 -- +1 - SUCCESS
   5064					;	CC-C CLEAR - SUCCESS
   5065					;
   5066					;	ERROR CONDITIONS:
   5067					;
   5068					;	R0 -1 -- ILLEGAL CPU NUMBER
   5069					;	R0 -2 -- EBOX STOPPED
   5070					;	R0 -3  -- SECONDARY PROTOCOL IN USE
   5071					;
   5072					;	CC-C SET
   5073					;
   5074					;	REGISTERS SAVED AND RESTORED BY EMT SERVICE
   5075					;-
   5076
   5077	021614				$EXHSG::
   5078	021614	066002 	000006 			ADD	EHSG(R0),R2	;FIND OFFSET TO COMMUNICATIONS AREA
   5079	021620	000765 				BR	EXCMN		;GO TO COMMON EXAMINE
   5080						;
DMDTE	- DTE DIRECTIVES MODULE	MACRO M1113  03-APR-86 20:41  PAGE 96
$EXHSM -- EXAMINE HIS SECTION FOR COMMUNICATING WITH ME

   5082						.SBTTL	$EXHSM -- EXAMINE HIS SECTION FOR COMMUNICATING WITH ME
   5083
   5084					;+
   5085					;	$EXHSM -- EXAMINE HIS SECTION FOR COMMUNICATING WITH ME
   5086					;
   5087					;	ENTRY CONDITIONS:
   5088					;
   5089					;	R2 -- ADDRESS OF WORD WITHIN REGION TO EXAMINE
   5090					;	R3 -- ADDRESS TO STORE PDP-10 WORD
   5091					;
   5092					;	CALLING SEQUENCE:
   5093					;
   5094					;	JMP	$EXHSM
   5095					;
   5096					;	EXIT CONDITIONS:
   5097					;
   5098					;	R0 -- +1 - SUCCESS
   5099					;	CC-C CLEAR - SUCCESS
   5100					;
   5101					;	ERROR CONDITIONS:
   5102					;
   5103					;	CC-C SET
   5104					;	R0 -1 -- ILLEGAL CPU NUMBER
   5105					;	R0 -2 -- E BOX STOPPED
   5106					;	R0 -3 -- SECONDARY PROTOCOL IN USE
   5107					;
   5108					;	REGISTERS SAVED AND RESTORED BY EMT SERVICE
   5109					;-
   5110
   5111	021622				$EXHSM::
   5112	021622	066002 	000010 			ADD	EHSM(R0),R2	;FIND OFFSET INTO COMM AREA
   5113	021626	000762 				BR	EXCMN		;GO TO EXAMINE
   5114						;
DMDTE	- DTE DIRECTIVES MODULE	MACRO M1113  03-APR-86 20:41  PAGE 97
$KLDFX -- EXECUTE A DIAGNOSTIC FUNCTION

   5116						.SBTTL	$KLDFX -- EXECUTE A DIAGNOSTIC FUNCTION
   5117
   5118					;+
   5119					;	$KLDFX -- EXECUTE A DIAGNOSTIC FUNCTION
   5120					;
   5121					;	THIS FUNCTION WILL LOAD AND READ THE EBUS.
   5122					;	IT DOES A DATA SEND OPERATION IF IT IS A WRITE FUNCTION
   5123					;	AND IT ALWAYS RETURNS THE STATUS OF THE DIAGNOSTIC REGISTERS
   5124					;	AND EBUS (DEXWD1-3) AFTER EACH FUNCTION.
   5125					;
   5126					;	ENTRY CONDITIONS:
   5127					;
   5128					;	00(SP) -- FUNCTION TO BE EXECUTED (BITS 15-9)
   5129					;	R3 -- ADDRESS OF FOUR WORD BLOCK TO STORE DIAG1-3
   5130					;	R2 -- PDP11 6 WORD BLOCK THE FIRST 3 WORDS ARE
   5131					;	USED TO STORE THE CONTENTS IN THE E BUS THE SECOND 3 WORDS
   5132					;	ARE USED TO STORE THE RESULTS OF THE DIAGNOSTIC FUNCTION E BUS
   5133					;
   5134					;	CALL	$KLDFX
   5135					;
   5136					;	EXIT CONDITIONS:
   5137					;
   5138					;	CC-C CLEAR
   5139					;	R0 -- +1 -- SUCCESS
   5140					;
   5141					;	ERROR CONDITIONS:
   5142					;
   5143					;	-2 -- FUNCTION FAILED
   5144					;
   5145					;	REGISTERS SAVED AND RESTORED BY EMT SERVICE
   5146					;
   5147					;-
   5148
   5149	021630				$KLDFR::
   5150	021630	011001 				MOV	(R0),R1		; [4.1.1137] POINT TO THE DTE-20
   5151	021632	012600 				MOV	(SP)+,R0	;RESTORE FUNCTION
   5152	021634					CALL	CESCHK		;RESET DTE-20 IF CLOCK ERROR STOP
	021634	004737 	022166'			JSR	PC,CESCHK
   5153	021640	042700 	000777 			BIC	#777,R0		;MASK OFF FUNCTION CODE
   5154	021644	052700 	000211 			BIS	#DIKL10!DCOMST!DFUNC,R0 ;SET DIAGNOSTIC FUNCTION START BITS
   5155	021650	062702 	000006 			ADD	#6,R2		;DON'T DO THE E BUS WRITE
   5156	021654				KLCST:
   5157	021654	010061 	000030 			MOV	R0,DAG1(R1)	;START FUNCTION
   5158	021660	012737 	003000 	001352'		MOV	#3000,DEXST	;TIME OUT FUNCTION
   5159	021666				10$:
   5160	021666	032761 	000001 	000030 		BIT	#DCOMST,DAG1(R1) ;WAIT FOR THE FUNCTION TO COMPLETE
   5161	021674	001404 				BEQ	22$
   5162	021676	005337 	001352'			DEC	DEXST		;COUNT DOWN
   5163	021702	100371 				BPL	10$
   5164	021704	104776 				TRAP	DE.02		;TRAP ERROR
   5165						;
   5166	021706				22$:
   5167	021706					MTPS	DXWD3(R1),(R2)+	;STORE THE FOUND WORD IN PDP11
	021706	016122 	000002 			MOV	DXWD3(R1),(R2)+
   5168	021712					MTPS	DXWD2(R1),(R2)+
	021712	016122 	000004 			MOV	DXWD2(R1),(R2)+
   5169	021716					MTPS	DXWD1(R1),(R2)+
DMDTE	- DTE DIRECTIVES MODULE	MACRO M1113  03-APR-86 20:41  PAGE 97-1
$KLDFX -- EXECUTE A DIAGNOSTIC FUNCTION

	021716	016122 	000006 			MOV	DXWD1(R1),(R2)+
   5170	021722	005703 				TST	R3		;ANYWHERE TO STORE?
   5171	021724	001407 				BEQ	20$		;NO -- FORGET IT
   5172	021726	010104 				MOV	R1,R4		; YES -- POINT TO THE DTE-20
   5173	021730	062704 	000030 			ADD	#DAG1,R4	; DIAGNOSTIC REGISTERS
   5174	021734					MTPS	(R4)+,(R3)+	;STORE DIAGNOSITC REGISTERS
	021734	012423 				MOV	(R4)+,(R3)+
   5175	021736					MTPS	(R4)+,(R3)+
	021736	012423 				MOV	(R4)+,(R3)+
   5176	021740					MTPS	(R4)+,(R3)+
	021740	012423 				MOV	(R4)+,(R3)+
   5177	021742					MTPS	(R4)+,(R3)+
	021742	012423 				MOV	(R4)+,(R3)+
   5178	021744				20$:
   5179	021744	104401 				TRAP	DR.01		;SET OK RETURN TO CALLER
   5180						;
   5181	021746				$KLDFX::
   5182	021746	011001 				MOV	(R0),R1		; [4.1.1137] POINT TO THE DTE-20
   5183	021750	012600 				MOV	(SP)+,R0	;FIND FUNCTION BITS
   5184	021752					CALL	CESCHK		;RESET DTE-20 IF CLOCK ERROR STOP
	021752	004737 	022166'			JSR	PC,CESCHK
   5185	021756	042700 	000777 			BIC	#777,R0		;CLEAR OFF LOW ORDER FUNCTION CODE
   5186	021762	052700 	000201 			BIS	#DCOMST!DFUNC,R0 ;SET DIAG FUNCTION EXECUTE
   5187	021766	000410 				BR	$KLDFC		;ENTER COMMON CODE
   5188						;
   5189	021770				$KLDFW::
   5190	021770	011001 				MOV	(R0),R1		; [4.1.1137] POINT TO THE DTE-20
   5191	021772	012600 				MOV	(SP)+,R0	;FIND FUNCTION BITS
   5192	021774					CALL	CESCHK		;RESET DTE-20 IF CLOCK ERROR STOP
	021774	004737 	022166'			JSR	PC,CESCHK
   5193	022000	042700 	000777 			BIC	#777,R0		;MASK OFF LOW ORDER FUNCTION CODE
   5194	022004	052700 	000215 			BIS	#DCOMST!DSEND!DIKL10!DFUNC,R0
   5195	022010				$KLDFC::
   5196	022010					MFPS	(R2)+,DXWD3(R1)	;STORE THE OUTPUT FOR THE EBUS
	022010	012261 	000002 			MOV	(R2)+,DXWD3(R1)
   5197	022014					MFPS	(R2)+,DXWD2(R1)
	022014	012261 	000004 			MOV	(R2)+,DXWD2(R1)
   5198	022020					MFPS	(R2)+,DXWD1(R1)
	022020	012261 	000006 			MOV	(R2)+,DXWD1(R1)
   5199	022024	032700 	000004 			BIT	#DSEND,R0	;DIAG WRITE?
   5200	022030	001711 				BEQ	KLCST		;GO TO COMMON OUTPUT EQOUTINE
   5201	022032				10$:
   5202	022032	012761 	000014 	000030 		MOV	#DIKL10!DSEND,DAG1(R1)	;WRITE
   5203	022040	012761 	010000 	000010 		MOV	#DEP,TNAD1(R1)	;SIMULATE DEPOSIT
   5204	022046	005061 	000012 			CLR	TNAD2(R1)
   5205	022052				20$:
   5206	022052	010046 				MOV	R0,-(SP)	;SAVE R0
   5207	022054	010100 				MOV	R1,R0
   5208	022056					CALL	..WFED		; [4.1.1121] WAIT FOR DEX DONE
	022056	004737 	047454'			JSR	PC,..WFED
   5209	022062	012600 				MOV	(SP)+,R0
   5210	022064	000673 				BR	KLCST
   5211						;
DMDTE	- DTE DIRECTIVES MODULE	MACRO M1113  03-APR-86 20:41  PAGE 98
$PRVDP -- PRIVILEDGED DEPOSIT

   5213						.SBTTL	$PRVDP -- PRIVILEDGED DEPOSIT
   5214
   5215					;+
   5216					;	$PRVDP -- PRIVILEDGED DEPOSIT OF THE KL10 MEMORY
   5217					;
   5218					;
   5219					;	ENTRY CONDITIONS:
   5220					;
   5221					;	R0 -- PROCESSOR TABLE POINTER
   5222					;	R1 -- WORD 5 OF DPB
   5223					;	R2 -- WORD 3 OF DPB
   5224					;	R3 -- WORD 4 OF DPB
   5225					;	R4 -- ADDRESS OF DPB
   5226					;	R5 -- ATL NODE ADDRESS OF ISSUING TASK
   5227					;
   5228					;	CALLING SEQUENCE:
   5229					;
   5230					;	JMP	$PRVDP
   5231					;
   5232					;	ERROR CONDITIONS:
   5233					;
   5234					;	REGISTERS SAVED AND RESTORED BY EMT SERVICE
   5235					;-
   5236
   5237	022066				$PRVDP::
   5238	022066					MFPS	2(R2),R1	;SET UP THE INTERNAL ADDRESS 2(PDP11 ADDRESS
	022066	016201 	000002 			MOV	2(R2),R1
   5239	022072	052601 				BIS	(SP)+,R1	;SET HIGH ORDER OF PRIVILEDGE
   5240	022074	052701 	010000 			BIS	#DEP,R1		;SET PRIVILEDGED DEPOSIT
   5241	022100	000405 				BR	PRVCM
   5242						;
DMDTE	- DTE DIRECTIVES MODULE	MACRO M1113  03-APR-86 20:41  PAGE 99
$PRVEX -- PRIVILEDGED EXAMINE

   5244						.SBTTL	$PRVEX -- PRIVILEDGED EXAMINE
   5245
   5246					;+
   5247					;	$PRVEX -- PRIVILEDGED EXAMINE OF THE KL10 MEMORY
   5248					;
   5249					;	ENTRY CONDITIONS:
   5250					;
   5251					;	R0 -- PROCESSOR TABLE POINTER
   5252					;	R1 -- WORD 5 OF DPB
   5253					;	R2 -- WORD 3 OF DPB
   5254					;	R3 -- WORD 4 OF DPB
   5255					;	R4 -- ADDRESS OF DPB
   5256					;	R5 -- ATL NODE ADDRESS OF ISSUING TASK
   5257					;
   5258					;	CALLING SEQUENCE:
   5259					;
   5260					;	JMP	$PRVEX
   5261					;
   5262					;	ERROR CONDITIONS:
   5263					;
   5264					;	REGISTERS SAVED AND RESTORED BY EMT SERVICE
   5265					;-
   5266
   5267	022102				$PRVEX::
   5268	022102					MFPS	2(R2),R1	;SET UP THE INTERNAL ADDRESS 2(PDP11 ADDRESS
	022102	016201 	000002 			MOV	2(R2),R1
   5269	022106	052601 				BIS	(SP)+,R1	;SET HIGH ORDER OF PRIVILEDGE
   5270	022110	042701 	010000 			BIC	#DEP,R1		;INSURE THAT IT IS AN EXAMINE
   5271	022114				PRVCM:
   5272	022114	052701 	004000 			BIS	#PRTOFF,R1	;SET PRIVILEDGED EXAMINE/DEPOSIT
   5273	022120					MFPS	@R2,R2		;LOWER ORDER HALF
	022120	011202 				MOV	@R2,R2
   5274	022122	011000 				MOV	(R0),R0		; [4.1.1137] POINT TO THE DTE-20
   5275	022124					CALL	..SWED		; [4.1.1121] START-WAIT FOR EXAMINE/DEPOSIT
	022124	004737 	050126'			JSR	PC,..SWED
   5276	022130	103401 				BCS	20$		;E BOX STOPPED ERROR
   5277	022132	104401 				TRAP	DR.01		;MUST BE OK -- RETURN TO USER
   5278						;
   5279	022134				20$:
   5280	022134	104776 				TRAP	DE.02		;RETURN EBOX STOPPED ERROR
   5281						;
DMDTE	- DTE DIRECTIVES MODULE	MACRO M1113  03-APR-86 20:41  PAGE 100
$RWDRG -- READ/WRITE DIAGNOSTIC REGISTER

   5283						.SBTTL	$RWDRG -- READ/WRITE DIAGNOSTIC REGISTER
   5284
   5285					;+
   5286					;
   5287					;	$RWDRG -- PRIVILEDGED READ/WRITE OF DIAGNOSTIC DTE20 REGISTERS
   5288					;
   5289					;	ENTRY CONDITIONS:
   5290					;
   5291					;	R0 -- PROCESSOR TABLE POINTER
   5292					;	R1 -- WORD 5 OF DPB
   5293					;	R2 -- WORD 3 OF DPB
   5294					;	R3 -- WORD 4 OF DPB
   5295					;	R4 -- ADDRESS OF DPB
   5296					;	R5 -- ATL NODE ADDRESS OF ISSUING TASK
   5297					;
   5298					;	CALLING SEQUENCE:
   5299					;
   5300					;	JMP	$RWDRG
   5301					;
   5302					;	ERROR CONDITIONS:
   5303					;
   5304					;	REGISTERS SAVED AND RESTORED BY EMT SERVICE
   5305					;-
   5306
   5307	022136				$RWDRG::
   5308	022136	011001 				MOV	(R0),R1		; [4.1.1137] POINT TO THE DTE-20
   5309	022140	000316 				SWAB	@SP		;FIND THE REGISTER NUMBER
   5310	022142	062601 				ADD	(SP)+,R1	;MAKE EXTERNAL PAGE OFFSET
   5311	022144	005702 				TST	R2		;IS IT WRITE?
   5312	022146	001402 				BEQ	10$		;NO -- DON'T SET IT
   5313	022150					MFPS	@R2,DAG1(R1)	;YES -- SET REGISTER
	022150	011261 	000030 			MOV	@R2,DAG1(R1)
   5314	022154				10$:
   5315	022154	005703 				TST	R3		;RETURN ADDRESS SPECIFIED?
   5316	022156	001402 				BEQ	20$		;NO -- THEN RETURN ALL OK
   5317	022160					MTPS	DAG1(R1),@R3	;SET IN USER SPACE
	022160	016113 	000030 			MOV	DAG1(R1),@R3
   5318	022164				20$:
   5319	022164	104401 				TRAP	DR.01		;MUST BE OK -- RETURN TO USER
   5320						;
DMDTE	- DTE DIRECTIVES MODULE	MACRO M1113  03-APR-86 20:41  PAGE 101
CESCHK -- CHECK FOR CLOCK ERROR STOP

   5322						.SBTTL	CESCHK -- CHECK FOR CLOCK ERROR STOP
   5323
   5324					;+
   5325					;	CESCHK -- CHECK FOR CLOCK ERROR STOP
   5326					;
   5327					;	ENTRY CONDITIONS:
   5328					;
   5329					;	R1 -- ADDRESS OF CURRENT DTE-20
   5330					;
   5331					;	NO REGISTERS MODIFIED
   5332					;-
   5333
   5334	022166				CESCHK:
   5335	022166	005061 	000030 			CLR	DAG1(R1)	;CLEAR ALL FLAGS
   5336	022172	032761 	004000 	000030 		BIT	#DS04,DAG1(R1)	;CLOCK ERROR STOP UP?
   5337	022200	001403 				BEQ	10$		;NO-- JUST RETURN
   5338	022202	012761 	000100 	000032 		MOV	#DRESET,DAG2(R1) ;YES-- RESET DTE-20
   5339	022210				10$:
   5340	022210					RETURN			;FROM CESCHK
	022210	000207 				RTS	PC
DMDTE	- DTE DIRECTIVES MODULE	MACRO M1113  03-APR-86 20:41  PAGE 102
CESCHK -- CHECK FOR CLOCK ERROR STOP

   5342
   5343
   5344						.TITLE	DMASS	- "ASSIGN LUN" DIRECTIVE MODULE
   5345						.SBTTL	ASIGN LUN -- COPYRIGHT STATEMENT
   5346	022212					IDENT$	1,0
						.IDENT	/001000/
   5347					;
   5348					;                             COPYRIGHT (C) 1975, 1984, 1985 BY
   5349					;                     DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
   5350					;			ALL RIGHTS RESERVED.
   5351					;       THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE  USED  AND  COPIED
   5352					;       ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
   5353					;       OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR ANY OTHER COPIES THERE-
   5354					;       OF  MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
   5355					;       NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
   5356					;
   5357					;       THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT
   5358					;       NOTICE  AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
   5359					;       CORPORATION.
   5360					;
   5361					;       DIGITAL ASSUMES NO RESPONSIBILITY FOR THE  USE  OR  RELIABILITY  OF  ITS
   5362					;       SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
   5363					;
   5364					;		MODULE: "ASSIGN LUN" DIRECTIVE
   5365					;
   5366					;		VERSION: 01-00
   5367					;
   5368					;		AUTHOR: R. MCLEAN
   5369					;
   5370					;		DATE: 19 JUL 75
   5371					;
   5372					;
   5373					;	THIS MODULE CONTAINS:
   5374					;
   5375					;	1 -- CODE TO SERVICE THE "ASSIGN LUN" DIRECTIVE.
   5376					;
   5377					;	MACRO DEFINITIONS
   5378					;
   5379						.MCALL	CALL,RETURN
   5380						.MCALL	MFPI,MFPS
DMASS	- "ASSIGN LUN" DIRECTIV	MACRO M1113  03-APR-86 20:41  PAGE 103
DIRECTIVE -- ASSIGN LUN

   5382						.SBTTL	DIRECTIVE -- ASSIGN LUN
   5383					;+
   5384					; THE "ASSIGN LUN" DIRECTIVE
   5385					;
   5386					; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO ASSIGN A LOGICAL UNIT NUMBER (LUN)
   5387					; TO A PHYSICAL DEVICE-UNIT.
   5388					;
   5389					; A FOUR-WORD DPB OF THE FOLLOWING FORMAT IS USED TO ASSIGN A LUN
   5390					; TO A PHYSICAL DEVICE:
   5391					;
   5392					;	WD. 00 -- DIC (07.) & DPB SIZE (4.),
   5393					;	WD. 01 -- LOGICAL UNIT NUMBER,
   5394					;	WD. 02 -- PHYSICAL DEVICE NAME,
   5395					;	WD. 03 -- PHYSICAL DEVICE UNIT NUMBER.
   5396					;
   5397					; A TWO-WORD DPB OF THE FOLLOWING FORMAT IS USED TO DEASSIGN (ASSIGN
   5398					; TO "NONE") A LUN:
   5399					;
   5400					;	WD. 00 -- DIC (07.) & DPB SIZE (2.),
   5401					;	WD. 01 -- LOGICAL UNIT NUMBER.
   5402					;
   5403					; THE FOLLOWING STATUS IS RETURNED:
   5404					;
   5405					; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE STATUS
   5406					; OF ONE (+1).
   5407					;
   5408					; CC-C SET TO INDICATE REJECTION, AND A DIRECTIVE STATUS OF:
   5409					;
   5410					;	-90 -- LUN USAGE INTERLOCKED (VIZ., FILE OPEN),
   5411					;	-92 -- INVALID DEVICE AND/OR UNIT,
   5412					;	-96 -- INVALID LOGICAL UNIT NUMBER,
   5413					;	-98 -- PART OF DPB IS OUT OF ISSUING TASK'S ADDRESS SPACE,
   5414					;	-99 -- DIC OR DPB SIZE IS INVALID.
   5415					;-
   5416					; CONTROL IS TRANSFERRED HERE (BY DIRECTIVE DISPATCH ROUTINE) WITH THE
   5417					; DIRECTIVE ISSUING TASK'S PS, PC, & R1-R5 PUSHED ONTO THE
   5418					;  STACK, AND R0-R5 SET AS FOLLOWS:
   5419					;	R0 -- PC OF EMT INSTRUCTION
   5420					;	R1 -- POINTER TO WORD FOLLOWING DIC & SIZE
   5421					;	R2 -- DPB SIZE
   5422					;	R3 -- DIC (DIRECTIVE IDENTIFICATION CODE)
   5423					;	R5 -- ATL NODE ADDRESS OF ISSUING TASK ('.CRTSK')
   5424					;
   5425					; R5 IS LEFT UNALTERED (I.E. POINTING TO ISSUING TASK'S ATL NODE).
   5426					;
   5427					;
   5428					; LUN ASSIGNMENT -- CHECK FOR VALIDITY OF LUN & DEVICE-UNIT AND ASSIGN
   5429					; IF NOT INTERLOCKED.
   5430					;
   5431	022212				.D.ASS::MFPI	@R1		;VALIDATE LUN, AND SETUP  TO ACCESS TASK
	022212	011146 				MOV	@R1,-(SP)
   5432									;HEADER, BY PUSHING LUN AND CALLING
   5433									;SUBROUTINE TO CONVERT & VERIFY.
   5434	022214					CALL	.VCLUN		;IF INVALID LUN, RETURN STS=-96.
	022214	004737 	016104'			JSR	PC,.VCLUN
   5435	022220	010416 				MOV	R4,@SP		;PUD ENTRY ADR ON STACK REPLACED BY LUT ADDRESS
   5436					;
DMASS	- "ASSIGN LUN" DIRECTIV	MACRO M1113  03-APR-86 20:41  PAGE 103-1
DIRECTIVE -- ASSIGN LUN

   5437	022222	005003 				CLR	R3		;SET UP INCASE OF DEASSIGNMENT
   5438	022224	020227 	000002 			CMP	R2,#2		;IS THIS LUN DEASSIGNMENT?
   5439	022230	001422 				BEQ	60$		;YES -- DEASSIGN LUN
   5445					;
   5446	022232				45$:	MFPI	(R1)+		;PUSH LUN, AND LEAVE R1 POINTING TO DEV NAME
	022232	012146 				MOV	(R1)+,-(SP)
   5447					;
   5448	022234					MFPS	(R1)+,R4	;SET R4 TO DEVICE NAME.
	022234	012104 				MOV	(R1)+,R4
   5449									;R0 CONTAINS DEVICE UNIT NUMBER
   5450	022236					MFPS	@R1,R0
	022236	011100 				MOV	@R1,R0
   5451					;
   5452					; SCAN PUD FOR DEVICE-UNIT IN R4-R0.
   5453					;
   5454	022240	012703 	010262'			MOV	#.PUDBA,R3	;USE R3 TO SCAN PUD
   5455	022244				20$:
   5456	022244	020327 	011342'			CMP	R3,#.PUDEA	;END OF PUD?
   5457	022250	001001 				BNE	30$
   5458	022252	104644 				TRAP	DE.92		;YES -- DEVICE-UNIT NOT FOUND
   5459	022254	021304 			30$:	CMP	@R3,R4		;NO -- DEVICE NAME MATCH?
   5460	022256	001003 				BNE	40$		;NO -- CHECK NEXT ENTRY
   5461	022260	126300 	000002 			CMPB	U.UN(R3),R0	;YES -- UNIT NUMBER MATCH?
   5462	022264	001403 				BEQ	50$		;YES -- DEVICE-UNIT FOUND
   5463									;NO -- CHECK NEXT ENTRY
   5464	022266				40$:
   5465	022266	062703 	000050 			ADD	#U.SZ,R3	;ADVANCE R3 TO NEXT PUD ENTRY (IF ANY), AND
   5466	022272	000764 				BR	20$		;CHECK FOR DEVICE-UNIT MATCH.
   5467					;
   5468					; INDICATED DEVICE-UNIT FOUND IN PUD -- PUD ENTRY ADDRESS IS IN R3
   5469					;
   5470	022274	012600 			50$:	MOV	(SP)+,R0	;SET R0 TO LUN
   5471					;
   5472					; R3 CONTAINS A VALUE (PUD ENTRY ADDRESS OR ZERO) TO BE SET IN THE
   5473					; THE FIRST WORD OF THE LUT PER LUN IN R0.
   5474					;
   5475	022276				60$:
   5476	022276	006300 				ASL	R0		;SET R0 TO FOUR TIMES THE LUN
   5477	022300	006300 				ASL	R0
   5478	022302	062600 				ADD	(SP)+,R0	;POINT TO LUT AS SAVED
   5479					;
   5480	022304	005740 				TST	-(R0)		;IS LUN LOCKED IN USE?
   5481	022306	001401 				BEQ	70$
   5482	022310	104646 				TRAP	DE.90		;YES -- RETURN STS=-90.
   5483	022312	010340 			70$:	MOV	R3,-(R0)	;NO -- MAKE ASSIGNMENT, AND
   5484	022314	104401 				TRAP	DR.01		;RETURN STS=+1
DMASS	- "ASSIGN LUN" DIRECTIV	MACRO M1113  03-APR-86 20:41  PAGE 104
DIRECTIVE -- ASSIGN LUN

   5486
   5487						.TITLE	DMGLI	- "GET LUN INFO" DIRECTIVE MODULE
   5488						.SBTTL	GET LUN INFO -- COPYRIGHT STATEMENT
   5489	022316					IDENT$	1,0
						.IDENT	/001000/
   5490					;
   5491					;                             COPYRIGHT (C) 1975, 1984,1985 BY
   5492					;                     DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
   5493					;			ALL RIGHTS RESERVED.
   5494					;       THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE  USED  AND  COPIED
   5495					;       ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
   5496					;       OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR ANY OTHER COPIES THERE-
   5497					;       OF  MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
   5498					;       NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
   5499					;
   5500					;       THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT
   5501					;       NOTICE  AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
   5502					;       CORPORATION.
   5503					;
   5504					;       DIGITAL ASSUMES NO RESPONSIBILITY FOR THE  USE  OR  RELIABILITY  OF  ITS
   5505					;       SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
   5506					;
   5507					;		MODULE: "GET LUN INFO" DIRECTIVE
   5508					;
   5509					;		VERSION: 01-00
   5510					;
   5511					;		AUTHOR: R. MCLEAN
   5512					;
   5513					;		DATE: 19 JUL 75
   5514					;
   5515					;
   5516					;	THIS MODULE CONTAINS:
   5517					;
   5518					;	1 -- CODE TO SERVICE THE "GET LUN INFO" DIRECTIVE.
   5519					;
   5520					;	MACROS
   5521					;
   5522						.MCALL	CALL,RETURN,MTPI,MFPI,MFPS
DMGLI	- "GET LUN INFO" DIRECT	MACRO M1113  03-APR-86 20:41  PAGE 105
DIRECTIVE -- GET LUN INFORMATION

   5524						.SBTTL	DIRECTIVE -- GET LUN INFORMATION
   5525					;+
   5526					; THE "GET LUN INFORMATION" DIRECTIVE
   5527					;
   5528					; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO FILL A SIX WORD BUFFER
   5529					; WITH INFORMATION ABOUT A PHYSICAL UNIT TO WHICH IT IS ASSIGNED.
   5530					; IF REQUESTS TO THE PHYSICAL UNIT HAVE BEEN RE-DIRECTED TO ANOTHER
   5531					; UNIT, THE INFORMATION RETURNED WILL DESCRIBE THE EFFECTIVE ASSIGNMENT.
   5532					;
   5533					; A THREE WORD DPB OF THE FOLLOWING FORMAT IS USED:
   5534					;
   5535					;	WD. 00 -- DIC (05.) & DPB SIZE (3.),
   5536					;	WD. 01 -- LUN,
   5537					;	WD. 02 -- ADDRESS OF SIX-WORD BUFFER.
   5538					;
   5539					;
   5540					; THE SIX WORD BUFFER IS FILLED WITH THE FIRST SIX WORDS OF THE
   5541					; CORRESPONDING PUD ENTRY AS FOLLOWS:
   5542					;
   5543					;	WD. 00 -- NAME OF ASSIGNED DEVICE,
   5544					;	WD. 01 -- UNIT NUMBER OF ASSIGNED DEVICE & FLAGS BYTE,
   5545					;	WD. 02 -- DEVICE CHARACTERISTICS WD. #1,
   5546					;	WD. 03 -- DEVICE CHARACTERISTICS WD. #2,
   5547					;	WD. 04 -- DEVICE CHARACTERISTICS WD. #3,
   5548					;	WD. 05 -- DEVICE CHARACTERISTICS WD. #4.
   5549					;
   5550					; THE FOLLOWING STATUS IS RETURNED:
   5551					;
   5552					; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE STATUS
   5553					; OF ONE (+1).
   5554					;
   5555					; CC-C SET TO INDICATE REJECTION, AND A DIRECTIVE STATUS OF:
   5556					;
   5557					;	-05 -- UNASSIGNED LUN,
   5558					;
   5559					;	-95 -- INVALID BUFFER SIZE ( 1> OR >U.SZ)
   5560					;	-96 -- INVALID LOGICAL UNIT NUMBER,
   5561					;	-98 -- PART OF DPB OR BUFFER IS OUT OF TASK'S ADDRESS SPACE,
   5562					;	-99 -- DIC OR DPB SIZE IS INVALID.
   5563					;-
   5564									;R0 CONTAINS BUFFER ADDRESS (LAST DPB WORD)
   5565					;
   5566	022316	006302 			.D.GLI::ASL	R2		;MULTIPLY THE DPB SIZE BY 2
   5572					;
   5573					;
   5574	022320				10$:	MFPI	(R1)+		;PUSH LUN, AND CONVERT TO PUD ENTRY ADR
	022320	012146 				MOV	(R1)+,-(SP)
   5575	022322					CALL	.VCLUN		;IF INVALID LUN, RETURN STS=-96.
	022322	004737 	016104'			JSR	PC,.VCLUN
   5576	022326	012604 				MOV	(SP)+,R4	;SET R4 TO PUD ENTRY ADR IF LUN ASSIGNED
   5577	022330	001001 				BNE	20$		;IF UN-ASSIGNED LUN, RETURN STS=-05.
   5578	022332	104773 				TRAP	DE.05
   5579					;
   5580					; FILL BUFFER -- IF SEGMENT FAULT, RETURN STS=-98.
   5581					;
   5582	022334				20$:	MFPS	(R1),R0
	022334	011100 				MOV	(R1),R0
DMGLI	- "GET LUN INFO" DIRECT	MACRO M1113  03-APR-86 20:41  PAGE 105-1
DIRECTIVE -- GET LUN INFORMATION

   5583	022336	012446 			30$:	MOV	(R4)+,-(SP)
   5584	022340					MTPI	(R0)+
	022340	012620 				MOV	(SP)+,(R0)+
   5585	022342	077203 				SOB	R2,30$
   5586					;
   5587	022344	104401 				TRAP	DR.01		;RETURN STS=+1
   5588					;
DMGLI	- "GET LUN INFO" DIRECT	MACRO M1113  03-APR-86 20:41  PAGE 106
DIRECTIVE -- GET LUN INFORMATION

   5590
   5591
   5592						.TITLE	DMGTP	- "GET TIME PARAMETERS" DIRECTIVE MODULE
   5593						.SBTTL	GET TIME PARAMETERS -- COPYRIGHT STATEMENT
   5594	022346					IDENT$	1,0
						.IDENT	/001000/
   5595					;
   5596					;                             COPYRIGHT (C) 1975, 1984. 1985 BY
   5597					;                     DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
   5598					;			ALL RIGHTS RESERVED.
   5599					;       THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE  USED  AND  COPIED
   5600					;       ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
   5601					;       OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR ANY OTHER COPIES THERE-
   5602					;       OF  MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
   5603					;       NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
   5604					;
   5605					;       THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT
   5606					;       NOTICE  AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
   5607					;       CORPORATION.
   5608					;
   5609					;       DIGITAL ASSUMES NO RESPONSIBILITY FOR THE  USE  OR  RELIABILITY  OF  ITS
   5610					;       SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
   5611					;
   5612					;		MODULE: "GET TIME PARAMETERS" DIRECTIVE
   5613					;
   5614					;		VERSION: 01-00
   5615					;
   5616					;		AUTHOR: R. MCLEAN
   5617					;
   5618					;		DATE: 19 JUL 75
   5619					;
   5620					;
   5621					;	THIS MODULE CONTAINS:
   5622					;
   5623					;	1 -- CODE TO SERVICE THE "GET TIME PARAMETERS" DIRECTIVE.
   5624					;
   5625					;	MACROS
   5626					;
   5627						.MCALL	CALL,RETURN,MTPI,MFPS
DMGTP	- "GET TIME PARAMETERS"	MACRO M1113  03-APR-86 20:41  PAGE 107
DIRECTIVE -- GET TIME PARAMETERS

   5629						.SBTTL	DIRECTIVE -- GET TIME PARAMETERS
   5630					;+
   5631					; THE "GET TIME PARAMETERS" DIRECTIVE
   5632					;
   5633					; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO FILL AN INDICATED EIGHT WORD BUFFER
   5634					; WITH CURRENT TIME PARAMETERS.
   5635					;
   5636					; A TWO WORD DPB OF THE FOLLOWING FORMAT IS USED:
   5637					;
   5638					;	WD. 00 -- DIC (59.) & DPB SIZE (2.),
   5639					;	WD. 01 -- ADDRESS OF 8-WORD BUFFER.
   5640					;
   5641					; THE 8-WORD BUFFER IS FILLED AS FOLLOWS:
   5642					;
   5643					;	WD. 0 -- YEAR (SINCE 1900),
   5644					;	WD. 1 -- MONTH OF YEAR,
   5645					;	WD. 2 -- DAY OF MONTH,
   5646					;	WD. 3 -- HOUR OF DAY,
   5647					;	WD. 4 -- MINUTE OF HOUR,
   5648					;	WD. 5 -- SECOND OF MINUTE,
   5649					;	WD, 6 -- TICK OF SECOND,
   5650					;	WD. 7 -- TICKS PER SECOND.
   5651					;
   5652					; THE FOLLOWING STATUS IS RETURNED:
   5653					;
   5654					; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE STATUS
   5655					; OF ONE (+1).
   5656					;
   5657					; CC-C SET TO INDICATE REJECTION, AND A DIRECTIVE STATUS OF:
   5658					;
   5659					;	-98 -- PART OF DPB OR BUFFER IS OUT OF TASK'S ADDRESS SPACE,
   5660					;	-99 -- DIC OR DPB SIZE IS INVALID.
   5661					;
   5662	022346	013746 	001154'		.D.GTP::MOV	.TKPS,-(SP)	;PUSH TICKS-PER-SECOND
   5663	022352	010104 				MOV	R1,R4		;SAVE DPB POINTER
   5664	022354	013700 	001150'			MOV	.SSM,R0		;FIND HOURS
   5665	022360	012701 	003410 			MOV	#60.*30.,R1
   5666	022364					CALL	$DIV		;DIVIDE
	022364	004737 	000000G			JSR	PC,$DIV
   5667	022370	010003 				MOV	R0,R3		;SAVE ANSWER
   5668	022372	010100 				MOV	R1,R0		;SET UP REMAINDER FOR NEXT DIVIDE
   5669	022374	012701 	000036 			MOV	#30.,R1
   5670	022400					CALL	$DIV		;FIND MIN
	022400	004737 	000000G			JSR	PC,$DIV
   5671	022404	005046 				CLR	-(SP)		;TICKS NOT RETURNED
   5672	022406	006301 				ASL	R1
   5673	022410	010146 				MOV	R1,-(SP)	;SAVE SECONDS
   5674	022412	010046 				MOV	R0,-(SP)
   5675	022414	010346 				MOV	R3,-(SP)	;HOURS
   5676	022416	005046 				CLR	-(SP)
   5677	022420	113716 	001144'			MOVB	.DAY,@SP
   5678	022424	005216 				INC	@SP		; [**]
   5679	022426	005046 				CLR	-(SP)
   5680	022430	113716 	001145'			MOVB	.MON,@SP
   5681	022434	005216 				INC	@SP			; [**]
   5682	022436	013746 	001142'			MOV	.YEAR,-(SP)
   5683	022442	162716 	003554 			SUB	#1900.,@SP
DMGTP	- "GET TIME PARAMETERS"	MACRO M1113  03-APR-86 20:41  PAGE 107-1
DIRECTIVE -- GET TIME PARAMETERS

   5684					;
   5685					;
   5686					; MOVE TIME PARAMETERS FROM KERNEL STACK TO 8-WORD BUFFER IN USER SPACE
   5687					;
   5688					;
   5689	022446	012703 	000010 			MOV	#8.,R3
   5690					;
   5691	022452					MFPS	(R4),R4		;FIND BUFFER ADDRESS
	022452	011404 				MOV	(R4),R4
   5692	022454				10$:
   5693	022454					MTPI	(R4)+		;MOVE WORD
	022454	012624 				MOV	(SP)+,(R4)+
   5694	022456	077302 				SOB	R3,10$		;LOOP 8 TIMES
   5695					;
   5696	022460	104401 				TRAP	DR.01		;RETURN STS=+1
   5697					;
DMGTP	- "GET TIME PARAMETERS"	MACRO M1113  03-APR-86 20:41  PAGE 108
DIRECTIVE -- GET TIME PARAMETERS

   5699
   5700
   5701						.TITLE	DMSED	- SIGNIFICANT EVENT DIRECTIVES MODULE
   5702						.SBTTL	SIGNIFICANT EVENT DIRECTIVES -- COPYRIGHT STATEMENT
   5703	022462					IDENT$	1,0
						.IDENT	/001000/
   5704					;
   5705					;                             COPYRIGHT (C) 1975, 1984, 1985 BY
   5706					;                     DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
   5707					;			ALL RIGHTS RESERVED.
   5708					;       THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE  USED  AND  COPIED
   5709					;       ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
   5710					;       OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR ANY OTHER COPIES THERE-
   5711					;       OF  MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
   5712					;       NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
   5713					;
   5714					;       THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT
   5715					;       NOTICE  AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
   5716					;       CORPORATION.
   5717					;
   5718					;       DIGITAL ASSUMES NO RESPONSIBILITY FOR THE  USE  OR  RELIABILITY  OF  ITS
   5719					;       SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
   5720					;
   5721					;		MODULE: SIGNIFICANT EVENT DIRECTIVES
   5722					;
   5723					;		VERSION: 01-00
   5724					;
   5725					;		AUTHOR:  R. MCLEAN
   5726					;
   5727					;		DATE: 19 MAR 75
   5728					;
   5729					;
   5730					;	THIS MODULE CONTAINS:
   5731					;
   5732					;	1 -- CODE TO SERVICE THE "WAITFOR SINGLE EVENT FLAG" DIRECTIVE,
   5733					;	2 -- CODE TO SERVICE THE "WAITFOR LOGICAL 'OR' OF FLAGS" DIRECTIVE,
   5734					;	3 -- CODE TO SERVICE THE "WAIT FOR NEXT SIGNIFICANT EVENT" DIRECTIVE.
   5735					;	4 -- CODE TO SERVICE THE "CLEAR EVENT FLAG" DIRECTIVE,
   5736					;	5 -- CODE TO SERVICE THE "SET EVENT FLAG" DIRECTIVE,
   5737					;	6 -- CODE TO SERVICE THE "DECLARE SIG EVENT" DIRECTIVE,
   5738					;	7 -- CODE TO SERVICE THE "READ EVENT FLAGS" DIRECTIVE
   5739					;
   5740					;	MACROS
   5741
   5742						.MCALL	CALL,RETURN,MTPS,MFPS,MFPI,MTPI
DMSED	- SIGNIFICANT EVENT DIR	MACRO M1113  03-APR-86 20:41  PAGE 109
DIRECTIVE -- CLEAR EVENT FLAG

   5744						.SBTTL	DIRECTIVE -- CLEAR EVENT FLAG
   5745					;+
   5746					;	THE "CLEAR EVENT FLAG" DIRECTIVE
   5747					;
   5748					;	THIS DIRECTIVE INSTRUCTS THE SYSTEM TO CLEAR AND INDICATE
   5749					;	EVENT FLAG AND REPORT THE FLAG'S POLARITY BEFORE CLEARING.
   5750					;
   5751					;	A TWO WORD DPB OF THE FOLLOWING FORMAT IS USED;
   5752					;
   5753					;	WD. 00 -- DIC (31.) & DPB SIZE (2.)
   5754					;	WD. 01 -- EVENT FLAG NUMBER (EFN)
   5755					;
   5756					;	THE FOLLOWING STATUS IS RETURNED:
   5757					;
   5758					;
   5759					; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE STATUS OF:
   5760					;
   5761					;	R0 -- +0 -- FLAG WAS ALREADY RESET,
   5762					;	R0 -- +2 -- FLAG WAS SET.
   5763					;
   5764					; CC-C SET TO INDICATE REJECTION, AND A DIRECTIVE STATUS OF:
   5765					;
   5766					;	R0 -- -97 -- EFN>64 OR EFN<1,
   5767					;	R0 -- -99 -- DIC OR DPB SIZE IS INVALID.
   5768					;-
   5769					; CONTROL IS TRANSFERRED HERE (BY DIRECTIVE DISPATCH ROUTINE) WITH THE
   5770					; DIRECTIVE ISSUING TASK'S PS, PC, & R0-R5 PUSHED ONTO THE
   5771					;  STACK, AND R0-R5 SET AS FOLLOWS:
   5772					;	R0 -- PC OF EMT INSTRUCTION
   5773					;	R1 -- WORD FOLLOWING THE DIC & SIZE
   5774					;	R2 -- SIZE OF DPB (IN WORDS),
   5775					;	R3 -- DIC (DIRECTIVE IDENTIFICATION CODE )
   5776					;	R5 -- ATL NODE ADDRESS OF ISSUING TASK (.CRTSK)
   5777					;
   5778					;
   5779					;
   5780	022462				.D.CEF::CALL	.CEFN		;CONVERT EFN TO: (1) FLAG WORD ADDRESS
	022462	004737 	044320'			JSR	PC,.CEFN
   5781									;IN R2, AND (2) FLAG MASK IN R3 (R2 IS
   5782									;POINTING TO EFN).  IF EFN<0, OR EFN>64.,
   5783									;RETURN STS=-97.  IF EFN=0 (NO EVENT FLAG
   5784									;SPECIFIED), RETURN WITH R2=R3=00.
   5785									;CONDITION CODES ARE SET PER "TST R3".
   5786					;
   5787									;EVENT FLAG SPECIFIED?
   5788	022466	001443 				BEQ	SEX97		;NO -- RETURN STS=-97
   5789	022470	030312 				BIT	R3,@R2		;YES -- IS FLAG CLEARED?
   5790	022472	001410 				BEQ	SEXP0		;YES -- RETURN STS=+0
   5791	022474	040312 				BIC	R3,@R2		;NO -- CLEAR FLAG & RETURN STS=+2
   5792	022476	104402 			SEXP2:	TRAP	DR.02		;COMMON RETURN -- STS=+2
DMSED	- SIGNIFICANT EVENT DIR	MACRO M1113  03-APR-86 20:41  PAGE 110
DIRECTIVE -- SET EVENT FLAG

   5794					.SBTTL	DIRECTIVE -- SET EVENT FLAG
   5795					;+
   5796					; THE "SET EVENT FLAG" DIRECTIVE
   5797					;
   5798					; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO SET AND INDICATED EVENT FLAG
   5799					; AND REPORT THE FLAG'S POLARITY BEFORE SETTING.
   5800					;
   5801					; A TWO WORD DPB OF THE FOLLOWING FORMAT IS USED:
   5802					;
   5803					;	WD. 00 -- DIC (33.) & DPB SIZE (2.),
   5804					;	WD. 01 -- EVENT FLAG NUMBER (EFN).
   5805					;
   5806					; THE FOLLOWING STATUS IS RETURNED:
   5807					;
   5808					; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE STATUS OF:
   5809					;
   5810					;	R0 -- +0 -- FLAG WAS CLEARED,
   5811					;	R0 --+2 -- FLAG WAS SET.
   5812					;
   5813					; CC-C SET TO INDICATE REJECTION, AND A DIRECTIVE STATUS OF:
   5814					;
   5815					;	R0 -- -97 -- EFN>64 OR EFN<1,
   5816					;	R0 -- -99 -- DIC OR DPB SIZE IS INVALID.
   5817					;-
   5818					; CONTROL IS TRANSFERRED HERE (BY DIRECTIVE DISPATCH ROUTINE) WITH THE
   5819					; DIRECTIVE ISSUING TASK'S PS, PC, & R0-R5 PUSHED ONTO THE
   5820					;  STACK, AND R0-R5 SET AS FOLLOWS:
   5821					;	R0 -- PC OF EMT INSTRUCTION
   5822					;	R1 -- WORD FOLLOWING DIC % SIZE
   5823					;	R2 -- DPB SIZE
   5824					;	R3 -- DIC (DIRECTIVE IDENTIFICATION CODE)
   5825					;	R5 -- ATL NODE ADDRESS OF ISSUING TASK (.CRTSK)
   5826					;
   5827					;
   5828									;R1 IS POINTING TO EFN IN DPB
   5829					;
   5830	022500				.D.SEF::CALL	.CEFN		;CONVERT EFN TO: (1) FLAG WORD ADDRESS
	022500	004737 	044320'			JSR	PC,.CEFN
   5831									;IN R2, AND (2) FLAG MASK IN R3 (R2 IS
   5832									;POINTING TO EFN).  IF EFN<0, OR EFN>64.,
   5833									;RETURN STS=-97.  IF EFN=0 (NO EVENT FLAG
   5834									;SPECIFIED), RETURN WITH R2=R3=00.
   5835									;CONDITION CODES ARE SET PER "TST R3".
   5836					;
   5837									;EVENT FLAG SPECIFIED?
   5838	022504	001434 				BEQ	SEX97		;NO -- RETURN STS=-97
   5839	022506	030312 			SEXCM:	BIT	R3,@R2		;YES -- IS FLAG ALREADY SET?
   5840	022510	001372 				BNE	SEXP2		;YES -- RETURN STS=+2
   5841	022512	050312 				BIS	R3,@R2		;NO -- SET FLAG & RETURN STS=+0
   5842	022514	104400 			SEXP0:	TRAP	DR.00		;COMMON RETURN -- STS=+0
DMSED	- SIGNIFICANT EVENT DIR	MACRO M1113  03-APR-86 20:41  PAGE 111
DIRECTIVE -- DECLARE SIGNIFICANT EVENT

   5844					.SBTTL	DIRECTIVE -- DECLARE SIGNIFICANT EVENT
   5845					;+
   5846					; THE "DECLARE SIGNIFICANT EVENT" DIRECTIVE
   5847					;
   5848					; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO DECLARE A SIGNIFICANT EVENT
   5849					; AND OPTIONALLY SET AN EVENT FLAG & AND REPORT ITS POLARITY BEFORE
   5850					; IT WAS SET.
   5851					;
   5852					; A TWO WORD DBP OF THE FOLLOWING FORMAT IS USED TO (1) READ AN EVENT
   5853					; FLAG, (2) SET THE EVENT FLAG, (3) DECLARE A SIGNIFICANT EVENT, AND
   5854					; (4) REPORT THE PRE-EVENT FLAG POLARITY:
   5855					;
   5856					;	WD. 00 -- DIC (35.) & DPB SIZE (2.),
   5857					;	WD. 01 -- EVENT FLAG NUMBER (EFN).
   5858					;
   5859					; A ONE WORD DPB OF THE FOLLOWING FORMAT IS USED TO (1) DECLARE A
   5860					; SIGNIFICANT EVENT:
   5861					;
   5862					;	WD. 00 -- DIC (07.) & DPB SIZE (2.).
   5863					;	WD. 01 -- NO EVENT FLAG SPECIFIED
   5864					;
   5865					; THE FOLLOWING STATUS IS RETURNED:
   5866					;
   5867					; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE STATUS OF:
   5868					;
   5869					;	R0 -- +1 -- NO EVENT FLAG SPECIFIED,
   5870					;	R0 -- +0 -- SPECIFIED FLAG WAS CLEARED,
   5871					;	R0 --+2 -- SPECIFIED FLAG WAS SET.
   5872					;
   5873					; CC-C SET TO INDICATE REJECTION, AND A DIRECTIVE STATUS OF:
   5874					;
   5875					;	R0 -- -97 -- EFN<1 OR EFN>64.,
   5876					;	R0 -- -99 -- DIC OR DPB SIZE IS INVALID.
   5877					;-
   5878					; CONTROL IS TRANSFERRED HERE (BY DIRECTIVE DISPATCH ROUTINE) WITH THE
   5879					; DIRECTIVE ISSUING TASK'S PS, PC, & R0-R5 PUSHED ONTO THE
   5880					; KERNEL STACK, AND R0-R5 SET AS FOLLOWS:
   5881					;	R0 -- PC OF EMT INSTRUCTION
   5882					;	R1 -- WORD FOLLOWING DIC & SIZE
   5883					;	R2 -- DPB SIZE
   5884					;	R3 -- DIC (DIRECTIVE IDENTIFICATION CODE)
   5885					;	R5 -- ATL NODE ADDRESS OF ISSUING TASK (.CRTSK)
   5886					;
   5887					;
   5888					;
   5889	022516				.D.DSE::CALL	..DSEV		;SET SIGNIFICANT EVENT FLAG
	022516	004737 	045264'			JSR	PC,..DSEV
   5890	022522	005302 				DEC	R2
   5891	022524	001401 				BEQ	5$
   5892	022526	104400 				TRAP	DR.00
   5893	022530				5$:	CALL	.CEFN		;YES -- R1 IS POINTING TO EFN IN DPB.
	022530	004737 	044320'			JSR	PC,.CEFN
   5894									;CONVERT EFN TO: (1) FLAG WORD ADDRESS
   5895									;IN R2, AND (2) FLAG MASK IN R3 (R2 IS
   5896									;POINTING TO EFN).  IF EFN<0, OR EFN>64.,
   5897									;RETURN STS=-97.  IF EFN=0 (NO EVENT FLAG
   5898									;SPECIFIED), RETURN WITH R2=R3=00.
DMSED	- SIGNIFICANT EVENT DIR	MACRO M1113  03-APR-86 20:41  PAGE 111-1
DIRECTIVE -- DECLARE SIGNIFICANT EVENT

   5899									;CONDITION CODES ARE SET PER "TST R3".
   5900					;
   5901									;EVENT FLAG SPECIFIED?
   5902	022534	001417 				BEQ	SEXP1		;NO -- RETURN STS=1.
   5903	022536	000763 				BR	SEXCM		;GO TO COMMON TEST
DMSED	- SIGNIFICANT EVENT DIR	MACRO M1113  03-APR-86 20:41  PAGE 112
DIRECTIVE -- READ EVENT FLAG

   5905					.SBTTL	DIRECTIVE -- READ EVENT FLAG
   5906					;+
   5907					; THE "READ EVENT FLAG" DIRECTIVE
   5908					;
   5909					; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO READ AND INDICATED EVENT FLAG.
   5910					;
   5911					; A TWO WORD DPB OF THE FOLLOWING FORMAT IS USED:
   5912					;
   5913					;	WD. 00 -- DIC (37.) & DPB SIZE (2.),
   5914					;	WD. 01 -- EVENT FLAG NUMBER (EFN).
   5915					;
   5916					; THE FOLLOWING STATUS IS RETURNED:
   5917					;
   5918					; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE STATUS OF:
   5919					;
   5920					;	R0 -- +0 -- FLAG WAS CLEARED,
   5921					;	R0 -- +2 -- FLAG WAS SET.
   5922					;
   5923					; CC-C SET TO INDICATE REJECTION, AND A DIRECTIVE STATUS OF:
   5924					;
   5925					;	R0 -- -97 -- EFN>64 OR EFN<1,
   5926					;	R0 -- -99 -- DIC OR DPB SIZE IS INVALID.
   5927					;-
   5928					; CONTROL IS TRANSFERRED HERE (BY DIRECTIVE DISPATCH ROUTINE) WITH THE
   5929					; DIRECTIVE ISSUING TASK'S PS, PC, & R0-R5 PUSHED ONTO THE
   5930					;  STACK, AND R0-R5 SET AS FOLLOWS:
   5931					;	R0 -- PC OF EMT INSTRUCTION
   5932					;	R1 -- WORD FOLLOWING DIC & SIZE
   5933					;	R2 -- DPB SIZE
   5934					;	R3 -- DIC (DIRECTIVE IDENTIFICATION CODE)
   5935					;	R5 -- ATL NODE ADDRESS OF ISSUING TASK (.CRTSK)
   5936					;
   5937					;
   5938									;R1 IS POINTING TO EFN IN DPB.
   5939					;
   5940	022540				.D.REF::CALL	.CEFN		;CONVERT EFN TO: (1) FLAG WORD ADDRESS
	022540	004737 	044320'			JSR	PC,.CEFN
   5941									;IN R2, AND (2) FLAG MASK IN R3 (R2 IS
   5942									;POINTING TO EFN).  IF EFN<0, OR EFN>64.,
   5943									;RETURN STS=-97.  IF EFN=0 (NO EVENT FLAG
   5944									;SPECIFIED), RETURN WITH R2=R3=00.
   5945									;CONDITION CODES ARE SET PER "TST R3".
   5946					;
   5947									;EVENT FLAG SPECIFIED?
   5948	022544	001414 				BEQ	SEX97		;NO -- RETURN STS=-97
   5949	022546	030312 				BIT	R3,@R2		;YES -- IS FLAG SET?
   5950	022550	001352 				BNE	SEXP2		;YES -- RETURN STS=+2
   5951	022552	104400 				TRAP	DR.00		;NO -- RETURN STS=+0
DMSED	- SIGNIFICANT EVENT DIR	MACRO M1113  03-APR-86 20:41  PAGE 113
DIRECTIVE -- READ ALL EVENT FLAGS

   5953					.SBTTL	DIRECTIVE -- READ ALL EVENT FLAGS
   5954					;+
   5955					; THE "READ ALL FLAGS" DIRECTIVE
   5956					;
   5957					; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO READ ALL SIXTY-FOUR
   5958					; EVENT FLAGS FOR THE ISSUING TASK AND RECORD THEIR POLARITIES
   5959					; IN A SIXTY-FOUR BIT (4-WORD) BUFFER.
   5960					;
   5961					; A TWO WORD DPB OF THE FOLLOWING FORMAT IS USED:
   5962					;
   5963					;	WD. 00 -- DIC (39.) & DPB SIZE (2.),
   5964					;	WD. 01 -- ADDRESS  OF 64-BIT BUFFER.
   5965					;
   5966					; THE FOLLOWING STATUS IS RETURNED:
   5967					;
   5968					; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE STATUS
   5969					; OF ONE (+1).
   5970					;
   5971					; CC-C SET TO INDICATE REJECTION, AND A DIRECTIVE STATUS OF:
   5972					;
   5973					;	R0 -- -99 -- DIC OR DPB SIZE IS INVALID.
   5974					;-
   5975					; CONTROL IS TRANSFERRED HERE (BY DIRECTIVE DISPATCH ROUTINE) WITH THE
   5976					; DIRECTIVE ISSUING TASK'S PS, PC, & R0-R5 PUSHED ONTO THE
   5977					;  STACK, AND R0-R5 SET AS FOLLOWS:
   5978					;	R0 -- PC OF EMT INSTRUCTION
   5979					;	R1 -- WORD FOLLOWING DIC & SIZE
   5980					;	R2 -- DPB SIZE
   5981					;	R3 -- DIC (DIRECTIVE IDENTIFICATION CODE)
   5982					;	R5 -- ATL NODE ADDRESS OF ISSUING TASK (.CRTSK)
   5983					;
   5984					;
   5985					; FILL FOUR WORD BUFFER
   5986					;
   5987	022554				.D.RAF::MTPS   A.EF+0(R5),(R1)+	;FLAGS 1-16 TO BUF+0
	022554	016521 	000020 			MOV	A.EF+0(R5),(R1)+
   5988	022560					MTPS   A.EF+2(R5),(R1)+	;FLAGS 17-32 TO BUF+2
	022560	016521 	000022 			MOV	A.EF+2(R5),(R1)+
   5989	022564					MTPS	.COMEF+0,(R1)+	;FLAGS 33-48 TO BUF+4
	022564	013721 	001010'			MOV	.COMEF+0,(R1)+
   5990	022570					MTPS	.COMEF+2,(R1)+	;FLAGS 49-64 TO BUF+6
	022570	013721 	001012'			MOV	.COMEF+2,(R1)+
   5991					;
   5992	022574	104401 			SEXP1:	TRAP	DR.01		;RETURN STS=+1
   5993					;
   5994	022576	104637 			SEX97:	TRAP	DE.97
DMSED	- SIGNIFICANT EVENT DIR	MACRO M1113  03-APR-86 20:41  PAGE 114
DIRECTIVE -- WAITFOR SINGLE EVENT FLAG

   5996					.SBTTL	DIRECTIVE -- WAITFOR SINGLE EVENT FLAG
   5997					;+
   5998					; THE "WAIT FOR SINGLE EVENT FLAG" DIRECTIVE
   5999					;
   6000					; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO SUSPEND THE EXECUTION OF THE
   6001					; ISSUING TASK UNTIL AN INDICATED EVENT FLAG IS SET.  IF THE FLAG IS SET
   6002					; AT ISSUANCE, TASK EXECUTION IS EFFECTIVELY NOT SUSPENDED.  (ACTUALLY, THE
   6003					; TASK IS ALWAYS SUSPENDED, BUT R0 IS LEFT POINTING TO THE ISSUING TASK'S
   6004					; ATL NODE; AND THEREFORE, A CHECK IS ALWAYS MADE BY THE ATL SCAN ROUTINE.)
   6005					;
   6006					; A TWO WORD DPB OF THE FOLLOWING FORMAT IS USED:
   6007					;
   6008					;	WD. 00 -- DIC (41.) & DPB SIZE (2.),
   6009					;	WD. 01 -- EVENT FLAG NUMBER (EFN).
   6010					;
   6011					; THE FOLLOWING STATUS IS RETURNED:
   6012					;
   6013					; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE STATUS
   6014					; OF ONE (+1).
   6015					;
   6016					; CC-C SET TO INDICATE REJECTION, AND A DIRECTIVE STATUS OF:
   6017					;
   6018					;	R0 -- -97 -- INVALID EVENT FLAG NUMBER (<1 OR >64.),
   6019					;	R0 -- -99 -- DIC OR DPB SIZE IS INVALID.
   6020					;-
   6021					;
   6022					;
   6023					; CONTROL IS TRANSFERRED HERE (BY DIRECTIVE DISPATCH ROUTINE) WITH THE
   6024					; DIRECTIVE ISSUING TASK'S PS, PC, & R0-R5 PUSHED ONTO THE
   6025					;  STACK, AND R0-R5 SET AS FOLLOWS:
   6026					;	R0 -- PC OF EMT INSTRUCTION
   6027					;	R1 -- WORD FOLLOWING DIC & SIZE
   6028					;	R2 -- DPB SIZE
   6029					;	R3 -- DIC (DIRECTIVE IDENTIFICATION CODE)
   6030					;	R5 -- ATL NODE ADDRESS OF ISSUING TASK (.CRTSK)
   6031					;
   6032					;
   6033	022600	011103 			.D.WFS::MOV	@R1,R3		;SET R3 TO EFN
   6034									;IS AN EVENT FLAG SPECIFIED (NON-ZERO EFN)?
   6035	022602				.D.WFO::			;SPECIAL ENTRY POINT FOR QIO AND WAIT
   6036	022602	001775 				BEQ	SEX97		;NO -- RETURN STS=-97.
   6037	022604	020327 	000100 			CMP	R3,#64.		;YES -- IS EFN IN RANGE: 0-64.?
   6038	022610	101372 				BHI	SEX97		;NO -- RETURN STS=-97.
   6039					;
   6040	022612	005303 				DEC	R3		;YES -- CONVERT EFN TO FLAG SET NUMBER (R2),
   6041	022614	005002 				CLR	R2		;AND FLAG MASK (R1)
   6042	022616					CALL	DIV216		;DIVIDE R2 BY 16.
	022616	004737 	045274'			JSR	PC,DIV216
   6043	022622	012701 	000001 			MOV	#1,R1
   6044	022626	005303 			10$:	DEC	R3		;DO AN ASH	R3,R1
   6045	022630	100402 				BMI	20$
   6046	022632	006301 				ASL	R1
   6047	022634	000774 				BR	10$
   6048	022636				20$:
   6049					;
   6050					;
   6051	022636	006302 				ASL	R2		;CONVERT SET NUMBER (0,1,2,3) TO TASK
DMSED	- SIGNIFICANT EVENT DIR	MACRO M1113  03-APR-86 20:41  PAGE 114-1
DIRECTIVE -- WAITFOR SINGLE EVENT FLAG

   6052	022640	062702 	000014 			ADD	#TS.WF0,R2	;STATUS FOR ATL NODE.
   6053					;
   6054	022644	010165 	000024 			MOV	R1,A.FM+0(R5)	;SET MASK AND STATUS IN ATL NODE
   6055	022650	110265 	000014 			MOVB	R2,A.TS(R5)
   6056					;
   6057	022654	104401 				TRAP	DR.01		;RETURN STS=+1
DMSED	- SIGNIFICANT EVENT DIR	MACRO M1113  03-APR-86 20:41  PAGE 115
DIRECTIVE -- WAITFOR LOGICAL 'OR' OF FLAGS

   6059					.SBTTL	DIRECTIVE -- WAITFOR LOGICAL 'OR' OF FLAGS
   6060					;+
   6061					; THE "WAITFOR LOGICAL 'OR' OF FLAGS" DIRECTIVE
   6062					;
   6063					;
   6064					; IF THE INDICATED CONDITION IS MET AT ISSUANCE, TASK EXECUTION IS
   6065					; EFFECTIVELY NOT SUSPENDED.  (ACTUALLY, THE TASK IS ALWAYS SUSPENDED,
   6066					;
   6067					;
   6068					; A THREE WORD DPB OF THE FOLLOWING FORMAT IS USED TO WAIT FOR EVENT FLAGS OF A GIVEN SET
   6069					;
   6070					;	WD. 00 -- DIC (43.) & DPB SIZE (3.)
   6071					;	WD. 01 -- SET NUMBER
   6072					;	WD. 02 -- FLAGS MASK FOR THIS SET
   6073					;
   6074					;
   6075					; A FIVE-WORD DPB OF THE FOLLOWING FORMAT IS USED TO WAITFOR EVENT FLAGS
   6076					; OF SET FOUR:
   6077					;
   6078					;	WD. 00 -- DIC (15.) & DPB SIZE (5.),
   6079					;	WD. 01 -- MASK WORD FOR FLAGS 1-16,
   6080					;	WD. 02 -- MASK WORD FOR FLAGS 17-32,
   6081					;	WD. 03 -- MASK WORD FOR FLAGS 33-48,
   6082					;	WD. 04 -- MASK WORD FOR FLAGS 49-64.
   6083					;
   6084					; MASK WORD BITS FROM RIGHT-TO-LEFT REPRESENT INCREASING EVENT FLAG
   6085					; NUMBERS, AND A SET MASK WORD BIT INDICATES "WAITFOR THE CORRESPONDING
   6086					; EVENT FLAG".
   6087					;
   6088					; THE FOLLOWING STATUS IS RETURNED.
   6089					;
   6090					; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE STATUS
   6091					; OF ONE (+1).
   6092					;
   6093					; CC-C SET TO INDICATE REJECTION, AND DIRECTIVE STATUS OF:
   6094					;
   6095					;	R0 -- -97 -- NO EVENT FLAG SPECIFIED IN MASK WORD(S),
   6096					;	R0 -- -99 -- DIC OR DPB SIZE IS INVALID.
   6097					;-
   6098					; CONTROL IS TRANSFERRED HERE (BY DIRECTIVE DISPATCH ROUTINE) WITH THE
   6099					; DIRECTIVE ISSUING TASK'S PS, PC, & R0-R5 PUSHED ONTO THE
   6100					; KERNEL STACK, AND R0-R5 SET AS FOLLOWS:
   6101					;	R0 -- PC OF EMT INSTRUCTION
   6102					;	R1 -- WORD FOLLOWING DIC & SIZE
   6103					;	R2 -- DPB SIZE
   6104					;	R3 -- DIC (DIRECTIVE IDENTIFICATION CODE)
   6105					;	R5 -- ATL NODE ADDRESS OF ISSUING TASK (.CRTSK)
   6106					;
   6107					;
   6108					;
   6109					; EVEN FLAG SET IS FOUR.  I.E., WAIT FOR ANY OF SIXTY-FOUR EVENT FLAGS.
   6110					;
   6111					; SET 64-BIT FLAGS MASK IN ATL NODE AND ACCUMULATE 'OR' OF MASK WORDS
   6112					; IN R2.  THE 64-BIT MASK IS SET BY MOVING FOUR WORDS FROM THE DPB TO
   6113					; THE ATL NODE.
   6114					;
   6115					; IF NO FLAG INDICATED (ALL 64 BITS ARE ZERO), RETURN STS=-97.
DMSED	- SIGNIFICANT EVENT DIR	MACRO M1113  03-APR-86 20:41  PAGE 115-1
DIRECTIVE -- WAITFOR LOGICAL 'OR' OF FLAGS

   6116					;
   6117	022656	022702 	000005 		.D.WFL::CMP	#5,R2		;THREE OR 5 WORD DPB?
   6118	022662	001020 				BNE	10$		;THREE WORD DPB (WAIT FOR ONE SET)
   6119	022664	010502 				MOV	R5,R2		;SETUP R2 TO FILL ATL NODE
   6120	022666	062702 	000024 			ADD	#A.FM,R2
   6121	022672					MFPS	(R1)+,@R2	;MASK FOR FLAGS 1-16
	022672	012112 				MOV	(R1)+,@R2
   6122	022674	012203 				MOV	(R2)+,R3
   6123									;MASK FOR FLAGS 17-32
   6124	022676					MFPS	(R1)+,@R2
	022676	012112 				MOV	(R1)+,@R2
   6125	022700	052203 				BIS	(R2)+,R3
   6126									;MASK FOR FLAGS 33-48
   6127	022702					MFPS	(R1)+,@R2
	022702	012112 				MOV	(R1)+,@R2
   6128	022704	052203 				BIS	(R2)+,R3
   6129	022706					MFPS	@R1,@R2		;MASK FOR FLAGS 49-64 (LAST DPB WORD)
	022706	011112 				MOV	@R1,@R2
   6130	022710	051203 				BIS	@R2,R3
   6131	022712	001731 				BEQ	SEX97		;RETURN STS=-97 IF NO FLAG INDICATED
   6132					;
   6133	022714	112765 	000024 	000014 		MOVB	#TS.WF4,A.TS(R5) ;SET WAITFOR-SET-FOUR TASK STATUS
   6134					;
   6135	022722	104401 				TRAP	DR.01		;RETURN DIRECTIVE STS=+1
   6136					;
   6137	022724				10$:	MFPS	(R1)+,R2	;FIND THE SET NUMBER
	022724	012102 				MOV	(R1)+,R2
   6138	022726	001415 				BEQ	30$		;ILLEGAL SET NUMBER
   6139	022730					MFPS	(R1)+,R3	;FIND THE FLAGS TO WAIT FOR
	022730	012103 				MOV	(R1)+,R3
   6140	022732	020227 	000004 			CMP	R2,#4		;LEGAL SET NUMBER?
   6141	022736	101011 				BHI	30$		;NO -- ILLEGAL SET TO WAIT FOR
   6142	022740	005302 				DEC	R2		;DECREMENT SO SET1 IS 0
   6143	022742	006302 				ASL	R2		;MULTIPLY BY 2
   6144	022744	062702 	000014 			ADD	#TS.WF0,R2	;POINT TO THE CORRECT ATL STATUS
   6145	022750	110265 	000014 			MOVB	R2,A.TS(R5)	;SET THE CORRECT STATUS IN THE ATL NODE
   6146	022754	010365 	000024 			MOV	R3,A.FM(R5)	;SET UP THE FLAGS MASK WORD FOR THESE EVENT FLAGS
   6147	022760	104401 				TRAP	DR.01		;RETURN STS +1
   6148					;
   6149	022762	104636 			30$:	TRAP	DE.98		;ILLEGAL SET NUMBER
DMSED	- SIGNIFICANT EVENT DIR	MACRO M1113  03-APR-86 20:41  PAGE 116
DIRECTIVE -- WAITFOR NEXT SIGNIFICANT EVENT

   6151					.SBTTL	DIRECTIVE -- WAITFOR NEXT SIGNIFICANT EVENT
   6152					;+
   6153					; THE "WAIT FOR NEXT SIGNIFICANT EVENT" DIRECTIVE
   6154					;
   6155					; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO SUSPEND THE EXECUTION OF THE
   6156					; ISSUING TASK UNTIL THE NEXT SIGNIFICANT EVENT HAS BEEN DECLARED.
   6157					;
   6158					; A ONE WORD DPB OF THE FOLLOWING FORMAT IS USED:
   6159					;
   6160					;	WD. 00 -- DIC (49.) & DPB SIZE (1.).
   6161					;
   6162					; THE FOLLOWING STATUS IS RETURNED:
   6163					;
   6164					; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE STATUS
   6165					; OF ONE (+1).
   6166					;
   6167					; CC-C SET TO INDICATE REJECTION, AND A DIRECTIVE STATUS OF:
   6168					;
   6169					;	R0 -- -99 -- DIC OR DPB SIZE IS INVALID.
   6170					;-
   6171					; CONTROL IS TRANSFERRED HERE (BY DIRECTIVE DISPATCH ROUTINE) WITH THE
   6172					; DIRECTIVE ISSUING TASK'S PS, PC, & R0-R5 PUSHED ONTO THE
   6173					; KERNEL STACK, AND R0-R5 SET AS FOLLOWS:
   6174					;	R0 -- PC OF EMT INSTRUCTION
   6175					;	R1 -- WORD FOLLOWING DIC & SIZE
   6176					;	R2 -- DPB SIZE
   6177					;	R3 -- DIC (DIRECTIVE IDENTIFICATION CODE)
   6178					;	R5 -- ATL NODE ADDRESS OF ISSUING TASK (.CRTSK)
   6179					;
   6180					;
   6181	022764	011505 			.D.WSE::MOV	@R5,R5		;ADVANCE R5 (ATL NODE POINTER)
   6182	022766	012737 	000001 	001016'		MOV	#EV.SE,.SEWFL
   6183	022774	104401 				TRAP	DR.01		;RETURN STS=+1.
   6184					;
DMSED	- SIGNIFICANT EVENT DIR	MACRO M1113  03-APR-86 20:41  PAGE 117
DIRECTIVE -- WAITFOR NEXT SIGNIFICANT EVENT

   6186
   6187
   6188						.TITLE	DMMKT	- "MARK TIME" DIRECTIVE MODULE
   6189						.SBTTL	MARK TIME -- COPYRIGHT STATEMENT
   6190	022776					IDENT$	1,0
						.IDENT	/001000/
   6191					;
   6192					;                             COPYRIGHT (C) 1975, 1984, 1985 BY
   6193					;                     DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
   6194					;			ALL RIGHTS RESERVED.
   6195					;       THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE  USED  AND  COPIED
   6196					;       ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
   6197					;       OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR ANY OTHER COPIES THERE-
   6198					;       OF  MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
   6199					;       NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
   6200					;
   6201					;       THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT
   6202					;       NOTICE  AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
   6203					;       CORPORATION.
   6204					;
   6205					;       DIGITAL ASSUMES NO RESPONSIBILITY FOR THE  USE  OR  RELIABILITY  OF  ITS
   6206					;       SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
   6207					;
   6208					;		MODULE: "MARK TIME" DIRECTIVE
   6209					;
   6210					;		VERSION: 01-00
   6211					;
   6212					;		AUTHOR:  R. MCLEAN
   6213					;
   6214					;		DATE: 19 APR 75
   6215					;
   6216					;
   6217					;	THIS MODULE CONTAINS:
   6218					;
   6219					;	1 -- CODE TO SERVICE THE "MARK TIME" DIRECTIVE.
   6220					;
   6221					;	MACROS
   6222
   6223						.MCALL	CALL,RETURN,MFPI,MTPI,MTPS,MFPS
DMMKT	- "MARK TIME" DIRECTIVE	MACRO M1113  03-APR-86 20:41  PAGE 118
DIRECTIVE -- MARK TIME

   6225						.SBTTL	DIRECTIVE -- MARK TIME
   6226					;+
   6227					; THE "MARK TIME" DIRECTIVE
   6228					;
   6229					; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO DECLARE A SIGNIFICANT EVENT
   6230					; IN AN INDICATED TIME INTERVAL FROM ISSUANCE.
   6231					;
   6232					; IF AN EVENT FLAG IS SPECIFIED, IT IS CLEARED AT ISSUANCE AND SET
   6233					; AT THE TIME OF THE SIGNIFICANT EVENT.
   6234					;
   6235					;
   6236					; IF  AN EVENT FLAG NUMBER
   6237					; IS SPECIFIED, THE SIGNIFICANT EVENT WILL STILL OCCUR AFTER
   6238					; THE INDICATED TIME INTERVAL.
   6239					;
   6240					; A FOUR WORD DPB OF THE FOLLOWING FORMAT IS USED:
   6241					;
   6242					;	WD. 00 -- DIC (23.) & DPB SIZE (5.),
   6243					;	WD. 01 -- EVENT FLAG NUMBER (EFN),
   6244					;	WD. 02 -- TIME INTERVAL MAGNITUDE, ( IN TICS)
   6245					;	WD. 03 -- RESCHEDULE INTERVAL (IN TICS)
   6246					;	WD. 04 -- AST TRAP ADDRESS
   6247					;
   6248					; THE FOLLOWING STATUS IS RETURNED:
   6249					;
   6250					; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE STATUS
   6251					; OF ONE (+1).
   6252					;
   6253					; CC-C SET TO INDICATE REJECTION, AND A DIRECTIVE STATUS OF:
   6254					;
   6255					;	-01 -- UNAVAILABLE ENTRY (FOR CLOCK LIST),
   6256					;
   6257					;	-97 -- INVALID EVENT FLAG NUMBER (EFN<0 OR EFN>64),
   6258					;	-99 -- DIC OR DPB SIZE IS INVALID.
   6259					;-
   6260					; CONTROL IS TRANSFERRED HERE (BY DIRECTIVE DISPATCH ROUTINE) WITH THE
   6261					; DIRECTIVE ISSUING TASK'S PS, PC, & R0-R5 PUSHED ONTO THE
   6262					;  STACK, AND R0-R5 SET AS FOLLOWS:
   6263					;
   6264					; R5 IS LEFT UNALTERED (I.E. POINTING TO ISSUING TASK'S ATL NODE).
   6265					;
   6266					;
   6267									;R1 IS POINTING TO EFN IN DPB
   6268					;
   6269					;
   6270	022776				.D.MKT::CALL	.CEFN		;CONVERT EFN TO: (1) FLAG WORD ADDRESS
	022776	004737 	044320'			JSR	PC,.CEFN
   6271									;IN R2, AND (2) FLAG MASK IN R3 (R2 IS
   6272									;POINTING TO EFN).  IF EFN<0, OR EFN>64.,
   6273									;RETURN STS=-97.  IF EFN=0 (NO EVENT FLAG
   6274									;SPECIFIED), RETURN WITH R2=R3=00.
   6275									;CONDITION CODES ARE SET PER "TST R3".
   6276					;
   6277	023002	001001 				BNE	10$		;ALL OK WITH EFN
   6278	023004	104637 				TRAP	DE.97		;RETURN STS=-97
   6279	023006	062701 	000004 		10$:	ADD	#4,R1		;R1 IS POINTING TO THE EFN, ADVANCE TO THE
   6280									;FIRST WORD (MAGNITUDE) OF TIME INTERVAL.
DMMKT	- "MARK TIME" DIRECTIVE	MACRO M1113  03-APR-86 20:41  PAGE 118-1
DIRECTIVE -- MARK TIME

   6281					;
   6282	023012	010246 				MOV	R2,-(SP)	;PUSH EFN WORD ADDRESS
   6283	023014	010346 				MOV	R3,-(SP)	;PUSH EFN MASK
   6284					;
   6285	023016					MFPI	(R1)		;PUSH THE RESCHED INTERVAL
	023016	011146 				MOV	(R1),-(SP)
   6286	023020					MFPI	-(R1)		;PUSH TIME INTERVAL MAGNITUED MAGNITUDE
	023020	014146 				MOV	-(R1),-(SP)
   6287	023022					MFPI	4(R1)		;PUSH AST TRAP ADDRES
	023022	016146 	000004 			MOV	4(R1),-(SP)
   6288					;
   6289					;
   6290					; STACK & REGISTER SUMMARY:
   6291					;
   6292					;	SP+10 -- FLAG WORD ADDRESS (OR ZERO)
   6293					;	SP+06 -- FLAG MASK (OR ZERO)
   6294					;	SP+04 -- TIME RESCHEDULE INTERVAL
   6295					;	SP+02 -- TIME INTERVAL
   6296					;	SP+00 -- AST TRAP ADDRESS
   6297					;
   6298					;	R5 -- ATL NODE ADDRESS OF ISSUING TASK
   6299					;	R1 -- ADDRESS OF NODE FOR CLOCK QUEUE
   6300					;
   6301	023026	046676 	000006 	000010 		BIC	+6(SP),@+10(SP)	;CLEAR INDICATED EVENT FLAG
   6302					;
   6303	023034	012700 	002376'			MOV	#.CLKBA,R0	;POINT TO BEGINNING OF CLOCK LIST
   6304	023040	022700 	002602'		20$:	CMP	#.CLKEA,R0	;END OF LIST?
   6305	023044	001001 				BNE	30$		;NO -- MUST BE OK
   6306	023046	104777 				TRAP	DE.01		;YES -- RAN OUT OF CLOCK ENTRIES
   6307	023050	005710 			30$:	TST	@R0		;LOOK FOR A FREE ENTRY
   6308	023052	001403 				BEQ	40$		;FOUND ONE
   6309	023054	062700 	000014 			ADD	#C.SZ,R0	;NOT HERE -- TRYNEXT ENTRY
   6310	023060	000767 				BR	20$
   6311					;
   6312					;
   6313	023062	010520 			40$:	MOV	R5,(R0)+	;ATL NODE OF ISSUING TASK
   6314	023064	012620 				MOV	(SP)+,(R0)+	;AST ADDRESS
   6315	023066	012620 				MOV	(SP)+,(R0)+	;(POP) SCHEDULE INTERVAL
   6316	023070	012620 				MOV	(SP)+,(R0)+	;(POP) RESCHEDULE INTERVAL
   6317	023072	012620 				MOV	(SP)+,(R0)+	;(POP) EVENT FLAG MASK
   6318	023074	012620 				MOV	(SP)+,(R0)+	;(POP) EVENT FLAG WORD ADDRESS
   6319					;
   6320	023076	104401 				TRAP	DR.01		;RETURN STS=+1
   6321					;
DMMKT	- "MARK TIME" DIRECTIVE	MACRO M1113  03-APR-86 20:41  PAGE 119
DIRECTIVE -- MARK TIME

   6323
   6324
   6325						.TITLE	DMCMT	- "CANCEL MARK TIME" DIRECTIVE MODULE
   6326						.SBTTL	CANCEL MARK TIME -- COPYRIGHT STATEMENT
   6327	023100					IDENT$	1,0
						.IDENT	/001000/
   6328					;
   6329					;                             COPYRIGHT (C) 1975, 1984, 1985 BY
   6330					;                     DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
   6331					;			ALL RIGHTS RESERVED.
   6332					;       THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE  USED  AND  COPIED
   6333					;       ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
   6334					;       OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR ANY OTHER COPIES THERE-
   6335					;       OF  MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
   6336					;       NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
   6337					;
   6338					;       THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT
   6339					;       NOTICE  AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
   6340					;       CORPORATION.
   6341					;
   6342					;       DIGITAL ASSUMES NO RESPONSIBILITY FOR THE  USE  OR  RELIABILITY  OF  ITS
   6343					;       SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
   6344					;
   6345					;		MODULE: "CANCEL MARK TIME" DIRECTIVE
   6346					;
   6347					;		VERSION: 01-00
   6348					;
   6349					;		AUTHOR:  R. MCLEAN
   6350					;
   6351					;		DATE: 19 MAR 75
   6352					;
   6353					;
   6354					;	THIS MODULE CONTAINS:
   6355					;
   6356					;	1 -- CODE TO SERVICE THE "CANCEL MARK TIME" DIRECTIVE.
   6357					;
   6358					;	MACROS
   6359					;
   6360
   6361						.MCALL	CALL,RETURN
DMCMT	- "CANCEL MARK TIME" DI	MACRO M1113  03-APR-86 20:41  PAGE 120
DIRECTIVE -- CANCEL MARK-TIME REQUESTS

   6363						.SBTTL	DIRECTIVE -- CANCEL MARK-TIME REQUESTS
   6364					;+
   6365					; THE "CANCEL MARK-TIME REQUESTS" DIRECTIVE
   6366					;
   6367					; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO CANCEL MARK-TIME REQUESTS
   6368					; THAT HAVE BEEN MADE BY THE ISSUING TASK.
   6369					;
   6370					; A ONE WORD DPB OF THE FOLLOWING FORMAT IS USED TO CANCEL ALL MARK-TIME
   6371					; REQUESTS THAT HAVE BEEN MADE BY THE ISSUING TASK:
   6372					;
   6373					;	WD. 00 -- DIC (21.) & DPB SIZE (1.).
   6374					;
   6375					;
   6376					; THE FOLLOWING STATUS IS RETURNED:
   6377					;
   6378					; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE STATUS
   6379					; OF ONE (R0 - +1).
   6380					;
   6381					; CC-C SET TO INDICATE REJECTION, AND A DIRECTIVE STATUS OF:
   6382					;
   6383					;	R0 -- -97 -- INVALID EVENT FLAG NUMBER (EFN<0 OR EFN>64),
   6384					;	R0 -- -99 -- DIC OR DPB SIZE IS INVALID.
   6385					;-
   6386					; CONTROL IS TRANSFERRED HERE (BY DIRECTIVE DISPATCH ROUTINE) WITH THE
   6387					; DIRECTIVE ISSUING TASK'S PS, PC, & R0-R5 PUSHED ONTO THE
   6388					;  STACK, AND R0-R5 SET AS FOLLOWS:
   6389					;	R0 -- PC OF EMT INSTRUCTION
   6390					;	R1 -- WORD FOLLOWING DIC & SIZE
   6391					;	R2 -- DPB SIZE
   6392					;	R3 -- DIC (DIRECTIVE IDENTIFICATION CODE)
   6393					;
   6394					;
   6395					; ALL MARK-TIME REQUESTS BY THE ISSUING TASK ARE TO BE DELETED
   6396					; FROM THE CLOCK QUEUE.
   6397					;
   6398					;
   6399	023100	010546 			.D.CMT::MOV	R5,-(SP)	;SAVE CURRENT TASK POINTER
   6400	023102	012704 	002376'			MOV	#.CLKBA,R4	;USE R4 TO SCAN DEQUE
   6401					;
   6402	023106	020427 	002602'		50$:	CMP	R4,#.CLKEA	;END OF SCAN (END OF DEQUE)?
   6403	023112	001002 				BNE	60$
   6404	023114	012605 				MOV	(SP)+,R5	;RESTORE CURRENT TASK POINTER
   6405	023116	104401 				TRAP	DR.01		;YES -- RETURN STS=+1.
   6406									;NO -- CHECK NODE POINTED TO BY R4
   6407	023120	026405 	000000 		60$:	CMP	C.AT(R4),R5	;YES -- WAS REQUEST MADE BY ISSUING TASK?
   6408	023124	001005 				BNE	45$		;NO -- NEXT NODE
   6409									;DELETE NODE (PER R4) FROM CLOCK QUEUE, AND
   6410	023126					CALL	.CKDEL		;QUEUE NODE (R4 IS NOT ALTERED).
	023126	004737 	044406'			JSR	PC,.CKDEL
   6411					;
   6412					;
   6413	023132	000765 				BR	50$		;TEST FOR END OF DEQUE
   6414					;
   6415	023134	012605 			90$:	MOV	(SP)+,R5	;RESTORE CURRENT TASK POINTER
   6416	023136	104637 				TRAP	DE.97		;TO RETURN STS=-97.
   6417					;
   6418	023140	062704 	000014 		45$:	ADD	#C.SZ,R4	;UPDATE THE Q SIZE TO LOOK AT NEXT ENTRY
DMCMT	- "CANCEL MARK TIME" DI	MACRO M1113  03-APR-86 20:41  PAGE 120-1
DIRECTIVE -- CANCEL MARK-TIME REQUESTS

   6419	023144	000760 				BR	50$
   6420					;
DMCMT	- "CANCEL MARK TIME" DI	MACRO M1113  03-APR-86 20:41  PAGE 121
DIRECTIVE -- CANCEL MARK-TIME REQUESTS

   6422
   6423						.TITLE	DMEXT	- "EXIT" DIRECTIVE MODULE
   6424						.SBTTL	EXIT -- COPYRIGHT STATEMENT
   6425	023146					IDENT$	1,0
						.IDENT	/001000/
   6426					;
   6427					;                             COPYRIGHT (C) 1975, 1984, 1985 BY
   6428					;                     DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
   6429					;			ALL RIGHTS RESERVED.
   6430					;       THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE  USED  AND  COPIED
   6431					;       ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
   6432					;       OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR ANY OTHER COPIES THERE-
   6433					;       OF  MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
   6434					;       NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
   6435					;
   6436					;       THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT
   6437					;       NOTICE  AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
   6438					;       CORPORATION.
   6439					;
   6440					;       DIGITAL ASSUMES NO RESPONSIBILITY FOR THE  USE  OR  RELIABILITY  OF  ITS
   6441					;       SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
   6442					;
   6443					;		MODULE: "EXIT" DIRECTIVE
   6444					;
   6445					;		VERSION: 01-00
   6446					;
   6447					;		AUTHOR: R. MCLEAN
   6448					;
   6449					;		DATE: 19 MAR 75
   6450					;
   6451					;
   6452					;	THIS MODULE CONTAINS:
   6453					;
   6454					;	1 -- CODE TO SERVICE THE "EXIT" DIRECTIVE
   6455					;
   6456					;	MACROS
   6457					;
   6458
   6459						.MCALL	CALL,RETURN
DMEXT	- "EXIT" DIRECTIVE MODU	MACRO M1113  03-APR-86 20:41  PAGE 122
DIRECTIVE -- TASK EXIT

   6461						.SBTTL	DIRECTIVE -- TASK EXIT
   6462					;+
   6463					; THE "TASK EXIT" DIRECTIVE
   6464					;
   6465					; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO TERMINATE THE EXECUTION OF THE
   6466					; ISSUING TASK.
   6467					;
   6468					; A ONE WORD DPB OF THE FOLLOWING FORMAT IS USED:
   6469					;
   6470					;	WD. 00 -- DIC (27.) & DPB SIZE (1.).
   6471					;
   6472					; THE FOLLOWING STATUS IS RETURNED:
   6473					;
   6474					; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE STATUS
   6475					; OF ONE (+1).
   6476					;
   6477					; CC-C SET TO INDICATE REJECTION, AND A DIRECTIVE STATUS OF:
   6478					;
   6479					;	-99 -- DIC OR DPB SIZE IS INVALID.
   6480					;-
   6481					; CONTROL IS TRANSFERRED HERE (BY DIRECTIVE DISPATCH ROUTINE) WITH THE
   6482					; DIRECTIVE ISSUING TASK'S PS, PC, & R1-R5 PUSHED ONTO THE
   6483					;  STACK, AND R0-R5 SET AS FOLLOWS:
   6484					;	R1 -- ADDRESS OF WORD FOLLOWING DIC & SIZE
   6485					;	R2 -- DPB SIZE
   6486					;	R3 -- DIC (DIRECTIVE IDENTIFICATION CODE)
   6487					;	R5 -- ATL NODE ADDRESS OF ISSUING TASK (.CRTSK)
   6488					;
   6489					;
   6490					; R5 IS LEFT UNALTERED (I.E. POINTING TO ISSUING TASK'S ATL NODE).
   6491					;
   6492					; R5 CONTAINS THE EXITING TASK'S ATL NODE ADDRESS.
   6493					;
   6494	023146	042766 	000340 	000020 	.D.EXT::BIC  #000340,EM.DRO(SP)	;SET ISSUING TASK'S PROCESSRO PRIROITY TO ZERO TO
   6495									;PREVENT RETURN TO TASK IF EXIT DIRECTIVE HAS
   6496									;BEEN ISSUED FROM NON TASK LEVEL
   6497					;
   6498	023154	112765 	000026 	000014 		MOVB  #TS.EXT,A.TS(R5)	;CHANGE STATUS TO "EXIT", INDICATE
   6499	023162	005065 	000024 			CLR	A.FM+0(R5)	;NO TERMINATION NOTIFICATION, AND
   6500	023166	104401 				TRAP	DR.01		;EXIT DIRECTIVE SERVICE (SET STS=+1)
   6501					;
DMEXT	- "EXIT" DIRECTIVE MODU	MACRO M1113  03-APR-86 20:41  PAGE 123
DIRECTIVE -- TASK EXIT

   6503
   6504
   6505						.TITLE	DMQIO	- "QUEUE I/O" DIRECTIVE MODULE
   6506						.SBTTL	QUEUE I/O -- COPYRIGHT STATEMENT
   6507	023170					IDENT$	1,0
						.IDENT	/001000/
   6508					;
   6509					;                             COPYRIGHT (C) 1975, 1984, 1985 BY
   6510					;                     DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
   6511					;			ALL RIGHTS RESERVED.
   6512					;       THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE  USED  AND  COPIED
   6513					;       ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
   6514					;       OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR ANY OTHER COPIES THERE-
   6515					;       OF  MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
   6516					;       NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
   6517					;
   6518					;       THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT
   6519					;       NOTICE  AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
   6520					;       CORPORATION.
   6521					;
   6522					;       DIGITAL ASSUMES NO RESPONSIBILITY FOR THE  USE  OR  RELIABILITY  OF  ITS
   6523					;       SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
   6524					;
   6525					;		MODULE: "QUEUE I/O" DIRECTIVE
   6526					;
   6527					;		VERSION: 01-00
   6528					;
   6529					;		AUTHOR: R. MCLEAN
   6530					;
   6531					;		DATE: 19 JUL 75
   6532					;
   6533					;
   6534					;	THIS MODULE CONTAINS:
   6535					;
   6536					;	1 -- CODE TO SERVICE THE "QUEUE I/O" DIRECTIVE.
   6537					;	2 -- CODE TO SERVICE THE "QUEUE I/O AND WAIT" DIRECTIVE.
   6538					;
   6539					;	MACROS
   6540					;
   6541
   6542						.MCALL	CALL,RETURN,MFPI,MTPI,MTPS,MFPS
DMQIO	- "QUEUE I/O" DIRECTIVE	MACRO M1113  03-APR-86 20:41  PAGE 124
DIRECTIVE -- QUEUE I/O

   6544						.SBTTL	DIRECTIVE -- QUEUE I/O
   6545					;+
   6546					; THE "QUEUE I/O" DIRECITVE
   6547					;
   6548					; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO PLACE AN I/O REQUEST FOR AN
   6549					; INDICATED DEVICE IN A QUEUE OF PRIORITY ORDERED REQUESTS FOR THAT DEVICE-
   6550					; UNIT.  THE DEVICE-UNIT IS SPECIFIED AS A LOGICAL UNIT NUMBER (LUN), WHICH
   6551					; IS MAPPED INTO A PHYSICAL UNIT SPECIFICATION PER LUN ASSIGNMENT.
   6552					;
   6553					; EACH LUN IS REPRESENTED BY AN ENTRY IN THE ISSUING TASK'S LUT (LOGICAL
   6554					; UNIT TABLE) IN THE TASK'S HEADER.  EACH PHYSICAL UNIT IS REPRESENTED
   6555					; BY AN ENTRY IN THE PUD (PHYSICAL UNIT DIRECTORY).  WHEN A LUN IS
   6556					; ASSIGNED TO A PHYSICAL UNIT, THE ADDRESS OF THE CORRESPONDING PUD
   6557					; ENTRY IS SET IN THE CORRESPONDING LUT ENTRY.  WHEN A LUN IS NOT
   6558					; ASSIGNED TO A PHYSICAL UNIT ("DEASSIGNED" OR "ASSIGNED TO NONE"), THE
   6559					; CORRESPONDING LUT ENTRY IS SET TO ZERO.
   6560					;
   6561					; NORMALLY, A SIGNIFICANT EVENT IS DECLARED BY HANDLER TASKS (VIA SYSTEM
   6562					; SUBROUTINES) UPON I/O COMPLETION.
   6563					;
   6564					;	IF AN EVENT FLAG IS SPECIFIED, IT IS CLEARED WHEN THE REQUEST
   6565					;	IS QUEUED, AND SET AT THE SIGNIFICANT EVENT.
   6566					;
   6567					;	IF AN AST SERVICE ENTRY POINT IS SPECIFIED, THE AST WILL OCCUR
   6568					;	UPON I/O COMPLETION WITH THE TASK'S PS, PC, VIRTUAL ZERO (DIRECTIVE
   6569					;	STATUS), AND [ADDRESS OF I/O STATUS BLOCK] PUSHED ONTO THE TASK'S
   6570					;	(USER) STACK.
   6571					;
   6572					; A 6-12 WORD DPB OF THE FOLLOWING FORMAT IS USED:
   6573					;
   6574					;	WD. 00 -- DIC (01.) & DPB SIZE (6-12),
   6575					;	WD. 01 -- I/O FUNCTION CODE,
   6576					;	WD. 02 -- LUN,
   6577					;	WD. 03 -- [EFN] & [PRIORITY],
   6578					;	WD. 04 -- [ADDRESS OF I/O STATUS BLOCK],
   6579					;	WD. 05 -- [I/O DONE AST SERVICE ENTRY POINT],
   6580					;	WD. 06 -- PARAMETER #1,
   6581					;	WD. 07 -- PARAMETER #2,
   6582					;	WD. 10 -- PARAMETER #3,
   6583					;	WD. 11 -- PARAMETER #4,
   6584					;	WD. 12 -- PARAMETER #5,
   6585					;	WD. 13 -- PARAMETER #6.
   6586					;
   6587					; THE FORMAT OF THE I/O REQUEST NODE CREATED IS DESCRIBED
   6588					; UNDER "SYMBOLIC DEFINITIONS".
   6589					;
   6590					; THE FOLLOWING STATUS IS RETURNED:
   6591					;
   6592					; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE STATUS
   6593					; OF ONE (+1).
   6594					;
   6595					; CC-C SET TO INDICATE REJECTION, AND A DIRECTIVE STATUS OF:
   6596					;
   6597					;	-01 -- UNAVAILABLE POOL NODE FOR REQUEST QUEUE,
   6598					;	-05 -- UNASSIGNED LUN,
   6599					;
   6600					;	-95 -- INVALID PRIORITY (>250.),
DMQIO	- "QUEUE I/O" DIRECTIVE	MACRO M1113  03-APR-86 20:41  PAGE 124-1
DIRECTIVE -- QUEUE I/O

   6601					;	-96 -- INVALID LUN,
   6602					;	-97 -- INVALID EFN (>64.),
   6603					;	-98 -- PART OF DPB IS OUT OF ISSUING TASK'S ADDRESS SPACE,
   6604					;	-99 -- DIC OR DPB SIZE IS INVALID.
   6605					; THE "QUEUE I/O AND WAIT" DIRECITVE
   6606					;
   6607					; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO PLACE AN I/O REQUEST FOR AN
   6608					; INDICATED DEVICE IN A QUEUE OF PRIORITY ORDERED REQUESTS FOR THAT DEVICE-
   6609					; UNIT.  THE DEVICE-UNIT IS SPECIFIED AS A LOGICAL UNIT NUMBER (LUN), WHICH
   6610					; IS MAPPED INTO A PHYSICAL UNIT SPECIFICATION PER LUN ASSIGNMENT.
   6611					;
   6612					; EACH LUN IS REPRESENTED BY AN ENTRY IN THE ISSUING TASK'S LUT (LOGICAL
   6613					; UNIT TABLE) IN THE TASK'S HEADER.  EACH PHYSICAL UNIT IS REPRESENTED
   6614					; BY AN ENTRY IN THE PUD (PHYSICAL UNIT DIRECTORY).  WHEN A LUN IS
   6615					; ASSIGNED TO A PHYSICAL UNIT, THE ADDRESS OF THE CORRESPONDING PUD
   6616					; ENTRY IS SET IN THE CORRESPONDING LUT ENTRY.  WHEN A LUN IS NOT
   6617					; ASSIGNED TO A PHYSICAL UNIT ("DEASSIGNED" OR "ASSIGNED TO NONE"), THE
   6618					; CORRESPONDING LUT ENTRY IS SET TO ZERO.
   6619					;
   6620					; NORMALLY, A SIGNIFICANT EVENT IS DECLARED BY HANDLER TASKS (VIA SYSTEM
   6621					; SUBROUTINES) UPON I/O COMPLETION.
   6622					;
   6623					;	IF AN EVENT FLAG IS SPECIFIED, IT IS CLEARED WHEN THE REQUEST
   6624					;	IS QUEUED, AND SET AT THE SIGNIFICANT EVENT.
   6625					;	IF AN EVENT FLAG IS SPECIFIED, A WAIT DIRECTIVE IS ALSO
   6626					;	EXECUTED BEFORE TASK SWITCHING IS ENABLED.
   6627					;
   6628					;	IF NO EVENT FLAG IS SPECIFIED THE I/O WILL BE QUEUE'D
   6629					;	AND THE WAIT DIRECTIVE WILL BE REJECTED (STATUS -97.)
   6630					;
   6631					;
   6632					;	IF AN AST SERVICE ENTRY POINT IS SPECIFIED, THE AST WILL OCCUR
   6633					;	UPON I/O COMPLETION WITH THE TASK'S PS, PC, VIRTUAL ZERO (DIRECTIVE
   6634					;	STATUS), AND [ADDRESS OF I/O STATUS BLOCK] PUSHED ONTO THE TASK'S
   6635					;	(USER) STACK.
   6636					;
   6637					; A 6-12 WORD DPB OF THE FOLLOWING FORMAT IS USED:
   6638					;
   6639					;	WD. 00 -- DIC (03.) & DPB SIZE (6-12),
   6640					;	WD. 01 -- I/O FUNCTION CODE,
   6641					;	WD. 02 -- LUN,
   6642					;	WD. 03 -- [EFN] & [PRIORITY],
   6643					;	WD. 04 -- [ADDRESS OF I/O STATUS BLOCK],
   6644					;	WD. 05 -- [I/O DONE AST SERVICE ENTRY POINT],
   6645					;	WD. 06 -- PARAMETER #1,
   6646					;	WD. 07 -- PARAMETER #2,
   6647					;	WD. 10 -- PARAMETER #3,
   6648					;	WD. 11 -- PARAMETER #4,
   6649					;	WD. 12 -- PARAMETER #5,
   6650					;	WD. 13 -- PARAMETER #6.
   6651					;
   6652					; THE FORMAT OF THE I/O REQUEST NODE CREATED IS DESCRIBED
   6653					; UNDER "SYMBOLIC DEFINITIONS".
   6654					;
   6655					; THE FOLLOWING STATUS IS RETURNED:
   6656					;
   6657					; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE STATUS
DMQIO	- "QUEUE I/O" DIRECTIVE	MACRO M1113  03-APR-86 20:41  PAGE 124-2
DIRECTIVE -- QUEUE I/O

   6658					; OF ONE (+1).
   6659					;
   6660					; CC-C SET TO INDICATE REJECTION, AND A DIRECTIVE STATUS OF:
   6661					;
   6662					;	-01 -- UNAVAILABLE POOL NODE FOR REQUEST QUEUE,
   6663					;	-05 -- UNASSIGNED LUN,
   6664					;	-06 -- HANDLER TASK NOT DECLARED RESIDENT,
   6665					;
   6666					;	-95 -- INVALID PRIORITY (>250.),
   6667					;	-96 -- INVALID LUN,
   6668					;	-97 -- INVALID EFN (>64.), OR 0 EVENT FLAG (I/O QUEUE'D BUT WAIT NOT EXECUTED),
   6669					;	-98 -- PART OF DPB IS OUT OF ISSUING TASK'S ADDRESS SPACE,
   6670					;	-99 -- DIC OR DPB SIZE IS INVALID.
   6671					;-
   6672					; CONTROL IS TRANSFERRED HERE (BY DIRECTIVE DISPATCH ROUTINE) WITH THE
   6673					; DIRECTIVE ISSUING TASK'S PS, PC, & R5-R0 PUSHED ONTO THE
   6674					; KERNEL STACK, AND R5-R0 SET AS FOLLOWS:
   6675					; R5 IS LEFT UNALTERED (I.E. POINTING TO ISSUING TASK'S ATL NODE).
   6676					;
   6677	023170	010346 			.D.QIO::MOV	R3,-(SP)	;SAVE THE DIC TO DETERMINE IF QIO& WAIT OR JUST QIO.
   6678					;
   6679	023172				20$:	MFPS	(R1)+,R3	;SET R3 TO FUNCTION CODE
	023172	012103 				MOV	(R1)+,R3
   6680									;(LEAVE R1 POINTING TO LUN WORD)
   6681					;
   6682	023174					MFPI	(R1)+		;PUSH LUN, AND CONVERT TO PUD ENTRY ADR
	023174	012146 				MOV	(R1)+,-(SP)
   6683	023176					CALL	.VCLUN		;(LEAVE R1 POINTING TO EFN/PRI WORD)
	023176	004737 	016104'			JSR	PC,.VCLUN
   6684									;IF INVALID LUN, RETURN STS=-96.
   6685	023202	011600 				MOV	@SP,R0		;SET R0 TO PUD ENTRY ADR IF LUN ASSIGNED
   6686	023204	001001 				BNE	40$		;IF UN-ASSIGNED LUN, RETURN STS=-05.
   6687	023206	104773 				TRAP	DE.05
   6688	023210	010246 			40$:	MOV	R2,-(SP)	;PUSH DPB SIZE
   6689					;
   6690									;TO ACCESS REQUESTOR'S HEADER BY '.VCLUN').
   6691					;
   6692	023212					MFPI	+4(R1)		;PUSH I/O DONE AST ENTRY PT (OR ZERO)
	023212	016146 	000004 			MOV	+4(R1),-(SP)
   6693					;
   6694	023216					MFPI	+02(R1)		;PUSH I/O STATUS BLOCK ADR (OR ZERO),
	023216	016146 	000002 			MOV	+02(R1),-(SP)
   6695	023222	011602 				MOV	@SP,R2		;AND CLEAR TWO-WORD STATUS BLOCK.
   6696	023224	001404 				BEQ	50$		;(IF SPECIFIED).  IF PART OF STATUS
   6697	023226	005046 				CLR	-(SP)		;OUT OF ADDRESS SPACE, RETURN
   6698	023230					MTPI	(R2)+
	023230	012622 				MOV	(SP)+,(R2)+
   6699	023232	005046 				CLR	-(SP)
   6700	023234					MTPI	@R2
	023234	012612 				MOV	(SP)+,@R2
   6701	023236				50$:
   6702	023236	010346 				MOV	R3,-(SP)	;PUSH I/O FUNCTION CODE WORD
   6703					;
   6704									;R1 IS POINTING TO [EFN] IN DPB.
   6705					;
   6706	023240					CALL	.CEFN		;CONVERT EFN TO: (1) FLAG WORD ADDRESS
	023240	004737 	044320'			JSR	PC,.CEFN
DMQIO	- "QUEUE I/O" DIRECTIVE	MACRO M1113  03-APR-86 20:41  PAGE 124-3
DIRECTIVE -- QUEUE I/O

   6707									;IN R2, AND (2) FLAG MASK IN R3 (R2 IS
   6708									;POINTING TO EFN).  IF EFN<0, OR EFN>64.,
   6709									;RETURN STS=-97.  IF EFN=0 (NO EVENT FLAG
   6710									;SPECIFIED), RETURN WITH R2=R3=00.
   6711									;CONDITION CODES ARE SET PER "TST R3".
   6712					;
   6713	023244					MFPS	@R1,R4		;SET PRIORITY IN R4, EFN IN HIGH ORDER
	023244	011104 				MOV	@R1,R4
   6714									;BYTE OF R0, AND ZERO IN LOW ORDER BYTE
   6715	023246	010400 				MOV	R4,R0		;OF R0
   6716	023250	105004 				CLRB	R4
   6717	023252	000304 				SWAB	R4
   6718	023254	000300 				SWAB	R0
   6719	023256	105000 				CLRB	R0
   6720									;IS A PRIORITY SPECIFIED?
   6721	023260	001002 				BNE	70$		;YES -- CHECK ITS VALIDITY
   6722	023262	156504 	000010 			BISB	A.RP(R5),R4	;NO -- USE RUN PARIORITY OF ISSUING TASK
   6723									;("BISB" INTO A CLEARED R4 EFFECTS A
   6724									;"MOVB" WITHOUT SIGN EXTENSION.)
   6725					;
   6726	023266				70$:	MFPI	-(R1)		;PUSH LUN & FORM LUN/EFN WORD ON STACK.
	023266	014146 				MOV	-(R1),-(SP)
   6727	023270	050016 				BIS	R0,@SP		;(R1 IS LEFT POINTING TO LUN)
   6728					;
   6729	023272	010446 				MOV	R4,-(SP)	;PUSH PRI/BYTE RESERVED FOR DPB SIZE
   6730					;
   6731					; STACK & REGISTER SUMMARY:
   6732					;
   6733					;	SP+14 -- PUD ENTRY ADDRESS
   6734					;	SP+12 -- DPB SIZE
   6735					;	SP+10 -- AST ENTRY PT (OR ZERO)
   6736					;	SP+06 -- I/O STATUS BUF ADR (OR ZERO)
   6737					;	SP+04 -- I/O FUNCTION CODE
   6738					;	SP+02 -- LUN/EFN WORD
   6739					;	SP+00 -- PRI/RESERVED BYTE
   6740					;
   6741					;	R5 -- ATL NODE ADR OF ISSUING TASK
   6742					;	R2 & R3 SETUP TO CLEAR EVENT FLAG
   6743					;
   6744	023274	116666 	000012 	000001 		MOVB	+12(SP),+1(SP)	;SET DPB SIZE IN "PRI/DPB-SIZE" WORD
   6745					;
   6746	023302	010100 				MOV	R1,R0		;SETUP R0 TO FETCH I/O PARAMETERS (FROM DPB)
   6747	023304	062700 	000010 			ADD	#10,R0
   6748	023310	010046 				MOV	R0,-(SP)	;SAVE R0
   6749					;
   6750	023312	012701 	000040 			MOV	#32.,R1		;SET UP TO PICK A NODE
   6751	023316					CALL	..ALCB
	023316	004737 	045654'			JSR	PC,..ALCB
   6752	023322	010001 				MOV	R0,R1		;SET UP NODE ADDRESS
   6753	023324	103001 				BCC	79$		;OK -- CHECK FUNCTION CODE
   6754	023326	104777 				TRAP	DE.01		;NO -- RETURN POOL EMPTY ERROR
   6755					;
   6756					;
   6757					;
   6758					; REQUEST CAN BE MADE -- STACK & REGISTER SUMMARY:
   6759					;
   6760					;	SP+14 -- PUD ENTRY ADDRESS
DMQIO	- "QUEUE I/O" DIRECTIVE	MACRO M1113  03-APR-86 20:41  PAGE 124-4
DIRECTIVE -- QUEUE I/O

   6761					;	SP+12 -- DPB SIZE
   6762					;	SP+10 -- AST ENTRY PT (OR ZERO)
   6763					;	SP+06 -- I/O STATUS BUF ADR (OR ZERO)
   6764					;	SP+04 -- I/O FUNCTION CODE
   6765					;	SP+02 -- LUN/EFN WORD
   6766					;	SP+00 -- PRI/DPB SIZE
   6767					;
   6768					;	R5 -- ATL NODE ADR OF ISSUING TASK
   6769					;	R1 -- I/O REQUEST NODE ADDRESS
   6770					;	R2 & R3 SETUP TO CLEAR EVENT FLAG
   6771					;	R0 -- POINTING TO FIRST PARAMETER WORD IN DPB
   6772					;
   6773	023330	040312 			79$:	BIC	R3,@R2		;CLEAR EVENT FLAG, IFF SPECIFIED.
   6774									;NOTE -- IF NO EFN SPECIFIED, R3=R3=00.
   6775									;I.E., NO BITS IN LOCATION ZERO ARE CLEARED.
   6776	023332	012600 				MOV	(SP)+,R0	;RESTORE BUFFER ADDRESS
   6777					;
   6778					; FILL I/O REQUEST NODE
   6779					;
   6780	023334	010104 				MOV	R1,R4		;SETUP R4 TO FILL NODE
   6781	023336	022424 				CMP	(R4)+,(R4)+	;MOVE OVER LISTHEAD
   6782	023340	016524 	000016 			MOV	A.TD(R5),(R4)+	;SET STD ADDRESS
   6783					;
   6784	023344	010524 				MOV	R5,(R4)+	;SET ATL NODE ADR OF REQUESTOR
   6785	023346	012624 				MOV	(SP)+,(R4)+	;(POP) SET PRI/DPB-SIZE WORD
   6786	023350	011603 				MOV	@SP,R3		;SAVE LUN/EFN
   6787	023352	012624 				MOV	(SP)+,(R4)+	;(POP) SET LUN/EFN WORD
   6788	023354	012624 				MOV	(SP)+,(R4)+	;(POP) SET I/O FUNCTION CODE
   6789	023356	012624 				MOV	(SP)+,(R4)+	;(POP) SET I/O STATUS BLK ADR (OR ZERO)
   6790	023360	012624 				MOV	(SP)+,(R4)+	;(POP) SET AST ENTRY PT (OR ZERO)
   6791	023362	013724 	001156'			MOV	.SYUIC,(R4)+	;SET THE UIC
   6792					;
   6793	023366	012602 				MOV	(SP)+,R2	;(POP) SET DPB SIZE IN R2, CONVERT
   6794	023370	162702 	000006 			SUB	#6.,R2		;TO NUMBER OF I/O PARAMETERS, AND
   6795	023374	001402 				BEQ	90$		;MOVE PARAMETERS FROM DPB TO I/O
   6796	023376				80$:				;REQUEST NODE.
   6797	023376					MFPS	(R0)+,(R4)+
	023376	012024 				MOV	(R0)+,(R4)+
   6798	023400	077202 				SOB	R2,80$
   6799	023402				90$:
   6800					;
   6801					;
   6802	023402	012602 				MOV	(SP)+,R2	;(POP) SET R2 TO PUD ENTRY ADDRESS, AND
   6803	023404	016204 	000020 			MOV	U.HA(R2),R4	;SET R2 TO HANDLER TASK'S ATL NODE ADDRESS.
   6804					;
   6805					; IF FUNCTION CODE 'RF.XR' IS SET, THIS FUNCTION IS AN "EXPRESS" FUNCTION.
   6806					; EXPRESS REQUESTS ARE NORMALLY DE-QUEUED BEFORE NORMAL REQUESTS. VIZ.,
   6807					; "KILL READ REQUEST", OR "RUNDOWN I/O ON TASK".
   6808					;
   6809	023410	010137 	023626'			MOV	R1,QNDSV	;SAVE THE QIO NODE ADDRESS
   6810	023414	016100 	000014 			MOV	R.FC(R1),R0	;FIND THE FUNCTION CODE
   6811	023420	020027 	002500 			CMP	R0,#IO.STC	;CHECK TO SEE IF LEGAL
   6812	023424	101457 				BLOS	95$		;YES -- DON'T NEED FCP
   6813	023426	010246 				MOV	R2,-(SP)
   6814	023430	010346 				MOV	R3,-(SP)
   6815	023432	010203 				MOV	R2,R3		;FIND THE PUD ADDRESS
   6816	023434	016302 	000040 			MOV	U.ACP(R3),R2	;FIND THE STD ADDRESS OF THE ACP
DMQIO	- "QUEUE I/O" DIRECTIVE	MACRO M1113  03-APR-86 20:41  PAGE 124-5
DIRECTIVE -- QUEUE I/O

   6817	023440	001015 				BNE	77$		;FOUND ACP -- DON'T DIDDLE CODES
   6818	023442	022700 	011000 			CMP	#IO.WVB,R0	;IS CODE WRITE VIRTUAL?
   6819	023446	001003 				BNE	74$		;NO -- LOOK FOR READ
   6820	023450	012761 	000400 	000014 		MOV	#IO.WLB,R.FC(R1) ;YES SET FUNCTON CODE
   6821	023456	022700 	010400 		74$:	CMP	#IO.RVB,R0	;IS FUNCTION CODE READ VIRTUAL?
   6822	023462	001036 				BNE	93$		;NO -- FORGET IT
   6823	023464	012761 	001000 	000014 		MOV	#IO.RLB,R.FC(R1) ;SET FUNCTION CODE
   6824	023472	000432 				BR	93$
   6825	023474				77$:
   6829	023474	020027 	010400 			CMP	R0,#IO.RVB	;CHECK FOR READ/WRITE VIRTUAL
   6830	023500	001403 				BEQ	71$		;YES -- ATTEMPT TO MAP IT
   6831	023502	020027 	011000 			CMP	R0,#IO.WVB	;MAYBE TRY WRITE
   6832	023506	001003 				BNE	73$		;NO -- CALL FCP
   6833	023510				71$:	CALL	..VTOL		;TRY AND MAP
	023510	004737 	050406'			JSR	PC,..VTOL
   6834	023514	103021 				BCC	93$		;MADE IT -- DON'T CALL FCP
   6835	023516	010337 	023630'		73$:	MOV	R3,QNDSV+2	;SET PUD ADDRESS
   6836	023522	016137 	000014 	023632'		MOV	R.FC(R1),QNDSV+4	;SET FUNCTION CODE
   6837	023530	012701 	023634'			MOV	#PRMBLK,R1	;POINTER TO BUFFER ADDRESS AND EFN
   6838	023534					CALL	.SEND		;SEND BLOCK
	023534	004737 	024006'			JSR	PC,.SEND
   6839	023540	005003 				CLR	R3
   6840	023542	005004 				CLR	R4		;SET DEFAULT PARTITION AND PRI FOR ACP
   6841	023544	010102 				MOV	R1,R2
   6842	023546					CALL	.REQS		;REQ ACP
	023546	004737 	015276'			JSR	PC,.REQS
   6843	023552	012603 				MOV	(SP)+,R3
   6844	023554	012602 				MOV	(SP)+,R2
   6845	023556	000413 				BR	100$
   6846					;
   6847	023560	012603 			93$:	MOV	(SP)+,R3	;RESTORE
   6848	023562	012602 				MOV	(SP)+,R2
   6849	023564				95$:				;(R2 CONTAINS PUD ENTRY ADDRESS)
   6850	023564	062702 	000022 			ADD	#U.RF,R2	;SET R2 TO I/O REQUEST DEQUE LISTHEAD ADR
   6851									;(R1 IS SET TO REQUEST NODE ADDRESS)
   6852	023570					CALL	..IPRI		;AND INSERT REQUEST NODE BY PRIORITY.
	023570	004737 	045360'			JSR	PC,..IPRI
   6853	023574	052764 	000010 	000020 		BIS	#EF.NIR,A.EF+0(R4) ;NO -- SET TRIGGER EVENT FLAG 'EF.NIR'.
   6854	023602					CALL	..DSEV		;DECLARE SIGNIFICANT EVENT TO EFFECT "TRIGGER"
	023602	004737 	045264'			JSR	PC,..DSEV
   6855					;
   6856	023606	022627 	000003 		100$:	CMP	(SP)+,#3	;CHECK THE DIC TO SEE IF QIO AND WAIT
   6857	023612	001401 				BEQ	120$		;YES -- ISSUE THE WAIT
   6858					;				;NO -- JUST RETURN
   6859	023614	104401 				TRAP	DR.01		;RETURN STS=+1
   6860					;
   6861	023616	105003 			120$:	CLRB	R3		;SET UP FOR THE WAIT DIRECTIVE
   6862	023620	000303 				SWAB	R3
   6863	023622	000137 	022602'			JMP	.D.WFO		;ISSUE WAIT DIRECTIVE
   6864					;
   6865	023626	000000 	000000 	000000 	QNDSV:	.WORD	0,0,0		;SAVE AREA FOR NODE
   6866					;
   6867	023634	023626'			PRMBLK:	.WORD	QNDSV		;POINTER TO SEND BUFFER
   6868	023636	000000 				.WORD	0		;EFN (0)
DMQIO	- "QUEUE I/O" DIRECTIVE	MACRO M1113  03-APR-86 20:41  PAGE 125
DIRECTIVE -- QUEUE I/O

   6870
   6871						.TITLE	DMSAR	- SEND & RECEIVE DIRECTIVES MODULE
   6872						.SBTTL	SEND AND RECEIVE -- COPYRIGT STATEMENT
   6873	023640					IDENT$	2,0
						.IDENT	/002000/
   6874					;
   6875					;                             COPYRIGHT (C) 1975, 1984, 1985 BY
   6876					;                     DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
   6877					;			ALL RIGHTS RESERVED.
   6878					;       THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE  USED  AND  COPIED
   6879					;       ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
   6880					;       OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR ANY OTHER COPIES THERE-
   6881					;       OF  MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
   6882					;       NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
   6883					;
   6884					;       THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT
   6885					;       NOTICE  AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
   6886					;       CORPORATION.
   6887					;
   6888					;       DIGITAL ASSUMES NO RESPONSIBILITY FOR THE  USE  OR  RELIABILITY  OF  ITS
   6889					;       SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
   6890					;
   6891					;
   6892					;		MODULE: SEND & RECEIVE DIRECTIVES
   6893					;
   6894					;		VERSION: 01-00
   6895					;
   6896					;		AUTHOR: R. MCLEAN
   6897					;
   6898					;		DATE: 19 MAY 75
   6899					;
   6900					;
   6901					;	THIS MODULE CONTAINS:
   6902					;
   6903					;	1 -- CODE TO SERVICE THE "SEND DATA" DIRECTIVE,
   6904					;	2 -- CODE TO SERVICE THE "SEND AND REQUEST OR RESUME" DIRECTIVE,
   6905					;	3 -- CODE TO SERVICE THE "RECEIVE DATA" DIRECTIVE,
   6906					;	4 -- CODE TO SERVICE THE "RECEIVE OR EXIT" DIRECTIVE,
   6907					;	5 -- CODE TO SERVICE THE "RECEIVE OR SUSPEND" DIRECTIVE,
   6908					;
   6909					;	MACROS
   6910					;
   6911						.MCALL	CALL,RETURN,MTPI,MTPS,MFPI,MFPS
DMSAR	- SEND & RECEIVE DIRECT	MACRO M1113  03-APR-86 20:41  PAGE 126
DIRECTIVE -- SEND DATA

   6913						.SBTTL	DIRECTIVE -- SEND DATA
   6914					;+
   6915					; THE "SEND DATA" DIRECTIVE
   6916					;
   6917					; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO QUEUE (FIFO) A THIRTEEN WORD
   6918					; BLOCK OF DATA FOR A TASK TO RECEIVE.
   6919					;
   6920					; A FIVE WORD DPB OF THE FOLLOWING FORMAT IS USED:
   6921					;
   6922					;	WD. 00 -- DIC (13.) & DPB SIZE (5.),
   6923					;	WD. 01 -- RECEIVER TASK NAME (FIRST HALF),
   6924					;	WD. 02 -- RECEIVER TASK NAME (SECOND HALF),
   6925					;	WD. 03 -- ADDRESS OF THIRTEEN WORD DATA BLOCK,
   6926					;	WD. 04 -- [EVENT FLAG NUMBER (EFN)].
   6927					;
   6928					; WHEN AN EVENT FLAG IS SPECIFIED, A SIGNIFICANT EVENT IS DECLARED
   6929					; (IF THE DIRECTIVE IS PERFORMED) AND THE INDICATED EVENT FLAG IS SET.
   6930					;
   6931					; THE FOLLOWING STATUS IS RETURNED:
   6932					;
   6933					; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE STATUS
   6934					; OF ONE (+1).
   6935					;
   6936					; CC-C SET TO INDICATE REJECTION, AND A DIRECTIVE STATUS OF:
   6937					;
   6938					;	-02 -- RECEIVER TASK NOT INSTALLED (NO STD ENTRY FOUND),
   6939					;	-04 -- INSUFFICIENT POOL NODES FOR "SEND",
   6940					;
   6941					;	-97 -- INVALID EVENT FLAG NUMBER (EFN<0 OR EFN>64),
   6942					;	-99 -- DIC OR DPB SIZE IS INVALID.
   6943					;-
   6944					; CONTROL IS TRANSFERRED HERE (BY DIRECTIVE DISPATCH ROUTINE) WITH THE
   6945					; DIRECTIVE ISSUING TASK'S PS, PC, & R1-R5 PUSHED ONTO THE
   6946					;  STACK, AND R0-R5 SET AS FOLLOWS:
   6947					;	R0 -- PC OF EMT INSTRUCTION
   6948					;	R1 -- POINTER TO WORD FOLLOWING DIC & SIZE
   6949					;	R2 -- DPB SIZE
   6950					;	R3 -- DIC (DIRECTIVE IDENTIFICATION CODE)
   6951					;	R5 -- ATL NODE ADDRESS OF ISSUING TASK ('.CRTSK')
   6952					;
   6953					; R5 IS LEFT UNALTERED (I.E. POINTING TO ISSUING TASK'S ATL NODE).
   6954					;
   6955	023640				.D.SEN::CALL	..FSTD		;SET R2 TO STD ENTRY ADDRESS, OR TO
	023640	004737 	045574'			JSR	PC,..FSTD
   6956									;ZERO IF TASK NAME NOT FOUND (AND SET
   6957									;CONDITION CODES PER "TST R2").
   6958									;
   6959									;ADVANCE R1 BY FOUR (PAST TASK NAME).
   6960					;
   6961	023644	001406 				BEQ	.X.02		;IF TASK NOT INSTALLED, RETURN STS=-02.
   6962					;
   6963					; R1 IS POINTING TO DPB WD. 03, AND R2 CONTAINS STD NODE ADR OF RECEIVER.
   6964					;
   6965	023646				10$:	CALL	.SEND		;SEND DATA & SET EVENT FLAG PER R1 & R2
	023646	004737 	024006'			JSR	PC,.SEND
   6966					;
   6967	023652	104401 				TRAP	DR.01		;RETURN STS=+1.
DMSAR	- SEND & RECEIVE DIRECT	MACRO M1113  03-APR-86 20:41  PAGE 127
DIRECTIVE -- SEND AND REQUEST OR RESUME

   6969					.SBTTL	DIRECTIVE -- SEND AND REQUEST OR RESUME
   6970					;+
   6971					; THE "SEND AND REQUEST OR RESUME" DIRECTIVE
   6972					;
   6973					; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO QUEUE (FIFO) A THIRTEEN WORD
   6974					; BLOCK OF DATA FOR A TASK TO RECEIVE, AND TO REQUEST OR RESUME THE
   6975					; EXECUTION OF THE RECEIVER TASK.
   6976					;
   6977					; THIS DIRECTIVE HAS THE EFFECT OF ISSUING A "SEND DATA" DIRECTIVE
   6978					; FOLLOWED BY A "REQUEST" OR "RESUME" DIRECTIVE, EXCEPT THAT (1) NO TASK
   6979					; SWITCHING CAN OCCUR BETWEEN THE SEND AND THE REQUEST OR RECEIVE, AND
   6980					; (2) IF THE SEND IS NOT PERFORMED, NEITHER THE REQEST NOR THE RESUME
   6981					; WILL BE ATTEMPTED.
   6982					;
   6983					; I.E., IF DATA IS SENT TO AN INACTIVE TASK, THAT TASK WILL BE REQUESTED;
   6984					; IF DATA IS SENT TO A SUSPENDED TASK, THAT TASK WILL BE RESUMED.
   6985					;
   6986					; A NINE WORD DPB OF THE FOLLOWING FORMAT IS USED:
   6987					;
   6988					;	WD. 00 -- DIC (15.) & DPB SIZE (9.),
   6989					;	WD. 01 -- RECEIVER TASK NAME (FIRST HALF),
   6990					;	WD. 02 -- RECEIVER TASK NAME (SECOND HALF),
   6991					;	WD. 03 -- [PARTITION NAME (FIRST HALF)],
   6992					;	WD. 04 -- [PARTITION NAME (SECOND HALF)],
   6993					;	WD. 05 -- [PRIORITY],
   6994					;	WD. 06 -- 0,
   6995					;	WD. 07 -- ADDRESS OF THIRTEEN WORD DATA BLOCK,
   6996					;	WD. 10 -- [EVENT FLAG NUMBER (EFN)].
   6997					;
   6998					; WHEN AN EVENT FLAG IS SPECIFIED, A SIGNIFICANT EVENT IS DECLARED
   6999					; (IF THE DIRECTIVE IS PERFORMED) AND THE INDICATED EVENT FLAG IS SET.
   7000					;
   7001					; THE FOLLOWING STATUS IS RETURNED:
   7002					;
   7003					; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE
   7004					; STATUS OF:
   7005					;
   7006					;	+1 -- DATA SENT AND TASK REQUESTED,
   7007					;	+2 -- DATA SEND AND TASK RESUMED,
   7008					;	+3 -- DATA SENT TO AN NON-SUSPENDED ACTIVE TASK.
   7009					;
   7010					; CC-C SET TO INDICATE REJECTION, AND A DIRECTIVE STATUS OF:
   7011					;
   7012					;	-01 -- [R] INSUFFICIENT POOL NODES AVAILABLE FOR "REQUEST",
   7013					;	-02 -- [B] RECEIVER TASK NOT INSTALLED (NO STD ENTRY FOUND),
   7014					;	-03 -- [R] PARTITION TOO SMALL FOR RECEIVER TASK,
   7015					;	-04 -- [B] INSUFFICIENT POOL NODES FOR "SEND",
   7016					;	-08 -- [R] RECEIVER TASK IS DISABLED,
   7017					;
   7018					;	-80 -- [B] DIRECTIVE ISSUED BY "BACKGROUND" TASK,
   7019					;	-94 -- [R] PARTITION NOT IN SYSTEM (NO TPD ENTRY FOUND),
   7020					;	-95 -- [R] INVALID PRIORITY SPECIFIED (<0 OR >250.),
   7021					;	-97 -- [B] INVALID EVENT FLAG NUMBER (EFN<0 OR EFN>64),
   7022					;	-99 -- [B] DIC OR DPB SIZE IS INVALID.
   7023					;
   7024					; [R] -- REQUEST OR RESUME REJECTED
   7025					; [B] -- BOTH SEND & REQUEST OR RESUME REJECTED
DMSAR	- SEND & RECEIVE DIRECT	MACRO M1113  03-APR-86 20:41  PAGE 127-1
DIRECTIVE -- SEND AND REQUEST OR RESUME

   7026					;-
   7027					; CONTROL IS TRANSFERRED HERE (BY DIRECTIVE DISPATCH ROUTINE) WITH THE
   7028					; DIRECTIVE ISSUING TASK'S PS, PC, & R1-R5 PUSHED ONTO THE
   7029					;  STACK, AND R0-R5 SET AS FOLLOWS:
   7030					;	R0 -- PC OF EMT INSTRUCTION
   7031					;	R1 -- POINTER TO WORD FOLLOWING DIC & SIZE
   7032					;	R2 -- DPB SIZE
   7033					;	R3 -- DIC (DIRECTIVE IDENTIFICATION CODE)
   7034					;	R5 -- ATL NODE ADDRESS OF ISSUING TASK ('.CRTSK')
   7035					;
   7036					; R5 IS LEFT UNALTERED (I.E. POINTING TO ISSUING TASK'S ATL NODE).
   7037					;
   7038	023654				.D.SAR::CALL	..FSTD		;SET R2 TO STD ENTRY ADDRESS, OR TO
	023654	004737 	045574'			JSR	PC,..FSTD
   7039									;ZERO IF TASK NAME NOT FOUND (AND SET
   7040									;CONDITION CODES PER "TST R2").
   7041									;
   7042									;ADVANCE R1 BY FOUR (PAST TASK NAME).
   7043					;
   7044	023660	001001 				BNE	SKX		;IF TASK NOT INSTALLED, RETURN STS=-02.
   7045	023662	104776 			.X.02:	TRAP	DE.02
   7046					;
   7047	023664	010146 			SKX:	MOV	R1,-(SP)	;PUSH (SAVE) R1 & R2, AND ADVANCE R1 TO POINT
   7048	023666	010246 				MOV	R2,-(SP)	;TO DPB WD. 07.
   7049	023670	062701 	000010 			ADD	#8.,R1
   7050					;
   7051					; R1 IS POINTING TO DPB WD. 07, AND R2 CONTAINS STD ENTRY ADR OF RECEIVER.
   7052					;
   7053	023674					CALL	.SEND		;SEND DATA & SET EVENT FLAG PER R1 & R2
	023674	004737 	024006'			JSR	PC,.SEND
   7054									;(R1, R2, R3, R4, & R5 ARE ALTERED)
   7055					;
   7056	023700	012602 				MOV	(SP)+,R2	;POP (RESTORE) R2 & R1
   7057	023702	012601 				MOV	(SP)+,R1	;(R1 IS POINTING TO DPB WD. 03.)
   7058					;
   7059	023704					CALL	.FEPPU		;SET R3 TO TPD ADDRESS IF A PARTITION IS
	023704	004737 	016000'			JSR	PC,.FEPPU
   7060									;SPECIFIED, OR TO ZERO IF NOT SPECIFIED.
   7061									;
   7062									;SET R4 TO PRIORITY IF SPECIFIED, OR TO
   7063									;ZERO IF NOT SPECIFIED.
   7064									;
   7065									;
   7066									;ADVANCE R1 BY EIGHT (PAST PARTITION NAME,
   7067									;PRIORITY INDICATOR, AND UIC INDICATOR.).
   7068									;
   7069									;IF INVALID PRIORITY, RETURN STS=-95.
   7070									;IF PARTITION NOT IS SYSTEM, RETURN
   7071									;STS=-94.  IF NON-PRIVILEGED TASK HAS
   7072									;SPECIFIED OTHER THAN OWN UIC, RETURN
   7073									;STS=-91.  IF SPECIFIED PARTITION IS
   7074									;TOO SMALL FOR TASK, RETURN STS=-03.
   7075					;
   7076					;
   7077	023710	012701 	000001 			MOV	#1,R1		;SET R1 TO INDICATE "MAKE TASK ACTIVE WHETHER
   7078									;MEMORY IS AVAILABLE OR NOT"
   7079					;
DMSAR	- SEND & RECEIVE DIRECT	MACRO M1113  03-APR-86 20:41  PAGE 127-2
DIRECTIVE -- SEND AND REQUEST OR RESUME

   7080	023714	016500 	000016 			MOV	A.TD(R5),R0	;SET R5 TO STD ADDRESS OF REQUESTOR
   7081					;
   7082	023720	010246 				MOV	R2,-(SP)	;PUSH STD ENTRY ADDRESS (FOR ATL SCAN)
   7083					;
   7084	023722					CALL	.REQS		;MAKE A TASK ACTIVE PER R0, R1, R2, R3, R4 & R5.
	023722	004737 	015276'			JSR	PC,.REQS
   7085									;(R1, R2, R3, R4, & R5 ARE ALTERED)
   7086	023726	012604 				MOV	(SP)+,R4	;POP STD ENTRY ADDRESS INTO R4
   7087					;
   7088	023730	020227 	000002 			CMP	R2,#02		;SPECIAL CASE -- IS TASK ACTIVE?
   7089	023734	001402 				BEQ	10$		;YES -- RESUME IF SUSPENDED
   7090	023736	000162 	015770'			JMP	.RQESD(R2)	;NO -- RETURN DIRECTIVE STATUS PER SUBROUTINE
   7091									;STATUS IN R2.
   7092					;
   7093					; RECEIVER TASK IS ACTIVE:
   7094					;
   7095					;	IF SUSPENDED, RESUME & RETURN STS=+2
   7096					;	IF NOT SUSPENDED, RETURN STS=+3
   7097					;
   7098					; R4 CONTAINS THE STD ENTRY ADDRESS OF THE RECEIVER TASK.
   7099					;
   7100	023742	012703 	007136'		10$:	MOV	#.ATLLH,R3	;SETUP FOR ATL SCAN
   7101	023746				20$:
   7102	023746	011303 				MOV	@R3,R3		;SETUP R3 TO EXAMINE NEXT ENTRY
   7103	023750	020337 	007140'			CMP	R3,.ATLLH+2	;IS R3 POINTING TO ENTRY FOR NUL TASK?
   7104	023754	001413 				BEQ	70$		;YES -- ATL NODE IS NOT IN THE ATL (IT IS
   7105									;IN THE "MRL" FOR A PARTITION) RETURN STS=+3.
   7106	023756	026304 	000016 			CMP	A.TD(R3),R4	;NO -- STD ADDRESS MATCH?
   7107	023762	001371 				BNE	20$		;NO -- CHECK NEXT ATL NODE
   7108	023764	126327 	000014 	000012 	60$:	CMPB  A.TS(R3),#TS.SUS	;NO -- IS TASK SUSPENDED?
   7109	023772	001004 				BNE	70$
   7110	023774	112763 	000010 	000014 		MOVB  #TS.RUN,A.TS(R3)	;YES -- CHANGE STATUS TO RUNNING (A SIGNIFICANT
   7111									;EVENT HAS BEEN DECLARED AS A RESULT OF THE
   7112	024002	104402 				TRAP	DR.02		;SEND), AND RETURN STS=+2.
   7113					;
   7114	024004	104403 			70$:	TRAP	DR.03		;STS +3
DMSAR	- SEND & RECEIVE DIRECT	MACRO M1113  03-APR-86 20:41  PAGE 128
DIRECTIVE -- SEND AND REQUEST OR RESUME

   7116					; SEND -- SUBROUTINE TO PERFORM "SEND" FOR "SEND DATA" AND "SEND DATA &
   7117					; REQUEST RECEIVER" DIRECTIVES.
   7118					;
   7119					; ENTRY CONDITIONS:
   7120					;
   7121					;	R5 -- ATL NODE ADDRESS OF ISSUING TASK
   7122					;	R1 -- POINTING (IN DPB) TO ADR OF 13 WORD BLOCK OF DATA,
   7123					;	WHICH IS FOLLOWED BY AN [EFN].  BOTH WORDS MUST BE FETCHABLE
   7124					;	WITHOUT SEGMENT FAULT.
   7125					;	R2 -- STD ENTRY ADDRESS OF RECEIVER TASK
   7126					;
   7127					; CALLING SEQUENCE:
   7128					;
   7129					;	JSR  PC,SEND
   7130					;
   7131					; EXIT CONDITIONS:
   7132					;
   7133					;	IF NO POOL NODE AVAILABLE, RETURN AT 'DE.01'
   7134					;	IF INVALID EFN, RETURN AT 'DE.97'
   7135					;	IF PART OF DATA OUT OF TASK'S ADDRESS SPACE, RETURN AT 'DE.98'
   7136					;
   7137					;	IF SUCCESSFUL, DATA IS QUEUED, EFN (IF SPECIFIED) IS SET,
   7138					;	AND A SIGNIFICANT EVENT IS DECLARED.
   7139					;
   7140					;	R1 -- STD OF RECEIVER TASK
   7141					;
   7142					;
   7143					; REGISTERS ALTERED:
   7144					;
   7145					;	R1, R2, R3, R4, & R0
   7146					;
   7147	024006				.SEND::	MFPI	(R1)+		;SET R5 TO ADDRESS OF DATA BLOCK, AND
	024006	012146 				MOV	(R1)+,-(SP)
   7148	024010	012600 				MOV	(SP)+,R0	;LEAVE R1 POINTING TO [EFN].
   7149					;
   7150	024012	010246 				MOV	R2,-(SP)	;SAVE RECEIVER STD ENTRY ADR IN -(SP)
   7151					;
   7152									;R1 IS POINTING TO [EFN] IN DPB.
   7153					;
   7154	024014					CALL	.CEFN		;CONVERT EFN TO: (1) FLAG WORD ADDRESS
	024014	004737 	044320'			JSR	PC,.CEFN
   7155									;IN R2, AND (2) FLAG MASK IN R3 (R1 IS
   7156									;POINTING TO EFN).  IF EFN<0, OR EFN>64.,
   7157									;RETURN STS=-97.  IF EFN=0 (NO EVENT FLAG
   7158									;SPECIFIED), RETURN WITH R2=R3=00.
   7159									;CONDITION CODES ARE SET PER "TST R3".
   7160					;
   7161	024020	010246 				MOV	R2,-(SP)	;PUSH "BIS" ADDRESS WORD
   7162	024022	010346 				MOV	R3,-(SP)	;PUSH "BIS" MASK WORD
   7163					;
   7164	024024	012704 	001432'			MOV	#.POLLH,R4	;LISTHEAD
   7165	024030					CALL	..PICK		;ISSUING TASK, AND SET R1 TO NODE ADR.
	024030	004737 	045476'			JSR	PC,..PICK
   7166	024034	103001 				BCC	10$		;IF NONE AVAILABLE, RETURN STS=-04.
   7167	024036	104774 				TRAP	DE.04
   7168					;
   7169	024040	010401 			10$:	MOV	R4,R1		;SETUP R3 TO FILL NODE
DMSAR	- SEND & RECEIVE DIRECT	MACRO M1113  03-APR-86 20:41  PAGE 128-1
DIRECTIVE -- SEND AND REQUEST OR RESUME

   7170	024042	062704 	000006 			ADD	#Q.D1,R4
   7171	024046	012703 	000015 			MOV	#13.,R3
   7172	024052				20$:
   7173	024052					MFPI	(R0)+		;MOVE WORD FROM DATA BLOCK TO NODE
	024052	012046 				MOV	(R0)+,-(SP)
   7174	024054	012624 				MOV	(SP)+,(R4)+
   7175	024056	077303 				SOB	R3,20$
   7176	024060	052636 				BIS	(SP)+,@(SP)+	;SET EVENT FLAG IF SPECIFIED (IF NOT
   7177	024062	011604 				MOV	@SP,R4		;FIND RECEIVER'S STD ADDRESS
   7178	024064	010461 	000004 			MOV	R4,Q.SI(R1)	;SET SENDERS STD ADDRESS
   7179					;
   7180	024070	016404 	000026 			MOV	S.RB(R4),R4	;SET R4 TO ADDRESS OF LAST NODE (OR LISTHEAD)
   7181	024074					CALL	..NADD		;OF TASK'S RECEIVE DEQUE (LISTHEAD IN STD),
	024074	004737 	045434'			JSR	PC,..NADD
   7182									;AND ADD NODE AT END OF DEQUE.
   7183					;
   7184									;SPECIFIED, SET NO BITS IN WORD ZERO).
   7185					;
   7186	024100	012601 				MOV	(SP)+,R1	;SET RECEIVER STD ADDRESS
   7187	024102	000137 	045264'			JMP	..DSEV		;DECLARE A SIGNIFICANT EVENT AND EXIT
   7188						;
DMSAR	- SEND & RECEIVE DIRECT	MACRO M1113  03-APR-86 20:41  PAGE 129
DIRECTIVE -- RECEIVE DATA

   7190					.SBTTL	DIRECTIVE -- RECEIVE DATA
   7191					;+
   7192					; THE "RECEIVE DATA" DIRECTIVE
   7193					;
   7194					; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO RECEIVE A THIRTEEN WORD
   7195					; DATA BLOCK THAT HAS BEEN QUEUED (FIFO) FOR IT (VIA "SEND DATA" OR
   7196					; "SEND DATA & REQUEST RECEIVER" DIRECTIVES).
   7197					;
   7198					; WHEN A SENDER TASK IS SPECIFIED, ONLY DATA SENT BY THE INDICATED
   7199					; TASK IS RECEIVED.
   7200					;
   7201					; A TWO-WORD SENDER TASK NAME, AND THE THIRTEEN-WORD DATA BLOCK, ARE
   7202					; RETURNED IN AN INDICATED FIFTEEN WORD BUFFER, WITH THE TASK NAME IN
   7203					; THE FIRST TWO WORDS.
   7204					;
   7205					; A FOUR WORD DPB OF THE FOLLOWING FORMAT IS USED:
   7206					;
   7207					;	WD. 00 -- DIC (17.) & DPB SIZE (4.),
   7208					;	WD. 01 -- [SENDER TASK NAME (FIRST HALF)],
   7209					;	WD. 02 -- [SENDER TASK NAME (SECOND HALF)],
   7210					;	WD. 03 -- ADDRESS OF FIFTEEN WORD BUFFER.
   7211					;
   7212					; THE FOLLOWING STATUS IS RETURNED:
   7213					;
   7214					; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE STATUS
   7215					; OF ONE (+1).
   7216					;
   7217					;
   7218					; CC-C SET TO INDICATE REJECTIONAND A DIRECTIVE STATUS OF:
   7219					;
   7220					;	-02 -- SPECIFIED SENDER TASK NOT INSTALLED,
   7221					;	-08 -- NO DATA QUEUED (SENT),
   7222					;
   7223					;	-99 -- DIC OR DPB SIZE IS INVALID.
   7224					;-
   7225					; THIS DIRECTIVE SERVICE HAS A COMMON ENTRY WITH "RECEIVE DATA OR SUSPEND".
DMSAR	- SEND & RECEIVE DIRECT	MACRO M1113  03-APR-86 20:41  PAGE 130
DIRECTIVE -- RECEIVE DATA OR EXIT

   7227					.SBTTL	DIRECTIVE -- RECEIVE DATA OR EXIT
   7228					;+
   7229					; THE "RECEIVE DATA OR EXIT" DIRECTIVE
   7230					;
   7231					; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO RECEIVE A THIRTEEN WORD
   7232					; DATA BLOCK IF AT LEAST ONE IS CAN BE RECEIVED, OR TO EXIT IF NO
   7233					; THIRTEEN WORD DATA BLOCKS ARE CAN BE RECEIVED.
   7234					;
   7235					; DATA BLOCKS ARE QUEUED (FIFO) FOR THE TASK VIA THE "SEND DATA" OR
   7236					; THE "SEND DATA & REQUEST RECEIVER" DIRECTIVES.
   7237					;
   7238					; WHEN A SENDER TASK IS SPECIFIED, ONLY DATA SENT BY THE INDICATED
   7239					; TASK IS RECEIVED.
   7240					;
   7241					; A TWO-WORD SENDER TASK NAME, AND THE THIRTEEN-WORD DATA BLOCK, ARE
   7242					; RETURNED IN AN INDICATED FIFTEEN WORD BUFFER, WITH THE TASK NAME IN
   7243					; THE FIRST TWO WORDS.
   7244					;
   7245					; A FOUR WORD DPB OF THE FOLLOWING FORMAT IS USED:
   7246					;
   7247					;	WD. 00 -- DIC (19.) & DPB SIZE (4.),
   7248					;	WD. 01 -- [SENDER TASK NAME (FIRST HALF)],
   7249					;	WD. 02 -- [SENDER TASK NAME (SECOND HALF)],
   7250					;	WD. 03 -- ADDRESS OF FIFTEEN WORD BUFFER.
   7251					;
   7252					; THE FOLLOWING STATUS IS RETURNED:
   7253					;
   7254					; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE STATUS
   7255					; OF ONE (+1).
   7256					;
   7257					;
   7258					; CC-C SET TO INDICATE REJECTION, AND A DIRECTIVE STATUS OF:
   7259					;
   7260					;	-02 -- SPECIFIED SENDER TASK NOT INSTALLED,
   7261					;
   7262					;	-80 -- DIRECTIVE ISSUED BY "BACKGROUND" TASK,
   7263					;	-98 -- PART OF DPB OR BUFFER IS OUT OF TASK'S ADDRESS SPACE,
   7264					;	-99 -- DIC OR DPB SIZE IS INVALID.
   7265					;-
   7266					; THIS DIRECTIVE SERVICE HAS A COMMON ENTRY WITH "RECEIVE DATA OR SUSPEND".
DMSAR	- SEND & RECEIVE DIRECT	MACRO M1113  03-APR-86 20:41  PAGE 131
DIRECTIVE -- RECEIVE DATA OR SUSPEND

   7268					.SBTTL	DIRECTIVE -- RECEIVE DATA OR SUSPEND
   7269					;+
   7270					; THE "RECEIVE DATA OR SUSPEND" DIRECTIVE
   7271					;
   7272					; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO RECEIVE A THIRTEEN WORD
   7273					; DATA BLOCK IF AT LEAST ONE IS CAN BE RECEIVED, OR TO SUSPEND IF NO
   7274					; THIRTEEN WORD DATA BLOCKS ARE CAN BE RECEIVED.
   7275					;
   7276					; DATA BLOCKS ARE QUEUED (FIFO) FOR THE TASK VIA THE "SEND DATA" OR
   7277					; THE "SEND DATA & REQUEST RECEIVER" DIRECTIVES.
   7278					;
   7279					; WHEN A SENDER TASK IS SPECIFIED, ONLY DATA SENT BY THE INDICATED
   7280					; TASK IS RECEIVED.
   7281					;
   7282					; A TWO-WORD SENDER TASK NAME, AND THE THIRTEEN-WORD DATA BLOCK, ARE
   7283					; RETURNED IN AN INDICATED FIFTEEN WORD BUFFER, WITH THE TASK NAME IN
   7284					; THE FIRST TWO WORDS.
   7285					;
   7286					; A FOUR WORD DPB OF THE FOLLOWING FORMAT IS USED:
   7287					;
   7288					;	WD. 00 -- DIC (21.) & DPB SIZE (4.),
   7289					;	WD. 01 -- [SENDER TASK NAME (FIRST HALF)],
   7290					;	WD. 02 -- [SENDER TASK NAME (SECOND HALF)],
   7291					;	WD. 03 -- ADDRESS OF FIFTEEN WORD BUFFER.
   7292					;
   7293					; THE FOLLOWING STATUS IS RETURNED:
   7294					;
   7295					; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE
   7296					; STATUS OF:
   7297					;
   7298					;	+1 -- IF DATA WAS RECEIVED,
   7299					;	+2 -- IF TASK WAS SUSPENDED.
   7300					;
   7301					; CC-C SET TO INDICATE REJECTION AND A DIRECTIVE STATUS OF:
   7302					;
   7303					;	-02 -- SPECIFIED SENDER TASK NOT INSTALLED,
   7304					;
   7305					;	-80 -- DIRECTIVE ISSUED BY "BACKGROUND" TASK,
   7306					;	-98 -- PART OF DPB OR BUFFER IS OUT OF TASK'S ADDRESS SPACE,
   7307					;	-99 -- DIC OR DPB SIZE IS INVALID.
   7308					;-
   7309					; CONTROL IS TRANSFERRED HERE (BY DIRECTIVE DISPATCH ROUTINE) WITH THE
   7310					; DIRECTIVE ISSUING TASK'S PS, PC, & R1-R5 PUSHED ONTO THE
   7311					;  STACK, AND R0-R5 SET AS FOLLOWS:
   7312					;	R0 -- PC OF EMT INSTRUCTION
   7313					;	R1 -- POINTER TO WORD FOLLOWING DIC & SIZE
   7314					;	R2 -- DPB SIZE
   7315					;	R3 -- DIC (DIRECTIVE IDENTIFICATION CODE)
   7316					;	R5 -- ATL NODE ADDRESS OF ISSUING TASK ('.CRTSK')
   7317					;
   7318					; R5 IS LEFT UNALTERED (I.E. POINTING TO ISSUING TASK'S ATL NODE).
   7319					;
   7320									;R5 IS POINTING TO 15-WORD BUFFER IN TASK.
   7321					;
   7322									;R4 IS SET TO STD NODE ADDRESS OF RECEIVER TASK.
   7323					;
   7324					; COMMON ENTRY POINT FOR "RECEIVE", "RECEIVE OR EXIT", & "RECEIVE OR SUSPEND".
DMSAR	- SEND & RECEIVE DIRECT	MACRO M1113  03-APR-86 20:41  PAGE 131-1
DIRECTIVE -- RECEIVE DATA OR SUSPEND

   7325					;
   7326
   7327	024106				.D.REC::
   7328	024106				.D.ROE::
   7329	024106				.D.ROS::
   7330	024106	016504 	000016 			MOV 	A.TD(R5),R4	;SET R4 TO RECEIVE DEQUE LISTHEAD (IN STD ENTRY).
   7331	024112	062704 	000024 			ADD	#S.RF,R4
   7332					;
   7333	024116					MFPI	(R1)+		;IS A SENDER TASK SPECIFIED?
	024116	012146 				MOV	(R1)+,-(SP)
   7334	024120					MFPI	(R1)+		;MAYBE -- CHECK SECOND HALF OF TASK NAME
	024120	012146 				MOV	(R1)+,-(SP)
   7335	024122	052626 				BIS	(SP)+,(SP)+
   7336	024124	001004 				BNE	10$		;NO -- RECEIVE FROM ANY SENDER
   7337									;YES -- RECEIVE ONLY FROM INDICATED SENDER
   7338									;NO -- RECEIVE FROM ANY SENDER
   7339	024126					CALL	..PICK		;PICK FIRST NODE FROM REC DEQUE, AND LEAVE NODE
	024126	004737 	045476'			JSR	PC,..PICK
   7340									;ADDRESS IN R4.
   7341									;NODE PICKED?
   7342	024132	103017 				BCC	40$		;YES -- FILL BUFFER
   7343	024134	000440 				BR	70$		;NO -- NO DATA BY ANY SENDER
   7344					;
   7345	024136	024141 			10$:	CMP	-(R1),-(R1)
   7346					; R1 IS POINTING TO SPECIFIED SENDER'S TASK NAME IN PREVIOUS SPACE.
   7347					;
   7348	024140					CALL	..FSTD		;SET R2 TO STD ENTRY ADDRESS, OR TO
	024140	004737 	045574'			JSR	PC,..FSTD
   7349									;ZERO IF TASK NAME NOT FOUND (AND SET
   7350									;CONDITION CODES PER "TST R2").
   7351									;
   7352									;ADVANCE R1 BY FOUR (PAST TASK NAME).
   7353					;
   7354	024144	001001 				BNE	20$		;IF TASK NOT INSTALLED, RETURN STS=-02.
   7355	024146	104776 				TRAP	DE.02		;RETURN STS=-02.
   7356					;
   7357	024150	010401 			20$:	MOV	R4,R1		;SAVE LISTHEAD ADDRESS IN R1, AND
   7358									;SCAN DEQUE FOR DATA SENT BY SENDER PER R2.
   7359	024152				30$:
   7360	024152	011404 				MOV	@R4,R4		;ADVANCE R4 TO NEXT NODE
   7361	024154	020401 				CMP	R4,R1		;END OF DEQUE?
   7362	024156	001427 				BEQ	70$		;YES -- NO DATA BY SPECIFIED SENDER
   7363	024160	026402 	000004 			CMP	Q.SI(R4),R2	;NO -- IS DATA SENT BY SPECIFIED SENDER?
   7364	024164	001372 				BNE	30$		;NO -- CHECK NEXT NODE
   7365	024166					CALL	..NDEL		;YES -- DELETE NODE FROM DEQUE
	024166	004737 	045320'			JSR	PC,..NDEL
   7366					;
   7367					; DATA RECEIVED -- R4 CONTAINS NODE ADDRESS & R1 CONTAINS DATA BUFFER
   7368					; ADDRESS.  FILL BUFFER (2-WORD TASK NAME & 13-WORD DATA BLOCK).
   7369					;
   7370	024172				40$:
   7371	024172					MFPS	@R1,R0	;FIND THE BUFFER ADDRESS
	024172	011100 				MOV	@R1,R0
   7372	024174	010401 				MOV	R4,R1		;SAVE NODE ADR IN R1 FOR '..RNTP'
   7373	024176	062704 	000004 			ADD	#Q.SI,R4	;ADVANCE R4 TO POINT TO SENDER ID WORD
   7374					;
   7375	024202	012403 				MOV	(R4)+,R3	;SET R3 TO SENDER STD NODE ADDRESS
DMSAR	- SEND & RECEIVE DIRECT	MACRO M1113  03-APR-86 20:41  PAGE 131-2
DIRECTIVE -- RECEIVE DATA OR SUSPEND

   7376					;
   7377	024204				50$:
   7378	024204					MTPS  S.TN+0(R3),(R0)+	;SET SENDER TASK NAME IN FIRST TWO WORDS
	024204	016320 	000000 			MOV	S.TN+0(R3),(R0)+
   7379	024210					MTPS  S.TN+2(R3),(R0)+
	024210	016320 	000002 			MOV	S.TN+2(R3),(R0)+
   7380					;
   7381	024214	012703 	000015 			MOV	#13.,R3		;FILL REMAINING 13 WORDS FROM NODE.
   7382	024220				60$:
   7383	024220					MTPS	(R4)+,(R0)+
	024220	012420 				MOV	(R4)+,(R0)+
   7384	024222	077302 				SOB	R3,60$
   7385					;
   7386	024224	012704 	001432'			MOV	#.POLLH,R4	;RETURN NODE TO POOL
   7387	024230					CALL	..NADD		;RETURN NODE (PER R1) TO POOL
	024230	004737 	045434'			JSR	PC,..NADD
   7388					;
   7389	024234	104401 				TRAP	DR.01		;RETURN STS=+1.
   7390					;
   7391					; DATA NOT RECEIVED:
   7392					;	IF "RECEIVE", RETURN STS=-08.
   7393					;	IF "RECEIVE OR EXIT", EXIT.
   7394					;	IF "RECEIVE OR SUSPEND", SUSPEND.
   7395					;
   7396					; R3 CONTAINS THE DIC SIZE.
   7397					; R0 CONTAINS THE ISSUING TASK'S ATL NODE ADDRESS
   7398					;
   7399	024236	006303 			70$:	ASL	R3
   7400	024240	000173 	024200'			JMP	@80$-2-<17.*2.>(R3)
   7401	024244	024252'			80$:	.WORD	90$
   7402	024246	023146'				.WORD	.D.EXT
   7403	024250	024252'				.WORD	90$
   7404					;
   7405	024252	104770 			90$:	TRAP	DE.08
   7406					;
DMSAR	- SEND & RECEIVE DIRECT	MACRO M1113  03-APR-86 20:41  PAGE 132
DIRECTIVE -- RECEIVE DATA OR SUSPEND

   7408
   7409						.TITLE	DMSDV	- SPECIFY SST TABLE DIRECTIVES MODULE
   7410						.SBTTL	SPECIFY SST TABLE -- COPYRIGHT STATEMENT
   7411	024254					IDENT$	1,0
						.IDENT	/001000/
   7412					;
   7413					;                             COPYRIGHT (C) 1975, 1984, 1985 BY
   7414					;                     DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
   7415					;			ALL RIGHTS RESERVED.
   7416					;       THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE  USED  AND  COPIED
   7417					;       ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
   7418					;       OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR ANY OTHER COPIES THERE-
   7419					;       OF  MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
   7420					;       NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
   7421					;
   7422					;       THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT
   7423					;       NOTICE  AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
   7424					;       CORPORATION.
   7425					;
   7426					;       DIGITAL ASSUMES NO RESPONSIBILITY FOR THE  USE  OR  RELIABILITY  OF  ITS
   7427					;       SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
   7428					;
   7429					;		MODULE: SPECIFY SST TABLE DIRECTIVES
   7430					;
   7431					;		VERSION: 01-00
   7432					;
   7433					;		AUTHOR: R. MCLEAN
   7434					;
   7435					;		DATE: 19 JUN 75
   7436					;
   7437					;
   7438					;	THIS MODULE CONTAINS:
   7439					;
   7440					;	1 -- CODE TO SERVICE THE "SPECIFY SST VECTOR TABLE FOR TASK" DIRECTIVE.
   7441					;
   7442					;	MACRO LIBRARY CALLS
   7443
   7444						.MCALL	MTPS,MFPS,MFPI,MTPI,CALL,RETURN
DMSDV	- SPECIFY SST TABLE DIR	MACRO M1113  03-APR-86 20:41  PAGE 133
DIRECTIVE -- SPECIFY SST VECTOR TABLE FOR TASK

   7446						.SBTTL	DIRECTIVE -- SPECIFY SST VECTOR TABLE FOR TASK
   7447					;+
   7448					; THE "SPECIFY SST VECTOR TABLE FOR TASK" DIRECTIVE
   7449					;
   7450					; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO RECORD THE ADDRESS (VIRTUAL) OF
   7451					; A TABLE OF SYNCHRONOUS SYSTEM TRAP SERVICE ROUTINE ENTRY POINTS
   7452					; FOR USE BY THE ISSUING TASK.  WHENEVER AN SST SERVICE ROUTINE ENTRY IS
   7453					; SPECIFIED IN BOTH THE TASK'S TABLE & DDT'S TABLE, THE TRAP OCCURS
   7454					; FOR THE DEBUGGING AID, AND NOT FOR THE TASK.
   7455					;
   7456					;
   7457					;	WD. 00 -- "ODD ADDRESS" ERROR,
   7458					;	WD. 01 -- SEGMENT FAULT,
   7459					;	WD. 02 -- T-BIT TRAP OR EXECUTION OF A 'BPT' INSTRUCTION,
   7460					;	WD. 03 -- EXECUTION OF AN 'IOT' INSTRUCTION,
   7461					;	WD. 04 -- EXECUTION OF A "RESERVED" INSTRUCTION,
   7462					;	WD. 05 -- EXECUTION OF "NON-RSX EMT",
   7463					;	WD. 06 -- EXECUTION OF A 'TRAP' INSTRUCTION,
   7464					;	WD. 07 -- PDP-11/40 FLOATING POINT EXCEPTION.
   7465					;
   7466					; THE TABLE IS OF THE FOLLOWING FORMAT:
   7467					; A THREE WORD DPB OF THE FOLLOWING FORMAT IS USED:
   7468					;
   7469					;	WD. 00 -- DIC (43.) & DPB SIZE (3.),
   7470					;	WD. 01 -- ADDRESS OF SST VECTOR TABLE,
   7471					;	WD. 02 -- NUMBER OF TABLE ENTRIES (8). (MUST BE AT LEAST 8!)
   7472					;
   7473					; THE FOLLOWING STATUS IS RETURNED:
   7474					;
   7475					; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE STATUS
   7476					; OF ONE (+1).
   7477					;
   7478					; CC-C SET TO INDICATE REJECTION, AND A DIRECTIVE STATUS OF:
   7479					;
   7480					;	-99 -- DIC OR DPB SIZE IS INVALID.
   7481					; CONTROL IS TRANSFERRED HERE (BY DIRECTIVE DISPATCH ROUTINE) WITH THE
   7482					; DIRECTIVE ISSUING TASK'S PS, PC, & R1-R5 PUSHED ONTO THE
   7483					;  STACK, AND R0-R5 SET AS FOLLOWS:
   7484					;	R1 -- ADDRESS OF WORD FOLLOWING DIC & SIZE
   7485					;	R2 -- DPB SIZE
   7486					;	R3 -- DIC (DIRECTIVE IDENTIFICATION CODE)
   7487					;	R5 -- ATL NODE ADDRESS OF ISSUING TASK (.CRTSK)
   7488					;
   7489					;
   7490					; R5 IS LEFT UNALTERED (I.E. POINTING TO ISSUING TASK'S ATL NODE).
   7491									;R1 IS POINTING TO THE ADDRESS OF THE TABLE
   7492									;R5 CONTAINS THE TABLE SIZE
   7493					;
   7494	024254	016502 	000016 		.D.STV::MOV	A.TD(R5),R2	;FIND THE STD ADDRESS OF THIS TASK
   7495	024260					MFPS	@R1,S.SS(R2)	;SET UP SST VECTOR ADDRESS
	024260	011162 	000030 			MOV	@R1,S.SS(R2)
   7496	024264	104401 				TRAP	DR.01		;VALID DIRECTIVE RETURN
DMSDV	- SPECIFY SST TABLE DIR	MACRO M1113  03-APR-86 20:41  PAGE 134
DIRECTIVE -- SPECIFY SST VECTOR TABLE FOR TASK

   7498
   7499
   7500						.TITLE	DMAST	- SPECIFY AST SERVICE DIRECTIVES
   7501						.SBTTL	SPECIFY AST SERVICE -- COPYRIGHT STATEMENT
   7502	024266					IDENT$	1,0
						.IDENT	/001000/
   7503					;
   7504					;                             COPYRIGHT (C) 1975, 1984, 1985 BY
   7505					;                     DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
   7506					;			ALL RIGHTS RESERVED.
   7507					;       THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE  USED  AND  COPIED
   7508					;       ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
   7509					;       OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR ANY OTHER COPIES THERE-
   7510					;       OF  MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
   7511					;       NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
   7512					;
   7513					;       THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT
   7514					;       NOTICE  AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
   7515					;       CORPORATION.
   7516					;
   7517					;       DIGITAL ASSUMES NO RESPONSIBILITY FOR THE  USE  OR  RELIABILITY  OF  ITS
   7518					;       SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
   7519					;
   7520					;		MODULE: SPECIFY AST SERVICE DIRECTIVES
   7521					;
   7522					;		VERSION: 01-00
   7523					;
   7524					;		AUTHOR: R. MCLEAN
   7525					;
   7526					;		DATE: 19 JUN 75
   7527					;
   7528					;
   7529					;	THIS MODULE CONTAINS:
   7530					;
   7531					;	1 -- CODE TO SERVICE THE "SPECIFY POWER RECOVERY AST" DIRECTIVE,
   7532					;
   7533					;	MACRO LIBRARY CALLS
   7534					;
   7535						.MCALL	CALL,RETURN,MTPS,MTPI,MFPI,MFPS
DMAST	- SPECIFY AST SERVICE D	MACRO M1113  03-APR-86 20:41  PAGE 135
DIRECTIVE -- SPECIFY POWER FAIL AST

   7537						.SBTTL	DIRECTIVE -- SPECIFY POWER FAIL AST
   7538					;+
   7539					; THE "SPECIFY POWER FAIL AST" DIRECTIVE
   7540					;
   7541					; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO RECORD EITHER (1) THAT POWER
   7542					; RECOVERY AST'S FOR THE ISSUING TASK ARE DESIRED, AND WHERE CONTROL
   7543					; IS TO BE TRANSFERRED WHEN A POWER FAIL AST OCCURS, OR (2) THAT
   7544					; POWER FAIL AST'S FOR THE ISSUING TASK ARE NO LONGER DESIRED.
   7545					;
   7546					; A TWO WORD DPB OF THE FOLLOWING FORMAT IS USED:
   7547					;
   7548					;	WD. 00 -- DIC (45..) & DPB SIZE (2.),
   7549					;	WD. 01 -- [AST SERVICE ENTRY POINT].
   7550					;
   7551					; WHEN AN "AST SERVICE ENTRY POINT" IS SPECIFIED, FUTURE POWER FAIL
   7552					; AST'S WILL OCCUR FOR THE ISSUING TASK, AND CONTROL WILL BE TRANSFERRED
   7553					; TO THE INDICATED LOCATION WHENEVER A POWER FAIL AST OCCURS.
   7554					;
   7555					; WHEN AN "AST SERVICE ENTRY POINT" IS NOT SPECIFIED (ZERO SECOND DPB
   7556					; WORD), FUTURE POWER FAIL AST'S WILL NOT OCCUR (UNTIL AN AST ENTRY
   7557					; POINT IS SPECIFIED AGAIN).
   7558					;
   7559					; THE FOLLOWING STATUS IS RETURNED:
   7560					;
   7561					; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE STATUS
   7562					;
   7563					; OF ONE (+1).
   7564					;
   7565					; CC-C SET TO INDICATE REJECTION, AND A DIRECTIVE STATUS OF:
   7566					;
   7567					;	-08 -- AST ENTRY ALREADY UN-SPECIFIED,
   7568					;
   7569					;	-98 -- PART OF DPB IS OUT OF ISSUING TASK'S ADDRESS SPACE,
   7570					;	-99 -- DIC OR DPB SIZE IS INVALID.
   7571					;
   7572					; CONTROL IS TRANSFERRED HERE (BY DIRECTIVE DISPATCH ROUTINE) WITH THE
   7573					; DIRECTIVE ISSUING TASK'S PS, PC, & R1-R5 PUSHED ONTO THE
   7574					;  STACK, AND R0-R5 SET AS FOLLOWS:
   7575					;	R1 -- ADDRESS OF WORD FOLLOWING DIC & SIZE
   7576					;	R2 -- DPB SIZE
   7577					;	R3 -- DIC (DIRECTIVE IDENTIFICATION CODE)
   7578					;	R5 -- ATL NODE ADDRESS OF ISSUING TASK (.CRTSK)
   7579					;
   7580					;
   7581					; R5 IS LEFT UNALTERED (I.E. POINTING TO ISSUING TASK'S ATL NODE).
   7582					;
   7583	024266				.D.PUT::MFPS	@R1,R1		;FIND THE LAST WORD OF THE DPB
	024266	011101 				MOV	@R1,R1
   7584	024270	001403 				BEQ	20$		;YES -- THEN CHECK IT OUT
   7585	024272	010165 	000034 		10$:	MOV	R1,A.PF(R5)	;SPECIFY POWER FAIL AST
   7586	024276	104401 				TRAP	DR.01		;AND RETURN +1
   7587					;
   7588	024300	005765 	000034 		20$:	TST	A.PF(R5)	;CHECK FOR ALREADY CLEAR
   7589	024304	001372 				BNE	10$		;NO -- ALL OK
   7590	024306	104770 				TRAP	DE.08		;YES -- ERROR
DMAST	- SPECIFY AST SERVICE D	MACRO M1113  03-APR-86 20:41  PAGE 136
DIRECTIVE -- SPECIFY POWER FAIL AST

   7592
   7593
   7594						.TITLE	DMREQ	- "REQUEST AND EXECUTE" DIRECTIVES MODULE
   7595						.SBTTL	REQUEST AND EXECUTE -- COPYRIGHT STATEMENT
   7596	024310					IDENT$	1,0
						.IDENT	/001000/
   7597					;
   7598					;                             COPYRIGHT (C) 1975, 1984, 1985 BY
   7599					;                     DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
   7600					;			ALL RIGHTS RESERVED.
   7601					;       THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE  USED  AND  COPIED
   7602					;       ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
   7603					;       OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR ANY OTHER COPIES THERE-
   7604					;       OF  MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
   7605					;       NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
   7606					;
   7607					;       THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT
   7608					;       NOTICE  AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
   7609					;       CORPORATION.
   7610					;
   7611					;       DIGITAL ASSUMES NO RESPONSIBILITY FOR THE  USE  OR  RELIABILITY  OF  ITS
   7612					;       SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
   7613					;
   7614					;		MODULE: "REQUEST" DIRECTIVE
   7615					;
   7616					;		VERSION: 01-00
   7617					;
   7618					;		AUTHOR: R. MCLEAN
   7619					;
   7620					;		DATE: 1 JUL 75
   7621					;
   7622					;
   7623					;	THIS MODULE CONTAINS:
   7624					;
   7625					;	1 -- CODE TO SERVICE THE "REQUEST" DIRECTIVE.
   7626					;
   7627					;	MACROS
   7628					;
   7629						.MCALL	CALL,RETURN,MFPS
DMREQ	- "REQUEST AND EXECUTE"	MACRO M1113  03-APR-86 20:41  PAGE 137
DIRECTIVE -- TASK SCHEDULING -- REQUEST

   7631						.SBTTL	DIRECTIVE -- TASK SCHEDULING -- REQUEST
   7632					;+
   7633					; THE "REQUEST" DIRECTIVE
   7634					;
   7635					; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO MAKE A TASK ACTIVE.  I.E., TO
   7636					; RUN CONTINGENT UPON PRIORITY AND MEMORY AVAILABILITY.
   7637					;
   7638					; A SEVEN WORD DPB OF THE FOLLOWING FORMAT IS USED:
   7639					;
   7640					;	WD. 00 -- DIC (11.) & DPB SIZE (7.),
   7641					;	WD. 01 -- TASK NAME (FIRST HALF),
   7642					;	WD. 02 -- TASK NAME (SECOND HALF),
   7643					;	WD. 03 -- [PARTITION NAME (FIRST HALF)],
   7644					;	WD. 04 -- [PARTITION NAME (SECOND HALF)],
   7645					;	WD. 05 -- [PRIORITY],
   7646					;	WD. 06 -- [UIC].
   7647					;
   7648					; THE FOLLOWING STATUS IS RETURNED:
   7649					;
   7650					; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE STATUS
   7651					; OF ONE (+1).
   7652					;
   7653					; CC-C SET TO INDICATE REJECTION, AND A DIRECTIVE STATUS OF:
   7654					;
   7655					;	-01 -- INSUFFICIENT POOL NODES AVAILABLE,
   7656					;	-03 -- PARTITION TOO SMALL FOR TASK,
   7657					;	-06 -- HANDLER TASK NOT RESIDENT TO LOAD TASK,
   7658					;	-07 -- TASK IS ACTIVE,
   7659					;
   7660					;	-94 -- PARTITION NOT IN SYSTEM (NO TPD ENTRY FOUND),
   7661					;	-95 -- INVALID PRIORITY SPECIFIED (<0 OR >250.),
   7662					;	-99 -- DIC OR DPB SIZE IS INVALID.
   7663					;
   7664					;-
   7665	024310				.D.REQ::CALL	..FSTD		;SET R2 TO STD ENTRY ADDRESS, OR TO
	024310	004737 	045574'			JSR	PC,..FSTD
   7666									;ZERO IF TASK NAME NOT FOUND (AND SET
   7667									;CONDITION CODES PER "TST R2").
   7668									;
   7669									;ADVANCE R1 BY FOUR (PAST TASK NAME).
   7670					;
   7671					;
   7672	024314	001406 				BEQ	20$		;IF TASK IS NOT INSTALLED TRY TO GET IT INSTALLED
   7673	024316					CALL	.FEPPU		;SET R3 TO TPD ADDRESS IF A PARTITION IS
	024316	004737 	016000'			JSR	PC,.FEPPU
   7674									;SPECIFIED, OR TO ZERO IF NOT SPECIFIED.
   7675									;
   7676									;SET R4 TO PRIORITY IF SPECIFIED, OR TO
   7677									;ZERO IF NOT SPECIFIED.
   7678									;
   7679									;
   7680									;ADVANCE R1 BY EIGHT (PAST PARTITION NAME,
   7681									;PRIORITY INDICATOR, AND UIC INDICATOR.).
   7682									;
   7683									;IF INVALID PRIORITY, RETURN STS=-95.
   7684									;IF PARTITION NOT IS SYSTEM, RETURN
   7685									;STS=-94.  IF NON-PRIVILEGED TASK HAS
DMREQ	- "REQUEST AND EXECUTE"	MACRO M1113  03-APR-86 20:41  PAGE 137-1
DIRECTIVE -- TASK SCHEDULING -- REQUEST

   7686									;SPECIFIED OTHER THAN OWN UIC, RETURN
   7687									;STS=-91.  IF SPECIFIED PARTITION IS
   7688									;TOO SMALL FOR TASK, RETURN STS=-03.
   7689					;
   7690					;
   7691					;
   7692					;
   7693	024322				10$:	CALL	.REQS		;MAKE A TASK ACTIVE PER R1, R2, R3, R4 & R5.
	024322	004737 	015276'			JSR	PC,.REQS
   7694									;(R1, R2, R3, R4, & R5 ARE ALTERED)
   7695					;
   7696	024326	000162 	015770'			JMP	.RQESD(R2)	;RETURN DIRECTIVE STATUS PER SUBROUTINE
   7697									;STATUS IN R2.
   7698					;
   7699	024332	012704 	024522'		20$:	MOV	#RQSPB,R4	;SET UP TO INSERT PARAMETERS INTO SEND
   7700	024336	024141 				CMP	-(R1),-(R1)	;BACKUP TO POINT TO TASK NAME
   7701	024340					MFPS	(R1)+,(R4)+	;TASK NAME
	024340	012124 				MOV	(R1)+,(R4)+
   7702	024342					MFPS	(R1)+,(R4)+
	024342	012124 				MOV	(R1)+,(R4)+
   7703	024344					MFPS	(R1)+,(R4)+	;PARTITION NAME
	024344	012124 				MOV	(R1)+,(R4)+
   7704	024346					MFPS	(R1)+,(R4)+
	024346	012124 				MOV	(R1)+,(R4)+
   7705	024350					MFPS	(R1)+,(R4)+	;PRIORITY
	024350	012124 				MOV	(R1)+,(R4)+
   7706	024352	012704 	001432'			MOV	#.POLLH,R4	;PICK A NODE FROM THE POOL
   7707	024356					CALL	..PICK
	024356	004737 	045476'			JSR	PC,..PICK
   7708	024362	103001 				BCC	30$		;GOT ONE
   7709	024364	104777 				TRAP	DE.01		;NONE RETURN -1
   7710					;
   7711	024366	010401 			30$:	MOV	R4,R1		;SAVE THE NODE ADDRESS
   7712	024370	012704 	001432'			MOV	#.POLLH,R4	;FIND THE LISTHEAD OF THE POOL
   7713	024374	021404 				CMP	@R4,R4		;ANY NODES?
   7714	024376	001003 				BNE	35$		;YES -- PROCEED
   7715	024400					CALL	..NADD		;NO RETURN NODE
	024400	004737 	045434'			JSR	PC,..NADD
   7716	024404	104777 				TRAP	DE.01		;NOT ENOUGH NODES
   7717					;
   7718	024406	010137 	024534'		35$:	MOV	R1,RQSTD	;SET UP THE STD ADDRESS
   7719	024412	005743 				TST	-(R3)		;BACK UP TO POINT TO CORRECT ENTRY TO INSERT
   7720	024414	012704 	024522'			MOV	#RQSPB,R4	;SET UP PARAMETERS IN STD
   7721	024420	012421 				MOV	(R4)+,(R1)+
   7722	024422	012421 				MOV	(R4)+,(R1)+
   7723	024424	005021 				CLR	(R1)+
   7724	024426	012721 	040005 			MOV	#SF.EX!SF.TA!SF.IR,(R1)+ ;DECLARE TASK ACTIVE
   7725	024432	062701 	000014 			ADD	#S.RF-S.DP,R1	;POINT TO SEND LISTHEAD
   7726	024436	010111 				MOV	R1,@R1		;SET UP LISTHEAD
   7727	024440	010161 	000002 			MOV	R1,2(R1)
   7728	024444	013704 	024534'			MOV	RQSTD,R4	;RESTORE STD ADDRESS
   7729	024450	011301 			40$:	MOV	@R3,R1		;MAKE ENTRY IN STD
   7730	024452	001403 				BEQ	50$		;END OF LIST
   7731	024454	010423 				MOV	R4,(R3)+	;MOVE LIST DOWN
   7732	024456	010104 				MOV	R1,R4		;SET NEXT ENTRY
   7733	024460	000773 				BR	40$		;GO NEXT ENTRY
   7734					;
DMREQ	- "REQUEST AND EXECUTE"	MACRO M1113  03-APR-86 20:41  PAGE 137-2
DIRECTIVE -- TASK SCHEDULING -- REQUEST

   7735	024462	010413 			50$:	MOV	R4,@R3		;STORE LAST ENTRY
   7736	024464	062737 	000002 	006370'		ADD	#2,.STDTZ	;UPDATE SIZE
   7740	024472	012702 	006676'			MOV	#STDINS,R2	;SET UP STD NODE OF RECEIVER
   7741	024476	012701 	024516'			MOV	#RQSPT,R1	;SET UP TO SEND TO INSTALL
   7742	024502					CALL	.SEND		;SEND DATA
	024502	004737 	024006'			JSR	PC,.SEND
   7743	024506	005004 				CLR	R4		;START AT DEFAULT PART & PRI
   7744	024510	005003 				CLR	R3
   7745	024512	010102 				MOV	R1,R2		;SET UP STD OF INSTALL
   7746	024514	000702 				BR	10$
   7747					;
   7748	024516	024522'			RQSPT::	.WORD	RQSPB		;POINTER TO SEND BLOCK
   7749	024520	000000 				.WORD	0		;EVENT FLAG (NONE)
   7750	024522				RQSPB:	.BLKW	5		;DATA TO BE XMITTED
   7751	024534	000000 			RQSTD:	.WORD	0		;STD ADDRESS
   7752					;
DMREQ	- "REQUEST AND EXECUTE"	MACRO M1113  03-APR-86 20:41  PAGE 138
DIRECTIVE -- TASK SCHEDULING -- REQUEST

   7754
   7755
   7756						.TITLE	DMGPP	- "GET TASK PARAMETERS" DIRECTIVE MODULE
   7757						.SBTTL	GET TASK PARAMETERS -- COPYRIGHT STATEMENT
   7758	024536					IDENT$	1,0
						.IDENT	/001000/
   7759					;
   7760					;                             COPYRIGHT (C) 1975, 1984, 1985 BY
   7761					;                     DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
   7762					;			ALL RIGHTS RESERVED.
   7763					;       THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE  USED  AND  COPIED
   7764					;       ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
   7765					;       OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR ANY OTHER COPIES THERE-
   7766					;       OF  MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
   7767					;       NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
   7768					;
   7769					;       THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT
   7770					;       NOTICE  AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
   7771					;       CORPORATION.
   7772					;
   7773					;       DIGITAL ASSUMES NO RESPONSIBILITY FOR THE  USE  OR  RELIABILITY  OF  ITS
   7774					;       SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
   7775					;
   7776					;		MODULE: "GET TASK PARAMETERS" DIRECTIVE
   7777					;
   7778					;		VERSION: 01-00
   7779					;
   7780					;		AUTHOR: R. MCLEAN
   7781					;
   7782					;		DATE: 19 AUG 75
   7783					;
   7784					;
   7785					;	THIS MODULE CONTAINS:
   7786					;
   7787					;	1 -- CODE TO SERVICE THE "GET TASK PARAMETERS" DIRECTIVE.
   7788					;
   7789					; MACRO CALLS
   7790
   7791						.MCALL	MTPS,MFPS
DMGPP	- "GET TASK PARAMETERS"	MACRO M1113  03-APR-86 20:41  PAGE 139
DIRECTIVE -- GET TASK PARAMETERS

   7793						.SBTTL	DIRECTIVE -- GET TASK PARAMETERS
   7794					;+
   7795					; THE "GET TASK PARAMETERS" DIRECTIVE
   7796					;
   7797					; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO FILL AN INDICATED SIXTEEN WORD
   7798					; BUFFER WITH PARAMETERS RELATING TO THE ISSUING TASK.
   7799					;
   7800					; A TWO WORD DPB OF THE FOLLOWING FORMAT IS USED:
   7801					;
   7802					;	WD. 00 -- DIC (63.) & DPB SIZE (2.),
   7803					;	WD. 01 -- ADDRESS OF SIXTEEN WORD BUFFER.
   7804					;
   7805					; THE SIXTEEN WORD BUFFER IS FILLED AS FOLLOWS:
   7806					;
   7807					;	WD. 00 -- ISSUING TASK'S NAME (FIRST HALF),
   7808					;	WD. 01 -- ISSUING TASK'S NAME (SECOND HALF),
   7809					;	WD. 02 -- PARTITION NAME (FIRST HALF),
   7810					;	WD. 03 -- PARTITION NAME (SECOND HALF),
   7811					;	WD. 04 -- TASK NAME OF REQUESTOR OF ISSUING TASK (FIRST HALF),
   7812					;	WD. 05 -- TASK NAME OF REQUESTOR OF ISSUING TASK (SECOND HALF),
   7813					;	WD. 06 -- RUN PRIORITY,
   7814					;	WD. 07 -- USER IDENTIFICATION CODE (UIC FOR FILES SYSTEM),
   7815					;	WD. 10 -- NUMBER OF LOGICAL I/O UNITS (LUN'S),
   7816					;	WD. 11 -- MACHINE TYPE INDICATOR (VIZ., 45. FOR PDP-11/45),
   7817					;	WD. 12 -- STD FLAGS WORD,
   7818					;	WD. 13 -- [ADDRESS OF TASK SST VECTOR TABLE],
   7819					;	WD. 14 -- [SIZE OF TASK SST VECTOR TABLE (IN WORDS)],
   7820					;	WD. 15 -- TASK SIZE
   7821					;	WD. 16 -- ZERO (RESERVED),
   7822					;	WD. 17 -- ZERO (RESERVED).
   7823					;
   7824					; THE FOLLOWING STATUS IS RETURNED:
   7825					;
   7826					; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE STATUS
   7827					; OF ONE (+1).
   7828					;
   7829					; CC-C SET TO INDICATE REJECTION, AND A DIRECTIVE STATUS OF:
   7830					;
   7831					;	-98 -- PART OF DPB OR BUFFER IS OUT OF TASK'S ADDRESS SPACE,
   7832					;	-99 -- DIC OR DPB SIZE IS INVALID.
   7833					;-
   7834		000050 			.PDP11=40.		;PDP11/40
   7835					; CONTROL IS TRANSFERRED HERE (BY DIRECTIVE DISPATCH ROUTINE) WITH THE
   7836					; DIRECTIVE ISSUING TASK'S PS, PC, & R0-R5 PUSHED ONTO THE
   7837					; KERNEL STACK, AND R0-R5 SET AS FOLLOWS:
   7838					;	R0 -- ATL NODE ADDRESS OF ISSUING TASK ('.CRTSK'),
   7839					;	R1 -- VIRTUAL ADDRESS OF DPB PLUS TWO,
   7840					;	R2 -- SIZE OF DPB (IN WORDS),
   7841					;	R3 -- TWICE THE DIRECTIVE IDENTIFICATION CODE (2*DIC),
   7842					;	R4 -- STD ENTRY ADDRESS OF ISSUING TASK, AND
   7843					;	R5 -- LAST WORD OF DPB.
   7844					;
   7845					; R0 IS LEFT UNALTERED (I.E. POINTING TO ISSUING TASK'S ATL NODE).
   7846					;
   7847					;
   7848	024536	005046 			.D.GPP::CLR	-(SP)		;PUSH ZERO
   7849	024540	005046 				CLR	-(SP)		;PUSH ZERO
DMGPP	- "GET TASK PARAMETERS"	MACRO M1113  03-APR-86 20:41  PAGE 139-1
DIRECTIVE -- GET TASK PARAMETERS

   7850	024542	016504 	000016 			MOV	A.TD(R5),R4	;FIND STD ADDRESS
   7851	024546	016502 	000006 			MOV	A.PD(R5),R2	;FIND THE TPD ADDRESS
   7852	024552	016500 	000012 			MOV	A.HA(R5),R0	;FIND THE HEADER ADDRESS
   7853	024556	016246 	000006 			MOV	T.PZ(R2),-(SP)	;SET PARTITION SIZE (TASK SIZE)
   7854	024562	012746 	000010 			MOV	#8.,-(SP)	;PUSH VECTOR TBL SIZE
   7855	024566	016046 	000106 			MOV  H.TKVA(R0),-(SP)	;PUSH VECTOR TBL ADDRESS
   7856	024572	016446 	000006 			MOV	S.FW(R4),-(SP)	;PUSH STD FLAGS WORD
   7857	024576	012746 	000050 			MOV	#.PDP11,-(SP)	;PUSH MACHINE TYPE INDICATOR
   7858	024602	016046 	000130 			MOV  H.LUT(R0),-(SP)	;PUSH NUMBER OF LUN'S
   7859	024606	013746 	001156'			MOV	.SYUIC,-(SP)	;PUSH UIC
   7860	024612	005046 				CLR	-(SP)		;PUSH RUN PRIORITY
   7861	024614	116516 	000010 			MOVB	A.RP(R5),@SP
   7862	024620	005046 				CLR	-(SP)
   7863	024622	005046 				CLR	-(SP)
   7864	024624	016246 	000002 			MOV	T.PN+2(R2),-(SP)
   7865	024630	016246 	000000 			MOV	T.PN+0(R2),-(SP)
   7866	024634	016446 	000002 			MOV	S.TN+2(R4),-(SP);PUSH TASK NAME
   7867	024640	016446 	000000 			MOV	S.TN+0(R4),-(SP)
   7868					;
   7869	024644	012702 	000020 			MOV	#16.,R2		;POP SIXTEEN WORDS FROM STACK INTO BUFFER
   7870	024650					MFPS	@R1,R1		;PICK UP HIS ADDRESS
	024650	011101 				MOV	@R1,R1
   7871									;IN ISSUING TASK'S ADDRESS SPACE.
   7872									;R5 CONTAINS VIRTUAL ADDRESS OF BUFFER.
   7873	024652				10$:
   7874	024652					MTPS	(SP)+,(R1)+
	024652	012621 				MOV	(SP)+,(R1)+
   7875	024654	077202 				SOB	R2,10$
   7876					;
   7877	024656	104401 				TRAP	DR.01		;RETURN STS=+1.
   7878					;
DMGPP	- "GET TASK PARAMETERS"	MACRO M1113  03-APR-86 20:41  PAGE 140
DIRECTIVE -- GET TASK PARAMETERS

   7880
   7881						.TITLE	DMGMP	- "GET PARTITION PARAMETERS" DIRECTIVE MODULE
   7882						.SBTTL	GET PARTITION PARAMETERS -- COPYRIGHT STATEMENT
   7883	024660					IDENT$	1,0
						.IDENT	/001000/
   7884					;
   7885					;                             COPYRIGHT (C) 1975, 1984, 1985 BY
   7886					;                     DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
   7887					;			ALL RIGHTSS RESERVED.
   7888					;       THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE  USED  AND  COPIED
   7889					;       ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
   7890					;       OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR ANY OTHER COPIES THERE-
   7891					;       OF  MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
   7892					;       NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
   7893					;
   7894					;       THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT
   7895					;       NOTICE  AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
   7896					;       CORPORATION.
   7897					;
   7898					;       DIGITAL ASSUMES NO RESPONSIBILITY FOR THE  USE  OR  RELIABILITY  OF  ITS
   7899					;       SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
   7900					;
   7901					;		MODULE: "GET PARTITION PARAMETERS" DIRECTIVE
   7902					;
   7903					;		VERSION: 01-00
   7904					;
   7905					;		AUTHOR: R. MCLEAN
   7906					;
   7907					;		DATE: 19 AUG 75
   7908					;
   7909					;
   7910					;	THIS MODULE CONTAINS:
   7911					;
   7912					;	1 -- CODE TO SERVICE THE "GET PARTITION PARAMETERS" DIRECTIVE.
   7913					;
   7914					; MACRO CALLS
   7915					;
   7916
   7917						.MCALL	MFPI,MTPI,MFPS,MTPS
DMGMP	- "GET PARTITION PARAME	MACRO M1113  03-APR-86 20:41  PAGE 141
DIRECTIVE -- GET PARTITION PARAMETERS

   7919						.SBTTL	DIRECTIVE -- GET PARTITION PARAMETERS
   7920					;+
   7921					; THE "GET PARTITION PARAMETERS" DIRECTIVE
   7922					;
   7923					; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO FILL AN INDICATED THREE WORD
   7924					; BUFFER WITH PARTITION PARAMETERS.
   7925					;
   7926					; A FOUR WORD DPB OF THE FOLLOWING FORMAT IS USED:
   7927					;
   7928					;	WD. 00 -- DIC (65.) & DPB SIZE (4.),
   7929					;	WD. 01 -- [PARTITION NAME (FIRST HALF)],
   7930					;	WD. 02 -- [PARTITION NAME (SECOND HALF)],
   7931					;	WD. 03 -- ADDRESS OF THREE WORD BUFFER.
   7932					;
   7933					; IF A PARTITION IS NOT SPECIFIED, THE PARTITION OF THE ISSUING TASK
   7934					; IS ASSUMED.
   7935					;
   7936					; THE THREE WORD BUFFER IS FILLED AS FOLLOWS:
   7937					;
   7938					;	WD. 00 -- 1/64TH BASE ADDRESS OF PARTITION,
   7939					;	WD. 01 -- 1/64TH SIZE OF PARTITION,
   7940					;	WD. 02 -- PARTITION FLAGS WORD.
   7941					;
   7942					; THE FOLLOWING STATUS IS RETURNED:
   7943					;
   7944					; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE STATUS
   7945					; OF ONE (+0).
   7946					;
   7947					; CC-C SET TO INDICATE REJECTION, AND A DIRECTIVE STATUS OF:
   7948					;
   7949					;	-02 -- INDICATED PARTITION NOT IS SYSTEM,
   7950					;
   7951					;	-98 -- PART OF DPB OR BUFFER IS OUT OF TASK'S ADDRESS SPACE,
   7952					;	-99 -- DIC OR DPB SIZE IS INVALID.
   7953					;-
   7954					; CONTROL IS TRANSFERRED HERE (BY DIRECTIVE DISPATCH ROUTINE) WITH THE
   7955					; DIRECTIVE ISSUING TASK'S PS, PC, & R0-R5 PUSHED ONTO THE
   7956					; KERNEL STACK, AND R0-R5 SET AS FOLLOWS:
   7957					;	R0 -- ATL NODE ADDRESS OF ISSUING TASK ('.CRTSK'),
   7958					;	R1 -- VIRTUAL ADDRESS OF DPB PLUS TWO,
   7959					;	R2 -- SIZE OF DPB (IN WORDS),
   7960					;	R3 -- TWICE THE DIRECTIVE IDENTIFICATION CODE (2*DIC),
   7961					;	R4 -- STD ENTRY ADDRESS OF ISSUING TASK, AND
   7962					;	R5 -- LAST WORD OF DPB.
   7963					;
   7964					; R0 IS LEFT UNALTERED (I.E. POINTING TO ISSUING TASK'S ATL NODE).
   7965					;
   7966					; R5 CONTAINS ADDRESS OF THREE WORD BUFFER.
   7967					;
   7968	024660				.D.GMP::MFPI	(R1)+		;PUSH 2-WORD PARTITION NAME (OR TWO ZEROS)
	024660	012146 				MOV	(R1)+,-(SP)
   7969	024662					MFPI	(R1)+		;ONTO KERNEL STACK (IN REVERSE ORDER)
	024662	012146 				MOV	(R1)+,-(SP)
   7970									;WAS A NAME SPECIFIED?
   7971	024664	001011 				BNE	10$		;YES -- SCAN "TPD" FOR MATCH
   7972	024666	005766 	000002 			TST	+2(SP)		;MAYBE -- CHECK FIRST HALF OF NAME
   7973	024672	001006 				BNE	10$		;YES -- SCAN "TPD" FOR MATCH
DMGMP	- "GET PARTITION PARAME	MACRO M1113  03-APR-86 20:41  PAGE 141-1
DIRECTIVE -- GET PARTITION PARAMETERS

   7974	024674	016504 	000006 			MOV	A.PD(R5),R4	;NO -- REPLACE TWO-ZEROS WITH NAME OF PARTITION
   7975	024700	016446 	000000 			MOV  T.PN+0(R4),-(SP)	;IN WHICH ISSUING TASK IS EXECUTING.
   7976	024704	016446 	000002 			MOV  T.PN+2(R4),-(SP)
   7977	024710				10$:
   7978	024710	012703 	010062'			MOV	#.TPDEA,R3	;SETUP R3 TO SCAN "TPD"
   7979	024714				20$:
   7980	024714	020327 	007602'			CMP	R3,#.TPDBA	;END OF SCAN?
   7981	024720	001001 				BNE	30$
   7982	024722	104776 				TRAP	DE.02		;YES -- RETURN STS=-02.
   7983					;
   7984	024724	162703 	000020 		30$:	SUB	#T.SZ,R3	;NO -- REDUCE R3 TO POINT TO TPD ENTRY
   7985	024730	010304 				MOV	R3,R4		;SETUP R4 TO INDEX THRU TPD ENTRY
   7986	024732	022466 	000002 			CMP	(R4)+,+2(SP)	;DOES NAME MATCH?
   7987	024736	001366 				BNE	20$		;NO -- CONTINUE SCAN
   7988	024740	022416 				CMP	(R4)+,@SP	;MAYBE -- CHECK SECOND HALF
   7989	024742	001364 				BNE	20$		;NO -- CONTINUE SCAN
   7990					;
   7991	024744	012703 	000002 			MOV	#2.,R3		;YES -- MOVE 2-WORDS TO BUF IN PREVIOUS SPACE
   7992	024750					MFPS	@R1,R1		;FIND BUFFER
	024750	011101 				MOV	@R1,R1
   7993	024752	011400 				MOV	@R4,R0		;FIND PARTITION START
   7994	024754				40$:
   7995	024754	012446 				MOV	(R4)+,-(SP)
   7997	024756	006216 				ASR	@SP
   7998	024760	006216 				ASR	@SP
   7999	024762	006216 				ASR	@SP
   8000	024764	006216 				ASR	@SP
   8001	024766	006216 				ASR	@SP
   8002	024770	006216 				ASR	@SP
   8003	024772	042716 	176000 			BIC	#176000,@SP	;MASK OFF CARRY FROM SHIFT
   8005	024776					MTPI	(R1)+
	024776	012621 				MOV	(SP)+,(R1)+
   8006	025000	077313 				SOB	R3,40$
   8007	025002	005724 				TST	(R4)+		;RETURN FLAGS WORD
   8008	025004					MTPS	(R4)+,(R1)+	;SET IN USER'S AREA
	025004	012421 				MOV	(R4)+,(R1)+
   8009					;
   8013	025006	000137 	013710'			JMP	.DR.NS		;RETURN R0 STATUS
   8015					;
DMGMP	- "GET PARTITION PARAME	MACRO M1113  03-APR-86 20:41  PAGE 142
DIRECTIVE -- GET PARTITION PARAMETERS

   8017
   8018						.TITLE	RUN	- CLOCK HANDLER
   8019						.SBTTL	CLOCK HANDLER -- COPYRIGHT STATEMENT
   8020					;
   8021					;                             COPYRIGHT (C) 1975, 1984, 1985 BY
   8022					;                     DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
   8023					;			ALL RIGHTS RESERVED.
   8024					;       THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE  USED  AND  COPIED
   8025					;       ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
   8026					;       OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR ANY OTHER COPIES THERE-
   8027					;       OF  MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
   8028					;       NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
   8029					;
   8030					;       THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT
   8031					;       NOTICE  AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
   8032					;       CORPORATION.
   8033					;
   8034					;       DIGITAL ASSUMES NO RESPONSIBILITY FOR THE  USE  OR  RELIABILITY  OF  ITS
   8035					;       SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
   8036					;
   8037					;		MODULE: "CLOCK TICK RECOGNITION"
   8038					;
   8039					;		VERSION: 07-00
   8040					;
   8041					;		AUTHOR: R. MCLEAN
   8042					;
   8043					;		DATE: 19 JUL 75
   8044					;
   8045					;
   8046					;	THIS MODULE CONTAINS:
   8047					;
   8048					;	1 -- CODE TO SERVICE CLOCK TICK RECOGNITION
   8049					;
   8050					;
   8051					; MODIFICATIONS:
   8052					;
   8053					;	NO.	DATE		PROGRAMMER	PURPOSE
   8054					;	---	----		----------	-------
   8055					;	001	04-MAR-77	R. BELANGER	CHANGE MIDNIGHT RECOGNITION
   8056					;
   8057					;	MACROS
   8058					;
   8059						.MCALL	CALL,RETURN,DIR$,.CRASH,.STKM
RUN	- CLOCK HANDLER	MACRO M1113  03-APR-86 20:41  PAGE 143
CLOCK TICK RECOGNITION

   8061						.SBTTL	CLOCK TICK RECOGNITION
   8062					;
   8063					; UPDATE TICKS
   8064					;
   8065	025012	012704 	001134'		.TICK::	MOV	#.TICKS,R4	;POINT TO BASE OF TIME PARAMETERS
   8066	025016	005214 				INC	@R4		;UPDATE TICKS
   8067	025020	023714 	001154'			CMP	.TKPS,@R4	;1 SEC YET?
   8068	025024	101020 				BHI	3$		;NO DONE
   8069					;
   8070					; TICKS OVERFLOWED, UPDATE SECONDS
   8071					;
   8072	025026	005024 				CLR	(R4)+		;CLEAR FRACTIONS
   8073	025030	000337 	001152'			SWAB	.SSM+2		;FIND IF TIME TO UPDATE SSM
   8074	025034	001414 				BEQ	3$		;NO -- CONTINUE
   8075	025036	005237 	001150'			INC	.SSM		;UPDATE SECONDS SINCE MIDNIGHT
   8076	025042	022737 	124277 	001150'		CMP	#30.*60.*24.-1,.SSM ;MIDNIGHT?
   8077	025050	101006 				BHI	3$		;NO, CAN INCREMENT
   8078	025052	006337 	001136'			ASL	.CLKSW		;GIVE THE 10 TIME TO CHANGE IT'S DATE -- WE DON'T
   8079									; +++001 RREMOVED 10. INSTRUCTIONS
   8080	025056	001003 				BNE	3$		; +++001 NO -- GO ON
   8081	025060	012737 	177777 	001136'		MOV	#-1,.CLKSW	; +++001 YES -- FLAG NULL TASK TO REQUEST
   8082									; +++001 TIME-OF-DAY TASK
   8083					;
   8084					;INCREMENT IN NO OVERFLOW CASES - SECONDS OR MINUTES
   8085					;
   8086	025066				3$:
   8087					;
   8088					; SET UP FOR LINE FREQ. SERVICE
   8089					;
   8090					;
   8091	025066	012704 	002376'		4$:	MOV	#.CLKBA,R4	;DELETE THE ENTRY OR RESCHEDULE IT
   8092	025072	012405 			10$:	MOV	(R4)+,R5	;NO -- AN ENTRY HERE?
   8093	025074	001435 				BEQ	40$		;NO -- GO
   8094	025076	005724 				TST	(R4)+		;OVER AST ADDRESS
   8095	025100	005324 				DEC	(R4)+		;YES --DECREMENT THE COUNT
   8096	025102	001403 				BEQ	30$		;END OF COUNT SET EVENT FLAG
   8097	025104	062704 	000006 		20$:	ADD	#6,R4		;NO -- LOOK AT NEXT ENTRY
   8098	025110	000770 				BR	10$
   8099					;
   8100	025112				30$:	CALL	..DSEV		 ;DECLARE A SIG EVENT
	025112	004737 	045264'			JSR	PC,..DSEV
   8101	025116	012464 	177774 			MOV	(R4)+,-4(R4)	;RESET RESCHEDULE INTERVAL
   8102	025122	052434 				BIS	(R4)+,@(R4)+	;DO THE SETTING OF THE EVENT FLAG
   8103	025124	010446 				MOV	R4,-(SP)	;SAVE R4
   8104	025126	016404 	177766 			MOV	-12(R4),R4	;FIND AST ADDRESS
   8105	025132	001405 				BEQ	35$		;NONE -- FORGET IT
   8106	025134					CALL	.STAST		;START AST
	025134	004737 	016160'			JSR	PC,.STAST
   8107	025140	103002 				BCC	35$		;GOT IT -- CONTINUE
   8108	025142	010437 	001050'			MOV	R4,.CKASS	;NOT QUITE -- TASK IS CURRENT GET AT ..INTX
   8109	025146	012604 			35$:	MOV	(SP)+,R4
   8110	025150	005764 	177772 			TST	-6(R4)		;RESCHEDULE?
   8111	025154	001346 				BNE	10$		;NO -- DO NEXT ENTRY
   8112	025156	162704 	000014 			SUB	#C.SZ,R4	;BACK UP POINTER
   8113	025162					CALL	.CKDEL		;DELETE ENTRY
	025162	004737 	044406'			JSR	PC,.CKDEL
   8114	025166	000741 				BR	10$		;AND TRY AGAIN
RUN	- CLOCK HANDLER	MACRO M1113  03-APR-86 20:41  PAGE 143-1
CLOCK TICK RECOGNITION

   8115					;
   8116	025170	105337 	001015'		40$:	DECB	.SERFG+1	;COUNT DOWN CLOCK COUNTER
   8117	025174	001306 				BNE	.TICK		;AND GO DO ANOTHER IF WE MISSED ONE
   8118	025176	012604 				MOV	(SP)+,R4	;RESTORE REGISTERS
   8119	025200	012605 				MOV	(SP)+,R5
   8120	025202	053737 	001016'	001014'		BIS	.SEWFL,.SERFG	;SET SIG EVENT FLAG IF NECESSARYH
   8121	025210	005037 	001016'			CLR	.SEWFL		;AND CLEAR FLAG
   8122	025214	000137 	015062'			JMP	..INTX		;AND RETURN TO INTERRUPT EXIT
RUN	- CLOCK HANDLER	MACRO M1113  03-APR-86 20:41  PAGE 144
CLOCK TICK RECOGNITION

   8124
   8125
   8126						.TITLE	QPRDRV	-- QUEUED PROTOCOL DRIVER FOR RSX-20F
   8127						.SBTTL	QUEUED PROTOCOL DRIVER -- COPYRIGHT STATEMENT
   8128	025220					IDENT$	15,14,RSX$$F
						.IDENT	/A15140/
   8129
   8130					;
   8131					;                             COPYRIGHT (C) 1975, 1984, 1985 BY
   8132					;                     DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
   8133					;				ALL RIGHTS RESERVED
   8134					;       THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE  USED  AND  COPIED
   8135					;       ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
   8136					;       OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR ANY OTHER COPIES THERE-
   8137					;       OF  MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
   8138					;       NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
   8139					;
   8140					;       THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT
   8141					;       NOTICE  AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
   8142					;       CORPORATION.
   8143					;
   8144					;       DIGITAL ASSUMES NO RESPONSIBILITY FOR THE  USE  OR  RELIABILITY  OF  ITS
   8145					;       SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
   8146					;
   8147					;
   8148					;		MODULE: QUEUED PROTOCOL DRIVER FOR RSX-20F
   8149					;
   8150					;		VERSION: V15-14
   8151					;
   8152					;		AUTHOR: R. MCLEAN
   8153					;
   8154					;		DATE: 19 JUL 75
   8155					;
   8156					;	THIS MODULE CONTAINS:
   8157					;
   8158					;	1 -- QUEUED PROTOCOL SERVICE
   8159					;
   8160					; MODIFICATIONS:
   8161					;
   8162					;	NO.	DATE		PROGRAMMER	PURPOSE
   8163					;	---	----		----------	-------
   8164					;	001	21-OCT-76	A. PECKHAM	INSERT CODING TO COUNT
   8165					;						DOORBELLS.
   8166					;	002	08-NOV-76	K. RETI		ADD SUPPRESS SEND-ALL
   8167					;				R. BELANGER	CODE.
   8168					;	003	03-FEB-77	R. BELANGER	ADDED GENERALIZED DL-11E
   8169					;						SUPPORT
   8170					;	004	10-FEB-77	A. PECKHAM	KEEP TO-11 QUEUE COUNT
   8171					;						STRAIGHT
   8172					;	005	16-FEB-77	A. PECKHAM	SET SPEED OF REMOTE LINES
   8173					;	006	07-MAR-77	A. PECKHAM	REORGANIZE SENDALL
   8174					;	007	08-MAR-77	A. PECKHAM	FIX "XOFF" FOR CTY
   8175					;	008	14-MAR-77	R. BELANGER	CONDITIONALLY REMOVE
   8176					;						SUPPORT FOR UNUSED DTE-20
   8177					;						DIRECTIVES
   8178					;	009	31-MAY-77	R. BELANGER	ADD SUPPORT FOR KLINIK
   8179					;						PARAMETER PASSING
QPRDRV	-- QUEUED PROTOCOL DRIV	MACRO M1113  03-APR-86 20:41  PAGE 144-1
QUEUED PROTOCOL DRIVER -- COPYRIGHT STATEMENT

   8180					;	010	15-JUL-77	R. BELANGER	ADD AUTO-BAUD SUPPORT
   8181					;	011	25-JUL-77	R. BELANGER	FIX BUG IN INITIAL STATUS
   8182					;	012	25-AUG-77	R. BELANGER	ADD KL POWERFAIL SUPPORT
   8183					;	013	02-SEP-77	R. BELANGER	XON/XOFF BUG FIX
   8184					;   TCO 4.2067	30-OCT-78	R. BELANGER	FIX XON TO ACCOUNT FOR NULL
   8185					;						BYTE IN THREAD PACKET
   8186					;   TCO 4.2096	30-NOV-78	R. BELANGER	REMOVE EXTRANEOUS CODE
   8187					;						FROM "XON" PROCESSOR
   8188					;   TCO 4.2181	01-FEB-79	R. BELANGER	ADD ENABLE/DISABLE XON/XOFF
   8189					;						MESSAGE.
   8190					;						MOVE DEVICE DEPENDENT XON/XOFF
   8191					;						PROCESSING TO TERMINAL DRIVER.
   8192					;   TCO 4.2216	16-MAR-79	R. BELANGER	ALLOW DTE-20 TO RUN AT FULL SPEED
   8193					;   TCO 4.2246	16-MAY-79	R. BELANGER	ELIMINATE RACE CONDITION IN SENDALL
   8194					;   TCO 4.2284	25-MAY-79	R. BELANGER	ADD NEW MODEM CONTROL SUPPORT
   8195					;   TCO 4.2524	01-OCT-79	R. BELANGER	FLUSH OUPUT QUEUE WHEN LINE SPEED SET TO 0
   8196					;   TCO 5.1004	10-OCT-79	R. BELANGER	ADD NON-CONTIGUOUS DEVICE SUPPORT
   8197					;   TCO 5.1015	25-OCT-79	R. BELANGER	ADD NEW TERMINAL INPUT CONTROL
   8198					;   TCO 5.1016	01-NOV-79	R. BELANGER	ADD BREAK-THROUGH WRITE
   8199					;  TCO 4.1.1035	16-NOV-79	R. BELANGER	ADD QUEUE ARBITRATION MECHANISM
   8200					;						PROCESS PACKETS INIBITTED
   8201					;  TCO 4.1.1091	12-FEB-80	R. BELANGER	FIX MISSING DM-11/BB PROBLEM
   8202					;  TCO 4.1.1092	25-FEB-80	R. BELANGER	LOCAL TERMINAL INPUT CONTROL
   8203					;  TCO 4.1.1104	05-MAR-80	R. BELANGER	SEND KEEP-ALIVE FROM DTE SERVICE
   8204					;  TCO 4.1.1105	11-MAR-80	R. BELANGER	CHANGE "EF.PR1" RECOGNITION
   8205					;  TCO 4.1.1121	19-MAR-80	R. BELANGER	BREAK QUEUED PROTOCOL DRIVER AND
   8206					;						DTE-20 DRIVER INTO SEPARATE MODULES
   8207					;  TCO 4.1.1137	05-APR-80	R. BELANGER	LIMIT TO-10 QUEUE NODE SIZE TO 60 BYTES
   8208					;  TCO 5.1127	08-AUG-80	S. LEAPLINE	ADD HOST DEBUG MODE MESSAGE
   8209					;  TCO 5.1248	26-JAN-81	S. LEAPLINE	SAVE R0 FOR XOFF/XON CODE
   8210					;  TCO 5.1249	26-JAN-81	S. LEAPLINE	FIX BUG IN SETSPD, HIT WHEN
   8211					;						GIVEN AN INCORRECT LINE SPEED
   8212					;  	014	18-AUG-81	S. LEAPLINE	REMOVE WSIG$S IN SENDALL
   8213					;
   8214					; THE FOLLOWING CHANGES ARE POST V14-45
   8215					;
   8216					;18-NOV-82  TCO 6.1359	D. WEAVER
   8217					;	XOFF BIT GETS CLEARED ON QUEUED PROTOCOL MESSAGE TO SET/RESET
   8218					;	RECEIVE SYSTEM-MESSAGES BIT.
   8219					;29-MAR-83  TCO 6.1567	D. WEAVER
   8220					;	WHEN SETTING A LINE TO AUTOBAUD, SET ITS INTITIAL SPEED TO 2400 BAUD
   8221					;	RATHER THAN 300 BAUD FOR HIGH SPEED AUTO-BAUD.
   8222					;29-APR-83  TCO 6.1567	D. WEAVER
   8223					;	WHEN SETTING A LINE TO AUTOBAUD, ALSO PUT IT IN AUTOBAUD WAIT.
   8224					;11-JUL-83  TCO 6.1723	D. WEAVER
   8225					;	TIME OUT LOW SPEED AUTOBAUD DETECT.  CHANGE REFERENCES OF TT.FER
   8226					;	TO TT.BRK.
   8227					;12-AUG-83  TCO 6.1771	D. WEAVER
   8228					;	SUPPORT QUEUED PROTOCOL FUNCTION DIALUP FOR AUTO-DIALERS.
   8229					;18-JUN-84  TCO ******  M. RUDENKO
   8230					;	ADD DISK DRIVE SERIAL NUMBER REPORT
   8231					;
QPRDRV	-- QUEUED PROTOCOL DRIV	MACRO M1113  03-APR-86 20:41  PAGE 145
QUEUED PROTOCOL DRIVER -- COPYRIGHT STATEMENT

   8233					;
   8234					;	MACRO DEFINITIONS
   8235					;
   8236
   8237						.MCALL	RQST$,WTSE$S,$DEF,WSIG$S,.INH5,.ENB5
   8238						.MCALL	.DQPEN,MRKT$,WTLO$,WTSE$,.CRASH,CALL,RETURN,.STKM,DIR$,.INH6,.ENB6
   8239
   8240	025220					$DEF
   8241
   8242					;
   8243					;	LOCAL MACROS
   8244					;
   8245					;	MACRO TO ENABLE TASK SWITCHING
   8246					;
   8247						.MACRO	.ENBT
   8248						 MOV	@#PS,-(SP)
   8249						 BIC	#PRI7,@#PS
   8250						.ENDM
   8251					;
   8252					;	MACRO TO DISABLE TASK SWITCHING
   8253					;
   8254						.MACRO	.INHT
   8255						 MOV	(SP)+,@#PS
   8256						.ENDM
QPRDRV	-- QUEUED PROTOCOL DRIV	MACRO M1113  03-APR-86 20:41  PAGE 146
QUEUED PROTOCOL DRIVER -- COPYRIGHT STATEMENT

   8258					;
   8259					;	DATA AREAS
   8260					;
   8261		000060 				E.OPSZ==60	; [4.1.1137] OPTIMAL SIZE FOR A TO 10 QUEUE
   8262					;
   8263					; LOCAL DEFINITIONS FOR DTE20 TASK
   8264					;
   8265		000100 				EF.TED==100	; TO ELEVEN DONE EVENT FLAG
   8266					;
   8267					; TO ELEVEN QUEUE ENTRY
   8268					;
   8269		000000 				E.FP==0		; FORWARD POINTER
   8270		000002 				E.LS==2		; LIST SIZE
   8271		000004 				E.FN==4		; FUNCTION CODE
   8272		000006 				E.DV==6		; DEVICE CODE
   8273		000010 				E.FW==10	; FUNCTION FIRST WORD
   8274					;
   8275					;	FUNCTION CODE DEFINITIONS
   8276					;
   8277		000001 				BC.RQD==1	; REQUEST DEVICES
   8278		000002 				BC.HAD==2	; HERE ARE DEVICES
   8279		000003 				BC.STR==3	; STRING DATA
   8280		000004 				BC.LNC==4	; LINE/CHARACTER DATA
   8281		000005 				BC.RDS==5	; RETURN DEVICE STATUS
   8282		000006 				BC.SDS==6	; SET DEVICE STATUS
   8283		000007 				BC.HDS==7	; HERE IS DEVICE STATUS
   8284		000010 				BC.DES==10	; DEVICE ERROR STATUS
   8285		000011 				BC.RTD==11	; RETURN TIME OF DAY
   8286		000012 				BC.HTD==12	; HERE IS TIME OF DAY
   8287		000013 				BC.FOD==13	; FLUSH OUTPUT DEVICE QUEUE
   8288		000014 				BC.SNA==14	; SEND ALL
   8289		000015 				BC.TDU==15	; DEVICE DIAL UP
   8290		000016 				BC.THU==16	; DEVICE HANG UP
   8291		000017 				BC.SAK==17	; ACKNOWLEDGE DEVICE DONE
   8292		000020 				BC.XOF==20	; X-OFF (TTY ONLY)
   8293		000021 				BC.XON==21	; X-ON (TTY ONLY)
   8294		000022 				BC.STS==22	; SET TTY SPEED
   8295		000023 				BC.SLA==23	; SET LINE ALLOCATION
   8296		000024 				BC.BTP==24	; 11 REBOOT WORD
   8297		000025 				BC.AKA==25	; ACK ALL
   8298		000026 				BC.SPT==26	; START/STOP LINE
   8299		000027 				BC.EDR==27	; ENABLE/DISABLE REMOTES
   8300		000030 				BC.LDR==30	; LOAD LP RAM
   8301		000031 				BC.LDV==31	; LOAD LP VFU
   8302		000032 				BC.NSA==32	; SUPPRESS SEND-ALL FUNCTION (SET OR CLEAR BIT)
   8303		000033 				BC.SKP==33	; SEND KLINIK PARAMETERS
   8304		000034 				BC.XEN==34	; [4.2181] ENABLE/DISABLE XON/XOFF
   8305		000035 				BC.BTW==35	; [5.1016] BREAK-THROUGH WRITE
   8306		000036 				BC.DEB==36	; [5.1127] HOST DEBUG MODE
   8307		000037 				BC.NDM==37	; [5.1127] CLEAR HOST DEBUG MODE
   8308		000040 				BC.HSN==40	; [******] HERE ARE SERIAL NUMBERS
   8309		000041 				BC.FNM==41	; [5.1016] 1 GREATER THAN MAX FUNCTION
   8310					;
   8311					;	DPB'S
   8312					;
   8313
   8314	025220				WTLODT:
QPRDRV	-- QUEUED PROTOCOL DRIV	MACRO M1113  03-APR-86 20:41  PAGE 146-1
QUEUED PROTOCOL DRIVER -- COPYRIGHT STATEMENT

   8315	025220					WTLO$	1,EF.TED	; WAIT FOR TEN DONE
	025220	   053 	   003 			.BYTE	43.,3
	025222	000001 				.WORD	1
	025224	000100 				.WORD	EF.TED
   8316
   8317	025226				.RQSPD::			; ALSO CALLED FROM "TTYDRR"
   8318	025226					RQST$	SETSPD
	025226	   013 	   007 			.BYTE	11.,7
	025230	073634 	074504 			.RAD50	/SETSPD/
	025234	000000 	000000 			.WORD	0,0
	025240	000000 				.WORD
	025242	   000 	   000 			.BYTE	,
   8319
   8320					;
   8321					;	LOCAL DATA
   8322					;
   8323
   8324	025244				SPDTBL::
   8325	025244	000000 				.WORD	0		; ZERO BAUD
   8326	025246	000062 				.WORD	50.		; 50 BAUD
   8327	025250	000113 				.WORD	75.		; ETC ......
   8328	025252	000156 				.WORD	110.
   8329	025254	000206 				.WORD	134.
   8330	025256	000226 				.WORD	150.
   8331	025260	000310 				.WORD	200.
   8332	025262	000454 				.WORD	300.
   8333	025264	001130 				.WORD	600.
   8334	025266	002260 				.WORD	1200.
   8335	025270	003410 				.WORD	1800.
   8336	025272	004540 				.WORD	2400.
   8337	025274	011300 				.WORD	4800.
   8338	025276	022600 				.WORD	9600.
   8339	025300	000001 				.WORD	1.
   8340	025302	000002 				.WORD	2.
   8341
   8342		000020 			SPDTBZ=.-SPDTBL/2
QPRDRV	-- QUEUED PROTOCOL DRIV	MACRO M1113  03-APR-86 20:41  PAGE 147
QUEUED PROTOCOL DRIVER -- PROTOCOL PACKET SERVICE DISPATCH

   8344						.SBTTL	QUEUED PROTOCOL DRIVER -- PROTOCOL PACKET SERVICE DISPATCH
   8345
   8346	025304				DTEHD::
   8347	025304					.STKM	0,0,0,0,0,0,0,QPRDTE,174000,DTESP
	025352	000000 	000000 	000000 		.WORD	0,0,0,0
	025360	000000
	025400	174000 	025610'	025564'		.WORD	174000,QPRDTE,DTESP
	025434	000005 				.WORD	5
	025436	010262'				.WORD	TTPEN
	025440	000000 				.WORD	0
	025442	000000 				.WORD	0
	025444	000000 				.WORD	0
	025446	000000 				.WORD	0
	025450	000000 				.WORD	0
	025452	000000 				.WORD	0
	025454	000000 				.WORD	0
	025456	000000 				.WORD	0
	025460	000000 				.WORD	0
	025462	000000 				.WORD	0
	025564	000000 				.WORD	0
	025566	000000 				.WORD	0
	025570	000000 				.WORD	0
	025572	000000 				.WORD	0
	025574	000000 				.WORD	0
	025576	000000 				.WORD	0
	025600	025610'				.WORD	QPRDTE
	025602	174000 				.WORD	174000
   8348
   8349						.ENABL	LSB
   8350
   8351	025604				QPRDTC::
   8352	025604					.ENB6			;;; [4.1.1035] ALLOW INTERRUPTS
	025604	012637 	177776 			MOV	(SP)+,@#PS
   8353	025610				QPRDTE::
   8354	025610					DIR$	#WTLODT		; WAIT FOR TEN DONE
	025610	012746 	025220'			MOV	#WTLODT,-(SP)
	025614	104375 				EMT	375
   8355	025616				10$:
   8356	025616					.INH6			; INHIBIT INTERRUPTS
	025616	013746 	177776 			MOV	@#PS,-(SP)
	025622	112737 	000300 	177776 		MOVB	#300,@#PS
   8357	025630	013700 	001006'			MOV	.CRTSK,R0	;;; POINT TO CURRENT TASK
   8358	025634	005060 	000020 			CLR	A.EF(R0)	;;; AND CLEAR THE EVENT FLAGS.
   8359	025640				20$:
   8360	025640	013704 	001342'			MOV	TO11Q,R4	;;; PICK IT FROM THE QUEUE
   8361	025644	001757 				BEQ	QPRDTC		;;; NO QUEUE -- BACK TO SLEEP
   8362	025646	011437 	001342'			MOV	@R4,TO11Q	;;; SET UP THE NEXT LISTHEAD OR ZERO
   8363	025652	010400 				MOV	R4,R0		;;; SET IN R0 ALSO
   8364	025654	116401 	000004 			MOVB	E.FN(R4),R1	;;; FIND THE FUNCTION CODE OF THE REQUEST
   8365	025660	006301 				ASL	R1		;;; MAKE IT 2* FUNCTION
   8366	025662	000171 	025732'			JMP	@DFTBL-2(R1)	;;; GO TO THE CORRECT ROUTINE
   8367						;
   8368	025666				QPRDTL:
   8369	025666					.ENB6			;;; [4.1.1035] ALLOW INTERRUPTS
	025666	012637 	177776 			MOV	(SP)+,@#PS
   8370	025672	000240 				NOP			; [4.1.1035] LET AN INTERRUPT HAPPEN
   8371	025674	005737 	001012'			TST	.COMEF+2	; [4.1.1105] ARE WE STILL IN PRIMARY PROTOCOL??
QPRDRV	-- QUEUED PROTOCOL DRIV	MACRO M1113  03-APR-86 20:41  PAGE 147-1
QUEUED PROTOCOL DRIVER -- PROTOCOL PACKET SERVICE DISPATCH

   8372	025700	100346 				BPL	10$		; [4.1.1105] NO -- CONTINUE EMPTYING TO 11 QUEUE
   8373	025702					.INH6			; [4.1.1035] YES -- DISALLOW INTERRUPTS
	025702	013746 	177776 			MOV	@#PS,-(SP)
	025706	112737 	000300 	177776 		MOVB	#300,@#PS
   8374	025714	013704 	001334'			MOV	TO10Q,R4	;;; [4.1.1035] POINT TO THE TO 10 QUEUE
   8375	025720	022704 	001334'			CMP	#TO10Q,R4	;;; [4.1.1035] ANYTHING THERE??
   8376	025724	001745 				BEQ	20$		;;; [4.1.1035] NO -- GO ON
   8377	025726					CALL	.STTNF		;;; [4.1.1121] YES -- FORCE THE START
	025726	004737 	032206'			JSR	PC,.STTNF
   8378	025732	000742 				BR	20$		;;; [4.1.1035] UNLOAD THE REST OF THE TO 11 QUEUE
   8379						;
   8380
   8381						.DSABL	LSB
QPRDRV	-- QUEUED PROTOCOL DRIV	MACRO M1113  03-APR-86 20:41  PAGE 148
QUEUED PROTOCOL DRIVER -- DISPATCH TABLE

   8383						.SBTTL	QUEUED PROTOCOL DRIVER -- DISPATCH TABLE
   8384
   8385	025734				DFTBL::
   8386	025734	026766'				HICTS			; (01) HERE IS INITIAL STATUS
   8387	025736	026034'				UNRGFN			; (02) UNRECGONIZED FUNCTION
   8388	025740	027236'				STRDAT			; (03) STRING DATA FOR DEVICE
   8389	025742	027302'				LINCHR			; (04) LINE NUMBER CHARACTER DATA FOR DEVICE
   8390	025744	027236'				RTDVST			; (05) RETURN DEVICE STATUS
   8391	025746	027236'				STDVST			; (06) SET DEVICE STATUS FOR DEVICE
   8392	025750	027236'				HIDVST			; (07) HERE IS DEVICE STATUS
   8393	025752	026034'				UNRGFN			; (10) ERROR DEVICE STATUS
   8394	025754	027212'				RTNTOD			; (11) RETURN TIME OF DAY
   8395	025756	027444'				RETTOD			; (12) SEND TIME OF DAY
   8396	025760	027502'				FLDVOT			; (13) FLUSH DEVICE OUTPUT QUEUE
   8397	025762	027616'				SNDALL			; (14) SEND ALL TTY'S
   8398	025764	026130'				DIALUP			; (15) DIAL UP
   8399	025766	026176'				HANGUP			; (16) HANG UP
   8400	025770	026344'				ACKNOW			; (17) ACKNOWLEDGE END OF DATA IN BUFFER
   8401	025772	026730'				XOFF			; (20) XOFF (TTY)
   8402	025774	026744'				XON			; (21) XON (TTY)
   8403	025776	026376'				SETSPD			; (22) SET TTY SPEED
   8404	026000	026356'				SETLIN			; (23) SET LINE ALLOCATION
   8405	026002	026034'				UNRGFN			; (24) SET RELOAD PARAMETERS
   8406	026004	026762'				DEAND1			; (25) ACK ALL
   8407	026006	026604'				STPLIN			; (26) STOP LINE
   8408	026010	026042'				EDRMT			; (27) ENABLE/DISABLE REMOTE LINES
   8409	026012	027236'				LDLPR			; (30) LOAD LP RAM
   8410	026014	027236'				LDLPV			; (31) LOAD LP VFU
   8411	026016	026060'				NOSNDA			; (32) SET OR CLEAR "SUPPRESS SEND-ALL" BIT
   8412	026020	027540'				RCVKLP			; (33) RECIEVE KLINIK PARAMETERS FROM KL
   8413	026022	026052'				ENBXOF			; (34) ENABLE/DISABLE XOFF PROCESSING
   8414	026024	026702'				BTWCHR			; (35) BREAK-THROUGH WRITE
   8415	026026	027600'				SETDEB			; (36) HOST DEBUG MODE
   8416	026030	027610'				CLRDEB			; (37) CLEAR HOST DEBUG MODE
   8417	026032	027120'				HISN			; [**] (40) HERE IS SERIAL NUMBERS
   8418
   8419		000100 			DFTSZ=.-DFTBL			; LEGAL FUNCTIONS COUNT *2
QPRDRV	-- QUEUED PROTOCOL DRIV	MACRO M1113  03-APR-86 20:41  PAGE 149
QUEUED PROTOCOL DRIVER -- UNRECOGNIZED FUNCTION

   8421						.SBTTL	QUEUED PROTOCOL DRIVER -- UNRECOGNIZED FUNCTION
   8422
   8423					;
   8424					;	UNRGFN -- UNRECOGNIZED FUNCTION
   8425					;
   8426
   8427	026034				UNRGFN::
   8428	026034					.CRASH	ILF		;;; ILF -- ILLEGAL FUNCTION
	026034	000004 				IOT
	026036	   111 	   114 	   106 		.ASCIZ	/ILF/
	026041	   000
   8429						;
QPRDRV	-- QUEUED PROTOCOL DRIV	MACRO M1113  03-APR-86 20:41  PAGE 150
QUEUED PROTOCOL DRIVER -- ENABLE/DISABLE REMOTE TERMINALS

   8431						.SBTTL	QUEUED PROTOCOL DRIVER -- ENABLE/DISABLE REMOTE TERMINALS
   8432
   8433					;
   8434					;	ENABLE/DISABLE REMOTE TERMINALS -- FUNCTION 27
   8435					;
   8436
   8437	026042				EDRMT::
   8438	026042	016037 	000010 	002604'		MOV	E.FW(R0),.INHDM	;;; ENABLE/DISABLE DM-11/BB'S
   8439	026050	000426 				BR	DEAND3		;;; AND QUIT
   8440						;
QPRDRV	-- QUEUED PROTOCOL DRIV	MACRO M1113  03-APR-86 20:41  PAGE 151
QUEUED PROTOCOL DRIVER -- ENABLE/DISABLE SENDALL AND XOFF PROC

   8442						.SBTTL QUEUED PROTOCOL DRIVER -- ENABLE/DISABLE SENDALL AND XOFF PROCESSING
   8443
   8444					;
   8445					;	ENBXOF FUNCTION (ENABLE/DISABLE XOFF PROCESSING) FUNCTION 34
   8446					;
   8447
   8448						.ENABL	LSB
   8449
   8450	026052				ENBXOF::
   8451	026052	012705 	000020 			MOV	#TT.XEN,R5	  ; SET UP STATUS BIT
   8452	026056	000402 				BR	10$		  ; DO COMMON CODE
   8453						;
QPRDRV	-- QUEUED PROTOCOL DRIV	MACRO M1113  03-APR-86 20:41  PAGE 152
QUEUED PROTOCOL DRIVER -- ENABLE/DISABLE SENDALLS

   8455						.SBTTL	QUEUED PROTOCOL DRIVER -- ENABLE/DISABLE SENDALLS
   8456
   8457					;
   8458					;	NOSNDA FUNCTION (SET/CLEAR SUPPRESS SEND-ALL BIT) FUNCTION 32
   8459					;
   8460
   8461	026060				NOSNDA::			  ; SET OR CLEAR BIT TO SUPPRESS SEND-ALLS
   8462	026060	012705 	000400 			MOV	#TT.NSA,R5	  ; SET UP STATUS BIT
   8463	026064				10$:
   8464	026064	000360 	000010 			SWAB	E.FW(R0)	  ; SET UP DEVICE CODE FOR "FDVNMM"
   8465	026070					CALL	FDVNMM		  ; GET R2 TO POINT TO BLOCK FOR THIS LINE
	026070	004737 	030266'			JSR	PC,FDVNMM
   8466	026074	040562 	000006 			BIC	R5,STSW1(R2)	  ; ASSUME A CLEAR
   8467	026100	033705 	000020 			BIT	TT.XEN,R5	  ; ARE WE ENABLING/DISABLING XOFF
   8468	026104	001403 				BEQ	20$		  ; NO,
   8469	026106	042762 	000200 	000006 		BIC	#TT.XOF,STSW1(R2) ; YES, ALWAYS CLEAR XOFF BIT
   8470	026114	105760 	000010 		20$:	TSTB	E.FW(R0)	  ; TEST ARGUMENT BYTE
   8471	026120	001525 				BEQ	DEAND2		  ; IF .NE. 0,
   8472	026122	050562 	000006 			BIS	R5,STSW1(R2)	  ; THEN SET BIT.
   8473	026126				DEAND3:
   8474	026126	000522 				BR	DEAND2		  ; FREE THE NODE
   8475						;
   8476
   8477						.DSABL	LSB
QPRDRV	-- QUEUED PROTOCOL DRIV	MACRO M1113  03-APR-86 20:41  PAGE 153
QUEUED PROTOCOL -- DIALUP

   8479						.SBTTL	QUEUED PROTOCOL -- DIALUP
   8480
   8481					;
   8482					;	DIALUP -- FUNCTION 15
   8483					;
   8484
   8485	026130				DIALUP::
   8486	026130					CALL	FDVNMM		; FIND DEVICE
	026130	004737 	030266'			JSR	PC,FDVNMM
   8487	026134	010205 				MOV	R2,R5		; SETUP TABLE ADDRESS
   8488	026136	022705 	003054'			CMP	#DHTBL,R5	; IS IT A DH-11
   8489	026142	101114 				BHI	DEAND2		; NO -- IGNORE DL11
   8490	026144	005001 				CLR	R1		; YES -- FIND THE LINE NUMBER
   8491	026146	156001 	000011 			BISB	E.FW+1(R0),R1	; SO
   8492	026152	162701 	000005 			SUB	#DLCNT,R1	; REMOVE DL-11'S
   8493	026156	042701 	177760 			BIC	#177760,R1	; MAKE IT A UNIT NUMBER
   8494	026162					CALL	FNDDM		; FIND THE DM-11/BB ADDRESS
	026162	004737 	030204'			JSR	PC,FNDDM
   8495	026166	001502 				BEQ	DEAND2		; NOT THERE -- IGNORE
   8496	026170					CALL	.DMUHU		; RAISE DTR
	026170	004737 	041326'			JSR	PC,.DMUHU
   8497	026174	000477 				BR	DEAND2		; FREE THE NODE
QPRDRV	-- QUEUED PROTOCOL DRIV	MACRO M1113  03-APR-86 20:41  PAGE 154
QUEUED PROTOCOL DRIVER -- HANGUP

   8499						.SBTTL	QUEUED PROTOCOL DRIVER -- HANGUP
   8500
   8501					;
   8502					;	HANGUP -- FUNCTION 16
   8503					;
   8504
   8505	026176				HANGUP::
   8506	026176					CALL	FDVNMM		  ; FIND DEVICE
	026176	004737 	030266'			JSR	PC,FDVNMM
   8507	026202	010205 				MOV	R2,R5		  ; SET UP TABLE ADDRESS
   8508	026204	032765 	000002 	000006 		BIT	#TT.CTY,STSW1(R5) ; IS THIS A CTY??
   8509	026212	001411 				BEQ	10$		  ; NO -- GO ON
   8510	026214	105737 	001234'			TSTB	.KLNSW+0	  ; YES -- IS KLINIK ACTIVE??
   8511	026220	003406 				BLE	10$		  ; NOT THAT WE CARE
   8512	026222	010546 				MOV	R5,-(SP)	  ; YES -- SAVE POINTER
   8513					;
   8514					; HERE TO HANG UP THE KLINIK LINE
   8515					;
   8516	026224	013705 	002644'			MOV	KLNPTR,R5	  ; POINT TO KLINIK LINE
   8517	026230					CALL	.DLHUP		  ; HANG UP THE KLINIK LINE
	026230	004737 	041376'			JSR	PC,.DLHUP
   8518	026234	012605 				MOV	(SP)+,R5	  ; RESTORE POINTER
   8519	026236				10$:
   8520	026236	022705 	003054'			CMP	#DHTBL,R5	  ; IS THIS A DH-11??
   8521	026242	101035 				BHI	20$		  ; NO -- DL-11'S ARE A SPECIAL CASE
   8522					;
   8523					; HERE TO HANG UP A DM-11/BB
   8524					;
   8525	026244	005001 				CLR	R1		  ; YES -- FIND THE LINE NUMBER
   8526	026246	156001 	000011 			BISB	E.FW+1(R0),R1	  ; SO
   8527	026252	162701 	000005 			SUB	#DLCNT,R1	  ; REMOVE DL-11'S
   8528	026256	042701 	177760 			BIC	#177760,R1	  ; MAKE IT A UNIT NUMBER
   8529	026262					CALL	FNDDM		  ; FIND THE DM-11/BB ADDRESS
	026262	004737 	030204'			JSR	PC,FNDDM
   8530	026266	001442 				BEQ	DEAND2		  ; NOT THERE -- IGNORE
   8531	026270					CALL	.DMHUP		  ; HANGUP
	026270	004737 	041276'			JSR	PC,.DMHUP
   8532	026274	032765 	000040 	000006 		BIT	#TT.ABL,STSW1(R5) ; IS THIS AN AUTO-BAUD LINE?
   8533	026302	001434 				BEQ	DEAND2		  ; NO -- GO ON
   8534	026304	042765 	030000 	000006 		BIC	#TT.LSP!TT.IGN,STSW1(R5) ; SET HIGH SPEED AUTOBAUD
   8535	026312	032765 	000100 	000006 		BIT	#TT.RMT,STSW1(R5) ; REMOTE LINE?
   8536	026320	001003 				BNE	15$		  ; YES, LET THE MODEM CODE SET AUTOBAUD
   8537	026322	052765 	000010 	000006 		BIS	#TT.ABW,STSW1(R5) ; NO, PUT INTO AUTOBAUD WAIT.
   8538	026330				15$:
   8539	026330					CALL	.DHSPR		  ; YES RESET LINE SPEED TO DEFAULT
	026330	004737 	040602'			JSR	PC,.DHSPR
   8540	026334	000417 				BR	DEAND2		  ; RETURN THE NODE
   8541						;
   8542					;
   8543					; HERE TO HANG UP A DL-11E
   8544					;
   8545	026336				20$:
   8546	026336					CALL	.DLHUP		;;; HANG IT UP
	026336	004737 	041376'			JSR	PC,.DLHUP
   8547	026342	000414 				BR	DEAND2		;;; [4.1.1035] RETURN THE NODE
   8548						;
QPRDRV	-- QUEUED PROTOCOL DRIV	MACRO M1113  03-APR-86 20:41  PAGE 155
QUEUED PROTOCOL DRIVER -- ACKNOWLEDGE DEVICE

   8550						.SBTTL	QUEUED PROTOCOL DRIVER -- ACKNOWLEDGE DEVICE
   8551
   8552					;
   8553					;	ACKNOWLEDGE DEVICE -- FUNCTION 17
   8554					;
   8555
   8556	026344				ACKNOW::
   8557	026344					CALL	FDVNMM		;;; FIND UNIT ETC
	026344	004737 	030266'			JSR	PC,FDVNMM
   8558	026350					CALL	@.DQPBA-20+Q.AK(R1) ;;; GO TO USER STATUS ROUTINE
	026350	004771 	010054'			JSR	PC,@.DQPBA-20+Q.AK(R1)
   8559	026354	000407 				BR	DEAND2		;;; [4.1.1092] RETURN NODE
   8560						;
QPRDRV	-- QUEUED PROTOCOL DRIV	MACRO M1113  03-APR-86 20:41  PAGE 156
QUEUED PROTOCOL DRIVER -- SET LINE ALLOCATION

   8562						.SBTTL	QUEUED PROTOCOL DRIVER -- SET LINE ALLOCATION
   8563
   8564					;
   8565					;	SET LINE ALLOCATION -- FUNCTION 23
   8566					;
   8567
   8568	026356				SETLIN::
   8569	026356	000360 	000010 			SWAB	E.FW(R0)	;;; SWAP THE BYTES FOR "FDVNMM"
   8570	026362					CALL	FDVNMM		;;; FIND DEVICE
	026362	004737 	030266'			JSR	PC,FDVNMM
   8571	026366	116461 	000011 	010056'		MOVB	E.FW+1(R4),.DQPBA-20+14(R1) ;;; SET IT IN THE TABLE
   8572	026374				DEAND2:
   8573	026374	000572 				BR	DEAND1		;;; [4.1.1092] AND RETURN
   8574						;
QPRDRV	-- QUEUED PROTOCOL DRIV	MACRO M1113  03-APR-86 20:41  PAGE 157
QUEUED PROTOCOL DRIVER -- SET LINE SPEED

   8576						.SBTTL	QUEUED PROTOCOL DRIVER -- SET LINE SPEED
   8577
   8578					;
   8579					;	SETSPD -- SET SPEED OF TTY -- FUNCTION 22
   8580					;
   8581					; TCO 5.1249 CHANGES REFRENCES TO R4 TO R0 AND SAVES IN R4 INSTEAD OF SP
   8582
   8583	026376				SETSPD::
   8584	026376	016002 	000012 		        MOV	E.FW+2(R0),R2	;;; FIND THE INPUT SPEED
   8585	026402					CALL	FNDSPD		;;; FIND THIS SPEED
	026402	004737 	030236'			JSR	PC,FNDSPD
   8586	026406	006203 				ASR	R3		;;; PUT IT IN THE CORRECT POSITION FOR DH-11
   8587	026410	006203 				ASR	R3		;;; SO
   8588	026412	010304 				MOV	R3,R4		;;; SAVE THE WORD
   8589	026414	016002 	000014 			MOV	E.FW+4(R0),R2	;;; FIND THE OUTPUT SPEED
   8590	026420					CALL	FNDSPD		;;; FIND THIS SPEED
	026420	004737 	030236'			JSR	PC,FNDSPD
   8591	026424	006303 				ASL	R3		;;; PUT OUTPUT SPEED IN CORRECT POSITION
   8592	026426	006303 				ASL	R3		;;; IS THE OUPUT SPEED ZERO??
   8593	026430	001002 				BNE	10$		;;; NO -- DON'T ALTER IT
   8594	026432	012703 	016003 			MOV	#16003,R3	;;; YES -- SET IT TO AN OUTPUT SPEED OF 300
   8595									;;; THIS IS DONE TO PREVENT PROBLEMS WHEN ZERO OUTPUT BAUD
   8596									;;; IS DONE AND THERE IS OUTPUT FOR THIS LINE
   8597	026436				10$:
   8598	026436	050403 				BIS	R4,R3		;;; SET THE INPUT AND OUTPUT TOGETHER
   8599	026440	016001 	000016 			MOV	E.FW+6(R0),R1	;;; GET THE STOP BIT PARAMETER
   8600	026444	006301 				ASL	R1		;;; 1 IS 1 STOP BIT 2 IS TWO STOP BITS
   8601	026446	042701 	177770 			BIC	#177770,R1	;;; CLEAR OFF JUNK
   8602	026452	050103 				BIS	R1,R3		;;; SET IN STATUS WORD
   8603	026454				20$:
   8604	026454	052703 	000003 			BIS	#3,R3		;;; SET 8 BIT CHARACTER LENGTH
   8605	026460	005005 				CLR	R5		;;; FIND THE LINE NUMBER
   8606	026462	156005 	000010 			BISB	E.FW(R0),R5	;;; FIND THE UNIT NUMBER
   8607	026466	162705 	000005 			SUB	#DLCNT,R5	;;; SUBTRACT OUT DL-11'S
   8608	026472	100533 				BMI	DEAND1		;;; [4.1.1035] DL-11'S ARE NOT LEGAL
   8609	026474	010304 				MOV	R3,R4
   8610	026476	000360 	000010 			SWAB	E.FW(R0)	;;; SWAP THE PLACE OF THE LINE NUMBER
   8611	026502					CALL	FDVNMM
	026502	004737 	030266'			JSR	PC,FDVNMM
   8612	026506	010403 				MOV	R4,R3
   8613	026510	010501 				MOV	R5,R1		;;; SAVE UNIT NUMBER
   8614	026512	010205 				MOV	R2,R5
   8615	026514	005760 	000016 			TST	E.FW+6(R0)	  ; CHECK FOR REMOTE FLAG
   8616	026520	100012 				BPL	30$		  ; NO -- DON'T SET REMOTE FLAG
   8617	026522	042701 	177760 			BIC	#177760,R1	  ; MASK UNIT NUMBER
   8618	026526					CALL	FNDDM		  ; FIND THE DM-11/BB ADDRESS
	026526	004737 	030204'			JSR	PC,FNDDM
   8619	026532	001513 				BEQ	DEAND1		  ; NOT THERE -- IGNORE
   8620	026534	052765 	000100 	000006 		BIS	#TT.RMT,STSW1(R5) ; SET REMOTE FLAG
   8621	026542					CALL	.DMHUP		  ; HANGUP THE DEVICE
	026542	004737 	041276'			JSR	PC,.DMHUP
   8622	026546				30$:
   8623	026546	032760 	040000 	000016 		BIT	#BIT14,E.FW+6(R0) ; IS THIS AN AUTO-BAUD LINE??
   8624	026554	001410 				BEQ	40$		  ; NO -- GO ON
   8625	026556	052765 	000050 	000006 		BIS	#TT.ABL!TT.ABW,STSW1(R5) ; SET THE FLAG
   8626	026564	042765 	034000 	000006 		BIC	#TT.LSP!TT.IGN!TT.BRK,STSW1(R5) ; CLEAR SOME FLAGS
   8627	026572	012703 	027303 			MOV	#27303,R3	  ; SET THE DEFAULT SPEED TO 2400 BAUD
QPRDRV	-- QUEUED PROTOCOL DRIV	MACRO M1113  03-APR-86 20:41  PAGE 157-1
QUEUED PROTOCOL DRIVER -- SET LINE SPEED

   8628	026576				40$:
   8629	026576					CALL	.DHSPD		  ; SET DH-11 LINE SPEED
	026576	004737 	040714'			JSR	PC,.DHSPD
   8630	026602	000467 				BR	DEAND1		  ; DEALLOCATE NODE
   8631						;
QPRDRV	-- QUEUED PROTOCOL DRIV	MACRO M1113  03-APR-86 20:41  PAGE 158
QUEUED PROTOCOL DRIVER -- STOP LINE INPUT

   8633						.SBTTL	QUEUED PROTOCOL DRIVER -- STOP LINE INPUT
   8634
   8635					;
   8636					;	STOP INPUT FROM LINE -- FUNCTION 26
   8637					;
   8638	026604				STPLIN::
   8639	026604	000360 	000010 			SWAB	E.FW(R0)	;;; SWAP THE BYTES
   8640	026610					CALL	FDVNMM		;;; FIND DEVICE
	026610	004737 	030266'			JSR	PC,FDVNMM
   8641	026614	010205 				MOV	R2,R5		;;; [5.1015] DEVICE POINTER TO R5
   8642	026616	032765 	000002 	000006 		BIT	#TT.CTY,STSW1(R5) ;;; [5.1015] IS THIS A CTY?
   8643	026624	001411 				BEQ	10$		;;; NO -- GO ON
   8644	026626	105737 	001234'			TSTB	.KLNSW+0	;;; YES -- IS KLINIK ACTIVE?
   8645	026632	003406 				BLE	10$		;;; NOT THAT WE CARE -- GO ON
   8646	026634	010546 				MOV	R5,-(SP)	;;; [5.1015] YES -- SAVE R5
   8647	026636	013705 	002644'			MOV	KLNPTR,R5	;;; [5.1015] KLINIK POINTER TO R5
   8648	026642					CALL	20$		;;; [5.1015] STOP THE KLINIK LINE
	026642	004737 	026656'			JSR	PC,20$
   8649	026646	012605 				MOV	(SP)+,R5	;;; [5.1015] RESTORE POINTER
   8650	026650				10$:
   8651	026650					CALL	20$		;;; [5.1015] START OR STOP THE LINE
	026650	004737 	026656'			JSR	PC,20$
   8652	026654	000442 				BR	DEAND1		;;; [5.1015] DEALLOCATE THE NODE AND EXIT
   8653						;
   8654	026656				20$:
   8655	026656					CALL	.TTSW2		;;; [5.1015] FIND OUR ".STSW2" ENTRY
	026656	004737 	044212'			JSR	PC,.TTSW2
   8656	026662	012746 	043412'			MOV	#.TTQDS,-(SP)	;;; [4.1.1092] ASSUME A STOP
   8657	026666	105760 	000010 			TSTB	E.FW(R0)	;;; [4.1.1092] IS THIS A START OR A STOP??
   8658	026672	001402 				BEQ	30$		;;; [4.1.1092] STOP -- GO ON
   8659	026674	012716 	043422'			MOV	#.TTQEN,(SP)	;;; [4.1.1092] SET UP FOR A START
   8660	026700				30$:
   8661	026700	000136 				JMP	@(SP)+		;;; [4.1.1092] DO THE START OR STOP AND RETURN
   8662						;
QPRDRV	-- QUEUED PROTOCOL DRIV	MACRO M1113  03-APR-86 20:41  PAGE 159
QUEUED PROTOCOL DRIVER -- BREAK-THROUGH WRITE

   8664						.SBTTL	QUEUED PROTOCOL DRIVER -- BREAK-THROUGH WRITE
   8665
   8666					;
   8667					;	BTWCHR	-- BREAK-TROUGH WRITE FOR CHARACTER -- FUNCTION 35
   8668					;
   8669
   8670	026702				BTWCHR::
   8671	026702	000360 	000010 			SWAB	E.FW(R0)	;;; [5.1016] SWAP THE LINE NUMBER/FLAG
   8672	026706					CALL	FDVNMM		;;; [5.1016] FIND THE DEVICE
	026706	004737 	030266'			JSR	PC,FDVNMM
   8673									;;; [5.1016] DON'T RETURN IF IT DOESN'T EXIST
   8674	026712	010205 				MOV	R2,R5		;;; [5.1016] COPY DLS POINTER TO R5
   8675	026714	116004 	000010 			MOVB	E.FW(R0),R4	;;; [5.1016] GET THE CHARACTER IN R4
   8676	026720	001420 				BEQ	DEAND1		;;; [4.1.1035] IGNORE IF NULL
   8677	026722					CALL	.TTBTW		;;; [5.1016] FORCE THE CHARACTER OUT
	026722	004737 	044042'			JSR	PC,.TTBTW
   8678	026726	000415 				BR	DEAND1		;;; [5.1016] DEALLOCATE AND EXIT
   8679						;
QPRDRV	-- QUEUED PROTOCOL DRIV	MACRO M1113  03-APR-86 20:41  PAGE 160
QUEUED PROTOCOL DRIVER -- XOFF

   8681						.SBTTL	QUEUED PROTOCOL DRIVER -- XOFF
   8682
   8683					;
   8684					;	XOFF -- FUNCTION 20
   8685					;
   8686					;	THIS ROUTINE WILL INITIATE THE XOFF SEQUENCE FOR A TERMINAL LINE.
   8687					;	THE "XOFF" STATUS BIT ("TT.XOF") IS SET IN THE LINE STATUS WORD WHICH
   8688					;	BLOCKS ANY FURTHER OUTPUT FROM THE TERMINAL DRIVER. IF THE LINE IS
   8689					;	A DH-11, THE OUTPUT IS NOT STOPPED IMMEDIATELY, BUT A RUNDOWN SEQUENCE
   8690					;	IS INITATED SINCE EARLIER DH-11'S WILL "RUN AWAY" IF THE DEVICE BYTE
   8691					;	COUNT IS SIMPLY CLEARED. THE TERMINAL INTERRUPT SERVICE WILL RESET THE
   8692					;	PACKET ADDRESS AND BYTE COUNT AT OUTPUT DONE SO THAT THE XON CODE CAN
   8693					;	DO A NORMAL LINE START.
   8694					;
   8695					;	THIS MESSAGE IS IGNORED IF:
   8696					;
   8697					;		1. THE LINE IS ALREADY X'D OFF
   8698					;		2. THE LINE HAS NO OUTPUT PENDING (THREAD LIST EMPTY)
   8699					;		3. A SENDALL IS IN PROGRESS ON THIS LINE
   8700					;		4. THE CTY IS IN PDP-11 I/O WAIT AND THE CTY IS TO BE X'D OFF
   8701
   8702	026730				XOFF::
   8703	026730					CALL	FDVNMM		;;; FIND THE DEVICE NAME
	026730	004737 	030266'			JSR	PC,FDVNMM
   8704	026734	010205 				MOV	R2,R5		;;; COPY DLS POINTER TO R5
   8705	026736					CALL	.TTXOF		;;; DO THE XOFF
	026736	004737 	042762'			JSR	PC,.TTXOF
   8706	026742	000407 				BR	DEAND1		;;; AND EXIT
   8707						;
QPRDRV	-- QUEUED PROTOCOL DRIV	MACRO M1113  03-APR-86 20:41  PAGE 161
QUEUED PROTOCOL DRIVER -- XON

   8709						.SBTTL	QUEUED PROTOCOL DRIVER -- XON
   8710
   8711					;
   8712					;	XON -- FUNCTION 21
   8713					;
   8714					;	THIS ROUTINE WILL RESUME OUTPUT FOR A LINE WHICH WAS PREVIOUSLY
   8715					;	X'D OFF.  THE OUTPUT WILL BE RESUMED PER THE DATA IN THE CURRENT
   8716					;	NODE IN THE THREAD LIST FOR THIS LINE. (T.HCBC AND T.HACD) THIS
   8717					;	DATA IS SAVED AT OUTPUT INTERRUPT TIME FROM THE XOFF.
   8718					;
   8719					;	THIS MESSAGE WILL BE IGNORED IF:
   8720					;
   8721					;		1. THE LINE HAS NOT BEEN PREVIOUSLY X'D OFF
   8722					;		2. A SENDALL IS CURRENTLY IN PROGRESS ON THIS LINE
   8723					;
   8724					;	THE DEVICE WILL NOT BE RESTARTED IF:
   8725					;
   8726					;		1. OUTPUT IS ALREADY IN PROGRESS ON THIS LINE
   8727					;		2. THE OUTPUT THREAD LIST FOR THIS LINE IS EMPTY
   8728					;		3. THE DEVICE DOES NOT EXIST
   8729
   8730
   8731	026744				XON::
   8732	026744					CALL	FDVNMM		;;; [4.2181] FIND THIS DEVICE
	026744	004737 	030266'			JSR	PC,FDVNMM
   8733	026750	010205 				MOV	R2,R5		;;; [4.2181] COPY DLS POINTER TO R5
   8734	026752	010046 				MOV	R0,-(SP)	;;; [5.1248] SAVE R0
   8735	026754					CALL	.TTXON		;;; [4.2181] PROCESS THE DIRECTIVE
	026754	004737 	043104'			JSR	PC,.TTXON
   8736	026760	012600 				MOV	(SP)+,R0	;;; [5.1248] RESTORE R0
   8737	026762				DEAND1:
   8738	026762	000137 	027472'			JMP	DEANOD		;;; [4.2181] DEALLOCATE THE NODE
   8739						;
QPRDRV	-- QUEUED PROTOCOL DRIV	MACRO M1113  03-APR-86 20:41  PAGE 162
QUEUED PROTOCOL DRIVER -- HERE IS INITIAL STATUS

   8741						.SBTTL	QUEUED PROTOCOL DRIVER -- HERE IS INITIAL STATUS
   8742
   8743					;
   8744					;	HERE IS INITIAL STATUS -- FUNCTION 1
   8745					;	FW IS ALLOCATED WITH LOW ORDER PART AS # OF TTY'S
   8746					;	BIT 16 IS ALLOCATED TO INDICATE 50CPS
   8747					;
   8748
   8749	026766				HICTS::
   8750	026766	012737 	000074 	001154'		MOV	#60.,.TKPS	;;; SET UP THE CLOCK TO 60. CPS
   8751	026774	105760 	000010 			TSTB	E.FW+0(R0)	;;; CHECK FOR 50 CPS (BYTES ARE SWAPPED)
   8752	027000	100003 				BPL	10$		;;; HIGH ORDER BIT SET IS 50CPS
   8753	027002	162737 	000012 	001154'		SUB	#10.,.TKPS	;;; SET TO 50 HZ
   8754	027010				10$:
   8755	027010	012703 	000001 			MOV	#D.CCTY,R3	;;; SET DEVICE ID
   8756	027014	012701 	000002 			MOV	#BC.HAD,R1	;;; SET HERE IS DEVICE STATUS
   8757	027020	013704 	002642'			MOV	CTYPTR,R4	;;; FIND THE CTY NUMBER
   8758	027024	162704 	003004'			SUB	#TTTBL,R4
   8759	027030	006204 				ASR	R4		;;; MAKE NUMBER
   8760	027032	006204 				ASR	R4
   8761	027034	006204 				ASR	R4
   8762	027036					CALL	..STFC		;;; START FUNCTION
	027036	004737 	046714'			JSR	PC,..STFC
   8763	027042	105737 	001224'			TSTB	.KLNMD+0	;;; ANY KLINIK PARAMETERS TO SEND??
   8764	027046	001424 				BEQ	20$		;;; NO -- GO ON
   8765	027050	010046 				MOV	R0,-(SP)	;;; YES -- SAVE R0
   8766	027052	012700 	001204'			MOV	#.KLNPB,R0	;;; BUFFER POINTER TO R0
   8767	027056	012710 	000026 			MOV	#KLNPLN,(R0)	;;; BYTE COUNT TO BUFFER HEADER
   8768	027062	012701 	100033 			MOV	#BC.SKP+100000,R1 ;;; FUNCTION CODE TO R1
   8769	027066	005002 				CLR	R2		;;; DON'T WAIT FOR IT
   8770	027070	012703 	000200 			MOV	#D.CCPU,R3	;;; DEVICE ID TO R3
   8771	027074					.ENBT			;;; [4.1.1035] ALLOW TASK SWITCHING
	027074	013746 	177776 			 MOV	@#PS,-(SP)
	027100	042737 	000340 	177776 		 BIC	#PRI7,@#PS
   8772	027106					CALL	..STIN		; SEND THE KLINIK PARAMETERS
	027106	004737 	047104'			JSR	PC,..STIN
   8773	027112					.INHT			; [4.1.1035] DISABLE TASK SWITCHING
	027112	012637 	177776 			 MOV	(SP)+,@#PS
   8774	027116	012600 				MOV	(SP)+,R0	;;; RESTORE R0
   8775	027120				20$:
   8776	027120	123727 	001037'	000102 	HISN::	CMPB	.VERNO+1,#'B
   8777	027126	001022 				BNE	30$
   8778	027130	010046 				MOV	R0,-(SP)		;;; [**] SAVE R0
   8779	027132	012700 	005550'			MOV	#.RHPB,R0	;;; [**] FETCH BUFFER ADDRESS
   8780	027136	012701 	100040 			MOV	#BIT15!BC.HSN,R1 ;;; [**] SET UP FNC CODE (INDIRECT)
   8781	027142	005002 				CLR	R2		;;; [**] NO EVENT FLAG DESIRED
   8782	027144	012703 	000203 			MOV	#D.CRJP,R3	;;; [**] RP DEVICE CODE
   8783	027150					.ENBT			;;; [**] ENABLE TASK SWITCHING
	027150	013746 	177776 			 MOV	@#PS,-(SP)
	027154	042737 	000340 	177776 		 BIC	#PRI7,@#PS
   8784	027162					CALL	..STIN		; [**] SEND THE PACKET
	027162	004737 	047104'			JSR	PC,..STIN
   8785	027166					.INHT			; [**] DISABLE TASK SWITCHING
	027166	012637 	177776 			 MOV	(SP)+,@#PS
   8786	027172	012600 				MOV	(SP)+,R0		; [**] RESTORE R0
   8787	027174	013704 	001160'		30$:	MOV	.BTPRM,R4	;;; SEND BOOT PARAMETERS
   8788	027200	012701 	000024 			MOV	#BC.BTP,R1	;;; SET BOOT PARAMETERS
QPRDRV	-- QUEUED PROTOCOL DRIV	MACRO M1113  03-APR-86 20:41  PAGE 162-1
QUEUED PROTOCOL DRIVER -- HERE IS INITIAL STATUS

   8789	027204					CALL	..STFC		;;; [5.1004] SEND BOOT PARAMETERS
	027204	004737 	046714'			JSR	PC,..STFC
   8790	027210	000530 				BR	DEANOD		;;; [4.1.1035] DEALLOCATE NODE
QPRDRV	-- QUEUED PROTOCOL DRIV	MACRO M1113  03-APR-86 20:41  PAGE 163
QUEUED PROTOCOL DRIVER -- RETURN TIME OF DAY

   8792						.SBTTL	QUEUED PROTOCOL DRIVER -- RETURN TIME OF DAY
   8793
   8794					;
   8795					;	RTNTOD -- RETURN TIME OF DAY TO KL -- FUNCTION 11
   8796					;
   8797
   8798	027212				RTNTOD::
   8799	027212	005737 	001140'			TST	.DATE3		;;; [5.1004] IS OUR DATE VALID??
   8800	027216	001403 				BEQ	10$		;;; [5.1004] NO -- JUST REPORT CONFIGURATION
   8801	027220	012737 	177777 	002610'		MOV	#-1,.ABFLG	;;; FLAG "SETSPD" TO REPORT ALL LINES
   8802	027226				10$:
   8803	027226					DIR$	#.RQSPD		;;; SET SPEED AND THEN RETURN TIME OF DAY
	027226	012746 	025226'			MOV	#.RQSPD,-(SP)
	027232	104375 				EMT	375
   8804	027234	000516 				BR	DEANOD		;;; [4.1.1035] DEALLOCATE THIS NODE
   8805						;
QPRDRV	-- QUEUED PROTOCOL DRIV	MACRO M1113  03-APR-86 20:41  PAGE 164
QUEUED PROTOCOL DRIVER -- STRING DATA

   8807						.SBTTL	QUEUED PROTOCOL DRIVER -- STRING DATA
   8808
   8809					;
   8810					;	STRDAT -- ROUTINE TO HANDLE STRING DATA -- FUNCTION 3
   8811					;	HIDVST -- ROUTINE TO RECIEVE DEVICE STATUS -- FUNCTION 7
   8812					;	RTDVST -- ROUTINE TO RECEIVE REQUEST FOR DEVICE STATUS -- FUNCTION 5
   8813					;	STDVST -- ROUTINE TOSET DEVICE STATUS -- FUNCTION 6
   8814					;	LDLPR -- ROUTINE TO LOAD LP RAM -- FUNCTION 30
   8815					;	LDLPV -- ROUTINE TO LOAD LP VFU -- FUNCTION 31
   8816					;
   8817
   8818	027236				HIDVST::
   8819	027236				LDLPR::
   8820	027236				LDLPV::
   8821	027236				STDVST::
   8822	027236				RTDVST::
   8823	027236				STRDAT::
   8824	027236	012702 	000006 			MOV	#6,R2		;;; MOVE OVER THE LISTHEAD AND COUNT
   8825	027242	060204 				ADD	R2,R4		;;; FIND THE DEVICE ADDRESS
   8826	027244	012401 				MOV	(R4)+,R1	;;; FIND THE DEVICE ADDRESS
   8827	027246	012403 				MOV	(R4)+,R3	;;; FIND THE FIRST WORD
   8828	027250	160204 				SUB	R2,R4		;;; BACKUP TO STORE IN THE HEADER
   8829	027252	111464 	000003 			MOVB	@R4,3(R4)	;;; SAVE FUNCTION CODE
   8830	027256	010414 				MOV	R4,@R4		;;; SAVE THE ADDRESS
   8831	027260	060224 				ADD	R2,(R4)+	;;; UPDATE ADDRESS
   8832	027262	000303 				SWAB	R3		;;; SET UP BYTES SWAPED
   8833	027264	110314 				MOVB	R3,@R4		;;; STORE BYTE COUNT
   8834	027266					CALL	FDVNM		;;; FIND DEVICE TABLE ENTRY
	027266	004737 	030302'			JSR	PC,FDVNM
   8835	027272	103477 				BCS	DEANOD		;;; ILLEGAL DEVICE -- FORGET IT
   8836	027274					CALL	@.DQPBA+Q.ST-20(R1) ;;; START DEVICE
	027274	004771 	010046'			JSR	PC,@.DQPBA+Q.ST-20(R1)
   8837	027300	000476 				BR	QPRDTF		;;; [4.1.1035] GO TO DO MORE WORK
   8838						;
QPRDRV	-- QUEUED PROTOCOL DRIV	MACRO M1113  03-APR-86 20:41  PAGE 165
QUEUED PROTOCOL DRIVER -- LINE NUMBER - CHARACTER

   8840						.SBTTL	QUEUED PROTOCOL DRIVER -- LINE NUMBER - CHARACTER
   8841
   8842					;
   8843					;	LINCHR --LINE NUMBER - CHARACTER -- FUNCTION 4
   8844					;
   8845
   8846	027302				LINCHR::
   8847	027302	010046 				MOV	R0,-(SP)	;;; SAVE THE NODE ADDRESS
   8848	027304	005046 				CLR	-(SP)
   8849	027306	116416 	000005 			MOVB	E.FN+1(R4),@SP	;;; SAVE SIZE OF BLOCK
   8850	027312	162716 	000010 			SUB	#E.FW,@SP	;;; SUBTRACT THE SIZE OF THE HEADER
   8851	027316	010405 				MOV	R4,R5		;;; SET UP THE POINTER TO THE BUFFER
   8852	027320	016404 	000006 			MOV	E.DV(R4),R4	;;; FIND THE DEVICE
   8853	027324	062705 	000010 			ADD	#E.FW,R5	;;; POINT TO THE CHARACTER
   8854	027330				10$:
   8855	027330	012701 	000014 			MOV	#T.HHDS+4,R1	;;; SET UP THE BUFFER SIZE
   8856	027334					.ENBT			;;; [4.1.1035] ENABLE TASK SWITCHING
	027334	013746 	177776 			 MOV	@#PS,-(SP)
	027340	042737 	000340 	177776 		 BIC	#PRI7,@#PS
   8857	027346					CALL	..ALOW		; ALLOCATE A BLOCK
	027346	004737 	046144'			JSR	PC,..ALOW
   8858	027352					.INHT			; [4.1.1035] ALLOW TASK SWITCHING
	027352	012637 	177776 			 MOV	(SP)+,@#PS
   8859	027356	010002 				MOV	R0,R2		;;; SAVE THE NODE ADDRESS
   8860	027360	005722 				TST	(R2)+		;;; MOVE OVER THE THREAD POINTER
   8861	027362	010122 				MOV	R1,(R2)+	;;; SET UP THE CHARACTER COUNT
   8862	027364	010012 				MOV	R0,@R2		;;; SET UP THE MEMORY ADDRESS
   8863	027366	062722 	000012 			ADD	#T.HHDS+2,(R2)+	;;; POINT TO THE BUFFER
   8864	027372	012722 	000001 			MOV	#1,(R2)+	;;; SET UP THE CURRENT COUNT POINTER
   8865	027376	005722 				TST	(R2)+
   8866	027400	010401 				MOV	R4,R1		;;; PICK UP THE DEVICE
   8867	027402	112503 				MOVB	(R5)+,R3
   8868	027404	112522 				MOVB	(R5)+,(R2)+	;;; STORE THE CHARCTER
   8869	027406	000303 				SWAB	R3		;;; SET UP LINE NUMBER FOR FDVNM
   8870	027410					CALL	FDVNM		;;; FIND THE DEVICE NUMBER
	027410	004737 	030302'			JSR	PC,FDVNM
   8871	027414	103410 				BCS	30$		;;; ILLEGAL LINE NUMBER
   8872	027416					CALL	@.DQPBA+Q.ST-20(R1) ;;; START TTY
	027416	004771 	010046'			JSR	PC,@.DQPBA+Q.ST-20(R1)
   8873	027422				20$:
   8874	027422	162716 	000002 			SUB	#2,@SP		;;; POINT TO THE NEXT CHARACTER
   8875	027426	001340 				BNE	10$		;;; DO AT LEAST ONE MORE
   8876	027430	005726 				TST	(SP)+		;;; REMOVE COUNT
   8877	027432	012600 				MOV	(SP)+,R0	;;; SET UP TO RETURN NODE
   8878	027434	000416 				BR	DEANOD		;;; ALL DONE -- RETURN THE NODE
   8879						;
   8880	027436				30$:
   8881	027436					CALL	..DECN		;;; DEALLOCATE BUFFER
	027436	004737 	046004'			JSR	PC,..DECN
   8882	027442	000767 				BR	20$		;;; AND TRY NEXT BLOCK
   8883						;
QPRDRV	-- QUEUED PROTOCOL DRIV	MACRO M1113  03-APR-86 20:41  PAGE 166
QUEUED PROTOCOL DRIVER -- RETURN TIME OF DAY

   8885						.SBTTL	QUEUED PROTOCOL DRIVER -- RETURN TIME OF DAY
   8886
   8887					;
   8888					;	RETTOD -- RETURN TIME OF DAY -- FUNCTION 12
   8889					;
   8890
   8891	027444				RETTOD::
   8892	027444	062704 	000010 			ADD	#E.FW,R4	;;; MOVE OVER THE HEADER
   8893	027450	005724 				TST	(R4)+		;;; MOVE OVER THE VALID BIT AND CHECK IT
   8894	027452	001407 				BEQ	DEANOD		;;; TIME NOT VALID FORGET IT
   8895	027454	012703 	001140'			MOV	#.DATE,R3	;;; SET UP TO SET DATE
   8896	027460	012423 				MOV	(R4)+,(R3)+	;;; SET UP VALIDITY BITS
   8897	027462	012423 				MOV	(R4)+,(R3)+	;;; SET UP YEAR
   8898	027464	012423 				MOV	(R4)+,(R3)+	;;; SET UP DAY
   8899									;;; SET UP MONTH
   8900	027466	012423 				MOV	(R4)+,(R3)+	;;; SAVE DAYLIGHT SAVINGS TIME INDICATOR (1=DST)
   8901									;;; SET UP DAY OF WEEK
   8902	027470	012423 				MOV	(R4)+,(R3)+	;;; SET SECONDS SINCE MIDNIGHT
   8903	027472				DEANOD:
   8904	027472					CALL	..DECN		;;; DEALLOCATE BUFFER
	027472	004737 	046004'			JSR	PC,..DECN
   8905	027476				QPRDTF:
   8906	027476	000137 	025666'			JMP	QPRDTL		;;; GO TO NEXT FUNCTION
   8907						;
QPRDRV	-- QUEUED PROTOCOL DRIV	MACRO M1113  03-APR-86 20:41  PAGE 167
QUEUED PROTOCOL DRIVER -- FLUSH DEVICE OUTPUT QUEUE

   8909						.SBTTL	QUEUED PROTOCOL DRIVER -- FLUSH DEVICE OUTPUT QUEUE
   8910
   8911					;
   8912					;	FLDVOT -- FLUSH OUTPUT FOR THIS DEVICE -- FUNCTION 13
   8913					;
   8914
   8915	027502				FLDVOT::
   8916	027502					CALL	FDVNMM		;;; FIND THE DEVICE POINTER
	027502	004737 	030266'			JSR	PC,FDVNMM
   8917	027506	010146 				MOV	R1,-(SP)
   8918	027510					CALL	@.DQPBA+Q.SP-20(R1) ;;; STOP DEVICE
	027510	004771 	010050'			JSR	PC,@.DQPBA+Q.SP-20(R1)
   8919	027514	012601 				MOV	(SP)+,R1
   8920	027516	016100 	010042'			MOV	.DQPBA+Q.DA-20(R1),R0 ;;; FIND DEVICE TABLE BASE ADDRESS
   8921	027522	010205 				MOV	R2,R5		;;; FIND THIS DEVICE ADDRESS
   8922	027524	016403 	000006 			MOV	E.DV(R4),R3	;;; FIND DEVICE NUMBER
   8923	027530					CALL	..SACK		;;; SEND ACKNOWLEDGEMENT
	027530	004737 	046630'			JSR	PC,..SACK
   8924	027534	010400 				MOV	R4,R0		;;; SET UP TO RETURN NODE
   8925	027536	000755 				BR	DEANOD		;;; DEALLOCATE NODE
   8926						;
QPRDRV	-- QUEUED PROTOCOL DRIV	MACRO M1113  03-APR-86 20:41  PAGE 168
QUEUED PROTOCOL DRIVER -- RECIEVE KLINIK PARAMETERS

   8928						.SBTTL	QUEUED PROTOCOL DRIVER -- RECIEVE KLINIK PARAMETERS
   8929
   8930					;
   8931					;	RCVKLP -- RECIEVE KLINIK PARAMETERS -- FUNCTION 33
   8932					;
   8933
   8934	027540				RCVKLP::
   8935	027540	062704 	000012 			ADD	#E.FW+2,R4	;;; GET OVER THE INDIRECT HEADER
   8936	027544	012402 				MOV	(R4)+,R2	;;; BYTE COUNT TO R2
   8937	027546	001751 				BEQ	DEANOD		;;; QUIT IF NULL
   8938	027550	006202 				ASR	R2		;;; MAKE A WORD COUNT
   8939	027552	012703 	001210'			MOV	#.KLNFT,R3	;;; BUFFER POINTER TO R3
   8940	027556	042737 	010000 	001012'		BIC	#EF.RKP,.COMEF+2 ;;; CLEAR THE FLAG
   8941	027564				10$:
   8942	027564	012423 				MOV	(R4)+,(R3)+	;;; LOAD THE PARAMETERS
   8943	027566	077202 				SOB	R2,10$		;;; LOOP TILL DONE
   8944	027570	052737 	010000 	001012'		BIS	#EF.RKP,.COMEF+2 ;;; SET THE EVENT FLAG
   8945	027576	000735 				BR	DEANOD		;;; DEQUEUE THIS NODE AND EXIT
   8946						;
QPRDRV	-- QUEUED PROTOCOL DRIV	MACRO M1113  03-APR-86 20:41  PAGE 169
QUEUED PROTOCOL DRIVER -- SET/CLEAR HOST DEBUG MODE

   8948						.SBTTL	QUEUED PROTOCOL DRIVER -- SET/CLEAR HOST DEBUG MODE
   8949
   8950					;
   8951					;	SETDEB -- SET HOST DEBUG MODE (36)
   8952					;	CLRDEB -- CLEAR HOST DEBUG MODE (37)
   8953					;
   8954
   8955	027600				SETDEB::
   8956	027600	112737 	177777 	013265'		MOVB	#-1,SNDMSG+1	;;; [5.1127] SET HOST DEBUG MODE
   8957	027606	000731 				BR	DEANOD		;;; [5.1127] AND RETURN
   8958
   8959	027610				CLRDEB::
   8960	027610	105037 	013265'			CLRB	SNDMSG+1	;;; [5.1127] CLEAR HOST DEBUG MODE
   8961	027614	000726 				BR	DEANOD		;;; [5.1127] AND RETURN
QPRDRV	-- QUEUED PROTOCOL DRIV	MACRO M1113  03-APR-86 20:41  PAGE 170
QUEUED PROTOCOL DRIVER -- SENDALL

   8963						.SBTTL	QUEUED PROTOCOL DRIVER -- SENDALL
   8964
   8965					;
   8966					;	SNDALL -- SENDALL SERVICE -- FUNCTION 14
   8967					;
   8968
   8969	027616				SNDALL::
   8970	027616					CALL	.SNDAL		;;; DO SENDALL
	027616	004737 	027624'			JSR	PC,.SNDAL
   8971	027622	000725 				BR	QPRDTF		;;; AND RETURN
   8972						;
   8973					;
   8974					;	.SNDAL -- SUBROUTINE TO DO A SENDALL
   8975					;
   8976					;	CALLING SEQUENCE
   8977					;
   8978					;	R0 & R4 -- POINTER TO BUFFER TO BE SENT (QUEUED PROTOCOL FORMAT)
   8979					;
   8980					;	REGISTERS ALTERED
   8981					;
   8982					;	R0,R1,R2,R3,R5
   8983					;
   8984					;	THE SENDALL MESSAGES AND COUNTS ARE MAINTINED IN PARALLEL RING BUFFERS
   8985					;	IN ".SNDBF" AND ".SNDCN" (Q.V.). ".SNDLP" POINTS THE THE NEXT FREE LOGICAL
   8986					;	NODE IN THE SENDALL RING. EACH ENTRY IN THE DATA LINE SCANNER TABLE HAS
   8987					;	AS SENDALL INDEX BYTE IN "STSW1" ("TT.SND") WHICH POINTS TO THE LAST NODE
   8988					;	PROCESSED SENDALL RING. THE QUEUED PROTOCOL BUFFER IS DEALLOCATEED BY THE
   8989					;	TERMINAL DRIVER WHEN THE LAST TERMINAL HAS PROCESSED THAT NODE.
   8990					;
   8991					;	A SENDALL IS DEEMED TO BE PENDING FOR A LINE IF ITS SENDALL INDEX IS
   8992					;	DIFFERENT FROM THAT IN ".SNDLP". THE SENDALL WILL BE INITIATED AT "..STTY"
   8993					;	IF THE LINE IS IDLE, OR AT "STTYDN" IF THE LINE HAS ACTIVE OUTPUT.
   8994					;
   8995					;	IN ORDER TO PREVENT PROBLEMS ASSOCIATED WITH LARGE SENDALLS (A LARGE
   8996					;	SENDALL IS DEFINED AS ONE WHICH WILL FILL THE SENDALL RING), THE RING IS
   8997					;	ACTUALLY MANAGED AS A CIRCULAR LIST, WITH A GUARANTEED NULL ENTRY IN THE
   8998					;	LIST AT ALL TIMES. SHOULD A REQUEST BE MADE TO FILL AN EMPTY NODE IN THE
   8999					;	RING WITHOUT THE FOLLOWING NODE BEING EMPTY, THAT MODE WILL NOT BE FILLED
   9000					;	UNTIL THE FOLLOWING NODE BECOMES EMPTY (NULL). IN EFFECT, THE SENDALL
   9001					;	PROCESS IS DRIVEN BY THE SLOWEST TERMINAL(S) IN THE DATA LINE SCANNER.
   9002					;
   9003					;	TCO 4.2246 REMOVED SEVERAL INHIBIT AND ENABLE MACROS FROM THIS ROUTINE
   9004					;	014 -- REMOVED WSIG$S IF NO SPACE IN RING BUFFER
   9005
   9006	027624				.SNDAL::
   9007	027624	010004 				MOV	R0,R4		;;; COPY SENDALL POINTER
   9008	027626	022020 				CMP	(R0)+,(R0)+	;;; GET OVER LISTHEAD
   9009	027630	010010 				MOV	R0,(R0)		;;; SET UP CURRENT ADDRESS POINTER
   9010	027632	062720 	000006 			ADD	#6,(R0)+	;;; CORRECT BUFFER POINTER
   9011	027636	116010 	000003 			MOVB	3(R0),(R0)	;;; MOVE THE BYTE COUNT
   9012	027642				10$:
   9013	027642	013701 	002612'			MOV	.SNDLP,R1	;;; FIND THE CURRENT POINTER FOR SENDALL
   9014	027646	010102 				MOV	R1,R2		;;; COPY IT TO R2
   9015	027650	006301 				ASL	R1		;;; MAKE RING WORD INDEX
   9016	027652	005202 				INC	R2		;;; UPDATE THE POINTER TO NEXT NODE
   9017	027654	042702 	177774 			BIC	#^C3,R2		;;; MODULO 4
   9018	027660	010237 	002612'			MOV	R2,.SNDLP	;;; SET THE POINTER TO THE NEXT RING BUFFER
QPRDRV	-- QUEUED PROTOCOL DRIV	MACRO M1113  03-APR-86 20:41  PAGE 170-1
QUEUED PROTOCOL DRIVER -- SENDALL

   9019	027664	013761 	010140'	002624'		MOV	.DQDH0+Q.DZ,.SNDCN(R1) ;;; SET UP THE TTY COUNT
   9020					;	BEQ	15$		;;; GO ON IF NO DH-11'S
   9021	027672	010461 	002614'			MOV	R4,.SNDBF(R1)	;;; SET PACKET IN THE CURRENT RING BUFFER
   9022	027676				15$:
   9023	027676	012702 	003004'			MOV	#DLTBL,R2	;;; DO THE DL-11W AND DL-11E'S
   9024	027702				20$:
   9025	027702	020237 	002644'			CMP	R2,KLNPTR	;;; IS THIS THE KLINIK LINE??
   9026	027706	001003 				BNE	25$		;;; NO -- GO ON
   9027	027710	105737 	001234'			TSTB	.KLNSW+0	;;; YES -- IS IT ACTIVE AS USER CONSOLE??
   9028	027714	002015 				BGE	30$		;;; NO -- FORGET IT
   9029	027716				25$:
   9030	027716	005762 	000002 			TST	TTYEXP(R2)	;;; IS IT HERE??
   9031	027722	001412 				BEQ	30$		;;; NO -- FORGET IT
   9032	027724	032762 	000400 	000006 		BIT	#TT.NSA,STSW1(R2) ;;; YES -- SUPPRESS SENDALLS??
   9033	027732	001006 				BNE	30$		;;; YES -- SO DO IT
   9034	027734	010246 				MOV	R2,-(SP)	;;; SAVE R2 FROM "COPBUF"
   9035	027736					CALL	COPBUF		;;; COPY THE BUFFER
	027736	004737 	030130'			JSR	PC,COPBUF
   9036	027742	012602 				MOV	(SP)+,R2	;;; RESTORE R2
   9037	027744					CALL	..STTY		;;; START THE LINE UP
	027744	004737 	046164'			JSR	PC,..STTY
   9038	027750				30$:
   9039	027750	062702 	000010 			ADD	#^D8,R2		;;; POINT TO THE NEXT LINE
   9040	027754	022702 	003054'			CMP	#DHTBL,R2	;;; IS IT A DL-11??
   9041	027760	101350 				BHI	20$		;;; YES -- DO THIS LINE
   9042	027762	010400 				MOV	R4,R0		;;; NO -- SET UP POINTER TO TTY BUFFER FOR "..STTY"
   9043	027764	010037 	002634'			MOV	R0,.CRSND	;;; SET THAT THIS IS CURRENT SENDALL
   9044	027770				35$:
   9045	027770	032762 	000410 	000006 		BIT	#TT.NSA!TT.ABW,STSW1(R2) ;;; IGNORE SENDALL OR AUTO-BAUD WAIT??
   9046	027776	001033 				BNE	70$		;;; YES -- DON'T START THIS LINE BUT ACCOUNT FOR IT
   9047	030000	032762 	000002 	000006 		BIT	#TT.CTY,STSW1(R2) ;;; NO -- IS THIS A CTY??
   9048	030006	001403 				BEQ	45$		;;; NO -- GO ON
   9049	030010	005737 	002640'			TST	.TTP11		;;; YES -- IN -11 I/O WAIT??
   9050	030014	001014 				BNE	50$		;;; YES -- DON'T RESTART
   9051	030016				45$:
   9052	030016	032762 	000001 	000006 		BIT	#TT.OUT,STSW1(R2) ;;; ANY KIND OF OUTPUT PENDING??
   9053	030024	001010 				BNE	50$		;;; YES -- DON'T RESTART
   9054	030026	005762 	000002 			TST	TTYEXP(R2)	;;; [5.1004] DOES THE DEVICE EXIST??
   9055	030032	001415 				BEQ	70$		;;; [5.1004] NO -- ACCOUNT FOR SENDALL
   9056	030034					CALL	..STTY		;;; YES -- START SENDALL FOR THIS TTY
	030034	004737 	046164'			JSR	PC,..STTY
   9057	030040	052762 	001000 	000006 		BIS	#TT.SIP,STSW1(R2) ;;; MARK SENDALL IN PROGRESS
   9058	030046				50$:
   9059	030046	062702 	000010 			ADD	#8.,R2		;;; LOOK AT THE NEXT DH-11
   9060	030052	022702 	005054'			CMP	#TTYEND,R2	;;; [5.1004] DONE ALL DH-11'S??
   9061	030056	101344 				BHI	35$		;;; [5.1004] NO -- DO NEXT LINE
   9062	030060				55$:
   9063	030060	005037 	002634'			CLR	.CRSND		;;; YES -- CLEAR CURRENT SENDALL POINTER
   9067	030064					RETURN			;;; RETURN TO CALLER
	030064	000207 				RTS	PC
   9068						;
   9095
   9096	030066				70$:				;;; HERE TO PRETEND WE DID SENDALL ON LINE
   9097	030066	013701 	002612'			MOV	.SNDLP,R1	;;; GET POINTER TO CURRENT SENDALL + 1
   9098	030072	005301 				DEC	R1		;;; MAKE IT POINTER TO CURRENT
   9099	030074	042701 	177774 			BIC	#177774,R1	;;; WE ONLY WANT TWO BITS
   9100	030100	006301 				ASL	R1		;;; MAKE IT INTO A WORD INDEX
QPRDRV	-- QUEUED PROTOCOL DRIV	MACRO M1113  03-APR-86 20:41  PAGE 170-2
QUEUED PROTOCOL DRIVER -- SENDALL

   9101	030102	005361 	002624'			DEC	.SNDCN(R1)	;;; DECREMENT COUNT OF SENDALLS SENT
   9102	030106	003004 				BGT	80$		;;; IF SOME LEFT, DON'T FREE MESSAGE
   9103						;
   9104	030110				75$:
   9105	030110	005061 	002614'			CLR	.SNDBF(R1)	;;; INDICATE NONEXISTANT
   9106	030114					CALL	..DECN		;;; DEALLOCATE THE NODE
	030114	004737 	046004'			JSR	PC,..DECN
   9107	030120				80$:				;;; HERE TO FINISH DUMMY SENDALL
   9108	030120	062762 	040000 	000006 		ADD	#TT.SNI,STSW1(R2);;; BUMP INDEX TO NEXT SENDALL
   9109	030126	000747 				BR	50$		;;; AND DO THE NEXT LINE
   9110						;
QPRDRV	-- QUEUED PROTOCOL DRIV	MACRO M1113  03-APR-86 20:41  PAGE 171
QUEUED PROTOCOL DRIVER -- COPY BUFFER

   9112						.SBTTL	QUEUED PROTOCOL DRIVER -- COPY BUFFER
   9113
   9114					;
   9115					;	COPBUF -- ROUTINE TO COPY A TTY BUFFER AND CORRECT THE
   9116					;	ADDRESS OF THE BUFFER IN THE CURRENT ADDRESS POINTER
   9117					;
   9118					;	CALLING SEQUENCE:
   9119					;
   9120					;	R4 -- ADDRESS OF BUFFER TO BE COPIED
   9121					;
   9122					;	CALL	COPBUF
   9123					;
   9124					;	EXIT CONDITIONS:
   9125					;
   9126					;	R0 -- NEW BUFFER ADDRESS
   9127					;
   9128					;	REGISTERS ALTERED:
   9129					;
   9130					;	R1,R2,R5
   9131					;
   9132
   9133	030130				COPBUF::
   9134	030130	016401 	000002 			MOV	2(R4),R1	;;; SET UP THE BUFFER SIZE
   9135	030134					.ENBT			;;; [4.1.1035] ENABLE TASK SWITCHING
	030134	013746 	177776 			 MOV	@#PS,-(SP)
	030140	042737 	000340 	177776 		 BIC	#PRI7,@#PS
   9136	030146					CALL	..ALOW		; ALLOCATE A BUFFER
	030146	004737 	046144'			JSR	PC,..ALOW
   9137	030152					.INHT			; [4.1.1035] DISABLE TASK SWITCHING
	030152	012637 	177776 			 MOV	(SP)+,@#PS
   9138	030156	010405 				MOV	R4,R5		;;; SAVE R5 BUFFER POINTER
   9139	030160	010002 				MOV	R0,R2		;;; SAVE TTY BUFFER POINTER
   9140	030162	006201 				ASR	R1		;;; MAKE WORD INDEX
   9141	030164				10$:
   9142	030164	012522 				MOV	(R5)+,(R2)+	;;; COPY THE BUFFER
   9143	030166	077102 				SOB	R1,10$		;;; COPY UNTIL FINISHED
   9144	030170	010060 	000004 			MOV	R0,T.HCAD(R0)	;;; SET THE CURRENT ADDRESS
   9145	030174	062760 	000012 	000004 		ADD	#T.HHDS+2,T.HCAD(R0) ;;; CORRECT IT TO POINT TO BUFFER
   9146	030202					RETURN
	030202	000207 				RTS	PC
QPRDRV	-- QUEUED PROTOCOL DRIV	MACRO M1113  03-APR-86 20:41  PAGE 172
QUEUED PROTOCOL DRIVER -- MAP DH-11 TO DM-11

   9156						.SBTTL	QUEUED PROTOCOL DRIVER -- MAP DH-11 TO DM-11
   9157
   9158					;+
   9159					; FNDDM -- LOCAL SUBROUTINE TO MAP A DH-11 LINE TO A DM-11/BB
   9160					;
   9161					; INPUTS:
   9162					;
   9163					;	R5 -- POINTS TO DATA LINE SCANNER ENTRY FOR DH-11 LINE
   9164					;
   9165					; OUTPUTS:
   9166					;
   9167					;	R4 -- POINTS TO ASSOCIATED DM-11/BB CSR
   9168					;-
   9169
   9170	030204				FNDDM:
   9171	030204	010546 				MOV	R5,-(SP)	; [5.1004] SAVE R5
   9172	030206	012704 	002742'			MOV	#DMTBL,R4	; [5.1004] POINT TO THE DM-11/BB TABLE
   9173	030212	162705 	003054'			SUB	#DHTBL,R5	; [5.1004] GET OUR DISPLACMENT INTO "DHTBL"
   9174	030216				10$:
   9175	030216	162705 	000200 			SUB	#200,R5		; [5.1004] HAVE WE FOUND OUR DH-11??
   9176	030222	100402 				BMI	20$		; [5.1004] YES -- EXIT
   9177	030224	032424 				BIT	(R4)+,(R4)+	; [5.1004] NO -- TRY NEXT DM-11/BB
   9178	030226	000773 				BR	10$		; [5.1004] SO
   9179						;
   9180	030230				20$:
   9181	030230	012605 				MOV	(SP)+,R5	; [5.1004] RESTORE R5
   9182	030232	011404 				MOV	(R4),R4		; [5.1004] GET I/O PAGE ADDRESS OF DM-11/BB
   9183	030234					RETURN			; [5.1004] TO CALLER
	030234	000207 				RTS	PC
QPRDRV	-- QUEUED PROTOCOL DRIV	MACRO M1113  03-APR-86 20:41  PAGE 173
QUEUED PROTOCOL DRIVER -- FIND LINE SPEED

   9185						.SBTTL	QUEUED PROTOCOL DRIVER -- FIND LINE SPEED
   9186					;+
   9187					; FNDSPD -- FIND LINE SPEED
   9188					;
   9189					; THIS SUBROUTINE WILL MAP THE DECIMAL LINE SPEED IN R2 TO A DH-11 LINE SPEED MASK
   9190					;
   9191					; INPUTS:
   9192					;
   9193					;	R2 -- DECIMAL LINE SPEED
   9194					;
   9195					; OUTPUTS:
   9196					;
   9197					;	R3 -- DH-11 LINE SPEED MASK
   9198					;
   9199					;	IF A MATCH CANNOT BE FOUND, THE NODE IS DEALLOCATED AND CONTROL RETURNED
   9200					;	TO THE NEXT HIGHER LEVEL.
   9201					;-
   9202
   9203	030236				FNDSPD:
   9204	030236	012705 	025244'			MOV	#SPDTBL,R5	; FIND THE ADDRESS OF THE SPEED TABLE
   9205	030242	012701 	000020 			MOV	#SPDTBZ,R1	; SET UP THE TABLE SIZE
   9206	030246	005003 				CLR	R3		; SET UP COUNTER
   9207	030250				10$:
   9208	030250	020225 				CMP	R2,(R5)+	; COMPARE AGAINST TABLE
   9209	030252	001403 				BEQ	20$		; FOUND CORRECT ENTRY -- R3 IS CORRECT WHEN FOUND
   9210	030254	005203 				INC	R3		; UPDATE R3
   9211	030256	077104 				SOB	R1,10$		; TRY NEXT ENTRY
   9212	030260	000455 				BR	FDVNMF		; CAN'T FIND SPEED -- DEALLOCATE AND EXIT
   9213						;
   9214	030262				20$:
   9215	030262	000303 				SWAB	R3		; SET IN HIGH BYTE
   9216	030264					RETURN			; RETURN TO CALLER
	030264	000207 				RTS	PC
QPRDRV	-- QUEUED PROTOCOL DRIV	MACRO M1113  03-APR-86 20:41  PAGE 174
QUEUED PROTOCOL DRIVER -- FIND DEVICE NAME

   9218						.SBTTL	QUEUED PROTOCOL DRIVER -- FIND DEVICE NAME
   9219
   9220					;+
   9221					; FDVNMM -- FIND DEVICE NAME
   9222					;
   9223					; THIS SUBROUTINE WILL RETURN A POINTER TO A DEVICE TABLE ENTRY IN R2 IF THE
   9224					; DEVICE EXISTS IN THE SYSTEM.
   9225					;
   9226					; INPUTS:
   9227					;
   9228					;	R0 -- POINTS TO THE TO11Q PACKET
   9229					;	R4 -- POINTS TO THE TO11Q PACKET
   9230					;
   9231					; OUTPUTS:
   9232					;
   9233					;	R0 -- POINTS TO THE TO11Q PACKET
   9234					;	R1 -- POINTS TO THE DEVICE (PUD) TABLE FOR THIS DEVICE
   9235					;	R2 -- POINTS TO THE DRIVER TABLE ENTRY FOR THE DEVICE
   9236					;	R4 -- POINTS TO THE TO11Q PACKET
   9237					;
   9238					; NOTE:
   9239					;
   9240					; 	IF THE DEVICE DOES NOT EXIST, "FDVNMM" ACKNOWLEGES THE PACKET
   9241					;	AND IMMEDIATELY DEQUEUES IT WITHOUT RETURNING TO THE CALLING ROUTINE
   9242					;-
   9243
   9244						.ENABL	LSB
   9245
   9246	030266				FDVNMM:
   9247	030266	016001 	000006 			MOV	E.DV(R0),R1	;FIND DEVICE
   9248	030272	016003 	000010 			MOV	E.FW(R0),R3	;FIND FIRST WORD
   9249	030276	005046 				CLR	-(SP)		;SAVE ENTRY FLAG
   9250	030300	000402 				BR	10$
   9251						;
QPRDRV	-- QUEUED PROTOCOL DRIV	MACRO M1113  03-APR-86 20:41  PAGE 175
QUEUED PROTOCOL DRIVER -- FIND DEVICE NAME

   9253						.SBTTL	QUEUED PROTOCOL DRIVER -- FIND DEVICE NAME
   9254
   9255					;+
   9256					; FDVNM -- FIND DEVICE NAME
   9257					;
   9258					; THIS ROUTINE PERFORMS EXACTLY THE SAME THE SAME FUNCTION AS "FDVNMM",
   9259					; ABOVE, EXCEPT THAT IT WILL RETURN WITH CC-C SET IF THE DEVICE DOES NOT EXIST.
   9260					;
   9261					; INPUTS:
   9262					;
   9263					;	R0 -- POINTS TO THE TO11Q PACKET
   9264					;	R1 -- CONTAINS THE DEVICE CODE FOR THE DEVICE
   9265					;	R3 -- CONTAINS THE FIRST WORD FROM THE T011Q PACKET
   9266					;	R4 -- POINTS TO THE TO11Q PACKET
   9267					;
   9268					; OUTPUTS:
   9269					;
   9270					;	R0 -- POINTS TO THE TO11Q PACKET
   9271					;	R1 -- CONTAINS THE DEVICE (PUD) OFFSET + 20 FOR THIS DEVICE
   9272					;	R2 -- POINTS TO THE DRIVER TABLE ENTRY FOR THE DEVICE
   9273					;	R4 -- POINTS TO THE TO11Q PACKET
   9274					;
   9275					; NOTE:
   9276					;
   9277					; 	IF THE DEVICE DOES NOT EXIST, THE T011Q PACKET IS ACKNOWLEDGED
   9278					;	AND CC-C IS SET FOR THE RETURN.
   9279					;-
   9280
   9281	030302				FDVNM:
   9282	030302	012746 	177777 			MOV	#-1,-(SP)	; SAVE ENTRY FLAG
   9283	030306				10$:
   9284	030306	010546 				MOV	R5,-(SP)	; SAVE REGISTERS
   9285	030310	010446 				MOV	R4,-(SP)
   9286	030312	010146 				MOV	R1,-(SP)	; SAVE DEVICE
   9287	030314	006301 				ASL	R1		; FIND THE DEVICE ADDRESS
   9288	030316	006301 				ASL	R1
   9289	030320	006301 				ASL	R1
   9290	030322	006301 				ASL	R1
   9291	030324	116105 	010044'			MOVB	.DQPBA-20+Q.TS(R1),R5 ; FIND THE SIZE OF A TABLE ENTRY
   9292	030330	016102 	010042'			MOV	.DQPBA-20+Q.DA(R1),R2 ; FIND THE TABLE HEAD ADDRESS
   9293	030334	105003 				CLRB	R3		; FIND THE LINE NUMBER
   9294	030336	000303 				SWAB	R3		; PUT IT IN LOWER ORDER OF BYTE
   9295	030340	010346 				MOV	R3,-(SP)	; SAVE LINE NUMBER
   9296	030342	126103 	010060'			CMPB	.DQPBA-20+Q.DZ(R1),R3 ; IS THIS A LEGAL NUMBER?
   9297	030346	101425 				BLOS	80$		; NO -- IGNORE IT -- NOTE THIS SETS C BIT
   9298	030350				20$:
   9299	030350	005303 				DEC	R3		; ATTEMPT TO FIND THE ADDRESS OF THE HEAD OF THE LIST
   9300	030352	100402 				BMI	30$		; FOUND IT -- QUIT -- NOTE THIS SHOULD CLEAR C
   9301	030354	060502 				ADD	R5,R2		; MULTIPLY BY TABLE ENTRY SIZE
   9302	030356	000774 				BR	20$		; AND TRY AGAIN
   9303						;
   9304	030360				30$:
   9305	030360	026627 	000002 	000004 		CMP	2(SP),#D.CDLS	; [5.1004] TERMINAL DEVICE??
   9306	030366	101003 				BHI	40$		; [5.1004] NO -- GO ON - (NOTE: CC-C CLEAR)
   9307	030370	005762 	000002 			TST	TTYEXP(R2)	; [5.1004] YES -- DOES THE TERMINAL EXIST??
   9308	030374	001412 				BEQ	80$		; [5.1004] NO -- SAY THAT IT DOES NOT
   9309	030376				40$:
QPRDRV	-- QUEUED PROTOCOL DRIV	MACRO M1113  03-APR-86 20:41  PAGE 175-1
QUEUED PROTOCOL DRIVER -- FIND DEVICE NAME

   9310	030376	032626 				BIT	(SP)+,(SP)+	; [5.1004] YES -- CLEAR STACK
   9311	030400				50$:
   9312	030400	012604 				MOV	(SP)+,R4
   9313	030402	012605 				MOV	(SP)+,R5	; RESTORE REGISTERS
   9314	030404	005226 				INC	(SP)+		; REMOVE THE ENTRY FLAG
   9315	030406	103001 				BCC	60$		; [5.1004] JUST EXIT IF CC-C IS CLEAR
   9316	030410	001001 				BNE	70$		; [5.1004] DEQUEUE IMMEDIATELY IF WE MUST
   9317	030412				60$:
   9318	030412					RETURN			; RETURN TO CALLER
	030412	000207 				RTS	PC
   9319					;
   9320					; HERE TO SIMPLY DEALLOCATE TO11Q PACKET AND RETURN TO TOP OF TASK
   9321					;
   9322	030414				FDVNMF:
   9323	030414				70$:
   9324	030414	005726 				TST	(SP)+		; FLUSH RETURN
   9325	030416	000137 	027472'			JMP	DEANOD		; DEALLOCATE AND START NEXT PACKET
   9326						;
   9327					;
   9328					; HERE TO ACKNOWLEDGE NON-EXISTENT DEVICE
   9329					;
   9330	030422				80$:
   9331	030422	012604 				MOV	(SP)+,R4	; SET LINE NUMBER
   9332	030424	012603 				MOV	(SP)+,R3	; SET DEVICE NAME
   9333	030426	012701 	000017 			MOV	#BC.SAK,R1	; ACKNOWLEDGE PACKET
   9334	030432					CALL	..STFC		; START FUNCTION
	030432	004737 	046714'			JSR	PC,..STFC
   9335	030436	000261 				SEC			; SET ERROR
   9336	030440	000757 				BR	50$		; AND RETURN
   9337						;
   9338
   9339						.DSABL	LSB
QPRDRV	-- QUEUED PROTOCOL DRIV	MACRO M1113  03-APR-86 20:41  PAGE 176
QUEUED PROTOCOL DRIVER -- FIND DEVICE NAME

   9341
   9342						.TITLE	DTEDRV -- DTE-20 DRIVER FOR RSX-20F
   9343						.SBTTL	DTE-20 DRIVER -- COPYRIGHT STATEMENT
   9344	030442					IDENT$	14,31
						.IDENT	/014310/
   9345
   9346					;
   9347					;              	              COPYRIGHT (C) 1975, 1984, 1985 BY
   9348					;                     DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
   9349					;			ALL RIGHTS RESERVED.
   9350					;       THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE  USED  AND  COPIED
   9351					;       ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
   9352					;       OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR ANY OTHER COPIES THERE-
   9353					;       OF  MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
   9354					;       NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
   9355					;
   9356					;       THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT
   9357					;       NOTICE  AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
   9358					;       CORPORATION.
   9359					;
   9360					;       DIGITAL ASSUMES NO RESPONSIBILITY FOR THE  USE  OR  RELIABILITY  OF  ITS
   9361					;       SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
   9362					;
   9363					;	MODULE:		DTE-20 DRIVER FOR RSX-20F
   9364					;
   9365					;	VERSION:	14-31
   9366					;
   9367					;	AUTHOR:		ROLAND BELANGER
   9368					;
   9369					;	DATE:		15-MAR-80
   9370					;
   9371					;	THIS MODULE CONTAINS:
   9372					;
   9373					;		1) DTE-20 INTERRUPT SERVICE
   9374					;		2) DEVICE DEPENDENT DTE-20 SERVICE
   9375					;		3) DEVICE DEPENDENT QUEUED PROTOCOL SERVICE
   9376					;
   9377					; THIS MODULE WAS SPLIT OUT OF "QPRDTE.MAC" AND REWRITTEN AS A PART OF
   9378					; TCO 4.1.1121
   9379					;
   9380					; TCO 4.1.1137	05-APR-80	R. BELANGER	LIMIT LENGTH OF TO-11 QUEUE
   9381					; TCO 5.1041	18-MAY-80	S. LEAPLINE	CHECK FREE POOL BYTES LEFT
   9382
   9383						.MCALL	CALL,RETURN,.CRASH,$DEF
   9384
   9385	030442					$DEF
DTEDRV -- DTE-20 DRIVER FOR RSX	MACRO M1113  03-APR-86 20:41  PAGE 177
DTE-20 DRIVER -- DTE-20 INTERRUPT HEAD

   9387						.SBTTL	DTE-20 DRIVER -- DTE-20 INTERRUPT HEAD
   9388
   9389					;+
   9390					; .DTINT -- DTE-20 INTERRUPT HEAD
   9391					;
   9392					; THIS IS THE HEAD OF THE DTE-20 INTERRUPT SERVICE.  ALL DTE-20 INTERRUPTS ARE
   9393					; VECTORED HERE, AND ALL DTE-20 INTERRUPTS ARE DISMISSED FROM THIS ROUTINE.
   9394					;
   9395					; SINCE A DTE-20 CAN HAVE MULTIPLE INTERRUPTS PENDING, AN ATTEMPT TO DISMISS
   9396					; ANY GIVEN INTERRUPT FORCES A SCAN FOR ALL OTHER POSSIBLE INTERRUPTS BEFORE
   9397					; THE DISMISSAL IS GRANTED.
   9398					;
   9399					; INTERRUPTS SERVICED HERE ARE:
   9400					;
   9401					;	TO-10 TRANSFER DONE
   9402					;	TO-11 TRANSFER DONE
   9403					;	DOORBELL
   9404					;
   9405					; ERRORS HANDLED HERE ARE:
   9406					;
   9407					;	TO-10 DONE ERROR TERMINATION (TET)
   9408					;	PDP-11 MEMORY PARITY ERROR ON BYTE TRANSFER (TET)
   9409					;	TO-11 DONE ERROR TERMINATION