Google
 

Trailing-Edge - PDP-10 Archives - AP-4178E-RM - swskit-sources/rsx20f.lis
There are no other files named rsx20f.lis in the archive.
LC -- LOW CORE FOR RSX20F	MACRO M1108  16-DEC-77 11:28
TABLE OF CONTENTS

    5- 230	TRAP VECTORS
    6- 324	TRAP SERVICE FOR COMMON PROGRAM TRAPS
    7- 440	CRASH ROUTINE
    7- 524	EXEC MODULE ONE -- TITLE PAGE
    8- 584	EXEC MODULE ONE -- SYSTEM NOTES
    9- 639	EXEC MODULE ONE -- GLOSSARY
    9- 664	MACRO CALLS (MCALL)
   10- 676	EXEC MODULE ONE -- SYMBOLIC DEFINITIONS
   26-1246	EXEC MODULE ONE -- NUL TASK
   28-1324	EXEC MODULE TWO -- SERVICE FOR "EMT" & "TRAP" INSTRUCTIONS
   29-1590	EXEC MODULE THREE -- TITLE PAGE
   30-1626	EXEC MODULE THREE -- SCAN OF ACTIVE TASK LIST
   37-2017	EXEC MODULE NINE -- TITLE PAGE
   38-2054	EXEC MODULE NINE -- COMMON RETURN TO INTERRUPTED PROGRAM
   43-2526	SECONDARY PROTOCOL -- BOOT PROTOCOL SERVICE
   44-2787	POWERFAIL -- POWER DOWN
   45-2841	POWERFAIL -- POWER UP ENTRY
   46-2890	POWERFAIL -- POWER FAIL RESTART
   47-2988	DTE20 EMT DISPATCH DECODER
   48-3061	$DORBL -- RING THE KL-10 DOORBELL
   49-3116	$DTEOF -- TURN THE DTE20 OFF
   50-3156	$DTEON -- TURN THE DTE20 ON
   51-3271	$DPMYG -- DEPOSIT INTO MY GENERAL SECTION
   52-3314	$EXMYG -- EXAMINE MY GENERAL SECTION
   53-3346	$EXMYN -- EXAMINE MY SECTION FOR PROCESSOR N
   54-3378	$DPMYN -- DEPOSIT INTO MY SECTION FOR COMM WITH PROCESSOR N
   55-3410	$EXHSG -- EXAMINE HIS GENERAL COMMUNICATION SECTION
   56-3444	$EXHSM -- EXAMINE HIS SECTION FOR COMMUNICATING WITH ME
   57-3476	$KLDFX -- EXECUTE A DIAGNOSTIC FUNCTION
   58-3562	$PRVEX -- PRIVILEDGED EXAMINE
   59-3599	$PRVDP -- PRIVILEDGED DEPOSIT
   60-3631	$RWDRG -- READ/WRITE DIAGNOSTIC REGISTER
   61-3666	FNDCPU -- INTERNAL SUBROUTINE FIND THE DTE NUMBER
   62-3704	FNDDTE -- INTERNAL SUBROUTINE TO FIND THE DTE20
   63-3732	CESCHK -- CHECK FOR CLOCK ERROR STOP
   64-3788	DIRECTIVE -- ASSIGN LUN
   65-3929	DIRECTIVE -- GET LUN INFORMATION
   66-4033	DIRECTIVE -- GET TIME PARAMETERS
   67-4146	DIRECTIVE -- CLEAR EVENT FLAG
   68-4196	DIRECTIVE -- SET EVENT FLAG
   69-4246	DIRECTIVE -- DECLARE SIGNIFICANT EVENT
   70-4307	DIRECTIVE -- READ EVENT FLAG
   71-4355	DIRECTIVE -- READ ALL EVENT FLAGS
   72-4398	DIRECTIVE -- WAITFOR SINGLE EVENT FLAG
   73-4461	DIRECTIVE -- WAITFOR LOGICAL 'OR' OF FLAGS
   74-4553	DIRECTIVE -- WAITFOR NEXT SIGNIFICANT EVENT
   75-4625	DIRECTIVE -- MARK TIME
   76-4760	DIRECTIVE -- CANCEL MARK-TIME REQUESTS
   77-4857	DIRECTIVE -- SUSPEND EXECUTION
   78-4897	DIRECTIVE -- RESUME TASK EXECUTION
   79-5003	DIRECTIVE -- TASK EXIT
   80-5083	DIRECTIVE -- QUEUE I/O
   81-5459	DIRECTIVE -- SEND DATA
   82-5515	DIRECTIVE -- SEND AND REQUEST OR RESUME
   84-5740	DIRECTIVE -- RECEIVE DATA
   85-5777	DIRECTIVE -- RECEIVE DATA OR EXIT
   86-5818	DIRECTIVE -- RECEIVE DATA OR SUSPEND
DMSDV	- SPECIFY SST TABLE DIR	MACRO M1108  16-DEC-77 11:28
TABLE OF CONTENTS

   87-5995	DIRECTIVE -- SPECIFY SST VECTOR TABLE FOR TASK
   88-6084	DIRECTIVE -- SPECIFY POWER FAIL AST
   90-6177	DIRECTIVE -- TASK SCHEDULING -- REQUEST
   91-6337	DIRECTIVE -- GET TASK PARAMETERS
   92-6461	DIRECTIVE -- GET PARTITION PARAMETERS
   93-6602	CLOCK TICK RECOGNITION
   96-6786	QUEUED PROTOCOL -- PROTOCOL PACKET SERVICE DISPATCH
   97-6863	QUEUED PROTOCOL -- ENABLE/DISABLE SENDALL
   98-6886	QUEUED PROTOCOL -- HANGUP
   99-6945	QUEUED PROTOCOL -- SET LINE ALLOCATION
  100-7034	QUEUED PROTOCOL -- STOP LINE INPUT
  101-7121	QUEUED PROTOCOL -- XOFF
  102-7182	QUEUED PROTOCOL -- XON
  103-7283	QUEUED PROTOCOL -- HERE IS INITIAL STATUS
  104-7322	QUEUED PROTOCOL -- RETURN TIME OF DAY
  105-7347	QUEUED PROTOCOL -- STRING DATA
  106-7436	QUEUED PROTOCOL -- LINE NUMBER - CHARACTER
  107-7482	QUEUED PROTOCOL -- RETURN TIME OF DAY
  108-7508	QUEUED PROTOCOL -- FLUSH DEVICE OUTPUT QUEUE
  109-7526	QUEUED PROTOCOL -- RECIEVE KLINIK PARAMETERS
  110-7548	QUEUED PROTOCOL -- SENDALL
  111-7710	QUEUED PROTOCOL -- COPY BUFFER
  112-7751	DTE20 DRIVER -- DTE20 INTERRUPT SERVICE
  113-7799	DTE20 DRIVER -- TO TEN DONE SERVICE
  114-7870	DTE20 DRIVER -- TO ELEVEN DONE SERVICE
  115-8024	DTE20 DRIVER -- DOORBELL SERVICE
  116-8150	DTE20 DRIVER -- START TO TEN QUEUE
  119-8414	TTY DRIVER -- TTINI (TTY QUEUE SERVICE)
  120-8448	TTY DRIVER -- TIMEOUT SERVICE
  121-8486	TTY DRIVER -- KL KEEP ALIVE SERVICE
  122-8526	TTY DRIVER -- CTY SERVICE
  123-8623	TTY DRIVER -- $DHOUT (DH11 OUTPUT INTERRUPT)
  126-8764	TTY DRIVER -- $TTOUT (DL11 OUTPUT INTERRUPT)
  127-9068	TTY DRIVER -- .KW11S (KW11 LINE CLOCK INTERRUPT)
  127-9080	TTY DRIVER -- $DHINP (DH11 INPUT INTERRUPT)
  128-9164	TTY DRIVER -- $TTINP (DL11 INPUT INTERRUPT)
  129-9219	TTY DRIVER -- DLINT (DL11-E DATASET INTERRUPT SERVICE)
  130-9269	TTY DRIVER -- TTCTY (CTY SERVICE)
  131-9422	TTY DRIVER -- DHSAV (DH11 REGISTER SAVE/RESTORE CO-ROUTINE)
  132-9475	TTY DRIVER -- .DHSPD (DH-11 AUTO-BAUD SUPPORT)
  133-9536	TTY DRIVER -- $DMINT (DM11 MODEM CONTROL INTERRUPT)
  134-9596	TTY DRIVER -- .DMHUP (DM11 HANGUP)
  135-9626	TTY DRIVER -- .DLHUP (DL11E HANGUP)
  136-9669	TTY DRIVER -- .DLTMO (DL11-E MODEM CONTROL TIMEOUT)
  137-9749	TTY DRIVER -- .DMTMO (DM11 MODEM CONTROL TIMEOUT)
  140-9982	SCOMM MODULE -- COMMON GLOBAL DATA
  141-0091	SCOMM -- COMM, PROCESSOR, AND QUEUE POINTERS
  142-0176	SCOMM -- SYSTEM TASK DIRECTORY (STD)
  143-0285	SCOMM -- ACTIVE TASK LIST (ATL)
  144-0337	SCOMM -- TASK PARTITION DIRECTORY (TPD)
  145-0386	SCOMM -- FREE POOL POINTERS
  146-0417	SCOMM -- CLOCK REQUEST LIST
  147-0437	SCOMM -- DTE20 REQUEST LIST
  148-0455	SCOMM -- DEVICE QUEUE POINTERS
  149-0492	SCOMM -- TERMINAL DRIVER TABLES
  150-0553	SCOMM -- LOGICAL UNIT TABLES
  151-0647	SCOMM MODULE -- INITLM (INITIALIZATION)
SCOMM	- COMMON DATA AND SUBRO	MACRO M1108  16-DEC-77 11:28
TABLE OF CONTENTS

  152-0693	SCOMM MODULE -- .CEFN   (CONVERT EFN)
  153-0751	SCOMM MODULE -- .CKDEL  (CLOCK DELETE)
  154-0783	SCOMM MODULE -- .DTDEL  (DTE20 DELETE)
  155-0823	SCOMM MODULE -- ..IODN	(SUBROUTINE TO COMPLETE I/O)
  156-0875	SCOMM MODULE -- ..DQRN	(DEQUEUE A NORMAL REQUEST)
  157-0985	SCOMM MODULE -- ..SEFN	(SET EVENT FLAG)
  158-1022	SCOMM MODULE -- DIV216   (DIV R2 BY 16)
  159-1045	SCOMM MODULE -- ..NDEL	(NODE DELETE)
  160-1071	SCOMM MODULE -- ..IPRI	(INSERT NODE BY PRIORITY)
  161-1106	SCOMM MODULE -- ..NADD	(NODE ADD)
  162-1135	SCOMM MODULE -- ..PICK	(PICK A NODE)
  163-1177	SCOMM MODULE -- ..ENB0	(ENABLE TASK SWITCHING)
  164-1220	SCOMM MODULE -- ..FSTD	(FIND STD ENTRY)
  165-1272	SCOMM MODULE -- ..ALCB/..DECB/..ALC2/..DEC2	(ALLOCATE/DEALLOCATE CORE)
  167-1409	SCOMM MODULE -- ..ALOW	(ALLOCATE OR WAIT)
  168-1428	SCOMM MODULE -- ..STTY	(START TTY OUTPUT)
  169-1580	SCOMM MODULE -- ..STPT	(STOP TTY)
  170-1676	SCOMM MODULE -- ..STCH	(STORE CHARACTER IN TO 10 Q)
  171-1713	SCOMM MODULE -- ..SACK	(SEND ACKNOWLEDGEMENT)
  172-1753	SCOMM MODULE -- ..STFC	(STORE FUNCTION)
  173-1806	SCOMM MODULE -- ..STIN	(START INDIRECT FUNCTION)
  174-1880	SCOMM MODULE -- ..STQ	(STORE IN TO 10 Q)
  175-1945	SCOMM MODULE -- WFED	(WAIT FOR EXAMINE/DEPOSIT)
  176-2027	SCOMM MODULE -- SWFED	(START AND WAIT FOR EX/DEP)
  177-2075	SCOMM MODULE -- ..DTSP	(STOP DTE PROTOCOLS)
  178-2100	SCOMM MODULE -- ..DTP2	(START SECONDARY PROTOCOL)
  179-2129	SCOMM MODULE -- ..DTP1 (START PRIMARY PROTOCOL)
  180-2151	SCOMM MODULE -- ..VXFR	(VALADATE TRANSFER)
  181-2297	SCOMM MODULE -- ..BLXO	(BLOCK OUTPUT) ..BLXI  (BLOCK INPUT)
  182-2385	SCOMM MODULE -- ..VTOL	(MAP VIRTUAL TO LOGICAL BLOCK, EXTERNAL)
  183-2467	SCOMM MODULE -- ..VVLL	(MAP VIRTUAL TO LOGICAL BLOCK, INTERNAL)
RSXFC	-- RSX20F PARAMETER FIL	MACRO M1108  16-DEC-77 11:28  PAGE 1


      1						.TITLE	RSXFC	-- RSX20F PARAMETER FILE (TOPS-20 SYSTEM DEFINITION)
      2						.IDENT	/010100/
      3					;
      4
      5					;                             COPYRIGHT (C) 1977, 1978 BY
      6					;                     DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
      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
     22					;
     23					; VERSION 10-10
     24					;
     25					; ALAN D. PECKHAM  19-APR-77
     26					;
     27					; MODIFIED BY:
     28					;
     29					; FUNCTION: THIS MODULE PROVIDES THE PARAMETERS FOR ASSEMBLY OF RSX20F FOR
     30					;  THE TOPS20 SYSTEM.
     31					;
     32					; EQUATED SYMBOLS
     33					;
     34		000001 				$TOP20	=1	; FOR TOPS-20 SYSTEM
     35
     36		000001 				$LP20	=1	; INCLUDE LP20 DRIVER
     37		000001 				$CD11	=1	; INCLUDE CD11 CARD READER DRIVER
     38		000001 				$RP04	=1	; INCLUDE RP04 DISK DRIVER
     39		000001 				$FE	=1	; INCLUDE FE PSEUDO-DEVICE DRIVER
     40		000001 				$F11	=1	; INCLUDE FILES-11 ACP
     41		000001 				$DH11	=1	; INCLUDE DH11 DRIVER
     42		000001 				$DBDTE	=1	; INCLUDE DTE20 DEBUGGING CODE
     43		000001 				$DTE	=1	; INCLUDE DTE20 DTE DRIVER
     44
     45					.IF DF	$ARPA
     46						$TOP20	=1	; ASSEMBLE TOPS-20 VERSION OF RSX-20F
     47					.ENDC			; $ARPA
     48
     49					.IF DF	$TOP10
     50						$DTA	=1	; INCLUDE DECTAPE DRIVER
     51					.ENDC			; $TOP10
     52
     53					.IF NDF	$ARPA
     54					.IF DF	$TOP20
     55		000001 				$RX11	=1	; INCLUDE FLOPPY DRIVER
     56					.ENDC			; $TOP20
     57					.ENDC			; $ARPA
RSXFC	-- RSX20F PARAMETER FIL	MACRO M1108  16-DEC-77 11:28  PAGE 1-1


     58
     59					.IF DF	$ARPA&$TOP20
     60						$DTA	=1	; INCLUDE DECTAPE DRIVER FOR ARPA
     61					.ENDC			; $ARPA&$TOP20
RSX20F	-- RESIDENT EXECUTIVE (	MACRO M1108  16-DEC-77 11:28  PAGE 2


     63						.TITLE	RSX20F	-- RESIDENT EXECUTIVE (SYSTEM DEFINITION)
     64						.IDENT	/012120/
     65						.ENABL	AMA
     66						.LIST	MEB
     67						.NLIST	CND
     68					;
     69					;                             COPYRIGHT (C) 1975, 1978 BY
     70					;                     DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
     71					;
     72					;       THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE  USED  AND  COPIED
     73					;       ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
     74					;       OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR ANY OTHER COPIES THERE-
     75					;       OF  MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
     76					;       NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
     77					;
     78					;       THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT
     79					;       NOTICE  AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
     80					;       CORPORATION.
     81					;
     82					;       DIGITAL ASSUMES NO RESPONSIBILITY FOR THE  USE  OR  RELIABILITY  OF  ITS
     83					;       SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
     84					;
     85					; R.  MCLEAN   19-MAR-75
     86					;
     87					;  VERSION 12-12
     88					;
     89					; MODIFIED BY:
     90					;
     91					; FUNCTION: THIS MODULE PROVIDES THE PARAMETERS FOR ASSEMBLY OF THE RSX20F EXEC.
     92					;
     93					; SET VERSION OF RSX20F EXEC HERE
     94					;
     95		000012 			RSX$$V	=	12		; VERSION 12
     96		000012 			RSX$$E	=	12		; EDIT 12
     97					;
     98					; RELEASE VERSION
     99					;
    100		000126 			RSX$$K	=	'V		; KEY FOR RELEASE
    101		000000 			RSX$$F	=	0		; DEFINE FORM AS NULL
    106		000102 			RSX$$F	=	'B		; TOPS-20 FORM OF THE EXEC.
    111					;
    112					; DTE20 REGISTER OFFSETS
    113					;
    114		000036 			DAG3	=36
    115		000034 			STATD	=34
    116		000032 			DAG2	=32
    117		000030 			DAG1	=30
    118		000022 			T11AD	=22
    119		000020 			T10AD	=20
    120		000016 			T11BC	=16
    121		000010 			TNAD1	=10
    122		000012 			TNAD2	=12
    123		000006 			DXWD1	=6
    124		000004 			DXWD2	=4
    125		000002 			DXWD3	=2
RSX20F	-- RESIDENT EXECUTIVE (	MACRO M1108  16-DEC-77 11:28  PAGE 3


    127					;+
    128					; MACRO TO SET IDENT FOR EXEC MODULES.
    129					; FORMAT OF CALL IS:
    130					;	IDENT$	VERSION,EDIT
    131					; OR
    132					;	IDENT$	VERSION,EDIT,RSX$$F
    133					; IF MODULE CODING CHANGES WITH DIFFERENT FORMS
    134					;-
    135
    136						.MACRO	IDENT$ VER,EDT,FRM,NUM
    137						.IF	B,NUM
    138						.IF	B,FRM
    139						IDENT$	\VER,\EDT,0,0
    140						.IFF
    141						.IF	EQ,<FRM-'A>
    142						IDENT$	\VER,\EDT,A,0
    143						.IFF
    144						.IF	EQ,<FRM-'B>
    145						IDENT$	\VER,\EDT,B,0
    146						.IFF
    147						IDENT$	\VER,\EDT,C,0
    148						.ENDC
    149						.ENDC
    150						.ENDC
    151						.MEXIT
    152						.IFF
    153						.IF	GE,VER-10
    154						.IF	GE,EDT-10
    155						.LIST
    156						.IDENT	/'FRM'VER'EDT'0/
    157						.NLIST
    158						.IFF
    159						.LIST
    160						.IDENT	/'FRM'VER'0'EDT'0/
    161						.NLIST
    162						.ENDC
    163						.IFF
    164						.IF	GE,EDT-10
    165						.LIST
    166						.IDENT	/'FRM'0'VER'EDT'0/
    167						.NLIST
    168						.IFF
    169						.LIST
    170						.IDENT	/'FRM'0'VER'0'EDT'0/
    171						.NLIST
    172						.ENDC
    173						.ENDC
    174						.ENDC
    175						.ENDM	IDENT$
LC -- LOW CORE FOR RSX20F	MACRO M1108  16-DEC-77 11:28  PAGE 4


    177						.TITLE	LC -- LOW CORE FOR RSX20F
    178	000000					IDENT$	10,RSX$$E,RSX$$F
						.IDENT	/B10120/
    179					;
    180					;
    181					;                             COPYRIGHT (C) 1975, 1978 BY
    182					;                     DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
    183					;
    184					;       THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE  USED  AND  COPIED
    185					;       ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
    186					;       OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR ANY OTHER COPIES THERE-
    187					;       OF  MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
    188					;       NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
    189					;
    190					;       THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT
    191					;       NOTICE  AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
    192					;       CORPORATION.
    193					;
    194					;       DIGITAL ASSUMES NO RESPONSIBILITY FOR THE  USE  OR  RELIABILITY  OF  ITS
    195					;       SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
    196					;
    197					;		MODULE: LOW CORE
    198					;
    199					;		VERSION: 10-04
    200					;
    201					;		AUTHOR: R. MCLEAN
    202					;
    203					;		DATE: 19 JUL 75
    204					;
    205					;
    206					;	THIS MODULE CONTAINS:
    207					;
    208					;	1 -- CODE TO SERVICE LOW CORE TRAPS AND ERRORS
    209					;
    210					; MODIFICATIONS:
    211					;
    212					;	NO.	DATE		PROGRAMMER	PURPOSE
    213					;	---	----		----------	-------
    214					;	001	03-FEB-77	R. BELANGER	ADD DL11E INTERRUPT VECTORS
    215					;	002	15-MAR-77	R. BELANGER	LIMIT SIZE OF PATCH SPACE
    216					;						TO 40 BYTES AND DEFINE SYMBOL .PAT..
    217					;	003	18-AUG-77	R. BELANGER	DIFFERENTIATE BETWEEN DTE-20
    218					;						BUS TIMEOUTS AND OTHERS
    219					;	004	28-AUG-77	R. BELANGER	LOAD CRASH CODE INTO 0 AND 2
    220					;
    221					;	MACRO CALLS
    222					;
    223						.MCALL	.CRASH,MFPS,$DEF,CALL
    224	000000					$DEF
    225					;
    226					;	EQUATED SYMBOLS:
    227					;
    228		000040 				PATSIZ==40			; +++002 SIZE OF PATCH SPACE
LC -- LOW CORE FOR RSX20F	MACRO M1108  16-DEC-77 11:28  PAGE 5
TRAP VECTORS

    230						.SBTTL	TRAP VECTORS
    231					;
    232					;	MACRO FOR GENERATING LOW CORE
    233					;
    234						.MACRO	PSW	PRI,TRPADR,UNIT
    235						.IF	B,<TRPADR>
    236						.WORD	.-LOWCOD+1
    237						.IFF
    238						.WORD	TRPADR
    239						.ENDC		; IFB <TRPADR>
    240						.IF	B,<UNIT>
    241						.WORD	0+<40*PRI>+4000
    242						.IFF
    243						.WORD	UNIT+<40*PRI>+4000
    244						.ENDC		; IFB <UNIT>
    245						.ENDM		; PSW
    246					;
    247		000000'			LOWCOD==.
    248	000000					PSW	6		;ILLEGAL INTERRUPT
	000000	000001 				.WORD	.-LOWCOD+1
	000002	004300 				.WORD	0+<40*6>+4000
    249	000004					PSW	7,COMTRP,0	;TRAP TO 4 (TIMOUT)
	000004	001000'				.WORD	COMTRP
	000006	004340 				.WORD	0+<40*7>+4000
    250	000010					PSW	7,COMTRP,2	;RESERVED INSTRUCTION
	000010	001000'				.WORD	COMTRP
	000012	004342 				.WORD	2+<40*7>+4000
    251	000014					PSW	6,COMTRP,4	;T BIT OR BPT TRAP
	000014	001000'				.WORD	COMTRP
	000016	004304 				.WORD	4+<40*6>+4000
    252	000020					PSW	6,COMTRP,6	;IOT TRAP
	000020	001000'				.WORD	COMTRP
	000022	004306 				.WORD	6+<40*6>+4000
    253	000024					PSW	7,.PWRDN	;POWER FAIL (POWER DOWN)
	000024	007006'				.WORD	.PWRDN
	000026	004340 				.WORD	0+<40*7>+4000
    254	000030					PSW	7,EMTTRP,STXDX	;EMT TRAP
	000030	002352'				.WORD	EMTTRP
	000032	004340 				.WORD	STXDX+<40*7>+4000
    255	000034					PSW	6,.DRSRN	;TRAP TRAP
	000034	002666'				.WORD	.DRSRN
	000036	004300 				.WORD	0+<40*6>+4000
    256		000004 				.REPT	4
    257						PSW	6		;ILLEGAL INTERRUPTS
    258						.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
    259	000060					PSW	6,$TTINP,0	;TTY LINE 0 INPUT (CTY)
	000060	026216'				.WORD	$TTINP
	000062	004300 				.WORD	0+<40*6>+4000
    260	000064					PSW	6,$TTOUT,0	;TTY LINE 0 OUTPUT (CTY)
LC -- LOW CORE FOR RSX20F	MACRO M1108  16-DEC-77 11:28  PAGE 5-1
TRAP VECTORS

	000064	024530'				.WORD	$TTOUT
	000066	004300 				.WORD	0+<40*6>+4000
    261		000002 				.REPT	2.
    262						PSW	6		;ILLEGAL TRAPS
    263						.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
    264					;
    265	000100					PSW	6,.KW11S	;CLOCK INTERRUPT
	000100	025750'				.WORD	.KW11S
	000102	004300 				.WORD	0+<40*6>+4000
    266		000002 				.REPT	2
    267						PSW	6
    268						.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
    269	000114					PSW	7,.PARER	;PARITY ERROR
	000114	001254'				.WORD	.PARER
	000116	004340 				.WORD	0+<40*7>+4000
    270		000017 				.REPT	15.
    271						PSW	6		;EMERGENCY INTERRUPT
    272						.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
    276	000214					PSW	6
LC -- LOW CORE FOR RSX20F	MACRO M1108  16-DEC-77 11:28  PAGE 5-2
TRAP VECTORS

	000214	000215 				.WORD	.-LOWCOD+1
	000216	004300 				.WORD	0+<40*6>+4000
    278		000002 				.REPT	2.
    279						PSW	6
    280						.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
    281	000230					PSW	4,$CDINT
	000230	000000G				.WORD	$CDINT
	000232	004200 				.WORD	0+<40*4>+4000
    282		000004 				.REPT	4.
    283						PSW	6
    284						.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
    285	000254					PSW	4,.DBINT
	000254	000000G				.WORD	.DBINT
	000256	004200 				.WORD	0+<40*4>+4000
    286	000260					PSW	6
	000260	000261 				.WORD	.-LOWCOD+1
	000262	004300 				.WORD	0+<40*6>+4000
    288	000264					PSW	6,$DXINT
	000264	000000G				.WORD	$DXINT
	000266	004300 				.WORD	0+<40*6>+4000
    292	000270					PSW	6
	000270	000271 				.WORD	.-LOWCOD+1
	000272	004300 				.WORD	0+<40*6>+4000
    293	000274					PSW	6
	000274	000275 				.WORD	.-LOWCOD+1
	000276	004300 				.WORD	0+<40*6>+4000
    294	000300					PSW	6,$TTINP,1	; +++001 DL11E # 0 INPUT (KLINIK)
	000300	026216'				.WORD	$TTINP
	000302	004301 				.WORD	1+<40*6>+4000
    295	000304					PSW	6,$TTOUT,1	; +++001 DL11E # 0 OUTPUT (KLINIK)
	000304	024530'				.WORD	$TTOUT
	000306	004301 				.WORD	1+<40*6>+4000
    296	000310					PSW	6
	000310	000311 				.WORD	.-LOWCOD+1
	000312	004300 				.WORD	0+<40*6>+4000
    297	000314					PSW	6
	000314	000315 				.WORD	.-LOWCOD+1
	000316	004300 				.WORD	0+<40*6>+4000
    298						.IRP	.U,<0,1,2,3,4,5,6,7,10,11,12,13,14,15,16>
    299						PSW	6,$DMINT,.U	;DM11-BB
    300						PSW	6
    301						PSW	6,$DHINP,.U	;DH11
    302						PSW	6,$DHOUT,.U
    303						.ENDM
	000320	027506'				.WORD	$DMINT
LC -- LOW CORE FOR RSX20F	MACRO M1108  16-DEC-77 11:28  PAGE 5-3
TRAP VECTORS

	000322	004300 				.WORD	0+<40*6>+4000
	000324	000325 				.WORD	.-LOWCOD+1
	000326	004300 				.WORD	0+<40*6>+4000
	000330	025754'				.WORD	$DHINP
	000332	004300 				.WORD	0+<40*6>+4000
	000334	024126'				.WORD	$DHOUT
	000336	004300 				.WORD	0+<40*6>+4000
	000340	027506'				.WORD	$DMINT
	000342	004301 				.WORD	1+<40*6>+4000
	000344	000345 				.WORD	.-LOWCOD+1
	000346	004300 				.WORD	0+<40*6>+4000
	000350	025754'				.WORD	$DHINP
	000352	004301 				.WORD	1+<40*6>+4000
	000354	024126'				.WORD	$DHOUT
	000356	004301 				.WORD	1+<40*6>+4000
	000360	027506'				.WORD	$DMINT
	000362	004302 				.WORD	2+<40*6>+4000
	000364	000365 				.WORD	.-LOWCOD+1
	000366	004300 				.WORD	0+<40*6>+4000
	000370	025754'				.WORD	$DHINP
	000372	004302 				.WORD	2+<40*6>+4000
	000374	024126'				.WORD	$DHOUT
	000376	004302 				.WORD	2+<40*6>+4000
	000400	027506'				.WORD	$DMINT
	000402	004303 				.WORD	3+<40*6>+4000
	000404	000405 				.WORD	.-LOWCOD+1
	000406	004300 				.WORD	0+<40*6>+4000
	000410	025754'				.WORD	$DHINP
	000412	004303 				.WORD	3+<40*6>+4000
	000414	024126'				.WORD	$DHOUT
	000416	004303 				.WORD	3+<40*6>+4000
	000420	027506'				.WORD	$DMINT
	000422	004304 				.WORD	4+<40*6>+4000
	000424	000425 				.WORD	.-LOWCOD+1
	000426	004300 				.WORD	0+<40*6>+4000
	000430	025754'				.WORD	$DHINP
	000432	004304 				.WORD	4+<40*6>+4000
	000434	024126'				.WORD	$DHOUT
	000436	004304 				.WORD	4+<40*6>+4000
	000440	027506'				.WORD	$DMINT
	000442	004305 				.WORD	5+<40*6>+4000
	000444	000445 				.WORD	.-LOWCOD+1
	000446	004300 				.WORD	0+<40*6>+4000
	000450	025754'				.WORD	$DHINP
	000452	004305 				.WORD	5+<40*6>+4000
	000454	024126'				.WORD	$DHOUT
	000456	004305 				.WORD	5+<40*6>+4000
	000460	027506'				.WORD	$DMINT
	000462	004306 				.WORD	6+<40*6>+4000
	000464	000465 				.WORD	.-LOWCOD+1
	000466	004300 				.WORD	0+<40*6>+4000
	000470	025754'				.WORD	$DHINP
	000472	004306 				.WORD	6+<40*6>+4000
	000474	024126'				.WORD	$DHOUT
	000476	004306 				.WORD	6+<40*6>+4000
	000500	027506'				.WORD	$DMINT
	000502	004307 				.WORD	7+<40*6>+4000
LC -- LOW CORE FOR RSX20F	MACRO M1108  16-DEC-77 11:28  PAGE 5-4
TRAP VECTORS

	000504	000505 				.WORD	.-LOWCOD+1
	000506	004300 				.WORD	0+<40*6>+4000
	000510	025754'				.WORD	$DHINP
	000512	004307 				.WORD	7+<40*6>+4000
	000514	024126'				.WORD	$DHOUT
	000516	004307 				.WORD	7+<40*6>+4000
	000520	027506'				.WORD	$DMINT
	000522	004310 				.WORD	10+<40*6>+4000
	000524	000525 				.WORD	.-LOWCOD+1
	000526	004300 				.WORD	0+<40*6>+4000
	000530	025754'				.WORD	$DHINP
	000532	004310 				.WORD	10+<40*6>+4000
	000534	024126'				.WORD	$DHOUT
	000536	004310 				.WORD	10+<40*6>+4000
	000540	027506'				.WORD	$DMINT
	000542	004311 				.WORD	11+<40*6>+4000
	000544	000545 				.WORD	.-LOWCOD+1
	000546	004300 				.WORD	0+<40*6>+4000
	000550	025754'				.WORD	$DHINP
	000552	004311 				.WORD	11+<40*6>+4000
	000554	024126'				.WORD	$DHOUT
	000556	004311 				.WORD	11+<40*6>+4000
	000560	027506'				.WORD	$DMINT
	000562	004312 				.WORD	12+<40*6>+4000
	000564	000565 				.WORD	.-LOWCOD+1
	000566	004300 				.WORD	0+<40*6>+4000
	000570	025754'				.WORD	$DHINP
	000572	004312 				.WORD	12+<40*6>+4000
	000574	024126'				.WORD	$DHOUT
	000576	004312 				.WORD	12+<40*6>+4000
	000600	027506'				.WORD	$DMINT
	000602	004313 				.WORD	13+<40*6>+4000
	000604	000605 				.WORD	.-LOWCOD+1
	000606	004300 				.WORD	0+<40*6>+4000
	000610	025754'				.WORD	$DHINP
	000612	004313 				.WORD	13+<40*6>+4000
	000614	024126'				.WORD	$DHOUT
	000616	004313 				.WORD	13+<40*6>+4000
	000620	027506'				.WORD	$DMINT
	000622	004314 				.WORD	14+<40*6>+4000
	000624	000625 				.WORD	.-LOWCOD+1
	000626	004300 				.WORD	0+<40*6>+4000
	000630	025754'				.WORD	$DHINP
	000632	004314 				.WORD	14+<40*6>+4000
	000634	024126'				.WORD	$DHOUT
	000636	004314 				.WORD	14+<40*6>+4000
	000640	027506'				.WORD	$DMINT
	000642	004315 				.WORD	15+<40*6>+4000
	000644	000645 				.WORD	.-LOWCOD+1
	000646	004300 				.WORD	0+<40*6>+4000
	000650	025754'				.WORD	$DHINP
	000652	004315 				.WORD	15+<40*6>+4000
	000654	024126'				.WORD	$DHOUT
	000656	004315 				.WORD	15+<40*6>+4000
	000660	027506'				.WORD	$DMINT
	000662	004316 				.WORD	16+<40*6>+4000
	000664	000665 				.WORD	.-LOWCOD+1
LC -- LOW CORE FOR RSX20F	MACRO M1108  16-DEC-77 11:28  PAGE 5-5
TRAP VECTORS

	000666	004300 				.WORD	0+<40*6>+4000
	000670	025754'				.WORD	$DHINP
	000672	004316 				.WORD	16+<40*6>+4000
	000674	024126'				.WORD	$DHOUT
	000676	004316 				.WORD	16+<40*6>+4000
    304		000004 				.REPT	4.
    305						PSW	6
    306						.ENDR
	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
    307	000720					PSW	6,$TTINP,4	; +++001 DL11E # 3 INPUT (DN20 #2)
	000720	026216'				.WORD	$TTINP
	000722	004304 				.WORD	4+<40*6>+4000
    308	000724					PSW	6,$TTOUT,4	; +++001 DL11E # 3 OUTPUT (DN20 #2)
	000724	024530'				.WORD	$TTOUT
	000726	004304 				.WORD	4+<40*6>+4000
    309	000730					PSW	6,$TTINP,3	; +++001 DL11E # 2 INPUT (DN20 #1)
	000730	026216'				.WORD	$TTINP
	000732	004303 				.WORD	3+<40*6>+4000
    310	000734					PSW	6,$TTOUT,3	; +++001 DL11E # 2 OUTPUT (DN20 #1)
	000734	024530'				.WORD	$TTOUT
	000736	004303 				.WORD	3+<40*6>+4000
    311	000740					PSW	6,$TTINP,2	; +++001 DL11E # 1 INPUT (DN20 #0)
	000740	026216'				.WORD	$TTINP
	000742	004302 				.WORD	2+<40*6>+4000
    312	000744					PSW	6,$TTOUT,2	; +++001 DL11E # 1 OUTPUT (DN20 #0)
	000744	024530'				.WORD	$TTOUT
	000746	004302 				.WORD	2+<40*6>+4000
    314	000750					PSW	4,$LPINT,1
	000750	000000G				.WORD	$LPINT
	000752	004201 				.WORD	1+<40*4>+4000
    315	000754					PSW	4,$LPINT,0
	000754	000000G				.WORD	$LPINT
	000756	004200 				.WORD	0+<40*4>+4000
    320		000004 				.REPT	4
    321						PSW	7,.DTINT	;DTE0 INTERRUPT VECTOR
    322						.ENDR
	000760	020126'				.WORD	.DTINT
	000762	004340 				.WORD	0+<40*7>+4000
	000764	020126'				.WORD	.DTINT
	000766	004340 				.WORD	0+<40*7>+4000
	000770	020126'				.WORD	.DTINT
	000772	004340 				.WORD	0+<40*7>+4000
	000774	020126'				.WORD	.DTINT
	000776	004340 				.WORD	0+<40*7>+4000
LC -- LOW CORE FOR RSX20F	MACRO M1108  16-DEC-77 11:28  PAGE 6
TRAP SERVICE FOR COMMON PROGRAM TRAPS

    324						.SBTTL	TRAP SERVICE FOR COMMON PROGRAM TRAPS
    325					;
    326					;	TRAPS HANDLED HERE ARE:
    327					;
    328					;	TRAP TO 4 (DEVICE OR MEMORY TIMEOUT AND 11 CATCH ALL)
    329					;	TRAP TO 10 (ILLEGAL INSTRUCTION)
    330					;	T-BIT AND BPT TRAPS
    331					;	IOT INSTRUCTION
    332					;	TRAP INSTRUCTION
    333					;
    334					;	ILLEGAL INTERRUPTS TRAP HERE.  THEY ARE DETERMINED
    335					;	BY PLACING AN ODD ADDRESS IN UNUSED TRAP VECTORS
    336					;	WHEN THE PROCESSOR TRAPS TO AN ILLEGAL TRAP VECTOR IT WIL
    337					;	PUT THE ILLEGAL (ODD) ADDRESS IN THE PC AND TRAP TO 4
    338					;	THIS WILL THEN ALLOW THE FIELD SERVICE PEOPLE TO
    339					;	DETERMINE WHAT LOCATION THE PROCESSOR HAS PICKED
    340					;	TO DO AN ILLEGAL TRAP
    341					;
    342					;
    343					;	GENERALLY THESE TRAPS LIKE THE OTHERS THAT TRAP TO UN ATTACHED
    344					;	TRAP VECTORS ARE FATAL.  THESE HAVE BEEN SEPARATED OUT
    345					;	BECAUSE THEY ARE PROBABLY PROGRAM ERRORS AND NOT
    346					;	HARDWARE ERRORS.  IT IS POSSIBLE THAT IF THESE ARE
    347					;	SEPARATED FROM HARDWARE TRAPS THAT IT WILL BE POSSIBLE
    348					;	TO PROVIDE SOME PROGRAM DEBUGGING BY IDENTIFICATION OF
    349					;	THESE SPECIFIC TYPES.
    350					;
    351					;	HARDWARE/SOFTWARE ERROR TRAPS HANDLED HERE ARE:
    352					;
    353					;	TRAP TO UNASSIGNED TRAP VECTOR
    354					;	PARITY ERROR
    355					;
    356					;
    357						.ENABL	LSB
    358	001000				COMTRP:
    359	001000	013737 	177776 	031202'		MOV	PS,TRPASV	;SAVE THE COMTRP PS
    360	001006	042737 	177760 	031202'		BIC	#177760,TRPASV	;MASK OFF PRIORITY BITS
    361	001014	022706 	001000 			CMP	#1000,SP	;LEGAL STACK?
    362	001020	103403 				BLO	10$		;YES -- NOT RED VIOLATION
    363	001022	012706 	040370'			MOV	#EMGSTK,SP	;NO -- BETTER RESCUE STACK
    364	001026	000450 				BR	30$		;THEN CRASH SYSTEM
    365						;
    366	001030				10$:
    367	001030	010546 				MOV	R5,-(SP)
    368	001032	032766 	000340 	000004 		BIT	#340,4(SP)	;EXEC?
    369	001040	001043 				BNE	30$		;YES -- CRASH
    370									;FIND THE TRAP VECTOR
    371	001042	013705 	031110'			MOV	.CRTSK,R5	;FIND THE CURRENT TASK
    372	001046	016505 	000016 			MOV	A.TD(R5),R5	;FIND STD POINTER
    373	001052	016505 	000030 			MOV	S.SS(R5),R5	;FIND THE SST VECTOR
    374	001056	001410 				BEQ	CMNABO		;NONE -- CRASH
    375	001060	063705 	031202'			ADD	TRPASV,R5	;FIND WHICH VECTOR
    376	001064					MFPS	@R5,R5		;FIND THE ADDRESS
	001064	011505 				MOV	@R5,R5
    377	001066	001404 				BEQ	CMNABO		;NONE FOUND -QUIT
    378	001070	012637 	031200'			MOV	(SP)+,EMTSTK	;SAVE R5 FOR COMMON TRAP
    379	001074	000137 	002642'			JMP	.SSTCO
LC -- LOW CORE FOR RSX20F	MACRO M1108  16-DEC-77 11:28  PAGE 6-1
TRAP SERVICE FOR COMMON PROGRAM TRAPS

    380						;
    381	001100				CMNABO::
    382	001100	013705 	031110'			MOV	.CRTSK,R5	;FIND THE CURRENT TASK
    383	001104	013765 	031202'	000024 		MOV	TRPASV,A.FM+0(R5) ;SET THE REASON FOR ABORT
    384	001112	112765 	000004 	000014 		MOVB	#TS.TKN,A.TS(R5) ;SET TASK STATUS TO ABORT
    385	001120	005237 	031232'			INC	.TKTN		;SET TKTN FLAG
    386	001124	026527 	000006 	033436'		CMP	A.PD(R5),#F11TPD ;FILES 11 TPD?
    387	001132	001003 				BNE	20$		;NO -- TKTN WILL WORK
    388	001134					.CRASH	FTA		;YES -- CAN'T GET TKTN IN
	001134	000004 				IOT
	001136	   106 	   124 	   101 		.ASCIZ	/FTA/
	001141	   000
    389						;
    390	001142				TRPXIT:				; +++003
    391	001142				20$:
    392	001142	012605 				MOV	(SP)+,R5	;RESTORE R5
    393	001144	000137 	004146'			JMP	..INTX		;RETURN
    394					;
    395					;
    396	001150				30$:
    397	001150	013705 	031202'			MOV	TRPASV,R5	;DO COMMON CRASH PROCEDURE
    398	001154	000175 	001160'			JMP	@CRSTB(R5)	;CRASH
    399						.DSABL	LSB
    400					;
    401	001160				CRSTB:
    402	001160	001170'				.WORD	TRP4
    403	001162	001240'				.WORD	RESERV
    404	001164	001246'				.WORD	BPTTRP
    405	001166	001304'				.WORD	IOTTRP
    406					;
    407	001170				TRP4:
    408	001170	012705 	000004 			MOV	#4,R5		; +++003 POINT TO TRAP VECTOR
    409	001174	011546 				MOV	(R5),-(SP)	; +++003 SAVE IT
    410	001176	012715 	001216'			MOV	#10$,(R5)	; +++003 SET UP TEMPORARY VECTOR
    411	001202	005777 	030146 			TST	@.PRSTA		; +++003 WAS IT THE DTE20??
    412	001206	012615 				MOV	(SP)+,(R5)	; +++003 NO -- OTHER BUS TIMEOUT
    413	001210					.CRASH	T04
	001210	000004 				IOT
	001212	   124 	   060 	   064 		.ASCIZ	/T04/
	001215	   000
    414						;
    415	001216				10$:				; +++003 HERE ON DTE-20 BUS TIMEOUT
    416	001216	022626 				CMP	(SP)+,(SP)+	; +++003 GET RID OF SECOND TRAP PS, PC
    417	001220	012615 				MOV	(SP)+,(R5)	; +++003 RESTORE TRAP VECTOR
    418	001222	032737 	004000 	031114'		BIT	#EF.PFR,.COMEF+2 ; +++003 POWERFAIL IN PROGRESS??
    419	001230	001344 				BNE	TRPXIT		; +++003 YES -- IGNORE TRAP
    420	001232					.CRASH	DTD		; +++003 NO -- DTE20 IS DEAD
	001232	000004 				IOT
	001234	   104 	   124 	   104 		.ASCIZ	/DTD/
	001237	   000
    421						;
    422	001240				RESERV:
    423	001240					.CRASH	RES
	001240	000004 				IOT
	001242	   122 	   105 	   123 		.ASCIZ	/RES/
	001245	   000
    424						;
LC -- LOW CORE FOR RSX20F	MACRO M1108  16-DEC-77 11:28  PAGE 6-2
TRAP SERVICE FOR COMMON PROGRAM TRAPS

    425	001246				BPTTRP:
    426	001246					.CRASH	TBT
	001246	000004 				IOT
	001250	   124 	   102 	   124 		.ASCIZ	/TBT/
	001253	   000
    427						;
    428	001254				.PARER:
    429	001254	012700 	172100 			MOV	#.PARRG,R0	;SET UP POINTER TO REGISTERS
    430	001260	012737 	001276'	000004 		MOV	#20$,@#4	;SET UP TO POINT TO CRASH MESSAGE ON NXM
    431	001266	012701 	040372'			MOV	#PARSAV,R1	;SET UP SAVE AREA POINTER
    432	001272				10$:
    433	001272	012021 				MOV	(R0)+,(R1)+
    434	001274	000776 				BR	10$
    435						;
    436	001276				20$:
    437	001276					.CRASH	MPE		;MEMORY PARITY ERROR
	001276	000004 				IOT
	001300	   115 	   120 	   105 		.ASCIZ	/MPE/
	001303	   000
    438						;
LC -- LOW CORE FOR RSX20F	MACRO M1108  16-DEC-77 11:28  PAGE 7
CRASH ROUTINE

    440						.SBTTL	CRASH ROUTINE
    441					;
    442					;	CRASH -- SUBROUTINE THAT WILL NOT RETURN TO SAVE THE
    443					;	INFORMATION NECESSARY WHEN THE MACHINE ENTERS AN UNRECOVERABLE
    444					;	STATE THAT REQUIRES RE-LOAD.  CRASH ATTEMPTS TO SAVE ALL THE
    445					;	VOLATILE REGISTERS THAT MIGHT BE NECESSARY TO DEBUG
    446					;	THE SOFTWARE OR HARDWARE WHEN THE PDP-11 SYSTEM CRASHES.
    447					;
    448	001304				IOTTRP:
    449									;RESTORE R5 FOR TRACE
    450	001304	016605 	000002 			MOV	2(SP),R5
    451	001310	010637 	040370'			MOV	SP,SPSAV	;SAVE SP
    452	001314	012706 	040370'			MOV	#EMGSTK,SP	;SET UP THE EMERGENCY STACK POINTER
    453	001320	010546 				MOV	R5,-(SP)
    454	001322	012705 	001510'			MOV	#CMSG,R5	;SET UP THE CRASH MESSAGE POINTER
    455	001326					CALL	20$		; +++002 PRINT THE MESSAGE
	001326	004737 	001442'			JSR	PC,20$
    456	001332	011605 				MOV	(SP),R5		; +++004 CRASH CODE POINTER TO R5
    457	001334	010446 				MOV	R4,-(SP)	; +++004 SAVE R4
    458	001336	005004 				CLR	R4		; +++004 CLEAR R4
    459	001340	012524 				MOV	(R5)+,(R4)+	; +++004 SAVE THE CRASH CODE
    460	001342	011524 				MOV	(R5),(R4)+	; +++004
    461	001344	013705 	040372'			MOV	PARSAV,R5	; +++004 GET PARITY ERROR DATA
    462	001350	006205 				ASR	R5		; +++004 POSITION IT
    463	001352	006205 				ASR	R5		; +++004
    464	001354	006205 				ASR	R5		; +++004
    465	001356	006205 				ASR	R5		; +++004
    466	001360	006205 				ASR	R5		; +++004
    467	001362	150544 				BISB	R5,-(R4)	; +++004 SAVE IT IN HIGH BYTE
    468	001364	012604 				MOV	(SP)+,R4	; +++004 RESTORE REGISTERS
    469	001366	012605 				MOV	(SP)+,R5	; +++002 CRASH CODE POINTER TO R5
    470	001370					CALL	20$		; +++002 PRINT THE CRASH CODE
	001370	004737 	001442'			JSR	PC,20$
    471	001374				10$:
    472	001374	012737 	000006 	000004 		MOV	#6,@#4		;FORCE AN EARLY HALT IF NXM
    473	001402	005037 	000006 			CLR	@#6
    474	001406	013705 	031356'			MOV	.PRDTE,R5	;FIND DTE20
    475	001412	062705 	000006 			ADD	#6,R5		;POINT TO DEXWD1
    476	001416	012725 	000004 			MOV	#LOAD11,(R5)+
    477	001422	012725 	010000 			MOV	#DEP,(R5)+
    478	001426	012725 	000022 			MOV	#22,(R5)+	;REQUEST RELOAD
    479	001432	012777 	000400 	027714 		MOV	#TO10DB,@.PRSTA	;RING BELL
    480	001440	000755 				BR	10$
    481						;
    482	001442				20$:				; +++002
    483	001442	105737 	031342'			TSTB	.KLNSW+0	; +++002 IS KLINIK ACTIVE??
    484	001446	003402 				BLE	30$		; +++002 NOT THAT WE CARE...
    485	001450	111537 	175616 			MOVB	(R5),@#PRB1	; +++002 YES -- PRINT A CHARACTER ON KLINIK LINE
    486	001454				30$:				; +++002
    487	001454	112537 	177566 			MOVB	(R5)+,@#PRB0	; +++002 PRINT THE SAME CHARACTER ON THE CTY
    488	001460				40$:				; +++002
    489	001460	105737 	177564 			TSTB	@#PRS0		; +++002 IS THE CTY DONE???
    490	001464	100375 				BPL	40$		; +++002 NO -- WAIT SOME MORE
    491	001466	105737 	031342'			TSTB	.KLNSW+0	; +++002 YES -- IS KLINIK ACTIVE??
    492	001472	003403 				BLE	50$		; +++002 NO -- NOT THAT WE CARE...
    493	001474	105737 	175614 			TSTB	@#PRS1		; +++002 YES -- IS THE KLINIK LINE FINISHED??
    494	001500	100367 				BPL	40$		; +++002 NO -- WAIT SOME MORE
LC -- LOW CORE FOR RSX20F	MACRO M1108  16-DEC-77 11:28  PAGE 7-1
CRASH ROUTINE

    495	001502				50$:				; +++002
    496	001502	105715 				TSTB	(R5)		; +++002 IS THE MESSAGE DONE??
    497	001504	001356 				BNE	20$		; +++002 NO -- CONTINUE THE MESSAGE
    498	001506					RETURN			; +++002 YES -- RETURN TO CALLER
	001506	000207 				RTS	PC
    499					;
    500					;
    501					;
    502					;	AFTER THE SYSTEM HALTS THE PDP-10 WILL EVENTUALLY REALIZE
    503					;	THAT THE PDP11 HAS CRASHED AND ATTEMPT TO
    504					;	RELOAD IT.
    505					;
    506					;
    507	001510				CMSG:
    508	001510	   015 	   012 	   061 		.ASCIZ	<15><12>"11-HALT"<15><12>
	001513	   061 	   055 	   110
	001516	   101 	   114 	   124
	001521	   015 	   012 	   000
    509						.EVEN
    510					;
    511					;	THE FOLLOWING AREA CAN BE USED IN TWO WAYS:
    512					;
    513					; 1)	IF THE EXEC IS MODIFIED, THE ADDRESS OF "SCOMM" MIGHT CHANGE,
    514					;	WHICH WOULD REQUIRE REBUILDING ALL THE PRIVLEDGED TASKS. THIS
    515					;	AREA CAN BE USED TO ADJUST THE "SCOMM" ADDRESSES TO CORRESPOND TO
    516					;	THEIR PREVIOUS ADDRESSES  SO THAT REBUILDING DOES NOT HAVE TO OCCUR.
    517					;
    518					; 2)	THIS AREA IS ALSO AVAILABLE FOR PATCH SPACE
    519					;
    520	001524				.PAT..::				; +++002 PATCH SPACE
    521										; +++002 THIS AREA MUST NEVER EXCEED 40 BYTES
    522						.BLKB	PATSIZ			; +++002
    523						.TITLE	SCH	- TASK SCHEDULER & GLOBAL DEFS
    524						.SBTTL	EXEC MODULE ONE -- TITLE PAGE
    525	001564					IDENT$	10,10,RSX$$F
						.IDENT	/B10100/
    526					;
    527					;
    528					;
    529					;
    530					;
    531					;
    532					;                             COPYRIGHT (C) 1975, 1978 BY
    533					;                     DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
    534					;
    535					;       THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE  USED  AND  COPIED
    536					;       ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
    537					;       OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR ANY OTHER COPIES THERE-
    538					;       OF  MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
    539					;       NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
    540					;
    541					;       THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT
    542					;       NOTICE  AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
    543					;       CORPORATION.
    544					;
    545					;       DIGITAL ASSUMES NO RESPONSIBILITY FOR THE  USE  OR  RELIABILITY  OF  ITS
    546					;       SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
SCH	- TASK SCHEDULER & GLOB	MACRO M1108  16-DEC-77 11:28  PAGE 7-2
EXEC MODULE ONE -- TITLE PAGE

    547					;
    548					;
    549					;
    550					;
    551					;
    552					;		MODULE: EXEC MODULE ONE
    553					;
    554					;		VERSION: 10-10
    555					;
    556					;		AUTHOR:  R. MCLEAN
    557					;
    558					;		DATE: 19 MAR 75
    559					;
    560					;
    561					;	THIS MODULE CONTAINS:
    562					;
    563					;	1 -- SYSTEM NOTES,
    564					;	2 -- GLOSSARY,
    565					;	3 -- SYMBOLIC DEFINITIONS,
    566					;	4 -- NUL TASK.
    567					;
    568					; MODIFICATIONS:
    569					;
    570					;	NO.	DATE		PROGRAMMER	PURPOSE
    571					;	---	----		----------	-------
    572					;	001	18-OCT-76	A. PECKHAM	ADDITIONAL .KLIWD FLAGS
    573					;	002	20-OCT-76	A. PECKHAM	FIX FOR F11 PARTITION
    574					;						LOAD REQUEST FAILURE.
    575					;	003	03-FEB-77	R. BELANGER	CHANGED KLR EVENT FLAG
    576					;						ADDED KLD EVENT FLAG
    577					;	004	04-MAR-77	R. BELANGER	ADDED CODE IN NULL TASK
    578					;						TO INVOKE TIME OF DAY TASK
    579					;	005	07-MAR-77	A. PECKHAM	REMOVE BUG FROM DOWN MESSAGE CODE.
    580					;	006	01-JUL-77	R. BELANGER	ADD KLINIK EVENT LOGGING CODES.
    581					;	007	18-AUG-77	R. BELANGER	ADD POWER RESTART IN PROGRESS FLAG
    582					;	008	05-OCT-77	R. BELANGER	ADD COMM REGION INVALID FLAG
SCH	- TASK SCHEDULER & GLOB	MACRO M1108  16-DEC-77 11:28  PAGE 8
EXEC MODULE ONE -- SYSTEM NOTES

    584						.SBTTL	EXEC MODULE ONE -- SYSTEM NOTES
    585					;+
    586					; PROCESSOR PRIORITIES
    587					;
    588					; PERIPHERIAL DEVICE INTERRUPT SERVICE ROUTINES RUN AT PROCESSOR PRIORITY
    589					; LEVELS FOUR THRU SEVEN (4-7).  ALSO, PARTS OF THE SOFTWARE THAT CANNOT BE
    590					; INTERRUPTED ARE ALSO RUN AT PRIORITY SEVEN (PRI=7).  THESE UNINTERRUPTABLE
    591					; PERIODS ARE AS SHORT AS POSSIBLE.
    592					;
    593					; PRIORITY LEVELS ZERO THRU THREE (0-3) ARE USED BY THE SYSTEM AS OPERATION
    594					; INDICATORS.  I.E., THERE ARE NO "SOFTWARE INTERRUPTS", AND THEREFORE, THERE
    595					; IS NO PRECEDENCE IMPLIED (OR ENVOKED) BY LEVELS ZERO THRU THREE.
    596					;
    597					; LEVEL ZERO (PRI=0) IS USED EXCLUSIVELY FOR TASK EXECUTION.
    598					;
    599					; LEVELS ONE, TWO, AND THREE ARE USED FOR "SYSTEM LEVEL" EXECUTION.
    600					;
    601					; LEVEL TWO (PRI=2) IS USED FOR THE RECOGNITION OF "SYSTEM EVENTS".
    602					; THESE EVENTS ARE INDICATED IN THE "SYSTEM EVENT RECOGNITION" FLAG
    603					; '.SERFG' AND ARE RECOGNIZED (SERVICED) ONLY WHEN RETURNING TO
    604					; TASK EXECUTION (VIZ., FROM AN INTERRUPT, OR FROM A DIRECTIVE).
    605					; SYSTEM EVENTS ARE (1) SIGNIFICANT EVENT DECLARATIONS, (2) CLOCK
    606					; TICKS, AND (3) POWER FAILURE RECOVERIES.
    607					;
    608					; LEVEL THREE (PRI=3) IS USED FOR EXECUTION OF ROUTINES WHICH CANNOT BE
    609					; INTERRUPTED BY SIGNIFICANT-EVENT OR CLOCK-TICK RECOGNITION, BUT CAN BE
    610					; INTERRUPTED BY PERIPHERIAL DEVICE INTERRUPTS
    611					;  IN THESE CASES, THE LEVEL
    612					; MAY BE SET TO THREE BY ANY MEANS, BUT MUST BE LOWERED TO ZERO BY
    613					; TRANSFERRING CONTROL TO '..INTX' TO ALLOW RECOGNITION OF "SYSTEM
    614					; EVENTS THAT MIGHT HAVE OCCURED WHILE RUNNING AT PRI=3.
    615					; THE SYSTEM TRACE (DEBUGGING) ROUTINE  RUNS AT PRI=7.
    616					;
    617					;
    618					;
    619					; FORMAT OF PROCESSOR STATUS (PS) WORD
    620					;
    621					;	C CPP RXX XLL LTN ZVC
    622					;
    623					;	CC	CURRENT MODE (00:KERNEL, 11:USER)
    624					;	PP	PREVIOUS MODE (00:KERNEL, 11:USER)
    625					;	R	REGISTER CLEAR (BIT ALWAYS CLEAR)
    626					;	XXX	UNUSED BITS
    627					;	LLL	PROCESSOR PRIORITY LEVEL
    628					;	T	TRACE BIT
    629					;	N	CONDITION CODE -- NEGATIVE
    630					;	Z	CONDITION CODE -- ZERO
    631					;	V	CONDITION CODE -- OVERFLOW
    632					;	C	CONDITION CODE -- CARRY
    633					;
    634					; KEY TEXT IN THIS LISTING IS DELIMITED BY LINES CONATINING A ";+" AND A ";-"
    635					; AS THE FIRST TWO CHARACTERS OF A SOURCE LINE.  A ";+" LINE  DEFINES THE
    636					; BEGINNING OF A BLOCK OF KEY TEXT, AND A ";-" LINE DEFINES THE END.
    637					;-
SCH	- TASK SCHEDULER & GLOB	MACRO M1108  16-DEC-77 11:28  PAGE 9
EXEC MODULE ONE -- GLOSSARY

    639						.SBTTL	EXEC MODULE ONE -- GLOSSARY
    640					;+
    641					;
    642					;
    643					; ATL -- ACTIVE TASK LIST
    644					;
    645					; CKL -- CLOCK LIST
    646					;
    647					; DTL -- DTE20 LIST
    648					;
    649					; MRL -- MEMORY REQUEST LIST
    650					;
    651					; PUD -- PHYSICAL UNIT DEVICE TABLE
    652					;
    653					; DEQUE -- DOUBLE ENDED QUEUE.  FORWARD AND BACKWARD CIRCULAR LINKAGES.
    654					;
    655					; EXTERNAL PAGE -- 4K PAGE OF REAL MEMORY SPACE (760000-777776) CONTAINING
    656					; CPU & PERIPHERIAL DEVICE CONTROL & STATUS REGISTERS (THE DEVICE PAGE).
    657					;
    658					; ISR -- INTERRUPT SERVICE ROUTINE
    659					;
    660					;
    661					; STD -- SYSTEM TASK DIRECTORY
    662					;-
    663
    664						.SBTTL	MACRO CALLS (MCALL)
    665
    669						.MCALL	.ENB0,.INH0,.ENB6,.INH6,.INH,.ENB,.INH5,.ENB5,.CRASH,RQST$
    670						.MCALL	DIR$,CLEF$S,QIOW$,WTSE$,WTSE$S,.STKM,$DEF
    671						.MCALL	CALL,RETURN,DTON$S,MFPS,MTPS,MTPI,MFPI,.DQPEN,DECL$S,CMKT$S
    672						.MCALL	MRKT$,WTLO$,WSIG$S,WTLO$C,CLEF$C,QIOSY$,MRKT$S
    673	001564					QIOSY$
    674	001564					$DEF
SCH	- TASK SCHEDULER & GLOB	MACRO M1108  16-DEC-77 11:28  PAGE 10
EXEC MODULE ONE -- SYMBOLIC DEFINITIONS

    676						.SBTTL	EXEC MODULE ONE -- SYMBOLIC DEFINITIONS
    677					;
    678					; EXTERNAL PAGE DEFINITIONS
    679					;
    680		177776 			PS==177776	;PROCESSOR STATUS WORD
    681		177546 			LKS==177546	;KW11L CLOCK
    682		177560 			KBS0==177560	;CTY TTY
    683		177562 			KBB0==177562	;CTY BUFFER (INPUT)
    684		177564 			PRS0==177564	;CTY OUTPUT STATUS
    685		177566 			PRB0==177566	;CTY OUTPUT BUFFER
    686		175610 			KBS1==175610
    687		175612 			KBB1==175612
    688		175614 			PRS1==175614
    689		175616 			PRB1==175616
    690		173000 			.BM873==173000	;START OF BOOTSTRAP
    691		172100 			.PARRG==172100	;PARITY ERROR REGISTER 0
    692					;
    693		000340 			PR7==340	;PRIORITY 7
    694		000340 			PRI7==340
    695		000100 			.INTEN==000100	;INTERRUPT ENABLE BIT
    696					;
    697		172360 			KPAR0=172360	;KERNEL PAGE ADDRESS REG 0
    698		172362 			KPAR1=172362	;REG 1
    699		172364 			KPAR2=172364	;REG 2
    700		172366 			KPAR3=172366	;REG 3
    701		172370 			KPAR4=172370	;REG 4
    702		172372 			KPAR5=172372	;REG 5
    703		172374 			KPAR6=172374	;REG 6
    704		172376 			KPAR7=172376	;REG 7
    705					;
    706		172300 			KPDR0=172300	;KERNEL PAGE DESCRIPTOR REGISTER 0
    707		172302 			KPDR1=172302	;REG 1
    708		172304 			KPDR2=172304	;REG 2
    709		172306 			KPDR3=172306	;REG 6
    710		172310 			KPDR4=172310	;REG 4
    711		172312 			KPDR5=172312	;REG 5
    712		172314 			KPDR6=172314	;REG 6
    713		172316 			KPDR7=172316	;REG 7
    714					;
    715		177640 			UPAR0=177640	;USER PAGE ADDRESS REG 0
    716		177642 			UPAR1=177642	;REG 1
    717		177644 			UPAR2=177644	;REG 2
    718		177646 			UPAR3=177646	;REG 3
    719		177650 			UPAR4=177650	;REG 4
    720		177652 			UPAR5=177652	;RRG 5
    721		177654 			UPAR6=177654	;REG 6
    722		177656 			UPAR7=177656	;REG 7
    723					;
    724		177600 			UPDR0=177600	;USER PAGE DESCRIPTOR REG 0
    725		177602 			UPDR1=177602	;REG 1
    726		177604 			UPDR2=177604	;REG 2
    727		177606 			UPDR3=177606	;REG 3
    728		177610 			UPDR4=177610	;REG 4
    729		177612 			UPDR5=177612	;REG 5
    730		177614 			UPDR6=177614	;REG 6
    731		177616 			UPDR7=177616	;REG 7
    732					;
SCH	- TASK SCHEDULER & GLOB	MACRO M1108  16-DEC-77 11:28  PAGE 10-1
EXEC MODULE ONE -- SYMBOLIC DEFINITIONS

    733		000046 			$DSW==46	;DIRECTIVE STATUS WORD
    734		000050 			.FSRPT==50	;FCS POINTER
    735		000054 			N.OVPT==54	;FCP OVERLAY POINTER
    736					;
    737					;
    738					; SYSTEM TRACE (T-BIT) DEBUGGING AID CONDITIONAL DEFINITIONS
    739					;
    740		000020 			TBIT==20	;TRACE BIT IN PS
    741					;
    742		000000 			STXAS==0	;SIGNIFICANT EVENT RECOGNITION (ATL SCAN) TRACE SWITCH
    743		000000 			STXCS==0	;CLOCK TICK RECOGNITION TRACE SWITCH
    744		000000 			STXDX==0	;DIRECTIVE EXECUTION TRACE SWITCH
    745					;
    746					; PRIVLEDGED TASK EVENT FLAG BIT MASKS
    747					;
    748		000001 			EF.DTE==1	;EVENT FLAG FOR DTE20 DOORBELL (UNUSED)
    749		000001 			E.DTE==1.
    750		000002 			EF.CLK==2	;EVENT FLAG FOR CLOCK (UNUSED)
    751		000002 			E.CLK==2.
    752		000004 			EF.TTY==4	;EVENT FLAG FOR TTY INPUT COMPLETE (UNUSED)
    753		000003 			E.TTY==3.
    754		000010 			EF.NIR==10	;EVENT FLAG TO SIGNAL QIO REQUEST ENTERED (DRIVERS)
    755		000004 			E.NIR==4.
    756		000020 			EF.IOD==20	;EVENT FLAG TO SIGNAL QIO REQUEST DONE (DRIVERS)
    757		000005 			E.IOD==5.
    758		000040 			EF.BOV==40	;EVENT FLAG TO SIGNAL NOT ENOUGH NODE SPACE (UNUSED)
    759		000006 			E.BOV==6.
    760		000100 			EF.TMO==100	;EVENT FLAG TO SIGNAL TIMOUT REQUEST FOR TTY (TTYDRR & SCOMM)
    761		000007 			E.TMO==7.
    762		000200 			EF.RQM==200	;REQUEST MCR (TTYDRR)
    763		000010 			E.RQM==8.
    764		000400 			EF.WFM==400	;WAIT FOR MARK TIME (UNUSED)
    765		000011 			E.WFM==9.
    766		001000 			EF.RKR==1000	; +++003 REQUEST KLINIK RING SERVICE (TTYDRR)
    767		000012 			E.RKR==10.	; +++003
    768		002000 			EF.RKH==2000	; +++003 REQUEST KLINIK HANG-UP SERVICE (TTYDRR)
    769		000013 			E.RKH==11.	; +++003
    770		004000 			EF.RSS==4000	; +++009 REQUEST SETSPD FOR AUTOBAUD (TTYDRR)
    771		000014 			E.RSS==12.	; +++009
    772					;
    773					; RESERVED LOCAL EVENT FLAG BIT MASKS (25. - 32.)
    774					;
    775		100000 			EF.SND==100000	;SEND ALL FINISHED
    776		000040 			E.FSND==32.
    777					;
    778					; RESERVED GLOBAL EVENT FLAG BIT MASKS (57. - 64.)
    779					;
    780		100000 			EF.CTC==100000	;^C FLAG
    781		000100 			E.FCTC==64.
    782		040000 			EF.PR1==040000	;PRIMARY PROTOCOL RUNNING FLAG
    783		000077 			E.FPR1==63.
    784		020000 			EF.PR2==020000	;SECONDARY PROTOCOL RUNNING FLAG
    785		000076 			E.FPR2==62.
    786		010000 			EF.RKP==010000	; +++003 KLINIK PARAMETERS RECIEVED (QPRDTE, SAVE)
    787		000075 			E.FRKP==61.
    788		004000 			EF.PFR==004000	; +++007 POWER FAIL RESTART IN PROGRESS (SCOMM, KLINIT)
    789		000074 			E.FPFR==60.
SCH	- TASK SCHEDULER & GLOB	MACRO M1108  16-DEC-77 11:28  PAGE 10-2
EXEC MODULE ONE -- SYMBOLIC DEFINITIONS

    790		002000 			EF.CRI==002000	; +++008 COMM REGION IS INVALID (BOOT, TKTN)
    791		000073 			E.FCRI==59.
    792					;
    793					; COMMON NODE DEFINITONS
    794					;
    795		000000 			N.FP==0		;FORWARD POINTER
    796		000002 			N.BP==2		;BACKWARD POINTER
    797		000010 			N.PR==10	;PRIORITY BYTE
SCH	- TASK SCHEDULER & GLOB	MACRO M1108  16-DEC-77 11:28  PAGE 11
EXEC MODULE ONE -- SYMBOLIC DEFINITIONS

    799					; TPD -- TASK PARTITION DIRECTORY
    800					;
    801					; THE "TPD" IS A FIXED LIST OF ENTRIES DESCRIBING EACH PARTITION IN A
    802					; SYSTEM.
    803					;  CONSISTING OF ENTRIES OF THE FOLLOWING FORMAT:
    804					;
    805		000000 			T.PN==00 ; WD. 00 (B 00) -- PARTITION NAME (FIRST HALF)
    806						 ; WD. 01 (B 02) -- PARTITION NAME (SECOND HALF)
    807		000004 			T.BA==04 ; WD. 02 (B 04) -- BASE ADDRESS OF PARTITION (IN BYTES)
    808		000006 			T.PZ==06 ; WD. 03 (B 06) -- SIZE OF PARTITION (IN BYTES)
    809		000010 			T.FW==10 ; WD. 04 (B 10) -- PARTITION FLAGS WORD
    810		000012 			T.HP==12 ; WD. 05 (B 12) -- 1/64 TH OF BASE ADR OF FIRST HOLE, OR ZERO IF NO HOLES.
    811		000014 			T.RF==14 ; WD. 06 (B 14) -- MRL LISTHEAD (FORWARD LINKAGE)
    812		000016 			T.RB==16 ; WD. 07 (B 16) -- MRL LISTHEAD (BACKWARD LINKAGE)
    813					;
    814		000020 			T.SZ==20		;SIZE (IN BYTES) OF TPD ENTRIES
    815					;
    816					;
    817					;	FLAGS WORD BIT DEFINITIONS:
    818					;
    819		000002 			TF.OU==000002	;[01] SET IF OCCUPIED USER CONTROLLED PARTITION.
    820					;
SCH	- TASK SCHEDULER & GLOB	MACRO M1108  16-DEC-77 11:28  PAGE 12
EXEC MODULE ONE -- SYMBOLIC DEFINITIONS

    822					;
    823					;	TASK HEADER DEFINITIONS
    824					;
    825		000000 			H.CSP==0		;CURRENT STACK POINTER (UNUSED)
    826		000002 			H.HSZ==2		;LENGTH OF HEADER
    827		000046 			H.DSW==46		;DIRECTIVE STATUS WORD SAVE AREA
    828		000050 			H.FCP==50		;FCP SAVE AREA
    829		000052 			H.FOR==52		;FORTRAN SAVE AREA
    830		000054 			H.OVL==54		;OVERLAY SAVE AREA
    831		000074 			H.IPS==74		;INITIAL PS
    832		000076 			H.IPC==76		;INITIAL PC
    833		000100 			H.ISP==100		;INITIAL SP
    834		000106 			H.TKVA==106		;TASK SST VECTOR ADDRESS
    835		000130 			H.LUT==130		;LOGICAL UNIT TABLE SIZE
    836					;
SCH	- TASK SCHEDULER & GLOB	MACRO M1108  16-DEC-77 11:28  PAGE 13
EXEC MODULE ONE -- SYMBOLIC DEFINITIONS

    838					;
    839					; STD -- SYSTEM TASK DIRECTORY
    840					;
    841					; THE SYSTEM TASK DIRECTORY IS A MEMORY RESIDENT DIRECTORY OF ALL TASKS
    842					; THAT HAVE BEEN INSTALLED INTO A SYSTEM THAT ARE NOT PREMANENTLY RESIDENT.
    843					;  THIS DIRECTORY CONSISTS OF TWO
    844					; PARTS: (1) A FIXED SIZE AREA OF ONE WORD FOR EACH TASK THAT COULD
    845					; BE INSTALLED AT ANY TIME, AND (2) AN STD ENTRY FOR EACH TASK THAT IS
    846					; INSTALLED.  THE FIXED SIZED AREA IS CALLED THE "ALPHA TABLE AREA", AND
    847					; PROVIDES SPACE FOR AN ALPHABETICALLY ORDERED CONTIGUOUS LIST POINTERS
    848					; TO STD ENTRIES (TO FACILLATE BINARY SEARCH FOR STD ENTRY BY TASK NAME).
    849					; EACH STD ENTRY IS OF THE FOLLOWING FORMAT:
    850					;
    851		000000 			S.TN==00 ; WD. 00 (B 00) -- TASK NAME (6 CHAR IN RADIX-50, 2 WORDS)
    852						 ; WD. 01 (B 02) -- (SECOND HALF OF TASK NAME)
    853		000004 			S.TD==04 ; WD. 02 (B 04) -- DEFAULT TASK PARTITION (TPD ADDRESS)
    854		000006 			S.FW==06 ; WD. 03 (B 06) -- FLAGS WORD
    855		000010 			S.DP==10 ; WD. 04 (B 10) -- DEFAULT PRIORITY (BYTE)
    856		000011 			S.DI==11 ;        (B 11) -- SYSTEM DISK INDICATOR (BYTE)
    857		000012 			S.BA==12 ; WD. 05 (B 12) -- 1/64 TH OF BASE ADDRESS OF LOAD IMAGE
    858		000014 			S.LZ==14 ; WD. 06 (B 14) -- SIZE OF LOAD IMAGE
    859		000016 			S.TZ==16 ; WD. 07 (B 16) -- MAX TASK SIZE
    860		000020 			S.PC==20 ; WD. 10 (B 20) -- INITIAL PC OF TASK
    861		000022 			S.SP==22 ; WD. 11 (B 22) -- INITIAL SP OF TASK
    862		000024 			S.RF==24 ; WD. 12 (B 24) -- SEND AND REQUEST QUEUE FORWARD PTR
    863		000026 			S.RB==26 ; WD. 13 (B 26) -- SEND AND REQUEST QUEUE BACKWARD PTR
    864		000030 			S.SS==30 ; WD. 14 (B 30) -- SST VECTOR TABLE ADDRESS
    865		000032 			S.DL==32 ; WD. 15 (B 32) -- LOAD IMAGE FIRST BLOCK NUMBER (32-BITS)
    866						 ; WD. 16 (B 34)    (SECOND HALF OF DISK ADDRESS)
    867					;
    868		000036 			S.SZ==36		;SIZE OF STD ENTRY
    869					;
    870					;
    871					;
    872					;	FLAGS WORD BIT DEFINITIONS:
    873					;
    874		000001 			SF.TA==000001	;[00] SET WHEN TASK IS ACTIVE
    875		000001 			SF.PT==000001	;[00] SET WHEN TASK IS PRIVILEDGED (ACTIVE FOR NOW)
    876		000002 			SF.FX==000002	;[01] SET WHEN TASK IS FIXED IN MEMORY
    877		000004 			SF.EX==000004	;[02] SET WHEN TASK IS TO BE REMOVED ON EXIT
    878		040000 			SF.IR==040000	;[14] SET WHEN INSTALL IS REQUESTED
    879		100000 			SF.ST==100000	;[15] SET WHEN TASK IS SYSTEM TASK
    880					;
SCH	- TASK SCHEDULER & GLOB	MACRO M1108  16-DEC-77 11:28  PAGE 14
EXEC MODULE ONE -- SYMBOLIC DEFINITIONS

    882					;
    883					; ATL -- ACTIVE TASK LIST
    884					;
    885					; THE "ATL" IS A PRIORITY ORDERED DEQUE OF "ATL" NODES FOR ACTIVE TASKS
    886					; THAT HAVE MEMORY ALLOCATED FOR THEIR EXECUTION.  THE TASKS REPRESENTED
    887					; BY ENTRIES IN THE ATL ARE EITHER MEMORY RESIDENT, OR A REQUEST FOR THEIR
    888					; LOADING HAS BEEN QUEUED.  THE LISTHEAD FOR THIS DEQUE IS IN THE SYSTEM
    889					; COMMUNICATIONS AREA (SCOM), AND THE NODES ARE OF THE FOLLOWING FORMAT:
    890					;
    891						 ; WD. 00 (B 00) -- FORWARD LINKAGE
    892						 ; WD. 01 (B 02) -- BACKWARD LINKAGE
    893		000004 			A.SP==04 ; WD. 02 (B 04) -- STACK POINTER (R6) OF RUNNING TASK
    894						 ;			WHEN TASK IS NOT CURRENT TASK
    895		000006 			A.PD==06 ; WD. 03 (B 06) -- TASK'S RUN PARTITION (TPD ADDRESS)
    896		000010 			A.RP==10 ; WD. 04 (B 10) -- TASK'S RUN PRIORITY (BYTE)
    897		000012 			A.HA==12 ; WD. 05 (B 12) -- 1/64TH REAL ADR OF LOAD IMAGE
    898		000014 			A.TS==14 ; WD. 06 (B 14) -- TASK STATUS (BYTE)
    899		000015 			A.FB==15 ; WD. 06 (B 15) -- TASK FLAGS BYTE
    900		000016 			A.TD==16 ; WD. 07 (B 16) -- SYSTEM TASK DIRECTORY (STD) ENTRY ADDRESS
    901		000020 			A.EF==20 ; WD. 10 (B 20) -- TASK'S EVENT FLAGS (1-32)
    902						 ; WD. 11 (B 22) -- (SECOND HALF OF TASK'S EVENT FLAGS)
    903		000024 			A.FM==24 ; WD. 12 (B 24) -- TASK'S EVENT FLAGS MASKS (64-BITS)
    904						 ; WD. 13 (B 26) -- (SECOND WORD OF FLAGS MASK)
    905						 ; WD. 14 (B 30) -- (THIRD WORD OF FLAGS MASK)
    906						 ; WD. 15 (B 32) -- (FOURTH WORD OF FLAGS MASK)
    907		000034 			A.PF==34 ; WD. 16 (B 34) -- POWER FAIL AST TRAP ADDRESS
    908					;
    909		000036 			A.SZ==36		;SIZE OF ATL
    910					;
    911					; TASK STATUS VALUES ARE DESCRIBED AT 'ASXDT'
    912					;
    913					; BEFORE EXECUTION , THE FIRST THREE
    914					; FLAGS MASK WORDS ARE USED AS FOLLOWS:
    915					;
    916					;	A.FM+0 -- ADDRESS OF TASK LOAD I/O REQUEST DEQUE LISTHEAD,
    917					;	A.FM+2 -- ADDRESS OF TASK LOAD I/O REQUEST NODE,
    918					;
    919					; MRL -- MEMORY REQUIRED LIST
    920					;
    921					; THE "MRL" IS A PRIORITY ORDERED DEQUE OF "ATL" NODES FOR ACTIVE TASKS
    922					; THAT REQUIRE MEMORY IN A PARTITION.  EACH PARTITION HAS ITS OWN MRL.
    923					; WHENEVER A NON-FIXED TASK RUNNING IN A PARTITION EXITS, AN
    924					; ATTEMPT IS MADE TO ASSIGN MEMORY TO THE FIRST (HIGHEST PRIORITY)
    925					; TASK IN THE LIST.  IF MEMORY IS FOUND, THE TASK'S NODE IS
    926					; MOVED FROM THE "MRL" TO THE "ATL" DEQUE.  THE MRL LISTHEAD IS IN
    927					; THE TPD ENTRY FOR THE CORRESPONDING PARTITION.
    928					;
    929					;
    930					;	FLAGS BYTE BIT DEFINITIONS
    931					;
    932		000200 			AF.PP==200	;[07] SET WHEN TASK IS PRIMARY PROTOCOL TASK
    933					;
SCH	- TASK SCHEDULER & GLOB	MACRO M1108  16-DEC-77 11:28  PAGE 15
EXEC MODULE ONE -- SYMBOLIC DEFINITIONS

    935					;
    936					; CKL -- CLOCK TABLE
    937					;
    938					; THE CLOCK LIST IS A TABLE CONSISTING OF ONE ENTRY FOR EACH OPERATION
    939					; SCHEDULED TO BE PERFORMED AT SOME FUTURE TIME.  A "SCHEDULE DELTA-
    940					; TIME" EACH ENTRY (IF ANY) OF THE CLOCK QUEUE IS DECREMENTED
    941					; AT EACH CLOCK TICK UNTIL THE ENTRY "COMES DUE", AT WHICH TIME THE
    942					; INDICATED OPERATION IS PERFORMED.  CLOCK TABLE ENTRIES ARE OF
    943					; FOLLOWING FORMAT.
    944					;
    945		000000 			C.AT==00 ; WD. 00 -- ATL NODE ADDRESS OF REQUESTOR
    946		000002 			C.AS==02 ; WD. 02 -- AST TRAP ADDRESS OF REQUESTOR
    947		000004 			C.SD==04 ; WD. 02 -- SCHEDULE DELTA IN TICKS (16-BITS)
    948		000006 			C.RS==06 ; WD. 03 -- RESCHEDULE DELTA IN TICKS (16-BITS)
    949		000010 			C.FM==10 ; WD. 04 -- FLAG MASK (BIS SRC)
    950		000012 			C.FA==12 ; WD. 05 -- FLAGS WORD ADR (BIS DST ADR)
    951					;
    952		000014 			C.SZ==14 ; SIZE OF CLOCK TABLE ENTRY
    953					;
    954					;
    955		000074 			.CYLTM==60.	;CYCLE TIME OF CLOCK
    956					;
    957		000005 			.KALSC==5	;TIMEOUT INTERVAL FOR KL10
    958					;
SCH	- TASK SCHEDULER & GLOB	MACRO M1108  16-DEC-77 11:28  PAGE 16
EXEC MODULE ONE -- SYMBOLIC DEFINITIONS

    960					;
    961					; DTE -- DTE TABLE
    962					;
    963					; THE DTE LIST IS A TABLE CONSISTING OF ONE ENTRY FOR EACH OPERATION
    964					; SCHEDULED TO BE PERFORMED AT SOME FUTURE TIME WHEN THE DTE20
    965					; INTERRUPTS.  THE DTE20 TABLE ENTRIES ARE OF THE FOLLOWING
    966					; FORMAT.
    967					;
    968		000000 			D.AT==00 ; WD. 00 -- ATL NODE ADDRESS OF REQUESTOR
    969		000002 			D.FM==02 ; WD. 01 -- FLAG MASK (BIS SRC)
    970		000004 			D.FA==04 ; WD. 02 -- FLAGS WORD ADR (BIS DIST ADR)
    971					;
    972		000006 			D.SZ==06 ; SIZE OF DTE20 TABLE ENTRY
    973					;
SCH	- TASK SCHEDULER & GLOB	MACRO M1108  16-DEC-77 11:28  PAGE 17
EXEC MODULE ONE -- SYMBOLIC DEFINITIONS

    975					;
    976					;	KLI PARAMETER WORD DEFINITIONS (.KLIWD)
    977					;
    978		000001 			KL.LRM==1		;LOAD RAMS
    979		000002 			KL.CFM==2		;CONFIGURE MEMORY
    980		000004 			KL.LVB==4		;LOAD VBOOT
    981		000010 			KL.VBN==10		;VBOOT START AT START+1
    982		000020 			KL.VBD==20		;DUMP MONITOR
    983		000040 			KL.SPF==40		;START AT LOC 70 (AFTER POWER FAIL)
    984		000100 			KL.LCA==100		; +001 LOAD CACHE
    988		000400 			KL.CFL==400		; +001  IF = 0, CONFIGURE FROM FILE
    989					;
    990					; ALL BITS 0 IMPLIES ASK QUESTIONS TO CONTROL LOADING
    991					;
    992					;
    993					;	PARAMETER DEFINITIONS FOR KL ERROR WORD
    994					;
    995		000001 			KS.TSP==1	;TEN STOPPED (HALTED)
    996		000002 			KS.CES==2	;CLOCK ERROR STOP
    997		000004 			KS.EPE==4	;E BOX PARITY ERROR
    998		000010 			KS.DEX==10	;DEPOSIT EXAMINE ERROR
    999		000020 			KS.CST==20	;KEEP ALIVE STOPPED
   1000		000040 			KS.TRR==40	;TEN REQUEST'S RE-BOOT
   1001		000100 			KS.PFT==100	;POWER FAIL RESTART
   1002					;
SCH	- TASK SCHEDULER & GLOB	MACRO M1108  16-DEC-77 11:28  PAGE 18
EXEC MODULE ONE -- SYMBOLIC DEFINITIONS

   1004					;
   1005					; PUD -- PHYSICAL UNIT DEVICE TABLE
   1006					;
   1007					; THE "PUD" IS A FIXED LIST OF ENTRIES DESCRIBING EACH PHYSICAL DEVICE-
   1008					; UNIT IN A SYSTEM.
   1009					;  CONSISTS OF ENTRIES OF THE FOLLOWING FORMAT:
   1010					;
   1011		000000 			U.DN==00 ; WD. 00 (B 00) -- DEVICE NAME (2 ASCII CHARS)
   1012		000002 			U.UN==02 ; WD. 01 (B 02) -- UNIT NUMBER (BYTE)
   1013		000003 			U.FB==03 ;        (B 03) -- FLAGS (BYTE)
   1014		000004 			U.C1==04 ; WD. 02 (B 04) -- CHARACTERISTICS WORD ONE (DEVICE INDEPENDENT INDICATORS)
   1015		000006 			U.C2==06 ; WD. 03 (B 06) -- CHARACTERISTICS WORD TWO (DEVICE DEPENDENT INDICATORS
   1016		000010 			U.C3==10 ; WD. 04 (B 10) -- CHARACTERISTICS WORD THREE (DEVICE DEPENDENT INDICATORS)
   1017		000012 			U.C4==12 ; WD. 05 (B 12) -- CHARACTERISTICS WORD FOUR (SIZE OF BLOCK, BUFFER, LINE)
   1018		000014 			U.AF==14 ; WD. 06 (B 14) -- ATTACH FLAG (ATL NODE ADDRESS OF ATTAC HING TASK
   1019		000016 			U.RP==16 ; WD. 07 (B 16) -- REDIRECT POINTER
   1020		000020 			U.HA==20 ; WD. 10 (B 20) -- HANDLER TASK ATL NODE ADDRESS
   1021		000022 			U.RF==22 ; WD. 11 (B 22) -- UNIT REQUEST DEQUE LISTHEAD (FWD PNTR)
   1022		000024 			U.RB==24 ; WD. 12 (B 24) -- UNIT REQUEST DEQUE LISTHEAD (BKG PNTR)
   1023					;
   1024					; PHYSICAL UITS ARE CONSIDERED "VOLUMES" BY THE FILES SYSTEM, AND THE
   1025					; REMAINDER OF THE PUD ENTRY IS A "VOLUME CONTROL BLOCK".
   1026					;
   1027		000026 			U.VA==26 ; WD. 13 (B 26) -- ADDRESS OF VOLUME CONTROL BLOCK EXTENSION
   1028		000030 			U.UI==30 ; WD. 14 (B 30) -- USER IDENTIFICATION CODE (UIC)
   1029		000030 			U.PC==30 ;        (B 30) -- UIC PROGRAMMER CODE
   1030		000031 			U.GC==31 ;        (B 31) -- UIC GROUP CODE
   1031		000032 			U.VP==32 ; WD. 15 (B 32) -- VOLUME PROTECTION WORD
   1032		000032 			U.CH==32 ;        (B 32) -- CHARACTERISTICS FLAGS
   1033						 ;        (B 33) -- RESERVED BYTE
   1034		000034 			U.AR==34 ; WD. 16 (B 34) -- ACCESS RIGHTS FLAGS WORD
   1035		000036 			U.DACP==36;WD. 20 (B 36) -- DEFAULT ACP NAME, RAD50 (FIRST WORD)
   1036		000040 			U.ACP==40 ; WD. 20 (B 40) -- STD ENTRY ADDRESS OF CURRENT ACP
   1037		000042 			U.TF==42 ; WD. 21 (B 42) -- TERMINAL FLAGS WORD
   1038		000042 			U.PR==42 ;        (B 42) -- TERMINAL PRIVILEDGE WORD
   1039		000043 			U.FO==43 ;        (B 43) -- TERMINAL FORMS BYTE
   1040		000044 			U.LBH==44 ; WD. 22 (B 44) -- HIGH ORDER - TOTAL # OF BLOCKS FOR DEVICE
   1041		000046 			U.LBN==46 ; WD. 24 (B46) -- LOW ORDER TOTAL # OF BLOCKS FOR DEVICE
   1042		000050 			U.SZ==50		;SIZE (IN BYTES OF PUD ENTRIES
   1043					;
   1044					;	FLAGS BYTE DEFINITIONS
   1045					;
   1046		000040 			UF.RD==040		; **************TEMP*********
   1047		000200 			UF.RH==200	; [7] SET WHEN HANDLER TASK IS DECLARED RESIDENT
   1048		000100 			UF.TL==100	; [6] SET WHEN HANDLER TASK RECOGNIZES LOAD AND RECORD
   1049		000040 			UF.OFL==040	; [5] SET WHEN DEVICE IS OFFLINE
   1050					;
   1051					;	BIT DEFINITIONS FOR CHARACTERISTICS WORD ONE
   1052					;
   1053		000001 			UC.REC==000001	;[00] SET IF RECORD ORIENTED DEVICE (VIZ., TT,LP, CR)
   1054		000002 			UC.CCL==000002	;[01] SET IF CARRIAGE CONTROL DEVICE (VIZ., TT LP)
   1055		000004 			UC.TTY==000004	;[02] SET IF TTY DEVICE (VIZ., KSR, LA30)
   1056		000010 			UC.DIR==000010	;[03] SET IF DEVICE IS A DIRECTORY DEVICE
   1057		000020 			UC.SDI==000020	;[04] SET  IF DEVICE IS A SINGLE DIRECTORY DEVICE
   1058		000040 			UC.SQD==000040	;[05] SET IF DEVICE IS A SEQUENTIAL DEVICE
   1059		000100 			UC.ETB==000100  ;[06] SET IF DEVICE IS EIGHTEEN BIT MODE
   1060		000400 			UC.INB==000400	;+003 [08] SET IF THE DEVICE IS INTERMEDIATE BUFFERED
SCH	- TASK SCHEDULER & GLOB	MACRO M1108  16-DEC-77 11:28  PAGE 18-1
EXEC MODULE ONE -- SYMBOLIC DEFINITIONS

   1061		001000 			UC.SWL==001000	;[09] SET IF THE DEVICE IS SOFTWARE WRITE LOCKED
   1062		002000 			UC.ISP==002000	;[10] SET IF DEVICE IS INPUT SPOOLED
   1063		004000 			UC.0SP==004000	;[11] SET IF DEVICE IS OUTPUT SPOOLED
   1064		010000 			UC.PSE==010000	;[12] SET IF DEVICE IS PSEUDO DEVICE
   1065		020000 			UC.COM==020000	;[13] SET IF DEVICE IS COMMUNICATIONS CHANNEL
   1066		040000 			UC.F11==040000	;[14] SET IF DEVICE IS FILES-11
   1067		100000 			UC.MNT==100000	;[15] SET IF DEVICE IS MOUNTABLE
   1068					;
   1069					;	BIT DEFINITIONS FOR CHARACTERISTICS WORD TWO
   1070					;
   1071		000200 			CH.OFF==200	;VOLUME IS OFF-LINE
   1072		000100 			CH.FOR==100	;VOLUME IS FOREIGN
   1073		000040 			CH.UNL==40	;DISMOUNT PENDING
   1074		000020 			CH.NAT==20	;ATTACH/DETACH NOT PERMITTED
   1075		000010 			CH.NDC==10	;DEVICE CONTROL FUNCTIONS NOT PERMITTED
   1076		000001 			CH.LAB==1	;VOLUME IS LABELED TAPE
   1077					;
   1078					;	BIT DEFINITIONS FOR TERMINAL PRIVILEDGE BYTE
   1079					;
   1080		000001 			UT.PR==1	;SET IF TY ID PRIVILEDGED
   1081		000002 			UT.SL==2	;SET IF TTY IS SLAVED
   1082		000004 			UT.LG==4	;SET IF TERMINAL IS LOGGED ON
   1083					;
SCH	- TASK SCHEDULER & GLOB	MACRO M1108  16-DEC-77 11:28  PAGE 19
EXEC MODULE ONE -- SYMBOLIC DEFINITIONS

   1085					;
   1086					; TASK TERMINATION NOTICE ERROR CODES FOR A.FM+0
   1087					;
   1088		000012 			TN.EMT==12		;NON-RSX EMT
   1089		000014 			TN.TRP==14		;TRAP INSTRUCTION
   1090		000040 			TN.LRF==40		;LOAD FAILURE
   1091					;
   1092					; SEND AND REQUEST QUEUE ENTRY
   1093					;
   1094		000004 			Q.SI==04 ; WD. 02 (B 04) -- SYSTEM TASK LIST ADDRESS
   1095		000006 			Q.D1==06 ; WD. 03 (B 06) -- FIRST DATA WORD
   1096					;
SCH	- TASK SCHEDULER & GLOB	MACRO M1108  16-DEC-77 11:28  PAGE 20
EXEC MODULE ONE -- SYMBOLIC DEFINITIONS

   1098					;
   1099					;	DEVICE QUEUE POINTER TABLE (TO 11 QUEUE ENTRIES)
   1100					;
   1101		000000 			Q.DA==0	; WD. 00 (B 00) -- ADDRESS OF DEVICE TABLE LIST
   1102		000002 			Q.TS==02 ; WD. 01 (B 02) -- SIZE OF AN ENTRY IN THE DEVICE TABLE LIST
   1103		000004 			Q.ST==04 ; WD. 02 (B 04) -- ADDRESS OF DEVICE START SUBROUTINE
   1104		000006 			Q.SP==06 ; WD. 03 (B 06) -- ADDRESS OF DEVICE STOP SUBROUTINE
   1105						; WD. 04 (B 10) -- SPARE
   1106		000012 			Q.AK==12 ; WD. 05 (B 12) -- ACKNOWLEDGE ROUTINE
   1107						 ; WD. 06 (B 14) -- SPARE
   1108		000016 			Q.DZ==16 ; WD. 07 (B 16) -- DEVICE COUNT
   1109		000020 			Q.SZ==20	; SIZE OF TABLE ENTRY
   1110					;
SCH	- TASK SCHEDULER & GLOB	MACRO M1108  16-DEC-77 11:28  PAGE 21
EXEC MODULE ONE -- SYMBOLIC DEFINITIONS

   1112					;
   1113					;	DEVICE ERROR LOGGING INFORMATION AND STATUS BLOCK DEFINITONS
   1114					;
   1115					;	WORD 0 -- STANDARD STATUS BITS (DV.XXX)
   1116					;
   1117					;	1	DEVICE-DEPENDENT BITS
   1118					;	2	...........
   1119					;	N
   1120					;
   1121					;	DEVICE ERROR LOGGING BITS (FIRST WORD BITS ONLY)
   1122					;
   1123		000001 			DV.NXD==1	;NON-EX DEVICE
   1124		000002 			DV.OFL==2	;OFF-LINE
   1125		000004 			DV.OIR==4	;HARDWARE ERROR. OPERATOR INTERVENTION REQ'D
   1126		000010 			DV.SCN==10	;SOFTWARE CONDITION. ACKNOWLEDGE REQUIRED
   1127		000020 			DV.IOP==20	;I/O IN PROGRESS
   1128		000040 			DV.EOF==40	;END-OF-FILE ENCOUNTERED
   1129		000100 			DV.LOG==100	;ERROR LOGGING REQUIRED
   1130		000200 			DV.URE==200	;UN-RECOVERABLE ERROR
   1131		000400 			DV.F11==400	;ERROR ON FROM -11 REQUEST
   1132		001000 			DV.HNG==1000	;DEVICE HUNG
   1133		002000 			DV.LIN==2000	;DEVICE LOST INTERRUPT ENABLE
   1134					;
SCH	- TASK SCHEDULER & GLOB	MACRO M1108  16-DEC-77 11:28  PAGE 22
EXEC MODULE ONE -- SYMBOLIC DEFINITIONS

   1136					;
   1137					; KLINIK EVENT LOGGING CODES
   1138					;
   1139
   1140		000000 			K.LUND==0		; UNDEFINED CODE
   1141
   1142		000001 			K.LSCK==1		; SET/CLEAR KLINIK COMMAND
   1143		000001 				K.LSKL==1	; SET KLINIK
   1144		177777 				K.LCKL==-1	; CLEAR KLINIK
   1145
   1146		000002 			K.LRNG==2		; KLINIK RING
   1147		000001 				K.LRAC==1	; ACCEPTED (WINDOW OPEN)
   1148		177777 				K.LRRJ==-1	; REJECTED (WINDOW CLOSED)
   1149
   1150		000003 			K.LDSC==3		; KLINIK LINE DISCONNECT
   1151		000001 				K.LDCM==1	; DIRECTED DISCONNECT (COMMAND)
   1152		177777 				K.LDRP==-1	; CARRIER DROP
   1153
   1154		000004 			K.LCON==4		; KLINIK LINE CONNECT
   1155		000001 				K.LROP==1	; REMOTE -- OPERATOR MODE
   1156		000002 				K.LRPR==2	; REMOTE -- PROGRAMMER MODE
   1157		000003 				K.LRMN==3	; REMOTE -- MAINTENANCE MODE
   1158		177777 				K.LUSR==-1	; USER MODE
   1159
   1160		000005 			K.LBPW==5		; BAD PASSWORD
   1161
   1162		000006 			K.LLTO==6		; LOGON TIMEOUT
   1163
   1164		000007 			K.LRBA==7		; KLINIK ACTIVE ON REBOOT
SCH	- TASK SCHEDULER & GLOB	MACRO M1108  16-DEC-77 11:28  PAGE 23
EXEC MODULE ONE -- SYMBOLIC DEFINITIONS

   1166					;
   1167					;	OFFSETS FOR SST TRAPS TABLE IN USER'S AREA
   1168					;
   1169		000000 			T.RAP4==0		;TRAP AT 4
   1170		000002 			T.RAPM==2		;MEMORY PROTECT VIOLATOION
   1171		000004 			T.RAPB==4		;T BIT OR BPT TRAP
   1172		000006 			T.RAPI==6		;IOT TRAP
   1173		000010 			T.RAPR==10		;RESERVED INSTRUCTION TRAP
   1174		000012 			T.RAPE==12		;EMT TRAP (NON RSX)
   1175		000014 			T.RAPT==14		;TRAP TRAP
   1176		000016 			T.RAPF==16		;FLOATING POINT TRAP
   1177					;
SCH	- TASK SCHEDULER & GLOB	MACRO M1108  16-DEC-77 11:28  PAGE 24
EXEC MODULE ONE -- SYMBOLIC DEFINITIONS

   1179					;
   1180					; IRQ -- I/O REQUEST QUEUE
   1181					;
   1182					; THE "IRQ" IS A PRIORITY ORDERED DEQUE OF I/O REQUEST NODES WITH ITS
   1183					; LISTHEAD IN THE PUD ENTRY OF THE PHYSICAL UNIT FOR WHICH THE I/O
   1184					; REQUEST WAS QUEUED.  EACH PHYSICAL UNIT HAS ITS OWN I/O REQUEST QUEUE.
   1185					; I/O REQUEST NODES ARE CREATED AND QUEUED PRIMARILY BY THE "QUEUE I/O"
   1186					; DIRECTIVE.  HOWEVER, THE EXEC ALSO CREATES I/O REQUESTS TO:
   1187					; (1) LOAD A TASK IMAGE,
   1188					; I/O REQUEST NODES ARE
   1189					; THE FOLLOWING FORMAT.
   1190					;
   1191						 ; WD. 00 (B 00) -- FORWARD LINKAGE
   1192						 ; WD. 01 (B 02) -- BACKWARD LINKAGE
   1193		000004 			R.TD==04 ; WD. 02 (B 04) -- STD NODE OF REQUESTOR
   1194		000006 			R.AT==06 ; WD. 03 (B 06) -- ATL NODE OF REQUESTOR ***
   1195		000010 			R.PR==10 ; WD. 04 (B 10) -- PRIORITY (BYTE)
   1196		000011 			R.DP==11 ;        (B 11) -- DPB SIZE (BYTE) ***
   1197		000012 			R.LU==12 ; WD. 05 (B 12) -- LOGICAL UNIT NUMBER (BYTE)
   1198		000013 			R.FN==13 ;        (B 13) -- EVENT FLAG NUMBER (BYTE)
   1199		000014 			R.FC==14 ; WD. 06 (B 14) -- I/O FUNCTION CODE
   1200		000016 			R.SB==16 ; WD. 07 (B 16) -- ADDRESS OF STATUS BLOCK
   1201		000020 			R.AS==20 ; WD. 10 (B 20) -- AST ADDRESS
   1202		000022 			R.UI==22 ; WD. 11 (B 22) -- UIC (UNUSED)
   1203		000024 			R.PB==24 ; WD. 12 (B 24) -- PARAMETER #1
   1204						 ; WD. 13 (B 26) -- PARAMETER #2
   1205						 ; WD. 14 (B 30) -- PARAMETER #3
   1206						 ; WD. 15 (B 32) -- PARAMETER #4
   1207						 ; WD. 16 (B 34) -- PARAMETER #5
   1208						 ; WD. 17 (B 36) -- PARAMETER #6
   1209					;
   1210					; THE LOW ORDER THREE-BITS OF THE I/O FUNCTION CODE ARE USED BY THE SYSTEM
   1211					; AS FOLLOWS:
   1212					;
   1213							;[0] -- RESERVED FOR FUTURE USE
   1214		000002 			RF.XR==000002	;RESERVED
   1215							;[2] -- RESERVED FOR FUTURE USE
   1216					;
   1217					; *** WHENEVER AN I/O REQUEST IS QUEUED BY THE "QUEUE I/O" DIRECTIVE, THE
   1218					; DPB SIZE AND THE REQUESTOR'S ATL NODE ADDRESS ARE RECORDED IN THE I/O
   1219					; REQUEST NODE.  WHENEVER AN I/O REQUEST IS QUEUED AS A RESULT OF ANOTHER
   1220					; DIRECTIVE (VIZ., "REQUEST" CAUSING A TASK IMAGE TO BE LOADED), THE DPB
   1221					; SIZE AND THE REQUESTOR'S ATL NODE ADDRESS ARE SET TO ZERO.  THUS, BOTH
   1222					; BOTH THE DPB SIZE AND THE ATL NODE ADDRESS ARE ALSO "EXEC REQUEST"
   1223					; INDICATORS.
   1224					;
SCH	- TASK SCHEDULER & GLOB	MACRO M1108  16-DEC-77 11:28  PAGE 25
EXEC MODULE ONE -- SYMBOLIC DEFINITIONS

   1226					;+
   1227					;  SIGNIFICANT EVENT FLAG DEFINITIONS
   1228					;
   1229					;
   1230					; THE HIGH-ORDER BYTE '.SERFG+1' IS INCREMENTED WHENEVER A CLOCK
   1231					; TICK OCCURS (WHENEVER THE CLOCK INTERRUPT SERVICE ROUTINE RUNS).
   1232					; HENCE, '.SERFG+1' IS A BYTE CONTAINING A COUNT OF UNRECOGNIZED
   1233					; CLOCK TICKS.
   1234					;
   1235					; THE BITS OF THE LOW-ORDER BYTE '.SERFG+0' ARE USED TO FLAG THE
   1236					; FOLLOWING EVENTS:
   1237					;
   1238		000001 			EV.SE==001 ; [0] SET WHENEVER A SIGNIFICANT EVENT IS TO BE
   1239						   ; RECOGNIZED,
   1240					;
   1241		000002 			EV.AS==002 ; [1] SET WHEN POWER FAIL IS REQUIRED
   1242		000200 			EV.PF==200 ; [7] SET WHEN POWER DOWN HAS OCCURRED AND MUST BE RECOGNIZED
   1243						   ;     ** MUST BE SIGN BIT **
   1244					;-
SCH	- TASK SCHEDULER & GLOB	MACRO M1108  16-DEC-77 11:28  PAGE 26
EXEC MODULE ONE -- NUL TASK

   1246						.SBTTL	EXEC MODULE ONE -- NUL TASK
   1247					;
   1248					; THE NUL TASK EXISTS TO ELIMINATE EXCEPTION TESTING WHEN SCANNING THE
   1249					; ACTIVE TASK LIST, AND WHEN PROCESSING DIRECTIVES THAT CAUSE AN
   1250					; ATL SCAN TO CONTINUE FROM THE NEXT TASK OF LOWER PRIORITY THAN THE
   1251					; DIRECTIVE ISSUING TASK.
   1252					;
   1253					; THE NUL TASK IS THE LOWEST PRIORITY TASK IN A SYSTEM.
   1254					;
   1255					; THE NUL TASK HAS AN ATL NODE WITH STATUS OF "RUNNING", BUT HAS NO STD
   1256					; ENTRY.
   1257					;
   1258					; THE NUL TASK DOES NOT RESIDE IN A PARTITION.
   1259					;
   1260					; THE NUL TASK EXECUTION CONSISTS OF "WAIT" INSTRUCTIONS (TO INCREASE
   1261					; UNIBUS THROUGHPUT).  HOWEVER, THE NUL TASK DOES HAVE CONTEXT, AND CAN
   1262					; EXECUTE PDP-11 INSTRUCTIONS
   1263					;
   1264					;
   1265	001564				NULHD::	.STKM	170017,0,0,0,0,0,0,NTKXEP,174000,NTKXSP
	001632	000000 	000000 	000000 		.WORD	0,0,0,0
	001640	000000
	001660	174000 	002070'	002044'		.WORD	174000,NTKXEP,NTKXSP
	001714	000005 				.WORD	5
	001716	037202'				.WORD	TTPEN
	001720	000000 				.WORD	0
	001722	000000 				.WORD	0
	001724	000000 				.WORD	0
	001726	000000 				.WORD	0
	001730	000000 				.WORD	0
	001732	000000 				.WORD	0
	001734	000000 				.WORD	0
	001736	000000 				.WORD	0
	001740	000000 				.WORD	0
	001742	000000 				.WORD	0
	002044	170017 				.WORD	170017
	002046	000000 				.WORD	0
	002050	000000 				.WORD	0
	002052	000000 				.WORD	0
	002054	000000 				.WORD	0
	002056	000000 				.WORD	0
	002060	002070'				.WORD	NTKXEP
	002062	174000 				.WORD	174000
SCH	- TASK SCHEDULER & GLOB	MACRO M1108  16-DEC-77 11:28  PAGE 27
EXEC MODULE ONE -- NUL TASK

   1267	002064				NTKXEN:	.ENB6			;ENABLE INTERRUPTS
	002064	012637 	177776 			MOV	(SP)+,@#PS
   1268	002070	000001 			NTKXEP:	WAIT
   1269	002072	000001 				WAIT
   1270	002074	005200 				INC	R0
   1271	002076	032737 	040000 	031114'		BIT	#EF.PR1,.COMEF+2 ;IF PRIMARY PROTOCOL IS DEAD
   1272	002104	001440 				BEQ	40$		;THEN SEND DOWN MESSAGE
   1273	002106	005737 	031302'			TST	.ACKAL		;IF ACKAL HAS NOT BEEN SENT
   1274	002112	001002 				BNE	20$		;THEN KL MAY STILL BE SHAKY
   1275	002114	105037 	002351'			CLRB	SNDMSG		;OTHERWISE RESET MSG FLAG
   1276	002120				20$:	.INH6			;INHIBIT INTERRUPTS
	002120	013746 	177776 			MOV	@#PS,-(SP)
	002124	112737 	000300 	177776 		MOVB	#300,@#PS
   1277	002132	005737 	031232'			TST	.TKTN		;;;CHECK FOR TASK TERMINATION REQUIRED
   1278	002136	001410 				BEQ	30$		;;; +++004 NO -- LOOK AT TIME OF DAY FLAG
   1279	002140	005037 	031232'			CLR	.TKTN		;;;CLEAR REQUEST FOR TASK TERMINTATION
   1281	002144					.ENB6			;;;ENABLE INTERRUPTS
	002144	012637 	177776 			MOV	(SP)+,@#PS
   1282	002150					DIR$	#.TKTN.		;REQUEST TASK TERMINATION
	002150	012746 	002256'			MOV	#.TKTN.,-(SP)
	002154	104375 				EMT	375
   1283	002156	000744 				BR	NTKXEP
   1284						;
   1288	002160				30$:				;;; +++004
   1289	002160					.ENB6			;;; +++004 ENABLE INTERRUPTS
	002160	012637 	177776 			MOV	(SP)+,@#PS
   1290	002164	005737 	031242'			TST	.CLKSW		; +++004 NEED TIME CHANGE?
   1291	002170	100337 				BPL	NTKXEP		; +++004 NO -- JUST GO ON
   1292	002172	005037 	031242'			CLR	.CLKSW		; +++004 YES -- RESET CLOCK SWITCH
   1293	002176					DIR$	#.TOD.		; +++004 REQUEST TIME OF DAY TASK
	002176	012746 	002240'			MOV	#.TOD.,-(SP)
	002202	104375 				EMT	375
   1294	002204	000731 				BR	NTKXEP		; +++004 AND CONTINUE IDLE LOOP
   1295						;
   1296
   1297	002206	105737 	002351'		40$:	TSTB	SNDMSG		;HAVE WE INFORMED THE TTYS ?
   1298	002212	001342 				BNE	20$		;YES -- DON'T RE-SEND
   1299	002214	012704 	002274'			MOV	#DWNMSG,R4	;SEND DOWN MESSAGE
   1300	002220					CALL	COPBUF		;COPY BUFFER TO FREE SPACE
	002220	004737 	020054'			JSR	PC,COPBUF
   1301	002224	010004 				MOV	R0,R4		;SET UP TO SEND IT
   1302	002226					CALL	.SNDAL		;SEND MESSAGE
	002226	004737 	017436'			JSR	PC,.SNDAL
   1303	002232	105237 	002351'			INCB	SNDMSG		;SYSTEM DOWN MESSAGE HAS BEEN SENT.
   1304	002236	000730 				BR	20$
   1305						;
   1306	002240				.TOD.:
   1307	002240					RQST$	MIDNIT		; +++004
	002240	   013 	   007 			.BYTE	11.,7
	002242	051254 	054374 			.RAD50	/MIDNIT/
	002246	000000 	000000 			.WORD	0,0
	002252	000000 				.WORD
	002254	   000 	   000 			.BYTE	,
   1308
   1310	002256				.TKTN.:	RQST$	TKTN
	002256	   013 	   007 			.BYTE	11.,7
	002260	077314 	053600 			.RAD50	/TKTN/
SCH	- TASK SCHEDULER & GLOB	MACRO M1108  16-DEC-77 11:28  PAGE 27-1
EXEC MODULE ONE -- NUL TASK

	002264	000000 	000000 			.WORD	0,0
	002270	000000 				.WORD
	002272	   000 	   000 			.BYTE	,
   1312
   1313	002274	000000 	000060 	002306'	DWNMSG:	.WORD	0,60,DWNMS,DWNMSZ,DWNMSZ*400
	002302	000043 	021400
   1314
   1316	002306	   015 	   012 	   007 	DWNMS:	.ASCII	<15><12><7><7><7>/%DECSYSTEM-20 NOT RUNNING/<15><12><7><7><7>
	002311	   007 	   007 	   045
	002314	   104 	   105 	   103
	002317	   123 	   131 	   123
	002322	   124 	   105 	   115
	002325	   055 	   062 	   060
	002330	   040 	   116 	   117
	002333	   124 	   040 	   122
	002336	   125 	   116 	   116
	002341	   111 	   116 	   107
	002344	   015 	   012 	   007
	002347	   007 	   007
   1320		000043 			DWNMSZ=.-DWNMS
   1321	002351	   001 			SNDMSG:	.BYTE	1		;  +++005 A SYSTEM DOWN MSG HAS BEEN SENT
   1322						.EVEN
SCH	- TASK SCHEDULER & GLOB	MACRO M1108  16-DEC-77 11:28  PAGE 28
EXEC MODULE TWO -- SERVICE FOR "EMT" & "TRAP" INSTRUCTIONS

   1324						.SBTTL	EXEC MODULE TWO -- SERVICE FOR "EMT" & "TRAP" INSTRUCTIONS
   1325					;
   1326					;
   1327					;	EMT INSTRUCTIONS ARE ONLY EXECUTED BY NON-INTERRUPT SERVICE ROUTINES
   1328					;
   1329					;	DIRECTIVE DISPATCH -- CONTROL IS TRANSFERRED TO A DIRECTIVE SERVICE
   1330					;	ROUTINE PER DIRECTIVE IDENTIFICATION CODE (DIC)
   1331					;
   1332					;	REGISTER DEFINITIONS ON EXIT:
   1333					;	R0 -- PC OF EMT INSTRUCTION
   1334					;	R1 -- POINTER TO WORD FOLLOWING DIC & SIZE
   1335					;	R2 -- DPB SIZE
   1336					;	R3 -- DIC (DIRECTIVE IDENTIFICATION CODE)
   1337					;	R5 -- CURRENT TASK POINTER
   1338					;
   1339		000020 			EM.DRO==20	;OFFSET TO DPB OR DPB POINTER ON STACK
   1340					;
   1341					;
   1342					;
   1343	002352	010546 			EMTTRP::MOV	R5,-(SP)	;SAVE R5 INCASE OF TRAP(SST)
   1344	002354	016605 	000002 			MOV	2(SP),R5	;=PC+2 OF EMT INSTRUCTION
   1345	002360	024527 				CMP	-(R5),(PC)+	;WAS IT A
   1346	002362	104375 				EMT	375		; DIRECTIVE ?
   1347	002364	001421 				BEQ	10$		;YES -- LEGAL DIRECTIVE REQUEST
   1348	002366	011637 	031200'			MOV	@SP,EMTSTK	;SAVE R5
   1349	002372	111516 				MOVB	@R5,@SP		;NO -- MUST SET IT UP FOR SST
   1350	002374	013705 	031110'			MOV	.CRTSK,R5	;FIND THE CURRENT TASK POINTER
   1351	002400	016505 	000016 			MOV	A.TD(R5),R5	;FIND STD ADDRESS
   1352	002404	016505 	000030 			MOV	S.SS(R5),R5	;FIND THE SST TABLE
   1353	002410	001403 				BEQ	5$		;NONE -- FORGET IT
   1354	002412					MFPS	T.RAPE(R5),R5	;IS THERE AN ENTRY IN THE TABLE?
	002412	016505 	000012 			MOV	T.RAPE(R5),R5
   1355	002416	001106 				BNE	.SSTET		;DO SST SERVICE
   1356
   1357	002420	012737 	000012 	031202'	5$:	MOV	#TN.EMT,TRPASV	;SAVE THE TERMINATION TYPE
   1358	002426	000513 				BR	CMNABT		;AND GO TO COMMON ABORT
   1359
   1360	002430				10$:				;REMOVE THE SAVED R0 -- NOT NEEDED NOW
   1361									;SAVE REGISTERS
   1362	002430	010446 				MOV	R4,-(SP)
   1363	002432	010346 				MOV	R3,-(SP)
   1364	002434	010246 				MOV	R2,-(SP)
   1365	002436	010146 				MOV	R1,-(SP)
   1366	002440	010046 				MOV	R0,-(SP)
   1367	002442	010637 	031200'			MOV	SP,EMTSTK	;SAVE EMT STACK POINTER
   1369	002446	016601 	000020 			MOV	EM.DRO(SP),R1	;FIND THE DIRECTIVE OR DIRECTIVE POINTER
   1375					;
   1376					;	IF R1 IS EVEN, IT IS ASSUMED TO BE A DPB POINTER
   1377					;	IF R1 IS ODD, IT IS ASSUMED TO BE THE FIRST WORD OF A DPB THAT
   1378					;	HAS BEEN PUSHED ONTO THE STACK.
   1379					;
   1380					;
   1381					;	TEST FOR ODD OR EVEN
   1382					;
   1383	002452	032701 	000001 			BIT	#1,R1
   1384	002456	001003 				BNE	20$
   1385					;
SCH	- TASK SCHEDULER & GLOB	MACRO M1108  16-DEC-77 11:28  PAGE 28-1
EXEC MODULE TWO -- SERVICE FOR "EMT" & "TRAP" INSTRUCTIONS

   1386					;	EVEN -- R1 CONTAINS A DPB POINTER (ADDRESS).
   1387					;
   1388	002460					MFPS	@R1,R2		;FIND THE FIRST DPB WORD
	002460	011102 				MOV	@R1,R2
   1389	002462	010203 				MOV	R2,R3		;FIND THE DIRECTIVE IDENTIFICATION CODE
   1390	002464	000405 				BR	30$		;EXECUTE DIRECTIVE
   1391					;
   1392					;	ODD WORD ON STACK -- DPB IS ON THE ISSUING
   1393					;	TASK'S STACK, AND R1 CONTAINS THE FIRST DPB WORD.
   1394					;
   1395					;	SET R1 TO THE DPB ADDRESS, R2 TO THE DPB SIZE (IN WORDS),
   1396					;	R3 TO THE DIRECTIVE IDENTIFICATION CODE.
   1397					;
   1398	002466	010102 			20$:	MOV	R1,R2		;SET DPB SIZE IN R2
   1399	002470	010103 				MOV	R1,R3		;SET DIRECTIVE CODE
   1400	002472	010601 				MOV	SP,R1		;FIND THE ADDRESS OF THE DPB
   1401	002474	062701 	000020 			ADD	#EM.DRO,R1	;POINT PAST SAVED STACK
   1402	002500	042703 	177400 		30$:	BIC	#177400,R3
   1403	002504	105002 				CLRB	R2
   1404	002506	000302 				SWAB	R2		;SET SIZE IN LOW ORDER
   1405					;
   1406					;	R3 CONTAINS  THE DIRECTIVE IDENTIFICATION CODE.
   1407					; THE DIC IS AN ODD QUANTITY AND SHOULD BE IN THE RANGE
   1408					;	001-127.(MAX RANGE)
   1409					;
   1410	002510	005721 				TST	(R1)+		;ADVANCE R1 TO POINT TO THE WORD FOLLOWING
   1411									;THE FIRST WORD DPB WORD.
   1412	002512	013705 	031110'			MOV	.CRTSK,R5	;SET UP CURRENT TASK POINTER
   1413	002516	022703 	000102 			CMP	#DIRMAX,R3	;CHECK TO SEE IF LEGAL DIRECTIVE
   1414	002522	103001 				BHIS	DIROK		;OK -- LEGAL RANGE
   1415	002524	104635 			DS.99:	TRAP	DE.99		;ILLEGAL DIRECTIVE
   1416	002526	000173 	002531'		DIROK:	JMP	@DIRDPT-1(R3)	;DISPATCH TO APPROPRIATE DIRECTIVE SERVICE CODE.
   1417					;
   1418	002532	012126'			DIRDPT:	.WORD	.D.QIO	;001. -- QIO
   1419	002534	012126'				.WORD	.D.QIO	;003. -- QIO AND WAIT
   1420	002536	011144'				.WORD	.D.GLI	;005. -- GET LUN INFORMATION
   1421	002540	011040'				.WORD	.D.ASS	;007. -- ASSIGN LUN
   1422	002542	007524'				.WORD	.D.DTE	;009. -- DTE20 FUNCTIONS
   1423	002544	013254'				.WORD	.D.REQ	;011. -- REQUEST
   1424	002546	012600'				.WORD	.D.SEN	;013. -- SEND
   1425	002550	012614'				.WORD	.D.SAR	;015. -- SEND AND REQUEST
   1426	002552	013052'				.WORD	.D.REC	;017. -- RECEIVE
   1427	002554	013052'				.WORD	.D.ROE	;019. -- RECEIVE OR EXIT
   1428	002556	013052'				.WORD	.D.ROS	;021. -- RECEIVE OR SUSPEND
   1429	002560	011626'				.WORD	.D.MKT	;023. -- MARK TIME
   1430	002562	013232'				.WORD	.D.PUT	;025. -- POWER UP AST
   1431	002564	011730'				.WORD	.D.CMT	;027. -- CANCEL MARK TIME REQUESTS
   1432	002566	002524'				.WORD	DS.99	; 029. -- ILLEGAL DIRECTIVE
   1433	002570	011310'				.WORD	.D.CEF	;031. -- CLEAR EVENT FLAG
   1434	002572	011326'				.WORD	.D.SEF	;033. -- SET EVENT FLAG
   1435	002574	011344'				.WORD	.D.DSE	;035. -- DECLARE SIGNIFICANT EVENT
   1436	002576	011370'				.WORD	.D.REF	;037. -- READ EVENT FLAG
   1437	002600	011404'				.WORD	.D.RAF	;039. -- READ ALL EVENT FLAGS
   1438	002602	011430'				.WORD	.D.WFS	;041. -- WAIT FOR SINGLE EVENT FLAG
   1439	002604	011506'				.WORD	.D.WFL	;043. -- WAIT FOR LOGICAL "OR" OF EVENT FLAGS
   1440	002606	011776'				.WORD	.D.SUS	;045. -- SUSPEND EXECUTION
   1441	002610	012010'				.WORD	.D.RES	;047. -- RESUME TASK EXECUTION
SCH	- TASK SCHEDULER & GLOB	MACRO M1108  16-DEC-77 11:28  PAGE 28-2
EXEC MODULE TWO -- SERVICE FOR "EMT" & "TRAP" INSTRUCTIONS

   1442	002612	011614'				.WORD	.D.WSE	;049. -- WAIT FOR NEXT SIGNIFICANT EVENT
   1443	002614	012104'				.WORD	.D.EXT	;051. -- TASK EXIT
   1448	002616	002524'				.WORD	DS.99	; 053. -- ILLEGAL DIRECTIVE
   1449	002620	002524'				.WORD	DS.99	; 055. -- ILLEGAL DIRECTIVE
   1451	002622	013220'				.WORD	.D.STV	;057. -- SPECIFY SST VECTOR
   1452	002624	011174'				.WORD	.D.GTP	;059. -- GET TIME PARAMETERS
   1453	002626	002524'				.WORD	DS.99	;061. -- ILLEGAL
   1454	002630	013502'				.WORD	.D.GPP	;063. -- GET TASK PARAMETERS
   1455	002632	013624'				.WORD	.D.GMP	;065. -- GET PARTITION PARAMETERS
   1456		000102 			DIRMAX=.-DIRDPT	;LEGAL NUMBER OF DIRECTIVES
   1457					;
   1458					; .SSTET -- SST FOR TRAP AND EMT'S
   1459					;
   1460	002634				.SSTET::
   1461	002634	105066 	000001 			CLRB	1(SP)		;CLEAR HIGH BYTE
   1462	002640	006316 				ASL	@SP		;MULTIPLY BY 2
   1463	002642				.SSTCO::
   1465	002642	012746 	004000 			MOV	#004000,-(SP)	;SET PS
   1469	002646	010546 				MOV	R5,-(SP)	;SET TRAP ADDRESS
   1470	002650	013705 	031200'			MOV	EMTSTK,R5	;RESTORE R5
   1471	002654	000002 				RTI			;RETURN TO USER
   1472					;
   1473	002656	013705 	031200'		CMNABT:	MOV	EMTSTK,R5	;RESTORE R5
   1474	002662	000137 	001100'			JMP	CMNABO		;AND GO TO COMMON ABORT
   1475					;
   1476					; CONTROL IS RETUNRED TO ".DR.NS" TO EXIT DIRECTIVE SERVICE WITHOUT ALTERING
   1477					; AN ISSUING TASK'S DIRECTIVE STATUS OR CONDITION CODES.
   1478					;
   1479					; DIRECTIVE RETURN STATUSES
   1480					;
   1481		000000 			DR.00==0		;DIRECTIVE RETURN 00
   1482		000001 			DR.01==1		;DIRECTIVE RETURN 01
   1483		000002 			DR.02==2		;DIRECTIVE RETURN 02
   1484		000003 			DR.03==3		;DIRECTIVE RETURN 03
   1485					;
   1486					; DIRECTIVE ERROR RETURNS
   1487					;
   1488		000377 			DE.01==-1&377		;ERR 01
   1489		000376 			DE.02==-2&377		;ERR 02
   1490		000375 			DE.03==-3&377		;ERR 03
   1491		000374 			DE.04==-4&377		;ERR 04
   1492		000373 			DE.05==-5&377		;ERR 05
   1493		000372 			DE.06==-6&377		;ERR 06
   1494		000371 			DE.07==-7&377		;ERR 07
   1495		000370 			DE.08==-8.&377		;ERR 08
   1496		000367 			DE.09==-9.&377		;ERR 09
   1497		000366 			DE.10==-10.&377		;ERR 10
   1498		000365 			DE.11==-11.&377		;ERR 11
   1499		000260 			DE.80==-80.&377		;ERR 80
   1500		000257 			DE.81==-81.&377		;ERR 81
   1501		000246 			DE.90==-90.&377		;ERR 90
   1502		000245 			DE.91==-91.&377		;ERR 91
   1503		000244 			DE.92==-92.&377		;ERR 92
   1504		000243 			DE.93==-93.&377		;ERR 93
   1505		000242 			DE.94==-94.&377		;ERR 94
   1506		000241 			DE.95==-95.&377		;ERR 95
   1507		000240 			DE.96==-96.&377		;ERR 96
SCH	- TASK SCHEDULER & GLOB	MACRO M1108  16-DEC-77 11:28  PAGE 28-3
EXEC MODULE TWO -- SERVICE FOR "EMT" & "TRAP" INSTRUCTIONS

   1508		000237 			DE.97==-97.&377		;ERR 97
   1509		000236 			DE.98==-98.&377		;ERR 98
   1510		000235 			DE.99==-99.&377		;ERR 99
   1511					;
   1512	002666	132766 	000340 	000002 	.DRSRN::BITB	#340,2(SP)	;FROM EXEC?
   1513	002674	001025 				BNE	20$		;YES -- CONTIUE
   1514	002676	011646 				MOV	@SP,-(SP)	;PUT IT ON STACK TWICE
   1515	002700	162716 	000002 			SUB	#2,@SP
   1516	002704	117616 	000000 			MOVB	@(SP),@SP
   1517	002710	010537 	031200'			MOV	R5,EMTSTK
   1518	002714	013705 	031110'			MOV	.CRTSK,R5	;FIND THE CURRENT TASK
   1519	002720	016505 	000016 			MOV	A.TD(R5),R5	;FIND STD ADDRESS
   1520	002724	016505 	000030 			MOV	S.SS(R5),R5	;IS THERE AN SST VECTOR?
   1521	002730	001403 				BEQ	10$		;NO -- CRASH
   1522	002732					MFPS	T.RAPT(R5),R5	;FIND THE ADDRESS
	002732	016505 	000014 			MOV	T.RAPT(R5),R5
   1523	002736	001336 				BNE	.SSTET		;NONE -- CRASH
   1524	002740	012737 	000014 	031202'	10$:	MOV	#TN.TRP,TRPASV	;SET TRAP TYPE
   1525	002746	000743 				BR	CMNABT		;AND GO TO COMMON ABORT
   1526					;
   1527					;
   1528	002750	162716 	000002 		20$:	SUB	#2,@SP		;FIND THE TRAP VALUE
   1529	002754	113600 				MOVB	@(SP)+,R0
   1530	002756	100006 				BPL	DRXCOM		;BRANCH IF THE DIRECTIVE SUCCEEDED
   1531	002760	013706 	031200'		DEXCOM:	MOV	EMTSTK,SP	;RESTORE STACK FOR REGISTER SAVE
   1532	002764	052766 	000001 	000016 		BIS	#1,EM.DRO-2(SP)	;SET CC-C -2(ISSUING TASK'S PS)
   1533	002772	000405 				BR	DRXRR		;---
   1534					;
   1535	002774				.DR.NS::			;RETURN NO STATUS
   1536	002774	013706 	031200'		DRXCOM:	MOV	EMTSTK,SP	;RESTORE STACK FOR REGISTER SAVE
   1537	003000	042766 	000001 	000016 		BIC	#1,EM.DRO-2(SP)	;CLEAR CC-C -2(ISSUING TASK'S PS)
   1538	003006				DRXRR:				;-----
   1539	003006	010037 	000046 			MOV	R0,$DSW		;SAVE THE DSW
   1540	003012	012600 				MOV	(SP)+,R0	;POP (RESORE) R0
   1541	003014	012601 				MOV	(SP)+,R1	;POP (RESTORE) R1
   1542	003016	012602 				MOV	(SP)+,R2	;POP (RESTORE) R2
   1543	003020	012603 				MOV	(SP)+,R3	;POP (RESTORE) R3
   1545	003022	016604 	000010 			MOV	10(SP),R4	;FIND DPB OR DPB ADDRESS
   1550	003026	106004 				RORB	R4		;ADDRESS OR DPB?
   1551	003030	103402 				BCS	10$		;DPB -- FOUND SIZE REQ'D
   1552	003032	012704 	000400 			MOV	#400,R4		;SET UP TO POP ONLY 1 WORD
   1553	003036	105004 			10$:	CLRB	R4
   1554	003040	000304 				SWAB	R4		;PUT SIZE IN LOW ORDER
   1555	003042	006304 				ASL	R4		;MAKE +2 FOR COUNT
   1557	003044	062704 	000020 			ADD	#EM.DRO,R4	;POINT TO USER STACK LOCATION
   1558	003050	063704 	031200'			ADD	EMTSTK,R4
   1564	003054	016644 	000006 			MOV	6(SP),-(R4)	;RESET STACK
   1565	003060	016644 	000004 			MOV	4(SP),-(R4)
   1566	003064	016644 	000002 			MOV	2(SP),-(R4)
   1567	003070	011644 				MOV	@SP,-(R4)
   1568	003072	010406 				MOV	R4,SP		;SET STACK POINTER
   1569					;
   1570					; A DIRECTIVE HAS BEEN PROCESSED -- IF A TASK IS CURRENT (THE ISSUING
   1571					; TASK) ITS PS, PC, R5, & R4 ARE ON THE KERNEL STACK, AND '.CRTSK' POINTS
   1572					; TO THE ATL NODE OF THAT TASK.  IF A TASK IS NOT CURRENT (ISSUING
   1573					; TASK EXIT'ED), '.CRTSK' IS SET TO ZERO.
   1574					;
SCH	- TASK SCHEDULER & GLOB	MACRO M1108  16-DEC-77 11:28  PAGE 28-4
EXEC MODULE TWO -- SERVICE FOR "EMT" & "TRAP" INSTRUCTIONS

   1575					; R0 CONTAINS THE ADDRESS OF THE NEXT ATL NODE TO BE EXAMINED.
   1576					;
   1577	003074	032766 	000340 	000006 		BIT	#PRI7,+6(SP)	;IS PROCESSOR PRIORITY OF DIRECTIVE ISSUING TASK ZERO?
   1578	003102	001403 				BEQ	20$		;YES -- SCAN ATL FROM ENTRY POINTED TO BY R5.
   1579	003104	012604 				MOV	(SP)+,R4	;NO -- TASK SWITCHING HAS BEEN INHIBITED BY ISSUING TASK,
   1580	003106	012605 				MOV	(SP)+,R5	;RESTORE R4, R5, PC, & PS, AND RETURN TO ISSUING TASK.
   1581	003110	000002 				RTI			;(PRIORITY IS ZEROED IF TASK EXIT'ED.)
   1582					;
   1583					; TRANSFER CONTROL TO THE SCAN ATL ROUTINE AT PRIORITY TWO,
   1584					; PREVIOUS MODE: USER, CURRENT MODE: KERNEL, AND CC'S ZERO.
   1585					;
   1586	003112	012746 	034100 		20$:	MOV	#034100+STXAS,-(SP)
   1587	003116	012746 	003140'			MOV	#ASXE2,-(SP)
   1588	003122	000002 				RTI
SCH	- TASK SCHEDULER & GLOB	MACRO M1108  16-DEC-77 11:28  PAGE 29
EXEC MODULE THREE -- TITLE PAGE

   1590						.SBTTL	EXEC MODULE THREE -- TITLE PAGE
   1591					;
   1592					;
   1593					;
   1594					;
   1595					;
   1596					;
   1597					;	COPYRIGHT 1975, DIGITAL EQUIPMENT CORP., MAYNARD, MASSACHUSETTS   01754.
   1598					;
   1599					;
   1600					;	THE MATERIAL INCLUDED IN THIS FUNCTIONAL  SPECIFICATION,  INCLUDING  BUT
   1601					;	NOT   LIMITED   TO,  INSTRUCTION  TIMES  AND  OPERATING  SPEEDS  IS  FOR
   1602					;	INFORMATION PURPOSES ONLY.  ALL  SUCH  MATERIAL  IS  SUBJECT  TO  CHANGE
   1603					;	WITHOUT NOTICE.  CONSEQUENTLY DEC MAKES NO CLAIM AND SHALL NOT BE LIABLE
   1604					;	FOR ITS ACCURACY.
   1605					;
   1606					;	DEC ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS SOFTWARE
   1607					;	ON EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.
   1608					;
   1609					;
   1610					;
   1611					;
   1612					;
   1613					;		MODULE: EXEC MODULE THREE (ATL SCAN)
   1614					;
   1615					;		VERSION: V001A
   1616					;
   1617					;		AUTHOR:  R. MCLEAN
   1618					;
   1619					;		DATE: 19 MAR 75
   1620					;
   1621					;
   1622					;	THIS MODULE CONTAINS:
   1623					;
   1624					;	1 -- ATL (ACTIVE TASK LIST) SCAN CODE.
SCH	- TASK SCHEDULER & GLOB	MACRO M1108  16-DEC-77 11:28  PAGE 30
EXEC MODULE THREE -- SCAN OF ACTIVE TASK LIST

   1626						.SBTTL	EXEC MODULE THREE -- SCAN OF ACTIVE TASK LIST
   1627					;+
   1628					; THE ACTIVE TASK LIST (ATL) IS A PRIORITY ORDERED LIST OF TASKS THAT
   1629					; HAVE BEEN ASSIGNED MEMORY SPACE FOR EXECUTION, AND HAVE NOT EXIT'ED.
   1630					;
   1631					; THE SYSTEM IS DRIVEN BY SCANNING THE ATL FROM THE TOP (HIGH PRIORITY)
   1632					; WHETHER A TASK IS CAPABLE OF EXECUTION IS INDICATED BY THE 'A.TS'TH
   1633					; BYTE OF EACH ATL NODE (ENTRY).
   1634					;
   1635					; THE ATL IS SCANNED DOWNWARD FROM A TASK WHENEVER THAT TASK VOLUNTARILY
   1636					; STOPS EXECUTION (VIZ., WAITFOR, EXIT) AND A SIGNIFICANT
   1637					; EVENT HAS NOT BEEN DECLARED.
   1638					;
   1639					; SIGNIFICANT EVENTS ARE DECLARED BY TASKS (PRI=0) VIA SYSTEM DIRECTIVES,
   1640					; AND BY INTERRUPT SERVICE ROUTINES (PRI 4,5,6,7) VIA SYSTEM SUBROUTINES.
   1641					; A DECLARATION OF A SIGNIFICANT EVENT IS INDICATED BY THE SOFTWARE FLAG
   1642					; (BYTE) '.SERFG+0'.
   1643					;
   1644					; CONTROL IS TRANSFERRED TO THE ATL SCAN ROUTINE UNDER TWO CONDITIONS:
   1645					; (1) WHEN CONTROL IS RETURNED TO A TASK (PRI 0) VIA THE "COMMON RETURN TO
   1646					; INTERRUPTED PROGRAM" AND A SIGNIFICANT EVENT HAS BEEN DECLARED (NON-ZERO
   1647					; '.SERFG+0'), AND (2) WHEN CONTROL IS RETURNED FROM A DIRECTIVE SERVICE
   1648					; ROUTINE.
   1649					;
   1650					; THERE ARE TWO ENTRY POINTS TO THE ATL SCAN ROUTINE:
   1651					; ASXE1 -- TO SCAN THE ATL DOWNWARD FROM THE TOP.  I.E., TO EFFECT A
   1652					; DECLARATION OF A SIGNIFICANT EVENT.
   1653					;
   1654					; CONTROL IS TRANSFERRED TO 'ASXE1' FROM THE 'COMMON RETURN TO INTERRUPTED
   1655					; PROGRAM', OR FROM ATL SCAN TASK STATUS SERVICE, WHENEVER A SIGNIFICANT
   1656					; EVENT DECLARATION IS TO BE EFFECTED.
   1657					;
   1658					; ASXE2 -- TO SERVICE THE STATUS OF THE TASK WHOSE ATL NODE ADDRESS
   1659					; IS IN R5, AND THEN TO EITHER: (1) RETURN CONTROL TO THAT TASK,
   1660					; (2) SCAN THE ATL FROM THAT TASK THRU LOWER PRIORITY TASKS, OR
   1661					; (3) TO SCAN THE ATL FROM THE TOP.
   1662					;
   1663					; CONTROL IS TRANSFERRED TO 'ASXE2' FROM THE COMMON EXIT FOR DIRECTIVE
   1664					; (EMT 375) SERVICE CODE.
   1665					;
   1666					; IF A SIGNIFICANT EVENT HAS BEEN DECLARED (EITHER COINCIDENTLY OR AS
   1667					; A RESULT OF DIRECTIVE EXECUTION) CONTROL IS TRANSFERRED TO 'ASXE1'.
   1668					; HOWEVER, THE DECISION TO TRANSFER TO 'ASXE1' IS NOT MADE UNTIL THE
   1669					; "TASK STATUS SERVICE" FOR THE DIRECTIVE ISSUING TASK HAS BEEN PERFORMED.
   1670					;
   1671					; WHENEVER CONTROL IS TRANSFERRED TO THE ATL SCAN ROUTINE AND A TASK IS
   1672					; CURRENT, THE PS, PC, R5, & R4 OF THE CURRENT TASK  HAVE BEEN PUSHED
   1673					; ONTO THE  STACK.
   1674					;-
SCH	- TASK SCHEDULER & GLOB	MACRO M1108  16-DEC-77 11:28  PAGE 31
EXEC MODULE THREE -- SCAN OF ACTIVE TASK LIST

   1676	003124	142737 	000001 	031116'	ASXE1::	BICB	#EV.SE,.SERFG+0	;CLEAR SIGNIFICANT EVENT FLAG, AND SET
   1677	003132	012705 	032552'			MOV	#.ATLLH,R5	;R5 TO THE ADDRESS OF THE FIRST ATL NODE.
   1678									;DISPATCH PER TASK STATUS
   1679					;
   1680					; SCAN LOOP -- AFTER PROCESSING AN ATL ENTRY, CONTROL IS TRANSFERRED EITHER:
   1681					; (1) TO 'ASXSCN' TO PROCESS THE NEXT ATL NODE, OR (2) TO 'ASXTE' TO
   1682					; TERMINATE THE ATL SCAN (A RUNABLE TASK HAS BEEN FOUND).
   1683					;
   1684					; CONTROL IS TRANSFERRED HERE FROM A ATL SCAN SERVICE ROUTINE, WITH THE
   1685					;  STACK AND R5 UNCHANGED FROM THE DISPATCH TO THAT SERVICE ROUTINE.
   1686					;
   1687	003136	011505 			ASXSCN:	MOV	@R5,R5		;ADVANCE R5 TO THE NEXT ATL NODE,
   1688	003140	116504 	000014 		ASXE2:	MOVB	A.TS(R5),R4	;DISPATCH PER ACTIVE TASK STATUS, WITH
   1689	003144	000174 	003146'			JMP	@ASXDT-02(R4)	;R0 = ATL NODE ADR & R4 = STATUS.
   1690					;
   1691	003150				ASXDT:		;STATUS DEFINITIONS & DISPATCH ADDRESS TABLE.
   1692							;
   1693							;THE DISPATCH ROUTINE AT 'ASXE2' EXPECTS THE DISPATCH TABLE
   1694							;TO BEGIN WITH STATUS "02" AND INCREASE SEQUENTIALLY BY TWOS.
   1695							;
   1696					;
   1697		000002 			TS.LRQ==02	;TASK LOAD REQEUST QUEUED
   1698	003150	003346'				ASXLRQ
   1699		000004 			TS.TKN==04	;TASK WAITING FOR TERMINATION NOTICE
   1700	003152	003136'				ASXSCN
   1701		000006 			TS.LRF==06	;TASK LOAD REQUEST FAILED
   1702	003154	003310'				ASXLRF
   1703		000010 			TS.RUN==10	;** TASK IS RUNNING
   1704	003156	003756'				ASXTE
   1705		000012 			TS.SUS==12	;** TASK IS SUSPENDED
   1706	003160	003136'				ASXSCN
   1707		000014 			TS.WF0==14	;** TASK WAITING FOR AN EVENT FLAG 1-14
   1708							;** ('TS.WF0'-'TS.WS4' ARE EXPECTED IN SEQUENCE
   1709							;** BY THE WAITFOR DIRECTIVES.)
   1710	003162	003176'				ASXWR0
   1711		000016 			TS.WF1==16	;** TASK WAITING FOR AN EVENT FLAG 17-32
   1712	003164	003206'				ASXWR1
   1713		000020 			TS.WF2==20	;** TASK WAITING FOR AN EVENT FLAG 33-48
   1714	003166	003216'				ASXWR2
   1715		000022 			TS.WF3==22	;** TASK WAITING FOR AN EVENT FLAG 49-64
   1716	003170	003226'				ASXWR3
   1717		000024 			TS.WF4==24	;** TASK WAITING FOR AN EVENT FLAG 1-64
   1718	003172	003236'				ASXWR4
   1719		000026 			TS.EXT==26	;TASK EXITED
   1720	003174	003464'				ASXEXT
SCH	- TASK SCHEDULER & GLOB	MACRO M1108  16-DEC-77 11:28  PAGE 32
EXEC MODULE THREE -- SCAN OF ACTIVE TASK LIST

   1722					;
   1723					; SERVICE FOR "WAITFOR" TASK STATUSES
   1724					;
   1725					; A TASK (THE TASK WHOSE ATL NODE IS POINTED TO BY R5) HAS ISSUED A
   1726					; WAITFOR DIRECTIVE.  IF ANY INDICATED EVENT FLAG IS SET, CHANGE TASK'S
   1727					; TO "RUNNING", AND TERMINATE ATL SCAN TO RUN THE TASK.
   1728					;
   1729					; TASK IS WAITING FOR INDICATED FLAG(S) IN RANGE ZERO (FLAGS 1-16)
   1730					;
   1731	003176	036565 	000024 	000020 	ASXWR0:	BIT	A.FM+0(R5),A.EF+0(R5)
   1732	003204	000433 				BR	ASXCMN
   1733					;
   1734					; TASK IS WAITING FOR INDICATED FLAG(S) IN RANGE ONE (FLAGS 17-32)
   1735					;
   1736	003206	036565 	000024 	000022 	ASXWR1:	BIT	A.FM+0(R5),A.EF+2(R5)
   1737	003214	000427 				BR	ASXCMN
   1738					;
   1739					; TASK IS WAITING FOR INDICATED FLAG(S) IN RANGE TWO (FLAGS 33-48)
   1740					;
   1741	003216	036537 	000024 	031112'	ASXWR2:	BIT	A.FM+0(R5),.COMEF+0
   1742	003224	000423 				BR	ASXCMN
   1743					;
   1744					; TASK IS WAITING FOR INDICATED FLAG(S) IN RANGE THREE (FLAGS 49-64)
   1745					;
   1746	003226	036537 	000024 	031114'	ASXWR3:	BIT	A.FM+0(R5),.COMEF+2
   1747	003234	000417 				BR	ASXCMN
   1748					;
   1749					; TASK IS WAITING FOR INDICATED FLAG(S) IN RANGE FOUR (FLAGS 1-64)
   1750					;
   1751	003236	036565 	000024 	000020 	ASXWR4:	BIT	A.FM+0(R5),A.EF+0(R5)
   1752	003244	001014 				BNE	WFXSET
   1753	003246	036565 	000026 	000022 		BIT	A.FM+2(R5),A.EF+2(R5)
   1754	003254	001010 				BNE	WFXSET
   1755	003256	036537 	000030 	031112'		BIT	A.FM+4(R5),.COMEF+0
   1756	003264	001004 				BNE	WFXSET
   1757	003266	036537 	000032 	031114'		BIT	A.FM+6(R5),.COMEF+2
   1758	003274	001720 			ASXCMN:	BEQ	ASXSCN
   1759	003276				WFXSET:
   1760	003276	112765 	000010 	000014 		MOVB	#TS.RUN,A.TS(R5)
   1761	003304	000137 	003756'			JMP	ASXTE
SCH	- TASK SCHEDULER & GLOB	MACRO M1108  16-DEC-77 11:28  PAGE 33
EXEC MODULE THREE -- SCAN OF ACTIVE TASK LIST

   1763					;
   1764					; SERVICE FOR TASK STATUS: LOAD REQUEST FAILED
   1765					;
   1766	003310	012765 	000040 	000024 	ASXLRF:	MOV	#TN.LRF,A.FM+0(R5) ;SET LOAD REQUEST FAILURE
   1767	003316	112765 	000004 	000014 		MOVB	#TS.TKN,A.TS(R5) ;SET TERMINATION NOTICE REQUESTED
   1768	003324	005237 	031232'			INC	.TKTN		;REQUEST TASK TERMINATION
   1769	003330	026527 	000006 	033436'		CMP	A.PD(R5),#F11TPD ;F11  TPD PARTITION?
   1770	003336	001300 				BNE	ASXE2		;NO -- CONTINUE
   1771	003340					.CRASH	LRF		;LOAD REQUEST FAILURE
	003340	000004 				IOT
	003342	   114 	   122 	   106 		.ASCIZ	/LRF/
	003345	   000
SCH	- TASK SCHEDULER & GLOB	MACRO M1108  16-DEC-77 11:28  PAGE 34
EXEC MODULE THREE -- SCAN OF ACTIVE TASK LIST

   1773					;
   1774					; SERVICE FOR TASK REQUEST QUEUE'D SERVICE
   1775					;
   1776	003346	006265 	000020 		ASXLRQ:	ASR	A.EF+0(R5)	;CHECK FOR REQUEST TO LOAD DONE
   1777	003352	103271 				BCC	ASXSCN		;NO -- CONTINUE TO WAIT
   1778	003354	105765 	000030 			TSTB	A.FM+4(R5)	;DID THE I/O SUCCEED?
   1779	003360	100753 				BMI	ASXLRF		;NO -- COMPLAIN
   1780	003362	112765 	000010 	000014 		MOVB	#TS.RUN,A.TS(R5) ;SET THE TASK STATUS TO RUNNING
   1781	003370	016504 	000012 			MOV	A.HA(R5),R4	;FIND THE HEADER ADDRESS
   1788	003374	016446 	000106 			MOV	H.TKVA(R4),-(SP) ;SAVE THE SST ADDRESS
   1789	003400	016446 	000076 			MOV	H.IPC(R4),-(SP)	;SAVE INITIAL PC
   1790	003404	016446 	000074 			MOV	H.IPS(R4),-(SP)	;SAVE INITIAL PS
   1791	003410	016446 	000130 			MOV	H.LUT(R4),-(SP)	;FIND OVERLAY LUN
   1792	003414	006316 				ASL	@SP		;MAKE OFFSET
   1793	003416	006316 				ASL	@SP
   1794	003420	062716 	000126 			ADD	#H.LUT-2,@SP	;POINT TO START OF LUT
   1795	003424	060416 				ADD	R4,@SP		;POINT TO CORRECT LUT
   1796	003426	016536 	000022 			MOV	A.EF+2(R5),@(SP)+ ;SET LUT
   1797	003432	016404 	000100 			MOV	H.ISP(R4),R4	;FIND INITIAL STACK
   1798	003436	012644 				MOV	(SP)+,-(R4)	;STORE THE PS
   1799	003440	012644 				MOV	(SP)+,-(R4)	;STORE THE PC
   1800	003442	162704 	000014 			SUB	#14,R4		;INCLUDE REGISTER SAVE
   1801	003446	010465 	000004 			MOV	R4,A.SP(R5)	;SET STACK VALUE
   1802	003452	016504 	000016 			MOV	A.TD(R5),R4	;FIND THE STD ADDRESS
   1803	003456	012664 	000030 			MOV	(SP)+,S.SS(R4)	;SET SST ADDRESS
   1804	003462	000535 				BR	ASXTE		;GO TO START THE TASK
SCH	- TASK SCHEDULER & GLOB	MACRO M1108  16-DEC-77 11:28  PAGE 35
EXEC MODULE THREE -- SCAN OF ACTIVE TASK LIST

   1806					;
   1807					; SERVICE FOR TASK STATUS: EXIT
   1808					;
   1809	003464	010446 			ASXEXT:	MOV	R4,-(SP)
   1810	003466	010346 				MOV	R3,-(SP)
   1811	003470	010246 				MOV	R2,-(SP)
   1812	003472	010146 				MOV	R1,-(SP)
   1813	003474	010046 				MOV	R0,-(SP)
   1814	003476	016502 	000016 			MOV	A.TD(R5),R2	;FIND THE STD ADDRESS
   1815	003502	016500 	000006 			MOV	A.PD(R5),R0	;FIND THE TPD ADDRESS
   1816	003506	042762 	000001 	000006 		BIC	#SF.TA,S.FW(R2)	;CLEAR ACTIVE FLAG IN STD
   1817	003514				10$:
   1818	003514	032762 	000002 	000006 		BIT	#SF.FX,S.FW(R2)	;CHECK TO SEE IF TASK FIXED
   1819	003522	001003 				BNE	20$		;YES -- DON'T FREE CORE
   1820					;
   1821					;
   1822					; FREE MEMORY (AND POSSIBLY START TASK WAITING FOR MEMORY) AND RETURN
   1823					; ATL NODE TO POOL.
   1824					;
   1825	003524	042760 	000002 	000010 		BIC	#TF.OU,T.FW(R0) ;RELEASE PARTITION
   1826					;
   1827					;
   1828	003532	010504 			20$:	MOV	R5,R4		;POINT R5 TO THE NEXT LOWEST PRIORITY TASK'S
   1829	003534	010501 				MOV	R5,R1		;ATL NODE, DELETE NODE FROM ATL, AND RETURN
   1830	003536	011505 				MOV	@R5,R5		;IT TO THE POOL.
   1831	003540					CALL	..NDEL
	003540	004737 	041306'			JSR	PC,..NDEL
   1832	003544	012704 	033506'			MOV	#.POLLH,R4	;RETURN THE NODE TO THE POOL
   1833	003550					CALL	..NADD
	003550	004737 	041422'			JSR	PC,..NADD
   1834	003554	032762 	000004 	000006 		BIT	#SF.EX,S.FW(R2)	;HAS THE TASK BEEN REQUESTED TO EXIT?
   1835	003562	001426 				BEQ	50$		;NO -- JUST CONTINUE
   1836	003564	010046 				MOV	R0,-(SP)	;SAVE R0 (TPD ADDRESS)
   1837	003566	013700 	032000'			MOV	.STDTA,R0	;FIND THE HEAD OF THE STD LIST
   1838	003572	013703 	032004'			MOV	.STDTZ,R3	;FIND THE SIZE OF THE LIST
   1839	003576	162737 	000002 	032004'		SUB	#2,.STDTZ	;RESET THE SIZE FOR NOW IT IS SMALLER
   1840	003604	006203 				ASR	R3		;DIVIDE BY 2
   1841	003606	005203 				INC	R3		;MAKE 1 LARGER BECAUSE IT IS 2*N-2
   1842	003610	020210 			30$:	CMP	R2,@R0		;THE CORRECT ENTRY?
   1843	003612	001403 				BEQ	40$		;YES -- FOUND IT
   1844	003614	005720 				TST	(R0)+		;NO -- CONTINUE SEARCH
   1845	003616	005303 				DEC	R3		;CONTINUE SCAN
   1846	003620	000773 				BR	30$
   1847					;
   1848	003622	016020 	000002 		40$:	MOV	2(R0),(R0)+	;MOVE ENTRIES BACK
   1849	003626	077303 				SOB	R3,40$		;UNTIL DONE
   1850	003630	010201 				MOV	R2,R1		;RETURN NODE TO POOL
   1851									;NOTE -- R4 STILL POINTS TO .POLLH
   1852									;FROM ABOVE RETURN OF ATL!!!!!
   1853	003632					CALL	..NADD		;RETURN NODE
	003632	004737 	041422'			JSR	PC,..NADD
   1854	003636	012600 				MOV	(SP)+,R0	;RESTORE R0
   1855	003640	032760 	000002 	000010 	50$:	BIT	#TF.OU,T.FW(R0)	;CHECK FOR PARTITION OCCUPIED
   1856	003646	001025 				BNE	60$		;YES -- DON'T TRY TO START TASK
   1857	003650	010004 				MOV	R0,R4		;SET UP TO PICL A NODE FROM MRL
   1858	003652	062704 	000014 			ADD	#T.RF,R4	;POINT TO MRL
   1859	003656					CALL	..PICK		;PICK NODE
SCH	- TASK SCHEDULER & GLOB	MACRO M1108  16-DEC-77 11:28  PAGE 35-1
EXEC MODULE THREE -- SCAN OF ACTIVE TASK LIST

	003656	004737 	041464'			JSR	PC,..PICK
   1860	003662	103417 				BCS	60$		;NONE FOUND -- DON'T ATTEMPT TO START
   1861	003664	010401 				MOV	R4,R1		;SAVE THE NODE ADDRESS FOUND
   1862	003666	022424 				CMP	(R4)+,(R4)+	;POINT TO THE ENTRIES IN THE NDOE
   1863	003670	012402 				MOV	(R4)+,R2	;SET UP TO CALL .REQS
   1864	003672	012403 				MOV	(R4)+,R3
   1865	003674	012446 				MOV	(R4)+,-(SP)	;PUSH PRI
   1866	003676	012704 	033506'			MOV	#.POLLH,R4	;RETURN THE NODE TO THE POOL
   1867	003702					CALL	..NADD		;RETURN NODE
	003702	004737 	041422'			JSR	PC,..NADD
   1868	003706	012604 				MOV	(SP)+,R4	;GET THE PRIORITY
   1869	003710	042762 	000001 	000006 		BIC	#SF.TA,S.FW(R2) ;CLEAR TASK ACTIVE FLAGS
   1870	003716					CALL	.REQS		;REQUEST THE TASK
	003716	004737 	004362'			JSR	PC,.REQS
   1871					;
   1872	003722	012600 			60$:	MOV	(SP)+,R0	;POP (RESTORE) R0,R2,R1
   1873	003724	012601 				MOV	(SP)+,R1
   1874	003726	012602 				MOV	(SP)+,R2
   1875	003730	012603 				MOV	(SP)+,R3
   1876	003732	012604 				MOV	(SP)+,R4
   1877					;
   1878					; IF EXITING TASK IS NOT "CURRENT", ITS CONTEXT IS STORED IN ITS STACK.
   1879					; IF EXITING TASK IS "CURRENT", ITS PS, PC, R5, & R4 ARE STORED ON THE
   1880					;  STACK AND THE REMAINDER OF ITS CONTEXT IS LOADED.
   1881					;
   1882					; R1 CONTAINS THE ADDRESS OF THE ATL NODE (WHICH HAS BEEN RETURNED TO THE
   1883					; POOL) OF THE EXITING TASK.
   1884					;
   1885	003734	020537 	031110'			CMP	R5,.CRTSK	;IF EXITING TASK IS "CURRENT", REMOVE (POP)
   1886	003740	001004 				BNE	70$		;ITS R4, R5, PC, & PS FROM THE  STACK
   1887	003742	062706 	000010 			ADD	#8.,SP		;(POP)
   1888	003746	005037 	031110'			CLR	.CRTSK
   1889	003752				70$:
   1890	003752	000137 	003140'			JMP	ASXE2		;DISPATCH PER STATUS OF TASK POINTED TO BY R5.
SCH	- TASK SCHEDULER & GLOB	MACRO M1108  16-DEC-77 11:28  PAGE 36
EXEC MODULE THREE -- SCAN OF ACTIVE TASK LIST

   1892					;
   1893					; TERMINATION OF ATL SCAN -- A TASK THAT CAN BE RUN HAS BEEN FOUND
   1894					;
   1895					; CONTROL IS TRANSFERRED HERE WITH THE PS, PC, R5, & R4 OF THE CURRENT
   1896					; TASK PUSHED ONTO THE  STACK.
   1897					;
   1898					; CONTROL IS TRANSFERRED HERE EITHER BY DIRECT DISPATCH, OR FROM AN ATL
   1899					; SCAN SERVICE ROUTINE.  IN EITHER CASE, THE  STACK AND R5 ARE
   1900					; UNCHANGED FROM THE LAST ATL SCAN DISPATCH.
   1901	003756	020537 	031110'		ASXTE:	CMP	R5,.CRTSK	;IS CONTROL RETURNING TO CURRENT TASK?
   1902	003762	001461 				BEQ	CSDONE		;YES -- RESTORE R5, R4, PS, & PC FROM STACK
   1903	003764	132737 	000001 	031116'		BITB	#EV.SE,.SERFG+0	;NO -- HAS A SIGNIFICANT EVENT OCCURRED?
   1904	003772	001402 				BEQ	10$
   1905	003774	000137 	003124'			JMP	ASXE1		;YES -- RESTART ATL SCAN
   1906
   1907	004000	112737 	000340 	177776 	10$:	MOVB	#340,@#PS	;INHIBIT INTERRUPTS WHILE CONTEXT SWITCHING
   1908	004006	013704 	031110'			MOV	.CRTSK,R4	;NO -- IS THERE A CURRENT TASK?
   1909	004012	001420 				BEQ	40$		;NO -- (CURRENT TASK EXITED) NO CONTEXT TO SAVE
   1910									;YES -- SAVE CONTEXT OF OLD CURRENT TASK, AND
   1911									;LOAD CONTEXT OF NEW CURRENT TASK.
   1912
   1914	004014	010346 				MOV	R3,-(SP)	;PUSH R3
   1915	004016	010246 				MOV	R2,-(SP)	;PUSH R2
   1916	004020	010146 				MOV	R1,-(SP)	;PUSH R1
   1917	004022	010046 				MOV	R0,-(SP)	;PUSH R0
   1918	004024	016400 	000012 			MOV	A.HA(R4),R0	;FIND THE HEADER ADDRESS
   1925	004030	062700 	000046 			ADD	#H.DSW,R0	;POINT TO DSW
   1926	004034	012701 	000046 			MOV	#$DSW,R1	;POINT TO DSW
   1927	004040	012120 				MOV	(R1)+,(R0)+	;SAVE THE CONTEXT OF LOW CORE
   1928	004042	012120 				MOV	(R1)+,(R0)+
   1929	004044	012120 				MOV	(R1)+,(R0)+
   1930	004046	011110 				MOV	@R1,@R0
   1931	004050	010664 	000004 			MOV	SP,A.SP(R4)	;SAVE OLD PS
   1932	004054	016506 	000004 		40$:	MOV	A.SP(R5),SP	;SET UP NEW STACK
   1933	004060	016500 	000012 			MOV	A.HA(R5),R0	;RESTORE CONTEXT
   1940	004064	062700 	000054 			ADD	#H.DSW+6,R0	;POINT TO DSW SAVE
   1941	004070	012701 	000054 			MOV	#$DSW+6,R1
   1942	004074	011011 				MOV	@R0,@R1
   1943	004076	014041 				MOV	-(R0),-(R1)
   1944	004100	014041 				MOV	-(R0),-(R1)
   1945	004102	014041 				MOV	-(R0),-(R1)
   1946	004104	012600 				MOV	(SP)+,R0	;RESTORE REGISTERS FROM THE IS TASK
   1947	004106	012601 				MOV	(SP)+,R1
   1948	004110	012602 				MOV	(SP)+,R2
   1949	004112	012603 				MOV	(SP)+,R3
   1951
   1988
   1989	004114	010537 	031110'			MOV	R5,.CRTSK	;SET NEW '.CRTSK' (ATL NODE ADR OF CURRENT TASK).
   1990	004120	142737 	000300 	177776 		BICB	#300,@#PS	;LOWER TO PRI 1 AFTER CONTEXT SWITCH
   1991
   1992	004126				CSDONE:		;CONTEXT SWITCH (IF REQUIRED) IS DONE.
   1994	004126	052766 	004000 	000006 		BIS	#4000,6(SP)	;SET REG SET 1
   1995	004134	042766 	170000 	000006 		BIC	#170000,6(SP)	;CLEAR OFF MODE BITS
   1997					;
   1998					; A TASK'S PS, PC, R5, & R4 ARE ON THE  STACK, AND THE TASK'S ATL
   1999					; NODE ADDRESS IS IN R5.  I.E., CONDITIONS ARE CORRECT FOR AN ATL SCAN
   2000					;
SCH	- TASK SCHEDULER & GLOB	MACRO M1108  16-DEC-77 11:28  PAGE 36-1
EXEC MODULE THREE -- SCAN OF ACTIVE TASK LIST

   2001					;
   2002					; IF THE TASK'S STATUS IS "RUNNING", CONTROL IS RETURNED TO THE TASK
   2003					; (UNLESS A SIGNIFICANT EVENT HAS BEEN DECLARED, IN WHICH CASE, CONTROL
   2004					; WILL BE RETURNED LATER).
   2005					;
   2006					;
   2007	004142	012604 				MOV	(SP)+,R4	;POP (RESTORE) R4
   2008	004144	012605 				MOV	(SP)+,R5	;POP (RESTORE) R5
   2009					;
   2010					; TRANSFER CONTROL TO TASK VIA COMMON "RETURN TO INTERRUPTED PROGRAM"
   2011					; ROUTINE (CLOCK AND/OR EVENT RECOGNITION MAY CAUSE ACTUAL TRANSFER TO
   2012					; OCCUR LATER IN REAL TIME).
   2013					;
   2014					;	BR	..INTX
   2015						;
SCH	- TASK SCHEDULER & GLOB	MACRO M1108  16-DEC-77 11:28  PAGE 37
EXEC MODULE NINE -- TITLE PAGE

   2017						.SBTTL	EXEC MODULE NINE -- TITLE PAGE
   2018					;
   2019					;
   2020					;
   2021					;
   2022					;
   2023					;
   2024					;	COPYRIGHT 1975, DIGITAL EQUIPMENT CORP., MAYNARD, MASSACHUSETTS   01754.
   2025					;
   2026					;
   2027					;	THE MATERIAL INCLUDED IN THIS FUNCTIONAL  SPECIFICATION,  INCLUDING  BUT
   2028					;	NOT   LIMITED   TO,  INSTRUCTION  TIMES  AND  OPERATING  SPEEDS  IS  FOR
   2029					;	INFORMATION PURPOSES ONLY.  ALL  SUCH  MATERIAL  IS  SUBJECT  TO  CHANGE
   2030					;	WITHOUT NOTICE.  CONSEQUENTLY DEC MAKES NO CLAIM AND SHALL NOT BE LIABLE
   2031					;	FOR ITS ACCURACY.
   2032					;
   2033					;	DEC ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS SOFTWARE
   2034					;	ON EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.
   2035					;
   2036					;
   2037					;
   2038					;
   2039					;
   2040					;		MODULE: EXEC MODULE NINE (INTERRUPT RETURN)
   2041					;
   2042					;		VERSION: V001A
   2043					;
   2044					;		AUTHOR: R. MCLEAN
   2045					;
   2046					;		DATE: 19 MAR 75
   2047					;
   2048					;
   2049					;	THIS MODULE CONTAINS:
   2050					;
   2051					;	1 -- COMMON CODE FOR EXITING AN INTERRUPT SERVICE ROUTINE.
   2052					;
SCH	- TASK SCHEDULER & GLOB	MACRO M1108  16-DEC-77 11:28  PAGE 38
EXEC MODULE NINE -- COMMON RETURN TO INTERRUPTED PROGRAM

   2054						.SBTTL	EXEC MODULE NINE -- COMMON RETURN TO INTERRUPTED PROGRAM
   2055					;
   2056					; MOST INTERRUPT SERVICE ROUTINES ARE CONTAINED WITHIN I/O HANDLER TASKS
   2057					; CONTROL IS TRANSFERRED TO A TASK CONTAINED INTERRUPT SERVICE ROUTINE,
   2058					; WHEN THE INTERRUPT SERVICE ROUTINE WAS "CONNECTED" TO THE INTERRUPT.
   2059					;
   2060					; CONTROL IS TRANSFERRED TO A TASK CONTAINED INTERRUPT SERVICE ROUTINE
   2061					; WITH THE INTERRUPTED PROGRAM'S PS & PC,
   2062					;
   2063					; ALL TASK CONTAINED INTERRUPT SERVICE ROUTINES EXIT VIA "JMP ..INTX" WITH
   2064					; PS & PC OF THE INTERRUPTED PROGRAM
   2065					;
   2066					; THE '..INTX' ROUTINE  EFFECTS A RETURN OF CONTROL
   2067					; TO THE INTERRUPTED PROGRAM.
   2068					;
   2069					; WITH THE PS & PC OF THE INTERRUPTED PROGRAM ON THE  STACK.
   2070					;
   2071					; THE 'EXINTX' ROUTINE EFFECTS A RETURN TO THE INTERRUPTED PROGRAM.
   2072					;
   2073					; WHENEVER CONTROL IS RETURNED TO OTHER THAN A TASK (NON-ZERO PRI),
   2074					; CONTROL IS TRANSFERRED DIRECTLY TO THE INTERRUPTED PROGRAM.  HOWEVER,
   2075					; WHEN CONTROL IS BEING RETURNED TO A TASK (PRI=0), THE "SYSTEM
   2076					; EVENT RECOGNITION FLAG" IN THE SYSTEM COMMUNICANTIONS AREA (SCOM) IS
   2077					; EXAMINED, AND IF FOUND NON-ZERO, THE INDICATED EVENTS ARE RECOGNIZED
   2078					; BEFORE CONTROL IS RETURNED TO THE INTERRUPTED TASK.
   2079					;
   2080
   2081	004146				..INTX::			;NORMAL ISR EXIT
   2082	004146	052737 	000340 	177776 		BIS	#000340,@#PS	;;;INHIBIT INTERRUPTS (RAISE PRIORITY TO 7)
   2083	004154	032766 	000340 	000002 		BIT	#000340,+2(SP)	;;;IS CONTROL RETURNING TO A TASK (PRI=0)?
   2084	004162	001010 				BNE	CRTNXA		;;;YES -- EXAMINE SYSTEM EVENT RECOGNITION FLAG
   2085
   2086	004164	005737 	040376'			TST	.PFAIL		;;;POWER FAIL SERVICE?
   2087	004170	001402 				BEQ	CRTNX1		;;;NO -- JUST RETURN
   2088	004172	000137 	007006'			JMP	.PWRDN		;;;YES -- POWER DOWN
   2089
   2090	004176	005737 	031116'		CRTNX1:	TST	.SERFG		;;;** ANY UNRECOGNIZED "SYSTEM EVENTS"?
   2091	004202	001001 				BNE	CRTNX3		;;;** YES -- TRANSFER CONTROL TO APPROPRIATE
   2092									;;;** EVENT RECOGNITON ROUTINE.
   2093	004204				CRTNXA:
   2094					;	CMP	.DBRTT,SP	;;;** ## NO -- IS CONTROL RETURNING FROM SYSTEM
   2095					;	BNE	10$		;;;** ## TRACE DEBUGGING ROUTINE?
   2096					;	CLR	.DBRTT		;;;** ## YES -- RETURN VIA "RTT" INSTEAD OF "RTI"
   2097					;	RTT			;;;** ##
   2098	004204				10$:				;;;** ##
   2099	004204	000002 			CRTNX2:	RTI			;;;** NO -- RETURN CONTROL TO TASK
   2100
   2101									;** A RACE CONDITION EXISTS WHENEVER A
   2102									;POWER FAILURE OCCURS WHILE EXECUTING
   2103									;BETWEEN 'CRTNX1' AND 'CRTNX2'.  TO
   2104									;AVOID THIS CONDITION, THE POWER FAIL
   2105									;TRAP SERVICE ROUTINE SETS THE PC TO
   2106									;'CRTNX1' WHENEVER IT INTERRUPTS EXECUTION
   2107									;IN THE RANGE 'CRTNX1' THRU 'CRTNX2'.
   2108					;
   2109					; A SYSTEM EVENT IS TO BE RECOGNIZED (NON-ZERO '.SERFG'), CONTROL IS
   2110					; TRANSFERRED TO SERVICE ROUTINE PER '.SERFG'
SCH	- TASK SCHEDULER & GLOB	MACRO M1108  16-DEC-77 11:28  PAGE 38-1
EXEC MODULE NINE -- COMMON RETURN TO INTERRUPTED PROGRAM

   2111					;   PRI=2, CONDITION CODES CLEARED, AND THE
   2112					; INTERRUPTED TASK'S PS, PC, R5 & R4 PUSHED ONTO THE  STACK.
   2113					;
   2114	004206	010546 			CRTNX3:	MOV	R5,-(SP)	;;;PUSH R5
   2115	004210	010446 				MOV	R4,-(SP)	;;;PUSH R4
   2116
   2117	004212	012746 	034100 			MOV	#034100,-(SP)
   2118	004216	105737 	031117'			TSTB	.SERFG+1	;;;UN-RECOGNIZED CLOCK TICK(S)?
   2119	004222	001403 				BEQ	10$		;;;
   2120						 			;;;YES -- RECOGNIZE CLOCK TICKS (NORMALLY
   2121	004224	012746 	013756'			MOV	#.TICK,-(SP)	;;;ONLY ONE)
   2122	004230	000002 				RTI			;;;
   2123	004232	132737 	000201 	031116'	10$:	BITB	#EV.SE!EV.PF,.SERFG+0	;;;NO -- SIGNIFICANT EVENT RECOGNITION?
   2124	004240	100437 				BMI	60$			;;;OR POWER FAIL
   2125	004242	001403 				BEQ	30$		;;;
   2126						 			;;;YES -- SCAN ATL FROM THE TOP
   2127	004244	012746 	003124'		20$:	MOV	#ASXE1,-(SP)	;;;
   2128	004250	000002 				RTI			;;;
   2129
   2130	004252	132737 	000002 	031116'	30$:	BITB	#EV.AS,.SERFG+0	;;;AST?
   2131	004260	001435 				BEQ	70$		;;;YIPES -- GOOFED AND SYSTEM BROKEN
   2132	004262	010316 				MOV	R3,@SP		;;;SAVE CONTEXT
   2133	004264	010246 				MOV	R2,-(SP)
   2134	004266	010146 				MOV	R1,-(SP)
   2135	004270	010046 				MOV	R0,-(SP)
   2139	004272	012746 	004000 			MOV	#004000,-(SP)
   2141	004276	013746 	031122'			MOV	.CKASS,-(SP)	;;;SET AST ADDRESS
   2142	004302	001411 				BEQ	50$		;;;NOT THIS TYPE
   2143	004304	005037 	031122'			CLR	.CKASS		;;;CLEAR THIS FOR NEXT TIME
   2144	004310	005737 	031124'			TST	.PFASS		;;;POWER FAIL ALSO?
   2145	004314	001334 				BNE	CRTNX3		;;;YES -- BETTER DO IT TOO
   2146	004316	142737 	000002 	031116'	40$:	BICB	#EV.AS,.SERFG+0	;;;CLEAR THIS FLAG
   2147	004324	000002 				RTI			;;;RETURN TO USER
   2148
   2149	004326	013716 	031124'		50$:	MOV	.PFASS,@SP	;;;SET UP POWER FAIL AST
   2150	004332	005037 	031124'			CLR	.PFASS		;;;CLEAR POWER FAIL AST ADDRESS
   2151	004336	000767 				BR	40$		;;;AND RETURN TO USER
   2152
   2153	004340	142737 	000200 	031116'	60$:	BICB	#EV.PF,.SERFG+0	;;;CLEAR POWER FAIL FLAG
   2154	004346					CALL	.PFRST		;;;POWER FAIL RESTART
	004346	004737 	007342'			JSR	PC,.PFRST
   2155	004352	000734 				BR	20$		;;;RETURN
   2156
   2157	004354				70$:	.CRASH	IAS		;;;CRASH SYSTEM UNKNOWN SIG EVENT
	004354	000004 				IOT
	004356	   111 	   101 	   123 		.ASCIZ	/IAS/
	004361	   000
SCH	- TASK SCHEDULER & GLOB	MACRO M1108  16-DEC-77 11:28  PAGE 39
EXEC MODULE NINE -- COMMON RETURN TO INTERRUPTED PROGRAM

   2159					;
   2160					;  .REQS -- SUBROUTINE TO ATTEMPT TO MAKE A TASK ACTIVE
   2161					;
   2162					; ENTRY CONDITIONS:
   2163					;
   2164					;	R2 -- STD ENTRY ADDRESS (TASK ID ) OF REQUESTED TASK
   2165					;	R3 -- TPD ENTRY ADDRESS, OR ZERO (DEFAULT PARTITION) , FOR REQUESTED TASK
   2166					;	R4 -- RUN PRIORITY, OR ZERO (DEFAULT PRIORITY), FOR REQUESTED TASK
   2167					;
   2168					;  CALLING SEQUENCE:
   2169					;
   2170					;	CALL	.REQS
   2171					;
   2172					;   EXIT CONDITIONS:
   2173					;
   2174					;	R2=00 -- TASK MADE ACTIVE
   2175					;	R2=02 -- TASK NOT MADE ACTIVE, TASK ALREADY ACTIVE
   2176					;	R2=06 -- TASK NOT MADE ACTIVE, INSUFFICIENT POOL NODE(S)
   2177					;
   2178					;	REGISTERS ALTERED:
   2179					;	R0,R1,R2,R3,R4
   2180					;
   2181					;
   2182	004362	032762 	000001 	000006 	.REQS::	BIT	#SF.TA,S.FW(R2)	;IS TASK ACTIVE?
   2183	004370	001403 				BEQ	10$		;NO -- IT IS LEGAL TO ACTIVATE IT
   2184	004372	012702 	000002 			MOV	#2,R2		;YES -- RETURN +2
   2185	004376					RETURN
	004376	000207 				RTS	PC
   2186
   2187	004400	005703 			10$:	TST	R3		;CHECK THE PARTITION
   2188	004402	001002 				BNE	20$		;PARTITION SPECIFIED
   2189	004404	016203 	000004 			MOV	S.TD(R2),R3	;PARTITION NOT SPECIFIED -- USE DEFAULT
   2190	004410	005704 			20$:	TST	R4		;PRIORITY?
   2191	004412	001002 				BNE	30$		;YES -- DON'T USE DEFAULT
   2192	004414	156204 	000010 			BISB	S.DP(R2),R4	;FIND THE DEFAULT PRIORITY
   2193	004420	010446 			30$:	MOV	R4,-(SP)	;SAVE PRI
   2194	004422	010346 				MOV	R3,-(SP)	;SAVE TPD
   2195	004424	012704 	033506'			MOV	#.POLLH,R4	;PICK AN ATL NODE
   2196	004430					CALL	..PICK
	004430	004737 	041464'			JSR	PC,..PICK
   2197	004434	103004 				BCC	50$		;GOT NODE
   2198	004436	022626 			40$:	CMP	(SP)+,(SP)+	;REMOVE SAVED TPD AND PRI
   2199	004440	012702 	000006 			MOV	#6,R2		;COMPLAIN NO NODES AVAILABLE
   2200	004444					RETURN			;RETURN TO CALLER
	004444	000207 				RTS	PC
   2201
   2202	004446	032762 	000002 	000006 	50$:	BIT	#SF.FX,S.FW(R2)	;FIXED IN CORE?
   2203	004454	001436 				BEQ	70$		;NO -- MUST READ THE TASK IN
   2204	004456	010401 				MOV	R4,R1		;SAVE NODE ADDRESS
   2205	004460	016204 	000022 			MOV	S.SP(R2),R4	;SET UP STACK
   2206	004464	062704 	000014 			ADD	#14,R4		;SET POINTER TO PC
   2207	004470	016224 	000020 			MOV	S.PC(R2),(R4)+	;SET PC
   2208	004474	012724 	174000 			MOV	#174000,(R4)+	;SET UP PS
   2209	004500	012703 	000010 			MOV	#TS.RUN,R3	;SET UP TO START TASK
   2210	004504	010104 			60$:	MOV	R1,R4		;SAVE THE ATL NODE ADDRESS
   2211	004506	022424 				CMP	(R4)+,(R4)+	;MOVE OVER LISTHEAD
   2212	004510	016224 	000022 			MOV	S.SP(R2),(R4)+	;SET INITIAL STACK POINTER
SCH	- TASK SCHEDULER & GLOB	MACRO M1108  16-DEC-77 11:28  PAGE 39-1
EXEC MODULE NINE -- COMMON RETURN TO INTERRUPTED PROGRAM

   2213	004514	012624 				MOV	(SP)+,(R4)+	;SET UP TPD AND PRI
   2214	004516	012624 				MOV	(SP)+,(R4)+
   2215	004520	016224 	000012 			MOV	S.BA(R2),(R4)+	;SET BASE ADDRESS
   2216	004524	010324 				MOV	R3,(R4)+	;SET RUN STATE
   2217	004526	010224 				MOV	R2,(R4)+	;SET STD NODE ADDRESS
   2218	004530	005024 				CLR	(R4)+
   2219	004532	005064 	000012 			CLR	A.PF-A.EF-2(R4)	;CLEAR POWER FAIL AST ADDRESS
   2220	004536	052762 	000001 	000006 		BIS	#SF.TA,S.FW(R2)	;SET TASK ACTIVE
   2221	004544	012702 	032552'			MOV	#.ATLLH,R2	;INSERT NODE INTO ATL
   2222	004550	000536 				BR	120$
   2223
   2224	004552	032763 	000002 	000010 	70$:	BIT	#TF.OU,T.FW(R3)	;PARTITION BUSY?
   2225	004560	001117 				BNE	110$		;YES -- BETER PUT IN MRL
   2226	004562	010446 				MOV	R4,-(SP)	;SAVE NODE ADDRESS OF ATL NODE
   2227	004564	012701 	000040 			MOV	#32.,R1		;PICK AN I/O NODE
   2228	004570					CALL	..ALCB
	004570	004737 	041642'			JSR	PC,..ALCB
   2229	004574	010004 				MOV	R0,R4		;SET CORRECT NODE ADDRESS
   2230	004576	103006 				BCC	80$		;GOT ONE
   2231	004600	012601 				MOV	(SP)+,R1	;NONE AVAILABLE -- RETURN ATL NODE
   2232	004602	012704 	033506'			MOV	#.POLLH,R4
   2233	004606					CALL	..NADD		;ADD NODE BACK TO ATL
	004606	004737 	041422'			JSR	PC,..NADD
   2234	004612	000711 				BR	40$		;RETURN +6
   2235
   2236	004614	010446 			80$:	MOV	R4,-(SP)	;SAVE NODE ADDRESS
   2237	004616	022424 				CMP	(R4)+,(R4)+	;MOVE OVER LISTHEAD
   2238	004620	010224 				MOV	R2,(R4)+	;SET UP STD ADDRESS
   2239	004622	016624 	000002 			MOV	2(SP),(R4)+	;SET UP ATL NODE ADDRESS
   2240	004626	012724 	175014 			MOV	#250.*400+12.,(R4)+ ;SET UP PRI/DPB SIZE
   2241	004632	012724 	000400 			MOV	#400,(R4)+	;SET EFN
   2242	004636	012724 	000050 			MOV	#IO.LTK,(R4)+	;CLAIM THIS IS A READ
   2243	004642	005024 				CLR	(R4)+		;NO I/O STATUS
   2244	004644	005024 				CLR	(R4)+		;NO AST ADDRESS
   2245	004646	022424 				CMP	(R4)+,(R4)+	;ADDRESS IS NOT SPECIFIED HERE
   2246	004650	016224 	000014 			MOV	S.LZ(R2),(R4)+	;SET UP INITIAL SIZE
   2247	004654	005024 				CLR	(R4)+		;SKIP THIS PARAMETER
   2248	004656	016224 	000032 			MOV	S.DL(R2),(R4)+	;SET UP DISK ADDRESS
   2249	004662	016224 	000034 			MOV	S.DL+2(R2),(R4)+ ;LOW ORDER DISK ADDRESS
   2250	004666	012601 				MOV	(SP)+,R1	;RESTORE R1
   2251	004670	016603 	000002 			MOV	2(SP),R3	;RESTORE THE TPD ADDRESS
   2252	004674	032763 	000002 	000010 		BIT	#TF.OU,T.FW(R3)	;PARTITON OCCUPIED?
   2253	004702	001407 				BEQ	90$		;NO -- MUST BE OK TO LOAD
   2254	004704	012603 				MOV	(SP)+,R3	;YES -- BETTER ADD IT TO MRL
   2255	004706	012601 				MOV	(SP)+,R1	;RESTORE ATL ADDRESS
   2256	004710	010361 	000030 			MOV	R3,A.FM+4(R1)	;SET THE NODE ADDRESS IN FLAGS MASK WORD TO PRESERVE IT
   2257	004714	012703 	100002 			MOV	#TS.LRQ+100000,R3 ;SET LOAD REQUEST QUEUE'D AND PARTITION BUSY
   2258	004720	000671 				BR	60$		;SET UP ATL
   2259
   2260	004722	010246 			90$:	MOV	R2,-(SP)	;SAVE STD ADDRESS
   2261	004724	052763 	000002 	000010 		BIS	#TF.OU,T.FW(R3)	;DECLARE THE PARTITION OCCUPIED
   2262	004732	005003 				CLR	R3		;FIND PUD ENTRY
   2263	004734	156203 	000011 			BISB	S.DI(R2),R3	;SET DISK INDICATOR
   2264	004740	012702 	037202'			MOV	#.PUDBA,R2	;SET UP FOR ..IPRI
   2265	004744	062702 	000050 		100$:	ADD	#U.SZ,R2	;POINT TO AN ENTRY
   2266	004750	077303 				SOB	R3,100$		;LOOP UNTIL CORRECT ENTRY FOUND
   2267	004752	010203 				MOV	R2,R3		;SAVE THE LOGICAL UNIT NUMBER
SCH	- TASK SCHEDULER & GLOB	MACRO M1108  16-DEC-77 11:28  PAGE 39-2
EXEC MODULE NINE -- COMMON RETURN TO INTERRUPTED PROGRAM

   2268	004754	062702 	000022 			ADD	#U.RF,R2	;POINT TO LISTHEAD
   2269	004760					CALL	..IPRI		;ENTER IN LIST
	004760	004737 	041346'			JSR	PC,..IPRI
   2270	004764	014202 				MOV	-(R2),R2	;FIND ATL NODE ADDRESS OF HANDLER TASK
   2271	004766	052762 	000010 	000020 		BIS	#EF.NIR,A.EF(R2) ;START HANDLER
   2272	004774	152737 	000001 	031116'		BISB	#EV.SE,.SERFG+0	;DECLARE SIG EVENT
   2273	005002	012602 				MOV	(SP)+,R2	;RESTORE STD ADDRESS
   2274	005004	012601 				MOV	(SP)+,R1	;RESTORE R1 (ATL NODE ADDRESS)
   2275	005006	010361 	000022 			MOV	R3,A.EF+2(R1)	;SAVE THE OVERLAY PUD ADDRESS
   2276	005012	012703 	000002 			MOV	#TS.LRQ,R3	;SET UP TO INDICATE LOAD REQUEST QUEUE'D
   2277	005016	000632 				BR	60$		;AND START TASK
   2278
   2279	005020	010401 			110$:	MOV	R4,R1		;SAVE THE NODE ADDRESS
   2280	005022	052762 	000001 	000006 		BIS	#SF.TA,S.FW(R2)	;SET TASK ACTIVE
   2281	005030	022424 				CMP	(R4)+,(R4)+
   2282	005032	010224 				MOV	R2,(R4)+	;SAVE THE ATTRIBUTES OF THIS CALL
   2283	005034	012624 				MOV	(SP)+,(R4)+
   2284	005036	012624 				MOV	(SP)+,(R4)+
   2285	005040	010302 				MOV	R3,R2		;FIND THE MRL
   2286	005042	062702 	000014 			ADD	#T.RF,R2	;POINT TO IT IN TPD
   2287	005046				120$:	CALL	..IPRI		;INSERT THIS NODE IN MRL BY PRI
	005046	004737 	041346'			JSR	PC,..IPRI
   2288	005052	005002 				CLR	R2		;DECLARE TASK ACTIVE
   2289	005054					RETURN			;RETURN TO CALLER
	005054	000207 				RTS	PC
   2290
   2291	005056	104401 			.RQESD::TRAP	DR.01		;RETURN +1
   2292	005060	104771 				TRAP	DE.07		;RETURN -7
   2293	005062	104401 				TRAP	DR.01		;RETURN+1 (CURRENTLY UNUSED)
   2294	005064	104777 				TRAP	DE.01		;RETURN -1
SCH	- TASK SCHEDULER & GLOB	MACRO M1108  16-DEC-77 11:28  PAGE 40
EXEC MODULE NINE -- COMMON RETURN TO INTERRUPTED PROGRAM

   2296					;
   2297					;  .FEPPU -- SUBROUTINE TO FETCH PARTITION AND PRIORITY
   2298					;
   2299					;  ENTRY CONDITIONS:
   2300					;
   2301					;	R1 -- DPB PLUS SIX -- POINTING TO FOLLOWING DATA IN PREVIOUS SPACE
   2302					;		[PARTITION NAME (FIRST HALF),
   2303					;		[PARTITION NAME (SECOND HALF),
   2304					;		[PRIORITY],
   2305					;		[UNUSED].
   2306					;
   2307					;	IT IS ASSUMED THAT THESE WORDS CAN BE FETCHED WITHOUT SEGMENT FAULT.
   2308					;
   2309					;	R2 -- STD ENTRY OF TASK TO FIT IN PARTITION
   2310					;	R5 -- ATL NODE ADDRESS OF ISSUING TASK
   2311					;
   2312					;	CALLING SEQUENCE:
   2313					;
   2314					;	CALL	.FEPPU
   2315					;
   2316					;  EXIT CONDITIONS:
   2317					;
   2318					;	R1 -- ADVANCED BY 8 (4 WORDS)
   2319					;	R3 -- TPD ENTRY ADDRESS, OR ZERO (DEFAULT PARTITION)
   2320					;	R4 -- RUN PRIORITY, OR ZERO (DEFAULT PRIORITY)
   2321					;
   2322					;	REGISTERS ALTERED R1,R3,R4
   2323					;
   2324	005066				.FEPPU::MFPI	(R1)+		;PUSH 2-WORD PARTITION NAME ONTO STACK
	005066	012146 				MOV	(R1)+,-(SP)
   2325	005070					MFPI	(R1)+
	005070	012146 				MOV	(R1)+,-(SP)
   2326	005072	005003 				CLR	R3		;CLEAR R3 (TPD ADDRESS
   2327	005074	005766 	000002 			TST	2(SP)		;WAS A PARTITION NAME SPECIFIED?
   2328	005100	001423 				BEQ	20$		;NO -- RETURN WITH ZERO IN R3
   2329	005102	012703 	033216'			MOV	#.TPDBA,R3	;YES -- SET UP TO SCAN TPD FOR PARTITION
   2330	005106	020327 	033216'		10$:	CMP	R3,#.TPDBA	;END OF TPD?
   2331	005112	001425 				BEQ	X.X94		;YES -- RETURN STS=-94.
   2332	005114	162703 	000020 			SUB	#T.SZ,R3	;NO -- SET UP R3 TO EXAMINE ENTRY
   2333	005120	021366 	000002 			CMP	@R3,2(SP)	;PARTITION NAME MATCH?
   2334	005124	001370 				BNE	10$		;NO -- CHECK NEXT TPD
   2335	005126	026316 	000002 			CMP	2(R3),@SP	;MAYBE -- CHECK SECOND HALF OF NAME
   2336	005132	001365 				BNE	10$		;NO -- CHECK NEXT TPD
   2337	005134	016204 	000016 			MOV	S.TZ(R2),R4	;SET R4 TO THE NUMBER OF 32-WORD BLOCKS
   2338									;REQUIRED FOR THE TASK INDICATED BY R2.
   2339	005140	020463 	000006 			CMP	R4,T.PZ(R3)	;IS PARTITION LARG ENOUGH FOR TASK?
   2340	005144	101401 				BLOS	20$		;YES -- SET R4 PER PRIORITY SPECIFIED
   2341	005146	104775 				TRAP	DE.03		;NO -- RETURN STS=-03
   2342
   2343	005150	022626 			20$:	CMP	(SP)+,(SP)+	;REMOVE PARTITION NAME FROM STACK
   2344	005152					MFPS	(R1)+,R4	;SET R4 TO PRIORITY INDICATOR
	005152	012104 				MOV	(R1)+,R4
   2345	005154	020427 	000372 			CMP	R4,#250.	;IS PRIORITY GREATER THAN 250?
   2346	005160	101003 				BHI	X.X95		;YES -- RETURN STS=-95.
   2347	005162	005721 				TST	(R1)+		;MOVE OVER UNUSED WORD
   2348	005164					RETURN			;RETURN TO CALLER
	005164	000207 				RTS	PC
SCH	- TASK SCHEDULER & GLOB	MACRO M1108  16-DEC-77 11:28  PAGE 40-1
EXEC MODULE NINE -- COMMON RETURN TO INTERRUPTED PROGRAM

   2349
   2350	005166	104642 			X.X94:	TRAP	DE.94		;RETURN STS=94.
   2351	005170	104641 			X.X95:	TRAP	DE.95		;RETURN STS=95.
SCH	- TASK SCHEDULER & GLOB	MACRO M1108  16-DEC-77 11:28  PAGE 41
EXEC MODULE NINE -- COMMON RETURN TO INTERRUPTED PROGRAM

   2353					;
   2354					; .VCLUN -- VERIFY & CONVER LOGICAL UNIT NUMBER
   2355					;
   2356					; ENTRY CONDITIONS:
   2357					;
   2358					;	R5 -- ATL NODE ADR OF DIRECTIVE ISSUING TASK
   2359					;	TOP OF STACK -- LOGICAL UNIT NUMBER
   2360					;
   2361					; CALLING SEQUENCE:
   2362					;
   2363					;	CALL  .VCLUN
   2364					;
   2365					; EXIT CONDITIONS:
   2366					;
   2367					;	R4 -- POINTS TO FIRST LUT ENTRY
   2368					;	CC-C SET IF TASK NOT FOUND
   2369					;
   2370					;	IF LUN IS ASSIGNED TO A PHYSICAL UNIT, THE  LUN (ON TOP OF
   2371					;	STACK) IS REPLACED BY THE ADDRESS OF THE CORRESPONDING PUD
   2372					;	ENTRY.
   2373					;
   2374					;	IF AN INVALID LUN, RETURN STS-96.
   2375					;
   2376					;	IF THE LUN IS NOT ASSIGNED, IT IS REPLACED BY A ZERO.
   2377					;
   2378					;
   2379					; REGISTERS ALTERED:
   2380					;
   2381					;	NONE
   2382					;
   2383	005172	010046 			.VCLUN::MOV	R0,-(SP)	;PUSH  (SAVE) R0
   2384	005174	016600 	000004 			MOV	4(SP),R0	;LUN MINUS ONE TO R0
   2385	005200	005300 				DEC	R0
   2386
   2391	005202	016504 	000012 			MOV	A.HA(R5),R4	;POINT TO HEADER ADDRESS
   2398	005206	062704 	000130 			ADD	#H.LUT,R4
   2400
   2401	005212	020024 				CMP	R0,(R4)+	;IS LUN <1, OR >MAX FOR TASK?
   2402	005214	103013 				BHIS	X9X96		;YES -- RETURN STS=-96
   2403	005216	006300 				ASL	R0		;NO -- SET LUT CONTENTS (PER LUN) IN R0
   2404	005220	006300 				ASL	R0
   2405	005222	060400 				ADD	R4,R0
   2406	005224	011000 				MOV	@R0,R0		;(PUD ENT ADR OR ZERO IN R0)
   2407	005226	001402 				BEQ	10$		;IF ASSIGNED, EFFECT REDIRECTION (IF ANY)
   2408	005230	016000 	000016 			MOV	U.RP(R0),R0
   2409	005234				10$:
   2410	005234	010066 	000004 			MOV	R0,4(SP)	;REPLACE LUN (ON STACK) BY PUD
   2411									;ENTRY ADDRESS (OR ZERO).
   2412
   2413	005240	012600 				MOV	(SP)+,R0	;POP (RESTORE) R0
   2414	005242					RETURN			;EXIT SUBROUTINE
	005242	000207 				RTS	PC
   2415					;
   2416					; COMMON JMP'S TO DIRECTIVE EXITS
   2417					;
   2418	005244	104640 			X9X96:	TRAP	DE.96
SCH	- TASK SCHEDULER & GLOB	MACRO M1108  16-DEC-77 11:28  PAGE 42
EXEC MODULE NINE -- COMMON RETURN TO INTERRUPTED PROGRAM

   2420					;
   2421					;	.STAST -- SUBROUTINE TO SET AN AST IN A TASK
   2422					;
   2423					;  ENTRY CONDITONS:
   2424					;
   2425					;	R5 -- ACTIVE TASK LIST POINTER
   2426					;	R4 -- ENTRY ADDRESS
   2427					;
   2428					;	CALLING SEQUENCE:
   2429					;
   2430					;	CALL	.STAST
   2431					;
   2432					;	EXIT CONDITIONS:
   2433					;
   2434					;	CC-C CLEAR -- AST SET AND ALL OK
   2435					;	CC-C SET -- THE TASK IS CURRENT AND CAN'T SET AST
   2436					;
   2437	005246	010246 			.STAST::MOV	R2,-(SP)	;SAVE REGISTERS
   2438	005250	010346 				MOV	R3,-(SP)
   2439	005252	152737 	000001 	031116'		BISB	#EV.SE,.SERFG+0	;DECLARE A SIG EVENT
   2440	005260	012702 	000006 			MOV	#6,R2		;SET UP TO SAVE REGISTERS
   2441	005264	000241 				CLC			;ASSUME SUCCESS
   2442	005266					.INH0			;;INHIBIT INTERRUPTS
	005266	013746 	177776 			MOV	@#PS,-(SP)
	005272	112737 	000140 	177776 		MOVB	#140,@#PS
   2443	005300	020537 	031110'			CMP	R5,.CRTSK		;;CURRENT TASK?
   2444	005304	001415 				BEQ	30$		;;YES 0-- BETTER SET CARRY
   2445	005306	016503 	000004 			MOV	A.SP(R5),R3	;;SET UP A POINTER TO THE TASK'S STACK
   2446	005312	010443 				MOV	R4,-(R3)	;;SET UP NEW PC
   2450	005314	012743 	004000 			MOV	#004000,-(R3)
   2452	005320	016343 	000016 		10$:	MOV	16(R3),-(R3)	;SET UP NEW STACK SAVE
   2453	005324	077203 				SOB	R2,10$		;;CONTINUE TIL DONE
   2454	005326				20$:	.ENB0			;ENABLE INTERRUPTS
	005326	004737 	041526'			JSR	PC,..ENB0
   2455	005332	012603 				MOV	(SP)+,R3	;RESTORE
   2456	005334	012602 				MOV	(SP)+,R2
   2457	005336					RETURN			;RETURN TO CALLER
	005336	000207 				RTS	PC
   2458
   2459	005340	005216 			30$:	INC	@SP		;ENABLE INTERRUPTS
   2460	005342	152737 	000002 	031116'		BISB	#EV.AS,.SERFG+0	;SET AST REQUIRED
   2461	005350	000766 				BR	20$		;AND RETURN
   2462						.TITLE	BOOT -- BOOT PROTOCOL HANDLER
   2463	005352					IDENT$	10,10
						.IDENT	/010100/
   2464					;
   2465					;
   2466					;
   2467					;
   2468					;
   2469					;
   2470					;                             COPYRIGHT (C) 1975, 1978 BY
   2471					;                     DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
   2472					;
   2473					;       THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE  USED  AND  COPIED
   2474					;       ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
   2475					;       OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR ANY OTHER COPIES THERE-
BOOT -- BOOT PROTOCOL HANDLER	MACRO M1108  16-DEC-77 11:28  PAGE 42-1
EXEC MODULE NINE -- COMMON RETURN TO INTERRUPTED PROGRAM

   2476					;       OF  MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
   2477					;       NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
   2478					;
   2479					;       THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT
   2480					;       NOTICE  AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
   2481					;       CORPORATION.
   2482					;
   2483					;       DIGITAL ASSUMES NO RESPONSIBILITY FOR THE  USE  OR  RELIABILITY  OF  ITS
   2484					;       SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
   2485					;
   2486					;
   2487					;
   2488					;		MODULE: "BOOT PROTOCOL HANDLER"
   2489					;
   2490					;		VERSION: 10-10
   2491					;
   2492					;		AUTHOR: R. MCLEAN
   2493					;
   2494					;		DATE: 12 OCT 76
   2495					;
   2496					;	THIS MODULE CONTAINS:
   2497					;
   2498					;	1 -- CODE TO SERVICE BOOT PROTOCOL ETC.
   2499					;
   2500					; MODIFIED:
   2501					;	NO.	DATE		PROGRAMMER	PURPOSE
   2502					;	---	----		----------	-------
   2503					;	001	12-OCT-76	R. BELANGER	CHANGED PHYSICAL EXAMINES &
   2504					;						DEPOSITS TO EPT RELATIVE
   2505					;	002	21-OCT-76	A. PECKHAM	ADDITION OF CODE TO COUNT
   2506					;						DOORBELLS.
   2507					;
   2508					;	003	04-NOV-76	R. BELANGER	ADDED CODE TO DELETE
   2509					;						ENTRIES FROM TO10Q ON
   2510					;						PRIMARY PROTOCOL RESTART.
   2511					;	004	29-NOV-76	A. PECKHAM	CHANGES TOO NUMEROUS TO MENTION.
   2512					;	005	07-MAR-77	A. PECKHAM	ADDED CHANGE TO AVOID RESETTING TO -10 Q.
   2513					;	006	21-MAR-77	A. PECKHAM	FIXED BUG IN ACKNOWLEGE
   2514					;	007	28-AUG-77	R. BELANGER	RESET POWERFAIL FLAG ON
   2515					;						PRIMARY PROTOCOL START
   2516					;	008	07-OCT-77	R. BELANGER	IGNORE COMM REGION IF SO DIRECTED BY "TKTN"
   2517					;
   2518					;	MACRO CALLS
   2519					;
   2521						.MCALL	CALL,RETURN,.STKM,CLEF$S,WTSE$S,QIOW$,DTON$S,.CRASH
   2522						.MCALL	WSIG$S,.ENB0,.INH6,.ENB6,$DEF
   2523	005352					$DEF
BOOT -- BOOT PROTOCOL HANDLER	MACRO M1108  16-DEC-77 11:28  PAGE 43
SECONDARY PROTOCOL -- BOOT PROTOCOL SERVICE

   2526						.SBTTL	SECONDARY PROTOCOL -- BOOT PROTOCOL SERVICE
   2527					;
   2528					;	BTPROT -- ROUTINE TO HANDLE THE PROTOCOL BETWEEN
   2529					;	RSX20F INITALIZATION AND BOOTS
   2530					;	IT IS ASSUMED THAT THIS PROTOCOL WILL BE USED
   2531					;	DURING INITALIZATION AND IN CASE OF MONITOR CRASHED ETC
   2532					;	WHEN THE NORMAL MEANS OF COMMUNICATIONS THRU THE COMM REGION ARE DESTROYED
   2533					;
   2534					;
   2535					;	CALLING SEQUENCE:
   2536					;
   2537					;
   2538					;	IF SUCCESS IN COMMUNICATION WITH BOOTS IT WILL ENTER (OR RE-ENTER)
   2539					;
   2540					;	IF UNSUCCESSFUL IT WILL RETURN TO KLDCP
   2541					;
   2542					;
   2543	005352				BTPHD::
   2544	005352					.STKM	0,1,2,3,4,5,0,BTPRO,174000,.BTSTK
	005420	000000 	000000 	000000 		.WORD	0,0,0,0
	005426	000000
	005446	174000 	005652'	005632'		.WORD	174000,BTPRO,.BTSTK
	005502	000005 				.WORD	5
	005504	037202'				.WORD	TTPEN
	005506	000000 				.WORD	0
	005510	000000 				.WORD	0
	005512	000000 				.WORD	0
	005514	000000 				.WORD	0
	005516	000000 				.WORD	0
	005520	000000 				.WORD	0
	005522	000000 				.WORD	0
	005524	000000 				.WORD	0
	005526	000000 				.WORD	0
	005530	000000 				.WORD	0
	005632	000000 				.WORD	0
	005634	000001 				.WORD	1
	005636	000002 				.WORD	2
	005640	000003 				.WORD	3
	005642	000004 				.WORD	4
	005644	000005 				.WORD	5
	005646	005652'				.WORD	BTPRO
	005650	174000 				.WORD	174000
   2545
   2546	005652				BTPRO:
   2547	005652					WTSE$S	#E.FPR2		;WAIT FOR ACTIVATION.
	005652	012746 	000076 			MOV	#E.FPR2,-(SP)
	005656	012746 				MOV	(PC)+,-(SP)
	005660	   051 	   002 			.BYTE	41.,2
	005662	104375 				EMT	375
   2548	005664	052737 	100000 	033036'		BIS	#BIT15,FETSK+A.EF ;SET SECONDARY PROTOCOL FLAG FOR FETSK
   2549	005672	013700 	031356'			MOV	.PRDTE,R0	;FIND ADDRESS OF PRIVILEDGED DTE
   2550	005676	013705 	031354'			MOV	.PRSTA,R5
   2551	005702	012715 	000010 			MOV	#INTROF,@R5	;CLEAR THE STATUS
   2552	005706	000405 				BR	20$		;GO LOOK FOR CHANGE TO BOOT PROTOCOL
   2553						;
   2554	005710				10$:
   2555	005710					.ENB6			;;;ENABLE INTERRUPTS
BOOT -- BOOT PROTOCOL HANDLER	MACRO M1108  16-DEC-77 11:28  PAGE 43-1
SECONDARY PROTOCOL -- BOOT PROTOCOL SERVICE

	005710	012637 	177776 			MOV	(SP)+,@#PS
   2556	005714					WSIG$S			;WAIT FOR SIG EVENT
	005714	012746 				MOV	(PC)+,-(SP)
	005716	   061 	   001 			.BYTE	49.,1
	005720	104375 				EMT	375
   2557	005722				20$:
   2558	005722					.INH6			;INHIBIT INTERRUPTS
	005722	013746 	177776 			MOV	@#PS,-(SP)
	005726	112737 	000300 	177776 		MOVB	#300,@#PS
   2559	005734	032737 	002000 	031114'		BIT	#EF.CRI,.COMEF+2 ;;; +++008 IS THE COMM REGION VALID??
   2560	005742	001015 				BNE	30$		;;; +++008 NO -- GO ON
   2561	005744	005060 	000010 			CLR	TNAD1(R0)	;;; MAYBE -- LOOK FOR PROTOCOL CHANGE
   2562	005750	005060 	000012 			CLR	TNAD2(R0)	;;;BY TESTING RELATIVE ADDR WORD
   2563	005754					CALL	WFED		;;;WAIT FOR EXAMINE
	005754	004737 	044012'			JSR	PC,WFED
   2564	005760	103432 				BCS	47$		;;;KL HAS BEEN LOST..
   2565	005762	005760 	000002 			TST	DXWD3(R0)	;;;IF NON-ZERO
   2566	005766	001403 				BEQ	30$		;;;THEN EXAMINE VALID, SO
   2567	005770	010702 				MOV	PC,R2		;;; +++006 SAY NO ACKNOWLEGE NEEDED
   2568	005772	000137 	006656'			JMP	120$		;;; +++005 RETURN TO PRIMARY PROTOCOL.
   2569						;
   2570	005776				30$:
   2571	005776	032715 	000010 			BIT	#RM,@R5		;;;PRIVILEDGED DTE?
   2572	006002	001342 				BNE	10$		;;;NO -- CONTINUE WAITING FOR PRIMARY
   2573	006004	032760 	004000 	000030 		BIT	#DS04,DAG1(R0)	;;;CHECK FOR CLOCK ERROR STOP
   2574	006012	001146 				BNE	86$		;;;YES -- STOP PROTOCOL
   2575	006014	032715 	004000 			BIT	#TO11DB,@R5	;;;WAIT OR A DOORBELL INTERRUPT
   2576	006020	001733 				BEQ	10$		;;;LOOP UNTIL IT OCCURS
   2577	006022				40$:
   2578	006022	005237 	031360'			INC	.PRDCT		;;; +002 ONE MORE DOORBELL....
   2579	006026	012760 	004000 	000010 		MOV	#PRTOFF!EPTR,TNAD1(R0) ;;; +001 PROTECT OFF
   2580	006034	012760 	000451 	000012 		MOV	#DTECMD,TNAD2(R0) ;;;READ THE COMMAND PASSED
   2581	006042					CALL	WFED		;;;WAIT FOR EXAMINE DEPOSIT
	006042	004737 	044012'			JSR	PC,WFED
   2582	006046				47$:
   2583	006046	103532 				BCS	87$
   2584	006050	012715 	002000 			MOV	#INT11C,@R5	;;;ALLOW MORE DOORBEL INTERRUPTS
   2585	006054	122760 	000011 	000003 		CMPB	#11,DXWD3+1(R0)	;;;LOOK AT THE COMMAND WORD
   2586	006062	001312 				BNE	10$		;;;NOT WHAT WE WANT...
   2587					;
   2588					;	CHANGE PROTOCOL TO SECONDARY (FUNCTION 11)
   2589					;
   2590	006064				50$:
   2591	006064	012760 	177777 	000002 		MOV	#-1,DXWD3(R0)	;;;ACKNOWLEDGE THE COMMAND
   2592	006072	052760 	014000 	000010 		BIS	#DEP!EPTR!PRTOFF,TNAD1(R0) ;;; +001 SET DEPOSIT IN TEN MEMORY FLAG
   2593	006100	012760 	000444 	000012 		MOV	#DTEFLG,TNAD2(R0) ;;;START TRANSFER TO DTE FLAG WORD
   2594	006106					CALL	WFED		;;;WAIT FOR EXAMINE DEPOSIT
	006106	004737 	044012'			JSR	PC,WFED
   2595	006112	103510 				BCS	87$		;;;TEN STOPPED
   2596	006114	012715 	000400 			MOV	#TO10DB,@R5	;;;SET 10'S DOORBELL
   2597	006120	005037 	031300'			CLR	.BTSCH		;;;CLEAR ANY SAVED CHARACTERS
   2598					;
   2599					;	AT THIS POINT WE ARE OFFICIALLY IN SECONDARY PROTOCOL
   2600					;
   2601					;	THIS IS THE MAIN COMMAND LOOP WHICH PROCESSES THE SECONDARY
   2602					;	PROTOCOL COMMANDS AND PASSES CTY CHARACTERS TO THE -10.
   2603					;
BOOT -- BOOT PROTOCOL HANDLER	MACRO M1108  16-DEC-77 11:28  PAGE 43-2
SECONDARY PROTOCOL -- BOOT PROTOCOL SERVICE

   2604	006124				60$:
   2605	006124					.ENB6			;;;ENABLE INTERRUPTS
	006124	012637 	177776 			MOV	(SP)+,@#PS
   2606	006130					WSIG$S			;WAIT FOR SIG EVENT
	006130	012746 				MOV	(PC)+,-(SP)
	006132	   061 	   001 			.BYTE	49.,1
	006134	104375 				EMT	375
   2607	006136					.INH6			;INHIBIT INTERRUPTS
	006136	013746 	177776 			MOV	@#PS,-(SP)
	006142	112737 	000300 	177776 		MOVB	#300,@#PS
   2608	006150	032715 	004000 			BIT	#TO11DB,@R5	;;;WAIT FOR ANOTHER DOORBELL
   2609	006154	001073 				BNE	90$		;;;FOUND IT -- CHECK THE COMMAND
   2610	006156	032760 	004000 	000030 		BIT	#DS04,DAG1(R0)	;;;CHECK FOR CLOCK ERROR STOP
   2611	006164	001061 				BNE	86$		;;;YES -- STOP PROTOCOL
   2612	006166				70$:
   2613	006166	113701 	031300'			MOVB	.BTSCH,R1	;;;CHECK FOR CTY CHARACTER
   2614	006172	001754 				BEQ	60$
   2615					;
   2616					;	TRANSFER CTY CHARACTER TO -10
   2617					;
   2618	006174				80$:
   2619	006174	012760 	004000 	000010 		MOV	#PRTOFF!EPTR,TNAD1(R0) ;;; +001 SET PROTECT OFF
   2620	006202	012760 	000456 	000012 		MOV	#DTEMTI,TNAD2(R0) ;;;PICK UP THE INPUT BUSY FLAG
   2621	006210				81$:
   2622	006210					CALL	WFED		;;;WAIT FOR EXAMINE DEPOSIT
	006210	004737 	044012'			JSR	PC,WFED
   2623	006214	103447 				BCS	87$		;;;TEN STOPPED
   2624	006216	005760 	000004 			TST	DXWD2(R0)
   2625	006222	001340 				BNE	60$		;;;TEN CAN'T ACCEPT ANOTHER CHARACTER YET
   2626	006224	042701 	177600 			BIC	#^C177,R1	;;;MASK OFF JUNK
   2627	006230	010160 	000002 			MOV	R1,DXWD3(R0)	;;;PUT THE WORD IN THE DTE
   2628	006234	005060 	000004 			CLR	DXWD2(R0)
   2629	006240	005060 	000006 			CLR	DXWD1(R0)
   2630	006244	012760 	014000 	000010 		MOV	#DEP!PRTOFF!EPTR,TNAD1(R0) ;;; +001 SET DEP!PRTOFF!EPTR DEPOSIT FLAG
   2631	006252	012760 	000450 	000012 		MOV	#DTEF11,TNAD2(R0) ;;;STORE THE CHARACTER IN THE 10
   2632	006260					CALL	WFED		;;;WAIT FOR EXAMINE/DEPOSIT
	006260	004737 	044012'			JSR	PC,WFED
   2633	006264	103423 				BCS	87$		;;;TEN STOPPED
   2634	006266	105037 	031300'			CLRB	.BTSCH		;;;CHARACTER HAS NOW BEEN SENT
   2635	006272	012760 	177777 	000002 		MOV	#-1,DXWD3(R0)	;;;SET CHARACTER IN BUFFER FLAG
   2636	006300	012760 	014000 	000010 		MOV	#DEP!PRTOFF!EPTR,TNAD1(R0) ;;; +001 SET DEP!PRTOFF!EPTR DEPOSIT FLAG
   2637	006306	012760 	000456 	000012 		MOV	#DTEMTI,TNAD2(R0) ;;;TRANSFER TO 10 MEMORY
   2638	006314					CALL	WFED		;;;WAIT FOR TRANSFER
	006314	004737 	044012'			JSR	PC,WFED
   2639	006320	103405 				BCS	87$		;;;TEN STOPPED
   2640	006322	012715 	000400 			MOV	#TO10DB,@R5	;;;SET THE 10'S DOORBELL
   2641	006326	000676 				BR	60$		;;;CONTINUE POLLING
   2642					;
   2643					;	AN ERROR ON EXAMINE / DEPOSIT TURNS OFF BOOT PROTOCOL
   2644					;
   2645	006330				86$:
   2646	006330					CALL	WFED		;;;RECOGNIZE ERROR, THEN
	006330	004737 	044012'			JSR	PC,WFED
   2647	006334				87$:
   2648	006334					.ENB0			;;; +++006 ENABLE INTERRUPTS
	006334	004737 	041526'			JSR	PC,..ENB0
   2649	006340	000137 	005652'			JMP	BTPRO		;AND GO TO WAIT FOR REACTIVATION.
BOOT -- BOOT PROTOCOL HANDLER	MACRO M1108  16-DEC-77 11:28  PAGE 43-3
SECONDARY PROTOCOL -- BOOT PROTOCOL SERVICE

   2650					;
   2651					;	RECIEVE A COMMAND FROM THE -10
   2652					;
   2653	006344				90$:
   2654	006344	005237 	031360'			INC	.PRDCT		;;; +002 ONE MORE DOORBELL...
   2655	006350	012760 	004000 	000010 		MOV	#PRTOFF!EPTR,TNAD1(R0) ;;; +001 SET PROTECT OFF
   2656	006356	012760 	000451 	000012 		MOV	#DTECMD,TNAD2(R0) ;;;READ THE COMMAND WORD
   2657	006364					CALL	WFED		;;;WAIT FOR EXAMINE DEPOSIT
	006364	004737 	044012'			JSR	PC,WFED
   2658	006370	012715 	002000 			MOV	#INT11C,@R5	;;;WARNING !!!!!DON'T MOVE THIS INSTRUCTION!!!!!!!
   2659									;;;DOORBELL MUST NOT BE CLEARED BEFORE THE
   2660									;;;10 FINISHES THE SET DOORBELL!!!!!!
   2661									;;;IT IS GUARANTEED TO BE SAFE AFTER WFED
   2662	006374	103757 				BCS	87$		;;;TEN STOPPED
   2663	006376	122760 	000012 	000003 		CMPB	#12,DXWD3+1(R0)	;;;MONITOR MODE CONTROL OFF?
   2664	006404	001443 				BEQ	100$		;;;YES -- RE-ENTER RSX20F
   2665	006406	122760 	000011 	000003 		CMPB	#11,DXWD3+1(R0)	;;;MONITOR MODE CONTROL ON?
   2666	006414	001003 				BNE	95$		;;;NO -- MUST BE CTY CHARACTER
   2667	006416	012715 	002000 			MOV	#INT11C,@R5	;;;ALLOW MORE DOORBELLS AND
   2668	006422	000620 				BR	50$		;;;ACKNOWLEDGE THE COMMAND.
   2669					;
   2670					;	OUTPUT A CHARACTER TO THE CTY (FUNCTION 10)
   2671					;
   2672	006424				95$:
   2673	006424	116037 	000002 	007004'		MOVB	DXWD3(R0),QPROAD ;;;OUTPUT A CHARACTER
   2674	006432					.ENB6			;;;ENABLE INTERRUPTS
	006432	012637 	177776 			MOV	(SP)+,@#PS
   2675	006436					DIR$	#QPROMS		;OUTPUT CHARACTER
	006436	012746 	006762'			MOV	#QPROMS,-(SP)
	006442	104375 				EMT	375
   2676	006444					.INH6			;INHIBIT INTERRUPTS
	006444	013746 	177776 			MOV	@#PS,-(SP)
	006450	112737 	000300 	177776 		MOVB	#300,@#PS
   2677	006456	012760 	177777 	000002 		MOV	#-1,DXWD3(R0)	;;;ACKNOWLEDGE CHARACTER OUTPUT
   2678	006464	012760 	014000 	000010 		MOV	#DEP!PRTOFF!EPTR,TNAD1(R0) ;;; +001 SET DEPOSIT
   2679	006472	012760 	000455 	000012 		MOV	#DTEMTD,TNAD2(R0) ;;;START TRANSFER TO INDICATE CHARACTER OUTPUT
   2680	006500					CALL	WFED		;;;WAIT FOR EXAMINE DEPOSIT
	006500	004737 	044012'			JSR	PC,WFED
   2681	006504	103713 				BCS	87$		;;;WHOOPS !
   2682	006506	012715 	000400 			MOV	#TO10DB,@R5	;;;CLEAR THE 11 DOORBELL AND SET THE 10'S DOORBELL
   2683	006512	000625 				BR	70$		;;;CONTINUE POLLING
   2684					;
   2685					;	CHANGE PROTOCOL TO PRIMARY (FUNCTION 12)
   2686					;
   2687	006514				100$:
   2688	006514	005002 				CLR	R2		;;; +++006 NEED ACKNOWLEGE
   2689	006516	042737 	006000 	031114'		BIC	#EF.PFR!EF.CRI,.COMEF+2 ;;; +++007 GUARD AGAINST SPURIOUS POWERFAIL
   2690									;;; +++008 DECLARE COMM REGION VALID
   2691	006524	032760 	000001 	000002 		BIT	#1,DXWD3(R0)	;;;CHECK FOR RE-INIT
   2692	006532	001451 				BEQ	120$		;;; +++006 NO
   2693	006534				110$:
   2694	006534	010046 				MOV	R0,-(SP)
   2695	006536				113$:
   2696	006536	013704 	031742'			MOV	TO10Q,R4	;;; +003 Q LISTHEAD TO R4
   2697	006542	022704 	031742'			CMP	#TO10Q,R4	;;; +003 DONE?
   2698	006546	001416 				BEQ	112$		;;; +003 YES -- LEAVE
   2699	006550					CALL	..NDEL		;;; +003 NO -- REMOVE THIS ENTRY FROM Q
BOOT -- BOOT PROTOCOL HANDLER	MACRO M1108  16-DEC-77 11:28  PAGE 43-4
SECONDARY PROTOCOL -- BOOT PROTOCOL SERVICE

	006550	004737 	041306'			JSR	PC,..NDEL
   2700	006554	005764 	000012 			TST	12(R4)		;;; +003 TEST INDIRECT INDICATOR
   2701	006560	003003 				BGT	111$		;;; +003 NOT INDIRECT -- GO ON
   2702	006562	056474 	000024 	000026 		BIS	24(R4),@26(R4)	;;; +003 INDIRECT -- DECLARE XFER COMPLETE
   2703	006570				111$:
   2704	006570	010400 				MOV	R4,R0		;;; +003 SET UP TO
   2705	006572	016001 	000004 			MOV	4(R0),R1	;;; +003 RETURN CORE BLOCK
   2706	006576					CALL	..DECB		;;; +003 RETURN IT
	006576	004737 	042012'			JSR	PC,..DECB
   2707	006602	000755 				BR	113$		;;; +003 DO NEXT ENTRY IN Q
   2708						;
   2709	006604				112$:
   2710	006604	005037 	031740'			CLR	TO10QC		;;; +003 DONE -- CLEAR CURRENT COUNTS
   2711	006610	005037 	031666'			CLR	.CPDV		;;; CLEAR CURRENT TO-10 DEVICE
   2712	006614	013700 	031674'			MOV	.CRHD,R0	;;; GET CURRENT NODE
   2713	006620	062700 	000010 			ADD	#10,R0		;;; POINT TO DATA AREA
   2714	006624	010037 	031672'			MOV	R0,.CRPB	;;; AND SET BUFFER POINTER.
   2715	006630	005060 	177776 			CLR	-2(R0)		;;; CLEAR ENTRY COUNT
   2716	006634	016000 	177774 			MOV	-4(R0),R0	;;; GET LENGTH OF NODE
   2717	006640	162700 	000012 			SUB	#10.,R0		;;; ADJUST,
   2718	006644	010037 	031670'			MOV	R0,.CRSZ	;;; AND SET BUFFER SIZE.
   2719	006650	005037 	031662'			CLR	.CRQZ		;;; NOTHING ENTERED YET.
   2720	006654	012600 				MOV	(SP)+,R0
   2721	006656				120$:				;;; +++005
   2722	006656					CLEF$S	#E.FPR2		;;;TURN SECONDARY PROTOCOL OFF
	006656	012746 	000076 			MOV	#E.FPR2,-(SP)
	006662	012746 				MOV	(PC)+,-(SP)
	006664	   037 	   002 			.BYTE	31.,2
	006666	104375 				EMT	375
   2723	006670					DTON$S			;;;ENABLE DTE20
	006670	012746 	000003 			MOV	#DF.ON,-(SP)
	006674	012746 	001011 			MOV	#400*2.+DR.DTE,-(SP)
	006700	104375 				EMT	375
   2724	006702	103614 				BCS	87$		;;; +++006 LOST COMM REGION
   2725	006704	005702 				TST	R2		; +++006 ACKNOWLEGE??
   2726	006706	001013 				BNE	130$		; +++006 NO -- GO ON
   2727	006710	012760 	177777 	000002 		MOV	#-1,DXWD3(R0)	;;; +++006 ACK THE COMMAND
   2728	006716	012760 	014000 	000010 		MOV	#DEP!EPTR!PRTOFF,TNAD1(R0) ;;; +++001 SET DEPOSIT
   2729	006724	012760 	000444 	000012 		MOV	#DTEFLG,TNAD2(R0)  ;;;  +++006 START IT
   2730	006732					CALL	WFED		;  +++006 WAIT FOR IT
	006732	004737 	044012'			JSR	PC,WFED
   2731	006736				130$:				;;;  +++006
   2732	006736	012715 	000440 			MOV	#INTRON!TO10DB,@R5 ;;;ENABLE INTERRUPTS
   2733	006742					.ENB0			;;;ENABLE INTERRUPTS
	006742	004737 	041526'			JSR	PC,..ENB0
   2734	006746	005237 	031302'			INC	.ACKAL		;SEND ACK ALL
   2735	006752	005037 	031306'			CLR	.FEACT		;FE IS NOW AVAILABLE
   2736	006756	000137 	005652'			JMP	BTPRO		;WAIT FOR PROTOCOL REACTIVICATION.
   2737						;
   2738	006762				QPROMS:
   2739	006762					QIOW$	IO.WLB,1,2,0,0,0,<QPROAD,1,0>
	006762	   003 	   011 			.BYTE	3,$$$ARG
	006764	000400 				.WORD	IO.WLB
	006766	000001 				.WORD	1
	006770	   002 	   000 			.BYTE	2,0
	006772	000000 				.WORD	0
	006774	000000 				.WORD	0
BOOT -- BOOT PROTOCOL HANDLER	MACRO M1108  16-DEC-77 11:28  PAGE 43-5
SECONDARY PROTOCOL -- BOOT PROTOCOL SERVICE

	006776	007004'				.WORD	QPROAD
	007000	000001 				.WORD	1
	007002	000000 				.WORD	0
   2740	007004				QPROAD:
   2741	007004	000000 				.WORD	0
   2742						.TITLE	PF -- POWER FAIL HANDLER
   2743	007006					IDENT$	10,6
						.IDENT	/010060/
   2744					;
   2745					;                             COPYRIGHT (C) 1975, 1978 BY
   2746					;                     DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
   2747					;
   2748					;       THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE  USED  AND  COPIED
   2749					;       ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
   2750					;       OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR ANY OTHER COPIES THERE-
   2751					;       OF  MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
   2752					;       NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
   2753					;
   2754					;       THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT
   2755					;       NOTICE  AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
   2756					;       CORPORATION.
   2757					;
   2758					;       DIGITAL ASSUMES NO RESPONSIBILITY FOR THE  USE  OR  RELIABILITY  OF  ITS
   2759					;       SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
   2760					;
   2761					;		MODULE: "POWER FAIL"
   2762					;
   2763					;		VERSION: 10-06
   2764					;
   2765					;		AUTHOR: R. MCLEAN
   2766					;
   2767					;		DATE: 19 JUL 75
   2768					;
   2769					;
   2770					;	THIS MODULE CONTAINS:
   2771					;
   2772					;	1 -- CODE TO SUPPORT POWER FAIL
   2773					;
   2774					; MODIFICATIONS:
   2775					;
   2776					;	NO.	DATE		PROGRAMMER	REASON
   2777					;	---	----		----------	------
   2778					;	001	10-AUG-77	R. BELANGER	WAIT FOR KL CROBAR TO
   2779					;						SETTLE ON POWER RESTART
   2780					;	002	18-AUG-77	R. BELANGER	FLAG POWER RESTART
   2781
   2783						.MCALL	CALL,$DEF,.CRASH
   2784	007006					$DEF
PF -- POWER FAIL HANDLER	MACRO M1108  16-DEC-77 11:28  PAGE 44
POWERFAIL -- POWER DOWN

   2787						.SBTTL	POWERFAIL -- POWER DOWN
   2788					;
   2789					;	POWER FAILURE AND RECOVERY SERVICE
   2790					;
   2791					;	WHEN A POWER FAILURE TRAP OCCURS, THE VOLATILE REGISTERS
   2792					;	ARE SAVED AND THE TRAP VEECTOR FOR POWER UP IS SET.
   2793					;
   2794					;	IF POWER FAIL INTERRUPTS A PRI 7 (I/O INITALIZE OR DTE
   2795					;	EXAMINE/DEPOSIT) THEN .PFAIL IS SET AND RTI
   2796					;	IS EXECUTED.  ROUTINES WHICH BREAK DOWN FROM PRI7
   2797					;	MUST CHECK TO SEE IF .PFAIL IS SET AND JUMP TO
   2798					;	.PFRTN -- THIS WILL ALLOW THEM TO FINISH AND
   2799					;	STILL PROTECT POWERFAIL FROM FAILING
   2800					;
   2801					;
   2802					;	NOTE: POWERFAIL TRAP CANNOT BE INHIBITED.
   2803					;	POWER FAIL TRAP SERVICE CAN NOT USE ROUTINES THAT INHIBIT
   2804					;	INTERRUPTS TO AVOID RACE CONDITIONS
   2805					;
   2806					;	NOTE: ALL MEMORY IS ASSUMED TO BE NON-VOLATILE (IT CANNOT BE
   2807					;	SAVED IN THE TIME PERMITTED FOR POWER FAIL SAVE)
   2808					;
   2809					;	POWER DOWN ENTRY -- CONTROL IS TRANSFERRED HERE (VIA POWER
   2810					;	FAIL TRAP VECTOR) AT PRIORITY SEVEN.
   2811					;
   2812	007006				.PWRDN::
   2813	007006	052737 	006000 	031114'		BIS	#EF.PFR!EF.CRI,.COMEF+2 ; +++002 ALWAYS FLAG POWER FAIL (ALWAYS!)
   2814	007014	016646 	000002 			MOV	2(SP),-(SP)	;FIND THE PS
   2815	007020	042716 	177437 			BIC	#177437,@SP	;MASK OFF ALL BUT PRI
   2816	007024	022726 	000340 			CMP	#340,(SP)+	;IS IT PRI 7?
   2817	007030	001005 				BNE	10$		;NO -- THEN ACCEPT POWER FAIL
   2818	007032	005237 	040376'			INC	.PFAIL		;SET POWER FAIL ERROR
   2819	007036	105237 	031116'			INCB	.SERFG+0	; +++001 LEST WE FORGET...
   2820	007042	000006 				RTT			;RETURN TO CALLER
   2821
   2822	007044	013746 	000006 		10$:	MOV	@#6,-(SP)	;SAVE LOW CORE
   2823	007050	013746 	000004 			MOV	@#4,-(SP)
   2824	007054	012737 	007130'	000004 		MOV	#20$,@#4	;SET UP TO HALT IF FAKE POWER FAIL
   2825	007062	012737 	000340 	000006 		MOV	#340,@#6	;SET PRIORITY 7 IN ODD ADDRESS TRAP ADDRESS
   2826	007070	005737 	173000 			TST	.BM873		;IF NOT POWER FAIL THIS WILL TRAP TO 4
   2827	007074	010046 				MOV	R0,-(SP)	;SAVE REGISTERS
   2828	007076	010146 				MOV	R1,-(SP)
   2829	007100	010246 				MOV	R2,-(SP)
   2830	007102	010346 				MOV	R3,-(SP)
   2831	007104	010446 				MOV	R4,-(SP)
   2832	007106	010546 				MOV	R5,-(SP)
   2833	007110	010637 	040402'			MOV	SP,PWRXSP	;SAVE STACK REGISTER
   2834	007114	012737 	007134'	000024 		MOV	#PWR.UP,@#24	;SET UP POWER UP TRAP VECTOR ADDRESS
   2835	007122	012737 	000006 	007132'		MOV	#6,CROBAR	; +++001 SET UP CROBAR COUNTER
   2836	007130	000000 			20$:	HALT
   2837
   2838	007132				CROBAR::			; +++001
   2839	007132	000000 				.WORD	0		; +++001 KL CROBAR COUNTER
PF -- POWER FAIL HANDLER	MACRO M1108  16-DEC-77 11:28  PAGE 45
POWERFAIL -- POWER UP ENTRY

   2841						.SBTTL	POWERFAIL -- POWER UP ENTRY
   2842
   2843					;
   2844					;
   2845					;	POWER UP ENTRY
   2846					;
   2847	007134				PWR.UP::
   2848	007134	013706 	040402'			MOV	PWRXSP,SP	;RESTORE STACK POINTER
   2849	007140	012737 	007134'	000004 		MOV	#PWR.UP,@#4	; +++001 MAKE BUS TIMEOUT TRAP TO "PWR.UP"
   2850	007146	012737 	004340 	000006 		MOV	#4340,@#6
   2851	007154	005337 	007132'			DEC	CROBAR		; +++001 COUNT THIS ATTEMPT
   2852	007160	003003 				BGT	10$		; +++001 ALL OK IF STILL .GT. 0
   2853	007162					.CRASH	CBR		; +++001 CRASH IF MORE THAN ONE MINUTE
	007162	000004 				IOT
	007164	   103 	   102 	   122 		.ASCIZ	/CBR/
	007167	   000
   2854						;
   2855	007170				10$:
   2856	007170	013701 	031356'			MOV	.PRDTE,R1	; +++001 ADDRESS OF DTE20 TO R1
   2857	007174					CALL	20$		; +++001 WAIT FOR KL CROBAR
	007174	004737 	007314'			JSR	PC,20$
   2858	007200					CALL	20$		; +++001 AND BE DAMN SURE OF IT
	007200	004737 	007314'			JSR	PC,20$
   2859	007204	012761 	000100 	000032 		MOV	#DRESET,DAG2(R1) ; +++001 RESET THE DTE20
   2860	007212	005037 	040376'			CLR	.PFAIL		;CLEAR POWER FAIL FLAG
   2861	007216	012737 	177777 	040400'		MOV	#-1,.PFIOW	;SET POWER FAIL BITS TO INTERRUPT ROUTINES
   2862	007224	012605 				MOV	(SP)+,R5	;RESTORE REGISTERS
   2863	007226	012604 				MOV	(SP)+,R4
   2864	007230	012603 				MOV	(SP)+,R3
   2865	007232	012602 				MOV	(SP)+,R2
   2866	007234	012601 				MOV	(SP)+,R1
   2867	007236	012600 				MOV	(SP)+,R0
   2868	007240	012637 	000004 			MOV	(SP)+,@#4	;RESTORE LOW CORE
   2869	007244	012637 	000006 			MOV	(SP)+,@#6
   2870	007250	012737 	007006'	000024 		MOV	#.PWRDN,@#24	;SET UP POWER DOWN TRAP AGAIN
   2871	007256	052737 	000100 	031234'		BIS	#KS.PFT,.KLITK	;FORCE POWER RESTART
   2872	007264	012737 	000401 	031230'		MOV	#401,.NOERR	;SET NO ERROR OR HALT
   2873	007272					CALL	..DTSP		;TURN OFF PROTOCOL TASKS
	007272	004737 	044300'			JSR	PC,..DTSP
   2874	007276	105237 	031232'			INCB	.TKTN		;TASK TERMINATION REQUEST
   2875	007302	152737 	000200 	031116'		BISB	#EV.PF,.SERFG+0	;INDICATE POWER FAIL & SIG EVENT
   2876	007310	000137 	004146'			JMP	..INTX		;RETURN TO INTERRUPTED ROUTINE
   2877						;
   2878	007314				20$:				; +++001
   2879	007314	012700 	000454 			MOV	#^D<5*60>,R0	; +++001 WAIT FOR CROWBAR TO SETTLE (5 SECONDS)
   2880	007320				30$:				; +++001
   2881	007320	105737 	177546 			TSTB	@#LKS		; +++001 CHECK WITH CLOCK
   2882	007324	100375 				BPL	30$		; +++001 WAIT FOR TICK
   2883	007326	105037 	177546 			CLRB	@#LKS		; +++001 CLEAR CLOCK FLAG
   2884	007332	077006 				SOB	R0,30$		; +++001 WAIT THE FULL COUNT
   2885	007334	005777 	022014 			TST	@.PRSTA		; +++001 LOOK AT DTE20 STATUS REGISTER
   2886									; +++001 IF NOT THERE (CROBAR TRUE) TRAP
   2887									; +++001 TO "PWR.UP", ELSE GO ON
   2888	007340					RETURN			; +++001 MADE IT -- RETURN
	007340	000207 				RTS	PC
PF -- POWER FAIL HANDLER	MACRO M1108  16-DEC-77 11:28  PAGE 46
POWERFAIL -- POWER FAIL RESTART

   2890						.SBTTL	POWERFAIL -- POWER FAIL RESTART
   2891
   2892					;
   2893					;	.PFAIL INDICATES POWER FAIL IN PROGRESS
   2894					;	.PFIOW IS BIT ENCODED TO INDICATE POWER FAIL
   2895					;	OCCURED AND POWER UP RECOVERY IS NECESSARY
   2896					;
   2897	007342				.PFRST::
   2898	007342	013746 	000004 			MOV	@#4,-(SP)	;SAVE ABS 6 &4 (NEXM STOP)
   2899	007346	013746 	000006 			MOV	@#6,-(SP)
   2900	007352	010046 				MOV	R0,-(SP)	;POWER FAIL RESTORE
   2901	007354	010146 				MOV	R1,-(SP)
   2902	007356	010246 				MOV	R2,-(SP)
   2903	007360	010346 				MOV	R3,-(SP)
   2904	007362	010446 				MOV	R4,-(SP)
   2905	007364	010546 				MOV	R5,-(SP)
   2906	007366	012737 	177777 	040400'		MOV	#-1,.PFIOW	;INDICATE POWER/FAIL TTY ENABLE
   2907	007374					CALL	.DMTMO		;DO TIMEOUT
	007374	004737 	030414'			JSR	PC,.DMTMO
   2908	007400					CALL	.DLTMO
	007400	004737 	030142'			JSR	PC,.DLTMO
   2909	007404	005237 	000000G			INC	.LPPFL
   2910	007410	005237 	000000G			INC	.CRPFL
   2911	007414	005037 	040400'			CLR	.PFIOW		;CLEAR POWER FAIL FLAG
   2912	007420	042737 	004000 	031114'		BIC	#EF.PFR,.COMEF+2 ; +++002 CLEAR POWERFAIL IN PROGRESS FLAG
   2913	007426	012737 	000100 	177546 		MOV	#.INTEN,@#LKS	;ENABLE CLOCK
   2915	007434	012777 	000400 	021712 		MOV	#TO10DB,@.PRSTA	;SET THE DOORBELL TO TELL 10 WE ARE HERE AND READY
   2917	007442	012605 				MOV	(SP)+,R5	;RESTORE
   2918	007444	012604 				MOV	(SP)+,R4
   2919	007446	012603 				MOV	(SP)+,R3
   2920	007450	012602 				MOV	(SP)+,R2
   2921	007452	012601 				MOV	(SP)+,R1
   2922	007454	012600 				MOV	(SP)+,R0
   2923	007456	012704 	000020 			MOV	#16.,R4		;SET UP TO RESTORE PARITY ERROR REGISTERS
   2924	007462	012705 	172100 			MOV	#.PARRG,R5	;SET UP THE ADDRESS OF THE REGISTERS
   2925	007466	012737 	000006 	000004 		MOV	#6,@#4		;SET UP 4 TO TRAP TO 6
   2926	007474	012737 	000002 	000006 		MOV	#2,@#6		;SET 6 TO BE A RTI INSTRUCTION
   2927									;ALL THE REGISTERS WILL NOT EXIST AND THERE
   2928									;MAY BE A HOLE IN THESE REGISTERS
   2929									;THEREFORE TRAPS TO 4 WILL OCCUR
   2930									;THIS CODE WILL SET UP THE REGISTERS AND
   2931									;WILL NOT CARE IF REGISTERS ARE MISSING.
   2932	007502	012725 	000001 		PARLOA:	MOV	#1,(R5)+	;ENABLE PARITY CHECKING
   2933	007506	005304 				DEC	R4
   2934	007510	001374 				BNE	PARLOA		;DO AGAIN IF NOT ALL REGISTERS
   2935	007512	012637 	000006 			MOV	(SP)+,@#6	;RESTORE LOW CORE
   2936	007516	012637 	000004 			MOV	(SP)+,@#4
   2937	007522					RETURN			;RETURN TO CALLER
	007522	000207 				RTS	PC
   2938						.TITLE	DMDTE	- DTE DIRECTIVES MODULE
   2939	007524					IDENT$	7,3
						.IDENT	/007030/
   2940					;
   2941					;                             COPYRIGHT (C) 1975, 1978 BY
   2942					;                     DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
   2943					;
   2944					;       THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE  USED  AND  COPIED
DMDTE	- DTE DIRECTIVES MODULE	MACRO M1108  16-DEC-77 11:28  PAGE 46-1
POWERFAIL -- POWER FAIL RESTART

   2945					;       ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
   2946					;       OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR ANY OTHER COPIES THERE-
   2947					;       OF  MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
   2948					;       NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
   2949					;
   2950					;       THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT
   2951					;       NOTICE  AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
   2952					;       CORPORATION.
   2953					;
   2954					;       DIGITAL ASSUMES NO RESPONSIBILITY FOR THE  USE  OR  RELIABILITY  OF  ITS
   2955					;       SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
   2956					;
   2957					;		MODULE: "DTE20" DIRECTIVE
   2958					;
   2959					;		VERSION: 07-03
   2960					;
   2961					;		AUTHOR: R. MCLEAN
   2962					;
   2963					;		DATE: 19 MAR 75
   2964					;
   2965					;
   2966					;	THIS MODULE CONTAINS:
   2967					;
   2968					;	1 --  CODE TO SERVICE THE DTE20 EMT SERVICE
   2969					;
   2970					; MODIFICATIONS:
   2971					;
   2972					;	NO.	DATE		PROGRAMMER	PURPOSE
   2973					;	---	----		----------	-------
   2974					;	001	14-MAR-77	R. BELANGER	CONDITIONALLY REMOVE UNUSED
   2975					;						DTE-20 EMT SERVICES
   2976					;	002	01-APR-77	A. PECKHAM	FIX BUG IN "$DTEON"
   2977					;	003	18-AUG-77	R. BELANGER	FIX "$DTEON" TO RETURN CORRECT STATUS
   2978					;						AND NOT START PRIMARY PROTOCOL IF
   2979					;						"SWFED" FAILS.
   2980					;
   2981					;	MACRO CALLS
   2982					;
   2984						.MCALL	CALL,RETURN,MFPI,MTPI,MFPS,MTPS,.CRASH,.INH,.ENB,$DEF
   2985	007524					$DEF
DMDTE	- DTE DIRECTIVES MODULE	MACRO M1108  16-DEC-77 11:28  PAGE 47
DTE20 EMT DISPATCH DECODER

   2988						.SBTTL	DTE20 EMT DISPATCH DECODER
   2989					;
   2990					;	CALLED BY EMT DISPATCH
   2991					;	THIS ROUTINE DECODES THE SPECIFIC DTE FUNCTION CODE
   2992					;	AND DISPATCHES TO THE CORRECT FUNCTION
   2993					;
   2994					;	ENTRY CONDITIONS:
   2995					;
   2996					;	R1 -- ADDRESS OF DPB
   2997					;	R2 -- SIZE OF DPB
   2998					;	R3 -- DIRECTIVE IDENTIFICATION CODE
   2999					;	R5 -- ATL NODE ADDRESS OF ISSUING TASK (.CRTSK)
   3000					;
   3001					;	REGISTERS SAVED AND RESTORED BY EMT SERVICE
   3002					;
   3003					;	R0,R1,R2,R3,R4,R5
   3004					;
   3005					;	REGISTERS FOR USER AND DOES NOT REQUIRE EMT SERVICE
   3006					;	ROUTINES TO SAVE EMT'S REGISTERS.
   3007					;
   3008					;	EXIT TO DTE EMT SERVICE ROUTINE CONDITIONS:
   3009					;
   3010					;	3(SP) -- FUNCTION CODE PLUS HIGH ORDER BYTE OF SECOND WORD  OF DPB
   3011					;	R0 -- POINTER TO EXAMINE/DEPOSIT ADDRESSES
   3012					;	R1 -- WORD 5 OF DPB
   3013					;	R2 -- WORD 3 OF DPB
   3014					;	R3 -- WORD 4 OF DPB
   3015					;	R4 -- ADDRESS OF DPB
   3016					;	R5 -- ATL NODE ADDRESS OF ISSUING TASK (.CRTSK)
   3017					;
   3018					;
   3019					;
   3020	007524	005046 			.D.DTE::CLR	-(SP)
   3021	007526	005046 				CLR	-(SP)
   3022	007530	010146 				MOV	R1,-(SP)	;SAVE POINTER TO DPB FOR R4
   3023	007532					MFPS	(R1)+,R0	;PUT THE FUNCTION CODE IN R0
	007532	012100 				MOV	(R1)+,R0
   3024	007534	150066 	000002 			BISB	R0,2(SP)
   3025	007540	105000 				CLRB	R0
   3026	007542	010066 	000004 			MOV	R0,4(SP)
   3027	007546	010204 				MOV	R2,R4		;SAVE SIZE OF DPB
   3028	007550	005046 				CLR	-(SP)		;SET DEFAULT PROCESSOR NUMBER
   3029	007552	162704 	000002 			SUB	#2,R4		;CHECK COUNT OF PARAMETERS
   3030	007556	001406 				BEQ	10$		;IF ZERO REGISTERS DON'T NEED BE SET UP (NO PARAMS)
   3031	007560					MFPS	(R1)+,R2	;MOVE THE CPU ADDRESS
	007560	012102 				MOV	(R1)+,R2
   3032	007562					MFPS	(R1)+,R3	;MOVE IN OFFSET ADDRESS TO COMM AREA
	007562	012103 				MOV	(R1)+,R3
   3033	007564	162704 	000002 			SUB	#2,R4		;CHECK TO SEE IF CPU PARAMETER
   3034	007570	001401 				BEQ	10$		;NO -- DON'T ATTEMPT TO SET REGISTER
   3035	007572					MFPS	(R1)+,@SP	;YES -- SET CPU NUMBER
	007572	012116 				MOV	(R1)+,@SP
   3036	007574	012601 			10$:	MOV	(SP)+,R1	;SET CPU NUMBER
   3037	007576	012604 				MOV	(SP)+,R4
   3038	007600					CALL	FNDCPU		;FIND DTE20 BLOCK
	007600	004737 	010730'			JSR	PC,FNDCPU
   3039	007604	006316 				ASL	@SP		;MULTIPLY FUNCTION CODE BY 2 TO FORM OFFSET
DMDTE	- DTE DIRECTIVES MODULE	MACRO M1108  16-DEC-77 11:28  PAGE 47-1
DTE20 EMT DISPATCH DECODER

   3040	007606	062716 	007616'			ADD	#DTEDSP-2,@SP	;POINT INTO DISPATCH TABLE
   3041	007612	017616 	000000 			MOV	@(SP),@SP
   3042	007616	000136 				JMP	@(SP)+		;GO TO ROUTINE AND REMOVE ELEMENTFROM STACK
   3043					;
   3044					;
   3045	007620	007656'			DTEDSP:	.WORD	$DORBL		;RING DORBELL (FUNCTION CODE 1)
   3046	007622	007660'				.WORD	$DTEOF		;TURN OFF DTE20 (FUNCTION CODE 2)
   3047	007624	007672'				.WORD	$DTEON		;TURN ON DTE20 (FUNCTION CODE 3)
   3048	007626	010262'				.WORD	$DPMYG		;DEPOSIT MY GENERAL SECTION (FUNCTION CODE 4)
   3049	007630	010320'				.WORD	$EXMYG		;EXAMINE MY GENERAL SECTION (FUNCTION CODE 5)
   3050	007632	010330'				.WORD	$EXMYN		;EXAMINE MY SECTION FOR CPU N (FUNCTION CODE 6)
   3051	007634	010336'				.WORD	$DPMYN		;DEPOSIT MY SECTION FOR CPU N (FUNCTION CODE 7)
   3052	007636	010344'				.WORD	$EXHSG		;EXAMINE HIS GENERAL COMM (FUNCTION CODE 10)
   3053	007640	010352'				.WORD	$EXHSM		;EXAMINE HIS SECTION FOR ME (FUNCTION CODE 11)
   3054	007642	010360'				.WORD	$KLDFR		;START KL10 DIAGNOSTIC FUNCTION READ
   3055	007644	010516'				.WORD	$KLDFW		;START KL10 DIAGNOSTIC FUNCTION WRITE
   3056	007646	010472'				.WORD	$KLDFX		;START KL10 DIAGNOSTIC FUNCTION (FUNCTION CODE 12)
   3057	007650	010616'				.WORD	$PRVEX		;PRIVILEDGED EXAMINE (FUNCTION 13)
   3058	007652	010654'				.WORD	$PRVDP		;PRIVILEDGED DEPOSIT (FUNCTION 14)
   3059	007654	010676'				.WORD	$RWDRG		;READ/WRITE DIAGNOSTIC REGISTER (FUNCTION 15)
DMDTE	- DTE DIRECTIVES MODULE	MACRO M1108  16-DEC-77 11:28  PAGE 48
$DORBL -- RING THE KL-10 DOORBELL

   3061						.SBTTL	$DORBL -- RING THE KL-10 DOORBELL
   3062					;
   3063					;+
   3064					;
   3065					;	$DORBL -- RING THE DOORBELL
   3066					;	OF THE KL-10 SPECIFIED
   3067					;
   3068					;
   3069					;	ENTRY CONDITIONS:
   3070					;
   3071					;	R1 -- CPU NUMBER OF THE DTE TO RING THE DOORBELL
   3072					;	CALL	$DORBL
   3073					;
   3074					;	EXIT CONDITIONS:
   3075					;
   3076					;	CC-C CLEAR TO INDICATE SUCCESS
   3077					;
   3078					;	R0 -- STATUS -- +1 DOORBELL RUNG
   3079					;			+2 DOORBELL ALREADY RUNG (HAS NOT RESPONDED FROM LAST RING)
   3080					;
   3081					;
   3082					;	ERROR CONDITIONS:
   3083					;
   3084					;	CC-C SET
   3085					;
   3086					;	R0  -- -1 ILLEGAL CPU NUMBER
   3087					;	R0  -- -2 E BOX STOPPED
   3088					;	R0  -- -3 SECONDARY PROTOCOL IN USE
   3089					;
   3090					;
   3091					;	REGISTERS SAVED AND RESTORED BY EMT SERVICE
   3092					;
   3093					;-
   3094	007656				$DORBL::
   3111
   3112	007656	104635 				TRAP	DE.99		; +++001 THIS ISN'T HERE
   3113					;
DMDTE	- DTE DIRECTIVES MODULE	MACRO M1108  16-DEC-77 11:28  PAGE 49
$DTEOF -- TURN THE DTE20 OFF

   3116						.SBTTL	$DTEOF -- TURN THE DTE20 OFF
   3117					;
   3118					;+
   3119					;
   3120					;	$DTEOF -- TURN OFF THE DTE20
   3121					;
   3122					;	CALLING SEQUENCE:
   3123					;	ENTRY CONDITIONS:
   3124					;
   3125					;
   3126					;	CALL	$DTEOF
   3127					;
   3128					;	EXIT CONDITIONS:
   3129					;
   3130					;	R0 --1 TO INDICATE SUCCESS
   3131					;	CC-C CLEAR TO INDICATE SUCCESS
   3132					;
   3133					;
   3134					;	ERROR CONDITIONS: NONE
   3135					;
   3136					;
   3137					;	REGISTERS SAVED AND RESTORED BY EMT SERVICE
   3138					;
   3139					;-
   3140					;
   3141	007660				$DTEOF::
   3142		000000 			.REPT 0
   3143						MOV	#16.,R0		;TURN OFF ALL DTE'S
   3144						MOV	#PROTBL,R2	;FIND THE TABLE
   3145					10$:	TST	@R2		;IS THERE A DTE HERE?
   3146						BEQ	20$		;NO -- FORGET IT
   3147						MOV	@R1,R3		;FIND THE ADDRESS OF THE DTE
   3148						MOV	#INTROF,STATD(R3) ;SET THE STATSUS TO INTERRUPT OFF
   3149					20$:	ADD	#5*2,R1		;LOOK AT THE NEXT ENTRY IN THE TABLE
   3150						SOB	R0,10$		;END OF TABLE?
   3151					.ENDR; END .REPT 0
   3152	007660					CALL	..DTSP		;+ TURN OFF PROTOCOLS AND
	007660	004737 	044300'			JSR	PC,..DTSP
   3153	007664					CALL	..DTP2		;+ START UP SECONDARY PROTOCOL.
	007664	004737 	044316'			JSR	PC,..DTP2
   3154	007670	104401 				TRAP	DR.01		;RETURN STATUS OK
DMDTE	- DTE DIRECTIVES MODULE	MACRO M1108  16-DEC-77 11:28  PAGE 50
$DTEON -- TURN THE DTE20 ON

   3156						.SBTTL	$DTEON -- TURN THE DTE20 ON
   3157					;
   3158					;+
   3159					;
   3160					;	$DTEON -- TURN ON THE DTE20
   3161					;	THIS ROUTINE WILL SET UP THE TABLES NECESSARY TO
   3162					;	INITALIZE THE COMMUNICATON BETWEEN THE PDP10 AND PDP11'S
   3163					;
   3164					;
   3165					;	ENTRY CONDITIONS:
   3166					;
   3167					;
   3168					;	CALL	$DTEON
   3169					;
   3170					;	EXIT CONDITIONS:
   3171					;
   3172					;	R0 --1 TO INDICATE SUCCESS
   3173					;	CC-C CLEAR TO INDICATE SUCCESS
   3174					;
   3175					;
   3176					;	ERROR CONDITIONS:
   3177					;
   3178					;	R0 -2 -- E BOX STOPPED
   3179					;	CC-C SET
   3180					;
   3181					;
   3182					;	REGISTERS SAVED AND RESTORED BY EMT SERVICE
   3183					;
   3184					;-
   3185					;
   3186	007672	010546 			$DTEON::MOV	R5,-(SP)
   3187	007674	013700 	031356'			MOV	.PRDTE,R0	;FIND THE COMMON DTE20
   3188	007700	005001 				CLR	R1		;;;SET UP TO FIND PROCESSOR NUMBER
   3189	007702	005002 				CLR	R2		;;;START TRANSFER OF ABS WORD 0 OF EPT (MY PROCESSOR NUMBER
   3190	007704	012703 	031206'			MOV	#DEXTM3,R3	;;;SET UP ADDRESS TO STORE WORDS
   3191	007710					CALL	SWFED		;;;WAIT FOR EXAMINE/DEPOSIT
	007710	004737 	044200'			JSR	PC,SWFED
   3192	007714	103417 				BCS	1$		;;;E BOX STOP
   3193	007716	011304 				MOV	@R3,R4		;;;YES --FIND OFFSET TO MY R/W AREA
   3194	007720	113702 	031211'			MOVB	@#DEXTM2+1,R2	;;;FIND THE PROCESSOR NUMBER
   3195									;;; PROCESSOR NUMBER TO LOW ORDER BITS
   3196	007724	042702 	177760 			BIC	#177760,R2	;;;MASK OFF JUNK(0.-15. LEGAL)
   3197	007730	010237 	031372'			MOV	R2,PRMEMN	;;;SAVE PROCESSOR NUMBER
   3198	007734	005202 				INC	R2		;;;FIND COMMUNICATIONS VIRTUAL 2
   3199	007736	010237 	031370'			MOV	R2,COMBSE	;;;SAVE BASE OF COMMUNICATIONS AREA
   3200	007742	060402 				ADD	R4,R2		;;;ADD OFFSET TO BASE OF COMM AREA
   3201	007744	010237 	031374'			MOV	R2,DEPOF	;;;SET CORRECT OFFSETT
   3202	007750					CALL	SWFED		;;;WAIT FOR TRANSFER
	007750	004737 	044200'			JSR	PC,SWFED
   3203	007754	103537 			1$:	BCS	80$		;;; +++003
   3204	007756	013705 	031210'		2$:	MOV	@#DEXTM2,R5	;;;PICK UP THE NUMBER OF 8 TM BLOCKS
   3205	007762	042705 	177770 			BIC	#177770,R5	;;;FIND THE NUMBER OF 8 WORD BLOCKS IN MY AREA
   3206	007766	162705 	000002 			SUB	#2,R5		;;;ACCOUNT FOR MY GENERAL SECTION
   3207	007772	010246 				MOV	R2,-(SP)
   3208	007774	010546 				MOV	R5,-(SP)	;;;SAVE COUNT OF BLOCKS
   3209	007776				16$:				;;; +++002
   3210	007776	062766 	000020 	000002 		ADD	#FORPRO,2(SP)	;;;LOOK AT A COMMUNICATIONS AREA TO ANOTHER PROCESSOR
DMDTE	- DTE DIRECTIVES MODULE	MACRO M1108  16-DEC-77 11:28  PAGE 50-1
$DTEON -- TURN THE DTE20 ON

   3211	010004	016602 	000002 			MOV	2(SP),R2
   3212	010010					CALL	SWFED		;;;WAIT FOR TRANSFER
	010010	004737 	044200'			JSR	PC,SWFED
   3213	010014	103517 				BCS	80$		;;; +++003 E BOX STOPPED
   3214	010016	011304 				MOV	@R3,R4		;;;FIND PROCESSOR NUMBER
   3215	010020	012705 	031376'			MOV	#PROTBL,R5	;SET INITIAL POINTER
   3216	010024	042704 	177770 			BIC	#177770,R4	;;;MASK OFF JUNK
   3217	010030	001403 				BEQ	19$		;;;YES -- CONTINUE
   3218	010032	062705 	000012 		37$:	ADD	#5*2,R5		;NO -- LOOK AT NEXT ENTRY
   3219	010036	077403 				SOB	R4,37$		;TRY UNTIL ALL DONE
   3220	010040	013704 	031210'		19$:	MOV	@#DEXTM2,R4	;;;FIND NUMBER OF 8 WORD BLOCS
   3221	010044	042704 	177770 			BIC	#177770,R4	;;;MASK OFF POSSIBLE GARBAGE
   3222	010050	160416 				SUB	R4,@SP		;;;UPDATE COUNT OF BLOCKS
   3223	010052	005015 				CLR	@R5		;;;SET UP TO CLEAR TABLE IF NO DTE
   3224	010054	013704 	031212'			MOV	@#DEXTM1,R4	;;;PICK UP DTE NUMBER
   3225	010060	032704 	000004 			BIT	#4,R4		;;;DTE HERE?
   3226	010064	001423 				BEQ	20$		;;;NO -- DON'T ENTER IN TABLE
   3227	010066	000304 				SWAB	R4		;;;MAKE MOD 40 (8)
   3228	010070	006004 				ROR	R4
   3229	010072	006004 				ROR	R4
   3230	010074	006004 				ROR	R4
   3231	010076	042704 	177637 			BIC	#177637,R4	;;;MASKOFF JUNK
   3232	010102	062704 	174400 			ADD	#174400,R4	;;;POINT TO FIRST BLOCK OF DTE'S
   3233	010106	020437 	031356'			CMP	R4,.PRDTE	;;;PRIMARY DTE?
   3234	010112	001002 				BNE	10$		;;;NO -- DON'T SET TABLE POINTER
   3235	010114	010537 	031352'			MOV	R5,.PRADR	;;;SAVE TABLE OFFSET
   3236	010120	010415 			10$:	MOV	R4,@R5		;;;SET DTE ADDRESS IN TABLE
   3237	010122	012714 	037777 			MOV	#37777,@R4	 ;;;SET UP DELAY COUNTER
   3238	010126	012764 	000040 	000034 		MOV	#INTRON,STATD(R4) ;;;YES -- ENABLE INTERRUPT ON IT
   3239	010134	010265 	000002 		20$:	MOV	R2,EMYN(R5) 	;;;SET THE ADDRESS OF EXAMINE MY AREA FOR N
   3240									;;;MAKE ADDRESS OF THE ADDRESS OF DEPOSIT MY AREA FOR N
   3241	010140	010265 	000004 			MOV	R2,DMYN(R5) 	;;;STORE IT
   3242	010144	163765 	031374'	000004 		SUB	DEPOF,DMYN(R5) 	;;;RESTORE SUBRESS FOR EXAMINE OF THIS BLOCK
   3243	010152	062702 	000001 			ADD	#PROPNT-FORPRO,R2 ;;;READ POINTER TO HIS COMM AREA
   3244	010156					CALL	SWFED		;;;WAIT FOR EXAMINE/DEPOSIT
	010156	004737 	044200'			JSR	PC,SWFED
   3245	010162	103434 				BCS	80$		;;; +++003 E BOX STOPPED
   3246	010164	011302 				MOV	@R3,R2		;;;FIND THE EXAMINE ADDRESS
   3247	010166	063702 	031370'			ADD	COMBSE,R2	;;;ADD OFFSET TO COMMON AREA
   3248	010172	010265 	000006 			MOV	R2,EHSG(R5) 	;;;SET EHSG ADDRESS IN TABLE
   3249	010176	062702 	000020 			ADD	#FORPRO,R2	;;;POINT TO HIS FIRST TABLE FOR OTHER PROCESSORS
   3250	010202				50$:	CALL	SWFED		;;;WAIT FOR EXAMINE/DEPOSIT
	010202	004737 	044200'			JSR	PC,SWFED
   3251	010206	103422 				BCS	80$		;;; +++003
   3252	010210	123713 	031372'			CMPB	PRMEMN,@R3 	;;;SAME PROCESSOR NUMBER?
   3253	010214	001411 				BEQ	60$		;;;YES -- FOUND MY ENTRY
   3254	010216	013704 	031210'			MOV	@#DEXTM2,R4	;;;NO -- FIND NEXT ENTRY IN LIST
   3255	010222	042704 	177770 			BIC	#177770,R4	;;;IT IS IN 8 WORD INCREMENTS
   3256	010226	006304 				ASL	R4		;;;SO IT MUST BE SHIFTED LEFT 3 BITS
   3257	010230	006304 				ASL	R4		;;;
   3258	010232	006304 				ASL	R4		;;;
   3259	010234	060402 				ADD	R4,R2		;;;READ NEXT BLOCK
   3260	010236	000761 				BR	50$		;;;AND TRY AGAIN
   3261					;
   3262	010240	010265 	000010 		60$:	MOV	R2,EHSM(R5)	;;;STORE EHSM ADDRESS
   3263	010244	011605 				MOV	@SP,R5		;;;DONE ALL BLOCKS??
   3264	010246	101253 				BHI	16$		;;; +++002 NO -- TRY NEXT BLOCK
DMDTE	- DTE DIRECTIVES MODULE	MACRO M1108  16-DEC-77 11:28  PAGE 50-2
$DTEON -- TURN THE DTE20 ON

   3265	010250				70$:
   3266	010250					CALL	..DTP1		;;;START THE PRIMARY PROTOCOL TASK
	010250	004737 	044356'			JSR	PC,..DTP1
   3267	010254				80$:				;;; +++003
   3268	010254	012605 				MOV	(SP)+,R5	;;; +++003 RESTORE R5
   3269	010256	000137 	002774'			JMP	.DR.NS		;RETURN STATUS IN R0
DMDTE	- DTE DIRECTIVES MODULE	MACRO M1108  16-DEC-77 11:28  PAGE 51
$DPMYG -- DEPOSIT INTO MY GENERAL SECTION

   3271						.SBTTL	$DPMYG -- DEPOSIT INTO MY GENERAL SECTION
   3272					;+
   3273					;
   3274					;	$DPMYG -- DEPOSIT INTO MY GENERAL SECTION
   3275					;	WITH PROCESSOR N
   3276					;
   3277					;	ENTRY CONDITIONS:
   3278					;
   3279					;	R2 -- ADDRESS OF PDP-10 LOCATION TO TRANSFER  RELATIVE TO MY GEN REGION
   3280					;	R3 -- ADDRESS OF PDP-11 CORE ADDRESS TO WRITE FROM
   3281					;	$DPMYG
   3282					;
   3283					;	EXIT CONDITIONS:
   3284					;
   3285					;	R0 -- +1 TRANSFER COMPLETED
   3286					;	CC-C CLEAR -- TRANSFER COMPLETED
   3287					;
   3288					;	ERROR CONDITIONS:
   3289					;
   3290					;	CC-C SET
   3291					;
   3292					;	R0 -2  -- E BOX STOPPED
   3293					;	R0 -3 -- SECONDARY PROTOCOL IN USE
   3294					;
   3295					;
   3296					;	REGISTERS SAVED AND RESTORED BY EMT SERVICE
   3297					;-
   3298					;
   3299					;
   3300	010262	005001 			$DPMYG::CLR	R1
   3301	010264	052701 	010000 		DPCMN:	BIS	#DEP,R1		;;;SET DEPOSIT BIT IN ADDRESS WORD
   3302	010270	032737 	040000 	031114'	CMEDP:	BIT	#EF.PR1,.COMEF+2 ;;;PRIMARY PROTOCOL RUNNING?
   3303	010276	001407 				BEQ	DPMSEP		;;;NO -- ERROR
   3304	010300	005004 				CLR	R4		;;;NON PRIV EXAMINE
   3305	010302	011000 				MOV	@R0,R0		;;;FIND DTE20 ADDRESS
   3306	010304					CALL	SWFED		;;;WAIT FOR EXAMINE/DEPOSIT
	010304	004737 	044200'			JSR	PC,SWFED
   3307	010310	103401 				BCS	DPSEC		;;;ERROR -2
   3308	010312	104401 				TRAP	DR.01
   3309					;
   3310	010314	104776 			DPSEC:	TRAP	DE.02		;E BOX STOPPED
   3311					;
   3312	010316	104775 			DPMSEP:	TRAP	DE.03		;SECONDARY PROTOCOLIN USE
DMDTE	- DTE DIRECTIVES MODULE	MACRO M1108  16-DEC-77 11:28  PAGE 52
$EXMYG -- EXAMINE MY GENERAL SECTION

   3314						.SBTTL	$EXMYG -- EXAMINE MY GENERAL SECTION
   3315					;+
   3316					;
   3317					;	$EXMYG -- EXAMINE MY (PDP-11) GENERAL SECTION
   3318					;
   3319					;	ENTRY CONDITIONS:
   3320					;
   3321					;	R2 -- ADDRESS OF A PDP10 ADDRESS TO EXAMINE RELATIVE TO THE BASE OF MY GENERAL SECTION
   3322					;	R3 -- ADDRESS OF THE THREE WORDD BLOCK TO TRANSFER TO
   3323					;	$EXMYG
   3324					;
   3325					;	EXIT CONDITIONS:
   3326					;
   3327					;	R0 -- +1 SUCCESS
   3328					;	CC-C CLEAR -- SUCCESS
   3329					;
   3330					;	ERROR CONDITIONS:
   3331					;
   3332					;	CC-C SET
   3333					;
   3334					;	R0 -2 -- E BOX STOPPED
   3335					;	R0 -3 -- SECONDARY PROTOCOL IN USE
   3336					;
   3337					;
   3338					;
   3339					;	REGISTERS SAVED AND RESTORED BY EMT SERVICE
   3340					;-
   3341					;
   3342	010320	063702 	031374'		$EXMYG::ADD	DEPOF,R2	;ADD DEPOSIT OFFSET TO EXAMINE ADDRESS
   3343	010324	005001 			EXCMN:	CLR	R1		;;;CLEAR HIGH ORDER 10 ADDRESS (FORCES EXAMINE)
   3344	010326	000760 				BR	CMEDP
DMDTE	- DTE DIRECTIVES MODULE	MACRO M1108  16-DEC-77 11:28  PAGE 53
$EXMYN -- EXAMINE MY SECTION FOR PROCESSOR N

   3346						.SBTTL	$EXMYN -- EXAMINE MY SECTION FOR PROCESSOR N
   3347					;+
   3348					;
   3349					;	$EXMYN -- EXAMINE MY SECTION FOR COMMUNICATING WITH PROCESSOR N
   3350					;
   3351					;	ENTRY CONDITIONS:
   3352					;
   3353					;	R1 -- CPU NUMBER
   3354					;	R2 -- ADDRESS WORD WITHIN REGION TO EXAMINE
   3355					;	R3 -- PDP-11 CORE ADDRESS
   3356					;	$EXMYN
   3357					;
   3358					;	EXIT CONDITIONS:
   3359					;
   3360					;	R0 -- +1 - SUCCESS
   3361					;	CC-C CLEAR -- SUCCESS
   3362					;
   3363					;	ERROR CONDITIONS:
   3364					;
   3365					;	CC-C SET
   3366					;	R0 -1 -- ILLEGAL CPU NUMBER
   3367					;	R0 -2 -- E BOX STOPPED
   3368					;	R0 -3 -- SECONDARY PROTOCOL IN USE
   3369					;
   3370					;
   3371					;
   3372					;	REGISTERS SAVED AND RESTORED BY EMT SERVICE
   3373					;-
   3374					;
   3375	010330	066002 	000002 		$EXMYN::ADD	EMYN(R0),R2	;SET CALCULATED ADDRESS TO COMM AREA
   3376	010334	000773 				BR	EXCMN		;GO TO COMMON AREA
DMDTE	- DTE DIRECTIVES MODULE	MACRO M1108  16-DEC-77 11:28  PAGE 54
$DPMYN -- DEPOSIT INTO MY SECTION FOR COMM WITH PROCESSOR N

   3378						.SBTTL	$DPMYN -- DEPOSIT INTO MY SECTION FOR COMM WITH PROCESSOR N
   3379					;+
   3380					;
   3381					;	$DPMYN --  DEPOSET INTO MY SECTION FOR COMMUNICATING WITH PROCESSOR N
   3382					;
   3383					;	ENTRY CONDITIONS:
   3384					;
   3385					;	R1 -- CPU NUMBER
   3386					;	R2 -- ADDRESS WORD WITHIN REGION TO DEPOSIT
   3387					;	R3 -- ADDRESS IN PDP-11 TO TRANSFER FROM
   3388					;	$DPMYN
   3389					;
   3390					;	EXIT CONDITIONS:
   3391					;
   3392					;	R0 -- +1 -SUCCESS
   3393					;	CC-C CLEAR - SUCCESS
   3394					;
   3395					;	ERROR CONDITIONS:
   3396					;
   3397					;	CC-C SET
   3398					;	R0 -1 -- ILLEGAL CPU NUMBER
   3399					;	R0 -2 -- E BOX STOPPED
   3400					;	R0 -3 -- SECONDARY PROTOCOL IN USE
   3401					;
   3402					;
   3403					;
   3404					;	REGISTERS SAVED AND RESTORED BY EMT SERVICE
   3405					;-
   3406					;
   3407	010336	066002 	000004 		$DPMYN::ADD	DMYN(R0),R2	;FIND CORRECT ADDRESS IN COMMON AREA
   3408	010342	000750 				BR	DPCMN		;DEPOSIT IN COMMON AREA
DMDTE	- DTE DIRECTIVES MODULE	MACRO M1108  16-DEC-77 11:28  PAGE 55
$EXHSG -- EXAMINE HIS GENERAL COMMUNICATION SECTION

   3410						.SBTTL	$EXHSG -- EXAMINE HIS GENERAL COMMUNICATION SECTION
   3411					;+
   3412					;
   3413					;	$EXHSG -- EXAMINE HIS GENERAL COMMUNICATION SECTION
   3414					;
   3415					;	ENTRY CONDITIONS:
   3416					;
   3417					;	R1 -- CPU NUMBER
   3418					;	R2 -- WORD NUMBER IN HIS GENERAL SECTION
   3419					;	R3 -- ADDRESS TO STORE EXAMINE
   3420					;	$EXHSG
   3421					;
   3422					;	EXIT CONDITIONS:
   3423					;
   3424					;	R0 -- +1 - SUCCESS
   3425					;	CC-C CLEAR - SUCCESS
   3426					;
   3427					;	ERROR CONDITIONS:
   3428					;
   3429					;	R0 -1 -- ILLEGAL CPU NUMBER
   3430					;	R0 -2 -- EBOX STOPPED
   3431					;	R0 -3  -- SECONDARY PROTOCOL IN USE
   3432					;
   3433					;
   3434					;	CC-C SET
   3435					;
   3436					;
   3437					;	REGISTERS SAVED AND RESTORED BY EMT SERVICE
   3438					;-
   3439					;
   3440					;
   3441	010344	066002 	000006 		$EXHSG::ADD	EHSG(R0),R2	;FIND OFFSET TO COMMUNICATIONS AREA
   3442	010350	000765 				BR	EXCMN		;GO TO COMMON EXAMINE
DMDTE	- DTE DIRECTIVES MODULE	MACRO M1108  16-DEC-77 11:28  PAGE 56
$EXHSM -- EXAMINE HIS SECTION FOR COMMUNICATING WITH ME

   3444						.SBTTL	$EXHSM -- EXAMINE HIS SECTION FOR COMMUNICATING WITH ME
   3445					;+
   3446					;
   3447					;	$EXHSM -- EXAMINE HIS SECTION FOR COMMUNICATING WITH ME
   3448					;
   3449					;	ENTRY CONDITIONS:
   3450					;
   3451					;	R1 -- CPU NUMBER
   3452					;	R2 -- ADDRESS OF WORD WITHIN REGION TO EXAMINE
   3453					;	R3 -- ADDRESS TO STORE PDP-10 WORD
   3454					;	$EXHSM
   3455					;
   3456					;	EXIT CONDITIONS:
   3457					;
   3458					;	R0 -- +1 - SUCCESS
   3459					;	CC-C CLEAR - SUCCESS
   3460					;
   3461					;	ERROR CONDITIONS:
   3462					;
   3463					;	CC-C SET
   3464					;	R0 -1 -- ILLEGAL CPU NUMBER
   3465					;	R0 -2 -- E BOX STOPPED
   3466					;	R0 -3 -- SECONDARY PROTOCOL IN USE
   3467					;
   3468					;
   3469					;
   3470					;	REGISTERS SAVED AND RESTORED BY EMT SERVICE
   3471					;-
   3472					;
   3473	010352	066002 	000010 		$EXHSM::ADD	EHSM(R0),R2	;FIND OFFSET INTO COMM AREA
   3474	010356	000762 				BR	EXCMN		;GO TO EXAMINE
DMDTE	- DTE DIRECTIVES MODULE	MACRO M1108  16-DEC-77 11:28  PAGE 57
$KLDFX -- EXECUTE A DIAGNOSTIC FUNCTION

   3476						.SBTTL	$KLDFX -- EXECUTE A DIAGNOSTIC FUNCTION
   3477					;
   3478					;+
   3479					;
   3480					;	$KLDFX -- EXECUTE A DIAGNOSTIC FUNCTION
   3481					;	THIS FUNCTION WILL LOAD AND READ THE EBUS.
   3482					;	IT DOES A DATA SEND OPERATION IF IT IS A WRITE FUNCTION
   3483					;	AND IT ALWAYS RETURNS THE STATUS OF THE DIAGNOSTIC REGISTERS
   3484					;	AND EBUS (DEXWD1-3) AFTER EACH FUNCTION.
   3485					;
   3486					;	ENTRY CONDITIONS:
   3487					;
   3488					;	R0 -- FUNCTION TO BE EXECUTED (BITS 15-9)
   3489					;	R0 -- IF BIT 8 IS SET IT IS A LOAD FUNCTION
   3490					;	R1 -- DTE20 NUMBER (CURRENT UNUSED)
   3491					;	R3 -- ADDRESS OF FOUR WORD BLOCK TO STORE DIAG1-3
   3492					;	R2 -- PDP11 6 WORD BLOCK THE FIRST 3 WORDS ARE
   3493					;	USED TO STORE THE CONTENTS IN THE E BUS THE SECOND 3 WORDS
   3494					;	ARE USED TO STORE THE RESULTS OF THE DIAGNOSTIC FUNCTION E BUS
   3495					;	CALL	$KLDFX
   3496					;
   3497					;	EXIT CONDITIONS
   3498					;
   3499					;	CC-C CLEAR
   3500					;	R0 -- +1 -- SUCCESS
   3501					;
   3502					;	ERROR CONDITIONS:
   3503					;
   3504					;	-2 -- FUNCTION FAILED
   3505					;
   3506					;	REGISTERS SAVED AND RESTORED BY EMT SERVICE
   3507					;
   3508					;-
   3509					;
   3510	010360				$KLDFR:	CALL	FNDDTE		;FIND DTE20
	010360	004737 	010762'			JSR	PC,FNDDTE
   3511	010364	012600 				MOV	(SP)+,R0	;RESTORE FUNCTION
   3512	010366					CALL	CESCHK		;RESET DTE-20 IF CLOCK ERROR STOP
	010366	004737 	011014'			JSR	PC,CESCHK
   3513	010372	042700 	000777 			BIC	#777,R0		;MASK OFF FUNCTION CODE
   3514	010376	052700 	000211 			BIS	#DIKL10!DCOMST!DFUNC,R0 ;SET DIAGNOSTIC FUNCTION START BITS
   3515	010402	062702 	000006 			ADD	#6,R2		;DON'T DO THE E BUS WRITE
   3516	010406	010061 	000030 		KLCST:	MOV	R0,DAG1(R1)	;START FUNCTION
   3517	010412	012737 	003000 	031204'		MOV	#3000,DEXST	;TIME OUT FUNCTION
   3518	010420	032761 	000001 	000030 	10$:	BIT	#DCOMST,DAG1(R1) ;WAIT FOR THE FUNCTION TO COMPLETE
   3519	010426	001404 				BEQ	22$
   3520	010430	005337 	031204'			DEC	DEXST		;COUNT DOWN
   3521	010434	100371 				BPL	10$
   3522	010436	104776 				TRAP	DE.02		;TRAP ERROR
   3523					;
   3524	010440				22$:	MTPS	DXWD3(R1),(R2)+	;STORE THE FOUND WORD IN PDP11
	010440	016122 	000002 			MOV	DXWD3(R1),(R2)+
   3525	010444					MTPS	DXWD2(R1),(R2)+
	010444	016122 	000004 			MOV	DXWD2(R1),(R2)+
   3526	010450					MTPS	DXWD1(R1),(R2)+
	010450	016122 	000006 			MOV	DXWD1(R1),(R2)+
   3527	010454	005703 				TST	R3		;ANYWHERE TO STORE?
DMDTE	- DTE DIRECTIVES MODULE	MACRO M1108  16-DEC-77 11:28  PAGE 57-1
$KLDFX -- EXECUTE A DIAGNOSTIC FUNCTION

   3528	010456	001404 				BEQ	20$		;NO -- FORGET IT
   3529	010460					MTPS	(R4)+,(R3)+	;STORE DIAGNOSITC REGISTERS
	010460	012423 				MOV	(R4)+,(R3)+
   3530	010462					MTPS	(R4)+,(R3)+
	010462	012423 				MOV	(R4)+,(R3)+
   3531	010464					MTPS	(R4)+,(R3)+
	010464	012423 				MOV	(R4)+,(R3)+
   3532	010466					MTPS	(R4)+,(R3)+
	010466	012423 				MOV	(R4)+,(R3)+
   3533	010470	104401 			20$:	TRAP	DR.01		;SET OK RETURN TO CALLER
   3534					;
   3535	010472				$KLDFX::CALL	FNDDTE		;FIND DTE20
	010472	004737 	010762'			JSR	PC,FNDDTE
   3536	010476	012600 				MOV	(SP)+,R0	;FIND FUNCTION BITS
   3537	010500					CALL	CESCHK		;RESET DTE-20 IF CLOCK ERROR STOP
	010500	004737 	011014'			JSR	PC,CESCHK
   3538	010504	042700 	000777 			BIC	#777,R0		;CLEAR OFF LOW ORDER FUNCTION CODE
   3539	010510	052700 	000201 			BIS	#DCOMST!DFUNC,R0 ;SET DIAG FUNCTION EXECUTE
   3540	010514	000411 				BR	$KLDFC		;ENTER COMMON CODE
   3541					;
   3542	010516				$KLDFW::CALL	FNDDTE		;FIND DTE20 ADDRESS
	010516	004737 	010762'			JSR	PC,FNDDTE
   3543	010522	012600 				MOV	(SP)+,R0	;FIND FUNCTION BITS
   3544	010524					CALL	CESCHK		;RESET DTE-20 IF CLOCK ERROR STOP
	010524	004737 	011014'			JSR	PC,CESCHK
   3545	010530	042700 	000777 			BIC	#777,R0		;MASK OFF LOW ORDER FUNCTION CODE
   3546	010534	052700 	000215 			BIS	#DCOMST!DSEND!DIKL10!DFUNC,R0
   3547	010540				$KLDFC::MFPS	(R2)+,DXWD3(R1)	;STORE THE OUTPUT FOR THE EBUS
	010540	012261 	000002 			MOV	(R2)+,DXWD3(R1)
   3548	010544					MFPS	(R2)+,DXWD2(R1)
	010544	012261 	000004 			MOV	(R2)+,DXWD2(R1)
   3549	010550					MFPS	(R2)+,DXWD1(R1)
	010550	012261 	000006 			MOV	(R2)+,DXWD1(R1)
   3550	010554	032700 	000004 			BIT	#DSEND,R0	;DIAG WRITE?
   3551	010560	001712 				BEQ	KLCST		;GO TO COMMON OUTPUT EQOUTINE
   3552					;
   3553	010562	012761 	000014 	000030 	10$:	MOV	#DIKL10!DSEND,DAG1(R1)	;WRITE
   3554	010570	012761 	010000 	000010 		MOV	#DEP,TNAD1(R1)	;SIMULATE DEPOSIT
   3555	010576	005061 	000012 			CLR	TNAD2(R1)
   3556	010602	010046 			20$:	MOV	R0,-(SP)	;SAVE R0
   3557	010604	010100 				MOV	R1,R0
   3558	010606					CALL	WFED		;WAIT FOR DEX DONE
	010606	004737 	044012'			JSR	PC,WFED
   3559	010612	012600 				MOV	(SP)+,R0
   3560	010614	000674 				BR	KLCST
DMDTE	- DTE DIRECTIVES MODULE	MACRO M1108  16-DEC-77 11:28  PAGE 58
$PRVEX -- PRIVILEDGED EXAMINE

   3562						.SBTTL	$PRVEX -- PRIVILEDGED EXAMINE
   3563					;
   3564					;+
   3565					;
   3566					;	$PRVEX -- PRIVILEDGED EXAMINE OF THE KL10 MEMORY
   3567					;
   3568					;
   3569					;	ENTRY CONDITIONS:
   3570					;
   3571					;	R0 -- FUNCTION CODE PLUS HIGN ORDER BYTE OF SECOND WORD OF DPB
   3572					;	R1 -- WORD 5 OF DPB
   3573					;	R2 -- WORD 3 OF DPB
   3574					;	R3 -- WORD 4 OF DPB
   3575					;	R4 -- ADDRESS OF DPB
   3576					;	R5 -- ATL NODE ADDRESS OF ISSUING TASK
   3577					;
   3578					;	JMP	$PRVEX
   3579					;
   3580					;	ERROR CONDITIONS:
   3581					;
   3582					;
   3583					;	REGISTERS SAVED AND RESTORED BY EMT SERVICE
   3584					;-
   3585					;
   3586	010616				$PRVEX::
   3587	010616					CALL	FNDDTE		;FIND DTE20 ADDRESS
	010616	004737 	010762'			JSR	PC,FNDDTE
   3588	010622					MFPS	2(R2),R1	;SET UP THE INTERNAL ADDRESS 2(PDP11 ADDRESS
	010622	016201 	000002 			MOV	2(R2),R1
   3589	010626					MFPS	@R2,R2		;LOWER ORDER HALF
	010626	011202 				MOV	@R2,R2
   3590	010630	052601 				BIS	(SP)+,R1	;SET HIGH ORDER OF PRIVILEDGE
   3591	010632	052701 	004000 			BIS	#PRTOFF,R1	;SET PRIVILEDGED EXAMINE
   3592	010636	042701 	010000 			BIC	#DEP,R1		;INSURE THAT IT IS AN EXAMINE
   3593	010642				PRVCM:	CALL	SWFED		;START-WAITFOR EXAMINE/DEPOSIT
	010642	004737 	044200'			JSR	PC,SWFED
   3594	010646	103401 				BCS	20$		;E BOX STOPPED ERROR
   3595	010650	104401 				TRAP	DR.01		;MUST BE OK -- RETURN TO USER
   3596					;
   3597	010652	104776 			20$:	TRAP	DE.02		;RETURN EBOX STOPPED ERROR
DMDTE	- DTE DIRECTIVES MODULE	MACRO M1108  16-DEC-77 11:28  PAGE 59
$PRVDP -- PRIVILEDGED DEPOSIT

   3599						.SBTTL	$PRVDP -- PRIVILEDGED DEPOSIT
   3600					;
   3601					;+
   3602					;
   3603					;	$PRVDP -- PRIVILEDGED DEPOSIT OF THE KL10 MEMORY
   3604					;
   3605					;
   3606					;	ENTRY CONDITIONS:
   3607					;
   3608					;	R0 -- FUNCTION CODE PLUS HIGN ORDER BYTE OF SECOND WORD OF DPB
   3609					;	R1 -- WORD 5 OF DPB
   3610					;	R2 -- WORD 3 OF DPB
   3611					;	R3 -- WORD 4 OF DPB
   3612					;	R4 -- ADDRESS OF DPB
   3613					;	R5 -- ATL NODE ADDRESS OF ISSUING TASK
   3614					;
   3615					;	JMP	$PRVDP
   3616					;
   3617					;	ERROR CONDITIONS:
   3618					;
   3619					;
   3620					;	REGISTERS SAVED AND RESTORED BY EMT SERVICE
   3621					;-
   3622					;
   3623	010654				$PRVDP::
   3624	010654					CALL	FNDDTE		;FIND DTE20 ADDRESS
	010654	004737 	010762'			JSR	PC,FNDDTE
   3625	010660					MFPS	2(R2),R1	;SET UP THE INTERNAL ADDRESS 2(PDP11 ADDRESS
	010660	016201 	000002 			MOV	2(R2),R1
   3626	010664					MFPS	@R2,R2		;LOWER ORDER HALF
	010664	011202 				MOV	@R2,R2
   3627	010666	052601 				BIS	(SP)+,R1	;SET HIGH ORDER OF PRIVILEDGE
   3628	010670	052701 	014000 			BIS	#PRTOFF!DEP,R1	;SET PRIVILEDGED DEPOSIT
   3629	010674	000762 				BR	PRVCM
DMDTE	- DTE DIRECTIVES MODULE	MACRO M1108  16-DEC-77 11:28  PAGE 60
$RWDRG -- READ/WRITE DIAGNOSTIC REGISTER

   3631						.SBTTL	$RWDRG -- READ/WRITE DIAGNOSTIC REGISTER
   3632					;
   3633					;+
   3634					;
   3635					;	$RWDRG -- PRIVILEDGED READ/WRITE OF DIAGNOSTIC DTE20 REGISTERS
   3636					;
   3637					;
   3638					;	ENTRY CONDITIONS:
   3639					;
   3640					;	R0 -- FUNCTION CODE PLUS HIGN ORDER BYTE OF SECOND WORD OF DPB
   3641					;	R1 -- WORD 5 OF DPB
   3642					;	R2 -- WORD 3 OF DPB
   3643					;	R3 -- WORD 4 OF DPB
   3644					;	R4 -- ADDRESS OF DPB
   3645					;	R5 -- ATL NODE ADDRESS OF ISSUING TASK
   3646					;
   3647					;	JMP	$RWDRG
   3648					;
   3649					;	ERROR CONDITIONS:
   3650					;
   3651					;
   3652					;	REGISTERS SAVED AND RESTORED BY EMT SERVICE
   3653					;-
   3654					;
   3655	010676				$RWDRG::CALL	FNDDTE		;FIND DTE20
	010676	004737 	010762'			JSR	PC,FNDDTE
   3656	010702	000316 				SWAB	@SP		;FIND THE REGISTER NUMBER
   3657	010704	062601 				ADD	(SP)+,R1	;MAKE EXTERNAL PAGE OFFSET
   3658	010706	005702 				TST	R2		;IS IT WRITE?
   3659	010710	001402 				BEQ	10$		;NO -- DON'T SET IT
   3660	010712					MFPS	@R2,DAG1(R1)	;YES -- SET REGISTER
	010712	011261 	000030 			MOV	@R2,DAG1(R1)
   3661	010716	005703 			10$:	TST	R3		;RETURN ADDRESS SPECIFIED?
   3662	010720	001402 				BEQ	20$		;NO -- THEN RETURN ALL OK
   3663	010722					MTPS	DAG1(R1),@R3	;SET IN USER SPACE
	010722	016113 	000030 			MOV	DAG1(R1),@R3
   3664	010726	104401 			20$:	TRAP	DR.01		;MUST BE OK -- RETURN TO USER
DMDTE	- DTE DIRECTIVES MODULE	MACRO M1108  16-DEC-77 11:28  PAGE 61
FNDCPU -- INTERNAL SUBROUTINE FIND THE DTE NUMBER

   3666						.SBTTL	FNDCPU -- INTERNAL SUBROUTINE FIND THE DTE NUMBER
   3667					;
   3668					;	FNDCPU -- FIND THE CPU NUMBER AND POINT TO IT'S AREA
   3669					;
   3670					;	ENTRY CONDITIONS:
   3671					;
   3672					;	R1 -- CPU NUMBER
   3673					;	CALL	FNDCPU
   3674					;
   3675					;	EXIT CONDITIONS:
   3676					;
   3677					;	R0 -- POINTS TO BLOCK (HOPEFULLY ALWAYS POSITIVE NUMBER BUT
   3678					;		CC-C CLEAR INDICATES SUCCESS
   3679					;
   3680					;	CC-C CLEAR
   3681					;
   3682					;	ERROR CONDITIONS:
   3683					;
   3684					;	R0 -- -2 -- ILLEGAL CPU NUMBER (CPU # .GT. 16.)
   3685					;	R0 -- -3 -- SECONDARY PROTOCOL IN USE
   3686					;	CC-C SET
   3687					;
   3688					;
   3689	010730	012700 	031376'		FNDCPU:	MOV	#PROTBL,R0	;POINT TO BEGINNING OF TABLE
   3690									;UPDATE OF THE KEEPALIVE COUNT IS NOT NECESSARY
   3691	010734	010146 				MOV	R1,-(SP)	;SAVE R1
   3692	010736	001406 				BEQ	30$		;COMPLETE NO MORE CHECKS NECESSARY
   3693	010740	032701 	177760 			BIT	#177760,R1	;CHECK TO SEE IF THE NUMBER PASSED IS 0-16
   3694	010744	001005 				BNE	40$		;NO -- MUST BE OUTSIDE LEGAL RANGE ERROR
   3695	010746	062700 	000012 		10$:	ADD	#5.*2,R0	;POINT TO NEXT CPU BLOCK
   3696	010752	077103 				SOB	R1,10$		;LOOK AT NEXT BLOCK
   3697					;
   3698	010754	012601 			30$:	MOV	(SP)+,R1	;RESTORE REGISTER
   3699	010756					RETURN			;RETURN WITH STATUS IN R0
	010756	000207 				RTS	PC
   3700					;
   3701	010760	104776 			40$:	TRAP	DE.02		;RETURN FAILURE -- ILLEGAL CPU NUMBER
   3702									;SET CC-C TO INDICATE FAILURE AND R0 -1
DMDTE	- DTE DIRECTIVES MODULE	MACRO M1108  16-DEC-77 11:28  PAGE 62
FNDDTE -- INTERNAL SUBROUTINE TO FIND THE DTE20

   3704						.SBTTL	FNDDTE -- INTERNAL SUBROUTINE TO FIND THE DTE20
   3705					;
   3706					;	FNDDTE -- FIND THE DTE20 ADDRESS
   3707					;
   3708					;	ENTRY CONDITIONS:
   3709					;
   3710					;	R1 -- DTE20 NUMBER
   3711					;
   3712					;	CALL	FNDDTE
   3713					;
   3714					;	EXIT CONDITIONS:
   3715					;
   3716					;	R0 -- ADDRESS OF DTE20
   3717					;	R1 -- ADDRESS OF DTE20
   3718					;
   3719					;
   3720	010762	005301 			FNDDTE:	DEC	R1
   3721	010764	100410 				BMI	20$		;IF MINUS IT IS PRIV ONE
   3722	010766	006301 				ASL	R1		;FIND ADDRESS
   3723	010770	006301 				ASL	R1
   3724	010772	006301 				ASL	R1
   3725	010774	006301 				ASL	R1
   3726	010776	062701 	174400 			ADD	#174400,R1
   3727	011002	010100 			10$:	MOV	R1,R0		;TO BOTH
   3728	011004					RETURN			;RETURN TO CALLER
	011004	000207 				RTS	PC
   3729	011006	013701 	031356'		20$:	MOV	.PRDTE,R1	;SET UP TO POINT TO PRIV DTE
   3730	011012	000773 				BR	10$
DMDTE	- DTE DIRECTIVES MODULE	MACRO M1108  16-DEC-77 11:28  PAGE 63
CESCHK -- CHECK FOR CLOCK ERROR STOP

   3732						.SBTTL	CESCHK -- CHECK FOR CLOCK ERROR STOP
   3733					;
   3734					;	CESCHK -- CHECK FOR CLOCK ERROR STOP
   3735					;
   3736					;	ENTRY CONDITIONS:
   3737					;
   3738					;	R1 -- ADDRESS OF CURRENT DTE-20
   3739					;
   3740					;	NO REGISTERS MODIFIED
   3741					;
   3742	011014				CESCHK:
   3743	011014	005061 	000030 			CLR	DAG1(R1)	;CLEAR ALL FLAGS
   3744	011020	032761 	004000 	000030 		BIT	#DS04,DAG1(R1)	;CLOCK ERROR STOP UP?
   3745	011026	001403 				BEQ	10$		;NO-- JUST RETURN
   3746	011030	012761 	000100 	000032 		MOV	#DRESET,DAG2(R1) ;YES-- REWSET DTE-20
   3747	011036				10$:
   3748	011036					RETURN			;FROM CESCHK
	011036	000207 				RTS	PC
   3749						.TITLE	DMASS	- "ASSIGN LUN" DIRECTIVE MODULE
   3750	011040					IDENT$	1,0
						.IDENT	/001000/
   3751					;
   3752					;                             COPYRIGHT (C) 1975, 1978 BY
   3753					;                     DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
   3754					;
   3755					;       THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE  USED  AND  COPIED
   3756					;       ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
   3757					;       OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR ANY OTHER COPIES THERE-
   3758					;       OF  MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
   3759					;       NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
   3760					;
   3761					;       THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT
   3762					;       NOTICE  AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
   3763					;       CORPORATION.
   3764					;
   3765					;       DIGITAL ASSUMES NO RESPONSIBILITY FOR THE  USE  OR  RELIABILITY  OF  ITS
   3766					;       SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
   3767					;
   3768					;		MODULE: "ASSIGN LUN" DIRECTIVE
   3769					;
   3770					;		VERSION: 01-00
   3771					;
   3772					;		AUTHOR: R. MCLEAN
   3773					;
   3774					;		DATE: 19 JUL 75
   3775					;
   3776					;
   3777					;	THIS MODULE CONTAINS:
   3778					;
   3779					;	1 -- CODE TO SERVICE THE "ASSIGN LUN" DIRECTIVE.
   3780					;
   3781					;	MACRO DEFINITIONS
   3782					;
   3784						.MCALL	CALL,RETURN
   3785						.MCALL	MFPI,MFPS
DMASS	- "ASSIGN LUN" DIRECTIV	MACRO M1108  16-DEC-77 11:28  PAGE 64
DIRECTIVE -- ASSIGN LUN

   3788						.SBTTL	DIRECTIVE -- ASSIGN LUN
   3789					;+
   3790					; THE "ASSIGN LUN" DIRECTIVE
   3791					;
   3792					; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO ASSIGN A LOGICAL UNIT NUMBER (LUN)
   3793					; TO A PHYSICAL DEVICE-UNIT.
   3794					;
   3795					; A FOUR-WORD DPB OF THE FOLLOWING FORMAT IS USED TO ASSIGN A LUN
   3796					; TO A PHYSICAL DEVICE:
   3797					;
   3798					;	WD. 00 -- DIC (07.) & DPB SIZE (4.),
   3799					;	WD. 01 -- LOGICAL UNIT NUMBER,
   3800					;	WD. 02 -- PHYSICAL DEVICE NAME,
   3801					;	WD. 03 -- PHYSICAL DEVICE UNIT NUMBER.
   3802					;
   3803					; A TWO-WORD DPB OF THE FOLLOWING FORMAT IS USED TO DEASSIGN (ASSIGN
   3804					; TO "NONE") A LUN:
   3805					;
   3806					;	WD. 00 -- DIC (07.) & DPB SIZE (2.),
   3807					;	WD. 01 -- LOGICAL UNIT NUMBER.
   3808					;
   3809					; THE FOLLOWING STATUS IS RETURNED:
   3810					;
   3811					; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE STATUS
   3812					; OF ONE (+1).
   3813					;
   3814					; CC-C SET TO INDICATE REJECTION, AND A DIRECTIVE STATUS OF:
   3815					;
   3816					;	-90 -- LUN USAGE INTERLOCKED (VIZ., FILE OPEN),
   3817					;	-92 -- INVALID DEVICE AND/OR UNIT,
   3818					;	-96 -- INVALID LOGICAL UNIT NUMBER,
   3819					;	-98 -- PART OF DPB IS OUT OF ISSUING TASK'S ADDRESS SPACE,
   3820					;	-99 -- DIC OR DPB SIZE IS INVALID.
   3821					;-
   3822					; CONTROL IS TRANSFERRED HERE (BY DIRECTIVE DISPATCH ROUTINE) WITH THE
   3823					; DIRECTIVE ISSUING TASK'S PS, PC, & R1-R5 PUSHED ONTO THE
   3824					;  STACK, AND R0-R5 SET AS FOLLOWS:
   3825					;	R0 -- PC OF EMT INSTRUCTION
   3826					;	R1 -- POINTER TO WORD FOLLOWING DIC & SIZE
   3827					;	R2 -- DPB SIZE
   3828					;	R3 -- DIC (DIRECTIVE IDENTIFICATION CODE)
   3829					;	R5 -- ATL NODE ADDRESS OF ISSUING TASK ('.CRTSK')
   3830					;
   3831					; R5 IS LEFT UNALTERED (I.E. POINTING TO ISSUING TASK'S ATL NODE).
   3832					;
   3833					;
   3834					; LUN ASSIGNMENT -- CHECK FOR VALIDITY OF LUN & DEVICE-UNIT AND ASSIGN
   3835					; IF NOT INTERLOCKED.
   3836					;
   3837	011040				.D.ASS::MFPI	@R1		;VALIDATE LUN, AND SETUP  TO ACCESS TASK
	011040	011146 				MOV	@R1,-(SP)
   3838									;HEADER, BY PUSHING LUN AND CALLING
   3839									;SUBROUTINE TO CONVERT & VERIFY.
   3840	011042					CALL	.VCLUN		;IF INVALID LUN, RETURN STS=-96.
	011042	004737 	005172'			JSR	PC,.VCLUN
   3841	011046	010416 				MOV	R4,@SP		;PUD ENTRY ADR ON STACK REPLACED BY LUT ADDRESS
   3842					;
DMASS	- "ASSIGN LUN" DIRECTIV	MACRO M1108  16-DEC-77 11:28  PAGE 64-1
DIRECTIVE -- ASSIGN LUN

   3843	011050	005003 				CLR	R3		;SET UP INCASE OF DEASSIGNMENT
   3844	011052	020227 	000002 			CMP	R2,#2		;IS THIS LUN DEASSIGNMENT?
   3845	011056	001422 				BEQ	60$		;YES -- DEASSIGN LUN
   3851					;
   3852	011060				45$:	MFPI	(R1)+		;PUSH LUN, AND LEAVE R1 POINTING TO DEV NAME
	011060	012146 				MOV	(R1)+,-(SP)
   3853					;
   3854	011062					MFPS	(R1)+,R4	;SET R4 TO DEVICE NAME.
	011062	012104 				MOV	(R1)+,R4
   3855									;R0 CONTAINS DEVICE UNIT NUMBER
   3856	011064					MFPS	@R1,R0
	011064	011100 				MOV	@R1,R0
   3857					;
   3858					; SCAN PUD FOR DEVICE-UNIT IN R4-R0.
   3859					;
   3860	011066	012703 	037202'			MOV	#.PUDBA,R3	;USE R3 TO SCAN PUD
   3861	011072				20$:
   3862	011072	020327 	040262'			CMP	R3,#.PUDEA	;END OF PUD?
   3863	011076	001001 				BNE	30$
   3864	011100	104644 				TRAP	DE.92		;YES -- DEVICE-UNIT NOT FOUND
   3865	011102	021304 			30$:	CMP	@R3,R4		;NO -- DEVICE NAME MATCH?
   3866	011104	001003 				BNE	40$		;NO -- CHECK NEXT ENTRY
   3867	011106	126300 	000002 			CMPB	U.UN(R3),R0	;YES -- UNIT NUMBER MATCH?
   3868	011112	001403 				BEQ	50$		;YES -- DEVICE-UNIT FOUND
   3869									;NO -- CHECK NEXT ENTRY
   3870	011114				40$:
   3871	011114	062703 	000050 			ADD	#U.SZ,R3	;ADVANCE R3 TO NEXT PUD ENTRY (IF ANY), AND
   3872	011120	000764 				BR	20$		;CHECK FOR DEVICE-UNIT MATCH.
   3873					;
   3874					; INDICATED DEVICE-UNIT FOUND IN PUD -- PUD ENTRY ADDRESS IS IN R3
   3875					;
   3876	011122	012600 			50$:	MOV	(SP)+,R0	;SET R0 TO LUN
   3877					;
   3878					; R3 CONTAINS A VALUE (PUD ENTRY ADDRESS OR ZERO) TO BE SET IN THE
   3879					; THE FIRST WORD OF THE LUT PER LUN IN R0.
   3880					;
   3881	011124				60$:
   3882	011124	006300 				ASL	R0		;SET R0 TO FOUR TIMES THE LUN
   3883	011126	006300 				ASL	R0
   3884	011130	062600 				ADD	(SP)+,R0	;POINT TO LUT AS SAVED
   3885					;
   3886	011132	005740 				TST	-(R0)		;IS LUN LOCKED IN USE?
   3887	011134	001401 				BEQ	70$
   3888	011136	104646 				TRAP	DE.90		;YES -- RETURN STS=-90.
   3889	011140	010340 			70$:	MOV	R3,-(R0)	;NO -- MAKE ASSIGNMENT, AND
   3890	011142	104401 				TRAP	DR.01		;RETURN STS=+1
   3891						.TITLE	DMGLI	- "GET LUN INFO" DIRECTIVE MODULE
   3892	011144					IDENT$	1,0
						.IDENT	/001000/
   3893					;
   3894					;                             COPYRIGHT (C) 1975, 1978 BY
   3895					;                     DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
   3896					;
   3897					;       THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE  USED  AND  COPIED
   3898					;       ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
   3899					;       OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR ANY OTHER COPIES THERE-
   3900					;       OF  MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
DMGLI	- "GET LUN INFO" DIRECT	MACRO M1108  16-DEC-77 11:28  PAGE 64-2
DIRECTIVE -- ASSIGN LUN

   3901					;       NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
   3902					;
   3903					;       THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT
   3904					;       NOTICE  AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
   3905					;       CORPORATION.
   3906					;
   3907					;       DIGITAL ASSUMES NO RESPONSIBILITY FOR THE  USE  OR  RELIABILITY  OF  ITS
   3908					;       SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
   3909					;
   3910					;		MODULE: "GET LUN INFO" DIRECTIVE
   3911					;
   3912					;		VERSION: 01-00
   3913					;
   3914					;		AUTHOR: R. MCLEAN
   3915					;
   3916					;		DATE: 19 JUL 75
   3917					;
   3918					;
   3919					;	THIS MODULE CONTAINS:
   3920					;
   3921					;	1 -- CODE TO SERVICE THE "GET LUN INFO" DIRECTIVE.
   3922					;
   3923					;	MACROS
   3924					;
   3926						.MCALL	CALL,RETURN,MTPI,MFPI,MFPS
DMGLI	- "GET LUN INFO" DIRECT	MACRO M1108  16-DEC-77 11:28  PAGE 65
DIRECTIVE -- GET LUN INFORMATION

   3929						.SBTTL	DIRECTIVE -- GET LUN INFORMATION
   3930					;+
   3931					; THE "GET LUN INFORMATION" DIRECTIVE
   3932					;
   3933					; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO FILL A SIX WORD BUFFER
   3934					; WITH INFORMATION ABOUT A PHYSICAL UNIT TO WHICH IT IS ASSIGNED.
   3935					; IF REQUESTS TO THE PHYSICAL UNIT HAVE BEEN RE-DIRECTED TO ANOTHER
   3936					; UNIT, THE INFORMATION RETURNED WILL DESCRIBE THE EFFECTIVE ASSIGNMENT.
   3937					;
   3938					; A THREE WORD DPB OF THE FOLLOWING FORMAT IS USED:
   3939					;
   3940					;	WD. 00 -- DIC (05.) & DPB SIZE (3.),
   3941					;	WD. 01 -- LUN,
   3942					;	WD. 02 -- ADDRESS OF SIX-WORD BUFFER.
   3943					;
   3944					;
   3945					; THE SIX WORD BUFFER IS FILLED WITH THE FIRST SIX WORDS OF THE
   3946					; CORRESPONDING PUD ENTRY AS FOLLOWS:
   3947					;
   3948					;	WD. 00 -- NAME OF ASSIGNED DEVICE,
   3949					;	WD. 01 -- UNIT NUMBER OF ASSIGNED DEVICE & FLAGS BYTE,
   3950					;	WD. 02 -- DEVICE CHARACTERISTICS WD. #1,
   3951					;	WD. 03 -- DEVICE CHARACTERISTICS WD. #2,
   3952					;	WD. 04 -- DEVICE CHARACTERISTICS WD. #3,
   3953					;	WD. 05 -- DEVICE CHARACTERISTICS WD. #4.
   3954					;
   3955					; THE FOLLOWING STATUS IS RETURNED:
   3956					;
   3957					; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE STATUS
   3958					; OF ONE (+1).
   3959					;
   3960					; CC-C SET TO INDICATE REJECTION, AND A DIRECTIVE STATUS OF:
   3961					;
   3962					;	-05 -- UNASSIGNED LUN,
   3963					;
   3964					;	-95 -- INVALID BUFFER SIZE ( 1> OR >U.SZ)
   3965					;	-96 -- INVALID LOGICAL UNIT NUMBER,
   3966					;	-98 -- PART OF DPB OR BUFFER IS OUT OF TASK'S ADDRESS SPACE,
   3967					;	-99 -- DIC OR DPB SIZE IS INVALID.
   3968					;-
   3969									;R0 CONTAINS BUFFER ADDRESS (LAST DPB WORD)
   3970					;
   3971	011144	006302 			.D.GLI::ASL	R2		;MULTIPLY THE DPB SIZE BY 2
   3977					;
   3978					;
   3979	011146				10$:	MFPI	(R1)+		;PUSH LUN, AND CONVERT TO PUD ENTRY ADR
	011146	012146 				MOV	(R1)+,-(SP)
   3980	011150					CALL	.VCLUN		;IF INVALID LUN, RETURN STS=-96.
	011150	004737 	005172'			JSR	PC,.VCLUN
   3981	011154	012604 				MOV	(SP)+,R4	;SET R4 TO PUD ENTRY ADR IF LUN ASSIGNED
   3982	011156	001001 				BNE	20$		;IF UN-ASSIGNED LUN, RETURN STS=-05.
   3983	011160	104773 				TRAP	DE.05
   3984					;
   3985					; FILL BUFFER -- IF SEGMENT FAULT, RETURN STS=-98.
   3986					;
   3987	011162				20$:	MFPS	(R1),R0
	011162	011100 				MOV	(R1),R0
DMGLI	- "GET LUN INFO" DIRECT	MACRO M1108  16-DEC-77 11:28  PAGE 65-1
DIRECTIVE -- GET LUN INFORMATION

   3988	011164	012446 			30$:	MOV	(R4)+,-(SP)
   3989	011166					MTPI	(R0)+
	011166	012620 				MOV	(SP)+,(R0)+
   3990	011170	077203 				SOB	R2,30$
   3991					;
   3992	011172	104401 				TRAP	DR.01		;RETURN STS=+1
   3993					;
   3994						.TITLE	DMGTP	- "GET TIME PARAMETERS" DIRECTIVE MODULE
   3995	011174					IDENT$	1,0
						.IDENT	/001000/
   3996					;
   3997					;                             COPYRIGHT (C) 1975, 1978 BY
   3998					;                     DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
   3999					;
   4000					;       THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE  USED  AND  COPIED
   4001					;       ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
   4002					;       OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR ANY OTHER COPIES THERE-
   4003					;       OF  MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
   4004					;       NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
   4005					;
   4006					;       THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT
   4007					;       NOTICE  AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
   4008					;       CORPORATION.
   4009					;
   4010					;       DIGITAL ASSUMES NO RESPONSIBILITY FOR THE  USE  OR  RELIABILITY  OF  ITS
   4011					;       SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
   4012					;
   4013					;		MODULE: "GET TIME PARAMETERS" DIRECTIVE
   4014					;
   4015					;		VERSION: 01-00
   4016					;
   4017					;		AUTHOR: R. MCLEAN
   4018					;
   4019					;		DATE: 19 JUL 75
   4020					;
   4021					;
   4022					;	THIS MODULE CONTAINS:
   4023					;
   4024					;	1 -- CODE TO SERVICE THE "GET TIME PARAMETERS" DIRECTIVE.
   4025					;
   4026					;	MACROS
   4027					;
   4029					;
   4030						.MCALL	CALL,RETURN,MTPI,MFPS
DMGTP	- "GET TIME PARAMETERS"	MACRO M1108  16-DEC-77 11:28  PAGE 66
DIRECTIVE -- GET TIME PARAMETERS

   4033						.SBTTL	DIRECTIVE -- GET TIME PARAMETERS
   4034					;+
   4035					; THE "GET TIME PARAMETERS" DIRECTIVE
   4036					;
   4037					; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO FILL AN INDICATED EIGHT WORD BUFFER
   4038					; WITH CURRENT TIME PARAMETERS.
   4039					;
   4040					; A TWO WORD DPB OF THE FOLLOWING FORMAT IS USED:
   4041					;
   4042					;	WD. 00 -- DIC (59.) & DPB SIZE (2.),
   4043					;	WD. 01 -- ADDRESS OF 8-WORD BUFFER.
   4044					;
   4045					; THE 8-WORD BUFFER IS FILLED AS FOLLOWS:
   4046					;
   4047					;	WD. 0 -- YEAR (SINCE 1900),
   4048					;	WD. 1 -- MONTH OF YEAR,
   4049					;	WD. 2 -- DAY OF MONTH,
   4050					;	WD. 3 -- HOUR OF DAY,
   4051					;	WD. 4 -- MINUTE OF HOUR,
   4052					;	WD. 5 -- SECOND OF MINUTE,
   4053					;	WD, 6 -- TICK OF SECOND,
   4054					;	WD. 7 -- TICKS PER SECOND.
   4055					;
   4056					; THE FOLLOWING STATUS IS RETURNED:
   4057					;
   4058					; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE STATUS
   4059					; OF ONE (+1).
   4060					;
   4061					; CC-C SET TO INDICATE REJECTION, AND A DIRECTIVE STATUS OF:
   4062					;
   4063					;	-98 -- PART OF DPB OR BUFFER IS OUT OF TASK'S ADDRESS SPACE,
   4064					;	-99 -- DIC OR DPB SIZE IS INVALID.
   4065					;
   4066	011174	013746 	031260'		.D.GTP::MOV	.TKPS,-(SP)	;PUSH TICKS-PER-SECOND
   4067	011200	010104 				MOV	R1,R4		;SAVE DPB POINTER
   4068	011202	013700 	031254'			MOV	.SSM,R0		;FIND HOURS
   4069	011206	012701 	003410 			MOV	#60.*30.,R1
   4070	011212					CALL	$DIV		;DIVIDE
	011212	004737 	000000G			JSR	PC,$DIV
   4071	011216	010003 				MOV	R0,R3		;SAVE ANSWER
   4072	011220	010100 				MOV	R1,R0		;SET UP REMAINDER FOR NEXT DIVIDE
   4073	011222	012701 	000036 			MOV	#30.,R1
   4074	011226					CALL	$DIV		;FIND MIN
	011226	004737 	000000G			JSR	PC,$DIV
   4075	011232	005046 				CLR	-(SP)		;TICKS NOT RETURNED
   4076	011234	006301 				ASL	R1
   4077	011236	010146 				MOV	R1,-(SP)	;SAVE SECONDS
   4078	011240	010046 				MOV	R0,-(SP)
   4079	011242	010346 				MOV	R3,-(SP)	;HOURS
   4080	011244	005046 				CLR	-(SP)
   4081	011246	113716 	031250'			MOVB	.DAY,@SP
   4082	011252	005216 				INC	@SP
   4083	011254	005046 				CLR	-(SP)
   4084	011256	113716 	031251'			MOVB	.MON,@SP
   4085	011262	005216 				INC	@SP
   4086	011264	013746 	031246'			MOV	.YEAR,-(SP)
   4087	011270	162716 	003554 			SUB	#1900.,@SP
DMGTP	- "GET TIME PARAMETERS"	MACRO M1108  16-DEC-77 11:28  PAGE 66-1
DIRECTIVE -- GET TIME PARAMETERS

   4088					;
   4089					;
   4090					; MOVE TIME PARAMETERS FROM KERNEL STACK TO 8-WORD BUFFER IN USER SPACE
   4091					;
   4092					;
   4093	011274	012703 	000010 			MOV	#8.,R3
   4094					;
   4095	011300					MFPS	(R4),R4		;FIND BUFFER ADDRESS
	011300	011404 				MOV	(R4),R4
   4096	011302				10$:
   4097	011302					MTPI	(R4)+		;MOVE WORD
	011302	012624 				MOV	(SP)+,(R4)+
   4098	011304	077302 				SOB	R3,10$		;LOOP 8 TIMES
   4099					;
   4100	011306	104401 				TRAP	DR.01		;RETURN STS=+1
   4101					;
   4102						.TITLE	DMSED	- SIGNIFICANT EVENT DIRECTIVES MODULE
   4103	011310					IDENT$	1,0
						.IDENT	/001000/
   4104					;
   4105					;                             COPYRIGHT (C) 1975, 1978 BY
   4106					;                     DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
   4107					;
   4108					;       THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE  USED  AND  COPIED
   4109					;       ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
   4110					;       OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR ANY OTHER COPIES THERE-
   4111					;       OF  MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
   4112					;       NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
   4113					;
   4114					;       THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT
   4115					;       NOTICE  AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
   4116					;       CORPORATION.
   4117					;
   4118					;       DIGITAL ASSUMES NO RESPONSIBILITY FOR THE  USE  OR  RELIABILITY  OF  ITS
   4119					;       SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
   4120					;
   4121					;		MODULE: SIGNIFICANT EVENT DIRECTIVES
   4122					;
   4123					;		VERSION: 01-00
   4124					;
   4125					;		AUTHOR:  R. MCLEAN
   4126					;
   4127					;		DATE: 19 MAR 75
   4128					;
   4129					;
   4130					;	THIS MODULE CONTAINS:
   4131					;
   4132					;	1 -- CODE TO SERVICE THE "WAITFOR SINGLE EVENT FLAG" DIRECTIVE,
   4133					;	2 -- CODE TO SERVICE THE "WAITFOR LOGICAL 'OR' OF FLAGS" DIRECTIVE,
   4134					;	3 -- CODE TO SERVICE THE "WAIT FOR NEXT SIGNIFICANT EVENT" DIRECTIVE.
   4135					;	4 -- CODE TO SERVICE THE "CLEAR EVENT FLAG" DIRECTIVE,
   4136					;	5 -- CODE TO SERVICE THE "SET EVENT FLAG" DIRECTIVE,
   4137					;	6 -- CODE TO SERVICE THE "DECLARE SIG EVENT" DIRECTIVE,
   4138					;	7 -- CODE TO SERVICE THE "READ EVENT FLAGS" DIRECTIVE
   4139					;
   4140					;	MACROS
   4142					;
DMSED	- SIGNIFICANT EVENT DIR	MACRO M1108  16-DEC-77 11:28  PAGE 66-2
DIRECTIVE -- GET TIME PARAMETERS

   4143						.MCALL	CALL,RETURN,MTPS,MFPS,MFPI,MTPI
DMSED	- SIGNIFICANT EVENT DIR	MACRO M1108  16-DEC-77 11:28  PAGE 67
DIRECTIVE -- CLEAR EVENT FLAG

   4146						.SBTTL	DIRECTIVE -- CLEAR EVENT FLAG
   4147					;+
   4148					;	THE "CLEAR EVENT FLAG" DIRECTIVE
   4149					;
   4150					;	THIS DIRECTIVE INSTRUCTS THE SYSTEM TO CLEAR AND INDICATE
   4151					;	EVENT FLAG AND REPORT THE FLAG'S POLARITY BEFORE CLEARING.
   4152					;
   4153					;	A TWO WORD DPB OF THE FOLLOWING FORMAT IS USED;
   4154					;
   4155					;	WD. 00 -- DIC (31.) & DPB SIZE (2.)
   4156					;	WD. 01 -- EVENT FLAG NUMBER (EFN)
   4157					;
   4158					;	THE FOLLOWING STATUS IS RETURNED:
   4159					;
   4160					;
   4161					; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE STATUS OF:
   4162					;
   4163					;	R0 -- +0 -- FLAG WAS ALREADY RESET,
   4164					;	R0 -- +2 -- FLAG WAS SET.
   4165					;
   4166					; CC-C SET TO INDICATE REJECTION, AND A DIRECTIVE STATUS OF:
   4167					;
   4168					;	R0 -- -97 -- EFN>64 OR EFN<1,
   4169					;	R0 -- -99 -- DIC OR DPB SIZE IS INVALID.
   4170					;-
   4171					; CONTROL IS TRANSFERRED HERE (BY DIRECTIVE DISPATCH ROUTINE) WITH THE
   4172					; DIRECTIVE ISSUING TASK'S PS, PC, & R0-R5 PUSHED ONTO THE
   4173					;  STACK, AND R0-R5 SET AS FOLLOWS:
   4174					;	R0 -- PC OF EMT INSTRUCTION
   4175					;	R1 -- WORD FOLLOWING THE DIC & SIZE
   4176					;	R2 -- SIZE OF DPB (IN WORDS),
   4177					;	R3 -- DIC (DIRECTIVE IDENTIFICATION CODE )
   4178					;	R5 -- ATL NODE ADDRESS OF ISSUING TASK (.CRTSK)
   4179					;
   4180					;
   4181					;
   4182	011310				.D.CEF::CALL	.CEFN		;CONVERT EFN TO: (1) FLAG WORD ADDRESS
	011310	004737 	040404'			JSR	PC,.CEFN
   4183									;IN R2, AND (2) FLAG MASK IN R3 (R2 IS
   4184									;POINTING TO EFN).  IF EFN<0, OR EFN>64.,
   4185									;RETURN STS=-97.  IF EFN=0 (NO EVENT FLAG
   4186									;SPECIFIED), RETURN WITH R2=R3=00.
   4187									;CONDITION CODES ARE SET PER "TST R3".
   4188					;
   4189									;EVENT FLAG SPECIFIED?
   4190	011314	001444 				BEQ	SEX97		;NO -- RETURN STS=-97
   4191	011316	030312 				BIT	R3,@R2		;YES -- IS FLAG CLEARED?
   4192	011320	001410 				BEQ	SEXP0		;YES -- RETURN STS=+0
   4193	011322	040312 				BIC	R3,@R2		;NO -- CLEAR FLAG & RETURN STS=+2
   4194	011324	104402 			SEXP2:	TRAP	DR.02		;COMMON RETURN -- STS=+2
DMSED	- SIGNIFICANT EVENT DIR	MACRO M1108  16-DEC-77 11:28  PAGE 68
DIRECTIVE -- SET EVENT FLAG

   4196					.SBTTL	DIRECTIVE -- SET EVENT FLAG
   4197					;+
   4198					; THE "SET EVENT FLAG" DIRECTIVE
   4199					;
   4200					; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO SET AND INDICATED EVENT FLAG
   4201					; AND REPORT THE FLAG'S POLARITY BEFORE SETTING.
   4202					;
   4203					; A TWO WORD DPB OF THE FOLLOWING FORMAT IS USED:
   4204					;
   4205					;	WD. 00 -- DIC (33.) & DPB SIZE (2.),
   4206					;	WD. 01 -- EVENT FLAG NUMBER (EFN).
   4207					;
   4208					; THE FOLLOWING STATUS IS RETURNED:
   4209					;
   4210					; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE STATUS OF:
   4211					;
   4212					;	R0 -- +0 -- FLAG WAS CLEARED,
   4213					;	R0 --+2 -- FLAG WAS SET.
   4214					;
   4215					; CC-C SET TO INDICATE REJECTION, AND A DIRECTIVE STATUS OF:
   4216					;
   4217					;	R0 -- -97 -- EFN>64 OR EFN<1,
   4218					;	R0 -- -99 -- DIC OR DPB SIZE IS INVALID.
   4219					;-
   4220					; CONTROL IS TRANSFERRED HERE (BY DIRECTIVE DISPATCH ROUTINE) WITH THE
   4221					; DIRECTIVE ISSUING TASK'S PS, PC, & R0-R5 PUSHED ONTO THE
   4222					;  STACK, AND R0-R5 SET AS FOLLOWS:
   4223					;	R0 -- PC OF EMT INSTRUCTION
   4224					;	R1 -- WORD FOLLOWING DIC % SIZE
   4225					;	R2 -- DPB SIZE
   4226					;	R3 -- DIC (DIRECTIVE IDENTIFICATION CODE)
   4227					;	R5 -- ATL NODE ADDRESS OF ISSUING TASK (.CRTSK)
   4228					;
   4229					;
   4230									;R1 IS POINTING TO EFN IN DPB
   4231					;
   4232	011326				.D.SEF::CALL	.CEFN		;CONVERT EFN TO: (1) FLAG WORD ADDRESS
	011326	004737 	040404'			JSR	PC,.CEFN
   4233									;IN R2, AND (2) FLAG MASK IN R3 (R2 IS
   4234									;POINTING TO EFN).  IF EFN<0, OR EFN>64.,
   4235									;RETURN STS=-97.  IF EFN=0 (NO EVENT FLAG
   4236									;SPECIFIED), RETURN WITH R2=R3=00.
   4237									;CONDITION CODES ARE SET PER "TST R3".
   4238					;
   4239									;EVENT FLAG SPECIFIED?
   4240	011332	001435 				BEQ	SEX97		;NO -- RETURN STS=-97
   4241	011334	030312 			SEXCM:	BIT	R3,@R2		;YES -- IS FLAG ALREADY SET?
   4242	011336	001372 				BNE	SEXP2		;YES -- RETURN STS=+2
   4243	011340	050312 				BIS	R3,@R2		;NO -- SET FLAG & RETURN STS=+0
   4244	011342	104400 			SEXP0:	TRAP	DR.00		;COMMON RETURN -- STS=+0
DMSED	- SIGNIFICANT EVENT DIR	MACRO M1108  16-DEC-77 11:28  PAGE 69
DIRECTIVE -- DECLARE SIGNIFICANT EVENT

   4246					.SBTTL	DIRECTIVE -- DECLARE SIGNIFICANT EVENT
   4247					;+
   4248					; THE "DECLARE SIGNIFICANT EVENT" DIRECTIVE
   4249					;
   4250					; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO DECLARE A SIGNIFICANT EVENT
   4251					; AND OPTIONALLY SET AN EVENT FLAG & AND REPORT ITS POLARITY BEFORE
   4252					; IT WAS SET.
   4253					;
   4254					; A TWO WORD DBP OF THE FOLLOWING FORMAT IS USED TO (1) READ AN EVENT
   4255					; FLAG, (2) SET THE EVENT FLAG, (3) DECLARE A SIGNIFICANT EVENT, AND
   4256					; (4) REPORT THE PRE-EVENT FLAG POLARITY:
   4257					;
   4258					;	WD. 00 -- DIC (35.) & DPB SIZE (2.),
   4259					;	WD. 01 -- EVENT FLAG NUMBER (EFN).
   4260					;
   4261					; A ONE WORD DPB OF THE FOLLOWING FORMAT IS USED TO (1) DECLARE A
   4262					; SIGNIFICANT EVENT:
   4263					;
   4264					;	WD. 00 -- DIC (07.) & DPB SIZE (2.).
   4265					;	WD. 01 -- NO EVENT FLAG SPECIFIED
   4266					;
   4267					; THE FOLLOWING STATUS IS RETURNED:
   4268					;
   4269					; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE STATUS OF:
   4270					;
   4271					;	R0 -- +1 -- NO EVENT FLAG SPECIFIED,
   4272					;	R0 -- +0 -- SPECIFIED FLAG WAS CLEARED,
   4273					;	R0 --+2 -- SPECIFIED FLAG WAS SET.
   4274					;
   4275					; CC-C SET TO INDICATE REJECTION, AND A DIRECTIVE STATUS OF:
   4276					;
   4277					;	R0 -- -97 -- EFN<1 OR EFN>64.,
   4278					;	R0 -- -99 -- DIC OR DPB SIZE IS INVALID.
   4279					;-
   4280					; CONTROL IS TRANSFERRED HERE (BY DIRECTIVE DISPATCH ROUTINE) WITH THE
   4281					; DIRECTIVE ISSUING TASK'S PS, PC, & R0-R5 PUSHED ONTO THE
   4282					; KERNEL STACK, AND R0-R5 SET AS FOLLOWS:
   4283					;	R0 -- PC OF EMT INSTRUCTION
   4284					;	R1 -- WORD FOLLOWING DIC & SIZE
   4285					;	R2 -- DPB SIZE
   4286					;	R3 -- DIC (DIRECTIVE IDENTIFICATION CODE)
   4287					;	R5 -- ATL NODE ADDRESS OF ISSUING TASK (.CRTSK)
   4288					;
   4289					;
   4290					;
   4291	011344	152737 	000001 	031116'	.D.DSE::BISB	#EV.SE,.SERFG+0	;SET SIGNIFICANT EVENT FLAG
   4292	011352	005302 				DEC	R2
   4293	011354	001401 				BEQ	5$
   4294	011356	104400 				TRAP	DR.00
   4295	011360				5$:	CALL	.CEFN		;YES -- R1 IS POINTING TO EFN IN DPB.
	011360	004737 	040404'			JSR	PC,.CEFN
   4296									;CONVERT EFN TO: (1) FLAG WORD ADDRESS
   4297									;IN R2, AND (2) FLAG MASK IN R3 (R2 IS
   4298									;POINTING TO EFN).  IF EFN<0, OR EFN>64.,
   4299									;RETURN STS=-97.  IF EFN=0 (NO EVENT FLAG
   4300									;SPECIFIED), RETURN WITH R2=R3=00.
   4301									;CONDITION CODES ARE SET PER "TST R3".
DMSED	- SIGNIFICANT EVENT DIR	MACRO M1108  16-DEC-77 11:28  PAGE 69-1
DIRECTIVE -- DECLARE SIGNIFICANT EVENT

   4302					;
   4303									;EVENT FLAG SPECIFIED?
   4304	011364	001417 				BEQ	SEXP1		;NO -- RETURN STS=1.
   4305	011366	000762 				BR	SEXCM		;GO TO COMMON TEST
DMSED	- SIGNIFICANT EVENT DIR	MACRO M1108  16-DEC-77 11:28  PAGE 70
DIRECTIVE -- READ EVENT FLAG

   4307					.SBTTL	DIRECTIVE -- READ EVENT FLAG
   4308					;+
   4309					; THE "READ EVENT FLAG" DIRECTIVE
   4310					;
   4311					; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO READ AND INDICATED EVENT FLAG.
   4312					;
   4313					; A TWO WORD DPB OF THE FOLLOWING FORMAT IS USED:
   4314					;
   4315					;	WD. 00 -- DIC (37.) & DPB SIZE (2.),
   4316					;	WD. 01 -- EVENT FLAG NUMBER (EFN).
   4317					;
   4318					; THE FOLLOWING STATUS IS RETURNED:
   4319					;
   4320					; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE STATUS OF:
   4321					;
   4322					;	R0 -- +0 -- FLAG WAS CLEARED,
   4323					;	R0 -- +2 -- FLAG WAS SET.
   4324					;
   4325					; CC-C SET TO INDICATE REJECTION, AND A DIRECTIVE STATUS OF:
   4326					;
   4327					;	R0 -- -97 -- EFN>64 OR EFN<1,
   4328					;	R0 -- -99 -- DIC OR DPB SIZE IS INVALID.
   4329					;-
   4330					; CONTROL IS TRANSFERRED HERE (BY DIRECTIVE DISPATCH ROUTINE) WITH THE
   4331					; DIRECTIVE ISSUING TASK'S PS, PC, & R0-R5 PUSHED ONTO THE
   4332					;  STACK, AND R0-R5 SET AS FOLLOWS:
   4333					;	R0 -- PC OF EMT INSTRUCTION
   4334					;	R1 -- WORD FOLLOWING DIC & SIZE
   4335					;	R2 -- DPB SIZE
   4336					;	R3 -- DIC (DIRECTIVE IDENTIFICATION CODE)
   4337					;	R5 -- ATL NODE ADDRESS OF ISSUING TASK (.CRTSK)
   4338					;
   4339					;
   4340									;R1 IS POINTING TO EFN IN DPB.
   4341					;
   4342	011370				.D.REF::CALL	.CEFN		;CONVERT EFN TO: (1) FLAG WORD ADDRESS
	011370	004737 	040404'			JSR	PC,.CEFN
   4343									;IN R2, AND (2) FLAG MASK IN R3 (R2 IS
   4344									;POINTING TO EFN).  IF EFN<0, OR EFN>64.,
   4345									;RETURN STS=-97.  IF EFN=0 (NO EVENT FLAG
   4346									;SPECIFIED), RETURN WITH R2=R3=00.
   4347									;CONDITION CODES ARE SET PER "TST R3".
   4348					;
   4349									;EVENT FLAG SPECIFIED?
   4350	011374	001414 				BEQ	SEX97		;NO -- RETURN STS=-97
   4351	011376	030312 				BIT	R3,@R2		;YES -- IS FLAG SET?
   4352	011400	001351 				BNE	SEXP2		;YES -- RETURN STS=+2
   4353	011402	104400 				TRAP	DR.00		;NO -- RETURN STS=+0
DMSED	- SIGNIFICANT EVENT DIR	MACRO M1108  16-DEC-77 11:28  PAGE 71
DIRECTIVE -- READ ALL EVENT FLAGS

   4355					.SBTTL	DIRECTIVE -- READ ALL EVENT FLAGS
   4356					;+
   4357					; THE "READ ALL FLAGS" DIRECTIVE
   4358					;
   4359					; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO READ ALL SIXTY-FOUR
   4360					; EVENT FLAGS FOR THE ISSUING TASK AND RECORD THEIR POLARITIES
   4361					; IN A SIXTY-FOUR BIT (4-WORD) BUFFER.
   4362					;
   4363					; A TWO WORD DPB OF THE FOLLOWING FORMAT IS USED:
   4364					;
   4365					;	WD. 00 -- DIC (39.) & DPB SIZE (2.),
   4366					;	WD. 01 -- ADDRESS  OF 64-BIT BUFFER.
   4367					;
   4368					; THE FOLLOWING STATUS IS RETURNED:
   4369					;
   4370					; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE STATUS
   4371					; OF ONE (+1).
   4372					;
   4373					; CC-C SET TO INDICATE REJECTION, AND A DIRECTIVE STATUS OF:
   4374					;
   4375					;	R0 -- -99 -- DIC OR DPB SIZE IS INVALID.
   4376					;-
   4377					; CONTROL IS TRANSFERRED HERE (BY DIRECTIVE DISPATCH ROUTINE) WITH THE
   4378					; DIRECTIVE ISSUING TASK'S PS, PC, & R0-R5 PUSHED ONTO THE
   4379					;  STACK, AND R0-R5 SET AS FOLLOWS:
   4380					;	R0 -- PC OF EMT INSTRUCTION
   4381					;	R1 -- WORD FOLLOWING DIC & SIZE
   4382					;	R2 -- DPB SIZE
   4383					;	R3 -- DIC (DIRECTIVE IDENTIFICATION CODE)
   4384					;	R5 -- ATL NODE ADDRESS OF ISSUING TASK (.CRTSK)
   4385					;
   4386					;
   4387					; FILL FOUR WORD BUFFER
   4388					;
   4389	011404				.D.RAF::MTPS   A.EF+0(R5),(R1)+	;FLAGS 1-16 TO BUF+0
	011404	016521 	000020 			MOV	A.EF+0(R5),(R1)+
   4390	011410					MTPS   A.EF+2(R5),(R1)+	;FLAGS 17-32 TO BUF+2
	011410	016521 	000022 			MOV	A.EF+2(R5),(R1)+
   4391	011414					MTPS	.COMEF+0,(R1)+	;FLAGS 33-48 TO BUF+4
	011414	013721 	031112'			MOV	.COMEF+0,(R1)+
   4392	011420					MTPS	.COMEF+2,(R1)+	;FLAGS 49-64 TO BUF+6
	011420	013721 	031114'			MOV	.COMEF+2,(R1)+
   4393					;
   4394	011424	104401 			SEXP1:	TRAP	DR.01		;RETURN STS=+1
   4395					;
   4396	011426	104637 			SEX97:	TRAP	DE.97
DMSED	- SIGNIFICANT EVENT DIR	MACRO M1108  16-DEC-77 11:28  PAGE 72
DIRECTIVE -- WAITFOR SINGLE EVENT FLAG

   4398					.SBTTL	DIRECTIVE -- WAITFOR SINGLE EVENT FLAG
   4399					;+
   4400					; THE "WAIT FOR SINGLE EVENT FLAG" DIRECTIVE
   4401					;
   4402					; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO SUSPEND THE EXECUTION OF THE
   4403					; ISSUING TASK UNTIL AN INDICATED EVENT FLAG IS SET.  IF THE FLAG IS SET
   4404					; AT ISSUANCE, TASK EXECUTION IS EFFECTIVELY NOT SUSPENDED.  (ACTUALLY, THE
   4405					; TASK IS ALWAYS SUSPENDED, BUT R0 IS LEFT POINTING TO THE ISSUING TASK'S
   4406					; ATL NODE; AND THEREFORE, A CHECK IS ALWAYS MADE BY THE ATL SCAN ROUTINE.)
   4407					;
   4408					; A TWO WORD DPB OF THE FOLLOWING FORMAT IS USED:
   4409					;
   4410					;	WD. 00 -- DIC (41.) & DPB SIZE (2.),
   4411					;	WD. 01 -- EVENT FLAG NUMBER (EFN).
   4412					;
   4413					; THE FOLLOWING STATUS IS RETURNED:
   4414					;
   4415					; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE STATUS
   4416					; OF ONE (+1).
   4417					;
   4418					; CC-C SET TO INDICATE REJECTION, AND A DIRECTIVE STATUS OF:
   4419					;
   4420					;	R0 -- -97 -- INVALID EVENT FLAG NUMBER (<1 OR >64.),
   4421					;	R0 -- -99 -- DIC OR DPB SIZE IS INVALID.
   4422					;-
   4423					;
   4424					;
   4425					; CONTROL IS TRANSFERRED HERE (BY DIRECTIVE DISPATCH ROUTINE) WITH THE
   4426					; DIRECTIVE ISSUING TASK'S PS, PC, & R0-R5 PUSHED ONTO THE
   4427					;  STACK, AND R0-R5 SET AS FOLLOWS:
   4428					;	R0 -- PC OF EMT INSTRUCTION
   4429					;	R1 -- WORD FOLLOWING DIC & SIZE
   4430					;	R2 -- DPB SIZE
   4431					;	R3 -- DIC (DIRECTIVE IDENTIFICATION CODE)
   4432					;	R5 -- ATL NODE ADDRESS OF ISSUING TASK (.CRTSK)
   4433					;
   4434					;
   4435	011430	011103 			.D.WFS::MOV	@R1,R3		;SET R3 TO EFN
   4436									;IS AN EVENT FLAG SPECIFIED (NON-ZERO EFN)?
   4437	011432				.D.WFO::			;SPECIAL ENTRY POINT FOR QIO AND WAIT
   4438	011432	001775 				BEQ	SEX97		;NO -- RETURN STS=-97.
   4439	011434	020327 	000100 			CMP	R3,#64.		;YES -- IS EFN IN RANGE: 0-64.?
   4440	011440	101372 				BHI	SEX97		;NO -- RETURN STS=-97.
   4441					;
   4442	011442	005303 				DEC	R3		;YES -- CONVERT EFN TO FLAG SET NUMBER (R2),
   4443	011444	005002 				CLR	R2		;AND FLAG MASK (R1)
   4444	011446					CALL	DIV216		;DIVIDE R2 BY 16.
	011446	004737 	041262'			JSR	PC,DIV216
   4445	011452	012701 	000001 			MOV	#1,R1
   4446	011456	005303 			10$:	DEC	R3		;DO AN ASH	R3,R1
   4447	011460	100402 				BMI	20$
   4448	011462	006301 				ASL	R1
   4449	011464	000774 				BR	10$
   4450	011466				20$:
   4451					;
   4452					;
   4453	011466	006302 				ASL	R2		;CONVERT SET NUMBER (0,1,2,3) TO TASK
DMSED	- SIGNIFICANT EVENT DIR	MACRO M1108  16-DEC-77 11:28  PAGE 72-1
DIRECTIVE -- WAITFOR SINGLE EVENT FLAG

   4454	011470	062702 	000014 			ADD	#TS.WF0,R2	;STATUS FOR ATL NODE.
   4455					;
   4456	011474	010165 	000024 			MOV	R1,A.FM+0(R5)	;SET MASK AND STATUS IN ATL NODE
   4457	011500	110265 	000014 			MOVB	R2,A.TS(R5)
   4458					;
   4459	011504	104401 				TRAP	DR.01		;RETURN STS=+1
DMSED	- SIGNIFICANT EVENT DIR	MACRO M1108  16-DEC-77 11:28  PAGE 73
DIRECTIVE -- WAITFOR LOGICAL 'OR' OF FLAGS

   4461					.SBTTL	DIRECTIVE -- WAITFOR LOGICAL 'OR' OF FLAGS
   4462					;+
   4463					; THE "WAITFOR LOGICAL 'OR' OF FLAGS" DIRECTIVE
   4464					;
   4465					;
   4466					; IF THE INDICATED CONDITION IS MET AT ISSUANCE, TASK EXECUTION IS
   4467					; EFFECTIVELY NOT SUSPENDED.  (ACTUALLY, THE TASK IS ALWAYS SUSPENDED,
   4468					;
   4469					;
   4470					; A THREE WORD DPB OF THE FOLLOWING FORMAT IS USED TO WAIT FOR EVENT FLAGS OF A GIVEN SET
   4471					;
   4472					;	WD. 00 -- DIC (43.) & DPB SIZE (3.)
   4473					;	WD. 01 -- SET NUMBER
   4474					;	WD. 02 -- FLAGS MASK FOR THIS SET
   4475					;
   4476					;
   4477					; A FIVE-WORD DPB OF THE FOLLOWING FORMAT IS USED TO WAITFOR EVENT FLAGS
   4478					; OF SET FOUR:
   4479					;
   4480					;	WD. 00 -- DIC (15.) & DPB SIZE (5.),
   4481					;	WD. 01 -- MASK WORD FOR FLAGS 1-16,
   4482					;	WD. 02 -- MASK WORD FOR FLAGS 17-32,
   4483					;	WD. 03 -- MASK WORD FOR FLAGS 33-48,
   4484					;	WD. 04 -- MASK WORD FOR FLAGS 49-64.
   4485					;
   4486					; MASK WORD BITS FROM RIGHT-TO-LEFT REPRESENT INCREASING EVENT FLAG
   4487					; NUMBERS, AND A SET MASK WORD BIT INDICATES "WAITFOR THE CORRESPONDING
   4488					; EVENT FLAG".
   4489					;
   4490					; THE FOLLOWING STATUS IS RETURNED.
   4491					;
   4492					; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE STATUS
   4493					; OF ONE (+1).
   4494					;
   4495					; CC-C SET TO INDICATE REJECTION, AND DIRECTIVE STATUS OF:
   4496					;
   4497					;	R0 -- -97 -- NO EVENT FLAG SPECIFIED IN MASK WORD(S),
   4498					;	R0 -- -99 -- DIC OR DPB SIZE IS INVALID.
   4499					;-
   4500					; CONTROL IS TRANSFERRED HERE (BY DIRECTIVE DISPATCH ROUTINE) WITH THE
   4501					; DIRECTIVE ISSUING TASK'S PS, PC, & R0-R5 PUSHED ONTO THE
   4502					; KERNEL STACK, AND R0-R5 SET AS FOLLOWS:
   4503					;	R0 -- PC OF EMT INSTRUCTION
   4504					;	R1 -- WORD FOLLOWING DIC & SIZE
   4505					;	R2 -- DPB SIZE
   4506					;	R3 -- DIC (DIRECTIVE IDENTIFICATION CODE)
   4507					;	R5 -- ATL NODE ADDRESS OF ISSUING TASK (.CRTSK)
   4508					;
   4509					;
   4510					;
   4511					; EVEN FLAG SET IS FOUR.  I.E., WAIT FOR ANY OF SIXTY-FOUR EVENT FLAGS.
   4512					;
   4513					; SET 64-BIT FLAGS MASK IN ATL NODE AND ACCUMULATE 'OR' OF MASK WORDS
   4514					; IN R2.  THE 64-BIT MASK IS SET BY MOVING FOUR WORDS FROM THE DPB TO
   4515					; THE ATL NODE.
   4516					;
   4517					; IF NO FLAG INDICATED (ALL 64 BITS ARE ZERO), RETURN STS=-97.
DMSED	- SIGNIFICANT EVENT DIR	MACRO M1108  16-DEC-77 11:28  PAGE 73-1
DIRECTIVE -- WAITFOR LOGICAL 'OR' OF FLAGS

   4518					;
   4519	011506	022702 	000005 		.D.WFL::CMP	#5,R2		;THREE OR 5 WORD DPB?
   4520	011512	001020 				BNE	10$		;THREE WORD DPB (WAIT FOR ONE SET)
   4521	011514	010502 				MOV	R5,R2		;SETUP R2 TO FILL ATL NODE
   4522	011516	062702 	000024 			ADD	#A.FM,R2
   4523	011522					MFPS	(R1)+,@R2	;MASK FOR FLAGS 1-16
	011522	012112 				MOV	(R1)+,@R2
   4524	011524	012203 				MOV	(R2)+,R3
   4525									;MASK FOR FLAGS 17-32
   4526	011526					MFPS	(R1)+,@R2
	011526	012112 				MOV	(R1)+,@R2
   4527	011530	052203 				BIS	(R2)+,R3
   4528									;MASK FOR FLAGS 33-48
   4529	011532					MFPS	(R1)+,@R2
	011532	012112 				MOV	(R1)+,@R2
   4530	011534	052203 				BIS	(R2)+,R3
   4531	011536					MFPS	@R1,@R2		;MASK FOR FLAGS 49-64 (LAST DPB WORD)
	011536	011112 				MOV	@R1,@R2
   4532	011540	051203 				BIS	@R2,R3
   4533	011542	001731 				BEQ	SEX97		;RETURN STS=-97 IF NO FLAG INDICATED
   4534					;
   4535	011544	112765 	000024 	000014 		MOVB	#TS.WF4,A.TS(R5) ;SET WAITFOR-SET-FOUR TASK STATUS
   4536					;
   4537	011552	104401 				TRAP	DR.01		;RETURN DIRECTIVE STS=+1
   4538					;
   4539	011554				10$:	MFPS	(R1)+,R2	;FIND THE SET NUMBER
	011554	012102 				MOV	(R1)+,R2
   4540	011556	001415 				BEQ	30$		;ILLEGAL SET NUMBER
   4541	011560					MFPS	(R1)+,R3	;FIND THE FLAGS TO WAIT FOR
	011560	012103 				MOV	(R1)+,R3
   4542	011562	020227 	000004 			CMP	R2,#4		;LEGAL SET NUMBER?
   4543	011566	101011 				BHI	30$		;NO -- ILLEGAL SET TO WAIT FOR
   4544	011570	005302 				DEC	R2		;DECREMENT SO SET1 IS 0
   4545	011572	006302 				ASL	R2		;MULTIPLY BY 2
   4546	011574	062702 	000014 			ADD	#TS.WF0,R2	;POINT TO THE CORRECT ATL STATUS
   4547	011600	110265 	000014 			MOVB	R2,A.TS(R5)	;SET THE CORRECT STATUS IN THE ATL NODE
   4548	011604	010365 	000024 			MOV	R3,A.FM(R5)	;SET UP THE FLAGS MASK WORD FOR THESE EVENT FLAGS
   4549	011610	104401 				TRAP	DR.01		;RETURN STS +1
   4550					;
   4551	011612	104636 			30$:	TRAP	DE.98		;ILLEGAL SET NUMBER
DMSED	- SIGNIFICANT EVENT DIR	MACRO M1108  16-DEC-77 11:28  PAGE 74
DIRECTIVE -- WAITFOR NEXT SIGNIFICANT EVENT

   4553					.SBTTL	DIRECTIVE -- WAITFOR NEXT SIGNIFICANT EVENT
   4554					;+
   4555					; THE "WAIT FOR NEXT SIGNIFICANT EVENT" DIRECTIVE
   4556					;
   4557					; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO SUSPEND THE EXECUTION OF THE
   4558					; ISSUING TASK UNTIL THE NEXT SIGNIFICANT EVENT HAS BEEN DECLARED.
   4559					;
   4560					; A ONE WORD DPB OF THE FOLLOWING FORMAT IS USED:
   4561					;
   4562					;	WD. 00 -- DIC (49.) & DPB SIZE (1.).
   4563					;
   4564					; THE FOLLOWING STATUS IS RETURNED:
   4565					;
   4566					; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE STATUS
   4567					; OF ONE (+1).
   4568					;
   4569					; CC-C SET TO INDICATE REJECTION, AND A DIRECTIVE STATUS OF:
   4570					;
   4571					;	R0 -- -99 -- DIC OR DPB SIZE IS INVALID.
   4572					;-
   4573					; CONTROL IS TRANSFERRED HERE (BY DIRECTIVE DISPATCH ROUTINE) WITH THE
   4574					; DIRECTIVE ISSUING TASK'S PS, PC, & R0-R5 PUSHED ONTO THE
   4575					; KERNEL STACK, AND R0-R5 SET AS FOLLOWS:
   4576					;	R0 -- PC OF EMT INSTRUCTION
   4577					;	R1 -- WORD FOLLOWING DIC & SIZE
   4578					;	R2 -- DPB SIZE
   4579					;	R3 -- DIC (DIRECTIVE IDENTIFICATION CODE)
   4580					;	R5 -- ATL NODE ADDRESS OF ISSUING TASK (.CRTSK)
   4581					;
   4582					;
   4583	011614	011505 			.D.WSE::MOV	@R5,R5		;ADVANCE R5 (ATL NODE POINTER)
   4584	011616	012737 	000001 	031120'		MOV	#EV.SE,.SEWFL
   4585	011624	104401 				TRAP	DR.01		;RETURN STS=+1.
   4586					;
   4587						.TITLE	DMMKT	- "MARK TIME" DIRECTIVE MODULE
   4588	011626					IDENT$	1,0
						.IDENT	/001000/
   4589					;
   4590					;                             COPYRIGHT (C) 1975, 1978 BY
   4591					;                     DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
   4592					;
   4593					;       THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE  USED  AND  COPIED
   4594					;       ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
   4595					;       OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR ANY OTHER COPIES THERE-
   4596					;       OF  MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
   4597					;       NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
   4598					;
   4599					;       THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT
   4600					;       NOTICE  AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
   4601					;       CORPORATION.
   4602					;
   4603					;       DIGITAL ASSUMES NO RESPONSIBILITY FOR THE  USE  OR  RELIABILITY  OF  ITS
   4604					;       SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
   4605					;
   4606					;		MODULE: "MARK TIME" DIRECTIVE
   4607					;
   4608					;		VERSION: 01-00
DMMKT	- "MARK TIME" DIRECTIVE	MACRO M1108  16-DEC-77 11:28  PAGE 74-1
DIRECTIVE -- WAITFOR NEXT SIGNIFICANT EVENT

   4609					;
   4610					;		AUTHOR:  R. MCLEAN
   4611					;
   4612					;		DATE: 19 APR 75
   4613					;
   4614					;
   4615					;	THIS MODULE CONTAINS:
   4616					;
   4617					;	1 -- CODE TO SERVICE THE "MARK TIME" DIRECTIVE.
   4618					;
   4619					;	MACROS
   4621					;
   4622						.MCALL	CALL,RETURN,MFPI,MTPI,MTPS,MFPS
DMMKT	- "MARK TIME" DIRECTIVE	MACRO M1108  16-DEC-77 11:28  PAGE 75
DIRECTIVE -- MARK TIME

   4625						.SBTTL	DIRECTIVE -- MARK TIME
   4626					;+
   4627					; THE "MARK TIME" DIRECTIVE
   4628					;
   4629					; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO DECLARE A SIGNIFICANT EVENT
   4630					; IN AN INDICATED TIME INTERVAL FROM ISSUANCE.
   4631					;
   4632					; IF AN EVENT FLAG IS SPECIFIED, IT IS CLEARED AT ISSUANCE AND SET
   4633					; AT THE TIME OF THE SIGNIFICANT EVENT.
   4634					;
   4635					;
   4636					; IF  AN EVENT FLAG NUMBER
   4637					; IS SPECIFIED, THE SIGNIFICANT EVENT WILL STILL OCCUR AFTER
   4638					; THE INDICATED TIME INTERVAL.
   4639					;
   4640					; A FOUR WORD DPB OF THE FOLLOWING FORMAT IS USED:
   4641					;
   4642					;	WD. 00 -- DIC (23.) & DPB SIZE (5.),
   4643					;	WD. 01 -- EVENT FLAG NUMBER (EFN),
   4644					;	WD. 02 -- TIME INTERVAL MAGNITUDE, ( IN TICS)
   4645					;	WD. 03 -- RESCHEDULE INTERVAL (IN TICS)
   4646					;	WD. 04 -- AST TRAP ADDRESS
   4647					;
   4648					; THE FOLLOWING STATUS IS RETURNED:
   4649					;
   4650					; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE STATUS
   4651					; OF ONE (+1).
   4652					;
   4653					; CC-C SET TO INDICATE REJECTION, AND A DIRECTIVE STATUS OF:
   4654					;
   4655					;	-01 -- UNAVAILABLE ENTRY (FOR CLOCK LIST),
   4656					;
   4657					;	-97 -- INVALID EVENT FLAG NUMBER (EFN<0 OR EFN>64),
   4658					;	-99 -- DIC OR DPB SIZE IS INVALID.
   4659					;-
   4660					; CONTROL IS TRANSFERRED HERE (BY DIRECTIVE DISPATCH ROUTINE) WITH THE
   4661					; DIRECTIVE ISSUING TASK'S PS, PC, & R0-R5 PUSHED ONTO THE
   4662					;  STACK, AND R0-R5 SET AS FOLLOWS:
   4663					;
   4664					; R5 IS LEFT UNALTERED (I.E. POINTING TO ISSUING TASK'S ATL NODE).
   4665					;
   4666					;
   4667									;R1 IS POINTING TO EFN IN DPB
   4668					;
   4669					;
   4670	011626				.D.MKT::CALL	.CEFN		;CONVERT EFN TO: (1) FLAG WORD ADDRESS
	011626	004737 	040404'			JSR	PC,.CEFN
   4671									;IN R2, AND (2) FLAG MASK IN R3 (R2 IS
   4672									;POINTING TO EFN).  IF EFN<0, OR EFN>64.,
   4673									;RETURN STS=-97.  IF EFN=0 (NO EVENT FLAG
   4674									;SPECIFIED), RETURN WITH R2=R3=00.
   4675									;CONDITION CODES ARE SET PER "TST R3".
   4676					;
   4677	011632	001001 				BNE	10$		;ALL OK WITH EFN
   4678	011634	104637 				TRAP	DE.97		;RETURN STS=-97
   4679	011636	062701 	000004 		10$:	ADD	#4,R1		;R1 IS POINTING TO THE EFN, ADVANCE TO THE
   4680									;FIRST WORD (MAGNITUDE) OF TIME INTERVAL.
DMMKT	- "MARK TIME" DIRECTIVE	MACRO M1108  16-DEC-77 11:28  PAGE 75-1
DIRECTIVE -- MARK TIME

   4681					;
   4682	011642	010246 				MOV	R2,-(SP)	;PUSH EFN WORD ADDRESS
   4683	011644	010346 				MOV	R3,-(SP)	;PUSH EFN MASK
   4684					;
   4685	011646					MFPI	(R1)		;PUSH THE RESCHED INTERVAL
	011646	011146 				MOV	(R1),-(SP)
   4686	011650					MFPI	-(R1)		;PUSH TIME INTERVAL MAGNITUED MAGNITUDE
	011650	014146 				MOV	-(R1),-(SP)
   4687	011652					MFPI	4(R1)		;PUSH AST TRAP ADDRES
	011652	016146 	000004 			MOV	4(R1),-(SP)
   4688					;
   4689					;
   4690					; STACK & REGISTER SUMMARY:
   4691					;
   4692					;	SP+10 -- FLAG WORD ADDRESS (OR ZERO)
   4693					;	SP+06 -- FLAG MASK (OR ZERO)
   4694					;	SP+04 -- TIME RESCHEDULE INTERVAL
   4695					;	SP+02 -- TIME INTERVAL
   4696					;	SP+00 -- AST TRAP ADDRESS
   4697					;
   4698					;	R5 -- ATL NODE ADDRESS OF ISSUING TASK
   4699					;	R1 -- ADDRESS OF NODE FOR CLOCK QUEUE
   4700					;
   4701	011656	046676 	000006 	000010 		BIC	+6(SP),@+10(SP)	;CLEAR INDICATED EVENT FLAG
   4702					;
   4703	011664	012700 	034452'			MOV	#.CLKBA,R0	;POINT TO BEGINNING OF CLOCK LIST
   4704	011670	022700 	034656'		20$:	CMP	#.CLKEA,R0	;END OF LIST?
   4705	011674	001001 				BNE	30$		;NO -- MUST BE OK
   4706	011676	104777 				TRAP	DE.01		;YES -- RAN OUT OF CLOCK ENTRIES
   4707	011700	005710 			30$:	TST	@R0		;LOOK FOR A FREE ENTRY
   4708	011702	001403 				BEQ	40$		;FOUND ONE
   4709	011704	062700 	000014 			ADD	#C.SZ,R0	;NOT HERE -- TRYNEXT ENTRY
   4710	011710	000767 				BR	20$
   4711					;
   4712					;
   4713	011712	010520 			40$:	MOV	R5,(R0)+	;ATL NODE OF ISSUING TASK
   4714	011714	012620 				MOV	(SP)+,(R0)+	;AST ADDRESS
   4715	011716	012620 				MOV	(SP)+,(R0)+	;(POP) SCHEDULE INTERVAL
   4716	011720	012620 				MOV	(SP)+,(R0)+	;(POP) RESCHEDULE INTERVAL
   4717	011722	012620 				MOV	(SP)+,(R0)+	;(POP) EVENT FLAG MASK
   4718	011724	012620 				MOV	(SP)+,(R0)+	;(POP) EVENT FLAG WORD ADDRESS
   4719					;
   4720	011726	104401 				TRAP	DR.01		;RETURN STS=+1
   4721					;
   4722						.TITLE	DMCMT	- "CANCEL MARK TIME" DIRECTIVE MODULE
   4723	011730					IDENT$	1,0
						.IDENT	/001000/
   4724					;
   4725					;                             COPYRIGHT (C) 1975, 1978 BY
   4726					;                     DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
   4727					;
   4728					;       THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE  USED  AND  COPIED
   4729					;       ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
   4730					;       OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR ANY OTHER COPIES THERE-
   4731					;       OF  MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
   4732					;       NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
   4733					;
DMCMT	- "CANCEL MARK TIME" DI	MACRO M1108  16-DEC-77 11:28  PAGE 75-2
DIRECTIVE -- MARK TIME

   4734					;       THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT
   4735					;       NOTICE  AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
   4736					;       CORPORATION.
   4737					;
   4738					;       DIGITAL ASSUMES NO RESPONSIBILITY FOR THE  USE  OR  RELIABILITY  OF  ITS
   4739					;       SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
   4740					;
   4741					;		MODULE: "CANCEL MARK TIME" DIRECTIVE
   4742					;
   4743					;		VERSION: 01-00
   4744					;
   4745					;		AUTHOR:  R. MCLEAN
   4746					;
   4747					;		DATE: 19 MAR 75
   4748					;
   4749					;
   4750					;	THIS MODULE CONTAINS:
   4751					;
   4752					;	1 -- CODE TO SERVICE THE "CANCEL MARK TIME" DIRECTIVE.
   4753					;
   4754					;	MACROS
   4755					;
   4757						.MCALL	CALL,RETURN
DMCMT	- "CANCEL MARK TIME" DI	MACRO M1108  16-DEC-77 11:28  PAGE 76
DIRECTIVE -- CANCEL MARK-TIME REQUESTS

   4760						.SBTTL	DIRECTIVE -- CANCEL MARK-TIME REQUESTS
   4761					;+
   4762					; THE "CANCEL MARK-TIME REQUESTS" DIRECTIVE
   4763					;
   4764					; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO CANCEL MARK-TIME REQUESTS
   4765					; THAT HAVE BEEN MADE BY THE ISSUING TASK.
   4766					;
   4767					; A ONE WORD DPB OF THE FOLLOWING FORMAT IS USED TO CANCEL ALL MARK-TIME
   4768					; REQUESTS THAT HAVE BEEN MADE BY THE ISSUING TASK:
   4769					;
   4770					;	WD. 00 -- DIC (21.) & DPB SIZE (1.).
   4771					;
   4772					;
   4773					; THE FOLLOWING STATUS IS RETURNED:
   4774					;
   4775					; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE STATUS
   4776					; OF ONE (R0 - +1).
   4777					;
   4778					; CC-C SET TO INDICATE REJECTION, AND A DIRECTIVE STATUS OF:
   4779					;
   4780					;	R0 -- -97 -- INVALID EVENT FLAG NUMBER (EFN<0 OR EFN>64),
   4781					;	R0 -- -99 -- DIC OR DPB SIZE IS INVALID.
   4782					;-
   4783					; CONTROL IS TRANSFERRED HERE (BY DIRECTIVE DISPATCH ROUTINE) WITH THE
   4784					; DIRECTIVE ISSUING TASK'S PS, PC, & R0-R5 PUSHED ONTO THE
   4785					;  STACK, AND R0-R5 SET AS FOLLOWS:
   4786					;	R0 -- PC OF EMT INSTRUCTION
   4787					;	R1 -- WORD FOLLOWING DIC & SIZE
   4788					;	R2 -- DPB SIZE
   4789					;	R3 -- DIC (DIRECTIVE IDENTIFICATION CODE)
   4790					;
   4791					;
   4792					; ALL MARK-TIME REQUESTS BY THE ISSUING TASK ARE TO BE DELETED
   4793					; FROM THE CLOCK QUEUE.
   4794					;
   4795					;
   4796	011730	010546 			.D.CMT::MOV	R5,-(SP)	;SAVE CURRENT TASK POINTER
   4797	011732	012704 	034452'			MOV	#.CLKBA,R4	;USE R4 TO SCAN DEQUE
   4798					;
   4799	011736	020427 	034656'		50$:	CMP	R4,#.CLKEA	;END OF SCAN (END OF DEQUE)?
   4800	011742	001002 				BNE	60$
   4801	011744	012605 				MOV	(SP)+,R5	;RESTORE CURRENT TASK POINTER
   4802	011746	104401 				TRAP	DR.01		;YES -- RETURN STS=+1.
   4803									;NO -- CHECK NODE POINTED TO BY R4
   4804	011750	026405 	000000 		60$:	CMP	C.AT(R4),R5	;YES -- WAS REQUEST MADE BY ISSUING TASK?
   4805	011754	001005 				BNE	45$		;NO -- NEXT NODE
   4806									;DELETE NODE (PER R4) FROM CLOCK QUEUE, AND
   4807	011756					CALL	.CKDEL		;QUEUE NODE (R4 IS NOT ALTERED).
	011756	004737 	040472'			JSR	PC,.CKDEL
   4808					;
   4809					;
   4810	011762	000765 				BR	50$		;TEST FOR END OF DEQUE
   4811					;
   4812	011764	012605 			90$:	MOV	(SP)+,R5	;RESTORE CURRENT TASK POINTER
   4813	011766	104637 				TRAP	DE.97		;TO RETURN STS=-97.
   4814					;
   4815	011770	062704 	000014 		45$:	ADD	#C.SZ,R4	;UPDATE THE Q SIZE TO LOOK AT NEXT ENTRY
DMCMT	- "CANCEL MARK TIME" DI	MACRO M1108  16-DEC-77 11:28  PAGE 76-1
DIRECTIVE -- CANCEL MARK-TIME REQUESTS

   4816	011774	000760 				BR	50$
   4817					;
   4818						.TITLE	DMSUS	- "SUSPEND" & "RESUME" DIRECTIVES MODULE
   4819	011776					IDENT$	1,0
						.IDENT	/001000/
   4820					;
   4821					;                             COPYRIGHT (C) 1975, 1978 BY
   4822					;                     DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
   4823					;
   4824					;       THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE  USED  AND  COPIED
   4825					;       ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
   4826					;       OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR ANY OTHER COPIES THERE-
   4827					;       OF  MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
   4828					;       NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
   4829					;
   4830					;       THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT
   4831					;       NOTICE  AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
   4832					;       CORPORATION.
   4833					;
   4834					;       DIGITAL ASSUMES NO RESPONSIBILITY FOR THE  USE  OR  RELIABILITY  OF  ITS
   4835					;       SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
   4836					;
   4837					;		MODULE: "SUSPEND" & "RESUME" DIRECTIVES
   4838					;
   4839					;		VERSION: 01-00
   4840					;
   4841					;		AUTHOR: R. MCLEAN
   4842					;
   4843					;		DATE: 19 MAR 75
   4844					;
   4845					;
   4846					;	THIS MODULE CONTAINS:
   4847					;
   4848					;	1 -- CODE TO SERVICE THE "SUSPEND" DIRECTIVE,
   4849					;	2 -- CODE TO SERVICE THE "RESUME" DIRECTIVE.
   4850					;
   4851					;	MACROS
   4852					;
   4854						.MCALL	CALL,RETURN
DMSUS	- "SUSPEND" & "RESUME" 	MACRO M1108  16-DEC-77 11:28  PAGE 77
DIRECTIVE -- SUSPEND EXECUTION

   4857						.SBTTL	DIRECTIVE -- SUSPEND EXECUTION
   4858					;+
   4859					; THE "SUSPEND" DIRECTIVE
   4860					;
   4861					; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO SUSPEND THE EXECUTION OF THE
   4862					; ISSUING TASK.
   4863					;
   4864					; A ONE WORD DPB OF THE FOLLOWING FORMAT IS USED:
   4865					;
   4866					;	WD. 00 -- DIC (23.) & DPB SIZE (1.).
   4867					;
   4868					; THE FOLLOWING STATUS IS RETURNED:
   4869					;
   4870					; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE STATUS
   4871					; OF TWO (+2).  TWO IS RETURNED SO THAT "RECEIVE" CAN BE IDENTIFIED IN THE CASE
   4872					; OF A "RECEIVE OR SUSPEND" DIRECTIVE.
   4873					;
   4874					; CC-C SET TO INDICATE REJECTION, AND A DIRECTIVE STATUS OF:
   4875					;
   4876					;	-99 -- DIC OR DPB SIZE IS INVALID.
   4877					;-
   4878					; CONTROL IS TRANSFERRED HERE (BY DIRECTIVE DISPATCH ROUTINE) WITH THE
   4879					; DIRECTIVE ISSUING TASK'S PS, PC, & R1-R5 PUSHED ONTO THE
   4880					;  STACK, AND R0-R5 SET AS FOLLOWS:
   4881					;	R0 -- PC OF EMT INSTRUCTION
   4882					;	R1 -- WORD FOLLOWING DIC & SIZE
   4883					;	R2 -- DPB SIZE
   4884					;	R3 -- DIC (DIRECTIVE IDENTIFICATION CODE)
   4885					;	R5 -- ATL NODE ADDRESS OF ISSUING TASK (.CRTSK)
   4886					;
   4887					; R5 IS SET TO THE ATL NODE ADDRESS OF THE TASK OF NEXT LOWEST PRIORITY
   4888					; THAN THE ISSUING TASK.
   4889					;
   4890					; COMMON CODE FOR "SUSPEND" & "RECEIVE OR SUSPEND" -- R5 CONTAINS THE
   4891					; ISSUING TASK'S ATL NODE ADDRESS.
   4892					;
   4893	011776	112765 	000012 	000014 	.D.SUS::MOVB	#TS.SUS,A.TS(R5) ;CHANGE TASK STATUS TO "SUSPENDED"
   4894	012004	011505 				MOV	@R5,R5		;POINT R5 TO NEXT LOWEST PRIORITY TASK
   4895	012006	104402 				TRAP	DR.02		;AND RETURN STS=+2.
DMSUS	- "SUSPEND" & "RESUME" 	MACRO M1108  16-DEC-77 11:28  PAGE 78
DIRECTIVE -- RESUME TASK EXECUTION

   4897					.SBTTL	DIRECTIVE -- RESUME TASK EXECUTION
   4898					;+
   4899					; THE "RESUME" DIRECTIVE
   4900					;
   4901					; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO RESUME THE EXECUTION OF A TASK
   4902					; THAT HAS ISSUED A "SUSPEND" DIRECTIVE.
   4903					;
   4904					; A THREE WORD DPB OF THE FOLLOWING FORMAT IS USED:
   4905					;
   4906					;	WD. 00 -- DIC (25.) & DPB SIZE (3.),
   4907					;	WD. 01 -- TASK NAME (FIRST HALF),
   4908					;	WD. 02 -- TASK NAME (SECOND HALF).
   4909					;
   4910					; THE FOLLOWING STATUS IS RETURNED:
   4911					;
   4912					; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE STATUS
   4913					; OF ONE (+1).
   4914					;
   4915					; CC-C SET TO INDICATE REJECTION, AND A DIRECTIVE STATUS OF:
   4916					;
   4917					;	-02 -- TASK NOT INSTALLED,
   4918					;	-07 -- TASK NOT ACTIVE,
   4919					;	-08 -- TASK NOT SUSPENDED,
   4920					;
   4921					;	-99 -- DIC OR DPB SIZE IS INVALID.
   4922					;-
   4923					; CONTROL IS TRANSFERRED HERE (BY DIRECTIVE DISPATCH ROUTINE) WITH THE
   4924					; DIRECTIVE ISSUING TASK'S PS, PC, & R1-R5 PUSHED ONTO THE
   4925					; KERNEL STACK, AND R0-R5 SET AS FOLLOWS:
   4926					;	R0 -- PC OF EMT INSTRUCTION
   4927					;	R1 -- WORD FOLLOWING DIC & SIZE
   4928					;	R2 -- DPB SIZE
   4929					;	R3 -- DIC (DIRECTIVE IDENTIFICATION CODE)
   4930					;	R5 -- ATL NODE ADDRESS OF ISSUING TASK (.CRTSK)
   4931					;
   4932					;	R5 -- LAST WORD OF DPB.
   4933					;
   4934					; R5 IS LEFT UNALTERED (I.E. POINTING TO ISSUING TASK'S ATL NODE).
   4935					;
   4936	012010				.D.RES::CALL	..FSTD		;SET R2 TO STD ENTRY ADDRESS, OR TO
	012010	004737 	041562'			JSR	PC,..FSTD
   4937									;ZERO IF TASK NAME NOT FOUND (AND SET
   4938									;CONDITION CODES PER "TST R2").
   4939									;
   4940									;ADVANCE R1 BY FOUR (PAST TASK NAME).
   4941					;
   4942	012014	001001 				BNE	10$		;IF TASK NOT INSTALLED, RETURN STS=-02.
   4943	012016	104776 				TRAP	DE.02
   4944	012020	032762 	000001 	000006 	10$:	BIT	#SF.TA,S.FW(R2)	;IS TASK ACTIVE?
   4945	012026	001425 				BEQ	70$		;NO -- RETURN STS=-07.
   4946	012030	012703 	032552'			MOV	#.ATLLH,R3	;YES -- SETUP FOR ATL SCAN
   4947	012034				20$:
   4948	012034	011303 				MOV	@R3,R3		;SETUP R3 TO EXAMINE NEXT ENTRY
   4949	012036	020327 	032552'			CMP	R3,#.ATLLH	;END OF DEQUE?
   4950	012042	001417 				BEQ	70$		;YES -- RETURN STS=-07.
   4951	012044	026302 	000016 			CMP	A.TD(R3),R2	;NO -- STD ADDRESS MATCH?
   4952	012050	001371 				BNE	20$		;NO -- CHECK NEXT ATL NODE
DMSUS	- "SUSPEND" & "RESUME" 	MACRO M1108  16-DEC-77 11:28  PAGE 78-1
DIRECTIVE -- RESUME TASK EXECUTION

   4953	012052				30$:
   4954	012052	126327 	000014 	000012 		CMPB  A.TS(R3),#TS.SUS	;NO -- IS TASK SUSPENDED?
   4955	012060	001007 				BNE	60$
   4956					;
   4957	012062	112763 	000010 	000014 		MOVB	#TS.RUN,A.TS(R3) ;SET STATUS TO RUNNING
   4958									;YES -- CHANGE STATUS TO RUNNING, DECLARE A
   4959	012070	152737 	000001 	031116'		BISB  #EV.SE,.SERFG+0	;SIGNIFICANT EVENT, AND RETURN STS=+1.
   4960	012076	104401 				TRAP	DR.01		;AND RETURN STS=+1.
   4961	012100	104770 			60$:	TRAP	DE.08		;NO -- RETURN STS=-08.
   4962					;
   4963	012102	104771 			70$:	TRAP	DE.07		;COMMON RETURN STS=-07.
   4964					;
   4965						.TITLE	DMEXT	- "EXIT" DIRECTIVE MODULE
   4966	012104					IDENT$	1,0
						.IDENT	/001000/
   4967					;
   4968					;                             COPYRIGHT (C) 1975, 1978 BY
   4969					;                     DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
   4970					;
   4971					;       THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE  USED  AND  COPIED
   4972					;       ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
   4973					;       OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR ANY OTHER COPIES THERE-
   4974					;       OF  MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
   4975					;       NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
   4976					;
   4977					;       THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT
   4978					;       NOTICE  AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
   4979					;       CORPORATION.
   4980					;
   4981					;       DIGITAL ASSUMES NO RESPONSIBILITY FOR THE  USE  OR  RELIABILITY  OF  ITS
   4982					;       SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
   4983					;
   4984					;		MODULE: "EXIT" DIRECTIVE
   4985					;
   4986					;		VERSION: 01-00
   4987					;
   4988					;		AUTHOR: R. MCLEAN
   4989					;
   4990					;		DATE: 19 MAR 75
   4991					;
   4992					;
   4993					;	THIS MODULE CONTAINS:
   4994					;
   4995					;	1 -- CODE TO SERVICE THE "EXIT" DIRECTIVE
   4996					;
   4997					;	MACROS
   4998					;
   5000						.MCALL	CALL,RETURN
DMEXT	- "EXIT" DIRECTIVE MODU	MACRO M1108  16-DEC-77 11:28  PAGE 79
DIRECTIVE -- TASK EXIT

   5003						.SBTTL	DIRECTIVE -- TASK EXIT
   5004					;+
   5005					; THE "TASK EXIT" DIRECTIVE
   5006					;
   5007					; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO TERMINATE THE EXECUTION OF THE
   5008					; ISSUING TASK.
   5009					;
   5010					; A ONE WORD DPB OF THE FOLLOWING FORMAT IS USED:
   5011					;
   5012					;	WD. 00 -- DIC (27.) & DPB SIZE (1.).
   5013					;
   5014					; THE FOLLOWING STATUS IS RETURNED:
   5015					;
   5016					; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE STATUS
   5017					; OF ONE (+1).
   5018					;
   5019					; CC-C SET TO INDICATE REJECTION, AND A DIRECTIVE STATUS OF:
   5020					;
   5021					;	-99 -- DIC OR DPB SIZE IS INVALID.
   5022					;-
   5023					; CONTROL IS TRANSFERRED HERE (BY DIRECTIVE DISPATCH ROUTINE) WITH THE
   5024					; DIRECTIVE ISSUING TASK'S PS, PC, & R1-R5 PUSHED ONTO THE
   5025					;  STACK, AND R0-R5 SET AS FOLLOWS:
   5026					;	R1 -- ADDRESS OF WORD FOLLOWING DIC & SIZE
   5027					;	R2 -- DPB SIZE
   5028					;	R3 -- DIC (DIRECTIVE IDENTIFICATION CODE)
   5029					;	R5 -- ATL NODE ADDRESS OF ISSUING TASK (.CRTSK)
   5030					;
   5031					;
   5032					; R5 IS LEFT UNALTERED (I.E. POINTING TO ISSUING TASK'S ATL NODE).
   5033					;
   5034					; R5 CONTAINS THE EXITING TASK'S ATL NODE ADDRESS.
   5035					;
   5036	012104	042766 	000340 	000020 	.D.EXT::BIC  #000340,EM.DRO(SP)	;SET ISSUING TASK'S PROCESSRO PRIROITY TO ZERO TO
   5037									;PREVENT RETURN TO TASK IF EXIT DIRECTIVE HAS
   5038									;BEEN ISSUED FROM NON TASK LEVEL
   5039					;
   5040	012112	112765 	000026 	000014 		MOVB  #TS.EXT,A.TS(R5)	;CHANGE STATUS TO "EXIT", INDICATE
   5041	012120	005065 	000024 			CLR	A.FM+0(R5)	;NO TERMINATION NOTIFICATION, AND
   5042	012124	104401 				TRAP	DR.01		;EXIT DIRECTIVE SERVICE (SET STS=+1)
   5043					;
   5044						.TITLE	DMQIO	- "QUEUE I/O" DIRECTIVE MODULE
   5045	012126					IDENT$	1,0
						.IDENT	/001000/
   5046					;
   5047					;                             COPYRIGHT (C) 1975, 1978 BY
   5048					;                     DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
   5049					;
   5050					;       THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE  USED  AND  COPIED
   5051					;       ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
   5052					;       OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR ANY OTHER COPIES THERE-
   5053					;       OF  MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
   5054					;       NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
   5055					;
   5056					;       THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT
   5057					;       NOTICE  AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
   5058					;       CORPORATION.
DMQIO	- "QUEUE I/O" DIRECTIVE	MACRO M1108  16-DEC-77 11:28  PAGE 79-1
DIRECTIVE -- TASK EXIT

   5059					;
   5060					;       DIGITAL ASSUMES NO RESPONSIBILITY FOR THE  USE  OR  RELIABILITY  OF  ITS
   5061					;       SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
   5062					;
   5063					;		MODULE: "QUEUE I/O" DIRECTIVE
   5064					;
   5065					;		VERSION: 01-00
   5066					;
   5067					;		AUTHOR: R. MCLEAN
   5068					;
   5069					;		DATE: 19 JUL 75
   5070					;
   5071					;
   5072					;	THIS MODULE CONTAINS:
   5073					;
   5074					;	1 -- CODE TO SERVICE THE "QUEUE I/O" DIRECTIVE.
   5075					;	2 -- CODE TO SERVICE THE "QUEUE I/O AND WAIT" DIRECTIVE.
   5076					;
   5077					;	MACROS
   5078					;
   5080						.MCALL	CALL,RETURN,MFPI,MTPI,MTPS,MFPS
DMQIO	- "QUEUE I/O" DIRECTIVE	MACRO M1108  16-DEC-77 11:28  PAGE 80
DIRECTIVE -- QUEUE I/O

   5083						.SBTTL	DIRECTIVE -- QUEUE I/O
   5084					;+
   5085					; THE "QUEUE I/O" DIRECITVE
   5086					;
   5087					; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO PLACE AN I/O REQUEST FOR AN
   5088					; INDICATED DEVICE IN A QUEUE OF PRIORITY ORDERED REQUESTS FOR THAT DEVICE-
   5089					; UNIT.  THE DEVICE-UNIT IS SPECIFIED AS A LOGICAL UNIT NUMBER (LUN), WHICH
   5090					; IS MAPPED INTO A PHYSICAL UNIT SPECIFICATION PER LUN ASSIGNMENT.
   5091					;
   5092					; EACH LUN IS REPRESENTED BY AN ENTRY IN THE ISSUING TASK'S LUT (LOGICAL
   5093					; UNIT TABLE) IN THE TASK'S HEADER.  EACH PHYSICAL UNIT IS REPRESENTED
   5094					; BY AN ENTRY IN THE PUD (PHYSICAL UNIT DIRECTORY).  WHEN A LUN IS
   5095					; ASSIGNED TO A PHYSICAL UNIT, THE ADDRESS OF THE CORRESPONDING PUD
   5096					; ENTRY IS SET IN THE CORRESPONDING LUT ENTRY.  WHEN A LUN IS NOT
   5097					; ASSIGNED TO A PHYSICAL UNIT ("DEASSIGNED" OR "ASSIGNED TO NONE"), THE
   5098					; CORRESPONDING LUT ENTRY IS SET TO ZERO.
   5099					;
   5100					; NORMALLY, A SIGNIFICANT EVENT IS DECLARED BY HANDLER TASKS (VIA SYSTEM
   5101					; SUBROUTINES) UPON I/O COMPLETION.
   5102					;
   5103					;	IF AN EVENT FLAG IS SPECIFIED, IT IS CLEARED WHEN THE REQUEST
   5104					;	IS QUEUED, AND SET AT THE SIGNIFICANT EVENT.
   5105					;
   5106					;	IF AN AST SERVICE ENTRY POINT IS SPECIFIED, THE AST WILL OCCUR
   5107					;	UPON I/O COMPLETION WITH THE TASK'S PS, PC, VIRTUAL ZERO (DIRECTIVE
   5108					;	STATUS), AND [ADDRESS OF I/O STATUS BLOCK] PUSHED ONTO THE TASK'S
   5109					;	(USER) STACK.
   5110					;
   5111					; A 6-12 WORD DPB OF THE FOLLOWING FORMAT IS USED:
   5112					;
   5113					;	WD. 00 -- DIC (01.) & DPB SIZE (6-12),
   5114					;	WD. 01 -- I/O FUNCTION CODE,
   5115					;	WD. 02 -- LUN,
   5116					;	WD. 03 -- [EFN] & [PRIORITY],
   5117					;	WD. 04 -- [ADDRESS OF I/O STATUS BLOCK],
   5118					;	WD. 05 -- [I/O DONE AST SERVICE ENTRY POINT],
   5119					;	WD. 06 -- PARAMETER #1,
   5120					;	WD. 07 -- PARAMETER #2,
   5121					;	WD. 10 -- PARAMETER #3,
   5122					;	WD. 11 -- PARAMETER #4,
   5123					;	WD. 12 -- PARAMETER #5,
   5124					;	WD. 13 -- PARAMETER #6.
   5125					;
   5126					; THE FORMAT OF THE I/O REQUEST NODE CREATED IS DESCRIBED
   5127					; UNDER "SYMBOLIC DEFINITIONS".
   5128					;
   5129					; THE FOLLOWING STATUS IS RETURNED:
   5130					;
   5131					; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE STATUS
   5132					; OF ONE (+1).
   5133					;
   5134					; CC-C SET TO INDICATE REJECTION, AND A DIRECTIVE STATUS OF:
   5135					;
   5136					;	-01 -- UNAVAILABLE POOL NODE FOR REQUEST QUEUE,
   5137					;	-05 -- UNASSIGNED LUN,
   5138					;
   5139					;	-95 -- INVALID PRIORITY (>250.),
DMQIO	- "QUEUE I/O" DIRECTIVE	MACRO M1108  16-DEC-77 11:28  PAGE 80-1
DIRECTIVE -- QUEUE I/O

   5140					;	-96 -- INVALID LUN,
   5141					;	-97 -- INVALID EFN (>64.),
   5142					;	-98 -- PART OF DPB IS OUT OF ISSUING TASK'S ADDRESS SPACE,
   5143					;	-99 -- DIC OR DPB SIZE IS INVALID.
   5144					; THE "QUEUE I/O AND WAIT" DIRECITVE
   5145					;
   5146					; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO PLACE AN I/O REQUEST FOR AN
   5147					; INDICATED DEVICE IN A QUEUE OF PRIORITY ORDERED REQUESTS FOR THAT DEVICE-
   5148					; UNIT.  THE DEVICE-UNIT IS SPECIFIED AS A LOGICAL UNIT NUMBER (LUN), WHICH
   5149					; IS MAPPED INTO A PHYSICAL UNIT SPECIFICATION PER LUN ASSIGNMENT.
   5150					;
   5151					; EACH LUN IS REPRESENTED BY AN ENTRY IN THE ISSUING TASK'S LUT (LOGICAL
   5152					; UNIT TABLE) IN THE TASK'S HEADER.  EACH PHYSICAL UNIT IS REPRESENTED
   5153					; BY AN ENTRY IN THE PUD (PHYSICAL UNIT DIRECTORY).  WHEN A LUN IS
   5154					; ASSIGNED TO A PHYSICAL UNIT, THE ADDRESS OF THE CORRESPONDING PUD
   5155					; ENTRY IS SET IN THE CORRESPONDING LUT ENTRY.  WHEN A LUN IS NOT
   5156					; ASSIGNED TO A PHYSICAL UNIT ("DEASSIGNED" OR "ASSIGNED TO NONE"), THE
   5157					; CORRESPONDING LUT ENTRY IS SET TO ZERO.
   5158					;
   5159					; NORMALLY, A SIGNIFICANT EVENT IS DECLARED BY HANDLER TASKS (VIA SYSTEM
   5160					; SUBROUTINES) UPON I/O COMPLETION.
   5161					;
   5162					;	IF AN EVENT FLAG IS SPECIFIED, IT IS CLEARED WHEN THE REQUEST
   5163					;	IS QUEUED, AND SET AT THE SIGNIFICANT EVENT.
   5164					;	IF AN EVENT FLAG IS SPECIFIED, A WAIT DIRECTIVE IS ALSO
   5165					;	EXECUTED BEFORE TASK SWITCHING IS ENABLED.
   5166					;
   5167					;	IF NO EVENT FLAG IS SPECIFIED THE I/O WILL BE QUEUE'D
   5168					;	AND THE WAIT DIRECTIVE WILL BE REJECTED (STATUS -97.)
   5169					;
   5170					;
   5171					;	IF AN AST SERVICE ENTRY POINT IS SPECIFIED, THE AST WILL OCCUR
   5172					;	UPON I/O COMPLETION WITH THE TASK'S PS, PC, VIRTUAL ZERO (DIRECTIVE
   5173					;	STATUS), AND [ADDRESS OF I/O STATUS BLOCK] PUSHED ONTO THE TASK'S
   5174					;	(USER) STACK.
   5175					;
   5176					; A 6-12 WORD DPB OF THE FOLLOWING FORMAT IS USED:
   5177					;
   5178					;	WD. 00 -- DIC (03.) & DPB SIZE (6-12),
   5179					;	WD. 01 -- I/O FUNCTION CODE,
   5180					;	WD. 02 -- LUN,
   5181					;	WD. 03 -- [EFN] & [PRIORITY],
   5182					;	WD. 04 -- [ADDRESS OF I/O STATUS BLOCK],
   5183					;	WD. 05 -- [I/O DONE AST SERVICE ENTRY POINT],
   5184					;	WD. 06 -- PARAMETER #1,
   5185					;	WD. 07 -- PARAMETER #2,
   5186					;	WD. 10 -- PARAMETER #3,
   5187					;	WD. 11 -- PARAMETER #4,
   5188					;	WD. 12 -- PARAMETER #5,
   5189					;	WD. 13 -- PARAMETER #6.
   5190					;
   5191					; THE FORMAT OF THE I/O REQUEST NODE CREATED IS DESCRIBED
   5192					; UNDER "SYMBOLIC DEFINITIONS".
   5193					;
   5194					; THE FOLLOWING STATUS IS RETURNED:
   5195					;
   5196					; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE STATUS
DMQIO	- "QUEUE I/O" DIRECTIVE	MACRO M1108  16-DEC-77 11:28  PAGE 80-2
DIRECTIVE -- QUEUE I/O

   5197					; OF ONE (+1).
   5198					;
   5199					; CC-C SET TO INDICATE REJECTION, AND A DIRECTIVE STATUS OF:
   5200					;
   5201					;	-01 -- UNAVAILABLE POOL NODE FOR REQUEST QUEUE,
   5202					;	-05 -- UNASSIGNED LUN,
   5203					;	-06 -- HANDLER TASK NOT DECLARED RESIDENT,
   5204					;
   5205					;	-95 -- INVALID PRIORITY (>250.),
   5206					;	-96 -- INVALID LUN,
   5207					;	-97 -- INVALID EFN (>64.), OR 0 EVENT FLAG (I/O QUEUE'D BUT WAIT NOT EXECUTED),
   5208					;	-98 -- PART OF DPB IS OUT OF ISSUING TASK'S ADDRESS SPACE,
   5209					;	-99 -- DIC OR DPB SIZE IS INVALID.
   5210					;-
   5211					; CONTROL IS TRANSFERRED HERE (BY DIRECTIVE DISPATCH ROUTINE) WITH THE
   5212					; DIRECTIVE ISSUING TASK'S PS, PC, & R5-R0 PUSHED ONTO THE
   5213					; KERNEL STACK, AND R5-R0 SET AS FOLLOWS:
   5214					; R5 IS LEFT UNALTERED (I.E. POINTING TO ISSUING TASK'S ATL NODE).
   5215					;
   5216	012126	010346 			.D.QIO::MOV	R3,-(SP)	;SAVE THE DIC TO DETERMINE IF QIO& WAIT OR JUST QIO.
   5217					;
   5218	012130				20$:	MFPS	(R1)+,R3	;SET R3 TO FUNCTION CODE
	012130	012103 				MOV	(R1)+,R3
   5219									;(LEAVE R1 POINTING TO LUN WORD)
   5220					;
   5221	012132					MFPI	(R1)+		;PUSH LUN, AND CONVERT TO PUD ENTRY ADR
	012132	012146 				MOV	(R1)+,-(SP)
   5222	012134					CALL	.VCLUN		;(LEAVE R1 POINTING TO EFN/PRI WORD)
	012134	004737 	005172'			JSR	PC,.VCLUN
   5223									;IF INVALID LUN, RETURN STS=-96.
   5224	012140	011600 				MOV	@SP,R0		;SET R0 TO PUD ENTRY ADR IF LUN ASSIGNED
   5225	012142	001001 				BNE	40$		;IF UN-ASSIGNED LUN, RETURN STS=-05.
   5226	012144	104773 				TRAP	DE.05
   5227	012146	010246 			40$:	MOV	R2,-(SP)	;PUSH DPB SIZE
   5228					;
   5229									;TO ACCESS REQUESTOR'S HEADER BY '.VCLUN').
   5230					;
   5231	012150					MFPI	+4(R1)		;PUSH I/O DONE AST ENTRY PT (OR ZERO)
	012150	016146 	000004 			MOV	+4(R1),-(SP)
   5232					;
   5233	012154					MFPI	+02(R1)		;PUSH I/O STATUS BLOCK ADR (OR ZERO),
	012154	016146 	000002 			MOV	+02(R1),-(SP)
   5234	012160	011602 				MOV	@SP,R2		;AND CLEAR TWO-WORD STATUS BLOCK.
   5235	012162	001404 				BEQ	50$		;(IF SPECIFIED).  IF PART OF STATUS
   5236	012164	005046 				CLR	-(SP)		;OUT OF ADDRESS SPACE, RETURN
   5237	012166					MTPI	(R2)+
	012166	012622 				MOV	(SP)+,(R2)+
   5238	012170	005046 				CLR	-(SP)
   5239	012172					MTPI	@R2
	012172	012612 				MOV	(SP)+,@R2
   5240	012174				50$:
   5241	012174	010346 				MOV	R3,-(SP)	;PUSH I/O FUNCTION CODE WORD
   5242					;
   5243									;R1 IS POINTING TO [EFN] IN DPB.
   5244					;
   5245	012176					CALL	.CEFN		;CONVERT EFN TO: (1) FLAG WORD ADDRESS
	012176	004737 	040404'			JSR	PC,.CEFN
DMQIO	- "QUEUE I/O" DIRECTIVE	MACRO M1108  16-DEC-77 11:28  PAGE 80-3
DIRECTIVE -- QUEUE I/O

   5246									;IN R2, AND (2) FLAG MASK IN R3 (R2 IS
   5247									;POINTING TO EFN).  IF EFN<0, OR EFN>64.,
   5248									;RETURN STS=-97.  IF EFN=0 (NO EVENT FLAG
   5249									;SPECIFIED), RETURN WITH R2=R3=00.
   5250									;CONDITION CODES ARE SET PER "TST R3".
   5251					;
   5252	012202					MFPS	@R1,R4		;SET PRIORITY IN R4, EFN IN HIGH ORDER
	012202	011104 				MOV	@R1,R4
   5253									;BYTE OF R0, AND ZERO IN LOW ORDER BYTE
   5254	012204	010400 				MOV	R4,R0		;OF R0
   5255	012206	105004 				CLRB	R4
   5256	012210	000304 				SWAB	R4
   5257	012212	000300 				SWAB	R0
   5258	012214	105000 				CLRB	R0
   5259									;IS A PRIORITY SPECIFIED?
   5260	012216	001002 				BNE	70$		;YES -- CHECK ITS VALIDITY
   5261	012220	156504 	000010 			BISB	A.RP(R5),R4	;NO -- USE RUN PARIORITY OF ISSUING TASK
   5262									;("BISB" INTO A CLEARED R4 EFFECTS A
   5263									;"MOVB" WITHOUT SIGN EXTENSION.)
   5264					;
   5265	012224				70$:	MFPI	-(R1)		;PUSH LUN & FORM LUN/EFN WORD ON STACK.
	012224	014146 				MOV	-(R1),-(SP)
   5266	012226	050016 				BIS	R0,@SP		;(R1 IS LEFT POINTING TO LUN)
   5267					;
   5268	012230	010446 				MOV	R4,-(SP)	;PUSH PRI/BYTE RESERVED FOR DPB SIZE
   5269					;
   5270					; STACK & REGISTER SUMMARY:
   5271					;
   5272					;	SP+14 -- PUD ENTRY ADDRESS
   5273					;	SP+12 -- DPB SIZE
   5274					;	SP+10 -- AST ENTRY PT (OR ZERO)
   5275					;	SP+06 -- I/O STATUS BUF ADR (OR ZERO)
   5276					;	SP+04 -- I/O FUNCTION CODE
   5277					;	SP+02 -- LUN/EFN WORD
   5278					;	SP+00 -- PRI/RESERVED BYTE
   5279					;
   5280					;	R5 -- ATL NODE ADR OF ISSUING TASK
   5281					;	R2 & R3 SETUP TO CLEAR EVENT FLAG
   5282					;
   5283	012232	116666 	000012 	000001 		MOVB	+12(SP),+1(SP)	;SET DPB SIZE IN "PRI/DPB-SIZE" WORD
   5284					;
   5285	012240	010100 				MOV	R1,R0		;SETUP R0 TO FETCH I/O PARAMETERS (FROM DPB)
   5286	012242	062700 	000010 			ADD	#10,R0
   5287	012246	010046 				MOV	R0,-(SP)	;SAVE R0
   5288					;
   5289	012250	012701 	000040 			MOV	#32.,R1		;SET UP TO PICK A NODE
   5290	012254					CALL	..ALCB
	012254	004737 	041642'			JSR	PC,..ALCB
   5291	012260	010001 				MOV	R0,R1		;SET UP NODE ADDRESS
   5292	012262	103001 				BCC	79$		;OK -- CHECK FUNCTION CODE
   5293	012264	104777 				TRAP	DE.01		;NO -- RETURN POOL EMPTY ERROR
   5294					;
   5295					;
   5296					;
   5297					; REQUEST CAN BE MADE -- STACK & REGISTER SUMMARY:
   5298					;
   5299					;	SP+14 -- PUD ENTRY ADDRESS
DMQIO	- "QUEUE I/O" DIRECTIVE	MACRO M1108  16-DEC-77 11:28  PAGE 80-4
DIRECTIVE -- QUEUE I/O

   5300					;	SP+12 -- DPB SIZE
   5301					;	SP+10 -- AST ENTRY PT (OR ZERO)
   5302					;	SP+06 -- I/O STATUS BUF ADR (OR ZERO)
   5303					;	SP+04 -- I/O FUNCTION CODE
   5304					;	SP+02 -- LUN/EFN WORD
   5305					;	SP+00 -- PRI/DPB SIZE
   5306					;
   5307					;	R5 -- ATL NODE ADR OF ISSUING TASK
   5308					;	R1 -- I/O REQUEST NODE ADDRESS
   5309					;	R2 & R3 SETUP TO CLEAR EVENT FLAG
   5310					;	R0 -- POINTING TO FIRST PARAMETER WORD IN DPB
   5311					;
   5312	012266	040312 			79$:	BIC	R3,@R2		;CLEAR EVENT FLAG, IFF SPECIFIED.
   5313									;NOTE -- IF NO EFN SPECIFIED, R3=R3=00.
   5314									;I.E., NO BITS IN LOCATION ZERO ARE CLEARED.
   5315	012270	012600 				MOV	(SP)+,R0	;RESTORE BUFFER ADDRESS
   5316					;
   5317					; FILL I/O REQUEST NODE
   5318					;
   5319	012272	010104 				MOV	R1,R4		;SETUP R4 TO FILL NODE
   5320	012274	022424 				CMP	(R4)+,(R4)+	;MOVE OVER LISTHEAD
   5321	012276	016524 	000016 			MOV	A.TD(R5),(R4)+	;SET STD ADDRESS
   5322					;
   5323	012302	010524 				MOV	R5,(R4)+	;SET ATL NODE ADR OF REQUESTOR
   5324	012304	012624 				MOV	(SP)+,(R4)+	;(POP) SET PRI/DPB-SIZE WORD
   5325	012306	011603 				MOV	@SP,R3		;SAVE LUN/EFN
   5326	012310	012624 				MOV	(SP)+,(R4)+	;(POP) SET LUN/EFN WORD
   5327	012312	012624 				MOV	(SP)+,(R4)+	;(POP) SET I/O FUNCTION CODE
   5328	012314	012624 				MOV	(SP)+,(R4)+	;(POP) SET I/O STATUS BLK ADR (OR ZERO)
   5329	012316	012624 				MOV	(SP)+,(R4)+	;(POP) SET AST ENTRY PT (OR ZERO)
   5330	012320	013724 	031262'			MOV	.SYUIC,(R4)+	;SET THE UIC
   5331					;
   5332	012324	012602 				MOV	(SP)+,R2	;(POP) SET DPB SIZE IN R2, CONVERT
   5333	012326	162702 	000006 			SUB	#6.,R2		;TO NUMBER OF I/O PARAMETERS, AND
   5334	012332	001402 				BEQ	90$		;MOVE PARAMETERS FROM DPB TO I/O
   5335	012334				80$:				;REQUEST NODE.
   5336	012334					MFPS	(R0)+,(R4)+
	012334	012024 				MOV	(R0)+,(R4)+
   5337	012336	077202 				SOB	R2,80$
   5338	012340				90$:
   5339					;
   5340					;
   5341	012340	012602 				MOV	(SP)+,R2	;(POP) SET R2 TO PUD ENTRY ADDRESS, AND
   5342	012342	016204 	000020 			MOV	U.HA(R2),R4	;SET R2 TO HANDLER TASK'S ATL NODE ADDRESS.
   5343					;
   5344					; IF FUNCTION CODE 'RF.XR' IS SET, THIS FUNCTION IS AN "EXPRESS" FUNCTION.
   5345					; EXPRESS REQUESTS ARE NORMALLY DE-QUEUED BEFORE NORMAL REQUESTS. VIZ.,
   5346					; "KILL READ REQUEST", OR "RUNDOWN I/O ON TASK".
   5347					;
   5348	012346	010137 	012566'			MOV	R1,QNDSV	;SAVE THE QIO NODE ADDRESS
   5349	012352	016100 	000014 			MOV	R.FC(R1),R0	;FIND THE FUNCTION CODE
   5350	012356	020027 	002500 			CMP	R0,#IO.STC	;CHECK TO SEE IF LEGAL
   5351	012362	101457 				BLOS	95$		;YES -- DON'T NEED FCP
   5352	012364	010246 				MOV	R2,-(SP)
   5353	012366	010346 				MOV	R3,-(SP)
   5354	012370	010203 				MOV	R2,R3		;FIND THE PUD ADDRESS
   5355	012372	016302 	000040 			MOV	U.ACP(R3),R2	;FIND THE STD ADDRESS OF THE ACP
DMQIO	- "QUEUE I/O" DIRECTIVE	MACRO M1108  16-DEC-77 11:28  PAGE 80-5
DIRECTIVE -- QUEUE I/O

   5356	012376	001015 				BNE	77$		;FOUND ACP -- DON'T DIDDLE CODES
   5357	012400	022700 	011000 			CMP	#IO.WVB,R0	;IS CODE WRITE VIRTUAL?
   5358	012404	001003 				BNE	74$		;NO -- LOOK FOR READ
   5359	012406	012761 	000400 	000014 		MOV	#IO.WLB,R.FC(R1) ;YES SET FUNCTON CODE
   5360	012414	022700 	010400 		74$:	CMP	#IO.RVB,R0	;IS FUNCTION CODE READ VIRTUAL?
   5361	012420	001036 				BNE	93$		;NO -- FORGET IT
   5362	012422	012761 	001000 	000014 		MOV	#IO.RLB,R.FC(R1) ;SET FUNCTION CODE
   5363	012430	000432 				BR	93$
   5364	012432				77$:
   5368	012432	020027 	010400 			CMP	R0,#IO.RVB	;CHECK FOR READ/WRITE VIRTUAL
   5369	012436	001403 				BEQ	71$		;YES -- ATTEMPT TO MAP IT
   5370	012440	020027 	011000 			CMP	R0,#IO.WVB	;MAYBE TRY WRITE
   5371	012444	001003 				BNE	73$		;NO -- CALL FCP
   5372	012446				71$:	CALL	..VTOL		;TRY AND MAP
	012446	004737 	044500'			JSR	PC,..VTOL
   5373	012452	103021 				BCC	93$		;MADE IT -- DON'T CALL FCP
   5374	012454	010337 	012570'		73$:	MOV	R3,QNDSV+2	;SET PUD ADDRESS
   5375	012460	016137 	000014 	012572'		MOV	R.FC(R1),QNDSV+4	;SET FUNCTION CODE
   5376	012466	012701 	012574'			MOV	#PRMBLK,R1	;POINTER TO BUFFER ADDRESS AND EFN
   5377	012472					CALL	.SEND		;SEND BLOCK
	012472	004737 	012746'			JSR	PC,.SEND
   5378	012476	005003 				CLR	R3
   5379	012500	005004 				CLR	R4		;SET DEFAULT PARTITION AND PRI FOR ACP
   5380	012502	010102 				MOV	R1,R2
   5381	012504					CALL	.REQS		;REQ ACP
	012504	004737 	004362'			JSR	PC,.REQS
   5382	012510	012603 				MOV	(SP)+,R3
   5383	012512	012602 				MOV	(SP)+,R2
   5384	012514	000414 				BR	100$
   5385					;
   5386	012516	012603 			93$:	MOV	(SP)+,R3	;RESTORE
   5387	012520	012602 				MOV	(SP)+,R2
   5388	012522				95$:				;(R2 CONTAINS PUD ENTRY ADDRESS)
   5389	012522	062702 	000022 			ADD	#U.RF,R2	;SET R2 TO I/O REQUEST DEQUE LISTHEAD ADR
   5390									;(R1 IS SET TO REQUEST NODE ADDRESS)
   5391	012526					CALL	..IPRI		;AND INSERT REQUEST NODE BY PRIORITY.
	012526	004737 	041346'			JSR	PC,..IPRI
   5392	012532	052764 	000010 	000020 		BIS	#EF.NIR,A.EF+0(R4) ;NO -- SET TRIGGER EVENT FLAG 'EF.NIR'.
   5393	012540	152737 	000001 	031116'		BISB	#EV.SE,.SERFG+0	;DECLARE SIGNIFICANT EVENT TO EFFECT "TRIGGER"
   5394					;
   5395	012546	022627 	000003 		100$:	CMP	(SP)+,#3	;CHECK THE DIC TO SEE IF QIO AND WAIT
   5396	012552	001401 				BEQ	120$		;YES -- ISSUE THE WAIT
   5397					;				;NO -- JUST RETURN
   5398	012554	104401 				TRAP	DR.01		;RETURN STS=+1
   5399					;
   5400	012556	105003 			120$:	CLRB	R3		;SET UP FOR THE WAIT DIRECTIVE
   5401	012560	000303 				SWAB	R3
   5402	012562	000137 	011432'			JMP	.D.WFO		;ISSUE WAIT DIRECTIVE
   5403					;
   5404	012566	000000 	000000 	000000 	QNDSV:	.WORD	0,0,0		;SAVE AREA FOR NODE
   5405					;
   5406	012574	012566'			PRMBLK:	.WORD	QNDSV		;POINTER TO SEND BUFFER
   5407	012576	000000 				.WORD	0		;EFN (0)
   5408						.TITLE	DMSAR	- SEND & RECEIVE DIRECTIVES MODULE
   5409	012600					IDENT$	1,0
						.IDENT	/001000/
   5410					;
DMSAR	- SEND & RECEIVE DIRECT	MACRO M1108  16-DEC-77 11:28  PAGE 80-6
DIRECTIVE -- QUEUE I/O

   5411					;
   5412					;
   5413					;
   5414					;
   5415					;
   5416					;                             COPYRIGHT (C) 1975, 1978 BY
   5417					;                     DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
   5418					;
   5419					;       THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE  USED  AND  COPIED
   5420					;       ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
   5421					;       OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR ANY OTHER COPIES THERE-
   5422					;       OF  MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
   5423					;       NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
   5424					;
   5425					;       THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT
   5426					;       NOTICE  AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
   5427					;       CORPORATION.
   5428					;
   5429					;       DIGITAL ASSUMES NO RESPONSIBILITY FOR THE  USE  OR  RELIABILITY  OF  ITS
   5430					;       SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
   5431					;
   5432					;
   5433					;
   5434					;
   5435					;
   5436					;		MODULE: SEND & RECEIVE DIRECTIVES
   5437					;
   5438					;		VERSION: 01-00
   5439					;
   5440					;		AUTHOR: R. MCLEAN
   5441					;
   5442					;		DATE: 19 MAY 75
   5443					;
   5444					;
   5445					;	THIS MODULE CONTAINS:
   5446					;
   5447					;	1 -- CODE TO SERVICE THE "SEND DATA" DIRECTIVE,
   5448					;	2 -- CODE TO SERVICE THE "SEND AND REQUEST OR RESUME" DIRECTIVE,
   5449					;	3 -- CODE TO SERVICE THE "RECEIVE DATA" DIRECTIVE,
   5450					;	4 -- CODE TO SERVICE THE "RECEIVE OR EXIT" DIRECTIVE,
   5451					;	5 -- CODE TO SERVICE THE "RECEIVE OR SUSPEND" DIRECTIVE,
   5452					;
   5453					;	MACROS
   5454					;
   5456						.MCALL	CALL,RETURN,MTPI,MTPS,MFPI,MFPS
DMSAR	- SEND & RECEIVE DIRECT	MACRO M1108  16-DEC-77 11:28  PAGE 81
DIRECTIVE -- SEND DATA

   5459						.SBTTL	DIRECTIVE -- SEND DATA
   5460					;+
   5461					; THE "SEND DATA" DIRECTIVE
   5462					;
   5463					; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO QUEUE (FIFO) A THIRTEEN WORD
   5464					; BLOCK OF DATA FOR A TASK TO RECEIVE.
   5465					;
   5466					; A FIVE WORD DPB OF THE FOLLOWING FORMAT IS USED:
   5467					;
   5468					;	WD. 00 -- DIC (13.) & DPB SIZE (5.),
   5469					;	WD. 01 -- RECEIVER TASK NAME (FIRST HALF),
   5470					;	WD. 02 -- RECEIVER TASK NAME (SECOND HALF),
   5471					;	WD. 03 -- ADDRESS OF THIRTEEN WORD DATA BLOCK,
   5472					;	WD. 04 -- [EVENT FLAG NUMBER (EFN)].
   5473					;
   5474					; WHEN AN EVENT FLAG IS SPECIFIED, A SIGNIFICANT EVENT IS DECLARED
   5475					; (IF THE DIRECTIVE IS PERFORMED) AND THE INDICATED EVENT FLAG IS SET.
   5476					;
   5477					; THE FOLLOWING STATUS IS RETURNED:
   5478					;
   5479					; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE STATUS
   5480					; OF ONE (+1).
   5481					;
   5482					; CC-C SET TO INDICATE REJECTION, AND A DIRECTIVE STATUS OF:
   5483					;
   5484					;	-02 -- RECEIVER TASK NOT INSTALLED (NO STD ENTRY FOUND),
   5485					;	-04 -- INSUFFICIENT POOL NODES FOR "SEND",
   5486					;
   5487					;	-97 -- INVALID EVENT FLAG NUMBER (EFN<0 OR EFN>64),
   5488					;	-99 -- DIC OR DPB SIZE IS INVALID.
   5489					;-
   5490					; CONTROL IS TRANSFERRED HERE (BY DIRECTIVE DISPATCH ROUTINE) WITH THE
   5491					; DIRECTIVE ISSUING TASK'S PS, PC, & R1-R5 PUSHED ONTO THE
   5492					;  STACK, AND R0-R5 SET AS FOLLOWS:
   5493					;	R0 -- PC OF EMT INSTRUCTION
   5494					;	R1 -- POINTER TO WORD FOLLOWING DIC & SIZE
   5495					;	R2 -- DPB SIZE
   5496					;	R3 -- DIC (DIRECTIVE IDENTIFICATION CODE)
   5497					;	R5 -- ATL NODE ADDRESS OF ISSUING TASK ('.CRTSK')
   5498					;
   5499					; R5 IS LEFT UNALTERED (I.E. POINTING TO ISSUING TASK'S ATL NODE).
   5500					;
   5501	012600				.D.SEN::CALL	..FSTD		;SET R2 TO STD ENTRY ADDRESS, OR TO
	012600	004737 	041562'			JSR	PC,..FSTD
   5502									;ZERO IF TASK NAME NOT FOUND (AND SET
   5503									;CONDITION CODES PER "TST R2").
   5504									;
   5505									;ADVANCE R1 BY FOUR (PAST TASK NAME).
   5506					;
   5507	012604	001406 				BEQ	.X.02		;IF TASK NOT INSTALLED, RETURN STS=-02.
   5508					;
   5509					; R1 IS POINTING TO DPB WD. 03, AND R2 CONTAINS STD NODE ADR OF RECEIVER.
   5510					;
   5511	012606				10$:	CALL	.SEND		;SEND DATA & SET EVENT FLAG PER R1 & R2
	012606	004737 	012746'			JSR	PC,.SEND
   5512					;
   5513	012612	104401 				TRAP	DR.01		;RETURN STS=+1.
DMSAR	- SEND & RECEIVE DIRECT	MACRO M1108  16-DEC-77 11:28  PAGE 82
DIRECTIVE -- SEND AND REQUEST OR RESUME

   5515					.SBTTL	DIRECTIVE -- SEND AND REQUEST OR RESUME
   5516					;+
   5517					; THE "SEND AND REQUEST OR RESUME" DIRECTIVE
   5518					;
   5519					; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO QUEUE (FIFO) A THIRTEEN WORD
   5520					; BLOCK OF DATA FOR A TASK TO RECEIVE, AND TO REQUEST OR RESUME THE
   5521					; EXECUTION OF THE RECEIVER TASK.
   5522					;
   5523					; THIS DIRECTIVE HAS THE EFFECT OF ISSUING A "SEND DATA" DIRECTIVE
   5524					; FOLLOWED BY A "REQUEST" OR "RESUME" DIRECTIVE, EXCEPT THAT (1) NO TASK
   5525					; SWITCHING CAN OCCUR BETWEEN THE SEND AND THE REQUEST OR RECEIVE, AND
   5526					; (2) IF THE SEND IS NOT PERFORMED, NEITHER THE REQEST NOR THE RESUME
   5527					; WILL BE ATTEMPTED.
   5528					;
   5529					; I.E., IF DATA IS SENT TO AN INACTIVE TASK, THAT TASK WILL BE REQUESTED;
   5530					; IF DATA IS SENT TO A SUSPENDED TASK, THAT TASK WILL BE RESUMED.
   5531					;
   5532					; A NINE WORD DPB OF THE FOLLOWING FORMAT IS USED:
   5533					;
   5534					;	WD. 00 -- DIC (15.) & DPB SIZE (9.),
   5535					;	WD. 01 -- RECEIVER TASK NAME (FIRST HALF),
   5536					;	WD. 02 -- RECEIVER TASK NAME (SECOND HALF),
   5537					;	WD. 03 -- [PARTITION NAME (FIRST HALF)],
   5538					;	WD. 04 -- [PARTITION NAME (SECOND HALF)],
   5539					;	WD. 05 -- [PRIORITY],
   5540					;	WD. 06 -- 0,
   5541					;	WD. 07 -- ADDRESS OF THIRTEEN WORD DATA BLOCK,
   5542					;	WD. 10 -- [EVENT FLAG NUMBER (EFN)].
   5543					;
   5544					; WHEN AN EVENT FLAG IS SPECIFIED, A SIGNIFICANT EVENT IS DECLARED
   5545					; (IF THE DIRECTIVE IS PERFORMED) AND THE INDICATED EVENT FLAG IS SET.
   5546					;
   5547					; THE FOLLOWING STATUS IS RETURNED:
   5548					;
   5549					; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE
   5550					; STATUS OF:
   5551					;
   5552					;	+1 -- DATA SENT AND TASK REQUESTED,
   5553					;	+2 -- DATA SEND AND TASK RESUMED,
   5554					;	+3 -- DATA SENT TO AN NON-SUSPENDED ACTIVE TASK.
   5555					;
   5556					; CC-C SET TO INDICATE REJECTION, AND A DIRECTIVE STATUS OF:
   5557					;
   5558					;	-01 -- [R] INSUFFICIENT POOL NODES AVAILABLE FOR "REQUEST",
   5559					;	-02 -- [B] RECEIVER TASK NOT INSTALLED (NO STD ENTRY FOUND),
   5560					;	-03 -- [R] PARTITION TOO SMALL FOR RECEIVER TASK,
   5561					;	-04 -- [B] INSUFFICIENT POOL NODES FOR "SEND",
   5562					;	-08 -- [R] RECEIVER TASK IS DISABLED,
   5563					;
   5564					;	-80 -- [B] DIRECTIVE ISSUED BY "BACKGROUND" TASK,
   5565					;	-94 -- [R] PARTITION NOT IN SYSTEM (NO TPD ENTRY FOUND),
   5566					;	-95 -- [R] INVALID PRIORITY SPECIFIED (<0 OR >250.),
   5567					;	-97 -- [B] INVALID EVENT FLAG NUMBER (EFN<0 OR EFN>64),
   5568					;	-99 -- [B] DIC OR DPB SIZE IS INVALID.
   5569					;
   5570					; [R] -- REQUEST OR RESUME REJECTED
   5571					; [B] -- BOTH SEND & REQUEST OR RESUME REJECTED
DMSAR	- SEND & RECEIVE DIRECT	MACRO M1108  16-DEC-77 11:28  PAGE 82-1
DIRECTIVE -- SEND AND REQUEST OR RESUME

   5572					;-
   5573					; CONTROL IS TRANSFERRED HERE (BY DIRECTIVE DISPATCH ROUTINE) WITH THE
   5574					; DIRECTIVE ISSUING TASK'S PS, PC, & R1-R5 PUSHED ONTO THE
   5575					;  STACK, AND R0-R5 SET AS FOLLOWS:
   5576					;	R0 -- PC OF EMT INSTRUCTION
   5577					;	R1 -- POINTER TO WORD FOLLOWING DIC & SIZE
   5578					;	R2 -- DPB SIZE
   5579					;	R3 -- DIC (DIRECTIVE IDENTIFICATION CODE)
   5580					;	R5 -- ATL NODE ADDRESS OF ISSUING TASK ('.CRTSK')
   5581					;
   5582					; R5 IS LEFT UNALTERED (I.E. POINTING TO ISSUING TASK'S ATL NODE).
   5583					;
   5584	012614				.D.SAR::CALL	..FSTD		;SET R2 TO STD ENTRY ADDRESS, OR TO
	012614	004737 	041562'			JSR	PC,..FSTD
   5585									;ZERO IF TASK NAME NOT FOUND (AND SET
   5586									;CONDITION CODES PER "TST R2").
   5587									;
   5588									;ADVANCE R1 BY FOUR (PAST TASK NAME).
   5589					;
   5590	012620	001001 				BNE	SKX		;IF TASK NOT INSTALLED, RETURN STS=-02.
   5591	012622	104776 			.X.02:	TRAP	DE.02
   5592					;
   5593	012624	010146 			SKX:	MOV	R1,-(SP)	;PUSH (SAVE) R1 & R2, AND ADVANCE R1 TO POINT
   5594	012626	010246 				MOV	R2,-(SP)	;TO DPB WD. 07.
   5595	012630	062701 	000010 			ADD	#8.,R1
   5596					;
   5597					; R1 IS POINTING TO DPB WD. 07, AND R2 CONTAINS STD ENTRY ADR OF RECEIVER.
   5598					;
   5599	012634					CALL	.SEND		;SEND DATA & SET EVENT FLAG PER R1 & R2
	012634	004737 	012746'			JSR	PC,.SEND
   5600									;(R1, R2, R3, R4, & R5 ARE ALTERED)
   5601					;
   5602	012640	012602 				MOV	(SP)+,R2	;POP (RESTORE) R2 & R1
   5603	012642	012601 				MOV	(SP)+,R1	;(R1 IS POINTING TO DPB WD. 03.)
   5604					;
   5605	012644					CALL	.FEPPU		;SET R3 TO TPD ADDRESS IF A PARTITION IS
	012644	004737 	005066'			JSR	PC,.FEPPU
   5606									;SPECIFIED, OR TO ZERO IF NOT SPECIFIED.
   5607									;
   5608									;SET R4 TO PRIORITY IF SPECIFIED, OR TO
   5609									;ZERO IF NOT SPECIFIED.
   5610									;
   5611									;
   5612									;ADVANCE R1 BY EIGHT (PAST PARTITION NAME,
   5613									;PRIORITY INDICATOR, AND UIC INDICATOR.).
   5614									;
   5615									;IF INVALID PRIORITY, RETURN STS=-95.
   5616									;IF PARTITION NOT IS SYSTEM, RETURN
   5617									;STS=-94.  IF NON-PRIVILEGED TASK HAS
   5618									;SPECIFIED OTHER THAN OWN UIC, RETURN
   5619									;STS=-91.  IF SPECIFIED PARTITION IS
   5620									;TOO SMALL FOR TASK, RETURN STS=-03.
   5621					;
   5622					;
   5623	012650	012701 	000001 			MOV	#1,R1		;SET R1 TO INDICATE "MAKE TASK ACTIVE WHETHER
   5624									;MEMORY IS AVAILABLE OR NOT"
   5625					;
DMSAR	- SEND & RECEIVE DIRECT	MACRO M1108  16-DEC-77 11:28  PAGE 82-2
DIRECTIVE -- SEND AND REQUEST OR RESUME

   5626	012654	016500 	000016 			MOV	A.TD(R5),R0	;SET R5 TO STD ADDRESS OF REQUESTOR
   5627					;
   5628	012660	010246 				MOV	R2,-(SP)	;PUSH STD ENTRY ADDRESS (FOR ATL SCAN)
   5629					;
   5630	012662					CALL	.REQS		;MAKE A TASK ACTIVE PER R0, R1, R2, R3, R4 & R5.
	012662	004737 	004362'			JSR	PC,.REQS
   5631									;(R1, R2, R3, R4, & R5 ARE ALTERED)
   5632	012666	012604 				MOV	(SP)+,R4	;POP STD ENTRY ADDRESS INTO R4
   5633					;
   5634	012670	020227 	000002 			CMP	R2,#02		;SPECIAL CASE -- IS TASK ACTIVE?
   5635	012674	001402 				BEQ	10$		;YES -- RESUME IF SUSPENDED
   5636	012676	000162 	005056'			JMP	.RQESD(R2)	;NO -- RETURN DIRECTIVE STATUS PER SUBROUTINE
   5637									;STATUS IN R2.
   5638					;
   5639					; RECEIVER TASK IS ACTIVE:
   5640					;
   5641					;	IF SUSPENDED, RESUME & RETURN STS=+2
   5642					;	IF NOT SUSPENDED, RETURN STS=+3
   5643					;
   5644					; R4 CONTAINS THE STD ENTRY ADDRESS OF THE RECEIVER TASK.
   5645					;
   5646	012702	012703 	032552'		10$:	MOV	#.ATLLH,R3	;SETUP FOR ATL SCAN
   5647	012706				20$:
   5648	012706	011303 				MOV	@R3,R3		;SETUP R3 TO EXAMINE NEXT ENTRY
   5649	012710	020337 	032554'			CMP	R3,.ATLLH+2	;IS R3 POINTING TO ENTRY FOR NUL TASK?
   5650	012714	001413 				BEQ	70$		;YES -- ATL NODE IS NOT IN THE ATL (IT IS
   5651									;IN THE "MRL" FOR A PARTITION) RETURN STS=+3.
   5652	012716	026304 	000016 			CMP	A.TD(R3),R4	;NO -- STD ADDRESS MATCH?
   5653	012722	001371 				BNE	20$		;NO -- CHECK NEXT ATL NODE
   5654	012724	126327 	000014 	000012 	60$:	CMPB  A.TS(R3),#TS.SUS	;NO -- IS TASK SUSPENDED?
   5655	012732	001004 				BNE	70$
   5656	012734	112763 	000010 	000014 		MOVB  #TS.RUN,A.TS(R3)	;YES -- CHANGE STATUS TO RUNNING (A SIGNIFICANT
   5657									;EVENT HAS BEEN DECLARED AS A RESULT OF THE
   5658	012742	104402 				TRAP	DR.02		;SEND), AND RETURN STS=+2.
   5659					;
   5660	012744	104403 			70$:	TRAP	DR.03		;STS +3
DMSAR	- SEND & RECEIVE DIRECT	MACRO M1108  16-DEC-77 11:28  PAGE 83
DIRECTIVE -- SEND AND REQUEST OR RESUME

   5662					; SEND -- SUBROUTINE TO PERFORM "SEND" FOR "SEND DATA" AND "SEND DATA &
   5663					; REQUEST RECEIVER" DIRECTIVES.
   5664					;
   5665					; ENTRY CONDITIONS:
   5666					;
   5667					;	R5 -- ATL NODE ADDRESS OF ISSUING TASK
   5668					;	R1 -- POINTING (IN DPB) TO ADR OF 13 WORD BLOCK OF DATA,
   5669					;	WHICH IS FOLLOWED BY AN [EFN].  BOTH WORDS MUST BE FETCHABLE
   5670					;	WITHOUT SEGMENT FAULT.
   5671					;	R2 -- STD ENTRY ADDRESS OF RECEIVER TASK
   5672					;
   5673					; CALLING SEQUENCE:
   5674					;
   5675					;	JSR  PC,SEND
   5676					;
   5677					; EXIT CONDITIONS:
   5678					;
   5679					;	IF NO POOL NODE AVAILABLE, RETURN AT 'DE.01'
   5680					;	IF INVALID EFN, RETURN AT 'DE.97'
   5681					;	IF PART OF DATA OUT OF TASK'S ADDRESS SPACE, RETURN AT 'DE.98'
   5682					;
   5683					;	IF SUCCESSFUL, DATA IS QUEUED, EFN (IF SPECIFIED) IS SET,
   5684					;	AND A SIGNIFICANT EVENT IS DECLARED.
   5685					;
   5686					;	R1 -- STD OF RECEIVER TASK
   5687					;
   5688					;
   5689					; REGISTERS ALTERED:
   5690					;
   5691					;	R1, R2, R3, R4, & R0
   5692					;
   5693	012746				.SEND::	MFPI	(R1)+		;SET R5 TO ADDRESS OF DATA BLOCK, AND
	012746	012146 				MOV	(R1)+,-(SP)
   5694	012750	012600 				MOV	(SP)+,R0	;LEAVE R1 POINTING TO [EFN].
   5695					;
   5696	012752	010246 				MOV	R2,-(SP)	;SAVE RECEIVER STD ENTRY ADR IN -(SP)
   5697					;
   5698									;R1 IS POINTING TO [EFN] IN DPB.
   5699					;
   5700	012754					CALL	.CEFN		;CONVERT EFN TO: (1) FLAG WORD ADDRESS
	012754	004737 	040404'			JSR	PC,.CEFN
   5701									;IN R2, AND (2) FLAG MASK IN R3 (R1 IS
   5702									;POINTING TO EFN).  IF EFN<0, OR EFN>64.,
   5703									;RETURN STS=-97.  IF EFN=0 (NO EVENT FLAG
   5704									;SPECIFIED), RETURN WITH R2=R3=00.
   5705									;CONDITION CODES ARE SET PER "TST R3".
   5706					;
   5707	012760	010246 				MOV	R2,-(SP)	;PUSH "BIS" ADDRESS WORD
   5708	012762	010346 				MOV	R3,-(SP)	;PUSH "BIS" MASK WORD
   5709					;
   5710	012764	012704 	033506'			MOV	#.POLLH,R4	;LISTHEAD
   5711	012770					CALL	..PICK		;ISSUING TASK, AND SET R1 TO NODE ADR.
	012770	004737 	041464'			JSR	PC,..PICK
   5712	012774	103001 				BCC	10$		;IF NONE AVAILABLE, RETURN STS=-04.
   5713	012776	104774 				TRAP	DE.04
   5714					;
   5715	013000	010401 			10$:	MOV	R4,R1		;SETUP R3 TO FILL NODE
DMSAR	- SEND & RECEIVE DIRECT	MACRO M1108  16-DEC-77 11:28  PAGE 83-1
DIRECTIVE -- SEND AND REQUEST OR RESUME

   5716	013002	062704 	000006 			ADD	#Q.D1,R4
   5717	013006	012703 	000015 			MOV	#13.,R3
   5718	013012				20$:
   5719	013012					MFPI	(R0)+		;MOVE WORD FROM DATA BLOCK TO NODE
	013012	012046 				MOV	(R0)+,-(SP)
   5720	013014	012624 				MOV	(SP)+,(R4)+
   5721	013016	077303 				SOB	R3,20$
   5722	013020	052636 				BIS	(SP)+,@(SP)+	;SET EVENT FLAG IF SPECIFIED (IF NOT
   5723	013022	011604 				MOV	@SP,R4		;FIND RECEIVER'S STD ADDRESS
   5724	013024	010461 	000004 			MOV	R4,Q.SI(R1)	;SET SENDERS STD ADDRESS
   5725					;
   5726	013030	016404 	000026 			MOV	S.RB(R4),R4	;SET R4 TO ADDRESS OF LAST NODE (OR LISTHEAD)
   5727	013034					CALL	..NADD		;OF TASK'S RECEIVE DEQUE (LISTHEAD IN STD),
	013034	004737 	041422'			JSR	PC,..NADD
   5728									;AND ADD NODE AT END OF DEQUE.
   5729					;
   5730									;SPECIFIED, SET NO BITS IN WORD ZERO).
   5731					;
   5732	013040	152737 	000001 	031116'		BISB	#EV.SE,.SERFG+0	;DECLARE A SIGNIFICANT EVENT
   5733					;
   5734	013046	012601 				MOV	(SP)+,R1	;SET RECEIVER STD ADDRESS
   5735					;
   5736					;
   5737	013050					RETURN			;EXIT SUBROUTINE
	013050	000207 				RTS	PC
   5738					;
DMSAR	- SEND & RECEIVE DIRECT	MACRO M1108  16-DEC-77 11:28  PAGE 84
DIRECTIVE -- RECEIVE DATA

   5740					.SBTTL	DIRECTIVE -- RECEIVE DATA
   5741					;+
   5742					; THE "RECEIVE DATA" DIRECTIVE
   5743					;
   5744					; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO RECEIVE A THIRTEEN WORD
   5745					; DATA BLOCK THAT HAS BEEN QUEUED (FIFO) FOR IT (VIA "SEND DATA" OR
   5746					; "SEND DATA & REQUEST RECEIVER" DIRECTIVES).
   5747					;
   5748					; WHEN A SENDER TASK IS SPECIFIED, ONLY DATA SENT BY THE INDICATED
   5749					; TASK IS RECEIVED.
   5750					;
   5751					; A TWO-WORD SENDER TASK NAME, AND THE THIRTEEN-WORD DATA BLOCK, ARE
   5752					; RETURNED IN AN INDICATED FIFTEEN WORD BUFFER, WITH THE TASK NAME IN
   5753					; THE FIRST TWO WORDS.
   5754					;
   5755					; A FOUR WORD DPB OF THE FOLLOWING FORMAT IS USED:
   5756					;
   5757					;	WD. 00 -- DIC (17.) & DPB SIZE (4.),
   5758					;	WD. 01 -- [SENDER TASK NAME (FIRST HALF)],
   5759					;	WD. 02 -- [SENDER TASK NAME (SECOND HALF)],
   5760					;	WD. 03 -- ADDRESS OF FIFTEEN WORD BUFFER.
   5761					;
   5762					; THE FOLLOWING STATUS IS RETURNED:
   5763					;
   5764					; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE STATUS
   5765					; OF ONE (+1).
   5766					;
   5767					;
   5768					; CC-C SET TO INDICATE REJECTIONAND A DIRECTIVE STATUS OF:
   5769					;
   5770					;	-02 -- SPECIFIED SENDER TASK NOT INSTALLED,
   5771					;	-08 -- NO DATA QUEUED (SENT),
   5772					;
   5773					;	-99 -- DIC OR DPB SIZE IS INVALID.
   5774					;-
   5775					; THIS DIRECTIVE SERVICE HAS A COMMON ENTRY WITH "RECEIVE DATA OR SUSPEND".
DMSAR	- SEND & RECEIVE DIRECT	MACRO M1108  16-DEC-77 11:28  PAGE 85
DIRECTIVE -- RECEIVE DATA OR EXIT

   5777					.SBTTL	DIRECTIVE -- RECEIVE DATA OR EXIT
   5778					;+
   5779					; THE "RECEIVE DATA OR EXIT" DIRECTIVE
   5780					;
   5781					; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO RECEIVE A THIRTEEN WORD
   5782					; DATA BLOCK IF AT LEAST ONE IS CAN BE RECEIVED, OR TO EXIT IF NO
   5783					; THIRTEEN WORD DATA BLOCKS ARE CAN BE RECEIVED.
   5784					;
   5785					; DATA BLOCKS ARE QUEUED (FIFO) FOR THE TASK VIA THE "SEND DATA" OR
   5786					; THE "SEND DATA & REQUEST RECEIVER" DIRECTIVES.
   5787					;
   5788					; WHEN A SENDER TASK IS SPECIFIED, ONLY DATA SENT BY THE INDICATED
   5789					; TASK IS RECEIVED.
   5790					;
   5791					; A TWO-WORD SENDER TASK NAME, AND THE THIRTEEN-WORD DATA BLOCK, ARE
   5792					; RETURNED IN AN INDICATED FIFTEEN WORD BUFFER, WITH THE TASK NAME IN
   5793					; THE FIRST TWO WORDS.
   5794					;
   5795					; A FOUR WORD DPB OF THE FOLLOWING FORMAT IS USED:
   5796					;
   5797					;	WD. 00 -- DIC (19.) & DPB SIZE (4.),
   5798					;	WD. 01 -- [SENDER TASK NAME (FIRST HALF)],
   5799					;	WD. 02 -- [SENDER TASK NAME (SECOND HALF)],
   5800					;	WD. 03 -- ADDRESS OF FIFTEEN WORD BUFFER.
   5801					;
   5802					; THE FOLLOWING STATUS IS RETURNED:
   5803					;
   5804					; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE STATUS
   5805					; OF ONE (+1).
   5806					;
   5807					;
   5808					; CC-C SET TO INDICATE REJECTION, AND A DIRECTIVE STATUS OF:
   5809					;
   5810					;	-02 -- SPECIFIED SENDER TASK NOT INSTALLED,
   5811					;
   5812					;	-80 -- DIRECTIVE ISSUED BY "BACKGROUND" TASK,
   5813					;	-98 -- PART OF DPB OR BUFFER IS OUT OF TASK'S ADDRESS SPACE,
   5814					;	-99 -- DIC OR DPB SIZE IS INVALID.
   5815					;-
   5816					; THIS DIRECTIVE SERVICE HAS A COMMON ENTRY WITH "RECEIVE DATA OR SUSPEND".
DMSAR	- SEND & RECEIVE DIRECT	MACRO M1108  16-DEC-77 11:28  PAGE 86
DIRECTIVE -- RECEIVE DATA OR SUSPEND

   5818					.SBTTL	DIRECTIVE -- RECEIVE DATA OR SUSPEND
   5819					;+
   5820					; THE "RECEIVE DATA OR SUSPEND" DIRECTIVE
   5821					;
   5822					; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO RECEIVE A THIRTEEN WORD
   5823					; DATA BLOCK IF AT LEAST ONE IS CAN BE RECEIVED, OR TO SUSPEND IF NO
   5824					; THIRTEEN WORD DATA BLOCKS ARE CAN BE RECEIVED.
   5825					;
   5826					; DATA BLOCKS ARE QUEUED (FIFO) FOR THE TASK VIA THE "SEND DATA" OR
   5827					; THE "SEND DATA & REQUEST RECEIVER" DIRECTIVES.
   5828					;
   5829					; WHEN A SENDER TASK IS SPECIFIED, ONLY DATA SENT BY THE INDICATED
   5830					; TASK IS RECEIVED.
   5831					;
   5832					; A TWO-WORD SENDER TASK NAME, AND THE THIRTEEN-WORD DATA BLOCK, ARE
   5833					; RETURNED IN AN INDICATED FIFTEEN WORD BUFFER, WITH THE TASK NAME IN
   5834					; THE FIRST TWO WORDS.
   5835					;
   5836					; A FOUR WORD DPB OF THE FOLLOWING FORMAT IS USED:
   5837					;
   5838					;	WD. 00 -- DIC (21.) & DPB SIZE (4.),
   5839					;	WD. 01 -- [SENDER TASK NAME (FIRST HALF)],
   5840					;	WD. 02 -- [SENDER TASK NAME (SECOND HALF)],
   5841					;	WD. 03 -- ADDRESS OF FIFTEEN WORD BUFFER.
   5842					;
   5843					; THE FOLLOWING STATUS IS RETURNED:
   5844					;
   5845					; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE
   5846					; STATUS OF:
   5847					;
   5848					;	+1 -- IF DATA WAS RECEIVED,
   5849					;	+2 -- IF TASK WAS SUSPENDED.
   5850					;
   5851					; CC-C SET TO INDICATE REJECTION AND A DIRECTIVE STATUS OF:
   5852					;
   5853					;	-02 -- SPECIFIED SENDER TASK NOT INSTALLED,
   5854					;
   5855					;	-80 -- DIRECTIVE ISSUED BY "BACKGROUND" TASK,
   5856					;	-98 -- PART OF DPB OR BUFFER IS OUT OF TASK'S ADDRESS SPACE,
   5857					;	-99 -- DIC OR DPB SIZE IS INVALID.
   5858					;-
   5859					; CONTROL IS TRANSFERRED HERE (BY DIRECTIVE DISPATCH ROUTINE) WITH THE
   5860					; DIRECTIVE ISSUING TASK'S PS, PC, & R1-R5 PUSHED ONTO THE
   5861					;  STACK, AND R0-R5 SET AS FOLLOWS:
   5862					;	R0 -- PC OF EMT INSTRUCTION
   5863					;	R1 -- POINTER TO WORD FOLLOWING DIC & SIZE
   5864					;	R2 -- DPB SIZE
   5865					;	R3 -- DIC (DIRECTIVE IDENTIFICATION CODE)
   5866					;	R5 -- ATL NODE ADDRESS OF ISSUING TASK ('.CRTSK')
   5867					;
   5868					; R5 IS LEFT UNALTERED (I.E. POINTING TO ISSUING TASK'S ATL NODE).
   5869					;
   5870									;R5 IS POINTING TO 15-WORD BUFFER IN TASK.
   5871					;
   5872									;R4 IS SET TO STD NODE ADDRESS OF RECEIVER TASK.
   5873					;
   5874					; COMMON ENTRY POINT FOR "RECEIVE", "RECEIVE OR EXIT", & "RECEIVE OR SUSPEND".
DMSAR	- SEND & RECEIVE DIRECT	MACRO M1108  16-DEC-77 11:28  PAGE 86-1
DIRECTIVE -- RECEIVE DATA OR SUSPEND

   5875					;
   5876
   5877	013052				.D.REC::
   5878	013052				.D.ROE::
   5879	013052				.D.ROS::
   5880	013052	016504 	000016 			MOV 	A.TD(R5),R4	;SET R4 TO RECEIVE DEQUE LISTHEAD (IN STD ENTRY).
   5881	013056	062704 	000024 			ADD	#S.RF,R4
   5882					;
   5883	013062					MFPI	(R1)+		;IS A SENDER TASK SPECIFIED?
	013062	012146 				MOV	(R1)+,-(SP)
   5884	013064					MFPI	(R1)+		;MAYBE -- CHECK SECOND HALF OF TASK NAME
	013064	012146 				MOV	(R1)+,-(SP)
   5885	013066	052626 				BIS	(SP)+,(SP)+
   5886	013070	001004 				BNE	10$		;NO -- RECEIVE FROM ANY SENDER
   5887									;YES -- RECEIVE ONLY FROM INDICATED SENDER
   5888									;NO -- RECEIVE FROM ANY SENDER
   5889	013072					CALL	..PICK		;PICK FIRST NODE FROM REC DEQUE, AND LEAVE NODE
	013072	004737 	041464'			JSR	PC,..PICK
   5890									;ADDRESS IN R4.
   5891									;NODE PICKED?
   5892	013076	103017 				BCC	40$		;YES -- FILL BUFFER
   5893	013100	000440 				BR	70$		;NO -- NO DATA BY ANY SENDER
   5894					;
   5895	013102	024141 			10$:	CMP	-(R1),-(R1)
   5896					; R1 IS POINTING TO SPECIFIED SENDER'S TASK NAME IN PREVIOUS SPACE.
   5897					;
   5898	013104					CALL	..FSTD		;SET R2 TO STD ENTRY ADDRESS, OR TO
	013104	004737 	041562'			JSR	PC,..FSTD
   5899									;ZERO IF TASK NAME NOT FOUND (AND SET
   5900									;CONDITION CODES PER "TST R2").
   5901									;
   5902									;ADVANCE R1 BY FOUR (PAST TASK NAME).
   5903					;
   5904	013110	001001 				BNE	20$		;IF TASK NOT INSTALLED, RETURN STS=-02.
   5905	013112	104776 				TRAP	DE.02		;RETURN STS=-02.
   5906					;
   5907	013114	010401 			20$:	MOV	R4,R1		;SAVE LISTHEAD ADDRESS IN R1, AND
   5908									;SCAN DEQUE FOR DATA SENT BY SENDER PER R2.
   5909	013116				30$:
   5910	013116	011404 				MOV	@R4,R4		;ADVANCE R4 TO NEXT NODE
   5911	013120	020401 				CMP	R4,R1		;END OF DEQUE?
   5912	013122	001427 				BEQ	70$		;YES -- NO DATA BY SPECIFIED SENDER
   5913	013124	026402 	000004 			CMP	Q.SI(R4),R2	;NO -- IS DATA SENT BY SPECIFIED SENDER?
   5914	013130	001372 				BNE	30$		;NO -- CHECK NEXT NODE
   5915	013132					CALL	..NDEL		;YES -- DELETE NODE FROM DEQUE
	013132	004737 	041306'			JSR	PC,..NDEL
   5916					;
   5917					; DATA RECEIVED -- R4 CONTAINS NODE ADDRESS & R1 CONTAINS DATA BUFFER
   5918					; ADDRESS.  FILL BUFFER (2-WORD TASK NAME & 13-WORD DATA BLOCK).
   5919					;
   5920	013136				40$:
   5921	013136					MFPS	@R1,R0	;FIND THE BUFFER ADDRESS
	013136	011100 				MOV	@R1,R0
   5922	013140	010401 				MOV	R4,R1		;SAVE NODE ADR IN R1 FOR '..RNTP'
   5923	013142	062704 	000004 			ADD	#Q.SI,R4	;ADVANCE R4 TO POINT TO SENDER ID WORD
   5924					;
   5925	013146	012403 				MOV	(R4)+,R3	;SET R3 TO SENDER STD NODE ADDRESS
DMSAR	- SEND & RECEIVE DIRECT	MACRO M1108  16-DEC-77 11:28  PAGE 86-2
DIRECTIVE -- RECEIVE DATA OR SUSPEND

   5926					;
   5927	013150				50$:
   5928	013150					MTPS  S.TN+0(R3),(R0)+	;SET SENDER TASK NAME IN FIRST TWO WORDS
	013150	016320 	000000 			MOV	S.TN+0(R3),(R0)+
   5929	013154					MTPS  S.TN+2(R3),(R0)+
	013154	016320 	000002 			MOV	S.TN+2(R3),(R0)+
   5930					;
   5931	013160	012703 	000015 			MOV	#13.,R3		;FILL REMAINING 13 WORDS FROM NODE.
   5932	013164				60$:
   5933	013164					MTPS	(R4)+,(R0)+
	013164	012420 				MOV	(R4)+,(R0)+
   5934	013166	077302 				SOB	R3,60$
   5935					;
   5936	013170	012704 	033506'			MOV	#.POLLH,R4	;RETURN NODE TO POOL
   5937	013174					CALL	..NADD		;RETURN NODE (PER R1) TO POOL
	013174	004737 	041422'			JSR	PC,..NADD
   5938					;
   5939	013200	104401 				TRAP	DR.01		;RETURN STS=+1.
   5940					;
   5941					; DATA NOT RECEIVED:
   5942					;	IF "RECEIVE", RETURN STS=-08.
   5943					;	IF "RECEIVE OR EXIT", EXIT.
   5944					;	IF "RECEIVE OR SUSPEND", SUSPEND.
   5945					;
   5946					; R3 CONTAINS THE DIC SIZE.
   5947					; R0 CONTAINS THE ISSUING TASK'S ATL NODE ADDRESS
   5948					;
   5949	013202	006303 			70$:	ASL	R3
   5950	013204	000173 	013144'			JMP	@80$-2-<17.*2.>(R3)
   5951	013210	013216'			80$:	.WORD	90$
   5952	013212	012104'				.WORD	.D.EXT
   5953	013214	011776'				.WORD	.D.SUS
   5954					;
   5955	013216	104770 			90$:	TRAP	DE.08
   5956					;
   5957						.TITLE	DMSDV	- SPECIFY SST TABLE DIRECTIVES MODULE
   5958	013220					IDENT$	1,0
						.IDENT	/001000/
   5959					;
   5960					;                             COPYRIGHT (C) 1975, 1978 BY
   5961					;                     DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
   5962					;
   5963					;       THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE  USED  AND  COPIED
   5964					;       ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
   5965					;       OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR ANY OTHER COPIES THERE-
   5966					;       OF  MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
   5967					;       NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
   5968					;
   5969					;       THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT
   5970					;       NOTICE  AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
   5971					;       CORPORATION.
   5972					;
   5973					;       DIGITAL ASSUMES NO RESPONSIBILITY FOR THE  USE  OR  RELIABILITY  OF  ITS
   5974					;       SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
   5975					;
   5976					;		MODULE: SPECIFY SST TABLE DIRECTIVES
   5977					;
DMSDV	- SPECIFY SST TABLE DIR	MACRO M1108  16-DEC-77 11:28  PAGE 86-3
DIRECTIVE -- RECEIVE DATA OR SUSPEND

   5978					;		VERSION: 01-00
   5979					;
   5980					;		AUTHOR: R. MCLEAN
   5981					;
   5982					;		DATE: 19 JUN 75
   5983					;
   5984					;
   5985					;	THIS MODULE CONTAINS:
   5986					;
   5987					;	1 -- CODE TO SERVICE THE "SPECIFY SST VECTOR TABLE FOR TASK" DIRECTIVE.
   5988					;
   5989					;	MACRO LIBRARY CALLS
   5991					;
   5992						.MCALL	MTPS,MFPS,MFPI,MTPI,CALL,RETURN
DMSDV	- SPECIFY SST TABLE DIR	MACRO M1108  16-DEC-77 11:28  PAGE 87
DIRECTIVE -- SPECIFY SST VECTOR TABLE FOR TASK

   5995						.SBTTL	DIRECTIVE -- SPECIFY SST VECTOR TABLE FOR TASK
   5996					;+
   5997					; THE "SPECIFY SST VECTOR TABLE FOR TASK" DIRECTIVE
   5998					;
   5999					; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO RECORD THE ADDRESS (VIRTUAL) OF
   6000					; A TABLE OF SYNCHRONOUS SYSTEM TRAP SERVICE ROUTINE ENTRY POINTS
   6001					; FOR USE BY THE ISSUING TASK.  WHENEVER AN SST SERVICE ROUTINE ENTRY IS
   6002					; SPECIFIED IN BOTH THE TASK'S TABLE & DDT'S TABLE, THE TRAP OCCURS
   6003					; FOR THE DEBUGGING AID, AND NOT FOR THE TASK.
   6004					;
   6005					;
   6006					;	WD. 00 -- "ODD ADDRESS" ERROR,
   6007					;	WD. 01 -- SEGMENT FAULT,
   6008					;	WD. 02 -- T-BIT TRAP OR EXECUTION OF A 'BPT' INSTRUCTION,
   6009					;	WD. 03 -- EXECUTION OF AN 'IOT' INSTRUCTION,
   6010					;	WD. 04 -- EXECUTION OF A "RESERVED" INSTRUCTION,
   6011					;	WD. 05 -- EXECUTION OF "NON-RSX EMT",
   6012					;	WD. 06 -- EXECUTION OF A 'TRAP' INSTRUCTION,
   6013					;	WD. 07 -- PDP-11/40 FLOATING POINT EXCEPTION.
   6014					;
   6015					; THE TABLE IS OF THE FOLLOWING FORMAT:
   6016					; A THREE WORD DPB OF THE FOLLOWING FORMAT IS USED:
   6017					;
   6018					;	WD. 00 -- DIC (43.) & DPB SIZE (3.),
   6019					;	WD. 01 -- ADDRESS OF SST VECTOR TABLE,
   6020					;	WD. 02 -- NUMBER OF TABLE ENTRIES (8). (MUST BE AT LEAST 8!)
   6021					;
   6022					; THE FOLLOWING STATUS IS RETURNED:
   6023					;
   6024					; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE STATUS
   6025					; OF ONE (+1).
   6026					;
   6027					; CC-C SET TO INDICATE REJECTION, AND A DIRECTIVE STATUS OF:
   6028					;
   6029					;	-99 -- DIC OR DPB SIZE IS INVALID.
   6030					; CONTROL IS TRANSFERRED HERE (BY DIRECTIVE DISPATCH ROUTINE) WITH THE
   6031					; DIRECTIVE ISSUING TASK'S PS, PC, & R1-R5 PUSHED ONTO THE
   6032					;  STACK, AND R0-R5 SET AS FOLLOWS:
   6033					;	R1 -- ADDRESS OF WORD FOLLOWING DIC & SIZE
   6034					;	R2 -- DPB SIZE
   6035					;	R3 -- DIC (DIRECTIVE IDENTIFICATION CODE)
   6036					;	R5 -- ATL NODE ADDRESS OF ISSUING TASK (.CRTSK)
   6037					;
   6038					;
   6039					; R5 IS LEFT UNALTERED (I.E. POINTING TO ISSUING TASK'S ATL NODE).
   6040									;R1 IS POINTING TO THE ADDRESS OF THE TABLE
   6041									;R5 CONTAINS THE TABLE SIZE
   6042					;
   6043	013220	016502 	000016 		.D.STV::MOV	A.TD(R5),R2	;FIND THE STD ADDRESS OF THIS TASK
   6044	013224					MFPS	@R1,S.SS(R2)	;SET UP SST VECTOR ADDRESS
	013224	011162 	000030 			MOV	@R1,S.SS(R2)
   6045	013230	104401 				TRAP	DR.01		;VALID DIRECTIVE RETURN
   6046						.TITLE	DMAST	- SPECIFY AST SERVICE DIRECTIVES
   6047	013232					IDENT$	1,0
						.IDENT	/001000/
   6048					;
   6049					;                             COPYRIGHT (C) 1975, 1978 BY
DMAST	- SPECIFY AST SERVICE D	MACRO M1108  16-DEC-77 11:28  PAGE 87-1
DIRECTIVE -- SPECIFY SST VECTOR TABLE FOR TASK

   6050					;                     DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
   6051					;
   6052					;       THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE  USED  AND  COPIED
   6053					;       ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
   6054					;       OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR ANY OTHER COPIES THERE-
   6055					;       OF  MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
   6056					;       NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
   6057					;
   6058					;       THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT
   6059					;       NOTICE  AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
   6060					;       CORPORATION.
   6061					;
   6062					;       DIGITAL ASSUMES NO RESPONSIBILITY FOR THE  USE  OR  RELIABILITY  OF  ITS
   6063					;       SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
   6064					;
   6065					;		MODULE: SPECIFY AST SERVICE DIRECTIVES
   6066					;
   6067					;		VERSION: 01-00
   6068					;
   6069					;		AUTHOR: R. MCLEAN
   6070					;
   6071					;		DATE: 19 JUN 75
   6072					;
   6073					;
   6074					;	THIS MODULE CONTAINS:
   6075					;
   6076					;	1 -- CODE TO SERVICE THE "SPECIFY POWER RECOVERY AST" DIRECTIVE,
   6077					;
   6078					;	MACRO LIBRARY CALLS
   6079					;
   6081						.MCALL	CALL,RETURN,MTPS,MTPI,MFPI,MFPS
DMAST	- SPECIFY AST SERVICE D	MACRO M1108  16-DEC-77 11:28  PAGE 88
DIRECTIVE -- SPECIFY POWER FAIL AST

   6084						.SBTTL	DIRECTIVE -- SPECIFY POWER FAIL AST
   6085					;+
   6086					; THE "SPECIFY POWER FAIL AST" DIRECTIVE
   6087					;
   6088					; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO RECORD EITHER (1) THAT POWER
   6089					; RECOVERY AST'S FOR THE ISSUING TASK ARE DESIRED, AND WHERE CONTROL
   6090					; IS TO BE TRANSFERRED WHEN A POWER FAIL AST OCCURS, OR (2) THAT
   6091					; POWER FAIL AST'S FOR THE ISSUING TASK ARE NO LONGER DESIRED.
   6092					;
   6093					; A TWO WORD DPB OF THE FOLLOWING FORMAT IS USED:
   6094					;
   6095					;	WD. 00 -- DIC (45..) & DPB SIZE (2.),
   6096					;	WD. 01 -- [AST SERVICE ENTRY POINT].
   6097					;
   6098					; WHEN AN "AST SERVICE ENTRY POINT" IS SPECIFIED, FUTURE POWER FAIL
   6099					; AST'S WILL OCCUR FOR THE ISSUING TASK, AND CONTROL WILL BE TRANSFERRED
   6100					; TO THE INDICATED LOCATION WHENEVER A POWER FAIL AST OCCURS.
   6101					;
   6102					; WHEN AN "AST SERVICE ENTRY POINT" IS NOT SPECIFIED (ZERO SECOND DPB
   6103					; WORD), FUTURE POWER FAIL AST'S WILL NOT OCCUR (UNTIL AN AST ENTRY
   6104					; POINT IS SPECIFIED AGAIN).
   6105					;
   6106					; THE FOLLOWING STATUS IS RETURNED:
   6107					;
   6108					; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE STATUS
   6109					;
   6110					; OF ONE (+1).
   6111					;
   6112					; CC-C SET TO INDICATE REJECTION, AND A DIRECTIVE STATUS OF:
   6113					;
   6114					;	-08 -- AST ENTRY ALREADY UN-SPECIFIED,
   6115					;
   6116					;	-98 -- PART OF DPB IS OUT OF ISSUING TASK'S ADDRESS SPACE,
   6117					;	-99 -- DIC OR DPB SIZE IS INVALID.
   6118					;
   6119					; CONTROL IS TRANSFERRED HERE (BY DIRECTIVE DISPATCH ROUTINE) WITH THE
   6120					; DIRECTIVE ISSUING TASK'S PS, PC, & R1-R5 PUSHED ONTO THE
   6121					;  STACK, AND R0-R5 SET AS FOLLOWS:
   6122					;	R1 -- ADDRESS OF WORD FOLLOWING DIC & SIZE
   6123					;	R2 -- DPB SIZE
   6124					;	R3 -- DIC (DIRECTIVE IDENTIFICATION CODE)
   6125					;	R5 -- ATL NODE ADDRESS OF ISSUING TASK (.CRTSK)
   6126					;
   6127					;
   6128					; R5 IS LEFT UNALTERED (I.E. POINTING TO ISSUING TASK'S ATL NODE).
   6129					;
   6130	013232				.D.PUT::MFPS	@R1,R1		;FIND THE LAST WORD OF THE DPB
	013232	011101 				MOV	@R1,R1
   6131	013234	001403 				BEQ	20$		;YES -- THEN CHECK IT OUT
   6132	013236	010165 	000034 		10$:	MOV	R1,A.PF(R5)	;SPECIFY POWER FAIL AST
   6133	013242	104401 				TRAP	DR.01		;AND RETURN +1
   6134					;
   6135	013244	005765 	000034 		20$:	TST	A.PF(R5)	;CHECK FOR ALREADY CLEAR
   6136	013250	001372 				BNE	10$		;NO -- ALL OK
   6137	013252	104770 				TRAP	DE.08		;YES -- ERROR
DMREQ	- "REQUEST AND EXECUTE"	MACRO M1108  16-DEC-77 11:28  PAGE 89
DIRECTIVE -- SPECIFY POWER FAIL AST

   6139						.TITLE	DMREQ	- "REQUEST AND EXECUTE" DIRECTIVES MODULE
   6140	013254					IDENT$	1,0
						.IDENT	/001000/
   6141					;
   6142					;                             COPYRIGHT (C) 1975, 1978 BY
   6143					;                     DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
   6144					;
   6145					;       THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE  USED  AND  COPIED
   6146					;       ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
   6147					;       OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR ANY OTHER COPIES THERE-
   6148					;       OF  MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
   6149					;       NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
   6150					;
   6151					;       THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT
   6152					;       NOTICE  AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
   6153					;       CORPORATION.
   6154					;
   6155					;       DIGITAL ASSUMES NO RESPONSIBILITY FOR THE  USE  OR  RELIABILITY  OF  ITS
   6156					;       SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
   6157					;
   6158					;		MODULE: "REQUEST" DIRECTIVE
   6159					;
   6160					;		VERSION: 01-00
   6161					;
   6162					;		AUTHOR: R. MCLEAN
   6163					;
   6164					;		DATE: 1 JUL 75
   6165					;
   6166					;
   6167					;	THIS MODULE CONTAINS:
   6168					;
   6169					;	1 -- CODE TO SERVICE THE "REQUEST" DIRECTIVE.
   6170					;
   6171					;	MACROS
   6172					;
   6174						.MCALL	CALL,RETURN,MFPS
DMREQ	- "REQUEST AND EXECUTE"	MACRO M1108  16-DEC-77 11:28  PAGE 90
DIRECTIVE -- TASK SCHEDULING -- REQUEST

   6177						.SBTTL	DIRECTIVE -- TASK SCHEDULING -- REQUEST
   6178					;+
   6179					; THE "REQUEST" DIRECTIVE
   6180					;
   6181					; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO MAKE A TASK ACTIVE.  I.E., TO
   6182					; RUN CONTINGENT UPON PRIORITY AND MEMORY AVAILABILITY.
   6183					;
   6184					; A SEVEN WORD DPB OF THE FOLLOWING FORMAT IS USED:
   6185					;
   6186					;	WD. 00 -- DIC (11.) & DPB SIZE (7.),
   6187					;	WD. 01 -- TASK NAME (FIRST HALF),
   6188					;	WD. 02 -- TASK NAME (SECOND HALF),
   6189					;	WD. 03 -- [PARTITION NAME (FIRST HALF)],
   6190					;	WD. 04 -- [PARTITION NAME (SECOND HALF)],
   6191					;	WD. 05 -- [PRIORITY],
   6192					;	WD. 06 -- [UIC].
   6193					;
   6194					; THE FOLLOWING STATUS IS RETURNED:
   6195					;
   6196					; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE STATUS
   6197					; OF ONE (+1).
   6198					;
   6199					; CC-C SET TO INDICATE REJECTION, AND A DIRECTIVE STATUS OF:
   6200					;
   6201					;	-01 -- INSUFFICIENT POOL NODES AVAILABLE,
   6202					;	-03 -- PARTITION TOO SMALL FOR TASK,
   6203					;	-06 -- HANDLER TASK NOT RESIDENT TO LOAD TASK,
   6204					;	-07 -- TASK IS ACTIVE,
   6205					;
   6206					;	-94 -- PARTITION NOT IN SYSTEM (NO TPD ENTRY FOUND),
   6207					;	-95 -- INVALID PRIORITY SPECIFIED (<0 OR >250.),
   6208					;	-99 -- DIC OR DPB SIZE IS INVALID.
   6209					;
   6210					;-
   6211	013254				.D.REQ::CALL	..FSTD		;SET R2 TO STD ENTRY ADDRESS, OR TO
	013254	004737 	041562'			JSR	PC,..FSTD
   6212									;ZERO IF TASK NAME NOT FOUND (AND SET
   6213									;CONDITION CODES PER "TST R2").
   6214									;
   6215									;ADVANCE R1 BY FOUR (PAST TASK NAME).
   6216					;
   6217					;
   6218	013260	001406 				BEQ	20$		;IF TASK IS NOT INSTALLED TRY TO GET IT INSTALLED
   6219	013262					CALL	.FEPPU		;SET R3 TO TPD ADDRESS IF A PARTITION IS
	013262	004737 	005066'			JSR	PC,.FEPPU
   6220									;SPECIFIED, OR TO ZERO IF NOT SPECIFIED.
   6221									;
   6222									;SET R4 TO PRIORITY IF SPECIFIED, OR TO
   6223									;ZERO IF NOT SPECIFIED.
   6224									;
   6225									;
   6226									;ADVANCE R1 BY EIGHT (PAST PARTITION NAME,
   6227									;PRIORITY INDICATOR, AND UIC INDICATOR.).
   6228									;
   6229									;IF INVALID PRIORITY, RETURN STS=-95.
   6230									;IF PARTITION NOT IS SYSTEM, RETURN
   6231									;STS=-94.  IF NON-PRIVILEGED TASK HAS
DMREQ	- "REQUEST AND EXECUTE"	MACRO M1108  16-DEC-77 11:28  PAGE 90-1
DIRECTIVE -- TASK SCHEDULING -- REQUEST

   6232									;SPECIFIED OTHER THAN OWN UIC, RETURN
   6233									;STS=-91.  IF SPECIFIED PARTITION IS
   6234									;TOO SMALL FOR TASK, RETURN STS=-03.
   6235					;
   6236					;
   6237					;
   6238					;
   6239	013266				10$:	CALL	.REQS		;MAKE A TASK ACTIVE PER R1, R2, R3, R4 & R5.
	013266	004737 	004362'			JSR	PC,.REQS
   6240									;(R1, R2, R3, R4, & R5 ARE ALTERED)
   6241					;
   6242	013272	000162 	005056'			JMP	.RQESD(R2)	;RETURN DIRECTIVE STATUS PER SUBROUTINE
   6243									;STATUS IN R2.
   6244					;
   6245	013276	012704 	013466'		20$:	MOV	#RQSPB,R4	;SET UP TO INSERT PARAMETERS INTO SEND
   6246	013302	024141 				CMP	-(R1),-(R1)	;BACKUP TO POINT TO TASK NAME
   6247	013304					MFPS	(R1)+,(R4)+	;TASK NAME
	013304	012124 				MOV	(R1)+,(R4)+
   6248	013306					MFPS	(R1)+,(R4)+
	013306	012124 				MOV	(R1)+,(R4)+
   6249	013310					MFPS	(R1)+,(R4)+	;PARTITION NAME
	013310	012124 				MOV	(R1)+,(R4)+
   6250	013312					MFPS	(R1)+,(R4)+
	013312	012124 				MOV	(R1)+,(R4)+
   6251	013314					MFPS	(R1)+,(R4)+	;PRIORITY
	013314	012124 				MOV	(R1)+,(R4)+
   6252	013316	012704 	033506'			MOV	#.POLLH,R4	;PICK A NODE FROM THE POOL
   6253	013322					CALL	..PICK
	013322	004737 	041464'			JSR	PC,..PICK
   6254	013326	103001 				BCC	30$		;GOT ONE
   6255	013330	104777 				TRAP	DE.01		;NONE RETURN -1
   6256					;
   6257	013332	010401 			30$:	MOV	R4,R1		;SAVE THE NODE ADDRESS
   6258	013334	012704 	033506'			MOV	#.POLLH,R4	;FIND THE LISTHEAD OF THE POOL
   6259	013340	021404 				CMP	@R4,R4		;ANY NODES?
   6260	013342	001003 				BNE	35$		;YES -- PROCEED
   6261	013344					CALL	..NADD		;NO RETURN NODE
	013344	004737 	041422'			JSR	PC,..NADD
   6262	013350	104777 				TRAP	DE.01		;NOT ENOUGH NODES
   6263					;
   6264	013352	010137 	013500'		35$:	MOV	R1,RQSTD	;SET UP THE STD ADDRESS
   6265	013356	005743 				TST	-(R3)		;BACK UP TO POINT TO CORRECT ENTRY TO INSERT
   6266	013360	012704 	013466'			MOV	#RQSPB,R4	;SET UP PARAMETERS IN STD
   6267	013364	012421 				MOV	(R4)+,(R1)+
   6268	013366	012421 				MOV	(R4)+,(R1)+
   6269	013370	005021 				CLR	(R1)+
   6270	013372	012721 	040005 			MOV	#SF.EX!SF.TA!SF.IR,(R1)+ ;DECLARE TASK ACTIVE
   6271	013376	062701 	000014 			ADD	#S.RF-S.DP,R1	;POINT TO SEND LISTHEAD
   6272	013402	010111 				MOV	R1,@R1		;SET UP LISTHEAD
   6273	013404	010161 	000002 			MOV	R1,2(R1)
   6274	013410	013704 	013500'			MOV	RQSTD,R4	;RESTORE STD ADDRESS
   6275	013414	011301 			40$:	MOV	@R3,R1		;MAKE ENTRY IN STD
   6276	013416	001403 				BEQ	50$		;END OF LIST
   6277	013420	010423 				MOV	R4,(R3)+	;MOVE LIST DOWN
   6278	013422	010104 				MOV	R1,R4		;SET NEXT ENTRY
   6279	013424	000773 				BR	40$		;GO NEXT ENTRY
   6280					;
DMREQ	- "REQUEST AND EXECUTE"	MACRO M1108  16-DEC-77 11:28  PAGE 90-2
DIRECTIVE -- TASK SCHEDULING -- REQUEST

   6281	013426	010413 			50$:	MOV	R4,@R3		;STORE LAST ENTRY
   6282	013430	062737 	000002 	032004'		ADD	#2,.STDTZ	;UPDATE SIZE
   6286	013436	012702 	032312'			MOV	#STDINS,R2	;SET UP STD NODE OF RECEIVER
   6287	013442	012701 	013462'			MOV	#RQSPT,R1	;SET UP TO SEND TO INSTALL
   6288	013446					CALL	.SEND		;SEND DATA
	013446	004737 	012746'			JSR	PC,.SEND
   6289	013452	005004 				CLR	R4		;START AT DEFAULT PART & PRI
   6290	013454	005003 				CLR	R3
   6291	013456	010102 				MOV	R1,R2		;SET UP STD OF INSTALL
   6292	013460	000702 				BR	10$
   6293					;
   6294	013462	013466'			RQSPT::	.WORD	RQSPB		;POINTER TO SEND BLOCK
   6295	013464	000000 				.WORD	0		;EVENT FLAG (NONE)
   6296	013466				RQSPB:	.BLKW	5		;DATA TO BE XMITTED
   6297	013500	000000 			RQSTD:	.WORD	0		;STD ADDRESS
   6298					;
   6299						.TITLE	DMGPP	- "GET TASK PARAMETERS" DIRECTIVE MODULE
   6300	013502					IDENT$	1,0
						.IDENT	/001000/
   6301					;
   6302					;                             COPYRIGHT (C) 1975, 1978 BY
   6303					;                     DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
   6304					;
   6305					;       THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE  USED  AND  COPIED
   6306					;       ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
   6307					;       OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR ANY OTHER COPIES THERE-
   6308					;       OF  MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
   6309					;       NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
   6310					;
   6311					;       THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT
   6312					;       NOTICE  AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
   6313					;       CORPORATION.
   6314					;
   6315					;       DIGITAL ASSUMES NO RESPONSIBILITY FOR THE  USE  OR  RELIABILITY  OF  ITS
   6316					;       SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
   6317					;
   6318					;		MODULE: "GET TASK PARAMETERS" DIRECTIVE
   6319					;
   6320					;		VERSION: 01-00
   6321					;
   6322					;		AUTHOR: R. MCLEAN
   6323					;
   6324					;		DATE: 19 AUG 75
   6325					;
   6326					;
   6327					;	THIS MODULE CONTAINS:
   6328					;
   6329					;	1 -- CODE TO SERVICE THE "GET TASK PARAMETERS" DIRECTIVE.
   6330					;
   6331					; MACRO CALLS
   6332					;
   6334						.MCALL	MTPS,MFPS
DMGPP	- "GET TASK PARAMETERS"	MACRO M1108  16-DEC-77 11:28  PAGE 91
DIRECTIVE -- GET TASK PARAMETERS

   6337						.SBTTL	DIRECTIVE -- GET TASK PARAMETERS
   6338					;+
   6339					; THE "GET TASK PARAMETERS" DIRECTIVE
   6340					;
   6341					; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO FILL AN INDICATED SIXTEEN WORD
   6342					; BUFFER WITH PARAMETERS RELATING TO THE ISSUING TASK.
   6343					;
   6344					; A TWO WORD DPB OF THE FOLLOWING FORMAT IS USED:
   6345					;
   6346					;	WD. 00 -- DIC (63.) & DPB SIZE (2.),
   6347					;	WD. 01 -- ADDRESS OF SIXTEEN WORD BUFFER.
   6348					;
   6349					; THE SIXTEEN WORD BUFFER IS FILLED AS FOLLOWS:
   6350					;
   6351					;	WD. 00 -- ISSUING TASK'S NAME (FIRST HALF),
   6352					;	WD. 01 -- ISSUING TASK'S NAME (SECOND HALF),
   6353					;	WD. 02 -- PARTITION NAME (FIRST HALF),
   6354					;	WD. 03 -- PARTITION NAME (SECOND HALF),
   6355					;	WD. 04 -- TASK NAME OF REQUESTOR OF ISSUING TASK (FIRST HALF),
   6356					;	WD. 05 -- TASK NAME OF REQUESTOR OF ISSUING TASK (SECOND HALF),
   6357					;	WD. 06 -- RUN PRIORITY,
   6358					;	WD. 07 -- USER IDENTIFICATION CODE (UIC FOR FILES SYSTEM),
   6359					;	WD. 10 -- NUMBER OF LOGICAL I/O UNITS (LUN'S),
   6360					;	WD. 11 -- MACHINE TYPE INDICATOR (VIZ., 45. FOR PDP-11/45),
   6361					;	WD. 12 -- STD FLAGS WORD,
   6362					;	WD. 13 -- [ADDRESS OF TASK SST VECTOR TABLE],
   6363					;	WD. 14 -- [SIZE OF TASK SST VECTOR TABLE (IN WORDS)],
   6364					;	WD. 15 -- TASK SIZE
   6365					;	WD. 16 -- ZERO (RESERVED),
   6366					;	WD. 17 -- ZERO (RESERVED).
   6367					;
   6368					; THE FOLLOWING STATUS IS RETURNED:
   6369					;
   6370					; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE STATUS
   6371					; OF ONE (+1).
   6372					;
   6373					; CC-C SET TO INDICATE REJECTION, AND A DIRECTIVE STATUS OF:
   6374					;
   6375					;	-98 -- PART OF DPB OR BUFFER IS OUT OF TASK'S ADDRESS SPACE,
   6376					;	-99 -- DIC OR DPB SIZE IS INVALID.
   6377					;-
   6378		000050 			.PDP11=40.		;PDP11/40
   6379					; CONTROL IS TRANSFERRED HERE (BY DIRECTIVE DISPATCH ROUTINE) WITH THE
   6380					; DIRECTIVE ISSUING TASK'S PS, PC, & R0-R5 PUSHED ONTO THE
   6381					; KERNEL STACK, AND R0-R5 SET AS FOLLOWS:
   6382					;	R0 -- ATL NODE ADDRESS OF ISSUING TASK ('.CRTSK'),
   6383					;	R1 -- VIRTUAL ADDRESS OF DPB PLUS TWO,
   6384					;	R2 -- SIZE OF DPB (IN WORDS),
   6385					;	R3 -- TWICE THE DIRECTIVE IDENTIFICATION CODE (2*DIC),
   6386					;	R4 -- STD ENTRY ADDRESS OF ISSUING TASK, AND
   6387					;	R5 -- LAST WORD OF DPB.
   6388					;
   6389					; R0 IS LEFT UNALTERED (I.E. POINTING TO ISSUING TASK'S ATL NODE).
   6390					;
   6391					;
   6392	013502	005046 			.D.GPP::CLR	-(SP)		;PUSH ZERO
   6393	013504	005046 				CLR	-(SP)		;PUSH ZERO
DMGPP	- "GET TASK PARAMETERS"	MACRO M1108  16-DEC-77 11:28  PAGE 91-1
DIRECTIVE -- GET TASK PARAMETERS

   6394	013506	016504 	000016 			MOV	A.TD(R5),R4	;FIND STD ADDRESS
   6395	013512	016502 	000006 			MOV	A.PD(R5),R2	;FIND THE TPD ADDRESS
   6396	013516	016500 	000012 			MOV	A.HA(R5),R0	;FIND THE HEADER ADDRESS
   6397	013522	016246 	000006 			MOV	T.PZ(R2),-(SP)	;SET PARTITION SIZE (TASK SIZE)
   6398	013526	012746 	000010 			MOV	#8.,-(SP)	;PUSH VECTOR TBL SIZE
   6399	013532	016046 	000106 			MOV  H.TKVA(R0),-(SP)	;PUSH VECTOR TBL ADDRESS
   6400	013536	016446 	000006 			MOV	S.FW(R4),-(SP)	;PUSH STD FLAGS WORD
   6401	013542	012746 	000050 			MOV	#.PDP11,-(SP)	;PUSH MACHINE TYPE INDICATOR
   6402	013546	016046 	000130 			MOV  H.LUT(R0),-(SP)	;PUSH NUMBER OF LUN'S
   6403	013552	013746 	031262'			MOV	.SYUIC,-(SP)	;PUSH UIC
   6404	013556	005046 				CLR	-(SP)		;PUSH RUN PRIORITY
   6405	013560	116516 	000010 			MOVB	A.RP(R5),@SP
   6406	013564	005046 				CLR	-(SP)
   6407	013566	005046 				CLR	-(SP)
   6408	013570	016246 	000002 			MOV	T.PN+2(R2),-(SP)
   6409	013574	016246 	000000 			MOV	T.PN+0(R2),-(SP)
   6410	013600	016446 	000002 			MOV	S.TN+2(R4),-(SP);PUSH TASK NAME
   6411	013604	016446 	000000 			MOV	S.TN+0(R4),-(SP)
   6412					;
   6413	013610	012702 	000020 			MOV	#16.,R2		;POP SIXTEEN WORDS FROM STACK INTO BUFFER
   6414	013614					MFPS	@R1,R1		;PICK UP HIS ADDRESS
	013614	011101 				MOV	@R1,R1
   6415									;IN ISSUING TASK'S ADDRESS SPACE.
   6416									;R5 CONTAINS VIRTUAL ADDRESS OF BUFFER.
   6417	013616				10$:
   6418	013616					MTPS	(SP)+,(R1)+
	013616	012621 				MOV	(SP)+,(R1)+
   6419	013620	077202 				SOB	R2,10$
   6420					;
   6421	013622	104401 				TRAP	DR.01		;RETURN STS=+1.
   6422					;
   6423						.TITLE	DMGMP	- "GET PARTITION PARAMETERS" DIRECTIVE MODULE
   6424	013624					IDENT$	1,0
						.IDENT	/001000/
   6425					;
   6426					;                             COPYRIGHT (C) 1975, 1978 BY
   6427					;                     DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
   6428					;
   6429					;       THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE  USED  AND  COPIED
   6430					;       ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
   6431					;       OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR ANY OTHER COPIES THERE-
   6432					;       OF  MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
   6433					;       NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
   6434					;
   6435					;       THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT
   6436					;       NOTICE  AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
   6437					;       CORPORATION.
   6438					;
   6439					;       DIGITAL ASSUMES NO RESPONSIBILITY FOR THE  USE  OR  RELIABILITY  OF  ITS
   6440					;       SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
   6441					;
   6442					;		MODULE: "GET PARTITION PARAMETERS" DIRECTIVE
   6443					;
   6444					;		VERSION: 01-00
   6445					;
   6446					;		AUTHOR: R. MCLEAN
   6447					;
DMGMP	- "GET PARTITION PARAME	MACRO M1108  16-DEC-77 11:28  PAGE 91-2
DIRECTIVE -- GET TASK PARAMETERS

   6448					;		DATE: 19 AUG 75
   6449					;
   6450					;
   6451					;	THIS MODULE CONTAINS:
   6452					;
   6453					;	1 -- CODE TO SERVICE THE "GET PARTITION PARAMETERS" DIRECTIVE.
   6454					;
   6455					; MACRO CALLS
   6456					;
   6458						.MCALL	MFPI,MTPI,MFPS,MTPS
DMGMP	- "GET PARTITION PARAME	MACRO M1108  16-DEC-77 11:28  PAGE 92
DIRECTIVE -- GET PARTITION PARAMETERS

   6461						.SBTTL	DIRECTIVE -- GET PARTITION PARAMETERS
   6462					;+
   6463					; THE "GET PARTITION PARAMETERS" DIRECTIVE
   6464					;
   6465					; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO FILL AN INDICATED THREE WORD
   6466					; BUFFER WITH PARTITION PARAMETERS.
   6467					;
   6468					; A FOUR WORD DPB OF THE FOLLOWING FORMAT IS USED:
   6469					;
   6470					;	WD. 00 -- DIC (65.) & DPB SIZE (4.),
   6471					;	WD. 01 -- [PARTITION NAME (FIRST HALF)],
   6472					;	WD. 02 -- [PARTITION NAME (SECOND HALF)],
   6473					;	WD. 03 -- ADDRESS OF THREE WORD BUFFER.
   6474					;
   6475					; IF A PARTITION IS NOT SPECIFIED, THE PARTITION OF THE ISSUING TASK
   6476					; IS ASSUMED.
   6477					;
   6478					; THE THREE WORD BUFFER IS FILLED AS FOLLOWS:
   6479					;
   6480					;	WD. 00 -- 1/64TH BASE ADDRESS OF PARTITION,
   6481					;	WD. 01 -- 1/64TH SIZE OF PARTITION,
   6482					;	WD. 02 -- PARTITION FLAGS WORD.
   6483					;
   6484					; THE FOLLOWING STATUS IS RETURNED:
   6485					;
   6486					; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE STATUS
   6487					; OF ONE (+0).
   6488					;
   6489					; CC-C SET TO INDICATE REJECTION, AND A DIRECTIVE STATUS OF:
   6490					;
   6491					;	-02 -- INDICATED PARTITION NOT IS SYSTEM,
   6492					;
   6493					;	-98 -- PART OF DPB OR BUFFER IS OUT OF TASK'S ADDRESS SPACE,
   6494					;	-99 -- DIC OR DPB SIZE IS INVALID.
   6495					;-
   6496					; CONTROL IS TRANSFERRED HERE (BY DIRECTIVE DISPATCH ROUTINE) WITH THE
   6497					; DIRECTIVE ISSUING TASK'S PS, PC, & R0-R5 PUSHED ONTO THE
   6498					; KERNEL STACK, AND R0-R5 SET AS FOLLOWS:
   6499					;	R0 -- ATL NODE ADDRESS OF ISSUING TASK ('.CRTSK'),
   6500					;	R1 -- VIRTUAL ADDRESS OF DPB PLUS TWO,
   6501					;	R2 -- SIZE OF DPB (IN WORDS),
   6502					;	R3 -- TWICE THE DIRECTIVE IDENTIFICATION CODE (2*DIC),
   6503					;	R4 -- STD ENTRY ADDRESS OF ISSUING TASK, AND
   6504					;	R5 -- LAST WORD OF DPB.
   6505					;
   6506					; R0 IS LEFT UNALTERED (I.E. POINTING TO ISSUING TASK'S ATL NODE).
   6507					;
   6508					; R5 CONTAINS ADDRESS OF THREE WORD BUFFER.
   6509					;
   6510	013624				.D.GMP::MFPI	(R1)+		;PUSH 2-WORD PARTITION NAME (OR TWO ZEROS)
	013624	012146 				MOV	(R1)+,-(SP)
   6511	013626					MFPI	(R1)+		;ONTO KERNEL STACK (IN REVERSE ORDER)
	013626	012146 				MOV	(R1)+,-(SP)
   6512									;WAS A NAME SPECIFIED?
   6513	013630	001011 				BNE	10$		;YES -- SCAN "TPD" FOR MATCH
   6514	013632	005766 	000002 			TST	+2(SP)		;MAYBE -- CHECK FIRST HALF OF NAME
   6515	013636	001006 				BNE	10$		;YES -- SCAN "TPD" FOR MATCH
DMGMP	- "GET PARTITION PARAME	MACRO M1108  16-DEC-77 11:28  PAGE 92-1
DIRECTIVE -- GET PARTITION PARAMETERS

   6516	013640	016504 	000006 			MOV	A.PD(R5),R4	;NO -- REPLACE TWO-ZEROS WITH NAME OF PARTITION
   6517	013644	016446 	000000 			MOV  T.PN+0(R4),-(SP)	;IN WHICH ISSUING TASK IS EXECUTING.
   6518	013650	016446 	000002 			MOV  T.PN+2(R4),-(SP)
   6519	013654				10$:
   6520	013654	012703 	033476'			MOV	#.TPDEA,R3	;SETUP R3 TO SCAN "TPD"
   6521	013660				20$:
   6522	013660	020327 	033216'			CMP	R3,#.TPDBA	;END OF SCAN?
   6523	013664	001001 				BNE	30$
   6524	013666	104776 				TRAP	DE.02		;YES -- RETURN STS=-02.
   6525					;
   6526	013670	162703 	000020 		30$:	SUB	#T.SZ,R3	;NO -- REDUCE R3 TO POINT TO TPD ENTRY
   6527	013674	010304 				MOV	R3,R4		;SETUP R4 TO INDEX THRU TPD ENTRY
   6528	013676	022466 	000002 			CMP	(R4)+,+2(SP)	;DOES NAME MATCH?
   6529	013702	001366 				BNE	20$		;NO -- CONTINUE SCAN
   6530	013704	022416 				CMP	(R4)+,@SP	;MAYBE -- CHECK SECOND HALF
   6531	013706	001364 				BNE	20$		;NO -- CONTINUE SCAN
   6532					;
   6533	013710	012703 	000002 			MOV	#2.,R3		;YES -- MOVE 2-WORDS TO BUF IN PREVIOUS SPACE
   6534	013714					MFPS	@R1,R1		;FIND BUFFER
	013714	011101 				MOV	@R1,R1
   6535	013716	011400 				MOV	@R4,R0		;FIND PARTITION START
   6536	013720				40$:
   6537	013720	012446 				MOV	(R4)+,-(SP)
   6539	013722	006216 				ASR	@SP
   6540	013724	006216 				ASR	@SP
   6541	013726	006216 				ASR	@SP
   6542	013730	006216 				ASR	@SP
   6543	013732	006216 				ASR	@SP
   6544	013734	006216 				ASR	@SP
   6545	013736	042716 	176000 			BIC	#176000,@SP	;MASK OFF CARRY FROM SHIFT
   6547	013742					MTPI	(R1)+
	013742	012621 				MOV	(SP)+,(R1)+
   6548	013744	077313 				SOB	R3,40$
   6549	013746	005724 				TST	(R4)+		;RETURN FLAGS WORD
   6550	013750					MTPS	(R4)+,(R1)+	;SET IN USER'S AREA
	013750	012421 				MOV	(R4)+,(R1)+
   6551					;
   6555	013752	000137 	002774'			JMP	.DR.NS		;RETURN R0 STATUS
   6557					;
   6558						.TITLE	RUN	- CLOCK HANDLER
   6559					;
   6560					;                             COPYRIGHT (C) 1975, 1978 BY
   6561					;                     DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
   6562					;
   6563					;       THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE  USED  AND  COPIED
   6564					;       ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
   6565					;       OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR ANY OTHER COPIES THERE-
   6566					;       OF  MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
   6567					;       NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
   6568					;
   6569					;       THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT
   6570					;       NOTICE  AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
   6571					;       CORPORATION.
   6572					;
   6573					;       DIGITAL ASSUMES NO RESPONSIBILITY FOR THE  USE  OR  RELIABILITY  OF  ITS
   6574					;       SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
   6575					;
RUN	- CLOCK HANDLER	MACRO M1108  16-DEC-77 11:28  PAGE 92-2
DIRECTIVE -- GET PARTITION PARAMETERS

   6576					;		MODULE: "CLOCK TICK RECOGNITION"
   6577					;
   6578					;		VERSION: 07-00
   6579					;
   6580					;		AUTHOR: R. MCLEAN
   6581					;
   6582					;		DATE: 19 JUL 75
   6583					;
   6584					;
   6585					;	THIS MODULE CONTAINS:
   6586					;
   6587					;	1 -- CODE TO SERVICE CLOCK TICK RECOGNITION
   6588					;
   6589					;
   6590					; MODIFICATIONS:
   6591					;
   6592					;	NO.	DATE		PROGRAMMER	PURPOSE
   6593					;	---	----		----------	-------
   6594					;	001	04-MAR-77	R. BELANGER	CHANGE MIDNIGHT RECOGNITION
   6595					;
   6596					;	MACROS
   6597					;
   6599						.MCALL	CALL,RETURN,DIR$,.CRASH,.STKM
RUN	- CLOCK HANDLER	MACRO M1108  16-DEC-77 11:28  PAGE 93
CLOCK TICK RECOGNITION

   6602						.SBTTL	CLOCK TICK RECOGNITION
   6603					;
   6604					; UPDATE TICKS
   6605					;
   6606	013756	012704 	031240'		.TICK::	MOV	#.TICKS,R4	;POINT TO BASE OF TIME PARAMETERS
   6607	013762	005214 				INC	@R4		;UPDATE TICKS
   6608	013764	023714 	031260'			CMP	.TKPS,@R4	;1 SEC YET?
   6609	013770	101020 				BHI	3$		;NO DONE
   6610					;
   6611					; TICKS OVERFLOWED, UPDATE SECONDS
   6612					;
   6613	013772	005024 				CLR	(R4)+		;CLEAR FRACTIONS
   6614	013774	000337 	031256'			SWAB	.SSM+2		;FIND IF TIME TO UPDATE SSM
   6615	014000	001414 				BEQ	3$		;NO -- CONTINUE
   6616	014002	005237 	031254'			INC	.SSM		;UPDATE SECONDS SINCE MIDNIGHT
   6617	014006	022737 	124277 	031254'		CMP	#30.*60.*24.-1,.SSM ;MIDNIGHT?
   6618	014014	101006 				BHI	3$		;NO, CAN INCREMENT
   6619	014016	006337 	031242'			ASL	.CLKSW		;GIVE THE 10 TIME TO CHANGE IT'S DATE -- WE DON'T
   6620									; +++001 RREMOVED 10. INSTRUCTIONS
   6621	014022	001003 				BNE	3$		; +++001 NO -- GO ON
   6622	014024	012737 	177777 	031242'		MOV	#-1,.CLKSW	; +++001 YES -- FLAG NULL TASK TO REQUEST
   6623									; +++001 TIME-OF-DAY TASK
   6624					;
   6625					;INCREMENT IN NO OVERFLOW CASES - SECONDS OR MINUTES
   6626					;
   6627	014032				3$:
   6628					;
   6629					; SET UP FOR LINE FREQ. SERVICE
   6630					;
   6631					;
   6632	014032	012704 	034452'		4$:	MOV	#.CLKBA,R4	;DELETE THE ENTRY OR RESCHEDULE IT
   6633	014036	012405 			10$:	MOV	(R4)+,R5	;NO -- AN ENTRY HERE?
   6634	014040	001436 				BEQ	40$		;NO -- GO
   6635	014042	005724 				TST	(R4)+		;OVER AST ADDRESS
   6636	014044	005324 				DEC	(R4)+		;YES --DECREMENT THE COUNT
   6637	014046	001403 				BEQ	30$		;END OF COUNT SET EVENT FLAG
   6638	014050	062704 	000006 		20$:	ADD	#6,R4		;NO -- LOOK AT NEXT ENTRY
   6639	014054	000770 				BR	10$
   6640					;
   6641	014056	152737 	000001 	031116'	30$:	BISB	#EV.SE,.SERFG+0	 ;DECLARE A SIG EVENT
   6642	014064	012464 	177774 			MOV	(R4)+,-4(R4)	;RESET RESCHEDULE INTERVAL
   6643	014070	052434 				BIS	(R4)+,@(R4)+	;DO THE SETTING OF THE EVENT FLAG
   6644	014072	010446 				MOV	R4,-(SP)	;SAVE R4
   6645	014074	016404 	177766 			MOV	-12(R4),R4	;FIND AST ADDRESS
   6646	014100	001405 				BEQ	35$		;NONE -- FORGET IT
   6647	014102					CALL	.STAST		;START AST
	014102	004737 	005246'			JSR	PC,.STAST
   6648	014106	103002 				BCC	35$		;GOT IT -- CONTINUE
   6649	014110	010437 	031122'			MOV	R4,.CKASS	;NOT QUITE -- TASK IS CURRENT GET AT ..INTX
   6650	014114	012604 			35$:	MOV	(SP)+,R4
   6651	014116	005764 	177772 			TST	-6(R4)		;RESCHEDULE?
   6652	014122	001345 				BNE	10$		;NO -- DO NEXT ENTRY
   6653	014124	162704 	000014 			SUB	#C.SZ,R4	;BACK UP POINTER
   6654	014130					CALL	.CKDEL		;DELETE ENTRY
	014130	004737 	040472'			JSR	PC,.CKDEL
   6655	014134	000740 				BR	10$		;AND TRY AGAIN
   6656					;
RUN	- CLOCK HANDLER	MACRO M1108  16-DEC-77 11:28  PAGE 93-1
CLOCK TICK RECOGNITION

   6657	014136	105337 	031117'		40$:	DECB	.SERFG+1	;COUNT DOWN CLOCK COUNTER
   6658	014142	001305 				BNE	.TICK		;AND GO DO ANOTHER IF WE MISSED ONE
   6659	014144	012604 				MOV	(SP)+,R4	;RESTORE REGISTERS
   6660	014146	012605 				MOV	(SP)+,R5
   6661	014150	053737 	031120'	031116'		BIS	.SEWFL,.SERFG	;SET SIG EVENT FLAG IF NECESSARYH
   6662	014156	005037 	031120'			CLR	.SEWFL		;AND CLEAR FLAG
   6663	014162	000137 	004146'			JMP	..INTX		;AND RETURN TO INTERRUPT EXIT
   6664						.TITLE	QPRDTE	- DTE-20 DRIVER AND PRIMARY PROTOCOL SERVICE
   6665	014166					IDENT$	10,21
						.IDENT	/010210/
   6666					;
   6667					;                             COPYRIGHT (C) 1975, 1978 BY
   6668					;                     DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
   6669					;
   6670					;       THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE  USED  AND  COPIED
   6671					;       ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
   6672					;       OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR ANY OTHER COPIES THERE-
   6673					;       OF  MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
   6674					;       NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
   6675					;
   6676					;       THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT
   6677					;       NOTICE  AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
   6678					;       CORPORATION.
   6679					;
   6680					;       DIGITAL ASSUMES NO RESPONSIBILITY FOR THE  USE  OR  RELIABILITY  OF  ITS
   6681					;       SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
   6682					;
   6683					;
   6684					;		MODULE: "DTE 20 INTERRUPT SERVICE AND TASK
   6685					;
   6686					;		VERSION: V10-21
   6687					;
   6688					;		AUTHOR: R. MCLEAN
   6689					;
   6690					;		DATE: 19 JUL 75
   6691					;
   6692					;
   6693					;	THIS MODULE CONTAINS:
   6694					;
   6695					;	1 -- DTE-20 INTERRUPT SERVICE
   6696					;	2 -- DTE20 TASK SERVICE CODE AND PROTOCOL SERVICE
   6697					;
   6698					; MODIFICATIONS:
   6699					;
   6700					;	NO.	DATE		PROGRAMMER	PURPOSE
   6701					;	---	----		----------	-------
   6702					;	001	21-OCT-76	A. PECKHAM	INSERT CODING TO COUNT
   6703					;						DOORBELLS.
   6704					;	002	08-NOV-76	K. RETI		ADD SUPPRESS SEND-ALL
   6705					;				R. BELANGER	CODE.
   6706					;	003	03-FEB-77	R. BELANGER	ADDED GENERALIZED DL11E
   6707					;						SUPPORT
   6708					;	004	10-FEB-77	A. PECKHAM	KEEP TO-11 QUEUE COUNT
   6709					;						STRAIGHT
   6710					;	005	16-FEB-77	A. PECKHAM	SET SPEED OF REMOTE LINES
   6711					;	006	07-MAR-77	A. PECKHAM	REORGANIZE SENDALL
   6712					;	007	08-MAR-77	A. PECKHAM	FIX "XOFF" FOR CTY
QPRDTE	- DTE-20 DRIVER AND PRI	MACRO M1108  16-DEC-77 11:28  PAGE 93-2
CLOCK TICK RECOGNITION

   6713					;	008	14-MAR-77	R. BELANGER	CONDITIONALLY REMOVE
   6714					;						SUPPORT FOR UNUSED DTE-20
   6715					;						DIRECTIVES
   6716					;	009	31-MAY-77	R. BELANGER	ADD SUPPORT FOR KLINIK
   6717					;						PARAMETER PASSING
   6718					;	010	15-JUL-77	R. BELANGER	ADD AUTO-BAUD SUPPORT
   6719					;	011	25-JUL-77	R. BELANGER	FIX BUG IN INITIAL STATUS
   6720					;	012	25-AUG-77	R. BELANGER	ADD KL POWERFAIL SUPPORT
   6721					;	013	02-SEP-77	R. BELANGER	XON/XOFF BUG FIX
QPRDTE	- DTE-20 DRIVER AND PRI	MACRO M1108  16-DEC-77 11:28  PAGE 94
CLOCK TICK RECOGNITION

   6723					;
   6724					;	MACRO DEFINITIONS
   6725					;
   6727						.MCALL	RQST$,WTSE$S,$DEF
   6728						.MCALL	.DQPEN,MRKT$,WTLO$,WTSE$,.CRASH,CALL,RETURN,.STKM,DIR$,.INH6,.ENB6
   6729	014166					$DEF
   6730						.MCALL	WSIG$S,.INH5,.ENB5
QPRDTE	- DTE-20 DRIVER AND PRI	MACRO M1108  16-DEC-77 11:28  PAGE 95
CLOCK TICK RECOGNITION

   6733					;
   6734					;	DATA AREAS
   6735					;
   6736		000140 				E.OPSZ==140	;OPTIMAL SIZE FOR A TO 10 QUEUE
   6737					;
   6738					; LOCAL DEFINITIONS FOR DTE20 TASK
   6739					;
   6740		000100 				EF.TED=100	;TO ELEVEN DONE EVENT FLAG
   6741					;
   6742					; TO ELEVEN QUEUE ENTRY
   6743					;
   6744		000000 				E.FP==0		;FORWARD POINTER
   6745		000002 				E.LS==2		;LIST SIZE
   6746		000004 				E.FN==4		;FUNCTION CODE
   6747		000006 				E.DV==6		;DEVICE CODE
   6748		000010 				E.FW==10	;FUNCTION FIRST WORD
   6749					;
   6750					;	FUNCTION CODE DEFINITIONS
   6751					;
   6752		000001 				BC.RQD==1	;REQUEST DEVICES
   6753		000002 				BC.HAD==2	;HERE ARE DEVICES
   6754		000003 				BC.STR==3	;STRING DATA
   6755		000004 				BC.LNC==4	;LINE/CHARACTER DATA
   6756		000005 				BC.RDS==5	;RETURN DEVICE STATUS
   6757		000006 				BC.SDS==6	;SET DEVICE STATUS
   6758		000007 				BC.HDS==7	;HERE IS DEVICE STATUS
   6759		000010 				BC.DES==10	;DEVICE ERROR STATUS
   6760		000011 				BC.RTD==11	;RETURN TIME OF DAY
   6761		000012 				BC.HTD==12	;HERE IS TIME OF DAY
   6762		000013 				BC.FOD==13	;FLUSH OUTPUT DEVICE QUEUE
   6763		000014 				BC.SNA==14	;SEND ALL
   6764		000015 				BC.TDU==15	;DEVICE DIAL UP
   6765		000016 				BC.THU==16	;DEVICE HANG UP
   6766		000017 				BC.SAK==17	;ACKNOWLEDGE DEVICE DONE
   6767		000020 				BC.XOF==20	;X-OFF (TTY ONLY)
   6768		000021 				BC.XON==21	;X-ON (TTY ONLY)
   6769		000022 				BC.STS==22	;SET TTY SPEED
   6770		000023 				BC.SLA==23	;SET LINE ALLOCATION
   6771		000024 				BC.BTP==24	;11 REBOOT WORD
   6772		000025 				BC.AKA==25	;ACK ALL
   6773		000026 				BC.SPT==26	;START/STOP LINE
   6774		000027 				BC.EDR==27	;ENABLE/DISABLE REMOTES
   6775		000030 				BC.LDR==30	;LOAD LP RAM
   6776		000031 				BC.LDV==31	;LOAD LP VFU
   6777		000032 				BC.NSA==32	; +002 SUPPRESS SEND-ALL FUNCTION (SET OR CLEAR BIT)
   6778		000033 				BC.SKP==33	; +++009 SEND KLINIK PARAMETERS
   6779		000034 				BC.FNM==34	; +++009 1 GREATER THAN MAX FUNCTION
   6780					;
   6781					;	DPB'S
   6782					;
   6783	014166				WTLODT:
   6784	014166					WTLO$	1,EF.TED	;WAIT FOR TEN DONE
	014166	   053 	   003 			.BYTE	43.,3
	014170	000001 				.WORD	1
	014172	000100 				.WORD	EF.TED
QPRDTE	- DTE-20 DRIVER AND PRI	MACRO M1108  16-DEC-77 11:28  PAGE 96
QUEUED PROTOCOL -- PROTOCOL PACKET SERVICE DISPATCH

   6786						.SBTTL	QUEUED PROTOCOL -- PROTOCOL PACKET SERVICE DISPATCH
   6787
   6788	014174				DTEHD::
   6789	014174					.STKM	0,0,0,0,0,0,0,QPRDTE,174000,DTESP
	014242	000000 	000000 	000000 		.WORD	0,0,0,0
	014250	000000
	014270	174000 	014502'	014454'		.WORD	174000,QPRDTE,DTESP
	014324	000005 				.WORD	5
	014326	037202'				.WORD	TTPEN
	014330	000000 				.WORD	0
	014332	000000 				.WORD	0
	014334	000000 				.WORD	0
	014336	000000 				.WORD	0
	014340	000000 				.WORD	0
	014342	000000 				.WORD	0
	014344	000000 				.WORD	0
	014346	000000 				.WORD	0
	014350	000000 				.WORD	0
	014352	000000 				.WORD	0
	014454	000000 				.WORD	0
	014456	000000 				.WORD	0
	014460	000000 				.WORD	0
	014462	000000 				.WORD	0
	014464	000000 				.WORD	0
	014466	000000 				.WORD	0
	014470	014502'				.WORD	QPRDTE
	014472	174000 				.WORD	174000
   6790
   6791	014474				QPRDTC::
   6792	014474	012737 	037777 	174400 		MOV	#37777,@#DLYCNT	;SET UP THE DELAY COUNTER
   6793	014502				QPRDTE::
   6794	014502					DIR$	#WTLODT		;WAIT FOR TEN DONE
	014502	012746 	014166'			MOV	#WTLODT,-(SP)
	014506	104375 				EMT	375
   6795	014510					.INH6			;INHIBIT INTERRUPTS
	014510	013746 	177776 			MOV	@#PS,-(SP)
	014514	112737 	000300 	177776 		MOVB	#300,@#PS
   6796	014522	013700 	031110'			MOV	.CRTSK,R0	;;;POINT TO CURRENT TASK
   6797	014526	005060 	000020 			CLR	A.EF(R0)	;;;AND CLEAR THE EVENT FLAGS.
   6798	014532					.ENB6			;;;RE-ENABLE THE INTERRUPTS
	014532	012637 	177776 			MOV	(SP)+,@#PS
   6799	014536				QPRDTL:
   6800	014536					.INH6			;;;INHIBIT DTE20 INTERRUPTS
	014536	013746 	177776 			MOV	@#PS,-(SP)
	014542	112737 	000300 	177776 		MOVB	#300,@#PS
   6801	014550	013704 	031750'			MOV	TO11Q,R4	;;;PICK IT FROM THE QUEUE
   6802	014554	001402 				BEQ	10$		;;;NO QUEUE
   6803	014556	011437 	031750'			MOV	@R4,TO11Q	;;;SET UP THE NEXT LISTHEAD OR ZERO
   6804	014562				10$:
   6805	014562					.ENB6			;;;ENABLE DTE20 INTERRUPTS
	014562	012637 	177776 			MOV	(SP)+,@#PS
   6806	014566	010400 				MOV	R4,R0		;SET IN R0 ALSO
   6807	014570	001741 				BEQ	QPRDTC		;RESET DELAY COUNTER
   6808	014572	116401 	000004 			MOVB	E.FN(R4),R1	;FIND THE FUNCTION CODE OF THE REQUEST
   6809	014576	006301 				ASL	R1		;MAKE IT 2* FUNCTION
   6811	014600	020127 	000066 			CMP	R1,#DFTSZ	;CHECK FOR LEGAL FUNCTION
   6812	014604	101035 				BHI	UNRGFN
QPRDTE	- DTE-20 DRIVER AND PRI	MACRO M1108  16-DEC-77 11:28  PAGE 96-1
QUEUED PROTOCOL -- PROTOCOL PACKET SERVICE DISPATCH

   6814	014606	000171 	014610'			JMP	@DFTBL-2(R1)	;GO TO THE CORRECT ROUTINE
   6815						;
   6816	014612				DFTBL::
   6817	014612	016500'				HICTS			; (01) HERE IS INITIAL STATUS
   6818	014614	014700'				UNRGFN			; (02) UNRECGONIZED FUNCTION
   6819	014616	016710'				STRDAT			; (03) STRING DATA FOR DEVICE
   6820	014620	017114'				LINCHR			; (04) LINE NUMBER CHARACTER DATA FOR DEVICE
   6821	014622	016710'				RTDVST			; (05) RETURN DEVICE STATUS
   6822	014624	016710'				STDVST			; (06) SET DEVICE STATUS FOR DEVICE
   6823	014626	016710'				HIDVST			; (07) HERE IS DEVICE STATUS
   6824	014630	014700'				UNRGFN			; (10) ERROR DEVICE STATUS
   6825	014632	016626'				RTNTOD			; (11) RETURN TIME OF DAY
   6826	014634	017240'				RETTOD			; (12) SEND TIME OF DAY
   6827	014636	017314'				FLDVOT			; (13) FLUSH DEVICE OUTPUT QUEUE
   6828	014640	017430'				SNDALL			; (14) SEND ALL TTY'S
   6829	014642	014700'				DIALUP			; (15) DIAL UP
   6830	014644	014756'				HANGUP			; (16) HANG UP
   6831	014646	015164'				ACKNOW			; (17) ACKNOWLEDGE END OF DATA IN BUFFER
   6832	014650	016014'				XOFF			; (20) XOFF (TTY)
   6833	014652	016174'				XON			; (21) XON (TTY)
   6834	014654	015212'				SETSPD			; (22) SET TTY SPEED
   6835	014656	015176'				SETLIN			; (23) SET LINE ALLOCATION
   6836	014660	014700'				UNRGFN			; (24) SET RELOAD PARAMETERS
   6837	014662	016170'				DEAND1			; (25) ACK ALL
   6838	014664	015520'				STPLIN			; (26) STOP LINE
   6839	014666	014706'				EDRMT			; (27) ENABLE/DISABLE REMOTE LINES
   6840	014670	016710'				LDLPR			; (30) LOAD LP RAM
   6841	014672	016710'				LDLPV			; (31) LOAD LP VFU
   6842	014674	014716'				NOSNDA			; +002 (32) SET OR CLEAR "SUPPRESS SEND-ALL" BIT
   6843	014676	017352'				RCVKLP			; +++009 (33) RECIEVE KLINIK PARAMETERS FROM KL
   6844
   6845		000066 			DFTSZ=.-DFTBL			;LEGAL FUNCTIONS COUNT *2
   6846
   6847					;
   6848					;	DIALUP -- FUNCTION 15
   6849					;
   6850	014700				DIALUP::			;UNRECOGNIZED FUNCTION -- PROTOCOL BROKEN
   6851	014700				UNRGFN::
   6852	014700					.CRASH	ILF		; +++003 ILF -- ILLEGAL FUNCTION
	014700	000004 				IOT
	014702	   111 	   114 	   106 		.ASCIZ	/ILF/
	014705	   000
   6853						.ENABL	LSB
   6854
   6855					;
   6856					;	EDRMT -- FUNCTION 27
   6857					;
   6858	014706				EDRMT::
   6859	014706	016037 	000010 	031362'		MOV	E.FW(R0),.INHDM	;ENABLE/DISABLE DH11'S
   6860	014714	000521 				BR	DEAND3		;AND QUIT
   6861						;
QPRDTE	- DTE-20 DRIVER AND PRI	MACRO M1108  16-DEC-77 11:28  PAGE 97
QUEUED PROTOCOL -- ENABLE/DISABLE SENDALL

   6863						.SBTTL QUEUED PROTOCOL -- ENABLE/DISABLE SENDALL
   6864
   6865					; +002 *********************************************************
   6866					; +002
   6867					; +002	NOSNDA FUNCTION (SET/CLEAR SUPPRESS SEND-ALL BIT) FUNCTION 32
   6868					; +002
   6869					; +002 *********************************************************
   6870					; +002
   6871
   6872	014716				NOSNDA::			; +002 SET OR CLEAR BIT TO SUPPRESS SEND-ALLS
   6873	014716	000360 	000010 			SWAB	E.FW(R0)	; +002 SET UP LINE NUMBER FOR "FDVNMM"
   6874	014722					CALL	FDVNMM		; +002 GET R2 TO POINT TO BLOCK FOR THIS LINE
	014722	004737 	016756'			JSR	PC,FDVNMM
   6875	014726	105760 	000010 			TSTB	E.FW(R0)	; +002 TEST ARGUMENT BYTE
   6876	014732	001404 				BEQ	3$		; +002 IF .NE. 0,
   6877	014734	052762 	004000 	000006 		BIS	#TT.NSA,STSW1(R2); +002 THEN SET BIT.
   6878	014742	000403 				BR	4$		; +002 OTHERWISE
   6879						;
   6880	014744				3$:
   6881	014744	042762 	004000 	000006 		BIC	#TT.NSA,STSW1(R2); +002 CLEAR BIT AND
   6882	014752				4$:
   6883	014752	000137 	017304'			JMP	DEANOD		; +002 FREE THE  NODE
   6884						;
QPRDTE	- DTE-20 DRIVER AND PRI	MACRO M1108  16-DEC-77 11:28  PAGE 98
QUEUED PROTOCOL -- HANGUP

   6886						.SBTTL	QUEUED PROTOCOL -- HANGUP
   6887
   6888					;
   6889					;	HANGUP -- FUNCTION 16
   6890					;
   6891	014756				HANGUP::
   6892	014756					CALL	FDVNMM		;FIND DEVICE
	014756	004737 	016756'			JSR	PC,FDVNMM
   6893	014762	010205 				MOV	R2,R5		;SET UP TABLE ADDRESS
   6894	014764	032765 	000400 	000006 		BIT	#TT.CTY,STSW1(R5) ; +++003 IS THIS A CTY??
   6895	014772	001420 				BEQ	5$		; +++003 NO -- GO ON
   6896	014774	105737 	031342'			TSTB	.KLNSW+0	; +++003 YES -- IS KLINIK ACTIVE??
   6897	015000	003415 				BLE	5$		; +++003 NOT THAT WE CARE
   6898	015002	010546 				MOV	R5,-(SP)	; +++003 YES -- SAVE POINTER
   6899	015004	013705 	031222'			MOV	KLNPTR,R5	; +++003 POINT TO KLINIK LINE
   6900	015010					.INH6			; +++003 DISALLOW INTERRUPTS
	015010	013746 	177776 			MOV	@#PS,-(SP)
	015014	112737 	000300 	177776 		MOVB	#300,@#PS
   6901	015022					CALL	.DLHUP		;;; +++003 HANG UP THE KLINIK LINE
	015022	004737 	030016'			JSR	PC,.DLHUP
   6902	015026					.ENB6			;;; +++003 ALLOW INTERRUPTS
	015026	012637 	177776 			MOV	(SP)+,@#PS
   6903	015032	012605 				MOV	(SP)+,R5	; +++003 RESTORE POINTER
   6904	015034				5$:
   6905	015034	022705 	035176'			CMP	#DHTBL,R5	; +++003 IS THIS  A DH11
   6906	015040	101036 				BHI	30$		; +++003 NO -- DL11 SPECIAL CASE
   6907	015042	005004 				CLR	R4		;FIND THE UNIT NUMBER
   6908	015044	156004 	000011 			BISB	E.FW+1(R0),R4
   6909	015050	162704 	000005 			SUB	#DLCNT,R4	;REMOVE DL11S
   6910									; +++003 REMOVED ONE INSTRUCTION
   6911	015054	012701 	035062'			MOV	#DMTBL,R1	;FIND DM ENTRY
   6912	015060				10$:
   6913	015060	026105 	000002 			CMP	2(R1),R5	;CORRECT ENTRY?
   6914	015064	101002 				BHI	20$		;YES -- HANGUP
   6915	015066	022121 				CMP	(R1)+,(R1)+	;NO -- LOOK AT NEXT
   6916	015070	000773 				BR	10$
   6917						;
   6918	015072				20$:
   6919	015072	042704 	177760 			BIC	#177760,R4	;MAKE IT A UNIT NUMBER
   6920	015076	016101 	177774 			MOV	-4(R1),R1	;FIND THE DM11 BB EXTERNAL PAGE ADDRESS
   6921	015102					.INH6			; +++003 DISALLOW INTERRUPTS
	015102	013746 	177776 			MOV	@#PS,-(SP)
	015106	112737 	000300 	177776 		MOVB	#300,@#PS
   6922	015114					CALL	.DMHUP		;;; +++003 HANGUP
	015114	004737 	027712'			JSR	PC,.DMHUP
   6923	015120	032765 	010000 	000006 		BIT	#TT.ABL,STSW1(R5) ;;; +++010 IS THIS AN AUTO-BAUD LINE??
   6924	015126	001412 				BEQ	40$		;;; +++010 NO -- GO ON
   6925	015130					CALL	.DHSPR		;;; +++010 YES RESET LINE SPEED TO DEFAULT
	015130	004737 	027354'			JSR	PC,.DHSPR
   6926	015134	000407 				BR	40$		;;; +++003 RETURN THE NODE
   6927						;
   6928	015136				30$:
   6929	015136					.INH6			; +++003 DISALLOW INTERRUPTS
	015136	013746 	177776 			MOV	@#PS,-(SP)
	015142	112737 	000300 	177776 		MOVB	#300,@#PS
   6930	015150					CALL	.DLHUP		;;; +++003 HANG IT UP
	015150	004737 	030016'			JSR	PC,.DLHUP
QPRDTE	- DTE-20 DRIVER AND PRI	MACRO M1108  16-DEC-77 11:28  PAGE 98-1
QUEUED PROTOCOL -- HANGUP

   6931	015154				40$:				;;; +++003
   6932	015154	000137 	016164'			JMP	DEAND2		;;; +++003 RETURN THE NODE
   6933	015160				DEAND3:
   6934	015160	000137 	016170'			JMP	DEAND1		;RETURN NODE
   6935						;
   6936					;
   6937					;	ACKNOWLEDGE DEVICE -- FUNCTION 17
   6938					;
   6939	015164				ACKNOW::
   6940	015164					CALL	FDVNMM		;FIND UNIT ETC
	015164	004737 	016756'			JSR	PC,FDVNMM
   6941	015170					CALL	@.DQPBA-20+Q.AK(R1) ;GO TO USER STATUS ROUTINE
	015170	004771 	034652'			JSR	PC,@.DQPBA-20+Q.AK(R1)
   6942	015174	000771 				BR	DEAND3
   6943						;
QPRDTE	- DTE-20 DRIVER AND PRI	MACRO M1108  16-DEC-77 11:28  PAGE 99
QUEUED PROTOCOL -- SET LINE ALLOCATION

   6945						.SBTTL	QUEUED PROTOCOL -- SET LINE ALLOCATION
   6946
   6947					;
   6948					;	SET LINE ALLOCATION -- FUNCTION 23
   6949					;
   6950	015176				SETLIN::
   6951	015176					CALL	FDVNMM		;FIND DEVICE
	015176	004737 	016756'			JSR	PC,FDVNMM
   6952	015202	116461 	000011 	034654'		MOVB	E.FW+1(R4),.DQPBA-20+14(R1) ;SET IT IN THE TABLE
   6953	015210	000763 				BR	DEAND3		;AND RETURN
   6954						;
   6955						.DSABL	LSB
   6956						.ENABL	LSB
   6957					;
   6958					;	SETSPD -- SET SPEED OF TTY -- FUNCTION 22
   6959					;
   6960	015212				SETSPD::
   6961	015212	032764 	040000 	000016 		BIT	#BIT14,E.FW+6(R4) ; +++010 IS THIS AN AUTO-BAUD LINE??
   6962	015220	001403 				BEQ	5$		; +++010 NO -- GO ON
   6963	015222	012703 	016703 			MOV	#16703,R3	; +++010 YES -- DEFAULT TO 300 BAUD
   6964	015226	000431 				BR	25$		; +++010 AND PROCEED
   6965						;
   6966	015230				5$:				; +++010
   6967	015230	016402 	000012 			MOV	E.FW+2(R4),R2	;FIND THE INPUT SPEED
   6968	015234					CALL	FNDSPD		;FIND THIS SPEED
	015234	004737 	015726'			JSR	PC,FNDSPD
   6969	015240	006203 				ASR	R3		;PUT IT IN THE CORRECT POSITION FOR DH
   6970	015242	006203 				ASR	R3
   6971	015244	010346 				MOV	R3,-(SP)	;SAVE THE WORD
   6972	015246	016402 	000014 			MOV	E.FW+4(R4),R2	;FIND THE OUTPUT SPEED
   6973	015252					CALL	FNDSPD		;FIND THIS SPEED
	015252	004737 	015726'			JSR	PC,FNDSPD
   6974	015256	006303 				ASL	R3		;PUT OUTPUT SPEED IN CORRECT POSITION
   6975	015260	006303 				ASL	R3
   6976	015262	001002 				BNE	10$		;YES -- DON'T ALTER IT
   6977	015264	012703 	006007 			MOV	#6007,R3	;NO -- WELL THEN SET IT TO AN OUTPUT SPEED OF 110
   6978									;THIS IS DONE TO PREVENT PROBLEMS WHEN ZERO OUTPUT BAUD
   6979									;IS DONE AND THERE IS OUTPUT FOR THIS LINE
   6980	015270				10$:
   6981	015270	052603 				BIS	(SP)+,R3	;SET THE INPUT AND OUTPUT TOGETHER
   6982	015272	016401 	000016 			MOV	E.FW+6(R4),R1
   6983	015276	006301 				ASL	R1		;1 IS 1 STOP BIT 2 IS TWO STOP BITS
   6984	015300	042701 	177770 			BIC	#177770,R1	;CLEAR OFF JUNK
   6985	015304	050103 				BIS	R1,R3		;SET IN STATUS WORD
   6986	015306				20$:
   6987	015306	052703 	000003 			BIS	#3,R3		;SET 8 BIT CHARACTER LENGTH
   6988	015312				25$:				; +++010
   6989	015312	005005 				CLR	R5		;FIND THE LINE NUMBER
   6990	015314	156005 	000010 			BISB	E.FW(R0),R5	;FIND THE UNIT NUMBER
   6991	015320	162705 	000005 			SUB	#DLCNT,R5	;SUBTRACT OUT DL11'S
   6992	015324	100715 				BMI	DEAND3		;DL 11 NOT LEGAL
   6993	015326	010304 				MOV	R3,R4
   6994	015330	000360 	000010 			SWAB	E.FW(R0)	;SWAP THE PLACE OF THE LINE NUMBER
   6995	015334					CALL	FDVNMM
	015334	004737 	016756'			JSR	PC,FDVNMM
   6996	015340	010403 				MOV	R4,R3
   6997	015342	010504 				MOV	R5,R4		;SAVE UNIT NUMBER
QPRDTE	- DTE-20 DRIVER AND PRI	MACRO M1108  16-DEC-77 11:28  PAGE 99-1
QUEUED PROTOCOL -- SET LINE ALLOCATION

   6998	015344	010205 				MOV	R2,R5
   6999									; +++005 REMOVED TWO INSTRUCTIONS
   7000	015346	010365 	000004 			MOV	R3,STSW0(R5)	;SET THE NEW SPEED IN THE TABLE
   7001	015352				30$:
   7002	015352	016501 	000002 			MOV	TTYEXP(R5),R1	;FIND EXTERNAL PAGE ADDRESS
   7003	015356	005760 	000016 			TST	E.FW+6(R0)	;CHECK FOR REMOTE FLAG
   7004	015362	100045 				BPL	60$		;NO -- DON'T SET REMOTE FLAG
   7005	015364	010365 	000004 			MOV	R3,STSW0(R5)	;SAVE SPEED
   7006	015370	052765 	000100 	000006 		BIS	#TT.RMT,STSW1(R5) ;SET REMOTE FLAG
   7007	015376	010146 				MOV	R1,-(SP)
   7008	015400	010546 				MOV	R5,-(SP)
   7009	015402	012701 	035062'			MOV	#DMTBL,R1	;FIND ADDRESS OF DM11
   7010	015406	162705 	035176'			SUB	#DHTBL,R5
   7011	015412				40$:
   7012	015412	162705 	000200 			SUB	#200,R5		;FIND DH NUMBER
   7013	015416	100402 				BMI	50$		;END -- QUIT
   7014	015420	022121 				CMP	(R1)+,(R1)+	;MOVE ON TO NEXT DH
   7015	015422	000773 				BR	40$
   7016						;
   7017	015424				50$:
   7018	015424	011101 				MOV	@R1,R1		;SET UP FOR DM11
   7019	015426	042704 	177760 			BIC	#177760,R4	;MASK UNIT NUMBER
   7020	015432	012605 				MOV	(SP)+,R5	;RESTORE R5
   7021	015434					.INH6			; +++003 DISALLOW INTERRUPTS
	015434	013746 	177776 			MOV	@#PS,-(SP)
	015440	112737 	000300 	177776 		MOVB	#300,@#PS
   7022	015446					CALL	.DMHUP		;;; +++003 HANGUP THE DEVICE
	015446	004737 	027712'			JSR	PC,.DMHUP
   7023	015452					.ENB6			;;; +++003 ALLOW INTERRUPTS
	015452	012637 	177776 			MOV	(SP)+,@#PS
   7024	015456	012601 				MOV	(SP)+,R1	;RESTORE TTY EXTERNAL PAGE
   7025	015460	032760 	040000 	000016 		BIT	#BIT14,E.FW+6(R0) ; +++010 IS THIS AN AUTO-BAUD LINE??
   7026	015466	001403 				BEQ	60$		; ++010 NO -- GO ON
   7027	015470	052765 	010000 	000006 		BIS	#TT.ABL,STSW1(R5) ; +++010 YES -- SET THE FLAG
   7028	015476				60$:
   7029	015476					.INH6			;LOCK OUT INTERRUPTS THAT WOULD CHANGE UNIT
	015476	013746 	177776 			MOV	@#PS,-(SP)
	015502	112737 	000300 	177776 		MOVB	#300,@#PS
   7030	015510					CALL	.DHSPD		;;; +++010 SET DH11 LINE SPEED
	015510	004737 	027430'			JSR	PC,.DHSPD
   7031	015514	000137 	016164'			JMP	DEAND2		;;; +++003 DEALLOCATE NODE
   7032						;
QPRDTE	- DTE-20 DRIVER AND PRI	MACRO M1108  16-DEC-77 11:28  PAGE 100
QUEUED PROTOCOL -- STOP LINE INPUT

   7034						.SBTTL	QUEUED PROTOCOL -- STOP LINE INPUT
   7035
   7036					;
   7037					;	STOP INPUT FROM LINE -- FUNCTION 26
   7038					;
   7039	015520				STPLIN::
   7040	015520	000360 	000010 			SWAB	E.FW(R0)	;SWAP THE BYTES
   7041	015524					CALL	FDVNMM		;FIND DEVICE
	015524	004737 	016756'			JSR	PC,FDVNMM
   7042	015530	103613 				BCS	DEAND3		;QUIT IF ILLEGAL DEVICE NUMBER
   7043	015532	032762 	000400 	000006 		BIT	#TT.CTY,STSW1(R2) ; +++003 IS THIS A CTY?
   7044	015540	001411 				BEQ	65$		; +++003 NO -- GO ON
   7045	015542	105737 	031342'			TSTB	.KLNSW+0	; +++003 YES -- IS KLINIK ACTIVE?
   7046	015546	003406 				BLE	65$		; +++003 NOT THAT WE CARE -- GO ON
   7047	015550	010246 				MOV	R2,-(SP)	; +++003 YES -- SAVE R2
   7048	015552	013702 	031222'			MOV	KLNPTR,R2	; +++003 KLINIK POINTER TO R2
   7049	015556					CALL	DLSTOP		; +++003 STOP THE KLINIK LINE
	015556	004737 	015650'			JSR	PC,DLSTOP
   7050	015562	012602 				MOV	(SP)+,R2	; +++003 RESTORE POINTER
   7051	015564				65$:
   7052	015564	022702 	035176'			CMP	#DHTBL,R2	; +++003 IS THIS A DH11??
   7053	015570	101024 				BHI	STOPDL		; +++003 NO -- STOP THE DL11E
   7054	015572	016203 	000004 			MOV	STSW0(R2),R3	;FIND THE REQUESTED SPEED
   7055	015576	010205 				MOV	R2,R5		; +++010 SET UP R5 FOR ".DHSPD"
   7056	015600	010304 				MOV	R3,R4		; +++010 SAVE R3 IN R4
   7057	015602	105760 	000010 			TSTB	E.FW(R0)	;CHECK TO SEE IF STOP OR START
   7058	015606	001002 				BNE	70$		; +++010 START LINE -- GO DO IT
   7059	015610	042703 	001700 			BIC	#1700,R3	;STOP LINE -- SET LINE SPEED ON INPUT TO 0
   7060	015614				70$:				; +++010
   7061	015614					.INH6			; +++010 DISALLOW INTERRUPTS
	015614	013746 	177776 			MOV	@#PS,-(SP)
	015620	112737 	000300 	177776 		MOVB	#300,@#PS
   7062	015626					CALL	.DHSPD		;;; +++010 SET THE NEW LINE SPEED
	015626	004737 	027430'			JSR	PC,.DHSPD
   7063	015632	010462 	000004 			MOV	R4,STSW0(R2)	;;; +++010 SET THE SPEED IN THE DLS TABLE
   7064	015636	000137 	016164'			JMP	DEAND2		;;; +++010 DEALLOCATE THE NODE
   7065						;
   7066						.DSABL	LSB
   7067	015642				STOPDL:				; +++003
   7068	015642					CALL	DLSTOP		; +++003 DO THE SET / CLEAR FOR THIS LINE
	015642	004737 	015650'			JSR	PC,DLSTOP
   7069	015646	000550 				BR	DEAND1		; +++003 DEALLOCATE NODE AND EXIT
   7070						;
   7071	015650				DLSTOP:
   7072	015650					.INH6			; +++003 DISALLOW INTERRUPTS
	015650	013746 	177776 			MOV	@#PS,-(SP)
	015654	112737 	000300 	177776 		MOVB	#300,@#PS
   7073	015662	016201 	000002 			MOV	TTYEXP(R2),R1	;;; +++003 I/O PAGE POINTER TO R1
   7074	015666	012703 	000100 			MOV	#DL.REN,R3	;;; +++003 START / STOP BIT TO R3
   7075	015672	105760 	000010 			TSTB	E.FW(R0)	;;; +++003 IS THIS A STOP OR A START??
   7076	015676	001004 				BNE	40$		;;; +++003 STOP -- GO ON
   7077	015700	005062 	000004 			CLR	STSW0(R2)	;;; +++003 START THE  LINE
   7078	015704	050311 				BIS	R3,(R1)		;;; +++003 ENABLE INTERRUPPTS
   7079	015706	000404 				BR	50$		;;; +++003 AND RETURN
   7080	015710				40$:
   7081	015710	012762 	177777 	000004 		MOV	#-1,STSW0(R2)	;;; +++003 STOP THE LINE
   7082	015716	040311 				BIC	R3,(R1)		;;; +++003 DISABLE INTERRUPTS
QPRDTE	- DTE-20 DRIVER AND PRI	MACRO M1108  16-DEC-77 11:28  PAGE 100-1
QUEUED PROTOCOL -- STOP LINE INPUT

   7083	015720				50$:
   7084	015720					.ENB6			;;; +++003 ALLOW INTERRUPTS
	015720	012637 	177776 			MOV	(SP)+,@#PS
   7085	015724					RETURN			; +++003 TO CALLER
	015724	000207 				RTS	PC
   7086
   7087	015726				FNDSPD:
   7088	015726	012705 	015760'			MOV	#SPDTBL,R5	;FIND THE ADDRESS OF THE SPEED TABLE
   7089	015732	012701 	000016 			MOV	#SPDTBZ,R1	;SET UP THE TABLE SIZE
   7090	015736	005003 				CLR	R3		;SET UP COUNTER
   7091	015740				10$:
   7092	015740	020225 				CMP	R2,(R5)+	;COMPARE AGAINST TABLE
   7093	015742	001404 				BEQ	20$		;FOUND CORRECT ENTRY -- R3 IS CORRECT WHEN FOUND
   7094	015744	005203 				INC	R3		;UPDATE R3
   7095	015746	077104 				SOB	R1,10$		;TRY NEXT ENTRY
   7096	015750	005726 				TST	(SP)+		;RETURN TO DELETE NODE
   7097	015752	000506 				BR	DEAND1
   7098						;
   7099	015754				20$:
   7100	015754	000303 				SWAB	R3		;SET IN HIGH BYTE
   7101	015756					RETURN			;RETURN TO CALLER
	015756	000207 				RTS	PC
   7102
   7103	015760				SPDTBL:
   7104	015760	000000 				.WORD	0		;ZERO BAUD
   7105	015762	000062 				.WORD	50.		;50 BAUD
   7106	015764	000113 				.WORD	75.		;ETC ......
   7107	015766	000156 				.WORD	110.
   7108	015770	000206 				.WORD	134.
   7109	015772	000226 				.WORD	150.
   7110	015774	000310 				.WORD	200.
   7111	015776	000454 				.WORD	300.
   7112	016000	001130 				.WORD	600.
   7113	016002	002260 				.WORD	1200.
   7114	016004	003410 				.WORD	1800.
   7115	016006	004540 				.WORD	2400.
   7116	016010	011300 				.WORD	4800.
   7117	016012	022600 				.WORD	9600.
   7118
   7119		000016 			SPDTBZ=.-SPDTBL/2
QPRDTE	- DTE-20 DRIVER AND PRI	MACRO M1108  16-DEC-77 11:28  PAGE 101
QUEUED PROTOCOL -- XOFF

   7121						.SBTTL	QUEUED PROTOCOL -- XOFF
   7122
   7123					;
   7124					;	XOFF -- FUNCTION 20
   7125					;
   7126					;	THIS ROUTINE WILL INITIATE THE XOFF SEQUENCE FOR A TERMINAL LINE.
   7127					;	THE "XOFF" STATUS BIT ("TT.XOF") IS SET IN THE LINE STATUS WORD WHICH
   7128					;	BLOCKS ANY FURTHER OUTPUT FROM THE TERMINAL DRIVER. IF THE LINE IS
   7129					;	A DH11, THE OUTPUT IS NOT STOPPED IMMEDIATELY, BUT A RUNDOWN SEQUENCE
   7130					;	IS INITATED SINCE EARLIER DH11'S WILL "RUN AWAY" IF THE DEVICE BYTE
   7131					;	COUNT IS SIMPLY CLEARED. THE TERMINAL INTERRUPT SERVICE WILL RESET THE
   7132					;	PACKET ADDRESS AND BYTE COUNT AT OUTPUT DONE SO THAT THE XON CODE CAN
   7133					;	DO A NORMAL LINE START.
   7134					;
   7135					;	THIS MESSAGE IS IGNORED IF:
   7136					;
   7137					;		1. THE LINE IS ALREADY X'D OFF
   7138					;		2. THE LINE HAS NO OUTPUT PENDING (THREAD LIST EMPTY)
   7139					;		3. A SENDALL IS IN PROGRESS ON THIS LINE
   7140					;		4. THE CTY IS IN PDP-11 I/O WAIT AND THE CTY IS TO BE X'D OFF
   7141
   7142	016014				XOFF::
   7143	016014					CALL	FDVNMM		;FIND THE DEVICE UNIT NUMBER
	016014	004737 	016756'			JSR	PC,FDVNMM
   7144	016020					.INH6			;;;INHIBIT INTERRUPTS
	016020	013746 	177776 			MOV	@#PS,-(SP)
	016024	112737 	000300 	177776 		MOVB	#300,@#PS
   7145	016032	032762 	001200 	000006 		BIT	#TT.SIP!TT.XOF,STSW1(R2) ;;; +++013 SEND ALL IN PROGRESS??
   7146									;;; +++013 OR ALREADY X'D OFF??
   7147	016040	001051 				BNE	DEAND2		;;; +++013 YES -- DON'T ACKNOWLEDGE IT
   7148	016042	032762 	000400 	000006 		BIT	#TT.CTY,STSW1(R2) ;;; +++007 NO -- IS THIS A CTY??
   7149	016050	001421 				BEQ	20$		;;; +++007 NO -- GO ON
   7150	016052	005737 	031216'			TST	.TTP11		;;; +++007 YES -- IN PDP-11 I/O WAIT??
   7151	016056	001042 				BNE	DEAND2		;;; +++007 YES -- GO AWAY
   7152	016060	105737 	031342'			TSTB	.KLNSW+0	;;; +++003 NO -- IS KLINIK ACTIVE??
   7153	016064	003413 				BLE	20$		;;; +++003 USER -- GO ON
   7154	016066	010246 				MOV	R2,-(SP)	;;; +++003 SAVE CURRENT POINTER
   7155	016070	013702 	031222'			MOV	KLNPTR,R2	;;; +++003 KLINIK POINTER TO R2
   7156	016074	005722 				TST	(R2)+		;;; +++013 ANYTHING IN THE QUEUE??
   7157	016076	001405 				BEQ	10$		;;; +++013 NO -- GO ON
   7158	016100	005722 				TST	(R2)+		;;; +++013 DEVICE EXIST??
   7159	016102	001403 				BEQ	10$		;;; +++013 NO -- GO ON
   7160	016104	052762 	000200 	000002 		BIS	#TT.XOF,2(R2) 	;;; +++013 YES -- MARK LINE AS X'D OFF
   7161	016112				10$:				;;; +++013
   7162	016112	012602 				MOV	(SP)+,R2	;;; +++003 RESTORE FIRST POINTER
   7163	016114				20$:
   7164	016114	005722 				TST	(R2)+		;;;IS THERE ANYTHING IN THE QUEUE??
   7165	016116	001422 				BEQ	DEAND2		;;;NO -- NOTHING TO DO
   7166	016120	012201 				MOV	(R2)+,R1	;;;FIND THE EXTERNAL PAGE ADDRESS
   7167	016122	001420 				BEQ	DEAND2		;;; +++013 NONEXISTANT -- GO AWAY
   7168	016124	052762 	000200 	000002 		BIS	#TT.XOF,2(R2) ;;; +++013 MARK LINE AS X'D OFF
   7169	016132	010204 				MOV	R2,R4		;;; +++013 TABLE POINTER TO R4
   7170	016134	162704 	035176'			SUB	#DHTBL,R4	;;; +++013 FIND THE UNIT NUMBER
   7171	016140	100411 				BMI	DEAND2		;;;IF THIS IS DL11 THEN DONE
   7172	016142					CALL	SETDHL		;;; +++013 SET THE LINE NUMBER IN THE DH11
	016142	004737 	016454'			JSR	PC,SETDHL
   7173	016146	022761 	177776 	000010 		CMP	#-2,10(R1)	;;; +++013 HOW MANY BYTES REMAIN??
QPRDTE	- DTE-20 DRIVER AND PRI	MACRO M1108  16-DEC-77 11:28  PAGE 101-1
QUEUED PROTOCOL -- XOFF

   7174	016154	003403 				BLE	DEAND2		;;; +++013 JUST LET I/O RUNDOWN IF 2 OR LESS
   7175	016156	012761 	177777 	000010 		MOV	#-1,10(R1)	;;; +++013 ELSE FORCE THE RUNDOWN
   7176	016164				DEAND2:
   7177	016164					.ENB6			;;;ENABLE INTERRUPTS
	016164	012637 	177776 			MOV	(SP)+,@#PS
   7178	016170				DEAND1:
   7179	016170	000137 	017304'			JMP	DEANOD		;DEALLOCATE THE NODE
   7180						;
QPRDTE	- DTE-20 DRIVER AND PRI	MACRO M1108  16-DEC-77 11:28  PAGE 102
QUEUED PROTOCOL -- XON

   7182						.SBTTL	QUEUED PROTOCOL -- XON
   7183
   7184					;
   7185					;	XON -- FUNCTION 21
   7186					;
   7187					;	THIS ROUTINE WILL RESUME OUTPUT FOR A LINE WHICH WAS PREVIOUSLY
   7188					;	X'D OFF.  THE OUTPUT WILL BE RESUMED PER THE DATA IN THE CURRENT
   7189					;	NODE IN THE THREAD LIST FOR THIS LINE. (T.HCBC AND T.HACD) THIS
   7190					;	DATA IS SAVED AT OUTPUT INTERRUPT TIME FROM THE XOFF.
   7191					;
   7192					;	THIS MESSAGE WILL BE IGNORED IF:
   7193					;
   7194					;		1. THE LINE HAS NOT BEEN PREVIOUSLY X'D OFF
   7195					;		2. A SENDALL IS CURRENTLY IN PROGRESS ON THIS LINE
   7196					;
   7197					;	THE DEVICE WILL NOT BE RESTARTED IF:
   7198					;
   7199					;		1. OUTPUT IS ALREADY IN PROGRESS ON THIS LINE
   7200					;		2. THE OUTPUT THREAD LIST FOR THIS LINE IS EMPTY
   7201					;		3. THE DEVICE DOES NOT EXIST
   7202
   7203
   7204	016174				XON::
   7205	016174					CALL	FDVNMM		;FIND THIS DEVICE
	016174	004737 	016756'			JSR	PC,FDVNMM
   7206	016200					.INH6			;INHIBIT INTERRUPTS
	016200	013746 	177776 			MOV	@#PS,-(SP)
	016204	112737 	000300 	177776 		MOVB	#300,@#PS
   7207	016212	105762 	000006 			TSTB	STSW1+0(R2)	;;; +++013 IS THIS LINE X'D OFF
   7208	016216	100362 				BPL	DEAND2		;;; +++013 NO -- IGNORE THIS MESSAGE
   7209	016220	032762 	001000 	000006 		BIT	#TT.SIP,STSW1(R2) ;;; +++013 SENDALL IN PROGRESS??
   7210	016226	001356 				BNE	DEAND2		;;; +++013 YES -- IGNORE THIS MESSAGE
   7211	016230	032762 	000001 	000006 		BIT	#TT.OUT,STSW1(R2) ;;; YES -- CHECK FOR ALREADY BUSY
   7212	016236	001103 				BNE	70$		;;;YES -- JUST IGNORE
   7213	016240	011203 				MOV	@R2,R3		;;; NO -- IS THERE ANYTHING IN THE QUEUE?
   7214	016242	001501 				BEQ	70$		;;; NO -- RESET STATUS AND EXIT
   7215	016244	016201 	000002 			MOV	TTYEXP(R2),R1	;;; YES -- FIND THE EXTERNAL PAGE ADDRESS
   7216	016250	001476 				BEQ	70$		;;; +++003 NOTHING MORE TO DO IF NOT THERE
   7217	016252	010204 				MOV	R2,R4
   7218	016254	032762 	000400 	000006 		BIT	#TT.CTY,STSW1(R2) ;;; +++003 IS THIS A CTY??
   7219	016262	001413 				BEQ	10$		;;; +++003 NO -- GO ON
   7220	016264	105737 	031342'			TSTB	.KLNSW+0	;;; +++003 YES -- IS KLINIK ACTIVE??
   7221	016270	003410 				BLE	10$		;;; +++003 NOT THAT WE CARE
   7222	016272	010146 				MOV	R1,-(SP)	;;; +++003 YES -- SAVE R1
   7223	016274	010246 				MOV	R2,-(SP)	;;; +++003 AND R2
   7224	016276	013702 	031222'			MOV	KLNPTR,R2	;;; +++003 KLINIK LINE POINTER TO R2
   7225	016302					CALL	40$		;;; +++003 TURN ON THE KLINIK LINE
	016302	004737 	016410'			JSR	PC,40$
   7226	016306	012602 				MOV	(SP)+,R2	;;; +++003 RESTORE R2
   7227	016310	012601 				MOV	(SP)+,R1	;;; +++003 AND R1
   7228	016312				10$:
   7229	016312	162704 	035176'			SUB	#DHTBL,R4	;;;IS IT DL?
   7230	016316	100431 				BMI	30$		;;;YES -- SPECIAL CASE
   7231	016320					CALL	SETDHL		;;; +++013 NO -- SET DH11 LINE NUMBER
	016320	004737 	016454'			JSR	PC,SETDHL
   7232	016324	036461 	042572'	000012 		BIT	BITTBL(R4),12(R1) ;;;CHECK TO SEE IF ALREADY ACTIVE
   7233	016332	001045 				BNE	70$		;;;YES -- FORGET IT
QPRDTE	- DTE-20 DRIVER AND PRI	MACRO M1108  16-DEC-77 11:28  PAGE 102-1
QUEUED PROTOCOL -- XON

   7234	016334	062701 	000006 			ADD	#6,R1		;;;POINT TO CURRENT ADDRESS BUFFER
   7235	016340	116305 	000006 			MOVB	T.HCBC(R3),R5	;;; +++013 GET THE BYTE COUNT
   7236	016344	001005 				BNE	20$		;;; +++013 GO ON IF NOT AT END
   7237	016346	005363 	000004 			DEC	T.HCAD(R3)	;;; +++013 END OF PACKET -- BACK UP ONE BYTE
   7238	016352	105073 	000004 			CLRB	@T.HCAD(R3)	;;; +++013 STORE A <NULL> TO CAUSE INTERRUPT
   7239	016356	005205 				INC	R5		;;; +++013 AND ACCOUNT FOR NULL BYTE
   7240	016360				20$:
   7241	016360	005405 				NEG	R5		;;; +++013 NEGATE THE BYTE COUNT
   7242	016362	016321 	000004 			MOV	T.HCAD(R3),(R1)+ ;;; +++013 SET THE PACKET ADDRESS IN DH11
   7243	016366	010521 				MOV	R5,(R1)+	;;; +++013 AND BYTE COUNT
   7244	016370	056411 	042572'			BIS	BITTBL(R4),@R1	;;;START THE DEVICE
   7245	016374					CALL	50$		;;; +++013 SET STATUS
	016374	004737 	016430'			JSR	PC,50$
   7246	016400	000671 				BR	DEAND2		;;; +++013 AND EXIT
   7247						;
   7248	016402				30$:
   7249	016402					CALL	40$		;;; +++003 START UP THIS LINE
	016402	004737 	016410'			JSR	PC,40$
   7250	016406	000666 				BR	DEAND2		;;; +++003 DEALLOCATE NODE AND EXIT
   7251						;
   7252	016410				40$:
   7253	016410	016201 	000002 			MOV	TTYEXP(R2),R1	;;; +++003 I/O PAGE POINTER TO R1
   7254	016414	001410 				BEQ	60$		;;; +++003 NOTHING MORE TO DO IF NOT THERE
   7255	016416	105061 	000006 			CLRB	6(R1)		;;; +++003 SET A NULL TO START TTY
   7256	016422	052761 	000100 	000004 		BIS	#DL.XEN,4(R1)	;;; +++003 ENABLE INTERRUPTS
   7257	016430				50$:				;;; +++013
   7258	016430	052762 	000001 	000006 		BIS	#TT.OUT,STSW1(R2) ;;; +++003 SET OUTPUT BUSY
   7259	016436				60$:
   7260	016436	042762 	000200 	000006 		BIC	#TT.XOF,STSW1(R2) ;;; +++013 MARK LINE AS X'D ON
   7261	016444					RETURN			;;; +++003 TO CALLER
	016444	000207 				RTS	PC
   7262	016446				70$:
   7263	016446					CALL	60$		;;; +++013 CLEAR XOFF STATUS
	016446	004737 	016436'			JSR	PC,60$
   7264	016452	000644 				BR	DEAND2		;;; +++013 AND EXIT
   7265						;
   7266					;
   7267					;	SETDHL -- SET LINE ADDRESS IN DH11 CONTROL REGISTER
   7268					;
   7269					;	R1 -- POINTS TO DH11 CSR
   7270					;	R4 -- OFFSET INTO DH11 TABLE FOR THIS LINE
   7271					;
   7272
   7273	016454				SETDHL:
   7274	016454	006204 				ASR	R4		; COMPUTE DH11 LINE NUMBER
   7275	016456	006204 				ASR	R4
   7276	016460	006204 				ASR	R4
   7277	016462	042704 	177760 			BIC	#^C17,R4	; CLEAR JUNK
   7278	016466	042711 	001077 			BIC	#1077,(R1)	; SET UP LINE NUMBER
   7279	016472	050411 				BIS	R4,(R1)		; SO
   7280	016474	006304 				ASL	R4		; CONVERT LINE NUMBER TO WORD INDEX
   7281	016476					RETURN			; TO CALLER
	016476	000207 				RTS	PC
QPRDTE	- DTE-20 DRIVER AND PRI	MACRO M1108  16-DEC-77 11:28  PAGE 103
QUEUED PROTOCOL -- HERE IS INITIAL STATUS

   7283						.SBTTL	QUEUED PROTOCOL -- HERE IS INITIAL STATUS
   7284
   7285					;
   7286					;	HERE IS INITIAL STATUS -- FUNCTION 1
   7287					;	FW IS ALLOCATED WITH LOW ORDER PART AS # OF TTY'S
   7288					;	BIT 16 IS ALLOCATED TO INDICATE 50CPS
   7289					;
   7290					;
   7291						.ENABL	LSB
   7292	016500				HICTS::
   7293	016500	012737 	000074 	031260'		MOV	#60.,.TKPS	;SET UP THE CLOCK TO 60. CPS
   7294	016506	105760 	000010 			TSTB	E.FW+0(R0)	; +++011 CHECK FOR 50 CPS (BYTES ARE SWAPPED)
   7295	016512	100003 				BPL	10$		;HIGH ORDER BIT SET IS 50CPS
   7296	016514	162737 	000012 	031260'		SUB	#10.,.TKPS	;SET TO 50 CPS
   7297	016522				10$:
   7298	016522	012703 	000001 			MOV	#D.CCTY,R3	;SET DEVICE ID
   7299	016526	012701 	000002 			MOV	#BC.HAD,R1	;SET HERE IS DEVICE STATUS
   7300	016532	013704 	031220'			MOV	CTYPTR,R4	;FIND THE CTY NUMBER
   7301	016536	162704 	035126'			SUB	#TTTBL,R4
   7302	016542	006204 				ASR	R4		;MAKE NUMBER
   7303	016544	006204 				ASR	R4
   7304	016546	006204 				ASR	R4
   7305	016550					CALL	..STFC		;START FUNCTION
	016550	004737 	043252'			JSR	PC,..STFC
   7306	016554	105737 	031332'			TSTB	.KLNMD+0	; +++009 ANY KLINIK PARAMETERS TO SEND??
   7307	016560	001415 				BEQ	15$		; +++009 NO -- GO ON
   7308	016562	010046 				MOV	R0,-(SP)	; +++009 YES -- SAVE R0
   7309	016564	012700 	031312'			MOV	#.KLNPB,R0	; +++009 BUFFER POINTER TO R0
   7310	016570	012710 	000026 			MOV	#KLNPLN,(R0)	; +++009 BYTE COUNT TO BUFFER HEADER
   7311	016574	012701 	100033 			MOV	#BC.SKP+100000,R1 ; +++009 FUNCTION CODE TO R1
   7312	016600	005002 				CLR	R2		; +++009 DON'T WAIT FOR IT
   7313	016602	012703 	000200 			MOV	#D.CCPU,R3	; +++009 DEVICE ID TO R3
   7314	016606					CALL	..STIN		; +++009 SEND THE KLINIK PARAMETERS
	016606	004737 	043442'			JSR	PC,..STIN
   7315	016612	012600 				MOV	(SP)+,R0	; +++009 RESTORE R0
   7316	016614				15$:				; +++009
   7317	016614	013704 	031276'			MOV	.BTPRM,R4	;SEND BOOT PARAMETERS
   7318	016620	012701 	000024 			MOV	#BC.BTP,R1	;SET BOOT PARAMETERS
   7319	016624	000407 				BR	20$		;DEALLOCATE NODE
   7320						;
QPRDTE	- DTE-20 DRIVER AND PRI	MACRO M1108  16-DEC-77 11:28  PAGE 104
QUEUED PROTOCOL -- RETURN TIME OF DAY

   7322						.SBTTL	QUEUED PROTOCOL -- RETURN TIME OF DAY
   7323
   7324					;
   7325					;	RTNTOD -- RETURN TIME OF DAY TO KL -- FUNCTION 11
   7326					;
   7327	016626				RTNTOD::
   7328	016626	012703 	000007 			MOV	#D.CCLK,R3	;SET UP TO POINT TO CLOCK
   7329	016632	012701 	000012 			MOV	#BC.HTD,R1	;SET DEVICE ID
   7330	016636	013704 	031244'			MOV	.DATE3,R4	;RETURN DATE OR 0 IF NONE HERE
   7331	016642	001003 				BNE	30$		;YES -- DATE VALID RETURN IT
   7332	016644				20$:
   7333	016644					CALL	..STFC		;SEND FUNCTION
	016644	004737 	043252'			JSR	PC,..STFC
   7334	016650	000406 				BR	40$		;DEALLOCATE NODE
   7335						;
   7336	016652				30$:
   7337	016652	012737 	177777 	031366'		MOV	#-1,.ABFLG	; +++010 FLAG "SETSPD" TO REPORT ALL LINES
   7338	016660					DIR$	#.RQSPD		; +++010 SET SPEED AND THEN RETURN TIME OF DAY
	016660	012746 	016672'			MOV	#.RQSPD,-(SP)
	016664	104375 				EMT	375
   7339	016666				40$:
   7340	016666	000137 	016170'			JMP	DEAND1		; +++003 DEALLOCATE THIS NODE
   7341						;
   7342						.DSABL	LSB
   7343					;
   7344	016672				.RQSPD::			; +++010 ALSO CALLED FROM TTYDRR
   7345	016672					RQST$	SETSPD
	016672	   013 	   007 			.BYTE	11.,7
	016674	073634 	074504 			.RAD50	/SETSPD/
	016700	000000 	000000 			.WORD	0,0
	016704	000000 				.WORD
	016706	   000 	   000 			.BYTE	,
QPRDTE	- DTE-20 DRIVER AND PRI	MACRO M1108  16-DEC-77 11:28  PAGE 105
QUEUED PROTOCOL -- STRING DATA

   7347						.SBTTL	QUEUED PROTOCOL -- STRING DATA
   7348
   7349					;	STRDAT -- ROUTINE TO HANDLE STRING DATA -- FUNCTION 3
   7350					;	HIDVST -- ROUTINE TO RECIEVE DEVICE STATUS -- FUNCTION 7
   7351					;	RTDVST -- ROUTINE TO RECEIVE REQUEST FOR DEVICE STATUS -- FUNCTION 5
   7352					;	STDVST -- ROUTINE TOSET DEVICE STATUS -- FUNCTION 6
   7353					;	LDLPR -- ROUTINE TO LOAD LP RAM -- FUNCTION 30
   7354					;	LDLPV -- ROUTINE TO LOAD LP VFU -- FUNCTION 31
   7355					;
   7356					;
   7357	016710				HIDVST::
   7358	016710				LDLPR::
   7359	016710				LDLPV::
   7360	016710				STDVST::
   7361	016710				RTDVST::
   7362	016710				STRDAT::
   7363	016710	012702 	000006 			MOV	#6,R2		;MOVE OVER THE LISTHEAD AND COUNT
   7364	016714	060204 				ADD	R2,R4		;FIND THE DEVICE ADDRESS
   7365	016716	012401 				MOV	(R4)+,R1	;FIND THE DEVICE ADDRESS
   7366	016720	012403 				MOV	(R4)+,R3	;FIND THE FIRST WORD
   7367	016722	160204 				SUB	R2,R4		;BACKUP TO STORE IN THE HEADER
   7368	016724	111464 	000003 			MOVB	@R4,3(R4)	;SAVE FUNCTION CODE
   7369	016730	010414 				MOV	R4,@R4		;SAVE THE ADDRESS
   7370	016732	060224 				ADD	R2,(R4)+	;UPDATE ADDRESS
   7371	016734	000303 				SWAB	R3		;SET UP BYTES SWAPED
   7372	016736	110314 				MOVB	R3,@R4		;STORE BYTE COUNT
   7373	016740					CALL	FDVNM		;FIND DEVICE TABLE ENTRY
	016740	004737 	016772'			JSR	PC,FDVNM
   7374	016744	103557 				BCS	DEANOD		;ILLEGAL DEVICE -- FORGET IT
   7375					;
   7376	016746					CALL	@.DQPBA+Q.ST-20(R1) ;START DEVICE
	016746	004771 	034644'			JSR	PC,@.DQPBA+Q.ST-20(R1)
   7377	016752				10$:
   7378	016752	000137 	014536'			JMP	QPRDTL		;GO TO DO MORE WORK
   7379						;
   7380						.ENABL	LSB
   7381	016756				FDVNMM:
   7382	016756	016001 	000006 			MOV	E.DV(R0),R1	;FIND DEVICE
   7383	016762	016003 	000010 			MOV	E.FW(R0),R3	;FIND FIRST WORD
   7384	016766	005046 				CLR	-(SP)		;SAVE ENTRY FLAG
   7385	016770	000402 				BR	5$
   7386						;
   7387	016772				FDVNM:
   7388	016772	012746 	177777 			MOV	#-1,-(SP)	;SAVE ENTRY FLAG
   7389	016776				5$:
   7390	016776	010546 				MOV	R5,-(SP)	;SAVE REGISTERS
   7391	017000	010446 				MOV	R4,-(SP)
   7392	017002	010146 				MOV	R1,-(SP)	;SAVE DEVICE
   7393	017004	006301 				ASL	R1		;FIND THE DEVICE ADDRESS
   7394	017006	006301 				ASL	R1
   7395	017010	006301 				ASL	R1
   7396	017012	006301 				ASL	R1
   7397	017014	116105 	034642'			MOVB	.DQPBA-20+Q.TS(R1),R5 ;FIND THE SIZE OF A TABLE ENTRY
   7398	017020	016102 	034640'			MOV	.DQPBA-20+Q.DA(R1),R2 ;FIND THE TABLE HEAD ADDRESS
   7399	017024	105003 				CLRB	R3		;FIND THE LINE NUMBER
   7400	017026	000303 				SWAB	R3		;PUT IT IN LOWER ORDER OF BYTE
   7401	017030	010346 				MOV	R3,-(SP)	;SAVE LINE NUMBER
QPRDTE	- DTE-20 DRIVER AND PRI	MACRO M1108  16-DEC-77 11:28  PAGE 105-1
QUEUED PROTOCOL -- STRING DATA

   7402	017032	126103 	034656'			CMPB	.DQPBA-20+Q.DZ(R1),R3 ;IS THIS A LEGAL NUMBER?
   7403	017036	101416 				BLOS	30$		;NO -- IGNORE IT -- NOTE THIS SETS C BIT
   7404	017040				10$:
   7405	017040	005303 				DEC	R3		;ATTEMPT TO FIND THE ADDRESS OF THE HEAD OF THE LIST
   7406	017042	100402 				BMI	20$		;FOUND IT -- QUIT -- NOTE THIS SHOULD CLEAR C
   7407	017044	060502 				ADD	R5,R2		;MULTIPLY BY TABLE ENTRY SIZE
   7408	017046	000774 				BR	10$		;AND TRY AGAIN
   7409						;
   7410	017050				20$:
   7411	017050	022626 				CMP	(SP)+,(SP)+
   7412	017052	000241 				CLC
   7413	017054				25$:
   7414	017054	012604 				MOV	(SP)+,R4
   7415	017056	012605 				MOV	(SP)+,R5	;RESTORE REGISTERS
   7416	017060	005226 				INC	(SP)+		;REMOVE THE ENTRY FLAG
   7417	017062	103401 				BCS	27$
   7418	017064				26$:
   7419	017064					RETURN			;RETURN TO CALLER
	017064	000207 				RTS	PC
   7420					;
   7421	017066				27$:
   7422	017066	001776 				BEQ	26$
   7423	017070	005726 				TST	(SP)+
   7424	017072	000504 				BR	DEANOD
   7425						;
   7426	017074				30$:
   7427	017074	012604 				MOV	(SP)+,R4	;SET LINE NUMBER
   7428	017076	012603 				MOV	(SP)+,R3	;SET DEVICE NAME
   7429	017100	012701 	000017 			MOV	#BC.SAK,R1	;SEND ACK
   7430	017104					CALL	..STFC		;START FUNCTION
	017104	004737 	043252'			JSR	PC,..STFC
   7431	017110	000261 				SEC			;SET ERROR
   7432	017112	000760 				BR	25$		;AND RETURN
   7433						;
   7434						.DSABL	LSB
QPRDTE	- DTE-20 DRIVER AND PRI	MACRO M1108  16-DEC-77 11:28  PAGE 106
QUEUED PROTOCOL -- LINE NUMBER - CHARACTER

   7436						.SBTTL	QUEUED PROTOCOL -- LINE NUMBER - CHARACTER
   7437
   7438					;
   7439					;	LINCHR --LINE NUMBER - CHARACTER -- FUNCTION 4
   7440					;
   7441	017114				LINCHR::
   7442	017114	010046 				MOV	R0,-(SP)	;SAVE THE NODE ADDRESS
   7443	017116	005046 				CLR	-(SP)
   7444	017120	116416 	000005 			MOVB	E.FN+1(R4),@SP	;SAVE SIZE OF BLOCK
   7445	017124	162716 	000010 			SUB	#E.FW,@SP	;SUBTRACT THE SIZE OF THE HEADER
   7446	017130	010405 				MOV	R4,R5		;SET UP THE POINTER TO THE BUFFER
   7447	017132	016404 	000006 			MOV	E.DV(R4),R4	;FIND THE DEVICE
   7448	017136	062705 	000010 			ADD	#E.FW,R5	;POINT TO THE CHARACTER
   7449	017142				4$:
   7450	017142	012701 	000014 			MOV	#T.HHDS+4,R1	;SET UP THE BUFFER SIZE
   7451					;
   7452	017146				5$:
   7453	017146					CALL	..ALOW		;ALLOCATE A BLOCK
	017146	004737 	042164'			JSR	PC,..ALOW
   7454					;
   7455	017152				10$:
   7456	017152	010002 				MOV	R0,R2		;SAVE THE NODE ADDRESS
   7457	017154	005722 				TST	(R2)+		;MOVE OVER THE THREAD POINTER
   7458	017156	010122 				MOV	R1,(R2)+	;SET UP THE CHARACTER COUNT
   7459	017160	010012 				MOV	R0,@R2		;SET UP THE MEMORY ADDRESS
   7460	017162	062722 	000012 			ADD	#T.HHDS+2,(R2)+	;POINT TO THE BUFFER
   7461	017166	012722 	000001 			MOV	#1,(R2)+	;SET UP THE CURRENT COUNT POINTER
   7462	017172	005722 				TST	(R2)+
   7463	017174	010401 				MOV	R4,R1		;PICK UP THE DEVICE
   7464	017176	112503 				MOVB	(R5)+,R3
   7465	017200	112522 				MOVB	(R5)+,(R2)+	;STORE THE CHARCTER
   7466	017202	000303 				SWAB	R3		;SET UP LINE NUMBER FOR FDVNM
   7467	017204					CALL	FDVNM		;FIND THE DEVICE NUMBER
	017204	004737 	016772'			JSR	PC,FDVNM
   7468	017210	103410 				BCS	30$		;ILLEGAL LINE NUMBER
   7469	017212					CALL	@.DQPBA+Q.ST-20(R1) ;START TTY
	017212	004771 	034644'			JSR	PC,@.DQPBA+Q.ST-20(R1)
   7470	017216				20$:
   7471	017216	162716 	000002 			SUB	#2,@SP		;POINT TO THE NEXT CHARACTER
   7472	017222	001347 				BNE	4$		;DO AT LEAST ONE MORE
   7473	017224	005726 				TST	(SP)+		;REMOVE COUNT
   7474	017226	012600 				MOV	(SP)+,R0	;SET UP TO RETURN NODE
   7475	017230	000425 				BR	DEANOD		;ALL DONE -- RETURN THE NODE
   7476						;
   7477	017232				30$:
   7478	017232					CALL	..DECN		;DEALLOCAE BUFFER
	017232	004737 	042006'			JSR	PC,..DECN
   7479	017236	000767 				BR	20$		;AND TRY NEXT BLOCK
   7480						;
QPRDTE	- DTE-20 DRIVER AND PRI	MACRO M1108  16-DEC-77 11:28  PAGE 107
QUEUED PROTOCOL -- RETURN TIME OF DAY

   7482						.SBTTL	QUEUED PROTOCOL -- RETURN TIME OF DAY
   7483
   7484					;
   7485					;	RETTOD -- RETURN TIME OF DAY -- FUNCTION 12
   7486					;
   7487	017240				RETTOD::
   7488	017240	062704 	000010 			ADD	#E.FW,R4	;MOVE OVER THE HEADER
   7489	017244	005724 				TST	(R4)+		;MOVE OVER THE VALID BIT AND CHECK IT
   7490	017246	001416 				BEQ	DEANOD		;TIME NOT VALID FORGET IT
   7491									; +++003 REMOVED ONE INSTRUCTION
   7492	017250	012703 	031244'			MOV	#.DATE,R3	;SET UP TO SET DATE
   7493	017254					.INH6			;;;INHIBIT CLOCK INTERRUPTS
	017254	013746 	177776 			MOV	@#PS,-(SP)
	017260	112737 	000300 	177776 		MOVB	#300,@#PS
   7494	017266	012423 				MOV	(R4)+,(R3)+	;;;SET UP VALIDITY BITS
   7495	017270	012423 				MOV	(R4)+,(R3)+	;;;SET UP YEAR
   7496	017272	012423 				MOV	(R4)+,(R3)+	;;;SET UP DAY
   7497									;;;SET UP MON
   7498	017274	012423 				MOV	(R4)+,(R3)+	;;;SAVE DAYLIGHT SAVINGS TIME INDICATOR (1=DST)
   7499									;;;SET UP DAY OF WEEK
   7500	017276	012423 				MOV	(R4)+,(R3)+	;;;SET SECONDS SINCE MIDNIGHT
   7501	017300					.ENB6			;ENABLE INTERRUPTS
	017300	012637 	177776 			MOV	(SP)+,@#PS
   7502	017304				DEANOD:
   7503	017304					CALL	..DECN		;DEALLOCATE BUFFER
	017304	004737 	042006'			JSR	PC,..DECN
   7504	017310				QPRDTF:
   7505	017310	000137 	014536'			JMP	QPRDTL		;GO TO NEXT FUNCTION
   7506						;
QPRDTE	- DTE-20 DRIVER AND PRI	MACRO M1108  16-DEC-77 11:28  PAGE 108
QUEUED PROTOCOL -- FLUSH DEVICE OUTPUT QUEUE

   7508						.SBTTL	QUEUED PROTOCOL -- FLUSH DEVICE OUTPUT QUEUE
   7509
   7510					;
   7511					;	FLDVOT -- FLUSH OUTPUT FOR THIS DEVICE -- FUNCTION 13
   7512					;
   7513	017314				FLDVOT::
   7514	017314					CALL	FDVNMM		;FIND THE DEVICE POINTER
	017314	004737 	016756'			JSR	PC,FDVNMM
   7515	017320	010146 				MOV	R1,-(SP)
   7516	017322					CALL	@.DQPBA+Q.SP-20(R1) ;STOP DEVICE
	017322	004771 	034646'			JSR	PC,@.DQPBA+Q.SP-20(R1)
   7517	017326	012601 				MOV	(SP)+,R1
   7518	017330	016100 	034640'			MOV	.DQPBA+Q.DA-20(R1),R0 ;FIND DEVICE TABLE BASE ADDRESS
   7519	017334	010205 				MOV	R2,R5		;FIND THIS DEVICE ADDRESS
   7520	017336	016403 	000006 			MOV	E.DV(R4),R3	;FIND DEVICE NUMBER
   7521	017342					CALL	..SACK		;SEND ACKNOWLEDGEMENT
	017342	004737 	043166'			JSR	PC,..SACK
   7522	017346	010400 				MOV	R4,R0		;SET UP TO RETURN NODE
   7523	017350	000755 				BR	DEANOD		;DEALLOCATE NODE
   7524						;
QPRDTE	- DTE-20 DRIVER AND PRI	MACRO M1108  16-DEC-77 11:28  PAGE 109
QUEUED PROTOCOL -- RECIEVE KLINIK PARAMETERS

   7526						.SBTTL	QUEUED PROTOCOL -- RECIEVE KLINIK PARAMETERS
   7527
   7528					;
   7529					;	RCVKLP -- RECIEVE KLINIK PARAMETERS -- FUNCTION 33
   7530					;
   7531	017352				RCVKLP::
   7532	017352	062704 	000012 			ADD	#E.FW+2,R4	; +++009 GET OVER THE INDIRECT HEADER
   7533	017356	012402 				MOV	(R4)+,R2	; +++009 BYTE COUNT TO R2
   7534	017360	001422 				BEQ	90$		; +++009 QUIT IF NULL
   7535	017362					.INH6			; +++009 DISALLOW INTERRUPTS
	017362	013746 	177776 			MOV	@#PS,-(SP)
	017366	112737 	000300 	177776 		MOVB	#300,@#PS
   7536	017374	006202 				ASR	R2		;;; +++009  MAKE A WORD COUNT
   7537	017376	012703 	031316'			MOV	#.KLNFT,R3	;;; +++009 BUFFER POINTER TO R3
   7538	017402	042737 	010000 	031114'		BIC	#EF.RKP,.COMEF+2 ;;; +++009 CLEAR THE FLAG
   7539	017410				10$:				;;; +++009
   7540	017410	012423 				MOV	(R4)+,(R3)+	;;; +++009 LOAD THE PARAMETERS
   7541	017412	077202 				SOB	R2,10$		;;; +++009 LOOP TILL DONE
   7542	017414	052737 	010000 	031114'		BIS	#EF.RKP,.COMEF+2 ;;; +++009 SET THE EVENT FLAG
   7543	017422					.ENB6			;;; +++009 ALLOW INTERRUPTS
	017422	012637 	177776 			MOV	(SP)+,@#PS
   7544	017426				90$:				; ++009
   7545	017426	000726 				BR	DEANOD		; +++009 DEQUEUE THIS NODE AND EXIT
   7546						;
QPRDTE	- DTE-20 DRIVER AND PRI	MACRO M1108  16-DEC-77 11:28  PAGE 110
QUEUED PROTOCOL -- SENDALL

   7548						.SBTTL	QUEUED PROTOCOL -- SENDALL
   7549
   7550					;
   7551					;	SNDALL -- SENDALL SERVICE -- FUNCTION 14
   7552					;
   7553
   7554	017430				SNDALL::
   7555	017430					CALL	.SNDAL		;DO SENDALL
	017430	004737 	017436'			JSR	PC,.SNDAL
   7556	017434	000725 				BR	QPRDTF		;AND RETURN
   7557						;
   7558					;
   7559					;	.SNDAL -- SUBROUTINE TO DO A SENDALL
   7560					;
   7561					;	CALLING SEQUENCE
   7562					;
   7563					;	R0 & R4 -- POINTER TO BUFFER TO BE SENT (QUEUED PROTOCOL FORMAT)
   7564					;
   7565					;	REGISTERS ALTERED
   7566					;
   7567					;	R0,R1,R2,R3,R5
   7568					;
   7569					;	THE SENDALL MESSAGES AND COUNTS ARE MAINTINED IN PARALLEL RING BUFFERS
   7570					;	IN ".SNDBF" AND ".SNDCN" (Q.V.). ".SNDLP" POINTS THE THE NEXT FREE LOGICAL
   7571					;	NODE IN THE SENDALL RING. EACH ENTRY IN THE DATA LINE SCANNER TABLE HAS
   7572					;	AS SENDALL INDEX BYTE IN "STSW1" ("TT.SND") WHICH POINTS TO THE LAST NODE
   7573					;	PROCESSED SENDALL RING. THE QUEUED PROTOCOL BUFFER IS DEALLOCATEED BY THE
   7574					;	TERMINAL DRIVER WHEN THE LAST TERMINAL HAS PROCESSED THAT NODE.
   7575					;
   7576					;	A SENDALL IS DEEMED TO BE PENDING FOR A LINE IF ITS SENDALL INDEX IS
   7577					;	DIFFERENT FROM THAT IN ".SNDLP". THE SENDALL WILL BE INITIATED AT "..STTY"
   7578					;	IF THE LINE IS IDLE, OR AT "STTYDN" IF THE LINE HAS ACTIVE OUTPUT.
   7579					;
   7580					;	IN ORDER TO PREVENT PROBLEMS ASSOCIATED WITH LARGE SENDALLS (A LARGE
   7581					;	SENDALL IS DEFINED AS ONE WHICH WILL FILL THE SENDALL RING), THE RING IS
   7582					;	ACTUALLY MANAGED AS A CIRCULAR LIST, WITH A GUARANTEED NULL ENTRY IN THE
   7583					;	LIST AT ALL TIMES. SHOULD A REQUEST BE MADE TO FILL AN EMPTY NODE IN THE
   7584					;	RING WITHOUT THE FOLLOWING NODE BEING EMPTY, THAT MODE WILL NOT BE FILLED
   7585					;	UNTIL THE FOLLOWING NODE BECOMES EMPTY (NULL). IN EFFECT, THE SENDALL
   7586					;	PROCESS IS DRIVEN BY THE SLOWEST TERMINAL(S) IN THE DATA LINE SCANNER.
   7587					;
   7588
   7589	017436				.SNDAL::			; +++006
   7590	017436	010004 				MOV	R0,R4		; +++006 COPY SENDALL POINTER
   7591	017440	022020 				CMP	(R0)+,(R0)+	; +++006 GET OVER LISTHEAD
   7592	017442	010010 				MOV	R0,(R0)		; +++006 SET UP CURRENT ADDRESS POINTER
   7593	017444	062720 	000006 			ADD	#6,(R0)+	; +++006 CORRECT BUFFER POINTER
   7594	017450	116010 	000003 			MOVB	3(R0),(R0)	; +++006  MOVE THE BYTE COUNT
   7595	017454				10$:				; +++006
   7596	017454					.INH6			; +++006 DISALLOW INTERRUPTS
	017454	013746 	177776 			MOV	@#PS,-(SP)
	017460	112737 	000300 	177776 		MOVB	#300,@#PS
   7597	017466	013701 	031636'			MOV	.SNDLP,R1	;;; +++006 FIND THE CURRENT POINTER FOR SENDALL
   7598	017472	010102 				MOV	R1,R2		;;; +++006 COPY IT TO R2
   7599	017474	006301 				ASL	R1		;;; +++006 MAKE RING WORD INDEX
   7600	017476	005202 				INC	R2		;;; +++006 UPDATE THE POINTER TO NEXT NODE
   7601	017500	042702 	177774 			BIC	#^C3,R2		;;; +++006 MODULO 4
QPRDTE	- DTE-20 DRIVER AND PRI	MACRO M1108  16-DEC-77 11:28  PAGE 110-1
QUEUED PROTOCOL -- SENDALL

   7602	017504	006302 				ASL	R2		;;; +++014 MAKE A WORD INDEX OF IT
   7603	017506	005762 	031640'			TST	.SNDBF(R2)	;;; +++014 HAVE WE WRAPPED AROUND??
   7604	017512	001131 				BNE	60$		;;; +++014 YES -- WAIT FOR IT TO DIE OUT
   7605	017514	006202 				ASR	R2		;;; +++014 NO -- RESET INDEX
   7606	017516	010237 	031636'			MOV	R2,.SNDLP	;;; +++006 SET THE POINTER TO THE NEXT RING BUFFER
   7607	017522	013761 	034736'	031650'		MOV	.DQDH0+Q.DZ,.SNDCN(R1) ;;; +++006 SET UP THE TTY COUNT
   7608	017530	001402 				BEQ	15$		;;; +++006 GO ON IF NO DH'S
   7609	017532	010461 	031640'			MOV	R4,.SNDBF(R1)	;;; +++006 SET PACKET IN THE CURRENT RING BUFFER
   7610	017536				15$:
   7611	017536					.ENB6			;;; +++006 ENABLE INTERRUPTS
	017536	012637 	177776 			MOV	(SP)+,@#PS
   7612									; +++003 REMOVED ONE INSTRUCTION
   7613	017542	012702 	035126'			MOV	#DLTBL,R2	; +++003 DO THE DL11C AND DL11ES
   7614	017546				20$:
   7615	017546	020237 	031222'			CMP	R2,KLNPTR	; +++003 IS THIS THE KLINIK LINE??
   7616	017552	001003 				BNE	25$		; +++003 NO -- GO ON
   7617	017554	105737 	031342'			TSTB	.KLNSW+0	; +++003 YES -- IS IT ACTIVE AS USER CONSOLE??
   7618	017560	002024 				BGE	30$		; +++003 NO -- FORGET IT
   7619	017562				25$:
   7620	017562	005762 	000002 			TST	TTYEXP(R2)	; +++003 IS IT HERE??
   7621	017566	001421 				BEQ	30$		; +++003 NO -- FORGET IT
   7622	017570	032762 	004000 	000006 		BIT	#TT.NSA,STSW1(R2) ; +++003 SUPPRESS SENDALLS??
   7623	017576	001015 				BNE	30$		; +++003 YES -- SO DO IT
   7624	017600					.INH6			; +++003 NO -- INHIBIT INTERRUPTS
	017600	013746 	177776 			MOV	@#PS,-(SP)
	017604	112737 	000300 	177776 		MOVB	#300,@#PS
   7625	017612	010246 				MOV	R2,-(SP)	;;; +++006 SAVE R2 FROM COPBUF
   7626	017614					CALL	COPBUF		;;; +++003 COPY THE BUFFER
	017614	004737 	020054'			JSR	PC,COPBUF
   7627	017620	012602 				MOV	(SP)+,R2	;;; +++006 RESTORE R2
   7628	017622					CALL	..STTY		;;; +++003 START THE LINE UP
	017622	004737 	042204'			JSR	PC,..STTY
   7629	017626					.ENB6			;;; +++003 ENABLE INTERRUPTS
	017626	012637 	177776 			MOV	(SP)+,@#PS
   7630	017632				30$:
   7631	017632	062702 	000010 			ADD	#^D8,R2		; +++003 POINT TO THE NEXT LINE
   7632	017636	022702 	035176'			CMP	#DHTBL,R2	; +++003 IS IT A DL11??
   7633	017642	101341 				BHI	20$		; +++003 YES -- DO THIS LINE
   7634	017644	010400 				MOV	R4,R0		;SET UP POINTER TO TTY BUFFER FOR "..STTY"
   7635	017646	010037 	031660'			MOV	R0,.CRSND	;SET THAT THIS IS CURRENT SENDALL
   7636	017652				35$:
   7637	017652					.INH6			; DISALLOW INTERRUPTS
	017652	013746 	177776 			MOV	@#PS,-(SP)
	017656	112737 	000300 	177776 		MOVB	#300,@#PS
   7638	017664	005737 	034736'			TST	.DQDH0+Q.DZ	;;;DH'S EXIST?
   7639	017670	001005 				BNE	45$		;;; YES -- GO ON
   7640	017672					CALL	..DECN		;;; NO -- DEALOCATE THE NODE
	017672	004737 	042006'			JSR	PC,..DECN
   7641	017676					.ENB6			;;; ALLOW INTERRUPTS
	017676	012637 	177776 			MOV	(SP)+,@#PS
   7642	017702	000430 				BR	55$		; AND GO AWAY
   7643						;
   7644	017704				45$:
   7645	017704	032762 	000001 	000006 		BIT	#TT.OUT,STSW1(R2) ;;; +++010 ANY KIND OF OUTPUT PENDING??
   7646	017712	001015 				BNE	50$		;;; +++010 YES -- DON'T RESTART
   7647	017714	032762 	004010 	000006 		BIT	#TT.NSA!TT.ABW,STSW1(R2) ;;; +++010 NO -- IGNORE SENDALL OR AUTO-BAUD WAIT??
   7648	017722	001033 				BNE	70$		;;; +++010 YES -- DON'T START THIS LINE BUT ACCOUNT FOR IT
QPRDTE	- DTE-20 DRIVER AND PRI	MACRO M1108  16-DEC-77 11:28  PAGE 110-2
QUEUED PROTOCOL -- SENDALL

   7649	017724	032762 	000400 	000006 		BIT	#TT.CTY,STSW1(R2) ;;; +++010 NO -- IS THIS A CTY??
   7650	017732	001403 				BEQ	46$		;;; +++010 NO -- GO ON
   7651	017734	005737 	031216'			TST	.TTP11		;;; +++010 YES -- IN -11 I/O WAIT??
   7652	017740	001002 				BNE	50$		;;; +++010 YES -- DON'T RESTART
   7653	017742				46$:
   7654	017742					CALL	..STTY		;;; +++010 NO-- START SENDALL FOR THIS TTY
	017742	004737 	042204'			JSR	PC,..STTY
   7655	017746				50$:
   7656	017746					.ENB6			;;;ENABLE INTERRUPTS
	017746	012637 	177776 			MOV	(SP)+,@#PS
   7657	017752	062702 	000010 			ADD	#8.,R2		;LOOK AT THE NEXT DH
   7658	017756	005762 	000002 			TST	TTYEXP(R2)	;END OF LIST
   7659	017762	001333 				BNE	35$		;NO TRY NEXT LINE
   7660	017764				55$:
   7661	017764	005037 	031660'			CLR	.CRSND		;CLEAR CURRENT SENDALL POINTER
   7662	017770	005037 	020116'			CLR	TTUNT		;CLEAR ALREADY SENT ERROR FLAG
   7663	017774					RETURN			;RETURN TO CALLER
	017774	000207 				RTS	PC
   7664	017776				60$:
   7665	017776					.ENB6			;;;ENABLE INTERRUPTS
	017776	012637 	177776 			MOV	(SP)+,@#PS
   7666	020002					WSIG$S			;WAIT FOR NEXT SIGNIFICANT EVENT
	020002	012746 				MOV	(PC)+,-(SP)
	020004	   061 	   001 			.BYTE	49.,1
	020006	104375 				EMT	375
   7667	020010	000621 				BR	10$		; AND TRY AGAIN
   7668						;
   7695
   7696	020012				70$:				;;; +002 HERE TO PRETEND WE DID SENDALL ON LINE
   7697	020012	013701 	031636'			MOV	.SNDLP,R1	;;; +002 GET POINTER TO CURRENT SENDALL + 1
   7698	020016	005301 				DEC	R1		;;; +002 MAKE IT POINTER TO CURRENT
   7699	020020	042701 	177774 			BIC	#177774,R1	;;; +002 WE ONLY WANT TWO BITS
   7700	020024	006301 				ASL	R1		;;; +002 MAKE IT INTO A WORD INDEX
   7701	020026	005361 	031650'			DEC	.SNDCN(R1)	;;; +002 DECREMENT COUNT OF SENDALLS SENT
   7702	020032	001004 				BNE	75$		;;; +002 IF SOME LEFT, DON'T FREE MESSAGE
   7703	020034	005061 	031640'			CLR	.SNDBF(R1)	;;; +002 INDICATE NONEXISTANT
   7704	020040					CALL	..DECN		;;; +002 DEALLOCATE THE NODE
	020040	004737 	042006'			JSR	PC,..DECN
   7705	020044				75$:				;;; +002 HERE TO FINISH DUMMY SENDALL
   7706	020044	062762 	040000 	000006 		ADD	#TT.SNI,STSW1(R2);;; +002 BUMP INDEX TO NEXT SENDALL
   7707	020052	000735 				BR	50$		;;; +002 AND DO THE NEXT LINE
   7708						;
QPRDTE	- DTE-20 DRIVER AND PRI	MACRO M1108  16-DEC-77 11:28  PAGE 111
QUEUED PROTOCOL -- COPY BUFFER

   7710						.SBTTL	QUEUED PROTOCOL -- COPY BUFFER
   7711
   7712					;
   7713					;	COPBUF -- ROUTINE TO COPY A TTY BUFFER AND CORRECT THE
   7714					;	ADDRESS OF THE BUFFER IN THE CURRENT ADDRESS POINTER
   7715					;
   7716					;	CALLING SEQUENCE:
   7717					;
   7718					;	R4 -- ADDRESS OF BUFFER TO BE COPIED
   7719					;
   7720					;	CALL	COPBUB
   7721					;
   7722					;	EXIT CONDITIONS:
   7723					;
   7724					;	R0 -- NEW BUFFER ADDRESS
   7725					;
   7726					;	REGISTERS ALTERED:
   7727					;
   7728					;	R1,R2,R5
   7729					;
   7730	020054				COPBUF::
   7731	020054	016401 	000002 			MOV	2(R4),R1	;SET UP THE BUFFER SIZE
   7732	020060					CALL	..ALOW		;ALLOCATE A BUFFER
	020060	004737 	042164'			JSR	PC,..ALOW
   7733					;
   7734	020064				10$:
   7735	020064	010405 				MOV	R4,R5		;SAVE R5 BUFFER POINTER
   7736	020066	010002 				MOV	R0,R2		;SAVE TTY BUFFER POINTER
   7737	020070	006201 				ASR	R1		;MAKE WORD INDEX
   7738	020072				20$:
   7739	020072	012522 				MOV	(R5)+,(R2)+	;COPY THE BUFFER
   7740	020074	077102 				SOB	R1,20$		;COPY UNTIL FINISHED
   7741	020076	010060 	000004 			MOV	R0,T.HCAD(R0)	;SET THE CURRENT ADDRESS
   7742	020102	062760 	000012 	000004 		ADD	#T.HHDS+2,T.HCAD(R0) ;CORRECT IT TO POINT TO BUFFER
   7743	020110					RETURN
	020110	000207 				RTS	PC
   7744					;
   7745	020112				TTLGE:
   7746	020112	000014 				.WORD	14
   7747	020114	001100 				.WORD	DV.LOG!DV.HNG	;DEVICE HUNG
   7748	020116				TTUNT:
   7749						.BLKW	4
QPRDTE	- DTE-20 DRIVER AND PRI	MACRO M1108  16-DEC-77 11:28  PAGE 112
DTE20 DRIVER -- DTE20 INTERRUPT SERVICE

   7751						.SBTTL	DTE20 DRIVER -- DTE20 INTERRUPT SERVICE
   7752
   7753	020126				.DTINT::
   7754	020126	010046 				MOV	R0,-(SP)	;SAVE REGISTERS
   7755	020130	010146 				MOV	R1,-(SP)
   7756	020132	010246 				MOV	R2,-(SP)
   7757	020134	010346 				MOV	R3,-(SP)
   7758	020136	010446 				MOV	R4,-(SP)
   7759	020140	010546 				MOV	R5,-(SP)
   7760	020142				INTLPS:
   7761	020142	013700 	031356'			MOV	.PRDTE,R0	;SET UP POINTER TO THIS PROCESSOR NUMBER
   7762	020146	013703 	031352'			MOV	.PRADR,R3	;ADDRESS OF COMM TABLE OFFSETS
   7763	020152	032777 	121000 	011174 		BIT	#TO10DN!TO10ER!MPE11,@.PRSTA ;TO 10 DONE OR ERROR?
   7764	020160	001026 				BNE	TOTNDN		;YES -- GO CHECK IT OUT
   7765	020162	132777 	000202 	011164 		BITB	#TO11DN!TO11ER,@.PRSTA ;TO 11 DONE OR ERROR?
   7766	020170	001402 				BEQ	4$		;NO -- GO ON
   7767	020172	000137 	020656'			JMP	TOELDN		;YES -- SEE WHAT IS NEXT FOR 11
   7768						;
   7769	020176				4$:
   7770	020176	032777 	004000 	011150 		BIT	#TO11DB,@.PRSTA	;NO -- CHECK FOR DOORBELL INTERRUPT
   7774	020204	001404 				BEQ	DTEXIT		; +++008 NONE -- DISMISS INTERRUPT
   7776	020206	005237 	031360'			INC	.PRDCT		; +001 ONE MORE DOORBELL RECIEVED...
   7777	020212	000137 	021364'			JMP	DBLRNG		;YES -- GO DO DOORBELL STUFF
   7778						;
   7789	020216				DTEXIT:
   7790	020216	012605 				MOV	(SP)+,R5	;RESTORE REGISTERS
   7791	020220	012604 				MOV	(SP)+,R4
   7792	020222	012603 				MOV	(SP)+,R3
   7793	020224	012602 				MOV	(SP)+,R2
   7794	020226	012601 				MOV	(SP)+,R1
   7795	020230	012600 				MOV	(SP)+,R0
   7796	020232	000137 	004146'			JMP	@#..INTX	;GO TO INTERRUPT EXIT
   7797						;
QPRDTE	- DTE-20 DRIVER AND PRI	MACRO M1108  16-DEC-77 11:28  PAGE 113
DTE20 DRIVER -- TO TEN DONE SERVICE

   7799						.SBTTL	DTE20 DRIVER -- TO TEN DONE SERVICE
   7800
   7801					;
   7802					;	TO TEN DONE INTERRUPT SERVICE
   7803					;
   7804	020236				TOTNDN:
   7805	020236	100403 				BMI	10$		;DONE?
   7806	020240					.CRASH	TET		;NO -- MUST BE EITHER MEMORY PARITY OR TO10ER
	020240	000004 				IOT
	020242	   124 	   105 	   124 		.ASCIZ	/TET/
	020245	   000
   7807
   7808	020246				10$:
   7810	020246	013704 	031730'			MOV	TO10SZ,R4
   7811	020252	063704 	031732'			ADD	TO10AS,R4
   7812	020256	020460 	000020 			CMP	R4,T10AD(R0)
   7813	020262	001403 				BEQ	13$
   7814	020264					.CRASH	DTF
	020264	000004 				IOT
	020266	   104 	   124 	   106 		.ASCIZ	/DTF/
	020271	   000
   7815	020272				13$:
   7816	020272	012737 	000001 	031732'		MOV	#1,TO10AS	;SET NO XFER EXPECTED
   7818	020300	012777 	040000 	011046 		MOV	#DON10C,@.PRSTA	;CLEAR DONE FLAGS
   7819	020306	013704 	031742'			MOV	TO10Q,R4	;START NEXT ENTRY IF THERE IS ONE
   7820	020312	005764 	000012 			TST	12(R4)		;CHECK FOR INDIRECT FUNCTION
   7821	020316	100433 				BMI	INDTTF		;YES -- START THE FUNCTIIN
   7822	020320	001011 				BNE	15$		;NO -- IF NE THEN NORMAL FUNCTION
   7823	020322	053777 	031700'	011352 		BIS	DTEMSK,@DTEADR	;NOT -- FINISH INDIRECT FUNCTION
   7824	020330	152737 	000001 	031116'		BISB	#EV.SE,.SERFG+0	;DECLARE SIG EVENT
   7825	020336	042737 	000006 	031736'		BIC	#TOIP!TOBM,STSTT+2 ;CLEAR INDIRECT IN PROGRESS
   7826	020344				15$:
   7827	020344					CALL	..NDEL
	020344	004737 	041306'			JSR	PC,..NDEL
   7828	020350	010046 				MOV	R0,-(SP)	;SAVE R0 -- CPU NUMBER
   7829	020352	016401 	000004 			MOV	4(R4),R1	;FIND THE SIZE OF THIS ENTRY
   7830	020356	010400 				MOV	R4,R0		;SET THE NODE ADDRESS
   7831	020360					CALL	..DECB		;DEALLOCATE
	020360	004737 	042012'			JSR	PC,..DECB
   7832	020364	012600 				MOV	(SP)+,R0	;RESTORE THE CPU NUMBER
   7833	020366	013704 	031742'			MOV	TO10Q,R4	;FIND THE LISTHEAD AGAIN
   7834	020372	022704 	031742'			CMP	#TO10Q,R4	;IS THERE ANOTHER ONE TO DO
   7835	020376	001661 				BEQ	INTLPS
   7836	020400					CALL	STNTQ		;START NEXT TEN QUEUE
	020400	004737 	022166'			JSR	PC,STNTQ
   7837	020404				20$:
   7838	020404	000656 				BR	INTLPS		;CHECK THE OTHER CONDITIONS NOW
   7839						;
   7840	020406				INDTTF:
   7841	020406	005064 	000012 			CLR	12(R4)		;SET INDICATOR TO INDICATE THAT THIS WAS INDIRECT
   7842	020412	005060 	000006 			CLR	DXWD1(R0)		;DEPOSIT THE WORD COUNT
   7843	020416	005060 	000004 			CLR	DXWD2(R0)
   7844	020422	005005 				CLR	R5
   7845	020424	156405 	000020 			BISB	20(R4),R5	;SET THE COUNT
   7846	020430	010560 	000002 			MOV	R5,DXWD3(R0)
   7848	020434	016437 	000022 	031732'		MOV	22(R4),TO10AS
   7849	020442	010537 	031730'			MOV	R5,TO10SZ
QPRDTE	- DTE-20 DRIVER AND PRI	MACRO M1108  16-DEC-77 11:28  PAGE 113-1
DTE20 DRIVER -- TO TEN DONE SERVICE

   7851	020446	016460 	000022 	000020 		MOV	22(R4),T10AD(R0)	;SET THE TO 10 ADDRESS
   7852	020454	012705 	000003 			MOV	#QSIZE-FORPRO,R5 ;DEPOSIT THE SIZE IN 10 MEMORY
   7853	020460	066305 	000004 			ADD	DMYN(R3),R5	;GET OFFSET
   7854	020464	012760 	010000 	000010 		MOV	#DEP,TNAD1(R0)	;SET DEPOSIT
   7855	020472	010560 	000012 			MOV	R5,TNAD2(R0)	;START XFER
   7856	020476					CALL	WFED		;WAIT FOR DEPOSIT
	020476	004737 	044012'			JSR	PC,WFED
   7857	020502	052737 	000006 	031736'		BIS	#TOIP!TOBM,STSTT+2 ;SET INDIRECT IN PROGRESS FLAG
   7858	020510	005060 	000036 			CLR	DAG3(R0)
   7859	020514	013760 	031734'	000006 		MOV	STSTT,DXWD1(R0)	;SET IN 10 MEMORY
   7860	020522	013760 	031736'	000004 		MOV	STSTT+2,DXWD2(R0)
   7861	020530	013760 	031740'	000002 		MOV	STSTT+4,DXWD3(R0)
   7862	020536	062760 	177777 	000012 		ADD	#STATUS-QSIZE,TNAD2(R0)	;DEPOSIT IN 10 MEMORY
   7863	020544					CALL	WFED		;WAIT FOR DEPOSIT
	020544	004737 	044012'			JSR	PC,WFED
   7864	020550	016437 	000024 	031700'		MOV	24(R4),DTEMSK	;GET READY TO SET EVENT FLAG FOR INDIRECT
   7865	020556	016437 	000026 	031702'		MOV	26(R4),DTEADR
   7866	020564	012777 	000400 	010562 		MOV	#TO10DB,@.PRSTA
   7867	020572	000427 				BR	SETDNE
   7868						;
QPRDTE	- DTE-20 DRIVER AND PRI	MACRO M1108  16-DEC-77 11:28  PAGE 114
DTE20 DRIVER -- TO ELEVEN DONE SERVICE

   7870						.SBTTL	DTE20 DRIVER -- TO ELEVEN DONE SERVICE
   7871
   7872					;
   7873					;	TO ELEVEN DONE SERVICE
   7874					;
   7875	020574				TOITDN:
   7876	020574	042737 	000001 	031736'		BIC	#TOIT,STSTT+2	;CKEAR PROCESSING QUEUE STATUS
   7877	020602				STTOIP:
   7878	020602	012702 	000002 			MOV	#STATUS-FORPRO,R2 ;YES -- BETTER INDICATE THAT 11 IS FINISHED
   7879	020606	066302 	000004 			ADD	DMYN(R3),R2	;POINT TO STATUS WORD
   7880	020612	012760 	010000 	000010 		MOV	#DEP,TNAD1(R0)	;INDICATE WRITE
   7881	020620	013760 	031734'	000006 		MOV	STSTT,DXWD1(R0)	;SET UP TO DEPOSIT
   7882	020626	013760 	031736'	000004 		MOV	STSTT+2,DXWD2(R0)
   7883	020634	013760 	031740'	000002 		MOV	STSTT+4,DXWD3(R0)
   7884	020642	010260 	000012 			MOV	R2,TNAD2(R0)	;START XFER
   7885	020646					CALL	WFED		;WAIT FODEPOSIT
	020646	004737 	044012'			JSR	PC,WFED
   7886	020652				SETDNE:
   7887	020652	000137 	020142'			JMP	INTLPS
   7888						;
   7889	020656				TOELDN:
   7890	020656	100403 				BMI	10$		;ERROR?
   7891	020660				5$:
   7892	020660					.CRASH	ETE		;YES -- TO ELEVEN ERROR FLAG UP
	020660	000004 				IOT
	020662	   105 	   124 	   105 		.ASCIZ	/ETE/
	020665	   000
   7893
   7894	020666				10$:
   7896	020666	013701 	031726'			MOV	TO11BS,R1
   7897	020672	052701 	170000 			BIS	#170000,R1
   7898	020676	005401 				NEG	R1
   7899	020700	032737 	020000 	031726'		BIT	#TO11BM,TO11BS
   7900	020706	001001 				BNE	6$
   7901	020710	006301 				ASL	R1
   7902	020712				6$:
   7903	020712	063701 	031724'			ADD	TO11AS,R1
   7904	020716	020160 	000022 			CMP	R1,T11AD(R0)
   7905	020722	001406 				BEQ	7$
   7906	020724	016027 	000022 			MOV	T11AD(R0),(PC)+
   7907	020730	000000 				.WORD	0
   7908	020732					.CRASH	DTB
	020732	000004 				IOT
	020734	   104 	   124 	   102 		.ASCIZ	/DTB/
	020737	   000
   7909	020740				7$:
   7911	020740	000337 	031710'			SWAB	TO11FN		;CHECK FOR INDIRECT FUNCTION
   7912	020744	012777 	000100 	010402 		MOV	#DON11C,@.PRSTA	;CLEAR DONE FLAGS
   7913
   7914						.ENABL	LSB
   7915
   7916	020752	005737 	031710'			TST	TO11FN		;SET IN THE CORRECT ORDER
   7917	020756	001061 				BNE	40$		;YES -- BETTER QUEUE IT
   7918	020760				8$:
   7919	020760	013701 	031704'			MOV	TO11NP,R1	;ENTER THE NODE IN THE QUEUE
   7920	020764	012704 	031750'			MOV	#TO11Q,R4	;FIND THE LISTHEAD
   7921	020770	005037 	031722'			CLR	TO11QP		; +++004 CLEAR THE ENTRY COUNT
QPRDTE	- DTE-20 DRIVER AND PRI	MACRO M1108  16-DEC-77 11:28  PAGE 114-1
DTE20 DRIVER -- TO ELEVEN DONE SERVICE

   7922	020774				9$:
   7923	020774	010402 				MOV	R4,R2		;SAVE THE CURRENT POINTER
   7924	020776	005237 	031722'			INC	TO11QP		; +++004 INCREMENT THE ENTRY COUNT
   7925	021002	011404 				MOV	@R4,R4		;LOOK FOR THE NEXT ENTRY
   7926	021004	001373 				BNE	9$		;FOUND ONE -- TRY AGAIN
   7927	021006	005011 				CLR	@R1		;CLEAR THE THREAD WORD
   7928	021010	010112 				MOV	R1,@R2		;STORE THIS NODE AS THE LAST ONE
   7929	021012	022737 	000012 	031722'		CMP	#12,TO11QP
   7930	021020	101002 				BHI	10$
   7931	021022	012710 	020000 			MOV	#20000,@R0	;STOP DTE! (THE HARD WAY!)
   7932	021026				10$:
   7933	021026				STEIF:
   7934	021026	052737 	000100 	032576'		BIS	#EF.TED,DTETSK+A.EF ;SET TENDONE EVENT FLAG
   7935	021034	152737 	000001 	031116'		BISB	#EV.SE,.SERFG+0
   7936	021042	005737 	031746'			TST	EQSZ		;ANY MORE TO XFER?
   7937	021046	001652 				BEQ	TOITDN		;NO -- SET DONE TO 10
   7938	021050				STQUE:
   7939	021050	005001 				CLR	R1		;ASSUME NO 10 INTERRUPT WANTED
   7940	021052	162737 	000012 	031746'		SUB	#10.,EQSZ	;SUBTRACT THE SIZE OFTHE HEADER
   7941	021060	001002 				BNE	5$		;DON'T SET TO INTERRUPT 10
   7942	021062	052701 	100000 			BIS	#IFLOP,R1	;COUNT GOING TO ZERO THIS TIME INTERRUPT 10
   7943	021066				5$:
   7945	021066	012737 	031706'	031724'		MOV	#TO11HD,TO11AS	;SAVE ADDRESS
   7947	021074	012760 	031706'	000022 		MOV	#TO11HD,T11AD(R0) ;SET UP THE CURRENT ADDRESS
   7948	021102	052701 	027766 			BIS	#-10.&7777+TO11BM,R1
   7949	021106	010160 	000016 			MOV	R1,T11BC(R0)	;START XFER
   7951	021112	010137 	031726'			MOV	R1,TO11BS	;SAVE COUNT
   7953
   7954	021116				30$:
   7955	021116	000137 	020142'			JMP	INTLPS		;GO WORK ON THE NEXT THING
   7956						;
   7957	021122				40$:
   7958	021122	000337 	031706'			SWAB	TO11HD		;SWAP BYTES TO CORRECT DIRECTION
   7959	021126	000337 	031712'			SWAB	TO11DV
   7960	021132	010005 				MOV	R0,R5		;SAVE THE CPU NIMBER -ALSO RESTART HERE IF ALL FAIL
   7961	021134	022737 	000010 	031712'		CMP	#.DQPSZ,TO11DV	;LEGAL DEVICE?
   7962	021142	103003 				BHIS	42$		;YES -- ALL OK
   7963	021144					.CRASH	PT1		;NO -- PROTOCOL BROKEN
	021144	000004 				IOT
	021146	   120 	   124 	   061 		.ASCIZ	/PT1/
	021151	   000
   7964	021152				42$:
   7965	021152	005737 	031710'			TST	TO11FN		;INDIRECT FUNCTION?
   7966	021156	100471 				BMI	44$		;YES -- GET OUT AND WAIT FOR REST
   7967	021160	123727 	031710'	000034 		CMPB	TO11FN,#BC.FNM	;FUNCTION MAX?
   7968	021166	103403 				BLO	46$		;YES -- ALL OK HERE
   7969	021170					.CRASH	PT2		;NO -- PROTOCOL BROKEN
	021170	000004 				IOT
	021172	   120 	   124 	   062 		.ASCIZ	/PT2/
	021175	   000
   7970	021176				46$:
   7971	021176	013701 	031706'			MOV	TO11HD,R1	;SET THE NODE SIZE
   7972	021202	122121 				CMPB	(R1)+,(R1)+	;ADD 2 BYTES
   7973	021204					CALL	..ALCB		;ALLOCATE A BLOCK
	021204	004737 	041642'			JSR	PC,..ALCB
   7974	021210	103003 				BCC	50$		;GOT IT ALL OK
   7975	021212					.CRASH	BF1
QPRDTE	- DTE-20 DRIVER AND PRI	MACRO M1108  16-DEC-77 11:28  PAGE 114-2
DTE20 DRIVER -- TO ELEVEN DONE SERVICE

	021212	000004 				IOT
	021214	   102 	   106 	   061 		.ASCIZ	/BF1/
	021217	   000
   7976
   7977	021220				50$:
   7978	021220	010037 	031704'			MOV	R0,TO11NP	;SET THE NODE POINTER
   7979	021224	005720 				TST	(R0)+		;MOVE OVER THREAD WORD
   7980	021226	010120 				MOV	R1,(R0)+	;STORE THE NODE SIZE
   7981	021230	113720 	031710'			MOVB	TO11FN,(R0)+	;SAVE THE FUNCTION
   7982	021234	113720 	031706'			MOVB	TO11HD,(R0)+	;SAVE SIZE
   7983	021240	013720 	031712'			MOV	TO11DV,(R0)+	;SAVE THE DEVICE
   7984	021244	013720 	031716'			MOV	TO11FW,(R0)+	;SAVE THE FIRST FUNCTION WORD
   7985	021250	010065 	000022 			MOV	R0,T11AD(R5)	;SET UP XFER ADDRESS JUST IN CASE
   7987	021254	010037 	031724'			MOV	R0,TO11AS	;SAVE ADDRESS
   7989	021260	012702 	020000 			MOV	#TO11BM,R2	;SET UP BYTE MODE MASK
   7990	021264	013701 	031706'			MOV	TO11HD,R1	;FIND THE HEADER
   7991	021270	162701 	000012 			SUB	#10.,R1		;ANY MORE HERE?
   7992	021274	001416 				BEQ	67$		;NO -- JUST QUIT AND QUEUE IT
   7993	021276	160137 	031746'			SUB	R1,EQSZ		;YES -- ACCOUNT FOR ITS SIZE
   7994	021302	001002 				BNE	65$		;SET INTERRUPT BOTH IF ZERO'S COUNT
   7995	021304	052702 	100000 			BIS	#IFLOP,R2	;SET IFLOP
   7996	021310				65$:
   7997	021310	005401 				NEG	R1		;SET UP BYTE COUNTER
   7998	021312	042701 	170000 			BIC	#170000,R1	;MASK TO 0-11
   7999	021316	050102 				BIS	R1,R2		;SET UP FOR BYTE POINTER
   8000	021320	010265 	000016 			MOV	R2,T11BC(R5)	;SET BYTE COUNT AND START
   8002	021324	010237 	031726'			MOV	R2,TO11BS
   8004	021330	000404 				BR	44$		;WAIT FOR XFER
   8005						;
   8006	021332				67$:
   8007	021332	005037 	031710'			CLR	TO11FN		;INDICATE NO FUNCTION IN PROGRESS
   8008	021336				39$:
   8009	021336	010500 				MOV	R5,R0		;RESTORE R0
   8010	021340	000607 				BR	8$		;AND TRY NEXT
   8011						;
   8012	021342				44$:
   8013	021342	010500 				MOV	R5,R0
   8014	021344	005737 	031710'			TST	TO11FN		;IS IT INDIRECT?
   8015	021350	100002 				BPL	45$
   8016	021352	000137 	020574'			JMP	TOITDN
   8017						;
   8018	021356				45$:
   8019	021356	005037 	031710'			CLR	TO11FN		;CLEAR FUNCTION INDICATOR TO START Q MECHANISM
   8020	021362	000655 				BR	30$
   8021						;
   8022						.DSABL	LSB
QPRDTE	- DTE-20 DRIVER AND PRI	MACRO M1108  16-DEC-77 11:28  PAGE 115
DTE20 DRIVER -- DOORBELL SERVICE

   8024						.SBTTL	DTE20 DRIVER -- DOORBELL SERVICE
   8025
   8026					;
   8027					;	DOOR BELL INTERRUPT SERVICE
   8028					;
   8029	021364				DBLRNG:
   8030	021364	005060 	000010 			CLR	TNAD1(R0)	;READ STATUS WORD
   8031	021370	012702 	000002 			MOV	#STATUS-FORPRO,R2 ;FIND THE ADDRESS OF HIS STATUS-TO ME
   8032	021374	066302 	000010 			ADD	EHSM(R3),R2
   8033	021400	010260 	000012 			MOV	R2,TNAD2(R0)	;READ THAT STATUS WORD
   8034	021404					CALL	WFED		;WAIT FOR EXAMINE
	021404	004737 	044012'			JSR	PC,WFED
   8035	021410	103420 				BCS	10$
   8036	021412	016037 	000006 	031752'		MOV	DXWD1(R0),STATI	;SAVE STATUS
   8037	021420	016037 	000004 	031754'		MOV	DXWD2(R0),STATI+2
   8038	021426	016037 	000002 	031756'		MOV	DXWD3(R0),STATI+4
   8039	021434	005737 	031752'			TST	STATI		;VALID EXAMINE?
   8040	021440	001006 				BNE	DBLSTS		;MUST BE SET IF WORD IS NON-ZERO
   8041	021442					CALL	..DTSP		;GOOD-BYE PRIMARY PROTOCOL AND
	021442	004737 	044300'			JSR	PC,..DTSP
   8042	021446					CALL	..DTP2		;HELLO SECONDARY PROTOCOL.
	021446	004737 	044316'			JSR	PC,..DTP2
   8043	021452				10$:
   8044	021452				DBLXIT:				; +++012
   8045	021452	000137 	020216'			JMP	DTEXIT		;RETURN
   8046						;
   8047	021456				DBLSTS:
   8048	021456	032737 	000016 	031752'		BIT	#16,STATI	;DISASTER?(POWER FAIL/RELOAD)
   8049	021464	001431 				BEQ	10$		;NO -- ALL OK
   8050	021466	032737 	000004 	031752'		BIT	#LOAD11,STATI	;LOAD THE 10 REQUEST?
   8051	021474	001013 				BNE	5$		;YES -- BETTER RELOAD HIM
   8052	021476	032737 	000010 	031752'		BIT	#KLPWRF,STATI	; +++012 KL POWERFAIL??
   8053	021504	001404 				BEQ	1$		; +++012 NO -- DIE...
   8054	021506	052737 	004000 	031114'		BIS	#EF.PFR,.COMEF+2 ; +++012 YES -- NOTE THAT WE EXPECT IT
   8055	021514	000756 				BR	DBLXIT		; +++012 AND RETURN THROUGH "DTEXIT"
   8056						;			; +++012 IN ANTICIPATION OF OUR POWERFAIL
   8057	021516				1$:				; +++012
   8058	021516					.CRASH	UIE		;UNIMPLEMENTED FUNCTION
	021516	000004 				IOT
	021520	   125 	   111 	   105 		.ASCIZ	/UIE/
	021523	   000
   8059						;
   8060	021524				5$:
   8061	021524	052737 	000040 	031234'		BIS	#KS.TRR,.KLITK	;REQUEST RE-BOOT
   8062	021532	105237 	031230'			INCB	.NOERR		;SIGNAL ERROR BEING SERVED
   8063	021536					CALL	..DTSP		;TURN OFF ALL PROTOCOLS
	021536	004737 	044300'			JSR	PC,..DTSP
   8064	021542	105237 	031232'			INCB	.TKTN		;REQUEST DIAGNOSIS
   8065	021546	000501 				BR	35$		;AND CLEAR FLAGS
   8066						;
   8067	021550				10$:
   8068	021550	032737 	000002 	031754'		BIT	#TOIP,STATI+2	;INDIRECT IN PROGRESS
   8069	021556	001505 				BEQ	30$		;NO -- MUST BE NORMAL
   8070	021560	005737 	031710'			TST	TO11FN		;TO ELEVEN FUNCTION?
   8071	021564	100403 				BMI	20$		;YES -- ALL OK
   8072	021566					.CRASH	PT3		;OOPS PROTOCOL BROKEN
	021566	000004 				IOT
QPRDTE	- DTE-20 DRIVER AND PRI	MACRO M1108  16-DEC-77 11:28  PAGE 115-1
DTE20 DRIVER -- DOORBELL SERVICE

	021570	   120 	   124 	   063 		.ASCIZ	/PT3/
	021573	   000
   8073
   8074	021574				20$:
   8075	021574	062760 	000001 	000012 		ADD	#QSIZE-STATUS,TNAD2(R0) ;READ THE STATUS WORD
   8076	021602					CALL	WFED		;WAIT FOR EXAMINE
	021602	004737 	044012'			JSR	PC,WFED
   8077	021606	103461 				BCS	35$
   8078	021610	016001 	000002 			MOV	DXWD3(R0),R1 	;START TRANSFER
   8079	021614	010002 				MOV	R0,R2		;SAVE DTE20 ADDRESS
   8080	021616	062701 	000012 			ADD	#12,R1		;INCLUDE 12 BYTE HEADER
   8081	021622					CALL	..ALCB		;ALLOCATE A BUFFER
	021622	004737 	041642'			JSR	PC,..ALCB
   8082	021626	103003 				BCC	99$		;NO BUFFER OVERFLOW ALL OK
   8083	021630					.CRASH	BO2
	021630	000004 				IOT
	021632	   102 	   117 	   062 		.ASCIZ	/BO2/
	021635	   000
   8084
   8085	021636				99$:
   8086	021636	010037 	031704'			MOV	R0,TO11NP	;SAVE THE NODE POINTER
   8087	021642	005720 				TST	(R0)+		;STORE SOME STUFF IN IT
   8088	021644	010120 				MOV	R1,(R0)+	;SAVE THE BYTE COUNT OF THE BUFFER
   8089	021646	113720 	031710'			MOVB	TO11FN,(R0)+	;SAVBE THE FUNCTION CODE
   8090	021652	113720 	031706'			MOVB	TO11HD,(R0)+
   8091	021656	013720 	031712'			MOV	TO11DV,(R0)+	;SAVE THE DEVICE CODE
   8092	021662	013720 	031716'			MOV	TO11FW,(R0)+	;SAVE THE FIRST WORD
   8093	021666	016201 	000002 			MOV	DXWD3(R2),R1	;RESET THE BYTE COUNT
   8094	021672	005401 				NEG	R1		;MAKE COUNT NEGITIVE
   8095	021674	042701 	170000 			BIC	#170000,R1	;MASK OFF COUNT
   8096	021700	106001 				RORB	R1		;!!!WARNING THIS ASSUMES C BIT IS SET BY NEG R1!!!!^^
   8097	021702	032737 	000004 	031754'		BIT	#TOBM,STATI+2	;WORD MODE?
   8098	021710	001003 				BNE	25$		;YES -- DON'T SET BYTE FLAG
   8099	021712	106101 				ROLB	R1		;!!^^SEE ABOVE -- RESTORE TO BYTE COUNT!!
   8100	021714	052701 	020000 			BIS	#TO11BM,R1	;SET BYTE MODE
   8101	021720				25$:
   8102	021720	052701 	100000 			BIS	#IFLOP,R1 	;SET INTERRUPT BOTH
   8103	021724	010062 	000022 			MOV	R0,T11AD(R2)	;AND START XFER
   8104	021730	010162 	000016 			MOV	R1,T11BC(R2)	;SET BYTE COUNT
   8106	021734	010037 	031724'			MOV	R0,TO11AS
   8107	021740	010137 	031726'			MOV	R1,TO11BS
   8109	021744	005037 	031710'			CLR	TO11FN		;INDICATE NO FUNCTION IN PROGRESS
   8110	021750	010200 				MOV	R2,R0
   8111	021752				35$:
   8112	021752	012777 	002000 	007374 		MOV	#INT11C,@.PRSTA
   8113	021760	052737 	000001 	031736'		BIS	#TOIT,STSTT+2	;SET TO IT
   8114	021766	000137 	020602'			JMP	STTOIP		;RETURN
   8115						;
   8116	021772				30$:
   8117	021772	123737 	031756'	031740'		CMPB	STATI+4,TO10QC	;IS THIS THE CORRECT COUNT
   8118	022000	001764 				BEQ	35$		;YES -- CONTINUE PROCESSING
   8119	022002	052737 	000001 	031736'		BIS	#TOIT,STSTT+2	;SET QUEUE IN PROGRESS
   8120	022010	105237 	031740'			INCB	TO10QC		;INDICATE Q UPDATED
   8121	022014	123737 	031756'	031740'		CMPB	STATI+4,TO10QC	;COUNT CORRECT?
   8122	022022	001403 				BEQ	40$		;YES -- PROCEED
   8123	022024					.CRASH	ILQ		;NO -- DISASTER
	022024	000004 				IOT
QPRDTE	- DTE-20 DRIVER AND PRI	MACRO M1108  16-DEC-77 11:28  PAGE 115-2
DTE20 DRIVER -- DOORBELL SERVICE

	022026	   111 	   114 	   121 		.ASCIZ	/ILQ/
	022031	   000
   8124
   8125	022032				40$:
   8126	022032	012760 	010000 	000010 		MOV	#DEP,TNAD1(R0)	;SET UP TO DEPOSIT
   8127	022040	013760 	031734'	000006 		MOV	STSTT,DXWD1(R0)	;THE STATUS
   8128	022046	013760 	031736'	000004 		MOV	STSTT+2,DXWD2(R0)
   8129	022054	013760 	031740'	000002 		MOV	STSTT+4,DXWD3(R0)
   8130	022062	012702 	000002 			MOV	#STATUS-FORPRO,R2
   8131	022066	066302 	000004 			ADD	DMYN(R3),R2
   8132	022072	010260 	000012 			MOV	R2,TNAD2(R0)
   8133	022076					CALL	WFED		;START DEPOSIT
	022076	004737 	044012'			JSR	PC,WFED
   8134	022102	012777 	002000 	007244 		MOV	#INT11C,@.PRSTA
   8135	022110	012702 	000003 			MOV	#QSIZE-FORPRO,R2 ;FIND THE QUEUE SIZE
   8136	022114	066302 	000010 			ADD	EHSM(R3),R2	;EXAMINE HIS FOR ME
   8137	022120	005060 	000010 			CLR	TNAD1(R0)	;CLEAR DEPOSIT BIT
   8138	022124	010260 	000012 			MOV	R2,TNAD2(R0)
   8139	022130					CALL	WFED		;WAIT FOR EXAMINE/DEPOSIT
	022130	004737 	044012'			JSR	PC,WFED
   8140	022134	103412 				BCS	77$
   8141	022136	016037 	000002 	031746'		MOV	DXWD3(R0),EQSZ	;SET UP Q SIZE
   8142	022144	023727 	031746'	000144 		CMP	EQSZ,#100.	;LEGAL SIZE
   8143	022152	103403 				BLO	77$		;YES -- ALL OK
   8144	022154					.CRASH	PT4
	022154	000004 				IOT
	022156	   120 	   124 	   064 		.ASCIZ	/PT4/
	022161	   000
   8145									;THIS AUTOMATICALLY SETS UP EQSZ
   8146	022162				77$:
   8147	022162	000137 	021050'			JMP	STQUE		;AND PROCESS QUEUE
   8148						;
QPRDTE	- DTE-20 DRIVER AND PRI	MACRO M1108  16-DEC-77 11:28  PAGE 116
DTE20 DRIVER -- START TO TEN QUEUE

   8150						.SBTTL	DTE20 DRIVER -- START TO TEN QUEUE
   8151
   8152					;
   8153					;	STNTQ -- SUBROUTINE TO START NEXT TO TEN QUEUE
   8154					;
   8155					;	THIS ROUTINE MUST BE ENTERED WITH INTERRUPTS INHIBITTED
   8156					;
   8157	022166				STNTQ::
   8158	022166	010546 				MOV	R5,-(SP)	;;;SAVE REGISTERS
   8159	022170	010046 				MOV	R0,-(SP)
   8160	022172	013700 	031356'			MOV	.PRDTE,R0	;;;SET UP ADDRESS OF DTE20
   8161	022176	005060 	000006 			CLR	DXWD1(R0)
   8162	022202	005060 	000004 			CLR	DXWD2(R0)
   8163	022206	010405 				MOV	R4,R5		;;;SAVE THE NODE ADDRESS
   8164	022210	062705 	000006 			ADD	#6,R5		;;;MOVE OVER LISTHEAD AND NODE SIZE
   8166	022214	011537 	031730'			MOV	@R5,TO10SZ
   8168	022220	012560 	000002 			MOV	(R5)+,DXWD3(R0)	;;;SET THE QUEUE SIZE IN MY AREA TO HIM
   8169	022224	010560 	000020 			MOV	R5,T10AD(R0)	;;;SET UP THE TO10 ADDRESS
   8170	022230	012760 	000001 	000036 		MOV	#1,DAG3(R0)	;;;SET BYTE MODE
   8172	022236	010537 	031732'			MOV	R5,TO10AS
   8174	022242	013705 	031352'			MOV	.PRADR,R5	;;;FIND THE CORRECT DTE
   8175	022246	016505 	000004 			MOV	DMYN(R5),R5	;;;FIND THE OFFSET INTO MY AREA
   8176	022252	062705 	000003 			ADD	#QSIZE-FORPRO,R5 ;;; FIND Q SIZE
   8177	022256	012760 	010000 	000010 		MOV	#DEP,TNAD1(R0)	;;;SET UP TO DO DEPOSIT
   8178	022264	010560 	000012 			MOV	R5,TNAD2(R0)
   8179	022270					CALL	WFED
	022270	004737 	044012'			JSR	PC,WFED
   8180	022274	105237 	031741'			INCB	TO11QC		;;;INCREMENT THE COUNT
   8181	022300	013760 	031734'	000006 		MOV	STSTT,DXWD1(R0)
   8182	022306	013760 	031736'	000004 		MOV	STSTT+2,DXWD2(R0)
   8183	022314	013760 	031740'	000002 		MOV	STSTT+4,DXWD3(R0)
   8184	022322	062760 	177777 	000012 		ADD	#STATUS-QSIZE,TNAD2(R0)
   8185	022330					CALL	WFED		;;;EXAMINE/DEPOSIT
	022330	004737 	044012'			JSR	PC,WFED
   8186	022334	012777 	000400 	007012 		MOV	#TO10DB,@.PRSTA	;;;RING UP THE 10
   8187	022342	012600 				MOV	(SP)+,R0
   8188	022344	012605 				MOV	(SP)+,R5	;;;RESTORE REGISTERS
   8189	022346					RETURN
	022346	000207 				RTS	PC
TTYDRR	- GENERAL TTY HANDLER	MACRO M1108  16-DEC-77 11:28  PAGE 117
DTE20 DRIVER -- START TO TEN QUEUE

   8191						.TITLE	TTYDRR	- GENERAL TTY HANDLER
   8192	022350					IDENT$	10,17
						.IDENT	/010170/
   8193					;
   8194					;                             COPYRIGHT (C) 1975, 1978 BY
   8195					;                     DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
   8196					;
   8197					;       THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE  USED  AND  COPIED
   8198					;       ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
   8199					;       OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR ANY OTHER COPIES THERE-
   8200					;       OF  MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
   8201					;       NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
   8202					;
   8203					;       THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT
   8204					;       NOTICE  AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
   8205					;       CORPORATION.
   8206					;
   8207					;       DIGITAL ASSUMES NO RESPONSIBILITY FOR THE  USE  OR  RELIABILITY  OF  ITS
   8208					;       SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
   8209					;
   8210					; VERSION 10-17
   8211					;
   8212					; R. MC LEAN
   8213					;  7-APR-75
   8214					;
   8215					; TERMINAL DRIVER FOR DL11-AAND DL11-E LINE INTERFACES AND DH11 LINE MULTIPLEX
   8216					;
   8217					; MODIFICATIONS:
   8218					;
   8219					;	NO.	DATE		PROGRAMMER	PURPOSE
   8220					;	---	----		----------	-------
   8221					;	001	08-NOV-76	K. RETI		ADD SUPPRESS SEND-ALL
   8222					;				R. BELANGER	CODE.
   8223					;
   8224					;	002	16-NOV-76	R. BELANGER	FIX TYPO IN EDIT 001
   8225					;
   8226					;	003	16-NOV-76	T. PORCHER	ADD CODE TO ALLOW CTY
   8227					;				R. BELANGER	TO BE MOVED
   8228					;	004	29-NOV-76	A. PECKHAM	RELOCATED ACKAL FOR LPT
   8229					;	005	03-FEB-77	R. BELANGER	ADDED GENERALIZED DL11E
   8230					;						SERVICE AND NEW KLINIK
   8231					;						HOOKS AND HANDLES
   8232					;	006	07-MAR-77	A. PECKHAM	CLEAN UP "TT.OUT" MANAGEMENT
   8233					;	007	01-JUL-77	R. BELANGER	FIX BUG IN INTERNAL I/O INITIALIZATION
   8234					;	008	14-JUL-77	R. BELANGER	ADD AUTO-BAUD SUPPORT
   8235					;	009	10-AUG-77	R. BELANGER	FIX DL11E INPUT TO IGNORE
   8236					;						CHARACTERS WITH FRAMING ERRORS
   8237					;						(DN20 RUNNING OPEN ON POWERFAIL)
   8238					;	010	02-SEP-77	R. BELANGER	XON/XOFF BUG FIX
   8239					;	011	06-SEP-77	R. BELANGER	SHORTEN TIMEOUT COUNT TO 4 SECONDS
   8240					;	012	28-OCT-77	R. BELANGER	IGNORE DH-11 CHARACTERS WITH FRMING ERRORS
   8241					;	013	02-NOV-77	R. BELANGER	FIX LONG SENDALLS
TTYDRR	- GENERAL TTY HANDLER	MACRO M1108  16-DEC-77 11:28  PAGE 118
DTE20 DRIVER -- START TO TEN QUEUE

   8243					; MACRO LIBRARY CALLS
   8244					;
   8246						.MCALL	.STKM,WTLO$,CLEF$,CALL,RETURN,WSIG$S,.INH6,.ENB6,DIR$,RQST$
   8247						.MCALL	EHSG$,DMYG$,$DEF
   8248	022350					$DEF
   8250					;
   8251					; EQUATED SYMBOLS
   8252					;
   8253					; TERMINAL CONTROL BLOCK OFFSET DEFINITIONS
   8254					;
   8255					; FOR USE ONLY WITH CTY
   8256					;
   8257		000000 				STATS=0			;TERMINAL STATUS WORD (MUST BE ZERO)
   8258		000002 				STRBF=2			;CURRENT BUFFER ADDRESS (INPUT)
   8259		000004 				RMBYT=4			;REMAINING BYTES IN BUFFER (INPUT)
   8260		000005 				FNBYT=5			;TERMINAL BYTE (INPUT)
   8261		000006 				CURBF=6			;STARTING BUFFER ADDRESS (INPUT)
   8262		000010 				MECNT=10		;MULTI-ECHO BYTE COUNT
   8263		000011 				FLBYT=11		;FILL BYTE
   8264		000012 				MEBUF=12		;MULTI-ECHO BUFFER ADDRESS
   8265		000014 				MBUFR=14		;DYNAMIC MULTI-ECHO BUFFER
   8266		000016 				HORPS=16		;HORIZONTAL POSITION OF CARRIAGE
   8267		000020 				DHBUF=20		;DH CHARACTER BUFFER
   8268					;
   8269					; TERMINAL STATUS WORD BIT DEFINITIONS
   8270					;
   8271		100000 				MODE=100000		;MODE OF BUSY TERMINAL (0=INPUT 1=OUTPUT)
   8272		074000 				LFCT=074000		;UNPROCESSED LINE FEED COUNT FIELD
   8273		004000 				LFBT=004000		;UNPROCESSED LINE FEED ADD/SUB BIT
   8274		002000 				CRTY=002000		;CARRIAGE CONTROL AT END OF LINE (1=YES)
   8275		001000 				CRJT=001000		;CARRIAGE RETURN JUST TYPED (1=YES)
   8276		000400 				EOLS=000400		;END OF LINE SEEN (1=YES)
   8277		000040 				CTLO=000040		;OUTPUT DISABLED (1=YES)
   8278		000020 				RUBP=000020		;RUBOUT SEQUENCE IN PROGRESS (1=YES)
   8279		000017 				FLCT=000017		;UNPROCESSED FILL COUNT FIELD
   8280		000001 				FLBT=000001		;UNPROCESSED FILL COUNT BIT
   8281					;
   8282					; TERMINAL STATUS OFFSETS FOR ALL TTY'S
   8283					;
   8284		000000 				THRED==0		;OUTPUT THREAD WORD POINTER (MUST BE ZERO)
   8285		000002 				TTYEXP==2		;EXTERNAL PAGE ADDRESS
   8286		000004 				STSW0==4		;STATUS WORD 0 (SAME AS DH LINE STATUS WORD)
   8287									; HOLDS LINE SPEED FOR DH11'S
   8288									; HOLDS INPUT BLOCK FLAG FOR DL11'S
   8289		000006 				STSW1==6		;STATUS WORD 1 -- SPECIFIC CHARACTERISTICS
   8290					;
   8291					;	STSW1 BIT DEFINITIONS
   8292					;
   8293		140000 				TT.SND==140000		; +001 INDEX OF NEXT SEND-ALL TO DO FOR THIS LINE
   8294		040000 				TT.SNI==040000		; +001 TO INCREMENT SEND-ALL INDEX
   8295					;		020000		; UNUSED STATUS WORD BIT
   8296		010000 				TT.ABL==010000		; +++008 LINE IS AN AUTO-BAUD LINE
   8297		004000 				TT.NSA==004000		; +001 SUPPRESS SEND-ALLS FOR THIS LINE
   8298		002000 				TT.RIP==002000		;TTY REMOTE IN PROGRESS
   8299		001000 				TT.SIP==001000		;TTY SEND ALL IN PROGRESS
   8300		000400 				TT.CTY==000400		;TTY IS CONSOLE TTY
   8301		000200 				TT.XOF==000200		; +++010 TTY IS X'D OFF (WAS "TT.BSY")
TTYDRR	- GENERAL TTY HANDLER	MACRO M1108  16-DEC-77 11:28  PAGE 118-1
DTE20 DRIVER -- START TO TEN QUEUE

   8302									; +++010 !!! MUST BE SIGN BIT OF LOW BYTE !!!!
   8303		000100 				TT.RMT==000100		;REMOTE FLAG
   8304		000040 				TT.VT5==000040		;VT05 FLAG
   8305		000020 				TT.L3S==000020		;LA30S FLAG
   8306		000010 				TT.ABW==000010		; +++008 LINE IS IN AUTO-BAUD WAIT
   8307		000004 				TT.CRW==000004		;WAITING FOR CARRIER FLAG
   8308		000002 				TT.ECH==000002		;ECHO FLAG
   8309		000001 				TT.OUT==000001		;TTY OUTPUT FLAG
   8310					;
   8311					;	THREAD ENTRIES ARE IN THE FOLLOWING FORMAT
   8312					;
   8313		000000 				T.HRED==0		;THREAD WORD (MUST BE ZERO)
   8314		000002 				T.HBCT==2		;BYTE COUNT OF THIS BUFFER
   8315		000004 				T.HCAD==4		;CURRENT ADDRESS OF THIS POINTER
   8316		000006 				T.HCBC==6		;CURRENT BYTE COUNT OF CARS LEFT IN BUFFER
   8317		000007 				T.HFCN==7		;FUNCTION CODE
   8318		000010 				T.HHDS==10		;SIZE OF THIS HEADER
   8319					;
   8320					;	DL11E RCSR BITS
   8321					;
   8322		100000 				DL.DSC==BIT15		; +++005 DL11E DATASET STATUS CHANGE
   8323		040000 				DL.RNG==BIT14		; +++005 DL11E RING INDICATOR
   8324		020000 				DL.CTS==BIT13		; +++005 DL11E CLEAR TO SEND
   8325		010000 				DL.CAR==BIT12		; +++005 DL11E CARRIER DETECT
   8326		004000 				DL.RAC==BIT11		; +++005 DL11E RECIEVER ACTIVE
   8327		002000 				DL.SRD==BIT10		; +++005 DL11E SECONDARY RECIEVED DATA
   8328		000200 				DL.RDN==BIT7		; +++005 DL11E RECIVER DONE
   8329		000100 				DL.REN==BIT6		; +++005 DL11E RECIEVER INTERRUPT ENABLE
   8330		000040 				DL.DEN==BIT5		; +++005 DL11E DATASET INTERRUPT ENABLE
   8331		000010 				DL.STD==BIT3		; +++005 DL11E SECONDARY TRANSMITTED DATA
   8332		000004 				DL.RTS==BIT2		; +++005 DL11E REQUEST TO SEND
   8333		000002 				DL.DTR==BIT1		; +++005 DL11E DATA TERMINAL READY
   8334		000001 				DL.RDE==BIT0		; +++005 DL11E READER ENABLE
   8335		001420 				DL.UNA==BIT9!BIT8!BIT4	; +++005 DL11E UNASSIGNED
   8336					;
   8337					;	DL11E RBUF BITS
   8338					;
   8339		020000 				DL.FER==BIT13		; +++009 DL11 FRAMING ERROR
   8340					;
   8341					;	DL11E XCSR BITS
   8342					;
   8343		000100 				DL.XEN==BIT6		; +++005 DL11E XMTR ENABLE
   8344					;
   8345					;	DH11 NRCR BITS
   8346					;
   8347		020000 				DH.FER==BIT13		; +++012 DH11 FRAMING ERROR
   8348
   8349	022350				TTYHD::
   8350	022350					.STKM	0,0,0,0,0,0,0,TTINI,174000,TTYSP
	022416	000000 	000000 	000000 		.WORD	0,0,0,0
	022424	000000
	022444	174000 	023062'	022630'		.WORD	174000,TTINI,TTYSP
	022500	000005 				.WORD	5
	022502	037202'				.WORD	TTPEN
	022504	000000 				.WORD	0
	022506	000000 				.WORD	0
	022510	000000 				.WORD	0
TTYDRR	- GENERAL TTY HANDLER	MACRO M1108  16-DEC-77 11:28  PAGE 118-2
DTE20 DRIVER -- START TO TEN QUEUE

	022512	000000 				.WORD	0
	022514	000000 				.WORD	0
	022516	000000 				.WORD	0
	022520	000000 				.WORD	0
	022522	000000 				.WORD	0
	022524	000000 				.WORD	0
	022526	000000 				.WORD	0
	022630	000000 				.WORD	0
	022632	000000 				.WORD	0
	022634	000000 				.WORD	0
	022636	000000 				.WORD	0
	022640	000000 				.WORD	0
	022642	000000 				.WORD	0
	022644	023062'				.WORD	TTINI
	022646	174000 				.WORD	174000
   8351					;
   8352					; LOCAL DATA
   8353					;
   8354	022650				DMTMP:
   8355						.BLKW	1		;TEMP STORAGE FOR CONTROLLER NUMBER
   8356	022652				DLTMP:
   8357						.BLKW	1		;TEMP STORAGE FOR CONTROLLER NUMBER
   8358	022654				DHTMP:
   8359						.BLKW	1		;TEMP STORAGE FOR CONTROLLER NUMBER (USED ONLY FOR OUTPUT)
   8360	022656				DHSTSV:
   8361	022656	000000 				.WORD	0		;DH TABLE SAVE POINTER
   8362	022660				CTYSTS:
   8363		000020 				.REPT	16.		;CONSOLE TTY STATUS BLOCK
   8364						.WORD	0
   8365						.ENDR
	022660	000000 				.WORD	0
	022662	000000 				.WORD	0
	022664	000000 				.WORD	0
	022666	000000 				.WORD	0
	022670	000000 				.WORD	0
	022672	000000 				.WORD	0
	022674	000000 				.WORD	0
	022676	000000 				.WORD	0
	022700	000000 				.WORD	0
	022702	000000 				.WORD	0
	022704	000000 				.WORD	0
	022706	000000 				.WORD	0
	022710	000000 				.WORD	0
	022712	000000 				.WORD	0
	022714	000000 				.WORD	0
	022716	000000 				.WORD	0
   8366	022720				CNT:
   8367	022720	000000 				.WORD	0
   8368	022722				BYCNT:
   8369	022722	000000 				.WORD	0
   8370	022724				CRADR:
   8371	022724	000000 				.WORD	0
   8372	022726				PKT:
   8373	022726	000000 				.WORD	0		;I/O PACKET ADDRESS
   8374					;
   8375					; CONTROL OUTPUT MESSAGES
   8376					;
TTYDRR	- GENERAL TTY HANDLER	MACRO M1108  16-DEC-77 11:28  PAGE 118-3
DTE20 DRIVER -- START TO TEN QUEUE

   8377	022730				CTRLC:
   8378	022730	   136 	   103 	   015 		.ASCII	/^C/<15><12>
	022733	   012
   8379	022734				CTRLU:
   8380	022734	   136 	   125 	   015 		.ASCII	/^U/<15><12>
	022737	   012
   8381	022740				CTRLZ:
   8382	022740	   136 	   132 	   015 		.ASCII	/^Z/<15><12>
	022743	   012
   8383					;
   8384					; LA30S CARRIAGE RETURN FILL TABLE
   8385					;
   8386	022744				FILTB:
   8387	022744	   004 				.BYTE	4.		;0-8.
   8388	022745	   010 				.BYTE	8.		;9.-16.
   8389	022746	   006 				.BYTE	6.		;17.-24.
   8390	022747	   003 				.BYTE	3.		;25.-32.
   8391	022750	   000 				.BYTE	0.		;33.-40.
   8392	022751	   002 				.BYTE	2.		;41.-48.
   8393	022752	   004 				.BYTE	4.		;49.-56.
   8394	022753	   006 				.BYTE	6.		;57.-64.
   8395	022754	   010 				.BYTE	8.		;65.-72.
   8396	022755	   012 				.BYTE	10.		;73.-80.
   8397
   8398						.ENABL	LSB
   8399	022756				TTWLO:				; +++008
   8400	022756					WTLO$	1,EF.NIR!EF.IOD!EF.TMO!EF.RQM!EF.RKR!EF.RKH!EF.RSS
	022756	   053 	   003 			.BYTE	43.,3
	022760	000001 				.WORD	1
	022762	007330 				.WORD	EF.NIR!EF.IOD!EF.TMO!EF.RQM!EF.RKR!EF.RKH!EF.RSS
   8401	022764				EXKAL:
   8402	022764					EHSG$	0,PSWW1,KPAL0
	022764	002411 				.WORD	400*5.+DR.DTE
	022766	000010 				.WORD	DF.EHG
	022770	000005 				.WORD	PSWW1
	022772	031760'				.WORD	KPAL0
	022774	000000 				.WORD	0
   8403	022776				DPKAL:
   8404	022776					DMYG$	PSWW1,KPAL1
	022776	002011 				.WORD	400*4.+DR.DTE
	023000	000004 				.WORD	DF.DMG
	023002	000005 				.WORD	PSWW1
	023004	031770'				.WORD	KPAL1
   8405	023006				TMOCNT:
   8406	023006	000012 				.WORD	10.		; +++011 TIME OUT COUNTER
   8407	023010				RQMCR:
   8408	023010					RQST$	PARSER,,249.
	023010	   013 	   007 			.BYTE	11.,7
	023012	062072 	073632 			.RAD50	/PARSER/
	023016	000000 	000000 			.WORD	0,0
	023022	000371 				.WORD	249.
	023024	   000 	   000 			.BYTE	,
   8409	023026				RQKLR:
   8410	023026					RQST$	KLRING,,10
	023026	   013 	   007 			.BYTE	11.,7
	023030	043262 	035167 			.RAD50	/KLRING/
	023034	000000 	000000 			.WORD	0,0
TTYDRR	- GENERAL TTY HANDLER	MACRO M1108  16-DEC-77 11:28  PAGE 118-4
DTE20 DRIVER -- START TO TEN QUEUE

	023040	000010 				.WORD	10
	023042	   000 	   000 			.BYTE	,
   8411	023044				RQKLD:				; +++005
   8412	023044					RQST$	KLDISC,,10
	023044	   013 	   007 			.BYTE	11.,7
	023046	043244 	035473 			.RAD50	/KLDISC/
	023052	000000 	000000 			.WORD	0,0
	023056	000010 				.WORD	10
	023060	   000 	   000 			.BYTE	,
TTYDRR	- GENERAL TTY HANDLER	MACRO M1108  16-DEC-77 11:28  PAGE 119
TTY DRIVER -- TTINI (TTY QUEUE SERVICE)

   8414						.SBTTL	TTY DRIVER -- TTINI (TTY QUEUE SERVICE)
   8415
   8416	023062				TTINI::
   8417	023062					DIR$	#TTWLO		;WAIT FOR TTY
	023062	012746 	022756'			MOV	#TTWLO,-(SP)
	023066	104375 				EMT	375
   8418	023070					.INH6			;;;INHIBIT TASK SWITCHING
	023070	013746 	177776 			MOV	@#PS,-(SP)
	023074	112737 	000300 	177776 		MOVB	#300,@#PS
   8419	023102	013705 	031110'			MOV	.CRTSK,R5	;;;FIND THE CURRENT TASK POINTER
   8420	023106	016504 	000020 			MOV	A.EF(R5),R4	;;;FIND EVENT FLAGS
   8421	023112	005065 	000020 			CLR	A.EF(R5)	;;;CLEAR EVENT FLAGS
   8422	023116					.ENB6			;ENABLE TASK SWITCHING
	023116	012637 	177776 			MOV	(SP)+,@#PS
   8423	023122	032704 	000200 			BIT	#EF.RQM,R4	;REQUEST MCR?
   8424	023126	001403 				BEQ	5$		;NO -- MUST BE SOMETHING ELSE
   8425	023130					DIR$	#RQMCR		;YES -- REQUEST PARSER
	023130	012746 	023010'			MOV	#RQMCR,-(SP)
	023134	104375 				EMT	375
   8426	023136				5$:
   8427	023136	032704 	001000 			BIT	#EF.RKR,R4	; +++005 KLINIK RING INTERRUPT?
   8428	023142	001403 				BEQ	7$		; +++005 NO -- FORGET IT
   8429	023144					DIR$	#RQKLR		;YES -- REQUEST KLR
	023144	012746 	023026'			MOV	#RQKLR,-(SP)
	023150	104375 				EMT	375
   8430	023152				7$:				; +++005
   8431	023152	032704 	002000 			BIT	#EF.RKH,R4	; +++005 KLINIK HANGUP?
   8432	023156	001403 				BEQ	10$		; +++005 NO -- GO ON
   8433	023160					DIR$	#RQKLD		; +++005 YES -- REQUEST KLD
	023160	012746 	023044'			MOV	#RQKLD,-(SP)
	023164	104375 				EMT	375
   8434	023166				10$:
   8435	023166	032704 	004000 			BIT	#EF.RSS,R4	; +++008 AUTO-BAUD REQUEST??
   8436	023172	001412 				BEQ	12$		; +++008 NO -- GO ON
   8437	023174	005737 	031366'			TST	.ABFLG		; +++008 YES -- INTERLOCK SET??
   8438	023200	001007 				BNE	12$		; +++008 YES -- GO ON
   8439	023202	013737 	031364'	031366'		MOV	.ABCNT,.ABFLG	; +++008 NO -- REAL REQUEST??
   8440	023210	001403 				BEQ	12$		; +++008 NO -- IGNORE IT
   8441	023212					DIR$	#.RQSPD		; +++008 YES -- REQUEST "SETSPD"
	023212	012746 	016672'			MOV	#.RQSPD,-(SP)
	023216	104375 				EMT	375
   8442	023220				12$:				; +++008
   8443	023220	032704 	000020 			BIT	#EF.IOD,R4	;I/O DONE?
   8444	023224	001402 				BEQ	15$
   8445	023226	000137 	023734'			JMP	50$		;YES -- HANDLE THAT FIRST
   8446						;
TTYDRR	- GENERAL TTY HANDLER	MACRO M1108  16-DEC-77 11:28  PAGE 120
TTY DRIVER -- TIMEOUT SERVICE

   8448						.SBTTL	TTY DRIVER -- TIMEOUT SERVICE
   8449
   8450	023232				15$:
   8451	023232	032704 	000100 			BIT	#EF.TMO,R4	;TIMEOUT?
   8452	023236	001544 				BEQ	45$		;NO -- CONTINUE
   8453	023240	005337 	023006'			DEC	TMOCNT		; +++011 ONLY DO TIMEOUT EVERY 10 SEC
   8454	023244	001064 				BNE	20$
   8455	023246	012737 	000012 	023006'		MOV	#10.,TMOCNT	; +++011 RESET TIMEOUT COUNT
   8456	023254					.INH6			;DISALLOW INTERRUPTS
	023254	013746 	177776 			MOV	@#PS,-(SP)
	023260	112737 	000300 	177776 		MOVB	#300,@#PS
   8458	023266					CALL	.DMTMO		;;;CHECK FOR TIMEOUT ON DM11-BBS
	023266	004737 	030414'			JSR	PC,.DMTMO
   8460	023272					CALL	.DLTMO		;;;DL11-E ALSO
	023272	004737 	030142'			JSR	PC,.DLTMO
   8461	023276					.ENB6			;;; ALLOW INTERRUPTS
	023276	012637 	177776 			MOV	(SP)+,@#PS
   8463	023302	005737 	031302'			TST	.ACKAL		;ACK ALL REQUESTED??
   8464	023306	001443 				BEQ	20$		;NO -- CONTINUE
   8465	023310	005037 	031302'			CLR	.ACKAL		;YES -- CLEAR FLAG
   8466	023314	012703 	000005 			MOV	#D.CLPT,R3	; +004 SET LINE ALLOCATION ON LPT
   8467	023320	012704 	000214 			MOV	#140.,R4	; +004 140 BYTES
   8468	023324	012701 	000023 			MOV	#BC.SLA,R1	; +004 SET LINE ALLOCATION
   8469	023330					CALL	..STFC
	023330	004737 	043252'			JSR	PC,..STFC
   8470	023334	062704 	000400 			ADD	#400,R4		; +004 ALSO LPT1
   8471	023340					CALL	..STFC
	023340	004737 	043252'			JSR	PC,..STFC
   8472	023344	012701 	000025 			MOV	#BC.AKA,R1	;SEND ACK ALL
   8473	023350	012703 	000007 			MOV	#7,R3		;RANDOM FUNCTION CODE (ZERO A BAD IDEA HERE)
   8474									;DON'T CARE ABOUT FIRST WORD SENT
   8475	023354					CALL	..STFC		;START ACK FUNCTION
	023354	004737 	043252'			JSR	PC,..STFC
   8476	023360	005737 	031244'			TST	.DATE3		;REALLY DO IT?
   8477	023364	001414 				BEQ	20$		;NOPE -- FORGET IT
   8478	023366	012700 	031242'			MOV	#.CLKSW,R0	;RETURN THE TIME OF DAY TO THE 10
   8479	023372	012701 	100012 			MOV	#100000+BC.HTD,R1
   8480	023376	005002 				CLR	R2
   8481	023400	012703 	000007 			MOV	#D.CCLK,R3
   8482	023404	012710 	000014 			MOV	#14,@R0		;14 BYTES
   8483	023410					CALL	..STIN		;YES -- THEN START INDIRECT FUNCTION
	023410	004737 	043442'			JSR	PC,..STIN
   8484	023414	005010 				CLR	(R0)		; +++005 RESET CLOCK FLAG
TTYDRR	- GENERAL TTY HANDLER	MACRO M1108  16-DEC-77 11:28  PAGE 121
TTY DRIVER -- KL KEEP ALIVE SERVICE

   8486						.SBTTL	TTY DRIVER -- KL KEEP ALIVE SERVICE
   8487					;
   8488					;	KEEP ALIVE SERVICE IS DONE HERE --
   8489					;	IT IS DONE HERE TO ELIMINATE THE OVERHEAD
   8490					;	OF A SEPARATE TASK SINCE TTY MUST DO TIMEOUT ANYWAY
   8491					;	AND IT IS JUST AS CONVENIENT TO DO IT HERE
   8492					;	AS IN A SEP TASK
   8493					;
   8494	023416				20$:
   8495	023416	032737 	040000 	031114'		BIT	#EF.PR1,.COMEF+2 ;+ IF PRIMARY PROTOCOL
   8496	023424	001007 				BNE	25$		;+ IS NOT RUNNING THEN
   8497	023426	012737 	000005 	031776'		MOV	#.KALSC,.KPAC	;+ RESET THE COUNTER AND
   8498	023434	013737 	031760'	031766'		MOV	KPAL0,OKPAL0	;+ VALUE FOR PROTOCOL RESTART.
   8499	023442	000442 				BR	40$		;+
   8500						;
   8501	023444				25$:
   8502	023444	005737 	031230'			TST	.NOERR		;+ IF EVERYTHING IS COZY
   8503	023450	001024 				BNE	30$		;+ THEN
   8504	023452					DIR$	#EXKAL		;GET 10 KEEP ALIVE
	023452	012746 	022764'			MOV	#EXKAL,-(SP)
	023456	104375 				EMT	375
   8505	023460	103433 				BCS	40$		;TEN STOPPED
   8506	023462	123737 	031760'	031766'		CMPB	KPAL0,OKPAL0	;ANY CHANGE?
   8507	023470	001014 				BNE	30$
   8508	023472	005337 	031776'			DEC	.KPAC		;NO OF SAME READINGS
   8509	023476	003017 				BGT	35$		;STILL OKAY
   8510	023500	052737 	000020 	031234'		BIS	#KS.CST,.KLITK	;ADD KEEP ALIVE STOPPED
   8511	023506	105237 	031230'			INCB	.NOERR		;WE ARE SERVICING THE ERROR
   8512	023512					CALL	..DTSP		;TURN OFF PROTOCOLS
	023512	004737 	044300'			JSR	PC,..DTSP
   8513	023516	105237 	031232'			INCB	.TKTN		;REQUEST OPERATOR NOTIFICATION
   8514	023522				30$:
   8515	023522	012737 	000005 	031776'		MOV	#.KALSC,.KPAC	;.KALSC CHANCES
   8516	023530	013737 	031760'	031766'		MOV	KPAL0,OKPAL0	;SAVE IT
   8517					;
   8518					;INC  11S KEEP ALIVE
   8519					;
   8520	023536				35$:
   8521	023536	105237 	031770'			INCB	KPAL1
   8522	023542					DIR$	#DPKAL		;SEND IT
	023542	012746 	022776'			MOV	#DPKAL,-(SP)
	023546	104375 				EMT	375
   8523	023550				40$:
TTYDRR	- GENERAL TTY HANDLER	MACRO M1108  16-DEC-77 11:28  PAGE 122
TTY DRIVER -- CTY SERVICE

   8526						.SBTTL	TTY DRIVER -- CTY SERVICE
   8527
   8528	023550				45$:
   8529	023550	005737 	022726'			TST	PKT		;CHECK PACKET
   8530	023554	001162 				BNE	TTINO		;PACKET IN USE -- WAIT
   8531	023556				DQNXT:
   8532	023556					.INH6			; +++007 DISALLOW INTERRUPTS
	023556	013746 	177776 			MOV	@#PS,-(SP)
	023562	112737 	000300 	177776 		MOVB	#300,@#PS
   8533	023570	105737 	031342'			TSTB	.KLNSW+0	;;; +++005 IS KLINIK ACTIVE??
   8534	023574	003406 				BLE	46$		;;; +++005 NO -- GO ON
   8535	023576	013700 	031222'			MOV	KLNPTR,R0	;;; +++005 KLINIK LINE POINTER TO R0
   8536	023602	032760 	000001 	000006 		BIT	#TT.OUT,STSW1(R0) ;;; +++005 IS IT BUSY??
   8537	023610	001142 				BNE	TTINX		;;; +++005 YES -- WAIT A WHILE
   8538	023612				46$:				;;; +++005
   8539	023612	013700 	031220'			MOV	CTYPTR,R0	;;; +++005 CHECK AND WAIT FOR I/O FROM 10 TO STOP
   8540	023616	032760 	000001 	000006 		BIT	#TT.OUT,STSW1(R0) ;;; +++005 OUTPUT IN PROGRESS?
   8541	023624	001134 				BNE	TTINX		;;; +++005
   8542	023626	012700 	052124 			MOV	#"TT,R0		;;; +++005 SET UP TO DEQUEUE FROM TTY LUN
   8543	023632					CALL	..DQRN		;;; +++005 GET AN I/O PACKET TO PROCESS
	023632	004737 	040656'			JSR	PC,..DQRN
   8544	023636	103527 				BCS	TTINX		;;; +++005 IF CC-C IS SET CONTROLLER BUSY OR NO REQUEST
   8545	023640	005237 	031216'			INC	.TTP11		;;; +++007 SET PDP11 I/O IN PROGRESS
   8546	023644					.ENB6			;;; +++007 ALLOW INTERRUPTS
	023644	012637 	177776 			MOV	(SP)+,@#PS
   8547					;
   8548					; THE FOLLOWING ARGUMENTS ARE RETURNED BY ..DQRN:
   8549					;
   8550					;	R0 -- LOGICAL UNIT NUMBER
   8551					;	R1 -- ADDRESS OF THE I/O REQUEST PACKET.
   8552					;
   8553	023650	010137 	022726'			MOV	R1,PKT		;SAVE PCAKET ADDRESS
   8554	023654	010337 	022722'			MOV	R3,BYCNT 	;SAVE THE BYTE COUNT
   8555	023660	010337 	022720'			MOV	R3,CNT		;SAVE IT HERE ALSO
   8556	023664	010537 	022724'			MOV	R5,CRADR	;SAVE CURRENT ADDRESS
   8557	023670	013705 	031220'			MOV	CTYPTR,R5	;FIND THE CTY TERMINAL
   8558	023674	012703 	022660'			MOV	#CTYSTS,R3	;FIND TERMINAL STATUS WORD
   8559	023700	122761 	000001 	000015 		CMPB	#IO.WLB/256.,R.FC+1(R1) ;WRITE LOGICAL FUNCTION?
   8560	023706	001451 				BEQ	70$		;IF EQ YES
   8561	023710	042713 	000040 			BIC	#CTLO,@R3	;ENABLE OUTPUT
   8562	023714	122761 	000002 	000015 		CMPB	#IO.RLB/256.,R.FC+1(R1) ;READ LOGICAL FUNCTION?
   8563	023722	001422 				BEQ	60$		;YES -- PROCESS REQUEST
   8564	023724	012703 	000001 			MOV	#IS.SUC,R3	;SET UP THE ERROR STATUS
   8565	023730	005004 				CLR	R4		;INDICATE NO TRANSFER
   8566	023732	000407 				BR	55$		;TRY AGAIN
   8567						;
   8568					;
   8569					;	I/O DONE SERVICE
   8570					;
   8571	023734				50$:
   8572	023734	013701 	022726'			MOV	PKT,R1		;FIND THE I/O PACKET
   8573	023740	001706 				BEQ	DQNXT
   8574	023742	016104 	000026 			MOV	R.PB+2(R1),R4	;SET THE COUNT XFERED
   8575	023746	013703 	022724'			MOV	CRADR,R3	;RETURN THE STATUS
   8576	023752				55$:
   8577	023752					CALL	..IODN		;CALL I/O DONE OUTINE
	023752	004737 	040534'			JSR	PC,..IODN
TTYDRR	- GENERAL TTY HANDLER	MACRO M1108  16-DEC-77 11:28  PAGE 122-1
TTY DRIVER -- CTY SERVICE

   8578	023756	005337 	031216'			DEC	.TTP11		;PDP11 INPUT NOT IN PROGREESS
   8579	023762	005037 	022726'			CLR	PKT		;SET NO PACKET IN USE
   8580	023766	000673 				BR	DQNXT		;AND WAIT FOR NEXT JOB
   8581						;
   8582					;
   8583					; REQUEST IS A SOLICITED INPUT REQUEST-GET A BUFFER FOR INPUT
   8584					;
   8585	023770				60$:				;SET SOLICITED INPUT FLAG
   8586	023770	042713 	102400 			BIC	#MODE!EOLS!CRTY,@R3
   8587	023774	013763 	022724'	000006 		MOV	CRADR,CURBF(R3) ;SET RANDOM INPUT VALUES
   8588	024002	013763 	022722'	000004 		MOV	BYCNT,RMBYT(R3)
   8589	024010	013763 	022724'	000002 		MOV	CRADR,STRBF(R3)
   8590	024016	032713 	001000 			BIT	#CRJT,@R3	;CARRIAGE RETURN JUST TYPED?
   8591	024022	001426 				BEQ	80$		;NO -- NO CARRAGE CONTROL NECESSARY
   8592	024024				65$:
   8593	024024	062713 	004000 			ADD	#LFBT,@R3	;FORCE LINE FEED
   8594	024030	000423 				BR	80$		;AND FORCE IT OUT
   8595						;
   8596					;
   8597					; REQUEST IS AN OUTPUT REQUEST-SET UP CARRIAGE CONTROL FLAGS
   8598					;
   8599	024032				70$:
   8600	024032	005737 	037216'			TST	TTPEN+U.AF	;CHECK FOR ATTACHED
   8601	024036	001002 				BNE	75$		;YES -- DON'T CLEAR STATUS FLAGS
   8602	024040	042713 	000040 			BIC	#CTLO,@R3	;ENABLE OUTPUT
   8603	024044				75$:
   8604	024044	042713 	076437 			BIC	#LFCT!CRTY!EOLS!RUBP!FLCT,@R3 ;CLEAR STATUS WORD
   8605	024050	052713 	100000 			BIS	#MODE,@R3	;SET OUTPUT MODE
   8606	024054	005761 	000030 			TST	R.PB+4(R1)	;CHECK FOR CARRAGE CONTROL
   8607	024060	001407 				BEQ	80$		;NO -- NOTHING TO DO
   8608	024062	122761 	000044 	000030 		CMPB	#'$,R.PB+4(R1)	;$?
   8609	024070	001755 				BEQ	65$		;YES -- DON'T FAKE CARRAGE CONTROL HERE
   8610	024072	052713 	002000 			BIS	#CRTY,@R3	;YES -- IT WILL ALWAYS BE ASSUMED ' '
   8611	024076	000752 				BR	65$		;OUTPUT CRLF
   8612						;
   8613	024100				80$:
   8614	024100					.INH6			; +++006 DISALLOW INTERRUPTS
	024100	013746 	177776 			MOV	@#PS,-(SP)
	024104	112737 	000300 	177776 		MOVB	#300,@#PS
   8615	024112					CALL	OUTPT		;;; +++006 START OUTPUT
	024112	004737 	025010'			JSR	PC,OUTPT
   8616	024116				TTINX:				;;; +++007
   8617	024116					.ENB6			;;; +++006 ALLOW  INTERRUPTS
	024116	012637 	177776 			MOV	(SP)+,@#PS
   8618	024122				TTINO:
   8619	024122	000137 	023062'			JMP	TTINI		;MAKE SURE OUTPUT IS ACTIVE
   8620						;
   8621						.DSABL	LSB
TTYDRR	- GENERAL TTY HANDLER	MACRO M1108  16-DEC-77 11:28  PAGE 123
TTY DRIVER -- $DHOUT (DH11 OUTPUT INTERRUPT)

   8623						.SBTTL	TTY DRIVER -- $DHOUT (DH11 OUTPUT INTERRUPT)
   8624					;
   8625					;	DHOUT -- DH11 TERMINAL MUX OUT INTERRUPTS
   8626					;
   8627	024126				$DHOUT::			;;;REF LABEL
   8628	024126	013737 	177776 	022654'		MOV	@#PS,DHTMP	;;;SAVE CONTROLLER NUMBER
   8629	024134					CALL	R3,DHSAV	;;;SAVE R3 AND SETUP R3 AND R4
	024134	004337 	027232'			JSR	R3,DHSAV
   8630	024140				10$:
   8631	024140	042714 	101077 			BIC	#101077,@R4	;;;CLEAR CURRENT UNIT AND TRANSMIT INT
   8632	024144				20$:
   8633	024144	032765 	000001 	000006 		BIT	#TT.OUT,STSW1(R5) ;;;OUTPUT INTERRUPT EXPECTED?
   8634	024152	001403 				BEQ	30$		;;;IF EQ NO
   8635	024154	005764 	000010 			TST	10(R4)		;;;ZERO BYTE COUNT?
   8636	024160	001407 				BEQ	40$		;;;IF EQ YES
   8637	024162				30$:
   8638	024162	005214 				INC	@R4		;;;INCREMENT UNIT NUMBER
   8639	024164	062705 	000010 			ADD	#10,R5		;;; POINT TO NEXT ENTRY
   8640	024170	026504 	000002 			CMP	TTYEXP(R5),R4	;;;SAME DH ?
   8641	024174	001763 				BEQ	20$		;;;YES -- CHECK NEXT UNIT
   8642	024176					RETURN
	024176	000207 				RTS	PC
   8643	024200				40$:				;;; +++006
   8644	024200	042765 	000001 	000006 		BIC	#TT.OUT,STSW1(R5) ;;; +++006 THIS OPERATION IS FINISHED
   8645	024206	032765 	000400 	000006 		BIT	#TT.CTY,STSW1(R5) ;;;LOOK AT THE THREAD WORD
   8646	024214	001003 				BNE	60$		;;;CHECK TO SEE IF THIS IS THE CTY -- NO NORMAL CASE
   8647	024216				50$:
   8648	024216					CALL	STTYDN		;;;START NEXT CHARACTER
	024216	004737 	024244'			JSR	PC,STTYDN
   8649	024222	000757 				BR	30$		;;;GO GET ANOTHER CHARACTER
   8650						;
   8651	024224				60$:
   8652	024224	005737 	031216'			TST	.TTP11		;;;IS THIS PDP11 OUTPUT?
   8653	024230	001772 				BEQ	50$		;;;NO -- THEN HANDLE AS NORMAL CASE
   8654	024232	010446 				MOV	R4,-(SP)	;;;SAVE R4 AND R3
   8655	024234					CALL	OUTPT3		;;;FINISH OUTPUT PROCESSING
	024234	004737 	024730'			JSR	PC,OUTPT3
   8656	024240	012604 				MOV	(SP)+,R4	;;;
   8657	024242	000747 				BR	30$		;;;GO AGAIN
   8658						;
TTYDRR	- GENERAL TTY HANDLER	MACRO M1108  16-DEC-77 11:28  PAGE 124
TTY DRIVER -- $DHOUT (DH11 OUTPUT INTERRUPT)

   8660					;
   8661					;	REMOVE ENTRY FOR LAST OPERATION
   8662					;
   8663					;	IF THIS IS A SENDALL WHICH HAS FINSHED, DECREMENT THE COUNT FOR
   8664					;	THE NODE IN THE SENDALL RING. IF THE COUNT HAS EXHAUSTED, DEALLOCATE
   8665					;	THER CURRENT SENDALL BUFFER. THE SENDALL OFFSET FOR THIS LINE IS MOVED
   8666					;	TO THE NEXT NODE IN THE SENDALL RING.
   8667					;
   8668					;	IF THIS IS A NORMAL I/O TERMINATION, SEE IF THE LINE HAS BEEN X'D OFF.
   8669					;	IF IT HAS BEEN X'D OFF, ALTER THE BUFFER ADDRESS AND BYTE COUNT IN THE
   8670					;	CURRENT NODE SO THAT THE XON CODE CAN DO A NORMAL LINE START. THE PACKET
   8671					;	WILL BE ACK'ED AND DEALLOCATED AFTER THE LINE HAS BEEN RESTARTED.
   8672					;
   8673					;	IF THE LINE HAS NOT BEEN X'D OFF, THE CURRENT NODE IS REMOVED FROM THE
   8674					;	THREAD LIST, DEALLOCATED AND AN ATTEMPT MADE TO START THE NEXT ENTRY
   8675					;	IN THE THREAD LIST. IF THE LIST IS EMPTY, THIS LINE WILL BE ACK'ED.
   8676
   8677	024244				STTYDN:				;;; +003 REMOVED ONE INSTRUCTION
   8678	024244	032765 	001000 	000006 		BIT	#TT.SIP,STSW1(R5) ;;;IS THIS SEND ALL IN PROGRESS?
   8679	024252	001426 				BEQ	10$		;;;NO -- DON'T MAKE SENDALL RETURN CHECKS
   8680	024254	042765 	001000 	000006 		BIC	#TT.SIP,STSW1(R5) ;;;CLEAR SENDALL IN PROGRESS
   8681	024262	016502 	000006 			MOV	STSW1(R5),R2	;;; +003 FIND THE POSITION IN THE SEND ALL TABLE
   8682	024266	062765 	040000 	000006 		ADD	#TT.SNI,STSW1(R5) ;;;MOVE TO NEXT SENDALL RING WORD
   8683	024274	006102 				ROL	R2		;;; +003 FIND THE POSITION IN THE TABLE
   8684	024276	006102 				ROL	R2		;;; +003 OF THE CURRENT SENDALL
   8685	024300	006102 				ROL	R2		;;; +003 JUST FINISHED
   8686	024302	042702 	177774 			BIC	#177774,R2	;;; +003 MASK OFF JUNK
   8687	024306	006302 				ASL	R2		;;; +003 MAKE A WORD INDEX
   8688	024310	005362 	031650'			DEC	.SNDCN(R2)	;;; +003 DECREMENT THE CURRENT INUSE COUNT
   8689	024314	001032 				BNE	STNXT		;;;THIS SENDALL QUEUE NOT FINISHED -- DON'T RELEASE IT
   8690	024316	016200 	031640'			MOV	.SNDBF(R2),R0	;;; +003 PICK UP THE ENTRY
   8691	024322	005062 	031640'			CLR	.SNDBF(R2)	;;; +003 CLEAR OUT THIS ENTRY (MARK END OF RING)
   8692	024326	000423 				BR	20$		;;; +++005 AND CONTINUE
   8693						;
   8694	024330				10$:				;;; HERE TO REMOVE THREAD ENTRY (NOT SENDALL)
   8695	024330	011500 				MOV	(R5),R0		;;;PICK UP THE THREAD POINTER
   8696	024332	001423 				BEQ	STNXT		;;; +++010 GO ON IF EMPTY
   8697	024334	105765 	000006 			TSTB	STSW1+0(R5)	;;; +++010 IS THIS LINE X'D OFF??
   8698	024340	100015 				BPL	15$		;;; +++010 NO -- GO ON
   8699	024342	016401 	000006 			MOV	6(R4),R1	;;; +++010 YES -- PICK UP CURRENT ADDRESS
   8700	024346	116002 	000006 			MOVB	T.HCBC(R0),R2	;;; +++010 GET ORIGINAL BYTE COUNT
   8701	024352	016046 	000004 			MOV	T.HCAD(R0),-(SP) ;;; +++010 ORIGINAL ADDRESS TO STACK
   8702	024356	010160 	000004 			MOV	R1,T.HCAD(R0)	;;; +++010 CURRENT ADDRESS TO PACKET
   8703	024362	162601 				SUB	(SP)+,R1	;;; +++010 COMPUTE OFFSET INTO PACKET
   8704	024364	160102 				SUB	R1,R2		;;; +++010 DISCOUNT FROM PACKET SIZE
   8705	024366	110260 	000006 			MOVB	R2,T.HCBC(R0)	;;; +++010 AND SET NEW PACKET SIZE
   8706	024372	000403 				BR	STNXT		;;; +++010 AND SEE ABOUT SENDALLS
   8707						;
   8708	024374				15$:
   8709	024374	011015 				MOV	@R0,(R5)	;;; DELINK THIS THREAD NODE
   8710	024376				20$:				;;; +++005
   8711	024376					CALL	..DECN		;;;DEALLOCATE THE NODE
	024376	004737 	042006'			JSR	PC,..DECN
TTYDRR	- GENERAL TTY HANDLER	MACRO M1108  16-DEC-77 11:28  PAGE 125
TTY DRIVER -- $DHOUT (DH11 OUTPUT INTERRUPT)

   8713					;
   8714					;	START NEXT OPERATION
   8715					;
   8716					;	R0 -- POINTS TO THREAD NODE TO BE STARTED
   8717					;	R4 -- POINTS TO I/O PAGE ADDR THIS DEVICE
   8718					;	R5 -- POINTS TO DLS TABLE THIS DEVICE
   8719					;
   8720					;	BEFORE ATTEMPTING TO START THE NEXT NODE IN THE THREAD LIST, SEE IF A
   8721					;	SENDALL IS PENDING FOR THIS LINE, (".SNDLP" .NE. "TT.SND"). IF SO, START
   8722					;	THE SENDALL. IF SENDALLS ARE SUPPRESSED FOR THIS LINE, GO IMMEDIATELY TO
   8723					;	"STTYDN" AND ACCOUNT FOR THIS LINE IN THE SENDALL RING.
   8724					;
   8725					;	IF NO SENDALL IS PENDING FOR THIS LINE, ATTEMPT TO START THE THE NEXT
   8726					;	NODE IN THE THREAD LIST. IF ANOTHER ENTRY EXISTS, START IT; IF NOT, SEND
   8727					;	AN ACK. IF THE LINE HAS BEEN X'D OFF, DO NOTHING.
   8728					;
   8729					;	NOTE: SENDALLS ARE FORCED OUT OVER THE XOFF -- THEY ARE NOT TO BE STOPPED.
   8730
   8731	024402				STNXT:
   8732	024402	016502 	000006 			MOV	STSW1(R5),R2	;;;FIND THE STATUS WORD TO LOOK AT
   8733	024406	006102 				ROL	R2		;;; GET THE RING INDEX OUT OF STATUS WORD
   8734	024410	006102 				ROL	R2
   8735	024412	006102 				ROL	R2
   8736	024414	042702 	177774 			BIC	#^C3,R2		;;; +++013 R2 NOW HAS OFFSET INTO SENDALL RING
   8737	024420	020237 	031636'			CMP	R2,.SNDLP	;;; ANY SENDALLS PENDING THIS LINE??
   8738	024424	001414 				BEQ	10$		;;; NO -- CONTINUE NORMAL I/O
   8739	024426	006302 				ASL	R2		;;; +++013 MAKE R2 A WORD INDEX INTO RING
   8740	024430	016200 	031640'			MOV	.SNDBF(R2),R0	;;; +++013 GET THE NEXT SENDALL NODE INTO R0
   8741	024434	001410 				BEQ	10$		;;; +++013 CONTINUE NORMAL I/O IF EMPTY
   8742	024436	052765 	001000 	000006 		BIS	#TT.SIP,STSW1(R5) ;;; +001 SET SEND-ALL IN PROGRESS
   8743	024444	032765 	004000 	000006 		BIT	#TT.NSA,STSW1(R5) ;;; +002 ARE WE SUPPRESSING SEND-ALL'S?
   8744	024452	001274 				BNE	STTYDN		;;; +001 YES -- PRETEND WE JUST FINISHED IT
   8745	024454	000405 				BR	20$		;;; +++013 NO -- START IT UP
   8746						;
   8747	024456				10$:
   8748	024456	105765 	000006 			TSTB	STSW1+0(R5)	;;; +++010 IS THIS LINE X'D OFF??
   8749	024462	100475 				BMI	TTOUTR		;;; +++010 YES -- GO AWAY
   8750	024464	011500 				MOV	(R5),R0		;;; +++010 NO -- START THE XFER ON THIS STRING
   8751	024466	001474 				BEQ	TTACK		;;; SEND AN ACK IF END
   8752									;;; +003 REMOVED LABEL "STTYDN"
   8753	024470				20$:
   8754	024470	016064 	000004 	000006 		MOV	T.HCAD(R0),6(R4) ;;;SET IT IN THE EXTERNAL ADDRESS REGISTER
   8755	024476	016064 	000006 	000010 		MOV	T.HCBC(R0),10(R4) ;;;SET THE BYTE COUNT
   8756	024504	005464 	000010 			NEG	10(R4)		;;;MAKE BYTE COUNT NEGATIVE
   8757	024510	011402 				MOV	@R4,R2		;;;FIND THE UNIT NUMBER TO START THE DH
   8758	024512	042702 	177760 			BIC	#177760,R2	;;;MASK OFF HIGH ORDER JUNK
   8759	024516	006302 				ASL	R2		;;;MAKE AN INDEX INTO BIT TABLE
   8760	024520	056264 	042572'	000012 		BIS	BITTBL(R2),12(R4) ;;;START THE DH
   8761	024526	000450 				BR	TTOUTX		;;; +++005 MARK OUTPUT BUSY AND EXIT
   8762						;
TTYDRR	- GENERAL TTY HANDLER	MACRO M1108  16-DEC-77 11:28  PAGE 126
TTY DRIVER -- $TTOUT (DL11 OUTPUT INTERRUPT)

   8764						.SBTTL	TTY DRIVER -- $TTOUT (DL11 OUTPUT INTERRUPT)
   8765					;+
   8766					; **-$TTOUT-DL11 TERMINAL OUTPUT INTERRUPTS
   8767					;-
   8768
   8769	024530				$TTOUT::			;;;REF LABEL
   8770	024530	013737 	177776 	022652'		MOV	@#PS,DLTMP	;;;SAVE CONTROLLER NUMBER
   8771	024536					CALL	R3,TTSAV	;;;SAVE R3 AND SETUP R3, R4, AND R5
	024536	004337 	027270'			JSR	R3,TTSAV
   8772	024542	032765 	000001 	000006 		BIT	#TT.OUT,STSW1(R5) ;;;OUTPUT INTERRUPT EXPECTED?
   8773	024550	001443 				BEQ	TTACK		;;;IF EQ YES
   8774	024552	042765 	000001 	000006 		BIC	#TT.OUT,STSW1(R5) ;;; +++006 MARK OUTPUT DONE
   8775	024560	032765 	000400 	000006 		BIT	#TT.CTY,STSW1(R5) ;;;IS THIS A CONSOLE?
   8776	024566	001403 				BEQ	STTYO		;;;NO -- SEND THE LINE
   8777	024570	005737 	031216'			TST	.TTP11		;;;IS THIS PDP11 INPUT?
   8778	024574	001055 				BNE	OUTPT3		;;;YES -- SPECIAL CASE
   8779	024576				STTYO:
   8780	024576	105765 	000006 			TSTB	STSW1+0(R5)	;;; +++010 IS THIS LINE X'D OFF??
   8781	024602	100425 				BMI	TTOUTR		;;; +++010 YES -- JUST GO AWAY
   8782	024604	011500 				MOV	(R5),R0		;;; +++010 NO -- PICK UP THIS LINE IN USE
   8783	024606	001424 				BEQ	TTACK		;;; ACK THE LINE IF END OF THREAD LIST
   8784	024610	005360 	000006 			DEC	T.HCBC(R0)	;;;DECREMENT THE BYTE COUNT
   8785	024614	001005 				BNE	10$		;;;FINISHED?
   8786	024616	011015 				MOV	@R0,(R5)	;;;SAVE NEXT THREAD POINTER
   8787	024620					CALL	..DECN		;;;DEALLOCATE THE BUFFER
	024620	004737 	042006'			JSR	PC,..DECN
   8788	024624	011500 				MOV	(R5),R0		;;;SET THE NEW THREAD POINTER
   8789	024626	001414 				BEQ	TTACK		;;;GO ACK THE LINE
   8790	024630				10$:
   8791	024630	117064 	000004 	000006 		MOVB	@T.HCAD(R0),6(R4) ;;;START THE NEXT CHARACTER
   8792	024636	005260 	000004 			INC	T.HCAD(R0)	;;;UPDATE THE CHARACTER POINTER
   8793	024642	052764 	000100 	000004 		BIS	#DL.XEN,4(R4)	;;; +++005 INSURE INTERRUPT ENABLED
   8794	024650				TTOUTX:
   8795	024650	052765 	000001 	000006 		BIS	#TT.OUT,STSW1(R5) ;;; +++006 MARK OUTPUT BUSY
   8796	024656				TTOUTR:				;;; +++010
   8797	024656					RETURN			;;;RETURN TO CALLER
	024656	000207 				RTS	PC
   8798	024660				TTACK::				;;; +++006 REMOVED ONE INSTRUCTION
   8799	024660	032765 	000400 	000006 		BIT	#TT.CTY,STSW1(R5) ;;;IF THIS IS A CTY
   8800	024666	001411 				BEQ	15$		;;; +++005 GO ON IF NOT
   8801	024670	005737 	031216'			TST	.TTP11		;;;IT IS TALKING
   8802	024674	001014 				BNE	20$		;;;TO THE -11, THEN IGNORE.
   8803	024676				10$:
   8804	024676	105737 	031342'			TSTB	.KLNSW+0	;;; +++005 IS KLINIK ACTIVE??
   8805	024702	001403 				BEQ	15$		;;; +++005 NO -- GO ON
   8806	024704	020537 	031222'			CMP	R5,KLNPTR	;;; +++005 YES -- IS THIS THE KLINIK LINE??
   8807	024710	001406 				BEQ	20$		;;; +++005 YES -- DON'T ACK IT!
   8808	024712				15$:
   8809	024712	010346 				MOV	R3,-(SP)
   8810	024714	012703 	000004 			MOV	#D.CDLS,R3	;;;SET DATA LINE SCANNER
   8811	024720					CALL	..SACK		;;;ACKNOWLEDGE
	024720	004737 	043166'			JSR	PC,..SACK
   8812	024724	012603 				MOV	(SP)+,R3
   8813	024726				20$:
   8814	024726					RETURN			;;;RETURN TO CALLER
	024726	000207 				RTS	PC
   8815	024730				OUTPT3:				;;; +++005 HERE TO SYNCH CTY OUTPUT
TTYDRR	- GENERAL TTY HANDLER	MACRO M1108  16-DEC-77 11:28  PAGE 126-1
TTY DRIVER -- $TTOUT (DL11 OUTPUT INTERRUPT)

   8816									;;; +++006 REMOVED ONE INSTRUCTION
   8817	024730	105737 	031342'			TSTB	.KLNSW+0	;;; +++005 KLINIK REMOTE CONSOLE ACTIVE?
   8818	024734	003425 				BLE	OUTPT		;;; +++005 NO -- CONTINUE
   8819	024736	010546 				MOV	R5,-(SP)	;;; +++005 SAVE CURRENT POINTER
   8820	024740	022705 	035176'			CMP	#DHTBL,R5	;;; +++005 IS CTY A DH11 LINE??
   8821	024744	101410 				BLOS	10$		;;; +++005 YES -- GO ON
   8822	024746	032765 	000001 	000006 		BIT	#TT.OUT,STSW1(R5) ;;; +++005 NO -- IS THIS LINE FINISHED??
   8823	024754	001012 				BNE	30$		;;; +++005 NO -- EXIT
   8824	024756	013705 	031220'			MOV	CTYPTR,R5	;;; +++005 YES -- POINT TO THE CTY
   8825	024762	020516 				CMP	R5,(SP)		;;; +++005 HAVE WE ALREADY CHECKED IT??
   8826	024764	001002 				BNE	20$		;;; +++005 NO -- GO ON
   8827	024766				10$:
   8828	024766	013705 	031222'			MOV	KLNPTR,R5	;;; +++005 YES -- POINT TO THE KLINIK LINE
   8829	024772				20$:
   8830	024772	032765 	000001 	000006 		BIT	#TT.OUT,STSW1(R5) ;;; +++005 IS IT FINISHED??
   8831	025000	001402 				BEQ	90$		;;; +++005 YES -- TYPE IF FINISHED
   8832	025002				30$:
   8833	025002	012605 				MOV	(SP)+,R5	;;; +++005 NO -- RESTORE POINTER
   8834	025004					RETURN			;;; +++005 RETURN TO CALLER
	025004	000207 				RTS	PC
   8835	025006				90$:
   8836	025006	005726 				TST	(SP)+		;;; +++005 CLEAR STACK
   8837					;
   8838					; OUTPUT NEXT BYTE
   8839					;
   8840						.ENABL	LSB
   8841	025010				OUTPT:
   8842	025010	013705 	031220'			MOV	CTYPTR,R5	;;; +++005 POINT TO THE CTY
   8843	025014	012703 	022660'			MOV	#CTYSTS,R3	;;;GET CTY BLOCK POINTER
   8844	025020	032713 	000017 			BIT	#FLCT,@R3	;;;SHOULD A FILL BE ECHOED?
   8845	025024	001113 				BNE	60$		;;;IF NE YES
   8846	025026	032713 	074000 			BIT	#LFCT,@R3	;;;ANY UNPROCESSED LINE FEEDS?
   8847	025032	001074 				BNE	40$		;;;IF NE YES
   8848	025034	105763 	000010 			TSTB	MECNT(R3)	;;;MULTIECHO SEQUENCE IN PROGRESS?
   8849	025040	001076 				BNE	50$		;;;IF NE YES
   8850	025042	005713 				TST	@R3		;;;INPUT OR OUTPUT IN PROGRESS?
   8851	025044	100056 				BPL	INPPT		;;;IF PL INPUT
   8852					;
   8853					; OUTPUT REQUEST IN PROGRESS
   8854					;
   8855	025046	005737 	022722'			TST	BYCNT		;;;ANY MORE BYTES TO OUTPUT?
   8856	025052	100416 				BMI	20$		;;;IF MI NO
   8857	025054	005337 	022722'			DEC	BYCNT		;;;DECREMENT BYTE COUNT
   8858	025060	100405 				BMI	10$		;;;IF MI CHECK CARRIAGE CONTROL
   8859	025062	117746 	175636 			MOVB	@CRADR,-(SP)	;;;STORE CHARACTER ON STACK
   8860									;;;!!!NOTE: THIS SHOULD BE VXFR AND BLXI!!!!!
   8861	025066	005237 	022724'			INC	CRADR		;;;UPDATE POINTER TO NEXT CHARACTER
   8862	025072	000473 				BR	ECHOB		;;;ECHO NEXT BYTE
   8863						;
   8864	025074				10$:
   8865	025074	112746 	000015 			MOVB	#15,-(SP)	;;;ASSUME TRAILING CARRIAGE RETURN REQUIRED
   8866	025100	032713 	002000 			BIT	#CRTY,@R3	;;;OUTPUT TRAILING CARRIAGE RETURN?
   8867	025104	001066 				BNE	ECHOB		;;;IF NE YES
   8868	025106	005726 				TST	(SP)+		;;;CLEAN STACK
   8869	025110				20$:
   8870	025110	012737 	000001 	022724'		MOV	#IS.SUC&377,CRADR ;;;SET SUCCESSFUL COMPLETION STATUS
   8871	025116				TTYDNE:
TTYDRR	- GENERAL TTY HANDLER	MACRO M1108  16-DEC-77 11:28  PAGE 126-2
TTY DRIVER -- $TTOUT (DL11 OUTPUT INTERRUPT)

   8872	025116	052737 	000020 	032636'		BIS	#EF.IOD,TTYTSK+A.EF ;;;SET EVENT FLAG INDICATING I/O DONE
   8873	025124	152737 	000001 	031116'		BISB	#EV.SE,.SERFG+0	 ;;;DECLARE A SIG EVENT
   8874	025132	105737 	031342'			TSTB	.KLNSW+0	;;; +++005 IS KLINIK ACTIVE??
   8875	025136	003412 				BLE	TTYDNX		;;; +++005 NO -- GO ON
   8876	025140	010546 				MOV	R5,-(SP)	;;; +++005 YES -- SAVE R5
   8877	025142	010446 				MOV	R4,-(SP)	;;; +++005 AND R4
   8878	025144	013705 	031222'			MOV	KLNPTR,R5	;;; +++005 POINT TO THE KLINIK LINE
   8879	025150	016504 	000002 			MOV	TTYEXP(R5),R4	;;; +++005 I/O PAGE POINTER TO R5
   8880	025154					CALL	STTYO		;;; +++005 START OR DEALLOCATE
	025154	004737 	024576'			JSR	PC,STTYO
   8881	025160	012604 				MOV	(SP)+,R4	;;; +++005 RESTORE REGISTERS
   8882	025162	012605 				MOV	(SP)+,R5	;;; +++005 SO
   8883	025164				TTYDNX:				;;; +++005
   8884	025164	022705 	035176'			CMP	#DHTBL,R5	;;;CALLED FROM DH?
   8885	025170	101002 				BHI	30$		;;; NO --TRY THE ONE ON DL11
   8886									;;; +003 REMOVED ONE INSTRUCTION
   8887	025172	000137 	024244'			JMP	STTYDN		;;;GO DO ACK AND CLEAR BUSY
   8888						;
   8889	025176				30$:
   8890	025176	000137 	024576'			JMP	STTYO		;;; SEE WHAT'S NEXT FOR DL11
   8891						;
   8892					;
   8893					; INPUT REQUEST IN PROGRESS
   8894					;
   8895	025202				INPPT:
   8896	025202	032713 	000400 			BIT	#EOLS,@R3	;;;END OF LINE SEEN?
   8897	025206	001402 				BEQ	INPT0
   8898	025210	000137 	025660'			JMP	INPT1
   8899						;
   8900	025214				INPT0:
   8901	025214	142765 	000002 	000006 		BICB	#TT.ECH,STSW1(R5) ;;;CLEAR ECHO IN PROGRESS
   8902	025222					RETURN			;;;
	025222	000207 				RTS	PC
   8903					;
   8904					; ECHO LINE FEED
   8905					;
   8906	025224				40$:
   8907	025224	162713 	004000 			SUB	#LFBT,@R3	;;;REDUCE LINE FEED COUNT
   8908	025230	112746 	000012 			MOVB	#12,-(SP)	;;;SET TO ECHO LINE FEED
   8909	025234	000412 				BR	ECHOB		;;;ECHO BYTE
   8910						;
   8911					;
   8912					; MULTI-ECHO SEQUENCE
   8913					;
   8914	025236				50$:
   8915	025236	117346 	000012 			MOVB	@MEBUF(R3),-(SP) ;;;SET NEXT BYTE TO ECHO
   8916	025242	005263 	000012 			INC	MEBUF(R3)	;;;INCREMENT BUFFER ADDRESS
   8917	025246	105363 	000010 			DECB	MECNT(R3)	;;;DECREMENT MULTIECHO BYTE COUNT
   8918	025252	000403 				BR	ECHOB		;;;ECHO BYTE
   8919						;
   8920					;
   8921					; ECHO FILL BYTE
   8922					;
   8923	025254				60$:
   8924	025254	005313 				DEC	@R3		;;;DECREMENT FILL COUNT
   8925	025256	116346 	000011 			MOVB	FLBYT(R3),-(SP)	;;;SET TO ECHO FILL BYTE
   8926						.DSABL	LSB
TTYDRR	- GENERAL TTY HANDLER	MACRO M1108  16-DEC-77 11:28  PAGE 126-3
TTY DRIVER -- $TTOUT (DL11 OUTPUT INTERRUPT)

   8927					;
   8928					; ECHO NEXT BYTE
   8929					;
   8930	025262				ECHOB:
   8931	025262	042716 	177600 			BIC	#177600,@SP	;;;MASK OFF PARITY
   8932	025266	121627 	000037 			CMPB	@SP,#37		;;;IS THIS A CONTROL BYTE?
   8933	025272	101101 				BHI	70$		;;;IF HI NO
   8934	025274	122716 	000015 			CMPB	#15,@SP		;;;CARRIAGE RETURN?
   8935	025300	001427 				BEQ	10$		;;;IF EQ YES
   8936	025302	122716 	000014 			CMPB	#14,@SP		;;;FORM FEED?
   8937	025306	001452 				BEQ	30$		;;;IF EQ YES
   8938	025310	122716 	000013 			CMPB	#13,@SP		;;;VERTICLE TAB?
   8939	025314	001451 				BEQ	40$		;;;IF EQ YES
   8940	025316	122716 	000012 			CMPB	#12,@SP		;;;LINE FEED?
   8941	025322	001452 				BEQ	50$		;;;IF EQ YES
   8942	025324	122716 	000011 			CMPB	#11,@SP		;;;HORIZONTAL TAB?
   8943	025330	001066 				BNE	80$		;;;IF NE NO
   8944					;
   8945					; HORIZONTAL TAB
   8946					;
   8947	025332	116316 	000016 			MOVB	HORPS(R3),@SP	;;;GET CURRENT HORIZONTAL POSITION
   8948	025336	052716 	177770 			BIS	#177770,@SP	;;;CALCULATE BLANK COUNT TO NEXT TAB STOP
   8949	025342	005416 				NEG	@SP		;;;
   8950	025344	051613 				BIS	@SP,@R3		;;;MERGE BLANK COUNT
   8951	025346	112763 	000040 	000011 		MOVB	#' ,FLBYT(R3)	;;;SET FILL TO A BLANK
   8952	025354				5$:
   8953	025354	005726 				TST	(SP)+		;;;REMOVE BYTE FROM STACK
   8954	025356	000614 				BR	OUTPT		;;;START OUTPUT
   8955						;
   8956					;
   8957					; CARRIAGE RETURN
   8958					;
   8959	025360				10$:
   8960	025360	032765 	000020 	000006 		BIT	#TT.L3S,STSW1(R5) ;;;LA30S?
   8961	025366	001414 				BEQ	20$		;;;IF EQ NO
   8962	025370	005046 				CLR	-(SP)		;;;PICKUP CURRENT HORIZONAL POSITION
   8963	025372	156316 	000016 			BISB	HORPS(R3),@SP	;;;
   8964	025376	006216 				ASR	@SP		;;;DIVIDE POSITION BY 8.
   8965	025400	006216 				ASR	@SP		;;;
   8966	025402	006216 				ASR	@SP		;;;
   8967	025404	062716 	022744'			ADD	#FILTB,@SP	;;;CALCULATE ADDRESS OF FILL TABLE ENTRY
   8968	025410	113646 				MOVB	@(SP)+,-(SP)	;;;GET CORRECT FILL COUNT
   8969	025412	042716 	177760 			BIC	#177760,@SP	;;;CLEAR EXTRANEOUS BITS ON WIDE CARRIAGE
   8970	025416	052613 				BIS	(SP)+,@R3	;;;SET PROPER FILL COUNT
   8971	025420				20$:
   8972	025420	052713 	001000 			BIS	#CRJT,@R3	;;;SET CARRIAGE RETURN JUST TYPED
   8973	025424	005213 				INC	@R3		;;;ALWAYS ONE FILL BYTE
   8974	025426	105063 	000016 			CLRB	HORPS(R3)	;;;CLEAR HORIZONTAL POSITION
   8975	025432	000416 				BR	60$		;;;OUTPUT CARRIAGE RETURN
   8976						;
   8977					;
   8978					; FORM FEED
   8979					;
   8980	025434				30$:
   8981	025434	062713 	020000 			ADD	#LFBT*4,@R3	;;;ADD IN FOUR LINE FEEDS
   8982					;
   8983					; VERTICAL TAB
TTYDRR	- GENERAL TTY HANDLER	MACRO M1108  16-DEC-77 11:28  PAGE 126-4
TTY DRIVER -- $TTOUT (DL11 OUTPUT INTERRUPT)

   8984					;
   8985	025440				40$:
   8986	025440	062713 	014000 			ADD	#LFBT*3,@R3	;;;ADD IN THREE LINE FEEDS
   8987	025444	112716 	000012 			MOVB	#12,@SP		;;;CHANGE BYTE TO LINE FEED
   8988					;
   8989					; LINE FEED
   8990					;
   8991	025450				50$:
   8992	025450	042713 	001000 			BIC	#CRJT,@R3	;;;CLEAR CARRIAGE RETURN JUST TYPED
   8993	025454	032765 	000040 	000006 		BIT	#TT.VT5,STSW1(R5) ;;;VT05B?
   8994	025462	001411 				BEQ	80$		;;;IF EQ NO
   8995	025464	062713 	000003 			ADD	#FLBT*3,@R3	;;;SET FILL COUNT TO 3
   8996	025470				60$:
   8997	025470	105063 	000011 			CLRB	FLBYT(R3)	;;;SET NULL FILL BYTE
   8998	025474	000404 				BR	80$		;;;
   8999						;
   9000					;
   9001					; BYTE REQUIRES HORIZONTAL POSITION
   9002					;
   9003	025476				70$:
   9004	025476	042713 	001000 			BIC	#CRJT,@R3	;;;CLEAR CARRIAGE RETURN JUST TYPED
   9005	025502	105263 	000016 			INCB	HORPS(R3)	;;;INCREMENT HORIZONTAL POSITION
   9006	025506				80$:
   9007	025506	005713 				TST	@R3		;;;INPUT MODE?
   9008	025510	100003 				BPL	81$		;;;IF PL YES
   9009	025512	032713 	000040 			BIT	#CTLO,@R3	;;;OUTPUT DISABLED?
   9010	025516	001316 				BNE	5$		;;;IF NE YES
   9011	025520				81$:
   9012	025520	105737 	031342'			TSTB	.KLNSW+0	;;; +++005 KLINIK REMOTE MODE ACTIVE?
   9013	025524	003420 				BLE	82$		;;; +++005 NO -- BETTER LEAVE IT ALONE
   9014	025526	010546 				MOV	R5,-(SP)	;;; +++005 SAVE DLS POINTER
   9015	025530	013705 	031222'			MOV	KLNPTR,R5	;;; +++005 GET KLINIK DLS POINTER
   9016	025534	016503 	000002 			MOV	TTYEXP(R5),R3	;;; +++005 POINT TO CSR
   9017	025540	001411 				BEQ	84$		;;;  +++005 IGNORE IF NOT THERE
   9018	025542	116663 	000002 	000006 		MOVB	2(SP),6(R3)	;;; +++005 START KLINIK LINE
   9019	025550	052763 	000100 	000004 		BIS	#DL.XEN,4(R3)	;;; +++005 ENABLE XMTR INTERRUPTS
   9020	025556	052765 	000001 	000006 		BIS	#TT.OUT,STSW1(R5) ;;; +++005 SET TTY BUSY
   9021	025564				84$:
   9022	025564	012605 				MOV	(SP)+,R5	;;; +++005 RESTORE CTY POINTER
   9023	025566				82$:
   9024	025566	016503 	000002 			MOV	TTYEXP(R5),R3	;;;GET ADDRESS OF CONTROL STATUS REGISTER
   9025	025572	022705 	035176'			CMP	#DHTBL,R5	;;;IS THIS A DL ?
   9026	025576	101021 				BHI	90$		;;;YES -- SPECIAL CASE
   9027	025600	112637 	022700'			MOVB	(SP)+,DHBUF+CTYSTS ;;;PUT BYTE IN OUTPUT BUFFER
   9028	025604	042713 	001077 			BIC	#1077,@R3	;;;CLEAR CURRENT UNIT
   9029	025610	153713 	031224'			BISB	$UNIT,@R3	;;;SELECT DESIRED UNIT
   9030	025614	042723 	000060 			BIC	#60,(R3)+	;;;
   9031	025620	062703 	000004 			ADD	#4,R3		;;;POINT TO CURRENT ADDRESS REGISTER
   9032	025624	012723 	022700'			MOV	#DHBUF+CTYSTS,(R3)+
   9033	025630	012723 	177777 			MOV	#-1,(R3)+	;;;SET BYTE COUNT TO MINUS ONE
   9034									;;; +++006 REMOVED ONE INSTRUCTION
   9035	025634	053713 	031226'			BIS	$BTMSK,@R3 	;;;START OUTPUT
   9036	025640	000405 				BR	99$		;;; +++005 MARK OUTPUT BUSY AND EXIT
   9037						;
   9038	025642				90$:
   9039	025642	112663 	000006 			MOVB	(SP)+,6(R3)	;;;OUTPUT BYTE
   9040	025646	052763 	000100 	000004 		BIS	#DL.XEN,4(R3)	;;;ENABLE OUTPUT INTERRUPT
TTYDRR	- GENERAL TTY HANDLER	MACRO M1108  16-DEC-77 11:28  PAGE 126-5
TTY DRIVER -- $TTOUT (DL11 OUTPUT INTERRUPT)

   9041	025654				99$:
   9042	025654	000137 	024650'			JMP	TTOUTX		;;; +++005 MARK OUTPUT BUSY AD EXIT
   9043						;
   9044					;
   9045					; END OF INPUT LINE
   9046					;
   9047	025660				INPT1:
   9048	025660	012703 	022662'			MOV	#CTYSTS+2,R3	;;;FIND THE TERMINAL STATUS WORD
   9049	025664	117337 	000000 	022724'		MOVB	@(R3),CRADR	;;;FIND THE LAST CHARACTER
   9050	025672	016346 	000004 			MOV	4(R3),-(SP)
   9051	025676	162316 				SUB	(R3)+,@SP	;;;FIND THE BYTE COUNT
   9052	025700	112713 	000001 			MOVB	#IS.SUC&377,@R3 ;;;ASSUME NORMAL TERMINATION
   9053	025704	012300 				MOV	(R3)+,R0	;;;GET FINAL BYTE AND STATUS
   9054	025706	100006 				BPL	40$		;;;IF PL NORMAL TERMINATION
   9055	025710	012700 	015366 			MOV	#32*400+366,R0	;;;ASSUME ^Z
   9056	025714	105243 				INCB	-(R3)		;;;CONTROL Z?
   9057	025716	001402 				BEQ	40$		;;;IF EQ YES
   9058	025720	012700 	000361 			MOV	#IE.ABO&377,R0	;;;SET ABORT STATUS
   9059	025724				40$:
   9060	025724	013701 	022726'			MOV	PKT,R1		;;;FIND THE PACKET ADDRESS
   9061	025730	010037 	022724'			MOV	R0,CRADR	;;;SAVE THE STARTS FIRST WORD
   9062	025734	012661 	000026 			MOV	(SP)+,R.PB+2(R1) ;;;STORE THE BYTE COUNT
   9063	025740				50$:
   9064	025740					CALL	INPT0		;;;CLEAR ECHO IN PROGRESS
	025740	004737 	025214'			JSR	PC,INPT0
   9065	025744	000137 	025116'			JMP	TTYDNE
   9066						;
TTYDRR	- GENERAL TTY HANDLER	MACRO M1108  16-DEC-77 11:28  PAGE 127
TTY DRIVER -- .KW11S (KW11 LINE CLOCK INTERRUPT)

   9068						.SBTTL	TTY DRIVER -- .KW11S (KW11 LINE CLOCK INTERRUPT)
   9069					;+
   9070					; **-KW11L LINE CLOCK INTERRUPT SERVICE HANDLER
   9071					;
   9072					;	THIS ROUTINE ONLY UPDATES THE COUNT OF CLOCK TICKS
   9073					;	IT THEN GOES AND DUMP'S THE DH11 SILO
   9074					;	AND THEN DOES THE INTERRUPT SERVICE EXIT
   9075					;-
   9076
   9077	025750				.KW11S::
   9078	025750	105237 	031117'			INCB	.SERFG+1
   9079
   9080						.SBTTL	TTY DRIVER -- $DHINP (DH11 INPUT INTERRUPT)
   9081					;+
   9082					; **-$DHINP-DH11 TERMINAL MULTIPLEXER INPUT INTERRUPTS
   9083					;-
   9084
   9085	025754				$DHINP::			;;;REF LABEL
   9086	025754	013737 	177776 	022654'		MOV	@#PS,DHTMP
   9087	025762					CALL	R3,DHSAV	;;;SAVE R3 AND SETUP R4 AND R5
	025762	004337 	027232'			JSR	R3,DHSAV
   9088	025766	012705 	035176'			MOV	#DHTBL,R5	;;;SET UP BEGINNING OF DH TABLE FOR THIS CONTROLLER
   9089	025772				10$:
   9090	025772	010537 	022656'			MOV	R5,DHSTSV	;;;SET UP THE HEAD OF THIS CONTROLLER TABLE ADDRESS
   9091	025776	016504 	000002 			MOV	TTYEXP(R5),R4	;;;SET UP EXTERNAL PAGE ADDRESS FOR CONTROLLER
   9092	026002	001413 				BEQ	30$		;;;DONE WITH ALL EXISTING CONTROLLERS
   9093	026004				20$:
   9094	026004	012746 	026004'			MOV	#20$,-(SP)	;;;SET RETURN ADDRESS IN CASE OF PDP11 CHAR
   9095	026010	016446 	000002 			MOV	2(R4),-(SP)	;;;GET NEXT BYTE FROM CONTROLLER SILO
   9096	026014	100415 				BMI	50$		;;;PROCESS CHARACTER FROM LINE IF THERE
   9097	026016				25$:				;;; +++012
   9098	026016	022626 				CMP	(SP)+,(SP)+	;;;REMOVE NULL CHARACTER AND RETURN ADDRESS
   9099	026020	013705 	022656'			MOV	DHSTSV,R5	;;;FIND THIS DH
   9100	026024	062705 	000200 			ADD	#16.*8.,R5	;;;MOVE TO NEXT DH
   9101	026030	000760 				BR	10$		;;;TRY NEXT DH
   9102						;
   9103	026032				30$:
   9104	026032	032737 	040000 	031114'		BIT	#EF.PR1,.COMEF+2 ;;;PRIMARY PROTOCOL?
   9105	026040	001402 				BEQ	40$		;;;NO -- DON'T BOTHER IT
   9106	026042					CALL	..STQ		;;;START TO 10 QUEUE IF POSSIBLE
	026042	004737 	043630'			JSR	PC,..STQ
   9107	026046				40$:
   9108	026046					RETURN			;;;RETURN TO CALLER -- ALL FINISHED
	026046	000207 				RTS	PC
   9109	026050				50$:
   9110	026050	116605 	000001 			MOVB	1(SP),R5	;;; +++008 GET THE LINE NUMBER
   9111	026054	042705 	177760 			BIC	#^C17,R5	;;; +++008 GET RID OF ERRORS, ETC.
   9112	026060	006305 				ASL	R5		;;; +++008 MAKE A TABLE POINTER TO LINE WTHIN MUX
   9113	026062	006305 				ASL	R5		;;; +++008
   9114	026064	006305 				ASL	R5		;;; +++008
   9115	026066	063705 	022656'			ADD	DHSTSV,R5	;;; +++008 FROM BASE OF CONTROLLER TABLE
   9116	026072	032765 	000010 	000006 		BIT	#TT.ABW,STSW1(R5) ;;; +++008 IN AUTO-BAUD WAIT??
   9117	026100	001473 				BEQ	TTSTCH		;;; +++012 NO -- STORE CHARACTER AND EXIT
   9118						;
   9119	026102				55$:				;;; +++012
   9120	026102	005002 				CLR	R2		;;; +++008 CLEAR COUNTER
   9121	026104	012701 	000011 			MOV	#11,R1		;;; +++008 LOOP COUNT TO R1
TTYDRR	- GENERAL TTY HANDLER	MACRO M1108  16-DEC-77 11:28  PAGE 127-1
TTY DRIVER -- $DHINP (DH11 INPUT INTERRUPT)

   9122	026110				60$:
   9123	026110	121662 	026162'			CMPB	(SP),CHTBL(R2)	;;; +++008 MATCH A BIT PATTERN??
   9124	026114	001403 				BEQ	70$		;;; +++008 YES -- DONE
   9125	026116	005202 				INC	R2		;;; +++008 NO -- NEXT PATTERN
   9126	026120	077105 				SOB	R1,60$		;;; +++008 TRY AGAIN
   9127	026122	000470 				BR	TTINPB		;;; +++008 NO MATCH -- FLUSH CHRARACTER AND DISMISS
   9128						;
   9129	026124				70$:				;;; +++008 HERE ON BIT PATTERN MATCH
   9130	026124	042765 	000010 	000006 		BIC	#TT.ABW,STSW1(R5) ;;; +++008 NO LONGER IN AUTO-BAUD WAIT
   9131	026132	006302 				ASL	R2		;;; +++008 FIND WORD INDEX
   9132	026134	016203 	026174'			MOV	BAUDTB(R2),R3	;;; +++008 LINE SPEED WORD TO R3
   9133	026140					CALL	.DHSPD		;;; +++008 SET THE LINE SPEED
	026140	004737 	027430'			JSR	PC,.DHSPD
   9134	026144					CALL	.DHSPF		;;; +++008 FLAG THE NEW SPEED
	026144	004737 	027400'			JSR	PC,.DHSPF
   9135	026150	010446 				MOV	R4,-(SP)	;;; +++008 SAVE R4
   9136	026152					CALL	.STTYD		;;; +++008 RING THE LINE
	026152	004737 	027650'			JSR	PC,.STTYD
   9137	026156	012604 				MOV	(SP)+,R4	;;; +++008 RESTORE R4
   9138	026160	000451 				BR	TTINPB		;;; +++008 DISMISS THE INTERRUPT
   9139						;
   9140	026162				CHTBL:
   9141	026162	   214 				.BYTE	214		; <CR> AT 110 BAUD
   9142	026163	   213 				.BYTE	213		; <CR> AT 110 BAUD
   9143	026164	   346 				.BYTE	346		; <CR> AT 150 BAUD
   9144	026165	   015 				.BYTE	15		; <CR> AT 300 BAUD
   9145	026166	   215 				.BYTE	215		; <CR> AT 300 BAUD
   9146	026167	   174 				.BYTE	174		; <^C> AT 110 BAUD
   9147	026170	   036 				.BYTE	36		; <^C> AT 150 BAUD
   9148	026171	   203 				.BYTE	203		; <^C> AT 300 BAUD
   9149	026172	   003 				.BYTE	3		; <^C> AT 300 BAUD
   9150					.EVEN
   9151
   9152	026174				BAUDTB:
   9153	026174	006307 				.WORD	6307		; 110 BAUD
   9154	026176	006307 				.WORD	6307		; 110 BAUD
   9155	026200	012503 				.WORD	12503		; 150 BAUD
   9156	026202	016703 				.WORD	16703		; 300 BAUD
   9157	026204	016703 				.WORD	16703		; 300 BAUD
   9158	026206	006307 				.WORD	6307		; 110 BAUD
   9159	026210	012503 				.WORD	12503		; 150 BAUD
   9160	026212	016703 				.WORD	16703		; 300 BAUD
   9161	026214	016703 				.WORD	16703		; 300 BAUD
   9162
TTYDRR	- GENERAL TTY HANDLER	MACRO M1108  16-DEC-77 11:28  PAGE 128
TTY DRIVER -- $TTINP (DL11 INPUT INTERRUPT)

   9164						.SBTTL	TTY DRIVER -- $TTINP (DL11 INPUT INTERRUPT)
   9165					;+
   9166					; **-$TTINP-DL11 TERMINAL INPUT INTERRUPTS
   9167					;-
   9168						.ENABL	LSB
   9169	026216				$TTINP::			;;;REF LABEL
   9170	026216	013737 	177776 	022652'		MOV	@#PS,DLTMP	;;;SAVE CONTROLLER NUMBER
   9171	026224					CALL	R3,TTSAV	;;;SAVE R3 AND SETUP R4 AND R5
	026224	004337 	027270'			JSR	R3,TTSAV
   9172	026230	011400 				MOV	(R4),R0		;;;GET STATUS
   9173	026232	100470 				BMI	DLINT		;;;THIS IS MODEM INTERRUPT.
   9174	026234				TTINPA:				;;; +++005
   9175	026234	020537 	031222'			CMP	R5,KLNPTR	;;; +++005 IS THIS THE KLINIK LINE??
   9176	026240	001003 				BNE	5$		;;; +++005 NO -- GO ON
   9177	026242	105737 	031342'			TSTB	.KLNSW+0	;;; +++005 YES -- IS KLINIK ACTIVE??
   9178	026246	001461 				BEQ	90$		;;; +++005 NO -- GO AWAY
   9179	026250				5$:				;;; +++005
   9180	026250	005765 	000004 			TST	STSW0(R5)	;;; +++005 YES -- IS THIS LINE TURNED OFF??
   9181	026254	001056 				BNE	90$		;;; +++005 YES -- GO AWAY
   9182	026256	016446 	000002 			MOV	2(R4),-(SP)	;;; +++009 GET INPUT BYTE AND FLAGS
   9183	026262	032716 	020000 			BIT	#DL.FER,(SP)	;;; +++009 FRAMING ERROR PRESENT??
   9184	026266	001006 				BNE	TTINPB		;;; +++009 YES -- FORGET IT
   9185	026270				TTSTCH:
   9186	026270	032765 	000400 	000006 		BIT	#TT.CTY,STSW1(R5) ;;;IS THIS THE CTY?
   9187	026276	001004 				BNE	30$		;;;YES -- SPECIAL CASE
   9188	026300				10$:
   9189	026300					CALL	..STCH		;;;STORE CHARACTER WITH PARITY
	026300	004737 	043112'			JSR	PC,..STCH
   9190	026304				TTINPB:				;;; +++008
   9191	026304				20$:
   9192	026304	005726 				TST	(SP)+		;;;REMOVE THE CHARACTER
   9193	026306					RETURN			;;;AND EXIT
	026306	000207 				RTS	PC
   9194	026310				30$:
   9195	026310	013705 	031220'			MOV	CTYPTR,R5	;;; +++005 POINT TO REAL CTY
   9196	026314	011600 				MOV	(SP),R0		;;;GET THE CHARACTER AND
   9197	026316	042700 	177600 			BIC	#^C177,R0	;;;MASK OFF PARITY
   9198	026322	122700 	000003 			CMPB	#'C-100,R0	;;;^C?
   9199	026326	001006 				BNE	40$		;;;NO -- DON'T SET EVENT FLAG
   9200	026330	052737 	100000 	031114'		BIS	#EF.CTC,.COMEF+2 ;;;TELL THE MONITOR
   9201	026336	152737 	000001 	031116'		BISB	#EV.SE,.SERFG+0	;;;THIS IS SIGNIFICANT.
   9202	026344				40$:
   9203	026344	123700 	031214'			CMPB	.BRKCH,R0	;;;NULL CHARACTER?
   9204	026350	001007 				BNE	50$		;;;NO -- ALL OK
   9205	026352	052737 	000200 	032636'		BIS	#EF.RQM,TTYTSK+A.EF ;;;START PARSER TASK
   9206	026360	152737 	000001 	031116'		BISB	#EV.SE,.SERFG+0
   9207	026366	000746 				BR	20$		;;;IGNORE CHARACTER
   9208						;
   9209	026370				50$:
   9210	026370	005737 	031216'			TST	.TTP11		;;;IS THIS PDP11 INPUT?
   9211	026374	001066 				BNE	TTCTY		;;;YES -- GO DO ECHO ETC
   9212	026376	032737 	020000 	031114'		BIT	#EF.PR2,.COMEF+2 ;;;IS THIS BOOT PROTOCOL?
   9213	026404	001735 				BEQ	10$		;;;NO -- THEN JUST TREAT IT AS A NORMAL REQUEST
   9214	026406	112637 	031300'			MOVB	(SP)+,.BTSCH	;;;STORE CHARACTER FOR BOOT PROTOCOL
   9215	026412				90$:
   9216	026412					RETURN
	026412	000207 				RTS	PC
TTYDRR	- GENERAL TTY HANDLER	MACRO M1108  16-DEC-77 11:28  PAGE 128-1
TTY DRIVER -- $TTINP (DL11 INPUT INTERRUPT)

   9217						.DSABL	LSB
TTYDRR	- GENERAL TTY HANDLER	MACRO M1108  16-DEC-77 11:28  PAGE 129
TTY DRIVER -- DLINT (DL11-E DATASET INTERRUPT SERVICE)

   9219						.SBTTL	TTY DRIVER -- DLINT (DL11-E DATASET INTERRUPT SERVICE)
   9220					;+
   9221					;	DLINT -- DL11E DATASET INTERRUPT SERVICE
   9222					;
   9223					; ENTER WITH:
   9224					;
   9225					;	R0 -- CSR FOR THIS DEVICE
   9226					;	R4 -- POINTS TO EXTERNAL PAGE FOR THIS DEVICE
   9227					;	R5 -- POINTS TO DLS ENTRY FOR THIS DEVICE
   9228					;
   9229					;-
   9230
   9231	026414				DLINT::
   9232	026414	032765 	000100 	000006 		BIT	#TT.RMT,STSW1(R5);;; +++005 REMOTE TERMINAL?
   9233	026422	001450 				BEQ	20$		;;; +++005 NO -- NOISE - GO AWAY
   9234	026424	032700 	040000 			BIT	#DL.RNG,R0	;;; +++005 YES -- DID IT RING?
   9235	026430	001417 				BEQ	10$		;;; +++005 NO -- GO LOOK AT CARRIER
   9236	026432	012714 	000046 			MOV	#DL.DTR!DL.DEN!DL.RTS,(R4)
   9237									;;; +++005 SET UP TO WAIT FOR CARRIER
   9238	026436	020537 	031222'			CMP	R5,KLNPTR	;;; +++005 IS THIS THE KLINIK LINE??
   9239	026442	001012 				BNE	10$		;;; +++005 NO -- GO ON
   9240	026444	105737 	031342'			TSTB	.KLNSW+0	;;; +++005 YES -- ALREADY ACTIVE?
   9241	026450	001007 				BNE	10$		;;; +++005 YES -- NOISE - GO ON
   9242	026452	052737 	001000 	032636'		BIS	#EF.RKR,TTYTSK+A.EF ;;; +++005 NO -- REQUEST KLR
   9243	026460	152737 	000001 	031116'		BISB	#EV.SE,.SERFG+0	;;; +++005 REQUEST THE KLINIK RING TASK
   9244	026466	000430 				BR	90$		;;; +++005 AND LET IT HANDLE CARRIER
   9245						;
   9246	026470				10$:
   9247	026470	032700 	010000 			BIT	#DL.CAR,R0	;;; +++005 CARRIER DETECT UP?
   9248	026474	001415 				BEQ	15$		;;; +++005 NO -- GO LOOK AT DATA TERMINAL READY
   9249	026476	042765 	002004 	000006 		BIC	#TT.CRW!TT.RIP,STSW1(R5)
   9250	026504	052714 	000100 			BIS	#DL.REN,(R4)	;;; +++005 ENABLE RCVR INTERRUPTS
   9251	026510	020537 	031222'			CMP	R5,KLNPTR	;;; +++005 IS THIS THE KLINIK LINE??
   9252	026514	001413 				BEQ	20$		;;; +++005 YES -- GO ON
   9253	026516	010446 				MOV	R4,-(SP)	;;; +++005 NO -- SAVE R4
   9254	026520					CALL	.STTYD		;;; +++005 TELL -10 ABOUT DIALUP
	026520	004737 	027650'			JSR	PC,.STTYD
   9255	026524	012604 				MOV	(SP)+,R4	;;; +++005 RESTORE R4
   9256	026526	000406 				BR	20$		;;; +++005 AND GO AWAY
   9257						;
   9258	026530				15$:				;;; +++005 HERE IF CARRIER IS OFF
   9259	026530	032714 	000002 			BIT	#DL.DTR,(R4)	;;; +++005 DATA TERMINAL READY LIT?
   9260	026534	001403 				BEQ	20$		;;; +++005 NO -- GO ON
   9261	026536	052765 	002004 	000006 		BIS	#TT.CRW!TT.RIP,STSW1(R5)
   9262									;;; +++005 YES -- WAIT FOR CARRIER
   9263	026544				20$:
   9264	026544	105714 				TSTB	(R4)		;;; +++005 RCVR DONE LIT?
   9265	026546	100632 				BMI	TTINPA		;;; +++005 YES -- PROCESS DATA
   9266	026550				90$:
   9267	026550					RETURN
	026550	000207 				RTS	PC
TTYDRR	- GENERAL TTY HANDLER	MACRO M1108  16-DEC-77 11:28  PAGE 130
TTY DRIVER -- TTCTY (CTY SERVICE)

   9269						.SBTTL	TTY DRIVER -- TTCTY (CTY SERVICE)
   9270
   9271						.ENABL	LSB
   9272	026552				TTCTY:
   9273	026552	013705 	031220'			MOV	CTYPTR,R5	;;;RESET TO CTY AND
   9274	026556	012703 	022660'			MOV	#CTYSTS,R3	;;;GET CTY BLOCK POINTER.
   9275	026562	110016 				MOVB	R0,(SP)		;;;USE CHARACTER WITHOUT PARITY.
   9276	026564	132765 	000002 	000006 		BITB	#TT.ECH,STSW1(R5) ;;;ECHO IN PROGRESS?
   9277	026572	001016 				BNE	85$		;;;IF NE YES
   9278	026574	152765 	000002 	000006 		BISB	#TT.ECH,STSW1(R5) ;;;SET ECHO IN PROGRESS
   9279	026602	122716 	000017 			CMPB	#'O-100,@SP	;;;CONTROL O?
   9280	026606	001012 				BNE	95$		;;;IF NE NO
   9281	026610	011346 				MOV	@R3,-(SP)	;;;XOR CTLO BIT
   9282	026612	042716 	177737 			BIC	#^C<CTLO>,@SP	;;;WITH STATUS WORD
   9283	026616	052713 	000040 			BIS	#CTLO,@R3
   9284	026622	042613 				BIC	(SP)+,@R3
   9285	026624				80$:
   9286	026624					CALL	INPT0		;;;CLEAR ECHO IN PROGRESS
	026624	004737 	025214'			JSR	PC,INPT0
   9287					;
   9288					; CONTROLLER IS BUSY ON OUTPUT-IGNORE INPUT REQUEST
   9289					;
   9290	026630				85$:
   9291	026630	005726 				TST	(SP)+		;;;REMOVE BYTE FROM STACK
   9292	026632				90$:
   9293	026632					RETURN			;;;EXIT INTERRUPT
	026632	000207 				RTS	PC
   9294					;
   9295					; CONTROLLER IS BUSY ON INPUT OR OUTPUT
   9296					;
   9297	026634				95$:
   9298	026634	005713 				TST	@R3		;;;BUSY ON INPUT?
   9299	026636	100772 				BMI	80$		;;;IF MI NO
   9300					;
   9301					; PROCESS NEXT INPUT BYTE
   9302					;
   9303	026640				100$:
   9304	026640	122716 	000177 			CMPB	#177,@SP	;;;RUBOUT?
   9305	026644	001453 				BEQ	115$		;;;IF EQ YES
   9306	026646	122716 	000025 			CMPB	#25,@SP		;;;LINE DELETE?
   9307	026652	001477 				BEQ	125$		;;;IF EQ YES
   9308	026654	122716 	000175 			CMPB	#175,@SP	;;;ALTMODE?
   9309	026660	101511 				BLOS	1$		;;;IF LOS YES
   9310	026662	122716 	000033 			CMPB	#33,@SP		;;;ALTMODE?
   9311	026666	001506 				BEQ	1$		;;;IF EQ YES
   9312	026670	122716 	000032 			CMPB	#32,@SP		;;;CONTROL Z?
   9313	026674	001510 				BEQ	11$		;;;IF EQ YES
   9314	026676	122716 	000015 			CMPB	#15,@SP		;;;CARRIAGE RETURN?
   9315	026702	001525 				BEQ	41$		;;;IF EQ YES
   9316	026704	122716 	000003 			CMPB	#3,@SP		;;;^C?
   9317	026710	001511 				BEQ	21$		;;;YES
   9318	026712	122716 	000140 			CMPB	#140,@SP	;;;CHECK FOR LC
   9319	026716	103005 				BHIS	105$		;;;NO
   9320	026720	122716 	000173 			CMPB	#173,@SP
   9321	026724	103402 				BLO	105$
   9322	026726	042716 	000040 			BIC	#40,@SP		;;;YES
   9323					;
TTYDRR	- GENERAL TTY HANDLER	MACRO M1108  16-DEC-77 11:28  PAGE 130-1
TTY DRIVER -- TTCTY (CTY SERVICE)

   9324					; STORE BYTE IN INPUT BUFFER
   9325					;
   9326	026732				105$:
   9327	026732	111673 	000006 			MOVB	@SP,@CURBF(R3)	;;;STORE BYTE IN BUFFER
   9328	026736	005263 	000006 			INC	CURBF(R3)	;;;INCREMENT BUFFER ADDRESS
   9329	026742	105363 	000004 			DECB	RMBYT(R3)	;;;ANY REMAINING SPACE IN BUFFER
   9330	026746	001004 				BNE	110$		;;;IF NE YES
   9331	026750	005363 	000006 			DEC	CURBF(R3)	;;;BACK UP TO END OF BUFFER
   9332	026754	052713 	000400 			BIS	#EOLS,@R3	;;;TERMINATE ON BYTE COUNT
   9333	026760				110$:
   9334	026760	032713 	000020 			BIT	#RUBP,@R3	;;;RUBOUT IN PROGRESS?
   9335	026764	001500 				BEQ	61$		;;;IF EQ NO
   9336	026766	042713 	000020 			BIC	#RUBP,@R3	;;;CLEAR RUBOUT IN PROGRESS
   9337	026772	000417 				BR	120$		;;;
   9338						;
   9339					;
   9340					; RUBOUT
   9341					;
   9342	026774				115$:
   9343	026774	026363 	000006 	000002 		CMP	CURBF(R3),STRBF(R3) ;;;ANY BYTES TO RUBOUT?
   9344	027002	001710 				BEQ	80$		;;;IF EQ NO
   9345	027004	005363 	000006 			DEC	CURBF(R3)	;;;BACK UP ONE BYTE
   9346	027010	117316 	000006 			MOVB	@CURBF(R3),@SP	;;;GET BYTE TO BE RUBBED OUT
   9347	027014	105263 	000004 			INCB	RMBYT(R3)	;;;INCREMENT REMAINING SPACE IN BUFFER
   9348	027020	032713 	000020 			BIT	#RUBP,@R3	;;;RUBOUT ALREADY IN PROGRESS?
   9349	027024	001060 				BNE	61$		;;;IF NE YES
   9350	027026	052713 	000020 			BIS	#RUBP,@R3	;;;SET RUBOUT IN PROGRESS
   9351	027032				120$:
   9352	027032	000316 				SWAB	@SP		;;;SWAP BYTE TO HIGH BYTE
   9353	027034	112716 	000134 			MOVB	#'\,@SP		;;;INSERT BACKSLASH
   9354	027040	011663 	000014 			MOV	@SP,MBUFR(R3)	;;;INSERT TEXT IN MULTI-ECHO BUFFER
   9355	027044	012716 	000002 			MOV	#2,@SP		;;;SET LENGTH OF BUFFER
   9356	027050	000457 				BR	81$		;;;
   9357						;
   9358					;
   9359					; LINE DELETE
   9360					;
   9361	027052				125$:
   9362	027052	012716 	000004 			MOV	#4,@SP		;;;SET LENGTH OF BUFFER
   9363	027056	012746 	022734'			MOV	#CTRLU,-(SP)	;;;SET ADDRESS OF MULTI-ECHO BUFFER
   9364	027062	042713 	000020 			BIC	#RUBP,@R3	;;;CLEAR RUBOUT IN PROGRESS FLAG
   9365	027066	013763 	022720'	000004 		MOV	CNT,RMBYT(R3)	;;;RESET REMAINING BYTES IN BUFFER
   9366	027074	016363 	000002 	000006 		MOV	STRBF(R3),CURBF(R3) ;;;RESET ADDRESS IN BUFFER
   9367	027102	000445 				BR	91$		;;;
   9368						;
   9369					;
   9370					; ALTMODE CODES 33, 175, AND 176
   9371					;
   9372	027104				1$:
   9373	027104	105016 				CLRB	@SP		;;;SET TO ECHO ZERO BYTE
   9374	027106	112763 	000033 	000005 		MOVB	#33,FNBYT(R3)	;;;SET FINAL BYTE
   9375	027114	000422 				BR	51$		;;;SET END OF LINE SEEN
   9376						;
   9377					;
   9378					; CONTROL Z
   9379					;
   9380	027116				11$:
TTYDRR	- GENERAL TTY HANDLER	MACRO M1108  16-DEC-77 11:28  PAGE 130-2
TTY DRIVER -- TTCTY (CTY SERVICE)

   9381	027116	105363 	000005 			DECB	FNBYT(R3)	;;;SET CONTROL Z FLAG
   9382	027122	012716 	000004 			MOV	#4,@SP
   9383	027126	012746 	022740'			MOV	#CTRLZ,-(SP)	;;;SET ADDRESS OF MULTI-ECHO BUFFER
   9384	027132	000406 				BR	31$
   9385						;
   9386					;
   9387					; CONTROL C
   9388					;
   9389	027134				21$:
   9390	027134	111663 	000005 			MOVB	@SP,FNBYT(R3)	;;;SET IN LAST CHARACTER
   9391	027140	012716 	000004 			MOV	#4,@SP		;;;SET COUNT
   9392	027144	012746 	022730'			MOV	#CTRLC,-(SP)	;;;SET  CNTRL C
   9393	027150				31$:
   9394	027150	052713 	000400 			BIS	#EOLS,@R3	;;;SET END OF LINE
   9395	027154	000420 				BR	91$		;;;AND ECHO
   9396						;
   9397					;
   9398					; CARRIAGE RETURN /CNTRL Z
   9399					;
   9400	027156				41$:
   9401	027156	111663 	000005 			MOVB	@SP,FNBYT(R3)
   9402	027162				51$:
   9403	027162	052713 	000400 			BIS	#EOLS,@R3	;;;SET END OF LINE SEEN
   9404	027166				61$:
   9405	027166	032713 	074000 			BIT	#LFCT,@R3	;;;ANY LINE FEEDS WAITING?
   9406	027172	001002 				BNE	71$		;;;IF NE YES
   9407	027174	000137 	025262'			JMP	ECHOB		;;;ECHO BYTE
   9408						;
   9409	027200				71$:
   9410	027200	111663 	000014 			MOVB	@SP,MBUFR(R3)	;;;SET FOR MULTI-ECHO OF ONE BYTE
   9411	027204	012716 	000001 			MOV	#1,@SP		;;;SET LENGTH OF BUFFER
   9412	027210				81$:
   9413	027210	010346 				MOV	R3,-(SP)	;;;CALCULATE ADDRESS OF MULTI-ECHO BUFFER
   9414	027212	062716 	000014 			ADD	#MBUFR,@SP	;;;
   9415	027216				91$:
   9416	027216	012663 	000012 			MOV	(SP)+,MEBUF(R3)	;;;INSERT ADDRESS OF MULTI-ECHO BUFFER
   9417	027222	112663 	000010 			MOVB	(SP)+,MECNT(R3)	;;;INSERT LENGTH OF BUFFER
   9418	027226	000137 	025010'			JMP	OUTPT		;;;START OUTPUT
   9419						;
   9420						.DSABL	LSB
TTYDRR	- GENERAL TTY HANDLER	MACRO M1108  16-DEC-77 11:28  PAGE 131
TTY DRIVER -- DHSAV (DH11 REGISTER SAVE/RESTORE CO-ROUTINE)

   9422						.SBTTL	TTY DRIVER -- DHSAV (DH11 REGISTER SAVE/RESTORE CO-ROUTINE)
   9423
   9424					; DH11 TERMINAL MULTIPLEXER SAVE ROUTINE
   9425					;
   9426					; THIS ROUTINE SAVES R0 THRU R5 ON THE STACK AND RETURNS:
   9427					;
   9428					;	R4 -- POINTS TO EXTERNAL PAGE FOR THIS DEVICE (UNIT)
   9429					;	R5 -- POINTS TO THE DLS ENTRY FOR THIS DEVICE (UNIT)
   9430					;
   9431						.ENABL LSB
   9432	027232				DHSAV:
   9433	027232	010046 				MOV	R0,-(SP)	;SAVE REGISTERS
   9434	027234	010146 				MOV	R1,-(SP)
   9435	027236	010246 				MOV	R2,-(SP)
   9436	027240	010446 				MOV	R4,-(SP)
   9437	027242	010546 				MOV	R5,-(SP)
   9438	027244	010346 				MOV	R3,-(SP)	;;;SET RETURN ADDRESS
   9439	027246	013705 	022654'			MOV	DHTMP,R5	;;;RET SAVED PS WORD
   9440	027252	042705 	177760 			BIC	#177760,R5	;;;CLEAR ALL BUT CONTROLLER NUMBER
   9441	027256	000305 				SWAB	R5		;;;CONVERT TO WORD INDEX
   9442	027260	006205 				ASR	R5
   9443	027262	062705 	035176'			ADD	#DHTBL,R5	;;;POINT TO THE BEGINNING OF DH TABLE
   9444	027266	000417 				BR	20$		;;;FINISH IN COMMON CODE
   9445						;
   9446					;
   9447					; DL11 TERMINAL SAVE ROUTINE
   9448					;
   9449	027270				TTSAV:
   9450	027270	010046 				MOV	R0,-(SP)	;SAVE REGISTERS
   9451	027272	010146 				MOV	R1,-(SP)
   9452	027274	010246 				MOV	R2,-(SP)
   9453	027276	010446 				MOV	R4,-(SP)
   9454	027300	010546 				MOV	R5,-(SP)
   9455	027302	010346 				MOV	R3,-(SP)	;;;SET RETURN ADDRESS
   9456	027304	013705 	022652'			MOV	DLTMP,R5	;;;RETRIEVE SAVED PS WORD
   9457	027310	042705 	177760 			BIC	#177760,R5	;;;CLEAR ALL BUT CONTROLLER (UNIT) NUMBER
   9458	027314	006305 				ASL	R5		;;;CONVERT TO WORD INDEX
   9459	027316	006305 				ASL	R5
   9460	027320	006305 				ASL	R5
   9461	027322	062705 	035126'			ADD	#TTTBL,R5	;;;POINT TO THE BEGINNING OF THE DL TABLE
   9462	027326				20$:
   9463	027326	016504 	000002 			MOV	TTYEXP(R5),R4	;;;SET UP EXTERNAL PAGE ADDRESS OF THIS DEVICE
   9464	027332					CALL	@(SP)+		;;;CALL THE CALLER BACK
	027332	004736 				JSR	PC,@(SP)+
   9465	027334	012605 				MOV	(SP)+,R5	;;;RESTORE REGISTERS
   9466	027336	012604 				MOV	(SP)+,R4
   9467	027340	012602 				MOV	(SP)+,R2
   9468	027342	012601 				MOV	(SP)+,R1
   9469	027344	012600 				MOV	(SP)+,R0
   9470	027346	012603 				MOV	(SP)+,R3
   9471	027350	000137 	004146'			JMP	..INTX		;;;EXIT FROM INTERRUPT
   9472						;
   9473						.DSABL	LSB
TTYDRR	- GENERAL TTY HANDLER	MACRO M1108  16-DEC-77 11:28  PAGE 132
TTY DRIVER -- .DHSPD (DH-11 AUTO-BAUD SUPPORT)

   9475						.SBTTL	TTY DRIVER -- .DHSPD (DH-11 AUTO-BAUD SUPPORT)
   9476
   9477					;	.DHSPR -- RESET A DH-11 LINE TO DEFAULT AUTO-BAUD SPEED
   9478					;
   9479					;	R5 -- POINTS TO DLS TABLE ENTRY FOR THIS DH-11 LINE
   9480					;
   9481
   9482						.ENABL	LSB
   9483
   9484	027354				.DHSPR::
   9485	027354	016546 	000004 			MOV	STSW0(R5),-(SP) ;;; SAVE LINE SPEED WORD AS FLAG
   9486	027360	010346 				MOV	R3,-(SP)	;;; SAVE R3
   9487	027362	012703 	016703 			MOV	#16703,R3	;;; DEFAULT LINE SPEED TO R3 (300 BAUD)
   9488	027366					CALL	.DHSPD		;;; SET IT
	027366	004737 	027430'			JSR	PC,.DHSPD
   9489	027372	012603 				MOV	(SP)+,R3	;;; RESTORE R3
   9490	027374	005726 				TST	(SP)+		;;; HAS THE TASK BEEN BLOCKED??
   9491	027376	100402 				BMI	10$		;;; YES -- DON'T COUNT THIS LINE
   9492					;
   9493					;	.DHSPF -- FLAG LINE SPEED TO BE REPORTED TO KL
   9494					;
   9495					;	R5 -- POINTS TO DLS TABLE ENTRY FOR THIS DH-11 LINE
   9496					;
   9497
   9498	027400				.DHSPF::
   9499	027400	005237 	031364'			INC	.ABCNT		;;; INCREMENT THE COUNT
   9500	027404				10$:
   9501	027404	052765 	100000 	000004 		BIS	#BIT15,STSW0(R5) ;;; FLAG THE LINE SPEED
   9502	027412	052737 	004000 	032636'		BIS	#EF.RSS,TTYTSK+A.EF ;;; REQUEST THE TASK
   9503	027420	152737 	000001 	031116'		BISB	#EV.SE,.SERFG+0	;;; DECLARE A SIGNIFICANT EVENT
   9504	027426	000426 				BR	30$		;;; AND EXIT
   9505						;
   9506					;
   9507					;	.DHSPD -- SET LINE SPEED FOR A DH-11 LINE
   9508					;
   9509					;	R3 -- LINE SPEED TO BE SET
   9510					;	R5 -- POINTS TO DLS TABLE ENTRY FOR THIS DH-11 LINE
   9511					;
   9512
   9513	027430				.DHSPD::
   9514	027430	010446 				MOV	R4,-(SP)	;;; SAVE R4
   9515	027432	010146 				MOV	R1,-(SP)	;;; AND R1
   9516	027434	010501 				MOV	R5,R1		;;; TABLE POINTER TO R1
   9517	027436	162701 	035176'			SUB	#DHTBL,R1	;;; COMPUTE DH-11 LINE NUMBER
   9518	027442	100416 				BMI	20$		;;; DON'T TOUCH DL-11
   9519	027444	006201 				ASR	R1		;;; NOW COMPUTE UNIT NUMBER
   9520	027446	006201 				ASR	R1
   9521	027450	006201 				ASR	R1
   9522	027452	042701 	177760 			BIC	#^C17,R1	;;; WITHIN THIS CONTROLLER
   9523	027456	016504 	000002 			MOV	TTYEXP(R5),R4	;;; POINT TO I/O PAGE
   9524	027462	042714 	001077 			BIC	#1077,(R4)	;;; CLEAR OUT OLD LINE
   9525	027466	050114 				BIS	R1,(R4)		;;; SET THE NEW LINE NUMBER
   9526	027470	010364 	000004 			MOV	R3,4(R4)	;;; SET THE NEW LINE SPEED
   9527	027474	010365 	000004 			MOV	R3,STSW0(R5)	;;; MARK IT IN LINE TABLE TOO
   9528	027500				20$:
   9529	027500	012601 				MOV	(SP)+,R1	;;; RESTORE R1
   9530	027502	012604 				MOV	(SP)+,R4	;;; AND R4
TTYDRR	- GENERAL TTY HANDLER	MACRO M1108  16-DEC-77 11:28  PAGE 132-1
TTY DRIVER -- .DHSPD (DH-11 AUTO-BAUD SUPPORT)

   9531	027504				30$:
   9532	027504					RETURN			;;; TO CALLER
	027504	000207 				RTS	PC
   9533
   9534						.DSABL	LSB
TTYDRR	- GENERAL TTY HANDLER	MACRO M1108  16-DEC-77 11:28  PAGE 133
TTY DRIVER -- $DMINT (DM11 MODEM CONTROL INTERRUPT)

   9536						.SBTTL	TTY DRIVER -- $DMINT (DM11 MODEM CONTROL INTERRUPT)
   9537					;+
   9538					; **-$DMINT-DM11-BB MODEM CONTROL MULTIPLEXER INTERRUPTS
   9539					;-
   9540						.ENABL	LSB
   9541	027506				$DMINT::			;;;REF LABEL
   9542	027506	013737 	177776 	022650'		MOV	@#PS,DMTMP	;;;SAVE CONTROLLER NUMBER
   9543	027514					CALL	R3,TTSAV	;;;SAVE REGISTERS
	027514	004337 	027270'			JSR	R3,TTSAV
   9544	027520	013703 	022650'			MOV	DMTMP,R3	;;;RETRIEVE SAVED PS WORD
   9545	027524	042703 	177760 			BIC	#177760,R3	;;;CLEAR ALL BUT CONTROLLER NUMBER
   9546	027530	006303 				ASL	R3		;;;CONVERT TO WORD INDEX
   9547	027532	006303 				ASL	R3		;;;
   9548	027534	016304 	035062'			MOV	DMTBL(R3),R4	;;;GET ADDRESS OF DM11-BB CSR
   9549	027540	012405 				MOV	(R4)+,R5	;;;GET INTERRUPT STATUS
   9550	027542	042705 	177760 			BIC	#177760,R5	;;;CLEAR ALL BUT UNIT NUMBER
   9551	027546	006305 				ASL	R5		;;;CONVERT UNIT NUMBER TO WORD INDEX
   9552	027550	006305 				ASL	R5		;;;
   9553	027552	006305 				ASL	R5		;;;
   9554	027554	066305 	035064'			ADD	DMTBL+2(R3),R5	;;;CALCULATE ADDRESS OF DHTBL ADDRESS
   9555	027560	005737 	031362'			TST	.INHDM		;;;DM INHIBITED?
   9556	027564	001405 				BEQ	10$		;;; NO -- GO ON
   9557	027566	052714 	000001 			BIS	#1,@R4		;;;SET RING ENABLE
   9558	027572	042744 	001200 			BIC	#1200,-(R4)	;;;RE ENABLE SCAN
   9559	027576					RETURN			;;;RETURN
	027576	000207 				RTS	PC
   9560	027600				10$:
   9561	027600	052714 	000007 			BIS	#7,@R4		;;;SET REQUEST SEND+DATA ENABLE+RING ENABLE
   9562	027604	011402 				MOV	@R4,R2		;;;GET UNIT STATUS
   9563	027606	005102 				COM	R2		;;;COMPLEMENT UNIT STATUS
   9564	027610	042744 	001200 			BIC	#1200,-(R4)	;;;REENABLE SCANNING
   9565					;
   9566					; CARRIER OR CLEAR TO SEND TRANSITION
   9567					;
   9568	027614	032702 	000140 			BIT	#140,R2		;;;CARRIER AND CLEAR TO SEND SET?
   9569	027620	001030 				BNE	40$		;;;IF NE NO
   9570					;
   9571					; RING TRANSITION
   9572					;
   9573	027622	042765 	002004 	000006 		BIC	#TT.CRW!TT.RIP,STSW1(R5) ;;;CLEAR CARRIER WAIT
   9574	027630	032765 	010000 	000006 		BIT	#TT.ABL,STSW1(R5) ;;; +++008 AN AUTO-BAUD LINE??
   9575	027636	001404 				BEQ	.STTYD		;;; +++008 NO -- GO ON
   9576	027640	052765 	000010 	000006 		BIS	#TT.ABW,STSW1(R5) ;;; +++008 YES -- MARK AUTO-BAUD WAIT
   9577	027646	000414 				BR	30$		;;; +++008 AND EXIT
   9578						;
   9579	027650				.STTYD::			;;; +++008
   9580	027650	012701 	000015 			MOV	#BC.TDU,R1	;;;DIALUP FUNCTION
   9581	027654				.STTYH::			;;; +++006
   9582	027654	010504 				MOV	R5,R4		;;;SET UP TO RETURN DIALUP OR HANGUP
   9583	027656	162704 	035126'			SUB	#DLTBL,R4	;;;FIND UNIT NUMBER IN R4
   9584	027662	006204 				ASR	R4		;;;DIVIDE BY 8
   9585	027664	006204 				ASR	R4
   9586	027666	006204 				ASR	R4
   9587	027670	012703 	000004 			MOV	#D.CDLS,R3	;;;DATA LINE SCANNER
   9588	027674					CALL	..STFC		;;;START FUNCTION
	027674	004737 	043252'			JSR	PC,..STFC
   9589	027700				30$:
TTYDRR	- GENERAL TTY HANDLER	MACRO M1108  16-DEC-77 11:28  PAGE 133-1
TTY DRIVER -- $DMINT (DM11 MODEM CONTROL INTERRUPT)

   9590	027700					RETURN
	027700	000207 				RTS	PC
   9591	027702				40$:
   9592	027702	052765 	002004 	000006 		BIS	#TT.CRW!TT.RIP,STSW1(R5) ;;;SET CARRIER WAIT
   9593	027710					RETURN			;;;RETURN FROM INTERRUPT
	027710	000207 				RTS	PC
   9594						.DSABL	LSB
TTYDRR	- GENERAL TTY HANDLER	MACRO M1108  16-DEC-77 11:28  PAGE 134
TTY DRIVER -- .DMHUP (DM11 HANGUP)

   9596						.SBTTL	TTY DRIVER -- .DMHUP (DM11 HANGUP)
   9597					;
   9598					; SUBROUTINE TO HANG UP A DM11-BB UNIT IF NOT READY
   9599					;
   9600	027712				.DMHUP::
   9601	027712	032765 	000100 	000006 		BIT	#TT.RMT,STSW1(R5) ;;;REMOTE TTY??
   9602	027720	001435 				BEQ	30$		;;;NO -- FORGET IT
   9603	027722	032737 	040000 	031114'		BIT	#EF.PR1,.COMEF+2 ;;;PRIMARY PROTOCOL?
   9604	027730	001431 				BEQ	30$		;;;NO -- DON'T DO THE HANGUP NOW -- WAIT FOR PRIMARY
   9605	027732	042765 	002014 	000006 		BIC	#TT.CRW!TT.ABW!TT.RIP,STSW1(R5) ;;; +++008 CLEAR CARRIER WAIT AND ENABLE UNIT
   9606	027740	042711 	001040 			BIC	#1040,@R1	;;;DISABLE SCAN
   9607	027744				10$:
   9608	027744	032711 	000020 			BIT	#20,@R1		;;;SCAN STOPPED?
   9609	027750	001375 				BNE	10$		;;;IF NE NO
   9610	027752	042711 	001017 			BIC	#1017,@R1	;;;CLEAR CURRENT UNIT
   9611	027756	050421 				BIS	R4,(R1)+ 	;;;SELECT DESIRED UNIT
   9612	027760	012711 	000001 			MOV	#1,@R1		;;;ENABLE RING INTERRUT
   9613	027764	010446 				MOV	R4,-(SP)
   9614	027766	010346 				MOV	R3,-(SP)	;;;SAVE REGISTERS
   9615	027770	010146 				MOV	R1,-(SP)
   9616	027772	012701 	000016 			MOV	#BC.THU,R1	;;;SEND HANGUP
   9617	027776					CALL	.STTYH		;;; +++006 SEND TO 10
	027776	004737 	027654'			JSR	PC,.STTYH
   9618	030002	012601 				MOV	(SP)+,R1	;;;RESTORE
   9619	030004	012603 				MOV	(SP)+,R3
   9620	030006	012604 				MOV	(SP)+,R4
   9621	030010				20$:
   9622	030010	052741 	000140 			BIS	#140,-(R1)	;;;RESTART SCAN AND ENABLE INTERRUPT
   9623	030014				30$:
   9624	030014					RETURN			;;;
	030014	000207 				RTS	PC
TTYDRR	- GENERAL TTY HANDLER	MACRO M1108  16-DEC-77 11:28  PAGE 135
TTY DRIVER -- .DLHUP (DL11E HANGUP)

   9626						.SBTTL	TTY DRIVER -- .DLHUP (DL11E HANGUP)
   9627					;+
   9628					; THIS ROUTINE SERVICES A DL11-E HANGUP REQUEST.
   9629					; IF THE KLINIK LINE IS ACTIVE, THE KLINIK DISCONNECT TASK, KLD, IS
   9630					; REQUESTED. OTHERWISE THE LINE IS HUNG UP HERE
   9631					;
   9632					; INPUT ARGUMENTS:
   9633					;
   9634					;	R5 POINTS TO THE DLS TABLE ENTRY FOR THIS INE
   9635					;
   9636					; OUTPUT ARGUMENTS:
   9637					;
   9638					;	NONE.
   9639					;-
   9640
   9641	030016				.DLHUP::
   9642	030016	032765 	000100 	000006 		BIT	#TT.RMT,STSW1(R5) ;;; REMOTE LINE??
   9643	030024	001445 				BEQ	90$		;;; NO -- FORGET IT
   9644	030026	016504 	000002 			MOV	TTYEXP(R5),R4	;;; YES -- SAVE I/O PAGE ADDRESS
   9645	030032	023705 	031222'			CMP	KLNPTR,R5	;;; IS THIS THE KLINIK LINE??
   9646	030036	001015 				BNE	10$		;;; NO -- GO ON
   9647	030040	105737 	031342'			TSTB	.KLNSW+0	;;; YES -- IS IT ACTIVE??
   9648	030044	001424 				BEQ	20$		;;; INACTIVE -- JUST HANG IT UP
   9649	030046	112737 	000002 	031343'		MOVB	#2,.KLNSW+1	;;; FLAG THE DISCONNECT
   9650	030054	052737 	002000 	032636'		BIS	#EF.RKH,TTYTSK+A.EF ;;; REQUEST KLD
   9651	030062	152737 	000001 	031116'		BISB	#EV.SE,.SERFG+0	;;; DECLARE A SIG EVENT
   9652	030070	000423 				BR	90$		;;; AND GO AWAY
   9653						;
   9654	030072				10$:
   9655	030072	032737 	040000 	031114'		BIT	#EF.PR1,.COMEF+2;;; PRIMARY PROTOCOL RUNNING?
   9656	030100	001406 				BEQ	20$		;;; NO -- WAIT FOR IT
   9657	030102	010446 				MOV	R4,-(SP)	;;; YES -- SAVE R4
   9658	030104	012701 	000016 			MOV	#BC.THU,R1	;;; HANGUP FUNCTION TO R1
   9659	030110					CALL	.STTYH		;;; TELL THE KL
	030110	004737 	027654'			JSR	PC,.STTYH
   9660	030114	012604 				MOV	(SP)+,R4	;;; RESTORE I/O PAGE POINTER
   9661	030116				20$:
   9662	030116	005764 	000002 			TST	2(R4)		;;; CLEAR INPUT FLAGS
   9663	030122	012714 	000140 			MOV	#DL.DEN!DL.REN,(R4) ;;; HANG THE LINE UP
   9664	030126	042765 	002004 	000006 		BIC	#TT.CRW!TT.RIP,STSW1(R5) ;;; NO LONGER IN CARRIER WAIT
   9665	030134	005065 	000004 			CLR	STSW0(R5)	;;; ENABLE INPUT SIDE IF IT WASN'T
   9666	030140				90$:
   9667	030140					RETURN			;;; AND EXIT
	030140	000207 				RTS	PC
TTYDRR	- GENERAL TTY HANDLER	MACRO M1108  16-DEC-77 11:28  PAGE 136
TTY DRIVER -- .DLTMO (DL11-E MODEM CONTROL TIMEOUT)

   9669						.SBTTL	TTY DRIVER -- .DLTMO (DL11-E MODEM CONTROL TIMEOUT)
   9670					;+
   9671					; THIS ROUTINE INSURES THAT THE CTY IS RUNNING AND TIMES OUT THE
   9672					; DL11-E LINE WHEN CARRIER IS LOST.
   9673					;
   9674					; INPUTS:
   9675					;
   9676					;	NONE
   9677					;
   9678					; OUTPUTS:
   9679					;
   9680					;	NONE
   9681					;
   9682					; NOTE:
   9683					;
   9684					;	NXM VECTOR IS ALTERED DURING POWER FAIL RECOVERY
   9685					;-
   9686
   9687	030142				.DLTMO::
   9688	030142	012705 	035126'			MOV	#DLTBL,R5	; +++005 GET LOCAL DL11C POINTER
   9689	030146	016504 	000002 			MOV	TTYEXP(R5),R4	; +++005 AND EXTERNAL PAGE POINTER
   9690	030152	001416 				BEQ	10$		; +++005 IF NO ONE HAS THE LINE
   9691	030154	005765 	000004 			TST	STSW0(R5)	; +++005 IS THIS LINE TURNED OFF??
   9692	030160	001002 				BNE	5$		; +++005 YES -- GO ON
   9693	030162	052714 	000100 			BIS	#DL.REN,(R4)	; +++005 ENABLE RCVR AND
   9694	030166				5$:				; +++005
   9695	030166	052764 	000100 	000004 		BIS	#DL.XEN,4(R4)	; +++005 XMTR INTERRUPTS
   9696	030174	005737 	040400'			TST	.PFIOW		; +++005 IS THIS A POWER FAIL START??
   9697	030200	001403 				BEQ	10$		; +++005 NO -- GO ON
   9698	030202	012737 	030404'	000004 		MOV	#100$,@#4	; +++005 YES -- SET NXM TRAP FOR DEVICE CHECKS
   9699	030210				10$:
   9700	030210	012705 	035136'			MOV	#DLETBL,R5	; +++005 GET DL11-E TABLE POINTER
   9701	030214	012700 	000004 			MOV	#DLECNT,R0	; +++005 COUNT OF DL11-E'S TO R0
   9702	030220	001470 				BEQ	90$		; +++005 GO AWAY IF NO DL11-E'S
   9703	030222				20$:
   9704	030222	016504 	000002 			MOV	TTYEXP(R5),R4	; +++005 EXTERNAL PAGE POINTER TO R4
   9705	030226	001462 				BEQ	80$		; +++005 TRY NEXT IF THIS ONE ISN'T THERE
   9706	030230	052714 	000040 			BIS	#DL.DEN,(R4)	; +++005 ENABLE DATASET INTERRUPTS
   9707	030234	052764 	000100 	000004 		BIS	#DL.XEN,4(R4)	; +++005 SO
   9708	030242	005765 	000004 			TST	STSW0(R5)	; +++005 IS THIS LINE TURNED OFF??
   9709	030246	001002 				BNE	25$		; +++005 YES -- GO ON
   9710	030250	052714 	000100 			BIS	#DL.REN,(R4)	; +++005 NO -- ENABLE RCVR INTERRUPTS
   9711	030254				25$:
   9712	030254	005737 	040400'			TST	.PFIOW		; +++005 POWER FAIL??
   9713	030260	001420 				BEQ	30$		; +++005 NO -- GO ON
   9714	030262	032714 	010000 			BIT	#DL.CAR,(R4)	; +++005 YES -- IS CARRIER DETECT UP??
   9715	030266	001406 				BEQ	27$		; +++005 NO -- GO ON
   9716	030270	052714 	000006 			BIS	#DL.DTR!DL.RTS,(R4) ; +++005 ENABLE THIS DL11-E LINE
   9717	030274	042765 	002004 	000006 		BIC	#TT.CRW!TT.RIP,STSW1(R5) ; +++005 CLEAR THE TIMEOUT REQUEST
   9718	030302	000434 				BR	80$		; +++005 AND TRY THE NEXT ONE
   9719						;
   9720	030304				27$:
   9721	030304	032714 	000002 			BIT	#DL.DTR,(R4)	; +++005 IS DATA TERMINAL READY UP??
   9722	030310	001404 				BEQ	30$		; +++005 NO -- GO ON
   9723	030312	052765 	002004 	000006 		BIS	#TT.CRW!TT.RIP,STSW1(R5) ; +++005 YES -- SET CARRIER WAIT STATE
   9724	030320	000425 				BR	80$		; +++005 AND DO THE NEXT LINE
   9725						;
TTYDRR	- GENERAL TTY HANDLER	MACRO M1108  16-DEC-77 11:28  PAGE 136-1
TTY DRIVER -- .DLTMO (DL11-E MODEM CONTROL TIMEOUT)

   9726	030322				30$:
   9727	030322	032765 	000004 	000006 		BIT	#TT.CRW,STSW1(R5) ; +++005 WAITING FOR CARRIER??
   9728	030330	001421 				BEQ	80$		; +++005 NO -- GO ON
   9729	030332	032765 	002000 	000006 		BIT	#TT.RIP,STSW1(R5) ; +++005 YES -- IS THIS THE FIRST TIME??
   9730	030340	001404 				BEQ	40$		; +++005 NO -- GO TURN THE LINE OFF
   9731	030342	042765 	002000 	000006 		BIC	#TT.RIP,STSW1(R5) ; +++005 YES -- SET TIMEOUT REQUEST
   9732	030350	000411 				BR	80$		; +++005 AND TRY THE NEXT LINE
   9733						;
   9734	030352				40$:
   9735	030352					.INH6			; +++005 DISALLOW INTERRUPTS
	030352	013746 	177776 			MOV	@#PS,-(SP)
	030356	112737 	000300 	177776 		MOVB	#300,@#PS
   9736	030364					CALL	.DLHUP		;;; +++005 HANG UP THE LINE
	030364	004737 	030016'			JSR	PC,.DLHUP
   9737	030370					.ENB6			;;; +++005 ALLOW INTERRUPTS
	030370	012637 	177776 			MOV	(SP)+,@#PS
   9738	030374				80$:
   9739	030374	062705 	000010 			ADD	#^D8,R5		; +++005 POINT TO THE NEXT DLS ENTRY
   9740	030400	077070 				SOB	R0,20$		; +++005 DO THE NEXT LINE
   9741	030402				90$:
   9742	030402					RETURN
	030402	000207 				RTS	PC
   9743	030404				100$:				; +++005 HERE ON NXM INTERRUPT
   9744	030404	005065 	000002 			CLR	TTYEXP(R5)	; +++005 SET NON-EXISTENT DEVICE
   9745	030410	022626 				CMP	(SP)+,(SP)+	; +++005 CLEAR THE INTERRUPT
   9746	030412	000770 				BR	80$		; AND TRY THE NEXT LINE
   9747						;
TTYDRR	- GENERAL TTY HANDLER	MACRO M1108  16-DEC-77 11:28  PAGE 137
TTY DRIVER -- .DMTMO (DM11 MODEM CONTROL TIMEOUT)

   9749						.SBTTL	TTY DRIVER -- .DMTMO (DM11 MODEM CONTROL TIMEOUT)
   9750					;
   9751					; DM11-BB TIME OUT ROUTINE
   9752					;
   9753					; THIS ROUTINE IS ENTERED EVERY X SECONDS FROM THE TTY DISPATCH ROTUINE
   9754					; TO CHECK FOR DM11-BB TIMEOUTS.
   9755					;
   9756					; INPUTS:
   9757					;
   9758					;	NONE
   9759					;
   9760					; OUTPUTS:
   9761					;
   9762					;	ALL DM11-BB UNITS ARE EXAMINED FOR TIMEOUT. IF A TIMEOUT OCCURS,
   9763					;	THEN THE UNIT IS HUNG UP.
   9764					;	REGISTERS ARE NOT PRESERVED
   9765					;
   9766						.ENABL	LSB
   9767	030414				.DMTMO::
   9768	030414	012700 	035062'			MOV	#DMTBL,R0	;SET UP TABLE POINTERS
   9769	030420	012701 	035176'			MOV	#DHTBL,R1
   9770	030424	012702 	000200 			MOV	#DHCNT,R2	;COUNT OF DH11'S
   9771	030430	005737 	040400'			TST	.PFIOW		;IS THIS A POWER FAIL START ?
   9772	030434	001403 				BEQ	20$		;NO -- DON'T TRAP FOR DH COUNTING
   9773	030436	012737 	031040'	000004 		MOV	#125$,@#4	;YES -- SET UP TO TAKE POWER FAIL
   9774	030444				20$:
   9775	030444	016104 	000002 			MOV	2(R1),R4	;FIND THE ADDRESS OF THE DH
   9776	030450	001514 				BEQ	70$		;DONE -- QUIT
   9777	030452	032714 	002000 			BIT	#002000,@R4	;CHECK FOR NXM
   9778	030456	001003 				BNE	59$		;YES -- HANDLE AS TIMEOUT
   9779	030460	032714 	000100 			BIT	#100,@R4	;CHECK TO SEE IF INTERRUPTS ENABLED
   9780	030464	001103 				BNE	60$		;YES -- DON'T BOTHER THIS DH
   9781	030466				59$:
   9782	030466	012714 	004000 			MOV	#004000,@R4	;MASTER CLEAR DH
   9783	030472	012764 	000040 	000016 		MOV	#32.,16(R4)	;NO -- SET IT UP -- INIT SILO
   9784	030500	012705 	000020 			MOV	#16.,R5		;COUNT OF DH11 LINES IN THIS GROUP
   9785	030504	005014 				CLR	@R4		;START WITH UNIT 0
   9786	030506				30$:
   9787	030506	016164 	000004 	000004 		MOV	STSW0(R1),4(R4)	;SET LINE SPEED
   9788	030514	032761 	000100 	000006 		BIT	#TT.RMT,STSW1(R1) ;REMOTE TTY?
   9789	030522	001412 				BEQ	40$		;NO -- DON'T SET UP DM11
   9790	030524	011403 				MOV	@R4,R3		;PICK UP THE UNIT NUMBER
   9791	030526	042703 	177760 			BIC	#177760,R3	;MASK OFF UNIT BITS
   9792	030532	010330 				MOV	R3,@(R0)+	;SET IT IN DM
   9793	030534	014003 				MOV	-(R0),R3	;FIND THE DM ADDRESS
   9794	030536	012763 	000007 	000002 		MOV	#7,2(R3)	;ENABLE LINE
   9795	030544	012713 	000140 			MOV	#140,@R3	;ENABLE SCAN
   9796	030550				40$:
   9797	030550	005214 				INC	@R4		;UPDATE UNIT NUMBER
   9798	030552	062701 	000010 			ADD	#8.,R1		;POINT TO NEXT TABLE ENTRY
   9799	030556	077525 				SOB	R5,30$		;DO UNTIL DONE
   9800	030560	012714 	030100 			MOV	#30100,@R4	;ENABLE DH
   9801	030564	005737 	040400'			TST	.PFIOW		;POWER FAIL?
   9802	030570	001037 				BNE	50$		;YES -- DON'T LOG
   9803	030572	010437 	031106'			MOV	R4,TTLOGE	;NO -- ERROR LOG
   9804	030576	010046 				MOV	R0,-(SP)	;SAVE REGISTERS
   9805	030600	010146 				MOV	R1,-(SP)
TTYDRR	- GENERAL TTY HANDLER	MACRO M1108  16-DEC-77 11:28  PAGE 137-1
TTY DRIVER -- .DMTMO (DM11 MODEM CONTROL TIMEOUT)

   9806	030602	010246 				MOV	R2,-(SP)
   9807	030604	010346 				MOV	R3,-(SP)
   9808	030606	012703 	000003 			MOV	#D.CDH1,R3	;SET DEVICE NAME
   9809	030612	012702 	000001 			MOV	#1,R2		;EVENT FLAG 1
   9810	030616	012701 	100007 			MOV	#BC.HDS+100000,R1 ;DEVICE STATUS
   9811	030622	012700 	031102'			MOV	#TTERLG,R0	;BUFFER ADDRESS
   9812	030626					CALL	..STIN		;START INDIRECT FUNCTION
	030626	004737 	043442'			JSR	PC,..STIN
   9813	030632	103412 				BCS	45$		;FORGET IT PROTOCOL NOT RUNNING
   9814	030634				42$:
   9815	030634	032737 	040000 	031114'		BIT	#EF.PR1,.COMEF+2 ;CHECK FOR PRIMARY PROTOCOL
   9816	030642	001406 				BEQ	45$		;IF OFF -- DISAPPEAR
   9817	030644	013701 	031110'			MOV	.CRTSK,R1	;EVENT FLAG SET YET?
   9818	030650	032761 	000001 	000020 		BIT	#1,A.EF(R1)
   9819	030656	001766 				BEQ	42$		;NO -- CONTINUE WAITING
   9820	030660				45$:
   9821	030660	012603 				MOV	(SP)+,R3
   9822	030662	012602 				MOV	(SP)+,R2
   9823	030664	012601 				MOV	(SP)+,R1
   9824	030666	012600 				MOV	(SP)+,R0
   9825	030670				50$:
   9826	030670	022020 				CMP	(R0)+,(R0)+	;MOVE TO NEXT ENTRY
   9827	030672	000664 				BR	20$		;AND TRY NEXT DH
   9828						;
   9829	030674				60$:
   9830	030674	062701 	000200 			ADD	#16.*8.,R1	;DO THE NEXT DH
   9831	030700	000773 				BR	50$
   9832						;
   9833	030702				70$:
   9834	030702	012746 	030712'			MOV	#75$,-(SP)
   9835	030706	024646 				CMP	-(SP),-(SP)
   9836	030710	000453 				BR	125$
   9837						;
   9838	030712				75$:
   9839	030712	012700 	035062'			MOV	#DMTBL,R0	;FIND THE HEAD OF THE DM TABLE
   9840	030716	013702 	034736'			MOV	.DQDH0+Q.DZ,R2	;SET UP THE COUNT OF DH11'S
   9841	030722	001466 				BEQ	127$		;QUIT IF NOTHING
   9842	030724				80$:
   9843	030724	005004 				CLR	R4		;SET UNIT NUMBER
   9844	030726	012001 				MOV	(R0)+,R1	;SET EXTERNAL PAGE ADR OF DM
   9845	030730	012005 				MOV	(R0)+,R5	;FIND THE DH TABLE ENTRY
   9846	030732				90$:
   9847	030732	132765 	000004 	000006 		BITB	#TT.CRW,STSW1(R5) ;WAITING FOR CARRIER?
   9848	030740	001426 				BEQ	110$		;IF EQ NO
   9849	030742	032765 	002000 	000006 		BIT	#TT.RIP,STSW1(R5) ;TIMING OUT?
   9850	030750	001017 				BNE	100$		;NOT THIS TIME
   9851	030752					.INH6			; DISALLOW INTERRUPTS
	030752	013746 	177776 			MOV	@#PS,-(SP)
	030756	112737 	000300 	177776 		MOVB	#300,@#PS
   9852	030764					CALL	.DMHUP		;;;HANG UP UNIT
	030764	004737 	027712'			JSR	PC,.DMHUP
   9853	030770	032765 	010000 	000006 		BIT	#TT.ABL,STSW1(R5) ;;; +++008 IS THIS AN AUTO-BAUD LINE??
   9854	030776	001402 				BEQ	99$		;;; +++008 NO -- GO ON
   9855	031000					CALL	.DHSPR		;;; +++008 YES -- RESET LINER SPEED
	031000	004737 	027354'			JSR	PC,.DHSPR
   9856	031004				99$:
   9857	031004					.ENB6			;;; ALLOW INTERRUPTS
TTYDRR	- GENERAL TTY HANDLER	MACRO M1108  16-DEC-77 11:28  PAGE 137-2
TTY DRIVER -- .DMTMO (DM11 MODEM CONTROL TIMEOUT)

	031004	012637 	177776 			MOV	(SP)+,@#PS
   9858	031010				100$:
   9859	031010	042765 	002000 	000006 		BIC	#TT.RIP,STSW1(R5) ;SET TIMEOUT DONE
   9860	031016				110$:
   9861	031016	062705 	000010 			ADD	#8.,R5		;POINT AT NEXT ENTRY
   9862	031022	005302 				DEC	R2		;CHECK COUNT
   9863	031024	101425 				BLOS	127$		;DONE
   9864	031026				120$:
   9865	031026	005204 				INC	R4		;ADD 1 TO UNIT COUNT
   9866	031030	032704 	000020 			BIT	#20,R4		;CHECK FOR OVERFLOW
   9867	031034	001736 				BEQ	90$		;GET NEXT
   9868	031036	000732 				BR	80$		;DO NEXT ENTRY
   9869						;
   9870	031040				125$:
   9871	031040	005061 	000002 			CLR	2(R1)		;INDICATE NO MORE DH'S
   9872	031044	162701 	035176'			SUB	#DHTBL,R1	;FIND THE NUMBER OF DH'S
   9873	031050	006201 				ASR	R1
   9874	031052	006201 				ASR	R1
   9875	031054	006201 				ASR	R1
   9876	031056	010137 	034736'			MOV	R1,.DQDH0+Q.DZ	;SET UP DH LINE COUNT
   9877	031062	062701 	000005 			ADD	#DLCNT,R1
   9878	031066	010137 	034676'			MOV	R1,.DQPBA+Q.DZ
   9879	031072	010137 	034756'			MOV	R1,.DQDLS+Q.DZ	;SET UP NUMBER OF LINES
   9880	031076	022626 				CMP	(SP)+,(SP)+	;REMOVE JUNK
   9881	031100				127$:
   9882	031100					RETURN			;RETURN TO CALLER
	031100	000207 				RTS	PC
   9883						.DSABL	LSB
   9884
   9885	031102				TTERLG:
   9886	031102	000006 				.WORD	6		;ERROR LOGGING WORD
   9887	031104	002100 				.WORD	DV.LOG!DV.LIN
   9888	031106				TTLOGE:
   9889	031106	000000 				.WORD	0
SCOMM	- COMMON DATA AND SUBRO	MACRO M1108  16-DEC-77 11:28  PAGE 138
TTY DRIVER -- .DMTMO (DM11 MODEM CONTROL TIMEOUT)

   9891						.TITLE	SCOMM	- COMMON DATA AND SUBROUTINES
   9892	031110					IDENT$	10,12,RSX$$F
						.IDENT	/B10120/
   9893					;
   9894					;                             COPYRIGHT (C) 1975, 1978 BY
   9895					;                     DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
   9896					;
   9897					;       THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE  USED  AND  COPIED
   9898					;       ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
   9899					;       OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR ANY OTHER COPIES THERE-
   9900					;       OF  MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
   9901					;       NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
   9902					;
   9903					;       THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT
   9904					;       NOTICE  AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
   9905					;       CORPORATION.
   9906					;
   9907					;       DIGITAL ASSUMES NO RESPONSIBILITY FOR THE  USE  OR  RELIABILITY  OF  ITS
   9908					;       SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
   9909					;
   9910					;		MODULE: "SCOMM"
   9911					;		VERSION: 10-12
   9912					;		AUTHOR: R. MCLEAN
   9913					;		DATE: 19 JUL 75
   9914					;
   9915					;
   9916					;	MODIFICATIONS:
   9917					;
   9918					;	THIS MODULE CONTAINS:
   9919					;
   9920					;	1 -- THIS MODULE CONTAINS SYSTEM COMMON MODULES AND TABLES
   9921					;
   9922					;	NO.	DATE		PROGRAMMER	PURPOSE
   9923					;	---	----		----------	-------
   9924					;	001	27-JUL-76	J. MASSE	CHANGE 'LBNL' FOR DX0 & DX1
   9925					;						FROM 496. TO 494.
   9926					;	002	8-AUG-76	J. MASSE	CHANGE VERSION NO. TO 004A
   9927					;	003	9-AUG-76	J. MASSE	ADD KLINIK HOOKS
   9928					;	004	20-OCT-76	A. PECKHAM	ADD DORBELL COUNTER
   9929					;	005	20-OCT-76	A. PECKHAM	CHANGE VERSION NO. TO 006A
   9930					;	006	03-FEB-77	R. BELANGER	ADD GENERALIZED DL11E
   9931					;						SERVICE AND NEW KLINIK
   9932					;						HOOKS AND HANDLES
   9933					;	007	07-MAR-77	A. PECKHAM	FIXED BUG  IN ..STTY
   9934					;	008	14-MAR-77	R. BELANGER	CONDITIONALLY REMOVE
   9935					;						SUPPORT FOR DTE20 DIRECTIVES
   9936					;						ADD CODE FOR DYNAMIC ALLOCATION
   9937					;						OF .BGBUF AND .FREPL
   9938					;	009	15-JUL-77	R. BELANGER	ADD AUTO BAUD SUPPORT
   9939					;	010	02-SEP-77	R. BELANGER	XON/XOFF BUG FIX
SCOMM	- COMMON DATA AND SUBRO	MACRO M1108  16-DEC-77 11:28  PAGE 139
TTY DRIVER -- .DMTMO (DM11 MODEM CONTROL TIMEOUT)

   9941		001400 			POLMIN==1400
   9942					;
   9943		000001 			R$$11D=1
   9944					;
   9945					; MACRO LIBRARY CALLS
   9946					;
   9948						.MCALL	.CRASH
   9949						.MCALL	.PUDEN,.STDEN,.ATLEN,MTPI,MFPI,MTPS,MFPS,CALL,RETURN,.INH5,.ENB5
   9950						.MCALL	$DEF,F11DF$
   9951						.MCALL	.INH0,.ENB0,WSIG$S
   9952						.MCALL	.ENB,.INH,.ENB6,.INH6,.TPDEN,.PUDEN,.DQPEN
   9954	031110					$DEF
   9955	031110					F11DF$
   9956
   9957						.MACRO	RSXVR$ KEY,FRM,VER,EDT,NUM
   9958						.IF	B,NUM
   9959						.IF	NB,FRM
   9960						RSXVR$	\KEY,\FRM,\VER,\EDT,0
   9961						.IFF
   9962						RSXVR$	\KEY,200,\VER,\EDT,0
   9963						.ENDC
   9964						.MEXIT
   9965						.IFF
   9966						.IF	GE,VER-10
   9967						.IF	GE,EDT-10
   9968						.ASCIZ	<KEY><FRM>\'VER'-'EDT'\<200>
   9969						.IFF
   9970						.ASCIZ	<KEY><FRM>\'VER'-0'EDT'\<200>
   9971						.ENDC
   9972						.IFF
   9973						.IF	GE,EDT-10
   9974						.ASCIZ	<KEY><FRM>\0'VER'-'EDT'\<200>
   9975						.IFF
   9976						.ASCIZ	<KEY><FRM>\0'VER'-0'EDT'\<200>
   9977						.ENDC
   9978						.ENDC
   9979						.ENDC
   9980						.ENDM	RSXVR$
SCOMM	- COMMON DATA AND SUBRO	MACRO M1108  16-DEC-77 11:28  PAGE 140
SCOMM MODULE -- COMMON GLOBAL DATA

   9982						.SBTTL	SCOMM MODULE -- COMMON GLOBAL DATA
   9983					;
   9984					;	CURRENT TASK POINTER (POINTS TO ACTIVE TASK LIST NODE OF CURRENT TASK
   9985					;
   9986	031110	000000 			.CRTSK::.WORD	0
   9987					;
   9988	031112	000000 	000000 		.COMEF::.WORD	0,0		;COMMON EVENT FLAGS
   9989					;
   9990	031116	000000 			.SERFG::.WORD	0		;SIG EVENT FLAG
   9991	031120	000000 			.SEWFL::.WORD	0		;SIG EVENT WAIT FLAG
   9992					;
   9993	031122	000000 			.CKASS::.WORD	0		;AST ADDRESS FOR CURRENT TASK (CLOCK)
   9994					;
   9995	031124	000000 			.PFASS::.WORD	0		;AST ADDRESS FOR CURRENT TASK (POWER FAIL)
   9996					;
   9997						.BLKW	20
   9998					;
   9999	031166	001600 			.MSIZE::.WORD	1600		; MEMORY SIZE
  10000					;
  10001	031170	000000 	000000 		.RPADR::.WORD	0,0		;!!!!RPADR AND RPSIZ MUST BE IN THIS ORDER
  10002	031174	000000 	000000 		.RPSIZ::.WORD	0,0		;!!!
  10003					;
  10004	031200	000000 			EMTSTK::.WORD	0		;EMT SAVED DURING EMT STACK
  10005	031202	000000 			TRPASV::.WORD	0		;SAVED PS OF EMT/TRAP
  10006	031204	000000 			DEXST::	.WORD	0		;DEXDONE TIMEOUT
  10007
  10008	031206	000000 			DEXTM3::.WORD	0		;EXAMINE WORD 3 (TEMP STORAGE) TO BE
  10009	031210	000000 			DEXTM2::.WORD	0		;EXAMINE WORD 2 -USED ONLY BECAUSE EXAMINE
  10010	031212	000000 			DEXTM1::.WORD	0		;EXAMINE WORD 1 - OR DEPOSIT MAY FAIL AND MUST BE REDONE
  10011
  10012	031214	000034 			.BRKCH::.WORD	'\-100		;BREAK CHARACTER (^\)
  10013	031216	000000 			.TTP11::.WORD	0		;TTY PDP11 INPUT IN PROGRESS
  10014	031220				.CTYPT::
  10015	031220	035126'			CTYPTR::.WORD	DLTBL		;CONSOLE TTY TABLE POINTER
  10016	031222				.KLNPT::
  10017	031222	035136'			KLNPTR::.WORD	DLETBL		; +++006 KLINIK LINE POINTER
  10018	031224	000000 			$UNIT::	.WORD	0		;DH UNIT NUMBER IF CTY
  10019	031226	000000 			$BTMSK::.WORD	0		;MASK TO START CONSOLE TTY (DH)
  10020					;
  10021					;	THE NEXT TWO BYTES MUST BE KEPT TOGETHER IN THEIR CURRENT ORDER !!!!
  10022					;
  10023	031230	000401 			.NOERR::.WORD	401		;DO NOT RECOGNIZE KL ERROR IF NON-ZERO
  10024		031231'			.NOHLT	==	.NOERR+1	;DO NOT PANIC IF KL HALTS IF NON-ZERO
  10025					;
  10026	031232	000000 			.TKTN::	.WORD	0		;NON ZERO IF TKTN REQUIRED
  10027	031234	000000 			.KLITK::.WORD	0		;KL ATTENTION REQUEST
  10028					;
  10029	031236	000000 			.KLIWD::.WORD	0		;KL WORD TO DETERMINE BOOT PARAMETERS
  10030					;
  10031	031240	000000 			.TICKS::.WORD	0
  10032	031242	000000 			.CLKSW::.WORD	0		;CLOCK OVERFLOW SWITCH
  10033	031244				.DATE::
  10034	031244	000000 			.DATE3::.WORD	0
  10035	031246	003671 			.YEAR::	.WORD	1977.
  10036	031250	   000 			.DAY::	.BYTE	0.
  10037	031251	   004 			.MON::	.BYTE	4.
  10038	031252	   000 			.DST::	.BYTE	0
SCOMM	- COMMON DATA AND SUBRO	MACRO M1108  16-DEC-77 11:28  PAGE 140-1
SCOMM MODULE -- COMMON GLOBAL DATA

  10039	031253	   000 			.DOW::	.BYTE	0
  10040	031254	000000 	000400 		.SSM::	.WORD	0,400
  10041	031260	000074 			.TKPS::	.WORD	.CYLTM
  10042					;
  10043	031262	002405 			.SYUIC::.WORD	5.*400+5.	;SYSTEM UIC [5,5]
  10044					;
  10045	031264				.VERNO::RSXVR$	RSX$$K,RSX$$F,RSX$$V,RSX$$E ; RSX20F VERSION NUMBER.
	031264	   126 	   102 	   061 		.ASCIZ	<126><102>\12-12\<200>
	031267	   062 	   055 	   061
	031272	   062 	   200 	   000
  10046						.EVEN
  10047					;
  10048	031276	000000 			.BTPRM::.WORD	0		;BOOT PARAMETER
  10049	031300	000000 			.BTSCH::.WORD	0		;CHARACTER SAVED -- FOR SECONDARY PROTOCOL
  10050	031302	000001 			.ACKAL::.WORD	1		;ACK ALL SWITCH
  10051	031304	000000 			.RPUNT::.WORD	0		;RP UNIT NUMBER FOR RPADR ETC.
  10052	031306	000000 			.FEACT::.WORD	0		;FE DEVICE AVAILABLE FOR DB ACCESS WHEN .NE. 0
  10053	031310	000000 			.KLERW::.WORD	0		;KL WORD FOR ERROR REPORTING BY SETSPD
  10054					;
  10055					;	NOTE --
  10056					;	THE NEXT 32 BYTES MUST REMAIN CONTIGUOUS AND IN THE SAME ORDER
  10057					;
  10058	031312	000026 			.KLNPB::.WORD	KLNPLN		; +++003 KLINIK PARAMETER BLOCK LENGTH
  10059									; +++003 BUFFER FOR PARAMETER SAVE STARTS HERE
  10060	031314				.KLNLB::			; +++003
  10061	031314	000024 			.KLNBC::.WORD	KLNPLN-2	; +++003 BYTE COUNT FOR TRANSFER
  10062	031316	000000 			.KLNFT::.WORD	0		; +++003 KLINIK ENABLE START TIME --
  10063									;	 SECONDS SINCE MIDNIGHT
  10064	031320	   000 	   000 	   000 	.KLNFD::.BYTE	0,0,0,0		; +++003 KLINIK ENABLE START DATE
	031323	   000
  10065	031324	000000 			.KLNTT::.WORD	0		; +++003 KLINIK ENABLE END TIME --
  10066									;	 SECONDS SINCE MIDNIGHT
  10067	031326	   000 	   000 	   000 	.KLNTD::.BYTE	0,0,0,0		; +++003 KLINIK ENABLE END DATE
	031331	   000
  10068	031332	   000 	   000 		.KLNMD::.BYTE	0,0		; +++006 KLINIK MODE FLAGS
  10069					.EVEN				; +++006
  10070		000016 			KLNLGL==.-.KLNFT		; +++006 LOG BUFFER LENGTH IN BYTES
  10071		031334'			.KLNPE==.
  10072	031334	000000 	000000 	000000 	.KLNPW::.WORD	0,0,0		; +++003 ASCII PASSWORD FOR KLINIK
  10073					.EVEN
  10074		000026 			KLNPLN==.-.KLNBC		; +++006 SAVE BUFFER LENGTH IN BYTES
  10075	031342	   000 	   000 		.KLNSW::.BYTE	0,0		; +++006 KLINIK LINE STATUS BYTES
  10076					;
  10077					;
  10078					;
  10079	031344	000001 			.FEMOD::.WORD	1		; +++003 FRONT END CONSOLE MODE FLAG
  10080	031346	000000 			.KLRLD::.WORD	0		;KL RELOAD FLAG
  10081	031350	000000 			.KLFLG::.WORD	0		;FLAG FOR PARSER TO INDICATE STATE OF KL10
  10082	031352	000000 			.PRADR::.WORD	0		;ADDRESS OF PRIV OFFSET TABLE ENTRY
  10083	031354	174434 			.PRSTA::.WORD	174434		;PRIVILEDGED DTE20 STATUS WORD
  10084	031356	174400 			.PRDTE::.WORD	174400		;FIRST DTE ADDRESS OF PRIVILEDGED DTE20
  10085	031360	000000 			.PRDCT::.WORD	0		; +004 DORBELL COUNTER FOR KLINIT.
  10086	031362	000001 			.INHDM::.WORD	1		;INBIBIT/ENABLE REMOTE LINES (0)=ENABLE
  10087					;
  10088	031364	000000 			.ABCNT::.WORD	0		; +++009 COUNT OF AUTO BAUDED LINES
  10089	031366	000000 			.ABFLG::.WORD	0		; +++009 FLAG FOR "SETSPD"
SCOMM	- COMMON DATA AND SUBRO	MACRO M1108  16-DEC-77 11:28  PAGE 141
SCOMM -- COMM, PROCESSOR, AND QUEUE POINTERS

  10091						.SBTTL	SCOMM -- COMM, PROCESSOR, AND QUEUE POINTERS
  10092
  10093					;
  10094					;	POINTERS TO COMMUNICATIONS AREA
  10095					;
  10096	031370	000000 			COMBSE::.WORD	0	;BASE OF COMMUNICATION AREA
  10097	031372	000000 			PRMEMN::.WORD	0	;MY PROCESSOR NUMBER
  10098	031374	000000 			DEPOF::	.WORD	0	;DEPOSIT OFFSET FROM EXAMINE
  10099					;
  10100					;
  10101					;	PROCESSOR IDENTIFICATION TABLE
  10102					;
  10103					;	PROTBL FORMAT:
  10104					;
  10105					;	5 WORDS/ENTRY
  10106					;	16 ENTRYS IN THE TABLE ONE FOR EACH PROCESSOR IN COMMUNICATION
  10107					;	COMMUNICATION NUMBERS ARE LIMITED TO THE RANGE 0-15.
  10108					;
  10109					;	(PROCESSOR 0) PROTBL:	ADDRESS OF DTE20 TO ACCESS THIS PROCESSOR
  10110		000000 			DTENM=0
  10111					;	(PROCESOR 0)		ADDRESS TO COMMUNICATE TO PROCESSOR 0
  10112		000002 			EMYN==2
  10113					;	(PROCESSOR 0)		ADDRESS TO COMMUNICATE TO PROCESSOR 0 (WRITE)
  10114		000004 			DMYN==4
  10115					;	(PROCESSOR 0)		ADDRESS FROM GENERAL
  10116		000006 			EHSG==6
  10117					;	(PROCESSOR 0)		ADDRESS FROM SPECIFIC
  10118		000010 			EHSM==10
  10119					;
  10120					;	(PROCESSOR 1)	ADDRESS OF DTE20 TO USE TO ACCESS THIS PROCESSOR
  10121					;	...........
  10122					;
  10123	031376				PROTBL::.BLKW	16.*5.
  10124					;
  10125					;	SEND ALL MESSAGE POINTERS
  10126					;
  10127	031636	000000 			.SNDLP::.WORD	0		;POINTER TO SENDALL BUFFER IN USE
  10128	031640	000000 	000000 	000000 	.SNDBF::.WORD	0,0,0,0		;SEND ALL LIST
	031646	000000
  10129	031650	000000 	000000 	000000 	.SNDCN::.WORD	0,0,0,0		;SEND ALL TTY COUNT (THIS AND ABOVE MUST BE TOGETHER)
	031656	000000
  10130	031660	000000 			.CRSND::.WORD	0		;CURRENT SEND ALL NODE POINTER -- USED BY ..STTY
  10131
  10132	031662	000000 			.CRQZ::	.WORD	0		;CURRENT QUEUE SIZE
  10133	031664	000000 			.CPFN::	.WORD	0		;CURRENT FUNCTION IN TO 10 Q
  10134	031666	000000 			.CPDV::	.WORD	0		;CURRENT DEVICE IN TO 10 QUEUE
  10135	031670	000000 			.CRSZ::	.WORD	0		;CURRENT SIZE OF TO10 Q
  10136	031672	000000 			.CRPB::	.WORD	0		;CURRENT BUFFER POINTER IN TO10 Q
  10137	031674	000000 			.CRHD::	.WORD	0		;HEAD OF CURRENT TO10Q
  10138	031676	000000 			.CRSB::	.WORD	0		;POINTER TO CURRENT FUNCTION SIZE
  10139
  10140	031700	000000 			DTEMSK::.WORD	0		;DTE DEVICE EVENT FLAG MASK
  10141	031702	000000 			DTEADR::.WORD	0		;DTE DEVICE INDIRECT FLAG ADDRESS
  10142
  10143	031704	000000 			TO11NP::.WORD	0		;NODE POINTER FOR NODE
  10144	031706	000000 			TO11HD::.WORD	0		;COUNT OF BYTES IN THIS QUEUE
  10145	031710	000000 			TO11FN::.WORD	0		;TO ELEVEN FUNCTION CODE
SCOMM	- COMMON DATA AND SUBRO	MACRO M1108  16-DEC-77 11:28  PAGE 141-1
SCOMM -- COMM, PROCESSOR, AND QUEUE POINTERS

  10146	031712	000000 			TO11DV::.WORD	0		;TO ELEVEN DEVICE NUMBER
  10147	031714	000000 			TO11SP::.WORD	0		;SPACE
  10148	031716	000000 			TO11FW::.WORD	0		;FIRST WORD OF FUNCTION
  10150	031720	177777 			TO11GW::.WORD	-1		;GUARD WORD FOR DTE20
  10151	031722	000000 			TO11QP::.WORD	0
  10152	031724	000000 			TO11AS::.WORD	0		;ADDRESS SAVE
  10153	031726	000000 			TO11BS::.WORD	0		;BYTE COUNT SAVE
  10154	031730	000000 			TO10SZ::.WORD	0		;BYTE COUNT OF XFER
  10155	031732	000000 			TO10AS::.WORD	0
  10157
  10158	031734	000001 	000000 	000000 	STSTT::.WORD	1,0,0		;TO 10 STATUS
  10159
  10160		031740'			TO10QC==STSTT+4			;TO 10 QUEUE COUNT
  10161		031741'			TO11QC==STSTT+5			;TO 11 QUEUE COUNT
  10162
  10163	031742	031742'			TO10Q:: .WORD	.		;LISTHEAD FOR TO 10 QUEUE
  10164	031744	031742'				.WORD	.-2
  10165
  10166	031746	000000 			EQSZ::	.WORD	0		;ELEVEN Q SIZE
  10167
  10168	031750	000000 			TO11Q::	.WORD	0		;TO 11 QUEUE
  10169	031752				STATI::	.BLKW	3		;STATUS/SCRATCH WORD FOR EXAMINES/DEPOSITS
  10170
  10171	031760	000000 	000000 	000000 	KPAL0::	.WORD	0,0,0		;10 KEEP ALIVE
  10172	031766	000000 			OKPAL0::.WORD	0		;SAVED KEEP ALIVE
  10173	031770	000000 	000000 	000000 	KPAL1::	.WORD	0,0,0		;11 KEEP ALIVE
  10174	031776	000005 			.KPAC::	.WORD	5		;COUNTER FOR KP.
SCOMM	- COMMON DATA AND SUBRO	MACRO M1108  16-DEC-77 11:28  PAGE 142
SCOMM -- SYSTEM TASK DIRECTORY (STD)

  10176						.SBTTL	SCOMM -- SYSTEM TASK DIRECTORY (STD)
  10177
  10178					;
  10179					;	SYSTEM TASK DIRECTORY
  10180					;
  10181	032000	032006'			.STDTA::.WORD	.STDTB		;STD ALPHA TABLE ADDRESS
  10182	032002	000044 			.STDTC::.WORD	36.		;STD ALPHA TABLE MAX SIZE *2
  10183	032004	000024 			.STDTZ::.WORD	24		;STD "SIZE" (2N-2)
  10184					;
  10185	032006				.STDTB::
  10187	032006	032412'				.WORD	STDCDR		;CARD READER ENTRY
  10189	032010	032052'				.WORD	STDDTE		;DTE CLOCK ENTRY
  10194	032012	032112'				.WORD	STDFED		;FE DRIVER
  10197	032014	032152'				.WORD	STDDX		;FLOPPY DRIVER
  10200	032016	032212'				.WORD	STDF11		;F11ACP
  10203	032020	032352'				.WORD	STDLPT		;LP20
  10205	032022	032512'				.WORD	STDQPR		;QUEUE'D PROTOCOL
  10207	032024	032252'				.WORD	STDRPT		;RP04 ENTRY
  10209	032026	032452'				.WORD	STDTTY		;TTY ENTRY
  10211	032030	032312'				.WORD	STDINS		;INSTALL
  10213	032032	000000 	000000 	000000 		.WORD	0,0,0,0,0,0,0
	032040	000000 	000000 	000000
	032046	000000
  10233	032050	000000 				.WORD	0
  10235					;
  10236					;
  10237					;
  10238	032052				STDDTE:	.STDEN	DTE20,DTETPD,SF.TA!SF.FX!SF.ST,200,0,DTEHD,0,0,0,0,0,0
	032052	016045 	146260 			.RAD50	"DTE20"
	032056	033236'				.WORD	DTETPD
	032060	100003 				.WORD	SF.TA!SF.FX!SF.ST
	032062	   200 	   000 			.BYTE	200,0
	032064	014174'				.WORD	DTEHD
	032066	000000 				.WORD	0
	032070	000000 				.WORD	0
	032072	000000 				.WORD	0
	032074	000000 				.WORD	0
	032076	032076'				.WORD	.
	032100	032076'				.WORD	.-2
	032102	000000 				.WORD	0
	032104	000000 				.WORD	0
	032106	000000 				.WORD	0
	032110	000000 				.WORD	0
  10240					;
  10241	032112				STDFED:	.STDEN	FE....,FETPD,SF.TA!SF.FX!SF.ST,176,0,FEHD,0,0,0,0,0,0
	032112	023144 	131574 			.RAD50	"FE...."
	032116	033256'				.WORD	FETPD
	032120	100003 				.WORD	SF.TA!SF.FX!SF.ST
	032122	   176 	   000 			.BYTE	176,0
	032124	000000G				.WORD	FEHD
	032126	000000 				.WORD	0
	032130	000000 				.WORD	0
	032132	000000 				.WORD	0
	032134	000000 				.WORD	0
	032136	032136'				.WORD	.
	032140	032136'				.WORD	.-2
	032142	000000 				.WORD	0
SCOMM	- COMMON DATA AND SUBRO	MACRO M1108  16-DEC-77 11:28  PAGE 142-1
SCOMM -- SYSTEM TASK DIRECTORY (STD)

	032144	000000 				.WORD	0
	032146	000000 				.WORD	0
	032150	000000 				.WORD	0
  10248					;
  10249	032152				STDDX:	.STDEN	DX....,DXTPD,SF.TA!SF.FX!SF.ST,176,0,DXHD,0,0,0,0,0,0
	032152	016334 	131574 			.RAD50	"DX...."
	032156	033376'				.WORD	DXTPD
	032160	100003 				.WORD	SF.TA!SF.FX!SF.ST
	032162	   176 	   000 			.BYTE	176,0
	032164	000000G				.WORD	DXHD
	032166	000000 				.WORD	0
	032170	000000 				.WORD	0
	032172	000000 				.WORD	0
	032174	000000 				.WORD	0
	032176	032176'				.WORD	.
	032200	032176'				.WORD	.-2
	032202	000000 				.WORD	0
	032204	000000 				.WORD	0
	032206	000000 				.WORD	0
	032210	000000 				.WORD	0
  10252					;
  10253	032212				STDF11:
  10255	032212					.STDEN	F11ACP,F11TPD,SF.ST,220,<<DX0PEN-.PUDBA>/U.SZ>,145400,7700,0,145400,145400,0,5
	032212	025167 	003310 			.RAD50	"F11ACP"
	032216	033436'				.WORD	F11TPD
	032220	100000 				.WORD	SF.ST
	032222	   220 	   011 			.BYTE	220,<DX0PEN-.PUDBA>/U.SZ
	032224	145400 				.WORD	145400
	032226	007700 				.WORD	7700
	032230	000000 				.WORD	0
	032232	145400 				.WORD	145400
	032234	145400 				.WORD	145400
	032236	032236'				.WORD	.
	032240	032236'				.WORD	.-2
	032242	000000 				.WORD	0
	032244	000000 				.WORD	0
	032246	000005 				.WORD	5
	032250	000000 				.WORD	0
  10265					;
  10266	032252				STDRPT:	.STDEN	RP....,RPTPD,SF.TA!SF.FX!SF.ST,176,0,RPHD,0,0,0,0,0,0
	032252	071434 	131574 			.RAD50	"RP...."
	032256	033416'				.WORD	RPTPD
	032260	100003 				.WORD	SF.TA!SF.FX!SF.ST
	032262	   176 	   000 			.BYTE	176,0
	032264	000000G				.WORD	RPHD
	032266	000000 				.WORD	0
	032270	000000 				.WORD	0
	032272	000000 				.WORD	0
	032274	000000 				.WORD	0
	032276	032276'				.WORD	.
	032300	032276'				.WORD	.-2
	032302	000000 				.WORD	0
	032304	000000 				.WORD	0
	032306	000000 				.WORD	0
	032310	000000 				.WORD	0
  10269					;
  10270	032312				STDINS::.STDEN	.INST.,INSTPD,SF.FX!SF.ST,200,0,INSHD,0,0,INSTAL,INSTK-16,0,0
SCOMM	- COMMON DATA AND SUBRO	MACRO M1108  16-DEC-77 11:28  PAGE 142-2
SCOMM -- SYSTEM TASK DIRECTORY (STD)

	032312	130166 	074774 			.RAD50	".INST."
	032316	033216'				.WORD	INSTPD
	032320	100002 				.WORD	SF.FX!SF.ST
	032322	   200 	   000 			.BYTE	200,0
	032324	000000G				.WORD	INSHD
	032326	000000 				.WORD	0
	032330	000000 				.WORD	0
	032332	000000G				.WORD	INSTAL
	032334	177762G				.WORD	INSTK-16
	032336	032336'				.WORD	.
	032340	032336'				.WORD	.-2
	032342	000000 				.WORD	0
	032344	000000 				.WORD	0
	032346	000000 				.WORD	0
	032350	000000 				.WORD	0
  10273					;
  10274	032352				STDLPT:	.STDEN	LPDRV,LPTPD,SF.TA!SF.FX!SF.ST,176,0,LPHD,0,0,0,0,0,0
	032352	046604 	071760 			.RAD50	"LPDRV"
	032356	033316'				.WORD	LPTPD
	032360	100003 				.WORD	SF.TA!SF.FX!SF.ST
	032362	   176 	   000 			.BYTE	176,0
	032364	000000G				.WORD	LPHD
	032366	000000 				.WORD	0
	032370	000000 				.WORD	0
	032372	000000 				.WORD	0
	032374	000000 				.WORD	0
	032376	032376'				.WORD	.
	032400	032376'				.WORD	.-2
	032402	000000 				.WORD	0
	032404	000000 				.WORD	0
	032406	000000 				.WORD	0
	032410	000000 				.WORD	0
  10277					;
  10278	032412				STDCDR:	.STDEN	CDDRV,CDRTPD,SF.TA!SF.FX!SF.ST,210,0,CRHD,0,0,57252,55130-16,0,0
	032412	011544 	071760 			.RAD50	"CDDRV"
	032416	033336'				.WORD	CDRTPD
	032420	100003 				.WORD	SF.TA!SF.FX!SF.ST
	032422	   210 	   000 			.BYTE	210,0
	032424	000000G				.WORD	CRHD
	032426	000000 				.WORD	0
	032430	000000 				.WORD	0
	032432	057252 				.WORD	57252
	032434	055112 				.WORD	55130-16
	032436	032436'				.WORD	.
	032440	032436'				.WORD	.-2
	032442	000000 				.WORD	0
	032444	000000 				.WORD	0
	032446	000000 				.WORD	0
	032450	000000 				.WORD	0
  10280					;
  10281	032452				STDTTY:	.STDEN	TTYDRV,TTYTPD,SF.TA!SF.FX!SF.ST,177,0,TTYHD,0,0,0,0,0,0
	032452	100071 	015746 			.RAD50	"TTYDRV"
	032456	033276'				.WORD	TTYTPD
	032460	100003 				.WORD	SF.TA!SF.FX!SF.ST
	032462	   177 	   000 			.BYTE	177,0
	032464	022350'				.WORD	TTYHD
	032466	000000 				.WORD	0
SCOMM	- COMMON DATA AND SUBRO	MACRO M1108  16-DEC-77 11:28  PAGE 142-3
SCOMM -- SYSTEM TASK DIRECTORY (STD)

	032470	000000 				.WORD	0
	032472	000000 				.WORD	0
	032474	000000 				.WORD	0
	032476	032476'				.WORD	.
	032500	032476'				.WORD	.-2
	032502	000000 				.WORD	0
	032504	000000 				.WORD	0
	032506	000000 				.WORD	0
	032510	000000 				.WORD	0
  10282					;
  10283	032512				STDQPR:	.STDEN	QDPROT,QPRTPD,SF.TA!SF.FX!SF.ST,176,0,BTPHD,0,0,0,0,0,0
	032512	065360 	071354 			.RAD50	"QDPROT"
	032516	033356'				.WORD	QPRTPD
	032520	100003 				.WORD	SF.TA!SF.FX!SF.ST
	032522	   176 	   000 			.BYTE	176,0
	032524	005352'				.WORD	BTPHD
	032526	000000 				.WORD	0
	032530	000000 				.WORD	0
	032532	000000 				.WORD	0
	032534	000000 				.WORD	0
	032536	032536'				.WORD	.
	032540	032536'				.WORD	.-2
	032542	000000 				.WORD	0
	032544	000000 				.WORD	0
	032546	000000 				.WORD	0
	032550	000000 				.WORD	0
SCOMM	- COMMON DATA AND SUBRO	MACRO M1108  16-DEC-77 11:28  PAGE 143
SCOMM -- ACTIVE TASK LIST (ATL)

  10285						.SBTTL	SCOMM -- ACTIVE TASK LIST (ATL)
  10286
  10287					;
  10288					;	ACTIVE TASK LISTHEAD
  10289					;
  10290	032552	032556'			.ATLLH::.WORD	DTETSK		;FORWARD POINTER IN ACTIVE TASK LIST
  10291	032554	033156'				.WORD	NULTSK		;NULL TASK
  10292					;
  10293					;
  10294	032556				DTETSK::.ATLEN	TTYTSK,.ATLLH,DTESP,0,200,DTEHD,TS.RUN,0,STDDTE,0,0,0,0,0,0,0
	032556	032616'				.WORD	TTYTSK
	032560	032552'				.WORD	.ATLLH
	032562	014454'				.WORD	DTESP
	032564	000000 				.WORD	0
	032566	000200 				.WORD	200
	032570	014174'				.WORD	DTEHD
	032572	   010 	   000 			.BYTE	TS.RUN,0
	032574	032052'				.WORD	STDDTE
	032576	000000 	000000 			.WORD	0,0
	032602	000000 	000000 	000000 		.WORD	0,0,0,0
	032610	000000
	032612	000000 				.WORD	0
	032614	000000 				.WORD	0
  10295					;
  10296	032616				TTYTSK::.ATLEN	RPTSK,DTETSK,TTYSP,0,177,TTYHD,TS.RUN,0,STDTTY,0,0,0,0,0,0,0
	032616	032656'				.WORD	RPTSK
	032620	032556'				.WORD	DTETSK
	032622	022630'				.WORD	TTYSP
	032624	000000 				.WORD	0
	032626	000177 				.WORD	177
	032630	022350'				.WORD	TTYHD
	032632	   010 	   000 			.BYTE	TS.RUN,0
	032634	032452'				.WORD	STDTTY
	032636	000000 	000000 			.WORD	0,0
	032642	000000 	000000 	000000 		.WORD	0,0,0,0
	032650	000000
	032652	000000 				.WORD	0
	032654	000000 				.WORD	0
  10297					;
  10299	032656				RPTSK::	.ATLEN	LPTSK,TTYTSK,RPSTK,0,176,RPHD,TS.RUN,0,STDRPT,0,0,0,0,0,0,0
	032656	032716'				.WORD	LPTSK
	032660	032616'				.WORD	TTYTSK
	032662	000000G				.WORD	RPSTK
	032664	000000 				.WORD	0
	032666	000176 				.WORD	176
	032670	000000G				.WORD	RPHD
	032672	   010 	   000 			.BYTE	TS.RUN,0
	032674	032252'				.WORD	STDRPT
	032676	000000 	000000 			.WORD	0,0
	032702	000000 	000000 	000000 		.WORD	0,0,0,0
	032710	000000
	032712	000000 				.WORD	0
	032714	000000 				.WORD	0
  10303					;
  10305	032716				LPTSK::	.ATLEN	CDTSK,RPTSK,LPSTK,0,176,LPHD,TS.RUN,0,STDLPT,0,0,0,0,0,0,0
	032716	032756'				.WORD	CDTSK
	032720	032656'				.WORD	RPTSK
SCOMM	- COMMON DATA AND SUBRO	MACRO M1108  16-DEC-77 11:28  PAGE 143-1
SCOMM -- ACTIVE TASK LIST (ATL)

	032722	000000G				.WORD	LPSTK
	032724	000000 				.WORD	0
	032726	000176 				.WORD	176
	032730	000000G				.WORD	LPHD
	032732	   010 	   000 			.BYTE	TS.RUN,0
	032734	032352'				.WORD	STDLPT
	032736	000000 	000000 			.WORD	0,0
	032742	000000 	000000 	000000 		.WORD	0,0,0,0
	032750	000000
	032752	000000 				.WORD	0
	032754	000000 				.WORD	0
  10310	032756				CDTSK::	.ATLEN	DTTSK,LPTSK,CRSTK,CDRTPD,176,CRHD,TS.RUN,0,STDCDR,0,0,0,0,0,0,0
	032756	033016'				.WORD	DTTSK
	032760	032716'				.WORD	LPTSK
	032762	000000G				.WORD	CRSTK
	032764	033336'				.WORD	CDRTPD
	032766	000176 				.WORD	176
	032770	000000G				.WORD	CRHD
	032772	   010 	   000 			.BYTE	TS.RUN,0
	032774	032412'				.WORD	STDCDR
	032776	000000 	000000 			.WORD	0,0
	033002	000000 	000000 	000000 		.WORD	0,0,0,0
	033010	000000
	033012	000000 				.WORD	0
	033014	000000 				.WORD	0
  10314					;
  10318	033016				DTTSK::
  10320					;
  10322	033016				FETSK::	.ATLEN	DXTSK,DTTSK,FESTK,0,176,FEHD,TS.RUN,0,STDFED,0,0,0,0,0,0,0
	033016	033056'				.WORD	DXTSK
	033020	033016'				.WORD	DTTSK
	033022	000000G				.WORD	FESTK
	033024	000000 				.WORD	0
	033026	000176 				.WORD	176
	033030	000000G				.WORD	FEHD
	033032	   010 	   000 			.BYTE	TS.RUN,0
	033034	032112'				.WORD	STDFED
	033036	000000 	000000 			.WORD	0,0
	033042	000000 	000000 	000000 		.WORD	0,0,0,0
	033050	000000
	033052	000000 				.WORD	0
	033054	000000 				.WORD	0
  10326					;
  10328	033056				DXTSK::	.ATLEN	QPRTSK,FETSK,DXSTK,0,176,DXHD,TS.RUN,0,STDDX,0,0,0,0,0,0,0
	033056	033116'				.WORD	QPRTSK
	033060	033016'				.WORD	FETSK
	033062	000000G				.WORD	DXSTK
	033064	000000 				.WORD	0
	033066	000176 				.WORD	176
	033070	000000G				.WORD	DXHD
	033072	   010 	   000 			.BYTE	TS.RUN,0
	033074	032152'				.WORD	STDDX
	033076	000000 	000000 			.WORD	0,0
	033102	000000 	000000 	000000 		.WORD	0,0,0,0
	033110	000000
	033112	000000 				.WORD	0
	033114	000000 				.WORD	0
SCOMM	- COMMON DATA AND SUBRO	MACRO M1108  16-DEC-77 11:28  PAGE 143-2
SCOMM -- ACTIVE TASK LIST (ATL)

  10332					;
  10333	033116				QPRTSK::.ATLEN	NULTSK,DXTSK,.BTSTK,0,1,BTPHD,TS.RUN,0,STDQPR,0,0,0,0,0,0,0
	033116	033156'				.WORD	NULTSK
	033120	033056'				.WORD	DXTSK
	033122	005632'				.WORD	.BTSTK
	033124	000000 				.WORD	0
	033126	000001 				.WORD	1
	033130	005352'				.WORD	BTPHD
	033132	   010 	   000 			.BYTE	TS.RUN,0
	033134	032512'				.WORD	STDQPR
	033136	000000 	000000 			.WORD	0,0
	033142	000000 	000000 	000000 		.WORD	0,0,0,0
	033150	000000
	033152	000000 				.WORD	0
	033154	000000 				.WORD	0
  10334					;
  10335	033156				NULTSK::.ATLEN	.ATLLH,QPRTSK,NTKXSP,0,0,NULHD,TS.RUN,0,0,0,0,0,0,0,0,0
	033156	032552'				.WORD	.ATLLH
	033160	033116'				.WORD	QPRTSK
	033162	002044'				.WORD	NTKXSP
	033164	000000 				.WORD	0
	033166	000000 				.WORD	0
	033170	001564'				.WORD	NULHD
	033172	   010 	   000 			.BYTE	TS.RUN,0
	033174	000000 				.WORD	0
	033176	000000 	000000 			.WORD	0,0
	033202	000000 	000000 	000000 		.WORD	0,0,0,0
	033210	000000
	033212	000000 				.WORD	0
	033214	000000 				.WORD	0
SCOMM	- COMMON DATA AND SUBRO	MACRO M1108  16-DEC-77 11:28  PAGE 144
SCOMM -- TASK PARTITION DIRECTORY (TPD)

  10337						.SBTTL	SCOMM -- TASK PARTITION DIRECTORY (TPD)
  10338
  10339					;
  10340					;	TASK PARTITION DIRECTORY
  10341					;
  10342	033216				.TPDBA::
  10344					;
  10345	033216				INSTPD::.TPDEN	INSTPD,INSHD,0,0,TF.OU
	033216	000000 	000000 			.WORD	0,0
	033216	035203 	077604 			.RAD50	"INSTPD"
	033222	000000G				.WORD	INSHD
	033224	000000 				.WORD	0
	033226	000000 				.WORD	0
	033230	000002 				.WORD	TF.OU
	033232	033232'				.WORD	.
	033234	033232'				.WORD	.-2
  10347					;
  10348	033236				DTETPD::.TPDEN	DTETPD,DTEHD,0,0,TF.OU
	033236	000000 	000000 			.WORD	0,0
	033236	016045 	077604 			.RAD50	"DTETPD"
	033242	014174'				.WORD	DTEHD
	033244	000000 				.WORD	0
	033246	000000 				.WORD	0
	033250	000002 				.WORD	TF.OU
	033252	033252'				.WORD	.
	033254	033252'				.WORD	.-2
  10350					;
  10351	033256				FETPD:	.TPDEN	FETPD,FEHD,0,0,TF.OU
	033256	000000 	000000 			.WORD	0,0
	033256	023134 	062240 			.RAD50	"FETPD"
	033262	000000G				.WORD	FEHD
	033264	000000 				.WORD	0
	033266	000000 				.WORD	0
	033270	000002 				.WORD	TF.OU
	033272	033272'				.WORD	.
	033274	033272'				.WORD	.-2
  10353					;
  10354	033276				TTYTPD:	.TPDEN	TTYTPD,TTYHD,0,0,TF.OU
	033276	000000 	000000 			.WORD	0,0
	033276	100071 	077604 			.RAD50	"TTYTPD"
	033302	022350'				.WORD	TTYHD
	033304	000000 				.WORD	0
	033306	000000 				.WORD	0
	033310	000002 				.WORD	TF.OU
	033312	033312'				.WORD	.
	033314	033312'				.WORD	.-2
  10356					;
  10357	033316				LPTPD:	.TPDEN	LPTPD,LPHD,0,0,TF.OU
	033316	000000 	000000 			.WORD	0,0
	033316	046624 	062240 			.RAD50	"LPTPD"
	033322	000000G				.WORD	LPHD
	033324	000000 				.WORD	0
	033326	000000 				.WORD	0
	033330	000002 				.WORD	TF.OU
	033332	033332'				.WORD	.
	033334	033332'				.WORD	.-2
  10360					;
SCOMM	- COMMON DATA AND SUBRO	MACRO M1108  16-DEC-77 11:28  PAGE 144-1
SCOMM -- TASK PARTITION DIRECTORY (TPD)

  10361	033336				CDRTPD:	.TPDEN	CDRTPD,CRHD,0,0,TF.OU
	033336	000000 	000000 			.WORD	0,0
	033336	011562 	077604 			.RAD50	"CDRTPD"
	033342	000000G				.WORD	CRHD
	033344	000000 				.WORD	0
	033346	000000 				.WORD	0
	033350	000002 				.WORD	TF.OU
	033352	033352'				.WORD	.
	033354	033352'				.WORD	.-2
  10363					;
  10364	033356				QPRTPD:	.TPDEN	QPRTPD,BTPHD,0,0,TF.OU
	033356	000000 	000000 			.WORD	0,0
	033356	066322 	077604 			.RAD50	"QPRTPD"
	033362	005352'				.WORD	BTPHD
	033364	000000 				.WORD	0
	033366	000000 				.WORD	0
	033370	000002 				.WORD	TF.OU
	033372	033372'				.WORD	.
	033374	033372'				.WORD	.-2
  10370					;
  10371	033376				DXTPD:	.TPDEN	DXTPD,DXHD,0,0,TF.OU
	033376	000000 	000000 			.WORD	0,0
	033376	016324 	062240 			.RAD50	"DXTPD"
	033402	000000G				.WORD	DXHD
	033404	000000 				.WORD	0
	033406	000000 				.WORD	0
	033410	000002 				.WORD	TF.OU
	033412	033412'				.WORD	.
	033414	033412'				.WORD	.-2
  10374					;
  10375	033416				RPTPD:	.TPDEN	RPTPD,RPHD,0,0,TF.OU
	033416	000000 	000000 			.WORD	0,0
	033416	071424 	062240 			.RAD50	"RPTPD"
	033422	000000G				.WORD	RPHD
	033424	000000 				.WORD	0
	033426	000000 				.WORD	0
	033430	000002 				.WORD	TF.OU
	033432	033432'				.WORD	.
	033434	033432'				.WORD	.-2
  10378					;
  10379	033436				F11TPD::.TPDEN	F11TPD,145400,12400,0,0 ; +++008
	033436	000000 	000000 			.WORD	0,0
	033436	025167 	077604 			.RAD50	"F11TPD"
	033442	145400 				.WORD	145400
	033444	012400 				.WORD	12400
	033446	000000 				.WORD	0
	033450	000000 				.WORD	0
	033452	033452'				.WORD	.
	033454	033452'				.WORD	.-2
  10381					;
  10382	033456				GENTPD:	.TPDEN	GEN,100000,45400,0,0 ; +++008
	033456	000000 	000000 			.WORD	0,0
	033456	026226 				.RAD50	"GEN"
	033462	100000 				.WORD	100000
	033464	045400 				.WORD	45400
	033466	000000 				.WORD	0
	033470	000000 				.WORD	0
SCOMM	- COMMON DATA AND SUBRO	MACRO M1108  16-DEC-77 11:28  PAGE 144-2
SCOMM -- TASK PARTITION DIRECTORY (TPD)

	033472	033472'				.WORD	.
	033474	033472'				.WORD	.-2
  10383					;
  10384	033476				.TPDEA::		;END OF TPD
SCOMM	- COMMON DATA AND SUBRO	MACRO M1108  16-DEC-77 11:28  PAGE 145
SCOMM -- FREE POOL POINTERS

  10386						.SBTTL	SCOMM -- FREE POOL POINTERS
  10387
  10388		076000 				.BGBST==76000		; +++008 START OF BIG BUFFER
  10389		002000 				.BGLEN==2000		; +++008 LENGTH OF BIG BIFFER
  10390
  10391					;
  10392					;	POOL FREE CORE AREA
  10393					;
  10394	033476	076000 			.BGBUF::.WORD	.BGBST		; +++008 BIG BUFFER SPACE (1000 EACH)
  10395	033500	002000 				.WORD	.BGLEN
  10396
  10397	033502	000000 			.FREPL::.WORD	0		; +++008 FREE POOL BASE ADDRESS
  10398	033504	000000 				.WORD	0		; +++008 FREE POOL SIZE IN BYTES
  10399
  10400	033506	033512'			.POLLH::.WORD	.POLST		;HEAD OF POOL
  10401	033510	034412'				.WORD	.POLND		;END OF POOL
  10402
  10403	033512	033552'			.POLST:	.WORD	.+40
  10404	033514	033506'				.WORD	.POLLH
  10405						.BLKW	14.
  10406
  10407		000015 				.REPT	15
  10408						.WORD	.+40
  10409						.WORD	.-40
  10410						.BLKW	14.
  10411						.ENDR
	033552	033612'				.WORD	.+40
	033554	033514'				.WORD	.-40
	033612	033652'				.WORD	.+40
	033614	033554'				.WORD	.-40
	033652	033712'				.WORD	.+40
	033654	033614'				.WORD	.-40
	033712	033752'				.WORD	.+40
	033714	033654'				.WORD	.-40
	033752	034012'				.WORD	.+40
	033754	033714'				.WORD	.-40
	034012	034052'				.WORD	.+40
	034014	033754'				.WORD	.-40
	034052	034112'				.WORD	.+40
	034054	034014'				.WORD	.-40
	034112	034152'				.WORD	.+40
	034114	034054'				.WORD	.-40
	034152	034212'				.WORD	.+40
	034154	034114'				.WORD	.-40
	034212	034252'				.WORD	.+40
	034214	034154'				.WORD	.-40
	034252	034312'				.WORD	.+40
	034254	034214'				.WORD	.-40
	034312	034352'				.WORD	.+40
	034314	034254'				.WORD	.-40
	034352	034412'				.WORD	.+40
	034354	034314'				.WORD	.-40
  10412
  10413	034412	033506'			.POLND:	.WORD	.POLLH
  10414	034414	034354'				.WORD	.-40
  10415						.BLKW	14.
SCOMM	- COMMON DATA AND SUBRO	MACRO M1108  16-DEC-77 11:28  PAGE 146
SCOMM -- CLOCK REQUEST LIST

  10417						.SBTTL	SCOMM -- CLOCK REQUEST LIST
  10418
  10419					;
  10420					;	CLOCK LIST (LIST OF ENTRIES IN THE CLOCK QUEUE TO RECEIVE
  10421					;	EVENT FLAGS SET ON COMPLETION OF CLOCK TIMER
  10422					;
  10423		000007 			.CLKSZ==7.	;CLOCK QUEUE SIZE
  10424		000014 			C.SZ=14		;CLOCK ENTRY SIZE LOCAL DEFINITION (NOTE: IS A GLOBAL VAR.)
  10425
  10426	034452	032616'			.CLKBA::.WORD	TTYTSK
  10427	034454	000000 				.WORD	0
  10428	034456	000074 				.WORD	.CYLTM
  10429	034460	000074 				.WORD	.CYLTM
  10430	034462	000100 				.WORD	EF.TMO
  10431	034464	032636'				.WORD	TTYTSK+A.EF
  10432		000074 				.REPT	.CLKSZ-2*C.SZ
  10433						.WORD	0
  10434						.ENDR
	034466	000000 				.WORD	0
	034470	000000 				.WORD	0
	034472	000000 				.WORD	0
	034474	000000 				.WORD	0
	034476	000000 				.WORD	0
	034500	000000 				.WORD	0
	034502	000000 				.WORD	0
	034504	000000 				.WORD	0
	034506	000000 				.WORD	0
	034510	000000 				.WORD	0
	034512	000000 				.WORD	0
	034514	000000 				.WORD	0
	034516	000000 				.WORD	0
	034520	000000 				.WORD	0
	034522	000000 				.WORD	0
	034524	000000 				.WORD	0
	034526	000000 				.WORD	0
	034530	000000 				.WORD	0
	034532	000000 				.WORD	0
	034534	000000 				.WORD	0
	034536	000000 				.WORD	0
	034540	000000 				.WORD	0
	034542	000000 				.WORD	0
	034544	000000 				.WORD	0
	034546	000000 				.WORD	0
	034550	000000 				.WORD	0
	034552	000000 				.WORD	0
	034554	000000 				.WORD	0
	034556	000000 				.WORD	0
	034560	000000 				.WORD	0
	034562	000000 				.WORD	0
	034564	000000 				.WORD	0
	034566	000000 				.WORD	0
	034570	000000 				.WORD	0
	034572	000000 				.WORD	0
	034574	000000 				.WORD	0
	034576	000000 				.WORD	0
	034600	000000 				.WORD	0
	034602	000000 				.WORD	0
SCOMM	- COMMON DATA AND SUBRO	MACRO M1108  16-DEC-77 11:28  PAGE 146-1
SCOMM -- CLOCK REQUEST LIST

	034604	000000 				.WORD	0
	034606	000000 				.WORD	0
	034610	000000 				.WORD	0
	034612	000000 				.WORD	0
	034614	000000 				.WORD	0
	034616	000000 				.WORD	0
	034620	000000 				.WORD	0
	034622	000000 				.WORD	0
	034624	000000 				.WORD	0
	034626	000000 				.WORD	0
	034630	000000 				.WORD	0
	034632	000000 				.WORD	0
	034634	000000 				.WORD	0
	034636	000000 				.WORD	0
	034640	000000 				.WORD	0
	034642	000000 				.WORD	0
	034644	000000 				.WORD	0
	034646	000000 				.WORD	0
	034650	000000 				.WORD	0
	034652	000000 				.WORD	0
	034654	000000 				.WORD	0
  10435	034656	000000 			.CLKEA::.WORD	0		;END OF CLOCK LIST
SCOMM	- COMMON DATA AND SUBRO	MACRO M1108  16-DEC-77 11:28  PAGE 147
SCOMM -- DTE20 REQUEST LIST

  10437						.SBTTL	SCOMM -- DTE20 REQUEST LIST
  10438
  10439					;
  10440					;	DTE20 LIST (LIST OF ENTRIES IN THE DTE QUEUE TO RECEIVE
  10441					;	EVENT FLAGS SET ON COMPLETION OF DTE INTERRUPT)
  10442					;
  10443		000005 			.DTESZ==5.	;SIZE OF DTE20 TABLE
  10444		000005 			D.SZ=5		;DTE20 ENTRY SIZE LOCAL DEFINITION (NOTE: IS A GLOBAL VAR.)
  10445
SCOMM	- COMMON DATA AND SUBRO	MACRO M1108  16-DEC-77 11:28  PAGE 148
SCOMM -- DEVICE QUEUE POINTERS

  10455						.SBTTL	SCOMM -- DEVICE QUEUE POINTERS
  10456
  10457					;
  10458					;	DEVICE QUEUE POINTERS
  10459					;
  10460		000020 			Q.SZ=20		;QUEUE ENTRY SIZE (NOTE:IS A GLOBAL VAR.)
  10461
  10462		000001 			D.CCTY==1	;DEVICE CODE FOR CTY
  10463	034660				.DQPBA::.DQPEN	TTTBL,8.,..STTY,..STPT,IGNO,IGNO,0,TTCNT
	034660	035126'				.WORD	TTTBL
	034662	000010 				.WORD	8.
	034664	042204'				.WORD	..STTY
	034666	042632'				.WORD	..STPT
	034670	035060'				.WORD	IGNO
	034672	035060'				.WORD	IGNO
	034674	000000 				.WORD	0
	034676	000205 				.WORD	TTCNT
  10464		000002 			D.CDL1==2	;DEVICE CODE FOR DL11
  10465	034700					.DQPEN	DLTBL,8.,..STTY,..STPT,IGNO,IGNO,0,DLCNT
	034700	035126'				.WORD	DLTBL
	034702	000010 				.WORD	8.
	034704	042204'				.WORD	..STTY
	034706	042632'				.WORD	..STPT
	034710	035060'				.WORD	IGNO
	034712	035060'				.WORD	IGNO
	034714	000000 				.WORD	0
	034716	000005 				.WORD	DLCNT
  10466		000003 			D.CDH1==3	;DEVICE CODE FOR DH11 (1)
  10467	034720				.DQDH0::.DQPEN	DHTBL,8.,..STTY,..STPT,IGNO,IGNO,0,DHCNT
	034720	035176'				.WORD	DHTBL
	034722	000010 				.WORD	8.
	034724	042204'				.WORD	..STTY
	034726	042632'				.WORD	..STPT
	034730	035060'				.WORD	IGNO
	034732	035060'				.WORD	IGNO
	034734	000000 				.WORD	0
	034736	000200 				.WORD	DHCNT
  10468		000004 			D.CDLS==4	;DEVICE CODE FOR DATA LINE SCANNER (1)
  10469	034740				.DQDLS::.DQPEN	TTTBL,8.,..STTY,..STPT,IGNO,IGNO,0,TTCNT
	034740	035126'				.WORD	TTTBL
	034742	000010 				.WORD	8.
	034744	042204'				.WORD	..STTY
	034746	042632'				.WORD	..STPT
	034750	035060'				.WORD	IGNO
	034752	035060'				.WORD	IGNO
	034754	000000 				.WORD	0
	034756	000205 				.WORD	TTCNT
  10470		000005 			D.CLPT==5	;DEVICE CODE FOR LPT
  10471	034760					.DQPEN	LPTBL,8.,..STLP,..SPLP,IGNO,..AKLP,0,2
	034760	000000G				.WORD	LPTBL
	034762	000010 				.WORD	8.
	034764	000000G				.WORD	..STLP
	034766	000000G				.WORD	..SPLP
	034770	035060'				.WORD	IGNO
	034772	000000G				.WORD	..AKLP
	034774	000000 				.WORD	0
	034776	000002 				.WORD	2
SCOMM	- COMMON DATA AND SUBRO	MACRO M1108  16-DEC-77 11:28  PAGE 148-1
SCOMM -- DEVICE QUEUE POINTERS

  10472		000006 			D.CCDR==6	;DEVICE CODE FOR CDR
  10473	035000					.DQPEN	CRTBL,8.,..STCR,IGNO,IGNO,..AKCR,0,1
	035000	000000G				.WORD	CRTBL
	035002	000010 				.WORD	8.
	035004	000000G				.WORD	..STCR
	035006	035060'				.WORD	IGNO
	035010	035060'				.WORD	IGNO
	035012	000000G				.WORD	..AKCR
	035014	000000 				.WORD	0
	035016	000001 				.WORD	1
  10474		000007 			D.CCLK==7	;DEVICE CODE FOR CLOCK
  10475	035020					.DQPEN	0,0,0,0,0,0,0,1
	035020	000000 				.WORD	0
	035022	000000 				.WORD	0
	035024	000000 				.WORD	0
	035026	000000 				.WORD	0
	035030	000000 				.WORD	0
	035032	000000 				.WORD	0
	035034	000000 				.WORD	0
	035036	000001 				.WORD	1
  10476		000010 			D.FEPD==10	;PSEUDO DEVICE FOR FE
  10477	035040					.DQPEN	FETBL,2.,.FEST,0,IGNO,.FEACK,0,4
	035040	000000G				.WORD	FETBL
	035042	000002 				.WORD	2.
	035044	000000G				.WORD	.FEST
	035046	000000 				.WORD	0
	035050	035060'				.WORD	IGNO
	035052	000000G				.WORD	.FEACK
	035054	000000 				.WORD	0
	035056	000004 				.WORD	4
  10478
  10479
  10480	035060				.DQPEA::	;END OF DEVICE QUEUE POINTER TABLE
  10481		000010 			.DQPSZ==.DQPEA-.DQPBA/Q.SZ	;SIZE OF DEVICE QUEUE POINTER TABLE
  10482
  10483	035060				IGNO:	RETURN			;TO IGNORE UNUSED FUNCTIONS.
	035060	000207 				RTS	PC
  10484					;
  10485					;	NOTE -- THESE PSUEDO-DEVICES ARE OUTPUT-ONLY AND
  10486					;		ARE ASSOCIATED WITH ERROR LOGGING
  10487					;
  10488		000200 			D.CCPU==200	;PSEUDO DEVICE PDP10 CPU
  10489		000201 			D.CKLE==201	;KL ERROR PSEUDO DEVICE
  10490		000210 			D.CKLN==210	; KLINIK PSEUDO-DEVICE
SCOMM	- COMMON DATA AND SUBRO	MACRO M1108  16-DEC-77 11:28  PAGE 149
SCOMM -- TERMINAL DRIVER TABLES

  10492						.SBTTL	SCOMM -- TERMINAL DRIVER TABLES
  10493
  10494					;
  10495					;	TTY TABLES
  10496					;
  10497					; CONTROLLER IMPURE DATA TABLES (INDEXED BY CONTROLLER (UNIT) NUMBER)
  10498					;
  10499	035062	170500 	035176'		DMTBL::	.WORD	170500,DHTBL		;DM11BB TABLE
  10500	035066	170510 	035376'			.WORD	170510,16.*8.+DHTBL
  10501	035072	170520 	035576'			.WORD	170520,16.*8.*2.+DHTBL
  10502	035076	170530 	035776'			.WORD	170530,16.*8.*3.+DHTBL
  10503	035102	170540 	036176'			.WORD	170540,16.*8.*4.+DHTBL
  10504	035106	170550 	036376'			.WORD	170550,16.*8.*5.+DHTBL
  10505	035112	170560 	036576'			.WORD	170560,16.*8.*6.+DHTBL
  10506	035116	170570 	036776'			.WORD	170570,16.*8.*7.+DHTBL
  10507	035122	170570 	037176'			.WORD	170570,16.*8.*8.+DHTBL
  10508
  10509					;	THE DATA LINE SCANNER TABLE IS ORGANIZED AS FOLLOWS:
  10510					;	THE DL11'S ARE FIRST IN THE TABLE AND THE DL11C (CTY) IS UNIT 0,
  10511					;	THE DL11E(S) FOLLOW AND BEGIN AT UNIT 1. THE DH11HS FOLLOW THE
  10512					;	DL11ES
  10513					;
  10514	035126				TTTBL::					;START OF DATA LINE SCANNER TABLE
  10515	035126	000000 	177560 	000000 	DLTBL::	.WORD	0,177560,0,TT.CTY	;TERMINAL STATUS FOR DL11C
	035134	000400
  10516	035136				DLETBL::				; +++006 DL11E TABLE
  10517	035136	000000 	175610 	000000 		.WORD	0,175610,0,TT.RMT	; +++006 DL11E # 0 (KLINIK)
	035144	000100
  10518	035146	000000 	175630 	000000 		.WORD	0,175630,0,TT.RMT	; +++006 DL11E # 1
	035154	000100
  10519	035156	000000 	175640 	000000 		.WORD	0,175640,0,TT.RMT	; +++006 DL11E # 2
	035164	000100
  10520	035166	000000 	175650 	000000 		.WORD	0,175650,0,TT.RMT	; +++006 DL11E # 3
	035174	000100
  10521		000005 			DLCNT	==.-DLTBL/8.			;NUMBER OF DL11'S
  10522		000004 			DLECNT	==.-DLETBL/8.			; +++006 NUMBER OF DL11E'S
  10523	035176	000020 			DHTBL::	.REPT	16.
  10524						.WORD	0,160020,6007,0		; DH11 MUX CONRTOLLER 0
  10525						.ENDR
	035176	000000 	160020 	006007 		.WORD	0,160020,6007,0		; DH11 MUX CONRTOLLER 0
	035204	000000
	035206	000000 	160020 	006007 		.WORD	0,160020,6007,0		; DH11 MUX CONRTOLLER 0
	035214	000000
	035216	000000 	160020 	006007 		.WORD	0,160020,6007,0		; DH11 MUX CONRTOLLER 0
	035224	000000
	035226	000000 	160020 	006007 		.WORD	0,160020,6007,0		; DH11 MUX CONRTOLLER 0
	035234	000000
	035236	000000 	160020 	006007 		.WORD	0,160020,6007,0		; DH11 MUX CONRTOLLER 0
	035244	000000
	035246	000000 	160020 	006007 		.WORD	0,160020,6007,0		; DH11 MUX CONRTOLLER 0
	035254	000000
	035256	000000 	160020 	006007 		.WORD	0,160020,6007,0		; DH11 MUX CONRTOLLER 0
	035264	000000
	035266	000000 	160020 	006007 		.WORD	0,160020,6007,0		; DH11 MUX CONRTOLLER 0
	035274	000000
	035276	000000 	160020 	006007 		.WORD	0,160020,6007,0		; DH11 MUX CONRTOLLER 0
	035304	000000
SCOMM	- COMMON DATA AND SUBRO	MACRO M1108  16-DEC-77 11:28  PAGE 149-1
SCOMM -- TERMINAL DRIVER TABLES

	035306	000000 	160020 	006007 		.WORD	0,160020,6007,0		; DH11 MUX CONRTOLLER 0
	035314	000000
	035316	000000 	160020 	006007 		.WORD	0,160020,6007,0		; DH11 MUX CONRTOLLER 0
	035324	000000
	035326	000000 	160020 	006007 		.WORD	0,160020,6007,0		; DH11 MUX CONRTOLLER 0
	035334	000000
	035336	000000 	160020 	006007 		.WORD	0,160020,6007,0		; DH11 MUX CONRTOLLER 0
	035344	000000
	035346	000000 	160020 	006007 		.WORD	0,160020,6007,0		; DH11 MUX CONRTOLLER 0
	035354	000000
	035356	000000 	160020 	006007 		.WORD	0,160020,6007,0		; DH11 MUX CONRTOLLER 0
	035364	000000
	035366	000000 	160020 	006007 		.WORD	0,160020,6007,0		; DH11 MUX CONRTOLLER 0
	035374	000000
  10526		000020 				.REPT	16.
  10527						.WORD	0,160040,6007,0		; DH11 MUX CONTROLLER 1
  10528						.ENDR
	035376	000000 	160040 	006007 		.WORD	0,160040,6007,0		; DH11 MUX CONTROLLER 1
	035404	000000
	035406	000000 	160040 	006007 		.WORD	0,160040,6007,0		; DH11 MUX CONTROLLER 1
	035414	000000
	035416	000000 	160040 	006007 		.WORD	0,160040,6007,0		; DH11 MUX CONTROLLER 1
	035424	000000
	035426	000000 	160040 	006007 		.WORD	0,160040,6007,0		; DH11 MUX CONTROLLER 1
	035434	000000
	035436	000000 	160040 	006007 		.WORD	0,160040,6007,0		; DH11 MUX CONTROLLER 1
	035444	000000
	035446	000000 	160040 	006007 		.WORD	0,160040,6007,0		; DH11 MUX CONTROLLER 1
	035454	000000
	035456	000000 	160040 	006007 		.WORD	0,160040,6007,0		; DH11 MUX CONTROLLER 1
	035464	000000
	035466	000000 	160040 	006007 		.WORD	0,160040,6007,0		; DH11 MUX CONTROLLER 1
	035474	000000
	035476	000000 	160040 	006007 		.WORD	0,160040,6007,0		; DH11 MUX CONTROLLER 1
	035504	000000
	035506	000000 	160040 	006007 		.WORD	0,160040,6007,0		; DH11 MUX CONTROLLER 1
	035514	000000
	035516	000000 	160040 	006007 		.WORD	0,160040,6007,0		; DH11 MUX CONTROLLER 1
	035524	000000
	035526	000000 	160040 	006007 		.WORD	0,160040,6007,0		; DH11 MUX CONTROLLER 1
	035534	000000
	035536	000000 	160040 	006007 		.WORD	0,160040,6007,0		; DH11 MUX CONTROLLER 1
	035544	000000
	035546	000000 	160040 	006007 		.WORD	0,160040,6007,0		; DH11 MUX CONTROLLER 1
	035554	000000
	035556	000000 	160040 	006007 		.WORD	0,160040,6007,0		; DH11 MUX CONTROLLER 1
	035564	000000
	035566	000000 	160040 	006007 		.WORD	0,160040,6007,0		; DH11 MUX CONTROLLER 1
	035574	000000
  10529		000020 				.REPT	16.
  10530						.WORD	0,160060,6007,0		; DH11 MUX CONTROLLER 2
  10531						.ENDR
	035576	000000 	160060 	006007 		.WORD	0,160060,6007,0		; DH11 MUX CONTROLLER 2
	035604	000000
	035606	000000 	160060 	006007 		.WORD	0,160060,6007,0		; DH11 MUX CONTROLLER 2
	035614	000000
	035616	000000 	160060 	006007 		.WORD	0,160060,6007,0		; DH11 MUX CONTROLLER 2
SCOMM	- COMMON DATA AND SUBRO	MACRO M1108  16-DEC-77 11:28  PAGE 149-2
SCOMM -- TERMINAL DRIVER TABLES

	035624	000000
	035626	000000 	160060 	006007 		.WORD	0,160060,6007,0		; DH11 MUX CONTROLLER 2
	035634	000000
	035636	000000 	160060 	006007 		.WORD	0,160060,6007,0		; DH11 MUX CONTROLLER 2
	035644	000000
	035646	000000 	160060 	006007 		.WORD	0,160060,6007,0		; DH11 MUX CONTROLLER 2
	035654	000000
	035656	000000 	160060 	006007 		.WORD	0,160060,6007,0		; DH11 MUX CONTROLLER 2
	035664	000000
	035666	000000 	160060 	006007 		.WORD	0,160060,6007,0		; DH11 MUX CONTROLLER 2
	035674	000000
	035676	000000 	160060 	006007 		.WORD	0,160060,6007,0		; DH11 MUX CONTROLLER 2
	035704	000000
	035706	000000 	160060 	006007 		.WORD	0,160060,6007,0		; DH11 MUX CONTROLLER 2
	035714	000000
	035716	000000 	160060 	006007 		.WORD	0,160060,6007,0		; DH11 MUX CONTROLLER 2
	035724	000000
	035726	000000 	160060 	006007 		.WORD	0,160060,6007,0		; DH11 MUX CONTROLLER 2
	035734	000000
	035736	000000 	160060 	006007 		.WORD	0,160060,6007,0		; DH11 MUX CONTROLLER 2
	035744	000000
	035746	000000 	160060 	006007 		.WORD	0,160060,6007,0		; DH11 MUX CONTROLLER 2
	035754	000000
	035756	000000 	160060 	006007 		.WORD	0,160060,6007,0		; DH11 MUX CONTROLLER 2
	035764	000000
	035766	000000 	160060 	006007 		.WORD	0,160060,6007,0		; DH11 MUX CONTROLLER 2
	035774	000000
  10532		000020 				.REPT	16.
  10533						.WORD	0,160100,6007,0		; DH11 MUX CONTROLLER 3
  10534						.ENDR
	035776	000000 	160100 	006007 		.WORD	0,160100,6007,0		; DH11 MUX CONTROLLER 3
	036004	000000
	036006	000000 	160100 	006007 		.WORD	0,160100,6007,0		; DH11 MUX CONTROLLER 3
	036014	000000
	036016	000000 	160100 	006007 		.WORD	0,160100,6007,0		; DH11 MUX CONTROLLER 3
	036024	000000
	036026	000000 	160100 	006007 		.WORD	0,160100,6007,0		; DH11 MUX CONTROLLER 3
	036034	000000
	036036	000000 	160100 	006007 		.WORD	0,160100,6007,0		; DH11 MUX CONTROLLER 3
	036044	000000
	036046	000000 	160100 	006007 		.WORD	0,160100,6007,0		; DH11 MUX CONTROLLER 3
	036054	000000
	036056	000000 	160100 	006007 		.WORD	0,160100,6007,0		; DH11 MUX CONTROLLER 3
	036064	000000
	036066	000000 	160100 	006007 		.WORD	0,160100,6007,0		; DH11 MUX CONTROLLER 3
	036074	000000
	036076	000000 	160100 	006007 		.WORD	0,160100,6007,0		; DH11 MUX CONTROLLER 3
	036104	000000
	036106	000000 	160100 	006007 		.WORD	0,160100,6007,0		; DH11 MUX CONTROLLER 3
	036114	000000
	036116	000000 	160100 	006007 		.WORD	0,160100,6007,0		; DH11 MUX CONTROLLER 3
	036124	000000
	036126	000000 	160100 	006007 		.WORD	0,160100,6007,0		; DH11 MUX CONTROLLER 3
	036134	000000
	036136	000000 	160100 	006007 		.WORD	0,160100,6007,0		; DH11 MUX CONTROLLER 3
	036144	000000
	036146	000000 	160100 	006007 		.WORD	0,160100,6007,0		; DH11 MUX CONTROLLER 3
SCOMM	- COMMON DATA AND SUBRO	MACRO M1108  16-DEC-77 11:28  PAGE 149-3
SCOMM -- TERMINAL DRIVER TABLES

	036154	000000
	036156	000000 	160100 	006007 		.WORD	0,160100,6007,0		; DH11 MUX CONTROLLER 3
	036164	000000
	036166	000000 	160100 	006007 		.WORD	0,160100,6007,0		; DH11 MUX CONTROLLER 3
	036174	000000
  10535		000020 				.REPT	16.
  10536						.WORD	0,160120,6007,0		; DH11 MUX CONTROLLER 4
  10537						.ENDR
	036176	000000 	160120 	006007 		.WORD	0,160120,6007,0		; DH11 MUX CONTROLLER 4
	036204	000000
	036206	000000 	160120 	006007 		.WORD	0,160120,6007,0		; DH11 MUX CONTROLLER 4
	036214	000000
	036216	000000 	160120 	006007 		.WORD	0,160120,6007,0		; DH11 MUX CONTROLLER 4
	036224	000000
	036226	000000 	160120 	006007 		.WORD	0,160120,6007,0		; DH11 MUX CONTROLLER 4
	036234	000000
	036236	000000 	160120 	006007 		.WORD	0,160120,6007,0		; DH11 MUX CONTROLLER 4
	036244	000000
	036246	000000 	160120 	006007 		.WORD	0,160120,6007,0		; DH11 MUX CONTROLLER 4
	036254	000000
	036256	000000 	160120 	006007 		.WORD	0,160120,6007,0		; DH11 MUX CONTROLLER 4
	036264	000000
	036266	000000 	160120 	006007 		.WORD	0,160120,6007,0		; DH11 MUX CONTROLLER 4
	036274	000000
	036276	000000 	160120 	006007 		.WORD	0,160120,6007,0		; DH11 MUX CONTROLLER 4
	036304	000000
	036306	000000 	160120 	006007 		.WORD	0,160120,6007,0		; DH11 MUX CONTROLLER 4
	036314	000000
	036316	000000 	160120 	006007 		.WORD	0,160120,6007,0		; DH11 MUX CONTROLLER 4
	036324	000000
	036326	000000 	160120 	006007 		.WORD	0,160120,6007,0		; DH11 MUX CONTROLLER 4
	036334	000000
	036336	000000 	160120 	006007 		.WORD	0,160120,6007,0		; DH11 MUX CONTROLLER 4
	036344	000000
	036346	000000 	160120 	006007 		.WORD	0,160120,6007,0		; DH11 MUX CONTROLLER 4
	036354	000000
	036356	000000 	160120 	006007 		.WORD	0,160120,6007,0		; DH11 MUX CONTROLLER 4
	036364	000000
	036366	000000 	160120 	006007 		.WORD	0,160120,6007,0		; DH11 MUX CONTROLLER 4
	036374	000000
  10538		000020 				.REPT	16.
  10539						.WORD	0,160140,6007,0		; DH11 MUX CONTROLLER 5
  10540						.ENDR
	036376	000000 	160140 	006007 		.WORD	0,160140,6007,0		; DH11 MUX CONTROLLER 5
	036404	000000
	036406	000000 	160140 	006007 		.WORD	0,160140,6007,0		; DH11 MUX CONTROLLER 5
	036414	000000
	036416	000000 	160140 	006007 		.WORD	0,160140,6007,0		; DH11 MUX CONTROLLER 5
	036424	000000
	036426	000000 	160140 	006007 		.WORD	0,160140,6007,0		; DH11 MUX CONTROLLER 5
	036434	000000
	036436	000000 	160140 	006007 		.WORD	0,160140,6007,0		; DH11 MUX CONTROLLER 5
	036444	000000
	036446	000000 	160140 	006007 		.WORD	0,160140,6007,0		; DH11 MUX CONTROLLER 5
	036454	000000
	036456	000000 	160140 	006007 		.WORD	0,160140,6007,0		; DH11 MUX CONTROLLER 5
	036464	000000
SCOMM	- COMMON DATA AND SUBRO	MACRO M1108  16-DEC-77 11:28  PAGE 149-4
SCOMM -- TERMINAL DRIVER TABLES

	036466	000000 	160140 	006007 		.WORD	0,160140,6007,0		; DH11 MUX CONTROLLER 5
	036474	000000
	036476	000000 	160140 	006007 		.WORD	0,160140,6007,0		; DH11 MUX CONTROLLER 5
	036504	000000
	036506	000000 	160140 	006007 		.WORD	0,160140,6007,0		; DH11 MUX CONTROLLER 5
	036514	000000
	036516	000000 	160140 	006007 		.WORD	0,160140,6007,0		; DH11 MUX CONTROLLER 5
	036524	000000
	036526	000000 	160140 	006007 		.WORD	0,160140,6007,0		; DH11 MUX CONTROLLER 5
	036534	000000
	036536	000000 	160140 	006007 		.WORD	0,160140,6007,0		; DH11 MUX CONTROLLER 5
	036544	000000
	036546	000000 	160140 	006007 		.WORD	0,160140,6007,0		; DH11 MUX CONTROLLER 5
	036554	000000
	036556	000000 	160140 	006007 		.WORD	0,160140,6007,0		; DH11 MUX CONTROLLER 5
	036564	000000
	036566	000000 	160140 	006007 		.WORD	0,160140,6007,0		; DH11 MUX CONTROLLER 5
	036574	000000
  10541		000020 				.REPT	16.
  10542						.WORD	0,160160,6007,0		; DH11 MUX CONTROLLER 6
  10543						.ENDR
	036576	000000 	160160 	006007 		.WORD	0,160160,6007,0		; DH11 MUX CONTROLLER 6
	036604	000000
	036606	000000 	160160 	006007 		.WORD	0,160160,6007,0		; DH11 MUX CONTROLLER 6
	036614	000000
	036616	000000 	160160 	006007 		.WORD	0,160160,6007,0		; DH11 MUX CONTROLLER 6
	036624	000000
	036626	000000 	160160 	006007 		.WORD	0,160160,6007,0		; DH11 MUX CONTROLLER 6
	036634	000000
	036636	000000 	160160 	006007 		.WORD	0,160160,6007,0		; DH11 MUX CONTROLLER 6
	036644	000000
	036646	000000 	160160 	006007 		.WORD	0,160160,6007,0		; DH11 MUX CONTROLLER 6
	036654	000000
	036656	000000 	160160 	006007 		.WORD	0,160160,6007,0		; DH11 MUX CONTROLLER 6
	036664	000000
	036666	000000 	160160 	006007 		.WORD	0,160160,6007,0		; DH11 MUX CONTROLLER 6
	036674	000000
	036676	000000 	160160 	006007 		.WORD	0,160160,6007,0		; DH11 MUX CONTROLLER 6
	036704	000000
	036706	000000 	160160 	006007 		.WORD	0,160160,6007,0		; DH11 MUX CONTROLLER 6
	036714	000000
	036716	000000 	160160 	006007 		.WORD	0,160160,6007,0		; DH11 MUX CONTROLLER 6
	036724	000000
	036726	000000 	160160 	006007 		.WORD	0,160160,6007,0		; DH11 MUX CONTROLLER 6
	036734	000000
	036736	000000 	160160 	006007 		.WORD	0,160160,6007,0		; DH11 MUX CONTROLLER 6
	036744	000000
	036746	000000 	160160 	006007 		.WORD	0,160160,6007,0		; DH11 MUX CONTROLLER 6
	036754	000000
	036756	000000 	160160 	006007 		.WORD	0,160160,6007,0		; DH11 MUX CONTROLLER 6
	036764	000000
	036766	000000 	160160 	006007 		.WORD	0,160160,6007,0		; DH11 MUX CONTROLLER 6
	036774	000000
  10544		000020 				.REPT	16.
  10545						.WORD	0,160200,6007,0		; DH11 MUX CONTROLLER 7
  10546						.ENDR
	036776	000000 	160200 	006007 		.WORD	0,160200,6007,0		; DH11 MUX CONTROLLER 7
SCOMM	- COMMON DATA AND SUBRO	MACRO M1108  16-DEC-77 11:28  PAGE 149-5
SCOMM -- TERMINAL DRIVER TABLES

	037004	000000
	037006	000000 	160200 	006007 		.WORD	0,160200,6007,0		; DH11 MUX CONTROLLER 7
	037014	000000
	037016	000000 	160200 	006007 		.WORD	0,160200,6007,0		; DH11 MUX CONTROLLER 7
	037024	000000
	037026	000000 	160200 	006007 		.WORD	0,160200,6007,0		; DH11 MUX CONTROLLER 7
	037034	000000
	037036	000000 	160200 	006007 		.WORD	0,160200,6007,0		; DH11 MUX CONTROLLER 7
	037044	000000
	037046	000000 	160200 	006007 		.WORD	0,160200,6007,0		; DH11 MUX CONTROLLER 7
	037054	000000
	037056	000000 	160200 	006007 		.WORD	0,160200,6007,0		; DH11 MUX CONTROLLER 7
	037064	000000
	037066	000000 	160200 	006007 		.WORD	0,160200,6007,0		; DH11 MUX CONTROLLER 7
	037074	000000
	037076	000000 	160200 	006007 		.WORD	0,160200,6007,0		; DH11 MUX CONTROLLER 7
	037104	000000
	037106	000000 	160200 	006007 		.WORD	0,160200,6007,0		; DH11 MUX CONTROLLER 7
	037114	000000
	037116	000000 	160200 	006007 		.WORD	0,160200,6007,0		; DH11 MUX CONTROLLER 7
	037124	000000
	037126	000000 	160200 	006007 		.WORD	0,160200,6007,0		; DH11 MUX CONTROLLER 7
	037134	000000
	037136	000000 	160200 	006007 		.WORD	0,160200,6007,0		; DH11 MUX CONTROLLER 7
	037144	000000
	037146	000000 	160200 	006007 		.WORD	0,160200,6007,0		; DH11 MUX CONTROLLER 7
	037154	000000
	037156	000000 	160200 	006007 		.WORD	0,160200,6007,0		; DH11 MUX CONTROLLER 7
	037164	000000
	037166	000000 	160200 	006007 		.WORD	0,160200,6007,0		; DH11 MUX CONTROLLER 7
	037174	000000
  10547
  10548		000200 			DHCNT	==.-DHTBL/8.			;COUNT OF DH11'S
  10549		000205 			TTCNT	==.-TTTBL/8.			;NUMBER OF ENTRIES OF DATA LINE SCANNER TABLE
  10550		037176'			TTYEND==.
  10551	037176	000000 	000000 			.WORD	0,0		;GUARD WORDS FOR DH DRIVER INITIL
SCOMM	- COMMON DATA AND SUBRO	MACRO M1108  16-DEC-77 11:28  PAGE 150
SCOMM -- LOGICAL UNIT TABLES

  10553						.SBTTL	SCOMM -- LOGICAL UNIT TABLES
  10554
  10555					;
  10556					;	LOGICAL UNIT TABLE
  10557					;
  10558	037202				.PUDBA::			;START OF LOGICAL UNIT TABLE
  10559					;
  10560		000001 			L.TTY==1	;LOGICAL UNIT 1
  10561	037202				TTPEN::	.PUDEN	TT,0,0,UC.REC!UC.CCL!UC.TTY,0,0,80.,TTPEN,TTYTSK,0,0,0
	037202	   124 	   124 			.ASCII	"TT"
	037204	   000 				.BYTE	0
	037205	   000 				.BYTE	0
	037206	000007 				.WORD	UC.REC!UC.CCL!UC.TTY
	037210	000000 				.WORD	0
	037212	000000 				.WORD	0
	037214	000120 				.WORD	80.
	037216	000000 				.WORD	0
	037220	037202'				.WORD	TTPEN
	037222	032616'				.WORD	TTYTSK
	037224	037224'				.WORD	.
	037226	037224'				.WORD	.-2
	037230	000000 				.WORD	0
	037232	   005 	   005 			.BYTE	5,5
	037234	000000 				.WORD	0
	037236	177777 				.WORD	-1
	037240	135600 				.RAD50	/0/
	037242	000000 				.WORD	0
	037244	000000 				.WORD	0
	037246	000000 				.WORD	0
	037250	000000 				.WORD	0
  10562					;
  10563		000002 			L.RP4==2
  10564					;DVCH=CH.OFF+CH.NAT*400+CH.OFF+CH.NAT
  10565		110220 			DVCH=110220
  10566					;FW=UF.TL!UF.RH
  10567		000300 			FW=300
  10568					;C1=UC.MNT!UC.F11!UC.DIR
  10569		140010 			C1=140010
  10570					;C1DB=UC.MNT!UC.F11!UC.DIR!UC.ETB
  10571		140110 			C1DB=140110
  10572					;
  10574	037252				RPPEN::	.PUDEN	DB,0,FW,C1DB,0,0,512.,RPPEN,RPTSK,DVCH,F11,0
	037252	   104 	   102 			.ASCII	"DB"
	037254	   000 				.BYTE	0
	037255	   300 				.BYTE	FW
	037256	140110 				.WORD	C1DB
	037260	000000 				.WORD	0
	037262	000000 				.WORD	0
	037264	001000 				.WORD	512.
	037266	000000 				.WORD	0
	037270	037252'				.WORD	RPPEN
	037272	032656'				.WORD	RPTSK
	037274	037274'				.WORD	.
	037276	037274'				.WORD	.-2
	037300	000000 				.WORD	0
	037302	   005 	   005 			.BYTE	5,5
	037304	110220 				.WORD	DVCH
SCOMM	- COMMON DATA AND SUBRO	MACRO M1108  16-DEC-77 11:28  PAGE 150-1
SCOMM -- LOGICAL UNIT TABLES

	037306	177777 				.WORD	-1
	037310	025167 				.RAD50	/F11/
	037312	000000 				.WORD	0
	037314	000000 				.WORD	0
	037316	000000 				.WORD	0
	037320	000000 				.WORD	0
  10575					; THIS IS DONE TO KEEP .PUDEN MACROS SHORTER THAN 80 CHARS
  10576		037316'			.=.-4
  10577	037316	000002 				.WORD	2
  10578	037320	050700 				.WORD	50700		;RP SIZE IS 140000. BLOCKS
  10579	037322				.RP1PE::.PUDEN DB,1,FW,C1DB,0,0,512.,.RP1PE,RPTSK,DVCH,F11,0
	037322	   104 	   102 			.ASCII	"DB"
	037324	   001 				.BYTE	1
	037325	   300 				.BYTE	FW
	037326	140110 				.WORD	C1DB
	037330	000000 				.WORD	0
	037332	000000 				.WORD	0
	037334	001000 				.WORD	512.
	037336	000000 				.WORD	0
	037340	037322'				.WORD	.RP1PE
	037342	032656'				.WORD	RPTSK
	037344	037344'				.WORD	.
	037346	037344'				.WORD	.-2
	037350	000000 				.WORD	0
	037352	   005 	   005 			.BYTE	5,5
	037354	110220 				.WORD	DVCH
	037356	177777 				.WORD	-1
	037360	025167 				.RAD50	/F11/
	037362	000000 				.WORD	0
	037364	000000 				.WORD	0
	037366	000000 				.WORD	0
	037370	000000 				.WORD	0
  10580		037366'				.=.-4
  10581	037366	000002 				.WORD	2
  10582	037370	050700 				.WORD	50700
  10583	037372				.RP2PE::.PUDEN DB,2,FW,C1DB,0,0,512.,.RP2PE,RPTSK,DVCH,F11,0
	037372	   104 	   102 			.ASCII	"DB"
	037374	   002 				.BYTE	2
	037375	   300 				.BYTE	FW
	037376	140110 				.WORD	C1DB
	037400	000000 				.WORD	0
	037402	000000 				.WORD	0
	037404	001000 				.WORD	512.
	037406	000000 				.WORD	0
	037410	037372'				.WORD	.RP2PE
	037412	032656'				.WORD	RPTSK
	037414	037414'				.WORD	.
	037416	037414'				.WORD	.-2
	037420	000000 				.WORD	0
	037422	   005 	   005 			.BYTE	5,5
	037424	110220 				.WORD	DVCH
	037426	177777 				.WORD	-1
	037430	025167 				.RAD50	/F11/
	037432	000000 				.WORD	0
	037434	000000 				.WORD	0
	037436	000000 				.WORD	0
	037440	000000 				.WORD	0
SCOMM	- COMMON DATA AND SUBRO	MACRO M1108  16-DEC-77 11:28  PAGE 150-2
SCOMM -- LOGICAL UNIT TABLES

  10584		037436'				.=.-4
  10585	037436	000002 				.WORD	2
  10586	037440	050700 				.WORD	50700
  10587	037442				.RP3PE::.PUDEN DB,3,FW,C1DB,0,0,512.,.RP3PE,RPTSK,DVCH,F11,0
	037442	   104 	   102 			.ASCII	"DB"
	037444	   003 				.BYTE	3
	037445	   300 				.BYTE	FW
	037446	140110 				.WORD	C1DB
	037450	000000 				.WORD	0
	037452	000000 				.WORD	0
	037454	001000 				.WORD	512.
	037456	000000 				.WORD	0
	037460	037442'				.WORD	.RP3PE
	037462	032656'				.WORD	RPTSK
	037464	037464'				.WORD	.
	037466	037464'				.WORD	.-2
	037470	000000 				.WORD	0
	037472	   005 	   005 			.BYTE	5,5
	037474	110220 				.WORD	DVCH
	037476	177777 				.WORD	-1
	037500	025167 				.RAD50	/F11/
	037502	000000 				.WORD	0
	037504	000000 				.WORD	0
	037506	000000 				.WORD	0
	037510	000000 				.WORD	0
  10588		037506'				.=.-4
  10589	037506	000002 				.WORD	2
  10590	037510	050700 				.WORD	50700
  10591	037512				.RP4PE::.PUDEN DB,4,FW,C1DB,0,0,512.,.RP4PE,RPTSK,DVCH,F11,0
	037512	   104 	   102 			.ASCII	"DB"
	037514	   004 				.BYTE	4
	037515	   300 				.BYTE	FW
	037516	140110 				.WORD	C1DB
	037520	000000 				.WORD	0
	037522	000000 				.WORD	0
	037524	001000 				.WORD	512.
	037526	000000 				.WORD	0
	037530	037512'				.WORD	.RP4PE
	037532	032656'				.WORD	RPTSK
	037534	037534'				.WORD	.
	037536	037534'				.WORD	.-2
	037540	000000 				.WORD	0
	037542	   005 	   005 			.BYTE	5,5
	037544	110220 				.WORD	DVCH
	037546	177777 				.WORD	-1
	037550	025167 				.RAD50	/F11/
	037552	000000 				.WORD	0
	037554	000000 				.WORD	0
	037556	000000 				.WORD	0
	037560	000000 				.WORD	0
  10592		037556'				.=.-4
  10593	037556	000002 				.WORD	2
  10594	037560	050700 				.WORD	50700
  10595	037562				.RP5PE::.PUDEN DB,5,FW,C1DB,0,0,512.,.RP5PE,RPTSK,DVCH,F11,0
	037562	   104 	   102 			.ASCII	"DB"
	037564	   005 				.BYTE	5
	037565	   300 				.BYTE	FW
SCOMM	- COMMON DATA AND SUBRO	MACRO M1108  16-DEC-77 11:28  PAGE 150-3
SCOMM -- LOGICAL UNIT TABLES

	037566	140110 				.WORD	C1DB
	037570	000000 				.WORD	0
	037572	000000 				.WORD	0
	037574	001000 				.WORD	512.
	037576	000000 				.WORD	0
	037600	037562'				.WORD	.RP5PE
	037602	032656'				.WORD	RPTSK
	037604	037604'				.WORD	.
	037606	037604'				.WORD	.-2
	037610	000000 				.WORD	0
	037612	   005 	   005 			.BYTE	5,5
	037614	110220 				.WORD	DVCH
	037616	177777 				.WORD	-1
	037620	025167 				.RAD50	/F11/
	037622	000000 				.WORD	0
	037624	000000 				.WORD	0
	037626	000000 				.WORD	0
	037630	000000 				.WORD	0
  10596		037626'				.=.-4
  10597	037626	000002 				.WORD	2
  10598	037630	050700 				.WORD	50700
  10599	037632				.RP6PE::.PUDEN DB,6,FW,C1DB,0,0,512.,.RP6PE,RPTSK,DVCH,F11,0
	037632	   104 	   102 			.ASCII	"DB"
	037634	   006 				.BYTE	6
	037635	   300 				.BYTE	FW
	037636	140110 				.WORD	C1DB
	037640	000000 				.WORD	0
	037642	000000 				.WORD	0
	037644	001000 				.WORD	512.
	037646	000000 				.WORD	0
	037650	037632'				.WORD	.RP6PE
	037652	032656'				.WORD	RPTSK
	037654	037654'				.WORD	.
	037656	037654'				.WORD	.-2
	037660	000000 				.WORD	0
	037662	   005 	   005 			.BYTE	5,5
	037664	110220 				.WORD	DVCH
	037666	177777 				.WORD	-1
	037670	025167 				.RAD50	/F11/
	037672	000000 				.WORD	0
	037674	000000 				.WORD	0
	037676	000000 				.WORD	0
	037700	000000 				.WORD	0
  10600		037676'				.=.-4
  10601	037676	000002 				.WORD	2
  10602	037700	050700 				.WORD	50700
  10603	037702				.RP7PE::.PUDEN DB,7,FW,C1DB,0,0,512.,.RP7PE,RPTSK,DVCH,F11,0
	037702	   104 	   102 			.ASCII	"DB"
	037704	   007 				.BYTE	7
	037705	   300 				.BYTE	FW
	037706	140110 				.WORD	C1DB
	037710	000000 				.WORD	0
	037712	000000 				.WORD	0
	037714	001000 				.WORD	512.
	037716	000000 				.WORD	0
	037720	037702'				.WORD	.RP7PE
	037722	032656'				.WORD	RPTSK
SCOMM	- COMMON DATA AND SUBRO	MACRO M1108  16-DEC-77 11:28  PAGE 150-4
SCOMM -- LOGICAL UNIT TABLES

	037724	037724'				.WORD	.
	037726	037724'				.WORD	.-2
	037730	000000 				.WORD	0
	037732	   005 	   005 			.BYTE	5,5
	037734	110220 				.WORD	DVCH
	037736	177777 				.WORD	-1
	037740	025167 				.RAD50	/F11/
	037742	000000 				.WORD	0
	037744	000000 				.WORD	0
	037746	000000 				.WORD	0
	037750	000000 				.WORD	0
  10604		037746'				.=.-4
  10605	037746	000002 				.WORD	2
  10606	037750	050700 				.WORD	50700
  10608		000003 			L.DT0==3
  10618					;
  10619		000005 			L.DX0==5
  10620	037752				DX0PEN::.PUDEN	DX,0,FW,C1,0,0,512.,DX0PEN,DXTSK,DVCH,F11,0
	037752	   104 	   130 			.ASCII	"DX"
	037754	   000 				.BYTE	0
	037755	   300 				.BYTE	FW
	037756	140010 				.WORD	C1
	037760	000000 				.WORD	0
	037762	000000 				.WORD	0
	037764	001000 				.WORD	512.
	037766	000000 				.WORD	0
	037770	037752'				.WORD	DX0PEN
	037772	033056'				.WORD	DXTSK
	037774	037774'				.WORD	.
	037776	037774'				.WORD	.-2
	040000	000000 				.WORD	0
	040002	   005 	   005 			.BYTE	5,5
	040004	110220 				.WORD	DVCH
	040006	177777 				.WORD	-1
	040010	025167 				.RAD50	/F11/
	040012	000000 				.WORD	0
	040014	000000 				.WORD	0
	040016	000000 				.WORD	0
	040020	000000 				.WORD	0
  10621		040020'			.=.-2
  10622	040020	000756 				.WORD	494.			; +++001
  10623		000006 			L.DX1==6
  10624	040022				DX1PEN::.PUDEN	DX,1,FW,C1,0,0,512.,DX1PEN,DXTSK,DVCH,F11,0
	040022	   104 	   130 			.ASCII	"DX"
	040024	   001 				.BYTE	1
	040025	   300 				.BYTE	FW
	040026	140010 				.WORD	C1
	040030	000000 				.WORD	0
	040032	000000 				.WORD	0
	040034	001000 				.WORD	512.
	040036	000000 				.WORD	0
	040040	040022'				.WORD	DX1PEN
	040042	033056'				.WORD	DXTSK
	040044	040044'				.WORD	.
	040046	040044'				.WORD	.-2
	040050	000000 				.WORD	0
	040052	   005 	   005 			.BYTE	5,5
SCOMM	- COMMON DATA AND SUBRO	MACRO M1108  16-DEC-77 11:28  PAGE 150-5
SCOMM -- LOGICAL UNIT TABLES

	040054	110220 				.WORD	DVCH
	040056	177777 				.WORD	-1
	040060	025167 				.RAD50	/F11/
	040062	000000 				.WORD	0
	040064	000000 				.WORD	0
	040066	000000 				.WORD	0
	040070	000000 				.WORD	0
  10625		040070'			.=.-2
  10626	040070	000756 				.WORD	494.			; +++001
  10629					;
  10630	040072				LP0PUD::.PUDEN	LP,0,0,UC.REC!UC.CCL,0,0,132.,LP0PUD,LPTSK,0,0,0
	040072	   114 	   120 			.ASCII	"LP"
	040074	   000 				.BYTE	0
	040075	   000 				.BYTE	0
	040076	000003 				.WORD	UC.REC!UC.CCL
	040100	000000 				.WORD	0
	040102	000000 				.WORD	0
	040104	000204 				.WORD	132.
	040106	000000 				.WORD	0
	040110	040072'				.WORD	LP0PUD
	040112	032716'				.WORD	LPTSK
	040114	040114'				.WORD	.
	040116	040114'				.WORD	.-2
	040120	000000 				.WORD	0
	040122	   005 	   005 			.BYTE	5,5
	040124	000000 				.WORD	0
	040126	177777 				.WORD	-1
	040130	135600 				.RAD50	/0/
	040132	000000 				.WORD	0
	040134	000000 				.WORD	0
	040136	000000 				.WORD	0
	040140	000000 				.WORD	0
  10633					;
  10634	040142				FE0PUD::.PUDEN	FE,0,UF.RH,C1,0,0,512.,FE0PUD,FETSK,DVCH,T20,0
	040142	   106 	   105 			.ASCII	"FE"
	040144	   000 				.BYTE	0
	040145	   200 				.BYTE	UF.RH
	040146	140010 				.WORD	C1
	040150	000000 				.WORD	0
	040152	000000 				.WORD	0
	040154	001000 				.WORD	512.
	040156	000000 				.WORD	0
	040160	040142'				.WORD	FE0PUD
	040162	033016'				.WORD	FETSK
	040164	040164'				.WORD	.
	040166	040164'				.WORD	.-2
	040170	000000 				.WORD	0
	040172	   005 	   005 			.BYTE	5,5
	040174	110220 				.WORD	DVCH
	040176	177777 				.WORD	-1
	040200	101036 				.RAD50	/T20/
	040202	000000 				.WORD	0
	040204	000000 				.WORD	0
	040206	000000 				.WORD	0
	040210	000000 				.WORD	0
  10636					;
  10637	040212				SY0PUD::
SCOMM	- COMMON DATA AND SUBRO	MACRO M1108  16-DEC-77 11:28  PAGE 150-6
SCOMM -- LOGICAL UNIT TABLES

  10639	040212					.PUDEN	SY,0,0,0,0,0,0,DX0PEN,0,0,0,0
	040212	   123 	   131 			.ASCII	"SY"
	040214	   000 				.BYTE	0
	040215	   000 				.BYTE	0
	040216	000000 				.WORD	0
	040220	000000 				.WORD	0
	040222	000000 				.WORD	0
	040224	000000 				.WORD	0
	040226	000000 				.WORD	0
	040230	037752'				.WORD	DX0PEN
	040232	000000 				.WORD	0
	040234	040234'				.WORD	.
	040236	040234'				.WORD	.-2
	040240	000000 				.WORD	0
	040242	   005 	   005 			.BYTE	5,5
	040244	000000 				.WORD	0
	040246	177777 				.WORD	-1
	040250	135600 				.RAD50	/0/
	040252	000000 				.WORD	0
	040254	000000 				.WORD	0
	040256	000000 				.WORD	0
	040260	000000 				.WORD	0
  10641
  10645	040262				.PUDEA::		;END OF LOGICAL UNIT ABLE
SCOMM	- COMMON DATA AND SUBRO	MACRO M1108  16-DEC-77 11:28  PAGE 151
SCOMM MODULE -- INITLM (INITIALIZATION)

  10647						.SBTTL	SCOMM MODULE -- INITLM (INITIALIZATION)
  10648
  10649					;
  10650					;	INITIALIZATION CODE ALSO DOUBLES AS
  10651					;	EMERGENCY STACK AREA FOR CRASH
  10652					;
  10653	040262				INITLM::
  10654	040262	013700 	000002G			MOV	.EXEND+2,R0	; +++008 GET ABSOLUTE EXEC LIMIT
  10655	040266	062700 	000003 			ADD	#3,R0		; +++008 ROUND UP TO NEXT 4 BYTES
  10656	040272	042700 	000003 			BIC	#3,R0		; +++008 SO
  10657	040276	010037 	033502'			MOV	R0,.FREPL	; +++008 SET BASE OF FREE POOL
  10658	040302	012701 	075774 			MOV	#.BGBST-4,R1	; +++008 END OF FREE POOL - 10 BYTES
  10659	040306	160001 				SUB	R0,R1		; +++008 COMPUTE SIZE OF FREE POOL
  10660	040310	005020 				CLR	(R0)+		;INDICATE NO LINKS
  10661	040312	010110 				MOV	R1,@R0		; +++008 SET FREE POOL SIZE
  10662	040314	010137 	033504'			MOV	R1,.FREPL+2	; +++008 HERE TOO
  10663	040320	013700 	033476'			MOV	.BGBUF,R0
  10664	040324	005020 				CLR	(R0)+
  10665	040326	012710 	002000 			MOV	#.BGLEN,@R0
  10666	040332	105237 	031231'			INCB	.NOERR+1	;SET FORCED STOP
  10667	040336	010706 				MOV	PC,SP		;SET UP THE STACK
  10668	040340	012737 	000200 	031116'		MOV	#EV.PF,.SERFG+0	;SET POWER FAIL
  10669	040346	012737 	004000 	177776 		MOV	#4000,@#PS	;ENABLE INTERRUPTS
  10670	040354	012746 	003124'			MOV	#ASXE1,-(SP)
  10671	040360	162706 	000006 			SUB	#6,SP		;SET UP INITIAL TO TEN Q
  10672	040364	000137 	043712'			JMP	INIAN		;GODO IT
  10673	040370				EMGSTK::			;EMERGENCY STACK AREA
  10674					;
  10675	040370	000000 			SPSAV::.WORD	0		;SAVE AREA FOR STACK
  10676					;
  10677	040372				PARSAV::.BLKW	2		;SAVE AREA FOR PARITY ERROR REGISTERS
  10678									;(USED BY LC)
  10679					;
  10680					;	.PFAIL INDICATES POWER FAIL IN PROGRESS
  10681					;	IT IS USED ONLY TO INDICATE TO PRI7 TASKS THAT
  10682					;	POWER FAIL UNDERWAY AND A RETURN TO THE PROGRAM
  10683					;	SHOULD NOT OCCUR
  10684					;
  10685	040376	000000 			.PFAIL::.WORD	0
  10686					;
  10687					;
  10688	040400	000000 			.PFIOW::.WORD	0
  10689					;
  10690					;
  10691	040402	000000 			PWRXSP::.WORD	0		;BUFFER FOR STACK POINTER
SCOMM	- COMMON DATA AND SUBRO	MACRO M1108  16-DEC-77 11:28  PAGE 152
SCOMM MODULE -- .CEFN   (CONVERT EFN)

  10693						.SBTTL	SCOMM MODULE -- .CEFN   (CONVERT EFN)
  10694					; .CEFN -- SUBROUTINE TO CONVERT AN EVENT FLAG NUMBER INTO A FORM SUCH THAT
  10695					; IT MAY BE READ, SET, AND CLEARED VIA "BIT", "BIS", AND "BIC" INSTRUCTIONS.
  10696					;
  10697					; ALTERNATE ENTRY POINT .CEFN3 THAT DETERMINES EFN WITHOUT DOIN
  10698					; MOVE FROM PRIVIOUS
  10699					; ENTRY CONDITIONS:
  10700					;
  10701					;	R1 --  ADDRESS OF A WORD CONTAINING
  10702					;	R3 -- EFN NUMBER (FOR .CEFN3 ENTRY ONLY)
  10703					;	      THE EVENT FLAG NUMBER, AND THE EFN CAN BE FETCHED
  10704					;	R5 -- ATL NODE ADDRESS OF ISSUING TASK (.CRTSK)
  10705					;
  10706					; CALLING SEQUENCE:
  10707					;
  10708					;	CALL  .CEFN
  10709					;	CALL	.CEFN3
  10710					;
  10711					; EXIT CONDITIONS:
  10712					;
  10713					;	R3 -- BIT MASK SELECTING FLAG IN WORD
  10714					;	R2 -- ADDRESS OF WORD CONTAINING THE FLAG
  10715					;
  10716					;	IF AN EVENT FLAG IS NOT SPECIFIED (EFN=0),
  10717					;	BOTH R2 & R3 ARE RETURNED ZERO.
  10718					;
  10719					;	CONDITION CODES ARE SET PER "TST R3" AT RETURN
  10720					;
  10721					;	IF EFN IS OUT OF RANGE (<0 OR >64.) CONTROL IS TRANSFERRED
  10722					;	TO DIRECTIVE ERROR STATUS 'E.97'.
  10723					;
  10724					; REGISTERS ALTERED:
  10725					;
  10726					;	R2 & R3
  10727					;
  10728	040404	005002 			.CEFN::	CLR	R2		;(CLEARED FOR DIVIDE AND ERROR RETURN)
  10729	040406					MFPS	@R1,R3
	040406	011103 				MOV	@R1,R3
  10730	040410	042703 	177400 		.CEFN3::BIC	#177400,R3
  10731	040414	001423 				BEQ	20$		;EFN=0 -- NO FLAG SPECIFIED
  10732	040416	020327 	000100 			CMP	R3,#64.		;IS EFN IN RANGE: 0-64.?
  10733	040422	101022 				BHI	X8X97		;NO -- RETURN STS=-97
  10734	040424	005303 				DEC	R3		;YES -- CONVERT EFN TO INDEX (0,2,4,6)
  10735									;IN R2, AND FLAG MASK IN R3.
  10736	040426					CALL	DIV216		;DIVIDE R2 BY 16
	040426	004737 	041262'			JSR	PC,DIV216
  10737	040432	006302 				ASL	R2
  10738	040434	006303 				ASL	R3		;FIND BIT MASK
  10739	040436	016303 	042572'			MOV	BITTBL(R3),R3
  10740	040442	020227 	000004 			CMP	R2,#4		;FLAG IN RANGE 33-64?
  10741	040446	002403 				BLT	10$
  10742	040450	062702 	031106'			ADD	#.COMEF-4,R2	;YES -- SET R2 TO ADDRESS OF WORD IN
  10743	040454	000403 				BR	20$		;SCOMM(COMMON EVENT FLAGS)
  10744	040456	060502 			10$:	ADD	R5,R2		;NO -- SET R2 TO ADDRESS OF WORD IN
  10745	040460	062702 	000020 			ADD	#A.EF,R2	;ATL NODE (TASK'S EVENT FLAGS)
  10746	040464	005703 			20$:	TST	R3		;SET CONDITION CODES
  10747	040466					RETURN
SCOMM	- COMMON DATA AND SUBRO	MACRO M1108  16-DEC-77 11:28  PAGE 152-1
SCOMM MODULE -- .CEFN   (CONVERT EFN)

	040466	000207 				RTS	PC
  10748
  10749	040470	104637 			X8X97::TRAP	DE.97
SCOMM	- COMMON DATA AND SUBRO	MACRO M1108  16-DEC-77 11:28  PAGE 153
SCOMM MODULE -- .CKDEL  (CLOCK DELETE)

  10751						.SBTTL	SCOMM MODULE -- .CKDEL  (CLOCK DELETE)
  10752					;
  10753					;
  10754					;
  10755					;	.CKDEL -- SUBROUTINE TO REMOVE AN ENTRY FORM THE CLOCK LIST
  10756					;
  10757					;	CALLING SEQUENCE:
  10758					;
  10759					;	R4 -- POINTER TO ENTRY TO BE REMOVED
  10760					;
  10761					;	CALL	.CKDEL
  10762					;
  10763					;	EXIT CONDITIONS:
  10764					;
  10765					;	NO ERROR CONDITIONS:
  10766					;
  10767					;	REGISTERS ALTERED: NONE
  10768					;
  10769						.ENABL	LSB
  10770	040472	010446 			.CKDEL::MOV	R4,-(SP)	;SAVE REGISTERS
  10771	040474	010546 				MOV	R5,-(SP)
  10772	040476	010405 				MOV	R4,R5
  10773	040500	062705 	000014 			ADD	#C.SZ,R5	;LOOK AT THE NEXT ENTRY
  10774	040504	012524 			10$:	MOV	(R5)+,(R4)+	;NO -- MOVE AN ENTRY UP
  10775	040506	001406 				BEQ	30$		;END OF TABLE
  10776	040510	012524 				MOV	(R5)+,(R4)+
  10777	040512	012524 				MOV	(R5)+,(R4)+
  10778	040514	012524 				MOV	(R5)+,(R4)+
  10779	040516	012524 				MOV	(R5)+,(R4)+
  10780	040520	012524 				MOV	(R5)+,(R4)+
  10781	040522	000770 				BR	10$		;TRY AGAIN
SCOMM	- COMMON DATA AND SUBRO	MACRO M1108  16-DEC-77 11:28  PAGE 154
SCOMM MODULE -- .DTDEL  (DTE20 DELETE)

  10783						.SBTTL	SCOMM MODULE -- .DTDEL  (DTE20 DELETE)
  10784					;
  10785					;
  10786					;
  10787					;	.DTDEL -- SUBROUTINE TO REMOVE AN ENTRY FORM THE DTE20 LIST
  10788					;
  10789					;	CALLING SEQUENCE:
  10790					;
  10791					;	R4 -- POINTER TO ENTRY TO BE REMOVED
  10792					;
  10793					;	CALL	.DTDEL
  10794					;
  10795					;	EXIT CONDITIONS:
  10796					;
  10797					;	NO ERROR CONDITIONS:
  10798					;
  10799					;	REGISTERS ALTERED: NONE
  10800					;
  10815
  10816	040524	005024 			30$:	CLR	(R4)+		;INSURE LAST ENTRY 0
  10817	040526	012605 				MOV	(SP)+,R5	;RESTORE
  10818	040530	012604 				MOV	(SP)+,R4
  10819	040532					RETURN			;RETURN TO CALLER
	040532	000207 				RTS	PC
  10821						.DSABL	LSB
SCOMM	- COMMON DATA AND SUBRO	MACRO M1108  16-DEC-77 11:28  PAGE 155
SCOMM MODULE -- ..IODN	(SUBROUTINE TO COMPLETE I/O)

  10823						.SBTTL	SCOMM MODULE -- ..IODN	(SUBROUTINE TO COMPLETE I/O)
  10824					;+
  10825					;
  10826					;	..IODN -- SUBROUTINE TO COMPLETE THE USER'S I/O
  10827					;		REQUEST.  ..IODN SETS TWO WORDS OF
  10828					;		THE I/O STATUS BLOCK IN THE USER'S AREA AND
  10829					;		 AN EVENT FLAG (IF SPECIFIED) IS SET.
  10830					;		THE REQUEST NODE IS RETURNED TO THE POOL .
  10831					;
  10832					;		JUST BEFORE ..IODN EXITS IT DECLARES A SIG EVENT TO INFORM THE
  10833					;		SYSTEM THAT SOME I/O IS COMPLETE AND
  10834					;		POSSIBLE A TASK MAY BE RESTARTED.
  10835					;
  10836					;
  10837					;	CALLING SEQUENCE:
  10838					;		R1 -- REQUEST NODE ADDRESS
  10839					;		R3 -- I/O STATUS BLOCK WD. 00
  10840					;		R4 -- I/O STATUS BLOCK WD. 01.
  10841					;		CALL	..IODN
  10842					;-
  10843					;
  10844					;
  10845	040534	010046 			..IODN::MOV	R0,-(SP)	;SAVE THE REGISTERS
  10846	040536	010446 				MOV	R4,-(SP)
  10847									;STATUS SO THAT THEY CAN BE SET BY BLXO
  10848	040540	010346 				MOV	R3,-(SP)
  10849	040542	010604 				MOV	SP,R4		;POINT TO THE TWO VALUES FOR I/O STATUS BLOCK
  10850	040544	010246 				MOV	R2,-(SP)
  10851	040546	012703 	000004 			MOV	#4,R3		;SET UP TO MOVE 4 BYTES
  10852	040552	016102 	000016 			MOV	R.SB(R1),R2
  10853	040556	001402 				BEQ	10$		;SKIP IF NO STATUS BLOCK
  10854	040560					CALL	..BLXO		;MOVE THE TWO WORDS
	040560	004737 	044416'			JSR	PC,..BLXO
  10855	040564	012602 			10$:	MOV	(SP)+,R2	;RESTORE R2
  10856	040566	012603 				MOV	(SP)+,R3
  10857	040570	116100 	000013 			MOVB	R.FN(R1),R0	;PICKUP EVENT FLAG NUMBER
  10858	040574	001404 				BEQ	20$		;DON'T TRY TO SET IF NO FLAG
  10859	040576	016104 	000006 			MOV	R.AT(R1),R4	;FIND THE ATL NODE ADDRESS
  10860	040602					CALL	..SEFN		;SET THE EVENT FLAG
	040602	004737 	041200'			JSR	PC,..SEFN
  10861	040606	152737 	000001 	031116'	20$:	BISB	#EV.SE,.SERFG+0	;;DECLARE A SIG EVENT
  10862	040614	016104 	000020 			MOV	R.AS(R1),R4	;AST ADDRESS?
  10863	040620	001406 				BEQ	30$		;NO -- FORGET IT
  10864	040622	010546 				MOV	R5,-(SP)	;SAVE R5
  10865	040624	016105 	000006 			MOV	R.AT(R1),R5	;SET UP THE ATL ADDRESS
  10866	040630					CALL	.STAST		;START AST (NOTE -- CAN'T FAIL)!!
	040630	004737 	005246'			JSR	PC,.STAST
  10867	040634	012605 				MOV	(SP)+,R5	;RESTORE R5
  10868	040636	010100 			30$:	MOV	R1,R0		;SET UP NODE ADDRESS
  10869	040640	012701 	000040 			MOV	#32.,R1		;SET UP SIZE OFNODE
  10870	040644					CALL	..DECB		;DEALLOCATE CORE BUFFER
	040644	004737 	042012'			JSR	PC,..DECB
  10871	040650	012604 				MOV	(SP)+,R4
  10872	040652	012600 				MOV	(SP)+,R0
  10873	040654					RETURN
	040654	000207 				RTS	PC
SCOMM	- COMMON DATA AND SUBRO	MACRO M1108  16-DEC-77 11:28  PAGE 156
SCOMM MODULE -- ..DQRN	(DEQUEUE A NORMAL REQUEST)

  10875						.SBTTL	SCOMM MODULE -- ..DQRN	(DEQUEUE A NORMAL REQUEST)
  10876					;+
  10877					;
  10878					;
  10879					;	..DQRN --  ROUTINE TO PICK A REQEST NODE FROM PUD
  10880					;
  10881					;
  10882					;	THE NODE ON THE TOP IF THE QUEUE (HIGHEST PRIORITY)
  10883					;		PICKED FROM THE QUEUE AND RETURNED TO THE
  10884					;		HANDLER TASK.
  10885					;	IF NO NODE CAN BE FOUND ..DQRN RETURNS WITH
  10886					;		THE CONDITION CODES SET TO INDICATE FAILURE
  10887					;		TO PICK A NODE
  10888					;		TASK SWITCHING IS INHIBITED DURING THE SCAN OF
  10889					;		THE DEQUE TO PREVENT ..IPRI FROM
  10890					;		INSERTING A NODE INTO THE LIST WHILE ONE
  10891					;		IS BEING REMOVED.
  10892					;
  10893					;	CALLING SEQUENCE:
  10894					;
  10895					;		R0 -- ASCII 2 CHARACTER DEVICE NAME
  10896					;
  10897					;		CALL	..DQRN
  10898					;
  10899					;	EXIT CONDITIONS:
  10900					;		R0 -- PUD ADDRESS OF NODE PICKED+U.RF
  10901					;		R1 -- ADDRESS OF REQUEST NODE OR UNDEFINED IF NO NODE FOUND
  10902					;		R2 -- UNIT NUMBER
  10903					;		R3 -- BYTE COUNT
  10904					;		R4 -- HIGH ORDER ADDRESS (BITS 4,5)
  10905					;		R5 -- LOW ORDER ADDRESS
  10906					;
  10907					;		CC -- C BIT SET IF NO NODE FOUND
  10908					;		CC -- C BIT CLEAR IF NODE FOUND
  10909					;
  10910					;		EVENT FLAG EF.NIR CLEARED IF NO NODE FOUND
  10911					;		EVENT FLAG EF.NIR SET IF NODE FOUND
  10912					;-
  10913					;
  10914					;
  10915	040656	013701 	031110'		..DQRN::MOV	.CRTSK,R1	;CLEAR THE EVENT FLAG OF THE HANDLER
  10916	040662	042761 	000010 	000020 		BIC	#EF.NIR,A.EF(R1)
  10917	040670	012704 	037202'			MOV	#.PUDBA,R4	;FIND THE LOGICAL UNIT NUMBER
  10918	040674	020014 			10$:	CMP	R0,@R4		;FIND THE POINTER TO THIS LUN
  10919	040676	001403 				BEQ	20$		;FOUND CORRECT LUN
  10920	040700	062704 	000050 			ADD	#U.SZ,R4	;POINT TO NEXT LUN
  10921	040704	000773 				BR	10$		;AND TRY AGAIN
  10922					;
  10923	040706	062704 	000022 		20$:	ADD	#U.RF,R4	;NO -- DEQUE FIRST NODE
  10924	040712					.INH0			;;INHIBIT TASK SWITCHING
	040712	013746 	177776 			MOV	@#PS,-(SP)
	040716	112737 	000140 	177776 		MOVB	#140,@#PS
  10925	040724	010446 			30$:	MOV	R4,-(SP)	;;SAVE ADDRESS
  10926	040726					CALL	..PICK		;;PICK A NODE IF POSSIBLE
	040726	004737 	041464'			JSR	PC,..PICK
  10927	040732	103011 				BCC	40$		;;POSSIBLE -- CONTINUE
  10928	040734	012604 				MOV	(SP)+,R4	;;RESTORE PUD ADDRESS
SCOMM	- COMMON DATA AND SUBRO	MACRO M1108  16-DEC-77 11:28  PAGE 156-1
SCOMM MODULE -- ..DQRN	(DEQUEUE A NORMAL REQUEST)

  10929	040736	062704 	000050 			ADD	#U.SZ,R4	;;LOOK AT NEXT ENTRY
  10930	040742	026464 	177756 	177706 		CMP	-U.RF(R4),-U.RF-U.SZ(R4) ;CHECK DEVICE NAME
  10931	040750	001765 				BEQ	30$
  10932	040752	005216 				INC	@SP		;;SET CARRY
  10933	040754	000466 				BR	65$		;;AND RETURN
  10934					;
  10935	040756	010401 			40$:	MOV	R4,R1		;;SET UP NODE ADDRESS FOR RETURN
  10936	040760	016102 	000004 			MOV	R.TD(R1),R2	;;YES -- CHHANGE THE DISK ADDRESS
  10937	040764	013704 	031110'			MOV	.CRTSK,R4	;;SET THE EVENT FLAG
  10938	040770	016105 	000014 			MOV	R.FC(R1),R5	;;FIND THE FUNCTION CODE
  10939	040774	020527 	001400 			CMP	R5,#IO.ATT	;;ATTACH FUNCTION?
  10940	041000	001457 				BEQ	70$		;;YES -- HANDLE ATTACH HERE
  10941	041002	020527 	002000 			CMP	R5,#IO.DET	;;DETACH ?
  10942	041006	001470 				BEQ	80$		;;YES HANDLE HERE
  10943	041010	022705 	001010 			CMP	#IO.LOV,R5	;;IS THE FUNCTION CODE LOAD OVERLAY?
  10944	041014	001013 				BNE	50$		;;NO -- PROCEED
  10945	041016	066261 	000034 	000034 		ADD	S.DL+2(R2),R.PB+10(R1)
  10946	041024	005561 	000032 			ADC	R.PB+6(R1)
  10947	041030	066261 	000032 	000032 		ADD	S.DL(R2),R.PB+6(R1)
  10948	041036	012761 	001000 	000014 	45$:	MOV	#IO.RLB,R.FC(R1) ;SET FUNCTION CODE TO READ LOGICAL BLOCK
  10949	041044	022761 	000050 	000014 	50$:	CMP	#IO.LTK,R.FC(R1) ;;IS THIS A LOAD TASK FUNCTION?
  10950	041052	001013 				BNE	60$		;; PROCEED
  10951	041054	016202 	000012 			MOV	S.BA(R2),R2	;;SET THE CORE ADDRESS
  10958	041060	010261 	000024 			MOV	R2,R.PB(R1)	;;SET CORE ADDRESS
  10959	041064	016102 	000006 			MOV	R.AT(R1),R2	;;FIND THE ATL NODE ADDRESS
  10960	041070	062702 	000030 			ADD	#A.FM+4,R2	;;SET I/O STATUS WORD TO POINT TO A.FM+4
  10961	041074	010261 	000016 			MOV	R2,R.SB(R1)	;;
  10962	041100	000756 				BR	45$		;;CHANGE FUNCTION TO READ
  10963					;
  10964	041102	052764 	000010 	000020 	60$:	BIS	#EF.NIR,A.EF(R4) ;;FOR DQ NORMAL
  10965	041110	016103 	000026 			MOV	R.PB+2(R1),R3	;;FIND THE SIZE OF THE XFER
  10966	041114	016102 	000024 			MOV	R.PB(R1),R2	;;SET UP FOR VALIDATE
  10967	041120					CALL	..VXFR		;;VALIDATE XFER
	041120	004737 	044376'			JSR	PC,..VXFR
  10968	041124	012600 				MOV	(SP)+,R0		;;FIND THE PUD ADDRESS
  10969	041126	116002 	177760 			MOVB	U.UN-U.RF(R0),R2 ;;SET UNIT NUMBER ON STACK
  10970	041132				65$:	.ENB0			;;ENABLE INTERRUPTS
	041132	004737 	041526'			JSR	PC,..ENB0
  10971	041136					RETURN			;NO -- RETURN
	041136	000207 				RTS	PC
  10972					;
  10973	041140	012604 			70$:	MOV	(SP)+,R4	;;RESTORE PUD ADDRESS
  10974	041142	016164 	000006 	177772 		MOV	R.AT(R1),U.AF-U.RF(R4)	;;SET ATTACH FLAG
  10975	041150				75$:	.ENB0			;;ENABLE TASK SWITCHING
	041150	004737 	041526'			JSR	PC,..ENB0
  10976	041154	012703 	000001 			MOV	#1,R3		;;RETURN +1 STATUS
  10977	041160	005004 				CLR	R4
  10978	041162					CALL	..IODN
	041162	004737 	040534'			JSR	PC,..IODN
  10979	041166	000633 				BR	..DQRN		;DEQUEUE AGAIN
  10980					;
  10981	041170	012604 			80$:	MOV	(SP)+,R4	;;RESTORE PUD ADDRESS
  10982	041172	005064 	177772 			CLR	U.AF-U.RF(R4)	;;CLEAR ATTACH
  10983	041176	000764 				BR	75$		;;AND RETURN I/O DONE STATUS
SCOMM	- COMMON DATA AND SUBRO	MACRO M1108  16-DEC-77 11:28  PAGE 157
SCOMM MODULE -- ..SEFN	(SET EVENT FLAG)

  10985						.SBTTL	SCOMM MODULE -- ..SEFN	(SET EVENT FLAG)
  10986					;+
  10987					;
  10988					;
  10989					;	..SEFN -- SUBROUTINE TO SET AN EVENT FLAG FOR A HANDLER TASK.
  10990					;		THIS IS A GENERAL ROUTINE TO SET ANY EVENT FLAG AND
  10991					;		MAY BE USED BY A HANDLER TASK AT INTERRUPT LEVEL.
  10992					;		THE MAIN PURPOSE OF THIS ROUTINE IS TO
  10993					;		SET THE REQUESTOR'S EVENT FLAG FOR ..IODN.
  10994					;
  10995					;
  10996					;	CALLING SEQUENCE:
  10997					;		R0 -- EVENT FLAG NUMBER 1-64
  10998					;		R4 -- ACTIVE TASK LIST ENTRY
  10999					;		CALL	..SEFN
  11000					;-
  11001					;
  11002	041200	010246 			..SEFN::MOV	R2,-(SP)	;SAVE USED REGISTERS
  11003	041202	010346 				MOV	R3,-(SP)
  11004	041204	010003 				MOV	R0,R3		;
  11005	041206	005303 				DEC	R3		;DECREMENT FOR 1 LESS THAN COUNT
  11006									;CONVERT EFN TO INDEX AND
  11007	041210					CALL	DIV216		;FLAG MASK
	041210	004737 	041262'			JSR	PC,DIV216
  11008	041214	006302 				ASL	R2
  11009	041216	006303 				ASL	R3		;FIND BIT MASK ADDRESS
  11010	041220	020227 	000004 			CMP	R2,#4		;TEST FOR COMMON SET
  11011	041224	002403 				BLT	10$		;NO -- FLAGS IN ATL
  11012	041226	062702 	031106'			ADD	#.COMEF-4,R2	;YES -- POINT TO COMMON FLAGS
  11013	041232	000403 				BR	20$
  11014	041234	060402 			10$:	ADD	R4,R2		;POINT TO ATL SET
  11015	041236	062702 	000020 			ADD	#A.EF,R2
  11016	041242	056312 	042572'		20$:	BIS	BITTBL(R3),@R2	;SET EVENT FLAGS
  11017	041246	152737 	000001 	031116'		BISB	#EV.SE,.SERFG+0	;DECLARE SIGNIFIGANT EVENT
  11018	041254	012603 				MOV	(SP)+,R3
  11019	041256	012602 				MOV	(SP)+,R2
  11020	041260					RETURN			;RETURN
	041260	000207 				RTS	PC
SCOMM	- COMMON DATA AND SUBRO	MACRO M1108  16-DEC-77 11:28  PAGE 158
SCOMM MODULE -- DIV216   (DIV R2 BY 16)

  11022						.SBTTL	SCOMM MODULE -- DIV216   (DIV R2 BY 16)
  11023					;
  11024					;	DIV216 -- SUBROUTINE TO SIMULATE A HARDWARE
  11025					;	DIVIDE INSTRUCTION (DIV #16,R2)
  11026					;
  11027					;	CALLING SEQUENCE:
  11028					;
  11029					;	R3 -- NUMBER TO BE DIVIDED BY 16
  11030					;	CALL	DIV216
  11031					;
  11032					;	EXIT CONDITIONS:
  11033					;	R3 -- REMAINDER
  11034					;	R2 -- QUOTIENT
  11035					;
  11036	041262	010302 			DIV216::MOV	R3,R2		;FIND THE REMAINDER
  11037	041264	042703 	177760 			BIC	#177760,R3	;MASK OFF THE REMAINDER
  11038	041270	006002 				ROR	R2		;DIVIDE R2 BY 2
  11039	041272	006002 				ROR	R2		;AGAIN
  11040	041274	006002 				ROR	R2		;AND AGAIN
  11041	041276	006002 				ROR	R2		;NOW HAVE DONE IT BY 16.
  11042	041300	042702 	170000 			BIC	#170000,R2	;MASK OFF JUNK PROPIGATED BY ROR
  11043	041304					RETURN			;RETURN TO CALLER
	041304	000207 				RTS	PC
SCOMM	- COMMON DATA AND SUBRO	MACRO M1108  16-DEC-77 11:28  PAGE 159
SCOMM MODULE -- ..NDEL	(NODE DELETE)

  11045						.SBTTL	SCOMM MODULE -- ..NDEL	(NODE DELETE)
  11046					;+
  11047					;
  11048					;	..NDEL -- ROUTINE TO DELETE A NODE FROM A LIST
  11049					;		THIS IS A BASIC SUBROUTINE TO DELETE
  11050					;		NODES FROM A LIST.  IT DOES NOT DO
  11051					;		ANY ACCOUNTING OR LOOKING THE NODE
  11052					;		IT ASSUMES THAT THERE IS A NODE TO BE PICKED
  11053					;		AND INHIBITS INTERRUPTS TO PREVENT CONFLICTS WITH
  11054					;		NODES BEING ADDED TO A DEQUE.
  11055					;
  11056					;
  11057					;	CALLING SEQUENCE:
  11058					;		R4 -- POINTER TO NODE TO BE DELETED
  11059					;		CALL	..NDEL
  11060					;-
  11061					;
  11062	041306	010146 			..NDEL::MOV	R1,-(SP)	;SAVE R1
  11063	041310					.INH6			;;;INHIBIT ALL INTERRUPTS
	041310	013746 	177776 			MOV	@#PS,-(SP)
	041314	112737 	000300 	177776 		MOVB	#300,@#PS
  11064	041322	011401 				MOV	@R4,R1		;;;PICK THE NODE
  11065	041324	010174 	000002 			MOV	R1,@2(R4)	;;;
  11066	041330	016461 	000002 	000002 		MOV	2(R4),2(R1)	;;;
  11067	041336					.ENB6			;;;ENABLE INTERRUPTS
	041336	012637 	177776 			MOV	(SP)+,@#PS
  11068	041342	012601 				MOV	(SP)+,R1	;RESTORE R1
  11069	041344					RETURN			;RETURN TO CALLER
	041344	000207 				RTS	PC
SCOMM	- COMMON DATA AND SUBRO	MACRO M1108  16-DEC-77 11:28  PAGE 160
SCOMM MODULE -- ..IPRI	(INSERT NODE BY PRIORITY)

  11071						.SBTTL	SCOMM MODULE -- ..IPRI	(INSERT NODE BY PRIORITY)
  11072					;+
  11073					;
  11074					;	..IPRI -- ROUTINE TO INSERT A NODE BY PRIORITY
  11075					;		THIS ROUTINE WILL SEARCH A QUEUE (TASK SWITCHING INHIBITED)
  11076					;		AND INSERT A NODE IN IT'S CORRECT PRIORITY POSITION.  IF THERE
  11077					;		IS A NODE IN THE
  11078					;		LIST WITH THE SAME PRIORITY AS THE ONE
  11079					;		TO BE INSERTED THE NEW NODE WILL COME AFTER
  11080					;		THE OTHER NODES WITH THE SAME PRIORITY (FIFO)
  11081					;		..IPRI EXPECTS THE NODE TO HAVE A PRIORITY
  11082					;		IN THE COMMON NODE PRIORITY POSITION.
  11083					;
  11084					;
  11085					;	CALLING SEQUENCE:
  11086					;		R1 -- NODE ADDRESS
  11087					;		R2 -- LIST HEAD
  11088					;		CALL	..IPRI
  11089					;-
  11090					;
  11091					;
  11092	041346	010446 			..IPRI::MOV	R4,-(SP)	;SAVE R4
  11093	041350	010204 				MOV	R2,R4		;PICK UP THE POINTER TO THE LIST HEAD
  11094	041352					.INH0			;;INHIBIT ALL INTERRUPTS DURING SCAN
	041352	013746 	177776 			MOV	@#PS,-(SP)
	041356	112737 	000140 	177776 		MOVB	#140,@#PS
  11095	041364	011404 			10$:	MOV	@R4,R4		;;PICK UP THE FIRST NODE
  11096	041366	020402 				CMP	R4,R2		;;END OF THE SCAN?
  11097	041370	001404 				BEQ	20$		;;YES -- INSERT THE NODE
  11098	041372	126461 	000010 	000010 		CMPB	N.PR(R4),N.PR(R1) ;;NO -- LOOK AT THE PRIORITIES
  11099	041400	103371 				BHIS	10$		;;NO MATCH TRY AGAIN
  11100	041402	016404 	000002 		20$:	MOV	N.BP(R4),R4	;;BACK UP ONE
  11101	041406					CALL	..NADD		;;ADD THE NODE TO THE QUEUE
	041406	004737 	041422'			JSR	PC,..NADD
  11102	041412					.ENB0			;;ENABLE INTERRUPTS
	041412	004737 	041526'			JSR	PC,..ENB0
  11103	041416	012604 				MOV	(SP)+,R4	;RESTORE R4
  11104	041420					RETURN			;RETURN TO CALLER
	041420	000207 				RTS	PC
SCOMM	- COMMON DATA AND SUBRO	MACRO M1108  16-DEC-77 11:28  PAGE 161
SCOMM MODULE -- ..NADD	(NODE ADD)

  11106						.SBTTL	SCOMM MODULE -- ..NADD	(NODE ADD)
  11107					;+
  11108					;
  11109					;
  11110					;	..NADD -- ROUTINE TO ADD A NODE TO A DEQUEUE
  11111					;		..NADD IS THE GENERAL PICK A NODE ROUTINE
  11112					;		THE ADDITION OF A NODE IS DONE WITH INTERRUPTS
  11113					;		INHIBITED TO PREVENT A CONFLICT WITH
  11114					;		NODE DELETION.
  11115					;
  11116					;
  11117					;	CALLING SEQUENCE:
  11118					;		R1 -- NODE ADDRESS
  11119					;		R4 -- ADDRESS OF LISTHEAD OR PREVIOUS NODE
  11120					;		CALL	..NADD
  11121					;-
  11122					;
  11123					;
  11124	041422	010246 			..NADD::MOV	R2,-(SP)	;SAVE R2
  11125	041424	010461 	000002 			MOV	R4,2(R1)	;SET UP BACKWARD POINTER IN NODE
  11126	041430					.INH6			;;;INHIBIT INTERRUPTS
	041430	013746 	177776 			MOV	@#PS,-(SP)
	041434	112737 	000300 	177776 		MOVB	#300,@#PS
  11127	041442	011411 				MOV	@R4,@R1		;;;SET UP FORWARD POINTER
  11128	041444	010114 				MOV	R1,@R4		;;;FORWARD POINTER FROM LIST HEAD
  11129	041446	011102 				MOV	@R1,R2		;;;
  11130	041450	010162 	000002 			MOV	R1,2(R2)	;;;
  11131	041454					.ENB6			;;;ENABLE INTERRUPTS
	041454	012637 	177776 			MOV	(SP)+,@#PS
  11132	041460	012602 				MOV	(SP)+,R2	;RESTORE R2
  11133	041462					RETURN			;RETURN TO CALLER
	041462	000207 				RTS	PC
SCOMM	- COMMON DATA AND SUBRO	MACRO M1108  16-DEC-77 11:28  PAGE 162
SCOMM MODULE -- ..PICK	(PICK A NODE)

  11135						.SBTTL	SCOMM MODULE -- ..PICK	(PICK A NODE)
  11136					;+
  11137					;
  11138					;
  11139					;	..PICK -- ROUTINE TO PICK A NODE FROM A DEQUEUE
  11140					;		..PICK IS THE GENERAL PICK A NODE ROUTINE.
  11141					;		IT'S PRIMARY USE IS TO PICK A NODE FROM
  11142					;		A LIST.  IT CHECKS TO SEE THAT A NODE DOES
  11143					;		EXIST IN THE LIST BUT IT DOES NO
  11144					;		ACCOUNTING OF THE NODES.  ..PICK INHIBITS
  11145					;		INTERRUPTS TO PREVENT A NODE FROM
  11146					;		BEING ADDED WHILE IT CHECKS TO SEE
  11147					;		IF THERE IS REALLY A NODE TO BE PICKED.
  11148					;
  11149					;	CALLING SEQUENCE:
  11150					;		R4 -- LIST HEAD OR PREVIOUS NODE TO THE NODE TO BE PICKED
  11151					;		CALL	..PICK
  11152					;
  11153					;	EXIT CONDITIONS:
  11154					;		CC - C BIT CLEAR
  11155					;		R4 -- PICKED NODE ADDRESS
  11156					;	ERROR CONDITIONS:
  11157					;		CC -- C BIT SET
  11158					;		NOTE -- THIS CONDITION CAN'T HAPPEN UNLESS R4 IS THE LISTHEAD
  11159					;		R4 -- ZERO
  11160					;-
  11161					;
  11162					;
  11163					;
  11164	041464	000241 			..PICK::CLC			;ASSUME SUCCESS
  11165	041466					.INH6			;;;INHIBIT ALL INTERRPUTS
	041466	013746 	177776 			MOV	@#PS,-(SP)
	041472	112737 	000300 	177776 		MOVB	#300,@#PS
  11166	041500	020414 				CMP	R4,@R4		;;;IS THERE A NODE TO PICK?
  11167	041502	001406 				BEQ	20$		;;;NO -- THEN DON'T PICK IT
  11168	041504	011404 				MOV	@R4,R4		;;;
  11169	041506					CALL	..NDEL		;;;DELETE THE NODE
	041506	004737 	041306'			JSR	PC,..NDEL
  11170	041512				10$:	.ENB6			;;;ENABLE INTERRUPTS
	041512	012637 	177776 			MOV	(SP)+,@#PS
  11171	041516					RETURN			;RETURN TO CALLER
	041516	000207 				RTS	PC
  11172					;
  11173	041520	005004 			20$:	CLR	R4		;NO NODE FOUND CLEAR RETURNED VALUE
  11174	041522	005216 				INC	@SP		;SET C BIT TO INDICATE ERROR
  11175	041524	000772 				BR	10$		;RETURN
SCOMM	- COMMON DATA AND SUBRO	MACRO M1108  16-DEC-77 11:28  PAGE 163
SCOMM MODULE -- ..ENB0	(ENABLE TASK SWITCHING)

  11177						.SBTTL	SCOMM MODULE -- ..ENB0	(ENABLE TASK SWITCHING)
  11178					;+
  11179					;
  11180					;
  11181					;	..ENB0 -- ROUTINE TO ENABLE TASK SWITCHING
  11182					;		..ENB0 -- ENABLES TASK SWITCHING AND
  11183					;		ALLOWS THE SYSTEM TO UPDATE THE CLOCK AND
  11184					;		RECOGNIZE SIGNIFIGANT EVENTS.  THIS
  11185					;		ROUTINE MUST BE ENTERED WITH THE PS SAVED ON
  11186					;		THE TOP OF THE STACK.  THE USUAL WAY
  11187					;		SETTING UP TO USE THIS ROUTINE IS BY USE OF
  11188					;		THE .INH0 MACRO.
  11189					;		THIS ROUTINE WILL NOT ENABLE TASK SWITCHING IF
  11190					;		THE PRIORITY SAVED ON THE STACK
  11191					;		DOES NOT INDICATE A RETURN TO PRIORITY 0 (NON
  11192					;		ENTERED AT PROCESSOR PRIORITY LEVEL 3
  11193					;
  11194					;		CALLING SEQUENCE:
  11195					;			CALL	..ENB0
  11196					;
  11197					;		NOTE -- PS SAVED BY .INH0 MUST BE ON THE TOP OF THE STACK
  11198					;
  11199					;		.INH0 IS A MACRO DEFINED AS FOLLOWS:
  11200					;			.MACRO	.INH0
  11201					;				MOV	PS,-(SP)
  11202					;				BIS	#140,PS
  11203					;			.ENDM
  11204					;
  11205					;-
  11206					;
  11207					;
  11208	041526	010146 			..ENB0::MOV	R1,-(SP)	;;
  11209	041530	016601 	000004 			MOV	4(SP),R1	;;PICK UP THE STATUS WORD FROM THE STACK
  11210	041534	032701 	000340 			BIT	#340,R1		;;TEST THE STATUS RETURNING TO
  11211	041540	001003 				BNE	20$		;;IF RETURNING TO OTHER THAN 0 DON'T ENABLE TASK SWITCHING
  11212	041542	010146 			10$:	MOV	R1,-(SP)	;;NEW STATUS WORD IN R1
  11213									;; PLACE IT ON THE STACK
  11214									;;TO SET UP FOR COMMON SCAN
  11215	041544	004737 	004146'			JSR	PC,..INTX	;;PUSH THE RETURN ADDRESS ON THE STACK
  11216	041550	012601 			20$:	MOV	(SP)+,R1	;RESTORE R1 TO PRE-TASK SWITCHING STATE
  11217	041552	016637 	000002 	177776 		MOV	2(SP),@#PS	;SET UP THE NEW PROCESSOR STATUS
  11218	041560	000002 				RTI			;RTI POPS THE STACK TWICE AND RETURNS TO THE CALLER
SCOMM	- COMMON DATA AND SUBRO	MACRO M1108  16-DEC-77 11:28  PAGE 164
SCOMM MODULE -- ..FSTD	(FIND STD ENTRY)

  11220						.SBTTL	SCOMM MODULE -- ..FSTD	(FIND STD ENTRY)
  11221					;+
  11222					;
  11223					; ..FSTD -- SUBROUTINE TO SEARCH THE SYSTEM TASK DIRECTORY FOR AN
  11224					;         ENTRY FOR A NAMED TASK.
  11225					;
  11226					; ENTRY CONDITIONS:
  11227					;
  11228					;	R1 --  ADDRESS  OF THE FIRST WORD
  11229					;	      OF A TWO WORD BLOCK CONTAINING A TASK NAME (RADIX-50),
  11230					;	      AND THE BLOCK CAN BE FETCHED
  11231					;
  11232					; CALLING SEQUENCE:
  11233					;
  11234					;	CALL  ..FSTD
  11235					;
  11236					; EXIT CONDITIONS:
  11237					;
  11238					;	R1 -- ADVANCED BY FOUR (2 WORDS),
  11239					;	R2 -- STD ENTRY ADDRESS, OR ZERO IF NAME NOT FOUND.
  11240					;	R3 -- 1 BEYOND ALPHA PLACE TO INSERT
  11241					;
  11242					;	CONDITION CODES SET PER "TST R2".
  11243					;
  11244					; REGISTERS ALTERED:
  11245					;
  11246					;
  11247					; INTERNAL REGISTER USAGE:
  11248					;
  11249					;-
  11250					;
  11251	041562	010546 			..FSTD::MOV	R5,-(SP)
  11252	041564	013703 	032000'			MOV	.STDTA,R3	;FIND THE BEGINNING
  11253	041570	010305 				MOV	R3,R5		;FIND THE END
  11254	041572	063705 	032004'			ADD	.STDTZ,R5
  11255	041576					MFPI	(R1)+		;FIND TASK NAME
	041576	012146 				MOV	(R1)+,-(SP)
  11256	041600					MFPI	(R1)+
	041600	012146 				MOV	(R1)+,-(SP)
  11257	041602	012302 			5$:	MOV	(R3)+,R2
  11258	041604	021266 	000002 			CMP	@R2,2(SP)	;TASK NAME CORRECT?
  11259	041610	101007 				BHI	50$		;NO -- TRY NEXT ONE
  11260	041612	103404 				BLO	10$		;NO AND NOT HERE
  11261	041614	026216 	000002 			CMP	2(R2),@SP	;MAYBE CHECK SECOND HALF
  11262	041620	001404 				BEQ	30$		;GOT IT
  11263	041622	101002 				BHI	50$		;NO -- AND NOTHING THERE
  11264	041624	020305 			10$:	CMP	R3,R5		;END OF LIST?
  11265	041626	101765 				BLOS	5$		;NO -- CONTUNUE
  11266	041630	005002 			50$:	CLR	R2		;RETURN R2 0
  11267	041632	022626 			30$:	CMP	(SP)+,(SP)+	;REMOVE NAME
  11268	041634	012605 				MOV	(SP)+,R5
  11269	041636	005702 				TST	R2		;RETURN CONDITIONS PER R2
  11270	041640				60$:	RETURN			;RETURN TO CALLER
	041640	000207 				RTS	PC
SCOMM	- COMMON DATA AND SUBRO	MACRO M1108  16-DEC-77 11:28  PAGE 165
SCOMM MODULE -- ..ALCB/..DECB/..ALC2/..DEC2	(ALLOCATE/DEALLOCA

  11272						.SBTTL	SCOMM MODULE -- ..ALCB/..DECB/..ALC2/..DEC2	(ALLOCATE/DEALLOCATE CORE)
  11273					;+
  11274					;
  11275					; THIS ROUTINE IS CALLED TO ALLOCATE AN  CORE BUFFER. THE ALLOCATION
  11276					; ALGORITHM IS FIRST FIT AND BLOCKS ARE ALLOCATED IN MULTIPLES OF FOUR
  11277					; BYTES.
  11278					;
  11279					; INPUTS:
  11280					;
  11281					;	R0=ADDRESS OF CORE ALLOCATION LISTHEAD IF ENTRY AT $ALOC1.
  11282					;	R1=SIZE OF THE CORE BUFFER TO ALLOCATE IN BYTES.
  11283					;
  11284					; OUTPUTS:
  11285					;
  11286					;	CC-C=1 IF INSUFFICIENT CORE IS AVAILABLE TO ALLOCATE THE BLOCK.
  11287					;	CC-C=0 IF THE BLOCK IS ALLOCATED.
  11288					;		R0=ADDRESS OF THE ALLOCATED BLOCK.
  11289					;-
  11290					;
  11291	041642				..ALCB::
  11292	041642	062701 	000003 			ADD	#3,R1		;MASK TO CORRECT SIZE
  11293	041646	042701 	000003 			BIC	#3,R1
  11294	041652	012700 	033502'			MOV	#.FREPL,R0	;POINT TO ALLOCATION LISTHEAD
  11295	041656				..ALC2::
  11296	041656	010346 				MOV	R3,-(SP)	; SAVE R3
  11297	041660	010003 				MOV	R0,R3		; COPY LISTHEAD POINTER TO R3
  11298	041662	160163 	000002 			SUB	R1,2(R3)	;CHECK TO SEE IF POOL LOW
  11299	041666	023727 	033504'	001400 		CMP	.FREPL+2,#POLMIN
  11300	041674	103003 				BHIS	10$		;NO -- DON'T SLOW DOWN
  11301	041676	012777 	020000 	167452 		MOV	#20000,@.PRDTE	;YES -- SLOW DTE
  11302	041704				10$:
  11303	041704	010246 				MOV	R2,-(SP)	;SAVE REGISTERS
  11304	041706	000241 				CLC			;ASSUME SUCCESS
  11305	041710					.INH6			;;;INHIBIT INTERRUPTS
	041710	013746 	177776 			MOV	@#PS,-(SP)
	041714	112737 	000300 	177776 		MOVB	#300,@#PS
  11306	041722				15$:
  11307	041722	010002 				MOV	R0,R2		;;;SAVE ADDRESS OF CURRENT BLOCK
  11308	041724	011200 				MOV	@R2,R0		;;;GET ADDRESS OF NEXT BLOCK
  11309	041726	001421 				BEQ	30$		;;;IF EQ END OF CHAIN
  11310	041730	026001 	000002 			CMP	2(R0),R1	;;;BLOCK BIG ENOUGH?
  11311	041734	103772 				BLO	15$		;;;IF LO NO
  11312	041736	001407 				BEQ	20$		;;;IF EQ BLOCK IS EXACT SIZE
  11313	041740	005720 				TST	(R0)+		;;;POINT TO SIZE
  11314	041742	160110 				SUB	R1,@R0		;;;ALLOCATE BLOCK
  11315	041744	060001 				ADD	R0,R1		;;;POINT TO NEXT FREE SPACE
  11316	041746	011011 				MOV	@R0,@R1		;;;STORE NEW POINTER
  11317	041750	014041 				MOV	-(R0),-(R1)	;;;STORE ADDRESS
  11318	041752	010110 				MOV	R1,@R0		;;;STORE SIZE
  11319	041754	160001 				SUB	R0,R1
  11320	041756				20$:
  11321	041756	011012 				MOV	@R0,@R2		;;;REMOVE BLOCK FROM LIST
  11322	041760				40$:
  11323	041760					.ENB6			;;;ENABLE INTERRUPTS
	041760	012637 	177776 			MOV	(SP)+,@#PS
  11324	041764	012602 				MOV	(SP)+,R2	;RESTORE REGISTERS
  11325	041766	012603 				MOV	(SP)+,R3	; RESTORE R3
SCOMM	- COMMON DATA AND SUBRO	MACRO M1108  16-DEC-77 11:28  PAGE 165-1
SCOMM MODULE -- ..ALCB/..DECB/..ALC2/..DEC2	(ALLOCATE/DEALLOCA

  11326	041770					RETURN			; RETURN WITH R0 POINTING TO CALLER'S NODE
	041770	000207 				RTS	PC
  11327	041772				30$:
  11328	041772	005216 				INC	@SP		;;;SET CARRY
  11329	041774	060163 	000002 			ADD	R1,2(R3)	;;;RESET COUNTER
  11330	042000	000767 				BR	40$		;;;AND RETURN
  11331						;
SCOMM	- COMMON DATA AND SUBRO	MACRO M1108  16-DEC-77 11:28  PAGE 166
SCOMM MODULE -- ..ALCB/..DECB/..ALC2/..DEC2	(ALLOCATE/DEALLOCA

  11333					;+
  11334					;
  11335					; THIS ROUTINE IS CALLED TO DEALLOCATE AN EXEC CORE BUFFER. THE BLOCK IS
  11336					; INSERTED INTO THE FREE BLOCK CHAIN BY CORE ADDRESS. IF AN ADJACENT
  11337					; BLOCK IS CURRENTLY FREE, THEN THE TWO BLOCKS ARE MERGED AND INSERTED
  11338					; IN THE FREE BLOCK CHAIN.
  11339					;
  11340					; INPUTS:
  11341					;
  11342					;	R0=ADDRESS OF THE CORE BUFFER TO BE DEALLOCATED.
  11343					;	R1=SIZE OF THE CORE BUFFER TO DEALLOCATE IN BYTES.
  11344					;	R3=ADDRESS OF CORE ALLOCATION LISTHEAD IF ENTRY AT ..DEC1.
  11345					;
  11346					; OUTPUTS:
  11347					;
  11348					;	THE CORE BLOCK IS MERGED INTO THE FREE CORE CHAIN BY CORE
  11349					;	ADDRESS AND IS AGCOMERATED IF NECESSARY WITH ADJACENT BLOCKS.
  11350					;-
  11351
  11352						.ENABL	LSB
  11353
  11354	042002				..DEC2::
  11355	042002	010346 				MOV	R3,-(SP)	;SAVE REGISTERS
  11356	042004	000411 				BR	10$
  11357						;
  11358	042006				..DECN::
  11359	042006	016001 	000002 			MOV	T.HBCT(R0),R1	; PACKET SIZE TO R1
  11360	042012				..DECB::
  11361	042012	010346 				MOV	R3,-(SP)	;SAVE REGISTERS
  11362	042014	062701 	000003 			ADD	#3,R1		;ROUND OFF
  11363	042020	042701 	000003 			BIC	#3,R1
  11364	042024	012703 	033502'			MOV	#.FREPL,R3
  11365	042030				10$:
  11366	042030	060163 	000002 			ADD	R1,2(R3)	;UPDATE SIZE
  11367	042034	023727 	033504'	001400 		CMP	.FREPL+2,#POLMIN ;MIN OK?
  11368	042042	101403 				BLOS	20$		;NO -- DON'T SPEED DTE
  11369	042044	012777 	037777 	167304 		MOV	#37777,@.PRDTE	;YES -- SET DELAY COUNTER
  11370	042052				20$:
  11371	042052	010246 				MOV	R2,-(SP)
  11372	042054	010146 				MOV	R1,-(SP)
  11373	042056	010046 				MOV	R0,-(SP)
  11374	042060					.INH6			;;;INHIBIT INTERRUPTS
	042060	013746 	177776 			MOV	@#PS,-(SP)
	042064	112737 	000300 	177776 		MOVB	#300,@#PS
  11375	042072				40$:
  11376	042072	010302 				MOV	R3,R2		;;;SAVE ADDRESS OF CURRENT BLOCK
  11377	042074	011203 				MOV	@R2,R3		;;;GET ADDRESS OF NEXT BLOCK
  11378	042076	001402 				BEQ	50$		;;;IF EQ END OF CHAIN
  11379	042100	020003 				CMP	R0,R3		;;;BLOCK GO HERE?
  11380	042102	103373 				BHIS	40$		;;;IF HIS NO
  11381	042104				50$:
  11382	042104	010310 				MOV	R3,@R0		;;;ASSUME NO AGLOMERATION
  11383	042106	010046 				MOV	R0,-(SP)	;;;CALCULATE ADDRESS OF NEW BLOCK
  11384	042110	060116 				ADD	R1,@SP		;;;
  11385	042112	020326 				CMP	R3,(SP)+	;;;EQUAL TO NEXT IN CHAIN?
  11386	042114	001002 				BNE	60$		;;;IF NE NO
  11387	042116	012310 				MOV	(R3)+,@R0	;;;MOVE LINK WORD TO BLOCK RELEASED
SCOMM	- COMMON DATA AND SUBRO	MACRO M1108  16-DEC-77 11:28  PAGE 166-1
SCOMM MODULE -- ..ALCB/..DECB/..ALC2/..DEC2	(ALLOCATE/DEALLOCA

  11388	042120	061301 				ADD	@R3,R1		;;;MERGE TWO BLOCKS
  11389	042122				60$:
  11390	042122	010246 				MOV	R2,-(SP)	;;;SAVE ADDRESS OF PREVIOUS BLOCK
  11391	042124	010022 				MOV	R0,(R2)+	;;;ASSUME NO AGLOMERATION
  11392	042126	061216 				ADD	@R2,@SP		;;;CALCULATE ADDRESS OF NEXT BLOCK
  11393	042130	020026 				CMP	R0,(SP)+	;;;EQUAL TO BLOCK BEING RELEASED?
  11394	042132	001003 				BNE	70$		;;;IF NE NO
  11395	042134	061201 				ADD	@R2,R1		;;;MERGE TWO BLOCKS
  11396	042136	011042 				MOV	@R0,-(R2)	;;;MOVE LINK WORD TO PREVIOUS BLOCK
  11397	042140	010200 				MOV	R2,R0		;;;SET NEW ADDRESS OF BLOCK
  11398	042142				70$:
  11399	042142	010160 	000002 			MOV	R1,2(R0)	;;;SET SIZE OF BLOCK RELEASED
  11400	042146					.ENB6			;;;ENABLE INTERRUPTS
	042146	012637 	177776 			MOV	(SP)+,@#PS
  11401	042152				80$:
  11402	042152	012600 				MOV	(SP)+,R0	;RESTORE REGISTERS
  11403	042154	012601 				MOV	(SP)+,R1
  11404	042156	012602 				MOV	(SP)+,R2
  11405	042160	012603 				MOV	(SP)+,R3
  11406	042162					RETURN
	042162	000207 				RTS	PC
  11407						.DSABL	LSB
SCOMM	- COMMON DATA AND SUBRO	MACRO M1108  16-DEC-77 11:28  PAGE 167
SCOMM MODULE -- ..ALOW	(ALLOCATE OR WAIT)

  11409						.SBTTL	SCOMM MODULE -- ..ALOW	(ALLOCATE OR WAIT)
  11410					;
  11411					;+
  11412					;
  11413					;	..ALOW -- SUBROUTINE TO ALLOCATE A BUFFER (..ALCB) OR WAIT
  11414					;	IF ONE IS NOT AVAILABLE
  11415					;
  11416					;	CALLING SEQUENCE:
  11417					;
  11418					;	SAME AS ..ALCB
  11419					;
  11420					;-
  11421	042164				..ALOW::CALL	..ALCB		;TRY TO ALLOCATE A CORE BUFFER
	042164	004737 	041642'			JSR	PC,..ALCB
  11422	042170	103004 				BCC	10$		;RETURN IF SUCCESSFUL
  11423	042172					WSIG$S			;WAIT FOR SIG EVENT
	042172	012746 				MOV	(PC)+,-(SP)
	042174	   061 	   001 			.BYTE	49.,1
	042176	104375 				EMT	375
  11424	042200	000771 				BR	..ALOW		;AND TRY AGAIN
  11425					;
  11426	042202				10$:	RETURN			;RETURN TO CALLER
	042202	000207 				RTS	PC
SCOMM	- COMMON DATA AND SUBRO	MACRO M1108  16-DEC-77 11:28  PAGE 168
SCOMM MODULE -- ..STTY	(START TTY OUTPUT)

  11428						.SBTTL	SCOMM MODULE -- ..STTY	(START TTY OUTPUT)
  11429					;
  11430					;
  11431					;
  11432					;+
  11433					;
  11434					;	.STTY -- SUBROUTINE TO START TTY OUTPUT IF THE LINE
  11435					;	REQUESTED IS NOT IN USE.
  11436					;
  11437					;	IF ENTERED HERE FROM DTE20 SENDALL IT IS ASSUMED THAT IT
  11438					;	WILL ONLY BE CALLED IF THE TTY HAS NOT BEEN STARTED
  11439					;
  11440					;	IF THE REQUEST IS FOR THE LOCAL CTY AND KLINIK IS ACTIVE IN
  11441					;	REMOTE MODE, THE REQUEST WILL BE PROCESSED FOR BOTH
  11442					;	THE LOCAL AND REMOTE CTYS.
  11443					;
  11444					;
  11445					;	ENTRY CONDITIONS:
  11446					;	R0 -- BUFFER POINTER
  11447					;	R2 -- POINTER TO TTYTBL (TABLE WHERE QUEUE FOR THIS LINE IS
  11448					;
  11449					;	CALL	..STTY
  11450					;
  11451					;	EXIT CONDITIONS:
  11452					;
  11453					;
  11454					;	NO REGISTERS ALTERED
  11455					;
  11456					;-
  11457					;
  11458					;
  11459	042204				..STTY::
  11460	042204	010146 				MOV	R1,-(SP)	; +++006 SAVE REGISTERS
  11461	042206	010246 				MOV	R2,-(SP)
  11462	042210	010046 				MOV	R0,-(SP)
  11463	042212	010446 				MOV	R4,-(SP)
  11464	042214	010546 				MOV	R5,-(SP)
  11465	042216	032762 	000400 	000006 		BIT	#TT.CTY,STSW1(R2) ; +++006 IS THIS A CTY?
  11466	042224	001414 				BEQ	6$		; +++006 NO -- GO ON
  11467	042226	105737 	031342'			TSTB	.KLNSW+0	; +++006 YES -- KLINIK ACTIVE IN REMOTE MODE??
  11468	042232	003411 				BLE	6$		; +++006 NO -- GO ON
  11469	042234	010004 				MOV	R0,R4		; +++006 YES -- COPY BUFFER
  11470	042236					CALL	COPBUF		; +++006 COPY IT
	042236	004737 	020054'			JSR	PC,COPBUF
  11471	042242	013702 	031222'			MOV	KLNPTR,R2	; +++006 START KLINIK LINE
  11472	042246	012746 	042256'			MOV	#6$,-(SP)	; +++006 FAKE CALL SO WE CAN DO LOCAL CTY
  11473	042252	024646 				CMP	-(SP),-(SP)	; +++006 DON'T CARE WHAT IS ON STACK -- JUST HAVE TO
  11474									; +++006 HAVE DUMMY ARGS
  11475	042254	000404 				BR	7$		; +++006 GO START THE KLINIK LINE
  11476						;
  11477	042256				6$:				; +++006 RETURN HERE TO START LOCAL CTY
  11478									; +++006 OR PROCESS NON-CTY LINE
  11479	042256	012605 				MOV	(SP)+,R5	; +++006 RESTORE REGISTERS
  11480	042260	012604 				MOV	(SP)+,R4
  11481	042262	012600 				MOV	(SP)+,R0
  11482	042264	011602 				MOV	@SP,R2		; +++006 RESTORE POINTER TO LOCAL CTY
  11483	042266				7$:
SCOMM	- COMMON DATA AND SUBRO	MACRO M1108  16-DEC-77 11:28  PAGE 168-1
SCOMM MODULE -- ..STTY	(START TTY OUTPUT)

  11484	042266					.INH5			;INHIBIT INTERRUPTS FROM TTY'S
	042266	013746 	177776 			MOV	@#PS,-(SP)
	042272	112737 	000240 	177776 		MOVB	#240,@#PS
  11485	042300	105060 	000007 			CLRB	T.HFCN(R0)	;;;DON'T SAVE FUNCTION CODE
  11486	042304	011201 				MOV	@R2,R1		;;;LOOK FOR AN ENTRY IN THE TABLE
  11487	042306	001424 				BEQ	40$		;;;NONE FOUND -- MUST START TTY
  11488	042310	011102 			10$:	MOV	@R1,R2		;;;FIND THE END OF THE THREAD
  11489	042312	001402 				BEQ	20$		;;;FOUND IT -- ENTER THIS ONE
  11490	042314	010201 			15$:	MOV	R2,R1		;;;LOOK AT THE NEXT ENTRY
  11491	042316	000774 				BR	10$		;;;AND TRY AGAIN
  11492						;
  11493	042320				20$:				;;; +++010 HERE IF THREAD LIST IS ACTIVE
  11494	042320	016602 	000002 			MOV	2(SP),R2	;;; +++010 RETREIVE I/O PAGE POINTER
  11495	042324	020037 	031660'			CMP	R0,.CRSND	;;;IS THIS A SENDALL?
  11496	042330	001004 				BNE	25$		;;; +++010 NO -- GO ON
  11497	042332	105762 	000006 			TSTB	STSW1+0(R2)	;;; +++010 YES -- IS LINE X'D OFF??
  11498	042336	100410 				BMI	40$		;;; +++010 YES -- FORCE THE SENDALL OUT
  11499	042340	000402 				BR	30$		;;; +++010 NO -- LET THE SENDALL START AT "STTYDN"
  11500						;
  11501	042342				25$:				;;; +++010 HERE TO INSERT A NODE IN THREAD LIST
  11502	042342	010011 				MOV	R0,@R1		;;;SET UP THIS ENTRY POINTER
  11503	042344	005010 				CLR	@R0		;;;CLEAR THE THREAD POINTER TO INDICATE END OF LIST
  11504	042346				30$:	.ENB5			;;;ENABLE INTERRUPTS
	042346	012637 	177776 			MOV	(SP)+,@#PS
  11505	042352				35$:				; +++009
  11506	042352	012602 				MOV	(SP)+,R2
  11507	042354	012601 				MOV	(SP)+,R1
  11508	042356					RETURN			;RETURN TO CALLER
	042356	000207 				RTS	PC
  11509					;
  11510	042360				40$:
  11511	042360	010201 				MOV	R2,R1		;;; +++009 COPY DLS POINTER TO R1
  11512	042362	020037 	031660'			CMP	R0,.CRSND	;;; +++009 IS THIS A SENDALL??
  11513	042366	001010 				BNE	41$		;;; +++009 NO -- GO ON
  11514	042370	032762 	001000 	000006 		BIT	#TT.SIP,STSW1(R2) ;;; +++009 YES -- ALREADY IN PROGRESS??
  11515	042376	001363 				BNE	30$		;;; +++009 YES -- LET IT START AT "STTYDN"
  11516	042400	052762 	001000 	000006 		BIS	#TT.SIP,STSW1(R2) ;;; +++009 YES -- MARK SENDALL IN PROGRESS
  11517	042406	000415 				BR	45$		;;; +++009 AND START IT UP (DON'T INSERT IN QUEUE)
  11518						;
  11519	042410				41$:				;;; +++009 HERE IF NOT SENDALL (NORMAL OUTPUT)
  11520	042410	032762 	001200 	000006 		BIT	#TT.XOF!TT.SIP,STSW1(R2) ;;; +++009 SENDALL IN PROGRESS OR X'D OFF??
  11521	042416	001351 				BNE	25$		;;; +++009 YES -- JUST QUEUE IT UP AND EXIT
  11522	042420	032762 	000010 	000006 		BIT	#TT.ABW,STSW1(R2) ;;; +++009 NO -- AUTO-BAUD WAIT??
  11523	042426	001403 				BEQ	43$		;;; +++009 NO -- QUEUE THE NODE AND START OUTPUT
  11524									;;; +++009 ELSE DEALLOCATE THE NODE NOW
  11525	042430				42$:				;;; +++009 HERE TO DEALLOCATE A TTY NODE
  11526	042430					CALL	..DECN		;;; +++009 GET RID OF THE NODE
	042430	004737 	042006'			JSR	PC,..DECN
  11527	042434	000744 				BR	30$		;;; +++009 AND GO AWAY
  11528						;
  11529	042436				43$:				;;; +++009 HERE TO QUEUE NODE AND START NORMAL OUTPUT
  11530	042436	010012 				MOV	R0,@R2		;;;SET UP THE NEW THREAD POINTER
  11531	042440	005010 				CLR	@R0		;;;CLEAR THREAD POINTER
  11532	042442				45$:				;;; +++009 HERE TO START OUTPUT (NORMAL OR SENDALL)
  11533	042442	032762 	000400 	000006 		BIT	#TT.CTY,STSW1(R2) ;;;CTY?
  11534	042450	001403 				BEQ	47$		;;;NO -- FORGET IT
  11535	042452	005737 	031216'			TST	.TTP11		;;;YES -- IN USE?
SCOMM	- COMMON DATA AND SUBRO	MACRO M1108  16-DEC-77 11:28  PAGE 168-2
SCOMM MODULE -- ..STTY	(START TTY OUTPUT)

  11536	042456	001333 				BNE	30$		;;;YES -- DON'T DISTURB IT
  11537	042460				47$:
  11538	042460	016201 	000002 			MOV	TTYEXP(R2),R1	;;;FIND EXTERNAL PAGE ADDRESS
  11539	042464	001761 				BEQ	42$		;;; +++009 NO DEVICE -- DEALLOCATE NODE
  11540	042466	052762 	000001 	000006 		BIS	#TT.OUT,STSW1(R2) ;;; +++007 SET OUTPUT IN PROGRESS
  11541	042474	162702 	035176'			SUB	#DHTBL,R2	;;;IS THIS A DH DEVICE?
  11542	042500	103011 				BHIS	50$		;;;YES -- START DH ADDRESSES
  11543	042502	117061 	000004 	000006 		MOVB	@T.HCAD(R0),6(R1) ;;;NO -- START DL11
  11544	042510	005260 	000004 			INC	T.HCAD(R0)	;;;INCREMENT CURRENT ADDRESS POINTER
  11545	042514	052761 	000100 	000004 		BIS	#DL.XEN,4(R1)	;;; +++006 INTERRUPT ENABLE DEVICE
  11546	042522	000711 				BR	30$		;;;RETURN TO CALLER
  11547					;
  11548	042524	042711 	001077 		50$:	BIC	#1077,@R1	;;;CLEAR THE CURRENT UNIT NUMBER ETC
  11549	042530	006202 				ASR	R2		;;;FIND THE UNIT NUMBER OF THIS DH LINE
  11550	042532	006202 				ASR	R2
  11551	042534	006202 				ASR	R2
  11552	042536	042702 	177760 			BIC	#177760,R2	;;;MASK OFF EXTRA BITS
  11553	042542	050221 				BIS	R2,(R1)+	;;;SET THE UNIT NUMBER IN THE DH
  11554	042544	062701 	000004 			ADD	#4,R1		;;;MUST ADD TO SKIP OVER SILO
  11555	042550	016021 	000004 			MOV	T.HCAD(R0),(R1)+ ;;; SET UP THE CURRENT ADDRESS POINTER
  11556	042554	016011 	000006 			MOV	T.HCBC(R0),@R1	;;;SET UP THE BYTE COUNT
  11557	042560	005421 				NEG	(R1)+		;;;NEGATE BYTE COUNT
  11558	042562	006302 				ASL	R2
  11559	042564	056211 	042572'			BIS	BITTBL(R2),@R1 ;;;START THE TRANSFER
  11560	042570	000666 				BR	30$
  11561					;
  11562	042572	000001 			BITTBL::.WORD	1		;BIT TABLE FOR ASH SIMULATION
  11563	042574	000002 				.WORD	2
  11564	042576	000004 				.WORD	4
  11565	042600	000010 				.WORD	10
  11566	042602	000020 				.WORD	20
  11567	042604	000040 				.WORD	40
  11568	042606	000100 				.WORD	100
  11569	042610	000200 				.WORD	200
  11570	042612	000400 				.WORD	400
  11571	042614	001000 				.WORD	1000
  11572	042616	002000 				.WORD	2000
  11573	042620	004000 				.WORD	4000
  11574	042622	010000 				.WORD	10000
  11575	042624	020000 				.WORD	20000
  11576	042626	040000 				.WORD	40000
  11577	042630	100000 				.WORD	100000
  11578					;
SCOMM	- COMMON DATA AND SUBRO	MACRO M1108  16-DEC-77 11:28  PAGE 169
SCOMM MODULE -- ..STPT	(STOP TTY)

  11580						.SBTTL	SCOMM MODULE -- ..STPT	(STOP TTY)
  11581					;
  11582					;+
  11583					;
  11584					;	..STPT -- SUBROUTINE TO STOP TTY OUTPUT AND FLUSH THE BUFFERS
  11585					;
  11586					;	ENTRY CONDITIONS:
  11587					;	R2 -- POINTER TO TTYTBL (TABLE WHERE QUEUE FOR THIS LINE IS)
  11588					;
  11589					;	CALL	..STPT
  11590					;
  11591					;	EXIT CONDITIONS;
  11592					;
  11593					;	CC-C CLEAR
  11594					;
  11595					;	R0,R1 REGISTERS ALTERED
  11596					;
  11597					;-
  11598					;
  11599	042632				..STPT::
  11600	042632					.INH5			;;;INHIBIT TTY INTERRUPTS
	042632	013746 	177776 			MOV	@#PS,-(SP)
	042636	112737 	000240 	177776 		MOVB	#240,@#PS
  11601	042644	032762 	000400 	000006 		BIT	#TT.CTY,STSW1(R2) ;;;+++006 IS THIS ACTY??
  11602	042652	001411 				BEQ	5$		;;; +++006 NO -- GO ON
  11603	042654	105737 	031342'			TSTB	.KLNSW+0	;;; +++006 YES -- IS KLINIK ACTIVE
  11604	042660	003406 				BLE	5$		;;; +++006 NOT THAT WE CARE
  11605	042662	010246 				MOV	R2,-(SP)	;;; +++006 YES -- SAVE R2
  11606	042664	013702 	031222'			MOV	KLNPTR,R2	;;; +++006 KLINIK LINE POINTER TO R2
  11607	042670					CALL	10$		;;; +++006 DEQUEUE AND STOP KLINIK LINE
	042670	004737 	042710'			JSR	PC,10$
  11608	042674	012602 				MOV	(SP)+,R2	;;; +++006 RESTORE R2
  11609	042676				5$:				;;; +++006
  11610	042676					CALL	10$		;;; +++006 DEQUEUE AND STOP LINE
	042676	004737 	042710'			JSR	PC,10$
  11611	042702					.ENB5			;;; +++006 ENABLE INTERRUPTS
	042702	012637 	177776 			MOV	(SP)+,@#PS
  11612	042706					RETURN			; +++006 EXIT
	042706	000207 				RTS	PC
  11613					;
  11614					; HERE TO FLUSH OUTPUT LIST AND STOP LINE
  11615					;
  11616	042710				10$:
  11617	042710	020227 	035176'			CMP	R2,#DHTBL	;;; IS THIS A DH-11??
  11618	042714	103455 				BLO	40$		;;; NO -- GO STOP DL11 OUTPUT
  11619	042716	010246 				MOV	R2,-(SP)	;;; YES -- SAVE DH-11 POINTER
  11620	042720	011202 				MOV	(R2),R2		;;; MOVE OVER FIRST NODE
  11621	042722	001402 				BEQ	20$		;;; ONLY ONE NODE -- FORGET IT
  11622	042724					CALL	60$		;;; FLUSH THE THREAD LIST
	042724	004737 	043074'			JSR	PC,60$
  11623					;
  11624					; HERE TO STOP A DH-11 LINE
  11625					;
  11626	042730				20$:
  11627	042730	012602 				MOV	(SP)+,R2	;;; RESTORE DH-11 POINTER
  11628	042732	010201 				MOV	R2,R1		;;;INSURE TTY WILL STOP
  11629	042734	105762 	000006 			TSTB	STSW1+0(R2)	;;; X'D OFF??
SCOMM	- COMMON DATA AND SUBRO	MACRO M1108  16-DEC-77 11:28  PAGE 169-1
SCOMM MODULE -- ..STPT	(STOP TTY)

  11630	042740	100004 				BPL	25$		;;; NO -- GO ON
  11631	042742	032762 	000001 	000006 		BIT	#TT.OUT,STSW1(R2) ;;; YES -- XOFF WAIT??
  11632	042750	001451 				BEQ	60$		;;; NO -- GET RID OF FIRST NODE AND EXIT
  11633	042752				25$:
  11634	042752	032762 	001000 	000006 		BIT	#TT.SIP,STSW1(R2) ;;; MAYBE -- CHECK FOR SENDALL
  11635	042760	001045 				BNE	60$		;;; YES -- GET RID OF FIRST NODE AND EXIT
  11636	042762	032762 	000400 	000006 		BIT	#TT.CTY,STSW1(R2) ;;; IS THIS A CTY??
  11637	042770	001403 				BEQ	30$		;;; +++007 NO -- GO ON
  11638	042772	005737 	031216'			TST	.TTP11		;;; +++001 YES -- -11 I/O WAIT??
  11639	042776	001036 				BNE	60$		;;; YES -- GET RID OF FIRST NODE AND EXIT
  11640	043000				30$:				;;; +++007
  11641	043000	162701 	035176'			SUB	#DHTBL,R1	;;; FIND THE DH-11 UNIT NUMBER
  11642	043004	006201 				ASR	R1		;;;
  11643	043006	006201 				ASR	R1		;;;
  11644	043010	006201 				ASR	R1		;;;
  11645	043012	042701 	177760 			BIC	#^C17,R1	;;; MASK OFF JUNK
  11646	043016	016200 	000002 			MOV	TTYEXP(R2),R0	;;; FIND I/O PAGE ADDRESS
  11647	043022	042710 	001077 			BIC	#1077,(R0)	;;; CLEAR CURRENT UNIT
  11648	043026	050110 				BIS	R1,(R0)		;;; SET UP DESIRED UNIT
  11649	043030	022760 	177776 	000010 		CMP	#-2,10(R0)	;;; MORE THAN TWO CHARACTERS LEFT??
  11650	043036	003424 				BLE	70$		;;; NO -- GO ON
  11651	043040	012760 	177777 	000010 		MOV	#-1,10(R0)	;;; YES -- FORCE THE RUNDOWN
  11652	043046	000420 				BR	70$		;;; AND EXIT
  11653						;
  11654					;
  11655					; HERE TO STOP A DL11 LINE
  11656					;
  11657	043050				40$:
  11658	043050	032762 	000400 	000006 		BIT	#TT.CTY,STSW1(R2) ;;; IS THIS A CTY??
  11659	043056	001406 				BEQ	60$		;;; NO -- GO ON
  11660	043060	005737 	031216'			TST	.TTP11		;;; YES -- -11 I/O WAIT??
  11661	043064	001003 				BNE	60$		;;; YES -- JUST FLUSH THREAD LIST
  11662	043066	042762 	000001 	000006 		BIC	#TT.OUT,STSW1(R2) ;;; NO -- SET NO INTERRUPT EXPECTED
  11663					;
  11664					; INTERNAL SUBROUTINE TO REMOVE THREAD LIST ENTRIES UP TO THAT
  11665					; POINTED TO BY R2
  11666					;
  11667	043074				60$:
  11668	043074	011200 				MOV	(R2),R0		;;; GET THIS NODE POINTER
  11669	043076	001404 				BEQ	70$		;;; END OF LIST IF .EQ. 0
  11670	043100	011012 				MOV	(R0),(R2)	;;; DELINK AND
  11671	043102					CALL	..DECN		;;; DEALLOACTE THIS NODE
	043102	004737 	042006'			JSR	PC,..DECN
  11672	043106	000772 				BR	60$		;;; DO THE NEXT NODE
  11673	043110				70$:
  11674	043110					RETURN			;;; TO CALLER
	043110	000207 				RTS	PC
SCOMM	- COMMON DATA AND SUBRO	MACRO M1108  16-DEC-77 11:28  PAGE 170
SCOMM MODULE -- ..STCH	(STORE CHARACTER IN TO 10 Q)

  11676						.SBTTL	SCOMM MODULE -- ..STCH	(STORE CHARACTER IN TO 10 Q)
  11677					;+
  11678					;
  11679					;
  11680					;	..STCH -- SUBROUTINE TO STORE A CHARACTER IN THE TO 10
  11681					;	QUEUE AND IF THAT QUEUE IS FULL SEND IT TO THE KL10 BY
  11682					;	ENTERING IT IN THE TO10Q.
  11683					;
  11684					;	CALLING SEQUENCE:
  11685					;
  11686					;	MOV	CHARACTER,-(SP)
  11687					;	R5 -- POINTER TO DEVICE TABLE ENTRY
  11688					;	CALL	..STCH
  11689					;
  11690					;	REGISTERS ALTERED: NONE
  11691					;
  11692					;-
  11693						.ENABL	LSB
  11694
  11695	043112	032737 	040000 	031114'	..STCH::BIT	#EF.PR1,.COMEF+2 ;IF PRIMARY PROTOCOL NOT RUNNING
  11696	043120	001421 				BEQ	10$		;IGNORE CHARACTER.
  11697	043122	010446 				MOV	R4,-(SP)	;SAVE REGISTERS
  11698	043124	010346 				MOV	R3,-(SP)
  11699	043126	010146 				MOV	R1,-(SP)
  11700	043130	012703 	000004 			MOV	#D.CDLS,R3	;SET UP AS DATA/LINE SCANNER
  11701	043134					CALL	STLN		;GET LINE NUMBER
	043134	004737 	043206'			JSR	PC,STLN
  11702	043140	000304 				SWAB	R4		;AND PUT IN HIGH ORDER BYTE
  11703	043142	156604 	000010 			BISB	10(SP),R4	;SET CHARACTER
  11704	043146	012701 	000004 			MOV	#BC.LNC,R1	;SET LINE/CHARACTER
  11705	043152				STCM:	CALL	..STFC		;STORE FUNCTION
	043152	004737 	043252'			JSR	PC,..STFC
  11706	043156	012601 				MOV	(SP)+,R1	;RESTORE
  11707	043160	012603 				MOV	(SP)+,R3
  11708	043162	012604 				MOV	(SP)+,R4
  11709	043164				10$:	RETURN
	043164	000207 				RTS	PC
  11710
  11711						.DSABL	LSB
SCOMM	- COMMON DATA AND SUBRO	MACRO M1108  16-DEC-77 11:28  PAGE 171
SCOMM MODULE -- ..SACK	(SEND ACKNOWLEDGEMENT)

  11713						.SBTTL	SCOMM MODULE -- ..SACK	(SEND ACKNOWLEDGEMENT)
  11714
  11715					;+
  11716					;
  11717					;	..SACK -- SUBROUTINE TO ACKNOWLEDGE THE OUTPUT OF CHARACTER OR STRINGS
  11718					;
  11719					;	CALLING SEQUENCE:
  11720					;
  11721					;	R3 -- DEVICE ID
  11722					;	R5 -- DEVICE TABLE POINTER
  11723					;
  11724					;	EXIT CONDITIONS:
  11725					;	NO REGISTERS ALTERED
  11726					;
  11727					;-
  11728
  11729	043166	010446 			..SACK::MOV	R4,-(SP)	;SAVE REGISTERS
  11730	043170	010346 				MOV	R3,-(SP)
  11731	043172	010146 				MOV	R1,-(SP)
  11732	043174					CALL	STLN		;GET LINE NUMBER.
	043174	004737 	043206'			JSR	PC,STLN
  11733	043200	012701 	000017 			MOV	#BC.SAK,R1
  11734	043204	000762 				BR	STCM		;STORE COMMON
  11735
  11736	043206	010246 			STLN:	MOV	R2,-(SP)
  11737	043210	005004 				CLR	R4		;DEFAULT LINE # TO ZERO.
  11738	043212	010302 				MOV	R3,R2		;COMPUTE OFFSET TO
  11739	043214	006302 				ASL	R2		;DEVICE QUEUE ENTRY
  11740	043216	006302 				ASL	R2
  11741	043220	006302 				ASL	R2
  11742	043222	006302 				ASL	R2
  11743	043224	010501 				MOV	R5,R1		;NOW COMPUTE OFFSET
  11744	043226	166201 	034640'			SUB	.DQPBA-20(R2),R1;INTO DEVICE LINE TABLE
  11745	043232	001405 				BEQ	20$		;FIRST ENTRY - ALL DONE.
  11746	043234	116202 	034642'			MOVB	.DQPBA-20+2(R2),R2 ;GET TABLE ENTRY SIZE
  11747	043240	005204 			10$:	INC	R4		;AND MARCH THROUGH
  11748	043242	160201 				SUB	R2,R1
  11749	043244	003375 				BGT	10$
  11750	043246	012602 			20$:	MOV	(SP)+,R2
  11751	043250					RETURN			;GOOD-BYE !
	043250	000207 				RTS	PC
SCOMM	- COMMON DATA AND SUBRO	MACRO M1108  16-DEC-77 11:28  PAGE 172
SCOMM MODULE -- ..STFC	(STORE FUNCTION)

  11753						.SBTTL	SCOMM MODULE -- ..STFC	(STORE FUNCTION)
  11754
  11755					;+
  11756					;
  11757					;	..STFC -- SUBROUTINE TO START A ONE WORD FUNCTION OF CHARACTER
  11758					;
  11759					;	CALLING SEQUENCE:
  11760					;
  11761					;	R1 -- FUNCTION CODE
  11762					;	R3 -- DEVICE ID
  11763					;	R4 -- CHARACTER TO BE SENT TO 10 AND LINE NUMBER
  11764					;
  11765					;	EXIT CONDITIONS:
  11766					;
  11767					;-
  11768
  11769	043252	010546 			..STFC::MOV	R5,-(SP)	;SAVE R5
  11770	043254					.INH6
	043254	013746 	177776 			MOV	@#PS,-(SP)
	043260	112737 	000300 	177776 		MOVB	#300,@#PS
  11771	043266	020137 	031664'			CMP	R1,.CPFN	;THE CORRECT CURRENT FUNCTION?
  11772	043272	001026 				BNE	10$		;NO -- MUST RESET
  11773	043274	020337 	031666'			CMP	R3,.CPDV	;SAME DEVICE?
  11774	043300	001023 				BNE	10$		;MUST RESET HERE ALSO
  11775	043302	010477 	166364 		5$:	MOV	R4,@.CRPB	;SET THE LINE NUMBER
  11776	043306	012705 	000002 			MOV	#2,R5
  11777	043312	060537 	031672'			ADD	R5,.CRPB
  11778	043316	060577 	166354 			ADD	R5,@.CRSB
  11779	043322	060537 	031662'			ADD	R5,.CRQZ
  11780	043326	160537 	031670'			SUB	R5,.CRSZ
  11781	043332	001002 				BNE	7$		;YES -- RETURN TO CALLER
  11782	043334					CALL	..STQ		;NO -- BETTER START QUEUE
	043334	004737 	043630'			JSR	PC,..STQ
  11783	043340				7$:	.ENB6			;ENABLE INTERRUPTS
	043340	012637 	177776 			MOV	(SP)+,@#PS
  11784	043344	012605 				MOV	(SP)+,R5	;RESTORE
  11785	043346					RETURN			;RETURN TO CALLER
	043346	000207 				RTS	PC
  11786					;
  11787	043350	022737 	000012 	031670'	10$:	CMP	#10.,.CRSZ	;IS THERE ROOM?
  11788	043356	101402 				BLOS	15$		;YES -- START NEW ENTRY
  11789	043360				13$:	CALL	..STQ		;NO -- ENTER IT IN THE QUEUE
	043360	004737 	043630'			JSR	PC,..STQ
  11790	043364	010046 			15$:	MOV	R0,-(SP)	;SAVE R0
  11791	043366	012705 	000010 			MOV	#10,R5
  11792	043372	013700 	031672'			MOV	.CRPB,R0	;FIND CURRENT BUFFER POINTER
  11793	043376	060537 	031662'			ADD	R5,.CRQZ	;UPDATE QUEUE COUNTS
  11794	043402	160537 	031670'			SUB	R5,.CRSZ
  11795	043406	010037 	031676'			MOV	R0,.CRSB	;SET UP CURRENT BUFFER POINTER
  11796	043412	010520 				MOV	R5,(R0)+	;SET UP CURRENT SIZE
  11797	043414	010120 				MOV	R1,(R0)+	;SET THE FUNCTION CODE
  11798	043416	010137 	031664'			MOV	R1,.CPFN	;SAVE CURRENT FUNCTION
  11799	043422	010320 				MOV	R3,(R0)+	;SET DEVICE CODE
  11800	043424	010337 	031666'			MOV	R3,.CPDV	;SET DEVICE CODE FOR REFER LATER
  11801	043430	005020 				CLR	(R0)+		;CLEAR SPARE WORD
  11802	043432	010037 	031672'			MOV	R0,.CRPB	;SET CURRENT BUFFER POINTER
  11803	043436	012600 				MOV	(SP)+,R0	;RESTORE R0
SCOMM	- COMMON DATA AND SUBRO	MACRO M1108  16-DEC-77 11:28  PAGE 172-1
SCOMM MODULE -- ..STFC	(STORE FUNCTION)

  11804	043440	000720 				BR	5$		;AND SET FUNCTION
SCOMM	- COMMON DATA AND SUBRO	MACRO M1108  16-DEC-77 11:28  PAGE 173
SCOMM MODULE -- ..STIN	(START INDIRECT FUNCTION)

  11806						.SBTTL	SCOMM MODULE -- ..STIN	(START INDIRECT FUNCTION)
  11807					;
  11808					;+
  11809					;
  11810					;	..STIN -- SUBROUTINE TO START AN INDIRECT DTE20 FUNCTION
  11811					;	TO THE 10
  11812					;
  11813					;  ENTRY CONDITIONS:
  11814					;
  11815					;	R0 -- BUFFER ADDRESS
  11816					;	R1 -- FUNCTION +100000
  11817					;	R2 -- EFN/BUFFER SIZE
  11818					;	R3 -- DEVICE ID
  11819					;
  11820					;	NOTE :  THE FIRST WORD OF THE BUFFER MUST CONTAIN THE
  11821					;	LINE NUMBER AND BUFFER SIZE
  11822					;
  11823					;	MAY NOT BE CALLED FROM ISR
  11824					;
  11825					;
  11826					;	CALL	..STIN
  11827					;
  11828					;  EXIT CONDITIONS:
  11829					;	CC-C CLEAR SUCCESS
  11830					;	CC-C SET FAILURE -- PRIMARY PROTOCOL IN USE
  11831					;
  11832					;-
  11833					;
  11834	043442	010546 			..STIN::MOV	R5,-(SP)	;SAVE REGISTERS
  11835	043444	010046 				MOV	R0,-(SP)
  11836	043446	010146 				MOV	R1,-(SP)
  11837	043450	012701 	000030 			MOV	#30,R1		;SET UP TO ALLOCATE A BUFFER
  11838	043454				10$:	CALL	..ALOW		;ALLOCATE BUFFER
	043454	004737 	042164'			JSR	PC,..ALOW
  11839					;
  11840	043460	010005 			20$:	MOV	R0,R5		;MOVE BUFFER ADDRESS TO R5
  11841	043462	022525 				CMP	(R5)+,(R5)+	;MOVE OVER THE LISTHEAD
  11842	043464	010125 				MOV	R1,(R5)+	;STORE THE BUFFER SIZE
  11843	043466	012715 	000012 			MOV	#12,@R5		;PUT IN THE SIZE OF THIS HEADER PACKET
  11844	043472	012525 				MOV	(R5)+,(R5)+	;ALSO PUT IT IN FIRST WORD TO 10
  11845	043474	011625 				MOV	@SP,(R5)+	;STORE FUNCTION CODE
  11846	043476	010325 				MOV	R3,(R5)+	;STORE THE DEVICE I/D
  11847	043500	005025 				CLR	(R5)+		;CLEAR THE SPARE WORD
  11848	043502	016601 	000002 			MOV	2(SP),R1	;RESTORE BUFFER ADDRESS
  11849	043506	012125 				MOV	(R1)+,(R5)+	;SET BYTE COUNT/LINE NUMBER
  11850	043510	010125 				MOV	R1,(R5)+	;SET UP BUFFER ADDRESS
  11851	043512	010246 				MOV	R2,-(SP)	;SAVE REGISTERS MODIFIED
  11852	043514	010346 				MOV	R3,-(SP)
  11853	043516	010546 				MOV	R5,-(SP)
  11854	043520	013705 	031110'			MOV	.CRTSK,R5	;SET UP TO CONVERT EFN
  11855	043524	010203 				MOV	R2,R3
  11856	043526					CALL	.CEFN3		;CONVERT EFN
	043526	004737 	040410'			JSR	PC,.CEFN3
  11857	043532	012605 				MOV	(SP)+,R5	;RESTORE R5
  11858	043534	010325 				MOV	R3,(R5)+	;SET MASK
  11859	043536	010225 				MOV	R2,(R5)+	;SET ADDRESS
  11860	043540	012603 				MOV	(SP)+,R3	;RESTORE REGISTERS
SCOMM	- COMMON DATA AND SUBRO	MACRO M1108  16-DEC-77 11:28  PAGE 173-1
SCOMM MODULE -- ..STIN	(START INDIRECT FUNCTION)

  11861	043542	012602 				MOV	(SP)+,R2
  11862	043544	010446 				MOV	R4,-(SP)	;SAVE R4
  11863	043546	010001 				MOV	R0,R1		;SET UP TO ENTER NODE
  11864	043550					.INH6			;INHIBIT DTE20 INTERRUPTS
	043550	013746 	177776 			MOV	@#PS,-(SP)
	043554	112737 	000300 	177776 		MOVB	#300,@#PS
  11865	043562	012704 	031742'			MOV	#TO10Q,R4	;;;START TO 10 Q IF NECESSARY
  11866	043566	021404 				CMP	@R4,R4		;;;CHECK TO SEE IF ALREADY GOING
  11867	043570	001003 				BNE	30$		;;;YES -- JUST ENTER IN Q
  11868	043572	010104 				MOV	R1,R4		;;;NO -- SET NODE ADDRESS
  11869	043574					CALL	STNTQ		;;;START QUEUE
	043574	004737 	022166'			JSR	PC,STNTQ
  11870	043600	013704 	031744'		30$:	MOV	TO10Q+2,R4	;;;ENTER Q
  11871	043604					CALL	..NADD		;;;ADD NODE
	043604	004737 	041422'			JSR	PC,..NADD
  11872	043610					.ENB6			;;;ENABLE INTERRUPTS
	043610	012637 	177776 			MOV	(SP)+,@#PS
  11873	043614	012604 				MOV	(SP)+,R4	;;;RESTORE REGISTERS
  11874	043616	012601 				MOV	(SP)+,R1
  11875	043620	012600 				MOV	(SP)+,R0
  11876	043622	012605 				MOV	(SP)+,R5
  11877	043624	000241 				CLC			;CLEAR C
  11878	043626					RETURN			;RETURN TO CALLER
	043626	000207 				RTS	PC
SCOMM	- COMMON DATA AND SUBRO	MACRO M1108  16-DEC-77 11:28  PAGE 174
SCOMM MODULE -- ..STQ	(STORE IN TO 10 Q)

  11880						.SBTTL	SCOMM MODULE -- ..STQ	(STORE IN TO 10 Q)
  11881					;
  11882					;+
  11883					;
  11884					;	..STQ -- SUBROUTINE TO STORE IN THE TO 10 Q AND
  11885					;	GET ANOTHER BUFFER FOR TRANSFERRING TO THE TO 10 QUEUE.
  11886					;	INIAN -- SPECIAL ENTRY POINT FOR INI.MAC (INITIALIZATION)
  11887					;	IT SHOULD BE USED BY NO OTHERS!!
  11888					;
  11889					;
  11890					;	CALLING SEQUENCE:
  11891					;
  11892					;	.CP?? MUST BE SETUP TO THE LAST Q ENTRY
  11893					;	CALL	..STQ
  11894					;
  11895					;	EXIT CONDITIONS:
  11896					;
  11897					;	.CP?? IS SET UP TO POINT TO A NEW QUEUE
  11898					;
  11899					;-
  11900					;
  11901						.ENABL	LSB
  11902	043630	010046 			..STQ::	MOV	R0,-(SP)	;SAVE REGISTERS
  11903	043632	010146 				MOV	R1,-(SP)
  11904	043634	010446 				MOV	R4,-(SP)
  11905	043636	013704 	031674'			MOV	.CRHD,R4	;FIND THE HEADER OF THE CURRENT BUFFER
  11906	043642	013764 	031662'	000006 		MOV	.CRQZ,6(R4)	;SET THE CURRENT QUEUE SIZE IN THE BUFFER
  11907									;AND CHECK TO SEE IF ANYTHING THERE
  11908	043650	001454 				BEQ	40$		;NO -- DON'T ATTEMPT TO SEND TO 10
  11909	043652	012701 	031742'			MOV	#TO10Q,R1	;FIND THE LISTHEAD OF THE 10Q
  11910	043656	021101 				CMP	@R1,R1		;IS THERE AN ENTRY?
  11911	043660	001003 				BNE	20$		;ALREADY STARTED?
  11912	043662					CALL	STNTQ		;START THE QUEUE UP
	043662	004737 	022166'			JSR	PC,STNTQ
  11913	043666	000404 				BR	25$
  11914					;
  11915	043670	022737 	000014 	031670'	20$:	CMP	#14,.CRSZ
  11916	043676	101441 				BLOS	40$		;YES -- DON'T QUEUE IT YET
  11917	043700	010401 			25$:	MOV	R4,R1		;SET UP THE NODE ADDRESS
  11918	043702	013704 	031744'			MOV	TO10Q+2,R4	;SET UP LISTHEAD ADDRESS
  11919	043706					CALL	..NADD		;ADD THE NODE TO THE LIST
	043706	004737 	041422'			JSR	PC,..NADD
  11920	043712	012701 	000140 		INIAN::	MOV	#E.OPSZ,R1	;SET UP THE BUFFER SIZE
  11921	043716				27$:	CALL	..ALCB		;ALLOCATE A BUFFER
	043716	004737 	041642'			JSR	PC,..ALCB
  11922	043722	103010 				BCC	30$		;GO SET UP NEW BUFFER POINTERS
  11923	043724	012701 	000030 			MOV	#30,R1		;TRY FOR A SMALLER BUFFER
  11924	043730					CALL	..ALCB
	043730	004737 	041642'			JSR	PC,..ALCB
  11925	043734	103003 				BCC	30$		;GOT IT -- ALL OK
  11926	043736					.CRASH	B03
	043736	000004 				IOT
	043740	   102 	   060 	   063 		.ASCIZ	/B03/
	043743	   000
  11927					;
  11928					;
  11929	043744	010037 	031674'		30$:	MOV	R0,.CRHD	;SET UP THE POINTER TO THE HEAD OF THE BUFFER
SCOMM	- COMMON DATA AND SUBRO	MACRO M1108  16-DEC-77 11:28  PAGE 174-1
SCOMM MODULE -- ..STQ	(STORE IN TO 10 Q)

  11930	043750	005037 	031666'			CLR	.CPDV		;SET NO DEVICE IN USE
  11931	043754	022020 				CMP	(R0)+,(R0)+	;MOVE OVER THE FORWARD/BACKWARD POINTERS
  11932	043756	010120 				MOV	R1,(R0)+	;SET UB NODE SIZE
  11933	043760	005020 				CLR	(R0)+		;SET UP CURRENT SIZE OF Q
  11934	043762	010037 	031672'			MOV	R0,.CRPB	;SET THE CURRENT BUFFER POINTER
  11935	043766	162701 	000012 			SUB	#10.,R1		;DON'T WANT TO INCLUDE HEADER
  11936	043772	010137 	031670'			MOV	R1,.CRSZ	;SET UP SIZE OF Q(MAX)
  11937	043776	005037 	031662'			CLR	.CRQZ		;CLEAR CURRENT QUEUE SIZE
  11938	044002	012604 			40$:	MOV	(SP)+,R4	;RESTORE REGISTSERS
  11939	044004	012601 				MOV	(SP)+,R1
  11940	044006	012600 				MOV	(SP)+,R0
  11941	044010					RETURN			;RETURN TO CALLER
	044010	000207 				RTS	PC
  11942					;
  11943						.DSABL	LSB
SCOMM	- COMMON DATA AND SUBRO	MACRO M1108  16-DEC-77 11:28  PAGE 175
SCOMM MODULE -- WFED	(WAIT FOR EXAMINE/DEPOSIT)

  11945						.SBTTL	SCOMM MODULE -- WFED	(WAIT FOR EXAMINE/DEPOSIT)
  11946					;+
  11947					;	WFED -- WAITS FOR EXAMINE/DEPOSIT TRANSFERS AND
  11948					;	CHECKS TO SEE THAT E-BOX HAS NOT STOPPED
  11949					;
  11950					;	NOTE: **** THIS ROUTINE MUST BE ENTERED AT PRI6 ****
  11951					;
  11952					;
  11953					;	CALLING SEQUENCE:
  11954					;	ENTRY CONDITIONS:
  11955					;	R0 -- ADDRESS OF DTE20
  11956					;	IF ".NOERR" .NE. 0 -- ONLY CHECK TIMEOUT AND POWERFAIL RESTART
  11957					;		ELSE CHECK ALL ERRORS
  11958					;
  11959					;	CALL	WFED
  11960					;
  11961					;	EXIT CONDITIONS:
  11962					;
  11963					;	SUCCESS -- NO REGISTERS ALTERED CC-C CLEAR
  11964					;
  11965					;	NORMAL ERROR CONDITIONS:
  11966					;
  11967					;	CC-C SET -- E-BOX STOPPED (PROTOCOL STOPPED - KS.CES SET IN .KLITK)
  11968					;	CC-C SET -- DEP/EX FAILURE (PROTOCOL STOPPED - KS.DEX SET IN .KLITK)
  11969					;
  11970					;	CC-C CLEAR -- E-BUS PARITY ERROR (PROTOCOL UNCHANGED -- KS.EPE SET IN .KLITK)
  11971					;	CC-C CLEAR -- TEN STOPPED (PROTOCOL STOPPED -- KS.TSP SET IN .KLITK)
  11972					;
  11973					;	SPECIAL ERROR CONDITIONS:
  11974					;
  11975					;	TIMEOUT AND ".NOERR" .NE. 0 - CC-C SET
  11976					;-
  11977
  11978	044012				WFED::
  11979	044012	012737 	003000 	031204'		MOV	#3000,DEXST	;SET UP TIMEOUT FOR DEXDONE
  11980	044020				5$:
  11981	044020	032760 	000004 	000034 		BIT	#DEXDON,STATD(R0) ;WAIT FOR TRANSFER TO COMPLETE
  11982	044026	001043 				BNE	85$		;DONE
  11983	044030	005337 	031204'			DEC	DEXST		;TIMEOUT?
  11984	044034	001371 				BNE	5$		;NO -- CONTINUE WAITING
  11985	044036	005060 	000030 			CLR	DAG1(R0)	;CLEAR FLAGS
  11986	044042	105737 	031230'			TSTB	.NOERR		; +001 IF REQUESTED,
  11987	044046	000261 				SEC			;(SET ERROR FOR RETURN)
  11988	044050	001052 				BNE	90$		; +001 JUST RETURN TO THE CALLER.
  11989	044052	032760 	004000 	000030 		BIT	#DS04,DAG1(R0)	;CHECK FOR E BOX STOPPED
  11990	044060	001004 				BNE	10$		;YES -- COMPLAIN
  11991	044062	052737 	000010 	031234'		BIS	#KS.DEX,.KLITK	;SET DEX ERROR
  11992	044070	000413 				BR	80$
  11993	044072				10$:
  11994	044072	052737 	000002 	031234'		BIS	#KS.CES,.KLITK	;SET CLOCK ERROR STOP
  11995	044100	000407 				BR	80$
  11996	044102				20$:
  11997	044102	052737 	000004 	031234'		BIS	#KS.EPE,.KLITK	;SET E-BUS PARITY ERROR
  11998	044110	000407 				BR	81$
  11999	044112				30$:
  12000	044112	052737 	000001 	031234'		BIS	#KS.TSP,.KLITK	;SET TEN STOPPED
  12001	044120				80$:
SCOMM	- COMMON DATA AND SUBRO	MACRO M1108  16-DEC-77 11:28  PAGE 175-1
SCOMM MODULE -- WFED	(WAIT FOR EXAMINE/DEPOSIT)

  12002	044120	105237 	031230'			INCB	.NOERR		;ERROR IS RECOGNIZED
  12003	044124					CALL	..DTSP		;CLEAR BOTH PROTOCOLS
	044124	004737 	044300'			JSR	PC,..DTSP
  12004	044130				81$:
  12005	044130	105237 	031232'			INCB	.TKTN		;ASK FOR NOTIFICATION
  12006	044134					RETURN
	044134	000207 				RTS	PC
  12007	044136				85$:
  12008	044136	105737 	031230'			TSTB	.NOERR		; +001 IF REQUESTED,
  12009	044142	001015 				BNE	90$		; +001 IGNORE ERRORS
  12010	044144	032760 	000020 	000034 		BIT	#BPARER,STATD(R0) ;CHECK FOR E BUS PARITY ERROR
  12011					;
  12012					; **NOTE** E-BUS PARITY ERROR DOES NOT STOP THE -10. IF WE CHANGED THE
  12013					;	   PROTOCOL AT THIS POINT WITHOUT HALTING THE -10 WITH A FX 10
  12014					;	   HE WOULD TAKE NOTICE AND RELOAD US BEFORE WE COULD CORRECT
  12015					;	   HIM. AT SOME POINT THE FX 10 SHOULD BE INSERTED INTO THIS
  12016					;	   CODING TO RECOGNIZE THE ERROR.
  12017					;
  12018	044152	001353 				BNE	20$		;YES -- RECOGNIZE AS ERROR
  12019	044154	005060 	000030 			CLR	DAG1(R0)
  12020	044160	105737 	031231'			TSTB	.NOHLT		;+ IF HALTS ALLOWED
  12021	044164	001004 				BNE	90$		;+ THEN DON'T CHECK, OTHERWISE
  12022	044166	032760 	001000 	000030 		BIT	#DS06,DAG1(R0)	;CHECK FOR TEN STOPPED
  12023	044174	001346 				BNE	30$		;YES -- RECOGNIZE AS ERROR
  12024	044176				90$:
  12025	044176					RETURN
	044176	000207 				RTS	PC
SCOMM	- COMMON DATA AND SUBRO	MACRO M1108  16-DEC-77 11:28  PAGE 176
SCOMM MODULE -- SWFED	(START AND WAIT FOR EX/DEP)

  12027						.SBTTL	SCOMM MODULE -- SWFED	(START AND WAIT FOR EX/DEP)
  12028					;+
  12029					;	SWFED -- STARTS A DEPOSIT/EXAMINE SEQUENCE AND WAITS FOR
  12030					;	ITS COMPLETION.
  12031					;
  12032					;	NOTE: **** THIS ROUTINE MUST BE ENTERED AT PRI6 ****
  12033					;
  12034					;
  12035					;	CALLING SEQUENCE:
  12036					;
  12037					;	R0 -- ADDRESS OF DTE20
  12038					;	R1-- HIGH ORDER EXAMINE/DEPOSIT ADDRESS WORD (FOR TENAD1)
  12039					;	R2 -- LOW ORDER EXAMINE/DEPOSIT ADDRESS WORD (FOR TENAD2)
  12040					;	R3 -- ADDRESS TO XFER 3 WORD BLOCK TO OR FROM
  12041					;
  12042					;	CALL	SWFED
  12043					;
  12044					;	EXIT CONDITIONS:
  12045					;
  12046					;	SUCCESS NO REGISTERS ALTERED CC-C CLEAR
  12047					;
  12048					;	ERROR CONDITIONS:
  12049					;
  12050					;	CC-C SET
  12051					;-
  12052					;
  12053	044200	010346 			SWFED::	MOV	R3,-(SP)	;SAVE REGISTERS
  12054	044202	032701 	010000 			BIT	#DEP,R1		;CHECK FOR DEPOSIT
  12055	044206	001016 				BNE	20$		;YES -- GO TO DEPOSIT PART OF SUB
  12056	044210	010160 	000010 			MOV	R1,TNAD1(R0)	;SET UP ADDRESS OF XFER IN DTE
  12057	044214	010260 	000012 			MOV	R2,TNAD2(R0)	;START XFER
  12058	044220					CALL	WFED		;WAIT FOR EXAMINE/DEPOSIT
	044220	004737 	044012'			JSR	PC,WFED
  12059	044224	103423 				BCS	40$		;COMPLAIN ABOUT E BOX STOPPED
  12060	044226					MTPS	DXWD3(R0),(R3)+	;STORE THE WORD XFERED
	044226	016023 	000002 			MOV	DXWD3(R0),(R3)+
  12061	044232					MTPS	DXWD2(R0),(R3)+
	044232	016023 	000004 			MOV	DXWD2(R0),(R3)+
  12062	044236					MTPS	DXWD1(R0),(R3)+
	044236	016023 	000006 			MOV	DXWD1(R0),(R3)+
  12063	044242	000414 				BR	40$		;ALL DONE.
  12064
  12065	044244				20$:	MFPS	(R3)+,DXWD3(R0) ;TRANSFER TO 10
	044244	012360 	000002 			MOV	(R3)+,DXWD3(R0)
  12066	044250					MFPS	(R3)+,DXWD2(R0) ;SET UP WORD IN DTE
	044250	012360 	000004 			MOV	(R3)+,DXWD2(R0)
  12067	044254					MFPS	(R3)+,DXWD1(R0)
	044254	012360 	000006 			MOV	(R3)+,DXWD1(R0)
  12068	044260	010160 	000010 			MOV	R1,TNAD1(R0)	;SET HIGH ORDER ADDRESS
  12069	044264	010260 	000012 			MOV	R2,TNAD2(R0)
  12070	044270					CALL	WFED		;WAIT FOR EXAMINE/DEPOSIT
	044270	004737 	044012'			JSR	PC,WFED
  12071
  12072	044274	012603 			40$:	MOV	(SP)+,R3	;RESTORE R3
  12073	044276					RETURN			;RETURN TO CALLER
	044276	000207 				RTS	PC
SCOMM	- COMMON DATA AND SUBRO	MACRO M1108  16-DEC-77 11:28  PAGE 177
SCOMM MODULE -- ..DTSP	(STOP DTE PROTOCOLS)

  12075						.SBTTL	SCOMM MODULE -- ..DTSP	(STOP DTE PROTOCOLS)
  12076					;+
  12077					;
  12078					;	..DTSP -- SUBROUTINE TO TURN OFF PRIMARY AND SECONDARY PROTOCOLS.
  12079					;	THIS REQUIRES TURNING OFF THE DTE INTERRUPT.
  12080					;
  12081					;	CALLING SEQUENCE:
  12082					;	(NO REGISTERS USED)
  12083					;
  12084					;	CALL	..DTSP
  12085					;
  12086					;	EXIT CONDITIONS:
  12087					;
  12088					;	SUCCESS IS ASSURED, CC-C IS CLEARED
  12089					;
  12090					;	THERE ARE NO ERRORS
  12091					;
  12092					;-
  12093					;
  12094	044300				..DTSP::
  12095	044300	012777 	000010 	165046 		MOV	#INTROF,@.PRSTA	;;TURN OFF DTE INTERRUPTS
  12096	044306	042737 	060000 	031114'		BIC	#EF.PR1!EF.PR2,.COMEF+2 ;;AND PROTOCOLS
  12097	044314	000426 				BR	DTPXIT		;; +++010 AND EXIT
  12098						;
SCOMM	- COMMON DATA AND SUBRO	MACRO M1108  16-DEC-77 11:28  PAGE 178
SCOMM MODULE -- ..DTP2	(START SECONDARY PROTOCOL)

  12100						.SBTTL	SCOMM MODULE -- ..DTP2	(START SECONDARY PROTOCOL)
  12101					;+
  12102					;	..DTP2 -- SUBROUTINE TO TURN ON SECONDARY PROTOCOL.
  12103					;	A CHECK IS MADE TO MAKE SURE PRIMARY PROTOCOL IS OFF.
  12104					;
  12105					;	CALLING SEQUENCE:
  12106					;	(NO REGISTERS USED)
  12107					;
  12108					;	CALL	..DTP2
  12109					;
  12110					;	EXIT CONDITIONS:
  12111					;
  12112					;	SUCCESS IS ASSURED, CC-C IS CLEARED
  12113					;
  12114					;	THERE ARE NO ERRORS
  12115					;
  12116					;-
  12117					;
  12118	044316				..DTP2::
  12119	044316	032737 	040000 	031114'		BIT	#EF.PR1,.COMEF+2 ;;IF PRIMARY PROTOCOL IS ON,
  12120	044324	001402 				BEQ	10$		;;THEN
  12121	044326					CALL	..DTSP		;;TURN IT OFF
	044326	004737 	044300'			JSR	PC,..DTSP
  12122	044332				10$:
  12123	044332	012777 	004010 	165014 		MOV	#INTROF!INT11S,@.PRSTA ;;DISABLE INTERRUPTS
  12124	044340	052737 	020000 	031114'		BIS	#EF.PR2,.COMEF+2 ;;LET THE BOOT PROTOCOL TASK GO
  12125	044346	152737 	000001 	031116'		BISB	#EV.SE,.SERFG+0	;; +++007 DECLARE A SIGNIFICANT EVENT
  12126	044354	000406 				BR	DTPXIT		;; +++ 010 AND RETURN
  12127						;
SCOMM	- COMMON DATA AND SUBRO	MACRO M1108  16-DEC-77 11:28  PAGE 179
SCOMM MODULE -- ..DTP1 (START PRIMARY PROTOCOL)

  12129						.SBTTL	SCOMM MODULE -- ..DTP1 (START PRIMARY PROTOCOL)
  12130					;+
  12131					;	..DTP1 -- SUBROUTINE TO TURN ON PRIMARY PROTOCOL.
  12132					;
  12133					;	CALLING SEQUENCE:
  12134					;	(NO REGISTERS USED)
  12135					;
  12136					;	CALL	..DTP1
  12137					;
  12138					;	EXIT CONDITIONS:
  12139					;
  12140					;	ERROR CONDITIONS:
  12141					;
  12142					;-
  12143					;
  12144	044356				..DTP1::
  12145	044356	052737 	040000 	031114'		BIS	#EF.PR1,.COMEF+2 ;;ENABLE THE PROTOCOL TASK
  12146	044364	052737 	000001 	031116'		BIS	#EV.SE,.SERFG+0	;;THIS IS SIGNIFICANT
  12147	044372				DTPXIT:				;; +++010
  12148	044372	000241 				CLC			;;MAKE SURE CC-C
  12149	044374					RETURN			;;AND RETURN
	044374	000207 				RTS	PC
SCOMM	- COMMON DATA AND SUBRO	MACRO M1108  16-DEC-77 11:28  PAGE 180
SCOMM MODULE -- ..VXFR	(VALADATE TRANSFER)

  12151						.SBTTL	SCOMM MODULE -- ..VXFR	(VALADATE TRANSFER)
  12152					;+
  12153					;
  12154					;
  12155					;	..VXFR -- ROUTINE TO VALADATE A USER'S TRANSFER REQUEST
  12156					;		..VXFR CHECKS TO SEE IF A USER'S REQUEST TO TRANSFER
  12157					;		INTO OR OUT OF HIS SPACE IS LEGAL.
  12158					;		..VXFR WILL CHECK TO SEE THAT TRANSFER'S ACROSS VIRTUAL
  12159					;		BOUNDS ARE ALSO TRANSFER'S IN CONTIGUOUS CORE.
  12160					;		THIS MEANS THAT AFTER VALIDATION A HANDLER
  12161					;		TASK DOES NOT HAVE TO WORRY ABOUT
  12162					;		THE VALIDITY OF TRANSFERING A CONTIGUOUS BLOCK
  12163					;		OF CORE INTO THE USER'S AREA.
  12164					;		..VXFR WILL ALSO RETURN TO THE CALLER THE PHYSICAL
  12165					;		18 BIT ADDRESS OF THE USER'S BUFFER.  ..VXFR
  12166					;		WILL NOT LET THE USER TRANSFER INTO READONLY SPACE
  12167					;		IF THE DIRECTION SPECIFIED BY THE HANDLER
  12168					;		IS WRITE.
  12169					;
  12170					;
  12171					;	CALLING SEQUENCE:
  12172					;		R1 -- REQUEST NODE ADDRESS
  12173					;		R2 -- STARTING ADDRESS (VIRTUAL)
  12174					;		R3 -- TRANSFER LENGTH
  12175					;		CALL	..VXFR
  12176					;
  12177					;		EXIT CONDITIONS:
  12178					;		R4 -- HIGH ORDER ADDRESS (BITS 4,5)
  12179					;		R5 -- LOW ORDER ADDRESS
  12180					;
  12181					;		ERROR EXIT -- C BIT SET
  12182					;-
  12183					;
  12184					;
  12185					;
  12187	044376	010205 			..VXFR::MOV	R2,R5		;IF NOT KT11 THEN JUST RETURN CURRENT ADDRESS
  12188	044400	005004 				CLR	R4
  12189	044402					RETURN
	044402	000207 				RTS	PC
SCOMM	- COMMON DATA AND SUBRO	MACRO M1108  16-DEC-77 11:28  PAGE 181
SCOMM MODULE -- ..BLXO	(BLOCK OUTPUT) ..BLXI  (BLOCK INPUT)

  12297						.SBTTL	SCOMM MODULE -- ..BLXO	(BLOCK OUTPUT) ..BLXI  (BLOCK INPUT)
  12298					;+
  12299					;
  12300					;
  12301					;	..BLXO -- ROUTINE TO PASS INFORMATION TO A USER'S PARTITION
  12302					;		..BLXO VALIDATES THE TRANSFER OF THE REQUEST TO
  12303					;		TRANSFER TO OR FROM A HANDLER TASK'S AREA.
  12304					;
  12305					;		..BLXI -- ROUTINE TO PASS INFORMATION FROM A USER'S
  12306					;			PARTITION.  ..BLXO VALIDATES THE TRANSFER OF THE
  12307					;			REQUEST TO TRANSFER TO A HANDLER TASK'S AREA.
  12308					;
  12309					;
  12310					;	CALLING SEQUENCE:
  12311					;		R1 -- REQUEST NODE ADDRESS
  12312					;		R2 -- STARTING ADDRESS (VIRTUAL)
  12313					;		R3 -- TRANSFER LENGTH (BYTES)
  12314					;		R4 -- HANDLER VIRTUAL ADDRESS
  12315					;		CALL	..BLXO  OR CALL ..BLXI
  12316					;
  12317					;	EXIT CONDITIONS
  12318					;		CC -- C BIT SET
  12319					;
  12320					;	NOTE -- RESTRICTED TO 4K-64 (10) WORD TRANSFER'S
  12321					;-
  12322					;
  12323					;
  12324					;
  12325					;
  12326	044404	010446 			..BLXI::MOV	R4,-(SP)
  12327	044406	010546 				MOV	R5,-(SP)
  12328	044410	012705 	000001 			MOV	#1,R5		;SET DIRECTION OF TRANSFER TO  IN
  12329	044414	000403 				BR	BLXCOM		;AND ENTER COMMON CODE
  12330					;
  12331	044416	010446 			..BLXO::MOV	R4,-(SP)	;SAVE THE REGISTERS
  12332	044420	010546 				MOV	R5,-(SP)
  12333	044422	005005 				CLR	R5		;INDICATE TRANSFER OUT
  12334	044424	010546 			BLXCOM:	MOV	R5,-(SP)	;SAVE THE DIRECTION OF TRANSFER
  12335	044426					CALL	..VXFR		;VALADATE TRANSFER
	044426	004737 	044376'			JSR	PC,..VXFR
  12348	044432	010346 				MOV	R3,-(SP)	;SAVE R3
  12353	044434	016604 	000006 			MOV	6(SP),R4	;SET UP THE FROM ADDRESS
  12354	044440	005766 	000002 			TST	2(SP)
  12356	044444	001403 				BEQ	BLXPLP		;DIRECTION OK FOR OUTPUT --DO TRANSFER
  12363	044446	010546 				MOV	R5,-(SP)
  12364	044450	010405 				MOV	R4,R5
  12365	044452	012604 				MOV	(SP)+,R4
  12367	044454	112425 			BLXPLP:	MOVB	(R4)+,(R5)+	;MOVE A BYTE
  12368	044456	077302 				SOB	R3,BLXPLP	;YES -- FINISHED?
  12369	044460	012603 				MOV	(SP)+,R3	;RESTORE R3
  12374									;CLEAR C BIT TO INDICATE LEGAL TRANSFER
  12375	044462	005726 				TST	(SP)+		;REMOVE THE DIRECTION WORD FROM THE STACK
  12376	044464	012605 			BLXRTN:	MOV	(SP)+,R5	;RESTORE REGISTERS
  12377	044466	012604 				MOV	(SP)+,R4
  12378	044470					RETURN			;RETURN TO CALLER
	044470	000207 				RTS	PC
  12379					;
SCOMM	- COMMON DATA AND SUBRO	MACRO M1108  16-DEC-77 11:28  PAGE 181-1
SCOMM MODULE -- ..BLXO	(BLOCK OUTPUT) ..BLXI  (BLOCK INPUT)

  12380	044472	005726 			ILBLT:	TST	(SP)+		;REMOVE THE DIRECTION WORD
  12381	044474	000261 				SEC			;SET C TO INDICATE XFER BAD
  12382	044476	000772 				BR	BLXRTN		;AND RETURN TO CALLER
SCOMM	- COMMON DATA AND SUBRO	MACRO M1108  16-DEC-77 11:28  PAGE 182
SCOMM MODULE -- ..VTOL	(MAP VIRTUAL TO LOGICAL BLOCK, EXTERNAL

  12385						.SBTTL	SCOMM MODULE -- ..VTOL	(MAP VIRTUAL TO LOGICAL BLOCK, EXTERNAL)
  12386
  12387					;+
  12388					;
  12389					;CALL:	JSR	PC,..VTOL	;CLOSED, RETURN IN-LINE
  12390					;
  12391					;IN:	R1 - POINTER TO REQUEST NODE, CONTAINING:
  12392					;	R.AT - ATL OF CALLING TASK
  12393					;	R.LU - LUN HAVING WINDOW IN LUT(N2)
  12394					;	R.FC - I/O FUNCTION CODE, VIRTUAL READ OR WRITE
  12395					;	R.PB+6,+10 - VIRTUAL BLOCK NUMBER TO MAP
  12396					;
  12397					;OUT:	C=0 - MAPPING SUCCESSFUL
  12398					;	R1 - POINTER TO REQUEST NODE, CONTAINING
  12399					;	R.FC - I/O FUNCTION CODE, LOGICAL READ OR WRITE
  12400					;	R.PB+6,+10 - LOGICAL BLOCK NUMBER MAPPED
  12401					;
  12402					;	C=1 MAPPING FAILURE
  12403					;
  12404					;NOTE:	THIS LIBRARY ROUTINE USES THE FOLLOWING
  12405					;	OTHER LIBRARY ROUTINES---
  12406					;
  12407					;	..SPD3 - SWAP PAGE-3 DESCRIPTORS, EXEC FUNCTION
  12408					;	..VVLL - INTERNAL VIRTUAL TO LOGICAL FILE FUNCTION
  12409					;
  12410					;-
  12411
  12412	044500				..VTOL::
  12413	044500	010046 				MOV	R0,-(SP)	;SAVE WORKING REGISTERS
  12414	044502	010146 				MOV	R1,-(SP)
  12415	044504	010246 				MOV	R2,-(SP)
  12416	044506	010346 				MOV	R3,-(SP)
  12417	044510	010446 				MOV	R4,-(SP)
  12418
  12419					; GET WINDOW POINTER FROM LUT(N2) IN TASK HEADER
  12420
  12421	044512	010104 				MOV	R1,R4		; SAVE POINTER TO REQUEST NODE
  12422	044514	016402 	000006 			MOV	R.AT(R4),R2	; POINT TO ATL NODE
  12423	044520	116403 	000012 			MOVB	R.LU(R4),R3	; GET LUN
  12424	044524	006303 				ASL	R3
  12425	044526	006303 				ASL	R3
  12426	044530	066203 	000012 			ADD	A.HA(R2),R3	;!!!!!DOESN'T WORK IF MACY11 CONDITIONAL IS OFF
  12427	044534	016301 	000130 			MOV	H.LUT(R3),R1 ; GET WINDOW POINTER FROM LUT
  12428	044540	001441 				BEQ	30$		; NO WINDOW, NO MAP....
  12429	044542	030127 	000001 			BIT	R1,#1		; SEE IF WINDOW POINTER IS ODD
  12430	044546	001036 				BNE	30$		; ECCCHH!
  12431
  12432					; SEE IF THIS IS A READ OR WRITE AND CHECK PERMISSIONS APPROPRIATELY.
  12433
  12434	044550	012746 	001000 			MOV	#IO.RLB,-(SP)	; SET UP FOR A READ
  12435	044554	026427 	000014 	010400 		CMP	R.FC(R4),#IO.RVB ; SEE IF IT IS A READ
  12436	044562	001405 				BEQ	10$		; YES
  12437	044564	012716 	000400 			MOV	#IO.WLB,(SP)	; NO, MUST BE A WRITE
  12438	044570	031127 	001000 			BIT	(R1),#WI.WRV	; SEE IF THE FILE IS WRITE ACCESSED
  12439	044574	001422 				BEQ	20$		; IF NOT, CAN'T WRITE IT
  12440
  12441					; NOW DO THE MAPPING ALREADY
SCOMM	- COMMON DATA AND SUBRO	MACRO M1108  16-DEC-77 11:28  PAGE 182-1
SCOMM MODULE -- ..VTOL	(MAP VIRTUAL TO LOGICAL BLOCK, EXTERNAL

  12442
  12443	044576	016400 	000026 		10$:	MOV	R.PB+2(R4),R0	; GET BYTE COUNT
  12444	044602	016402 	000032 			MOV	R.PB+6.(R4),R2	; HIGH ORDER VBN
  12445	044606	016403 	000034 			MOV	R.PB+8.(R4),R3	; LOW ORDER VBN
  12446	044612					CALL	..VVLL		; CALL THE MAPPER
	044612	004737 	044662'			JSR	PC,..VVLL
  12447	044616	103411 				BCS	20$		; NO SUCH LUCK
  12448	044620	005700 				TST	R0		; CHECK IF MAPPING IS COMPLETE
  12449	044622	001007 				BNE	20$		; NO
  12450
  12451					; SUCCESSFUL MAPPING - TURN THE NODE INTO A LOGICAL TRANSFER
  12452
  12453	044624	010264 	000032 			MOV	R2,R.PB+6.(R4)	; SET HIGH ORDER LBN
  12454	044630	010364 	000034 			MOV	R3,R.PB+8.(R4)	; SET LOW ORDER LBN
  12455	044634	012664 	000014 			MOV	(SP)+,R.FC(R4)	; SET FUNCTION CODE
  12456	044640	000402 				BR	40$
  12457
  12458	044642	005726 			20$:	TST	(SP)+		; CLEAN THE STACK
  12459	044644	000261 			30$:	SEC			; SET FAILURE
  12460	044646	012604 			40$:	MOV	(SP)+,R4	;RESTORE REGISTERS
  12461	044650	012603 				MOV	(SP)+,R3
  12462	044652	012602 				MOV	(SP)+,R2
  12463	044654	012601 				MOV	(SP)+,R1
  12464	044656	012600 				MOV	(SP)+,R0
  12465	044660					RETURN
	044660	000207 				RTS	PC
SCOMM	- COMMON DATA AND SUBRO	MACRO M1108  16-DEC-77 11:28  PAGE 183
SCOMM MODULE -- ..VVLL	(MAP VIRTUAL TO LOGICAL BLOCK, INTERNAL

  12467						.SBTTL	SCOMM MODULE -- ..VVLL	(MAP VIRTUAL TO LOGICAL BLOCK, INTERNAL)
  12468
  12469					;+
  12470					;
  12471					;CALL:	JSR	PC,..VVLL	;CLOSED, RETURN IN-LINE
  12472					;
  12473					;IN:	R0 - NUMBER OF BYTES IN TRANSFER
  12474					;	R1 - ADDRESS OF WINDOW
  12475					;	R2,R3 - VBN TO MAP
  12476					;
  12477					;OUT:	SUCCESS - C=0
  12478					;	R0 - NUMBER OF BLOCKS NOT MAPPED
  12479					;	R2,R3 - LOGICAL BLOCK NUMBER DESIRED
  12480					;
  12481					;	FAILURE - C=1
  12482					;	R0,R2,R3 - GARBAGED
  12483					;
  12484					;NOTE:	THIS ROUTINE MAKES NO EXTERNAL CALLS.
  12485					;	THIS ROUTINES IS USED BY---
  12486					;
  12487					;	..VTOL	EXTERNAL VIRTUAL TO LOGICAL MAPPER
  12488					;		WINDOW TURN FILE CONTROL PRIMITIVE
  12489					;		INDEX FILE FILE CONTROL UTILITY
  12490					;
  12491					;-
  12492
  12493	044662				..VVLL::
  12494	044662	010146 				MOV	R1,-(SP)	;SAVE WORKING REGISTERS
  12495	044664	010446 				MOV	R4,-(SP)
  12496	044666	010546 				MOV	R5,-(SP)
  12497	044670					.INH0			; INHIBIT TASK SWITCHING
	044670	013746 	177776 			MOV	@#PS,-(SP)
	044674	112737 	000140 	177776 		MOVB	#140,@#PS
  12498	044702	062700 	000777 			ADD	#511.,R0	;; ROUND UP BYTE COUNT TO NEXT BLOCK
  12499	044706	006000 				ROR	R0		;; RECOVER CARRY
  12500	044710	105000 				CLRB	R0		;; CLEAR FRACTIONAL PART
  12501	044712	000300 				SWAB	R0		;; AND CONVERT TO BLOCK COUNT
  12502
  12503					; GET STARTING VBN OF CURRENT WINDOW
  12504
  12505	044714	111104 				MOVB	(R1),R4		;; GET COUNT OF RETRIEVAL POINTERS
  12506	044716	001417 				BEQ	40$		;; EMPTY WINDOW
  12507	044720	062701 	000006 			ADD	#W.VBN,R1	;; POINT TO STARTING VBN IN WINDOW
  12508	044724	012105 				MOV	(R1)+,R5	;; GET HIGH ORDER VBN
  12509	044726	042705 	177400 			BIC	#177400,R5	;; MASK OFF HIGH BYTE
  12510	044732	160502 				SUB	R5,R2		;; SUBTRACT FROM DESIRED VBN
  12511	044734	162103 				SUB	(R1)+,R3	;; SUBTRACT LOW ORDER
  12512	044736	005602 				SBC	R2		;; AND THE CARRY
  12513	044740	002406 				BLT	40$		;; WINDOW IS PAST VBN - OUT
  12514
  12515					; NOW SCAN THE WINDOW FOR THE DESIRED VBN
  12516
  12517	044742	161103 			10$:	SUB	(R1),R3		;; ACCUMULATE BLOCK COUNT
  12518	044744	005602 				SBC	R2
  12519	044746	103407 				BLO	20$		;; BRANCH IF WE GO BELOW ZERO
  12520	044750	062701 	000006 			ADD	#6,R1		;; SKIP OVER THIS RETRIEVAL POINTER
  12521	044754	077406 				SOB	R4,10$		;; AND LOOP FOR RETRIEVAL POINTERS
SCOMM	- COMMON DATA AND SUBRO	MACRO M1108  16-DEC-77 11:28  PAGE 183-1
SCOMM MODULE -- ..VVLL	(MAP VIRTUAL TO LOGICAL BLOCK, INTERNAL

  12522	044756				40$:	.ENB0			;; OUT OF POINTERS - VBN IS BEYOND WINDOW
	044756	004737 	041526'			JSR	PC,..ENB0
  12523	044762	000261 				SEC			;SET FAILURE
  12524	044764	000430 				BR	50$		;RETURN
  12525					;
  12526					; FOUND THE RIGHT RETRIEVAL POINTER - COMPUTE LBN
  12527					;
  12528	044766	010305 			20$:	MOV	R3,R5		;; R5 = - (BLOCKS IN THIS EXTENT PAST VBN)
  12529									;; COMPUTE NUMBER OF CONTIGUOUS BLOCKS
  12530	044770	005405 				NEG	R5		;; STARTING AT DESIRED VBN
  12531	044772	062103 				ADD	(R1)+,R3	;; COMPUTE LBN OFFSET IN THIS EXTENT
  12532	044774	005502 				ADC	R2
  12533	044776	062102 				ADD	(R1)+,R2	;; GET HIGH ORDER LBN
  12534	045000	062103 				ADD	(R1)+,R3	;; AND LOW ORDER LBN
  12535	045002	005502 				ADC	R2
  12536	045004	160500 				SUB	R5,R0		;; SEE IF THE TRANSFER LIES WITHIN THIS EXTENT
  12537	045006	101413 				BLOS	25$		;; YES
  12538
  12539	045010	005304 				DEC	R4		;; SEE IF THERE IS ANOTHER POINTER
  12540	045012	001412 				BEQ	30$		;; NO
  12541	045014	020021 				CMP	R0,(R1)+	;; SEE IF REMAINDER OF TRANSFER LIES IN NEXT EXTENT
  12542	045016	101010 				BHI	30$		;; NO
  12543	045020	060305 				ADD	R3,R5		;; COMPUTE END LBN + 1
  12544	045022	010204 				MOV	R2,R4
  12545	045024	005504 				ADC	R4		;; COMPUTE HIGH ORDER
  12546	045026	020421 				CMP	R4,(R1)+	;; SEE IF NEXT EXTENT IS CONTIGUOUS WITH THIS ONE
  12547	045030	001003 				BNE	30$		;; NO
  12548	045032	020521 				CMP	R5,(R1)+	;; COMPARE LOW ORDER
  12549	045034	001001 				BNE	30$		;; NO
  12550
  12551	045036	005000 			25$:	CLR	R0		;; TRANSFER IS COMPLETELY MAPPED
  12552	045040				30$:	.ENB0			; ENABLE TASK SWITCHING
	045040	004737 	041526'			JSR	PC,..ENB0
  12553	045044	000241 				CLC			; SET SUCCESS
  12554	045046	012605 			50$:	MOV	(SP)+,R5	; RESTORE REGISTES
  12555	045050	012604 				MOV	(SP)+,R4
  12556	045052	012601 				MOV	(SP)+,R1
  12557	045054					RETURN
	045054	000207 				RTS	PC
  12559		040262'				.END	INITLM
SCOMM	- COMMON DATA AND SUBRO	MACRO M1108  16-DEC-77 11:28  PAGE 183-2
SYMBOL TABLE

ACKNOW  015164RG 	BIT0  = 000001   	CR$BF1= 021214RG 	DEXCOM  002760R  	DIAG2 = 174432
AF.PP = 000200 G 	BIT1  = 000002   	CR$BO2= 021632RG 	DEXDON= 000004   	DIAG3 = 174436
ASXCMN  003274R  	BIT10 = 002000   	CR$B03= 043740RG 	DEXST   031204RG 	DIALUP  014700RG
ASXDT   003150R  	BIT11 = 004000   	CR$CBR= 007164RG 	DEXTM1  031212RG 	DIKL10= 000010
ASXEXT  003464R  	BIT12 = 010000   	CR$DTB= 020734RG 	DEXTM2  031210RG 	DIRDPT  002532R
ASXE1   003124RG 	BIT13 = 020000   	CR$DTD= 001234RG 	DEXTM3  031206RG 	DIRMAX= 000102
ASXE2   003140R  	BIT14 = 040000   	CR$DTF= 020266RG 	DEXWD1= 174406   	DIROK   002526R
ASXLRF  003310R  	BIT15 = 100000   	CR$ETE= 020662RG 	DEXWD2= 174404   	DIV216  041262RG
ASXLRQ  003346R  	BIT2  = 000004   	CR$FTA= 001136RG 	DEXWD3= 174402   	DLCNT = 000005 G
ASXSCN  003136R  	BIT3  = 000010   	CR$IAS= 004356RG 	DE.01 = 000377 G 	DLECNT= 000004 G
ASXTE   003756R  	BIT4  = 000020   	CR$ILF= 014702RG 	DE.02 = 000376 G 	DLETBL  035136RG
ASXWR0  003176R  	BIT5  = 000040   	CR$ILQ= 022026RG 	DE.03 = 000375 G 	DLINT   026414RG
ASXWR1  003206R  	BIT6  = 000100   	CR$LRF= 003342RG 	DE.04 = 000374 G 	DLSTOP  015650R
ASXWR2  003216R  	BIT7  = 000200   	CR$MPE= 001300RG 	DE.05 = 000373 G 	DLTBL   035126RG
ASXWR3  003226R  	BIT8  = 000400   	CR$PT1= 021146RG 	DE.06 = 000372 G 	DLTMP   022652R
ASXWR4  003236R  	BIT9  = 001000   	CR$PT2= 021172RG 	DE.07 = 000371 G 	DLYCNT= 174400
A.EF  = 000020 G 	BLXCOM  044424R  	CR$PT3= 021570RG 	DE.08 = 000370 G 	DL.CAR= 010000 G
A.FB  = 000015 G 	BLXPLP  044454R  	CR$PT4= 022156RG 	DE.09 = 000367 G 	DL.CTS= 020000 G
A.FM  = 000024 G 	BLXRTN  044464R  	CR$RES= 001242RG 	DE.10 = 000366 G 	DL.DEN= 000040 G
A.HA  = 000012 G 	BPARER= 000020   	CR$TBT= 001250RG 	DE.11 = 000365 G 	DL.DSC= 100000 G
A.PD  = 000006 G 	BPTTRP  001246R  	CR$TET= 020242RG 	DE.80 = 000260 G 	DL.DTR= 000002 G
A.PF  = 000034 G 	BTPHD   005352RG 	CR$T04= 001212RG 	DE.81 = 000257 G 	DL.FER= 020000 G
A.RP  = 000010 G 	BTPRO   005652R  	CR$UIE= 021520RG 	DE.90 = 000246 G 	DL.RAC= 004000 G
A.SP  = 000004 G 	BYCNT   022722R  	CSDONE  004126R  	DE.91 = 000245 G 	DL.RDE= 000001 G
A.SZ  = 000036 G 	CDD   = 000020   	CS.EXP= 177670   	DE.92 = 000244 G 	DL.RDN= 000200 G
A.TD  = 000016 G 	CDRTPD  033336R  	CTLO  = 000040   	DE.93 = 000243 G 	DL.REN= 000100 G
A.TS  = 000014 G 	CDTSK   032756RG 	CTRLC   022730R  	DE.94 = 000242 G 	DL.RNG= 040000 G
BAUDTB  026174R  	CESCHK  011014R  	CTRLU   022734R  	DE.95 = 000241 G 	DL.RTS= 000004 G
BC.AKA= 000025 G 	CHNPNT= 000001   	CTRLZ   022740R  	DE.96 = 000240 G 	DL.SRD= 002000 G
BC.BTP= 000024 G 	CHTBL   026162R  	CTYPTR  031220RG 	DE.97 = 000237 G 	DL.STD= 000010 G
BC.DES= 000010 G 	CH.FOR= 000100 G 	CTYSTS  022660R  	DE.98 = 000236 G 	DL.UNA= 001420 G
BC.EDR= 000027 G 	CH.LAB= 000001 G 	CURBF = 000006   	DE.99 = 000235 G 	DL.XEN= 000100 G
BC.FNM= 000034 G 	CH.NAT= 000020 G 	CYCLS = 000002   	DFTBL   014612RG 	DMTBL   035062RG
BC.FOD= 000013 G 	CH.NDC= 000010 G 	C.AS  = 000002 G 	DFTSZ = 000066   	DMTMP   022650R
BC.HAD= 000002 G 	CH.OFF= 000200 G 	C.AT  = 000000 G 	DFUNC = 000200   	DMYN  = 000004 G
BC.HDS= 000007 G 	CH.UNL= 000040 G 	C.FA  = 000012 G 	DF.DMG= 000004   	DON10C= 040000
BC.HTD= 000012 G 	CMEDP   010270R  	C.FM  = 000010 G 	DF.DMN= 000007   	DON10S= 100000
BC.LDR= 000030 G 	CMNABO  001100RG 	C.RS  = 000006 G 	DF.DOR= 000001   	DON11C= 000100
BC.LDV= 000031 G 	CMNABT  002656R  	C.SD  = 000004 G 	DF.EHG= 000010   	DON11S= 000200
BC.LNC= 000004 G 	CMSG    001510R  	C.SZ  = 000014 G 	DF.EHM= 000011   	DPCMN   010264R
BC.NSA= 000032 G 	CNT     022720R  	C1    = 140010   	DF.EMG= 000005   	DPKAL   022776R
BC.RDS= 000005 G 	CNUPE = 000002   	C1DB  = 140110   	DF.EMN= 000006   	DPMSEP  010316R
BC.RQD= 000001 G 	COMBSE  031370RG 	DAG1  = 000030   	DF.KLR= 000012   	DPSEC   010314R
BC.RTD= 000011 G 	COMTRP  001000R  	DAG2  = 000032   	DF.KLW= 000013   	DPS4  = 040000
BC.SAK= 000017 G 	COPBUF  020054RG 	DAG3  = 000036   	DF.KLX= 000014   	DQNXT   023556R
BC.SDS= 000006 G 	CRADR   022724R  	DATE  = 000004   	DF.OFF= 000002   	DRESET= 000100
BC.SKP= 000033 G 	CRHD  = ****** GX	DBLRNG  021364R  	DF.ON = 000003   	DRXCOM  002774R
BC.SLA= 000023 G 	CRJT  = 001000   	DBLSTS  021456R  	DF.PDP= 000016   	DRXRR   003006R
BC.SNA= 000014 G 	CROBAR  007132RG 	DBLXIT  021452R  	DF.PEX= 000015   	DR.DTE= 000011
BC.SPT= 000026 G 	CRSTB   001160R  	DCOMST= 000001   	DHBUF = 000020   	DR.00 = 000000 G
BC.STR= 000003 G 	CRSTK = ****** GX	DEAND1  016170R  	DHCNT = 000200 G 	DR.01 = 000001 G
BC.STS= 000022 G 	CRTBL = ****** GX	DEAND2  016164R  	DHSAV   027232R  	DR.02 = 000002 G
BC.TDU= 000015 G 	CRTNXA  004204R  	DEAND3  015160R  	DHSTSV  022656R  	DR.03 = 000003 G
BC.THU= 000016 G 	CRTNX1  004176R  	DEANOD  017304R  	DHTBL   035176RG 	DSEND = 000004
BC.XOF= 000020 G 	CRTNX2  004204R  	DEP   = 010000   	DHTMP   022654R  	DS.99   002524R
BC.XON= 000021 G 	CRTNX3  004206R  	DEPOF   031374RG 	DH.FER= 020000 G 	DS04  = 004000
BITTBL  042572RG 	CRTY  = 002000   	DEX   = 000400   	DIAG1 = 174430   	DS05  = 002000
SCOMM	- COMMON DATA AND SUBRO	MACRO M1108  16-DEC-77 11:28  PAGE 183-3
SYMBOL TABLE

DS06  = 001000   	D.FM  = 000002 G 	E.FPR1= 000077 G 	F.SIZE  000032   	IE.FOP= 177713
DTEADR  031702RG 	D.SZ  = 000005 G 	E.FPR2= 000076 G 	F.STAT  000040   	IE.HFU= 177744
DTECMD= 000451   	D1011 = 000040   	E.FRKP= 000075 G 	F.STD   000004   	IE.HWR= 177772
DTEDSP  007620R  	EBSEL = 000100   	E.FSND= 000040 G 	F.UCHA  000020   	IE.IDU= 177644
DTEFLG= 000444   	EBUSPC= 000020   	E.FW  = 000010 G 	F11TPD  033436RG 	IE.IEF= 177637
DTEF11= 000450   	EBUSPS= 000004   	E.IOD = 000005 G 	GENTPD  033456R  	IE.IFC= 177776
DTEHD   014174RG 	ECHOB   025262R  	E.LS  = 000002 G 	HANGUP  014756RG 	IE.IFU= 177747
DTEMSK  031700RG 	EDONES= 040000   	E.NIR = 000004 G 	HIBYTE= 177400   	IE.ILL= 177726
DTEMTD= 000455   	EDRMT   014706RG 	E.OPSZ= 000140 G 	HICTS   016500RG 	IE.ILU= 177640
DTEMTI= 000456   	EF.BOV= 000040 G 	E.RKH = 000013 G 	HIDVST  016710RG 	IE.INS= 177776
DTENM = 000000   	EF.CLK= 000002 G 	E.RKR = 000012 G 	HORPS = 000016   	IE.IPR= 177641
DTESP   014454RG 	EF.CRI= 002000 G 	E.RQM = 000010 G 	H.CSP = 000000 G 	IE.ISQ= 177703
DTETPD  033236RG 	EF.CTC= 100000 G 	E.RSS = 000014 G 	H.DSW = 000046 G 	IE.ITI= 177643
DTETSK  032556RG 	EF.DTE= 000001 G 	E.TMO = 000007 G 	H.FCP = 000050 G 	IE.ITS= 177770
DTEXIT  020216R  	EF.IOD= 000020 G 	E.TTY = 000003 G 	H.FOR = 000052 G 	IE.LCK= 177745
DTPXIT  044372R  	EF.NIR= 000010 G 	E.WFM = 000011 G 	H.HSZ = 000002 G 	IE.LNL= 177646
DTTSK   033016RG 	EF.PFR= 004000 G 	FC.CEF= 020000   	H.IPC = 000076 G 	IE.MBK= 177721
DUPE  = 000020   	EF.PR1= 040000 G 	FC.DIR= 040000   	H.IPS = 000074 G 	IE.MOD= 177753
DURE  = 000004   	EF.PR2= 020000 G 	FC.FCO= 010000   	H.ISP = 000100 G 	IE.NBF= 177731
DVCH  = 110220   	EF.RKH= 002000 G 	FC.WAC= 100000   	H.LUT = 000130 G 	IE.NBK= 177727
DV.EOF= 000040 G 	EF.RKP= 010000 G 	FDVNM   016772R  	H.OVL = 000054 G 	IE.NFI= 177704
DV.F11= 000400 G 	EF.RKR= 001000 G 	FDVNMM  016756R  	H.TKVA= 000106 G 	IE.NLN= 177733
DV.HNG= 001000 G 	EF.RQM= 000200 G 	FEHD  = ****** GX	IE.ABO= 177761   	IE.NNC= 177674
DV.IOP= 000020 G 	EF.RSS= 004000 G 	FESTK = ****** GX	IE.ACT= 177771   	IE.NOD= 177751
DV.LIN= 002000 G 	EF.SND= 100000 G 	FETBL = ****** GX	IE.ADP= 177636   	IE.NSF= 177746
DV.LOG= 000100 G 	EF.TED= 000100   	FETPD   033256R  	IE.ALN= 177736   	IE.OFL= 177677
DV.NXD= 000001 G 	EF.TMO= 000100 G 	FETSK   033016RG 	IE.AST= 177660   	IE.ONP= 177773
DV.OFL= 000002 G 	EF.TTY= 000004 G 	FE0PUD  040142RG 	IE.BAD= 177777   	IE.OVR= 177756
DV.OIR= 000004 G 	EF.WFM= 000400 G 	FILTB   022744R  	IE.BBE= 177710   	IE.PRI= 177760
DV.SCN= 000010 G 	EHSG  = 000006 G 	FLBT  = 000001   	IE.BDI= 177714   	IE.RAC= 177724
DV.URE= 000200 G 	EHSM  = 000010 G 	FLBYT = 000011   	IE.BDR= 177716   	IE.RAT= 177723
DWNMS   002306R  	EMGSTK  040370RG 	FLCT  = 000017   	IE.BDV= 177711   	IE.RBG= 177730
DWNMSG  002274R  	EMTSTK  031200RG 	FLDVOT  017314RG 	IE.BHD= 177700   	IE.RCN= 177722
DWNMSZ= 000043   	EMTTRP  002352RG 	FNBYT = 000005   	IE.BLK= 177754   	IE.RER= 177740
DXHD  = ****** GX	EMYN  = 000002 G 	FNDCPU  010730R  	IE.BNM= 177712   	IE.RNM= 177715
DXSTK = ****** GX	EM.DRO= 000020 G 	FNDDTE  010762R  	IE.BTF= 177675   	IE.RSU= 177757
DXTPD   033376R  	EOLS  = 000400   	FNDSPD  015726R  	IE.BTP= 177725   	IE.SDP= 177635
DXTSK   033056RG 	EPTR  = 000000   	FORPRO= 000020   	IE.BVR= 177701   	IE.SNC= 177735
DXWD1 = 000006   	EQSZ    031746RG 	FW    = 000300   	IE.BYT= 177755   	IE.SPC= 177772
DXWD2 = 000004   	ERR10C= 010000   	F.DREF  000042   	IE.CKP= 177766   	IE.SQC= 177734
DXWD3 = 000002   	ERR10S= 020000   	F.DRNM  000044   	IE.CKS= 177742   	IE.SRE= 177762
DXWRD1= 002000   	ERR11C= 000001   	F.FEXT  000002   	IE.CLO= 177732   	IE.STK= 177706
DX0PEN  037752RG 	ERR11S= 000002   	F.FNUM  000006   	IE.CON= 177752   	IE.ULN= 177773
DX1PEN  040022RG 	EV.AS = 000002 G 	F.FOWN  000014   	IE.DAA= 177770   	IE.UPN= 177777
D.AT  = 000000 G 	EV.PF = 000200 G 	F.FPRO  000016   	IE.DAO= 177763   	IE.VER= 177774
D.CCDR= 000006 G 	EV.SE = 000001 G 	F.FSEQ  000010   	IE.DFU= 177750   	IE.WAC= 177743
D.CCLK= 000007 G 	EXCMN   010324R  	F.FSQN  000013   	IE.DNA= 177771   	IE.WAT= 177741
D.CCPU= 000200 G 	EXKAL   022764R  	F.FVBN  000046   	IE.DNR= 177775   	IE.WER= 177737
D.CCTY= 000001 G 	E.BOV = 000006 G 	F.HDLB  000022   	IE.DUN= 177767   	IE.WLK= 177764
D.CDH1= 000003 G 	E.CLK = 000002 G 	F.LBN   000026   	IE.DUP= 177707   	IE.2DV= 177720
D.CDLS= 000004 G 	E.DTE = 000001 G 	F.LGTH  000052   	IE.EBX= 177776   	IFLOP = 100000
D.CDL1= 000002 G 	E.DV  = 000006 G 	F.LINK  000000   	IE.EOF= 177766   	IGNO    035060R
D.CKLE= 000201 G 	E.FCRI= 000073 G 	F.NACS  000036   	IE.EOT= 177702   	ILBLT   044472R
D.CKLN= 000210 G 	E.FCTC= 000100 G 	F.NLCK  000037   	IE.EOV= 177765   	INDTTF  020406R
D.CLPT= 000005 G 	E.FN  = 000004 G 	F.NWAC  000040   	IE.EXP= 177676   	INIAN   043712RG
D.FA  = 000004 G 	E.FP  = 000000 G 	F.RVN   000012   	IE.FEX= 177717   	INITLM  040262RG
D.FEPD= 000010 G 	E.FPFR= 000074 G 	F.SCHA  000021   	IE.FHE= 177705   	INPPT   025202R
SCOMM	- COMMON DATA AND SUBRO	MACRO M1108  16-DEC-77 11:28  PAGE 183-4
SYMBOL TABLE

INPT0   025214R  	IO.RAL= 001010   	KBB0  = 177562 G 	K.LSKL= 000001 G 	PRS0  = 177564 G
INPT1   025660R  	IO.RAT= 013000   	KBB1  = 175612 G 	K.LUND= 000000 G 	PRS1  = 175614 G
INSHD = ****** GX	IO.RBC= 003000   	KBS0  = 177560 G 	K.LUSR= 177777 G 	PRTOFF= 004000
INSTAL= ****** GX	IO.RCI= 015000   	KBS1  = 175610 G 	LDLPR   016710RG 	PRVCM   010642R
INSTK = ****** GX	IO.RCV= 015000   	KLCST   010406R  	LDLPV   016710RG 	PR0   = 000000
INSTPD  033216RG 	IO.RDB= 001200   	KLNLGL= 000016 G 	LFBT  = 004000   	PR1   = 000040
INTLPS  020142R  	IO.RDN= 000022   	KLNPLN= 000026 G 	LFCT  = 074000   	PR2   = 000100
INTROF= 000010   	IO.REL= 013400   	KLNPTR  031222RG 	LINCHR  017114RG 	PR3   = 000140
INTRON= 000040   	IO.RHD= 001010   	KLPWRF= 000010   	LKS   = 177546 G 	PR4   = 000200
INTSON= 000001   	IO.RLB= 001000   	KL.CFL= 000400 G 	LOAD11= 000004   	PR5   = 000240
INT10S= 000400   	IO.RLV= 001100   	KL.CFM= 000002 G 	LOWCOD= 000000RG 	PR6   = 000300
INT11C= 002000   	IO.RNA= 005400   	KL.LCA= 000100 G 	LPHD  = ****** GX	PR7   = 000340 G
INT11S= 004000   	IO.RNC= 001004   	KL.LRM= 000001 G 	LPSTK = ****** GX	PS    = 177776 G
IOTTRP  001304R  	IO.RNE= 001020   	KL.LVB= 000004 G 	LPTBL = ****** GX	PSWW1 = 000005
IO.ACE= 007400   	IO.RTC= 003400   	KL.SPF= 000040 G 	LPTPD   033316R  	PSWW10= 000014
IO.ACR= 006400   	IO.RTI= 016400   	KL.VBD= 000020 G 	LPTSK   032716RG 	PSWW11= 000015
IO.ACW= 007000   	IO.RTK= 000060   	KL.VBN= 000010 G 	LP0PUD  040072RG 	PSWW12= 000016
IO.ADS= 014000   	IO.RVB= 010400   	KPAL0   031760RG 	L.DT0 = 000003 G 	PSWW13= 000017
IO.APC= 014000   	IO.RWD= 002400   	KPAL1   031770RG 	L.DX0 = 000005 G 	PSWW2 = 000006
IO.APV= 014010   	IO.RWU= 002540   	KPAR0 = 172360   	L.DX1 = 000006 G 	PSWW3 = 000007
IO.ATT= 001400   	IO.R1C= 002400   	KPAR1 = 172362   	L.RP4 = 000002 G 	PSWW4 = 000010
IO.CCI= 014000   	IO.SAO= 004000   	KPAR2 = 172364   	L.TTY = 000001 G 	PSWW5 = 000011
IO.CCT= 002460   	IO.SCS= 013000   	KPAR3 = 172366   	MBUFR = 000014   	PSWW6 = 000012
IO.CLN= 003400   	IO.SDI= 013000   	KPAR4 = 172370   	MEBUF = 000012   	PSWW7 = 000013
IO.CON= 015400   	IO.SDO= 012400   	KPAR5 = 172372   	MECNT = 000010   	PULSE = 000020
IO.CRC= 001020   	IO.SEC= 002520   	KPAR6 = 172374   	MODE  = 100000   	PWRXSP  040402RG
IO.CRE= 012000   	IO.SEM= 002440   	KPAR7 = 172376   	MPE11 = 001000   	PWR.UP  007134RG
IO.CTI= 015400   	IO.SHT= 002410   	KPDR0 = 172300   	NOSNDA  014716RG 	QNDSV   012566R
IO.CTL= 016400   	IO.SLO= 005400   	KPDR1 = 172302   	NTKXEN  002064R  	QPRDTC  014474RG
IO.DAC= 010000   	IO.SMO= 002560   	KPDR2 = 172304   	NTKXEP  002070R  	QPRDTE  014502RG
IO.DCI= 014400   	IO.SNM= 002450   	KPDR3 = 172306   	NTKXSP  002044RG 	QPRDTF  017310R
IO.DCT= 002470   	IO.SPB= 002420   	KPDR4 = 172310   	NULHD   001564RG 	QPRDTL  014536R
IO.DEL= 012400   	IO.SPF= 002440   	KPDR5 = 172312   	NULSTP= 000040   	QPROAD  007004R
IO.DET= 002000   	IO.SSO= 004400   	KPDR6 = 172314   	NULTSK  033156RG 	QPROMS  006762R
IO.DIS= 016000   	IO.SST= 002430   	KPDR7 = 172316   	NUPE  = 000002   	QPRTPD  033356R
IO.DTI= 016000   	IO.STC= 002500   	KS.CES= 000002 G 	N.BP  = 000002 G 	QPRTSK  033116RG
IO.ENA= 006000   	IO.STP= 016400   	KS.CST= 000020 G 	N.FP  = 000000 G 	QSIZE = 000023
IO.EOF= 003000   	IO.SYN= 003040   	KS.DEX= 000010 G 	N.OVPT= 000054 G 	Q.AK  = 000012 G
IO.ESA= 002500   	IO.TRM= 002410   	KS.EPE= 000004 G 	N.PR  = 000010 G 	Q.DA  = 000000 G
IO.EXT= 011400   	IO.UNL= 000042   	KS.PFT= 000100 G 	OKPAL0  031766RG 	Q.DZ  = 000016 G
IO.FDX= 003020   	IO.WAT= 013400   	KS.TRR= 000040 G 	OUTPT   025010R  	Q.D1  = 000006 G
IO.FNA= 004400   	IO.WLB= 000400   	KS.TSP= 000001 G 	OUTPT3  024730R  	Q.IOAE= 000012
IO.HDX= 003010   	IO.WLS= 000410   	K.LBPW= 000005 G 	PARLOA  007502R  	Q.IOEF= 000006
IO.HIS= 015000   	IO.WLV= 000500   	K.LCKL= 177777 G 	PARSAV  040372RG 	Q.IOFN= 000002
IO.INL= 002400   	IO.WVB= 011000   	K.LCON= 000004 G 	PATSIZ= 000040 G 	Q.IOLU= 000004
IO.ITI= 017000   	IO.XMT= 014400   	K.LDCM= 000001 G 	PERCLR= 001000   	Q.IOPL= 000014
IO.KIL= 000012   	IO.XNA= 014410   	K.LDRP= 177777 G 	PHYS  = 100000   	Q.IOPR= 000007
IO.LED= 012000   	IQ.Q  = 000002   	K.LDSC= 000003 G 	PIDENT= 000000   	Q.IOSB= 000010
IO.LOV= 001010   	IQ.X  = 000001   	K.LLTO= 000006 G 	PKT     022726R  	Q.SI  = 000004 G
IO.LTK= 000050   	IS.BV = 000005   	K.LRAC= 000001 G 	POLMIN= 001400 G 	Q.SP  = 000006 G
IO.MCS= 013400   	IS.CLR= 000000   	K.LRBA= 000007 G 	PRB0  = 177566 G 	Q.ST  = 000004 G
IO.MDA= 016000   	IS.CR = 006401   	K.LRMN= 000003 G 	PRB1  = 175616 G 	Q.SZ  = 000020 G
IO.MDI= 014400   	IS.ESC= 015401   	K.LRNG= 000002 G 	PRI7  = 000340 G 	Q.TS  = 000002 G
IO.MDO= 015400   	IS.PND= 000000   	K.LROP= 000001 G 	PRMBLK  012574R  	RAMIS0= 010000
IO.MLO= 006000   	IS.RDD= 000002   	K.LRPR= 000002 G 	PRMEMN  031372RG 	RCVKLP  017352RG
IO.MOD= 003000   	IS.SET= 000002   	K.LRRJ= 177777 G 	PROPNT= 000021   	RESERV  001240R
IO.MSO= 005000   	IS.SUC= 000001   	K.LSCK= 000001 G 	PROTBL  031376RG 	RETTOD  017240RG
SCOMM	- COMMON DATA AND SUBRO	MACRO M1108  16-DEC-77 11:28  PAGE 183-5
SYMBOL TABLE

RFMAD0= 100000   	SF.TA = 000001 G 	S.STBK= 000012   	TRP4    001170R  	T.HCAD= 000004 G
RFMAD1= 040000   	SKX     012624R  	S.SZ  = 000036 G 	TS.EXT= 000026 G 	T.HCBC= 000006 G
RFMAD2= 020000   	SNDALL  017430RG 	S.TD  = 000004 G 	TS.LRF= 000006 G 	T.HFCN= 000007 G
RFMAD3= 010000   	SNDMSG  002351R  	S.TN  = 000000 G 	TS.LRQ= 000002 G 	T.HHDS= 000010 G
RF.XR = 000002 G 	SPDTBL  015760R  	S.TZ  = 000016 G 	TS.RUN= 000010 G 	T.HP  = 000012 G
RM    = 000010   	SPDTBZ= 000016   	TBIT  = 000020 G 	TS.SUS= 000012 G 	T.HRED= 000000 G
RMBYT = 000004   	SPSAV   040370RG 	TENAD1= 174410   	TS.TKN= 000004 G 	T.PN  = 000000 G
RPHD  = ****** GX	STAT  = 174434   	TENAD2= 174412   	TS.WF0= 000014 G 	T.PZ  = 000006 G
RPPEN   037252RG 	STATD = 000034   	TF.OU = 000002 G 	TS.WF1= 000016 G 	T.RAPB= 000004 G
RPSTK = ****** GX	STATI   031752RG 	THRED = 000000 G 	TS.WF2= 000020 G 	T.RAPE= 000012 G
RPTPD   033416R  	STATS = 000000   	TMOCNT  023006R  	TS.WF3= 000022 G 	T.RAPF= 000016 G
RPTSK   032656RG 	STATUS= 000022   	TNAD1 = 000010   	TS.WF4= 000024 G 	T.RAPI= 000006 G
RQKLD   023044R  	STCM    043152R  	TNAD2 = 000012   	TTACK   024660RG 	T.RAPM= 000002 G
RQKLR   023026R  	STDCDR  032412R  	TN.EMT= 000012 G 	TTCNT = 000205 G 	T.RAPR= 000010 G
RQMCR   023010R  	STDDTE  032052R  	TN.LRF= 000040 G 	TTCTY   026552R  	T.RAPT= 000014 G
RQSPB   013466R  	STDDX   032152R  	TN.TRP= 000014 G 	TTERLG  031102R  	T.RAP4= 000000 G
RQSPT   013462RG 	STDFED  032112R  	TOBM  = 000004   	TTINI   023062RG 	T.RB  = 000016 G
RQSTD   013500R  	STDF11  032212R  	TOD   = 000003   	TTINO   024122R  	T.RF  = 000014 G
RSX$$E= 000012   	STDINS  032312RG 	TOELDN  020656R  	TTINPA  026234R  	T.SZ  = 000020 G
RSX$$F= 000102   	STDLPT  032352R  	TOIP  = 000002   	TTINPB  026304R  	T10AD = 000020
RSX$$K= 000126   	STDQPR  032512R  	TOIT  = 000001   	TTINX   024116R  	T11AD = 000022
RSX$$V= 000012   	STDRPT  032252R  	TOITDN  020574R  	TTLGE   020112R  	T11BC = 000016
RTDVST  016710RG 	STDTTY  032452R  	TOTNDN  020236R  	TTLOGE  031106R  	UC.CCL= 000002 G
RTNTOD  016626RG 	STDVST  016710RG 	TO10  = 000200   	TTOUTR  024656R  	UC.COM= 020000 G
RUBP  = 000020   	STEIF   021026R  	TO10AD= 174420   	TTOUTX  024650R  	UC.DIR= 000010 G
R$$11D= 000001   	STLN    043206R  	TO10AS  031732RG 	TTPEN   037202RG 	UC.ETB= 000100 G
R.AS  = 000020 G 	STNTQ   022166RG 	TO10BC= 174414   	TTSAV   027270R  	UC.F11= 040000 G
R.AT  = 000006 G 	STNXT   024402R  	TO10BM= 000001   	TTSTCH  026270R  	UC.INB= 000400 G
R.DP  = 000011 G 	STOPDL  015642R  	TO10DB= 000400   	TTTBL   035126RG 	UC.ISP= 002000 G
R.FC  = 000014 G 	STPLIN  015520RG 	TO10DN= 100000   	TTUNT   020116R  	UC.MNT= 100000 G
R.FN  = 000013 G 	STQUE   021050R  	TO10DT= 174424   	TTWLO   022756R  	UC.PSE= 010000 G
R.LU  = 000012 G 	STRBF = 000002   	TO10ER= 020000   	TTYDNE  025116R  	UC.REC= 000001 G
R.PB  = 000024 G 	STRDAT  016710RG 	TO10Q   031742RG 	TTYDNX  025164R  	UC.SDI= 000020 G
R.PR  = 000010 G 	STSTT   031734RG 	TO10QC= 031740RG 	TTYEND= 037176RG 	UC.SQD= 000040 G
R.QSGC= 000015   	STSW0 = 000004 G 	TO10SZ  031730RG 	TTYEXP= 000002 G 	UC.SWL= 001000 G
R.QSPC= 000014   	STSW1 = 000006 G 	TO11  = 000100   	TTYHD   022350RG 	UC.TTY= 000004 G
R.QSPN= 000006   	STTOIP  020602R  	TO11AD= 174422   	TTYSP   022630RG 	UC.0SP= 004000 G
R.QSPR= 000012   	STTYDN  024244R  	TO11AS  031724RG 	TTYTPD  033276R  	UF.OFL= 000040 G
R.QSTN= 000002   	STTYO   024576R  	TO11BC= 174416   	TTYTSK  032616RG 	UF.RD = 000040 G
R.SB  = 000016 G 	STXAS = 000000 G 	TO11BM= 020000   	TT.ABL= 010000 G 	UF.RH = 000200 G
R.TD  = 000004 G 	STXCS = 000000 G 	TO11BS  031726RG 	TT.ABW= 000010 G 	UF.TL = 000100 G
R.UI  = 000022 G 	STXDX = 000000 G 	TO11DB= 004000   	TT.CRW= 000004 G 	UNASG1= 000032
SCD   = 000040   	SWFED   044200RG 	TO11DN= 000200   	TT.CTY= 000400 G 	UNASG2= 000033
SETDHL  016454R  	SWR   = 177570   	TO11DT= 174426   	TT.ECH= 000002 G 	UNASG3= 000034
SETDNE  020652R  	SWSLLT= 100000   	TO11DV  031712RG 	TT.L3S= 000020 G 	UNASG4= 000035
SETLIN  015176RG 	SY0PUD  040212RG 	TO11ER= 000002   	TT.NSA= 004000 G 	UNASG5= 000036
SETSPD  015212RG 	S.BA  = 000012 G 	TO11FN  031710RG 	TT.OUT= 000001 G 	UNASG6= 000037
SEXCM   011334R  	S.DI  = 000011 G 	TO11FW  031716RG 	TT.RIP= 002000 G 	UNRGFN  014700RG
SEXP0   011342R  	S.DL  = 000032 G 	TO11GW  031720RG 	TT.RMT= 000100 G 	UPAR0 = 177640
SEXP1   011424R  	S.DP  = 000010 G 	TO11HD  031706RG 	TT.SIP= 001000 G 	UPAR1 = 177642
SEXP2   011324R  	S.FW  = 000006 G 	TO11NP  031704RG 	TT.SND= 140000 G 	UPAR2 = 177644
SEX97   011426R  	S.LZ  = 000014 G 	TO11Q   031750RG 	TT.SNI= 040000 G 	UPAR3 = 177646
SF.EX = 000004 G 	S.PC  = 000020 G 	TO11QC= 031741RG 	TT.VT5= 000040 G 	UPAR4 = 177650
SF.FX = 000002 G 	S.RB  = 000026 G 	TO11QP  031722RG 	TT.XOF= 000200 G 	UPAR5 = 177652
SF.IR = 040000 G 	S.RF  = 000024 G 	TO11SP  031714RG 	T.BA  = 000004 G 	UPAR6 = 177654
SF.PT = 000001 G 	S.SP  = 000022 G 	TRPASV  031202RG 	T.FW  = 000010 G 	UPAR7 = 177656
SF.ST = 100000 G 	S.SS  = 000030 G 	TRPXIT  001142R  	T.HBCT= 000002 G 	UPDR0 = 177600
SCOMM	- COMMON DATA AND SUBRO	MACRO M1108  16-DEC-77 11:28  PAGE 183-6
SYMBOL TABLE

UPDR1 = 177602   	V.WISZ  000020   	$RX11 = 000001   	.DLHUP  030016RG 	.INHDM  031362RG
UPDR2 = 177604   	WEP   = 000010   	$TOP20= 000001   	.DLTMO  030142RG 	.INICL= 070000
UPDR3 = 177606   	WFED    044012RG 	$TTINP  026216RG 	.DMHUP  027712RG 	.INTEN= 000100 G
UPDR4 = 177610   	WFXSET  003276R  	$TTOUT  024530RG 	.DMTMO  030414RG 	.IRLTC= 014000
UPDR5 = 177612   	WI.BPS= 100000   	$UNIT   031224RG 	.DOW    031253RG 	.KALSC= 000005 G
UPDR6 = 177614   	WI.DLK= 010000   	$$    = 000037   	.DQDH0  034720RG 	.KLERW  031310RG
UPDR7 = 177616   	WI.EXT= 002000   	$$MSG = 000000   	.DQDLS  034740RG 	.KLFLG  031350RG
UT.LG = 000004 G 	WI.LCK= 004000   	$$$   = 033462R  	.DQPBA  034660RG 	.KLITK  031234RG
UT.PR = 000001 G 	WI.RDV= 000400   	$$$ARG= 000011   	.DQPEA  035060RG 	.KLIWD  031236RG
UT.SL = 000002 G 	WI.WRV= 001000   	$$$OST= 000016   	.DQPSZ= 000010 G 	.KLNBC  031314RG
U.ACP = 000040 G 	WTLODT  014166R  	$$$T1 = 000000   	.DRLTC= 015000   	.KLNFD  031320RG
U.AF  = 000014 G 	W.CTL   000000   	.ABCNT  031364RG 	.DRSRN  002666RG 	.KLNFT  031316RG
U.AR  = 000034 G 	W.FCB   000002   	.ABFLG  031366RG 	.DR.NS  002774RG 	.KLNLB  031314RG
U.CH  = 000032 G 	W.RTRV  000012   	.ACKAL  031302RG 	.DSACF= 066000   	.KLNMD  031332RG
U.C1  = 000004 G 	W.STD   000004   	.ATLLH  032552RG 	.DSIOJ= 065000   	.KLNPB  031312RG
U.C2  = 000006 G 	W.VBN   000006   	.BGBST= 076000 G 	.DST    031252RG 	.KLNPE= 031334RG
U.C3  = 000010 G 	W.WISZ  000007   	.BGBUF  033476RG 	.DTESZ= 000005 G 	.KLNPT  031222RG
U.C4  = 000012 G 	XOFF    016014RG 	.BGLEN= 002000 G 	.DTINT  020126RG 	.KLNPW  031334RG
U.DACP= 000036 G 	XON     016174RG 	.BM873= 173000 G 	.D.ASS  011040RG 	.KLNSW  031342RG
U.DN  = 000000 G 	X.X94   005166R  	.BRCLK= 005000   	.D.CEF  011310RG 	.KLNTD  031326RG
U.FB  = 000003 G 	X.X95   005170R  	.BRKCH  031214RG 	.D.CMT  011730RG 	.KLNTT  031324RG
U.FO  = 000043 G 	X8X97   040470RG 	.BTPRM  031276RG 	.D.DSE  011344RG 	.KLRLD  031346RG
U.GC  = 000031 G 	X9X96   005244R  	.BTSCH  031300RG 	.D.DTE  007524RG 	.KPAC   031776RG
U.HA  = 000020 G 	ZSTOP = 040000   	.BTSTK  005632RG 	.D.EXT  012104RG 	.KW11S  025750RG
U.LBH = 000044 G 	$BTMSK  031226RG 	.CECLK= 004000   	.D.GLI  011144RG 	.LCRDL= 052000
U.LBN = 000046 G 	$CDINT= ****** GX	.CEFN   040404RG 	.D.GMP  013624RG 	.LCRDR= 051000
U.PC  = 000030 G 	$CD11 = 000001   	.CEFN3  040410RG 	.D.GPP  013502RG 	.LCRM1= 057000
U.PR  = 000042 G 	$DBDTE= 000001   	.CKASS  031122RG 	.D.GTP  011174RG 	.LCRM2= 056000
U.RB  = 000024 G 	$DHINP  025754RG 	.CKDEL  040472RG 	.D.MKT  011626RG 	.LCRM3= 055000
U.RF  = 000022 G 	$DHOUT  024126RG 	.CLKBA  034452RG 	.D.PUT  013232RG 	.LCRM4= 054000
U.RP  = 000016 G 	$DH11 = 000001   	.CLKEA  034656RG 	.D.QIO  012126RG 	.LCRM5= 053000
U.SZ  = 000050 G 	$DIV  = ****** GX	.CLKSW  031242RG 	.D.RAF  011404RG 	.LDAR = 077000
U.TF  = 000042 G 	$DMINT  027506RG 	.CLKSZ= 000007 G 	.D.REC  013052RG 	.LDBRL= 043000
U.UI  = 000030 G 	$DORBL  007656RG 	.CLRMR= 006000   	.D.REF  011370RG 	.LDBRR= 042000
U.UN  = 000002 G 	$DPMYG  010262RG 	.CLRUN= 010000   	.D.REQ  013254RG 	.LDCK1= 046000
U.VA  = 000026 G 	$DPMYN  010336RG 	.COMEF  031112RG 	.D.RES  012010RG 	.LDCK2= 047000
U.VP  = 000032 G 	$DSW  = 000046 G 	.CONBT= 012000   	.D.ROE  013052RG 	.LDDIS= 045000
VC.BMW= 000002   	$DTE  = 000001   	.CPDV   031666RG 	.D.ROS  013052RG 	.LDRJD= 064000
VC.IFW= 000001   	$DTEOF  007660RG 	.CPFN   031664RG 	.D.SAR  012614RG 	.LDRJV= 063000
V.FCB   000006   	$DTEON  007672RG 	.CRHD   031674RG 	.D.SEF  011326RG 	.LDRM1= 060000
V.FFNU  000055   	$DXINT= ****** GX	.CRPB   031672RG 	.D.SEN  012600RG 	.LDRM2= 061000
V.FIEX  000025   	$EXHSG  010344RG 	.CRPFL= ****** GX	.D.STV  013220RG 	.LDRM3= 062000
V.FMAX  000016   	$EXHSM  010352RG 	.CRQZ   031662RG 	.D.SUS  011776RG 	.LDSEL= 044000
V.FPRO  000030   	$EXMYG  010320RG 	.CRSB   031676RG 	.D.WFL  011506RG 	.LPPFL= ****** GX
V.FRBK  000034   	$EXMYN  010330RG 	.CRSND  031660RG 	.D.WFO  011432RG 	.MEMRS= 076000
V.IBLB  000012   	$FE   = 000001   	.CRSZ   031670RG 	.D.WFS  011430RG 	.MON    031251RG
V.IBSZ  000013   	$F11  = 000001   	.CRTSK  031110RG 	.D.WSE  011614RG 	.MSIZE  031166RG
V.IFWI  000002   	$KLDFC  010540RG 	.CSHRG= 164000   	.EIOJA= 067000   	.NOERR  031230RG
V.LABL  000040   	$KLDFR  010360R  	.CTYPT  031220RG 	.EXEND= ****** GX	.NOHLT= 031231RG
V.LGTH  000056   	$KLDFW  010516RG 	.CYLTM= 000074 G 	.FEACK= ****** GX	.PARER  001254R
V.LRUC  000035   	$KLDFX  010472RG 	.DATE   031244RG 	.FEACT  031306RG 	.PARRG= 172100 G
V.SBCL  000021   	$LPINT= ****** GX	.DATE3  031244RG 	.FEMOD  031344RG 	.PAT..  001524RG
V.SBLB  000024   	$LP20 = 000001   	.DAY    031250RG 	.FEPPU  005066RG 	.PCAB1= 150000
V.SBSZ  000022   	$PRVDP  010654RG 	.DBINT= ****** GX	.FEST = ****** GX	.PCAB2= 151000
V.STAT  000054   	$PRVEX  010616RG 	.DHSPD  027430RG 	.FREPL  033502RG 	.PCAB3= 152000
V.STD   000004   	$RP04 = 000001   	.DHSPF  027400RG 	.FSRPT= 000050 G 	.PCAB4= 153000
V.TRCT  000000   	$RWDRG  010676RG 	.DHSPR  027354RG 	.GFNR = 102000   	.PDP11= 000050
SCOMM	- COMMON DATA AND SUBRO	MACRO M1108  16-DEC-77 11:28  PAGE 183-7
SYMBOL TABLE

.PFAIL  040376RG 	.REQS   004362RG 	.SNDLP  031636RG 	.TPDEA  033476RG 	..FSTD  041562RG
.PFASS  031124RG 	.RPADR  031170RG 	.SSCLK= 002000   	.TTP11  031216RG 	..INTX  004146RG
.PFIOW  040400RG 	.RPSIZ  031174RG 	.SSM    031254RG 	.VCLUN  005172RG 	..IODN  040534RG
.PFRST  007342RG 	.RPUNT  031304RG 	.SSTCO  002642RG 	.VERNO  031264RG 	..IPRI  041346RG
.POLLH  033506RG 	.RP1PE  037322RG 	.SSTET  002634RG 	.WRMBX= 071000   	..NADD  041422RG
.POLND  034412R  	.RP2PE  037372RG 	.STAST  005246RG 	.X.02   012622R  	..NDEL  041306RG
.POLST  033512R  	.RP3PE  037442RG 	.STDTA  032000RG 	.YEAR   031246RG 	..PICK  041464RG
.PRADR  031352RG 	.RP4PE  037512RG 	.STDTB  032006RG 	..AKCR= ****** GX	..SACK  043166RG
.PRDCT  031360RG 	.RP5PE  037562RG 	.STDTC  032002RG 	..AKLP= ****** GX	..SEFN  041200RG
.PRDTE  031356RG 	.RP6PE  037632RG 	.STDTZ  032004RG 	..ALCB  041642RG 	..SPLP= ****** GX
.PRSTA  031354RG 	.RP7PE  037702RG 	.STPCL= 000000   	..ALC2  041656RG 	..STCH  043112RG
.PUDBA  037202RG 	.RQESD  005056RG 	.STRCL= 001000   	..ALOW  042164RG 	..STCR= ****** GX
.PUDEA  040262RG 	.RQSPD  016672RG 	.STTYD  027650RG 	..BLXI  044404RG 	..STFC  043252RG
.PWRDN  007006RG 	.SECLK= 003000   	.STTYH  027654RG 	..BLXO  044416RG 	..STIN  043442RG
.RCRM1= 147000   	.SEND   012746RG 	.SYUIC  031262RG 	..DECB  042012RG 	..STLP= ****** GX
.RCRM2= 146000   	.SERFG  031116RG 	.TICK   013756RG 	..DECN  042006RG 	..STPT  042632RG
.RCRM3= 145000   	.SETMR= 007000   	.TICKS  031240RG 	..DEC2  042002RG 	..STQ   043630RG
.RCRM4= 144000   	.SETRN= 011000   	.TKPS   031260RG 	..DQRN  040656RG 	..STTY  042204RG
.RCSPF= 141000   	.SEWFL  031120RG 	.TKTN   031232RG 	..DTP1  044356RG 	..VTOL  044500RG
.RDJ14= 134000   	.SNDAL  017436RG 	.TKTN.  002256R  	..DTP2  044316RG 	..VVLL  044662RG
.RDJ71= 135000   	.SNDBF  031640RG 	.TOD.   002240R  	..DTSP  044300RG 	..VXFR  044376RG
.RDMAB= 133000   	.SNDCN  031650RG 	.TPDBA  033216RG 	..ENB0  041526RG 	...GBL= 000000

. ABS.	000056	   000
      	045056	   001
ERRORS DETECTED:  0

VIRTUAL MEMORY USED:  16850 WORDS  ( 66 PAGES)
DYNAMIC MEMORY:  17888 WORDS  ( 68 PAGES)
ELAPSED TIME:  00:29:12
,[100,20]RSXTOPS20.LST/-SP/CRF=[100,30]RSXTOPS20.TMP
RSXTOPS20  CREATED BY  MACRO  ON 16-DEC-77 AT 11:44	PAGE 1

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

ACKNOW	  015164 RG	 96-6831   #98-6939   
AF.PP 	= 000200  G	#14-932    
ASXCMN	  003274 R	 32-1732    32-1737    32-1742    32-1747   #32-1758   
ASXDT 	  003150 R	 31-1689   #31-1691   
ASXEXT	  003464 R	 31-1720   #35-1809   
ASXE1 	  003124 RG	#31-1676    36-1905    38-2127    151-10670 
ASXE2 	  003140 R	 28-1587   #31-1688    33-1770    35-1890   
ASXLRF	  003310 R	 31-1702   #33-1766    34-1779   
ASXLRQ	  003346 R	 31-1698   #34-1776   
ASXSCN	  003136 R	#31-1687    31-1700    31-1706    32-1758    34-1777   
ASXTE 	  003756 R	 31-1704    32-1761    34-1804   #36-1901   
ASXWR0	  003176 R	 31-1710   #32-1731   
ASXWR1	  003206 R	 31-1712   #32-1736   
ASXWR2	  003216 R	 31-1714   #32-1741   
ASXWR3	  003226 R	 31-1716   #32-1746   
ASXWR4	  003236 R	 31-1718   #32-1751   
A.EF  	= 000020  G	#14-901     32-1731    32-1736    32-1751    32-1753   *34-1776    34-1796   *39-2219   *39-2271   
                        *39-2275   *43-2548    71-4389    71-4390   *80-5392   *96-6797   *114-7934   119-8420  *119-8421  
                        *126-8872  *128-9205  *129-9242  *132-9502  *135-9650   137-9818   146-10431  152-10745 *156-10916 
                        *156-10964  157-11015 
A.FB  	= 000015  G	#14-899    
A.FM  	= 000024  G	*6-383     #14-903     32-1731    32-1736    32-1741    32-1746    32-1751    32-1753    32-1755   
                         32-1757   *33-1766    34-1778   *39-2256   *72-4456    73-4522   *73-4548   *79-5041    156-10960 
A.HA  	= 000012  G	#14-897     34-1781    36-1918    36-1933    41-2391    91-6396    182-12426 
A.PD  	= 000006  G	 6-386     #14-895     33-1769    35-1815    91-6395    92-6516   
A.PF  	= 000034  G	#14-907    *39-2219   *88-6132    88-6135   
A.RP  	= 000010  G	#14-896     80-5261    91-6405   
A.SP  	= 000004  G	#14-893    *34-1801   *36-1931    36-1932    42-2445   
A.SZ  	= 000036  G	#14-909    
A.TD  	= 000016  G	 6-372     #14-900     28-1351    28-1519    34-1802    35-1814    78-4951    80-5321    82-5626   
                         82-5652    86-5880    87-6043    91-6394   
A.TS  	= 000014  G	*6-384     #14-898     31-1688   *32-1760   *33-1767   *34-1780   *72-4457   *73-4535   *73-4547   
                        *77-4893    78-4954   *78-4957   *79-5040    82-5654   *82-5656   
BAUDTB	  026174 R	 127-9132  #127-9152  
BC.AKA	= 000025  G	#95-6772    120-8472  
BC.BTP	= 000024  G	#95-6771    103-7318  
BC.DES	= 000010  G	#95-6759   
BC.EDR	= 000027  G	#95-6774   
BC.FNM	= 000034  G	#95-6779    114-7967  
BC.FOD	= 000013  G	#95-6762   
BC.HAD	= 000002  G	#95-6753    103-7299  
BC.HDS	= 000007  G	#95-6758    137-9810  
BC.HTD	= 000012  G	#95-6761    104-7329   120-8479  
BC.LDR	= 000030  G	#95-6775   
BC.LDV	= 000031  G	#95-6776   
BC.LNC	= 000004  G	#95-6755    170-11704 
BC.NSA	= 000032  G	#95-6777   
BC.RDS	= 000005  G	#95-6756   
BC.RQD	= 000001  G	#95-6752   
BC.RTD	= 000011  G	#95-6760   
BC.SAK	= 000017  G	#95-6766    105-7429   171-11733 
BC.SDS	= 000006  G	#95-6757   
RSXTOPS20  CREATED BY  MACRO  ON 16-DEC-77 AT 11:44	PAGE 2

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

BC.SKP	= 000033  G	#95-6778    103-7311  
BC.SLA	= 000023  G	#95-6770    120-8468  
BC.SNA	= 000014  G	#95-6763   
BC.SPT	= 000026  G	#95-6773   
BC.STR	= 000003  G	#95-6754   
BC.STS	= 000022  G	#95-6769   
BC.TDU	= 000015  G	#95-6764    133-9580  
BC.THU	= 000016  G	#95-6765    134-9616   135-9658  
BC.XOF	= 000020  G	#95-6767   
BC.XON	= 000021  G	#95-6768   
BITTBL	  042572 RG	 102-7232   102-7244   125-8760   152-10739  157-11016  168-11559 #168-11562 
BIT0  	= 000001	#4-224     #9-674     #42-2523   #43-2784   #46-2985   #94-6729   #118-8248   118-8334  #139-9954  
BIT1  	= 000002	#4-224     #9-674     #42-2523   #43-2784   #46-2985   #94-6729   #118-8248   118-8333  #139-9954  
BIT10 	= 002000	#4-224     #9-674     #42-2523   #43-2784   #46-2985   #94-6729   #118-8248   118-8327  #139-9954  
BIT11 	= 004000	#4-224     #9-674     #42-2523   #43-2784   #46-2985   #94-6729   #118-8248   118-8326  #139-9954  
BIT12 	= 010000	#4-224     #9-674     #42-2523   #43-2784   #46-2985   #94-6729   #118-8248   118-8325  #139-9954  
BIT13 	= 020000	#4-224     #9-674     #42-2523   #43-2784   #46-2985   #94-6729   #118-8248   118-8324   118-8339  
                         118-8347  #139-9954  
BIT14 	= 040000	#4-224     #9-674     #42-2523   #43-2784   #46-2985   #94-6729    99-6961    99-7025   #118-8248  
                         118-8323  #139-9954  
BIT15 	= 100000	#4-224     #9-674     #42-2523    43-2548   #43-2784   #46-2985   #94-6729   #118-8248   118-8322  
                         132-9501  #139-9954  
BIT2  	= 000004	#4-224     #9-674     #42-2523   #43-2784   #46-2985   #94-6729   #118-8248   118-8332  #139-9954  
BIT3  	= 000010	#4-224     #9-674     #42-2523   #43-2784   #46-2985   #94-6729   #118-8248   118-8331  #139-9954  
BIT4  	= 000020	#4-224     #9-674     #42-2523   #43-2784   #46-2985   #94-6729   #118-8248   118-8335  #139-9954  
BIT5  	= 000040	#4-224     #9-674     #42-2523   #43-2784   #46-2985   #94-6729   #118-8248   118-8330  #139-9954  
BIT6  	= 000100	#4-224     #9-674     #42-2523   #43-2784   #46-2985   #94-6729   #118-8248   118-8329   118-8343  
                        #139-9954  
BIT7  	= 000200	#4-224     #9-674     #42-2523   #43-2784   #46-2985   #94-6729   #118-8248   118-8328  #139-9954  
BIT8  	= 000400	#4-224     #9-674     #42-2523   #43-2784   #46-2985   #94-6729   #118-8248   118-8335  #139-9954  
BIT9  	= 001000	#4-224     #9-674     #42-2523   #43-2784   #46-2985   #94-6729   #118-8248   118-8335  #139-9954  
BLXCOM	  044424 R	 181-12329 #181-12334 
BLXPLP	  044454 R	 181-12356 #181-12367  181-12368 
BLXRTN	  044464 R	#181-12376  181-12382 
BPARER	= 000020	#4-224     #9-674     #42-2523   #43-2784   #46-2985   #94-6729   #118-8248  #139-9954   175-12010 
BPTTRP	  001246 R	 6-404     #6-425     
BTPHD 	  005352 RG	#43-2543    142-10283  143-10333  144-10364 
BTPRO 	  005652 R	 43-2544    43-2544   #43-2546    43-2649    43-2736   
BYCNT 	  022722 R	#118-8368  *122-8554   122-8588   126-8855  *126-8857  
CDD   	= 000020	#4-224     #9-674     #42-2523   #43-2784   #46-2985   #94-6729   #118-8248  #139-9954  
CDRTPD	  033336 R	 142-10278  143-10310 #144-10361 
CDTSK 	  032756 RG	 143-10305 #143-10310 
CESCHK	  011014 R	 57-3512    57-3512    57-3537    57-3537    57-3544    57-3544   #63-3742   
CHNPNT	= 000001	#4-224     #9-674     #42-2523   #43-2784   #46-2985   #94-6729   #118-8248  #139-9954  
CHTBL 	  026162 R	 127-9123  #127-9140  
CH.FOR	= 000100  G	#18-1072   
CH.LAB	= 000001  G	#18-1076   
CH.NAT	= 000020  G	#18-1074   
CH.NDC	= 000010  G	#18-1075   
CH.OFF	= 000200  G	#18-1071   
CH.UNL	= 000040  G	#18-1073   
CMEDP 	  010270 R	#51-3302    52-3344   
RSXTOPS20  CREATED BY  MACRO  ON 16-DEC-77 AT 11:44	PAGE 3

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

CMNABO	  001100 RG	 6-374      6-377     #6-381      28-1474   
CMNABT	  002656 R	 28-1358   #28-1473    28-1525   
CMSG  	  001510 R	 7-454     #7-507     
CNT   	  022720 R	#118-8366  *122-8555   130-9365  
CNUPE 	= 000002	#4-224     #9-674     #42-2523   #43-2784   #46-2985   #94-6729   #118-8248  #139-9954  
COMBSE	  031370 RG	*50-3199    50-3247   #141-10096 
COMTRP	  001000 R	 5-249      5-250      5-251      5-252     #6-358     
COPBUF	  020054 RG	 27-1300    27-1300    110-7626   110-7626  #111-7730   168-11470  168-11470 
CRADR 	  022724 R	#118-8370  *122-8556   122-8575   122-8587   122-8589   126-8859  *126-8861  *126-8870  *126-9049  
                        *126-9061  
CRHD  	= ******  GX	 142-10278  143-10310  144-10361 
CRJT  	= 001000	#118-8275   122-8590   126-8972   126-8992   126-9004  
CROBAR	  007132 RG	*44-2835   #44-2838   *45-2851   
CRSTB 	  001160 R	 6-398     #6-401     
CRSTK 	= ******  GX	 143-10310 
CRTBL 	= ******  GX	 148-10473 
CRTNXA	  004204 R	 38-2084   #38-2093   
CRTNX1	  004176 R	 38-2087   #38-2090   
CRTNX2	  004204 R	#38-2099   
CRTNX3	  004206 R	 38-2091   #38-2114    38-2145   
CRTY  	= 002000	#118-8274   122-8586   122-8604   122-8610   126-8866  
CR$BF1	= 021214 RG	#114-7975  
CR$BO2	= 021632 RG	#115-8083  
CR$B03	= 043740 RG	#174-11926 
CR$CBR	= 007164 RG	#45-2853   
CR$DTB	= 020734 RG	#114-7908  
CR$DTD	= 001234 RG	#6-420     
CR$DTF	= 020266 RG	#113-7814  
CR$ETE	= 020662 RG	#114-7892  
CR$FTA	= 001136 RG	#6-388     
CR$IAS	= 004356 RG	#38-2157   
CR$ILF	= 014702 RG	#96-6852   
CR$ILQ	= 022026 RG	#115-8123  
CR$LRF	= 003342 RG	#33-1771   
CR$MPE	= 001300 RG	#6-437     
CR$PT1	= 021146 RG	#114-7963  
CR$PT2	= 021172 RG	#114-7969  
CR$PT3	= 021570 RG	#115-8072  
CR$PT4	= 022156 RG	#115-8144  
CR$RES	= 001242 RG	#6-423     
CR$TBT	= 001250 RG	#6-426     
CR$TET	= 020242 RG	#113-7806  
CR$T04	= 001212 RG	#6-413     
CR$UIE	= 021520 RG	#115-8058  
CSDONE	  004126 R	 36-1902   #36-1992   
CS.EXP	= 177670	#4-224     #9-674     #42-2523   #43-2784   #46-2985   #94-6729   #118-8248  #139-9954  
CTLO  	= 000040	#118-8277   122-8561   122-8602   126-9009   130-9282   130-9283  
CTRLC 	  022730 R	#118-8377   130-9392  
CTRLU 	  022734 R	#118-8379   130-9363  
CTRLZ 	  022740 R	#118-8381   130-9383  
CTYPTR	  031220 RG	 103-7300   122-8539   122-8557   126-8824   126-8842   128-9195   130-9273  #140-10015 
CTYSTS	  022660 R	#118-8362   122-8558   126-8843  *126-9027   126-9032   126-9048   130-9274  
RSXTOPS20  CREATED BY  MACRO  ON 16-DEC-77 AT 11:44	PAGE 4

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

CURBF 	= 000006	#118-8261  *122-8587   130-9327  *130-9328  *130-9331   130-9343  *130-9345   130-9346  *130-9366  
CYCLS 	= 000002	#4-224     #9-674     #42-2523   #43-2784   #46-2985   #94-6729   #118-8248  #139-9954  
C.AS  	= 000002  G	#15-946    
C.AT  	= 000000  G	#15-945     76-4804   
C.FA  	= 000012  G	#15-950    
C.FM  	= 000010  G	#15-949    
C.RS  	= 000006  G	#15-948    
C.SD  	= 000004  G	#15-947    
C.SZ  	= 000014  G	#15-952     75-4709    76-4815    93-6653   #146-10424  146-10432  153-10773 
C1    	= 140010	#150-10569  150-10620  150-10624  150-10634 
C1DB  	= 140110	#150-10571  150-10574  150-10579  150-10583  150-10587  150-10591  150-10595  150-10599  150-10603 
DAG1  	= 000030	#2-117      43-2573    43-2610   *57-3516    57-3518   *57-3553   *60-3660    60-3663   *63-3743   
                         63-3744   *175-11985  175-11989 *175-12019  175-12022 
DAG2  	= 000032	#2-116     *45-2859   *63-3746   
DAG3  	= 000036	#2-114     *113-7858  *116-8170  
DATE  	= 000004	#4-224     #9-674     #42-2523   #43-2784   #46-2985   #94-6729   #118-8248  #139-9954  
DBLRNG	  021364 R	 112-7777  #115-8029  
DBLSTS	  021456 R	 115-8040  #115-8047  
DBLXIT	  021452 R	#115-8044   115-8055  
DCOMST	= 000001	#4-224     #9-674     #42-2523   #43-2784   #46-2985    57-3514    57-3518    57-3539    57-3546   
                        #94-6729   #118-8248  #139-9954  
DEAND1	  016170 R	 96-6837    98-6934    100-7069   100-7097  #101-7178   104-7340  
DEAND2	  016164 R	 98-6932    99-7031    100-7064   101-7147   101-7151   101-7165   101-7167   101-7171   101-7174  
                        #101-7176   102-7208   102-7210   102-7246   102-7250   102-7264  
DEAND3	  015160 R	 96-6860   #98-6933    98-6942    99-6953    99-6992    100-7042  
DEANOD	  017304 R	 97-6883    101-7179   105-7374   105-7424   106-7475   107-7490  #107-7502   108-7523   109-7545  
DEP   	= 010000	#4-224      7-477     #9-674     #42-2523    43-2592    43-2630    43-2636    43-2678    43-2728   
                        #43-2784   #46-2985    51-3301    57-3554    58-3592    59-3628   #94-6729    113-7854   114-7880  
                         115-8126   116-8177  #118-8248  #139-9954   176-12054 
DEPOF 	  031374 RG	*50-3201    50-3242    52-3342   #141-10098 
DEX   	= 000400	#4-224     #9-674     #42-2523   #43-2784   #46-2985   #94-6729   #118-8248  #139-9954  
DEXCOM	  002760 R	#28-1531   
DEXDON	= 000004	#4-224     #9-674     #42-2523   #43-2784   #46-2985   #94-6729   #118-8248  #139-9954   175-11981 
DEXST 	  031204 RG	*57-3517   *57-3520   #140-10006 *175-11979 *175-11983 
DEXTM1	  031212 RG	 50-3224   #140-10010 
DEXTM2	  031210 RG	 50-3194    50-3204    50-3220    50-3254   #140-10009 
DEXTM3	  031206 RG	 50-3190   #140-10008 
DEXWD1	= 174406	#4-224     #9-674     #42-2523   #43-2784   #46-2985   #94-6729   #118-8248  #139-9954  
DEXWD2	= 174404	#4-224     #9-674     #42-2523   #43-2784   #46-2985   #94-6729   #118-8248  #139-9954  
DEXWD3	= 174402	#4-224     #9-674     #42-2523   #43-2784   #46-2985   #94-6729   #118-8248  #139-9954  
DE.01 	= 000377  G	#28-1488    39-2294    75-4706    80-5293    90-6255    90-6262   
DE.02 	= 000376  G	#28-1489    51-3310    57-3522    58-3597    61-3701    78-4943    82-5591    86-5905    92-6524   
DE.03 	= 000375  G	#28-1490    40-2341    51-3312   
DE.04 	= 000374  G	#28-1491    83-5713   
DE.05 	= 000373  G	#28-1492    65-3983    80-5226   
DE.06 	= 000372  G	#28-1493   
DE.07 	= 000371  G	#28-1494    39-2292    78-4963   
DE.08 	= 000370  G	#28-1495    78-4961    86-5955    88-6137   
DE.09 	= 000367  G	#28-1496   
DE.10 	= 000366  G	#28-1497   
DE.11 	= 000365  G	#28-1498   
DE.80 	= 000260  G	#28-1499   
RSXTOPS20  CREATED BY  MACRO  ON 16-DEC-77 AT 11:44	PAGE 5

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

DE.81 	= 000257  G	#28-1500   
DE.90 	= 000246  G	#28-1501    64-3888   
DE.91 	= 000245  G	#28-1502   
DE.92 	= 000244  G	#28-1503    64-3864   
DE.93 	= 000243  G	#28-1504   
DE.94 	= 000242  G	#28-1505    40-2350   
DE.95 	= 000241  G	#28-1506    40-2351   
DE.96 	= 000240  G	#28-1507    41-2418   
DE.97 	= 000237  G	#28-1508    71-4396    75-4678    76-4813    152-10749 
DE.98 	= 000236  G	#28-1509    73-4551   
DE.99 	= 000235  G	 28-1415   #28-1510    48-3112   
DFTBL 	  014612 RG	 96-6814   #96-6816    96-6845   
DFTSZ 	= 000066	 96-6811   #96-6845   
DFUNC 	= 000200	#4-224     #9-674     #42-2523   #43-2784   #46-2985    57-3514    57-3539    57-3546   #94-6729   
                        #118-8248  #139-9954  
DF.DMG	= 000004	#4-224     #9-674     #42-2523   #43-2784   #46-2985   #94-6729   #118-8248   118-8404  #139-9954  
DF.DMN	= 000007	#4-224     #9-674     #42-2523   #43-2784   #46-2985   #94-6729   #118-8248  #139-9954  
DF.DOR	= 000001	#4-224     #9-674     #42-2523   #43-2784   #46-2985   #94-6729   #118-8248  #139-9954  
DF.EHG	= 000010	#4-224     #9-674     #42-2523   #43-2784   #46-2985   #94-6729   #118-8248   118-8402  #139-9954  
DF.EHM	= 000011	#4-224     #9-674     #42-2523   #43-2784   #46-2985   #94-6729   #118-8248  #139-9954  
DF.EMG	= 000005	#4-224     #9-674     #42-2523   #43-2784   #46-2985   #94-6729   #118-8248  #139-9954  
DF.EMN	= 000006	#4-224     #9-674     #42-2523   #43-2784   #46-2985   #94-6729   #118-8248  #139-9954  
DF.KLR	= 000012	#4-224     #9-674     #42-2523   #43-2784   #46-2985   #94-6729   #118-8248  #139-9954  
DF.KLW	= 000013	#4-224     #9-674     #42-2523   #43-2784   #46-2985   #94-6729   #118-8248  #139-9954  
DF.KLX	= 000014	#4-224     #9-674     #42-2523   #43-2784   #46-2985   #94-6729   #118-8248  #139-9954  
DF.OFF	= 000002	#4-224     #9-674     #42-2523   #43-2784   #46-2985   #94-6729   #118-8248  #139-9954  
DF.ON 	= 000003	#4-224     #9-674     #42-2523    43-2723   #43-2784   #46-2985   #94-6729   #118-8248  #139-9954  
DF.PDP	= 000016	#4-224     #9-674     #42-2523   #43-2784   #46-2985   #94-6729   #118-8248  #139-9954  
DF.PEX	= 000015	#4-224     #9-674     #42-2523   #43-2784   #46-2985   #94-6729   #118-8248  #139-9954  
DHBUF 	= 000020	#118-8267  *126-9027   126-9032  
DHCNT 	= 000200  G	 137-9770   148-10467 #149-10548 
DHSAV 	  027232 R	 123-8629   127-9087  #131-9432  
DHSTSV	  022656 R	#118-8360  *127-9090   127-9099   127-9115  
DHTBL 	  035176 RG	 98-6905    99-7010    100-7052   101-7170   102-7229   110-7632   126-8820   126-8884   126-9025  
                         127-9088   131-9443   132-9517   137-9769   137-9872   148-10467  149-10499  149-10500  149-10501 
                         149-10502  149-10503  149-10504  149-10505  149-10506  149-10507 #149-10523  149-10548  168-11541 
                         169-11617  169-11641 
DHTMP 	  022654 R	#118-8358  *123-8628  *127-9086   131-9439  
DH.FER	= 020000  G	#118-8347  
DIAG1 	= 174430	#4-224     #9-674     #42-2523   #43-2784   #46-2985   #94-6729   #118-8248  #139-9954  
DIAG2 	= 174432	#4-224     #9-674     #42-2523   #43-2784   #46-2985   #94-6729   #118-8248  #139-9954  
DIAG3 	= 174436	#4-224     #9-674     #42-2523   #43-2784   #46-2985   #94-6729   #118-8248  #139-9954  
DIALUP	  014700 RG	 96-6829   #96-6850   
DIKL10	= 000010	#4-224     #9-674     #42-2523   #43-2784   #46-2985    57-3514    57-3546    57-3553   #94-6729   
                        #118-8248  #139-9954  
DIRDPT	  002532 R	 28-1416   #28-1418    28-1456   
DIRMAX	= 000102	 28-1413   #28-1456   
DIROK 	  002526 R	 28-1414   #28-1416   
DIV216	  041262 RG	 72-4444    72-4444    152-10736  152-10736  157-11007  157-11007 #158-11036 
DLCNT 	= 000005  G	 98-6909    99-6991    137-9877   148-10465 #149-10521 
DLECNT	= 000004  G	 136-9701  #149-10522 
DLETBL	  035136 RG	 136-9700   140-10017 #149-10516  149-10522 
RSXTOPS20  CREATED BY  MACRO  ON 16-DEC-77 AT 11:44	PAGE 6

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

DLINT 	  026414 RG	 128-9173  #129-9231  
DLSTOP	  015650 R	 100-7049   100-7049   100-7068   100-7068  #100-7071  
DLTBL 	  035126 RG	 110-7613   133-9583   136-9688   140-10015  148-10465 #149-10515  149-10521 
DLTMP 	  022652 R	#118-8356  *126-8770  *128-9170   131-9456  
DLYCNT	= 174400	#4-224     #9-674     #42-2523   #43-2784   #46-2985   #94-6729    96-6792   #118-8248  #139-9954  
DL.CAR	= 010000  G	#118-8325   129-9247   136-9714  
DL.CTS	= 020000  G	#118-8324  
DL.DEN	= 000040  G	#118-8330   129-9236   135-9663   136-9706  
DL.DSC	= 100000  G	#118-8322  
DL.DTR	= 000002  G	#118-8333   129-9236   129-9259   136-9716   136-9721  
DL.FER	= 020000  G	#118-8339   128-9183  
DL.RAC	= 004000  G	#118-8326  
DL.RDE	= 000001  G	#118-8334  
DL.RDN	= 000200  G	#118-8328  
DL.REN	= 000100  G	 100-7074  #118-8329   129-9250   135-9663   136-9693   136-9710  
DL.RNG	= 040000  G	#118-8323   129-9234  
DL.RTS	= 000004  G	#118-8332   129-9236   136-9716  
DL.SRD	= 002000  G	#118-8327  
DL.STD	= 000010  G	#118-8331  
DL.UNA	= 001420  G	#118-8335  
DL.XEN	= 000100  G	 102-7256  #118-8343   126-8793   126-9019   126-9040   136-9695   136-9707   168-11545 
DMTBL 	  035062 RG	 98-6911    99-7009    133-9548   133-9554   137-9768   137-9839  #149-10499 
DMTMP 	  022650 R	#118-8354  *133-9542   133-9544  
DMYN  	= 000004  G	*50-3241   *50-3242    54-3407    113-7853   114-7879   115-8131   116-8175  #141-10114 
DON10C	= 040000	#4-224     #9-674     #42-2523   #43-2784   #46-2985   #94-6729    113-7818  #118-8248  #139-9954  
DON10S	= 100000	#4-224     #9-674     #42-2523   #43-2784   #46-2985   #94-6729   #118-8248  #139-9954  
DON11C	= 000100	#4-224     #9-674     #42-2523   #43-2784   #46-2985   #94-6729    114-7912  #118-8248  #139-9954  
DON11S	= 000200	#4-224     #9-674     #42-2523   #43-2784   #46-2985   #94-6729   #118-8248  #139-9954  
DPB.CK	= ******	 64-3846    65-3972   
DPCMN 	  010264 R	#51-3301    54-3408   
DPKAL 	  022776 R	#118-8403   121-8522  
DPMSEP	  010316 R	 51-3303   #51-3312   
DPSEC 	  010314 R	 51-3307   #51-3310   
DPS4  	= 040000	#4-224     #9-674     #42-2523   #43-2784   #46-2985   #94-6729   #118-8248  #139-9954  
DQNXT 	  023556 R	#122-8531   122-8573   122-8580  
DRESET	= 000100	#4-224     #9-674     #42-2523   #43-2784    45-2859   #46-2985    63-3746   #94-6729   #118-8248  
                        #139-9954  
DRXCOM	  002774 R	 28-1530   #28-1536   
DRXRR 	  003006 R	 28-1533   #28-1538   
DR.DTE	= 000011	#4-224     #9-674     #42-2523    43-2723   #43-2784   #46-2985   #94-6729   #118-8248   118-8402  
                         118-8404  #139-9954  
DR.00 	= 000000  G	#28-1481    68-4244    69-4294    70-4353   
DR.01 	= 000001  G	#28-1482    39-2291    39-2293    49-3154    51-3308    57-3533    58-3595    60-3664    64-3890   
                         65-3992    66-4100    71-4394    72-4459    73-4537    73-4549    74-4585    75-4720    76-4802   
                         78-4960    79-5042    80-5398    81-5513    86-5939    87-6045    88-6133    91-6421   
DR.02 	= 000002  G	#28-1483    67-4194    77-4895    82-5658   
DR.03 	= 000003  G	#28-1484    82-5660   
DSEND 	= 000004	#4-224     #9-674     #42-2523   #43-2784   #46-2985    57-3546    57-3550    57-3553   #94-6729   
                        #118-8248  #139-9954  
DS.99 	  002524 R	#28-1415    28-1432    28-1448    28-1449    28-1453   
DS04  	= 004000	#4-224     #9-674     #42-2523    43-2573    43-2610   #43-2784   #46-2985    63-3744   #94-6729   
                        #118-8248  #139-9954   175-11989 
RSXTOPS20  CREATED BY  MACRO  ON 16-DEC-77 AT 11:44	PAGE 7

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

DS05  	= 002000	#4-224     #9-674     #42-2523   #43-2784   #46-2985   #94-6729   #118-8248  #139-9954  
DS06  	= 001000	#4-224     #9-674     #42-2523   #43-2784   #46-2985   #94-6729   #118-8248  #139-9954   175-12022 
DTEADR	  031702 RG	 113-7823  *113-7865  #141-10141 
DTECMD	= 000451	#4-224     #9-674     #42-2523    43-2580    43-2656   #43-2784   #46-2985   #94-6729   #118-8248  
                        #139-9954  
DTEDSP	  007620 R	 47-3040   #47-3045   
DTEFLG	= 000444	#4-224     #9-674     #42-2523    43-2593    43-2729   #43-2784   #46-2985   #94-6729   #118-8248  
                        #139-9954  
DTEF11	= 000450	#4-224     #9-674     #42-2523    43-2631   #43-2784   #46-2985   #94-6729   #118-8248  #139-9954  
DTEHD 	  014174 RG	#96-6788    142-10238  143-10294  144-10348 
DTEMSK	  031700 RG	 113-7823  *113-7864  #141-10140 
DTEMTD	= 000455	#4-224     #9-674     #42-2523    43-2679   #43-2784   #46-2985   #94-6729   #118-8248  #139-9954  
DTEMTI	= 000456	#4-224     #9-674     #42-2523    43-2620    43-2637   #43-2784   #46-2985   #94-6729   #118-8248  
                        #139-9954  
DTENM 	= 000000	#141-10110 
DTESP 	  014454 RG	 96-6789   #96-6789    143-10294 
DTETPD	  033236 RG	 142-10238 #144-10348 
DTETSK	  032556 RG	*114-7934   143-10290 #143-10294  143-10296 
DTEXIT	  020216 R	 112-7774  #112-7789   115-8045  
DTPXIT	  044372 R	 177-12097  178-12126 #179-12147 
DTTSK 	  033016 RG	 143-10310 #143-10318  143-10322 
DUPE  	= 000020	#4-224     #9-674     #42-2523   #43-2784   #46-2985   #94-6729   #118-8248  #139-9954  
DURE  	= 000004	#4-224     #9-674     #42-2523   #43-2784   #46-2985   #94-6729   #118-8248  #139-9954  
DVCH  	= 110220	#150-10565  150-10574  150-10579  150-10583  150-10587  150-10591  150-10595  150-10599  150-10603 
                         150-10620  150-10624  150-10634 
DV.EOF	= 000040  G	#21-1128   
DV.F11	= 000400  G	#21-1131   
DV.HNG	= 001000  G	#21-1132    111-7747  
DV.IOP	= 000020  G	#21-1127   
DV.LIN	= 002000  G	#21-1133    137-9887  
DV.LOG	= 000100  G	#21-1129    111-7747   137-9887  
DV.NXD	= 000001  G	#21-1123   
DV.OFL	= 000002  G	#21-1124   
DV.OIR	= 000004  G	#21-1125   
DV.SCN	= 000010  G	#21-1126   
DV.URE	= 000200  G	#21-1130   
DWNMS 	  002306 R	 27-1313   #27-1316    27-1320   
DWNMSG	  002274 R	 27-1299   #27-1313   
DWNMSZ	= 000043	 27-1313    27-1313   #27-1320   
DXHD  	= ******  GX	 142-10249  143-10328  144-10371 
DXSTK 	= ******  GX	 143-10328 
DXTPD 	  033376 R	 142-10249 #144-10371 
DXTSK 	  033056 RG	 143-10322 #143-10328  143-10333  150-10620  150-10624 
DXWD1 	= 000006	#2-123     *43-2629    57-3526   *57-3549   *113-7842  *113-7859  *114-7881   115-8036  *115-8127  
                        *116-8161  *116-8181   176-12062 *176-12067 
DXWD2 	= 000004	#2-124      43-2624   *43-2628    57-3525   *57-3548   *113-7843  *113-7860  *114-7882   115-8037  
                        *115-8128  *116-8162  *116-8182   176-12061 *176-12066 
DXWD3 	= 000002	#2-125      43-2565    43-2585   *43-2591   *43-2627   *43-2635    43-2663    43-2665    43-2673   
                        *43-2677    43-2691   *43-2727    57-3524   *57-3547   *113-7846  *113-7861  *114-7883   115-8038  
                         115-8078   115-8093  *115-8129   115-8141  *116-8168  *116-8183   176-12060 *176-12065 
DXWRD1	= 002000	#4-224     #9-674     #42-2523   #43-2784   #46-2985   #94-6729   #118-8248  #139-9954  
DX0PEN	  037752 RG	 142-10255 #150-10620  150-10620  150-10639 
RSXTOPS20  CREATED BY  MACRO  ON 16-DEC-77 AT 11:44	PAGE 8

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

DX1PEN	  040022 RG	#150-10624  150-10624 
D.AT  	= 000000  G	#16-968    
D.CCDR	= 000006  G	#148-10472 
D.CCLK	= 000007  G	 104-7328   120-8481  #148-10474 
D.CCPU	= 000200  G	 103-7313  #148-10488 
D.CCTY	= 000001  G	 103-7298  #148-10462 
D.CDH1	= 000003  G	 137-9808  #148-10466 
D.CDLS	= 000004  G	 126-8810   133-9587  #148-10468  170-11700 
D.CDL1	= 000002  G	#148-10464 
D.CKLE	= 000201  G	#148-10489 
D.CKLN	= 000210  G	#148-10490 
D.CLPT	= 000005  G	 120-8466  #148-10470 
D.FA  	= 000004  G	#16-970    
D.FEPD	= 000010  G	#148-10476 
D.FM  	= 000002  G	#16-969    
D.SZ  	= 000005  G	#16-972    #147-10444 
D1011 	= 000040	#4-224     #9-674     #42-2523   #43-2784   #46-2985   #94-6729   #118-8248  #139-9954  
EBSEL 	= 000100	#4-224     #9-674     #42-2523   #43-2784   #46-2985   #94-6729   #118-8248  #139-9954  
EBUSPC	= 000020	#4-224     #9-674     #42-2523   #43-2784   #46-2985   #94-6729   #118-8248  #139-9954  
EBUSPS	= 000004	#4-224     #9-674     #42-2523   #43-2784   #46-2985   #94-6729   #118-8248  #139-9954  
ECHOB 	  025262 R	 126-8862   126-8867   126-8909   126-8918  #126-8930   130-9407  
EDONES	= 040000	#4-224     #9-674     #42-2523   #43-2784   #46-2985   #94-6729   #118-8248  #139-9954  
EDRMT 	  014706 RG	 96-6839   #96-6858   
EF.BOV	= 000040  G	#10-758    
EF.CLK	= 000002  G	#10-750    
EF.CRI	= 002000  G	#10-790     43-2559    43-2689    44-2813   
EF.CTC	= 100000  G	#10-780     128-9200  
EF.DTE	= 000001  G	#10-748    
EF.IOD	= 000020  G	#10-756     118-8400   119-8443   126-8872  
EF.NIR	= 000010  G	#10-754     39-2271    80-5392    118-8400   156-10916  156-10964 
EF.PFR	= 004000  G	 6-418     #10-788     43-2689    44-2813    46-2912    115-8054  
EF.PR1	= 040000  G	#10-782     27-1271    51-3302    121-8495   127-9104   134-9603   135-9655   137-9815   170-11695 
                         177-12096  178-12119  179-12145 
EF.PR2	= 020000  G	#10-784     128-9212   177-12096  178-12124 
EF.RKH	= 002000  G	#10-768     118-8400   119-8431   135-9650  
EF.RKP	= 010000  G	#10-786     109-7538   109-7542  
EF.RKR	= 001000  G	#10-766     118-8400   119-8427   129-9242  
EF.RQM	= 000200  G	#10-762     118-8400   119-8423   128-9205  
EF.RSS	= 004000  G	#10-770     118-8400   119-8435   132-9502  
EF.SND	= 100000  G	#10-775    
EF.TED	= 000100	#95-6740    95-6784    114-7934  
EF.TMO	= 000100  G	#10-760     118-8400   120-8451   146-10430 
EF.TTY	= 000004  G	#10-752    
EF.WFM	= 000400  G	#10-764    
EHSG  	= 000006  G	*50-3248    55-3441   #141-10116 
EHSM  	= 000010  G	*50-3262    56-3473    115-8032   115-8136  #141-10118 
EIS   	= ******	 181-12357  181-12362 
EMGSTK	  040370 RG	 6-363      7-452     #151-10673 
EMTSTK	  031200 RG	*6-378     *28-1348   *28-1367    28-1470    28-1473   *28-1517    28-1531    28-1536    28-1558   
                        #140-10004 
EMTTRP	  002352 RG	 5-254     #28-1343   
EMYN  	= 000002  G	*50-3239    53-3375   #141-10112 
RSXTOPS20  CREATED BY  MACRO  ON 16-DEC-77 AT 11:44	PAGE 9

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

EM.DRO	= 000020  G	#28-1339    28-1369    28-1401   *28-1532   *28-1537    28-1557   *79-5036   
EOLS  	= 000400	#118-8276   122-8586   122-8604   126-8896   130-9332   130-9394   130-9403  
EPTR  	= 000000	#4-224     #9-674     #42-2523    43-2579    43-2592    43-2619    43-2630    43-2636    43-2655   
                         43-2678    43-2728   #43-2784   #46-2985   #94-6729   #118-8248  #139-9954  
EQSZ  	  031746 RG	 114-7936  *114-7940  *114-7993  *115-8141   115-8142  #141-10166 
ERR10C	= 010000	#4-224     #9-674     #42-2523   #43-2784   #46-2985   #94-6729   #118-8248  #139-9954  
ERR10S	= 020000	#4-224     #9-674     #42-2523   #43-2784   #46-2985   #94-6729   #118-8248  #139-9954  
ERR11C	= 000001	#4-224     #9-674     #42-2523   #43-2784   #46-2985   #94-6729   #118-8248  #139-9954  
ERR11S	= 000002	#4-224     #9-674     #42-2523   #43-2784   #46-2985   #94-6729   #118-8248  #139-9954  
EV.AS 	= 000002  G	#25-1241    38-2130    38-2146    42-2460   
EV.PF 	= 000200  G	#25-1242    38-2123    38-2153    45-2875    151-10668 
EV.SE 	= 000001  G	#25-1238    31-1676    36-1903    38-2123    39-2272    42-2439    69-4291    74-4584    78-4959   
                         80-5393    83-5732    93-6641    113-7824   114-7935   126-8873   128-9201   128-9206   129-9243  
                         132-9503   135-9651   155-10861  157-11017  178-12125  179-12146 
EXCMN 	  010324 R	#52-3343    53-3376    55-3442    56-3474   
EXKAL 	  022764 R	#118-8401   121-8504  
E.BOV 	= 000006  G	#10-759    
E.CLK 	= 000002  G	#10-751    
E.DTE 	= 000001  G	#10-749    
E.DV  	= 000006  G	#95-6747    105-7382   106-7447   108-7520  
E.FCRI	= 000073  G	#10-791    
E.FCTC	= 000100  G	#10-781    
E.FN  	= 000004  G	#95-6746    96-6808    106-7444  
E.FP  	= 000000  G	#95-6744   
E.FPFR	= 000074  G	#10-789    
E.FPR1	= 000077  G	#10-783    
E.FPR2	= 000076  G	#10-785     43-2547    43-2722   
E.FRKP	= 000075  G	#10-787    
E.FSND	= 000040  G	#10-776    
E.FW  	= 000010  G	#95-6748    96-6859   *97-6873    97-6875    98-6908    99-6952    99-6961    99-6967    99-6972   
                         99-6982    99-6990   *99-6994    99-7003    99-7025   *100-7040   100-7057   100-7075   103-7294  
                         105-7383   106-7445   106-7448   107-7488   109-7532  
E.IOD 	= 000005  G	#10-757    
E.LS  	= 000002  G	#95-6745   
E.NIR 	= 000004  G	#10-755    
E.OPSZ	= 000140  G	#95-6736    174-11920 
E.RKH 	= 000013  G	#10-769    
E.RKR 	= 000012  G	#10-767    
E.RQM 	= 000010  G	#10-763    
E.RSS 	= 000014  G	#10-771    
E.TMO 	= 000007  G	#10-761    
E.TTY 	= 000003  G	#10-753    
E.WFM 	= 000011  G	#10-765    
FDVNM 	  016772 R	 105-7373   105-7373  #105-7387   106-7467   106-7467  
FDVNMM	  016756 R	 97-6874    97-6874    98-6892    98-6892    98-6940    98-6940    99-6951    99-6951    99-6995   
                         99-6995    100-7041   100-7041   101-7143   101-7143   102-7205   102-7205  #105-7381   108-7514  
                         108-7514  
FEHD  	= ******  GX	 142-10241  143-10322  144-10351 
FESTK 	= ******  GX	 143-10322 
FETBL 	= ******  GX	 148-10477 
FETPD 	  033256 R	 142-10241 #144-10351 
FETSK 	  033016 RG	*43-2548   #143-10322  143-10328  150-10634 
RSXTOPS20  CREATED BY  MACRO  ON 16-DEC-77 AT 11:44	PAGE 10

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

FE0PUD	  040142 RG	#150-10634  150-10634 
FILTB 	  022744 R	#118-8386   126-8967  
FLBT  	= 000001	#118-8280   126-8995  
FLBYT 	= 000011	#118-8263   126-8925  *126-8951  *126-8997  
FLCT  	= 000017	#118-8279   122-8604   126-8844  
FLDVOT	  017314 RG	 96-6827   #108-7513  
FNBYT 	= 000005	#118-8260  *130-9374  *130-9381  *130-9390  *130-9401  
FNDCPU	  010730 R	 47-3038    47-3038   #61-3689   
FNDDTE	  010762 R	 57-3510    57-3510    57-3535    57-3535    57-3542    57-3542    58-3587    58-3587    59-3624   
                         59-3624    60-3655    60-3655   #62-3720   
FNDSPD	  015726 R	 99-6968    99-6968    99-6973    99-6973   #100-7087  
FORPRO	= 000020	#4-224     #9-674     #42-2523   #43-2784   #46-2985    50-3210    50-3243    50-3249   #94-6729   
                         113-7852   114-7878   115-8031   115-8130   115-8135   116-8176  #118-8248  #139-9954  
FW    	= 000300	#150-10567  150-10574  150-10579  150-10583  150-10587  150-10591  150-10595  150-10599  150-10603 
                         150-10620  150-10624 
F11TPD	  033436 RG	 6-386      33-1769    142-10255 #144-10379 
GENTPD	  033456 R	#144-10382 
HANGUP	  014756 RG	 96-6830   #98-6891   
HDR64 	= ******	 34-1782    36-1919    36-1934    41-2392    92-6538    156-10952 
HIBYTE	= 177400	#4-224     #9-674     #42-2523   #43-2784   #46-2985   #94-6729   #118-8248  #139-9954  
HICTS 	  016500 RG	 96-6817   #103-7292  
HIDVST	  016710 RG	 96-6823   #105-7357  
HORPS 	= 000016	#118-8266   126-8947   126-8963  *126-8974  *126-9005  
H.CSP 	= 000000  G	#12-825    
H.DSW 	= 000046  G	#12-827     36-1925    36-1940   
H.FCP 	= 000050  G	#12-828    
H.FOR 	= 000052  G	#12-829    
H.HSZ 	= 000002  G	#12-826    
H.IPC 	= 000076  G	#12-832     34-1789   
H.IPS 	= 000074  G	#12-831     34-1790   
H.ISP 	= 000100  G	#12-833     34-1797   
H.LUT 	= 000130  G	#12-835     34-1791    34-1794    41-2398    91-6402    182-12427 
H.OVL 	= 000054  G	#12-830    
H.TKVA	= 000106  G	#12-834     34-1788    91-6399   
IE.ABO	= 177761	 126-9058  
IFLOP 	= 100000	#4-224     #9-674     #42-2523   #43-2784   #46-2985   #94-6729    114-7942   114-7995   115-8102  
                        #118-8248  #139-9954  
IGNO  	  035060 R	 148-10463  148-10463  148-10465  148-10465  148-10467  148-10467  148-10469  148-10469  148-10471 
                         148-10473  148-10473  148-10477 #148-10483 
ILBLT 	  044472 R	#181-12380 
INDTTF	  020406 R	 113-7821  #113-7840  
INIAN 	  043712 RG	 151-10672 #174-11920 
INITLM	  040262 RG	#151-10653  183-12559 
INPPT 	  025202 R	 126-8851  #126-8895  
INPT0 	  025214 R	 126-8897  #126-8900   126-9064   126-9064   130-9286   130-9286  
INPT1 	  025660 R	 126-8898  #126-9047  
INSHD 	= ******  GX	 142-10270  144-10345 
INSTAL	= ******  GX	 142-10270 
INSTK 	= ******  GX	 142-10270 
INSTPD	  033216 RG	 142-10270 #144-10345 
INTLPS	  020142 R	#112-7760   113-7835   113-7838   114-7887   114-7955  
INTROF	= 000010	#4-224     #9-674     #42-2523    43-2551   #43-2784   #46-2985   #94-6729   #118-8248  #139-9954  
RSXTOPS20  CREATED BY  MACRO  ON 16-DEC-77 AT 11:44	PAGE 11

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

                         177-12095  178-12123 
INTRON	= 000040	#4-224     #9-674     #42-2523    43-2732   #43-2784   #46-2985    50-3238   #94-6729   #118-8248  
                        #139-9954  
INTSON	= 000001	#4-224     #9-674     #42-2523   #43-2784   #46-2985   #94-6729   #118-8248  #139-9954  
INT10S	= 000400	#4-224     #9-674     #42-2523   #43-2784   #46-2985   #94-6729   #118-8248  #139-9954  
INT11C	= 002000	#4-224     #9-674     #42-2523    43-2584    43-2658    43-2667   #43-2784   #46-2985   #94-6729   
                         115-8112   115-8134  #118-8248  #139-9954  
INT11S	= 004000	#4-224     #9-674     #42-2523   #43-2784   #46-2985   #94-6729   #118-8248  #139-9954   178-12123 
IOTTRP	  001304 R	 6-405     #7-448     
IO.ATT	= 001400	 156-10939 
IO.DET	= 002000	 156-10941 
IO.LOV	= 001010	 156-10943 
IO.LTK	= 000050	 39-2242    156-10949 
IO.RLB	= 001000	 80-5362    122-8562   156-10948  182-12434 
IO.RVB	= 010400	 80-5360    80-5368    182-12435 
IO.STC	= 002500	 80-5350   
IO.WLB	= 000400	 43-2739    80-5359    122-8559   182-12437 
IO.WVB	= 011000	 80-5357    80-5370   
IS.SUC	= 000001	 122-8564   126-8870   126-9052  
KBB0  	= 177562  G	#10-683    
KBB1  	= 175612  G	#10-687    
KBS0  	= 177560  G	#10-682    
KBS1  	= 175610  G	#10-686    
KLCST 	  010406 R	#57-3516    57-3551    57-3560   
KLNLGL	= 000016  G	#140-10070 
KLNPLN	= 000026  G	 103-7310   140-10058  140-10061 #140-10074 
KLNPTR	  031222 RG	 98-6899    100-7048   101-7155   102-7224   110-7615   122-8535   126-8806   126-8828   126-8878  
                         126-9015   128-9175   129-9238   129-9251   135-9645  #140-10017  168-11471  169-11606 
KLPWRF	= 000010	#4-224     #9-674     #42-2523   #43-2784   #46-2985   #94-6729    115-8052  #118-8248  #139-9954  
KL.CFL	= 000400  G	#17-988    
KL.CFM	= 000002  G	#17-979    
KL.LCA	= 000100  G	#17-984    
KL.LRM	= 000001  G	#17-978    
KL.LVB	= 000004  G	#17-980    
KL.SPF	= 000040  G	#17-983    
KL.VBD	= 000020  G	#17-982    
KL.VBN	= 000010  G	#17-981    
KPAL0 	  031760 RG	 118-8402   121-8498   121-8506   121-8516  #141-10171 
KPAL1 	  031770 RG	 118-8404  *121-8521  #141-10173 
KPAR0 	= 172360	#10-697    
KPAR1 	= 172362	#10-698    
KPAR2 	= 172364	#10-699    
KPAR3 	= 172366	#10-700    
KPAR4 	= 172370	#10-701    
KPAR5 	= 172372	#10-702    
KPAR6 	= 172374	#10-703    
KPAR7 	= 172376	#10-704    
KPDR0 	= 172300	#10-706    
KPDR1 	= 172302	#10-707    
KPDR2 	= 172304	#10-708    
KPDR3 	= 172306	#10-709    
KPDR4 	= 172310	#10-710    
RSXTOPS20  CREATED BY  MACRO  ON 16-DEC-77 AT 11:44	PAGE 12

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

KPDR5 	= 172312	#10-711    
KPDR6 	= 172314	#10-712    
KPDR7 	= 172316	#10-713    
KS.CES	= 000002  G	#17-996     175-11994 
KS.CST	= 000020  G	#17-999     121-8510  
KS.DEX	= 000010  G	#17-998     175-11991 
KS.EPE	= 000004  G	#17-997     175-11997 
KS.PFT	= 000100  G	#17-1001    45-2871   
KS.TRR	= 000040  G	#17-1000    115-8061  
KS.TSP	= 000001  G	#17-995     175-12000 
KT11  	= ******	 28-1368    28-1371    28-1464    28-1544    28-1547    28-1556    28-1560    36-1913    36-1952   
                         36-1993    38-2136    41-2387    42-2447    80-5365    90-6283    92-6552    180-12186  180-12191 
                         181-12336  181-12349  181-12352  181-12370 
K.LBPW	= 000005  G	#22-1160   
K.LCKL	= 177777  G	#22-1144   
K.LCON	= 000004  G	#22-1154   
K.LDCM	= 000001  G	#22-1151   
K.LDRP	= 177777  G	#22-1152   
K.LDSC	= 000003  G	#22-1150   
K.LLTO	= 000006  G	#22-1162   
K.LRAC	= 000001  G	#22-1147   
K.LRBA	= 000007  G	#22-1164   
K.LRMN	= 000003  G	#22-1157   
K.LRNG	= 000002  G	#22-1146   
K.LROP	= 000001  G	#22-1155   
K.LRPR	= 000002  G	#22-1156   
K.LRRJ	= 177777  G	#22-1148   
K.LSCK	= 000001  G	#22-1142   
K.LSKL	= 000001  G	#22-1143   
K.LUND	= 000000  G	#22-1140   
K.LUSR	= 177777  G	#22-1158   
LDLPR 	  016710 RG	 96-6840   #105-7358  
LDLPV 	  016710 RG	 96-6841   #105-7359  
LFBT  	= 004000	#118-8273   122-8593   126-8907   126-8981   126-8986  
LFCT  	= 074000	#118-8272   122-8604   126-8846   130-9405  
LINCHR	  017114 RG	 96-6820   #106-7441  
LKS   	= 177546  G	#10-681     45-2881    45-2883    46-2913   
LOAD11	= 000004	#4-224      7-476     #9-674     #42-2523   #43-2784   #46-2985   #94-6729    115-8050  #118-8248  
                        #139-9954  
LOWCOD	= 000000 RG	#5-247      5-248      5-258      5-258      5-258      5-258      5-263      5-263      5-268     
                         5-268      5-272      5-272      5-272      5-272      5-272      5-272      5-272      5-272     
                         5-272      5-272      5-272      5-272      5-272      5-272      5-272      5-276      5-280     
                         5-280      5-284      5-284      5-284      5-284      5-286      5-292      5-293      5-296     
                         5-297      5-303      5-303      5-303      5-303      5-303      5-303      5-303      5-303     
                         5-303      5-303      5-303      5-303      5-303      5-303      5-303      5-306      5-306     
                         5-306      5-306     
LPHD  	= ******  GX	 142-10274  143-10305  144-10357 
LPSTK 	= ******  GX	 143-10305 
LPTBL 	= ******  GX	 148-10471 
LPTPD 	  033316 R	 142-10274 #144-10357 
LPTSK 	  032716 RG	 143-10299 #143-10305  143-10310  150-10630 
LP0PUD	  040072 RG	#150-10630  150-10630 
RSXTOPS20  CREATED BY  MACRO  ON 16-DEC-77 AT 11:44	PAGE 13

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

L.DT0 	= 000003  G	#150-10608 
L.DX0 	= 000005  G	#150-10619 
L.DX1 	= 000006  G	#150-10623 
L.RP4 	= 000002  G	#150-10563 
L.TTY 	= 000001  G	#150-10560 
MACY11	= ******	 9-666      42-2520    43-2782    46-2983    63-3783    64-3925    65-4028    66-4141    74-4620   
                         75-4756    76-4853    78-4999    79-5079    80-5455    86-5990    87-6080    89-6173    90-6333   
                         91-6457    92-6598    94-6726    118-8245   139-9947  
MBUFR 	= 000014	#118-8265  *130-9354  *130-9410   130-9414  
MEBUF 	= 000012	#118-8264   126-8915  *126-8916  *130-9416  
MECNT 	= 000010	#118-8262   126-8848  *126-8917  *130-9417  
MODE  	= 100000	#118-8271   122-8586   122-8605  
MPE11 	= 001000	#4-224     #9-674     #42-2523   #43-2784   #46-2985   #94-6729    112-7763  #118-8248  #139-9954  
NOSNDA	  014716 RG	 96-6842   #97-6872   
NTKXEN	  002064 R	#27-1267   
NTKXEP	  002070 R	 26-1265    26-1265   #27-1268    27-1283    27-1291    27-1294   
NTKXSP	  002044 RG	 26-1265   #26-1265    143-10335 
NULHD 	  001564 RG	#26-1265    143-10335 
NULSTP	= 000040	#4-224     #9-674     #42-2523   #43-2784   #46-2985   #94-6729   #118-8248  #139-9954  
NULTSK	  033156 RG	 143-10291  143-10333 #143-10335 
NUPE  	= 000002	#4-224     #9-674     #42-2523   #43-2784   #46-2985   #94-6729   #118-8248  #139-9954  
N.BP  	= 000002  G	#10-796     160-11100 
N.FP  	= 000000  G	#10-795    
N.OVPT	= 000054  G	#10-735    
N.PR  	= 000010  G	#10-797     160-11098  160-11098 
OKPAL0	  031766 RG	*121-8498   121-8506  *121-8516  #141-10172 
OUTPT 	  025010 R	 122-8615   122-8615   126-8818  #126-8841   126-8954   130-9418  
OUTPT3	  024730 R	 123-8655   123-8655   126-8778  #126-8815  
PARLOA	  007502 R	#46-2932    46-2934   
PARSAV	  040372 RG	 6-431      7-461     #151-10677 
PATSIZ	= 000040  G	#4-228      7-522     
PERCLR	= 001000	#4-224     #9-674     #42-2523   #43-2784   #46-2985   #94-6729   #118-8248  #139-9954  
PHYS  	= 100000	#4-224     #9-674     #42-2523   #43-2784   #46-2985   #94-6729   #118-8248  #139-9954  
PIDENT	= 000000	#4-224     #9-674     #42-2523   #43-2784   #46-2985   #94-6729   #118-8248  #139-9954  
PKT   	  022726 R	#118-8372   122-8529  *122-8553   122-8572  *122-8579   126-9060  
POLMIN	= 001400  G	#139-9941   165-11299  166-11367 
PRB0  	= 177566  G	 7-487     #10-685    
PRB1  	= 175616  G	 7-485     #10-689    
PRI7  	= 000340  G	#4-224     #9-674     #10-694     28-1577   #42-2523   #43-2784   #46-2985   #94-6729   #118-8248  
                        #139-9954  
PRMBLK	  012574 R	 80-5376   #80-5406   
PRMEMN	  031372 RG	*50-3197    50-3252   #141-10097 
PROPNT	= 000021	#4-224     #9-674     #42-2523   #43-2784   #46-2985    50-3243   #94-6729   #118-8248  #139-9954  
PROTBL	  031376 RG	 50-3215    61-3689   #141-10123 
PRS0  	= 177564  G	 7-489     #10-684    
PRS1  	= 175614  G	 7-493     #10-688    
PRTOFF	= 004000	#4-224     #9-674     #42-2523    43-2579    43-2592    43-2619    43-2630    43-2636    43-2655   
                         43-2678    43-2728   #43-2784   #46-2985    58-3591    59-3628   #94-6729   #118-8248  #139-9954  
PRVCM 	  010642 R	#58-3593    59-3629   
PR0   	= 000000	#4-224     #9-674     #42-2523   #43-2784   #46-2985   #94-6729   #118-8248  #139-9954  
PR1   	= 000040	#4-224     #9-674     #42-2523   #43-2784   #46-2985   #94-6729   #118-8248  #139-9954  
PR2   	= 000100	#4-224     #9-674     #42-2523   #43-2784   #46-2985   #94-6729   #118-8248  #139-9954  
RSXTOPS20  CREATED BY  MACRO  ON 16-DEC-77 AT 11:44	PAGE 14

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

PR3   	= 000140	#4-224     #9-674     #42-2523   #43-2784   #46-2985   #94-6729   #118-8248  #139-9954  
PR4   	= 000200	#4-224     #9-674     #42-2523   #43-2784   #46-2985   #94-6729   #118-8248  #139-9954  
PR5   	= 000240	#4-224     #9-674     #42-2523   #43-2784   #46-2985   #94-6729   #118-8248  #139-9954  
PR6   	= 000300	#4-224     #9-674     #42-2523   #43-2784   #46-2985   #94-6729   #118-8248  #139-9954  
PR7   	= 000340  G	#4-224     #9-674     #10-693    #42-2523   #43-2784   #46-2985   #94-6729   #118-8248  #139-9954  
PS    	= 177776  G	#4-224      6-359     #9-674     #10-680     27-1267    27-1276    27-1276    27-1281    27-1289   
                         36-1907    36-1990    38-2082    42-2442    42-2442   #42-2523    43-2555    43-2558    43-2558   
                         43-2605    43-2607    43-2607    43-2674    43-2676    43-2676   #43-2784   #46-2985   #94-6729   
                         96-6795    96-6795    96-6798    96-6800    96-6800    96-6805    98-6900    98-6900    98-6902   
                         98-6921    98-6921    98-6929    98-6929    99-7021    99-7021    99-7023    99-7029    99-7029   
                         100-7061   100-7061   100-7072   100-7072   100-7084   101-7144   101-7144   101-7177   102-7206  
                         102-7206   107-7493   107-7493   107-7501   109-7535   109-7535   109-7543   110-7596   110-7596  
                         110-7611   110-7624   110-7624   110-7629   110-7637   110-7637   110-7641   110-7656   110-7665  
                        #118-8248   119-8418   119-8418   119-8422   120-8456   120-8456   120-8461   122-8532   122-8532  
                         122-8546   122-8614   122-8614   122-8617   123-8628   126-8770   127-9086   128-9170   133-9542  
                         136-9735   136-9735   136-9737   137-9851   137-9851   137-9857  #139-9954   151-10669  156-10924 
                         156-10924  159-11063  159-11063  159-11067  160-11094  160-11094  161-11126  161-11126  161-11131 
                         162-11165  162-11165  162-11170  163-11217  165-11305  165-11305  165-11323  166-11374  166-11374 
                         166-11400  168-11484  168-11484  168-11504  169-11600  169-11600  169-11611  172-11770  172-11770 
                         172-11783  173-11864  173-11864  173-11872  183-12497  183-12497 
PSWW1 	= 000005	#4-224     #9-674     #42-2523   #43-2784   #46-2985   #94-6729   #118-8248   118-8402   118-8404  
                        #139-9954  
PSWW10	= 000014	#4-224     #9-674     #42-2523   #43-2784   #46-2985   #94-6729   #118-8248  #139-9954  
PSWW11	= 000015	#4-224     #9-674     #42-2523   #43-2784   #46-2985   #94-6729   #118-8248  #139-9954  
PSWW12	= 000016	#4-224     #9-674     #42-2523   #43-2784   #46-2985   #94-6729   #118-8248  #139-9954  
PSWW13	= 000017	#4-224     #9-674     #42-2523   #43-2784   #46-2985   #94-6729   #118-8248  #139-9954  
PSWW2 	= 000006	#4-224     #9-674     #42-2523   #43-2784   #46-2985   #94-6729   #118-8248  #139-9954  
PSWW3 	= 000007	#4-224     #9-674     #42-2523   #43-2784   #46-2985   #94-6729   #118-8248  #139-9954  
PSWW4 	= 000010	#4-224     #9-674     #42-2523   #43-2784   #46-2985   #94-6729   #118-8248  #139-9954  
PSWW5 	= 000011	#4-224     #9-674     #42-2523   #43-2784   #46-2985   #94-6729   #118-8248  #139-9954  
PSWW6 	= 000012	#4-224     #9-674     #42-2523   #43-2784   #46-2985   #94-6729   #118-8248  #139-9954  
PSWW7 	= 000013	#4-224     #9-674     #42-2523   #43-2784   #46-2985   #94-6729   #118-8248  #139-9954  
PULSE 	= 000020	#4-224     #9-674     #42-2523   #43-2784   #46-2985   #94-6729   #118-8248  #139-9954  
PWRXSP	  040402 RG	*44-2833    45-2848   #151-10691 
PWR.UP	  007134 RG	 44-2834   #45-2847    45-2849   
QNDSV 	  012566 R	*80-5348   *80-5374   *80-5375   #80-5404    80-5406   
QPRDTC	  014474 RG	#96-6791    96-6807   
QPRDTE	  014502 RG	 96-6789    96-6789   #96-6793   
QPRDTF	  017310 R	#107-7504   110-7556  
QPRDTL	  014536 R	#96-6799    105-7378   107-7505  
QPROAD	  007004 R	*43-2673    43-2739   #43-2740   
QPROMS	  006762 R	 43-2675   #43-2738   
QPRTPD	  033356 R	 142-10283 #144-10364 
QPRTSK	  033116 RG	 143-10328 #143-10333  143-10335 
QSIZE 	= 000023	#4-224     #9-674     #42-2523   #43-2784   #46-2985   #94-6729    113-7852   113-7862   115-8075  
                         115-8135   116-8176   116-8184  #118-8248  #139-9954  
Q.AK  	= 000012  G	#20-1106    98-6941    98-6941   
Q.DA  	= 000000  G	#20-1101    105-7398   108-7518  
Q.DZ  	= 000016  G	#20-1108    105-7402   110-7607   110-7638   137-9840  *137-9876  *137-9878  *137-9879  
Q.D1  	= 000006  G	#19-1095    83-5716   
Q.IOAE	= 000012	#43-2739   
Q.IOEF	= 000006	#43-2739   
RSXTOPS20  CREATED BY  MACRO  ON 16-DEC-77 AT 11:44	PAGE 15

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

Q.IOFN	= 000002	#43-2739   
Q.IOLU	= 000004	#43-2739   
Q.IOPL	= 000014	#43-2739   
Q.IOPR	= 000007	#43-2739   
Q.IOSB	= 000010	#43-2739   
Q.SI  	= 000004  G	#19-1094   *83-5724    86-5913    86-5923   
Q.SP  	= 000006  G	#20-1104    108-7516   108-7516  
Q.ST  	= 000004  G	#20-1103    105-7376   105-7376   106-7469   106-7469  
Q.SZ  	= 000020  G	#20-1109   #148-10460  148-10481 
Q.TS  	= 000002  G	#20-1102    105-7397  
RAMIS0	= 010000	#4-224     #9-674     #42-2523   #43-2784   #46-2985   #94-6729   #118-8248  #139-9954  
RCVKLP	  017352 RG	 96-6843   #109-7531  
RESERV	  001240 R	 6-403     #6-422     
RETTOD	  017240 RG	 96-6826   #107-7487  
RFMAD0	= 100000	#4-224     #9-674     #42-2523   #43-2784   #46-2985   #94-6729   #118-8248  #139-9954  
RFMAD1	= 040000	#4-224     #9-674     #42-2523   #43-2784   #46-2985   #94-6729   #118-8248  #139-9954  
RFMAD2	= 020000	#4-224     #9-674     #42-2523   #43-2784   #46-2985   #94-6729   #118-8248  #139-9954  
RFMAD3	= 010000	#4-224     #9-674     #42-2523   #43-2784   #46-2985   #94-6729   #118-8248  #139-9954  
RF.XR 	= 000002  G	#24-1214   
RM    	= 000010	#4-224     #9-674     #42-2523    43-2571   #43-2784   #46-2985   #94-6729   #118-8248  #139-9954  
RMBYT 	= 000004	#118-8259  *122-8588  *130-9329  *130-9347  *130-9365  
RPHD  	= ******  GX	 142-10266  143-10299  144-10375 
RPPEN 	  037252 RG	#150-10574  150-10574 
RPSTK 	= ******  GX	 143-10299 
RPTPD 	  033416 R	 142-10266 #144-10375 
RPTSK 	  032656 RG	 143-10296 #143-10299  143-10305  150-10574  150-10579  150-10583  150-10587  150-10591  150-10595 
                         150-10599  150-10603 
RQKLD 	  023044 R	#118-8411   119-8433  
RQKLR 	  023026 R	#118-8409   119-8429  
RQMCR 	  023010 R	#118-8407   119-8425  
RQSPB 	  013466 R	 90-6245    90-6266    90-6294   #90-6296   
RQSPT 	  013462 RG	 90-6287   #90-6294   
RQSTD 	  013500 R	*90-6264    90-6274   #90-6297   
RSX$$E	= 000012	#2-96       4-178      140-10045 
RSX$$F	= 000102	#2-101     #2-106      2-108      4-178      4-178      7-525      7-525      138-9892   138-9892  
                         140-10045 
RSX$$K	= 000126	#2-100      140-10045 
RSX$$V	= 000012	#2-95       140-10045 
RTDVST	  016710 RG	 96-6821   #105-7361  
RTNTOD	  016626 RG	 96-6825   #104-7327  
RUBP  	= 000020	#118-8278   122-8604   130-9334   130-9336   130-9348   130-9350   130-9364  
R$$11D	= 000001	#139-9943  
R.AS  	= 000020