Google
 

Trailing-Edge - PDP-10 Archives - tops10_tools_bb-fp64b-sb - 10,7/rsx20f/rsxtol/save.lst
There are 2 other files named save.lst in the archive. Click here to see a list.
.MAIN.	MACRO V05.04  Tuesday 10-May-88 15:25
Table of contents

     1-    2	RSXDC -- RSX20F CONDITIONAL DEFINITION MODULE
     2-   87	STOPCD'S
     3-  116	BIT DEFINES
     4-  164	CD11 HARDWARE BITS
     5-  193	CTY HARDWARE BITS
     6-  211	DH11 HARDWARE BITS
     7-  252	DL11 HARDWARE BITS
     8-  306	DM11B HARDWARE BITS
     9-  335	EIA PIN DEFINITIONS
    10-  351	KW11 HARDWARE BITS
    11-  369	LP11 HARDWARE BITS
    12-  389	LP20 HARDWARE BITS
    14-  465	MM11-LP PARITY MEMORY
    15-  477	TC11 HARDWARE BITS
    16-  532	DTE20 HARDWARE BITS
    19-    2	TITLE PAGE
    20-   78	GENERAL DESCRIPTION OF SAVE FUNCTION
    21-  150	MACROS AND PARAMETERS
    22-  249	DEVICE REGISTER DEFINITIONS
    23-  348	SAVE TASK IMPURE DATA AREA
    24-  404	PURE DATA
    25-  458	PARSE COMMAND LINE
    26-  559	SETUP SAVE FILE
    27-  728	DISMOUNT ALL MOUNTED VOLUMES
    28-  765	SAVE SYSTEM STATE
    29-  872	WRITE SAVE FILE AND BOOT
    30-  889	RESTORE SYSTEM STATE
    31-  940	RESTORE -- SETUP CTY LINE # AND DH-11 TABLES
    32- 1028	RESTORE -- REDIRECT SY0: TO BOOT DEVICE
    33- 1081	RESTORE -- CHECK BOOT DB & LOOK FOR RP06'S
    34- 1143	RESTORE -- CHECK ALL THE DTE-20'S
    35- 1208	RESTORE -- RESTART SYSTEM AND TYPE HERALD
    36- 1251	RESTORE -- TYPE SY0: REDIRECT MESSAGE AND MOUNT SY0:
    37- 1303	RESTORE -- READ HOM BLOCKS ON BOOT DB
    38- 1394	RESTORE -- CKECK STATE OF KLINIK LINE
    39- 1492	RESTORE -- REQUEST KL INITIALIZATION TASK AND/OR EXIT
    40- 1526	COMMAND PARSER ROUTINES
    41- 1610	TYPEOUT ROUTINES
    42- 1808	FILE I/O ROUTINES
    43- 1881	DRIVER TABLES
    44- 1923	RX-11 FLOPPY DISK ROUTINES
    45- 1942	RX-11 BOOTSTRAP
    46- 2113	RX-11 WRITE ROUTINE
    47- 2238	RP04/RP06 DISK ROUTINES
    48- 2271	RP04/RP06 BOOTSTRAP
    49- 2357	RP04/RP06 WRITE ROUTINE
    50- 2415	TC-11 DECTAPE ROUTINES
    51- 2431	TC-11 BOOTSTRAP
    52- 2548	TC-11 WRITE ROUTINE
    53- 2632	CHK11 -  ONCE ONLY SYSTEM DIAGNOSTIC  25 NOV 80
    56- 2751	CHK11 MACRO'S
    59- 2885	DEFINE DEVICE BLOCKS FOR EACH NODE TYPE
    60- 2902	DEVICE MACROS FOR ALL POSSIBLE CONFIGURATIONS
    66- 3048	CHECK MEMORY - SLIDING BIT PATTERN
    69- 3153	CHECK KW11-L HDW
    72- 3229	CHECK SYSTEM FOR EXISTENCE OF OPTIONS
    74- 3379	BIT SET/BIT CLEAR TEST
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25
Table of contents

    75- 3426	PRINT DEVICE ID ROUTINE
    76- 3461	ROUTINE TO FIND DEVICE INTERRUPT LEVEL
    77- 3494	CHECK INTERRUPTS AND FIND DEVICE LEVEL
    80- 3607	HERE ON AN INTERRUPT WHILE IN CHK11
    81- 3657	CHECK DH11 HDW
    82- 3833	CHECK DL11-E HDW
    83- 3856	CHECK DL11-A HDW
    84- 3878	CHECK DM11-BB HDW
    85- 3919	CHECK DTE20 HARDWARE
    86- 3953	CHECK CD11 HARDWARE
    87- 3977	CHECK LP11 HARDWARE
    88- 3998	CHECK THE LP20 HARDWARE
    89- 4026	CHECK RH11 HARDWARE
    90- 4039	CHECK TC11 HARDWARE
    91- 4068	RX11 CHECKING
    93- 4096	CK11SC ROUTINE
    98- 4248	END STATEMENT
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 17
DTE20 HARDWARE BITS

    701						.LIST	MEB
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 19
DTE20 HARDWARE BITS

      1						.TITLE	SAVE -- MCR FUNCTION 'SAV' FOR RSX-20F
      2						.SBTTL	TITLE PAGE
      3						.IDENT	/015140/
      4					;
      5					;                             COPYRIGHT (C) 1975, 1978, 1985 BY
      6					;                     DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
      7					;			ALL RIGHTS RESERVED
      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					;		MODULE: MCR FUNCTION -- SAV
     22					;
     23					;		VERSION: 15-14
     24					;
     25					;		AUTHOR: TOM PORCHER
     26					;
     27					;		DATE: 10-SEP-75
     28					;
     29					;
     30					;	THIS MODULE CONTAINS:
     31					;
     32					;	-- GENERAL FUNCTIONAL DESCRIPTION
     33					;
     34					;	-- COMMAND PARSER FOR SAV
     35					;
     36					;	-- CODE TO SAVE MACHINE STATE
     37					;
     38					;	-- CODE TO WRITE BOOTSTRAP AND SAVE FILE
     39					;
     40					;	-- CODE TO RESTORE SAVED SYSTEM AND RESTART
     41					;
     42					;	-- RX-11 FLOPPY DISK I/O DRIVER ROUTINES
     43					;
     44					;	-- RP DISK I/O DRIVER ROUTINES
     45					;
     46					;	-- TC-11 DECTAPE I/O DRIVER ROUTINES
     47					;
     48					; MODIFICATIONS:
     49					;
     50					;	NO.	DATE		PROGRAMMER	PURPOSE
     51					;	---	----		----------	-------
     52					;	001	23-MAY-77	R. BELANGER	SUPPORT KLINIK ACTIVITY
     53					;						ON REBOOT.
     54					;	002	31-MAY-77	R. BELANGER	MODIFY TO SAVE ONLY IMAGE
     55					;						OF EXEC AND SAVE TASK.
     56					;	003	01-JUN-77	A. PECKHAM	MODIFY REFERENCE TO SYSTEM
     57					;						VERSION NUMBER.
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 19-1
TITLE PAGE

     58					;	004	01-JUL-77	R. BELANGER	ADD KLINIK EVENT LOGGING
     59					;	005	10-NOV-77	R. BELANGER	ADD CODE TO RESET DL11'S (SETDL)
     60					;	006	09-MAY-78	R. BELANGER	MODIFY "MNTSY" TO MOUNT A
     61					;						SECOND FLOPPY
     62					;	007	25-JUN-79	K. LEFEBVRE	ADD DEFAULT BIT TO
     63					;						.KLIWD INITIALIZATION
     64					;   TCO 4.2333	16-JUL-79	R. BELANGER	ADD KL10 ENVIRONMENTAL
     65					;						REPORTING SUPPORT.
     66					;						BRING SAVE VERSION IN LINE WITH
     67					;						RSX-20F VERSION.
     68					;  TCO 4.1.1091	12-FEB-80	R. BELANGER	FIX MISSING DM-11/BB'S
     69					;  TCO 4.1.1138	08-APR-80	R. BELANGER	RESET KLINIK DL-11E IF
     70					;						NOT ASSERTING CARRIER AT START UP
     71					;	008	13-MAR-81	S. LEAPLINE	ADD CHK11 REPORTING
     72					;	009	08-JUL=81	S. LEAPLINE	ADD WARNING MESSAGE FOR MISSING
     73					;						KLINIK
     74					;  TCO [******] 18-JUN-84	M. RUDENKO	ADD RP SERIAL NUMBERS FETCH
     75					;
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 20
TITLE PAGE

     77
     78						.SBTTL	GENERAL DESCRIPTION OF SAVE FUNCTION
     79					;
     80					;+
     81					;
     82					;	SAV IS INVOKED BY THE COMMAND 'MCR SAV' TO THE
     83					; RSX-20F CONSOLE COMMAND LANGUAGE.  IT ACCEPTS ONE LINE FROM THE
     84					; CONSOLE WHICH HAS THE FOLLOWING FORMAT:
     85					;
     86					;	[$<SP>] [<ALPHA> <ALPHA> [$<DIGIT>]] [":"] [$<SP>] ["/" <MODIFIER>] <EOL>
     87					;
     88					;	WHERE	$<THING> MEANS ANY NUMBER OF <THING>S
     89					;		[<THING>] MEANS OPTIONAL <THING>
     90					;		"<THING>" MEANS LITERALLY <THING>
     91					;		<SP> IS SPACE, <EOL> IS ANY END-OF-LINE SEQUENCE,
     92					;		<DIGIT> IS ONE OF 0,1,2,3,4,5,6,7
     93					;		<ALPHA> IS ONE OF A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z
     94					;		<MODIFIER> IS ONE OF WB,WS,AB,EX,MO,DM,RH,PI
     95					;
     96					;
     97					; **** NOTE THAT SAVE MUST BE CALLED ONLY WHEN THE SYSTEM IS QUIESCENT,
     98					; **** I.E. WITH NO PENDING INTERRUPTS, AND THE DTE QUEUED PROTOCOL NOT
     99					; **** RUNNING.
    100					;
    101					;	SAVE FINDS THE PHYSICAL DISK ADDRESS OF FILE (5,5) WHICH IS
    102					; THE SYSTEM IMAGE FILE.  IF THE FILE IS NOT ALLOCATED, IT IS ALLOCATED
    103					; TO THE SIZE OF THE CURRENT SYSTEM (.MSIZE) CONTIGUOUSLY.  SAVE
    104					; THEN TURNS OFF THE INTERRUPT SYSTEM (PRIORITY 7) AND SAVES THE
    105					; STATE OF THE SYSTEM HARDWARE (KT-11 IF ANY), THEN COPIES LOW CORE
    106					; (FIRST 256. WORDS) INTO A SAVE AREA.  THE PROPER BOOT FOR THE
    107					; REQUESTED DEVICE IS WRITTEN INTO LOW CORE.  THE SYSTEM IMAGE FILE IS WRITTEN,
    108					; USING THE DISK ROUTINES IN SAVE INSTEAD OF THE SYSTEM DISK DRIVERS TO PRESERVE
    109					; THE INTEGRITY OF THE SYSTEM IMAGE.  IF WRITE BOOT (/WB) WAS SPECIFIED, THE PROPER
    110					; BOOTSTRAP IS ALSO WRITTEN ON BLOCK ZERO OF THE SPECIFIED DEVICE.
    111					; SAVE THEN ENTERS THE RESTORE CODE, AS IF THE SYSTEM HAD JUST BEEN
    112					; LOADED, SPECIFYING NO SYSTEM INITIALIZATION.
    113					;
    114					;	WHEN THE BOOTSTRAP ROM IS INITIATED (BY ONE OF THE BUTTONS)
    115					; BLOCK ZERO OF THE DEVICE IS READ INTO THE FIRST 256. WORDS OF MEMORY.
    116					; THIS CODE THEN READS THE REMAINDER OF THE SYSTEM INTO CORE, READING
    117					; OVER ITSELF, SINCE THE BOOTSTRAP IS ALSO  CONTAINED IN THE FIRST
    118					; BLOCK OF THE SYSTEM IMAGE.  THE BOOTSTRAP THEN TRANSFERS CONTROL
    119					; (IN USER MODE) TO THE RESTORE CODE, CONTINUING EXECUTION OF THE
    120					; SAVE TASK.
    121					;
    122					;	THE SYSTEM STATE IS RESTORED BY FIRST RESTORING LOW CORE FROM
    123					; THE SAVE AREA.  THE KT-11 REGISTERS ARE RESTORED (IF THEY WERE SAVED).
    124					; A POWER-RECOVERY
    125					; IS SIMULATED BY SETTING EV.PR IN .SERFG, AND INTERRUPTS ARE
    126					; RE-ENABLED, AT PRIORITY ZERO.  THE TOPS HOM BLOCKS ARE
    127					; READ FROM RP BOOT UNIT (IF RP BOOT) TO FIND WHERE THE RSX-20F FILE SYSTEM
    128					; IS ON THAT PACK.  WARNINGS ARE PRINTED IF THE HOM BLOCKS CANNOT BE READ,
    129					; THE HOM BLOCKS ARE INCONSISTENT, OR THE RSX-20F FILE SYSTEM IS NOT SET UP.
    130					; IF NO HOM BLOCKS ARE FOUND, THE PACK IS ASSUMED TO BE ENTIRELY AN RSX-20F
    131					; FILE SYSTEM.
    132					;
    133					;	IF THE PARAMETER FROM THE ROM
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 20-1
GENERAL DESCRIPTION OF SAVE FUNCTION

    134					; INDICATES SYSTEM INITIALIZATION IS NECCESARY (BP.LD1!BP.LD0 = 00 OR 11)
    135					; A REQUEST FOR THE SYSTEM INITIALIZATION TASK SYSINI IS MADE.
    136					; A SYSTEM RESTART MESSAGE IS ALSO PRINTED.  THE SAVE TASK THEN EXITS.
    137					;
    138					;	AVAILABLE MODIFIERS:
    139					; /WB	(OFF) WRITE BOOT
    140					; /WS	(ON)  WRITE SAVE FILE
    141					; /AB	(OFF) SAVE TO FIXED DISK ADDRESS (NEAR END OF VOLUME) (ONLY IF FTABS DEFINED)
    142					; /EX	(ON)  EXIT AFTER SAVE COMPLETE
    143					; /MO	(OFF) MOUNT VOLUME BEFORE CREATING SAVE FILE
    144					; /DM	(OFF) DISMOUNT VOLUME AFTER CREATING SAVE FILE
    145					; /RH	(ON)  READ HOM BLOCKS TO FIND RSX-20F FILE SYSTEM
    146					;
    147					;-
    148					;
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 21
MACROS AND PARAMETERS

    150						.SBTTL	MACROS AND PARAMETERS
    151					;
    152					; ASSEMBLY CONDITIONS
    153					;
    154						.LIST	MEB
    155						.ENABLE	AMA
    156					;
    157					; MISC. .MCALLS
    158					;
    159					.MCALL $DEF,QIOSY$,ALUN$S,QIOW$S,GTIM$S,EXIT$S,RQST$S,CLEF$S,MRKT$S,WTSE$S
    160					.MCALL CALL,RETURN,PUSH,POP,MTPI,MFPI,MFPS,MTPS,.INH,.ENB,.INH6,.ENB6
    161	000000					$DEF
    162	000000					QIOSY$
    163					;
    164					; MACROS
    165					;
    166					.MACRO	TYPE	MSG,ARG
    167						.PSECT	TEXT
    168					$$$=.
    169						.ASCIZ	"MSG"
    170						.PSECT
    171						PUSH	#$$$
    172					.IF NB <ARG>
    173						CALL	TYP'ARG
    174					.IFF
    175						CALL	TYPMSG
    176					.ENDC
    177					.ENDM	TYPE
    178					;
    179					.MACRO	ERROR	MSG
    180						TYPE	<"<11>"MSG"<5>">
    181					.ENDM	ERROR
    182					;
    183					.MACRO	WARN	MSG
    184						TYPE	<"<12>"MSG"<1>">
    185					.ENDM	WARN
    186					;
    187					;
    188					; PARAMETERS
    189					;
    190					; DEFINE "FTABS= 1" TO ALLOW FOR /AB (ABSOLUTE SAVE)
    191					;	$DTA = 1		;[**]
    192					;
    193					; LUN ASSIGNMENTS
    194					;
    195		000001 			CTYLUN=	1			;LUN FOR CTY
    196		000002 			DSKLUN=	2			;LUN FOR SAVE DEVICE
    197					;
    198					; EVENT FLAGS
    199					;
    200		000001 			E.FQIO=	1			; (1) QIO WAIT REQUEST
    201		000001 			 EF.QIO=BIT0
    202					;
    203		000002 			E.FTMO= 2			; +++001 (2) TIME OUT FLAG
    204		000002 			 EF.TMO=BIT1
    205					;
    206		000003 			E.FLOG= 3			; +++004 (3) KLINIK LOG DONE FLAG
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 21-1
MACROS AND PARAMETERS

    207		000004 			 E.FLOG=BIT2			; +++004
    208					;
    209					; BOOTSTRAP ROM PARAMETER BITS
    210					;
    211		100000 			BP.ERR=	BIT15			;INDEFINITE ERROR RETRY
    212		074000 			BP.CLN=	BIT14!BIT13!BIT12!BIT11	;CONSOLE LINE NUMBER (WITHIN DH/DL)
    213		003400 			BP.UNT=	BIT10!BIT9!BIT8		;BOOT UNIT NUMBER OR DH UNIT NUMBER
    214		000200 			BP.RP4=	BIT7			;LOAD FROM RP04/RP06
    215		000170 			BP.CSP=	BIT6!BIT5!BIT4!BIT3	;CONSOLE SPEED IF DH, 1 IF DL, 0 IF DEFAULT
    216		000004 			BP.LD1=	BIT2			;LOAD CONDITION BITS
    217		000002 			BP.LD0=	BIT1			; . . .
    218									; .EQ. 00 -- AUTO DEADSTART ENTIRE SYSTEM
    219									; .EQ. 01 -- DEADSTART RSX20F ONLY
    220									; .EQ. 10 -- REBOOT RSX20F
    221									; .EQ. 11 -- OPERATOR CONTROLLED (RE)START
    222		000001 			BP.SWR=	BIT0			;SWITCH REGISTER BUTTON PUSHED
    223					;
    224					; PS BITS
    225					;
    226		140000 			PS.USR=	BIT15!BIT14
    227		030000 			PS.PUS=	BIT13!BIT12
    228		004000 			PS.REG=	BIT11
    229					;
    230					; WORDS IN HOM BLOCK
    231					;
    232		000000 			HOMNAM=	0			;SIXBIT/HOM/
    233		105755 			 SXBTHM= 105755			; TRUNCATED TO 16 BITS
    234		000061 			HOMFE0=	61			;ADDRESS OF -11 FILE SYSTEM
    235		000062 			HOMFE1=	62			;SIZE OF FILE SYSTEM
    236					;
    237					; EXTEND CONTROL BITS FOR QUEUE I/O FUNCTION IO.EXT
    238					;  IN BYTE I.EXTD+1 OF REQUEST
    239					;
    240		000001 			EX.AC1=	BIT0			;ALLOCATE CONTIGUOUS SPACE
    241		000004 			EX.FCO=	BIT2			;MAKE FILE CONTIGUOUS
    242		000200 			EX.ENA=	BIT7			;ENABLE EXTEND
    243					;
    244					; ACCESS CONTROL BITS FOR QUEUE I/O ACCESS FUNCTIONS
    245					;  IN BYTE I.ACTL OF REQUEST
    246					;
    247		000200 			AC.ENA=	BIT7			;ENABLE ACCESS
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 22
DEVICE REGISTER DEFINITIONS

    249						.SBTTL	DEVICE REGISTER DEFINITIONS
    250					;
    251					; RX-11 DEVICE REGISTER DEFINITIONS
    252					;
    253		000006 			RX.LVL=6
    254		177170 			RXCS=	177170			;CONTROL AND STATUS REGISTER
    255		100000 				RXERR=	BIT15		;ERROR
    256		040000 				RXINIT=	BIT14		;INITIALIZE RX-11
    257		000200 				RXTREQ=	BIT7		;TRANSFER REQUEST
    258		000040 				RXDONE=	BIT5		;TRANSFER DONE
    259		000020 				RXUNIT=	BIT4		;UNIT SELECT
    260		000016 				RXFUNC=	BIT3!BIT2!BIT1	;FUNCTION:
    261		000000 					RXFILL=	0*BIT1	; FILL SECTOR BUFFER
    262		000002 					RXEMPT=	1*BIT1	; EMPTY SECTOR BUFFER
    263		000004 					RXWRIT=	2*BIT1	; WRITE SECTOR
    264		000006 					RXREAD=	3*BIT1	; READ SECTOR
    265		000016 					RXRERR=	7*BIT1	; READ ERROR REGISTER
    266		000001 				RXGO=	BIT0		;START FUNCTION
    267		177172 			RXDB=	177172			;MULTI-PURPOSE DATA BUFFER REGISTER (BYTE)
    268					;
    269					; RP04/RP06 DEVICE REGISTER DEFINITIONS
    270					;
    271		176700 			RPCS1=	176700			;CONTROL/STATUS REGISTER 1
    272		040000 				RPTRE=	BIT14		;TRANSFER ERROR
    273		020000 				RPMCPE=	BIT13		;MASSBUS CONTROL PARITY ERROR
    274		004000 				RPDVA=	BIT11		;DRIVE AVAILABLE (TO -11)
    275		000200 				RPRDY=	BIT7		;READY FOR FUNCTION
    276		000076 				RPFUNC=	BIT5!BIT4!BIT3!BIT2!BIT1 ;FUNCTION:
    277		000000 					RPNOOP=	0*BIT1	; NO-OP
    278		000020 					RPPRST=	10*BIT1	; READ-IN PRESET
    279		000060 					RPWRIT=	30*BIT1	; WRITE DATA
    280		000070 					RPREAD=	34*BIT1	; READ DATA
    281		000001 				RPGO=	BIT0		;START FUNCTION
    282		176702 			RPWC=	176702			;WORD COUNT REGISTER
    283		176704 			RPBA=	176704			;UNIBUS ADDRESS REGISTER
    284		176706 			RPDA=	176706			;TRACK (HIGH BYTE) SECTOR (LOW BYTE)
    285		176710 			RPCS2=	176710			;CONTROL/STATUS REGISTER 2
    286		000007 				RPUNIT=	BIT2!BIT1!BIT0	;UNIT #
    287		176712 			RPDS=	176712			;DRIVE STATUS REGISTER
    288		100000 				RPATA=	BIT15		;DRIVE ATTENTION ACTIVE
    289		040000 				RPERR=	BIT14		;DRIVE ERROR
    290		010000 				RPMOL=	BIT12		;MEDIUM ON-LINE
    291		001000 				RPPGM=	BIT9		;PROGRAMMABLE (A/B) MODE
    292		000400 				RPDPR=	BIT8		;DRIVE PRESENT
    293		176726 			RPDT=	176726			;DRIVE TYPE REGISTER
    294		000020 				RPDT04=	20		;TYPE= RP04
    295		000022 				RPDT06=	22		;TYPE= RP06
    296		176730 			RPSN=	176730			; [**] SERIAL NUMBER REGISTER
    297		176732 			RPOF=	176732			;OFFSET REGISTER
    298		010000 				RPFM22=	BIT12		;22-SECTOR FORMAT
    299		004000 				RPECCI=	BIT11		;INHIBIT ERROR CORRECTION
    300		176734 			RPDC=	176734			;DESIRED CYLINDER
    301					;
    302					; TC-11 DECTAPE DEVICE REGISTER DEFINITIONS
    303					;
    304		177340 			TCST=	177340			;STATUS REGISTER
    305		100000 				TCENDZ=	BIT15		;END-ZONE ERROR
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 22-1
DEVICE REGISTER DEFINITIONS

    306		177342 			TCCM=	177342			;COMMAND REGISTER
    307		100000 				TCERR=	BIT15		;ERROR
    308		004000 				TCREV=	BIT11		;REVERSE DIRECTION (TOWARD FOWARD END-ZONE)
    309		003400 				TCUNIT=	BIT10!BIT9!BIT8	;UNIT SELECT
    310		000200 				TCRDY=	BIT7		;READY
    311		000016 				TCFUNC=	BIT3!BIT2!BIT1	;FUNCTION:
    312		000000 					TCSATM=	0*BIT1	; STOP ALL TAPE MOTION
    313		000002 					TCRNUM=	1*BIT1	; READ BLOCK NUMBERS
    314		000004 					TCREAD=	2*BIT1	; READ DATA
    315		000010 					TCSTOP=	4*BIT1	; STOP SELECTED TAPE
    316		000014 					TCWRIT=	6*BIT1	; WRITE DATA
    317		000001 				TCGO=	BIT0		;START FUNCTION
    318		177344 			TCWC=	177344			;WORD COUNT REGISTER
    319		177346 			TCBA=	177346			;BUS ADDRESS REGISTER
    320		177350 			TCDT=	177350			;DATA REGISTER
    321					;
    322					; DTE-20 DEVICE REGISTER DEFINITIONS
    323					;
    324		000774 			DTVECA=	774			;DTE-20 #0 INTERRUPT VECTOR (THEY GO DOWN!)
    325		174400 			DTEXPA=	174400			;EXTERNAL PAGE ADDRESS OF DTE #0
    326		000040 			DTEXPZ=	40			;SIZE OF ADDRESS BLOCK FOR DTE
    327					;
    328		000034 			DTSTAT=	34			;STATUS REGISTER
    329		004000 				DT11DB=	BIT11		;(READ/WRITE) TO -11 DOORBELL
    330		002000 				DTCL11=	BIT10		;(WRITE) CLEAR TO -11
    331		000040 				DTINON=	BIT5		;(WRITE) INTERRUPT ENABLE
    332		000010 				DTINOF=	BIT3		;(WRITE) INTERRUPT DISABLE
    333		000010 				DTRSMD=	BIT3		;(READ) RESTRICTED MODE
    334					;
    335					; DH-11 DEVICE REGISTER DEFINITIONS
    336					;
    337		160020 			DHEXPA=	160020			;EXTERNAL PAGE ADDRESS OF FIRST DH-11
    338		000020 			DHEXPZ=	20			;SIZE OF ADDRESS SPACE FOR ONE DH
    339					;
    340					;DM-11/BB REGISTER DEFINITIONS
    341					;
    342		170500 			DMEXPA=170500			; [4.1.1091] EXTERNAL PAGE ADDRESS OF FIRST DM-11/BB
    343					;
    344					; KL-11 LINE CLOCK REGISTER DEFINITION
    345					;
    346		177546 			LKS=	177546
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 23
SAVE TASK IMPURE DATA AREA

    348						.SBTTL	SAVE TASK IMPURE DATA AREA
    349					;
    350					; VARIABLES
    351					;
    352	000000				SPSAVE::	.BLKW	1		;SAVE'S SP IN IMAGE
    353	000002				DRVADR:	.BLKW	1		;ADDRESS OF DRIVER TABLE ENTRY FOR DEVICE
    354	000004				DSKADR:	.BLKW	2		;PHYSICAL DISK ADDRESS OF SAVE FILE
    355	000010				DSKSIZ:	.BLKW	2		;SIZE OF SAVE FILE *** MUST FOLLOW DSKADR ***
    356	000014				MEMSIZ:	.BLKW	1		;SIZE OF SYSTEM IN 32. WORD BLOCKS
    357	000016				RADIX:	.BLKW	1		;OUTPUT RADIX FOR TYPNUM
    358	000020				GTIMBF:	.BLKW	8.		;GET TIME PARAMETERS RETURN BLOCK
    359	000040				CMDCLR:				;START OF AREA TO CLEAR ON STARTUP
    360	000040				PUDADR:	.BLKW	1		;ADDRESS OF SAVE DEVICE PUD ENTRY
    361	000042				DEVNAM:	.BLKW	1		;DEVICE NAME
    362	000044				DEVUNT:	.BLKB	1		;DEVICE UNIT #
    363	000045				PUDIDX:	.BLKB	1		;PUD INDEX FOR THE SAVE DEVICE
    364	000046				WBFLAG:	.BLKB	1		;WRITE BOOT FLAG: 0 DON'T WRITE BOOT
    365									;		  1 WRITE BOOT (/WB SPECFIED)
    366	000047				WSFLAG:	.BLKB	1		;1-- WRITE SAVE FILE
    367					.IF DF FTABS
    368					ABFLAG:	.BLKB	1		;1-- SAVE AT ABSOLUTE PLACE ON DISK
    369					.ENDC ; .IF DF FTABS
    370	000050				EXFLAG:	.BLKB	1		;1-- EXIT WHEN DONE WITH SAVE
    371	000051				MOFLAG:	.BLKB	1		;1-- MOUNT DEVICE BEFORE CREATING SAVE FILE
    372	000052				DMFLAG:	.BLKB	1		;1-- DISMOUNT ALL DEVICES AFTER CREATING SAVE FILE
    373	000053				RHFLAG:	.BLKB	1		;1-- READ HOME BLOCKS
    374	000054				RNFLAG:	.BLKB	1		;1-- RP NOT READY
    375	000055				RPFLAG:	.BLKB	1		;1-- RP NOT IN A/B MODE
    376	000056				QEFLAG:	.BLKB	1		;NON-ZERO-- QIO ERROR CODE FROM FILQIO
    377	000057				ACFLAG:	.BLKB	1		;FLAG ACCESS DONE
    378	000060				WEFLAG:	.BLKB	1		;WRITE ERROR FLAG: 0 WRITE OK
    379									;		   1 WRITE ERROR DURING SAVE
    380	000061				DEFLAG:	.BLKB	1		;DTE-20 # NOT AT PRI 6 (-1 IF ALL OK)
    381	000062				ALTDXF:	.BLKW	1		; +++006 ALTERNATE DX MOUNT FLAG
    382		000024 			CMDCLN=.-CMDCLR			;LENGTH OF AREA TO CLEAR
    383					;
    384					; SAVE AREA FOR LOW CORE
    385					;
    386						.EVEN
    387	000064				LOWCOR:
    388					;
    389					; MISC. BUFFERS (OVERWRITTEN BY LOW CORE)
    390					;
    391	000064				HOMBUF:				;BUFFER FOR HOM BLOCKS
    392	000064				TYPBUF:	.BLKB	100.		;BUFFER FOR CTY OUTPUT
    393	000230				CTYBUF:	.BLKB	80.		;BUFFER FOR INPUT FROM CTY
    394		000120 			CTYBFL=	.-CTYBUF
    395	000350	   000 				.BYTE	0		;TO MAKE ASCIZ ALWAYS
    396						.EVEN
    397	000352					.BLKB	<256.*2.>-<.-LOWCOR> ;REST OF LOW CORE
    398	001064				QIOSTS:	.BLKW	2		;QIO STATUS BLOCK
    399	001070				LOGBUF:				; +++004 KLINIK LOG BUFFER
    400	001070	000004 				.WORD	4		; +++004
    401	001072	000000G				.WORD	DV.LOG		; +++004
    402	001074	000000 				.WORD	0		; +++004
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 24
PURE DATA

    404						.SBTTL	PURE DATA
    405					;
    406					; FILE ID BLOCK
    407					;
    408	001076	000005 	000005 		FIDBLK:	.WORD	5,5		;FILE ID 5, FIL SEQ # 5 IS SYSTEM SAVE FILE
    409					;
    410					; ATTRIBUTE CONTROL BLOCK
    411					;
    412	001102	   367 			ATCBLK:	.BYTE	-9.		;ATTRIBUTE 9 (STATISTICS BLOCK), READ
    413	001103	   010 				.BYTE	8.		;8. BYTES OF STATISTICS (FILE ADDR AND SIZE)
    414	001104	000004'				.WORD	DSKADR		;STORE IN DSKADR AND DSKSIZ
    415	001106	   000 	   000 			.BYTE	0,0		;END OF ATTRIBUTE CONTROL BLOCK
    416					;
    417					; MOUNT/DISMOUNT FUNCTION BLOCKS
    418					;
    419	001110	   001 			MNTBLK:	.BYTE	1		;FUNCTION: MOUNT
    420	001111	   001 				.BYTE	1		;LENGTH OF STRING
    421	001112	001114'				.WORD	1$		;ADDRESS OF STRING
    422	001114	   072 			1$:	.ASCII	/:/
    423						.EVEN
    424					;
    425	001116	   002 			DMTBLK:	.BYTE	2		;FUNCTION: DISMOUNT
    426	001117	   000 				.BYTE	0		;NO STRING
    427					;
    428					; TASK NAME FOR KL INITIALIZATION TASK
    429					;
    430	001120	131574 	043251 		KLINIT:	.RAD50	/...KLI/	;KL INITIALIZATION TASK NAME
    431					;
    432					; TABLE OF SPEED WORDS FOR CONSOLE DH FROM BOOT PARAMETER, BP.SPD
    433					;
    434					.MACRO SPD A,B
    435						 .WORD	<A*BIT10>!<A*BIT6>!<B>
    436					.ENDM SPD
    437	001124				DHSTAB:
    438	001124					SPD	0,0		;(0) CONSOLE NOT SPECIFIED
	001124	000000 				 .WORD	<0*BIT10>!<0*BIT6>!<0>
    439	001126					SPD	0,0		;(1) DL-11 LINE, NO SPEED
	001126	000000 				 .WORD	<0*BIT10>!<0*BIT6>!<0>
    440	001130					SPD	0,0		;(2) DL-11 LINE, NO SPEED
	001130	000000 				 .WORD	<0*BIT10>!<0*BIT6>!<0>
    441	001132					SPD	3,BIT2!BIT1!BIT0 ;(3) 110 BAUD, 8 DATA BITS, 2 STOP BITS
	001132	006307 				 .WORD	<3*BIT10>!<3*BIT6>!<BIT2!BIT1!BIT0>
    442	001134					SPD	4,BIT2!BIT1	;(4) 134.5 BAUD, 7 DATA BITS, 2 STOP BITS
	001134	010406 				 .WORD	<4*BIT10>!<4*BIT6>!<BIT2!BIT1>
    443	001136					SPD	5,BIT2!BIT1!BIT0 ;(5) 150 BAUD, 8 DATA BITS, 2 STOP BITS
	001136	012507 				 .WORD	<5*BIT10>!<5*BIT6>!<BIT2!BIT1!BIT0>
    444	001140					SPD	6,BIT2!BIT1!BIT0 ;(6) 200 BAUD, 8 DATA BITS, 2 STOP BITS
	001140	014607 				 .WORD	<6*BIT10>!<6*BIT6>!<BIT2!BIT1!BIT0>
    445	001142					SPD	7,BIT1!BIT0	;(7) 300 BAUD, 8 DATA BITS, 1 STOP BIT
	001142	016703 				 .WORD	<7*BIT10>!<7*BIT6>!<BIT1!BIT0>
    446	001144					SPD	10,BIT1!BIT0	;(10) 600 BAUD, 8 DATA BITS, 1 STOP BIT
	001144	021003 				 .WORD	<10*BIT10>!<10*BIT6>!<BIT1!BIT0>
    447	001146					SPD	11,BIT1!BIT0	;(11) 1200 BAUD, 8 DATA BITS, 1 STOP BIT
	001146	023103 				 .WORD	<11*BIT10>!<11*BIT6>!<BIT1!BIT0>
    448	001150					SPD	12,BIT1!BIT0	;(12) 1800 BAUD, 8 DATA BITS, 1 STOP BIT
	001150	025203 				 .WORD	<12*BIT10>!<12*BIT6>!<BIT1!BIT0>
    449	001152					SPD	13,BIT1!BIT0	;(13) 2400 BAUD, 8 DATA BITS, 1 STOP BIT
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 24-1
PURE DATA

	001152	027303 				 .WORD	<13*BIT10>!<13*BIT6>!<BIT1!BIT0>
    450	001154					SPD	14,BIT1!BIT0	;(14) 4800 BAUD, 8 DATA BITS, 1 STOP BIT
	001154	031403 				 .WORD	<14*BIT10>!<14*BIT6>!<BIT1!BIT0>
    451	001156					SPD	15,BIT1!BIT0	;(15) 9600 BAUD, 8 DATA BITS, 1 STOP BIT
	001156	033503 				 .WORD	<15*BIT10>!<15*BIT6>!<BIT1!BIT0>
    452	001160					SPD	0,0		;(16) DL-11, 8 DATA BITS, NO SPEED
	001160	000000 				 .WORD	<0*BIT10>!<0*BIT6>!<0>
    453	001162					SPD	0,0		;(17) DL-11, NO SPEED
	001162	000000 				 .WORD	<0*BIT10>!<0*BIT6>!<0>
    454
    455	001164				SAVLMT::			; +++002 SAVE IMAGE LIMITS
    456	001164	000000 	000000 			.LIMIT			; +++002
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 25
PARSE COMMAND LINE

    458						.SBTTL	PARSE COMMAND LINE
    459					;
    460					; REQUEST FOR SAVE BY MCR SAV COMMAND CALLS SAVE HERE
    461					;
    462	001170				SAVE::
    463					;
    464					; SETUP COMMAND DEFAULTS
    465					;
    466	001170	012701 	000040'			MOV	#CMDCLR,R1	;GET START OF AREA TO CLEAR
    467	001174	012705 	000024 			MOV	#CMDCLN,R5	;AND LENGTH OF AREA, IN BYTES
    468	001200				10$:
    469	001200	105021 				CLRB	(R1)+		;CLEAR A BYTE
    470	001202	077502 				SOB	R5,10$		;CLEAR 'EM ALL
    471	001204	105237 	000047'			INCB	WSFLAG		;DEFAULT TO WRITE SAVE FILE
    472	001210	105237 	000050'			INCB	EXFLAG		; AND TO EXIT WHEN DONE
    473	001214	105237 	000053'			INCB	RHFLAG		; AND TO READ HOME BLOCKS
    474	001220	105237 	000052'			INCB	DMFLAG		; AND TO DISMOUNT ALL VOLUMES
    475					;
    476					; SETUP TO READ A LINE FROM THE CTY
    477					;
    478	001224					ALUN$S	#CTYLUN,#"TT,#0	;ASSIGN CTY TO LUN 1
	001224	005046 				CLR	-(SP)
	001226	012746 	052124 			MOV	#"TT,-(SP)
	001232	012746 	000001 			MOV	#CTYLUN,-(SP)
	001236	012746 				MOV	(PC)+,-(SP)
	001240	   007 	   004 			.BYTE	7.,4
	001242	104375 				EMT	375
    479	001244	103530 				BCS	EXITA		;GIVE UP IF NO CTY!!!!
    480	001246					TYPE	^\SAV>\		;TYPE PROMPT MESSAGE
	000000	   123 	   101 	   126 		.ASCIZ	"SAV>"
	000003	   076 	   000
	001246	012746 	000000'			MOV	#$$$,-(SP)
	001252	004737 	006112'			JSR	PC,TYPMSG
    481	001256					QIOW$S	#IO.RLB,#CTYLUN,#E.FQIO,,#QIOSTS,,<#CTYBUF,#CTYBFL>
	001256	012746 	000120 			MOV	#CTYBFL,-(SP)
	001262	012746 	000230'			MOV	#CTYBUF,-(SP)
	001266	005046 				CLR	-(SP)
	001270	012746 	001064'			MOV	#QIOSTS,-(SP)
	001274	005046 				CLR	-(SP)
	001276	112716 	000001 			MOVB	#E.FQIO,(SP)
	001302	012746 	000001 			MOV	#CTYLUN,-(SP)
	001306	012746 	001000 			MOV	#IO.RLB,-(SP)
	001312	012746 				MOV	(PC)+,-(SP)
	001314	   003 	   010 			.BYTE	3,$$$T1
	001316	104375 				EMT	375
    482	001320	103502 				BCS	EXITA		;GIVE UP IF FAILURE
    483	001322	105737 	001064'			TSTB	QIOSTS+0	;ERROR STATUS
    484	001326	002477 				BLT	EXITA		;YES-- THAT'S ENOUGH
    485	001330	122737 	000003 	001065'		CMPB	#'C-100,QIOSTS+1 ;THIS TERMINATED BY ^C?
    486	001336	001473 				BEQ	EXITA		;YES-- GIVE UP FAST
    487	001340					TYPE	<"<1>">		;INSURE A <CR><LF>
	000005	   001 	   000 			.ASCIZ	""<1>""
	001340	012746 	000005'			MOV	#$$$,-(SP)
	001344	004737 	006112'			JSR	PC,TYPMSG
    488	001350	013704 	001066'			MOV	QIOSTS+2,R4	;GET # CHARACTERS TYPED AT ME
    489	001354	105064 	000230'			CLRB	CTYBUF(R4)	;CLEAR LAST BYTE OF INPUT (MAKE ASCIZZZ)
    490	001360	012704 	000230'			MOV	#CTYBUF,R4	;POINT TO START OF INPUT TO PARSE
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 25-1
PARSE COMMAND LINE

    491					;
    492					; NOW TO PARSE THE LINE
    493					;
    494	001364					CALL	GETNB		;GET NON-BLANK CHARACTER
	001364	004737 	005760'			JSR	PC,GETNB
    495	001370	001677 				BEQ	SAVE		;BACK TO SAVE IF NULL COMMAND
    496	001372					CALL	GETNAM		;GET A DEVICE NAME
	001372	004737 	006002'			JSR	PC,GETNAM
    497	001376	103471 				BCS	SYNERR		;NO SUCH LUCK
    498	001400	010037 	000042'			MOV	R0,DEVNAM	;SAVE THE TYPED NAME
    499	001404	001411 				BEQ	20$		;NULL NAME-- GO ON FOR MODIFIERS
    500	001406					CALL	GETNUM		;GET UNIT NUMBER OF DEVICE (IF ANY)
	001406	004737 	006046'			JSR	PC,GETNUM
    501	001412	103463 				BCS	SYNERR		;TOO BIG-- COMPLAIN
    502	001414	110037 	000044'			MOVB	R0,DEVUNT	;SAVE THE UNIT NUMBER
    503	001420	122724 	000072 			CMPB	#':,(R4)+	; : FOLLOWING DEVICE?
    504	001424	001401 				BEQ	20$		;YES-- IGNORE IT
    505	001426	105744 				TSTB	-(R4)		;NO-- GO BACK TO LOOK AT IT AGAIN
    506					;
    507					; LOOK FOR ALL MODIFIERS
    508					;
    509	001430				20$:
    510	001430					CALL	GETNB		;SKIP BLANKS AFTER UNIT
	001430	004737 	005760'			JSR	PC,GETNB
    511	001434	001457 				BEQ	CMDONE		;END OF COMMAND-- ALL OK
    512	001436	122700 	000057 			CMPB	#'/,R0		;THIS A MODIFIER?
    513	001442	001047 				BNE	SYNERR		;NO-- BAD CHARACTER
    514	001444	105724 				TSTB	(R4)+		;YES-- SKIP OVER IT
    515	001446	012702 	000001 			MOV	#1,R2		;ASSUME NOT /-(SW)
    516	001452	122714 	000055 			CMPB	#'-,(R4)	;THIS /-(SW)?
    517	001456	001002 				BNE	30$		;NO-- GO ON
    518	001460	105724 				TSTB	(R4)+		;YES-- SKIP OVER -
    519	001462	005002 				CLR	R2		;AND SET TO CLEAR THE FLAG
    520	001464				30$:
    521	001464					CALL	GETNAM		;GET THE MODIFIER
	001464	004737 	006002'			JSR	PC,GETNAM
    522	001470	103434 				BCS	SYNERR		;TOO LONG-- GIVE UP
    523	001472	012701 	001532'			MOV	#MODTBL,R1	;GET ADDRESS OF SWITCH TABLE
    524	001476	012705 	000006 			MOV	#MODTLN,R5	; AND LENGTH OF IT
    525	001502				40$:
    526	001502	020021 				CMP	R0,(R1)+	;THIS MODIFIER MATCH?
    527	001504	001002 				BNE	50$		;NO-- LOOP FOR MORE
    528	001506	110231 				MOVB	R2,@(R1)+	;YES-- SET THE FLAG AS REQUESTED
    529	001510	000747 				BR	20$		;LOOP FOR ALL MODIFIERS
    530					;
    531	001512				50$:
    532	001512	005721 				TST	(R1)+		;NO-- SKIP OVER FLAG ADDRESS
    533	001514	077506 				SOB	R5,40$		;NO-- LOOP FOR ALL MODIFIERS
    534	001516					ERROR	<Illegal modifier /"<2>">
	000007	   011 	   111 	   154 		.ASCIZ	""<11>"Illegal modifier /"<2>""<5>""
	000012	   154 	   145 	   147
	000015	   141 	   154 	   040
	000020	   155 	   157 	   144
	000023	   151 	   146 	   151
	000026	   145 	   162 	   040
	000031	   057 	   002 	   005
	000034	   000
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 25-2
PARSE COMMAND LINE

	001516	012746 	000007'			MOV	#$$$,-(SP)
	001522	004737 	006112'			JSR	PC,TYPMSG
    535	001526				EXITA:
    536	001526	000137 	005750'			JMP	EXIT		;TOO FAR TO HOP
    537					;
    538					; MODIFIER TABLE
    539					;
    540	001532				MODTBL:
    541					.IRP	ARG,<WB,WS,EX,MO,DM,RH>
    542						.ASCII	/ARG/
    543						.EVEN
    544						.WORD	ARG'FLAG
    545					.ENDM
	001532	   127 	   102 			.ASCII	/WB/
	001534	000046'				.WORD	WBFLAG
	001536	   127 	   123 			.ASCII	/WS/
	001540	000047'				.WORD	WSFLAG
	001542	   105 	   130 			.ASCII	/EX/
	001544	000050'				.WORD	EXFLAG
	001546	   115 	   117 			.ASCII	/MO/
	001550	000051'				.WORD	MOFLAG
	001552	   104 	   115 			.ASCII	/DM/
	001554	000052'				.WORD	DMFLAG
	001556	   122 	   110 			.ASCII	/RH/
	001560	000053'				.WORD	RHFLAG
    546					.IF DF FTABS
    547						.ASCII	/AB/
    548						.EVEN
    549						.WORD	ABFLAG
    550					.ENDC ; .IF DF FTABS
    551		000006 			MODTLN=<.-MODTBL>/4
    552					;
    553					; COMMAND ERRORS
    554					;
    555	001562				SYNERR:
    556	001562	010400 				MOV	R4,R0		;POINT INPUT STRING TO OUTPUT STRING
    557	001564					ERROR	<Syntax error: "<4>">
	000035	   011 	   123 	   171 		.ASCIZ	""<11>"Syntax error: "<4>""<5>""
	000040	   156 	   164 	   141
	000043	   170 	   040 	   145
	000046	   162 	   162 	   157
	000051	   162 	   072 	   040
	000054	   004 	   005 	   000
	001564	012746 	000035'			MOV	#$$$,-(SP)
	001570	004737 	006112'			JSR	PC,TYPMSG
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 26
SETUP SAVE FILE

    559						.SBTTL	SETUP SAVE FILE
    560					;
    561					; THE COMMAND STRING IS NOW PARSED.  CHECK OUT THE DEVICE HE SPECIFIED.
    562					;
    563	001574				CMDONE:
    564	001574	013701 	000044'			MOV	DEVUNT,R1	;GET SPECIFIED UNIT
    565	001600	013700 	000042'			MOV	DEVNAM,R0	;GET DEVICE SPECIFIED
    566	001604	001003 				BNE	10$		;SPECIFIED-- GO ASSIGN IT
    567	001606	012700 	054523 			MOV	#"SY,R0		;NONE-- DEFAULT TO SYSTEM DEVICE
    568	001612	005001 				CLR	R1		; SY0:
    569					;
    570	001614				10$:
    571	001614					ALUN$S	#DSKLUN,R0,R1	;ASSIGN THE DEVICE TO LUN 2
	001614	010146 				MOV	R1,-(SP)
	001616	010046 				MOV	R0,-(SP)
	001620	012746 	000002 			MOV	#DSKLUN,-(SP)
	001624	012746 				MOV	(PC)+,-(SP)
	001626	   007 	   004 			.BYTE	7.,4
	001630	104375 				EMT	375
    572	001632	103403 				BCS	DNSERR		;OOPS-- DEVICE NOT IN SYSTEM
    573	001634					CALL	FINDEV		;FIND PUD ENTRY ADDRESS FOR DEVICE
	001634	004737 	006672'			JSR	PC,FINDEV
    574	001640	103006 				BCC	DEVCHK		;OK-- CHECK THE DEVICE OUT
    575	001642				DNSERR:
    576	001642	012705 	000042'			MOV	#DEVNAM,R5	;POINT TO DEVICE NAME/UNIT #
    577	001646					ERROR	<Device "<3>" not in system>
	000057	   011 	   104 	   145 		.ASCIZ	""<11>"Device "<3>" not in system"<5>""
	000062	   166 	   151 	   143
	000065	   145 	   040 	   003
	000070	   040 	   156 	   157
	000073	   164 	   040 	   151
	000076	   156 	   040 	   163
	000101	   171 	   163 	   164
	000104	   145 	   155 	   005
	000107	   000
	001646	012746 	000057'			MOV	#$$$,-(SP)
	001652	004737 	006112'			JSR	PC,TYPMSG
    578	001656				DEVCHK:
    579	001656	016505 	000000G			MOV	U.RP(R5),R5	; BUT GET REAL DEVICE
    580	001662	016537 	000000G	000042'		MOV	U.DN(R5),DEVNAM	;SAVE THE REAL DEVICE NAME
    581	001670	116537 	000000G	000044'		MOVB	U.UN(R5),DEVUNT	;SAVE THE REAL UNIT #
    582	001676	012700 	007060'			MOV	#DRVTAB,R0	;GET ADR OF DRIVER TABLE
    583	001702				10$:
    584	001702	026037 	000000 	000042'		CMP	DRVNAM(R0),DEVNAM ;MATCH?
    585	001710	001411 				BEQ	DEVOK		;YES-- GO ON
    586	001712	062700 	000020 			ADD	#DRVSIZ,R0	;BUMP TO NEXT DRIVER ENTRY
    587	001716	020027 	007140'			CMP	R0,#DRVTAB+DRVTBZ ;BEYOND END?
    588	001722	103767 				BLO	10$		;NO-- LOOP UNTIL WE FIND DEVICE
    589	001724					ERROR	<Illegal device "<3>">
	000110	   011 	   111 	   154 		.ASCIZ	""<11>"Illegal device "<3>""<5>""
	000113	   154 	   145 	   147
	000116	   141 	   154 	   040
	000121	   144 	   145 	   166
	000124	   151 	   143 	   145
	000127	   040 	   003 	   005
	000132	   000
	001724	012746 	000110'			MOV	#$$$,-(SP)
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 26-1
SETUP SAVE FILE

	001730	004737 	006112'			JSR	PC,TYPMSG
    590	001734				DEVOK:
    591	001734	023727 	000042'	041104 		CMP	DEVNAM,#"DB	;THIS AN RP04/RP06?
    592	001742	001402 				BEQ	10$		;YES-- OK
    593	001744	105037 	000053'			CLRB	RHFLAG		;NO-- DON'T READ HOM BLOCKS
    594	001750				10$:
    595	001750	010037 	000002'			MOV	R0,DRVADR	;SAVE DRIVER TABLE ENTRY ADDRESS
    596	001754	010537 	000040'			MOV	R5,PUDADR	;SAVE THE PUD ADDRESS OF THE SAVE DEVICE
    597	001760	010500 				MOV	R5,R0		;COPY THE PUD ADDRESS
    598	001762	162700 	000000G			SUB	#.PUDBA,R0	;MAKE R0 INDEX INTO THE PUD
    599	001766	012701 	000000G			MOV	#U.SZ,R1	;COMPUTE AN INDEX
    600	001772					CALL	$DIV		; INTO THE PUD
	001772	004737 	000000G			JSR	PC,$DIV
    601	001776	110037 	000045'			MOVB	R0,PUDIDX	;SAVE THE INDEX
    602					;
    603					; MOUNT THE SPECIFIED VOLUME IF /MO TYPED
    604					;
    605	002002				DEVMNT:
    606	002002	105737 	000051'			TSTB	MOFLAG		;/MO?
    607	002006	001424 				BEQ	SETFIL		;NO-- DON'T MOUNT THE DEVICE
    608	002010	005765 	000000G			TST	U.VA(R5)	;IS THE VOLUME MOUNTED?
    609	002014	001015 				BNE	MOUNTD		;YES-- GO ON
    610					;
    611	002016					CALL	FNDACP		;FIND ACP ADDRESS
	002016	004737 	006730'			JSR	PC,FNDACP
    612	002022	010265 	000000G			MOV	R2,U.ACP(R5)	;SAVE THE ADDRESS SO MOUNT DOESN'T COMPLAIN
    613					;
    614	002026	012702 	001110'			MOV	#MNTBLK,R2	;SET TO MOUNT VOLUME
    615	002032					CALL	FILMNT		;DO THE MOUNT
	002032	004737 	006750'			JSR	PC,FILMNT
    616	002036	103010 				BCC	SETFIL		;OK-- GO ON
    617	002040					ERROR	<Mount error "<7>">
	000133	   011 	   115 	   157 		.ASCIZ	""<11>"Mount error "<7>""<5>""
	000136	   165 	   156 	   164
	000141	   040 	   145 	   162
	000144	   162 	   157 	   162
	000147	   040 	   007 	   005
	000152	   000
	002040	012746 	000133'			MOV	#$$$,-(SP)
	002044	004737 	006112'			JSR	PC,TYPMSG
    618	002050				MOUNTD:
    619	002050					WARN	<Device "<3>" already mounted>
	000153	   012 	   104 	   145 		.ASCIZ	""<12>"Device "<3>" already mounted"<1>""
	000156	   166 	   151 	   143
	000161	   145 	   040 	   003
	000164	   040 	   141 	   154
	000167	   162 	   145 	   141
	000172	   144 	   171 	   040
	000175	   155 	   157 	   165
	000200	   156 	   164 	   145
	000203	   144 	   001 	   000
	002050	012746 	000153'			MOV	#$$$,-(SP)
	002054	004737 	006112'			JSR	PC,TYPMSG
    620					;
    621					; SET UP DISK ADDRESS TO SPECIFIC PLACE IF /AB (ABSOLUTE) SPECIFIED
    622					;
    623	002060				SETFIL:
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 26-2
SETUP SAVE FILE

    624					.IF DF FTABS
    625						TSTB	ABFLAG		;ABSOLUTE DISK SAVE?
    626						BNE	FILABS		;YES-- SET UP ABSOLUTE FILE
    627					.ENDC ; .IF DF FTABS
    628					;	BR	FILFND		;NO-- FIND FILE (5,5)
    629					;
    630					; FIND SAVE FILE (5,5) AND EXTEND IT IF NECESSARY
    631					;
    632	002060				FILFND:
    633	002060	012701 	001076'			MOV	#FIDBLK,R1	;ADDRESS OF FILE-ID BLOCK FOR (5,5)
    634					;
    635					; DO AN ACCESS FOR EXTEND TO FIND IF FILE EXISTS AND WHERE IT IS
    636					;
    637	002064	012700 	007400 			MOV	#IO.ACE,R0	;SET TO ACCESS FOR EXTEND
    638	002070	012702 	001102'			MOV	#ATCBLK,R2	;SET UP ATTRIBUTE CONTROL BLOCK ADDRESS
    639	002074	005003 				CLR	R3		;NO EXTEND CONTROOL
    640	002076	005004 				CLR	R4		; . .
    641	002100	012705 				MOV	(PC)+,R5	;ENABLE ACCESS
    642	002102	   000 	   200 			.BYTE	0,AC.ENA	; . .
    643	002104					CALL	FILQIO		;DO IT TO (5,5)
	002104	004737 	006764'			JSR	PC,FILQIO
    644	002110	103444 				BCS	15$		;ERROR-- JUST CLOSE FILE
    645					;
    646					; FIND OUT HOW BIG THE SAVE FILE SHOULD BE AND SEE IF IT IS BIG ENOUGH
    647					;  CURRENT SIZE IS RETURNED IN DSKSIZ+0, DSKSIZ+2 BY ACCESS
    648					;
    649	002112	013704 	001166'			MOV	SAVLMT+2,R4	; +++002 GET UPPER TASK LIMIT
    650	002116	062704 	003777 			ADD	#3777,R4	; +++002 ROUND UP
    651	002122	042704 	003777 			BIC	#3777,R4	; +++002 TO NEXT K OF WORDS
    652	002126	000241 				CLC			; +++002 CLEAR SIGN BIT AND
    653	002130	006004 				ROR	R4		; +++002 CONVERT TO 32. WORD BLOCKS
    654	002132	006204 				ASR	R4		; +++002
    655	002134	006204 				ASR	R4		; +++002
    656	002136	006204 				ASR	R4		; +++002
    657	002140	006204 				ASR	R4		; +++002
    658	002142	006204 				ASR	R4		; +++002
    659	002144	010437 	000014'			MOV	R4,MEMSIZ	;SAVE THIS FOR WRITING FILE
    660	002150	006204 				ASR	R4		;CONVERT 32. WORD BLOCKS TO 64. WORD BLOCKS
    661	002152	006204 				ASR	R4		; 128. WORD BLOCKS
    662	002154	006204 				ASR	R4		; 256. WORD BLOCKS
    663	002156	105737 	000010'			TSTB	DSKSIZ+0	;IS FILE BIGGER THAN 2**16 BLOCKS????
    664	002162	003017 				BGT	15$		;YES-- CERTAINLY BIG ENOUGH
    665	002164	163704 	000012'			SUB	DSKSIZ+2,R4	;NO-- FIND HOW MUCH MORE  SPACE WE NEED
    666	002170	003414 				BLE	15$		;BIG ENOUGH-- JUST CLOSE
    667	002172	113737 	000057'	000056'		MOVB	ACFLAG,QEFLAG	;ERROR IF WE WERE HERE BEFORE
    668	002200	001010 				BNE	15$		;SO GIVE ERROR
    669					;
    670					; FILE IS NOT BIG ENOUGH-- DO AN EXTEND ON IT, EXTEND INCREMENT IN R4
    671					;
    672	002202	012700 	011400 			MOV	#IO.EXT,R0	;NOT ENOUGH-- SET TO EXTEND FILE
    673	002206	012703 				MOV	(PC)+,R3	;MAKE FILE CONTIGUOUS,
    674	002210	   000 	   205 			.BYTE	0,EX.ENA!EX.AC1!EX.FCO ; HIGH EXTEND INCREMENT= 0
    675	002212	005002 				CLR	R2		;NO ATTRIB
    676	002214	005005 				CLR	R5		; AND NO ACCESS
    677	002216					CALL	FILQIO		;DO IT TO (5,5), EXTEND INCREMENT IN R4
	002216	004737 	006764'			JSR	PC,FILQIO
    678					;
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 26-3
SETUP SAVE FILE

    679					; DEACCESS FILE.  R5= 0 IF EXTEND DONE, QEFLAG= -VE IF ERROR OCCURED
    680					;
    681	002222				15$:
    682	002222	012700 	010000 			MOV	#IO.DAC,R0	;DE-ACCESS FILE
    683	002226	005002 				CLR	R2		;NO ATTRIBUTE CONTROL BLOCK
    684	002230	005003 				CLR	R3		;NO EXTEND BITS
    685	002232	005004 				CLR	R4		; . .
    686	002234					CALL	FILQIO		;DO IT TO (5,5)
	002234	004737 	006764'			JSR	PC,FILQIO
    687	002240	103004 				BCC	FILCHK		;NO ERRRORS-- GO CHECK OUT THE FILE
    688	002242					ERROR	<Create SAVE file (5,5) error "<7>">
	000206	   011 	   103 	   162 		.ASCIZ	""<11>"Create SAVE file (5,5) error "<7>""<5>""
	000211	   145 	   141 	   164
	000214	   145 	   040 	   123
	000217	   101 	   126 	   105
	000222	   040 	   146 	   151
	000225	   154 	   145 	   040
	000230	   050 	   065 	   054
	000233	   065 	   051 	   040
	000236	   145 	   162 	   162
	000241	   157 	   162 	   040
	000244	   007 	   005 	   000
	002242	012746 	000206'			MOV	#$$$,-(SP)
	002246	004737 	006112'			JSR	PC,TYPMSG
    689	002252				FILCHK:
    690	002252	105237 	000057'			INCB	ACFLAG		;FLAG ONE ACCESS
    691	002256	005705 				TST	R5		;DID WE DO AN EXTEND?
    692	002260	001677 				BEQ	FILFND		;YES-- GO BACK AND RE-ACCESS
    693	002262	005000 				CLR	R0		;GET HIGH
    694	002264	153700 	000004'			BISB	DSKADR+0,R0	; DISK ADDRESS (WITHOUT SIGN-EXTEND)
    695	002270	013701 	000006'			MOV	DSKADR+2,R1	;AND ALSO LOW PART
    696	002274	001006 				BNE	FILOK		;NON-ZERO-- WE HAVE A FILE
    697	002276	005700 				TST	R0		;ZERO-- HIGH PART ZERO TOO?
    698	002300	001004 				BNE	FILOK		;NO-- FILE MUST BE CONTIGUOUS (LUCKILY)
    699	002302					ERROR	<SAVE file (5,5) not contiguous>
	000247	   011 	   123 	   101 		.ASCIZ	""<11>"SAVE file (5,5) not contiguous"<5>""
	000252	   126 	   105 	   040
	000255	   146 	   151 	   154
	000260	   145 	   040 	   050
	000263	   065 	   054 	   065
	000266	   051 	   040 	   156
	000271	   157 	   164 	   040
	000274	   143 	   157 	   156
	000277	   164 	   151 	   147
	000302	   165 	   157 	   165
	000305	   163 	   005 	   000
	002302	012746 	000247'			MOV	#$$$,-(SP)
	002306	004737 	006112'			JSR	PC,TYPMSG
    700	002312				FILOK:
    701	002312	013705 	000002'			MOV	DRVADR,R5	;GET ADDRESS OF DRIVER TABLE ENTRY
    702	002316					CALL	@DRVSET(R5)	;CALL PROPER ROUTINE TO SET ADDRESS
	002316	004775 	000002 			JSR	PC,@DRVSET(R5)
    703					.IF DF FTABS
    704						BR	FILSET		;SAVE ADDRESSES AND GO ON
    705					;
    706					; SAVE TO ABSOLUTE DISK ADDRESS-- SET UP DSKADR+0, DSKADR+2
    707					;
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 26-4
SETUP SAVE FILE

    708					FILABS:
    709						MOV	SAVLMT+2,R5	; +++002 GET UPPER TASK LIMIT
    710						ADD	#3777,R5	; +++002 ROUND UP
    711						BIC	#3777,R5	; +++002 TO NEXT K OF WORDS
    712						CLC			; +++002 CLEAR SIGN BIT AND
    713						ROR	R5		; +++002 CONVERT TO 32. WORD BLOCKS
    714						ASR	R5		; +++002
    715						ASR	R5		; +++002
    716						ASR	R5		; +++002
    717						ASR	R5		; +++002
    718						ASR	R5		; +++002
    719						MOV	R5,MEMSIZ	;SAVE THIS FOR WRITING FILE
    720						MOV	DRVADR,R5	;GET ADDRESS OF DRIVER TABLE ENTRY
    721						CALL	@DRVABS(R5)	;CALL PROPER ABSOLUTE SET ROUTINE
    722					.ENDC ; .IF DF FTABS
    723	002322				FILSET:
    724	002322	010037 	000004'			MOV	R0,DSKADR+0	;SAVE THE ADDRESS
    725	002326	010137 	000006'			MOV	R1,DSKADR+2	; BOTH HALVES
    726					;	BR	FILDMO		;GO DISMOUNT (IF /DM)
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 27
DISMOUNT ALL MOUNTED VOLUMES

    728						.SBTTL	DISMOUNT ALL MOUNTED VOLUMES
    729					;
    730					; DO DISMOUNT OF ALL VOLUMES IF /DM SPECIFIED
    731					;
    732	002332				FILDMO:
    733	002332	105737 	000052'			TSTB	DMFLAG		;HE WANT IT DISMOUNTED?
    734	002336	001457 				BEQ	SYSAVE		;NO-- JUST GO SAVE SYSTEM
    735	002340	012702 	001116'			MOV	#DMTBLK,R2	;YES-- SET TO DISMOUNT
    736	002344	012705 	000000G			MOV	#.PUDBA,R5	;START AT BEGINNINING OF THE PUD
    737	002350				FILDM1:
    738	002350	020565 	000000G			CMP	R5,U.RP(R5)	;REDIRECTED?
    739	002354	001043 				BNE	FILDMX		;YES-- WE'LL FIND THE REAL ONE
    740	002356	005765 	000000G			TST	U.VA(R5)	;IS VOLUME MOUNTED?
    741	002362	001440 				BEQ	FILDMX		;NO-- JUST GO ON
    742	002364					ALUN$S	#DSKLUN,U.DN(R5),U.UN(R5) ;YES-- ASSIGN THIS DEVICE
	002364	016546 	000000G			MOV	U.UN(R5),-(SP)
	002370	016546 	000000G			MOV	U.DN(R5),-(SP)
	002374	012746 	000002 			MOV	#DSKLUN,-(SP)
	002400	012746 				MOV	(PC)+,-(SP)
	002402	   007 	   004 			.BYTE	7.,4
	002404	104375 				EMT	375
    743	002406	013700 	000000G			MOV	$DSW,R0		;(IN CASE OF ERROR)
    744	002412	103405 				BCS	DMOERR		;OOPS-- THIS CAN'T HAPPEN!!!!
    745					;
    746	002414				FILDM2:
    747	002414					PUSH	R5		;SAVE THE PUD POINTER
	002414	010546 				MOV	R5,-(SP)
    748	002416					CALL	FILMNT		;DO THE DISMOUNT FUNCTION
	002416	004737 	006750'			JSR	PC,FILMNT
    749	002422					POP	R5		;RESTORE THE POINTER
	002422	012605 				MOV	(SP)+,R5
    750	002424	103004 				BCC	FILDM3		;OK-- GO ON TO NEXT ENTRY
    751	002426				DMOERR:
    752	002426					ERROR	<"<3>" dismount error "<7>">
	000310	   011 	   003 	   040 		.ASCIZ	""<11>""<3>" dismount error "<7>""<5>""
	000313	   144 	   151 	   163
	000316	   155 	   157 	   165
	000321	   156 	   164 	   040
	000324	   145 	   162 	   162
	000327	   157 	   162 	   040
	000332	   007 	   005 	   000
	002426	012746 	000310'			MOV	#$$$,-(SP)
	002432	004737 	006112'			JSR	PC,TYPMSG
    753	002436				FILDM3:
    754	002436	005765 	000000G			TST	U.VA(R5)	;DID IT REALLY DISMOUNT THE VOLUME?
    755	002442	001404 				BEQ	FILDM4		;YES-- OK
    756	002444					ERROR	<"<3>" cannot be dismounted>
	000335	   011 	   003 	   040 		.ASCIZ	""<11>""<3>" cannot be dismounted"<5>""
	000340	   143 	   141 	   156
	000343	   156 	   157 	   164
	000346	   040 	   142 	   145
	000351	   040 	   144 	   151
	000354	   163 	   155 	   157
	000357	   165 	   156 	   164
	000362	   145 	   144 	   005
	000365	   000
	002444	012746 	000335'			MOV	#$$$,-(SP)
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 27-1
DISMOUNT ALL MOUNTED VOLUMES

	002450	004737 	006112'			JSR	PC,TYPMSG
    757	002454				FILDM4:
    758	002454					TYPE	<["<3>" dismounted]"<1>">
	000366	   133 	   003 	   040 		.ASCIZ	"["<3>" dismounted]"<1>""
	000371	   144 	   151 	   163
	000374	   155 	   157 	   165
	000377	   156 	   164 	   145
	000402	   144 	   135 	   001
	000405	   000
	002454	012746 	000366'			MOV	#$$$,-(SP)
	002460	004737 	006112'			JSR	PC,TYPMSG
    759	002464				FILDMX:
    760	002464	062705 	000000G			ADD	#U.SZ,R5	;OK-- BUMP TO NEXT ENTRY IN THE PUD
    761	002470	020527 	000000G			CMP	R5,#.PUDEA	;AT THE END OF THE PUD?
    762	002474	103725 				BLO	FILDM1		;NOPE-- BACK FOR SOME MORE
    763					;	BR	SYSAVE		;YES-- ON TO SAVE THE SYSTEM
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 28
SAVE SYSTEM STATE

    765						.SBTTL	SAVE SYSTEM STATE
    766					;
    767					; GET CURRENT TIME STUFF FOR TYPE-OUT
    768					;
    769	002476				SYSAVE:
    770	002476					GTIM$S	#GTIMBF		;GET CURRENT TIME PARAMETERS FOR SAVE FILE
	002476	012746 	000020'			MOV	#GTIMBF,-(SP)
	002502	012746 				MOV	(PC)+,-(SP)
	002504	   073 	   002 			.BYTE	59.,2
	002506	104375 				EMT	375
    771					;
    772					; SEE IF QUEUED PROTOCOL IS RUNNING.  IF SO, WE CANNOT CONTINUE.
    773					;
    774	002510	032737 	000000C	000002G		BIT	#EF.PR1!EF.PR2,.COMEF+2 ;IS ANY PROTOCOL RUNNING ?
    775	002516	001404 				BEQ	SYSAV1		;NO-- ALL OK
    776	002520					ERROR	<DTE-20 Protocol running>
	000406	   011 	   104 	   124 		.ASCIZ	""<11>"DTE-20 Protocol running"<5>""
	000411	   105 	   055 	   062
	000414	   060 	   040 	   120
	000417	   162 	   157 	   164
	000422	   157 	   143 	   157
	000425	   154 	   040 	   162
	000430	   165 	   156 	   156
	000433	   151 	   156 	   147
	000436	   005 	   000
	002520	012746 	000406'			MOV	#$$$,-(SP)
	002524	004737 	006112'			JSR	PC,TYPMSG
    777					;
    778					; RAISE PRIORITY TO 7 TO LOCK OUT INTERRUPTS
    779					;
    780	002530				SYSAV1:
    781	002530	012737 	000401 	000000G		MOV	#401,.NOERR	;DIS-ALLOW KL ERROR REPORTING
    782	002536					.INH			;;;AND RAISE TO PRIORITY 7
	002536	013746 	177776 			MOV	PS,-(SP)
	002542	112737 	000340 	177776 		MOVB	#PR7,@#PS	;;
    783					;
    784					; TURN THE CLOCK OFF
    785					;
    786	002550	005037 	177546 			CLR	@#LKS		;;;CLEAR CLOCK STATUS
    787					;
    788					; FIX UP BOTH BOOTS TO POINT TO US AND THE RIGHT FILE
    789					;
    790	002554	013705 	000002'			MOV	DRVADR,R5	;;;GET DRIVER TABLE ENTRY ADDRESS
    791	002560	013775 	000014'	000010 		MOV	MEMSIZ,@DRVMSZ(R5) ;;;SET SIZE OF MEMORY
    792	002566	013775 	000004'	000012 		MOV	DSKADR+0,@DRVAD1(R5) ;;;SET FIRST HALF OF DISK ADDRESS
    793	002574	013775 	000006'	000014 		MOV	DSKADR+2,@DRVAD2(R5) ;;; AND SECOND HALF
    794					.IF DF M$$MGE
    795						MOV	UPAR0,@DRVUP0(R5) ;;;ALSO OUR PAGE ADDRESS
    796					.ENDC
    797					;
    798					; SET BOOT PARAMTER IN R0 WITH LOAD FLAGS= 01 (SO KLINIT WON'T BE CALLED)
    799					;
    800	002602	113700 	000044'			MOVB	DEVUNT,R0	;;;GET THE DEVICE UNIT #
    801	002606	000300 				SWAB	R0		;;;SET IT TO BITS 10-8
    802	002610	056500 	000016 			BIS	DRVBTP(R5),R0	;;;SET PROPER BIT IN BOOT PARAMETER WORD
    803	002614	052700 	000002 			BIS	#BP.LD0,R0	;;;SET FLAGS= 01
    804					;
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 28-1
SAVE SYSTEM STATE

    805					; SAVE KT-11 STUFF, IF ANY
    806					;
    807	002620	042737 	030000 	177776 		BIC	#PS.PUS,@#PS	;;;SET PREVIOUS MODE KERNAL
    808					.IF DF M$$MGE
    809						MOV	#KPDR0,R1	;;;ADDRESS KERNAL DR'S
    810						MOV	#KPAR0,R2	;;; AND KERNAL AR'S
    811						MOV	#UPDR0,R3	;;; USER DR'S
    812						MOV	#UPAR0,R4	;;; AND AR'S
    813						MOV	#8.,R5		;;;8 REGITERS PER SET
    814					30$:
    815						PUSH	<(R1)+,(R2)+,(R3)+,(R4)+> ;;;SAVE ALL ON STACK
    816						SOB	R5,30$		;;;ALL OF 'EM
    817						PUSH	<R1,R2,R3,R4>	;;;SAVE ADDR'S TO RESTORE
    818					;
    819					; SAVE STACK LIMIT AND KERNAL SP
    820					;
    821						PUSH	STKLIM		;;;SAVE STACK LIMIT
    822						MFPI	SP		;;; AND KERNAL STACK
    823					;
    824					; POINT TO ABSOLUTE ZERO, USING UPAR1, FOR COPY OF BOOT
    825					;
    826						MOV	#77406,UPDR1	;;;MAP MAXIMUM SIZE (4096 WORDS)
    827						CLR	UPAR1		;;; TO REAL ABSOLUTE ZERO
    828						MOV	#20000,R1	;;; FROM 20000 IN VIRTUAL SPACE
    829					.IFF
    830	002626	005001 				CLR	R1		;;;ADDRESS ABSOLUTE 0 (NO KT-11)
    831					.ENDC
    832					;
    833					; COPY LOW CORE (FIRST 256. WORDS) TO SAVE AREA LOWCOR, AND
    834					;  COPY PROPER BOOT TO LOW CORE.
    835					;
    836					; NOTE THAT R1 POINTS TO ABSOLUTE ZERO, KT-11 OR NOT
    837					;
    838	002630	013705 	000002'			MOV	DRVADR,R5	;;;GET DRIVER ADDRESS BACK
    839	002634	016503 	000004 			MOV	DRVBOT(R5),R3	;;;GET ADDRESS OF BOOT CODE
    840	002640	012702 	000064'			MOV	#LOWCOR,R2	;;;POINT TO SAVE AREA
    841	002644	012704 	000400 			MOV	#256.,R4	;;;COPY 256. WORDS
    842	002650				41$:
    843	002650	011122 				MOV	(R1),(R2)+	;;;MOVE A WORD TO SAVE AREA
    844	002652	012321 				MOV	(R3)+,(R1)+	;;; AND COPY A WORD OF BOOT
    845	002654	077403 				SOB	R4,41$		;;;COPY ALL 256
    846					;
    847	002656	010041 				MOV	R0,-(R1)	;;;SAVE BOOT PARAMETER AT LOCATION 776
    848	002660					PUSH	<R1,R2>		;;;SAVE POINTERS FOR RESTORE
	002660	010146 				MOV	R1,-(SP)
	002662	010246 				MOV	R2,-(SP)
    849					;
    850					; WHAT'S ON THE STACK?
    851					;
    852					;	SP+00	R2 (RESTORE POINTER TO SAVE AREA)
    853					;	SP+02	R1 (RESTORE POINTER TO LOW CORE)
    854					; KT-11 ONLY:
    855					;	SP+04	KERNAL SP
    856					;	SP+06	STKLIM
    857					;	SP+10	POINTERS TO KT-11 REGISTERS TO RESTORE
    858					;	SP+12
    859					;	SP+14
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 28-2
SAVE SYSTEM STATE

    860					;	SP+16
    861					;	SP+20	KT-11 REGISTERS
    862					;	...
    863					;	SP+116
    864					;
    865					;	SP+NN	(BOTTOM OF STACK) USER PS FROM .INH
    866					;
    867					; SO LET'S SAVE SP IN SPSAVE
    868					;
    869	002664	010637 	000000'			MOV	SP,SPSAVE	;;;SAVE SP UNTIL WE RESTORE
    870					;	BR	WTSAVE		;;;NOW WRITE SAVE FILE AND BOOT
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 29
WRITE SAVE FILE AND BOOT

    872						.SBTTL	WRITE SAVE FILE AND BOOT
    873					;
    874					; WRITE SAVE FILE.  DSK ADDRESS IS IN DSKADR+0 AND DSKADR+2
    875					;
    876	002670				WTSAVE:
    877	002670	105337 	000047'			DECB	WSFLAG		;;;WRITE SAVE FILE?
    878	002674	002012 				BGE	10$		;;;YES-- GO DO IT
    879	002676	105337 	000046'			DECB	WBFLAG		;;; /WB SPECIFIED?
    880	002702	002414 				BLT	RESTORE		;;;NO-- ALL DONE WITH SAVE-- BRING SYSTEM BACK UP
    881	002704	005037 	000004'			CLR	DSKADR+0	;;;YES-- WRITE BOOT TO BLOCK 0
    882	002710	005037 	000006'			CLR	DSKADR+2	;;; . . .
    883	002714	012737 	000010 	000014'		MOV	#256.*2/100,MEMSIZ ;;;GET # 100 BYTE BLOCKS TO WRITE
    884	002722				10$:
    885	002722	013705 	000002'			MOV	DRVADR,R5	;;;GET ADDRESS OF DEVICE DRIVER TABLE ENTRY
    886	002726					CALL	@DRVWRT(R5)	;;;CALL PROPER WRITE ROUTINE
	002726	004775 	000006 			JSR	PC,@DRVWRT(R5)
    887	002732	000756 				BR	WTSAVE		;;;GO BACK AND DO WRITE AGAIN
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 30
RESTORE SYSTEM STATE

    889						.SBTTL	RESTORE SYSTEM STATE
    890					;
    891					; TRANSFER HERE ON TWO CONDITIONS:
    892					;	1) FROM BOOTSTRAP WITH FRESHLY BOOT'ED SYSTEM
    893					;	2) FROM SAVE COMPLETING A WRITE OF THE SYSTEM IMAGE
    894					;
    895					; THE ACTION IS THE SAME IN EITHER CASE.
    896					;
    897	002734				RESTORE::
    898	002734	013706 	000000'			MOV	SPSAVE,SP	;;;RESTORE OUR STACK
    899					; SEE IF CHK11 IS TO RUN
    900	002740	017600 	000002 			MOV	@2(SP),R0	;;; GET BOOT PARAMETERS FROM 776
    901	002744	010037 	000000G			MOV	R0,.BTPRM	;;; SAVE IN EXEC
    902	002750	032700 	000001 			BIT	#BP.SWR,R0	;;; SWITCH REGISTER BOOT ?
    903	002754	001411 				BEQ	CKDONE		;;; BRANCH IF NOT
    904	002756	032700 	000006 			BIT	#BP.LD1!BP.LD0,R0 ;;; BITS 1 OR 2 UP ?
    905	002762	001006 				BNE	CKDONE		;;; BRANCH IF NO CHK11
    906	002764					CALL	CHK.11		;;; DO SYSINI
	002764	004737 	011514'			JSR	PC,CHK.11
    907	002770	   122 	   123 	   130 		.ASCIZ	\RSX-20F\
	002773	   055 	   062 	   060
	002776	   106 	   000
    908	003000				CKDONE:
    909					;
    910					; RESTORE LOW CORE FROM SAVE AREA
    911					;
    912	003000	013706 	000000'			MOV	SPSAVE,SP	;;;RESET THE STACK POINTER(CHK11 DESTROYS)
    913	003004					POP	<R2,R1>		;;;RESTORE SAVED POINTERS TO CORE
	003004	012602 				MOV	(SP)+,R2
	003006	012601 				MOV	(SP)+,R1
    914					.IF DF M$$MGE
    915						MOV	#77406,UPDR1	;;;MAP ALL OF
    916						CLR	UPAR1		;;; LOW CORE TO 20000
    917					.IFTF
    918	003010	012100 				MOV	(R1)+,R0	;;;GET BOOT PARAMETER FROM LOCATION 776
    919	003012	012705 	000400 			MOV	#256.,R5	;;;RESTORE ALL 256 WORDS
    920	003016				20$:
    921	003016	014241 				MOV	-(R2),-(R1)	;;;RESTORE A WORD
    922	003020	077502 				SOB	R5,20$		;;;LOOP FOR WHOLE BLOCK
    923					;
    924					; RESTORE KT-11 REGISTERS (IF ANY)
    925					;
    926					.IFT
    927						MTPI	SP		;;;RESTORE KERNAL SP
    928						POP	STKLIM		;;; AND STACK LIMIT
    929					;
    930						POP	<R4,R3,R2,R1>	;;;RESTORE SAVED POINTERS TO KT-11
    931						MOV	#8.,R5		;;;8 REGISTERS PER SET
    932					30$:
    933						POP	<-(R4),-(R3),-(R2),-(R1)> ;;;RESTORE 4 REGISTERS
    934						SOB	R5,30$		;;;LOOP FOR ALL REGISTERS
    935					.ENDC
    936	003022	005037 	000062'			CLR	ALTDXF		;;; +++006 RESET THE FLOPPY FLAG
    937	003026	013700 	000000G			MOV	.BTPRM,R0	;;; R0 NEEDS BOOT PARAMETER
    938					;	BR	SETCTY		;;;ONWARD!!
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 31
RESTORE -- SETUP CTY LINE # AND DH-11 TABLES

    940						.SBTTL	RESTORE -- SETUP CTY LINE # AND DH-11 TABLES
    941					;
    942					; SET THE CTY TO THE LINE INDICATED BY THE BOOT PARAMETER, NOW IN R0
    943					;
    944	003032				SETCTY:
    945	003032	010005 				MOV	R0,R5		;;;ALSO SAVE BOOT PARAM FOR US TO USE
    946	003034	042700 	177607 			BIC	#^C<BP.CSP>,R0	;;;TRIM TO CONSOLE SPEED, BITS 6-3
    947	003040	001450 				BEQ	SETDL		;;; +++005 CTY NOT SPEC-- LEAVE IT ALONE
    948	003042	012704 	000000G			MOV	#DLTBL,R4	;;;ASSUME DL-11
    949	003046	006200 				ASR	R0		;;;SHIFT THE SPEED FIELD
    950	003050	006200 				ASR	R0		;;; OVER TO A WORD INDEX INTO TABLE, BITS 4-1
    951	003052	016003 	001124'			MOV	DHSTAB(R0),R3	;;;GET THE SPEED WORD FOR THE SPECIFIED TYPE
    952	003056	001406 				BEQ	50$		;;;NOT A DH-11-- GO ON FOR DL-11
    953					;
    954	003060	010504 				MOV	R5,R4		;;;DH-11-- GET THE PARAM AGAIN
    955	003062	042704 	174377 			BIC	#^C<BP.UNT>,R4	;;;TRIM TO DH UNIT NUMBER, BITS 10-8
    956	003066	006204 				ASR	R4		;;;SHIFT INTO PLACE, 16*8=128 BYTES PER DH UNIT, BITS 9-7
    957	003070	062704 	000000G			ADD	#DHTBL,R4	;;;GET DH UNIT TABLE ADDRESS
    958	003074				50$:
    959	003074	010500 				MOV	R5,R0		;;;GET THE WORD BACK
    960	003076	042700 	103777 			BIC	#^C<BP.CLN>,R0	;;;GET JUST LINE NUMBER, BITS 14-11
    961	003102	000300 				SWAB	R0		;;;MAKE THAT 8 BYTES PER LINE, BITS 6-3
    962	003104	060004 				ADD	R0,R4		;;;GET TABLE ADDRESS OF NEW CTY
    963					;
    964	003106	006200 				ASR	R0		;;;GET LINE NUMBER *4
    965	003110	006200 				ASR	R0		;;; LINE NUMBER *2, WORD INDEX
    966	003112	016037 	000000G	000000G		MOV	BITTBL(R0),$BTMSK ;;;GET THE BIT FOR THE LINE TO DH BIT MASK FOR CTY
    967	003120	006200 				ASR	R0		;;;GET LINE NUMBER WITHIN DH UNIT
    968	003122	010037 	000000G			MOV	R0,$UNIT	;;;STORE THAT UNIT NUMBER
    969					;
    970	003126	013700 	000000G			MOV	CTYPTR,R0	;;;GET OLD CTY TABLE ENTRY POINTER
    971	003132	042760 	000000G	000000G		BIC	#TT.CTY,STSW1(R0) ;;;MARK NOT THE CTY ANY MORE
    972	003140	010437 	000000G			MOV	R4,CTYPTR	;;;SET THE NEW CTY TABLE ENTRY
    973	003144	010437 	000000C			MOV	R4,.DQPBA+<Q.SZ*<D.CCTY-1>>+Q.DA ;;;SET THE -10 CTY POINTER TO US, ALSO
    974	003150	052764 	000000G	000000G		BIS	#TT.CTY,STSW1(R4) ;;;SET THIS AS THE CTY
    975	003156	010364 	000000G			MOV	R3,STSW0(R4)	;;;SET DH PARAMETERS FROM SPEED
    976					;
    977					; RESET DL11 TABLE FOR CONFIGURATION
    978					;
    979	003162				SETDL:
    980	003162	012737 	000000G	000000C		MOV	#KBS0,DLTBL+TTYEXP ;;; INIT THE EXTERNAL PAGE ADDRESSES
    981	003170	012737 	000000G	000000C		MOV	#KBS1,DLTBL+TTYEXP+10
    982	003176	012737 	175630 	000000C		MOV	#175630,DLTBL+TTYEXP+20
    983	003204	012737 	175640 	000000C		MOV	#175640,DLTBL+TTYEXP+30
    984	003212	012737 	175650 	000000C		MOV	#175650,DLTBL+TTYEXP+40 ;;; SO
    985	003220	013746 	000004 			MOV	@#4,-(SP)	;;; [4.1.1138] SAVE THE TRAP-AT-4 VECTOR
    986	003224	012737 	003254'	000004 		MOV	#10$,@#4	;;; [4.1.1138] SET UP ALTERNATE
    987	003232	012700 	000000G			MOV	#KBS1,R0	;;; [4.1.1138] POINT TO THE KLINIK LINE
    988	003236	032710 	010000 			BIT	#DL.CAR,(R0)	;;; [4.1.1138] IS CARRIER UP??
    989	003242	001005 				BNE	20$		;;; [4.1.1138] YES -- GO ON
    990	003244	005010 				CLR	(R0)		;;; [4.1.1138] NO -- RESET IT
    991	003246	005060 	000004 			CLR	4(R0)		;;; [4.1.1138] SO
    992	003252	000401 				BR	20$		;;; [4.1.1138] RESTORE TRAP VECTOR
    993						;
    994	003254				10$:
    995	003254	032626 				BIT	(SP)+,(SP)+	;;; [4.1.1138] FLUSH TRAP PS/PC
    996	003256				20$:
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 31-1
RESTORE -- SETUP CTY LINE # AND DH-11 TABLES

    997	003256	012637 	000004 			MOV	(SP)+,@#4	;;; [4.1.1138] RESTORE TRAP VECTOR
    998					;
    999					; RESET DH TABLE SO THAT WE CAN CONFIGURE UP
   1000					;
   1001	003262				SETDH:
   1002	003262	012700 	160020 			MOV	#DHEXPA,R0	;;;GET EXT PAGE ADDR OF FIRST DH
   1003	003266	012701 	000000C			MOV	#DHTBL+TTYEXP,R1	;;; AND TABLE ADDRESS FOR SAME
   1004	003272				10$:
   1005	003272	012702 	000020 			MOV	#16.,R2		;;;# LINES PER DH
   1006	003276				20$:
   1007	003276	010011 				MOV	R0,(R1)		;;;SET THIS DH EXTERNAL PAGE ADDRESS
   1008	003300	062701 	000010 			ADD	#8.,R1		;;;BUMP TO NEXT TABLE ENTRY
   1009	003304	077204 				SOB	R2,20$		;;;LOOP FOR ALL LINES IN THIS DH
   1010					;
   1011	003306	062700 	000020 			ADD	#DHEXPZ,R0	;;;BUMP TO NEXT DH
   1012	003312	020127 	000000G			CMP	R1,#TTYEND	;;;END OF TABLE YET?
   1013	003316	103765 				BLO	10$		;;;NO-- DO NEXT DH
   1014					;
   1015					; HERE TO RESET THE DM-11/BB TABLE
   1016					;
   1017	003320				SETDM:
   1018	003320	012700 	170500 			MOV	#DMEXPA,R0	;;; [4.1.1091] EXTERNAL PAGE ADDRESS OF FIRST DM-11/BB
   1019	003324	012701 	000000G			MOV	#DMTBL,R1	;;; [4.1.1091] POINT TO THE DM-11/BB TABLE
   1020	003330	012702 	000010 			MOV	#8.,R2		;;; [4.1.1091] MAX NUMBER OF DM-11/BB'S
   1021	003334				10$:
   1022	003334	010011 				MOV	R0,(R1)		;;; [4.1.1091] SET THE EXTERNAL PAGE ADDRESS
   1023	003336	032121 				BIT	(R1)+,(R1)+	;;; [4.1.1091] BUMP THE TABLE POINTER
   1024	003340	062700 	000010 			ADD	#10,R0		;;; [4.1.1091] AND THE EXTERNAL PAGE ADDRESS
   1025	003344	077205 				SOB	R2,10$		;;; [4.1.1091] LOOP THROUGH ALL DM-11/BB'S
   1026					;	BR	REDSY		;;;CONTINUE . .
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 32
RESTORE -- REDIRECT SY0: TO BOOT DEVICE

   1028						.SBTTL	RESTORE -- REDIRECT SY0: TO BOOT DEVICE
   1029					;
   1030					; IF THIS WAS A SAVE TO SY, REDIRECT SY TO POINT TO BOOT UNIT
   1031					;
   1032	003346				REDSY:
   1033	003346	010501 				MOV	R5,R1		;;;GET BACK THE BOOT PARAM
   1034	003350	106301 				ASLB	R1		;;;SHIFT BITS 6-4 INTO 7-5
   1035	003352	120127 	000060 			CMPB	R1,#3*BIT4	;;;IS SPEED FIELD 0-2?
   1036	003356	103401 				BLO	10$		;;;YES-- UNIT # IS OK
   1037	003360	005001 				CLR	R1		;;;NO-- 3-17-- UNIT # IS ZERO
   1038	003362				10$:
   1039	003362	000301 				SWAB	R1		;;;BRING UNIT # INTO BITS 2-0
   1040	003364	042701 	177770 			BIC	#^C<7>,R1	;;;TRIM TO THREE BITS
   1041					;
   1042	003370	013700 	000042'			MOV	DEVNAM,R0	;;;GET DEVICE NAME
   1043	003374					CALL	FINDEV		;;;ATTEMPT TO FIND BOOT DEVICE
	003374	004737 	006672'			JSR	PC,FINDEV
   1044	003400	103004 				BCC	30$		;;;GOT IT-- OK
   1045	003402	013705 	000040'			MOV	PUDADR,R5	;;;NOT FOUND-- GET OLD PUD ENTRY ADDRESS
   1046	003406	110165 	000000G			MOVB	R1,U.UN(R5)	;;;MAKE IT THE NEW UNIT #
   1047	003412				30$:
   1048	003412	010504 				MOV	R5,R4		;;;SAVE THE PUD ENTRY ADDRESS
   1049	003414	005037 	000040'			CLR	PUDADR		;;;ASSUME FAILURE
   1050	003420	012700 	054523 			MOV	#"SY,R0		;;;GET THE
   1051	003424	005001 				CLR	R1		;;; PUD ENTRY ADDRESS
   1052	003426					CALL	FINDEV		;;;  FOR SY0:
	003426	004737 	006672'			JSR	PC,FINDEV
   1053	003432	103556 				BCS	DTECHK		;;;OOPS-- GIVE UP
   1054	003434	010465 	000000G			MOV	R4,U.RP(R5)	;;;REDIRECT SY0 TO BOOT DEVICE
   1055	003440	010405 				MOV	R4,R5		;;;GET BOOT PUD ENTRY ADDRESS BACK
   1056	003442	010537 	000040'			MOV	R5,PUDADR	;;; AND SAVE IT
   1057					;
   1058					; UPDATE ALL TASKS FROM OLD SAVE DEVICE TO NEW SYSTEM DEVICE
   1059					;
   1060	003446				40$:
   1061	003446	010500 				MOV	R5,R0		;;;COPY THE PUD ADDRESS
   1062	003450	162700 	000000G			SUB	#.PUDBA,R0	;;;MAKE IT INDEX INTO PUD
   1063	003454	012701 	000000G			MOV	#U.SZ,R1	;;;SET ENTRY SIZE AS DIVISOR
   1064	003460					CALL	$DIV		;;;COMPUTE PUD INDEX FOR NEW SY INTO R0
	003460	004737 	000000G			JSR	PC,$DIV
   1065					;
   1066	003464	013703 	000000G			MOV	.STDTA,R3	;;;GET THE ADDRESS OF THE BEGINNING OF SYSTEM TASK DIRECTORY
   1067	003470	010304 				MOV	R3,R4		;;;COPY IT AGAIN
   1068	003472	063704 	000000G			ADD	.STDTZ,R4	;;;FIND ADDRESS OF LAST ENTRY IN STD
   1069	003476				45$:
   1070	003476	012302 				MOV	(R3)+,R2	;;;GET AN STD ENTRY ADDRESS
   1071	003500	032762 	000000G	000000G		BIT	#SF.FX,S.FW(R2)	;;;FIXED TASK (I.E. NOT DISK-LOADED)?
   1072	003506	001006 				BNE	47$		;;;YES-- DON'T CHANGE IT'S DISK
   1073	003510	126237 	000000G	000045'		CMPB	S.DI(R2),PUDIDX	;;;IS THIS TASK FROM ORIGINAL SAVE DEVICE?
   1074	003516	001002 				BNE	47$		;;;NO-- GO ON
   1075	003520	110062 	000000G			MOVB	R0,S.DI(R2)	;;;YES-- UPDATE DISK INDICATOR TO NEW SYSTEM DEVICE
   1076	003524				47$:
   1077	003524	020304 				CMP	R3,R4		;;;AT END OF STD YET?
   1078	003526	101763 				BLOS	45$		;;;NO-- KEEP LOOPING FOR ALL TASKS
   1079					;	BR	RP4CHK		;;;MORE & MORE
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 33
RESTORE -- CHECK BOOT DB & LOOK FOR RP06'S

   1081						.SBTTL	RESTORE -- CHECK BOOT DB & LOOK FOR RP06'S
   1082					;
   1083					; CHECK THE RP TO MAKE SURE IT IS ON-LINE AND IN A/B MODE
   1084					;
   1085	003530				RP4CHK:
   1086	003530	105737 	000053'			TSTB	RHFLAG		;;;SHOULD WE CHECK THE RP?
   1087	003534	001417 				BEQ	RP6CHK		;;;NO-- JUST GO ON
   1088	003536	116537 	000000G	176710 		MOVB	U.UN(R5),RPCS2	;;;YES-- SET TO PROPER UNIT #
   1089	003544	032737 	010000 	176712 		BIT	#RPMOL,RPDS	;;;IS THE RP ON-LINE?
   1090	003552	001002 				BNE	35$		;;;YES-- GO ON
   1091	003554	105237 	000054'			INCB	RNFLAG		;;;NO-- REMEMBER THAT IT ISN'T
   1092	003560				35$:
   1093	003560	032737 	001000 	176712 		BIT	#RPPGM,RPDS	;;;PROGRAMMABLE MODE (A/B)?
   1094	003566	001002 				BNE	RP6CHK		;;;YES-- ALL OK
   1095	003570	105237 	000055'			INCB	RPFLAG		;;;NO-- REMEMBER THAT IT ISN'T
   1096					;
   1097					; CHECK TO FIND ALL THE RP06'S MASQUERADING AS RP04'S
   1098					;
   1099	003574				RP6CHK:
   1100	003574	042737 	030000 	177776 		BIC	#PS.PUS,@#PS	;;;INSURE PREVIOUS KERNAL
   1101	003602	012704 	000006 			MOV	#6,R4		;;;POINT TO TIME-OUT TRAP
   1102	003606					MFPI	(R4)		;;;SAVE PS OF TRAP
	003606	011446 				MOV	(R4),-(SP)
   1103	003610					MFPI	-(R4)		;;; AND PC
	003610	014446 				MOV	-(R4),-(SP)
   1104	003612					MTPS	#80$,(R4)+	;;;SET NEW PC
	003612	012724 	003760'			MOV	#80$,(R4)+
   1105	003616					MTPS	@#PS,(R4)	;;; AND PS AS CURRENT STATE
	003616	013714 	177776 			MOV	@#PS,(R4)
   1106	003622	012700 	041104 			MOV	#"DB,R0		;;;WE ARE CHECKING DB'S
   1107	003626	012701 	000007 			MOV	#7,R1		;;; AND THERE ARE 8 OF THEM
   1108	003632				10$:
   1109	003632	010103 				MOV	R1,R3		;;; [**] GET UNIT NUMBER
   1110	003634	006303 				ASL	R3		;;; [**] CONVERT TO INDEX INTO SERIAL # TABLE
   1111	003636	005063 	000000G			CLR	.RHSN(R3)	;;; [**] ASSUME NO DRIVE
   1112	003642					CALL	FINDEV		;;;FIND THIS DB UNIT IN PUD
	003642	004737 	006672'			JSR	PC,FINDEV
   1113	003646	103441 				BCS	70$		;;;NOT THERE-- CARRY ON
   1114	003650	012765 	050700 	000000G		MOV	#50700,U.LBN(R5) ;;;ASSUME RP04-- SET LOW PART OF VOLUME SIZE
   1115	003656	112765 	000002 	000000G		MOVB	#2,U.LBH(R5)	;;; AND HIGH PART
   1116	003664	110137 	176710 			MOVB	R1,RPCS2+0	;;;SELECT THIS UNIT
   1117	003670	032737 	001400 	176712 		BIT	#RPDPR!RPPGM,RPDS ;;;DRIVE EXIST FOR US?
   1118	003676	001425 				BEQ	70$		;;;NO-- SKIP IT
   1119	003700	013763 	176730 	000000G		MOV	RPSN,.RHSN(R3)	;;; [**] SAVE SERIAL NUMBER
   1120	003706	012702 	023420 			MOV	#10000.,R2	;;;SET TIME-OUT COUNT IF PORT BUSY
   1121	003712				20$:
   1122	003712	032737 	004000 	176700 		BIT	#RPDVA,RPCS1	;;;DRIVE AVAILABLE AT THIS TIME?
   1123	003720	001004 				BNE	30$		;;;YES-- CHECK IT OUT
   1124	003722	112737 	000001 	176700 		MOVB	#RPNOOP+RPGO,RPCS1+0 ;;;NO-- DO NOOP TO GET IT
   1125	003730	077210 				SOB	R2,20$		;;;LOOP UNTIL WE HAVE IT
   1126	003732				30$:
   1127	003732	123727 	176726 	000022 		CMPB	RPDT+0,#RPDT06	;;;THIS AN RP06?
   1128	003740	002404 				BLT	70$		;;;NO-- SIZE IS OK
   1129	003742	006365 	000000G			ASL	U.LBN(R5)	;;;YES-- DOUBLE
   1130	003746	106165 	000000G			ROLB	U.LBH(R5)	;;; THE VOLUME SIZE
   1131	003752				70$:
   1132	003752	005301 				DEC	R1		;;;COUNT DOWN TO NEXT UNIT #
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 33-1
RESTORE -- CHECK BOOT DB & LOOK FOR RP06'S

   1133	003754	002326 				BGE	10$		;;;NOT DONE-- LOOP FOR ALL 8
   1134	003756	000401 				BR	90$		;;;ALL DONE-- GO ON
   1135					;
   1136	003760				80$:
   1137	003760	022626 				CMP	(SP)+,(SP)+	;;;TIME-OUT TRAP-- REMOVE TRAP FROM STACK
   1138	003762				90$:
   1139	003762					MTPI	-(R4)		;;;RESTORE TRAP AT 4 PC
	003762	012644 				MOV	(SP)+,-(R4)
   1140	003764					MTPI	2(R4)		;;; AND PS
	003764	012664 	000002 			MOV	(SP)+,2(R4)
   1141					;	BR	DTECHK		;;;CARRY ON
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 34
RESTORE -- CHECK ALL THE DTE-20'S

   1143						.SBTTL	RESTORE -- CHECK ALL THE DTE-20'S
   1144					;
   1145					; CHECK TO MAKE SURE THAT ALL DTE-20'S ARE AT PRIORITY 6
   1146					;
   1147	003770				DTECHK:
   1148	003770	005000 				CLR	R0		;;;RESET DTE #
   1149	003772	012701 	001000 			MOV	#DTVECA+4,R1	;;;POINT TO HIGHEST DTE VECTOR ADDRESS
   1150	003776	012702 	174400 			MOV	#DTEXPA,R2	;;; ALSO TO EXTERNAL PAGE ADDRESS FOR #0
   1151	004002	005003 				CLR	R3		;;;RESET POINTER TO THE PRIVILEDGED DTE
   1152	004004	105337 	000061'			DECB	DEFLAG		;;;SAY DTE-20 OK
   1153					;
   1154	004010	042737 	030000 	177776 		BIC	#PS.PUS,@#PS	;;;INSURE PREVIOUS KERNAL
   1155	004016	012704 	000006 			MOV	#6,R4		;;;POINT TO TIMEOUT VECTOR
   1156	004022					MFPI	(R4)		;;;SAVE THE PS
	004022	011446 				MOV	(R4),-(SP)
   1157	004024					MFPI	-(R4)		;;; AND PC FOR TIMEOUT
	004024	014446 				MOV	-(R4),-(SP)
   1158	004026					MTPS	#60$,(R4)+	;;;SET WHERE TO GO ON NON-EX DTE
	004026	012724 	004130'			MOV	#60$,(R4)+
   1159	004032					MTPS	@#PS,(R4)	;;; AND HOW TO GET THERE
	004032	013714 	177776 			MOV	@#PS,(R4)
   1160	004036				10$:
   1161	004036					MFPI	-(R1)		;;;SAVE PS OF THIS DTE VECTOR
	004036	014146 				MOV	-(R1),-(SP)
   1162	004040					MFPI	-(R1)		;;; AND PC
	004040	014146 				MOV	-(R1),-(SP)
   1163	004042					MTPS	#50$,(R1)+	;;;WHERE TO GO IF IT INTERRUPTS
	004042	012721 	004122'			MOV	#50$,(R1)+
   1164	004046					MTPS	@#PS,(R1)	;;; AND HOW SUCH
	004046	013711 	177776 			MOV	@#PS,(R1)
   1165					;
   1166	004052	005712 				TST	(R2)		;;;DTE EXIST? (TRAP IF NOT TO 60$)
   1167	004054	032762 	000010 	000034 		BIT	#DTRSMD,DTSTAT(R2) ;;;THIS PRIVILEDGED DTE-20?
   1168	004062	001402 				BEQ	20$		;;;YES-- THIS IS THE ONE
   1169	004064	005703 				TST	R3		;;;NO-- FOUND A DTE YET?
   1170	004066	001001 				BNE	30$		;;;YES-- DON'T REMEMBER THIS ONE
   1171	004070				20$:
   1172	004070	010203 				MOV	R2,R3		;;;FIRST OR PRIV DTE-- SAVE IT
   1173	004072				30$:
   1174	004072	012762 	004040 	000034 		MOV	#DT11DB!DTINON,DTSTAT(R2) ;;;RING OUR DOORBELL (FROM THE INSIDE)
   1175	004100	112737 	000240 	177776 		MOVB	#PR5,@#PS	;;;BRING DOWN TO PRI 5
   1176	004106	110037 	000061'			MOVB	R0,DEFLAG	;;;DID NOT INTERRUPT-- SAVE DTE # NOT AT PRI 6
   1177	004112	024646 				CMP	-(SP),-(SP)	;;;FAKE TRAP ON STACK
   1178	004114	152737 	000340 	177776 		BISB	#PR7,@#PS	;;;RESTORE PRI 7
   1179	004122				50$:
   1180	004122	012762 	002010 	000034 		MOV	#DTINOF!DTCL11,DTSTAT(R2) ;;;CLEAR RINGING DOORBELL
   1181	004130				60$:
   1182	004130	042737 	030000 	177776 		BIC	#PS.PUS,@#PS	;;; AND PREVIOUS MODE KERNAL
   1183	004136	022626 				CMP	(SP)+,(SP)+	;;;REMOVE TRAP FROM STACK
   1184	004140					MTPI	-(R1)		;;;RESTORE PC FOR DTE VECTOR
	004140	012641 				MOV	(SP)+,-(R1)
   1185	004142					MTPI	2(R1)		;;; AND PS
	004142	012661 	000002 			MOV	(SP)+,2(R1)
   1186	004146	062702 	000040 			ADD	#DTEXPZ,R2	;;;BUMP TO NEXT DTE-20 EXT PAGE ADDR
   1187	004152	005200 				INC	R0		;;; AND COUNT UP
   1188	004154	020027 	000004 			CMP	R0,#4		;;;DONE WITH DTE'S?
   1189	004160	002726 				BLT	10$		;;;NOPE-- BACK FOR ANOTHER
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 34-1
RESTORE -- CHECK ALL THE DTE-20'S

   1190					;
   1191	004162	010337 	000000G			MOV	R3,PROTBL	;;; SET UP "DTENM" IN "PROTBL"
   1192	004166	010337 	000000G			MOV	R3,.PRDTE	;;;SAVE THE ADDRESS OF THE PRIV DTE
   1193	004172	001402 				BEQ	95$		;;;NOT THERE-- LEAVE STATUS ZERO, TOO
   1194	004174	062703 	000034 			ADD	#DTSTAT,R3	;;;BUMP TO STATUS
   1195	004200				95$:
   1196	004200	010337 	000000G			MOV	R3,.PRSTA	;;;SAVE THAT ADDR, TOO
   1197					;
   1198	004204					MTPI	-(R4)		;;;RESTORE PC OF TIMEOUT TRAP
	004204	012644 				MOV	(SP)+,-(R4)
   1199	004206					MTPI	2(R4)		;;; AND PS
	004206	012664 	000002 			MOV	(SP)+,2(R4)
   1200	004212	013700 	000000G			MOV	.BTPRM,R0	;;;GET BOOT PARAMETER WORD AND
   1201	004216	042700 	177771 			BIC	#^C<BP.LD1!BP.LD0>,R0 ;;;ISOLATE THE LOAD SWITCHES
   1202	004222	022700 	000004 			CMP	#BP.LD1,R0	;;;IF SWITCHES = 10
   1203	004226	001004 				BNE	SYSTRT		;;;THEN
   1204	004230	005037 	000000G			CLR	.NOERR		;;;ALLOW ERRORS
   1205	004234					CALL	..DTP2		;;;START SECONDARY PROTOCOL AND
	004234	004737 	000000G			JSR	PC,..DTP2
   1206					;	BR	SYSTRT		;;;START SYSTEM GOING
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 35
RESTORE -- RESTART SYSTEM AND TYPE HERALD

   1208						.SBTTL	RESTORE -- RESTART SYSTEM AND TYPE HERALD
   1209					;
   1210					; FORCE POWER-RECOVERY AST BY SETTING EV.PF AND
   1211					;  FAKING AN ENABLE TASK SWITCHING REQUEST (FROM PR3 TO PR0)
   1212					;
   1213	004240				SYSTRT:
   1214	004240	005037 	000000G			CLR	.DATE3		;;;INDICATE THAT THE DATE IS NOW INVALID
   1215	004244	005037 	000000G			CLR	.CPUSN		;;; [TCO 4.2333] INVALIDATE SERIAL NUMBER
   1216	004250	005037 	000000G			CLR	.HRDWR		;;; [TCO 4.2233] AND HARDWARE OPTIONS
   1217	004254	012737 	000000G	000000G		MOV	#EV.PF,.SERFG	;;;SET POWER-RECOVERY SIGNIFICANT EVENT
   1218	004262					CALL	..ENB0		;ENABLE TASK SWITCHING
	004262	004737 	000000G			JSR	PC,..ENB0
   1219					;
   1220					; SEE IF WRITE ERROR OCCURED DURING SAVE (WEFLAG NON-ZERO)
   1221					;
   1222	004266	105737 	000060'			TSTB	WEFLAG		;WRITE SUCCESFUL?
   1223	004272	001404 				BEQ	DTEMSG		;YES-- ALL OK
   1224	004274					ERROR	<Write error>
	000440	   011 	   127 	   162 		.ASCIZ	""<11>"Write error"<5>""
	000443	   151 	   164 	   145
	000446	   040 	   145 	   162
	000451	   162 	   157 	   162
	000454	   005 	   000
	004274	012746 	000440'			MOV	#$$$,-(SP)
	004300	004737 	006112'			JSR	PC,TYPMSG
   1225					;
   1226					; SEE IF DTE-20 PRIORITY CHECK FAILED
   1227					;
   1228	004304				DTEMSG:
   1229	004304	005737 	000000G			TST	.PRDTE		;DID WE FIND A DTE-20
   1230	004310	001007 				BNE	DTPMSG		;YES-- SEE IF OK
   1231	004312	005037 	000000G			CLR	.PRSTA		;IF HE CONTINUES . . .
   1232	004316					TYPE	<"<11>"No DTE-20"<1>">
	000456	   011 	   116 	   157 		.ASCIZ	""<11>"No DTE-20"<1>""
	000461	   040 	   104 	   124
	000464	   105 	   055 	   062
	000467	   060 	   001 	   000
	004316	012746 	000456'			MOV	#$$$,-(SP)
	004322	004737 	006112'			JSR	PC,TYPMSG
   1233	004326	000407 				BR	DTPMS1		;GO FLOP
   1234					;
   1235	004330				DTPMSG:
   1236	004330	113700 	000061'			MOVB	DEFLAG,R0	;WE FAIL THE CHECK?
   1237	004334	002414 				BLT	SYSMSG		;NO-- ALL OK
   1238	004336					TYPE	<"<11>"DTE-20 #"<7>" not at priority level 6"<1>">
	000472	   011 	   104 	   124 		.ASCIZ	""<11>"DTE-20 #"<7>" not at priority level 6"<1>""
	000475	   105 	   055 	   062
	000500	   060 	   040 	   043
	000503	   007 	   040 	   156
	000506	   157 	   164 	   040
	000511	   141 	   164 	   040
	000514	   160 	   162 	   151
	000517	   157 	   162 	   151
	000522	   164 	   171 	   040
	000525	   154 	   145 	   166
	000530	   145 	   154 	   040
	000533	   066 	   001 	   000
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 35-1
RESTORE -- RESTART SYSTEM AND TYPE HERALD

	004336	012746 	000472'			MOV	#$$$,-(SP)
	004342	004737 	006112'			JSR	PC,TYPMSG
   1239	004346				DTPMS1:
   1240	004346					.INH			;;;BACK UP TO NOTHING-NESS
	004346	013746 	177776 			MOV	PS,-(SP)
	004352	112737 	000340 	177776 		MOVB	#PR7,@#PS	;;
   1241	004360	000777 				BR	.		;;;WAIT FOR SOMEONE TO PICK UP THE PIECES
   1242	004362					.ENB			;;;THE PIECES HAVE BEEN PICKED UP
	004362	012637 	177776 			MOV	(SP)+,@#PS	;;
   1243					;
   1244					; TYPE SYSTEM MESSAGE
   1245					;
   1246	004366				SYSMSG:
   1247	004366	012700 	000000G			MOV	#.VERNO,R0	; +++003 POINT TO VERSION # STRING
   1248	004372					TYPE	<"<1><1>"RSX-20F "<4>" "<6><1><1>"> ; +++003
	000536	   001 	   001 	   122 		.ASCIZ	""<1><1>"RSX-20F "<4>" "<6><1><1>""
	000541	   123 	   130 	   055
	000544	   062 	   060 	   106
	000547	   040 	   004 	   040
	000552	   006 	   001 	   001
	000555	   000
	004372	012746 	000536'			MOV	#$$$,-(SP)
	004376	004737 	006112'			JSR	PC,TYPMSG
   1249					;	BR	MNTSY		;UPWARD
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 36
RESTORE -- TYPE SY0: REDIRECT MESSAGE AND MOUNT SY0:

   1251						.SBTTL	RESTORE -- TYPE SY0: REDIRECT MESSAGE AND MOUNT SY0:
   1252					;
   1253					; TYPE REDIRECTED MESSAGE, MOUNT SY IF SO
   1254	004402				MNTSY:				; +++001
   1255	004402	013705 	000040'			MOV	PUDADR,R5	;GET THE PUD ENTRY FOR THE SY DEVICE
   1256	004406	001503 				BEQ	REDHOM		; +++006 GIVE UP IF NONE
   1257	004410	005037 	000062'			CLR	ALTDXF		; +++006 RESET THE FLOPPY FLAG
   1258	004414					TYPE	<[SY0: redirected to "<3>"]"<1>">
	000556	   133 	   123 	   131 		.ASCIZ	"[SY0: redirected to "<3>"]"<1>""
	000561	   060 	   072 	   040
	000564	   162 	   145 	   144
	000567	   151 	   162 	   145
	000572	   143 	   164 	   145
	000575	   144 	   040 	   164
	000600	   157 	   040 	   003
	000603	   135 	   001 	   000
	004414	012746 	000556'			MOV	#$$$,-(SP)
	004420	004737 	006112'			JSR	PC,TYPMSG
   1259	004424				MNTSY1:				; +++006
   1260	004424					ALUN$S	#DSKLUN,U.DN(R5),U.UN(R5) ;ASSIGN THE DEVICE
	004424	016546 	000000G			MOV	U.UN(R5),-(SP)
	004430	016546 	000000G			MOV	U.DN(R5),-(SP)
	004434	012746 	000002 			MOV	#DSKLUN,-(SP)
	004440	012746 				MOV	(PC)+,-(SP)
	004442	   007 	   004 			.BYTE	7.,4
	004444	104375 				EMT	375
   1261	004446	103422 				BCS	MNTSY2		; +++001 OOPS -- SEE IF OTHER FLOPPY MOUNT NEEDED
   1262	004450	005765 	000000G			TST	U.VA(R5)	;VOLUME ALREADY MOUNTED?????
   1263	004454	001060 				BNE	REDHOM		;YES-- SKIP THIS
   1264	004456					CALL	FNDACP		;NO-- FIND ACP FOR DEVICE
	004456	004737 	006730'			JSR	PC,FNDACP
   1265	004462	010265 	000000G			MOV	R2,U.ACP(R5)	;AND SET IT FOR MOUNT
   1266	004466	012702 	001110'			MOV	#MNTBLK,R2	;GOT IT-- POINT TO MOUNT
   1267	004472					PUSH	R5		;  +++006 SAVE R5
	004472	010546 				MOV	R5,-(SP)
   1268	004474					CALL	FILMNT		;MOUNT DEVICE
	004474	004737 	006750'			JSR	PC,FILMNT
   1269	004500					POP	R5		; +++006 RESTORE R5
	004500	012605 				MOV	(SP)+,R5
   1270	004502	103014 				BCC	SYMNTD		;MOUNTED
   1271	004504					WARN	<Mount "<10>" error "<7>">
	000606	   012 	   115 	   157 		.ASCIZ	""<12>"Mount "<10>" error "<7>""<1>""
	000611	   165 	   156 	   164
	000614	   040 	   010 	   040
	000617	   145 	   162 	   162
	000622	   157 	   162 	   040
	000625	   007 	   001 	   000
	004504	012746 	000606'			MOV	#$$$,-(SP)
	004510	004737 	006112'			JSR	PC,TYPMSG
   1272	004514				MNTSY2:
   1273					.IF	DF	$DTA
   1274						CMP	U.DN(R5),#"DT	; +++006 MOUNT DX: FAIL??
   1275					.IFF
   1276	004514	026527 	000000G	054104 		CMP	U.DN(R5),#"DX	;
   1277					.ENDC
   1278	004522	001035 				BNE	REDHOM		; +++006 NO -- GO ON
   1279	004524	005737 	000062'			TST	ALTDXF		; +++006 YES -- WAS IT THE BOOT DEVICE??
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 36-1
RESTORE -- TYPE SY0: REDIRECT MESSAGE AND MOUNT SY0:

   1280	004530	001405 				BEQ	SYMNT1		; +++006 YES -- TRY TO MOUNT THE OTHER (AND HOPE...)
   1281	004532	000431 				BR	REDHOM		; +++006 NO -- TRY TO READ HOME BLOCKS
   1282						;
   1283	004534				SYMNTD:
   1284	004534					TYPE	<["<10>" mounted]"<1>">
	000630	   133 	   010 	   040 		.ASCIZ	"["<10>" mounted]"<1>""
	000633	   155 	   157 	   165
	000636	   156 	   164 	   145
	000641	   144 	   135 	   001
	000644	   000
	004534	012746 	000630'			MOV	#$$$,-(SP)
	004540	004737 	006112'			JSR	PC,TYPMSG
   1285	004544				SYMNT1:				; +++006 HERE TO MOUNT "OTHER" FLOPPY
   1286	004544	016500 	000000G			MOV	U.DN(R5),R0	; +++006 DEVICE NAME TO R0
   1287	004550	016501 	000000G			MOV	U.UN(R5),R1	; +++006 DEVICE NUMBER TO R1
   1288					.IF	DF	$DTA
   1289						CMP	#"DT,R0		; +++006 IS IT A DX??
   1290					.IFF
   1291	004554	022700 	054104 			CMP	#"DX,R0
   1292					.ENDC
   1293	004560	001016 				BNE	REDHOM		; +++006 NO -- SEE IF IT HAS HOME BLOCKS
   1294	004562	005101 				COM	R1		; +++006 NO -- FIND THE "OTHER" FLOPPY DEVICE NUMBER
   1295	004564	042701 	177776 			BIC	#^C1,R1		; +++006 EITHER "0" OR "1"
   1296	004570	005237 	000062'			INC	ALTDXF		; +++006 MARK THAT WE LOOKING FOR THE "OTHER" ONE
   1297	004574					CALL	FINDEV		; +++006 FIND ITS "PUD" ENTRY
	004574	004737 	006672'			JSR	PC,FINDEV
   1298	004600	010537 	000040'			MOV	R5,PUDADR	; +++006 SET UP "PUDADR"
   1299	004604	103307 				BCC	MNTSY1		; +++006 ALL OK -- TRY TO MOUNT IT
   1300	004606					WARN	<CANT FIND SECOND UNIT >
	000645	   012 	   103 	   101 		.ASCIZ	""<12>"CANT FIND SECOND UNIT "<1>""
	000650	   116 	   124 	   040
	000653	   106 	   111 	   116
	000656	   104 	   040 	   123
	000661	   105 	   103 	   117
	000664	   116 	   104 	   040
	000667	   125 	   116 	   111
	000672	   124 	   040 	   001
	000675	   000
	004606	012746 	000645'			MOV	#$$$,-(SP)
	004612	004737 	006112'			JSR	PC,TYPMSG
   1301					;	BR	REDHOM		;GO READ THE HOM BLOCKS
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 37
RESTORE -- READ HOM BLOCKS ON BOOT DB

   1303						.SBTTL	RESTORE -- READ HOM BLOCKS ON BOOT DB
   1304					;
   1305					; READ HOM BLOCKS FROM DB0 TO SEE IF WE HAVE A FILE SYSTEM ON IT
   1306					;
   1307	004616				REDHOM:
   1308	004616	105737 	000053'			TSTB	RHFLAG		;SHOULD WE READ THE HOM BLOCKS?
   1309	004622	001542 				BEQ	RQSKLR		; +++001 NO-- JUST CHECK KLINIK LINE
   1310	004624	105737 	000054'			TSTB	RNFLAG		;RP NOT READY?
   1311	004630	001113 				BNE	RNRERR		;YES-- COMPLAIN
   1312	004632	105737 	000055'			TSTB	RPFLAG		;RP IN PROGRAMMABLE (A/B) MODE?
   1313	004636	001404 				BEQ	REDHM1		;YES-- GO WORK ON IT
   1314	004640					WARN	<"<10>" not in programmable (A/B) mode>
	000676	   012 	   010 	   040 		.ASCIZ	""<12>""<10>" not in programmable (A/B) mode"<1>""
	000701	   156 	   157 	   164
	000704	   040 	   151 	   156
	000707	   040 	   160 	   162
	000712	   157 	   147 	   162
	000715	   141 	   155 	   155
	000720	   141 	   142 	   154
	000723	   145 	   040 	   050
	000726	   101 	   057 	   102
	000731	   051 	   040 	   155
	000734	   157 	   144 	   145
	000737	   001 	   000
	004640	012746 	000676'			MOV	#$$$,-(SP)
	004644	004737 	006112'			JSR	PC,TYPMSG
   1315	004650				REDHM1:
   1316	004650	005003 				CLR	R3		;CLEAR COUNT OF # TIMES WE SAW 'HOM'
   1317	004652	012705 	000001 			MOV	#1,R5		;START WITH HOM BLOCK AT LBN 1
   1318	004656				20$:
   1319	004656	012700 	001000 			MOV	#IO.RLB,R0	;DO A READ LOGICAL BLOCK FUNCTION
   1320	004662	012701 	000064'			MOV	#HOMBUF,R1	; TO THE HOM BLOCK BUFFER
   1321	004666	012702 	001000 			MOV	#512.,R2	;ONE BLOCK'S WORTH
   1322	004672	005004 				CLR	R4		;CLEAR LOW-ORDER LBN
   1323	004674					CALL	FILQIO		;DO IT TO THE DB0
	004674	004737 	006764'			JSR	PC,FILQIO
   1324	004700	103462 				BCS	RHMERR		;ERROR-- GO REPORT IT
   1325					;
   1326	004702	022711 	105755 			CMP	#SXBTHM,(R1)	;IS THIS A SIXBIT/HOM/ BLOCK?
   1327	004706	001013 				BNE	30$		;NO-- LOOK NO FARTHER
   1328	004710	005703 				TST	R3		;YES-- ALREADY SEEN A GOOD HOM BLOCK?
   1329	004712	001010 				BNE	29$		;YES-- DON'T USE THIS ONE
   1330					;
   1331	004714	012701 	000370'			MOV	#HOMBUF+<HOMFE0*4>,R1 ;NO-- ADDRESS OUR WORDS IN HOM BLOCK
   1332	004720	012702 	000000G			MOV	#.RPADR,R2	; AND WHERE TO STORE THEM
   1333	004724	012122 				MOV	(R1)+,(R2)+	;(LH HOMFE0) (.RPADR+0) HIGH-ORDER DISK ADDRESS
   1334	004726	012122 				MOV	(R1)+,(R2)+	;(RH HOMFE0) (.RPADR+2) LOW-ORDER DISK ADDRESS
   1335	004730	012122 				MOV	(R1)+,(R2)+	;(LH HOMFE1) (.RPSIZ+0) HIGH-ORDER SIZE
   1336	004732	012122 				MOV	(R1)+,(R2)+	;(RH HOMFE1) (.RPSIZ+2) LOW-ORDER SIZE
   1337	004734				29$:
   1338	004734	005203 				INC	R3		;SAY WE SAW ANOTHER GOOD HOM BLOCK
   1339	004736				30$:
   1340	004736	005305 				DEC	R5		;WERE WE LOOKING AT
   1341	004740	003003 				BGT	40$		; BLOCK #1?
   1342	004742	012705 	000012 			MOV	#10.,R5		;YES-- ALSO TRY BLOCK 10.
   1343	004746	000743 				BR	20$		;BACK TO LOOK AT IT
   1344					;
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 37-1
RESTORE -- READ HOM BLOCKS ON BOOT DB

   1345	004750				40$:
   1346	004750	005303 				DEC	R3		;HOW MANY 'HOM' BLOCKS DID WE SEE?
   1347	004752	002447 				BLT	ALLRXF		;0-- DISK IS ALL OURS
   1348	004754	001412 				BEQ	HBCERR		;1-- CONSISTENCY ERROR
   1349	004756	012705 	000004 			MOV	#4,R5		;2-- TOPS FILE SYSTEM
   1350	004762	012701 	000370'			MOV	#HOMBUF+<HOMFE0*4>,R1 ;POINT TO SECOND HOM BLOCK AREA
   1351	004766	012702 	000000G			MOV	#.RPADR,R2	; AND TO WHAT WE GOT FROM FIRST BLOCK
   1352	004772				50$:
   1353	004772	022122 				CMP	(R1)+,(R2)+	;CHECK FOR CONSISTENCY
   1354	004774	001002 				BNE	HBCERR		;OOPS-- HOM BLOCKS DON'T AGREE
   1355	004776	077503 				SOB	R5,50$		;LOOP FOR ALL FOUR WORDS
   1356	005000	000404 				BR	SETRXF		;CHECKS OUT-- JUST CHECK THE FLAG
   1357					;
   1358	005002				HBCERR:
   1359	005002					WARN	<TOPS HOM block consistency error on "<10>">
	000741	   012 	   124 	   117 		.ASCIZ	""<12>"TOPS HOM block consistency error on "<10>""<1>""
	000744	   120 	   123 	   040
	000747	   110 	   117 	   115
	000752	   040 	   142 	   154
	000755	   157 	   143 	   153
	000760	   040 	   143 	   157
	000763	   156 	   163 	   151
	000766	   163 	   164 	   145
	000771	   156 	   143 	   171
	000774	   040 	   145 	   162
	000777	   162 	   157 	   162
	001002	   040 	   157 	   156
	001005	   040 	   010 	   001
	001010	   000
	005002	012746 	000741'			MOV	#$$$,-(SP)
	005006	004737 	006112'			JSR	PC,TYPMSG
   1360					;	BR	SETRXF		;USE GOOD (OR FIRST) HOM BLOCK
   1361					;
   1362	005012				SETRXF:
   1363	005012	005737 	000000G			TST	.RPADR+0	;IS BIT 2 OF HOMFE0 (BIT 15 OF .RPADR+0) SET?
   1364	005016	100442 				BMI	SOMRXF		;YES-- JUST CLEAR THE FLAG
   1365	005020					WARN	<No RSX-20F file system on "<10>">
	001011	   012 	   116 	   157 		.ASCIZ	""<12>"No RSX-20F file system on "<10>""<1>""
	001014	   040 	   122 	   123
	001017	   130 	   055 	   062
	001022	   060 	   106 	   040
	001025	   146 	   151 	   154
	001030	   145 	   040 	   163
	001033	   171 	   163 	   164
	001036	   145 	   155 	   040
	001041	   157 	   156 	   040
	001044	   010 	   001 	   000
	005020	012746 	001011'			MOV	#$$$,-(SP)
	005024	004737 	006112'			JSR	PC,TYPMSG
   1366	005030				NOTRXF:
   1367	005030	012703 	000000G			MOV	#.RPADR,R3	;POINT TO AREA
   1368	005034	005023 				CLR	(R3)+		;CLEAR
   1369	005036	005023 				CLR	(R3)+		; ALL
   1370	005040	005023 				CLR	(R3)+		; FOUR
   1371	005042	005023 				CLR	(R3)+		; WORDS
   1372	005044	000431 				BR	RQSKLR		; +++001 ALL DONE
   1373					;
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 37-2
RESTORE -- READ HOM BLOCKS ON BOOT DB

   1374	005046				RHMERR:
   1375	005046					WARN	<TOPS HOM block read error "<7>" on "<10>">
	001047	   012 	   124 	   117 		.ASCIZ	""<12>"TOPS HOM block read error "<7>" on "<10>""<1>""
	001052	   120 	   123 	   040
	001055	   110 	   117 	   115
	001060	   040 	   142 	   154
	001063	   157 	   143 	   153
	001066	   040 	   162 	   145
	001071	   141 	   144 	   040
	001074	   145 	   162 	   162
	001077	   157 	   162 	   040
	001102	   007 	   040 	   157
	001105	   156 	   040 	   010
	001110	   001 	   000
	005046	012746 	001047'			MOV	#$$$,-(SP)
	005052	004737 	006112'			JSR	PC,TYPMSG
   1376	005056	000411 				BR	ALLRX1		;ASSUME ALL OF DISK
   1377					;
   1378	005060				RNRERR:
   1379	005060					WARN	<"<10>" not ready>
	001112	   012 	   010 	   040 		.ASCIZ	""<12>""<10>" not ready"<1>""
	001115	   156 	   157 	   164
	001120	   040 	   162 	   145
	001123	   141 	   144 	   171
	001126	   001 	   000
	005060	012746 	001112'			MOV	#$$$,-(SP)
	005064	004737 	006112'			JSR	PC,TYPMSG
   1380	005070	000417 				BR	RQSKLR		; +++001 LEAVE ADDR/SIZE ALONE
   1381					;
   1382	005072				ALLRXF:
   1383	005072					WARN	<No TOPS file system on "<10>">
	001130	   012 	   116 	   157 		.ASCIZ	""<12>"No TOPS file system on "<10>""<1>""
	001133	   040 	   124 	   117
	001136	   120 	   123 	   040
	001141	   146 	   151 	   154
	001144	   145 	   040 	   163
	001147	   171 	   163 	   164
	001152	   145 	   155 	   040
	001155	   157 	   156 	   040
	001160	   010 	   001 	   000
	005072	012746 	001130'			MOV	#$$$,-(SP)
	005076	004737 	006112'			JSR	PC,TYPMSG
   1384	005102				ALLRX1:
   1385	005102	012703 	000000G			MOV	#.RPADR,R3	;ADDRESS WORDS TO SET
   1386	005106	005023 				CLR	(R3)+		;HIGH ADDRESS:0
   1387	005110	012723 	000001 			MOV	#1,(R3)+	;LOW ADDRESS: BLOCK 1
   1388	005114	012723 	000177 			MOV	#177,(R3)+	;HIGH SIZE: MAX TO 24 BITS
   1389	005120	012723 	177777 			MOV	#-1,(R3)+	; LOW SIZE: MAX ALSO
   1390	005124				SOMRXF:
   1391	005124	105037 	000001G			CLRB	.RPADR+1	;CLEAR HIGH BYTE OF HIGH ADDRESS
   1392					;	BR	RQSKLR		; +++001 GO CHECK KLINIK LINE
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 38
RESTORE -- CKECK STATE OF KLINIK LINE

   1394						.SBTTL	RESTORE -- CKECK STATE OF KLINIK LINE
   1395					;
   1396					;	CHECK STATE OF KLINIK LINE
   1397					;
   1398	005130				RQSKLR:
   1399	005130					CLEF$S	#E.FTMO		; +++001 RESET TIMEOUT FLAG
	005130	012746 	000002 			MOV	#E.FTMO,-(SP)
	005134	012746 				MOV	(PC)+,-(SP)
	005136	   037 	   002 			.BYTE	31.,2
	005140	104375 				EMT	375
   1400	005142	013705 	000000G			MOV	KLNPTR,R5	; +++001 KLINIK LINE BLOCK POINTER TO R5
   1401	005146	016504 	000000G			MOV	TTYEXP(R5),R4	; +++001 I/O PAGE ADDRESS TO R4
   1402	005152	001002 				BNE	5$		; +++009 BRANCH IF WE HAVE A KLINIK LINE
   1403	005154	000137 	005614'			JMP	KLANXM		; +++009 LET THEM KNOW ABOUT NO KLINIK
   1404	005160	012703 	000055 		5$:	MOV	#^D45,R3	; +++001 SET UP?? COUNTER
   1405	005164	013700 	000000G			MOV	.BTPRM,R0	; +++001 BOOT PARAMETERS TO R0
   1406	005170	042700 	177771 			BIC	#^C<BP.LD1!BP.LD0>,R0 ; +++001 JUST WHAT WE WANT
   1407	005174				10$:
   1408	005174	032714 	010000 			BIT	#DL.CAR,(R4)	; +++001 IS CARRIER UP
   1409	005200	001010 				BNE	20$		; +++001 YES -- GO ON
   1410	005202	032765 	000000C	000000G		BIT	#<TT.CRW!TT.RIP>,STSW1(R5) ; +++001 NO -- IN CARRIER WAIT??
   1411	005210	001002 				BNE	15$		; +++009 TOO FAR TO BRANCH WITH ADDED CODE
   1412	005212	000137 	005624'			JMP	RQSTSK		; +++009
   1413	005216	005203 			15$:	INC	R3		; +++001 YES -- TAKE THIS TICK BACK
   1414	005220	000413 				BR	30$		; +++001 WAIT A BIT MORE
   1415						;
   1416	005222				20$:
   1417	005222	022700 	000004 			CMP	#BP.LD1,R0	; +++001 CAN PROTOCOLS RUN??
   1418	005226	001034 				BNE	35$		; +++001 NO -- SO DON'T EVEN BOTHER
   1419	005230	032737 	000000C	000002G		BIT	#<EF.PR1!EF.PR2>,.COMEF+2
   1420	005236	001561 				BEQ	PRNRUN		; +++001 PROTOCOL STOPPED -- JUST GO AWAY
   1421	005240	032737 	000000G	000002G		BIT	#EF.RKP,.COMEF+2 ; +++001 DID WE GET KLINIK PARAMETERS??
   1422	005246	001024 				BNE	35$		; +++001 YES -- GO ON
   1423	005250				30$:
   1424	005250					MRKT$S	#E.FTMO,#60.	; +++001 WAIT A BIT
	005250	005046 				CLR	-(SP)
	005252	005046 				CLR	-(SP)
	005254	012746 	000074 			MOV	#60.,-(SP)
	005260	012746 	000002 			MOV	#E.FTMO,-(SP)
	005264	012746 				MOV	(PC)+,-(SP)
	005266	   027 	   005 			.BYTE	23.,5
	005270	104375 				EMT	375
   1425	005272					WTSE$S	#E.FTMO		; +++001 WAIT FOR IT
	005272	012746 	000002 			MOV	#E.FTMO,-(SP)
	005276	012746 				MOV	(PC)+,-(SP)
	005300	   051 	   002 			.BYTE	41.,2
	005302	104375 				EMT	375
   1426	005304					CLEF$S	#E.FTMO		; +++001 CLEAR THE FLAG
	005304	012746 	000002 			MOV	#E.FTMO,-(SP)
	005310	012746 				MOV	(PC)+,-(SP)
	005312	   037 	   002 			.BYTE	31.,2
	005314	104375 				EMT	375
   1427	005316	077352 				SOB	R3,10$		; +++001 LOOP TILL DONE
   1428	005320				35$:
   1429	005320					.INH6			; +++001 DISALLOW INTERRRUPTS
	005320	013746 	177776 			MOV	@#PS,-(SP)
	005324	112737 	000300 	177776 		MOVB	#300,@#PS
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 38-1
RESTORE -- CKECK STATE OF KLINIK LINE

   1430	005332	032737 	000000G	000002G		BIT	#EF.RKP,.COMEF+2 ;;; +++001 DID WE GET KLINIK PARAMETERS??
   1431	005340	001413 				BEQ	50$		;;; +++001 NO -- DO DEFAULT
   1432	005342	105737 	000000G			TSTB	.KLNMD+0	;;; +++001 YES -- DO WE HAVE PARAMETERS??
   1433	005346	001410 				BEQ	50$		;;; +++001 NO -- DO DEFAULT
   1434	005350				40$:
   1435	005350	113737 	000000G	000000G		MOVB	.KLNMD+0,.KLNSW+0 ;;; +++001 SET THE KLINIK MODE
   1436	005356	003410 				BLE	60$		;;; +++001 EXIT IF USER
   1437	005360	113737 	000001G	000000G		MOVB	.KLNMD+1,.FEMOD	;;; +++001 SET THE CONSOLE MODE
   1438	005366	000404 				BR	60$		;;; +++001 GO TO COMMON EXIT
   1439						;
   1440	005370				50$:
   1441	005370	012737 	003401 	000000G		MOV	#3401,.KLNMD	;;; +++001 SET DEFAULT KLINIK PARAMETERS
   1442	005376	000764 				BR	40$		;;; +++001 SET OTHER PARAMETERS AND EXIT
   1443						;
   1444	005400				60$:
   1445	005400	042765 	000000G	000000G		BIC	#TT.OUT,STSW1(R5)
   1446	005406	105737 	000000G			TSTB	.KLNMD+0	;;; +++001 WHICH MODE??
   1447	005412	002404 				BLT	70$		;;; +++001 GO DO USER STUFF
   1448	005414	052765 	000000G	000000G		BIS	#TT.CTY,STSW1(R5) ;;; +++001 REMOTE -- DECLARE CTY
   1449	005422	000403 				BR	80$		;;; +++001 AND GO ON
   1450						;
   1451	005424				70$:
   1452	005424	042765 	000000G	000000G		BIC	#TT.CTY,STSW1(R5) ;;; +++001 CLEAR CTY BIT
   1453	005432				80$:
   1454	005432					.ENB6			;;; +++001 ALLOW INTERRUPTS
	005432	012637 	177776 			MOV	(SP)+,@#PS
   1455	005436	105737 	000000G			TSTB	.KLNMD+0	; +++001 CHECK MODE
   1456	005442	002411 				BLT	KLAUSR		; +++001 USER -- GO ON
   1457	005444					WARN	<KLINIK LINE ACTIVE IN REMOTE MODE>
	001163	   012 	   113 	   114 		.ASCIZ	""<12>"KLINIK LINE ACTIVE IN REMOTE MODE"<1>""
	001166	   111 	   116 	   111
	001171	   113 	   040 	   114
	001174	   111 	   116 	   105
	001177	   040 	   101 	   103
	001202	   124 	   111 	   126
	001205	   105 	   040 	   111
	001210	   116 	   040 	   122
	001213	   105 	   115 	   117
	001216	   124 	   105 	   040
	001221	   115 	   117 	   104
	001224	   105 	   001 	   000
	005444	012746 	001163'			MOV	#$$$,-(SP)
	005450	004737 	006112'			JSR	PC,TYPMSG
   1458	005454					WARN	<KLINIK LINE CONNECTED TO SYSTEM CONSOLE>
	001227	   012 	   113 	   114 		.ASCIZ	""<12>"KLINIK LINE CONNECTED TO SYSTEM CONSOLE"<1>""
	001232	   111 	   116 	   111
	001235	   113 	   040 	   114
	001240	   111 	   116 	   105
	001243	   040 	   103 	   117
	001246	   116 	   116 	   105
	001251	   103 	   124 	   105
	001254	   104 	   040 	   124
	001257	   117 	   040 	   123
	001262	   131 	   123 	   124
	001265	   105 	   115 	   040
	001270	   103 	   117 	   116
	001273	   123 	   117 	   114
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 38-2
RESTORE -- CKECK STATE OF KLINIK LINE

	001276	   105 	   001 	   000
	005454	012746 	001227'			MOV	#$$$,-(SP)
	005460	004737 	006112'			JSR	PC,TYPMSG
   1459	005464	000404 				BR	KLAREM		; +++001 EXIT THIS ROUTINE
   1460						;
   1461	005466				KLAUSR:
   1462	005466					WARN	<KLINIK LINE ACTIVE IN USER MODE>
	001301	   012 	   113 	   114 		.ASCIZ	""<12>"KLINIK LINE ACTIVE IN USER MODE"<1>""
	001304	   111 	   116 	   111
	001307	   113 	   040 	   114
	001312	   111 	   116 	   105
	001315	   040 	   101 	   103
	001320	   124 	   111 	   126
	001323	   105 	   040 	   111
	001326	   116 	   040 	   125
	001331	   123 	   105 	   122
	001334	   040 	   115 	   117
	001337	   104 	   105 	   001
	001342	   000
	005466	012746 	001301'			MOV	#$$$,-(SP)
	005472	004737 	006112'			JSR	PC,TYPMSG
   1463	005476				KLAREM:
   1464	005476	032737 	000000G	000002G		BIT	#EF.PR1,.COMEF+2 ; +++004 AN WE LOG THIS??
   1465	005504	001447 				BEQ	RQSTSK		; +++004 NO -- GO ON
   1466	005506	012700 	001070'			MOV	#LOGBUF,R0	; +++004 YES -- BUFFER POINTER TO R0
   1467	005512	113701 	000000G			MOVB	.KLNMD+0,R1	; +++004 KLINIK MODE TO R1
   1468	005516	002406 				BLT	10$		; +++004 USER -- GO ON
   1469	005520	113701 	000001G			MOVB	.KLNMD+1,R1	; +++004 REMOTE -- GET CONSOLE MODE
   1470	005524	006201 				ASR	R1		; +++004 COMPUTE THE CODE
   1471	005526	005201 				INC	R1		; +++004
   1472	005530	006201 				ASR	R1		; +++004
   1473	005532	005201 				INC	R1		; +++004
   1474	005534				10$:
   1475	005534	110160 	000005 			MOVB	R1,5(R0)	; +++004 SET THE MODE
   1476	005540	112760 	000000G	000004 		MOVB	#K.LRBA,4(R0)	; +++004 SET THE LOG CODE
   1477	005546	012701 	100000G			MOV	#BC.HDS+100000,R1 ; +++004 FUNCTION CODE TO R1
   1478	005552	012702 	000004 			MOV	#E.FLOG,R2	; +++004 EVENT FLAG TO R2
   1479	005556	012703 	000000G			MOV	#D.CKLN,R3	; +++004 DEVICE CODE TO R3
   1480	005562					CALL	..STIN		; +++004 LOG IT
	005562	004737 	000000G			JSR	PC,..STIN
   1481	005566					WTSE$S	#E.FLOG		; +++004 WAIT FOR IT
	005566	012746 	000004 			MOV	#E.FLOG,-(SP)
	005572	012746 				MOV	(PC)+,-(SP)
	005574	   051 	   002 			.BYTE	41.,2
	005576	104375 				EMT	375
   1482	005600	000411 				BR	RQSTSK		; +++001 EXIT THIS ROUTINE
   1483						;
   1484	005602				PRNRUN:
   1485	005602					ERROR	<PROTOCOLS NOT RUNNING>
	001343	   011 	   120 	   122 		.ASCIZ	""<11>"PROTOCOLS NOT RUNNING"<5>""
	001346	   117 	   124 	   117
	001351	   103 	   117 	   114
	001354	   123 	   040 	   116
	001357	   117 	   124 	   040
	001362	   122 	   125 	   116
	001365	   116 	   111 	   116
	001370	   107 	   005 	   000
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 38-3
RESTORE -- CKECK STATE OF KLINIK LINE

	005602	012746 	001343'			MOV	#$$$,-(SP)
	005606	004737 	006112'			JSR	PC,TYPMSG
   1486	005612	000456 				BR	EXIT		; +++001 GO AWAY
   1487						;
   1488	005614				KLANXM:
   1489	005614					WARN	<NO KLINIK LINE> ; +++009 TELL ABOUT NO KLINIK
	001373	   012 	   116 	   117 		.ASCIZ	""<12>"NO KLINIK LINE"<1>""
	001376	   040 	   113 	   114
	001401	   111 	   116 	   111
	001404	   113 	   040 	   114
	001407	   111 	   116 	   105
	001412	   001 	   000
	005614	012746 	001373'			MOV	#$$$,-(SP)
	005620	004737 	006112'			JSR	PC,TYPMSG
   1490					;	BR	RQSTSK		; +++009 REQUEST KLI IF NECESSARY
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 39
RESTORE -- REQUEST KL INITIALIZATION TASK AND/OR EXIT

   1492						.SBTTL	RESTORE -- REQUEST KL INITIALIZATION TASK AND/OR EXIT
   1493					;
   1494					; REQUEST KL SYSTEM INITIALIZATION TASK IF LOAD FLAGS FROM BOOT = 00 OR 11
   1495					;
   1496	005624				RQSTSK:
   1497	005624	012701 	001120'			MOV	#KLINIT,R1	;ADDRESS OF .RAD50/...KLI/
   1498	005630	013700 	000000G			MOV	.BTPRM,R0	;GET LOAD FLAGS
   1499	005634	012702 	000000C			MOV	#KL.DEF!KL.LRM!KL.LCA!KL.CFM!KL.LVB,R2 ;DEFAULT TO DEFAULT
   1500	005640	032700 	000001 			BIT	#BP.SWR,R0	;FROM SWR BUTTON?
   1501	005644	001002 				BNE	10$		;YES-- OK
   1502	005646	052702 	000000G			BIS	#KL.VBN,R2	;NO-- VBOOT DOESN'T PROMPT
   1503	005652				10$:
   1504	005652	042700 	177771 			BIC	#^C<BP.LD1!BP.LD0>,R0 ;LOAD FLAGS= 00?
   1505	005656	001404 				BEQ	50$		;YES-- REQUEST SYSTEM INITIALIZATION
   1506	005660	022700 	000006 			CMP	#<BP.LD1!BP.LD0>,R0 ;LOAD FLAGS= 11?
   1507	005664	001024 				BNE	EXIT00		;NO-- JUST EXIT
   1508	005666	005002 				CLR	R2		;SET KLI TO ASK DIALOG
   1509	005670				50$:
   1510	005670	010237 	000000G			MOV	R2,.KLIWD	;SET FLAGS TO ...KLI
   1511	005674					RQST$S	R1		;REQUEST TASK
	005674	005046 				CLR	-(SP)
	005676	005046 				CLR	-(SP)
	005700	005046 				CLR	-(SP)
	005702	005046 				CLR	-(SP)
	005704	016146 	000002 			MOV	2(R1),-(SP)
	005710	011146 				MOV	(R1),-(SP)
	005712	012746 				MOV	(PC)+,-(SP)
	005714	   013 	   007 			.BYTE	11.,7
	005716	104375 				EMT	375
   1512	005720	103006 				BCC	EXIT00		;SUCCESS-- JUST LEAVE
   1513	005722	013700 	000000G			MOV	$DSW,R0		;GET THE ERROR CODE
   1514	005726					WARN	<KLI task request error "<7>">
	001414	   012 	   113 	   114 		.ASCIZ	""<12>"KLI task request error "<7>""<1>""
	001417	   111 	   040 	   164
	001422	   141 	   163 	   153
	001425	   040 	   162 	   145
	001430	   161 	   165 	   145
	001433	   163 	   164 	   040
	001436	   145 	   162 	   162
	001441	   157 	   162 	   040
	001444	   007 	   001 	   000
	005726	012746 	001414'			MOV	#$$$,-(SP)
	005732	004737 	006112'			JSR	PC,TYPMSG
   1515	005736				EXIT00:
   1516	005736	105737 	000050'			TSTB	EXFLAG		;SHOULD WE EXIT (/EX)
   1517	005742	001002 				BNE	EXIT		;YES-- DO SO
   1518	005744	000137 	001170'			JMP	SAVE		;NO-- GO BACK TO SAVE
   1519					;
   1520					; ALL DONE-- DO A TASK EXIT, SYSTEM BACK TO STATE BEFORE SAVE
   1521					;
   1522	005750				EXIT:
   1523	005750					EXIT$S			;TASK EXIT
	005750	012746 				MOV	(PC)+,-(SP)
	005752	   063 	   001 			.BYTE	51.,1
	005754	104375 				EMT	375
   1524	005756	000774 				BR	EXIT		;JUST IN CASE . . .
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 40
COMMAND PARSER ROUTINES

   1526						.SBTTL	COMMAND PARSER ROUTINES
   1527					;
   1528					; GENERAL NOTES:
   1529					;
   1530					; R4 IS ALWAYS USED AS A POINTER TO THE COMMAND STRING.  ON CALL,
   1531					; IT POINTS TO THE NEXT CHARACTER TO BE PROCESSED.  ON RETURN, R4
   1532					; ALWAYS POINTS TO THE CHARACTER AFTER THE LAST ONE PROCESSED, I.E.
   1533					; THE NEXT ONE TO BE PROCESSED.
   1534					;
   1535					; NOTE THAT END-OF-LINE IS A ZERO BYTE
   1536					;
   1537					;
   1538					; GETNB -- GET NEXT NON-BLANK CHARACTER
   1539					;
   1540					; RETURNS WITH R4 POINTING TO THE NEXT NON-BLANK CHARACTER
   1541					;	R0 --	NON-BLANK CHARACTER
   1542					;	CC-Z SET IF END-OF-LINE
   1543					;
   1544	005760				GETNB:
   1545	005760	112400 				MOVB	(R4)+,R0	;GET A CHARACTER
   1546	005762	122700 	000040 			CMPB	#' ,R0		;THIS BLANK?
   1547	005766	001774 				BEQ	GETNB		;YES-- LOOK SOME MORE
   1548	005770	122700 	000011 			CMPB	#'	,R0	;OR A TAB?
   1549	005774	001771 				BEQ	GETNB		;YES-- LOOK SOME MORE
   1550	005776				10$:
   1551	005776	105744 				TSTB	-(R4)		;NON-BLANK-- BACK OVER IT (MAY BE EOL)
   1552	006000					RETURN			; FROM GETNB
	006000	000207 				RTS	PC
   1553					;
   1554					; GETNAM -- GET TWO-CHARACTER ALPHABETIC NAME
   1555					;
   1556					; RETURNS AFTER TWO CHARCTERS OR NON-ALPHABETIC
   1557					;	R0 --	(LOW) FIRST CHARACTER (HIGH) SECOND CHARACTER
   1558					;	CC-C SET IF MORE THAN TWO CHARACTERS
   1559					;
   1560	006002				GETNAM:
   1561	006002	005000 				CLR	R0		;CLEAR ANSWER
   1562	006004				10$:
   1563	006004	122714 	000101 			CMPB	#'A,(R4)	;BELOW A?
   1564	006010	101015 				BHI	50$		;YES-- RETURN CC-C CLEAR
   1565	006012	121427 	000132 			CMPB	(R4),#'Z	;OR ABOVE Z?
   1566	006016	101012 				BHI	50$		;YES-- RETURN CC-C CLEAR
   1567	006020	005700 				TST	R0		;GOT A BYTE YET?
   1568	006022	001002 				BNE	20$		;YES-- STORE SECOND BYTE
   1569	006024	112400 				MOVB	(R4)+,R0	;NO-- GET LOW BYTE
   1570	006026	000766 				BR	10$		;LOOP FOR NEXT CHARACTER
   1571					;
   1572	006030				20$:
   1573	006030	000300 				SWAB	R0		;GET HIGH BYTE
   1574	006032	001003 				BNE	40$		;ALREADY THERE-- ERROR
   1575	006034	152400 				BISB	(R4)+,R0	;OK-- SET SECOND CHARACTER
   1576	006036	000300 				SWAB	R0		;RESTORE R0 TO PROPER ORIENTATION
   1577	006040	000761 				BR	10$		;LOOP FOR ANOTHER (?)
   1578					;
   1579	006042				40$:
   1580	006042	000261 				SEC			;ERROR
   1581	006044				50$:
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 40-1
COMMAND PARSER ROUTINES

   1582	006044					RETURN			; FROM GETNAM
	006044	000207 				RTS	PC
   1583					;
   1584					; GETNUM -- GET OCTAL NUMBER
   1585					;
   1586					; RETURNS WITH NON-DIGIT OR IF MORE THAN A BYTE'S WORTH
   1587					;	R0 --	(LOW) NUMBER
   1588					;	CC-C SET IF LARGER THAN ONE BYTE
   1589					;
   1590	006046				GETNUM:
   1591	006046	005000 				CLR	R0		;CLEAR RESULT
   1592	006050				10$:
   1593	006050	112401 				MOVB	(R4)+,R1	;GET A DIGIT
   1594	006052	162701 	000060 			SUB	#'0,R1		;TRIM DOWN TO DIGIT
   1595	006056	103413 				BLO	40$		;NOT A DIGIT-- GIVE UP
   1596	006060	022701 	000007 			CMP	#7,R1		;TOO HIGH?
   1597	006064	103410 				BLO	40$		;YES-- GIVE UP WITH CC-C CLEAR
   1598		000003 			.REPT 3
   1599						ASLB	R0		;SHIFT OLD NUMBER A BIT
   1600						BCS	50$		;CARRY OUT-- NUMBER TOO BIG-- CC-C SET
   1601					.ENDR
	006066	106300 				ASLB	R0		;SHIFT OLD NUMBER A BIT
	006070	103407 				BCS	50$		;CARRY OUT-- NUMBER TOO BIG-- CC-C SET
	006072	106300 				ASLB	R0		;SHIFT OLD NUMBER A BIT
	006074	103405 				BCS	50$		;CARRY OUT-- NUMBER TOO BIG-- CC-C SET
	006076	106300 				ASLB	R0		;SHIFT OLD NUMBER A BIT
	006100	103403 				BCS	50$		;CARRY OUT-- NUMBER TOO BIG-- CC-C SET
   1602	006102	060100 				ADD	R1,R0		;ACCUMULATE THIS DIGIT
   1603	006104	000761 				BR	10$		;FETCH ANOTHER DIGIT
   1604					;
   1605	006106				40$:
   1606	006106	105744 				TSTB	-(R4)		;BACK OVER BAD CHARACTER
   1607	006110				50$:
   1608	006110					RETURN			;FROM GETNUM
	006110	000207 				RTS	PC
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 41
TYPEOUT ROUTINES

   1610						.SBTTL	TYPEOUT ROUTINES
   1611					;
   1612					; TYPMSG -- TYPE A RANDOM ASCIZ STRING
   1613					;
   1614					; CALL:
   1615					;	PUSH	#<ADDRESS OF ASCIZ STRING>
   1616					;	CALL	TYPMSG
   1617					;
   1618					; SPECIAL CHARACTER CODES IN TEXT:
   1619					;	0 --	END OF TEXT
   1620					;	1 --	TYPE <CR><LF>
   1621					;	2 --	TYPE TWO CHARACTERS FROM R0 (SAVED ON STACK)
   1622					;	3 --	TYPE DEVICE NAME AND UNIT FROM PUD ENTRY (R5)
   1623					;	4 --	TYPE ASCIZ STRING BY R0
   1624					;	5 --	TYPE <CR><LF> AND RETURN TO SAVE
   1625					;	6 --	TYPE SYSTEM DATE
   1626					;	7 --	DECIMAL NUMBER IN R0 (SAVED ON STACK)
   1627					;	10 --	DEVICE NAME AND UNIT FROM PUD ENTRY IN PUDADR
   1628					;	11 --	FATAL ERROR PREFIX
   1629					;	12 --	DIAGNOSTIC ERROR PREFIX
   1630					;
   1631	006112				TYPMSG:
   1632	006112					PUSH	<R3,R2,R1,R0> ;SAVE USED REGISTERS
	006112	010346 				MOV	R3,-(SP)
	006114	010246 				MOV	R2,-(SP)
	006116	010146 				MOV	R1,-(SP)
	006120	010046 				MOV	R0,-(SP)
   1633	006122	016600 	000012 			MOV	12(SP),R0	;GET ADDRESS OF STRING
   1634	006126	012702 	000064'			MOV	#TYPBUF,R2	;POINT TO OUTPUT BUFFER
   1635					;
   1636					; ENTER HERE AT TYPMS1:
   1637					;	R0 --	POINTER TO STRING TO BE OUTPUT (AND FOLLOWING CODE)
   1638					;	R2 --	CURRENT POINTER TO OUTPUT BUFFER FOR LOADING CHARACTERS
   1639					;
   1640	006132				TYPMS1:
   1641	006132	112012 				MOVB	(R0)+,(R2)	;GET A CHARACTER FROM STRING
   1642	006134	122227 	000013 			CMPB	(R2)+,#TYPMAX	;SPECIAL CODE?
   1643	006140	103374 				BHIS	TYPMS1		;NO-- JUST GET NEXT CHARACTER
   1644	006142	114203 				MOVB	-(R2),R3	;YES-- GET THE CODE
   1645	006144	006303 				ASL	R3		;MAKE IT WORDS
   1646	006146	011601 				MOV	(SP),R1		;GET R0 FROM STACK BACK TO R1
   1647	006150					CALL	@TYPTAB(R3)	;CALL ROUTINE TO PROCESS
	006150	004773 	006156'			JSR	PC,@TYPTAB(R3)
   1648	006154	000766 				BR	TYPMS1		;BACK FOR MORE
   1649					;
   1650					; DISPATCH TABLE FOR SPECIAL CODES
   1651					;
   1652	006156				TYPTAB:
   1653	006156	006204'	006276'	006302'		.WORD	TYPDON,TYPCR,TYPTXT,TYPDEV,TYPSTR,TYPSAV,TYPDAT,TYPDEC,TYPSDV,TYPERR,TYPWRN
	006164	006320'	006366'	006270'
	006172	006376'	006514'	006314'
	006200	006354'	006362'
   1654		000013 			TYPMAX=<.-TYPTAB>/2
   1655					;
   1656					; 0 -- END OF MESSAGE
   1657					;
   1658	006204				TYPDON:
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 41-1
TYPEOUT ROUTINES

   1659	006204	005726 				TST	(SP)+		;POP THE RETURN ADDRESS OFF TO NOWHERE
   1660	006206	162702 	000064'			SUB	#TYPBUF,R2	;END OF STRING-- FIND LENGTH
   1661	006212					QIOW$S	#IO.WLB,#CTYLUN,#E.FQIO,,,,<#TYPBUF,R2,#0> ;TYPE STRING ON CTY
	006212	005046 				CLR	-(SP)
	006214	010246 				MOV	R2,-(SP)
	006216	012746 	000064'			MOV	#TYPBUF,-(SP)
	006222	005046 				CLR	-(SP)
	006224	005046 				CLR	-(SP)
	006226	005046 				CLR	-(SP)
	006230	112716 	000001 			MOVB	#E.FQIO,(SP)
	006234	012746 	000001 			MOV	#CTYLUN,-(SP)
	006240	012746 	000400 			MOV	#IO.WLB,-(SP)
	006244	012746 				MOV	(PC)+,-(SP)
	006246	   003 	   011 			.BYTE	3,$$$T1
	006250	104375 				EMT	375
   1662	006252	103636 				BCS	EXIT		;GIVE UP IF FAILURE
   1663	006254					POP	<R0,R1,R2,R3> ;RESTORE REGISTERS
	006254	012600 				MOV	(SP)+,R0
	006256	012601 				MOV	(SP)+,R1
	006260	012602 				MOV	(SP)+,R2
	006262	012603 				MOV	(SP)+,R3
   1664	006264					POP	(SP)		;RESTORE PC OVER ADDRESS OF STRING
	006264	012616 				MOV	(SP)+,(SP)
   1665	006266					RETURN			;FROM TYPMSG
	006266	000207 				RTS	PC
   1666					;
   1667					; 5 -- TYPE <CR><LF> AND RETURN TO SAVE
   1668					;
   1669	006270				TYPSAV:
   1670	006270	012766 	001170'	000012 		MOV	#SAVE,12(SP)	;SET RETURN PC TO GO BACK TO SAVE
   1671					;	BR	TYPCR		;FINISH OFF WITH <CR><LF>
   1672					;
   1673					; 1 -- TYPE CRLF
   1674					;
   1675	006276				TYPCR:
   1676	006276	012701 				MOV	(PC)+,R1	;GET <CR> AND <LF>
   1677	006300	   015 	   012 			.BYTE	15,12		; . .
   1678					;	BR	TYPTXT		;TYPE WHAT'S IN R1
   1679					;
   1680					; 2 -- TYPE TEXT IN R0 (SAVED ON STACK)
   1681					;
   1682	006302				TYPTXT:
   1683	006302	110122 				MOVB	R1,(R2)+	;STORE LOW BYTE FIRST
   1684	006304	000301 				SWAB	R1		;GET HIGH BYTE
   1685	006306	001401 				BEQ	90$		;NULL-- IGNORE IT
   1686	006310	110122 				MOVB	R1,(R2)+	;STORE SECOND CHARACTER
   1687	006312				90$:
   1688	006312					RETURN			; FROM TYPTXT
	006312	000207 				RTS	PC
   1689					;
   1690					; 10 -- DEVICE NAME AND UNIT FROM PUDADR
   1691					;
   1692	006314				TYPSDV:
   1693	006314	013705 	000040'			MOV	PUDADR,R5	;GET THE PUD ADDRESS
   1694					;	BR	TYPDEV		;AND TYPE IT
   1695					;
   1696					; 3 -- DEVICE AND UNIT # FROM PUD (R5)
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 41-2
TYPEOUT ROUTINES

   1697					;
   1698	006320				TYPDEV:
   1699	006320	016501 	000000G			MOV	U.DN(R5),R1	;GET THE NAME
   1700	006324					CALL	TYPTXT		;TYPE THE NAME
	006324	004737 	006302'			JSR	PC,TYPTXT
   1701	006330	012737 	000010 	000016'		MOV	#8.,RADIX	;SET TO OCTAL
   1702	006336	116501 	000000G			MOVB	U.UN(R5),R1	;GET THE UNIT
   1703	006342					CALL	TYPNUM		;TYPE THE NUMBER
	006342	004737 	006614'			JSR	PC,TYPNUM
   1704	006346	112722 	000072 			MOVB	#':,(R2)+	;MAKE IT A DEVICE
   1705	006352					RETURN			;BACK FOR MORE
	006352	000207 				RTS	PC
   1706					;
   1707					; 11 -- FATAL ERROR PREFIX
   1708					;
   1709	006354				TYPERR:
   1710	006354	012701 	001447'			MOV	#ERRMSG,R1	;GET ERROR STRING
   1711	006360	000402 				BR	TYPSTR		;PUT THE STRING
   1712					;
   1713	001447					.PSECT	TEXT
   1714	001447	   123 	   101 	   126 	ERRMSG:	.ASCIZ	\SAV -- *Fatal* -- \
	001452	   040 	   055 	   055
	001455	   040 	   052 	   106
	001460	   141 	   164 	   141
	001463	   154 	   052 	   040
	001466	   055 	   055 	   040
	001471	   000
   1715	006362					.PSECT
   1716					;
   1717					; 12 -- WARNING ERROR PREFIX
   1718					;
   1719	006362				TYPWRN:
   1720	006362	012701 	001472'			MOV	#WRNMSG,R1	;GET WARNING PREFIX
   1721					;	BR	TYPSTR		; . .
   1722					;
   1723	001472					.PSECT	TEXT
   1724	001472	   123 	   101 	   126 	WRNMSG:	.ASCIZ	\SAV -- *Diag* -- \
	001475	   040 	   055 	   055
	001500	   040 	   052 	   104
	001503	   151 	   141 	   147
	001506	   052 	   040 	   055
	001511	   055 	   040 	   000
   1725	006366					.PSECT
   1726					;
   1727					; 4 -- STRING FROM R1
   1728					;
   1729	006366				TYPSTR:
   1730	006366	112122 				MOVB	(R1)+,(R2)+	;MOVE A CHARACTER
   1731	006370	001376 				BNE	TYPSTR		;LOOP TILL END OF COMMAND
   1732	006372	105742 				TSTB	-(R2)		;BACK OVER NULL BYTE
   1733	006374					RETURN			;BACK FOR MORE
	006374	000207 				RTS	PC
   1734					;
   1735					; 6 -- TYPE SYSTEM DATE
   1736					;
   1737	006376				TYPDAT:
   1738	006376	012737 	000012 	000016'		MOV	#10.,RADIX	;ALL UNDER DECIMAL RADIX
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 41-3
TYPEOUT ROUTINES

   1739	006404	113701 	000026'			MOVB	GTIMBF+G.TIHR,R1 ;GET THE HOUR
   1740	006410					CALL	TYPNUM		;TYPE HOURS
	006410	004737 	006614'			JSR	PC,TYPNUM
   1741	006414	112722 	000072 			MOVB	#':,(R2)+	;SEPERATE . . .
   1742	006420	113701 	000030'			MOVB	GTIMBF+G.TIMI,R1 ;MINUTES
   1743	006424	020127 	000011 			CMP	R1,#9.		;MORE THAN ONE DIGIT?
   1744	006430	003002 				BGT	10$		;YES-- WE WILL HAVE TWO
   1745	006432	112722 	000060 			MOVB	#'0,(R2)+	;NO-- MAKE IT TWO
   1746	006436				10$:
   1747	006436					CALL	TYPNUM		;MINUTES . . . .  . .  . . . . . ...
	006436	004737 	006614'			JSR	PC,TYPNUM
   1748	006442	112722 	000040 			MOVB	#' ,(R2)+	;SPACE-ED OUT DATE
   1749	006446	113701 	000024'			MOVB	GTIMBF+G.TIDA,R1 ;GET DAY OF MONTH
   1750	006452					CALL	TYPNUM		;TYPE IT IN DECIMAL
	006452	004737 	006614'			JSR	PC,TYPNUM
   1751	006456	112722 	000055 			MOVB	#'-,(R2)+	;SEPARATE
   1752	006462	113701 	000022'			MOVB	GTIMBF+G.TIMO,R1 ;GET THE MONTH
   1753	006466	006301 				ASL	R1		; *2
   1754	006470	006301 				ASL	R1		; *4 BYTES FOR EACH NAME
   1755	006472	062701 	006530'			ADD	#MONTAB-4,R1	;POINT TO ASCIZ MONTHS
   1756	006476					CALL	TYPSTR		;TYPE THE STRING
	006476	004737 	006366'			JSR	PC,TYPSTR
   1757	006502	112722 	000055 			MOVB	#'-,(R2)+	;SEPARATE
   1758	006506	013701 	000020'			MOV	GTIMBF+G.TIYR,R1 ;GET THE YEAR
   1759	006512	000440 				BR	TYPNUM		;TYPE IT AND RETURN
   1760					;
   1761					; 7 -- DECIMAL NUMBER IN R0 (SAVED ON STACK)
   1762					;
   1763	006514				TYPDEC:
   1764	006514	012737 	000012 	000016'		MOV	#10.,RADIX	;SET RADIX TO 10
   1765	006522					CALL	TYPNUM		;TYEP THE NUMBER
	006522	004737 	006614'			JSR	PC,TYPNUM
   1766	006526	112722 	000056 			MOVB	#'.,(R2)+	;STORE A . TO INDICATE DECIMAL
   1767	006532					RETURN			;BACK FOR ANOTHER CHAR OF STRING
	006532	000207 				RTS	PC
   1768					;
   1769					; TABLE OF MONTHS
   1770					;
   1771	006534				MONTAB:
   1772					.IRP ARG,<Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec>
   1773						.ASCIZ	/ARG/
   1774						.EVEN
   1775					.ENDM
	006534	   112 	   141 	   156 		.ASCIZ	/Jan/
	006537	   000
	006540	   106 	   145 	   142 		.ASCIZ	/Feb/
	006543	   000
	006544	   115 	   141 	   162 		.ASCIZ	/Mar/
	006547	   000
	006550	   101 	   160 	   162 		.ASCIZ	/Apr/
	006553	   000
	006554	   115 	   141 	   171 		.ASCIZ	/May/
	006557	   000
	006560	   112 	   165 	   156 		.ASCIZ	/Jun/
	006563	   000
	006564	   112 	   165 	   154 		.ASCIZ	/Jul/
	006567	   000
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 41-4
TYPEOUT ROUTINES

	006570	   101 	   165 	   147 		.ASCIZ	/Aug/
	006573	   000
	006574	   123 	   145 	   160 		.ASCIZ	/Sep/
	006577	   000
	006600	   117 	   143 	   164 		.ASCIZ	/Oct/
	006603	   000
	006604	   116 	   157 	   166 		.ASCIZ	/Nov/
	006607	   000
	006610	   104 	   145 	   143 		.ASCIZ	/Dec/
	006613	   000
   1776					;
   1777					; TYPNUM -- TYPE A NUMBER
   1778					;	R1 --	NUMBER TO BE TYPED
   1779					;	RADIX -- OUTPUT RADIX
   1780					;
   1781					; USES R1,R2,R3
   1782					;
   1783	006614				TYPNUM:
   1784	006614	005701 				TST	R1		;NEGATIVE #?
   1785	006616	002003 				BGE	10$		;NO-- OK
   1786	006620	005401 				NEG	R1		;YES-- MAKE IT POSITIVE
   1787	006622	112722 	000055 			MOVB	#'-,(R2)+	; AND STORE -VE IN STRING
   1788	006626				10$:
   1789	006626	005003 				CLR	R3		;CLEAR REMAINDER
   1790	006630				15$:
   1791	006630	020137 	000016'			CMP	R1,RADIX	;CAN WE DIVIDE?
   1792	006634	002404 				BLT	20$		;NO-- DIVIDE DONE
   1793	006636	163701 	000016'			SUB	RADIX,R1	;YES-- FORM REMAINDER
   1794	006642	005203 				INC	R3		; AND QUOTIENT
   1795	006644	000771 				BR	15$		;LOOP TO DIVIDE R1 BY RADIX
   1796					;
   1797	006646				20$:
   1798	006646					PUSH	R1		;SAVE REMAINDER AS A DIGIT
	006646	010146 				MOV	R1,-(SP)
   1799	006650	010301 				MOV	R3,R1		;GO BACK AND DIVIDE AGAIN
   1800	006652	001402 				BEQ	30$		; UNLESS ALL DONE
   1801	006654					CALL	10$		;EXTRACT ANOTHER DIGIT ONTO STACK
	006654	004737 	006626'			JSR	PC,10$
   1802	006660				30$:
   1803	006660					POP	R1		;DONE-- GET A DIGIT FROM STACK
	006660	012601 				MOV	(SP)+,R1
   1804	006662	062701 	000060 			ADD	#'0,R1		;MAKE IT ASCII
   1805	006666	110122 				MOVB	R1,(R2)+	;STORE IT IN OUTPUT STRING
   1806	006670					RETURN			;FOR ANOTHER DIGIT OR THE END
	006670	000207 				RTS	PC
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 42
FILE I/O ROUTINES

   1808						.SBTTL	FILE I/O ROUTINES
   1809					;
   1810					; FINDEV -- FIND PUD ENTRY FOR DEVICE
   1811					; CALL:
   1812					;	R0 --	DEVICE NAME AS TWO ASCII BYTES
   1813					;	R1 --	UNIT NUMBER AS BINARY BYTE
   1814					; RETURN:
   1815					;	R0-R4	UNCHANGED
   1816					;	R5 --	PUD ENTRY ADDRESS (POSSIBLY REDIRECTED)
   1817					;
   1818	006672				FINDEV:
   1819	006672	012705 	000000G			MOV	#.PUDBA,R5	;POINT TO START OF PUD
   1820	006676				10$:
   1821	006676	026500 	000000G			CMP	U.DN(R5),R0	;NAME MATCH?
   1822	006702	001003 				BNE	20$		;NO-- GO ON
   1823	006704	126501 	000000G			CMPB	U.UN(R5),R1	;UNIT MATCH?
   1824	006710	001406 				BEQ	30$		;YES-- THIS IS IT
   1825	006712				20$:
   1826	006712	062705 	000000G			ADD	#U.SZ,R5	;NO-- BUMP TO NEXT PUD ENTRY
   1827	006716	020527 	000000G			CMP	R5,#.PUDEA	;END YET?
   1828	006722	103765 				BLO	10$		;NO-- LOOP TILL END
   1829	006724	000261 				SEC			;YES-- DEVICE NOT IN SYSTEM
   1830	006726				30$:
   1831	006726					RETURN			;RETURN FROM FINDEV
	006726	000207 				RTS	PC
   1832					;
   1833					; FNDACP -- FIND ACP FOR DEVICE, PUD ADDR IN R5
   1834					;	RETURNS R2= STD ADDR FOR ACP, OR ZERO IF NOT FOUND
   1835					;
   1836	006730				FNDACP:
   1837	006730	012701 	000070'			MOV	#TYPBUF+4,R1	;NO-- GET A SCRACTH AREA
   1838	006734	012741 				MOV	(PC)+,-(R1)	;SET TO
   1839	006736	003310 				 .RAD50	/ACP/		; THE ACP
   1840	006740	016541 	000000G			MOV	U.DACP(R5),-(R1) ; OF THE DEVICE
   1841	006744	000137 	000000G			JMP	..FSTD		;FIND ADR OF THE STD FOR THE ACP
   1842					;
   1843					; FILMNT -- MOUNT/DISMOUNT DEVICE QUEUE I/O REQUEST
   1844					;	R2 -- ADDRESS OF FUNCTION CONTROL BLOCK
   1845					;
   1846	006750				FILMNT:
   1847	006750	012700 	014010 			MOV	#IO.APV,R0	;PRIVILIGED ACP CONTROL (MOUNT/DISMOUNT)
   1848	006754	005001 				CLR	R1		;NO FILE-ID BLOCK
   1849	006756	005003 				CLR	R3		;NO EXTEND
   1850	006760	005004 				CLR	R4		; . .
   1851	006762	005005 				CLR	R5		;NO ACCESS CONTROL
   1852					;	BR	FILQIO		;DO REQUEST AND RETURN
   1853					;
   1854					; FILQIO -- ROUTINE TO DO QIO REQUEST FOR FILE OPERATIONS
   1855					;	R0 --	I/O FUNCTION CODE (IO.XXX)
   1856					;	R1 --	(PARAMETER #1) ADDRESS OF FILE-ID BLOCK
   1857					;	R2 --	(PARAMETER #2) ADDRESS OF ATTRIBUTE CONTROL BLOCK
   1858					;	R3 --	(PARAMETER #3) EXTEND CONTROL BITS
   1859					;	R4 --	(PARAMETER #4) LOW-ORDER EXTEND INCREMENT
   1860					;	R5 --	(PARAMETER #5) ACCESS CONTROL BITS
   1861					;
   1862					; RETURNS CC-C CLEAR, QEFLAG UNCHANGED IF SUCCESS
   1863					;	  CC-C SET,   QEFLAG NON-ZERO IF ERROR
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 42-1
FILE I/O ROUTINES

   1864					;	R0 --	ERROR CODE FROM I/O STATUS OR DIRECTIVE STATUS
   1865					;
   1866	006764				FILQIO:
   1867	006764					QIOW$S	R0,#DSKLUN,#E.FQIO,,#QIOSTS,,<R1,R2,R3,R4,R5>
	006764	010546 				MOV	R5,-(SP)
	006766	010446 				MOV	R4,-(SP)
	006770	010346 				MOV	R3,-(SP)
	006772	010246 				MOV	R2,-(SP)
	006774	010146 				MOV	R1,-(SP)
	006776	005046 				CLR	-(SP)
	007000	012746 	001064'			MOV	#QIOSTS,-(SP)
	007004	005046 				CLR	-(SP)
	007006	112716 	000001 			MOVB	#E.FQIO,(SP)
	007012	012746 	000002 			MOV	#DSKLUN,-(SP)
	007016	010046 				MOV	R0,-(SP)
	007020	012746 				MOV	(PC)+,-(SP)
	007022	   003 	   013 			.BYTE	3,$$$T1
	007024	104375 				EMT	375
   1868	007026	113700 	000056'			MOVB	QEFLAG,R0	;DID A PREVIOUS Q I/O FAIL?
   1869	007032	001010 				BNE	20$		;YES-- JUST RETURN THAT
   1870	007034	113700 	000000G			MOVB	$DSW,R0		;NO-- GET DIRECTIVE STATUS
   1871	007040	103403 				BCS	10$		;ERROR-- JUST RETURN THIS
   1872	007042	113700 	001064'			MOVB	QIOSTS+0,R0	;ERROR OCCUR ON QUEUE I/O?
   1873	007046	002003 				BGE	30$		;N0-- JUST GO ON
   1874	007050				10$:
   1875	007050	110037 	000056'			MOVB	R0,QEFLAG	;YES-- SAVE THAT AS ERROR
   1876	007054				20$:
   1877	007054	000261 				SEC			; AND SAY ERROR
   1878	007056				30$:
   1879	007056					RETURN			;FROM FILQIO
	007056	000207 				RTS	PC
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 43
DRIVER TABLES

   1881						.SBTTL	DRIVER TABLES
   1882					;
   1883					; DRIVER TABLE DRVTAB:
   1884					;	THIS TABLE CONTAINS ALL THE DEVICE-DEPENDENT DATA AND
   1885					;	DISPATCHES FOR THE DEVICES THAT "SAVE" UNDERSTANDS.
   1886					;
   1887					.MACRO DRIVER	NAME,DV,BTPRM
   1888					$$$ADR=.
   1889					DRVNAM=.-$$$ADR
   1890						 .ASCII	/NAME/		;DEVICE NAME IN ASCII
   1891						 .EVEN
   1892					DRVSET=.-$$$ADR
   1893						 .WORD	DV'SET		;DISK ADDRESS SETUP ROUTINE
   1894					.IF DF FTABS
   1895					DRVABS=.-$$$ADR
   1896						 .WORD	DV'ABS		;ABSOLUTE (/AB) SAVE SETUP ROUTINE
   1897					.ENDC ; .IF DF FTABS
   1898					DRVBOT=.-$$$ADR
   1899						 .WORD	DV'BOOT		;ADDRESS OF BOOTSTRAP CODE
   1900					DRVWRT=.-$$$ADR
   1901						 .WORD	DV'WRT		;DEVICE WRITE ROUTINE
   1902					DRVMSZ=.-$$$ADR
   1903						 .WORD	DV'BMSZ		;ADDRESS WHERE MEMORY SIZE GOES IN BOOT
   1904					DRVAD1=.-$$$ADR
   1905						 .WORD	DV'BAD1		;ADDRESS FOR FIRST PART DISK ADDRESS
   1906					DRVAD2=.-$$$ADR
   1907						 .WORD	DV'BAD2		;ADDRESS FOR SECOND PART . .
   1908					.IF DF M$$MGE
   1909					DRVUP0=.-$$$ADR
   1910						 .WORD	DV'BUP0		;ADDRESS FOR CURRENT CONTENTS OF UPAR0
   1911					.ENDC
   1912					DRVBTP=.-$$$ADR
   1913						 .WORD	BTPRM		;BOOTSTRAP PARAMETER BITS FOR DEVICE
   1914					DRVSIZ=.-$$$ADR
   1915					.ENDM DRIVER
   1916					;
   1917	007060				DRVTAB:
   1918	007060					DRIVER	DX,RX,0
	007060	   104 	   130 			 .ASCII	/DX/		;DEVICE DX IN ASCII
	007062	007140'				 .WORD	RXSET		;DISK ADDRESS SETUP ROUTINE
	007064	007150'				 .WORD	RXBOOT		;ADDRESS OF BOOTSTRAP CODE
	007066	007420'				 .WORD	RXWRT		;DEVICE WRITE ROUTINE
	007070	007402'				 .WORD	RXBMSZ		;ADDRESS WHERE MEMORY SIZE GOES IN BOOT
	007072	007206'				 .WORD	RXBAD1		;ADDRESS FOR FIRST PART DISK ADDRESS
	007074	007206'				 .WORD	RXBAD2		;ADDRESS FOR SECOND PART . .
	007076	000000 				 .WORD	0		;BOOTSTRAP PARAMETER BITS FOR DEVICE
   1919	007100					DRIVER	DB,RP,BP.RP4
	007100	   104 	   102 			 .ASCII	/DB/		;DEVICE DB IN ASCII
	007102	007632'				 .WORD	RPSET		;DISK ADDRESS SETUP ROUTINE
	007104	007702'				 .WORD	RPBOOT		;ADDRESS OF BOOTSTRAP CODE
	007106	010036'				 .WORD	RPWRT		;DEVICE WRITE ROUTINE
	007110	010004'				 .WORD	RPBMSZ		;ADDRESS WHERE MEMORY SIZE GOES IN BOOT
	007112	007720'				 .WORD	RPBAD1		;ADDRESS FOR FIRST PART DISK ADDRESS
	007114	007726'				 .WORD	RPBAD2		;ADDRESS FOR SECOND PART . .
	007116	000200 				 .WORD	BP.RP4		;BOOTSTRAP PARAMETER BITS FOR DEVICE
   1920	007120					DRIVER	DT,TC,0
	007120	   104 	   124 			 .ASCII	/DT/		;DEVICE DT IN ASCII
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 43-1
DRIVER TABLES

	007122	010174'				 .WORD	TCSET		;DISK ADDRESS SETUP ROUTINE
	007124	010200'				 .WORD	TCBOOT		;ADDRESS OF BOOTSTRAP CODE
	007126	010406'				 .WORD	TCWRT		;DEVICE WRITE ROUTINE
	007130	010350'				 .WORD	TCBMSZ		;ADDRESS WHERE MEMORY SIZE GOES IN BOOT
	007132	010204'				 .WORD	TCBAD1		;ADDRESS FOR FIRST PART DISK ADDRESS
	007134	010204'				 .WORD	TCBAD2		;ADDRESS FOR SECOND PART . .
	007136	000000 				 .WORD	0		;BOOTSTRAP PARAMETER BITS FOR DEVICE
   1921		000060 			DRVTBZ=.-DRVTAB
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 44
RX-11 FLOPPY DISK ROUTINES

   1923						.SBTTL	RX-11 FLOPPY DISK ROUTINES
   1924					;
   1925					; RXSET -- SET RX-11 ADDRESS
   1926					;
   1927	007140				RXSET:
   1928	007140	006301 				ASL	R1		;SECTOR IS BLOCK
   1929	007142	006301 				ASL	R1		; TIMES 4
   1930					.IF DF FTABS
   1931						BR	RXSETX		;RETURN FROM RXSET
   1932					;
   1933					; RXABS -- RX-11 ABSOLUTE ADDRESS SET-UP
   1934					;
   1935					RXABS:
   1936						MOV	#<58.*26.>,R1	;SET TO END OF DISK
   1937					.ENDC ; .IF DF FTABS
   1938	007144				RXSETX:
   1939	007144	010100 				MOV	R1,R0		;COPY IT AGAIN FOR BOTH PARTS
   1940	007146					RETURN			;RETURN FROM RXSET/RXABS
	007146	000207 				RTS	PC
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 45
RX-11 BOOTSTRAP

   1942						.SBTTL	RX-11 BOOTSTRAP
   1943					;
   1944					; RX-11 BOOTSTRAP ROUTINE
   1945					;
   1946					; THIS BOOT IS READ IN FROM SECTOR ZERO (TRACK 1 SECTOR 1)
   1947					;  BY THE BM873-YF ROM.
   1948					;
   1949					; THE FOLLOWING STUFF IS RETURNED IN THE REGISTERS BY THE ROM:
   1950					;
   1951					;	R0 --	READ FUNCTION WITH UNIT # SET OR JUST UNIT #
   1952					;	R1 --	ADDRESS OF RXCS
   1953					;	R5 --	BOOTSTRAP PARAMETER (COPY OF SWITCH REGISTER)
   1954					;
   1955	007150				RXBOOT:
   1956	007150	000240 				NOP			;;;THIS IS A BOOTSTRAP
   1957	007152	106200 				ASRB	R0		;;;GET UNIT BIT INTO CC-C IF NO READ FUNC SPECIFIED
   1958	007154	001401 				BEQ	10$		;;;NO READ FUNC-- GO ON
   1959	007156	106300 				ASLB	R0		;;;READ FUNC ALREADY-- SET IT BACK WITH UNIT #
   1960	007160				10$:
   1961	007160	103002 				BCC	20$		;;;UNIT 0 OR READ FUNC ALREADY?
   1962	007162	012700 	000020 			MOV	#RXUNIT,R0	;;;NO-- SELECT UNIT 1
   1963	007166				20$:
   1964	007166	052700 	000007 			BIS	#RXREAD+RXGO,R0	;;;SET READ FUNCTION
   1965	007172	012706 	002000 			MOV	#2000,SP	;;;SETUP TEMPORARY STACK ABOVE FIRST BLOCK
   1966	007176	005004 				CLR	R4		;;;SET ADDRESS TO START READ AT LOC 0
   1967					;
   1968					; SETUP INITIAL RETURN ADDRESS TO DO A CALL ON
   1969					;  RXBBLK TO READ THE FIRST 256. WORDS
   1970					;
   1971	007200					PUSH	#RXBBLX-RXBOOT	;;;SAME AS CALL RXBBLK/BR RXBBLX
	007200	012746 	000200 			MOV	#RXBBLX-RXBOOT,-(SP)
   1972	007204	012702 				MOV	(PC)+,R2	;;;SETUP INITIAL LOGICAL SECTOR #
   1973	007206				RXBAD1:
   1974	007206	000000 			RXBAD2:	 .WORD	0		;;;SET BY SAVE TO POINT TO FILE
   1975					;	BR	RXBBLK		;;;FALL INTO READ BLOCK ROUTINE
   1976					;
   1977					; RXBBLK -- ROUTINE TO READ ONE BLOCK (256. WORDS) TO MEMORY
   1978					;
   1979					;	R0 --	READ FUNCTION WITH UNIT #
   1980					;	R1 --	ADDRESS OF RXCS
   1981					;	R2 --	CURRENT LOGICAL SECTOR # (UPDATED)
   1982					;	R3 --	SCRATCH
   1983					;	R4 --	CURRENT MEMORY ADDRESS (UPDATED)
   1984					;
   1985	007210				RXBBLK:
   1986	007210					CALL	(PC)		;;;DO 4 CALLS
	007210	004717 				JSR	PC,(PC)
   1987	007212					CALL	(PC)		;;; TO READ SECTOR ROUTINE
	007212	004717 				JSR	PC,(PC)
   1988					;
   1989					; READ A SECTOR
   1990					;
   1991	007214					PUSH	R2		;;;SAVE CURRENT SECTOR
	007214	010246 				MOV	R2,-(SP)
   1992	007216	010011 				MOV	R0,(R1)		;;;EXECUTE A READ SECTOR FUNCTION
   1993					;
   1994					; COMPUTE CURRENT PHYSICAL SECTOR # AND TRACK #
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 45-1
RX-11 BOOTSTRAP

   1995					;
   1996	007220	005003 				CLR	R3		;;;RESET TRACK #
   1997	007222					PUSH	#26.		;;;SET UP DIVISOR ON TOP OF STACK
	007222	012746 	000032 			MOV	#26.,-(SP)
   1998	007226				20$:
   1999	007226	005203 				INC	R3		;;;ONE MORE TRACK
   2000	007230	161602 				SUB	(SP),R2		;;;DIVIDE SECTOR BY 26.
   2001	007232	002375 				BGE	20$		;;; TO FIND LOGICAL SECTOR # WITHIN TRACK
   2002	007234	061602 				ADD	(SP),R2		;;;MAKE SECTOR IN RANGE 0. TO 26.
   2003	007236	005303 				DEC	R3		;;; TRACK IN RANGE 0. TO 76.
   2004	007240	022702 	000014 			CMP	#12.,R2		;;;SECTOR GREATER THAN 12.?
   2005	007244	006102 				ROL	R2		;;;IF SO, CC-C SET, INTERLEAVE FACTOR OF 2.
   2006	007246	006303 				ASL	R3		;;;GET 2*TRACK
   2007	007250	060302 				ADD	R3,R2		;;;SKEW BY 2*TRACK
   2008	007252	060302 				ADD	R3,R2		;;; 4*TRACK
   2009	007254	060302 				ADD	R3,R2		;;; 6*TRACK
   2010	007256				30$:
   2011	007256	161602 				SUB	(SP),R2		;;;GET SECTOR IN RANGE -26. TO -1. AGAIN
   2012	007260	002376 				BGE	30$		;;; . .
   2013	007262				31$:
   2014	007262	062602 				ADD	(SP)+,R2	;;;MAKE LOGICAL SECTOR IN RANGE 0. TO 25.
   2015					;
   2016	007264	006203 				ASR	R3		;;;RESTORE TRACK #
   2017	007266	122223 				CMPB	(R2)+,(R3)+	;;;PHYSICAL SECTOR 1. TO 26., TRACK 1. TO 77.
   2018					;
   2019					; SET SECTOR AND TRACK IN RX-11 TO START READ
   2020					;
   2021	007270				40$:
   2022	007270	105711 				TSTB	(R1)		;;;READY FOR SECTOR #?
   2023	007272	100376 				BPL	40$		;;;NO-- WAIT UNTIL IT IS
   2024	007274	110261 	000002 			MOVB	R2,RXDB-RXCS(R1) ;;;YES-- SET SECTOR #
   2025	007300				50$:
   2026	007300	105711 				TSTB	(R1)		;;;READY FOR TRACK?
   2027	007302	100376 				BPL	50$		;;;NO-- WAIT FOR READY
   2028	007304	110361 	000002 			MOVB	R3,RXDB-RXCS(R1) ;;;YES-- SET TRACK #
   2029					;
   2030					; WAIT FOR FUNCTION TO COMPLETE
   2031					;
   2032	007310				60$:
   2033	007310	032711 	100040 			BIT	#RXERR!RXDONE,(R1) ;;;WAIT FOR EROR OR DONE
   2034	007314	001775 				BEQ	60$		;;; . .
   2035	007316	100714 				BMI	RXBOOT		;;;ERROR-- RETRY WHOLE SHIBANG
   2036					;
   2037					; EMPTY SECTOR BUFFER TO MEMORY
   2038					;
   2039	007320	012711 	000003 			MOV	#RXEMPT!RXGO,(R1) ;;;DO AN EMPTY SECTOR BUFFER FUNCTION
   2040	007324				70$:
   2041	007324	132711 	000240 			BITB	#RXTREQ!RXDONE,(R1) ;;;READY WITH A BYTE?
   2042	007330	001775 				BEQ	70$		;;;NO-- WAIT UNTIL IT IS
   2043	007332	100003 				BPL	80$		;;;DONE-- OFF TO NEXT SECTOR
   2044	007334	116124 	000002 			MOVB	RXDB-RXCS(R1),(R4)+ ;;;STORE A BYTE TO MEMORY
   2045	007340	000771 				BR	70$		;;;LOOP TO EMPTY WHOLE BUFFER
   2046					;
   2047					; BUMP SECTOR TO NEXT SECTOR AND RETURN
   2048					;
   2049	007342				80$:
   2050	007342					POP	R2		;;;RESTORE LOGICAL SECTOR #
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 45-2
RX-11 BOOTSTRAP

	007342	012602 				MOV	(SP)+,R2
   2051	007344	005202 				INC	R2		;;;SET TO NEXT SECTOR
   2052	007346					RETURN			;;;RETURN TO READ ANOTHER SECTOR OR DONE
	007346	000207 				RTS	PC
   2053					;
   2054					.IF G <<.-RXBOOT>-128.>
   2055						.ERROR	<.-RXBOOT> ; RX BOOT TOO BIG FOR FIRST SECTOR
   2056					.ENDC
   2057					;
   2058					; HERE AFTER FIRST BLOCK READ. SETUP KT-11 (IF ANY)
   2059					;
   2060	007350				RXBBLX:
   2061	007350	012737 	000340 	177776 		MOV	#PR7,@#PS	;;;INSURE KERNAL MODE
   2062					.IF DF M$$MGE
   2063						MOV	#77406,R3	;;;SET TO MAP LARST PAGE
   2064						MOV	R3,KPDR0	;;;KERNAL PAGE 0
   2065						MOV	R3,KPDR1	;;; AND 1 (FOR READING)
   2066						MOV	R3,KPDR7	;;; AND EXTERNAL PAGE
   2067						MOV	R3,UPDR0	;;;USER PAGE 0
   2068						MOV	R3,UPDR7	;;; AND USER EXTERNAL PAGE FOR SAVE
   2069						CLR	KPAR0		;;;MAP KP 0 TO ABSOLUTE ZERO
   2070						MOV	(PC)+@(PC)+	;;;USER PAGE TO WHEREEVER SAVE WAS
   2071					RXBUP0:	 .WORD	0,UPAR0		;;;SET BY SAVE
   2072						MOV	#7600,R3	;;;SET TO MAP EXTERNAL PAGE
   2073						MOV	R3,KPAR7	;;; FOR KERNAL
   2074						MOV	R3,UPAR7	;;; AND USER
   2075						MOV	#1,SSR0		;;;ENABLE SEGMENTAION
   2076					.IFTF
   2077					;
   2078					; SETUP STACK AT TOP OF BOOT BLOCK, SAVE BOOT  PARAMETER IN LOC 776
   2079					;
   2080	007356	012706 	001000 			MOV	#1000,SP	;;;SETUP KERNAL STACK
   2081	007362					PUSH	R5		;;;SAVE BOOT PARAMETER AT BOTTOM OF STACK
	007362	010546 				MOV	R5,-(SP)
   2082					;
   2083	007364	005005 				CLR	R5		;;;CLEAR BLOCK POINTER
   2084	007366	000402 				BR	RXBNX1		;;;FINISH THIS BLOCK AND GET NEXT ONE
   2085					;
   2086					; READ NEXT BLOCK (256. WORDS, 4 SECTORS)
   2087					;
   2088	007370				RXBNXT:
   2089					.IFT
   2090						MOV	R5,KPAR1	;;;SET BLOCK TO MAP TO 20000
   2091						MOV	#20000,R4	;;;START AT BEGINNING OF THIS BLOCK
   2092					.ENDC
   2093	007370					CALL	RXBBLK-RXBOOT	;;;READ A BLOCK
	007370	004737 	000040 			JSR	PC,RXBBLK-RXBOOT
   2094	007374				RXBNX1:
   2095	007374	062705 	000010 			ADD	#256.*2/100,R5	;;;BUMP POINTER BY # 32. WORD BLOCKS IN 4 SECTORS
   2096	007400	022705 				CMP	(PC)+,R5	;;;REACHED MEMORY SIZE YET?
   2097	007402	000000 			RXBMSZ:	 .WORD	0		;;;FILLED BY SAVE TO SIZE OF MEMORY IN 32. WORD BLOCKS
   2098	007404	101371 				BHI	RXBNXT		;;;NO-- READ NEXT BLOCK
   2099					;
   2100					; BOOTSTRAP COMPLETE-- RETURN TO SAVE IN USER MODE
   2101					;
   2102					.IF DF M$$MGE
   2103						PUSH	#PS.USR!PS.REG!PR7 ;;;SET TO USER MODE
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 45-3
RX-11 BOOTSTRAP

   2104					.IFF
   2105	007406					PUSH	#PS.REG!PR7	;;;SET TO REGISTER SET 1
	007406	012746 	004340 			MOV	#PS.REG!PR7,-(SP)
   2106					.ENDC
   2107	007412					PUSH	#RESTORE	;;;USER PC, RESTORE SYSTEM
	007412	012746 	002734'			MOV	#RESTORE,-(SP)
   2108	007416	000002 				RTI			;;;RETURN TO SAVE
   2109					.IF G <<.-RXBOOT>-<128.*4>>
   2110						.ERROR	<.-RXBOOT> ; RX BOOT TOO BIG FOR FIRST BLOCK
   2111					.ENDC
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 46
RX-11 WRITE ROUTINE

   2113						.SBTTL	RX-11 WRITE ROUTINE
   2114					;
   2115					; RXWRT -- WRITE MEMORY TO THE RX-11
   2116					;
   2117					; INPUTS:
   2118					;	DSKADR+0 --	LOGICAL SECTOR TO START WRITE (0.-76.*26.)
   2119					;	DEVUNT --	(BYTE) UNIT # TO WRITE ON
   2120					;	MEMSIZ --	NUMBER OF 32. WORD BLOCKS TO WRITE, STARTING AT
   2121					;			ABSOLUTE ZERO
   2122					;
   2123	007420				RXWRT:
   2124					;
   2125					; SETUP REGISTERS:
   2126					;	R0 --	WRITE FUNCTION WITH PROPER UNIT #
   2127					;	R1 --	ADDRESS OF RXCS
   2128					;	R2 --	LOGICAL SECTOR # TO START WRITE
   2129					;
   2130	007420	113700 	000044'			MOVB	DEVUNT,R0	;;;GET SPECIFIED UNIT #
   2131	007424	001402 				BEQ	10$		;;;ZERO-- OK
   2132	007426	012700 	000020 			MOV	#RXUNIT,R0	;;;NOT ZERO-- ASSUME UNIT 1
   2133	007432				10$:
   2134	007432	052700 	000005 			BIS	#RXWRIT!RXGO,R0	;;;MAKE IT A WRITE FUNCTION
   2135	007436	012701 	177170 			MOV	#RXCS,R1	;;;ADDRESS CONTROL/STATUS REGISTER
   2136	007442	013702 	000004'			MOV	DSKADR+0,R2	;;;GET START SECTOR #
   2137					;
   2138					; SET UP MAP TO ABSOLUTE ZERO
   2139					;
   2140					.IF DF M$$MGE
   2141						MOV	#77406,UPDR1	;;;MAP AS MUCH AS POSSIBLE
   2142					.IFF
   2143	007446	005004 				CLR	R4		;;;CLEAR POINTER TO MEMORY
   2144					.IFTF
   2145	007450	005005 				CLR	R5		;;;CLEAR COUNTER OF 32. WORD BLOCKS WRITTEN
   2146					;
   2147					; WRITE NEXT BLOCK (256. WORDS, 4 SECTORS) TO FLOPPY
   2148					;
   2149	007452				RXWNXT:
   2150					.IFT
   2151						MOV	R5,UPAR1	;;;SET MAP TO CURRENT 32. WORD BLOCK
   2152						MOV	#20000,R4	;;;MAP IT TO 20000
   2153					.ENDC
   2154	007452					CALL	RXWBLK		;;;WRITE A BLOCK (256. WORDS)
	007452	004737 	007472'			JSR	PC,RXWBLK
   2155	007456	062705 	000010 			ADD	#256.*2/100,R5	;;;BUMP TO NEXT 32. WORD BLOCK
   2156	007462	023705 	000014'			CMP	MEMSIZ,R5	;;;FINISHED WITH ALL OF CORE?
   2157	007466	101371 				BHI	RXWNXT		;;;NOT YET-- WRITE NEXT BLOCK
   2158					;
   2159	007470					RETURN			;;;YES-- RETURN FROM RXWRT
	007470	000207 				RTS	PC
   2160					;
   2161					; RXWBLK -- ROUTINE TO WRITE ONE BLOCK (256. WORDS) TO MEMORY
   2162					;
   2163					;	R0 --	WRITE FUNCTION WITH UNIT #
   2164					;	R1 --	ADDRESS OF RXCS
   2165					;	R2 --	CURRENT LOGICAL SECTOR # (UPDATED)
   2166					;	R3 --	SCRATCH
   2167					;	R4 --	CURRENT MEMORY ADDRESS (UPDATED)
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 46-1
RX-11 WRITE ROUTINE

   2168					;
   2169	007472				RXWBLK:
   2170	007472					CALL	(PC)		;;;DO 4 CALLS
	007472	004717 				JSR	PC,(PC)
   2171	007474					CALL	(PC)		;;; TO WRITE SECTOR ROUTINE
	007474	004717 				JSR	PC,(PC)
   2172					;
   2173					; FILL SECTOR BUFFER BEFORE WRITE
   2174					;
   2175	007476	012711 	000001 			MOV	#RXFILL!RXGO,(R1) ;;;DO A FILL FUNCTION
   2176	007502				10$:
   2177	007502	132711 	000240 			BITB	#RXTREQ!RXDONE,(R1) ;;;READY FOR A BYTE YET?
   2178	007506	001775 				BEQ	10$		;;;NO-- WAIT UNTIL IT IS
   2179	007510	100003 				BPL	15$		;;;DONE-- GO WRITE
   2180	007512	112461 	000002 			MOVB	(R4)+,RXDB-RXCS(R1) ;;;STORE A BYTE FROM MEMORY IN SECTOR BUFFER
   2181	007516	000771 				BR	10$		;;;LOOP TO FILL BUFFER
   2182					;
   2183					; WRITE A SECTOR
   2184					;
   2185	007520				15$:
   2186	007520					PUSH	R2		;;;SAVE CURRENT SECTOR
	007520	010246 				MOV	R2,-(SP)
   2187	007522	010011 				MOV	R0,(R1)		;;;EXECUTE A WRITE SECTOR FUNCTION
   2188					;
   2189					; COMPUTE CURRENT PHYSICAL SECTOR # AND TRACK #
   2190					;
   2191	007524	005003 				CLR	R3		;;;RESET TRACK #
   2192	007526					PUSH	#26.		;;;SET DIVISOR ON TOP OF STACK
	007526	012746 	000032 			MOV	#26.,-(SP)
   2193	007532				20$:
   2194	007532	005203 				INC	R3		;;;ONE MORE TRACK
   2195	007534	161602 				SUB	(SP),R2		;;;DIVIDE SECTOR BY 26.
   2196	007536	002375 				BGE	20$		;;; TO FIND LOGICAL SECTOR # WITHIN TRACK
   2197	007540	061602 				ADD	(SP),R2		;;;MAKE SECTOR IN RANGE 0. TO 25.
   2198	007542	005303 				DEC	R3		;;; TRACK IN RANGE 0. TO 76.
   2199	007544	022702 	000014 			CMP	#12.,R2		;;;SECTOR GREATER THAN 12.?
   2200	007550	006102 				ROL	R2		;;;IF SO, CC-C SET, INTERLEAVE FACTOR OF 2.
   2201	007552	006303 				ASL	R3		;;;GET 2*TRACK
   2202	007554	060302 				ADD	R3,R2		;;;SKEW BY 2*TRACK
   2203	007556	060302 				ADD	R3,R2		;;; 4*TRACK
   2204	007560	060302 				ADD	R3,R2		;;; 6*TRACK
   2205	007562				30$:
   2206	007562	161602 				SUB	(SP),R2		;;;GET SECTOR IN RANGE -26. TO -1. AGAIN
   2207	007564	002376 				BGE	30$		;;; . .
   2208	007566				31$:
   2209	007566	062602 				ADD	(SP)+,R2	;;;MAKE LOGICAL SECTOR IN RANGE 0. TO 25.
   2210					;
   2211	007570	006203 				ASR	R3		;;;RESTORE TRACK #
   2212	007572	122223 				CMPB	(R2)+,(R3)+	;;;PHYSICAL SECTOR 1. TO 26., TRACK 1. TO 77.
   2213					;
   2214					; SET SECTOR AND TRACK IN RX-11 TO START WRITE
   2215					;
   2216	007574				40$:
   2217	007574	105711 				TSTB	(R1)		;;;READY FOR SECTOR #?
   2218	007576	100376 				BPL	40$		;;;NO-- WAIT UNTIL IT IS
   2219	007600	110261 	000002 			MOVB	R2,RXDB-RXCS(R1) ;;;YES-- SET SECTOR #
   2220	007604				50$:
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 46-2
RX-11 WRITE ROUTINE

   2221	007604	105711 				TSTB	(R1)		;;;READY FOR TRACK?
   2222	007606	100376 				BPL	50$		;;;NO-- WAIT FOR READY
   2223	007610	110361 	000002 			MOVB	R3,RXDB-RXCS(R1) ;;;YES-- SET TRACK #
   2224					;
   2225					; WAIT FOR FUNCTION TO COMPLETE
   2226					;
   2227	007614				60$:
   2228	007614	032711 	100040 			BIT	#RXERR!RXDONE,(R1) ;;;WAIT FOR EROR OR DONE
   2229	007620	001775 				BEQ	60$		;;; . .
   2230	007622	100560 				BMI	WRTERR		;;;GIVE UP IF ERROR AND COMPLAIN (AFTER RESTORE)
   2231					;
   2232					; BUMP SECTOR TO NEXT SECTOR AND RETURN
   2233					;
   2234	007624					POP	R2		;;;RESTORE LOGICAL SECTOR #
	007624	012602 				MOV	(SP)+,R2
   2235	007626	005202 				INC	R2		;;;SET TO NEXT SECTOR
   2236	007630					RETURN			;;;RETURN TO WRITE ANOTHER SECTOR OR DONE
	007630	000207 				RTS	PC
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 47
RP04/RP06 DISK ROUTINES

   2238						.SBTTL	RP04/RP06 DISK ROUTINES
   2239					;
   2240					; RPSET -- SET RP DISK ADDRESS
   2241					;
   2242	007632				RPSET:
   2243	007632	012702 	000020 			MOV	#16.,R2		;SET LOOP COUNT
   2244	007636				20$:
   2245	007636	006301 				ASL	R1		;MULTIPY ADDRESS
   2246	007640	006100 				ROL	R0		; BY TWO AND MOVE TRACK & SECTOR TO R0
   2247	007642	020027 	000574 			CMP	R0,#19.*20.	;LESS THAN A CYLINDER OF BLOCKS LEFT?
   2248	007646	103403 				BLO	30$		;YES-- WE ARE DOWN TO LAST CYLINDER
   2249	007650	162700 	000574 			SUB	#19.*20.,R0	;NO-- TRIM OFF ANOTHER CYLINDER
   2250	007654	005201 				INC	R1		;COUNT ANOTHER CYLINDER (OR 2**N CYLINDERS)
   2251	007656				30$:
   2252	007656	077211 				SOB	R2,20$		;LOOP FOR ALL SIXTEEN BITS OF ADDRESS
   2253					;
   2254	007660					PUSH	R1		;SAVE CYLINDER #
	007660	010146 				MOV	R1,-(SP)
   2255	007662	012701 	000024 			MOV	#20.,R1		;SET TO DIVIDE TRACK/SECTOR IN R0 BY
   2256	007666					CALL	$DIV		; NUMBER OF SECTORS PER TRACK
	007666	004737 	000000G			JSR	PC,$DIV
   2257	007672	000300 				SWAB	R0		;MOVE TRACK TO HIGH BYTE
   2258	007674	050001 				BIS	R0,R1		; SECTOR TO LOW BYTE (REMAINDER)
   2259	007676					POP	R0		;RESTORE CYLINDER #
	007676	012600 				MOV	(SP)+,R0
   2260	007700					RETURN			;RETURN FROM RPSET
	007700	000207 				RTS	PC
   2261					;
   2262					; RPABS -- SET RP DISK ABSOLUTE ADDRESS
   2263					;
   2264					.IF DF FTABS
   2265					RPABS:
   2266						MOV	#409.,R0	;SET MAINTAINENCE CYLINDER **** WON'T WORK FOR RP06 ****
   2267						MOV	#<13.*BIT8>!<8.*BIT0>,R1 ; AT TRACK 13, SECTOR 8 (VERY END)
   2268						RETURN			;RETURN FROM RPABS
   2269					.ENDC ; .IF DF FTABS
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 48
RP04/RP06 BOOTSTRAP

   2271						.SBTTL	RP04/RP06 BOOTSTRAP
   2272					;
   2273					;
   2274					; RP DISK BOOTSTRAP
   2275					;
   2276					; THIS BOOT IS READ IN FROM BLOCK 0 OF THE RP BY THE BM873-YF ROM.
   2277					;
   2278					; THE ROM RETURNS THE FOLLOWING VALUES IN THE REGISTERS:
   2279					;	R1 --	ADDRESS OF RPCS1
   2280					;	R5 --	BOOTSTRAP PARAMETER (NORMALLY SWITCH REGISTER)
   2281					;
   2282	007702				RPBOOT:
   2283	007702	000240 				NOP			;;;THIS IS A BOOTSTRAP
   2284					;
   2285					; RESET THE RP AND SET UP INITIAL TRACK AND SECTOR ADDRESS
   2286					;
   2287	007704	012711 	000021 			MOV	#RPPRST!RPGO,(R1) ;;;DO READ-IN PRESET
   2288	007710	005004 				CLR	R4		;;;CLEAR COUNTER OF 32. WORD BLOCKS READ
   2289	007712	005061 	000004 			CLR	RPBA-RPCS1(R1)	;;;SET BUS ADDR TO ZERO
   2290		007720'			RPBAD1=	.+2
   2291	007716	012761 	000000 	000034 		MOV	#0,RPDC-RPCS1(R1) ;;;SETUP CYLINDER #
   2292		007726'			RPBAD2=	.+2
   2293	007724	012761 	000000 	000006 		MOV	#0,RPDA-RPCS1(R1) ;;; AND TRACK AND SECTOR
   2294	007732	052761 	004000 	000032 		BIS	#RPECCI,RPOF-RPCS1(R1) ;;;SET ECC INHIBIT
   2295	007740	112711 	000070 			MOVB	#RPREAD,(R1)	;;;SET READ FUNCTION, NO GO
   2296					;
   2297					; READ 1K FROM THE RP TO MEMORY
   2298					;
   2299	007744				RPBNXT:
   2300	007744	012761 	176000 	000002 		MOV	#<-1024.>,RPWC-RPCS1(R1) ;;;SET 1K WORD COUNT
   2301	007752	105211 				INCB	(R1)		;;;DO NEXT READ
   2302	007754				10$:
   2303	007754	105711 				TSTB	(R1)		;;;TRANSFER COMPLETE?
   2304	007756	100376 				BPL	10$		;;;NO-- WAIT FOR DONE
   2305					;
   2306					; CHECK TO MAKE SURE NO ERRORS
   2307					;
   2308	007760	032711 	060000 			BIT	#RPTRE!RPMCPE,(R1) ;;;CONTROLLER ERROR?
   2309	007764	001346 				BNE	RPBOOT		;;;YES-- RETRY
   2310	007766	032761 	140000 	000012 		BIT	#RPATA!RPERR,RPDS-RPCS1(R1) ;;;ATTENTION OR DRIVE ERROR?
   2311	007774	001342 				BNE	RPBOOT		;;;YES-- RETRY
   2312					;
   2313					; SEE IF DONE WITH ALL OF MEMORY
   2314					;
   2315	007776	062704 	000040 			ADD	#1024.*2/100,R4	;;;BUMP # 32. WORD BLOCKS WE'VE READ
   2316	010002	022704 				CMP	(PC)+,R4	;;;FINISHED WITH ALL OF MEMORY YET?
   2317	010004	000000 			RPBMSZ:	 .WORD	0		;;;SET UP BY SAVE TO # 32. WORD BLOCKS OF MEMORY
   2318	010006	101356 				BHI	RPBNXT		;;;NO-- READ SOME MORE
   2319					;
   2320					; BOOTSTRAP COMPLETE-- SETUP KT-11 REGISTERS, IF ANY
   2321					;
   2322	010010	012737 	000340 	177776 		MOV	#PR7,@#PS	;;;INSURE KERNAL MODE
   2323					.IF DF M$$MGE
   2324						MOV	#77406,R2	;;;SET TO MAP MAX PAGE SIZE
   2325						MOV	R2,KPDR0	;;; FOR KERNAL PAGE 0
   2326						MOV	R2,KPDR7	;;; AND KP 7
   2327						MOV	R2,UPDR0	;;; AND USER PAGE 7
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 48-1
RP04/RP06 BOOTSTRAP

   2328						MOV	R2,UPDR7	;;; EXTERNAL PAGE FOR USER, TOO
   2329						CLR	KPAR0		;;;MAP KERNAL PAGE 0 TO ABSOLUTE 0
   2330						MOV	(PC)+,@(PC)+	;;;SET UP USER PAGE 0
   2331					RPBUP0:	 .WORD	0,UPAR0		;;;SPACE FOR ADDR OF PAGE
   2332						MOV	#7600,R2	;;;POINT TO EXTERNAL PAGE
   2333						MOV	R2,KPAR7	;;; FOR EXEC
   2334						MOV	R2,UPAR7	;;; AND USER
   2335						MOV	#1,SSR0		;;;ENABLE SEGMENTATION
   2336					.ENDC
   2337					;
   2338					; SETUP TEMPORARY KERNAL STACK AT TOP OF BOOT BLOCK, AND SAVE
   2339					;  BOOTSTRAP PARAMETER AT LOCATION 776
   2340					;
   2341	010016	012706 	001000 			MOV	#1000,SP	;;;START STACK AT TOP OF OUR BLOCK
   2342	010022					PUSH	R5		;;;SAVE BOOT PARAMETER AT BOTTOM OF STACK
	010022	010546 				MOV	R5,-(SP)
   2343					;
   2344					; RETURN TO SAVE TASK IN USER MODE AT SYSTEM RESTORE ENTRY POINT
   2345					;
   2346					.IF DF M$$MGE
   2347						PUSH	#PS.USR!PS.REG!PR7 ;;;USER MODE, PRIORITY 7
   2348					.IFF
   2349	010024					PUSH	#PS.REG!PR7	;;;SET REGISTER SET 1, PRI 7
	010024	012746 	004340 			MOV	#PS.REG!PR7,-(SP)
   2350					.ENDC
   2351	010030					PUSH	#RESTORE	;;; AND RETURN PC IN USER SPACE
	010030	012746 	002734'			MOV	#RESTORE,-(SP)
   2352	010034	000002 				RTI			;;;BACK TO SAVE.
   2353					.IF G <<.-RPBOOT>-<256.*2>>
   2354						.ERROR	<.-RPBOOT> ;  RP BOOT TOO BIG FOR FIRST BLOCK
   2355					.ENDC
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 49
RP04/RP06 WRITE ROUTINE

   2357						.SBTTL	RP04/RP06 WRITE ROUTINE
   2358					;
   2359					; RPWRT -- WRITE MEMORY TO THE RP DISK
   2360					;
   2361					; INPUTS:
   2362					;	DSKADR+0 --	CYLINDER ADDRESS TO START TRANSFER
   2363					;	DSKADR+2 --	(BYTE) SECTOR TO START
   2364					;	DSKADR+3 --	(BYTE) TRACK TO START
   2365					;	DEVUNT --	(BYTE) UNIT # TO WRITE ON
   2366					;	MEMSIZ --	# OF 32. WORD BLOCKS OF MEMORY TO WRITE
   2367					;
   2368	010036				RPWRT:
   2369	010036	012701 	176700 			MOV	#RPCS1,R1	;;;GET ADDRESS OF RPCS1
   2370	010042	005004 				CLR	R4		;;;CLEAR POINTER TO # 32. WORD BLOCKS WRITTEN
   2371	010044	113761 	000044'	000010 		MOVB	DEVUNT,RPCS2+0-RPCS1(R1);;;SET UNIT #
   2372					;
   2373					; INITIALIZE DRIVE
   2374					;
   2375	010052	032711 	004000 			BIT	#RPDVA,(R1)	;;;IS DRIVE AVAILABLE?
   2376	010056	001442 				BEQ	WRTERR		;;;NO-- GIVE ERROR
   2377	010060	012711 	000021 			MOV	#RPPRST!RPGO,(R1) ;;;DO A READ-IN PRESET
   2378	010064	005061 	000004 			CLR	RPBA-RPCS1(R1)	;;;CLEAR BUS ADDRESS TO START WRITE AT ZERO
   2379	010070	013761 	000004'	000034 		MOV	DSKADR+0,RPDC-RPCS1(R1) ;;;SETUP DESIRED CYLINDER
   2380	010076	013761 	000006'	000006 		MOV	DSKADR+2,RPDA-RPCS1(R1) ;;; AND TRACK AND SECTOR
   2381	010104	052761 	004000 	000032 		BIS	#RPECCI,RPOF-RPCS1(R1) ;;;SET ECC INHIBIT
   2382	010112	112711 	000060 			MOVB	#RPWRIT,(R1)	;;;SET WRITE FUNCTION, NO GO
   2383					;
   2384					; WRITE ONE BLOCK OF MEMORY TO THE RP04
   2385					;
   2386	010116				RPWNXT:
   2387	010116	012761 	177400 	000002 		MOV	#<-256.>,RPWC-RPCS1(R1) ;;;SET -VE WORD COUNT
   2388	010124	105211 				INCB	(R1)		;;;WRITE NEXT BLOCK
   2389	010126				10$:
   2390	010126	105711 				TSTB	(R1)		;;;DONE SET?
   2391	010130	100376 				BPL	10$		;;;NO-- WAIT FOR TRANSFER TO COMPLETE
   2392					;
   2393					; CHECK FOR ERRORS DURING TRANSFER
   2394					;
   2395	010132	032711 	060000 			BIT	#RPTRE!RPMCPE,(R1) ;;;CONTROLLER ERROR?
   2396	010136	001012 				BNE	WRTERR		;;;YES-- GIVE UP
   2397	010140	032761 	140000 	000012 		BIT	#RPATA!RPERR,RPDS-RPCS1(R1) ;;;DRIVE ERROR?
   2398	010146	001006 				BNE	WRTERR		;;;YES-- GIVE UP ALSO
   2399					;
   2400					; SEE IF DONE WITH ALL OF MEMORY
   2401					;
   2402	010150	062704 	000010 			ADD	#256.*2/100,R4	;;;ADD A BLOCK'S WORTH OF 32. WORD BLOCKS
   2403	010154	023704 	000014'			CMP	MEMSIZ,R4	;;;DONE WITH ALL OF MEMORY?
   2404	010160	101356 				BHI	RPWNXT		;;;NO-- WRITE NEXT BLOCK
   2405	010162					RETURN			;;;YES-- RETURN FROM RPWRT
	010162	000207 				RTS	PC
   2406					;
   2407					;
   2408					; HERE ON WRITE ERRORS ON EITHER THE RP04 OR THE RX-11
   2409					; JUST RETURN TO RESTORE WITH WEFLAG= 1 TO INDICATE ERROR
   2410					;
   2411	010164				WRTERR:
   2412	010164	105237 	000060'			INCB	WEFLAG		;;;NOTE ERROR IN FLAG
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 49-1
RP04/RP06 WRITE ROUTINE

   2413	010170	000137 	002734'			JMP	RESTORE		;;;RESTORE SYSTEM, THEN GIVE ERROR
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 50
TC-11 DECTAPE ROUTINES

   2415						.SBTTL	TC-11 DECTAPE ROUTINES
   2416					;
   2417					; TCABS -- SET TC-11 ABSOLUTE BLOCK #
   2418					;
   2419					.IF DF FTABS
   2420					TCABS:
   2421						MOV	#^D<578-<28*4>-1>,R1 ;SET TO END OF TAPE
   2422					;	BR	TCSET		;ONWARD!
   2423					.ENDC ; .IF DF FTABS
   2424					;
   2425					; TCSET -- SET TC-11 BLOCK #
   2426					;
   2427	010174				TCSET:
   2428	010174	010100 				MOV	R1,R0		;JUST COPY LOW BLOCK #
   2429	010176					RETURN			; . .
	010176	000207 				RTS	PC
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 51
TC-11 BOOTSTRAP

   2431						.SBTTL	TC-11 BOOTSTRAP
   2432					;
   2433					; HERE TO BOOT FROM TC-11
   2434					;
   2435					; REGISTERS LEFT BY BM-873 ROM:
   2436					;	R1 --	ADDRESS OF TCCM
   2437					;	R5 --	BOOT PARAMETER WORD
   2438					;
   2439	010200				TCBOOT:
   2440	010200	000240 				NOP			;;;THIS IS A BOOTSTRAP
   2441					;
   2442					; SELECT UNIT AND SET UP REGISTERS:
   2443					;	R1 --	ADDRESS OF TCCM
   2444					;	R2 --	BLOCK #
   2445					;	R4 --	COUNT OF 32. WORD BLOCKS READ
   2446					;
   2447		010204'			TCBAD1=.+2
   2448		010204'			TCBAD2=.+2
   2449	010202	012702 	000000 			MOV	#0,R2		;;;GET BLOCK #
   2450	010206	010203 				MOV	R2,R3		;;;COPY THE BLOCK #
   2451	010210	162703 	000003 			SUB	#3,R3		;;;BACK TO THREE BLOCK BEFORE IT
   2452	010214	005004 				CLR	R4		;;;RESET # BLOCKS READ
   2453	010216	005061 	000004 			CLR	TCBA-TCCM(R1)	;;;RESET BUS ADDRESS REGISTER
   2454					;
   2455					; SEARCH FOR CURRENT BLOCK ON TAPE
   2456					;
   2457	010222	112711 	000002 			MOVB	#TCRNUM,(R1)	;;;SET READ BLOCK # FUNCTION
   2458	010226				5$:
   2459	010226	052711 	004000 			BIS	#TCREV,(R1)	;;;SET REVERSE MODE
   2460	010232	105211 				INCB	(R1)		;;;START READ BLOCK FUNCTION
   2461	010234				10$:
   2462	010234	105711 				TSTB	(R1)		;;;READY?
   2463	010236	100376 				BPL	10$		;;;NO-- WAIT
   2464	010240	005711 				TST	(R1)		;;;ERROR?
   2465	010242	100007 				BPL	40$		;;;NO-- CHECK OUT BLOCK #
   2466	010244				20$:
   2467	010244	005761 	177776 			TST	TCST-TCCM(R1)	;;;ERROR-- IS IT END-ZONE?
   2468	010250	100353 				BPL	TCBOOT		;;;NO-- RETRY
   2469	010252	032711 	004000 			BIT	#TCREV,(R1)	;;;GOING REVERSE?
   2470	010256	001763 				BEQ	5$		;;;NO-- GO THAT WAY
   2471	010260	000403 				BR	50$		;;;YES-- GO FORWARD
   2472					;
   2473	010262				40$:
   2474	010262	026103 	000006 			CMP	TCDT-TCCM(R1),R3 ;;;PAST BLOCK YET (CURRENT BLOCK LOW)?
   2475	010266	003357 				BGT	5$		;;;NO-- KEEP SEARCHING IN REVERSE
   2476	010270				50$:
   2477	010270	042711 	004000 			BIC	#TCREV,(R1)	;;;GO FORWARD
   2478	010274	105211 				INCB	(R1)		;;;START READ BLOCK # FUNCTION
   2479	010276				60$:
   2480	010276	105711 				TSTB	(R1)		;;;READY?
   2481	010300	100376 				BPL	60$		;;;NO-- WAIT
   2482	010302	005711 				TST	(R1)		;;;ERROR?
   2483	010304	100757 				BMI	20$		;;;YES-- CHECK IT OUT
   2484	010306	026102 	000006 			CMP	TCDT-TCCM(R1),R2 ;;;AT PROPER BLOCK?
   2485	010312	002766 				BLT	50$		;;;NOT YET-- KEEP GOING
   2486	010314	003344 				BGT	5$		;;;OOPS, PAST IT-- GO BACK AGAIN
   2487					;
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 51-1
TC-11 BOOTSTRAP

   2488					; BLOCK FOUND-- START TRANSFER
   2489					;
   2490	010316	112711 	000004 			MOVB	#TCREAD,(R1)	;;;SET READ FUNCTION, NO GO
   2491					;
   2492					; START NEXT 1.K TRANSFER
   2493					;
   2494	010322				TCBNXT:
   2495	010322	012761 	176000 	000002 		MOV	#<-1024.>,TCWC-TCCM(R1) ;;;SET WORD COUNT
   2496	010330	105211 				INCB	(R1)		;;;SET GO
   2497	010332				10$:
   2498	010332	105711 				TSTB	(R1)		;;;READY?
   2499	010334	100376 				BPL	10$		;;;NO-- WAIT FOR TRANSFER TO COMPLETE
   2500	010336	005711 				TST	(R1)		;;;ERRORS?
   2501	010340	100717 				BMI	TCBOOT		;;;YES-- TRY IT ALL AGAIN
   2502					;
   2503					; SEE IF ALL DONE
   2504					;
   2505	010342	062704 	000040 			ADD	#1024.*2/100,R4	;;;BUMP COUNT OF 32. WORD BLOCKS READ
   2506	010346	022704 				CMP	(PC)+,R4	;;;DONE YET?
   2507	010350	000000 			TCBMSZ:	 .WORD	0		;;;SPACE FOR SIZE
   2508	010352	101363 				BHI	TCBNXT		;;;NO-- GET NEXT BLOCK
   2509	010354	112711 	000011 			MOVB	#TCSTOP+TCGO,(R1) ;;;STOP TAPE
   2510					;
   2511					; BOOTSTRAP COMPLETE-- SETUP KT-11 REGISTERS, IF ANY
   2512					;
   2513	010360	012737 	000340 	177776 		MOV	#PR7,@#PS	;;;INSURE KERNAL MODE
   2514					.IF DF M$$MGE
   2515						MOV	#77406,R2	;;;SET TO MAP MAX PAGE SIZE
   2516						MOV	R2,KPDR0	;;; FOR KERNAL PAGE 0
   2517						MOV	R2,KPDR7	;;; AND KP 7
   2518						MOV	R2,UPDR0	;;; AND USER PAGE 7
   2519						MOV	R2,UPDR7	;;; EXTERNAL PAGE FOR USER, TOO
   2520						CLR	KPAR0		;;;MAP KERNAL PAGE 0 TO ABSOLUTE 0
   2521						MOV	(PC)+,@(PC)+	;;;SET UP USER PAGE 0
   2522					TCBUP0:	 .WORD	0,UPAR0		;;;SPACE FOR ADDR OF PAGE
   2523						MOV	#7600,R2	;;;POINT TO EXTERNAL PAGE
   2524						MOV	R2,KPAR7	;;; FOR EXEC
   2525						MOV	R2,UPAR7	;;; AND USER
   2526						MOV	#1,SSR0		;;;ENABLE SEGMENTATION
   2527					.ENDC
   2528					;
   2529					; SETUP TEMPORARY KERNAL STACK AT TOP OF BOOT BLOCK, AND SAVE
   2530					;  BOOTSTRAP PARAMETER AT LOCATION 776
   2531					;
   2532	010366	012706 	001000 			MOV	#1000,SP	;;;START STACK AT TOP OF OUR BLOCK
   2533	010372					PUSH	R5		;;;SAVE BOOT PARAMETER AT BOTTOM OF STACK
	010372	010546 				MOV	R5,-(SP)
   2534					;
   2535					; RETURN TO SAVE TASK IN USER MODE AT SYSTEM RESTORE ENTRY POINT
   2536					;
   2537					.IF DF M$$MGE
   2538						PUSH	#PS.USR!PS.REG!PR7 ;;;USER MODE, PRIORITY 7
   2539					.IFF
   2540	010374					PUSH	#PS.REG!PR7	;;;SET REGISTER SET 1, PRI 7
	010374	012746 	004340 			MOV	#PS.REG!PR7,-(SP)
   2541					.ENDC
   2542	010400					PUSH	#RESTORE	;;; AND RETURN PC IN USER SPACE
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 51-2
TC-11 BOOTSTRAP

	010400	012746 	002734'			MOV	#RESTORE,-(SP)
   2543	010404	000002 				RTI			;;;BACK TO SAVE.
   2544					.IF G <<.-TCBOOT>-<256.*2>>
   2545						.ERROR	<.-TCBOOT> ;  TC BOOT TOO BIG FOR FIRST BLOCK
   2546					.ENDC
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 52
TC-11 WRITE ROUTINE

   2548						.SBTTL	TC-11 WRITE ROUTINE
   2549					;
   2550					; TCWRT -- TC-11 DECTAPE WRITE ROUTINE
   2551					;
   2552					; INPUTS:
   2553					;	DSKADR+0 --	BLOCK # TO START TRANSFER AT
   2554					;	DEVUNT --	UNIT # TO SCRIBBLE ON
   2555					;	MEMSIZ --	# OF 32. WORD BLOCKS TO WRITE
   2556					;
   2557					; REGISTERS:
   2558					;	R1 --	ADDRESS OF TCCM
   2559					;	R2 --	BLOCK #
   2560					;	R4 --	COUNT OF 32. WORD BLOCKS WRITTEN
   2561					;
   2562	010406				TCWRT:
   2563	010406	012701 	177342 			MOV	#TCCM,R1	;;;ADDRESS COMMAND REGISTER
   2564	010412	013702 	000004'			MOV	DSKADR+0,R2	;;;GET BLOCK #
   2565	010416	010203 				MOV	R2,R3		;;;COPY THE BLOCK #
   2566	010420	162703 	000003 			SUB	#3,R3		;;;BACK TO THREE BLOCK BEFORE IT
   2567	010424	113761 	000044'	000001 		MOVB	DEVUNT,1(R1)	;;;SELECT PROPER UNIT
   2568	010432	005004 				CLR	R4		;;;RESET # BLOCKS READ
   2569	010434	005061 	000004 			CLR	TCBA-TCCM(R1)	;;;RESET BUS ADDRESS REGISTER
   2570					;
   2571					; SEARCH FOR CURRENT BLOCK ON TAPE
   2572					;
   2573	010440	112711 	000002 			MOVB	#TCRNUM,(R1)	;;;SET READ BLOCK # FUNCTION
   2574	010444				5$:
   2575	010444	052711 	004000 			BIS	#TCREV,(R1)	;;;SET REVERSE MODE
   2576	010450	105211 				INCB	(R1)		;;;START READ BLOCK FUNCTION
   2577	010452				10$:
   2578	010452	105711 				TSTB	(R1)		;;;READY?
   2579	010454	100376 				BPL	10$		;;;NO-- WAIT
   2580	010456	005711 				TST	(R1)		;;;ERROR?
   2581	010460	100007 				BPL	40$		;;;NO-- CHECK OUT BLOCK #
   2582	010462				20$:
   2583	010462	005761 	177776 			TST	TCST-TCCM(R1)	;;;ERROR-- IS IT END-ZONE?
   2584	010466	100244 				BPL	TCBOOT		;;;NO-- RETRY
   2585	010470	032711 	004000 			BIT	#TCREV,(R1)	;;;GOING REVERSE?
   2586	010474	001763 				BEQ	5$		;;;NO-- GO THAT WAY
   2587	010476	000403 				BR	50$		;;;YES-- GO FORWARD
   2588					;
   2589	010500				40$:
   2590	010500	026103 	000006 			CMP	TCDT-TCCM(R1),R3 ;;;PAST BLOCK YET (CURRENT BLOCK LOW)?
   2591	010504	003357 				BGT	5$		;;;NO-- KEEP SEARCHING IN REVERSE
   2592	010506				50$:
   2593	010506	042711 	004000 			BIC	#TCREV,(R1)	;;;GO FORWARD
   2594	010512	105211 				INCB	(R1)		;;;START READ BLOCK # FUNCTION
   2595	010514				60$:
   2596	010514	105711 				TSTB	(R1)		;;;READY?
   2597	010516	100376 				BPL	60$		;;;NO-- WAIT
   2598	010520	005711 				TST	(R1)		;;;ERROR?
   2599	010522	100757 				BMI	20$		;;;YES-- CHECK IT OUT
   2600	010524	026102 	000006 			CMP	TCDT-TCCM(R1),R2 ;;;AT PROPER BLOCK?
   2601	010530	002766 				BLT	50$		;;;NOT YET-- KEEP GOING
   2602	010532	003344 				BGT	5$		;;;OOPS, PAST IT-- GO BACK AGAIN
   2603					;
   2604					; BLOCK FOUND-- START TRANSFER
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 52-1
TC-11 WRITE ROUTINE

   2605					;
   2606	010534	112711 	000014 			MOVB	#TCWRIT,(R1)	;;;SET WRITE FUNCTION, NO GO
   2607					;
   2608					; START NEXT 1.K TRANSFER
   2609					;
   2610	010540				TCWNXT:
   2611	010540	012761 	177400 	000002 		MOV	#<-256.>,TCWC-TCCM(R1) ;;;SET WORD COUNT
   2612	010546	105211 				INCB	(R1)		;;;SET GO
   2613	010550				10$:
   2614	010550	105711 				TSTB	(R1)		;;;READY?
   2615	010552	100376 				BPL	10$		;;;NO-- WAIT FOR TRANSFER TO COMPLETE
   2616	010554	005711 				TST	(R1)		;;;ERRORS?
   2617	010556	100410 				BMI	TCWERR		;;;YES-- GIVE UP
   2618					;
   2619					; SEE IF ALL DONE
   2620					;
   2621	010560	062704 	000010 			ADD	#256.*2/100,R4	;;;BUMP COUNT OF 32. WORD BLOCKS TRANSFERED
   2622	010564	023704 	000014'			CMP	MEMSIZ,R4	;;;DONE YET?
   2623	010570	101363 				BHI	TCWNXT		;;;NO-- GET NEXT BLOCK
   2624	010572	112711 	000011 			MOVB	#TCSTOP+TCGO,(R1) ;;;STOP TAPE
   2625	010576					RETURN			;;;FROM TCWRT
	010576	000207 				RTS	PC
   2626					;
   2627					; HERE ON ERROR ON TC-11
   2628					;
   2629	010600				TCWERR:
   2630	010600	000137 	010164'			JMP	WRTERR		;;;GIVE UP
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 53
CHK11 -  ONCE ONLY SYSTEM DIAGNOSTIC  25 NOV 80

   2632					.SBTTL	CHK11 -  ONCE ONLY SYSTEM DIAGNOSTIC  25 NOV 80
   2633
   2634		000000 			.REPT 0
   2635
   2636					COPYRIGHT (C) 1977,1978,1979,1980,1981 BY
   2637					DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.
   2638
   2639					THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND  COPIED
   2640					ONLY  IN  ACCORDANCE  WITH  THE  TERMS  OF  SUCH  LICENSE AND WITH THE
   2641					INCLUSION OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR  ANY  OTHER
   2642					COPIES  THEREOF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY
   2643					OTHER PERSON.  NO TITLE TO AND OWNERSHIP OF  THE  SOFTWARE  IS  HEREBY
   2644					TRANSFERRED.
   2645
   2646					THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT  NOTICE
   2647					AND  SHOULD  NOT  BE  CONSTRUED  AS  A COMMITMENT BY DIGITAL EQUIPMENT
   2648					CORPORATION.
   2649
   2650					DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR  RELIABILITY  OF  ITS
   2651					SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DIGITAL.
   2652
   2653					.ENDR
   2654
   2655
   2656
   2657
   2658					; Version 3(67)  13 NOV 79	DMCC/EGF/JBS/LAD/KR/EJW/MM/DRL/KR/DRL/KR/DRL
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 54
CHK11 -  ONCE ONLY SYSTEM DIAGNOSTIC  25 NOV 80

   2660					;	Revision History
   2661
   2662					; 1(13)	08-Sep-76 JBS	Started revision history
   2663					; 1(14)	19-Oct-76 KR	Added DZ11 code and support to count devices below it
   2664					;			Also added more timing before RESET, and CPU type
   2665					;			checking
   2666					;			as well as fixing bug in core reporting on 11/34
   2667					; 1(15)	03-Nov-76 KR	fixed bug in 11/05 CPU determination
   2668					; 1(16)	04-NOV-76 JBS	INCLUDED EJW'S DTE CHECKING
   2669					; 1(17)	29-DEC-76 JBS	INCLUDED SOME DN61-S CODE
   2670					; 1(20)	21-JAN-77 JBS	REMOVED USE OF SPL INSTRUCTION
   2671					; 1(21) 25-JAN-77 JBS	STARTED ADDING DN20 CODE (INCOMPLETE)
   2672					; 1(22) 28-JAN-77 JBS	SUPPORT DS11 ONLY ON DC75 (CONFLICT WITH LP20)
   2673					; 1(23) 31-JAN-77 JBS	ASSUME NOT DN20 ADDRESSING UNLESS REQUESTED
   2674					; 1(24) 01-FEB-77 JBS	MINOR LISTING CLEANUP
   2675					; 1(25) 14-FEB-77 JBS	UPDATED LEGAL NOTICE AS PER 005-003-286-03
   2676					; 1(26)	09-MAR-77 JBS	STORE DTE20 ADDRESSES AND VECTORS
   2677					;			 AND DO SOME LISTING CLEANUP
   2678					; 1(27) 21-MAR-77 JBS	REMOVE KGLOAD MACRO
   2679					;
   2680					; 1(30) 01-APR-77 JBS	CHANGE NAME TO DN61
   2681					; 1(31)	06-APR-77 MM	SAVE INTERRUPT VECTOR LOCATION
   2682					;			IN A DIFFERENT GLOBAL CELL DTEDTO
   2683					; 1(32) 12-APR-77 JBS	FIX SUPPRESSION OF KG11-A MESSAGE
   2684					; 1(33)	14-APR-77 JBS	FIX DUP11 VECTOR CALCULATION
   2685					;			 AND ADD KMC11
   2686					; 1(34) 17-MAY-77 JBS	REMOVE EXPLICIT REFERENCES TO PS REGISTER AND
   2687					;			 FILL VECTOR SPACE TO 1200 INSTEAD OF 1000.
   2688					; 1A(35) 27-JUN-77 JBS	IMPROVE KMC11 CHECKING AND START IT
   2689					;			 IF REQUESTED.
   2690					; 1A(36) 30-JUN-77 JBS	IMPROVE KMC11 CHECKING AGAIN AND LOAD ITS
   2691					;  TO 1A(37)		 CRAM IF REQUESTED.
   2692					; 2(40)	18-JUL-77 JBS	CHANGE VERSION NUMBER TO 2, DONT LOAD
   2693					;			 KMC11 CRAM IF SIZE11 DID.
   2694					; 2(41)	12-SEP-77 JBS	DONT LOAD MORE THAN 2000 OCTAL
   2695					;			 WORDS OF KMC11 CRAM (I.E., DONT LOAD
   2696					;			 THE VERSION NUMBER).
   2697					; 2(42)	13-SEP-77 JBS	REMOVE ALL REFERENCES TO REGISTER 'P'.
   2698					; 2(43)	14-OCT-77 JBS	FIX KMC11 STARTING LOOP TO START MORE
   2699					;			 THAN ONE KMC11
   2700					; 2(44) 16-JAN-78 DRL	FILL ONLY TO 1000 NOT 1200 FOR VECTORS
   2701					;			 (THIS PREVENTS SCREWING DDT.P11)
   2702					; 3(45) 16-JAN-78 DRL	CORRECT DC75 CONDITIONALS
   2703					;			 UPDATA VERSION NUMBER
   2704					;			 TAKE OUT EXTRA DC75 CODE
   2705					;			 FIX DL10 TESTS
   2706					; 3(46) 23-JAN-78 DRL	RESTRUCTURE DEVICE MACROS, AND
   2707					;			 FIX WAY CODE IS INCLUDED OR NOT
   2708					; 3(47) 2-Mar-78 KR	Add code to check all of memory, using
   2709					;			 memory management if present
   2710					; 3(50) 5-Mar-78 KR	Add code to distinguish types of KMC11's on DN20
   2711					; 3(51) 21-JUN-78 DRL	Fix timing problems for dz11's
   2712					; 3(52) 7-jul-78 drl	Add LP20 code
   2713					; 3(53) 3-AUG-78 DRL	Make the LP20 code a little smarter
   2714					; 3(54) 5-Sep-78 KR	Add DMC11 code, and make DZ11 code skip echo test
   2715					;			if interrupt didn't occur (since it will
   2716					;			always fail as well)
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 54-1
CHK11 -  ONCE ONLY SYSTEM DIAGNOSTIC  25 NOV 80

   2717					; 3(55) 12-Sep-78	Allow DL10 on other than 100000
   2718					; 3(57) 26-Sep-78	Put back .BLKB at CKBLK
   2719					; 3(60) 27-NOV-78 DRL	FEATURE TEST THE CONTINUE ON ERROR STUFF
   2720					; 3(64) 26-JUN-79 DRL	FIX DMC BUG (MR NOT SET AT RIGHT TIME)
   2721					;			FIX TYPO FOR DL11 CODE
   2722
   2723		000067 			VRCHK1=067
   2724		000004 			ERRINT=4
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 55
CHK11 -  ONCE ONLY SYSTEM DIAGNOSTIC  25 NOV 80

   2726					; THIS CODE IS EXECUTED ONCE AND THEN OVERLAID WITH TABLES
   2727					;
   2728					; CALL TO CHK11 IS AS FOLLOWS:
   2729					;	JSR	PC,CHK.11
   2730					;	.ASCIZ	\PROGRAM NAME\
   2731					;	RETURNS BY JUMP TO 'BEGIN'
   2732					;	OR TO  'CKDONE' IF THIS IS DEFINED
   2733					;
   2734					;	CHK11 WILL DETERMINE WHAT HARDWARE IS PRESENT
   2735					;	  AND WILL PERFORM A FEW SIMPLE DIAGNOSTIC TESTS OF THE HDW
   2736					;
   2737					;	FOR DEV = < DH11, DM11BB, DP11, DQ11, DS11, DU11>
   2738					;	CHK11 WILL:	JSR PC,CKA'DEV
   2739					;			WITH (R3) = DEVICE VECTOR
   2740					;			AND (R4) = DEVICE ADR
   2741					;			AND (R1) = DEVICE ADR
   2742					;	ONCE FOR EACH DEVICE AND A FINAL:
   2743					;			JSR	PC,CKA'DEV WITH (R4)=0
   2744					;
   2745					; ALL SYMBOLS BEGINING CHK OR CK ARE RESERVED FOR CHK11
   2746	010604					ND	FLOATV,300	;FIRST FLOATING VECTOR
   2747	010604					ND	FLOATD,160000	;FLOATING DEVICES BEGIN HERE + 10
   2748	010604					ND	CKDONE,BEGIN
   2749	010604					ND	BEGIN,CKDONE
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 56
CHK11 MACRO'S

   2751					.SBTTL		CHK11 MACRO'S
   2752
   2753					;THIS MACRO IS USED FOR TYPING TEXT AND/OR FOR
   2754					;ERROR REPORTING.
   2755					;
   2756					;	ARG	BITS	;WHAT TO DO ON A TRAP
   2757		000001 					CKEFAT=	B0	;FATAL ERROR - HALT
   2758		000002 					CKEPC=	B1	;PRINT ADDRESS OF ERROR TRAP
   2759		000004 					CKEMSG=	B2	;PRINT THE MESSAGE FOLLOWING CK11SC
   2760		000010 					CKEDID=	B3	;PRINT DEVICE ID AND REG
   2761		000020 					CKEMSE=	B4	;PRINT THE MESSAGE POINTED TO BY
   2762									; THE ADDRESS FOLLOWING THE TRAP.
   2763		000040 					CKENCL=	B5	;PRINT TEXT WITH OUT CR+LF
   2764		000100 					CKEGB=	B6	;PRINT ADR/REG=XXXXX GD=XXXXX  BD=XXXXX XOR=XXXXX
   2765		000200 					CKEWRN=B7	;address is virtual, print physical [3(47)]
   2766					;
   2767					;	ARG	MSG	;TEXT TO BE OUTPUT
   2768					;
   2769					;	ARG	COMENT	;ADD A COMMENT TO TRAP
   2770					;
   2771					;	ARG	STOPCD	;ON A FATAL ERROR VALUE TO BE PUT IN R0
   2772					;
   2773					.MACRO	CK11SC	BITS,MSG,COMENT,STOPCD
   2774					.NCHR	CKZZZX,<MSG>
   2775					.IIF NB,STOPCD,	MOV	#STOPCD,CKSPCD	;VALUE TO DISPLAY IN R0,
   2776										;AND DATA LIGHTS ON FATAL ERROR
   2777					.IIF	EQ,CKZZZX,	TRAP	BITS		;COMENT
   2778					.IF	NE,CKZZZX
   2779					.IF	EQ,<BITS&CKEMSE>
   2780						TRAP	BITS!CKEMSG		;COMENT
   2781					;	ASCIZ	<MSG>
   2782					.ENDC
   2783					.IF	NE,<BITS&CKEMSE>
   2784						TRAP	BITS&<^CCKEMSG>		;COMENT
   2785						.WORD	MSG			;ADR OF MESSAGE
   2786					.ENDC
   2787					.ENDC
   2788					.ENDM	CK11SC
   2789
   2790
   2791
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 57
CHK11 MACRO'S

   2793					;THIS MACRO IS USED TO CHECK INTERRUPT CONDITIONS
   2794					;
   2795					;	ARG	ENBADR		;DEVICE ADR TO ENABLE INTERRUPTS
   2796					;
   2797					;	ARG	INTADR		;DEVICE ADR TO GENERATE AN INTERRUPT
   2798					;
   2799					;	ARG	ENLBIT		;BIT TO ENABLE INTERRUPTS
   2800					;
   2801					;	ARG	INTBIT		;BITS TO CHECK INTERRUPT CONDITIONS
   2802					;
   2803					;	ARG	BITCLR		;BITS TO CLEAR INTERRUPT CONDITIONS
   2804					;				;IF CLEARING INTERRUPT BITS WON'T CLEAR
   2805					;				;THEM.  [EXAMPLE - DL10]
   2806					;
   2807					;	ARG	INTSUB		;subroutine to cause interrupt, if normal bit
   2808					;				;setting doesnt work. Otherwise 0.
   2809					;
   2810					.MACRO	$CKINT	ENBADR,INTADR,ENLBIT,INTBIT,BITCLR,INTSUB
   2811					.IIF	NB,ENBADR,	MOV	ENBADR,R1			;LOAD ENABLE ADR
   2812					.IIF	NB,INTADR,	MOV	INTADR,R2			;LOAD INTERRUPT ADR
   2813						JSR	R5,CKINT		;GO CHECK INTERRUPTS
   2814						.WORD	ENLBIT			;ENABLE BITS -  ENLBIT
   2815						.WORD	INTBIT			;INTERRUPT BITS -  INTBIT
   2816					.IIF	B,BITCLR,	.WORD	0			;NO SPECIAL CLEAR BITS
   2817					.IIF	NB,BITCLR,	.WORD	BITCLR			;BITS TO CLEAR DEVICE - BITCLR
   2818					.IIF	B,INTSUB,	.WORD	0			;no interrupt SUB,routine needed
   2819					.IIF	NB,INTSUB,	.WORD	INTSUB			;subroutine to generate interrupt
   2820					.ENDM	$CKINT
   2821
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 58
CHK11 MACRO'S

   2823					;THIS MACRO IS USED TO TO CALL THE ROUTINE TO CHECK A DEVICE
   2824					;AND ASSIGN THE FLOATING ADDRESS AND VECTORS IF THE DEVICE
   2825					;IS THE TYPE THAT REQUIRES IT.
   2826					;
   2827					;	ARG	A		;DEVICE ADDRESS OR 0 IF FLOATING DEVICE
   2828					;
   2829					;	ARG	MAXN		;MAXIMUM NUMBER OF DEVICES
   2830					;
   2831					;	ARG	VI		;VECTOR INCREMENT
   2832					;
   2833					;	ARG	HI		;HARDWARE INCREMENT
   2834					;
   2835					;	ARG	VM		;VECTOR MULTIPLE
   2836					;
   2837					;	ARG	NAM		;ADDRESS OF DEVICE NAME
   2838					;
   2839					;	ARG	FV		;FIRST VECTOR ADR (FIXED DEV ONLY)
   2840					;
   2841					.MACRO	DEVICE	A,MAXN,VI,HI,VM,NAM,FV
   2842
   2843					;DETERMINE HOW MANY NAM'11S IN SYSTEM
   2844
   2845						JSR	R5,CHKDEV		;ADJUST FLOATING VECTOR FOR NAM'11
   2846						.WORD	A			;1ST NAM'11 ADR IS A
   2847						.BYTE	<MAXN>,<VI>		;MAXIMUM NUMBER OF NAM'11 IS MAXN,
   2848										; VECTOR INCREMENT IS VI
   2849						.BYTE	<HI>,<VM>		;HARDWARE INCREMENT IS HI,
   2850										; 1ST VECTOR MULTIPLE IS VM
   2851						.WORD	0			;WILL BECOME NUMBER OF DEVICES
   2852						.WORD	CKN'NAM'11			;ADDRESS OF ASCIZ \NAM'11\
   2853						.IIF DF CK'NAM'11,CK'NAM'$$=CK'NAM'11	;IF DEFINED, USE THE PROC
   2854						.IIF NDF CK'NAM'11,CK'NAM'$$=CKPOPJ	;ELSE JUST EXIT
   2855						.WORD	CK'NAM'$$			;ADDRESS OF ROUTINE TO CHECK
   2856											; DEVICE (CK'NAM'11)
   2857						.IIF DF CKA'NAM'11,CKA'NAM'$$=CKA'NAM'11 ;IF PROGRAM ENTRY DEFINED, USE IT
   2858						.IIF NDF CKA'NAM'11,CKA'NAM'$$=CKPOPJ	;ELSE JUST EXIT
   2859						.WORD	CKA'NAM'$$			;CALL FOR MAIN PROGRAM (CKA'NAM'11)
   2860						.WORD	0			;FREE ENTRY
   2861						.WORD	0			;WILL CONTAIN NUMBER OF NAM'11 FOUND
   2862						.WORD	0			;WILL CONTAIN FIRST NAM'11 VECTOR ADR
   2863					.IIF NDF,NAM'.LVL,NAM'.LVL=0
   2864						.WORD	NAM'.LVL*40		;CONTAINS NAM'11 PI LEVEL
   2865						.WORD	FV			;DEVICE FIRST VECTOR (FIXED DEV ONLY)
   2866					.ENDM	DEVICE
   2867
   2868
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 59
CHK11 MACRO'S

   2870					;THIS MACRO IS USED FOR SAVING GOOD, BAD, AND ADR ON THE STACK
   2871					;PRIOR TO CALLING "CHKERR".
   2872					;
   2873					;	ARG	GD		;GOOD DATA
   2874					;
   2875					;	ARG	BD		;BAD DATA
   2876					;
   2877					;	ARG	ADR		;ADDRESS WHERE IT HAPPENED
   2878					;
   2879					.MACRO	CKSERR	GD,BD,ADR
   2880						MOV	GD,-(SP)			;SAVE GOOD (GD) ON STACK
   2881						MOV	BD,-(SP)			;SAVE BAD (BD) ON STACK
   2882						MOV	ADR,-(SP)		;SAVE ADDRESS (ADR) ON STACK
   2883					.ENDM	CKSERR
   2884
   2885						.SBTTL		DEFINE DEVICE BLOCKS FOR EACH NODE TYPE
   2886
   2887					;	THE CHOICES ARE:
   2888					;		1	DC75
   2889					;		2	DN80/81/82
   2890					;		3	DN85/87
   2891					;		4	DN87S
   2892					;		5	DN20/21/22/200
   2893					;
   2894					;	EACH OF THESE ASSIGNS VECTORS AND CSR'S IN A DIFFERENT MANNER.
   2895
   2896	010604				CKCDEV:		;NOTHING BUT DEVICE MACROS MAY EXIST BETWEEN THE LABELS
   2897							;CKCDEV AND CKCEND, AS THESE MACROS CAUSE CODE & TABLES
   2898							;TO BE BUILD. ALSO, THE SYMBOL CKCADD MUST BE DEFINED
   2899							; TO BE .-CKCDEV AFTER THE FIRST DEVICE MACRO FOR EACH
   2900							; TYPE OF SYSTEM (I.E. THE LENGTH OF THE DEVICE MACRO).
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 60
DEVICE MACROS FOR ALL POSSIBLE CONFIGURATIONS

   2902					.SBTTL		DEVICE MACROS FOR ALL POSSIBLE CONFIGURATIONS
   2903
   2904	010604				DEVICE	CTISTS,1,0,0,0,KL,CTOVEC	;OPR TTY (DL11-C)
	010604	004537 	013202'			JSR	R5,CHKDEV		;ADJUST FLOATING VECTOR FOR KL11
	010610	177560 				.WORD	CTISTS			;1ST KL11 ADR IS CTISTS
	010612	   001 	   000 			.BYTE	<1>,<0>		;MAXIMUM NUMBER OF KL11 IS 1,
	010614	   000 	   000 			.BYTE	<0>,<0>		;HARDWARE INCREMENT IS 0,
	010616	000000 				.WORD	0			;WILL BECOME NUMBER OF DEVICES
	010620	011364'				.WORD	CKNKL11			;ADDRESS OF ASCIZ \KL11\
	010622	016424'				.WORD	CKKL$$			;ADDRESS OF ROUTINE TO CHECK
	010624	012320'				.WORD	CKAKL$$			;CALL FOR MAIN PROGRAM (CKAKL11)
	010626	000000 				.WORD	0			;FREE ENTRY
	010630	000000 				.WORD	0			;WILL CONTAIN NUMBER OF KL11 FOUND
	010632	000000 				.WORD	0			;WILL CONTAIN FIRST KL11 VECTOR ADR
	010634	000200 				.WORD	KL.LVL*40		;CONTAINS KL11 PI LEVEL
	010636	000064 				.WORD	CTOVEC			;DEVICE FIRST VECTOR (FIXED DEV ONLY)
   2905		000034 			CKCADD=.-CKCDEV
   2906	010640				DEVICE	175610,1,0,0,0,RD,304		;TTY INTERFACE (DL11-E) KLINIK
	010640	004537 	013202'			JSR	R5,CHKDEV		;ADJUST FLOATING VECTOR FOR RD11
	010644	175610 				.WORD	175610			;1ST RD11 ADR IS 175610
	010646	   001 	   000 			.BYTE	<1>,<0>		;MAXIMUM NUMBER OF RD11 IS 1,
	010650	   000 	   000 			.BYTE	<0>,<0>		;HARDWARE INCREMENT IS 0,
	010652	000000 				.WORD	0			;WILL BECOME NUMBER OF DEVICES
	010654	011377'				.WORD	CKNRD11			;ADDRESS OF ASCIZ \RD11\
	010656	016360'				.WORD	CKRD$$			;ADDRESS OF ROUTINE TO CHECK
	010660	012320'				.WORD	CKARD$$			;CALL FOR MAIN PROGRAM (CKARD11)
	010662	000000 				.WORD	0			;FREE ENTRY
	010664	000000 				.WORD	0			;WILL CONTAIN NUMBER OF RD11 FOUND
	010666	000000 				.WORD	0			;WILL CONTAIN FIRST RD11 VECTOR ADR
	010670	000200 				.WORD	RD.LVL*40		;CONTAINS RD11 PI LEVEL
	010672	000304 				.WORD	304			;DEVICE FIRST VECTOR (FIXED DEV ONLY)
   2907	010674				DEVICE	175630,3,<-10>,10,0,DL,744	;ASYNC I/O (DL11-E)
	010674	004537 	013202'			JSR	R5,CHKDEV		;ADJUST FLOATING VECTOR FOR DL11
	010700	175630 				.WORD	175630			;1ST DL11 ADR IS 175630
	010702	   003 	   370 			.BYTE	<3>,<-10>		;MAXIMUM NUMBER OF DL11 IS 3,
	010704	   010 	   000 			.BYTE	<10>,<0>		;HARDWARE INCREMENT IS 10,
	010706	000000 				.WORD	0			;WILL BECOME NUMBER OF DEVICES
	010710	011415'				.WORD	CKNDL11			;ADDRESS OF ASCIZ \DL11\
	010712	016360'				.WORD	CKDL$$			;ADDRESS OF ROUTINE TO CHECK
	010714	012320'				.WORD	CKADL$$			;CALL FOR MAIN PROGRAM (CKADL11)
	010716	000000 				.WORD	0			;FREE ENTRY
	010720	000000 				.WORD	0			;WILL CONTAIN NUMBER OF DL11 FOUND
	010722	000000 				.WORD	0			;WILL CONTAIN FIRST DL11 VECTOR ADR
	010724	000200 				.WORD	DL.LVL*40		;CONTAINS DL11 PI LEVEL
	010726	000744 				.WORD	744			;DEVICE FIRST VECTOR (FIXED DEV ONLY)
   2908	010730				DEVICE	CD.STS,1,0,0,0,CD,CD.VEC	;CARD READER (CD11)
	010730	004537 	013202'			JSR	R5,CHKDEV		;ADJUST FLOATING VECTOR FOR CD11
	010734	177160 				.WORD	CD.STS			;1ST CD11 ADR IS CD.STS
	010736	   001 	   000 			.BYTE	<1>,<0>		;MAXIMUM NUMBER OF CD11 IS 1,
	010740	   000 	   000 			.BYTE	<0>,<0>		;HARDWARE INCREMENT IS 0,
	010742	000000 				.WORD	0			;WILL BECOME NUMBER OF DEVICES
	010744	011352'				.WORD	CKNCD11			;ADDRESS OF ASCIZ \CD11\
	010746	017140'				.WORD	CKCD$$			;ADDRESS OF ROUTINE TO CHECK
	010750	012320'				.WORD	CKACD$$			;CALL FOR MAIN PROGRAM (CKACD11)
	010752	000000 				.WORD	0			;FREE ENTRY
	010754	000000 				.WORD	0			;WILL CONTAIN NUMBER OF CD11 FOUND
	010756	000000 				.WORD	0			;WILL CONTAIN FIRST CD11 VECTOR ADR
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 60-1
DEVICE MACROS FOR ALL POSSIBLE CONFIGURATIONS

	010760	000300 				.WORD	CD.LVL*40		;CONTAINS CD11 PI LEVEL
	010762	000230 				.WORD	CD.VEC			;DEVICE FIRST VECTOR (FIXED DEV ONLY)
   2909	010764				DEVICE	LP.STS,2,<-10>,10,0,LP,LP.VEC	;LINE PRINTER (LP11)
	010764	004537 	013202'			JSR	R5,CHKDEV		;ADJUST FLOATING VECTOR FOR LP11
	010770	177514 				.WORD	LP.STS			;1ST LP11 ADR IS LP.STS
	010772	   002 	   370 			.BYTE	<2>,<-10>		;MAXIMUM NUMBER OF LP11 IS 2,
	010774	   010 	   000 			.BYTE	<10>,<0>		;HARDWARE INCREMENT IS 10,
	010776	000000 				.WORD	0			;WILL BECOME NUMBER OF DEVICES
	011000	011451'				.WORD	CKNLP11			;ADDRESS OF ASCIZ \LP11\
	011002	017250'				.WORD	CKLP$$			;ADDRESS OF ROUTINE TO CHECK
	011004	012320'				.WORD	CKALP$$			;CALL FOR MAIN PROGRAM (CKALP11)
	011006	000000 				.WORD	0			;FREE ENTRY
	011010	000000 				.WORD	0			;WILL CONTAIN NUMBER OF LP11 FOUND
	011012	000000 				.WORD	0			;WILL CONTAIN FIRST LP11 VECTOR ADR
	011014	000200 				.WORD	LP.LVL*40		;CONTAINS LP11 PI LEVEL
	011016	000200 				.WORD	LP.VEC			;DEVICE FIRST VECTOR (FIXED DEV ONLY)
   2910	011020				DEVICE	RXCS,1,0,0,0,RX,264		;RX11 FLOPPY CONTROLLER
	011020	004537 	013202'			JSR	R5,CHKDEV		;ADJUST FLOATING VECTOR FOR RX11
	011024	177170 				.WORD	RXCS			;1ST RX11 ADR IS RXCS
	011026	   001 	   000 			.BYTE	<1>,<0>		;MAXIMUM NUMBER OF RX11 IS 1,
	011030	   000 	   000 			.BYTE	<0>,<0>		;HARDWARE INCREMENT IS 0,
	011032	000000 				.WORD	0			;WILL BECOME NUMBER OF DEVICES
	011034	011505'				.WORD	CKNRX11			;ADDRESS OF ASCIZ \RX11\
	011036	017570'				.WORD	CKRX$$			;ADDRESS OF ROUTINE TO CHECK
	011040	012320'				.WORD	CKARX$$			;CALL FOR MAIN PROGRAM (CKARX11)
	011042	000000 				.WORD	0			;FREE ENTRY
	011044	000000 				.WORD	0			;WILL CONTAIN NUMBER OF RX11 FOUND
	011046	000000 				.WORD	0			;WILL CONTAIN FIRST RX11 VECTOR ADR
	011050	000300 				.WORD	RX.LVL*40		;CONTAINS RX11 PI LEVEL
	011052	000264 				.WORD	264			;DEVICE FIRST VECTOR (FIXED DEV ONLY)
   2911	011054				DEVICE	TC.STS,1,0,0,0,TC,TC.VEC	;DEC TAPE CONTROL (TC11)
	011054	004537 	013202'			JSR	R5,CHKDEV		;ADJUST FLOATING VECTOR FOR TC11
	011060	177340 				.WORD	TC.STS			;1ST TC11 ADR IS TC.STS
	011062	   001 	   000 			.BYTE	<1>,<0>		;MAXIMUM NUMBER OF TC11 IS 1,
	011064	   000 	   000 			.BYTE	<0>,<0>		;HARDWARE INCREMENT IS 0,
	011066	000000 				.WORD	0			;WILL BECOME NUMBER OF DEVICES
	011070	011500'				.WORD	CKNTC11			;ADDRESS OF ASCIZ \TC11\
	011072	017476'				.WORD	CKTC$$			;ADDRESS OF ROUTINE TO CHECK
	011074	012320'				.WORD	CKATC$$			;CALL FOR MAIN PROGRAM (CKATC11)
	011076	000000 				.WORD	0			;FREE ENTRY
	011100	000000 				.WORD	0			;WILL CONTAIN NUMBER OF TC11 FOUND
	011102	000000 				.WORD	0			;WILL CONTAIN FIRST TC11 VECTOR ADR
	011104	000300 				.WORD	TC.LVL*40		;CONTAINS TC11 PI LEVEL
	011106	000214 				.WORD	TC.VEC			;DEVICE FIRST VECTOR (FIXED DEV ONLY)
   2912	011110				DEVICE	176700,1,0,0,0,RH,254		;FANCY DISK CONTROLER (RH11)
	011110	004537 	013202'			JSR	R5,CHKDEV		;ADJUST FLOATING VECTOR FOR RH11
	011114	176700 				.WORD	176700			;1ST RH11 ADR IS 176700
	011116	   001 	   000 			.BYTE	<1>,<0>		;MAXIMUM NUMBER OF RH11 IS 1,
	011120	   000 	   000 			.BYTE	<0>,<0>		;HARDWARE INCREMENT IS 0,
	011122	000000 				.WORD	0			;WILL BECOME NUMBER OF DEVICES
	011124	011473'				.WORD	CKNRH11			;ADDRESS OF ASCIZ \RH11\
	011126	017474'				.WORD	CKRH$$			;ADDRESS OF ROUTINE TO CHECK
	011130	012320'				.WORD	CKARH$$			;CALL FOR MAIN PROGRAM (CKARH11)
	011132	000000 				.WORD	0			;FREE ENTRY
	011134	000000 				.WORD	0			;WILL CONTAIN NUMBER OF RH11 FOUND
	011136	000000 				.WORD	0			;WILL CONTAIN FIRST RH11 VECTOR ADR
	011140	000000 				.WORD	RH.LVL*40		;CONTAINS RH11 PI LEVEL
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 60-2
DEVICE MACROS FOR ALL POSSIBLE CONFIGURATIONS

	011142	000254 				.WORD	254			;DEVICE FIRST VECTOR (FIXED DEV ONLY)
   2913	011144				DEVICE	174400,4,<-4>,40,0,TE,774	;TEN/ELEVEN INTERFACE
	011144	004537 	013202'			JSR	R5,CHKDEV		;ADJUST FLOATING VECTOR FOR TE11
	011150	174400 				.WORD	174400			;1ST TE11 ADR IS 174400
	011152	   004 	   374 			.BYTE	<4>,<-4>		;MAXIMUM NUMBER OF TE11 IS 4,
	011154	   040 	   000 			.BYTE	<40>,<0>		;HARDWARE INCREMENT IS 40,
	011156	000000 				.WORD	0			;WILL BECOME NUMBER OF DEVICES
	011160	011434'				.WORD	CKNTE11			;ADDRESS OF ASCIZ \TE11\
	011162	016710'				.WORD	CKTE$$			;ADDRESS OF ROUTINE TO CHECK
	011164	012320'				.WORD	CKATE$$			;CALL FOR MAIN PROGRAM (CKATE11)
	011166	000000 				.WORD	0			;FREE ENTRY
	011170	000000 				.WORD	0			;WILL CONTAIN NUMBER OF TE11 FOUND
	011172	000000 				.WORD	0			;WILL CONTAIN FIRST TE11 VECTOR ADR
	011174	000300 				.WORD	TE.LVL*40		;CONTAINS TE11 PI LEVEL
	011176	000774 				.WORD	774			;DEVICE FIRST VECTOR (FIXED DEV ONLY)
   2914	011200				DEVICE	160020,10,20,20,0,DH,330	;MULTIPLEX TTY INTERFACE (DH11)
	011200	004537 	013202'			JSR	R5,CHKDEV		;ADJUST FLOATING VECTOR FOR DH11
	011204	160020 				.WORD	160020			;1ST DH11 ADR IS 160020
	011206	   010 	   020 			.BYTE	<10>,<20>		;MAXIMUM NUMBER OF DH11 IS 10,
	011210	   020 	   000 			.BYTE	<20>,<0>		;HARDWARE INCREMENT IS 20,
	011212	000000 				.WORD	0			;WILL BECOME NUMBER OF DEVICES
	011214	011357'				.WORD	CKNDH11			;ADDRESS OF ASCIZ \DH11\
	011216	015274'				.WORD	CKDH$$			;ADDRESS OF ROUTINE TO CHECK
	011220	012320'				.WORD	CKADH$$			;CALL FOR MAIN PROGRAM (CKADH11)
	011222	000000 				.WORD	0			;FREE ENTRY
	011224	000000 				.WORD	0			;WILL CONTAIN NUMBER OF DH11 FOUND
	011226	000000 				.WORD	0			;WILL CONTAIN FIRST DH11 VECTOR ADR
	011230	000240 				.WORD	DH.LVL*40		;CONTAINS DH11 PI LEVEL
	011232	000330 				.WORD	330			;DEVICE FIRST VECTOR (FIXED DEV ONLY)
   2915	011234				DEVICE	170500,10,20,10,0,DM,320	;MODEM CONTROL INTERFACE (DM11)
	011234	004537 	013202'			JSR	R5,CHKDEV		;ADJUST FLOATING VECTOR FOR DM11
	011240	170500 				.WORD	170500			;1ST DM11 ADR IS 170500
	011242	   010 	   020 			.BYTE	<10>,<20>		;MAXIMUM NUMBER OF DM11 IS 10,
	011244	   010 	   000 			.BYTE	<10>,<0>		;HARDWARE INCREMENT IS 10,
	011246	000000 				.WORD	0			;WILL BECOME NUMBER OF DEVICES
	011250	011424'				.WORD	CKNDM11			;ADDRESS OF ASCIZ \DM11\
	011252	016474'				.WORD	CKDM$$			;ADDRESS OF ROUTINE TO CHECK
	011254	012320'				.WORD	CKADM$$			;CALL FOR MAIN PROGRAM (CKADM11)
	011256	000000 				.WORD	0			;FREE ENTRY
	011260	000000 				.WORD	0			;WILL CONTAIN NUMBER OF DM11 FOUND
	011262	000000 				.WORD	0			;WILL CONTAIN FIRST DM11 VECTOR ADR
	011264	000200 				.WORD	DM.LVL*40		;CONTAINS DM11 PI LEVEL
	011266	000320 				.WORD	320			;DEVICE FIRST VECTOR (FIXED DEV ONLY)
   2916	011270				DEVICE	L20STS,2,<-4>,20,0,L2,L2.VEC	;LP20 CONTROLLER
	011270	004537 	013202'			JSR	R5,CHKDEV		;ADJUST FLOATING VECTOR FOR L211
	011274	175400 				.WORD	L20STS			;1ST L211 ADR IS L20STS
	011276	   002 	   374 			.BYTE	<2>,<-4>		;MAXIMUM NUMBER OF L211 IS 2,
	011300	   020 	   000 			.BYTE	<20>,<0>		;HARDWARE INCREMENT IS 20,
	011302	000000 				.WORD	0			;WILL BECOME NUMBER OF DEVICES
	011304	011456'				.WORD	CKNL211			;ADDRESS OF ASCIZ \L211\
	011306	017344'				.WORD	CKL2$$			;ADDRESS OF ROUTINE TO CHECK
	011310	012320'				.WORD	CKAL2$$			;CALL FOR MAIN PROGRAM (CKAL211)
	011312	000000 				.WORD	0			;FREE ENTRY
	011314	000000 				.WORD	0			;WILL CONTAIN NUMBER OF L211 FOUND
	011316	000000 				.WORD	0			;WILL CONTAIN FIRST L211 VECTOR ADR
	011320	000200 				.WORD	L2.LVL*40		;CONTAINS L211 PI LEVEL
	011322	000754 				.WORD	L2.VEC			;DEVICE FIRST VECTOR (FIXED DEV ONLY)
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 60-3
DEVICE MACROS FOR ALL POSSIBLE CONFIGURATIONS

   2917	011324				CKCEND:		; END OF DEVICE TABLES
   2918	011324	000207 				RTS	PC
   2919
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 61
DEVICE MACROS FOR ALL POSSIBLE CONFIGURATIONS

   2921					;
   2922					; GLOBAL CELLS FOR CHECK11
   2923					;
   2924	011326				CHKFLG:	.BLKW	1		;CHK11 FLAGS
   2925		000001 				CKFERR=	B0		;ERROR DETECTED
   2926		000002 				CHKMMO=	B1		;memory management on [3(47)]
   2927		100000 				CKFIDT=	B15		;ID ALREADY TYPED
   2928	011330				CKDEVN:	.BLKW	1		;UNIT # CURRENTLY BEING TESTED
   2929	011332				CKDNAM:	.BLKW	1		;ADR OF DEVICE NAME(.ASCIZ)
   2930	011334				PHYLIM:	.BLKW	1		;HIGHEST MEMORY LIMIT
   2931
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 62
DEVICE MACROS FOR ALL POSSIBLE CONFIGURATIONS

   2933					.MACRO DEVTXT	DEV,LAB,TEXTX
   2934					.IF NB,<DEV>
   2935							LAB:	.ASCIZ	\TEXTX\
   2936					.IFF;.IF NB,<DEV>
   2937					LAB:	.ASCIZ	\TEXTX\
   2938					.ENDC;.IF NB,<DEV>
   2939					.ENDM DEVTXT
   2940	011336				DEVTXT	CI,CKNCI1,<CTY I>
	011336	   103 	   124 	   131 			CKNCI1:	.ASCIZ	\CTY I\
	011341	   040 	   111 	   000
   2941	011344				DEVTXT	CO,CKNCO1,<CTY O>
	011344	   103 	   124 	   131 			CKNCO1:	.ASCIZ	\CTY O\
	011347	   040 	   117 	   000
   2942	011352				DEVTXT	CD,CKNCD1,<CD11>
	011352	   103 	   104 	   061 			CKNCD1:	.ASCIZ	\CD11\
	011355	   061 	   000
   2943	011357				DEVTXT	DH,CKNDH1,<DH11>
	011357	   104 	   110 	   061 			CKNDH1:	.ASCIZ	\DH11\
	011362	   061 	   000
   2944	011364				DEVTXT	KL,CKNKL1,<DL11-C CTY>
	011364	   104 	   114 	   061 			CKNKL1:	.ASCIZ	\DL11-C CTY\
	011367	   061 	   055 	   103
	011372	   040 	   103 	   124
	011375	   131 	   000
   2945	011377				DEVTXT	RD,CKNRD1,<DL11-E KLINIK>
	011377	   104 	   114 	   061 			CKNRD1:	.ASCIZ	\DL11-E KLINIK\
	011402	   061 	   055 	   105
	011405	   040 	   113 	   114
	011410	   111 	   116 	   111
	011413	   113 	   000
   2946	011415				DEVTXT	DL,CKNDL1,<DL11-E>
	011415	   104 	   114 	   061 			CKNDL1:	.ASCIZ	\DL11-E\
	011420	   061 	   055 	   105
	011423	   000
   2947	011424				DEVTXT	DM,CKNDM1,<DM11-BB>
	011424	   104 	   115 	   061 			CKNDM1:	.ASCIZ	\DM11-BB\
	011427	   061 	   055 	   102
	011432	   102 	   000
   2948	011434				DEVTXT	TE,CKNTE1,<DTE20>
	011434	   104 	   124 	   105 			CKNTE1:	.ASCIZ	\DTE20\
	011437	   062 	   060 	   000
   2949	011442				DEVTXT	KW,CKNKW1,<KW11-L>
	011442	   113 	   127 	   061 			CKNKW1:	.ASCIZ	\KW11-L\
	011445	   061 	   055 	   114
	011450	   000
   2950	011451				DEVTXT	LP,CKNLP1,<LP11>
	011451	   114 	   120 	   061 			CKNLP1:	.ASCIZ	\LP11\
	011454	   061 	   000
   2951	011456				DEVTXT	L2,CKNL21,<LP20>
	011456	   114 	   120 	   062 			CKNL21:	.ASCIZ	\LP20\
	011461	   060 	   000
   2952	011463				DEVTXT	MM,CKNMM1,<MF11-UP>
	011463	   115 	   106 	   061 			CKNMM1:	.ASCIZ	\MF11-UP\
	011466	   061 	   055 	   125
	011471	   120 	   000
   2953	011473				DEVTXT	RH,CKNRH1,<RH11>
	011473	   122 	   110 	   061 			CKNRH1:	.ASCIZ	\RH11\
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 62-1
DEVICE MACROS FOR ALL POSSIBLE CONFIGURATIONS

	011476	   061 	   000
   2954	011500				DEVTXT	TC,CKNTC1,<TC11>
	011500	   124 	   103 	   061 			CKNTC1:	.ASCIZ	\TC11\
	011503	   061 	   000
   2955	011505				DEVTXT	RX,CKNRX1,<RX11>
	011505	   122 	   130 	   061 			CKNRX1:	.ASCIZ	\RX11\
	011510	   061 	   000
   2956						.EVEN
   2957	011512				CK.CAL:	.BLKW	1		;ADR OF JSR PC,CHK.11 IN MAIN PROGRAM
   2958
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 63
DEVICE MACROS FOR ALL POSSIBLE CONFIGURATIONS

   2960	011514	000005 			CHK.11::RESET				;CLEAR THE WORLD
   2961	011516	012737 	000340 	177776 		MOV	#BR7,@#PS		;PROCESSOR LEVEL TO 7
   2962	011524	012637 	011512'			MOV	(SP)+,CK.CAL		;SAVE CALLING ADDRESS
   2963	011530	012737 	000300 	015270'		MOV	#FLOATV,CHKFLV		;FLOATING INT VEC BEGIN HERE
   2964	011536	012737 	160000 	015272'		MOV	#FLOATD,CHKFLD		;FLOATING DEV ADR'S BEGIN HERE
   2965	011544	005037 	011326'			CLR	CHKFLG			;CLEAR CHK11 FLAGS
   2966	011550	005037 	020506'			CLR	CKSPCD			;CLEAR STOP CODE; NON 0 ON FATAL
   2967										; ERROR PUTS C(CKSPCD) IN R0.
   2968
   2969					;INITIALIZE VECTOR SPACE
   2970					;
   2971	011554	013703 	000014 		CKINTS:	MOV	14,R3			;SAVE ODT ADDRESS
   2972	011560	005000 				CLR	R0			;START LOADING AT ADR 0
   2973	011562	012701 	015102'			MOV	#CHKINT,R1		;WHERE TO GO ON INTERRUPT
   2974	011566	012702 	000340 			MOV	#BR7,R2			;INTERRUPT PS
   2975	011572	010120 			11$:	MOV	R1,(R0)+		;SET INTERRUPT VECTOR
   2976	011574	010220 				MOV	R2,(R0)+		;SET INTERRUPT LEVEL
   2977	011576	005202 				INC	R2
   2978	011600	032700 	000077 			BIT	#77,R0			;HAVE WE HIT A LIMIT ?
   2979	011604	001004 				BNE	12$
   2980	011606	062701 	000012 			ADD	#CHKITL,R1		;YES SO CHANGE VECTOR
   2981	011612	012702 	000340 			MOV	#BR7,R2			;RESET PS
   2982	011616				12$:
   2983	011616	020027 	001000 			CMP	R0,#1000		;FILL VECTORS UP TO 1000
   2984	011622	002763 				BLT	11$			;MORE TO DO.
   2985	011624	012737 	017706'	000034 		MOV	#CHKERR,TRPVEC		;WHERE TO GO ON ERROR TRAP
   2986	011632	010337 	000014 			MOV	R3,14			;RESTORE ODT ADDRESS
   2987
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 64
DEVICE MACROS FOR ALL POSSIBLE CONFIGURATIONS

   2989					;NOW CHECK THE CTY
   2990					;
   2991	011636	012737 	011702'	000004 		MOV	#13$,NXMVEC		;WHERE TO TRAP IF NO CTY
   2992	011644	042737 	100000 	011326'		BIC	#CKFIDT,CHKFLG		;SO WE PRINT DEV ID
   2993	011652	005737 	177564 			TST	CTOSTS			;CHECK CTY TRANSMIT STATUS REGISTER
   2994	011656	005737 	177566 			TST	CTOCHR
   2995	011662	005737 	177560 			TST	CTISTS
   2996	011666	005737 	177562 			TST	CTICHR
   2997	011672	012737 	017636'	000004 		MOV	#CKBUST,NXMVEC		;WHERE TO GO ON ILLEGAL NXM TRAP
   2998	011700	000407 				BR	14$
   2999	011702	012700 	000005 		13$:	MOV	#S..CTY,R0		;NO CTY STOP CODE
   3000	011706	000000 				HALT
   3001	011710	012700 	011702'			MOV	#13$,R0			;ADR OF ERROR
   3002	011714	000000 				HALT				;DISPLAY ADDRESS
   3003	011716	000771 				BR	13$			;MAKE HIM START AGAIN
   3004
   3005	011720	012704 	177564 		14$:	MOV	#CTOSTS,R4		;CTY PUN STATUS
   3006	011724	010437 	020510'			MOV	R4,CHKCHR+CKDA		;DEV ADR
   3007	011730	010401 				MOV	R4,R1			;CHKBIT NEEDS ADR IN R1
   3008	011732	012737 	000064 	020512'		MOV	#CTOVEC,CHKCHR+CKDV	;CTY PUN VECTOR
   3009	011740	012737 	011344'	011332'		MOV	#CKNCO1,CKDNAM		;NAME ADDRESS
   3010	011746	005037 	011330'			CLR	CKDEVN			;DEVICE 0
   3011	011752	004537 	014052'			JSR	R5,CHKBIT		;CHECK THE FOLLOWING BITS FOR R/W
   3012	011756	000104 				CO.INE!CO..MM			;BITS TO CHECK FOR R/W
   3013	011760	012714 	000100 			MOV	#CO.INE,(R4)		;ENABLE INTERRUPTS
   3014	011764	004537 	014330'			JSR	R5,CHKINL		;CHECK INTERRUPT AND FIND DEV LEVEL
   3015	011770	177777 				-1				;TIME LOOP CONSTANT
   3016	011772	005014 				CLR	(R4)			;CLR DEV OUT
   3017
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 65
DEVICE MACROS FOR ALL POSSIBLE CONFIGURATIONS

   3019					;NOW CHECK THE KBRD SECTION
   3020					;
   3021	011774	042737 	100000 	011326'	CHKBRD:	BIC	#CKFIDT,CHKFLG		;SO WE PRINT DEV ID
   3022	012002	012704 	177560 			MOV	#CTISTS,R4		;KBRD STATUS REG
   3023	012006	010437 	020510'			MOV	R4,CHKCHR+CKDA		;DEV ADR
   3024	012012	010401 				MOV	R4,R1			;CHKBIT NEEDS ADR IN R1
   3025	012014	012737 	000060 	020512'		MOV	#CTIVEC,CHKCHR+CKDV	;VECTOR ADR
   3026	012022	012737 	011336'	011332'		MOV	#CKNCI1,CKDNAM		;ADR OF DEV NAME
   3027	012030	004537 	014052'			JSR	R5,CHKBIT		;CHECK THE FOLLOWING BITS
   3028	012034	000100 				CI.INE				;BITS TO CHECK R/W
   3029
   3030	012036				11$:	CK11SC	<0>,<Initializing >
	012036	104404 				TRAP	0!CKEMSG		;
   3031	012040	   111 	   156 	   151 		.ASCIZ	\Initializing \
	012043	   164 	   151 	   141
	012046	   154 	   151 	   172
	012051	   151 	   156 	   147
	012054	   040 	   000
   3032						.EVEN
   3033	012056	013700 	011512'			MOV	CK.CALL,R0		;GET ADDR OF .ASCIZ \PROG NANME\
   3034	012062	004737 	020530'			JSR	PC,CKTTXT		;TYPE PROGRAM NAME
   3035					;
   3036	012066	005000 			CHKCOR:	CLR	R0			;START SMALL
   3037	012070	012737 	012106'	000004 		MOV	#12$,NXMVEC		;SET BUS TRAP VECTOR
   3038	012076	005710 			11$:	TST	(R0)			;check this location [1(14)]
   3039	012100	062700 	000002 			ADD	#2,R0			;point to next location [1(14)]
   3040	012104	000774 				BR	11$
   3041	012106	062706 	000004 		12$:	ADD	#4,SP			;FLUSH STACK
   3042	012112	010037 	011334'		13$:	MOV	R0,PHYLIM		;SAVE ADR OF 1ST NXM LOCATION
   3043					.IIF DF,CKAMEM,JSR PC,CKAMEM		;PRINT LAST MEM LOCATION
   3044					;
   3045					;			; CONTINUED ON NEXT PAGE
   3046					;
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 66
CHECK MEMORY - SLIDING BIT PATTERN

   3048					.SBTTL		CHECK MEMORY - SLIDING BIT PATTERN
   3049
   3050					;HERE TO PERFORM A SIMPLE TEST ON FREE CORE.
   3051					;THE PATTERN USED IS A SLIDING BIT, WITH THE
   3052					;BIT IN EACH OF THE 16 BIT POSITIONS AND THE
   3053					;LAST PATTERN BEING ALL 0'S.
   3054					;
   3055	012116				CKCOR:
   3056	012116	005000 				CLR	R0			;FIRST ADR TO CHECK
   3057	012120	012701 	012214'			MOV	#11$,R1			;LIMIT TO CHECK
   3058	012124	004737 	012214'			JSR	PC,11$			;CHECK LOW CORE
   3059	012130	012700 	000000G			MOV	#.FESTB,R0		;BEGIN CHECKING HERE NOW
   3060	012134	012701 	012116'			MOV	#CKCOR,R1		;AND STOP HERE
   3061	012140	004737 	012214'			JSR	PC,11$
   3062	012144	004037 	020570'			JSR	R0,CKTCRL		;PRINT AMOUNT OF CORE
   3063	012150	   040 	   040 	   040 		.ASCIZ	\   \
	012153	   000
   3064						.EVEN
   3065	012154	013700 	011334'			MOV	PHYLIM,R0		;GET AMOUNT
   3066	012160	004737 	020616'			JSR	PC,CKTOCT		;PRINT IT
   3067	012164	004037 	020574'			JSR	R0,CKTSTR		;FOLLOWED BY MSG:
   3068	012170	   040 	   142 	   171 		.ASCIZ	\ bytes of memory\
	012173	   164 	   145 	   163
	012176	   040 	   157 	   146
	012201	   040 	   155 	   145
	012204	   155 	   157 	   162
	012207	   171 	   000
   3069						.EVEN
   3070	012212	000443 				BR	CKMPAR			;ALL OK
   3071
   3072	012214	012702 	000001 		11$:	MOV	#1,R2			;FIRST PATTERN
   3073	012220	011003 				MOV	@R0,R3			;SAVE CURRENT DATA
   3074	012222	010210 			12$:	MOV	R2,@R0			;PUT PATTERN IN MEMORY
   3075	012224	005110 				COM	@R0			;COMPLEMENT IT
   3076	012226	005110 				COM	@R0			; AND AGAIN
   3077	012230	020210 				CMP	R2,@R0			;DID IT GO ?
   3078	012232	001410 				BEQ	13$			;YES.
   3079	012234					CKSERR	R2,<(R0)>,R0		;SAVE GD,BD,ADR
	012234	010246 				MOV	R2,-(SP)			;SAVE GOOD (R2) ON STACK
	012236	011046 				MOV	(R0),-(SP)			;SAVE BAD ((R0)) ON STACK
	012240	010046 				MOV	R0,-(SP)		;SAVE ADDRESS (R0) ON STACK
   3080	012242					CK11SC	<CKEMSE!CKEFAT!CKEPC!CKEGB>,<CKMG01>,<MEMORY ERROR>,<S..MEM>
	012242	012737 	000006 	020506'	.IIF NB,S..MEM,	MOV	#S..MEM,CKSPCD	;VALUE TO DISPLAY IN R0,
	012250	104523 				TRAP	CKEMSE!CKEFAT!CKEPC!CKEGB&<^CCKEMSG>		;MEMORY ERROR
	012252	020766'				.WORD	CKMG01			;ADR OF MESSAGE
   3081	012254	006302 			13$:	ASL	R2			;SHIFT PATTERN
   3082	012256	001361 				BNE	12$
   3083	012260	103760 				BCS	12$
   3084	012262	010310 				MOV	R3,@R0			;RESTORE DATA
   3085	012264	005110 				COM	@R0			;COMPLEMENT IT
   3086	012266	005110 				COM	@R0			; AND AGAIN
   3087	012270	020320 				CMP	R3,(R0)+		;BE SURE IT WENT
   3088	012272	001410 				BEQ	14$
   3089	012274					CKSERR	R3,<-(R0)>,R0		;SAVE GD,BD,ADR
	012274	010346 				MOV	R3,-(SP)			;SAVE GOOD (R3) ON STACK
	012276	014046 				MOV	-(R0),-(SP)			;SAVE BAD (-(R0)) ON STACK
	012300	010046 				MOV	R0,-(SP)		;SAVE ADDRESS (R0) ON STACK
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 66-1
CHECK MEMORY - SLIDING BIT PATTERN

   3090	012302					CK11SC	<CKEMSE!CKEFAT!CKEPC!CKEGB>,<CKMG01>,<MEMORY ERROR>,<S..MEM>
	012302	012737 	000006 	020506'	.IIF NB,S..MEM,	MOV	#S..MEM,CKSPCD	;VALUE TO DISPLAY IN R0,
	012310	104523 				TRAP	CKEMSE!CKEFAT!CKEPC!CKEGB&<^CCKEMSG>		;MEMORY ERROR
	012312	020766'				.WORD	CKMG01			;ADR OF MESSAGE
   3091	012314	020001 			14$:	CMP	R0,R1
   3092	012316	001336 				BNE	11$			;LOOP BACK FOR REST OF MEMORY
   3093	012320	000207 			CKPOPJ:	RTS	PC
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 67
CHECK MEMORY - SLIDING BIT PATTERN

   3095					;HERE TO CHECK THE MEMORY PARITY OPTION
   3096	012322				CKMPAR:					;START CHECKING CORE HERE
   3097	012322	012737 	011463'	011332'		MOV	#CKNMM1,CKDNAM		;SAVE NAME OF "DEVICE"
   3098	012330	005037 	011330'			CLR	CKDEVN			;"UNIT" IS 0
   3099	012334	012701 	172100 			MOV	#MP.REG,R1		;OPTION REGISTER
   3100	012340	010137 	020510'			MOV	R1,CHKCHR+CKDA		;SAVE ADR IN CASE NEED TO TYPE IT
   3101	012344	013746 	000004 			MOV	NXMVEC,-(SP)
   3102	012350	012737 	000114 	020512'		MOV	#MP.VEC,CHKCHR+CKDV	;VECTOR FOR INTERRUPTS
   3103	012356	005037 	020514'			CLR	CHKCHR+CKPI		;NO PRIORITY LEVEL
   3104	012362	012737 	012554'	000004 		MOV	#14$,NXMVEC		;IN CASE PARITY OPTION NOT INSTALLED
   3105	012370	005037 	172100 			CLR	MP.REG			;TRY TO CLEAR MEMORY PARITY REGISTER
   3106	012374	011637 	000004 			MOV	(SP),NXMVEC		;RESTORE TRAP VECTOR
   3107	012400	004537 	014052'			JSR	R5,CHKBIT		;CHECK READ/WRITE BITS
   3108	012404	107745 				107745
   3109					;NOW CHECK INTERRUPTS FROM PARITY CONTROL
   3110					; THIS IS DIFFICULT CUZ SETTING MP.ENB & MP.ERR WON'T CAUSE INTERRUPT
   3111	012406	005000 				CLR	R0			;VECTOR WE TOOK WILL APPEAR HERE
   3112	012410	012711 	000004 			MOV	#MP.WWP,@R1		;WE WANT TO WRITE WRONG PARITY
   3113	012414	013737 	012322'	012322'		MOV	CKMPAR,CKMPAR		;WRITE A BAD WORD
   3114
   3115	012422	005011 				CLR	@R1			;BUT ONLY ONE WORD !
   3116	012424	005737 	012322'			TST	CKMPAR			;TRY FOR AN INTERRUPT
   3117	012430	000240 				NOP				;IN CASE SLOW
   3118	012432	005700 				TST	R0			;SEE IF WE GOT ONE
   3119	012434	001402 				BEQ	11$
   3120	012436					CK11SC	<CKEMSE!CKEDID!CKEPC>,CKMG07,<INTERRUPTED WHEN NOT ENABLED>
	012436	104432 				TRAP	CKEMSE!CKEDID!CKEPC&<^CCKEMSG>		;INTERRUPTED WHEN NOT ENABLED
	012440	021136'				.WORD	CKMG07			;ADR OF MESSAGE
   3121	012442	012711 	000001 		11$:	MOV	#MP.ENB,@R1		;NOW LETS GET THE INTERRUPT
   3122	012446	005737 	012322'			TST	CKMPAR
   3123	012452	005011 				CLR	@R1			;DISABLE FURTHER INTERRUPTS
   3124	012454	013737 	012322'	012322'		MOV	CKMPAR,CKMPAR		;WRITE BACK RIGHT
   3125	012462	005700 				TST	R0			;DID WE GET THE INTERRUPT ?
   3126	012464	001003 				BNE	12$
   3127	012466					CK11SC	<CKEDID!CKEMSE!CKEPC>,CKMG04,<INTERRUPT DID NOT OCCUR>
	012466	104432 				TRAP	CKEDID!CKEMSE!CKEPC&<^CCKEMSG>		;INTERRUPT DID NOT OCCUR
	012470	021040'				.WORD	CKMG04			;ADR OF MESSAGE
   3128	012472	000433 				BR	15$
   3129
   3130	012474	020037 	020512'		12$:	CMP	R0,CHKCHR+CKDV		;WAS INTERRUPT RIGHT?
   3131	012500	001410 				BEQ	13$			;YES.
   3132	012502					CKSERR	<CHKCHR+CKDV>,R0,<#CKMPAR>	;GD,BD,ADR
	012502	013746 	020512'			MOV	CHKCHR+CKDV,-(SP)			;SAVE GOOD (CHKCHR+CKDV) ON STACK
	012506	010046 				MOV	R0,-(SP)			;SAVE BAD (R0) ON STACK
	012510	012746 	012322'			MOV	#CKMPAR,-(SP)		;SAVE ADDRESS (#CKMPAR) ON STACK
   3133	012514					CK11SC	<CKEMSE!CKEDID!CKEPC!CKEGB>,CKMG05,<interrupted to wrong vector>
	012514	104532 				TRAP	CKEMSE!CKEDID!CKEPC!CKEGB&<^CCKEMSG>		;interrupted to wrong vector
	012516	021070'				.WORD	CKMG05			;ADR OF MESSAGE
   3134	012520	000420 				BR	15$			;DONE.
   3135
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 68
CHECK MEMORY - SLIDING BIT PATTERN

   3137					; COME HERE IF PARITY OPTION IS PRESENT AND WORKING
   3138
   3139	012522	004037 	020570'		13$:	JSR	R0,CKTCRL		;PRINT MESSAGE ABOUT IT
   3140	012526	   040 	   040 	   040 		.ASCIZ	\     MF11-UP\
	012531	   040 	   040 	   115
	012534	   106 	   061 	   061
	012537	   055 	   125 	   120
	012542	   000
   3141						.EVEN
   3142	012544	012737 	000001 	172100 		MOV	#MP.ENB,MP.REG		;ENABLE PARITY ERRORS
   3143					.IIF DF,CKAMF1,JSR PC,CKAMF1		;DO MAIN LINE CHECKING
   3144	012552	000403 				BR	15$			;ALL DONE.
   3145
   3146					;HERE IF WE GET A BUS TRAP WHILE ACCESSING THE PARITY CONTROL REG
   3147	012554	012626 			14$:	MOV	(SP)+,(SP)+		;CLEAN OFF STACK
   3148	012556					CK11SC	<CKEDID!CKEPC!CKEMSE>,CKMG06,<not found>
	012556	104432 				TRAP	CKEDID!CKEPC!CKEMSE&<^CCKEMSG>		;not found
	012560	021124'				.WORD	CKMG06			;ADR OF MESSAGE
   3149
   3150	012562	012637 	000004 		15$:	MOV	(SP)+,NXMVEC
   3151
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 69
CHECK KW11-L HDW

   3153					.SBTTL		CHECK KW11-L HDW
   3154
   3155					;HERE TO BE SURE CLOCK IS PRESENT AND TICKS
   3156
   3157	012566	012737 	011442'	011332'	CHKCLK:	MOV	#CKNKW1,CKDNAM		;SET UP FOR NAME
   3158	012574	042737 	100000 	011326'		BIC	#CKFIDT,CHKFLG		;SO WE PRINT DEV ID
   3159	012602	012704 	177546 			MOV	#CLKWRD,R4		;SET UP DEV ADR
   3160	012606	010437 	020510'			MOV	R4,CHKCHR+CKDA		;SET UP DEVICE ADR
   3161	012612	012737 	000100 	020512'		MOV	#CLKVEC,CHKCHR+CKDV	;SET UP VECTOR ADR
   3162	012620	005037 	011330'			CLR	CKDEVN			;DEVICE NUMBER
   3163	012624	012737 	012752'	000004 		MOV	#13$,NXMVEC		;SET BUS TRAP IN CASE CLOCK IS NOT PRESENT
   3164	012632	005714 				TST	(R4)			;TRAP IF NOT INSTALLED
   3165	012634	012737 	017636'	000004 		MOV	#CKBUST,NXMVEC		;WHERE TO GO ON BUS TRAP
   3166	012642	013746 	000100 			MOV	CLKVEC,-(SP)		;SAVE WHERE TO GO ON INT
   3167	012646	012737 	012776'	000100 		MOV	#14$,CLKVEC		;SETUP INTERRUPT VECTOR
   3168	012654	012737 	000003 	013010'		MOV	#3,CHKTIM		;TIME 3 TICKS
   3169	012662	012737 	000000 	177776 		MOV	#0,@#PS			;LET INTERRUPTS HAPPEN
   3170	012670	012714 	000100 			MOV	#KW.INE,(R4)		;ENABLE THE CLOCK
   3171	012674	001417 				BEQ	12$			;IF COUNTED OUT ALREADY EVIL
   3172	012676	005000 				CLR	R0			;INITIALIZE WATCHDOG COUNTER
   3173	012700	005737 	013010'			TST	CHKTIM			;see if count expired now [1(14)]
   3174	012704	001413 				BEQ	12$			;yes, too fast [1(14)]
   3175	012706	005737 	013010'		11$:	TST	CHKTIM
   3176	012712	001437 				BEQ	CKCLK9			;BRANCH IF TIMED OUT ALREADY
   3177	012714	077004 				SOB	R0,11$
   3178	012716					CK11SC	<CKEFAT!CKEPC!CKEDID>,<Slow>,<NO RESPONSE FROM KW11>,<S..KW1>
	012716	012737 	000007 	020506'	.IIF NB,S..KW1,	MOV	#S..KW1,CKSPCD	;VALUE TO DISPLAY IN R0,
	012724	104417 				TRAP	CKEFAT!CKEPC!CKEDID!CKEMSG		;NO RESPONSE FROM KW11
   3179	012726	   123 	   154 	   157 		.ASCIZ	\Slow\
	012731	   167 	   000
   3180						.EVEN
   3181	012734				12$:	CK11SC	<CKEFAT!CKEPC!CKEDID>,<Fast>,<KW11 TICKING TO FAST>,<S..KW1>
	012734	012737 	000007 	020506'	.IIF NB,S..KW1,	MOV	#S..KW1,CKSPCD	;VALUE TO DISPLAY IN R0,
	012742	104417 				TRAP	CKEFAT!CKEPC!CKEDID!CKEMSG		;KW11 TICKING TO FAST
   3182	012744	   106 	   141 	   163 		.ASCIZ	\Fast\
	012747	   164 	   000
   3183						.EVEN
   3184	012752				13$:	CK11SC	<CKEFAT!CKEPC!CKEDID>,<Not Present>,<CAN' ACCESS KW11>,<S..KW1>
	012752	012737 	000007 	020506'	.IIF NB,S..KW1,	MOV	#S..KW1,CKSPCD	;VALUE TO DISPLAY IN R0,
	012760	104417 				TRAP	CKEFAT!CKEPC!CKEDID!CKEMSG		;CAN' ACCESS KW11
   3185	012762	   116 	   157 	   164 		.ASCIZ	\Not Present\
	012765	   040 	   120 	   162
	012770	   145 	   163 	   145
	012773	   156 	   164 	   000
   3186						.EVEN
   3187
   3188					;HERE ON A KW11 INTERRUPT
   3189	012776	005337 	013010'		14$:	DEC	CHKTIM			;COUNT OUT TIMER
   3190	013002	001001 				BNE	15$
   3191	013004	005014 				CLR	(R4)			;TURN OFF CLOCK
   3192	013006	000002 			15$:	RTI				;DISMISS INTERRUPT
   3193
   3194	013010	000000 			CHKTIM:	.WORD	0
   3195					;
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 70
CHECK KW11-L HDW

   3197					;
   3198	013012	012737 	000340 	177776 	CKCLK9:	MOV	#BR7,@#PS		;SET TO LEVEL 7
   3199	013020	012714 	000100 			MOV	#KW.INE,(R4)		;ENABLE INT
   3200	013024	012637 	000100 			MOV	(SP)+,CLKVEC		;RESTORE WHERE TO GO ON INT
   3201	013030	004537 	014330'			JSR	R5,CHKINL		;FIND THE INT LEVEL
   3202	013034	177777 				-1				;DELAY TO WAIT FOR INT
   3203	013036	042737 	000100 	177546 		BIC	#KW.INE,CLKWRD		;DISABLE CLK INTS
   3204	013044	004037 	020570'			JSR	R0,CKTCRL		;INDICATE CLOCK PRESENT
   3205	013050	   040 	   040 	   040 		.ASCIZ	\     KW11-L\
	013053	   040 	   040 	   113
	013056	   127 	   061 	   061
	013061	   055 	   114 	   000
   3206						.EVEN
   3207	013064	022737 	000300 	020514'		CMP	#300,CHKCHR+CKPI	;CHECK FOR CORRECT PRIORITY
   3208	013072	001431 				BEQ	CHK.96			;BRANCH IF OK
   3209	013074					CKSERR	<#200>,<CHKCHR+CKPI>,<#CLKVEC>
	013074	012746 	000200 			MOV	#200,-(SP)			;SAVE GOOD (#200) ON STACK
	013100	013746 	020514'			MOV	CHKCHR+CKPI,-(SP)			;SAVE BAD (CHKCHR+CKPI) ON STACK
	013104	012746 	000100 			MOV	#CLKVEC,-(SP)		;SAVE ADDRESS (#CLKVEC) ON STACK
   3210	013110					CK11SC	<CKEFAT!CKEMSG>,<Interrupted to wrong PI level>,,<S..KW1>
	013110	012737 	000007 	020506'	.IIF NB,S..KW1,	MOV	#S..KW1,CKSPCD	;VALUE TO DISPLAY IN R0,
	013116	104405 				TRAP	CKEFAT!CKEMSG!CKEMSG		;
   3211	013120	   111 	   156 	   164 		.ASCIZ	\Interrupted to Wrong PI level\
	013123	   145 	   162 	   162
	013126	   165 	   160 	   164
	013131	   145 	   144 	   040
	013134	   164 	   157 	   040
	013137	   127 	   162 	   157
	013142	   156 	   147 	   040
	013145	   120 	   111 	   040
	013150	   154 	   145 	   166
	013153	   145 	   154 	   000
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 71
CHECK KW11-L HDW

   3213					;
   3214					; NOW CHECK ALL REMAINING DEVICES
   3215					;
   3216	013156				CHK.96::
   3217	013156	004737 	010604'			JSR	PC,CKCDEV		;CALL DEVICE TABLES ROUTINES
   3218					;
   3219					; WAIT A WHILE THEN DO A UNIBUS RESET
   3220					;
   3221	013162	012701 	000010 			MOV	#10,R1			;COUNTER
   3222	013166	005000 			15$:	CLR	R0			; "  "
   3223	013170	077001 			16$:	SOB	R0,16$			;LOOP A WHILE
   3224	013172	077103 				SOB	R1,15$			;AGAIN
   3225	013174	000005 				RESET				;RESET THE WORLD
   3226	013176	000137 	003000'			JMP	CKDONE			;ALL DONE
   3227
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 72
CHECK SYSTEM FOR EXISTENCE OF OPTIONS

   3229					.SBTTL		CHECK SYSTEM FOR EXISTENCE OF OPTIONS
   3230
   3231					;HERE TO CHECK SYSTEM FOR EXISTENCE OF OPTIONS
   3232					; CALL	JSR	R5,CHKDEV
   3233					;	(0)	.WORD	1ST DEVICE ADR
   3234					;	(2)	.BYTE	MAX #,VECTOR INC
   3235					;	(4)	.BYTE	HDW INC,1ST VEC MULTIPLE
   3236					;	(6)	.WORD	<ADR OF NUMBER OF DEVICES OR ZERO>
   3237					;	(10)	.WORD	<ADR OF .ASCIZ \NAME\>
   3238					;	(12)	.WORD	<ADR OF ROUTINE TO VERIFY OPERATION>
   3239					;	(14)	.WORD	<ADR OF MAIN PROGRAM ROUTINE FOR DEVICE>
   3240					;	(16)	.WORD	<ADR OF TABLE WHICH CONTAINS MAIN PROG VECTORS OR 0>
   3241					;	(20)	.WORD	<# OF DEVICES FOUND>
   3242					;	(22)	.WORD	<FIRST VECTOR FOUND>
   3243					;	(24)	.WORD	<PI LEVEL>
   3244					;	(26)	.WORD	<FIRST DEV VECTOR FOR FIXED TYPE DEV>
   3245					;	RETURN
   3246
   3247	013202	016537 	000010 	011332'	CHKDEV:	MOV	10(R5),CKDNAM		;REMEMBER DEVICE NAME
   3248	013210	005002 				CLR	R2			;INITIALIZE COUNTER FOR DEVICES
   3249	013212	013703 	015270'			MOV	CHKFLV,R3		;COPY FOR USE
   3250	013216	105765 	000005 			TSTB	5(R5)			;SEE IF FIXED TYPE DEV
   3251	013222	001002 				BNE	11$			;BRANCH IF NOT
   3252	013224	016503 	000026 			MOV	26(R5),R3		;VECTOR TO USE
   3253	013230	011504 			11$:	MOV	@R5,R4			;GET HDW ADR FOR 1ST DEVICE
   3254	013232	001005 				BNE	12$			;BRANCH IF NOT A FLOATING DEVICE
   3255	013234	062737 	000010 	015272'		ADD	#10,CHKFLD		;ADVANCE TO NEXT FLOAT DEVICE SLOT
   3256	013242	013704 	015272'			MOV	CHKFLD,R4		;COPY FOR USE
   3257	013246	012737 	013346'	000004 	12$:	MOV	#15$,NXMVEC		;SET BUS TRAP VECTOR
   3258	013254	005714 			13$:	TST	(R4)			;CHECK TO SEE IF DEVICE IS PRESENT
   3259	013256	012737 	017636'	000004 		MOV	#CKBUST,NXMVEC		;SET FOR ILLEGAL BUS TRAP
   3260	013264	005702 				TST	R2			;IS THIS THE FIRST OF ITS KIND ?
   3261	013266	001012 				BNE	14$			;BRANCH IF NOT FIRST
   3262	013270	005065 	000020 			CLR	20(R5)			;CLEAR NUMBER OF DEV FOUND
   3263	013274	005065 	000022 			CLR	22(R5)			;CLEAR FIRST VECTOR ADR
   3264					;	CLR	24(R5)			;CLEAR PI LEVEL
   3265	013300	116501 	000005 			MOVB	5(R5),R1		;GET MULTIPLE VECTOR BEGINS ON
   3266	013304	001403 				BEQ	14$			;BRANCH IF FIXED DEV (LPT)
   3267	013306	005301 				DEC	R1
   3268	013310	060103 				ADD	R1,R3
   3269	013312	040103 				BIC	R1,R3
   3270	013314	005265 	000020 		14$:	INC	20(R5)			;COUNT DEVICE AND REMEMBER IT
   3271	013320	005202 			20$:	INC	R2
   3272	013322	116501 	000003 			MOVB	3(R5),R1		;GET VECTOR INCREMENT
   3273	013326	060103 				ADD	R1,R3
   3274	013330	116501 	000004 			MOVB	4(R5),R1		;GET HDW INCREMENT
   3275	013334	060104 				ADD	R1,R4			;ADVANCE FLOATING DEVICE ADR POINTER
   3276	013336	120265 	000002 			CMPB	R2,2(R5)		;HAVE WE CHECK ALL POSSIBLE ?
   3277	013342	001341 				BNE	12$			;IF NOT LOOP BACK FOR REST
   3278	013344	000405 				BR	16$
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 73
CHECK SYSTEM FOR EXISTENCE OF OPTIONS

   3280	013346	012737 	017636'	000004 	15$:	MOV	#CKBUST,NXMVEC
   3281	013354	022626 				CMP	(SP)+,(SP)+		;POP OFF ADR AND STATUS
   3282	013356	000760 				BR	20$			;SEE IF POSSIBLE HOLE IN DEVICE
   3283	013360	005765 	000006 		16$:	TST	6(R5)			;DO WE HAVE ADR FOR NUMBER ?
   3284	013364	001402 				BEQ	17$			;IF NOT DON'T STUFF
   3285	013366	010275 	000006 			MOV	R2,@6(R5)		;PUT NUMBER FOR SOMEONE TO FIND
   3286	013372	005765 	000020 		17$:	TST	20(R5)			;WERE THERE ANY OF THESE ?
   3287	013376	001566 				BEQ	CHKD02
   3288	013400					CK11SC	0,<	>		;TYPE CR/LF/TAB
	013400	104404 				TRAP	0!CKEMSG		;
   3289	013402	   011 	   000 			.ASCIZ	\	\
   3290						.EVEN
   3291	013404	016500 	000020 			MOV	20(R5),R0			;NUMBER OF DEVICES WE FOUND
   3292	013410	004737 	020616'			JSR	PC,CKTOCT		;TYPE OUT THE NUMBER
   3293	013414	004037 	020574'			JSR	R0,CKTSTR		;TYPE A BLANK
   3294	013420	   040 	   000 			.BYTE	040,0
   3295	013422	013700 	011332'			MOV	CKDNAM,R0		;GET ADR OF ASCIZ STRING
   3296	013426	004737 	020530'			JSR	PC,CKTTXT		;TYPE DEVICE NAME
   3297	013432	032765 	000076 	000020 		BIT	#76,20(R5)		;HOW MANY ?
   3298	013440	001403 				BEQ	CHKDV1
   3299	013442					CK11SC	<CKENCL>,<'s>
	013442	104444 				TRAP	CKENCL!CKEMSG		;
   3300	013444	   047 	   163 	   000 		.ASCIZ	\'s\
   3301						.EVEN
   3302						.ENABL	LSB
   3303	013450	010346 			CHKDV1:	MOV	R3,-(SP)
   3304	013452	010446 				MOV	R4,-(SP)
   3305	013454	016546 	000020 			MOV	20(R5),-(SP)		;SAVE NUMBER OF DEVICES FOUND
   3306	013460	005037 	011330'			CLR	CKDEVN			;CHECK UNIT 0 FIRST
   3307	013464	016503 	000026 			MOV	26(R5),R3		;GET FIRST VECTOR FOR POSSIBLE FIXED
   3308	013470	116500 	000005 			MOVB	5(R5),R0		;GET VECTOR MULTIPLE
   3309	013474	001405 				BEQ	11$			;BRANCH IF FIXED
   3310	013476	013703 	015270'			MOV	CHKFLV,R3		;GET VECTOR FOR 1ST UNIT
   3311	013502	005300 				DEC	R0
   3312	013504	060003 				ADD	R0,R3
   3313	013506	040003 				BIC	R0,R3
   3314	013510	011504 			11$:	MOV	(R5),R4			;GET HDW ADR FOR FIRST UNIT
   3315	013512	001002 				BNE	12$
   3316	013514	013704 	015272'			MOV	CHKFLD,R4		;FLOATING DEVICE
   3317	013520	005037 	020514'		12$:	CLR	CHKCHR+CKPI		;ROUTINE WILL SET PI LEVEL
   3318	013524	016500 	000012 			MOV	12(R5),R0		;ADR OF ROUTINE TO VERIFY DEVICE
   3319	013530	001467 				BEQ	13$			;BRANCH IF NO ROUTINE TO VERIFY
   3320	013532	042737 	100000 	011326'		BIC	#CKFIDT,CHKFLG		;HAVEN'T TYPED ID YET
   3321	013540	010437 	020510'			MOV	R4,CHKCHR+CKDA		;SAVE DEVICE ADDRESS
   3322	013544	010337 	020512'			MOV	R3,CHKCHR+CKDV		;SAVE VECTOR ADDRESS IN CHARACTERISTICS TABLE
   3323	013550	010401 				MOV	R4,R1			;PUT DEV ADR IN R1 SINCE MOST
   3324										; ROUTINES WILL USE IT.
   3325	013552	005037 	020516'			CLR	CHKCHR+CKFLG		;CLEAR FLAGS AND LET DEVICE CHECK ROUTINE SET THEM
   3326	013556	012737 	000340 	177776 		MOV	#BR7,@#PS		;MAKE SURE WE'RE AT LEVEL 7
   3327	013564	012737 	014016'	000004 		MOV	#NONDEV,NXMVEC		;SEE IF THERE WAS A HOLE
   3328	013572	005711 				TST	(R1)			;WAS THERE ?
   3329	013574	012737 	017636'	000004 		MOV	#CKBUST,NXMVEC		;NO IF WE GOT HERE
   3330	013602	004710 				JSR	PC,(R0)			;CALL TO DEVICE CHECK
   3331	013604	005765 	000022 			TST	22(R5)			;SEE IF VECTOR ADR SET YET
   3332	013610	001037 				BNE	13$			;BRANCH IF SET
   3333	013612	013765 	020512'	000022 		MOV	CHKCHR+CKDV,22(R5)	;SET FIRST VECTOR FOUND
   3334	013620	005737 	020514'			TST	CHKCHR+CKPI		;MAKE SURE IT INTERRUPTED
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 73-1
CHECK SYSTEM FOR EXISTENCE OF OPTIONS

   3335	013624	001431 				BEQ	13$			;BRANCH IF NOT
   3336	013626	023765 	020514'	000024 		CMP	CHKCHR+CKPI,24(R5)	;CORRECT PI LEVEL ?
   3337	013634	001425 				BEQ	13$			;BRANCH IF SO
   3338	013636					CKSERR	<24(R5)>,<CHKCHR+CKPI>,<26(R5)>
	013636	016546 	000024 			MOV	24(R5),-(SP)			;SAVE GOOD (24(R5)) ON STACK
	013642	013746 	020514'			MOV	CHKCHR+CKPI,-(SP)			;SAVE BAD (CHKCHR+CKPI) ON STACK
	013646	016546 	000026 			MOV	26(R5),-(SP)		;SAVE ADDRESS (26(R5)) ON STACK
   3339	013652					CK11SC	<CKEDID!CKEGB!CKEMSG>,<INTERRUPT TO WRONG PI LEVEL>
	013652	104514 				TRAP	CKEDID!CKEGB!CKEMSG!CKEMSG		;
   3340	013654	   111 	   156 	   164 		.ASCIZ	\Interrupt to Wrong PI level\
	013657	   145 	   162 	   162
	013662	   165 	   160 	   164
	013665	   040 	   164 	   157
	013670	   040 	   127 	   162
	013673	   157 	   156 	   147
	013676	   040 	   120 	   111
	013701	   040 	   154 	   145
	013704	   166 	   145 	   154
	013707	   000
   3341	013710	012700 	020510'		13$:	MOV	#CHKCHR,R0		;POINT TO THE CHARACTERISTIC TABLE
   3342	013714	004775 	000014 			JSR	PC,@14(R5)		;CALL TO MAIN PROGRAM
   3343	013720	116500 	000003 		14$:	MOVB	3(R5),R0		;GET VECTOR INCREMENT
   3344	013724	060003 				ADD	R0,R3
   3345	013726	116500 	000004 			MOVB	4(R5),R0		;HDW INCREMENT
   3346	013732	060004 				ADD	R0,R4
   3347	013734	005237 	011330'			INC	CKDEVN			;ON TO NEXT DEVICE NUMBER
   3348	013740	021637 	011330'			CMP	(SP),CKDEVN
   3349	013744	001265 				BNE	12$
   3350	013746	012602 				MOV	(SP)+,R2
   3351	013750	012604 				MOV	(SP)+,R4
   3352	013752	012603 				MOV	(SP)+,R3
   3353
   3354	013754				CHKD02:	;SAVE	<R3,R4>
   3355						;CLR	R4			;FLAG NO MORE DEVICES
   3356						;JSR	PC,@14(R5)		;CALL MAIN PROGRAM
   3357						;RESTORE	<R4,R3>
   3358
   3359					;HERE WHEN DONE CHECKING DEVICE
   3360	013754	105765 	000005 			TSTB	5(R5)			;SEE IF FIXED DEV
   3361	013760	001413 				BEQ	CHKD01			;BRANCH IF FIXED  (LIKE LPT)
   3362	013762	013746 	015270'			MOV	CHKFLV,-(SP)		;RESET FLOATING VECTOR
   3363	013766	010337 	015270'			MOV	R3,CHKFLV
   3364	013772	012603 				MOV	(SP)+,R3
   3365	013774	011500 				MOV	(R5),R0			;WAS THIS A FLOATING DEVICE ?
   3366	013776	001004 				BNE	CHKD01			;BRANCH IF NOT
   3367	014000	013700 	015272'			MOV	CHKFLD,R0		;COPY ADR OF FIRST DEVICE
   3368	014004	010437 	015272'			MOV	R4,CHKFLD
   3369	014010	062705 	000030 		CHKD01:	ADD	#CKCADD-4,R5
   3370	014014	000205 				RTS	R5
   3371
   3372	014016	022626 			NONDEV:	CMP	(SP)+,(SP)+		;GET RID OF THE TRAP INFO
   3373	014020					CK11SC	<CKEWRN!CKEDID!CKEMSG>,<Device does NOT exist>
	014020	104614 				TRAP	CKEWRN!CKEDID!CKEMSG!CKEMSG		;
   3374	014022	   104 	   145 	   166 		.ASCIZ	\Device does NOT exist\
	014025	   151 	   143 	   145
	014030	   040 	   144 	   157
	014033	   145 	   163 	   040
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 73-2
CHECK SYSTEM FOR EXISTENCE OF OPTIONS

	014036	   116 	   117 	   124
	014041	   040 	   145 	   170
	014044	   151 	   163 	   164
	014047	   000
   3375						.EVEN
   3376	014050	000717 				BR	13$
   3377						.DSABL	LSB
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 74
BIT SET/BIT CLEAR TEST

   3379					.SBTTL		BIT SET/BIT CLEAR TEST
   3380
   3381					;HERE TO CHECK WE CAN SET/CLEAR VARIOUS BITS
   3382					;
   3383					; CALL	MOV	#<ADR OF ASCIZ \NAME\>,CKDNAM
   3384					;	MOV	<DEVICE NUMBER>,CKDEVN
   3385					;	MOV	<DEVICE REGISTER ADDRESS>,R1
   3386					;	JSR	R5,CHKBIT
   3387					;	<ALL BITS TO TEST>
   3388					;
   3389	014052	010046 			CHKBIT:	MOV	R0,-(SP)
   3390	014054	012737 	000340 	177776 		MOV	#BR7,@#PS		;DISABLE INTERRUPTS
   3391	014062	011500 				MOV	(R5),R0			;GET BITS TO CHECK
   3392	014064	040011 				BIC	R0,(R1)			;TRY AND CLEAR ALL OF THEM
   3393	014066	030011 				BIT	R0,(R1)			;SEE IF ALL OF THEM CLEARED?
   3394	014070	001410 				BEQ	11$			;BRANCH IF ALL CLEAR
   3395	014072	005046 				CLR	-(SP)			;WHAT THE RESULT SHOULD BE
   3396	014074	011146 				MOV	(R1),-(SP)		;PUT C(DEV REG) ON STACK
   3397	014076	010046 				MOV	R0,-(SP)			;BUT ONLY CERTAIN BITS ARE BAD CANDIDATES
   3398	014100	005116 				COM	(SP)			;GET RID OF ONES
   3399	014102	042616 				BIC	(SP)+,(SP)		; THAT WE'RE NOT INTERESTED IN
   3400	014104	010146 				MOV	R1,-(SP)			;SAVE THE DEVICE ADR
   3401	014106					CK11SC	<CKEMSE!CKEPC!CKEDID!CKEGB>,<CKMG02>,<BITS WOULD NOT CLEAR>
	014106	104532 				TRAP	CKEMSE!CKEPC!CKEDID!CKEGB&<^CCKEMSG>		;BITS WOULD NOT CLEAR
	014110	020776'				.WORD	CKMG02			;ADR OF MESSAGE
   3402	014112	012700 	000001 		11$:	MOV	#1,R0			;START WITH B0 AND GO UNTIL B15 IS DONE
   3403	014116	031500 			12$:	BIT	(R5),R0			;WANT THIS BIT CHECKED?
   3404	014120	001420 				BEQ	14$			;BRANCH IF NOT, AND MAKE NEW BIT
   3405	014122	050011 				BIS	R0,(R1)			;TRY TO SET THE BIT
   3406	014124	030011 				BIT	R0,(R1)			;SEE IF THE BIT SET
   3407	014126	001005 				BNE	13$			;BRANCH IF IT SET
   3408	014130	010046 				MOV	R0,-(SP)			;SAVE GOOD
   3409	014132	005046 				CLR	-(SP)			;GOOD SHOUD BE 0 FOR THAT BIT
   3410	014134	010146 				MOV	R1,-(SP)			;DEV ADR WHERE IT HAPPENED
   3411	014136					CK11SC	<CKEMSE!CKEPC!CKEDID!CKEGB>,<CKMG03>,<BIT WOULD NOT SET>
	014136	104532 				TRAP	CKEMSE!CKEPC!CKEDID!CKEGB&<^CCKEMSG>		;BIT WOULD NOT SET
	014140	021020'				.WORD	CKMG03			;ADR OF MESSAGE
   3412	014142	040011 			13$:	BIC	R0,(R1)			;NOW THAT ITS SET TRY TO CLEAR IT
   3413	014144	030011 				BIT	R0,(R1)			;SEE IF IT CLEARED
   3414	014146	001405 				BEQ	14$			;BRANCH IF IT CLEARED AND GET NEW BIT
   3415	014150	005046 				CLR	-(SP)			;GOOD SHOUD BE 0
   3416	014152	010046 				MOV	R0,-(SP)			;SINCE IT DIDN'T CLEAR THIS BIT IS BAD
   3417	014154	010146 				MOV	R1,-(SP)			;DEV ADR THAT FAILED
   3418	014156					CK11SC	<CKEMSE!CKEPC!CKEDID!CKEGB>,<CKMG02>,<BIT WOULD NOT CLEAR>
	014156	104532 				TRAP	CKEMSE!CKEPC!CKEDID!CKEGB&<^CCKEMSG>		;BIT WOULD NOT CLEAR
	014160	020776'				.WORD	CKMG02			;ADR OF MESSAGE
   3419	014162	006300 			14$:	ASL	R0			;MAKE NEW BIT POSITION
   3420	014164	001354 				BNE	12$			;BRANCH IF THERE IS A BIT
   3421	014166	012600 				MOV	(SP)+,R0
   3422	014170	005725 				TST	(R5)+			;GO OVER BITS FOLLOWING JSR
   3423	014172	000205 				RTS	R5			;EXIT
   3424
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 75
PRINT DEVICE ID ROUTINE

   3426					.SBTTL		PRINT DEVICE ID ROUTINE
   3427
   3428	014174	032737 	100000 	011326'	CKDIDT:	BIT	#CKFIDT,CHKFLG		;HAVE WE ALREADY TYPE DEVICE ID ?
   3429	014202	001051 				BNE	11$
   3430	014204	004737 	020556'			JSR	PC,CKCRLF		;EXTRA CR + LF
   3431	014210	004037 	020570'			JSR	R0,CKTCRL
   3432	014214	   007 	   000 			.BYTE	007,0
   3433	014216	032776 	000200 	000002 		BIT	#CKEWRN,@2(SP)		;WARN ?
   3434	014224	001004 				BNE	5$
   3435	014226					CK11SC	CKENCL,<? >
	014226	104444 				TRAP	CKENCL!CKEMSG		;
   3436	014230	   077 	   040 	   000 		.ASCIZ	\? \
   3437						.EVEN
   3438	014234	000403 				BR	10$
   3439	014236				5$:	CK11SC	CKENCL,<% >
	014236	104444 				TRAP	CKENCL!CKEMSG		;
   3440	014240	   045 	   040 	   000 		.ASCIZ	\% \
   3441						.EVEN
   3442	014244	013700 	011332'		10$:	MOV	CKDNAM,R0		;GET ASCIZ \DEVICE NAME\
   3443	014250	004737 	020530'			JSR	PC,CKTTXT		;TYPE DEVICE NAME
   3444	014254					CK11SC	<CKENCL>,< #>
	014254	104444 				TRAP	CKENCL!CKEMSG		;
   3445	014256	   040 	   043 	   000 		.ASCIZ	\ #\
   3446						.EVEN
   3447	014262	013700 	011330'			MOV	CKDEVN,R0		;GET UNIT NUMBER
   3448	014266	004737 	020616'			JSR	PC,CKTOCT		;TYPE UNIT NUMBER
   3449	014272					CK11SC	<CKENCL>,<(Adr = >
	014272	104444 				TRAP	CKENCL!CKEMSG		;
   3450	014274	   050 	   101 	   144 		.ASCIZ	\(Adr = \
	014277	   162 	   040 	   075
	014302	   040 	   000
   3451						.EVEN
   3452	014304	013700 	020510'			MOV	CHKCHR+CKDA,R0		;GET DEVICE ADDR
   3453	014310	004737 	020616'			JSR	PC,CKTOCT		;TYPE IT
   3454	014314					CK11SC	<CKENCL>,<)>
	014314	104444 				TRAP	CKENCL!CKEMSG		;
   3455	014316	   051 	   000 			.ASCIZ	\)\
   3456						.EVEN
   3457	014320	052737 	100000 	011326'		BIS	#CKFIDT,CHKFLG		;REMEMBER WE TYPED DEVICE ID
   3458	014326	000207 			11$:	RTS	PC
   3459
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 76
ROUTINE TO FIND DEVICE INTERRUPT LEVEL

   3461					.SBTTL		ROUTINE TO FIND DEVICE INTERRUPT LEVEL
   3462					;
   3463					;CALL	JSR R5,CHKINL			;WITH DEVICE READY TO INT BUT
   3464					;					; WITH THE PS SET TO LEVEL 7.
   3465					;
   3466	014330	010046 			CHKINL:	MOV	R0,-(SP)		;SAVE R0
   3467	014332	010146 				MOV	R1,-(SP)		;SAVE R1
   3468	014334	010246 				MOV	R2,-(SP)		;SAVE R2
   3469	014336	012702 	000300 			MOV	#300,R2			;START BY CHECKING LEVEL 6.
   3470	014342	011501 			11$:	MOV	(R5),R1			;GET TIME TO WAIT
   3471	014344	005000 				CLR	R0			;WILL BE SET BY INT ROUTINE IF INT
   3472	014346	010237 	177776 			MOV	R2,@#PS			;LOWER PS LEVEL
   3473	014352	005700 			12$:	TST	R0			;SEE IF INT YET
   3474	014354	001012 				BNE	13$			;NON 0 SAYS INTERRUPT
   3475	014356	077103 				SOB	R1,12$			;TIME AND WAIT
   3476	014360	012737 	000340 	177776 		MOV	#BR7,@#PS		;TIMED OUT SO SET LEVEL 7 AND LOWER AND TRY AGAIN
   3477	014366	162702 	000040 			SUB	#40,R2			;MAKE LEVEL LOWER BY 1
   3478	014372	002363 				BGE	11$			;BRANCH IF LEVEL 0 NOT CHECKED YET
   3479	014374					CK11SC	<CKEMSE!CKEDID!CKEPC>,<CKMG04>,<DEVICE NEVER INTERRUPTED>
	014374	104432 				TRAP	CKEMSE!CKEDID!CKEPC&<^CCKEMSG>		;DEVICE NEVER INTERRUPTED
	014376	021040'				.WORD	CKMG04			;ADR OF MESSAGE
   3480	014400	000415 				BR	15$			;EXIT
   3481	014402	020037 	020512'		13$:	CMP	R0,CHKCHR+CKDV		;SEE IF SAME AS WHAT IT SHOULD BE
   3482	014406	001406 				BEQ	14$			;BRANCH IF CORRECT VECTOR
   3483	014410					CKSERR	<CHKCHR+CKDV>,<R0>,<R4>
	014410	013746 	020512'			MOV	CHKCHR+CKDV,-(SP)			;SAVE GOOD (CHKCHR+CKDV) ON STACK
	014414	010046 				MOV	R0,-(SP)			;SAVE BAD (R0) ON STACK
	014416	010446 				MOV	R4,-(SP)		;SAVE ADDRESS (R4) ON STACK
   3484	014420					CK11SC	<CKEMSE!CKEPC!CKEDID!CKEGB>,<CKMG05>,<Device INTERRUPTED to WRONG VECTOR>
	014420	104532 				TRAP	CKEMSE!CKEPC!CKEDID!CKEGB&<^CCKEMSG>		;Device INTERRUPTED to WRONG VECTOR
	014422	021070'				.WORD	CKMG05			;ADR OF MESSAGE
   3485	014424	062702 	000040 		14$:	ADD	#40,R2			;MAKE THE DEVICE LEVEL
   3486	014430	010237 	020514'			MOV	R2,CHKCHR+CKPI		;SAVE LEVEL DEVICE INTERRUPTED AT
   3487	014434	012602 			15$:	MOV	(SP)+,R2		;RESTORE R2
   3488	014436	012601 				MOV	(SP)+,R1		;RESTORE R1
   3489	014440	012600 				MOV	(SP)+,R0		;RESTORE R0
   3490	014442	005725 				TST	(R5)+			;SKIP OVER TIME DELAY CONSTANT
   3491	014444	000205 				RTS	R5			;RETURN WITH DEVICE LEVEL SAVED IN CHARACTERISTICS TABLE
   3492
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 77
CHECK INTERRUPTS AND FIND DEVICE LEVEL

   3494					.SBTTL		CHECK INTERRUPTS AND FIND DEVICE LEVEL
   3495
   3496					;ROUTINE TO CHECK INTERRUPTS AND FIND DEVICE LEVEL
   3497					;
   3498					; CALL	MOV	ENABLE ADR,R1
   3499					;	MOV	INT ADR,R2
   3500					;	JSR	R5,CKINT
   3501					;	ENABLE BIT
   3502					;	INTERRUPT BITS
   3503					;	SPECIAL CLEAR BITS
   3504					;	0 if BIS sufficient to generate interrupt, else address
   3505					;		of subroutine
   3506					;
   3507	014446	010346 			CKINT:	MOV	R3,-(SP)
   3508	014450	010446 				MOV	R4,-(SP)
   3509	014452	005037 	020514'			CLR	CHKCHR+CKPI		;START WITH PI OF 0 (NO DEV)
   3510	014456	005037 	015100'			CLR	CKFLAG
   3511	014462	012704 	000001 			MOV	#1,R4			;STARTING POSITION OF SLIDING INT BIT
   3512	014466	012703 	000340 		CKINT1:	MOV	#BR7,R3			;START CHECKING AT THIS LEVEL
   3513	014472	010337 	177776 		CKINT2:	MOV	R3,@#PS			;SET PS
   3514	014476	005000 				CLR	R0			;SET TO 0 SO IF INT HAPPENS WE KNOW IT
   3515	014500	030465 	000002 		CKINT3:	BIT	R4,2(R5)		;IS THERE A BIT TO TEST?
   3516	014504	001002 				BNE	11$			;BRANCH IF BIT IN POSITION
   3517	014506	000137 	015044'			JMP	CKINT7			;MAKE NEW BIT POSITION
   3518	014512	005765 	000006 		11$:	TST	6(R5)			;subroutine supplied?
   3519	014516	001403 				BEQ	12$			;no, do normal
   3520	014520	004775 	000006 			JSR	PC,@6(R5)		;yes, use it
   3521	014524	000403 				BR	13$			;and continue
   3522	014526	051511 			12$:	BIS	(R5),(R1)		;SET INTERRUPT ENABLE
   3523	014530	050412 				BIS	R4,(R2)			;SET INTERRUPT BIT
   3524	014532	000240 				NOP				;ALLOW 1 EXTRA INST TIME FOR INT
   3525	014534				13$:
   3526	014534	012737 	000340 	177776 		MOV	#BR7,@#PS		;LET NO INT HAPPEN
   3527	014542	041511 				BIC	(R5),(R1)		;CLEAR INT ENABLE
   3528	014544	005765 	000004 			TST	4(R5)			;SEE IF SPECIAL CLEAR
   3529	014550	001403 				BEQ	14$			;BRANCH IF NOT
   3530	014552	056512 	000004 			BIS	4(R5),(R2)		;SPECIAL CLEAR
   3531	014556	000402 				BR	15$			;CONTINUE
   3532	014560	046512 	000002 		14$:	BIC	2(R5),(R2)		;CLEAR INT BITS
   3533	014564	005700 			15$:	TST	R0			;IF R0 IS NON 0 IT SHOULD BE THE
   3534										; VECTOR ADR. IF 0 NO INT HAPPENED.
   3535	014566	001006 				BNE	16$			;BRANCH IF INTERRUPT
   3536	014570	162703 	000040 			SUB	#40,R3			;MAKE PS VALUE 1 LEVEL LESS
   3537	014574	002336 				BGE	CKINT2			;BRANCH IF NEW LEVEL OK
   3538	014576					CK11SC	<CKEMSE!CKEPC!CKEDID>,<CKMG04>,<DEVICE NEVER INTERRUPTED>
	014576	104432 				TRAP	CKEMSE!CKEPC!CKEDID&<^CCKEMSG>		;DEVICE NEVER INTERRUPTED
	014600	021040'				.WORD	CKMG04			;ADR OF MESSAGE
   3539	014602	000532 				BR	CKINTF			;EXIT WITH FAILURE RETURN
   3540					;
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 78
CHECK INTERRUPTS AND FIND DEVICE LEVEL

   3542					;
   3543					; HERE WHEN THE DEVICE HAS INTERRUPTED
   3544					;
   3545	014604	005737 	015100'		16$:	TST	CKFLAG		;FIRST TIME THROUGH?
   3546	014610	001014 				BNE	17$		;NO.
   3547	014612	005337 	015100'			DEC	CKFLAG		;YES, DON'T DO THIS AGAIN.
   3548	014616	010337 	020514'			MOV	R3,CHKCHR+CKPI	;STORE PRIORITY INTERRUPT LEVEL
   3549	014622	062737 	000040 	020514'		ADD	#40,CHKCHR+CKPI
   3550	014630	005737 	020512'			TST	CHKCHR+CKDV	;VECTOR SPECIFIED?
   3551	014634	001002 				BNE	17$		;YES, IT BETTER BE RIGHT.
   3552	014636	010037 	020512'			MOV	R0,CHKCHR+CKDV	;NO, SPECIFY IT NOW.
   3553	014642	020037 	020512'		17$:	CMP	R0,CHKCHR+CKDV	;IS VECTOR RIGHT?
   3554	014646	001412 				BEQ	18$		;YES.
   3555	014650	010046 				MOV	R0,-(SP)	;SAVE RIGHT ADDR
   3556	014652					CKSERR	<CHKCHR+CKDV>,R0,<R2> ;GD,BD,ADR
	014652	013746 	020512'			MOV	CHKCHR+CKDV,-(SP)			;SAVE GOOD (CHKCHR+CKDV) ON STACK
	014656	010046 				MOV	R0,-(SP)			;SAVE BAD (R0) ON STACK
	014660	010246 				MOV	R2,-(SP)		;SAVE ADDRESS (R2) ON STACK
   3557	014662					CK11SC	<CKEMSE!CKEPC!CKEDID!CKEGB>,<CKMG05>,<DEVICE INTERRUPTED TO WRONG VECTOR>
	014662	104532 				TRAP	CKEMSE!CKEPC!CKEDID!CKEGB&<^CCKEMSG>		;DEVICE INTERRUPTED TO WRONG VECTOR
	014664	021070'				.WORD	CKMG05			;ADR OF MESSAGE
   3558	014666	012637 	020512'			MOV	(SP)+,CHKCHR+CKDV ;SET VECTOR RIGHT
   3559	014672	000470 				BR	CKINTE		;EXIT
   3560					;
   3561	014674	010300 			18$:	MOV	R3,R0			;GET PRESENT LEVEL
   3562	014676	062700 	000040 			ADD	#40,R0			;MAKE IT THE DEVICE LEVEL
   3563	014702	020037 	020514'			CMP	R0,CHKCHR+CKPI		;CHECK LEVEL AGAINST LAST TIME
   3564	014706	001424 				BEQ	CKINT6			;BRANCH IF LEVEL CHECKS
   3565	014710					CKSERR	<CHKCHR+CKPI>,R0,R4
	014710	013746 	020514'			MOV	CHKCHR+CKPI,-(SP)			;SAVE GOOD (CHKCHR+CKPI) ON STACK
	014714	010046 				MOV	R0,-(SP)			;SAVE BAD (R0) ON STACK
	014716	010446 				MOV	R4,-(SP)		;SAVE ADDRESS (R4) ON STACK
   3566	014720					CK11SC	<CKEPC!CKEDID!CKEGB>,<Interrupt to Wrong PI Level>,<INTERRUPT TO WRONG PI LEVEL>
	014720	104516 				TRAP	CKEPC!CKEDID!CKEGB!CKEMSG		;INTERRUPT TO WRONG PI LEVEL
   3567	014722	   111 	   156 	   164 		.ASCIZ	\Interrupt to Wrong PI Level\
	014725	   145 	   162 	   162
	014730	   165 	   160 	   164
	014733	   040 	   164 	   157
	014736	   040 	   127 	   162
	014741	   157 	   156 	   147
	014744	   040 	   120 	   111
	014747	   040 	   114 	   145
	014752	   166 	   145 	   154
	014755	   000
   3568						.EVEN
   3569	014756	000436 				BR	CKINTE			;EXIT
   3570					;
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 79
CHECK INTERRUPTS AND FIND DEVICE LEVEL

   3572					;
   3573	014760	012737 	000000 	177776 	CKINT6:	MOV	#0,@#PS			;CHECK WITH LEVEL 0 AND
   3574	014766	005000 				CLR	R0			; NO INT ENABLE BITS SET
   3575	014770	050412 				BIS	R4,(R2)			;  AND INT BIT SET THAT NO INT OCCURRS
   3576	014772	000240 				NOP				;PAUSE
   3577	014774	000240 				NOP				;PAUSE
   3578	014776	012737 	000340 	177776 		MOV	#BR7,@#PS		;DON'T LET AN INT HAPPEN
   3579	015004	005700 				TST	R0			;SEE IF ONE HAPPENED
   3580	015006	001403 				BEQ	11$			;BRANCH IF NO INT
   3581	015010					CK11SC	<CKEMSE!CKEDID!CKEPC>,CKMG07,<INTERRUPT WHEN NOT ENABLED>
	015010	104432 				TRAP	CKEMSE!CKEDID!CKEPC&<^CCKEMSG>		;INTERRUPT WHEN NOT ENABLED
	015012	021136'				.WORD	CKMG07			;ADR OF MESSAGE
   3582	015014	000425 				BR	CKINTF			;EXIT WITH FAILURE RETURN
   3583	015016	005765 	000004 		11$:	TST	4(R5)			;SEE IF SPECIAL CLEAR
   3584	015022	001403 				BEQ	12$			;BRANCH IF NOT
   3585	015024	056512 	000004 			BIS	4(R5),(R2)		;SPECIAL CLEAR  (DL10 FOR ONE)
   3586	015030	000401 				BR	13$			;CONTINUE
   3587	015032	040412 			12$:	BIC	R4,(R2)			;CLEAR INT BITS
   3588	015034	006304 			13$:	ASL	R4			;MAKE NEW BIT POSITION
   3589	015036	001406 				BEQ	CKINTE			;BRANCH IF DONE
   3590	015040	000137 	014466'			JMP	CKINT1			;TEST NEW BIT
   3591	015044	006304 			CKINT7:	ASL	R4			;MAKE NEW INT BIT POSITION
   3592	015046	001402 				BEQ	CKINTE			;BRANCH IF NO NEW BIT POSITION
   3593	015050	000137 	014500'			JMP	CKINT3			;BRANCH IF NEW BIT POSITION
   3594	015054	062705 	000010 		CKINTE:	ADD	#10,R5			;FOR CORRECT RETURN
   3595	015060	000241 				CLC				;FLAG SUCCESS
   3596	015062				CKINTG:					;COMMON RETURN CODE
   3597	015062	012604 				MOV	(SP)+,R4
   3598	015064	012603 				MOV	(SP)+,R3
   3599	015066	000205 				RTS	R5			;RETURN
   3600
   3601	015070	062705 	000010 		CKINTF:	ADD	#10,R5			;FOR CORRECT RETURN ADDRESS
   3602	015074	000261 				SEC				;TO INDICATE FAILURE
   3603	015076	000771 				BR	CKINTG			;GO TO COMMON RETURN CODE
   3604
   3605	015100	000000 			CKFLAG:	0
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 80
HERE ON AN INTERRUPT WHILE IN CHK11

   3607					.SBTTL		HERE ON AN INTERRUPT WHILE IN CHK11
   3608
   3609					;HERE FROM AN INTERRUPT WHILE IN CHK11
   3610					; WILL RETURN VECTOR ADDRESS IN R0 (RANGE 0 TO 1174)
   3611					;
   3612	015102	013700 	177776 		CHKINT:	MOV	@#PS,R0			;GET PROCESSOR STATUS
   3613	015106	004737 	015246'			JSR	PC,11$			;COMPUTE INTERRUPT ADDRESS
   3614	015112	000000 				.WORD	0000			;THESE INTERRUPTS ARE 0000-0074
   3615		000012 			CHKITL=.-CHKINT				;LENGTH OF INTERRUPT BLOCK
   3616	015114	013700 	177776 			MOV	@#PS,R0			;GET PROCESSOR STATUS
   3617	015120	004737 	015246'			JSR	PC,11$
   3618	015124	000100 				.WORD	0100
   3619	015126	013700 	177776 			MOV	@#PS,R0			;GET PROCESSOR STATUS
   3620	015132	004737 	015246'			JSR	PC,11$
   3621	015136	000200 				.WORD	0200
   3622	015140	013700 	177776 			MOV	@#PS,R0			;GET PROCESSOR STATUS
   3623	015144	004737 	015246'			JSR	PC,11$
   3624	015150	000300 				.WORD	0300
   3625	015152	013700 	177776 			MOV	@#PS,R0			;GET PROCESSOR STATUS
   3626	015156	004737 	015246'			JSR	PC,11$
   3627	015162	000400 				.WORD	0400
   3628	015164	013700 	177776 			MOV	@#PS,R0			;GET PROCESSOR STATUS
   3629	015170	004737 	015246'			JSR	PC,11$
   3630	015174	000500 				.WORD	0500
   3631	015176	013700 	177776 			MOV	@#PS,R0			;GET PROCESSOR STATUS
   3632	015202	004737 	015246'			JSR	PC,11$
   3633	015206	000600 				.WORD	0600
   3634	015210	013700 	177776 			MOV	@#PS,R0			;GET PROCESSOR STATUS
   3635	015214	004737 	015246'			JSR	PC,11$
   3636	015220	000700 				.WORD	0700
   3637	015222	013700 	177776 			MOV	@#PS,R0			;GET PROCESSOR STATUS
   3638	015226	004737 	015246'			JSR	PC,11$
   3639	015232	001000 				.WORD	1000
   3640	015234	013700 	177776 			MOV	@#PS,R0			;GET PROCESSOR STATUS
   3641	015240	004737 	015246'			JSR	PC,11$
   3642	015244	001100 				.WORD	1100
   3643					;
   3644					; HERE AFTER AN INTERRUPT TO COMPUTE THE ADDRESS FROM THE THE LOW
   3645					;  FOUR BITS OF THE PS AND THE WORD AFTER THE JSR ABOVE.
   3646					;
   3647	015246	042700 	177760 		11$:	BIC	#^C17,R0		;STRIP EXTRA BITS
   3648	015252	006300 				ASL	R0			;MULTIPLY BY 4
   3649	015254	006300 				ASL	R0
   3650	015256	063600 				ADD	@(SP)+,R0		;MAKES VECTOR ADR
   3651	015260	012766 	000340 	000002 		MOV	#BR7,2(SP)		;SO DON'T TRAP BACK AGAIN
   3652	015266	000002 				RTI
   3653
   3654	015270				CHKFLV:	.BLKW	1			;CURRENT FLOATING DEVICE VECTOR
   3655	015272				CHKFLD:	.BLKW	1			;CURRENT FLOATING DEVICE ADR
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 81
CHECK DH11 HDW

   3657					.SBTTL		CHECK DH11 HDW
   3658
   3659					;CALL	MOV	#<VECTOR ADR>,R3
   3660					;	MOV	#<HDW ADR>,R4
   3661					;	MOV	#<HDW ADR>,R1
   3662					;	JSR	PC,CKDH11
   3663	015274	010346 			CKDH11:	MOV	R3,-(SP)	;SAVE REGISTER
   3664	015276	004537 	014052'			JSR	R5,CHKBIT	;CHECK RD/WRT BITS
   3665	015302	131177 				131177			;READ/WRITE BITS
   3666	015304	005721 				TST	(R1)+		;ADVANCE TO NXT REC CHAR REG
   3667	015306	005721 				TST	(R1)+		;ADVANCE TO LINE PARAMETER REG(XX4)
   3668	015310	004537 	014052'			JSR	R5,CHKBIT	;CHECK RD/WRT BITS
   3669	015314	177767 				177767			;READ/WRITE BITS
   3670	015316	005721 				TST	(R1)+		;ADVANCE TO CURRENT ADR REG(XX6)
   3671	015320	005002 				CLR	R2		;START CHECK AT LINE 0
   3672	015322	010214 			11$:	MOV	R2,(R4)		;SELECT THE LINE
   3673	015324	004537 	014052'			JSR	R5,CHKBIT	;CHECK RD/WRT BITS
   3674	015330	177777 				-1			;READ/WRITE BITS
   3675	015332	005202 				INC	R2		;NEXT LINE TO CHECK
   3676	015334	020227 	000017 			CMP	R2,#17		;DONE
   3677	015340	003770 				BLE	11$		;CHECK LINES 0-17
   3678	015342	005721 				TST	(R1)+		;ADVANCE TO BYTE COUNT REG(X10)
   3679	015344	005002 				CLR	R2		;START CHECK AT LINE 0
   3680	015346	010214 			12$:	MOV	R2,(R4)		;SELECT THE LINE
   3681	015350	004537 	014052'			JSR	R5,CHKBIT	;CHECK RD/WRT BITS
   3682	015354	177777 				-1			;READ/WRITE BITS
   3683	015356	005202 				INC	R2		;NEXT LINE TO CHECK
   3684	015360	020227 	000017 			CMP	R2,#17		;ALL LINES CHECKED?
   3685	015364	003770 				BLE	12$		;CHECK ALL 20 LINES
   3686	015366	005721 				TST	(R1)+		;ADVANCE TO BAR REG(XX12)
   3687	015370	005721 				TST	(R1)+		;ADVANCE TO BREAK REG(X14)
   3688	015372	004537 	014052'			JSR	R5,CHKBIT	;CHECK BITS
   3689	015376	177777 				-1			;READ/WRITE BITS
   3690	015400	005721 				TST	(R1)+		;ADVANCE TO SILO STATUS REG(X16)
   3691	015402	004537 	014052'			JSR	R5,CHKBIT	;CHECK READ/WRITE BITS
   3692	015406	000077 				77
   3693	015410					$CKINT	R4,R4,<DH.RIE!DH..MM>,<DH..RI>
	015410	010401 			.IIF	NB,R4,	MOV	R4,R1			;LOAD ENABLE ADR
	015412	010402 			.IIF	NB,R4,	MOV	R4,R2			;LOAD INTERRUPT ADR
	015414	004537 	014446'			JSR	R5,CKINT		;GO CHECK INTERRUPTS
	015420	001100 				.WORD	DH.RIE!DH..MM			;ENABLE BITS -  DH.RIE!DH..MM
	015422	000200 				.WORD	DH..RI			;INTERRUPT BITS -  DH..RI
	015424	000000 			.IIF	B,,	.WORD	0			;NO SPECIAL CLEAR BITS
	015426	000000 			.IIF	B,,	.WORD	0			;no interrupt SUB,routine needed
   3694	015430					$CKINT	,,<DH.SIE!DH..MM>,<DH..SI>
	015430	004537 	014446'			JSR	R5,CKINT		;GO CHECK INTERRUPTS
	015434	011000 				.WORD	DH.SIE!DH..MM			;ENABLE BITS -  DH.SIE!DH..MM
	015436	040000 				.WORD	DH..SI			;INTERRUPT BITS -  DH..SI
	015440	000000 			.IIF	B,,	.WORD	0			;NO SPECIAL CLEAR BITS
	015442	000000 			.IIF	B,,	.WORD	0			;no interrupt SUB,routine needed
   3695	015444	062737 	000004 	020512'		ADD	#4,CHKCHR+CKDV		;MAKE EXPECTED VECTOR FOR XMIT
   3696	015452					$CKINT	,,<DH.TIE>,<DH..TI>
	015452	004537 	014446'			JSR	R5,CKINT		;GO CHECK INTERRUPTS
	015456	020000 				.WORD	DH.TIE			;ENABLE BITS -  DH.TIE
	015460	100000 				.WORD	DH..TI			;INTERRUPT BITS -  DH..TI
	015462	000000 			.IIF	B,,	.WORD	0			;NO SPECIAL CLEAR BITS
	015464	000000 			.IIF	B,,	.WORD	0			;no interrupt SUB,routine needed
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 81-1
CHECK DH11 HDW

   3697	015466	010337 	020512'			MOV	R3,CHKCHR+CKDV		;PUT VECTOR ADDRESS IN TABLE
   3698
   3699	015472				CKDH1A:
   3700	015472	010337 	016356'			MOV	R3,DHXMII		;ADR TO COME TO ON XMIT INT
   3701	015476	062737 	000004 	016356'		ADD	#4,DHXMII		;
   3702	015504	012700 	021174'			MOV	#CKBLK,R0		;LOAD A BUFFER WITH COUNT PATTERN
   3703	015510	012701 	000400 			MOV	#400,R1			;LOAD 400 CHARACTERS
   3704	015514	005002 				CLR	R2			;START WITH 0
   3705	015516	110220 			11$:	MOVB	R2,(R0)+		;STORE THE COUNT PATTERN
   3706	015520	105202 				INCB	R2			;NEW PATTERN
   3707	015522	077103 				SOB	R1,11$			;BUFFER LOADED?
   3708	015524	005003 				CLR	R3			;START WITH LINE 0
   3709	015526	012702 	000001 			MOV	#1,R2			;LINE BIT  (LINE 0)
   3710	015532	005037 	016354'		CKDH1B:	CLR	DHDATA			;FIRST RCV'D SHOULD BE 0
   3711	015536	012701 	177400 			MOV	#-400,R1
   3712	015542	052714 	004000 			BIS	#DH..MC,(R4)		;CLEAR THE DH
   3713	015546	052714 	031100 			BIS	#DH..MM!DH.SIE!DH.TIE!DH.RIE,(R4)	;ENABLE INTS
   3714	015552	050314 				BIS	R3,(R4)			;LOAD THE LINE NUMBER
   3715	015554	012764 	033567 	000004 		MOV	#B6!B8!B9!B10!B12!B13!DH.2SB!DH.CL8!DH.PEN!DH..OP,DH.LPR(R4) ;SEL 8BIT,9600,PAR,ODD
   3716	015562	010164 	000010 			MOV	R1,DH.BCR(R4)		;LENGTH TO XMIT
   3717	015566	012764 	021174'	000006 		MOV	#CKBLK,DH.CAR(R4)	;ADR WHERE THE DATA IS
   3718	015574	012764 	000004 	000016 		MOV	#4,DH.SSR(R4)		;ALARM LEVEL TO 4
   3719	015602	005000 			CKDH1E:	CLR	R0			;INT RETURNS ADR IN HERE
   3720	015604	005001 				CLR	R1			;TIMER
   3721	015606	010264 	000012 			MOV	R2,DH.BAR(R4)		;SET LINE ACTIVE
   3722	015612	012737 	000000 	177776 	11$:	MOV	#0,@#PS			;LEVEL TO 0 FOR INTS
   3723	015620	000240 				NOP				;LET AN INTERRUPT HAPPEN
   3724	015622	012737 	000340 	177776 		MOV	#BR7,@#PS		;DON'T LET ONE HAPPEN
   3725	015630	020037 	020512'			CMP	R0,CHKCHR+CKDV		;SEE IF RCV INT YET
   3726	015634	001467 				BEQ	16$			;BRANCH IF RCV INT
   3727	015636	020037 	016356'			CMP	R0,DHXMII		;SEE IF XMIT INT
   3728	015642	001427 				BEQ	13$			;BRANCH IF XMIT INT
   3729	015644	005700 				TST	R0			;SEE IF ANY INTERRUPT
   3730	015646	001413 				BEQ	12$			;BRANCH IF NO INTERRUPT
   3731	015650					CKSERR	<CHKCHR+CKDV>,R0,R3
	015650	013746 	020512'			MOV	CHKCHR+CKDV,-(SP)			;SAVE GOOD (CHKCHR+CKDV) ON STACK
	015654	010046 				MOV	R0,-(SP)			;SAVE BAD (R0) ON STACK
	015656	010346 				MOV	R3,-(SP)		;SAVE ADDRESS (R3) ON STACK
   3732	015660					CK11SC	<CKEPC!CKEGB!CKEDID>,<Ill Int>,<ILLEGAL INT WHILE WAITING FOR DH11 INT>
	015660	104516 				TRAP	CKEPC!CKEGB!CKEDID!CKEMSG		;ILLEGAL INT WHILE WAITING FOR DH11 INT
   3733	015662	   111 	   154 	   154 		.ASCIZ	\Ill Int\
	015665	   040 	   111 	   156
	015670	   164 	   000
   3734						.EVEN
   3735	015672	000137 	016306'			JMP	CKDH1D			;DON'T TEST ANY MORE
   3736	015676	077133 			12$:	SOB	R1,11$			;TIME-OUT
   3737	015700					CK11SC	<CKEPC!CKEDID>,<No Int>,<NO DH11 INTERRUPT>
	015700	104416 				TRAP	CKEPC!CKEDID!CKEMSG		;NO DH11 INTERRUPT
   3738	015702	   116 	   157 	   040 		.ASCIZ	\No Int\
	015705	   111 	   156 	   164
	015710	   000
   3739						.EVEN
   3740	015712	004737 	016320'			JSR	PC,CKDHPL		;REPORT LINE NUMBER
   3741	015716	000137 	016306'			JMP	CKDH1D			;DON'T TEST ANY MORE
   3742	015722	032714 	002000 		13$:	BIT	#DH.NXM,(R4)		;SEE IF NXM
   3743	015726	001411 				BEQ	14$			;BRANCH IF NO NXM
   3744	015730					CK11SC	<CKEPC!CKEDID>,<Xmit Nxm>,<TRANSMIT NXM ON DH>
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 81-2
CHECK DH11 HDW

	015730	104416 				TRAP	CKEPC!CKEDID!CKEMSG		;TRANSMIT NXM ON DH
   3745	015732	   130 	   155 	   151 		.ASCIZ	\Xmit Nxm\
	015735	   164 	   040 	   116
	015740	   170 	   155 	   000
   3746						.EVEN
   3747	015744	004737 	016320'			JSR	PC,CKDHPL		;REPORT LINE NUMBER
   3748	015750	000556 				BR	CKDH1D			;DON'T TEST ANY MORE
   3749	015752	032714 	100000 		14$:	BIT	#DH..TI,(R4)		;BETTER HAVE XMIT INT
   3750	015756	001013 				BNE	15$			;BRANCH IF WE DO
   3751	015760					CK11SC	<CKEPC!CKEDID>,<Ill Xmit Int>,<INT TO XMIT BUT FOR NO REASON>
	015760	104416 				TRAP	CKEPC!CKEDID!CKEMSG		;INT TO XMIT BUT FOR NO REASON
   3752	015762	   111 	   154 	   154 		.ASCIZ	\Ill Xmit Int\
	015765	   040 	   130 	   155
	015770	   151 	   164 	   040
	015773	   111 	   156 	   164
	015776	   000
   3753						.EVEN
   3754	016000	004737 	016320'			JSR	PC,CKDHPL		;REPORT LINE NUMBER
   3755	016004	000540 				BR	CKDH1D			;DON'T TEST ANY MORE
   3756	016006	042714 	100000 		15$:	BIC	#DH..TI,(R4)		;CLEAR XMIT INT
   3757	016012	000673 				BR	CKDH1E			;
   3758	016014	032714 	040000 		16$:	BIT	#DH..SI,(R4)		;SEE IF SILO OVERFLOW
   3759	016020	001411 				BEQ	CKDH1C			;BRANCH IF SILO HAD ROOM
   3760	016022					CK11SC	<CKEPC!CKEDID>,<Silo Full>,<SILO OVERFLOW>
	016022	104416 				TRAP	CKEPC!CKEDID!CKEMSG		;SILO OVERFLOW
   3761	016024	   123 	   151 	   154 		.ASCIZ	\Silo Full\
	016027	   157 	   040 	   106
	016032	   165 	   154 	   154
	016035	   000
   3762						.EVEN
   3763	016036	004737 	016320'			JSR	PC,CKDHPL		;REPORT LINE NUMBER
   3764	016042	000521 				BR	CKDH1D			;DON'T TEST ANY MORE
   3765	016044	042714 	000200 		CKDH1C:	BIC	#DH..RI,(R4)		;CLEAR RCV INT (MUST FOR MAINT MODE)
   3766	016050	016400 	000002 			MOV	DH.NRC(R4),R0		;GET STUFF FROM SILO
   3767	016054	032700 	070000 			BIT	#DH.DOV!DH..FE!DH..PE,R0	;SEE IF ANY ERROR BITS WITH DATA
   3768	016060	001424 				BEQ	11$			;BRANCH IF NO ERRORS WITH THE DATA
   3769	016062	013746 	016354'			MOV	DHDATA,-(SP)		;MAKE THE GOOD
   3770	016066	010346 				MOV	R3,-(SP)			;PUT LINE # IN
   3771	016070	000316 				SWAB	(SP)			;GET IT IN THE (LB)
   3772	016072	052616 				BIS	(SP)+,(SP)		;LINE # NOW IN GOOD
   3773	016074	052716 	100000 			BIS	#DH.VDP,(SP)		;GOOD INCLUDES VALID DATA PRESENT
   3774	016100	010046 				MOV	R0,-(SP)			;THE BAD
   3775	016102	010346 				MOV	R3,-(SP)			;THE LINE UNDER TEST
   3776	016104					CK11SC	<CKEGB!CKEPC!CKEDID>,<Data Err Bit Set>,<ERROR BITS WITH THE DATA>
	016104	104516 				TRAP	CKEGB!CKEPC!CKEDID!CKEMSG		;ERROR BITS WITH THE DATA
   3777	016106	   104 	   141 	   164 		.ASCIZ	\Data Err Bit Set\
	016111	   141 	   040 	   105
	016114	   162 	   162 	   040
	016117	   102 	   151 	   164
	016122	   040 	   123 	   145
	016125	   164 	   000
   3778						.EVEN
   3779	016130	000466 				BR	CKDH1D			;DON'T TEST ANY MORE
   3780	016132	032700 	100000 		11$:	BIT	#DH.VDP,R0		;SEE IF VALID DATA
   3781	016136	001014 				BNE	12$			;BRANCH IF VALID DATA
   3782	016140					CK11SC	<CKEPC!CKEDID>,<Not Valid Data>,<NOT VALID DATA BIT SET>
	016140	104416 				TRAP	CKEPC!CKEDID!CKEMSG		;NOT VALID DATA BIT SET
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 81-3
CHECK DH11 HDW

   3783	016142	   116 	   157 	   164 		.ASCIZ	\Not Valid Data\
	016145	   040 	   126 	   141
	016150	   154 	   151 	   144
	016153	   040 	   104 	   141
	016156	   164 	   141 	   000
   3784						.EVEN
   3785	016162	004737 	016320'			JSR	PC,CKDHPL		;REPORT LINE NUMBER
   3786	016166	000447 				BR	CKDH1D			;DON'T TEST ANY MORE
   3787	016170	042700 	170000 		12$:	BIC	#B15!B14!B13!B12,R0	;CLEAR DATA ERROR BITS
   3788	016174	000300 				SWAB	R0			;FOR CHECKING LINE #
   3789	016176	120003 				CMPB	R0,R3			;SEE IF LINE #OK
   3790	016200	001415 				BEQ	13$			;BRANCH IF IT IS
   3791	016202	010346 				MOV	R3,-(SP)			;LEGAL LINE NUMBER
   3792	016204	005046 				CLR	-(SP)			;0 FOR BYTE MOVE
   3793	016206	110016 				MOVB	R0,(SP)			;THE ILLEGAL LINE NUMBER
   3794	016210	010346 				MOV	R3,-(SP)			;LINE UNDER TEST
   3795	016212					CK11SC	<CKEGB!CKEPC!CKEDID>,<Ill Line Num>,<ILLEGAL LINE NUMBER>
	016212	104516 				TRAP	CKEGB!CKEPC!CKEDID!CKEMSG		;ILLEGAL LINE NUMBER
   3796	016214	   111 	   154 	   154 		.ASCIZ	\Ill Line Num\
	016217	   040 	   114 	   151
	016222	   156 	   145 	   040
	016225	   116 	   165 	   155
	016230	   000
   3797						.EVEN
   3798	016232	000425 				BR	CKDH1D			;DON'T TEST ANY MORE
   3799	016234	000300 			13$:	SWAB	R0			;FOR CHECKING THE DATA
   3800	016236	120037 	016354'			CMPB	R0,DHDATA		;SEE IF CORRECT DATA
   3801	016242	001414 				BEQ	14$			;BRANCH IF DATA OK
   3802	016244	013746 	016354'			MOV	DHDATA,-(SP)		;GOOD DATA
   3803	016250	005046 				CLR	-(SP)			;FOR BYTE MOVE
   3804	016252	110016 				MOVB	R0,(SP)			;THE BAD DATA
   3805	016254	010346 				MOV	R3,-(SP)			;THE LINE #
   3806	016256					CK11SC	<CKEGB!CKEPC!CKEDID>,<Data Err>,<DATA ERROR>
	016256	104516 				TRAP	CKEGB!CKEPC!CKEDID!CKEMSG		;DATA ERROR
   3807	016260	   104 	   141 	   164 		.ASCIZ	\Data Err\
	016263	   141 	   040 	   105
	016266	   162 	   162 	   000
   3808						.EVEN
   3809	016272	000405 				BR	CKDH1D			;DON'T TEST ANY MORE
   3810	016274	105237 	016354'		14$:	INCB	DHDATA			;NEW PATTERN EXPECTED
   3811	016300	001402 				BEQ	15$			;BRANCH IF LINE DONE
   3812	016302	000137 	015602'			JMP	CKDH1E			;
   3813
   3814	016306				15$:
   3815	016306	005203 			CKDH1D:	INC	R3			;NEW LINE NUMBER
   3816	016310	006302 				ASL	R2			;NEW BIT FOR NEXT LINE
   3817	016312	001414 				BEQ	CKDH1F			;BRANCH IF TEST ALL DONE
   3818	016314	000137 	015532'			JMP	CKDH1B			;
   3819
   3820	016320				CKDHPL:	CK11SC	0,<		Line #>
	016320	104404 				TRAP	0!CKEMSG		;
   3821	016322	   011 	   011 	   114 		.ASCIZ	\		Line #\
	016325	   151 	   156 	   145
	016330	   040 	   043 	   000
   3822						.EVEN
   3823	016334	010300 				MOV	R3,R0			;LINE NUMBER TO R0 FOR CALL
   3824	016336	004737 	020616'			JSR	PC,CKTOCT		;PRINT LINE NUMBER
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 81-4
CHECK DH11 HDW

   3825	016342	000207 				RTS	PC			;RETURN
   3826
   3827	016344	052714 	004000 		CKDH1F:	BIS	#DH..MC,(R4)		;MASTER CLEAR
   3828	016350	012603 				MOV	(SP)+,R3	;GET R3 BACK
   3829	016352	000207 				RTS	PC			;DH CHARACTER TEST DONE
   3830	016354	000000 			DHDATA:	0
   3831	016356	000000 			DHXMII:	0
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 82
CHECK DL11-E HDW

   3833					.SBTTL		CHECK DL11-E HDW
   3834
   3835					;CALL	MOV	#<VECTOR ADR>,R3
   3836					;	MOV	#<HDW ADR>,R4
   3837					;	MOV	#<HDW ADR>,R1
   3838					;	JSR	PC,CKDL11
   3839					;
   3840	016360				CKRD11:
   3841	016360	010346 			CKDL11:	MOV	R3,-(SP)
   3842	016362	004537 	014052'			JSR	R5,CHKBIT		;CHECK READ/WRITE BITS
   3843	016366	000156 				000156
   3844	016370	005721 				TST	(R1)+			;ADVANCE TO RECEIVE DATA REGISTER
   3845	016372	005721 				TST	(R1)+			;ADVANCE TO TRANSMIT STATUS REGISTER
   3846	016374	004537 	014052'			JSR	R5,CHKBIT
   3847	016400	000105 				000105
   3848	016402	012711 	000100 			MOV	#CO.INE,(R1)		;CAUSE AN INTERRUPT
   3849	016406	004537 	014330'			JSR	R5,CHKINL		;CHECK THE PI LEVEL
   3850	016412	177777 				.WORD	-1
   3851	016414	042711 	000100 			BIC	#CO.INE,(R1)		;CLEAR THE INTERRUPT
   3852	016420	012603 				MOV	(SP)+,R3
   3853	016422	000207 				RTS	PC
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 83
CHECK DL11-E HDW

   3855
   3856					.SBTTL		CHECK DL11-A HDW
   3857
   3858					;CALL	MOV	#<VECTOR ADR>,R3
   3859					;	MOV	#<HDW ADR>,R4
   3860					;	MOV	#<HDW ADR>,R1
   3861					;	JSR	PC,CKKL11
   3862					;
   3863	016424	010346 			CKKL11:	MOV	R3,-(SP)
   3864	016426	004537 	014052'			JSR	R5,CHKBIT		;CHECK READ/WRITE BITS
   3865	016432	000100 				.WORD	000100
   3866	016434	005721 				TST	(R1)+			;ADVANCE TO RECEIVE DATA REGISTER
   3867	016436	005721 				TST	(R1)+			;ADVANCE TO TRANSMIT STATUS REGISTER
   3868	016440	004537 	014052'			JSR	R5,CHKBIT
   3869	016444	000104 				.WORD	000104
   3870	016446	012764 	000100 	000004 		MOV	#CO.INE,4(R4)	;ENABLE PENDING OUTPUT INTERRUPT
   3871	016454	004537 	014330'			JSR	R5,CHKINL	;TEST INTERURPTS
   3872	016460	177777 				.WORD	-1		;TIMEOUT COUNTER
   3873	016462	042764 	000100 	000004 		BIC	#CO.INE,4(R4)	;DISABLE THAT INTERRUPT
   3874	016470	012603 				MOV	(SP)+,R3
   3875	016472	000207 				RTS	PC
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 84
CHECK DL11-A HDW

   3877
   3878					.SBTTL		CHECK DM11-BB HDW
   3879
   3880					;CALL	MOV	#<VECTOR ADR>,R3
   3881					;	MOV	#<HDW ADR>,R4
   3882					;	MOV	#<HDW ADR>,R1
   3883					;	JSR	PC,CKDM11
   3884	016474	004537 	014052'		CKDM11:	JSR	R5,CHKBIT		;CHECK FOLLOWING BITS
   3885	016500	001357 				DM.ALI!DM.DNE!DM..MM!DM.ENB!DM.IEN
   3886	016502					$CKINT	,R4,<DM.IEN>,<DM.DNE>
	016502	010402 			.IIF	NB,R4,	MOV	R4,R2			;LOAD INTERRUPT ADR
	016504	004537 	014446'			JSR	R5,CKINT		;GO CHECK INTERRUPTS
	016510	000100 				.WORD	DM.IEN			;ENABLE BITS -  DM.IEN
	016512	000200 				.WORD	DM.DNE			;INTERRUPT BITS -  DM.DNE
	016514	000000 			.IIF	B,,	.WORD	0			;NO SPECIAL CLEAR BITS
	016516	000000 			.IIF	B,,	.WORD	0			;no interrupt SUB,routine needed
   3887	016520	004737 	016570'			JSR	PC,CKDMCS		;CLEAR SCAN AND CHECK IT CLEARED
   3888	016524	052714 	000040 			BIS	#DM.ENB,(R4)		;ENABLE SCAN
   3889	016530	032714 	000020 			BIT	#DM.BSY,(R4)		;SEE IF BSY SET
   3890	016534	001012 				BNE	11$			;BRANCH IF IT DID
   3891	016536					CK11SC	<CKEPC!CKEDID>,<Busy did not Set>,<BUSY DID NOT SET>
	016536	104416 				TRAP	CKEPC!CKEDID!CKEMSG		;BUSY DID NOT SET
   3892	016540	   102 	   165 	   163 		.ASCIZ	\Busy did not Set\
	016543	   171 	   040 	   144
	016546	   151 	   144 	   040
	016551	   156 	   157 	   164
	016554	   040 	   123 	   145
	016557	   164 	   000
   3893						.EVEN
   3894	016562	004737 	016570'		11$:	JSR	PC,CKDMCS		;CLEAR SCAN AND CHECKED IT CLEARED
   3895	016566	000207 				RTS	PC
   3896
   3897	016570	012702 	001357 		CKDMCS:	MOV	#DM.DNE!DM..MM!DM.IEN!DM.ENB!DM.ALI,R2	;BITS WHICH SHOULD GET CLEARED
   3898	016574	012700 	000100 			MOV	#100,R0			;TIME OUT FOR BUSY
   3899	016600	052714 	004000 			BIS	#DM.SCN,(R4)		;CLEAR SCAN
   3900	016604	032714 	000020 		11$:	BIT	#DM.BSY,(R4)		;SEE IF BUSY CLEAR YET
   3901	016610	001414 				BEQ	12$			;BRANCH IF IT IS
   3902	016612	077004 				SOB	R0,11$			;TIME OUT WAITING FOR BSY TO CLEAR
   3903	016614					CK11SC	<CKEPC!CKEDID>,<Busy did not Clear>,<CLEARING SCAN FAILED TO CLEAR BUSY>
	016614	104416 				TRAP	CKEPC!CKEDID!CKEMSG		;CLEARING SCAN FAILED TO CLEAR BUSY
   3904	016616	   102 	   165 	   163 		.ASCIZ	\Busy did not Clear\
	016621	   171 	   040 	   144
	016624	   151 	   144 	   040
	016627	   156 	   157 	   164
	016632	   040 	   103 	   154
	016635	   145 	   141 	   162
	016640	   000
   3905						.EVEN
   3906	016642	030114 			12$:	BIT	R1,(R4)			;SEE IF THEY ARE ALL CLEAR
   3907	016644	001420 				BEQ	14$			;BRANCH IF THEY ARE ALL CLEAR
   3908	016646	011400 				MOV	(R4),R0			;GET DM11 STATUS
   3909	016650	005102 				COM	R2			;MASK OUT NON INTERESTING BITS
   3910	016652	040200 				BIC	R2,R0			;
   3911	016654	005046 				CLR	-(SP)			;GOOD
   3912	016656	010046 				MOV	R0,-(SP)			;BAD
   3913	016660	010446 				MOV	R4,-(SP)			;ADR
   3914	016662					CK11SC	<CKEGB!CKEPC!CKEDID>,<Clear Scan Error>,<CLR SCAN FAILED TO CLEAR A BIT>
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 84-1
CHECK DM11-BB HDW

	016662	104516 				TRAP	CKEGB!CKEPC!CKEDID!CKEMSG		;CLR SCAN FAILED TO CLEAR A BIT
   3915	016664	   103 	   154 	   145 		.ASCIZ	\Clear Scan Error\
	016667	   141 	   162 	   040
	016672	   123 	   143 	   141
	016675	   156 	   040 	   105
	016700	   162 	   162 	   157
	016703	   162 	   000
   3916						.EVEN
   3917	016706	000207 			14$:	RTS	PC
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 85
CHECK DTE20 HARDWARE

   3919					.SBTTL		CHECK DTE20 HARDWARE
   3920					;
   3921					;	JSR	PC,CKTE11
   3922	016710				CKTE11:
   3923									; [1(17)]
   3924					.IIF DF,DTEBAD,MOV R1,DTEBAD	;SAVE DTE20 BASE ADR [1(26)]
   3925	016710	004537 	014052'			JSR	R5,CHKBIT	;CHECK DLYCNT IN DTE'S RAM
   3926	016714	177777 				177777			; SINCE WE CAN ACCESS ALL THE BITS
   3927	016716	062701 	000034 			ADD	#TE.STW-TE.DYC,R1 ;POINT TO STATUS REGISTER
   3928					.IIF DF,DTPSTA,MOV R1,DTPSTA	;SAVE THE POINTER TO STAT REG [1(26)]
   3929	016722	012711 	000040 			MOV	#TS.EEE,@R1	;ENABLE INTERRUPTS
   3930	016726	032711 	000001 			BIT	#TS.IEN,@R1	;DOES DTE AGREE?
   3931	016732	001022 				BNE	11$		;YEP
   3932	016734					CK11SC	<CKEPC!CKEDID>,<Setting TS.EEE didn't set TS.IEN>
	016734	104416 				TRAP	CKEPC!CKEDID!CKEMSG		;
   3933	016736	   123 	   145 	   164 		.ASCIZ	\Setting TS.EEE didn't set TS.IEN\
	016741	   164 	   151 	   156
	016744	   147 	   040 	   124
	016747	   123 	   056 	   105
	016752	   105 	   105 	   040
	016755	   144 	   151 	   144
	016760	   156 	   047 	   164
	016763	   040 	   163 	   145
	016766	   164 	   040 	   124
	016771	   123 	   056 	   111
	016774	   105 	   116 	   000
   3934						.EVEN
   3935	017000				11$:	$CKINT	,R1,<TS.EEE>,<TS.RES>,<TS.DEI>
	017000	010102 			.IIF	NB,R1,	MOV	R1,R2			;LOAD INTERRUPT ADR
	017002	004537 	014446'			JSR	R5,CKINT		;GO CHECK INTERRUPTS
	017006	000040 				.WORD	TS.EEE			;ENABLE BITS -  TS.EEE
	017010	004000 				.WORD	TS.RES			;INTERRUPT BITS -  TS.RES
	017012	000010 			.IIF	NB,TS.DEI,	.WORD	TS.DEI			;BITS TO CLEAR DEVICE - TS.DEI
	017014	000000 			.IIF	B,,	.WORD	0			;no interrupt SUB,routine needed
   3936	017016	032711 	000001 			BIT	#TS.IEN,@R1	;WHICH SHOULD TURN THIS OFF
   3937	017022	001423 				BEQ	12$		;OKAY
   3938	017024					CK11SC	<CKEPC!CKEDID>,<Setting TS.DEI didn't clear TS.IEN>
	017024	104416 				TRAP	CKEPC!CKEDID!CKEMSG		;
   3939	017026	   123 	   145 	   164 		.ASCIZ	\Setting TS.DEI didn't clear TS.IEN\
	017031	   164 	   151 	   156
	017034	   147 	   040 	   124
	017037	   123 	   056 	   104
	017042	   105 	   111 	   040
	017045	   144 	   151 	   144
	017050	   156 	   047 	   164
	017053	   040 	   143 	   154
	017056	   145 	   141 	   162
	017061	   040 	   124 	   123
	017064	   056 	   111 	   105
	017067	   116 	   000
   3940						.EVEN
   3941	017072	032711 	000010 		12$:	BIT	#TS.RM,@R1	;WE SHOULD BE RESTRICTED
   3942	017076	001015 				BNE	13$		;WE ARE, FINE
   3943	017100					CK11SC	<CKEDID!CKEWRN>,<DTE20 is not restricted>
	017100	104614 				TRAP	CKEDID!CKEWRN!CKEMSG		;
   3944	017102	   104 	   124 	   105 		.ASCIZ	\DTE20 is not restricted\
	017105	   062 	   060 	   040
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 85-1
CHECK DTE20 HARDWARE

	017110	   151 	   163 	   040
	017113	   156 	   157 	   164
	017116	   040 	   162 	   145
	017121	   163 	   164 	   162
	017124	   151 	   143 	   164
	017127	   145 	   144 	   000
   3945	017132	012741 	000100 		13$:	MOV	#TS.RST,-(R1)	;REALLY INITIALIZE DTE20
   3946					.IIF DF,DTEDTO,MOV R3,DTEDTO	;SAVE PTR TO INTP VECTOR ADR [1(26)]
   3947									;DTEDTO GLOBAL CELL IS
   3948									; ALSO USED TO HOLD
   3949									; DEPOSIT/EXAMINE TIMEOUTS
   3950	017136	000207 				RTS	PC
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 86
CHECK DTE20 HARDWARE

   3952
   3953					.SBTTL		CHECK CD11 HARDWARE
   3954					;
   3955					;	JSR	PC,CKCD11
   3956					;
   3957	017140				CKCD11:
   3958	017140	032711 	010000 			BIT	#CD.OFL,(R1)		;OFF LINE ?
   3959	017144	001012 				BNE	10$			;BRANCH IF NOT
   3960	017146					CK11SC	0,<NOT READY>
	017146	104404 				TRAP	0!CKEMSG		;
   3961	017150	   011 	   103 	   104 		.ASCIZ	\	CD20 off line\
	017153	   062 	   060 	   040
	017156	   157 	   146 	   146
	017161	   040 	   154 	   151
	017164	   156 	   145 	   000
   3962						.EVEN
   3963	017170	000207 				RTS	PC
   3964	017172				10$:
   3965	017172	004537 	014052'			JSR	R5,CHKBIT		;CHECK HARDWARE BITS
   3966	017176	000102 				CD.PAK!CD.INE
   3967	017200					$CKINT	R4,R4,<CD.INE>,,,<CKCD20>
	017200	010401 			.IIF	NB,R4,	MOV	R4,R1			;LOAD ENABLE ADR
	017202	010402 			.IIF	NB,R4,	MOV	R4,R2			;LOAD INTERRUPT ADR
	017204	004537 	014446'			JSR	R5,CKINT		;GO CHECK INTERRUPTS
	017210	000100 				.WORD	CD.INE			;ENABLE BITS -  CD.INE
	017212	000000 				.WORD				;INTERRUPT BITS -
	017214	000000 			.IIF	B,,	.WORD	0			;NO SPECIAL CLEAR BITS
	017216	017222'			.IIF	NB,CKCD20,	.WORD	CKCD20			;subroutine to generate interrupt
   3968	017220	000207 				RTS	PC
   3969	017222				CKCD20:
   3970	017222	012711 	000400 			MOV	#CD.PWR,(R1)		;CLEAR THE CD
   3971	017226	012761 	177777 	000002 		MOV	#-1,2(R1)		;READ ONE COLUMN
   3972	017234	012761 	160000 	000004 		MOV	#160000,4(R1)		;INTO NON-EXISTENT MEM
   3973	017242	012714 	000061 			MOV	#CD.XAD!CD.GO,(R4)	;START IT GOING
   3974	017246	000207 				RTS	PC
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 87
CHECK CD11 HARDWARE

   3976
   3977					.SBTTL		CHECK LP11 HARDWARE
   3978					;
   3979					;	JSR	PC,CKLP11
   3980					;
   3981	017250				CKLP11:
   3982	017250	032714 	100000 			BIT	#LP.ERR,(R4)		;SEE IF DEV READY
   3983	017254	001420 				BEQ	11$				;BRANCH IF RDY
   3984	017256					CK11SC	<CKEMSG>,< LP11 #>
	017256	104404 				TRAP	CKEMSG!CKEMSG		;
   3985	017260	   040 	   114 	   120 		.ASCIZ	\ LP11 #\
	017263	   061 	   061 	   040
	017266	   043 	   000
   3986						.EVEN
   3987	017270	013700 	011330'			MOV	CKDEVN,R0			;DEV NUMBER
   3988	017274	004737 	020616'			JSR	PC,CKTOCT			;PRINT DEV NUM
   3989	017300					CK11SC	CKENCL,< Not ready.>
	017300	104444 				TRAP	CKENCL!CKEMSG		;
   3990	017302	   040 	   116 	   157 		.ASCIZ	\ Not ready.\
	017305	   164 	   040 	   162
	017310	   145 	   141 	   144
	017313	   171 	   056 	   000
   3991						.EVEN
   3992	017316	004537 	014052'		11$:	JSR	R5,CHKBIT			;CHECK HDW BITS
   3993	017322	000100 				LP.INE
   3994	017324					$CKINT	,R4,<LP.INE>,<LP.DNE>
	017324	010402 			.IIF	NB,R4,	MOV	R4,R2			;LOAD INTERRUPT ADR
	017326	004537 	014446'			JSR	R5,CKINT		;GO CHECK INTERRUPTS
	017332	000100 				.WORD	LP.INE			;ENABLE BITS -  LP.INE
	017334	000200 				.WORD	LP.DNE			;INTERRUPT BITS -  LP.DNE
	017336	000000 			.IIF	B,,	.WORD	0			;NO SPECIAL CLEAR BITS
	017340	000000 			.IIF	B,,	.WORD	0			;no interrupt SUB,routine needed
   3995	017342	000207 				RTS	PC
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 88
CHECK LP11 HARDWARE

   3997
   3998					.SBTTL		CHECK THE LP20 HARDWARE
   3999
   4000
   4001	017344	032714 	100000 		CKL211:	BIT	#L2.ERR,(R4)		; IS THE DEVICE OK ?
   4002	017350	001420 				BEQ	11$			;  YES
   4003	017352					CK11SC	CKEMSG,< LP20 # >
	017352	104404 				TRAP	CKEMSG!CKEMSG		;
   4004	017354	   040 	   114 	   120 		.ASCIZ	\ LP20 #\
	017357	   062 	   060 	   040
	017362	   043 	   000
   4005						.EVEN
   4006	017364	013700 	011330'			MOV	CKDEVN,R0		; GET DEVICE NUMBER
   4007	017370	004737 	020616'			JSR	PC,CKTOCT		; OUTPUT IT
   4008	017374					CK11SC	CKENCL,< Not ready.>
	017374	104444 				TRAP	CKENCL!CKEMSG		;
   4009	017376	   040 	   116 	   157 		.ASCIZ	\ Not ready.\
	017401	   164 	   040 	   162
	017404	   145 	   141 	   144
	017407	   171 	   056 	   000
   4010						.EVEN
   4011	017412	004537 	014052'		11$:	JSR	R5,CHKBIT		;CHECK SOME BITS
   4012	017416	000100 				LP.INE
   4013	017420					$CKINT	R4,R4,<L2.ENB>,,,<CKL220>
	017420	010401 			.IIF	NB,R4,	MOV	R4,R1			;LOAD ENABLE ADR
	017422	010402 			.IIF	NB,R4,	MOV	R4,R2			;LOAD INTERRUPT ADR
	017424	004537 	014446'			JSR	R5,CKINT		;GO CHECK INTERRUPTS
	017430	000100 				.WORD	L2.ENB			;ENABLE BITS -  L2.ENB
	017432	000000 				.WORD				;INTERRUPT BITS -
	017434	000000 			.IIF	B,,	.WORD	0			;NO SPECIAL CLEAR BITS
	017436	017442'			.IIF	NB,CKL220,	.WORD	CKL220			;subroutine to generate interrupt
   4014	017440	000207 				RTS	PC
   4015
   4016	017442				CKL220:
   4017	017442	052714 	000004 			BIS	#L2.TM,(R4)
   4018	017446	012764 	017470'	000004 		MOV	#TSTCHR,4(R4)		;ADDRESS OF TEST DATA
   4019	017454	012764 	177774 	000006 		MOV	#-4,6(R4)		;BYTE COUNT
   4020	017462	052714 	000001 			BIS	#1,(R4)			;SET GO
   4021	017466	000207 				RTS	PC			;SHOULD INTERRUPT
   4022
   4023	017470	   011 	   011 	   011 	TSTCHR:	.BYTE	11,11,11,11
	017473	   011
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 89
CHECK THE LP20 HARDWARE

   4025
   4026					.SBTTL		CHECK RH11 HARDWARE
   4027
   4028					;CALL	MOV	#<VECTOR ADR>,R3
   4029					;	MOV	#<HDW ADR>,R4
   4030					;	MOV	#<HDW ADR>,R1
   4031					;	JSR	PC,CKRH11
   4032					;
   4033	017474				CKRH11:;BIS	#1,CHKRP+4+0	;GROSS KLUDGE TO PREVENT CHKDEV FROM
   4034	017474	000207 				RTS	PC		; FINDING WHAT LOOKS LIKE AN RP.
   4035									; (THE DEVICE REGISTERS OVERLAP)
   4036
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 90
CHECK RH11 HARDWARE

   4038
   4039					.SBTTL		CHECK TC11 HARDWARE
   4040
   4041					;CALL	MOV	#<VECTOR ADR>,R3
   4042					;	MOV	#<HDW ADR>,R4
   4043					;	MOV	#<HDW ADR>,R1
   4044					;	JSR	PC,CKTC11
   4045					;
   4046	017476				CKTC11:
   4047	017476	004537 	014052'			JSR	R5,CHKBIT	;TEST FOLLOWING BITS
   4048	017502	000003 				TC.D17!TC.D16
   4049	017504	005721 				TST	(R1)+		;ADVANCE TO COMMAND REGISTER
   4050	017506	004537 	014052'			JSR	R5,CHKBIT		;TEST FOLLOWING BITS
   4051	017512	037560 				TC..MM!TC..DI!TC.REV!TC.US7!TC.INE!TC.A17!TC.A16
   4052	017514	005721 				TST	(R1)+		;ADVANCE TO WORD COUNT REG
   4053	017516	004537 	014052'			JSR	R5,CHKBIT	;TEST FOLLOWING BITS
   4054	017522	177777 				-1
   4055	017524	005721 				TST	(R1)+		;ADVANCE TO BUS ADDR REG
   4056	017526	004537 	014052'			JSR	R5,CHKBIT		;TEST THE FOLLOWING BITS
   4057	017532	177777 				-1
   4058	017534	005721 				TST	(R1)+		;ADVANCE TO DATA REGISTER
   4059	017536	004537 	014052'			JSR	R5,CHKBIT	;CHECK FOLLOWING BITS
   4060	017542	177777 				-1
   4061	017544	010401 				MOV	R4,R1		;SET UP ADR FOR INT CHK
   4062	017546	005721 				TST	(R1)+		;ADVANCE TO COMMAND REG
   4063	017550	010102 				MOV	R1,R2		;SET UP FOR INT CHK
   4064	017552					$CKINT	,,<TC.INE>,<TC.RDY>
	017552	004537 	014446'			JSR	R5,CKINT		;GO CHECK INTERRUPTS
	017556	000100 				.WORD	TC.INE			;ENABLE BITS -  TC.INE
	017560	000200 				.WORD	TC.RDY			;INTERRUPT BITS -  TC.RDY
	017562	000000 			.IIF	B,,	.WORD	0			;NO SPECIAL CLEAR BITS
	017564	000000 			.IIF	B,,	.WORD	0			;no interrupt SUB,routine needed
   4065	017566	000207 				RTS	PC
   4066
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 91
RX11 CHECKING

   4068						.SBTTL	RX11 CHECKING
   4069
   4070	017570				CKRX11:
   4071	017570	010346 				MOV	R3,-(SP)	;SAVE REGISTER
   4072	017572	004537 	014052'			JSR	R5,CHKBIT	;CHECK THE FOLLOWING BITS
   4073	017576	000100 				.WORD	100
   4074	017600					$CKINT	R4,R4,<100>,,,<CKRX20>
	017600	010401 			.IIF	NB,R4,	MOV	R4,R1			;LOAD ENABLE ADR
	017602	010402 			.IIF	NB,R4,	MOV	R4,R2			;LOAD INTERRUPT ADR
	017604	004537 	014446'			JSR	R5,CKINT		;GO CHECK INTERRUPTS
	017610	000100 				.WORD	100			;ENABLE BITS -  100
	017612	000000 				.WORD				;INTERRUPT BITS -
	017614	000000 			.IIF	B,,	.WORD	0			;NO SPECIAL CLEAR BITS
	017616	017624'			.IIF	NB,CKRX20,	.WORD	CKRX20			;subroutine to generate interrupt
   4075	017620	012603 				MOV	(SP)+,R3
   4076	017622	000207 				RTS	PC
   4077
   4078	017624				CKRX20:
   4079	017624	012714 	000016 			MOV	#RXRERR,(R4)
   4080	017630	052714 	000001 			BIS	#RXGO,(R4)
   4081	017634	000207 				RTS	PC
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 92
RX11 CHECKING

   4083
   4084					;HERE ON A UNEXPECTED BUS TRAP
   4085					;
   4086	017636				CKBUST:	CK11SC	<CKEDID!CKEPC>,<Trap from>
	017636	104416 				TRAP	CKEDID!CKEPC!CKEMSG		;
   4087	017640	   124 	   162 	   141 		.ASCIZ	\Trap from\
	017643	   160 	   040 	   146
	017646	   162 	   157 	   155
	017651	   000
   4088						.EVEN
   4089	017652	011600 				MOV	(SP),R0			;GET PC OF NEXT INST
   4090	017654	162700 	000002 			SUB	#2,R0			;MAKE PC WITHIN BAD INST
   4091	017660	004737 	020602'			JSR	PC,CKTBOC		;PRINT THE PC WHERE WE WERE DID IN
   4092	017664					CK11SC	<CKENCL!CKEFAT>,< to Adr 4>,<ILLEGAL BUS TRAP>,<S..NXM>
	017664	012737 	000001 	020506'	.IIF NB,S..NXM,	MOV	#S..NXM,CKSPCD	;VALUE TO DISPLAY IN R0,
	017672	104445 				TRAP	CKENCL!CKEFAT!CKEMSG		;ILLEGAL BUS TRAP
   4093	017674	   040 	   164 	   157 		.ASCIZ	\ to Adr 4\
	017677	   040 	   101 	   144
	017702	   162 	   040 	   064
	017705	   000
   4094						.EVEN
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 93
CK11SC ROUTINE

   4096					.SBTTL		CK11SC ROUTINE
   4097
   4098					;HERE ON ERROR IN CHK11
   4099					;
   4100					;AT HALT TIME R0 CONTAINS ADDRESS OF TRAP
   4101					;
   4102	017706				CHKERR:					;here on error trap
   4103	017706	013746 	000004 			MOV	NXMVEC,-(SP)		;save NXM vector [3(47)]
   4104	017712	012737 	017752'	000004 		MOV	#2$,NXMVEC		;where to go if MM doesn't exist [3(47)]
   4105	017720	042737 	000002 	011326'		BIC	#CHKMMO,CHKFLG		;clear indicator [3(47)]
   4106	017726	032737 	000001 	177572 		BIT	#1,MM.SR0		;see if memory management on [3(47)]
   4107	017734	001403 				BEQ	3$			;skip if not [3(47)]
   4108	017736	052737 	000002 	011326'		BIS	#CHKMMO,CHKFLG		;remember it [3(47)]
   4109	017744	005037 	177572 		3$:	CLR	MM.SR0			;turn it off [3(47)]
   4110	017750	000402 				BR	4$			;continue [3(47)]
   4111	017752	062706 	000004 		2$:	ADD	#4,SP			;adjust stack [3(47)]
   4112	017756	012637 	000004 		4$:	MOV	(SP)+,NXMVEC		;restore previous state [3(47)]
   4113	017762	010046 				MOV	R0,-(SP)
   4114	017764	016646 	000002 			MOV	2(SP),-(SP)		;GET ADDRESS OF
   4115	017770	162716 	000002 			SUB	#2,(SP)			; THE TRAP INSTRUCTION.
   4116	017774	032776 	000010 	000000 		BIT	#CKEDID,@(SP)		;PRINT DEVICE ID+REG MSG
   4117	020002	001405 				BEQ	11$			;BRANCH IF NOT
   4118	020004	052737 	000001 	011326'		BIS	#CKFERR,CHKFLG		;REMEMBER WE HAD AN ERROR
   4119	020012	004737 	014174'			JSR	PC,CKDIDT		;
   4120	020016	032776 	000002 	000000 	11$:	BIT	#CKEPC,@(SP)		;TYPE PC MESSAGE?
   4121	020024	001423 				BEQ	12$			;NO, SEE IF SOMETHING ELSE
   4122	020026					CK11SC	0,<	 Error detected at PC>	;
	020026	104404 				TRAP	0!CKEMSG		;
   4123	020030	   011 	   040 	   105 		.ASCIZ	\	 Error detected at PC\
	020033	   162 	   162 	   157
	020036	   162 	   040 	   144
	020041	   145 	   164 	   145
	020044	   143 	   164 	   145
	020047	   144 	   040 	   141
	020052	   164 	   040 	   120
	020055	   103 	   000
   4124						.EVEN
   4125	020060	052737 	000001 	011326'		BIS	#CKFERR,CHKFLG		;REMEMBER WE HAD AN ERROR
   4126	020066	011600 				MOV	(SP),R0			;GET ADDRESS
   4127	020070	004737 	020602'			JSR	PC,CKTBOC		;PRINT SPACE AND ADDRESS
   4128	020074	032776 	000004 	000000 	12$:	BIT	#CKEMSG,@(SP)		;PRINT INLINE ERROR MESSAGE
   4129	020102	001423 				BEQ	15$			;BRANCH IF NO
   4130	020104	032776 	000040 	000000 		BIT	#CKENCL,@(SP)		;SEE IF NO CRLF
   4131	020112	001002 				BNE	13$			;BRANCH IF NO CRLF
   4132	020114	004737 	020556'			JSR	PC,CKCRLF		;CR+LF
   4133	020120	032776 	000110 	000000 	13$:	BIT	#CKEDID!CKEGB,@(SP)	;IF DEV ID OR GD BD GIVE SPACES FOR FORMAT
   4134	020126	001403 				BEQ	14$			;
   4135	020130					CK11SC	CKENCL,<		>
	020130	104444 				TRAP	CKENCL!CKEMSG		;
   4136	020132	   011 	   011 	   000 		.ASCIZ	\		\
   4137						.EVEN
   4138	020136	016600 	000004 		14$:	MOV	4(SP),R0			;GET ADDRESS OF MESSAGE
   4139	020142	004737 	020530'			JSR	PC,CKTTXT		;RETURN R0 POINTS TO LOC
   4140										; FOLLOWING MESSAGE
   4141	020146	010066 	000004 			MOV	R0,4(SP)			;PUT RETURN PC ON STACK
   4142	020152	032776 	000020 	000000 	15$:	BIT	#CKEMSE,@(SP)		;PRINT MSG AT END
   4143	020160	001424 				BEQ	18$			;BRANCH IF NOT
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 93-1
CK11SC ROUTINE

   4144	020162	032776 	000040 	000000 		BIT	#CKENCL,@(SP)		;SEE IF NO CRLF
   4145	020170	001002 				BNE	16$			;BRANCH IF NO CRLF
   4146	020172	004737 	020556'			JSR	PC,CKCRLF		;CR+LF
   4147	020176	032776 	000110 	000000 	16$:	BIT	#CKEDID!CKEGB,@(SP)	;SEE IF CKEDID OR CKEGB SET, IF SO GIVE SPACES FOR FORMAT
   4148	020204	001403 				BEQ	17$			;BRANCH IF JUST TEXT
   4149	020206					CK11SC	CKENCL,<		>	;2 TAB
	020206	104444 				TRAP	CKENCL!CKEMSG		;
   4150	020210	   011 	   011 	   000 		.ASCIZ	\		\
   4151						.EVEN
   4152	020214	017600 	000004 		17$:	MOV	@4(SP),R0		;GET ADDRESS OF THE MESSAGE
   4153	020220	004737 	020530'			JSR	PC,CKTTXT		;PRINT THE MESSAGE
   4154	020224	062766 	000002 	000004 		ADD	#2,4(SP)			;MAKE RETURN PC
   4155	020232	032776 	000100 	000000 	18$:	BIT	#CKEGB,@(SP)		;SEE IF GOOD BAD PRINT OUT
   4156	020240	001450 				BEQ	CHKER0			;BRANCH IF NOT THIS
   4157	020242					CK11SC	0,<		Adr/Reg =>
	020242	104404 				TRAP	0!CKEMSG		;
   4158	020244	   011 	   011 	   101 		.ASCIZ	\		Adr/Reg =\
	020247	   144 	   162 	   057
	020252	   122 	   145 	   147
	020255	   040 	   075 	   000
   4159						.EVEN
   4160	020260	016600 	000010 			MOV	10(SP),R0		;GET ADR OFF THE STACK
   4161	020264				20$:					; [3(47)]
   4162	020264	004737 	020602'			JSR	PC,CKTBOC		;PRINT ADR
   4163	020270				25$:					;%
   4164	020270					CK11SC	<CKENCL>,<  GD =>
	020270	104444 				TRAP	CKENCL!CKEMSG		;
   4165	020272	   040 	   040 	   107 		.ASCIZ	\  GD =\
	020275	   104 	   040 	   075
	020300	   000
   4166						.EVEN
   4167	020302	016600 	000014 			MOV	14(SP),R0		;GET "GOOD"
   4168	020306	004737 	020602'			JSR	PC,CKTBOC		;PRINT IT
   4169	020312					CK11SC	<CKENCL>,<  BD =>
	020312	104444 				TRAP	CKENCL!CKEMSG		;
   4170	020314	   040 	   040 	   102 		.ASCIZ	\  BD =\
	020317	   104 	   040 	   075
	020322	   000
   4171						.EVEN
   4172	020324	016600 	000012 			MOV	12(SP),R0		;PRINT BAD STUFF
   4173	020330	004737 	020602'			JSR	PC,CKTBOC		;PRINT BAD
   4174	020334					CK11SC	CKENCL,<  XOR =>
	020334	104444 				TRAP	CKENCL!CKEMSG		;
   4175	020336	   040 	   040 	   130 		.ASCIZ	\  XOR =\
	020341	   117 	   122 	   040
	020344	   075 	   000
   4176						.EVEN
   4177	020346	016646 	000014 			MOV	14(SP),-(SP)		;GET GOOD
   4178	020352	074016 				XOR	R0,(SP)			;LEAVE ONLY QUESTIONABLE BITS
   4179	020354	012600 				MOV	(SP)+,R0			;PRINT THEM
   4180	020356	004737 	020602'			JSR	PC,CKTBOC		;
   4181	020362	032776 	000001 	000000 	CHKER0:	BIT	#CKEFAT,@(SP)		;FATAL ERROR - HALT REQUIRED?
   4182	020370	001423 				BEQ	CHKER2			;BRANCH IN NOT FATAL
   4183	020372	052737 	000001 	011326'		BIS	#CKFERR,CHKFLG		;REMEMBER WE HAD AN ERROR
   4184	020400					CK11SC	0,<		Fatal Error>
	020400	104404 				TRAP	0!CKEMSG		;
   4185	020402	   011 	   011 	   106 		.ASCIZ	\		Fatal Error\
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 93-2
CK11SC ROUTINE

	020405	   141 	   164 	   141
	020410	   154 	   040 	   105
	020413	   162 	   162 	   157
	020416	   162 	   000
   4186						.EVEN
   4187	020420	013700 	020506'			MOV	CKSPCD,R0		;PUT STOPCODE IN R0, IF 0 ITS NOT A STOPCODE TO BE DISPLAYED
   4188	020424	001401 				BEQ	CHKER3			;IF 0
   4189	020426	000000 				HALT				;STOP CODE IN R0, PRESS CONTINUE
   4190										; GIVES ADR WE CAME FROM
   4191	020430	012600 			CHKER3:	MOV	(SP)+,R0			;ADDRESS OF TRAP IN R0
   4192	020432	000000 				HALT				;FATAL ERROR - R0 CONTAINS ERROR ADDRESS
   4193	020434	000137 	003000'			JMP	BEGIN			;IF CONTINUE DO PROGRAM AGAIN.
   4194	020440	032736 	000100 		CHKER2:	BIT	#CKEGB,@(SP)+		;SEE IF THERE WAS A GD-BD PRINT
   4195	020444	001002 				BNE	CHKER1			;IF YES, CLEAR STACK
   4196	020446	012600 				MOV	(SP)+,R0
   4197	020450	000406 				BR	CHKER9			;go exit [3(47)]
   4198	020452	012600 			CHKER1:	MOV	(SP)+,R0
   4199	020454	012666 	000004 			MOV	(SP)+,4(SP)		;PC
   4200	020460	012666 	000004 			MOV	(SP)+,4(SP)		;PS
   4201	020464	005726 				TST	(SP)+			;CLEAN THE STACK
   4202	020466				CHKER9:					;here to exit CHKERR [3(47)]
   4203	020466	032737 	000002 	011326'		BIT	#CHKMMO,CHKFLG		;was memory management on? [3(47)]
   4204	020474	001402 				BEQ	10$			;no, skip [3(47)]
   4205	020476	005237 	177572 			INC	MM.SR0			;yes, turn it back on [3(47)]
   4206	020502				10$:					;dismiss trap [3(47)]
   4207	020502	000002 				RTI				;return
   4208
   4209	020504	000000 			CHKX:	.WORD	0			;extension for address [3(47)]
   4210	020506	000000 			CKSPCD:	.WORD	0			;CONTAINS STOPCODE ON FATAL ERROR
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 94
CK11SC ROUTINE

   4212		000000 				CKDA=	0			;DEVICE ADDRESS OFFSET
   4213		000002 				CKDV=	2			;DEVICE VECTOR OFFSET
   4214		000004 				CKPI=	4			;DEVICE PI LEVEL OFFSET
   4215		000006 				CKFLG=	6			;DEVICE FLAGS OFFSET
   4216		000010 				CKSPC=	10			;SPECIAL CHAR OFFSET
   4217	020510				CHKCHR:	.BLKW	1			;DEVICE ADDRESS
   4218	020512					.BLKW	1			;DEVICE VECTOR
   4219	020514					.BLKW	1			;DEVICE PI LEVEL
   4220	020516					.BLKW	1			;DEVICE FLAGS
   4221										; B0-B5 = # OF DQ11 SPECIAL CHAR
   4222										; B15 = INTERRUPTED ON SYNC
   4223	020520					.BLKW	4			;SPECIAL CHARACTERS
   4224
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 95
CK11SC ROUTINE

   4226
   4227	020530					.CKTTS
	020530	010146 				MOV	R1,-(SP)
	020532	112001 			10$:	MOVB	(R0)+,R1		;GET THE NEXT CHARACTER
	020534	001403 				BEQ	20$			;BRANCH IF END (NULL)
	020536	004737 	020666'			JSR	PC,CKTCHR		;TYPE CHAR
	020542	000773 				BR	10$			;GET NEXT CHAR
	020544	005200 			20$:	INC	R0			;
	020546	042700 	000001 			BIC	#B0,R0			;POINT TO EVEN LOC
	020552	012601 				MOV	(SP)+,R1
	020554	000207 				RTS	PC			;RETURN TO CALLER
	020556	004037 	020574'		CKCRLF:	JSR	R0,CKTSTR
	020562	   015 	   012 	   000 		.ASCIZ	<15><12>
	020566	000207 				RTS	PC
	020570	004737 	020556'		CKTCRL:	JSR	PC,CKCRLF		;FIRST TYPE A CR/LF
	020574	004737 	020530'		CKTSTR:	JSR	PC,CKTTXT		;GO TYPE STRING
	020600	000200 				RTS	R0
	020602	010146 				MOV	R1,-(SP)
	020604	012701 	000040 			MOV	#040,R1
	020610	004737 	020666'			JSR	PC,CKTCHR
	020614	000401 				BR	CKTOC1
	020616	010146 				MOV	R1,-(SP)
	020620	010046 				MOV	R0,-(SP)
	020622	004737 	020632'			JSR	PC,CKTOC2
	020626	012600 				MOV	(SP)+,R0
	020630	000750 				BR	CKTRR1
	020632	010046 				MOV	R0,-(SP)
	020634	006000 				ROR	R0
	020636	006000 				ROR	R0
	020640	006000 				ROR	R0
	020642	042700 	160000 			BIC	#160000,R0
	020646	001402 				BEQ	20$
	020650	004737 	020632'			JSR	PC,CKTOC2
	020654	012601 				MOV	(SP)+,R1
	020656	042701 	177770 			BIC	#^C7,R1
	020662	052701 	000060 			BIS	#60,R1
	020666	120127 	000040 		CKTCHR:	CMPB	R1,#40			;DOES THIS NEED FILLER ?
	020672	103015 				BHIS	20$
	020674	120127 	000011 			CMPB	R1,#11			;IS CHAR A TAB (11)
	020700	001005 				BNE	10$			;BRANCH IF NOT A TAB
	020702	004037 	020574'			JSR	R0,CKTSTR		;GIVE SPACES FOR IT
	020706	   040 	   040 	   040 		.BYTE	40,40,40,0		;SUBSTITUTE SPACES FOR TAB
	020711	   000
	020712	000207 				RTS	PC
	020714	004737 	020720'		10$:	JSR	PC,12$			;TYPE CHAR FIRST THEN PAD IT WITH 4 NULLS
	020720	004737 	020726'		12$:	JSR	PC,20$
	020724	005001 				CLR	R1
	020726	110137 	177566 		20$:	MOVB	R1,CTOCHR		;TYPE CHAR
	020732	105737 	177564 		30$:	TSTB	CTOSTS			;TEST FOR STILL BUSY
	020736	100375 				BPL	30$
	020740	000207 				RTS	PC
	020742	005737 	177562 		CKGCHR:	TST	CTICHR			;CLEAR BUFFER
	020746	105737 	177560 		10$:	TSTB	CTISTS			;WAIT FOR CHAR
	020752	100375 				BPL	10$			;
	020754	113701 	177562 			MOVB	CTICHR,R1		;
	020760	042701 	177600 			BIC	#^C177,R1		;KEEP ONLY INTERESTING BITS
	020764	000740 				BR	CKTCHR			;TYPE IT BACK TO HIM
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 96
CK11SC ROUTINE

   4229	020766	   115 	   145 	   155 	CKMG01:	.ASCIZ	\Mem Err\
	020771	   040 	   105 	   162
	020774	   162 	   000
   4230	020776	   102 	   151 	   164 	CKMG02:	.ASCIZ	\Bit did not Clear\
	021001	   040 	   144 	   151
	021004	   144 	   040 	   156
	021007	   157 	   164 	   040
	021012	   103 	   154 	   145
	021015	   141 	   162 	   000
   4231	021020	   102 	   151 	   164 	CKMG03:	.ASCIZ	\Bit did not set\
	021023	   040 	   144 	   151
	021026	   144 	   040 	   156
	021031	   157 	   164 	   040
	021034	   163 	   145 	   164
	021037	   000
   4232	021040	   111 	   156 	   164 	CKMG04:	.ASCIZ	\Interrupt did not Occur\
	021043	   145 	   162 	   162
	021046	   165 	   160 	   164
	021051	   040 	   144 	   151
	021054	   144 	   040 	   156
	021057	   157 	   164 	   040
	021062	   117 	   143 	   143
	021065	   165 	   162 	   000
   4233	021070	   111 	   156 	   164 	CKMG05:	.ASCIZ	\Interrupted to Wrong Vector\
	021073	   145 	   162 	   162
	021076	   165 	   160 	   164
	021101	   145 	   144 	   040
	021104	   164 	   157 	   040
	021107	   127 	   162 	   157
	021112	   156 	   147 	   040
	021115	   126 	   145 	   143
	021120	   164 	   157 	   162
	021123	   000
   4234	021124	   156 	   157 	   164 	CKMG06:	.ASCIZ	\not found\
	021127	   040 	   146 	   157
	021132	   165 	   156 	   144
	021135	   000
   4235	021136	   151 	   156 	   164 	CKMG07:	.ASCIZ	\interrupted when not enabled\
	021141	   145 	   162 	   162
	021144	   165 	   160 	   164
	021147	   145 	   144 	   040
	021152	   167 	   150 	   145
	021155	   156 	   040 	   156
	021160	   157 	   164 	   040
	021163	   145 	   156 	   141
	021166	   142 	   154 	   145
	021171	   144 	   000
   4236
   4237						.EVEN
   4238	021174				CKBLK:	.BLKB	400			;Buffer for DH11 and DZ11 tests
   4239		021174'			CKDZTR=CKBLK				;address of receive expected character table for DZ11
   4240		021214'			CKDZTX=CKDZTR+20				;address of next char to transmit
   4241		021234'			CKDZTE=CKDZTX+20				;address of error table
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 97
CK11SC ROUTINE

   4243
   4244
   4245					.LIST ME
   4246
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 98
END STATEMENT

   4248						.SBTTL	END STATEMENT
   4249		001170'				.END	SAVE
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 98-1
Symbol table

ACFLAG  000057R  	B8    = 000400   	CKALP$= 012320R  	CKINTG  015062R  	CKTOC1  020620R
AC.ENA= 000200   	B9    = 001000   	CKAL2$= 012320R  	CKINTS  011554R  	CKTOC2  020632R
ALLRXF  005072R  	CDD   = 000020   	CKARD$= 012320R  	CKINT1  014466R  	CKTRR0  020626R
ALLRX1  005102R  	CD.CHK= 040000   	CKARH$= 012320R  	CKINT2  014472R  	CKTRR1  020552R
ALTDXF  000062R  	CD.DAT= 177162   	CKARX$= 012320R  	CKINT3  014500R  	CKTSTR  020574R
ATCBLK  001102R  	CD.DTE= 004000   	CKATC$= 012320R  	CKINT6  014760R  	CKTTXT  020530R
BC.HDS= ****** GX	CD.DTL= 002000   	CKATE$= 012320R  	CKINT7  015044R  	CKZZZX= 000015
BEGIN = 003000R  	CD.EOF= 020000   	CKBLK   021174R  	CKKL$$= 016424R  	CK.CAL  011512R
BITTBL= ****** GX	CD.ERR= 100000   	CKBUST  017636R  	CKKL11  016424R  	CLKENB= 000100
BIT0  = 000001   	CD.GO = 000001   	CKCADD= 000034   	CKLP$$= 017250R  	CLKLVL= 000006
BIT1  = 000002   	CD.HEM= 000004   	CKCDEV  010604R  	CKLP11  017250R  	CLKVEC= 000100
BIT10 = 002000   	CD.INE= 000100   	CKCD$$= 017140R  	CKL2$$= 017344R  	CLKWRD= 177546
BIT11 = 004000   	CD.LVL= 000006   	CKCD11  017140R  	CKL211  017344R  	CMDCLN= 000024
BIT12 = 010000   	CD.NXM= 001000   	CKCD20  017222R  	CKL220  017442R  	CMDCLR  000040R
BIT13 = 020000   	CD.OFL= 010000   	CKCEND  011324R  	CKMG01  020766R  	CMDONE  001574R
BIT14 = 040000   	CD.ONL= 000010   	CKCLK9  013012R  	CKMG02  020776R  	CNUPE = 000002
BIT15 = 100000   	CD.PAK= 000002   	CKCOR   012116R  	CKMG03  021020R  	CO.INE= 000100
BIT2  = 000004   	CD.PWR= 000400   	CKCRLF  020556R  	CKMG04  021040R  	CO..MM= 000004
BIT3  = 000010   	CD.RDY= 000200   	CKDA  = 000000   	CKMG05  021070R  	CPUNUM= 000002
BIT4  = 000020   	CD.STS= 177160   	CKDEVN  011330R  	CKMG06  021124R  	CS.EXP= 177670
BIT5  = 000040   	CD.VEC= 000230   	CKDHPL  016320R  	CKMG07  021136R  	CTICHR= 177562
BIT6  = 000100   	CD.XAD= 000060   	CKDH$$= 015274R  	CKMPAR  012322R  	CTILVL= 000004
BIT7  = 000200   	CD0DAT= 177162   	CKDH1A  015472R  	CKNCD1  011352R  	CTISTS= 177560
BIT8  = 000400   	CD0STS= 177160   	CKDH1B  015532R  	CKNCI1  011336R  	CTIVEC= 000060
BIT9  = 001000   	CHKBIT  014052R  	CKDH1C  016044R  	CKNCO1  011344R  	CTOCHR= 177566
BPARER= 000020   	CHKBRD  011774R  	CKDH1D  016306R  	CKNDH1  011357R  	CTOLVL= 000004
BP.CLN= 074000   	CHKCHR  020510R  	CKDH1E  015602R  	CKNDL1  011415R  	CTOSTS= 177564
BP.CSP= 000170   	CHKCLK  012566R  	CKDH1F  016344R  	CKNDM1  011424R  	CTOVEC= 000064
BP.ERR= 100000   	CHKCOR  012066R  	CKDH11  015274R  	CKNKL1  011364R  	CTYBFL= 000120
BP.LD0= 000002   	CHKDEV  013202R  	CKDIDT  014174R  	CKNKW1  011442R  	CTYBUF  000230R
BP.LD1= 000004   	CHKDV1  013450R  	CKDL$$= 016360R  	CKNLP1  011451R  	CTYLUN= 000001
BP.RP4= 000200   	CHKD01  014010R  	CKDL11  016360R  	CKNL21  011456R  	CTYPTR= ****** GX
BP.SWR= 000001   	CHKD02  013754R  	CKDMCS  016570R  	CKNMM1  011463R  	DCOMST= 000001
BP.UNT= 003400   	CHKERR  017706R  	CKDM$$= 016474R  	CKNRD1  011377R  	DEFLAG  000061R
BR0   = 000000   	CHKER0  020362R  	CKDM11  016474R  	CKNRH1  011473R  	DEP   = 010000
BR1   = 000040   	CHKER1  020452R  	CKDNAM  011332R  	CKNRX1  011505R  	DEVCHK  001656R
BR2   = 000100   	CHKER2  020440R  	CKDONE  003000R  	CKNTC1  011500R  	DEVMNT  002002R
BR3   = 000140   	CHKER3  020430R  	CKDV  = 000002   	CKNTE1  011434R  	DEVNAM  000042R
BR4   = 000200   	CHKER9  020466R  	CKDZTE= 021234R  	CKPI  = 000004   	DEVOK   001734R
BR5   = 000240   	CHKFLD  015272R  	CKDZTR= 021174R  	CKPOPJ  012320R  	DEVUNT  000044R
BR6   = 000300   	CHKFLG  011326R  	CKDZTX= 021214R  	CKRD$$= 016360R  	DEX   = 000400
BR7   = 000340   	CHKFLV  015270R  	CKEDID= 000010   	CKRD11  016360R  	DEXDON= 000004
B.DM11= 170500   	CHKINL  014330R  	CKEFAT= 000001   	CKRH$$= 017474R  	DEXWD1= 174406
B0    = 000001   	CHKINT  015102R  	CKEGB = 000100   	CKRH11  017474R  	DEXWD2= 174404
B1    = 000002   	CHKITL= 000012   	CKEMSE= 000020   	CKRX$$= 017570R  	DEXWD3= 174402
B10   = 002000   	CHKMMO= 000002   	CKEMSG= 000004   	CKRX11  017570R  	DFUNC = 000200
B11   = 004000   	CHKTIM  013010R  	CKENCL= 000040   	CKRX20  017624R  	DF.DMG= 000004
B12   = 010000   	CHKX    020504R  	CKEPC = 000002   	CKSPC = 000010   	DF.DMN= 000007
B13   = 020000   	CHK.11  011514RG 	CKEWRN= 000200   	CKSPCD  020506R  	DF.DOR= 000001
B14   = 040000   	CHK.96  013156RG 	CKFERR= 000001   	CKTBOC  020602R  	DF.EHG= 000010
B15   = 100000   	CHNPNT= 000001   	CKFIDT= 100000   	CKTCHR  020666R  	DF.EHM= 000011
B2    = 000004   	CI.INE= 000100   	CKFLAG  015100R  	CKTCRL  020570R  	DF.EMG= 000005
B3    = 000010   	CKACD$= 012320R  	CKFLG = 000006   	CKTC$$= 017476R  	DF.EMN= 000006
B4    = 000020   	CKADH$= 012320R  	CKGCHR  020742R  	CKTC11  017476R  	DF.KLR= 000012
B5    = 000040   	CKADL$= 012320R  	CKINT   014446R  	CKTE$$= 016710R  	DF.KLW= 000013
B6    = 000100   	CKADM$= 012320R  	CKINTE  015054R  	CKTE11  016710R  	DF.KLX= 000014
B7    = 000200   	CKAKL$= 012320R  	CKINTF  015070R  	CKTOCT  020616R  	DF.OFF= 000002
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 98-2
Symbol table

DF.ON = 000003   	DL.CAR= 010000   	DRVBOT= 000004   	ERR11S= 000002   	IE.ACT= 177771
DF.PDP= 000016   	DL.CTS= 020000   	DRVBTP= 000016   	EV.PF = ****** GX	IE.ADP= 177636
DF.PEX= 000015   	DL.DIE= 000040   	DRVMSZ= 000010   	EXFLAG  000050R  	IE.ALN= 177736
DGUTS = 000000   	DL.DSC= 100000   	DRVNAM= 000000   	EXIT    005750R  	IE.AST= 177660
DHBASE= 160020   	DL.DTR= 000002   	DRVSET= 000002   	EXITA   001526R  	IE.BAD= 177777
DHDATA  016354R  	DL.ERR= 100000   	DRVSIZ= 000020   	EXIT00  005736R  	IE.BBE= 177710
DHEXPA= 160020   	DL.LVL= 000004   	DRVTAB  007060R  	EX.AC1= 000001   	IE.BDI= 177714
DHEXPZ= 000020   	DL.OVR= 040000   	DRVTBZ= 000060   	EX.ENA= 000200   	IE.BDR= 177716
DHRFER= 020000   	DL.RGO= 004000   	DRVWRT= 000006   	EX.FCO= 000004   	IE.BDV= 177711
DHROVR= 040000   	DL.RIE= 000100   	DR.DTE= 000011   	E.FLOG= 000004   	IE.BHD= 177700
DHSTAB  001124R  	DL.RNG= 040000   	DSEND = 000004   	E.FQIO= 000001   	IE.BLK= 177754
DHTBL = ****** GX	DL.ROK= 000200   	DSKADR  000004R  	E.FTMO= 000002   	IE.BNM= 177712
DHXMII  016356R  	DL.RTS= 000004   	DSKLUN= 000002   	FIDBLK  001076R  	IE.BTF= 177675
DH.AEE= 100000   	DL.XIE= 000100   	DSKSIZ  000010R  	FILCHK  002252R  	IE.BTP= 177725
DH.BAR= 000012   	DL.XOK= 000200   	DS04  = 004000   	FILDMO  002332R  	IE.BVR= 177701
DH.BCR= 000010   	DL..FE= 020000   	DS05  = 002000   	FILDMX  002464R  	IE.BYT= 177755
DH.BRK= 000014   	DL..MM= 000004   	DS06  = 001000   	FILDM1  002350R  	IE.CKP= 177766
DH.CAR= 000006   	DL..PE= 010000   	DTCL11= 002000   	FILDM2  002414R  	IE.CKS= 177742
DH.CL5= 000000   	DL..RC= 000377   	DTECHK  003770R  	FILDM3  002436R  	IE.CLO= 177732
DH.CL6= 000001   	DL..RE= 000001   	DTECMD= 000451   	FILDM4  002454R  	IE.CON= 177752
DH.CL7= 000002   	DL..XC= 000377   	DTEFLG= 000444   	FILFND  002060R  	IE.DAA= 177770
DH.CL8= 000003   	DL.2RC= 002000   	DTEF11= 000450   	FILMNT  006750R  	IE.DAO= 177763
DH.CNX= 000400   	DL.2XM= 000010   	DTEMSG  004304R  	FILOK   002312R  	IE.DFU= 177750
DH.DOV= 040000   	DMBASE= 170500   	DTEMTD= 000455   	FILQIO  006764R  	IE.DNA= 177771
DH.LPR= 000004   	DMEXPA= 170500   	DTEMTI= 000456   	FILSET  002322R  	IE.DNR= 177775
DH.LVL= 000005   	DMFLAG  000052R  	DTEXPA= 174400   	FINDEV  006672R  	IE.DUN= 177767
DH.NRC= 000002   	DMOERR  002426R  	DTEXPZ= 000040   	FLOATD= 160000   	IE.DUP= 177707
DH.NXM= 002000   	DMTBL = ****** GX	DTINOF= 000010   	FLOATV= 000300   	IE.EBX= 177776
DH.PEN= 000020   	DMTBLK  001116R  	DTINON= 000040   	FNDACP  006730R  	IE.EOF= 177766
DH.RIE= 000100   	DM.ALI= 000017   	DTPMSG  004330R  	FORPRO= 000020   	IE.EOT= 177702
DH.SIE= 010000   	DM.BSY= 000020   	DTPMS1  004346R  	FTASRT= 000001   	IE.EOV= 177765
DH.SSR= 000016   	DM.CAR= 000100   	DTRSMD= 000010   	FTECHO= 000000   	IE.EXP= 177676
DH.TIE= 020000   	DM.CTS= 000040   	DTSTAT= 000034   	FTETR = 000000   	IE.FEX= 177717
DH.VDP= 100000   	DM.DNE= 000200   	DTVECA= 000774   	FTGLOM= 000000   	IE.FHE= 177705
DH..FE= 020000   	DM.DTR= 000002   	DT11DB= 004000   	FT.CHK= 000001   	IE.FOP= 177713
DH..HD= 040000   	DM.ENB= 000040   	DUPE  = 000020   	FT.DDT= 000000   	IE.HFU= 177744
DH..MC= 004000   	DM.IEN= 000100   	DURE  = 000004   	FT.D75= 000000   	IE.HWR= 177772
DH..MM= 001000   	DM.INI= 002000   	DV.LOG= ****** GX	FT.HLP= 000001   	IE.IDU= 177644
DH..OP= 000040   	DM.LE = 000001   	DXWRD1= 002000   	GETNAM  006002R  	IE.IEF= 177637
DH..PE= 010000   	DM.LVL= 000004   	D.CCTY= ****** GX	GETNB   005760R  	IE.IFC= 177776
DH..RI= 000200   	DM.RNG= 000200   	D.CKLN= ****** GX	GETNUM  006046R  	IE.IFU= 177747
DH..SI= 040000   	DM.RTS= 000004   	D1011 = 000040   	GTIMBF  000020R  	IE.ILL= 177726
DH..TI= 100000   	DM.SCN= 004000   	EBSEL = 000100   	G.TICP= 000016   	IE.ILU= 177640
DH.2SB= 000004   	DM.SR = 000020   	EBUSPC= 000020   	G.TICT= 000014   	IE.INS= 177776
DIAG1 = 174430   	DM.ST = 000010   	EBUSPS= 000004   	G.TIDA= 000004   	IE.IPR= 177641
DIAG2 = 174432   	DM.STP= 000400   	EDONES= 040000   	G.TIHR= 000006   	IE.ISQ= 177703
DIAG3 = 174436   	DM..MM= 001000   	EF.PR1= ****** GX	G.TIMI= 000010   	IE.ITI= 177643
DIKL10= 000010   	DNSERR  001642R  	EF.PR2= ****** GX	G.TIMO= 000002   	IE.ITS= 177770
DLDADR= 175610   	DON10C= 040000   	EF.QIO= 000001   	G.TISC= 000012   	IE.LCK= 177745
DLDSIZ= 000010   	DON10S= 100000   	EF.RKP= ****** GX	G.TIYR= 000000   	IE.LNL= 177646
DLRBUF= 000002   	DON11C= 000100   	EF.TMO= 000002   	HBCERR  005002R  	IE.MBK= 177721
DLRSTS= 000000   	DON11S= 000200   	EPTR  = 000000   	HIBYTE= 177400   	IE.MOD= 177753
DLTBL = ****** GX	DPS4  = 040000   	ERRINT= 000004   	HOMBUF  000064R  	IE.NBF= 177731
DLXBUF= 000006   	DRESET= 000100   	ERRMSG  001447R     002	HOMFE0= 000061   	IE.NBK= 177727
DLXSTS= 000004   	DRVADR  000002R  	ERR10C= 010000   	HOMFE1= 000062   	IE.NFI= 177704
DLYCNT= 174400   	DRVAD1= 000012   	ERR10S= 020000   	HOMNAM= 000000   	IE.NLN= 177733
DL.BRK= 000001   	DRVAD2= 000014   	ERR11C= 000001   	IE.ABO= 177761   	IE.NNC= 177674
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 98-3
Symbol table

IE.NOD= 177751   	IO.EOF= 003000   	IO.SYN= 003040   	L2.DB = 000377   	MNTSY2  004514R
IE.NSF= 177746   	IO.ESA= 002500   	IO.TRM= 002410   	L2.DEL= 002000   	MODTBL  001532R
IE.OFL= 177677   	IO.EXT= 011400   	IO.UNL= 000042   	L2.DH = 002000   	MODTLN= 000006
IE.ONP= 177773   	IO.FDX= 003020   	IO.WAT= 013400   	L2.DL = 000010   	MOFLAG  000051R
IE.OVR= 177756   	IO.FNA= 004400   	IO.WLB= 000400   	L2.DNR= 000100   	MONTAB  006534R
IE.PRI= 177760   	IO.HDX= 003010   	IO.WLS= 000410   	L2.DON= 000200   	MOUNTD  002050R
IE.RAC= 177724   	IO.HIS= 015000   	IO.WLV= 000500   	L2.DR = 010000   	MPE11 = 001000
IE.RAT= 177723   	IO.INL= 002400   	IO.WVB= 011000   	L2.DTE= 000002   	MP.ENB= 000001
IE.RBG= 177730   	IO.ITI= 017000   	IO.XMT= 014400   	L2.ENB= 000100   	MP.ERR= 100000
IE.RCN= 177722   	IO.KIL= 000012   	IO.XNA= 014410   	L2.ERE= 001000   	MP.LVL= 000007
IE.RER= 177740   	IO.LED= 012000   	IQ.Q  = 000002   	L2.ERR= 100000   	MP.REG= 172100
IE.RNM= 177715   	IO.LOV= 001010   	IQ.X  = 000001   	L2.GER= 000001   	MP.VEC= 000114
IE.RSU= 177757   	IO.LTK= 000050   	IS.BV = 000005   	L2.GO = 000001   	MP.WWP= 000004
IE.SDP= 177635   	IO.MCS= 013400   	IS.CLR= 000000   	L2.INI= 000400   	NONDEV  014016R
IE.SNC= 177735   	IO.MDA= 016000   	IS.CR = 006401   	L2.INT= 004000   	NOTRXF  005030R
IE.SPC= 177772   	IO.MDI= 014400   	IS.ESC= 015401   	L2.LDP= 010000   	NULSTP= 000040
IE.SQC= 177734   	IO.MDO= 015400   	IS.PND= 000000   	L2.LPE= 000040   	NUPE  = 000002
IE.SRE= 177762   	IO.MLO= 006000   	IS.RDD= 000002   	L2.LVL= 000004   	NXMVEC= 000004
IE.STK= 177706   	IO.MOD= 003000   	IS.SET= 000002   	L2.MPE= 000020   	OB0   = 000001
IE.ULN= 177773   	IO.MSO= 005000   	IS.SUC= 000001   	L2.MST= 000004   	OB1   = 000002
IE.UPN= 177777   	IO.RAL= 001010   	KBS0  = ****** GX	L2.ONL= 004000   	OB10  = 000400
IE.VER= 177774   	IO.RAT= 013000   	KBS1  = ****** GX	L2.OVF= 004000   	OB11  = 001000
IE.WAC= 177743   	IO.RBC= 003000   	KLANXM  005614R  	L2.PCM= 007777   	OB12  = 002000
IE.WAT= 177741   	IO.RCI= 015000   	KLAREM  005476R  	L2.PEN= 000002   	OB13  = 004000
IE.WER= 177737   	IO.RCV= 015000   	KLAUSR  005466R  	L2.PI = 000400   	OB14  = 010000
IE.WLK= 177764   	IO.RDB= 001200   	KLINIT  001120R  	L2.PNR= 020000   	OB15  = 020000
IE.2DV= 177720   	IO.RDN= 000022   	KLNPTR= ****** GX	L2.POL= 000200   	OB16  = 040000
IFLOP = 100000   	IO.REL= 013400   	KLPWRF= 000010   	L2.PZE= 040000   	OB17  = 100000
INTROF= 000010   	IO.RHD= 001010   	KL.CFM= ****** GX	L2.RDB= 007777   	OB2   = 000004
INTRON= 000040   	IO.RLB= 001000   	KL.DEF= ****** GX	L2.RPB= 010000   	OB3   = 000010
INTSON= 000001   	IO.RLV= 001100   	KL.LCA= ****** GX	L2.RPE= 000010   	OB4   = 000020
INT10S= 000400   	IO.RNA= 005400   	KL.LRM= ****** GX	L2.SPR= 040000   	OB5   = 000040
INT11C= 002000   	IO.RNC= 001004   	KL.LVB= ****** GX	L2.TB0= 000400   	OB6   = 000100
INT11S= 004000   	IO.RNE= 001020   	KL.LVL= 000004   	L2.TB1= 001000   	OB7   = 000200
IO.ACE= 007400   	IO.RTC= 003400   	KL.VBN= ****** GX	L2.TB2= 002000   	PASS  = 000002
IO.ACR= 006400   	IO.RTI= 016400   	KPAR0 = 172340   	L2.TM = 000004   	PDP11 = 000040
IO.ACW= 007000   	IO.RTK= 000060   	KW.INE= 000100   	L2.TRN= 001000   	PERCLR= 001000
IO.ADS= 014000   	IO.RVB= 010400   	KW.TIC= 000200   	L2.UCD= 020000   	PHYLIM  011334R
IO.APC= 014000   	IO.RWD= 002400   	K.LRBA= ****** GX	L2.VD = 100000   	PHYS  = 100000
IO.APV= 014010   	IO.RWU= 002540   	LKS   = 177546   	L2.VEC= 000754   	PIDENT= 000000
IO.ATT= 001400   	IO.R1C= 002400   	LOAD11= 000004   	L20ADR= 000004   	PRI7  = 000340
IO.CCI= 014000   	IO.SAO= 004000   	LOGBUF  001070R  	L20BCT= 000006   	PRNRUN  005602R
IO.CCT= 002460   	IO.SCS= 013000   	LOWCOR  000064R  	L20BUF= 000014   	PROPNT= 000021
IO.CLN= 003400   	IO.SDI= 013000   	LP.DAT= 177516   	L20CHK= 000017   	PROTBL= ****** GX
IO.CON= 015400   	IO.SDO= 012400   	LP.DNE= 000200   	L20COL= 000015   	PRTOFF= 004000
IO.CRC= 001020   	IO.SEC= 002520   	LP.ERR= 100000   	L20CRA= 000000   	PR0   = 000000
IO.CRE= 012000   	IO.SEM= 002440   	LP.INE= 000100   	L20CRB= 000002   	PR1   = 000040
IO.CTI= 015400   	IO.SHT= 002410   	LP.LVL= 000004   	L20PCT= 000010   	PR2   = 000100
IO.CTL= 016400   	IO.SLO= 005400   	LP.STS= 177514   	L20PDA= 000016   	PR3   = 000140
IO.DAC= 010000   	IO.SMO= 002560   	LP.VEC= 000200   	L20RAM= 000012   	PR4   = 000200
IO.DCI= 014400   	IO.SNM= 002450   	LP0DAT= 177516   	L20STS= 175400   	PR5   = 000240
IO.DCT= 002470   	IO.SPB= 002420   	LP0STS= 177514   	L21STS= 175420   	PR6   = 000300
IO.DEL= 012400   	IO.SPF= 002440   	LP1DAT= 177522   	MEMSIZ  000014R  	PR7   = 000340
IO.DET= 002000   	IO.SSO= 004400   	LP1STS= 177520   	MM.SR0= 177572   	PS    = 177776
IO.DIS= 016000   	IO.SST= 002430   	L2.A16= 000020   	MNTBLK  001110R  	PSWW1 = 000005
IO.DTI= 016000   	IO.STC= 002500   	L2.A17= 000040   	MNTSY   004402R  	PSWW10= 000014
IO.ENA= 006000   	IO.STP= 016400   	L2.BCM= 007777   	MNTSY1  004424R  	PSWW11= 000015
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 98-4
Symbol table

PSWW12= 000016   	RPFUNC= 000076   	SETDL   003162R  	TCUNIT= 003400   	TE.DG1= 000030
PSWW13= 000017   	RPGO  = 000001   	SETDM   003320R  	TCWC  = 177344   	TE.DG2= 000032
PSWW2 = 000006   	RPMCPE= 020000   	SETFIL  002060R  	TCWERR  010600R  	TE.DG3= 000036
PSWW3 = 000007   	RPMOL = 010000   	SETRXF  005012R  	TCWNXT  010540R  	TE.DYC= 000000
PSWW4 = 000010   	RPNOOP= 000000   	SF.FX = ****** GX	TCWRIT= 000014   	TE.EAD= 000022
PSWW5 = 000011   	RPOF  = 176732   	SOMRXF  005124R  	TCWRT   010406R  	TE.EBC= 000016
PSWW6 = 000012   	RPPGM = 001000   	SPSAVE  000000RG 	TC.A16= 000020   	TE.EDT= 000026
PSWW7 = 000013   	RPPRST= 000020   	STAT  = 174434   	TC.A17= 000040   	TE.LVL= 000006
PS.PUS= 030000   	RPRDY = 000200   	STATUS= 000022   	TC.BAR= 177346   	TE.NNN= 000004
PS.REG= 004000   	RPREAD= 000070   	STKLEN= 000200   	TC.CLK= 000100   	TE.STW= 000034
PS.USR= 140000   	RPSET   007632R  	STSW0 = ****** GX	TC.CMD= 177342   	TE.VEC= 000774
PUDADR  000040R  	RPSN  = 176730   	STSW1 = ****** GX	TC.DAT= 177350   	TE.XAD= 000020
PUDIDX  000045R  	RPTRE = 040000   	SWR   = 177570   	TC.DT0= 000020   	TE.XA1= 000010
PULSE = 000020   	RPUNIT= 000007   	SWSLLT= 100000   	TC.DT1= 000010   	TE.XA2= 000012
QEFLAG  000056R  	RPWC  = 176702   	SXBTHM= 105755   	TC.DT2= 000004   	TE.XBC= 000014
QIOSTS  001064R  	RPWNXT  010116R  	SYMNTD  004534R  	TC.D16= 000001   	TE.XDT= 000024
QSIZE = 000023   	RPWRIT= 000060   	SYMNT1  004544R  	TC.D17= 000002   	TE.XW1= 000006
Q.DA  = ****** GX	RPWRT   010036R  	SYNERR  001562R  	TC.ERR= 100000   	TE.XW2= 000004
Q.SZ  = ****** GX	RP4CHK  003530R  	SYSAVE  002476R  	TC.ILO= 010000   	TE.XW3= 000002
RADIX   000016R  	RP6CHK  003574R  	SYSAV1  002530R  	TC.INE= 000100   	TOBM  = 000004
RAMIS0= 010000   	RQSKLR  005130R  	SYSMSG  004366R  	TC.LVL= 000006   	TOIP  = 000002
RD.LVL= 000004   	RQSTSK  005624R  	SYSTRT  004240R  	TC.MMT= 000040   	TOIT  = 000001
REDHM1  004650R  	RXBAD1  007206R  	S.DI  = ****** GX	TC.MTE= 020000   	TO10  = 000200
REDHOM  004616R  	RXBAD2  007206R  	S.FW  = ****** GX	TC.NXM= 000400   	TO10AD= 174420
REDSY   003346R  	RXBBLK  007210R  	S..AMC= 000000   	TC.PAR= 040000   	TO10BC= 174414
RESTOR  002734RG 	RXBBLX  007350R  	S..BDT= 000011   	TC.RDA= 000006   	TO10BM= 000001
RFMAD0= 100000   	RXBMSZ  007402R  	S..CHK= 000012   	TC.RDY= 000200   	TO10DB= 000400
RFMAD1= 040000   	RXBNXT  007370R  	S..CNK= 000003   	TC.REV= 004000   	TO10DN= 100000
RFMAD2= 020000   	RXBNX1  007374R  	S..CTY= 000005   	TC.RMT= 000002   	TO10DT= 174424
RFMAD3= 010000   	RXBOOT  007150R  	S..DCP= 000013   	TC.SAT= 000000   	TO10ER= 020000
RHFLAG  000053R  	RXCS  = 177170   	S..DL1= 000002   	TC.SST= 000010   	TO11  = 000100
RHMERR  005046R  	RXDB  = 177172   	S..DTE= 000002   	TC.STS= 177340   	TO11AD= 174422
RH.LVL= 000000   	RXDONE= 000040   	S..ILS= 000004   	TC.UPS= 000200   	TO11BC= 174416
RM    = 000010   	RXEMPT= 000002   	S..KW1= 000007   	TC.US0= 000000   	TO11BM= 020000
RNFLAG  000054R  	RXERR = 100000   	S..MEM= 000006   	TC.US1= 000400   	TO11DB= 004000
RNRERR  005060R  	RXFILL= 000000   	S..NCN= 000010   	TC.US2= 001000   	TO11DN= 000200
RPATA = 100000   	RXFUNC= 000016   	S..NXM= 000001   	TC.US3= 001400   	TO11DT= 174426
RPBA  = 176704   	RXGO  = 000001   	TCBA  = 177346   	TC.US4= 002000   	TO11ER= 000002
RPBAD1= 007720R  	RXINIT= 040000   	TCBAD1= 010204R  	TC.US5= 002400   	TRPVEC= 000034
RPBAD2= 007726R  	RXREAD= 000006   	TCBAD2= 010204R  	TC.US6= 003000   	TSTCHR  017470R
RPBMSZ  010004R  	RXRERR= 000016   	TCBMSZ  010350R  	TC.US7= 003400   	TS.CET= 000001
RPBNXT  007744R  	RXSET   007140R  	TCBNXT  010322R  	TC.VEC= 000214   	TS.DEI= 000010
RPBOOT  007702R  	RXSETX  007144R  	TCBOOT  010200R  	TC.WCR= 177344   	TS.DEP= 010000
RPCS1 = 176700   	RXTREQ= 000200   	TCCM  = 177342   	TC.WRA= 000016   	TS.EBM= 020000
RPCS2 = 176710   	RXUNIT= 000020   	TCDT  = 177350   	TC.WTM= 000012   	TS.EEE= 000040
RPDA  = 176706   	RXWBLK  007472R  	TCENDZ= 100000   	TC..BM= 002000   	TS.EET= 000002
RPDC  = 176734   	RXWNXT  007452R  	TCERR = 100000   	TC..DI= 010000   	TS.EEX= 000400
RPDPR = 000400   	RXWRIT= 000004   	TCFUNC= 000016   	TC..DM= 001000   	TS.EIS= 002000
RPDS  = 176712   	RXWRT   007420R  	TCGO  = 000001   	TC..EZ= 100000   	TS.ENT= 000100
RPDT  = 176726   	RX.LVL= 000006   	TCRDY = 000200   	TC..MM= 020000   	TS.EPE= 000020
RPDT04= 000020   	R$$11M= 000001   	TCREAD= 000004   	TC..RD= 000004   	TS.ETD= 000200
RPDT06= 000022   	R$$20F= 000001   	TCREV = 004000   	TC..SE= 004000   	TS.IEN= 000001
RPDVA = 004000   	SAVE    001170RG 	TCRNUM= 000002   	TC..WR= 000014   	TS.IFB= 100000
RPECCI= 004000   	SAVLMT  001164RG 	TCSATM= 000000   	TENAD1= 174410   	TS.MPE= 001000
RPERR = 040000   	SCD   = 000040   	TCSET   010174R  	TENAD2= 174412   	TS.PEX= 100000
RPFLAG  000055R  	SETCTY  003032R  	TCST  = 177340   	TE.BAS= 174400   	TS.POF= 004000
RPFM22= 010000   	SETDH   003262R  	TCSTOP= 000010   	TE.BNX= 000040   	TS.RES= 004000
SAVE -- MCR FUNCTION 'SAV' FOR 	MACRO V05.04  Tuesday 10-May-88 15:25  Page 98-5
Symbol table

TS.RM = 000010   	TYPTAB  006156R  	$DSW  = ****** GX	.IRLTC= 014000   	.PRSTA= ****** GX
TS.RST= 000100   	TYPTXT  006302R  	$UNIT = ****** GX	.KLIWD= ****** GX	.PUDBA= ****** GX
TS.TBM= 000001   	TYPWRN  006362R  	$$    = 000037   	.KLNMD= ****** GX	.PUDEA= ****** GX
TS.XDN= 000004   	UNASG1= 000032   	$$MSG = 000000   	.KLNSW= ****** GX	.RCRM1= 147000
TS.XEC= 010000   	UNASG2= 000033   	$$$   = 001414R     002	.LCRDL= 052000   	.RCRM2= 146000
TS.XEE= 004000   	UNASG3= 000034   	$$$ADR= 007120R  	.LCRDR= 051000   	.RCRM3= 145000
TS.XER= 020000   	UNASG4= 000035   	$$$ARG= 000005   	.LCRM1= 057000   	.RCRM4= 144000
TS.XNT= 100000   	UNASG5= 000036   	$$$OST= 000020   	.LCRM2= 056000   	.RCSPF= 141000
TS.XTS= 040000   	UNASG6= 000037   	$$$T1 = 000013   	.LCRM3= 055000   	.RDJ14= 134000
TS.ZST= 040000   	U.ACP = ****** GX	$$$T2 = 000001   	.LCRM4= 054000   	.RDJ71= 135000
TTYEND= ****** GX	U.DACP= ****** GX	.BRCLK= 005000   	.LCRM5= 053000   	.RDMAB= 133000
TTYEXP= ****** GX	U.DN  = ****** GX	.BTPRM= ****** GX	.LDAR = 077000   	.RHSN = ****** GX
TT.CRW= ****** GX	U.LBH = ****** GX	.CECLK= 004000   	.LDBRL= 043000   	.RPADR= ****** GX
TT.CTY= ****** GX	U.LBN = ****** GX	.CLRMR= 006000   	.LDBRR= 042000   	.SECLK= 003000
TT.OUT= ****** GX	U.RP  = ****** GX	.CLRUN= 010000   	.LDCK1= 046000   	.SERFG= ****** GX
TT.RIP= ****** GX	U.SZ  = ****** GX	.COMEF= ****** GX	.LDCK2= 047000   	.SETMR= 007000
TYPBUF  000064R  	U.UN  = ****** GX	.CONBT= 012000   	.LDDIS= 045000   	.SETRN= 011000
TYPCR   006276R  	U.VA  = ****** GX	.CPUSN= ****** GX	.LDRJD= 064000   	.SSCLK= 002000
TYPDAT  006376R  	VRCHK1= 000067   	.CSHRG= 164000   	.LDRJV= 063000   	.STDTA= ****** GX
TYPDEC  006514R  	VRS   = 000022   	.DATE3= ****** GX	.LDRM1= 060000   	.STDTZ= ****** GX
TYPDEV  006320R  	WBFLAG  000046R  	.DQPBA= ****** GX	.LDRM2= 061000   	.STPCL= 000000
TYPDON  006204R  	WEFLAG  000060R  	.DRLTC= 015000   	.LDRM3= 062000   	.STRCL= 001000
TYPERR  006354R  	WEP   = 000010   	.DSACF= 066000   	.LDSEL= 044000   	.VERNO= ****** GX
TYPMAX= 000013   	WRNMSG  001472R     002	.DSIOJ= 065000   	.MEMRS= 076000   	.WRMBX= 071000
TYPMSG  006112R  	WRTERR  010164R  	.EIOJA= 067000   	.NOERR= ****** GX	..DTP2= ****** GX
TYPMS1  006132R  	WSFLAG  000047R  	.FEMOD= ****** GX	.PCAB1= 150000   	..ENB0= ****** GX
TYPNUM  006614R  	WTSAVE  002670R  	.FESTB= ****** GX	.PCAB2= 151000   	..FSTD= ****** GX
TYPSAV  006270R  	ZSTOP = 040000   	.GFNR = 102000   	.PCAB3= 152000   	..STIN= ****** GX
TYPSDV  006314R  	$BTMSK= ****** GX	.HRDWR= ****** GX	.PCAB4= 153000   	...GBL= 000000
TYPSTR  006366R  	$DIV  = ****** GX	.INICL= 070000   	.PRDTE= ****** GX

. ABS.	000000    000	(RW,I,GBL,ABS,OVR)
      	021574    001	(RW,I,LCL,REL,CON)
TEXT  	001514    002	(RW,I,LCL,REL,CON)
Errors detected:  0

*** Assembler statistics


Work  file  reads: 0
Work  file writes: 0
Size of work file: 16528 Words  ( 65 Pages)
Size of core pool: 17636 Words  ( 67 Pages)
Operating  system: RSX-11M/PLUS

Elapsed time: 00:03:24.11
[52,10]SAVE,[52,20]SAVE/-SP/CR=[52,30]RSXDC,SAVE
SAVE       CREATED BY  MACRO  ON 10-MAY-88 AT 15:27	PAGE 1

SYMBOL CROSS REFERENCE                                  CREF   04.00 

SYMBOL	VALUE		REFERENCES

ACFLAG	  000057 R	#23-377     26-667    *26-690    
AC.ENA	= 000200	#21-247     26-642    
ALLRXF	  005072 R	 37-1347   #37-1382   
ALLRX1	  005102 R	 37-1376   #37-1384   
ALTDXF	  000062 R	#23-381    *30-936    *36-1257    36-1279   *36-1296   
ATCBLK	  001102 R	#24-412     26-638    
BC.HDS	= ******  GX	 38-1477   
BEGIN 	= 003000 R	 55-2749    93-4193   
BITTBL	= ******  GX	 31-966    
BIT0  	= 000001	#21-161     21-201     21-222     21-240     22-266     22-281     22-286     22-317     24-441    
                         24-443     24-444     24-445     24-446     24-447     24-448     24-449     24-450     24-451    
BIT1  	= 000002	#21-161     21-204     21-217     22-260     22-261     22-262     22-263     22-264     22-265    
                         22-276     22-277     22-278     22-279     22-280     22-286     22-311     22-312     22-313    
                         22-314     22-315     22-316     24-441     24-442     24-443     24-444     24-445     24-446    
                         24-447     24-448     24-449     24-450     24-451    
BIT10 	= 002000	#21-161     21-213     22-309     22-330     24-438     24-439     24-440     24-441     24-442    
                         24-443     24-444     24-445     24-446     24-447     24-448     24-449     24-450     24-451    
                         24-452     24-453    
BIT11 	= 004000	#21-161     21-212     21-228     22-274     22-299     22-308     22-329    
BIT12 	= 010000	#21-161     21-212     21-227     22-290     22-298    
BIT13 	= 020000	#21-161     21-212     21-227     22-273    
BIT14 	= 040000	#21-161     21-212     21-226     22-256     22-272     22-289    
BIT15 	= 100000	#21-161     21-211     21-226     22-255     22-288     22-305     22-307    
BIT2  	= 000004	#21-161     21-207     21-216     21-241     22-260     22-276     22-286     22-311     24-441    
                         24-442     24-443     24-444    
BIT3  	= 000010	#21-161     21-215     22-260     22-276     22-311     22-332     22-333    
BIT4  	= 000020	#21-161     21-215     22-259     22-276     32-1035   
BIT5  	= 000040	#21-161     21-215     22-258     22-276     22-331    
BIT6  	= 000100	#21-161     21-215     24-438     24-439     24-440     24-441     24-442     24-443     24-444    
                         24-445     24-446     24-447     24-448     24-449     24-450     24-451     24-452     24-453    
BIT7  	= 000200	#21-161     21-214     21-242     21-247     22-257     22-275     22-310    
BIT8  	= 000400	#21-161     21-213     22-292     22-309    
BIT9  	= 001000	#21-161     21-213     22-291     22-309    
BPARER	= 000020	#21-161    
BP.CLN	= 074000	#21-212     31-960    
BP.CSP	= 000170	#21-215     31-946    
BP.ERR	= 100000	#21-211    
BP.LD0	= 000002	#21-217     28-803     30-904     34-1201    38-1406    39-1504    39-1506   
BP.LD1	= 000004	#21-216     30-904     34-1201    34-1202    38-1406    38-1417    39-1504    39-1506   
BP.RP4	= 000200	#21-214     43-1919   
BP.SWR	= 000001	#21-222     30-902     39-1500   
BP.UNT	= 003400	#21-213     31-955    
BR0   	= 000000	#3-154     
BR1   	= 000040	#3-155     
BR2   	= 000100	#3-156     
BR3   	= 000140	#3-157     
BR4   	= 000200	#3-158     
BR5   	= 000240	#3-159     
BR6   	= 000300	#3-160     
BR7   	= 000340	#3-161      63-2961    63-2974    63-2981    70-3198    73-3326    74-3390    76-3476    77-3512   
                         77-3526    79-3578    80-3651    81-3724   
B.DM11	= 170500	#8-312     
SAVE       CREATED BY  MACRO  ON 10-MAY-88 AT 15:27	PAGE 2

SYMBOL CROSS REFERENCE                                  CREF   04.00 

SYMBOL	VALUE		REFERENCES

B0    	= 000001	#3-118      3-136      4-188      6-248      6-250      7-265      7-283      7-294      7-304     
                         8-321      8-324      15-498     16-587     16-588     16-591     56-2757    61-2925    95-4227   
B1    	= 000002	#3-119      3-137      4-187      6-249      6-250      7-266      7-283      7-304      8-321     
                         8-325      15-497     15-518     15-520     15-522     15-524     16-586     56-2758    61-2926   
B10   	= 002000	#3-128      3-146      4-179      6-219      7-272      8-314      15-488     15-509     15-510    
                         15-511     15-512     16-576     81-3715   
B11   	= 004000	#3-129      3-147      4-178      6-220      7-273      8-313      15-487     15-504     16-548    
                         16-574     16-575    
B12   	= 010000	#3-130      3-148      4-177      6-221      6-239      7-274      7-284      15-486     15-503    
                         16-547     16-573     81-3715    81-3787   
B13   	= 020000	#3-131      3-149      4-176      6-222      6-235      6-238      7-275      7-285      15-485    
                         15-502     16-557     16-572     81-3715    81-3787   
B14   	= 040000	#3-132      3-150      4-175      6-223      6-234      6-237      6-243      7-276      7-286     
                         15-484     16-556     16-571     81-3787   
B15   	= 100000	#3-133      3-151      4-174      6-224      6-236      6-242      7-277      7-287      11-377    
                         15-483     15-501     16-549     16-555     16-570     61-2927    81-3787   
B2    	= 000004	#3-120      3-138      4-186      5-209      6-246      7-267      7-283      7-295      7-304     
                         8-321      15-496     15-519     15-520     15-523     15-524     16-585     56-2759   
B3    	= 000010	#3-121      3-139      4-185      7-268      7-283      7-304      8-321      8-329      15-495    
                         15-521     15-522     15-523     15-524     16-583     16-584     56-2760   
B4    	= 000020	#3-122      3-140      4-184      6-245      7-283      7-304      8-320      8-330      15-494    
                         15-516     16-582     56-2761   
B5    	= 000040	#3-123      3-141      4-184      6-244      7-269      7-283      7-304      8-319      8-331     
                         15-493     15-515     16-581     56-2763   
B6    	= 000100	#3-124      3-142      4-183      5-204      5-208      6-215      7-270      7-283      7-296     
                         7-304      8-318      8-332      10-365     10-366     11-379     15-492     15-514     16-565    
                         16-580     56-2764    81-3715   
B7    	= 000200	#3-125      3-143      4-182      6-216      7-271      7-283      7-297      7-304      8-317     
                         8-333      10-367     11-378     15-491     15-513     16-579     56-2765   
B8    	= 000400	#3-126      3-144      4-181      6-217      8-316      15-490     15-506     15-508     15-510    
                         15-512     16-578     81-3715   
B9    	= 001000	#3-127      3-145      4-180      6-218      8-315      15-489     15-507     15-508     15-511    
                         15-512     16-577     81-3715   
CDD   	= 000020	#21-161    
CD.CHK	= 040000	#4-175     
CD.DAT	= 177162	#4-190     
CD.DTE	= 004000	#4-178     
CD.DTL	= 002000	#4-179     
CD.EOF	= 020000	#4-176     
CD.ERR	= 100000	#4-174     
CD.GO 	= 000001	#4-188      86-3973   
CD.HEM	= 000004	#4-186     
CD.INE	= 000100	#4-183      86-3966    86-3967   
CD.LVL	= 000006	#4-166      60-2908    60-2908   
CD.NXM	= 001000	#4-180     
CD.OFL	= 010000	#4-177      86-3958   
CD.ONL	= 000010	#4-185     
CD.PAK	= 000002	#4-187      86-3966   
CD.PWR	= 000400	#4-181      86-3970   
CD.RDY	= 000200	#4-182     
CD.STS	= 177160	#4-172      60-2908   
CD.VEC	= 000230	#4-167      60-2908   
SAVE       CREATED BY  MACRO  ON 10-MAY-88 AT 15:27	PAGE 3

SYMBOL CROSS REFERENCE                                  CREF   04.00 

SYMBOL	VALUE		REFERENCES

CD.XAD	= 000060	#4-184      86-3973   
CD0DAT	= 177162	#4-170      4-190     
CD0STS	= 177160	#4-169      4-170      4-172     
CHKBIT	  014052 R	 64-3011    65-3027    67-3107   #74-3389    81-3664    81-3668    81-3673    81-3681    81-3688   
                         81-3691    82-3842    82-3846    83-3864    83-3868    84-3884    85-3925    86-3965    87-3992   
                         88-4011    90-4047    90-4050    90-4053    90-4056    90-4059    91-4072   
CHKBRD	  011774 R	#65-3021   
CHKCHR	  020510 R	*64-3006   *64-3008   *65-3023   *65-3025   *67-3100   *67-3102   *67-3103    67-3130    67-3132   
                        *69-3160   *69-3161    70-3207    70-3209   *73-3317   *73-3321   *73-3322   *73-3325    73-3333   
                         73-3334    73-3336    73-3338    73-3341    75-3452    76-3481    76-3483   *76-3486   *77-3509   
                        *78-3548   *78-3549    78-3550   *78-3552    78-3553    78-3556   *78-3558    78-3563    78-3565   
                        *81-3695   *81-3697    81-3725    81-3731   #94-4217   
CHKCLK	  012566 R	#69-3157   
CHKCOR	  012066 R	#65-3036   
CHKDEV	  013202 R	 60-2904    60-2906    60-2907    60-2908    60-2909    60-2910    60-2911    60-2912    60-2913   
                         60-2914    60-2915    60-2916   #72-3247   
CHKDV1	  013450 R	 73-3298   #73-3303   
CHKD01	  014010 R	 73-3361    73-3366   #73-3369   
CHKD02	  013754 R	 73-3287   #73-3354   
CHKERR	  017706 R	 63-2985   #93-4102   
CHKER0	  020362 R	 93-4156   #93-4181   
CHKER1	  020452 R	 93-4195   #93-4198   
CHKER2	  020440 R	 93-4182   #93-4194   
CHKER3	  020430 R	 93-4188   #93-4191   
CHKER9	  020466 R	 93-4197   #93-4202   
CHKFLD	  015272 R	*63-2964   *72-3255    72-3256    73-3316    73-3367   *73-3368   #80-3655   
CHKFLG	  011326 R	#61-2924   *63-2965   *64-2992   *65-3021   *69-3158   *73-3320    75-3428   *75-3457   *93-4105   
                        *93-4108   *93-4118   *93-4125   *93-4183    93-4203   
CHKFLV	  015270 R	*63-2963    72-3249    73-3310    73-3362   *73-3363   #80-3654   
CHKINL	  014330 R	 64-3014    70-3201   #76-3466    82-3849    83-3871   
CHKINT	  015102 R	 63-2973   #80-3612    80-3615   
CHKITL	= 000012	 63-2980   #80-3615   
CHKMMO	= 000002	#61-2926    93-4105    93-4108    93-4203   
CHKTIM	  013010 R	*69-3168    69-3173    69-3175   *69-3189   #69-3194   
CHKX  	  020504 R	#93-4209   
CHK.11	  011514 RG	 30-906     30-906    #63-2960   
CHK.96	  013156 RG	 70-3208   #71-3216   
CHNPNT	= 000001	#21-161    
CI.INE	= 000100	#5-204      65-3028   
CKACD$	= 012320 R	#60-2908    60-2908   
CKACD1	= ******	 60-2908    60-2908   
CKADH$	= 012320 R	#60-2914    60-2914   
CKADH1	= ******	 60-2914    60-2914   
CKADL$	= 012320 R	#60-2907    60-2907   
CKADL1	= ******	 60-2907    60-2907   
CKADM$	= 012320 R	#60-2915    60-2915   
CKADM1	= ******	 60-2915    60-2915   
CKAKL$	= 012320 R	#60-2904    60-2904   
CKAKL1	= ******	 60-2904    60-2904   
CKALP$	= 012320 R	#60-2909    60-2909   
CKALP1	= ******	 60-2909    60-2909   
CKAL2$	= 012320 R	#60-2916    60-2916   
SAVE       CREATED BY  MACRO  ON 10-MAY-88 AT 15:27	PAGE 4

SYMBOL CROSS REFERENCE                                  CREF   04.00 

SYMBOL	VALUE		REFERENCES

CKAL21	= ******	 60-2916    60-2916   
CKAMEM	= ******	 65-3043   
CKAMF1	= ******	 68-3143   
CKARD$	= 012320 R	#60-2906    60-2906   
CKARD1	= ******	 60-2906    60-2906   
CKARH$	= 012320 R	#60-2912    60-2912   
CKARH1	= ******	 60-2912    60-2912   
CKARX$	= 012320 R	#60-2910    60-2910   
CKARX1	= ******	 60-2910    60-2910   
CKATC$	= 012320 R	#60-2911    60-2911   
CKATC1	= ******	 60-2911    60-2911   
CKATE$	= 012320 R	#60-2913    60-2913   
CKATE1	= ******	 60-2913    60-2913   
CKBLK 	  021174 R	 81-3702    81-3717   #96-4238    96-4239   
CKBUST	  017636 R	 64-2997    69-3165    72-3259    73-3280    73-3329   #92-4086   
CKCADD	= 000034	#60-2905    73-3369   
CKCDEV	  010604 R	#59-2896    60-2905    71-3217   
CKCD$$	= 017140 R	#60-2908    60-2908   
CKCD11	  017140 R	 60-2908    60-2908    60-2908   #86-3957   
CKCD20	  017222 R	 86-3967   #86-3969   
CKCEND	  011324 R	#60-2917   
CKCLK9	  013012 R	 69-3176   #70-3198   
CKCOR 	  012116 R	#66-3055    66-3060   
CKCRLF	  020556 R	 75-3430    93-4132    93-4146   #95-4227    95-4227   
CKDA  	= 000000	*64-3006   *65-3023   *67-3100   *69-3160   *73-3321    75-3452   #94-4212   
CKDEVN	  011330 R	#61-2928   *64-3010   *67-3098   *69-3162   *73-3306   *73-3347    73-3348    75-3447    87-3987   
                         88-4006   
CKDHPL	  016320 R	 81-3740    81-3747    81-3754    81-3763    81-3785   #81-3820   
CKDH$$	= 015274 R	#60-2914    60-2914   
CKDH1A	  015472 R	#81-3699   
CKDH1B	  015532 R	#81-3710    81-3818   
CKDH1C	  016044 R	 81-3759   #81-3765   
CKDH1D	  016306 R	 81-3735    81-3741    81-3748    81-3755    81-3764    81-3779    81-3786    81-3798    81-3809   
                        #81-3815   
CKDH1E	  015602 R	#81-3719    81-3757    81-3812   
CKDH1F	  016344 R	 81-3817   #81-3827   
CKDH11	  015274 R	 60-2914    60-2914    60-2914   #81-3663   
CKDIDT	  014174 R	#75-3428    93-4119   
CKDL$$	= 016360 R	#60-2907    60-2907   
CKDL11	  016360 R	 60-2907    60-2907    60-2907   #82-3841   
CKDMCS	  016570 R	 84-3887    84-3894   #84-3897   
CKDM$$	= 016474 R	#60-2915    60-2915   
CKDM11	  016474 R	 60-2915    60-2915    60-2915   #84-3884   
CKDNAM	  011332 R	#61-2929   *64-3009   *65-3026   *67-3097   *69-3157   *72-3247    73-3295    75-3442   
CKDONE	  003000 R	 30-903     30-905    #30-908     55-2748    71-3226   
CKDV  	= 000002	*64-3008   *65-3025   *67-3102    67-3130    67-3132   *69-3161   *73-3322    73-3333    76-3481   
                         76-3483    78-3550   *78-3552    78-3553    78-3556   *78-3558   *81-3695   *81-3697    81-3725   
                         81-3731   #94-4213   
CKDZTE	= 021234 R	#96-4241   
CKDZTR	= 021174 R	#96-4239    96-4240   
CKDZTX	= 021214 R	#96-4240    96-4241   
CKEDID	= 000010	#56-2760    67-3120    67-3120    67-3120    67-3127    67-3127    67-3127    67-3133    67-3133   
SAVE       CREATED BY  MACRO  ON 10-MAY-88 AT 15:27	PAGE 5

SYMBOL CROSS REFERENCE                                  CREF   04.00 

SYMBOL	VALUE		REFERENCES

                         67-3133    68-3148    68-3148    68-3148    69-3178    69-3178    69-3178    69-3181    69-3181   
                         69-3181    69-3184    69-3184    69-3184    73-3339    73-3339    73-3339    73-3373    73-3373   
                         73-3373    74-3401    74-3401    74-3401    74-3411    74-3411    74-3411    74-3418    74-3418   
                         74-3418    76-3479    76-3479    76-3479    76-3484    76-3484    76-3484    77-3538    77-3538   
                         77-3538    78-3557    78-3557    78-3557    78-3566    78-3566    78-3566    79-3581    79-3581   
                         79-3581    81-3732    81-3732    81-3732    81-3737    81-3737    81-3737    81-3744    81-3744   
                         81-3744    81-3751    81-3751    81-3751    81-3760    81-3760    81-3760    81-3776    81-3776   
                         81-3776    81-3782    81-3782    81-3782    81-3795    81-3795    81-3795    81-3806    81-3806   
                         81-3806    84-3891    84-3891    84-3891    84-3903    84-3903    84-3903    84-3914    84-3914   
                         84-3914    85-3932    85-3932    85-3932    85-3938    85-3938    85-3938    85-3943    85-3943   
                         85-3943    92-4086    92-4086    92-4086    93-4116    93-4133    93-4147   
CKEFAT	= 000001	#56-2757    66-3080    66-3080    66-3080    66-3090    66-3090    66-3090    69-3178    69-3178   
                         69-3178    69-3181    69-3181    69-3181    69-3184    69-3184    69-3184    70-3210    70-3210   
                         70-3210    92-4092    92-4092    92-4092    93-4181   
CKEGB 	= 000100	#56-2764    66-3080    66-3080    66-3080    66-3090    66-3090    66-3090    67-3133    67-3133   
                         67-3133    73-3339    73-3339    73-3339    74-3401    74-3401    74-3401    74-3411    74-3411   
                         74-3411    74-3418    74-3418    74-3418    76-3484    76-3484    76-3484    78-3557    78-3557   
                         78-3557    78-3566    78-3566    78-3566    81-3732    81-3732    81-3732    81-3776    81-3776   
                         81-3776    81-3795    81-3795    81-3795    81-3806    81-3806    81-3806    84-3914    84-3914   
                         84-3914    93-4133    93-4147    93-4155    93-4194   
CKEMSE	= 000020	#56-2761    65-3030    65-3030    66-3080    66-3080    66-3080    66-3080    66-3080    66-3090   
                         66-3090    66-3090    66-3090    66-3090    67-3120    67-3120    67-3120    67-3120    67-3120   
                         67-3127    67-3127    67-3127    67-3127    67-3127    67-3133    67-3133    67-3133    67-3133   
                         67-3133    68-3148    68-3148    68-3148    68-3148    68-3148    69-3178    69-3178    69-3181   
                         69-3181    69-3184    69-3184    70-3210    70-3210    73-3288    73-3288    73-3299    73-3299   
                         73-3339    73-3339    73-3373    73-3373    74-3401    74-3401    74-3401    74-3401    74-3401   
                         74-3411    74-3411    74-3411    74-3411    74-3411    74-3418    74-3418    74-3418    74-3418   
                         74-3418    75-3435    75-3435    75-3439    75-3439    75-3444    75-3444    75-3449    75-3449   
                         75-3454    75-3454    76-3479    76-3479    76-3479    76-3479    76-3479    76-3484    76-3484   
                         76-3484    76-3484    76-3484    77-3538    77-3538    77-3538    77-3538    77-3538    78-3557   
                         78-3557    78-3557    78-3557    78-3557    78-3566    78-3566    79-3581    79-3581    79-3581   
                         79-3581    79-3581    81-3732    81-3732    81-3737    81-3737    81-3744    81-3744    81-3751   
                         81-3751    81-3760    81-3760    81-3776    81-3776    81-3782    81-3782    81-3795    81-3795   
                         81-3806    81-3806    81-3820    81-3820    84-3891    84-3891    84-3903    84-3903    84-3914   
                         84-3914    85-3932    85-3932    85-3938    85-3938    85-3943    85-3943    86-3960    86-3960   
                         87-3984    87-3984    87-3989    87-3989    88-4003    88-4003    88-4008    88-4008    92-4086   
                         92-4086    92-4092    92-4092    93-4122    93-4122    93-4135    93-4135    93-4142    93-4149   
                         93-4149    93-4157    93-4157    93-4164    93-4164    93-4169    93-4169    93-4174    93-4174   
                         93-4184    93-4184   
CKEMSG	= 000004	#56-2759    65-3030    66-3080    66-3090    67-3120    67-3127    67-3133    68-3148    69-3178   
                         69-3181    69-3184    70-3210    70-3210    70-3210    70-3210    73-3288    73-3299    73-3339   
                         73-3339    73-3339    73-3339    73-3373    73-3373    73-3373    73-3373    74-3401    74-3411   
                         74-3418    75-3435    75-3439    75-3444    75-3449    75-3454    76-3479    76-3484    77-3538   
                         78-3557    78-3566    79-3581    81-3732    81-3737    81-3744    81-3751    81-3760    81-3776   
                         81-3782    81-3795    81-3806    81-3820    84-3891    84-3903    84-3914    85-3932    85-3938   
                         85-3943    86-3960    87-3984    87-3984    87-3984    87-3984    87-3989    88-4003    88-4003   
                         88-4003    88-4003    88-4008    92-4086    92-4092    93-4122    93-4128    93-4135    93-4149   
                         93-4157    93-4164    93-4169    93-4174    93-4184   
CKENCL	= 000040	#56-2763    73-3299    73-3299    73-3299    75-3435    75-3435    75-3435    75-3439    75-3439   
                         75-3439    75-3444    75-3444    75-3444    75-3449    75-3449    75-3449    75-3454    75-3454   
                         75-3454    87-3989    87-3989    87-3989    88-4008    88-4008    88-4008    92-4092    92-4092   
                         92-4092    93-4130    93-4135    93-4135    93-4135    93-4144    93-4149    93-4149    93-4149   
SAVE       CREATED BY  MACRO  ON 10-MAY-88 AT 15:27	PAGE 6

SYMBOL CROSS REFERENCE                                  CREF   04.00 

SYMBOL	VALUE		REFERENCES

                         93-4164    93-4164    93-4164    93-4169    93-4169    93-4169    93-4174    93-4174    93-4174   
CKEPC 	= 000002	#56-2758    66-3080    66-3080    66-3080    66-3090    66-3090    66-3090    67-3120    67-3120   
                         67-3120    67-3127    67-3127    67-3127    67-3133    67-3133    67-3133    68-3148    68-3148   
                         68-3148    69-3178    69-3178    69-3178    69-3181    69-3181    69-3181    69-3184    69-3184   
                         69-3184    74-3401    74-3401    74-3401    74-3411    74-3411    74-3411    74-3418    74-3418   
                         74-3418    76-3479    76-3479    76-3479    76-3484    76-3484    76-3484    77-3538    77-3538   
                         77-3538    78-3557    78-3557    78-3557    78-3566    78-3566    78-3566    79-3581    79-3581   
                         79-3581    81-3732    81-3732    81-3732    81-3737    81-3737    81-3737    81-3744    81-3744   
                         81-3744    81-3751    81-3751    81-3751    81-3760    81-3760    81-3760    81-3776    81-3776   
                         81-3776    81-3782    81-3782    81-3782    81-3795    81-3795    81-3795    81-3806    81-3806   
                         81-3806    84-3891    84-3891    84-3891    84-3903    84-3903    84-3903    84-3914    84-3914   
                         84-3914    85-3932    85-3932    85-3932    85-3938    85-3938    85-3938    92-4086    92-4086   
                         92-4086    93-4120   
CKEWRN	= 000200	#56-2765    73-3373    73-3373    73-3373    75-3433    85-3943    85-3943    85-3943   
CKFERR	= 000001	#61-2925    93-4118    93-4125    93-4183   
CKFIDT	= 100000	#61-2927    64-2992    65-3021    69-3158    73-3320    75-3428    75-3457   
CKFLAG	  015100 R	*77-3510    78-3545   *78-3547   #79-3605   
CKFLG 	= 000006	*73-3325   #94-4215   
CKGCHR	  020742 R	#95-4227   
CKINT 	  014446 R	#77-3507    81-3693    81-3694    81-3696    84-3886    85-3935    86-3967    87-3994    88-4013   
                         90-4064    91-4074   
CKINTE	  015054 R	 78-3559    78-3569    79-3589    79-3592   #79-3594   
CKINTF	  015070 R	 77-3539    79-3582   #79-3601   
CKINTG	  015062 R	#79-3596    79-3603   
CKINTS	  011554 R	#63-2971   
CKINT1	  014466 R	#77-3512    79-3590   
CKINT2	  014472 R	#77-3513    77-3537   
CKINT3	  014500 R	#77-3515    79-3593   
CKINT6	  014760 R	 78-3564   #79-3573   
CKINT7	  015044 R	 77-3517   #79-3591   
CKKL$$	= 016424 R	#60-2904    60-2904   
CKKL11	  016424 R	 60-2904    60-2904    60-2904   #83-3863   
CKLP$$	= 017250 R	#60-2909    60-2909   
CKLP11	  017250 R	 60-2909    60-2909    60-2909   #87-3981   
CKL2$$	= 017344 R	#60-2916    60-2916   
CKL211	  017344 R	 60-2916    60-2916    60-2916   #88-4001   
CKL220	  017442 R	 88-4013   #88-4016   
CKMG01	  020766 R	 66-3080    66-3090   #96-4229   
CKMG02	  020776 R	 74-3401    74-3418   #96-4230   
CKMG03	  021020 R	 74-3411   #96-4231   
CKMG04	  021040 R	 67-3127    76-3479    77-3538   #96-4232   
CKMG05	  021070 R	 67-3133    76-3484    78-3557   #96-4233   
CKMG06	  021124 R	 68-3148   #96-4234   
CKMG07	  021136 R	 67-3120    79-3581   #96-4235   
CKMPAR	  012322 R	 66-3070   #67-3096    67-3113   *67-3113    67-3116    67-3122    67-3124   *67-3124    67-3132   
CKNCD1	  011352 R	 60-2908   #62-2942   
CKNCI1	  011336 R	#62-2940    65-3026   
CKNCO1	  011344 R	#62-2941    64-3009   
CKNDH1	  011357 R	 60-2914   #62-2943   
CKNDL1	  011415 R	 60-2907   #62-2946   
CKNDM1	  011424 R	 60-2915   #62-2947   
CKNKL1	  011364 R	 60-2904   #62-2944   
SAVE       CREATED BY  MACRO  ON 10-MAY-88 AT 15:27	PAGE 7

SYMBOL CROSS REFERENCE                                  CREF   04.00 

SYMBOL	VALUE		REFERENCES

CKNKW1	  011442 R	#62-2949    69-3157   
CKNLP1	  011451 R	 60-2909   #62-2950   
CKNL21	  011456 R	 60-2916   #62-2951   
CKNMM1	  011463 R	#62-2952    67-3097   
CKNRD1	  011377 R	 60-2906   #62-2945   
CKNRH1	  011473 R	 60-2912   #62-2953   
CKNRX1	  011505 R	 60-2910   #62-2955   
CKNTC1	  011500 R	 60-2911   #62-2954   
CKNTE1	  011434 R	 60-2913   #62-2948   
CKPI  	= 000004	*67-3103    70-3207    70-3209   *73-3317    73-3334    73-3336    73-3338   *76-3486   *77-3509   
                        *78-3548   *78-3549    78-3563    78-3565   #94-4214   
CKPOPJ	  012320 R	 60-2904    60-2906    60-2907    60-2908    60-2909    60-2910    60-2911    60-2912    60-2913   
                         60-2914    60-2915    60-2916   #66-3093   
CKRD$$	= 016360 R	#60-2906    60-2906   
CKRD11	  016360 R	 60-2906    60-2906    60-2906   #82-3840   
CKRH$$	= 017474 R	#60-2912    60-2912   
CKRH11	  017474 R	 60-2912    60-2912    60-2912   #89-4033   
CKRX$$	= 017570 R	#60-2910    60-2910   
CKRX11	  017570 R	 60-2910    60-2910    60-2910   #91-4070   
CKRX20	  017624 R	 91-4074   #91-4078   
CKSPC 	= 000010	#94-4216   
CKSPCD	  020506 R	*63-2966   *66-3080   *66-3090   *69-3178   *69-3181   *69-3184   *70-3210   *92-4092    93-4187   
                        #93-4210   
CKTBOC	  020602 R	 92-4091    93-4127    93-4162    93-4168    93-4173    93-4180   #95-4227   
CKTCHR	  020666 R	 95-4227    95-4227   #95-4227    95-4227   
CKTCRL	  020570 R	 66-3062    68-3139    70-3204    75-3431   #95-4227   
CKTC$$	= 017476 R	#60-2911    60-2911   
CKTC11	  017476 R	 60-2911    60-2911    60-2911   #90-4046   
CKTE$$	= 016710 R	#60-2913    60-2913   
CKTE11	  016710 R	 60-2913    60-2913    60-2913   #85-3922   
CKTOCT	  020616 R	 66-3066    73-3292    75-3448    75-3453    81-3824    87-3988    88-4007   #95-4227   
CKTOC1	  020620 R	 95-4227   #95-4227   
CKTOC2	  020632 R	 95-4227   #95-4227    95-4227   
CKTRR0	  020626 R	#95-4227   
CKTRR1	  020552 R	#95-4227    95-4227   
CKTSTR	  020574 R	 66-3067    73-3293    95-4227   #95-4227    95-4227   
CKTTXT	  020530 R	 65-3034    73-3296    75-3443    93-4139    93-4153   #95-4227    95-4227   
CKZZZX	= 000015	#65-3030    65-3030    65-3030   #66-3080    66-3080    66-3080   #66-3090    66-3090    66-3090   
                        #67-3120    67-3120    67-3120   #67-3127    67-3127    67-3127   #67-3133    67-3133    67-3133   
                        #68-3148    68-3148    68-3148   #69-3178    69-3178    69-3178   #69-3181    69-3181    69-3181   
                        #69-3184    69-3184    69-3184   #70-3210    70-3210    70-3210   #73-3288    73-3288    73-3288   
                        #73-3299    73-3299    73-3299   #73-3339    73-3339    73-3339   #73-3373    73-3373    73-3373   
                        #74-3401    74-3401    74-3401   #74-3411    74-3411    74-3411   #74-3418    74-3418    74-3418   
                        #75-3435    75-3435    75-3435   #75-3439    75-3439    75-3439   #75-3444    75-3444    75-3444   
                        #75-3449    75-3449    75-3449   #75-3454    75-3454    75-3454   #76-3479    76-3479    76-3479   
                        #76-3484    76-3484    76-3484   #77-3538    77-3538    77-3538   #78-3557    78-3557    78-3557   
                        #78-3566    78-3566    78-3566   #79-3581    79-3581    79-3581   #81-3732    81-3732    81-3732   
                        #81-3737    81-3737    81-3737   #81-3744    81-3744    81-3744   #81-3751    81-3751    81-3751   
                        #81-3760    81-3760    81-3760   #81-3776    81-3776    81-3776   #81-3782    81-3782    81-3782   
                        #81-3795    81-3795    81-3795   #81-3806    81-3806    81-3806   #81-3820    81-3820    81-3820   
                        #84-3891    84-3891    84-3891   #84-3903    84-3903    84-3903   #84-3914    84-3914    84-3914   
                        #85-3932    85-3932    85-3932   #85-3938    85-3938    85-3938   #85-3943    85-3943    85-3943   
SAVE       CREATED BY  MACRO  ON 10-MAY-88 AT 15:27	PAGE 8

SYMBOL CROSS REFERENCE                                  CREF   04.00 

SYMBOL	VALUE		REFERENCES

                        #86-3960    86-3960    86-3960   #87-3984    87-3984    87-3984   #87-3989    87-3989    87-3989   
                        #88-4003    88-4003    88-4003   #88-4008    88-4008    88-4008   #92-4086    92-4086    92-4086   
                        #92-4092    92-4092    92-4092   #93-4122    93-4122    93-4122   #93-4135    93-4135    93-4135   
                        #93-4149    93-4149    93-4149   #93-4157    93-4157    93-4157   #93-4164    93-4164    93-4164   
                        #93-4169    93-4169    93-4169   #93-4174    93-4174    93-4174   #93-4184    93-4184    93-4184   
CK.CAL	  011512 R	#62-2957   *63-2962    65-3033   
CLKENB	= 000100	#10-366    
CLKLVL	= 000006	#10-357    
CLKVEC	= 000100	#10-361     69-3161    69-3166   *69-3167   *70-3200    70-3209   
CLKWRD	= 177546	#10-363     69-3159   *70-3203   
CMDCLN	= 000024	#23-382     25-467    
CMDCLR	  000040 R	#23-359     23-382     25-466    
CMDONE	  001574 R	 25-511    #26-563    
CNUPE 	= 000002	#21-161    
CO.INE	= 000100	#5-208      64-3012    64-3013    82-3848    82-3851    83-3870    83-3873   
CO..MM	= 000004	#5-209      64-3012   
CPUNUM	= 000002	#21-161    
CS.EXP	= 177670	#21-161    
CTICHR	= 177562	#5-198      5-199      64-2996    95-4227    95-4227   
CTILVL	= 000004	#5-203     
CTISTS	= 177560	#5-197      5-198      60-2904    64-2995    65-3022    95-4227   
CTIVEC	= 000060	#5-202      5-205      65-3025   
CTOCHR	= 177566	#5-200      64-2994   *95-4227   
CTOLVL	= 000004	#5-206     
CTOSTS	= 177564	#5-199      5-200      64-2993    64-3005    95-4227   
CTOVEC	= 000064	#5-205      60-2904    64-3008   
CTYBFL	= 000120	#23-394     25-481    
CTYBUF	  000230 R	#23-393     23-394     25-481    *25-489     25-490    
CTYLUN	= 000001	#21-195     25-478     25-481     41-1661   
CTYPTR	= ******  GX	 31-970    *31-972    
DCOMST	= 000001	#21-161    
DEFLAG	  000061 R	#23-380    *34-1152   *34-1176    35-1236   
DEP   	= 010000	#21-161    
DEVCHK	  001656 R	 26-574    #26-578    
DEVMNT	  002002 R	#26-605    
DEVNAM	  000042 R	#23-361    *25-498     26-565     26-576    *26-580     26-584     26-591     32-1042   
DEVOK 	  001734 R	 26-585    #26-590    
DEVUNT	  000044 R	#23-362    *25-502     26-564    *26-581     28-800     46-2130    49-2371    52-2567   
DEX   	= 000400	#21-161    
DEXDON	= 000004	#21-161    
DEXWD1	= 174406	#21-161    
DEXWD2	= 174404	#21-161    
DEXWD3	= 174402	#21-161    
DFUNC 	= 000200	#21-161    
DF.DMG	= 000004	#21-161    
DF.DMN	= 000007	#21-161    
DF.DOR	= 000001	#21-161    
DF.EHG	= 000010	#21-161    
DF.EHM	= 000011	#21-161    
DF.EMG	= 000005	#21-161    
DF.EMN	= 000006	#21-161    
DF.KLR	= 000012	#21-161    
SAVE       CREATED BY  MACRO  ON 10-MAY-88 AT 15:27	PAGE 9

SYMBOL CROSS REFERENCE                                  CREF   04.00 

SYMBOL	VALUE		REFERENCES

DF.KLW	= 000013	#21-161    
DF.KLX	= 000014	#21-161    
DF.OFF	= 000002	#21-161    
DF.ON 	= 000003	#21-161    
DF.PDP	= 000016	#21-161    
DF.PEX	= 000015	#21-161    
DGUTS 	= 000000	 1-45       1-46      
DHBASE	= 160020	#6-212     
DHDATA	  016354 R	*81-3710    81-3769    81-3800    81-3802   *81-3810   #81-3830   
DHEXPA	= 160020	#22-337     31-1002   
DHEXPZ	= 000020	#22-338     31-1011   
DHRFER	= 020000	#6-235     
DHROVR	= 040000	#6-234     
DHSTAB	  001124 R	#24-437     31-951    
DHTBL 	= ******  GX	 31-957     31-1003   
DHXMII	  016356 R	*81-3700   *81-3701    81-3727   #81-3831   
DH.AEE	= 100000	#6-242     
DH.BAR	= 000012	#6-229     *81-3721   
DH.BCR	= 000010	#6-228     *81-3716   
DH.BRK	= 000014	#6-230     
DH.CAR	= 000006	#6-227     *81-3717   
DH.CL5	= 000000	#6-247     
DH.CL6	= 000001	#6-248     
DH.CL7	= 000002	#6-249     
DH.CL8	= 000003	#6-250      81-3715   
DH.CNX	= 000400	#6-217     
DH.DOV	= 040000	#6-237      81-3767   
DH.LPR	= 000004	#6-226     *81-3715   
DH.LVL	= 000005	#6-213      60-2914    60-2914   
DH.NRC	= 000002	#6-225      81-3766   
DH.NXM	= 002000	#6-219      81-3742   
DH.PEN	= 000020	#6-245      81-3715   
DH.RIE	= 000100	#6-215      81-3693    81-3713   
DH.SIE	= 010000	#6-221      81-3694    81-3713   
DH.SSR	= 000016	#6-231     *81-3718   
DH.TIE	= 020000	#6-222      81-3696    81-3713   
DH.VDP	= 100000	#6-236      81-3773    81-3780   
DH..FE	= 020000	#6-238      81-3767   
DH..HD	= 040000	#6-243     
DH..MC	= 004000	#6-220      81-3712    81-3827   
DH..MM	= 001000	#6-218      81-3693    81-3694    81-3713   
DH..OP	= 000040	#6-244      81-3715   
DH..PE	= 010000	#6-239      81-3767   
DH..RI	= 000200	#6-216      81-3693    81-3765   
DH..SI	= 040000	#6-223      81-3694    81-3758   
DH..TI	= 100000	#6-224      81-3696    81-3749    81-3756   
DH.2SB	= 000004	#6-246      81-3715   
DIAG1 	= 174430	#21-161    
DIAG2 	= 174432	#21-161    
DIAG3 	= 174436	#21-161    
DIKL10	= 000010	#21-161    
DLDADR	= 175610	#7-254     
SAVE       CREATED BY  MACRO  ON 10-MAY-88 AT 15:27	PAGE 10

SYMBOL CROSS REFERENCE                                  CREF   04.00 

SYMBOL	VALUE		REFERENCES

DLDSIZ	= 000010	#7-255     
DLRBUF	= 000002	#7-280     
DLRSTS	= 000000	#7-262     
DLTBL 	= ******  GX	 31-948    *31-980    *31-981    *31-982    *31-983    *31-984    
DLXBUF	= 000006	#7-301     
DLXSTS	= 000004	#7-291     
DLYCNT	= 174400	#21-161    
DL.BRK	= 000001	#7-294     
DL.CAR	= 010000	#7-274      31-988     38-1408   
DL.CTS	= 020000	#7-275     
DL.DIE	= 000040	#7-269     
DL.DSC	= 100000	#7-277     
DL.DTR	= 000002	#7-266     
DL.ERR	= 100000	#7-287     
DL.LVL	= 000004	#7-256      7-257      60-2907    60-2907   
DL.OVR	= 040000	#7-286     
DL.RGO	= 004000	#7-273     
DL.RIE	= 000100	#7-270     
DL.RNG	= 040000	#7-276     
DL.ROK	= 000200	#7-271     
DL.RTS	= 000004	#7-267     
DL.XIE	= 000100	#7-296     
DL.XOK	= 000200	#7-297     
DL..FE	= 020000	#7-285     
DL..MM	= 000004	#7-295     
DL..PE	= 010000	#7-284     
DL..RC	= 000377	#7-283     
DL..RE	= 000001	#7-265     
DL..XC	= 000377	#7-304     
DL.2RC	= 002000	#7-272     
DL.2XM	= 000010	#7-268     
DMBASE	= 170500	#8-308     
DMEXPA	= 170500	#22-342     31-1018   
DMFLAG	  000052 R	#23-372    *25-474     25-545     27-733    
DMOERR	  002426 R	 27-744    #27-751    
DMTBL 	= ******  GX	 31-1019   
DMTBLK	  001116 R	#24-425     27-735    
DM.ALI	= 000017	#8-321      84-3885    84-3897   
DM.BSY	= 000020	#8-320      84-3889    84-3900   
DM.CAR	= 000100	#8-332     
DM.CTS	= 000040	#8-331     
DM.DNE	= 000200	#8-317      84-3885    84-3886    84-3897   
DM.DTR	= 000002	#8-325     
DM.ENB	= 000040	#8-319      84-3885    84-3888    84-3897   
DM.IEN	= 000100	#8-318      84-3885    84-3886    84-3897   
DM.INI	= 002000	#8-314     
DM.LE 	= 000001	#8-324     
DM.LVL	= 000004	#8-310      60-2915    60-2915   
DM.RNG	= 000200	#8-333     
DM.RTS	= 000004	 8-326     
DM.SCN	= 004000	#8-313      84-3899   
DM.SR 	= 000020	#8-330     
SAVE       CREATED BY  MACRO  ON 10-MAY-88 AT 15:27	PAGE 11

SYMBOL CROSS REFERENCE                                  CREF   04.00 

SYMBOL	VALUE		REFERENCES

DM.ST 	= 000010	#8-329     
DM.STP	= 000400	#8-316     
DM..MM	= 001000	#8-315      84-3885    84-3897   
DNSERR	  001642 R	 26-572    #26-575    
DON10C	= 040000	#21-161    
DON10S	= 100000	#21-161    
DON11C	= 000100	#21-161    
DON11S	= 000200	#21-161    
DPS4  	= 040000	#21-161    
DRESET	= 000100	#21-161    
DRVADR	  000002 R	#23-353    *26-595     26-701     28-790     28-838     29-885    
DRVAD1	= 000012	 28-792    #43-1918   #43-1919   #43-1920   
DRVAD2	= 000014	 28-793    #43-1918   #43-1919   #43-1920   
DRVBOT	= 000004	 28-839    #43-1918   #43-1919   #43-1920   
DRVBTP	= 000016	 28-802    #43-1918   #43-1919   #43-1920   
DRVMSZ	= 000010	 28-791    #43-1918   #43-1919   #43-1920   
DRVNAM	= 000000	 26-584    #43-1918   #43-1919   #43-1920   
DRVSET	= 000002	 26-702     26-702    #43-1918   #43-1919   #43-1920   
DRVSIZ	= 000020	 26-586    #43-1918   #43-1919   #43-1920   
DRVTAB	  007060 R	 26-582     26-587    #43-1917    43-1921   
DRVTBZ	= 000060	 26-587    #43-1921   
DRVWRT	= 000006	 29-886     29-886    #43-1918   #43-1919   #43-1920   
DR.DTE	= 000011	#21-161    
DSEND 	= 000004	#21-161    
DSKADR	  000004 R	#23-354     24-414     26-694     26-695    *26-724    *26-725     28-792     28-793    *29-881    
                        *29-882     46-2136    49-2379    49-2380    52-2564   
DSKLUN	= 000002	#21-196     26-571     27-742     36-1260    42-1867   
DSKSIZ	  000010 R	#23-355     26-663     26-665    
DS04  	= 004000	#21-161    
DS05  	= 002000	#21-161    
DS06  	= 001000	#21-161    
DTCL11	= 002000	#22-330     34-1180   
DTEBAD	= ******	 85-3924   
DTECHK	  003770 R	 32-1053   #34-1147   
DTECMD	= 000451	#21-161    
DTEDTO	= ******	 85-3946   
DTEFLG	= 000444	#21-161    
DTEF11	= 000450	#21-161    
DTEMSG	  004304 R	 35-1223   #35-1228   
DTEMTD	= 000455	#21-161    
DTEMTI	= 000456	#21-161    
DTEXPA	= 174400	#22-325     34-1150   
DTEXPZ	= 000040	#22-326     34-1186   
DTINOF	= 000010	#22-332     34-1180   
DTINON	= 000040	#22-331     34-1174   
DTPMSG	  004330 R	 35-1230   #35-1235   
DTPMS1	  004346 R	 35-1233   #35-1239   
DTPSTA	= ******	 85-3928   
DTRSMD	= 000010	#22-333     34-1167   
DTSTAT	= 000034	#22-328     34-1167   *34-1174   *34-1180    34-1194   
DTVECA	= 000774	#22-324     34-1149   
DT11DB	= 004000	#22-329     34-1174   
SAVE       CREATED BY  MACRO  ON 10-MAY-88 AT 15:27	PAGE 12

SYMBOL CROSS REFERENCE                                  CREF   04.00 

SYMBOL	VALUE		REFERENCES

DUPE  	= 000020	#21-161    
DURE  	= 000004	#21-161    
DV.LOG	= ******  GX	 23-401    
DXWRD1	= 002000	#21-161    
D.CCTY	= ******  GX	*31-973    
D.CKLN	= ******  GX	 38-1479   
D1011 	= 000040	#21-161    
EBSEL 	= 000100	#21-161    
EBUSPC	= 000020	#21-161    
EBUSPS	= 000004	#21-161    
EDONES	= 040000	#21-161    
EF.PR1	= ******  GX	 28-774     38-1419    38-1464   
EF.PR2	= ******  GX	 28-774     38-1419   
EF.QIO	= 000001	#21-201    
EF.RKP	= ******  GX	 38-1421    38-1430   
EF.TMO	= 000002	#21-204    
EPTR  	= 000000	#21-161    
ERRINT	= 000004	#54-2724   
ERRMSG	  001447 R	 41-1710   #41-1714   
ERR10C	= 010000	#21-161    
ERR10S	= 020000	#21-161    
ERR11C	= 000001	#21-161    
ERR11S	= 000002	#21-161    
EV.PF 	= ******  GX	 35-1217   
EXFLAG	  000050 R	#23-370    *25-472     25-545     39-1516   
EXIT  	  005750 R	 25-536     38-1486    39-1517   #39-1522    39-1524    41-1662   
EXITA 	  001526 R	 25-479     25-482     25-484     25-486    #25-535    
EXIT00	  005736 R	 39-1507    39-1512   #39-1515   
EX.AC1	= 000001	#21-240     26-674    
EX.ENA	= 000200	#21-242     26-674    
EX.FCO	= 000004	#21-241     26-674    
E.FLOG	= 000004	#21-206    #21-207     38-1478    38-1481   
E.FQIO	= 000001	#21-200     25-481     41-1661    42-1867   
E.FTMO	= 000002	#21-203     38-1399    38-1424    38-1425    38-1426   
FIDBLK	  001076 R	#24-408     26-633    
FILCHK	  002252 R	 26-687    #26-689    
FILDMO	  002332 R	#27-732    
FILDMX	  002464 R	 27-739     27-741    #27-759    
FILDM1	  002350 R	#27-737     27-762    
FILDM2	  002414 R	#27-746    
FILDM3	  002436 R	 27-750    #27-753    
FILDM4	  002454 R	 27-755    #27-757    
FILFND	  002060 R	#26-632     26-692    
FILMNT	  006750 R	 26-615     26-615     27-748     27-748     36-1268    36-1268   #42-1846   
FILOK 	  002312 R	 26-696     26-698    #26-700    
FILQIO	  006764 R	 26-643     26-643     26-677     26-677     26-686     26-686     37-1323    37-1323   #42-1866   
FILSET	  002322 R	#26-723    
FINDEV	  006672 R	 26-573     26-573     32-1043    32-1043    32-1052    32-1052    33-1112    33-1112    36-1297   
                         36-1297   #42-1818   
FLOATD	= 160000	 55-2747    63-2964   
FLOATV	= 000300	 55-2746    63-2963   
FNDACP	  006730 R	 26-611     26-611     36-1264    36-1264   #42-1836   
SAVE       CREATED BY  MACRO  ON 10-MAY-88 AT 15:27	PAGE 13

SYMBOL CROSS REFERENCE                                  CREF   04.00 

SYMBOL	VALUE		REFERENCES

FORPRO	= 000020	#21-161    
FTABS 	= ******	 23-367     25-546     26-624     26-703     43-1918    43-1919    43-1920    44-1930    47-2264   
                         50-2419   
FTASRT	= 000001	 1-64      
FTECHO	= 000000	 1-61      
FTETR 	= 000000	 1-60      
FTGLOM	= 000000	 1-54      
FT.CHK	= 000001	 1-63      
FT.DDT	= 000000	 1-59      
FT.D75	= 000000	 10-355     10-356    
FT.HLP	= 000001	 1-53      
GETNAM	  006002 R	 25-496     25-496     25-521     25-521    #40-1560   
GETNB 	  005760 R	 25-494     25-494     25-510     25-510    #40-1544    40-1547    40-1549   
GETNUM	  006046 R	 25-500     25-500    #40-1590   
GTIMBF	  000020 R	#23-358     28-770     41-1739    41-1742    41-1749    41-1752    41-1758   
G.TICP	= 000016	#28-770    
G.TICT	= 000014	#28-770    
G.TIDA	= 000004	#28-770     41-1749   
G.TIHR	= 000006	#28-770     41-1739   
G.TIMI	= 000010	#28-770     41-1742   
G.TIMO	= 000002	#28-770     41-1752   
G.TISC	= 000012	#28-770    
G.TIYR	= 000000	#28-770     41-1758   
HBCERR	  005002 R	 37-1348    37-1354   #37-1358   
HIBYTE	= 177400	#21-161    
HOMBUF	  000064 R	#23-391     37-1320    37-1331    37-1350   
HOMFE0	= 000061	#21-234     37-1331    37-1350   
HOMFE1	= 000062	#21-235    
HOMNAM	= 000000	#21-232    
IFLOP 	= 100000	#21-161    
INTROF	= 000010	#21-161    
INTRON	= 000040	#21-161    
INTSON	= 000001	#21-161    
INT10S	= 000400	#21-161    
INT11C	= 002000	#21-161    
INT11S	= 004000	#21-161    
IO.ACE	= 007400	 26-637    
IO.APV	= 014010	 42-1847   
IO.DAC	= 010000	 26-682    
IO.EXT	= 011400	 26-672    
IO.RLB	= 001000	 25-481     37-1319   
IO.WLB	= 000400	 41-1661   
KBS0  	= ******  GX	 31-980    
KBS1  	= ******  GX	 31-981     31-987    
KLANXM	  005614 R	 38-1403   #38-1488   
KLAREM	  005476 R	 38-1459   #38-1463   
KLAUSR	  005466 R	 38-1456   #38-1461   
KLINIT	  001120 R	#24-430     39-1497   
KLNPTR	= ******  GX	 38-1400   
KLPWRF	= 000010	#21-161    
KL.CFM	= ******  GX	 39-1499   
KL.DEF	= ******  GX	 39-1499   
SAVE       CREATED BY  MACRO  ON 10-MAY-88 AT 15:27	PAGE 14

SYMBOL CROSS REFERENCE                                  CREF   04.00 

SYMBOL	VALUE		REFERENCES

KL.LCA	= ******  GX	 39-1499   
KL.LRM	= ******  GX	 39-1499   
KL.LVB	= ******  GX	 39-1499   
KL.LVL	= 000004	#7-258      60-2904    60-2904   
KL.VBN	= ******  GX	 39-1502   
KPAR0 	= 172340	#1-28      
KW.INE	= 000100	#10-365     69-3170    70-3199    70-3203   
KW.TIC	= 000200	#10-367    
K.LRBA	= ******  GX	 38-1476   
LKS   	= 177546	#22-346    *28-786    
LOAD11	= 000004	#21-161    
LOGBUF	  001070 R	#23-399     38-1466   
LOWCOR	  000064 R	#23-387     23-397     28-840    
LP.DAT	= 177516	#11-382    
LP.DNE	= 000200	#11-378     87-3994   
LP.ERR	= 100000	#11-377     87-3982   
LP.INE	= 000100	#11-379     87-3993    87-3994    88-4012   
LP.LVL	= 000004	#11-371     60-2909    60-2909   
LP.STS	= 177514	#11-375     60-2909   
LP.VEC	= 000200	#11-372     60-2909   
LP0DAT	= 177516	#11-381     11-382     11-386    
LP0STS	= 177514	#11-374     11-375     11-381    
LP1DAT	= 177522	#11-387    
LP1STS	= 177520	#11-386     11-387    
L2.A16	= 000020	#12-414    
L2.A17	= 000040	#12-413    
L2.BCM	= 007777	#13-443    
L2.DB 	= 000377	#13-455    
L2.DEL	= 002000	#13-452    
L2.DH 	= 002000	#12-408    
L2.DL 	= 000010	#12-415    
L2.DNR	= 000100	#12-430    
L2.DON	= 000200	#12-411    
L2.DR 	= 010000	#12-406    
L2.DTE	= 000002	#12-435    
L2.ENB	= 000100	#12-412     88-4013   
L2.ERE	= 001000	#12-409    
L2.ERR	= 100000	#12-403     88-4001   
L2.GER	= 000001	#12-436    
L2.GO 	= 000001	#12-418    
L2.INI	= 000400	#12-410    
L2.INT	= 004000	#13-451    
L2.LDP	= 010000	#12-424    
L2.LPE	= 000040	#12-431    
L2.LVL	= 000004	#12-397     60-2916    60-2916   
L2.MPE	= 000020	#12-432    
L2.MST	= 000004	#12-434    
L2.ONL	= 004000	#12-407    
L2.OVF	= 004000	#12-425    
L2.PCM	= 007777	#13-446    
L2.PEN	= 000002	#12-417    
L2.PI 	= 000400	#13-454    
SAVE       CREATED BY  MACRO  ON 10-MAY-88 AT 15:27	PAGE 15

SYMBOL CROSS REFERENCE                                  CREF   04.00 

SYMBOL	VALUE		REFERENCES

L2.PNR	= 020000	#12-423    
L2.POL	= 000200	#12-429    
L2.PZE	= 040000	#12-404    
L2.RDB	= 007777	#13-450    
L2.RPB	= 010000	#13-449    
L2.RPE	= 000010	#12-433    
L2.SPR	= 040000	#12-422    
L2.TB0	= 000400	#12-428    
L2.TB1	= 001000	#12-427    
L2.TB2	= 002000	#12-426    
L2.TM 	= 000004	#12-416     88-4017   
L2.TRN	= 001000	#13-453    
L2.UCD	= 020000	#12-405    
L2.VD 	= 100000	#12-421    
L2.VEC	= 000754	#12-398     60-2916   
L20ADR	= 000004	#13-440     13-442    
L20BCT	= 000006	#13-442     13-445    
L20BUF	= 000014	#13-457     13-459    
L20CHK	= 000017	#13-463    
L20COL	= 000015	#13-459     13-461    
L20CRA	= 000000	#12-402     12-420    
L20CRB	= 000002	#12-420     13-440    
L20PCT	= 000010	#13-445     13-448    
L20PDA	= 000016	#13-461     13-463    
L20RAM	= 000012	#13-448     13-457    
L20STS	= 175400	#12-399     60-2916   
L21STS	= 175420	#12-400    
MEMSIZ	  000014 R	#23-356    *26-659     28-791    *29-883     46-2156    49-2403    52-2622   
MM.SR0	= 177572	#1-29       93-4106   *93-4109   *93-4205   
MNTBLK	  001110 R	#24-419     26-614     36-1266   
MNTSY 	  004402 R	#36-1254   
MNTSY1	  004424 R	#36-1259    36-1299   
MNTSY2	  004514 R	 36-1261   #36-1272   
MODTBL	  001532 R	 25-523    #25-540     25-551    
MODTLN	= 000006	 25-524    #25-551    
MOFLAG	  000051 R	#23-371     25-545     26-606    
MONTAB	  006534 R	 41-1755   #41-1771   
MOUNTD	  002050 R	 26-609    #26-618    
MPE11 	= 001000	#21-161    
MP.ENB	= 000001	#14-475     67-3121    68-3142   
MP.ERR	= 100000	#14-472    
MP.LVL	= 000007	#14-468    
MP.REG	= 172100	#14-470     67-3099   *67-3105   *68-3142   
MP.VEC	= 000114	#14-467     67-3102   
MP.WWP	= 000004	#14-474     67-3112   
M$$MGE	= ******	 28-794     28-808     30-914     43-1918    43-1919    43-1920    45-2062    45-2102    46-2140   
                         48-2323    48-2346    51-2514    51-2537   
NONDEV	  014016 R	 73-3327   #73-3372   
NOTRXF	  005030 R	#37-1366   
NULSTP	= 000040	#21-161    
NUPE  	= 000002	#21-161    
NXMVEC	= 000004	#1-30      *64-2991   *64-2997   *65-3037    67-3101   *67-3104   *67-3106   *68-3150   *69-3163   
SAVE       CREATED BY  MACRO  ON 10-MAY-88 AT 15:27	PAGE 16

SYMBOL CROSS REFERENCE                                  CREF   04.00 

SYMBOL	VALUE		REFERENCES

                        *69-3165   *72-3257   *72-3259   *73-3280   *73-3327   *73-3329    93-4103   *93-4104   *93-4112   
OB0   	= 000001	#3-136     
OB1   	= 000002	#3-137     
OB10  	= 000400	#3-144     
OB11  	= 001000	#3-145     
OB12  	= 002000	#3-146     
OB13  	= 004000	#3-147     
OB14  	= 010000	#3-148     
OB15  	= 020000	#3-149     
OB16  	= 040000	#3-150     
OB17  	= 100000	#3-151     
OB2   	= 000004	#3-138     
OB3   	= 000010	#3-139     
OB4   	= 000020	#3-140     
OB5   	= 000040	#3-141     
OB6   	= 000100	#3-142     
OB7   	= 000200	#3-143     
PASS  	= 000002	 1-84       1-85      #1-85      
PDP11 	= 000040	 1-68      
PERCLR	= 001000	#21-161    
PHYLIM	  011334 R	#61-2930   *65-3042    66-3065   
PHYS  	= 100000	#21-161    
PIDENT	= 000000	#21-161    
PRI7  	= 000340	#21-161    
PRNRUN	  005602 R	 38-1420   #38-1484   
PROPNT	= 000021	#21-161    
PROTBL	= ******  GX	*34-1191   
PRTOFF	= 004000	#21-161    
PR0   	= 000000	#21-161    
PR1   	= 000040	#21-161    
PR2   	= 000100	#21-161    
PR3   	= 000140	#21-161    
PR4   	= 000200	#21-161    
PR5   	= 000240	#21-161     34-1175   
PR6   	= 000300	#21-161    
PR7   	= 000340	#21-161     28-782     34-1178    35-1240    45-2061    45-2105    48-2322    48-2349    51-2513   
                         51-2540   
PS    	= 177776	#21-161     28-782    *28-782    *28-807    *33-1100    33-1105   *34-1154    34-1159    34-1164   
                        *34-1175   *34-1178   *34-1182    35-1240   *35-1240   *35-1242    38-1429   *38-1429   *38-1454   
                        *45-2061   *48-2322   *51-2513   *63-2961   *69-3169   *70-3198   *73-3326   *74-3390   *76-3472   
                        *76-3476   *77-3513   *77-3526   *79-3573   *79-3578    80-3612    80-3616    80-3619    80-3622   
                         80-3625    80-3628    80-3631    80-3634    80-3637    80-3640   *81-3722   *81-3724   
PSWW1 	= 000005	#21-161    
PSWW10	= 000014	#21-161    
PSWW11	= 000015	#21-161    
PSWW12	= 000016	#21-161    
PSWW13	= 000017	#21-161    
PSWW2 	= 000006	#21-161    
PSWW3 	= 000007	#21-161    
PSWW4 	= 000010	#21-161    
PSWW5 	= 000011	#21-161    
PSWW6 	= 000012	#21-161    
SAVE       CREATED BY  MACRO  ON 10-MAY-88 AT 15:27	PAGE 17

SYMBOL CROSS REFERENCE                                  CREF   04.00 

SYMBOL	VALUE		REFERENCES

PSWW7 	= 000013	#21-161    
PS.PUS	= 030000	#21-227     28-807     33-1100    34-1154    34-1182   
PS.REG	= 004000	#21-228     45-2105    48-2349    51-2540   
PS.USR	= 140000	#21-226    
PUDADR	  000040 R	#23-360    *26-596     32-1045   *32-1049   *32-1056    36-1255   *36-1298    41-1693   
PUDIDX	  000045 R	#23-363    *26-601     32-1073   
PULSE 	= 000020	#21-161    
QEFLAG	  000056 R	#23-376    *26-667     42-1868   *42-1875   
QIOSTS	  001064 R	#23-398     25-481     25-483     25-485     25-488     42-1867    42-1872   
QSIZE 	= 000023	#21-161    
Q.DA  	= ******  GX	*31-973    
Q.SZ  	= ******  GX	*31-973    
RADIX 	  000016 R	#23-357    *41-1701   *41-1738   *41-1764    41-1791    41-1793   
RAMIS0	= 010000	#21-161    
RD.LVL	= 000004	#7-257      7-258      60-2906    60-2906   
REDHM1	  004650 R	 37-1313   #37-1315   
REDHOM	  004616 R	 36-1256    36-1263    36-1278    36-1281    36-1293   #37-1307   
REDSY 	  003346 R	#32-1032   
RESTOR	  002734 RG	 29-880    #30-897     45-2107    48-2351    49-2413    51-2542   
RFMAD0	= 100000	#21-161    
RFMAD1	= 040000	#21-161    
RFMAD2	= 020000	#21-161    
RFMAD3	= 010000	#21-161    
RHFLAG	  000053 R	#23-373    *25-473     25-545    *26-593     33-1086    37-1308   
RHMERR	  005046 R	 37-1324   #37-1374   
RH.LVL	= 000000	 60-2912    60-2912   
RM    	= 000010	#21-161    
RNFLAG	  000054 R	#23-374    *33-1091    37-1310   
RNRERR	  005060 R	 37-1311   #37-1378   
RPATA 	= 100000	#22-288     48-2310    49-2397   
RPBA  	= 176704	#22-283    *48-2289   *49-2378   
RPBAD1	= 007720 R	 43-1919   #48-2290   
RPBAD2	= 007726 R	 43-1919   #48-2292   
RPBMSZ	  010004 R	 43-1919   #48-2317   
RPBNXT	  007744 R	#48-2299    48-2318   
RPBOOT	  007702 R	 43-1919   #48-2282    48-2309    48-2311    48-2353   
RPCS1 	= 176700	#22-271     33-1122   *33-1124   *48-2289   *48-2291   *48-2293   *48-2294   *48-2300    48-2310   
                         49-2369   *49-2371   *49-2378   *49-2379   *49-2380   *49-2381   *49-2387    49-2397   
RPCS2 	= 176710	#22-285    *33-1088   *33-1116   *49-2371   
RPDA  	= 176706	#22-284    *48-2293   *49-2380   
RPDC  	= 176734	#22-300    *48-2291   *49-2379   
RPDPR 	= 000400	#22-292     33-1117   
RPDS  	= 176712	#22-287     33-1089    33-1093    33-1117    48-2310    49-2397   
RPDT  	= 176726	#22-293     33-1127   
RPDT04	= 000020	#22-294    
RPDT06	= 000022	#22-295     33-1127   
RPDVA 	= 004000	#22-274     33-1122    49-2375   
RPECCI	= 004000	#22-299     48-2294    49-2381   
RPERR 	= 040000	#22-289     48-2310    49-2397   
RPFLAG	  000055 R	#23-375    *33-1095    37-1312   
RPFM22	= 010000	#22-298    
RPFUNC	= 000076	#22-276    
SAVE       CREATED BY  MACRO  ON 10-MAY-88 AT 15:27	PAGE 18

SYMBOL CROSS REFERENCE                                  CREF   04.00 

SYMBOL	VALUE		REFERENCES

RPGO  	= 000001	#22-281     33-1124    48-2287    49-2377   
RPMCPE	= 020000	#22-273     48-2308    49-2395   
RPMOL 	= 010000	#22-290     33-1089   
RPNOOP	= 000000	#22-277     33-1124   
RPOF  	= 176732	#22-297    *48-2294   *49-2381   
RPPGM 	= 001000	#22-291     33-1093    33-1117   
RPPRST	= 000020	#22-278     48-2287    49-2377   
RPRDY 	= 000200	#22-275    
RPREAD	= 000070	#22-280     48-2295   
RPSET 	  007632 R	 43-1919   #47-2242   
RPSN  	= 176730	#22-296     33-1119   
RPTRE 	= 040000	#22-272     48-2308    49-2395   
RPUNIT	= 000007	#22-286    
RPWC  	= 176702	#22-282    *48-2300   *49-2387   
RPWNXT	  010116 R	#49-2386    49-2404   
RPWRIT	= 000060	#22-279     49-2382   
RPWRT 	  010036 R	 43-1919   #49-2368   
RP4CHK	  003530 R	#33-1085   
RP6CHK	  003574 R	 33-1087    33-1094   #33-1099   
RQSKLR	  005130 R	 37-1309    37-1372    37-1380   #38-1398   
RQSTSK	  005624 R	 38-1412    38-1465    38-1482   #39-1496   
RXBAD1	  007206 R	 43-1918   #45-1973   
RXBAD2	  007206 R	 43-1918   #45-1974   
RXBBLK	  007210 R	#45-1985    45-2093    45-2093   
RXBBLX	  007350 R	 45-1971   #45-2060   
RXBMSZ	  007402 R	 43-1918   #45-2097   
RXBNXT	  007370 R	#45-2088    45-2098   
RXBNX1	  007374 R	 45-2084   #45-2094   
RXBOOT	  007150 R	 43-1918   #45-1955    45-1971    45-2035    45-2054    45-2093    45-2093    45-2109   
RXCS  	= 177170	#22-254    *45-2024   *45-2028    45-2044    46-2135   *46-2180   *46-2219   *46-2223    60-2910   
RXDB  	= 177172	#22-267    *45-2024   *45-2028    45-2044   *46-2180   *46-2219   *46-2223   
RXDONE	= 000040	#22-258     45-2033    45-2041    46-2177    46-2228   
RXEMPT	= 000002	#22-262     45-2039   
RXERR 	= 100000	#22-255     45-2033    46-2228   
RXFILL	= 000000	#22-261     46-2175   
RXFUNC	= 000016	#22-260    
RXGO  	= 000001	#22-266     45-1964    45-2039    46-2134    46-2175    91-4080   
RXINIT	= 040000	#22-256    
RXREAD	= 000006	#22-264     45-1964   
RXRERR	= 000016	#22-265     91-4079   
RXSET 	  007140 R	 43-1918   #44-1927   
RXSETX	  007144 R	#44-1938   
RXTREQ	= 000200	#22-257     45-2041    46-2177   
RXUNIT	= 000020	#22-259     45-1962    46-2132   
RXWBLK	  007472 R	 46-2154    46-2154   #46-2169   
RXWNXT	  007452 R	#46-2149    46-2157   
RXWRIT	= 000004	#22-263     46-2134   
RXWRT 	  007420 R	 43-1918   #46-2123   
RX.LVL	= 000006	#22-253     60-2910    60-2910   
R$$11M	= 000001	#1-27      
R$$20F	= 000001	#1-26      
SAVE  	  001170 RG	#25-462     25-495     39-1518    41-1670    98-4249   
SAVE       CREATED BY  MACRO  ON 10-MAY-88 AT 15:27	PAGE 19

SYMBOL CROSS REFERENCE                                  CREF   04.00 

SYMBOL	VALUE		REFERENCES

SAVLMT	  001164 RG	#24-455     26-649    
SCD   	= 000040	#21-161    
SETCTY	  003032 R	#31-944    
SETDH 	  003262 R	#31-1001   
SETDL 	  003162 R	 31-947    #31-979    
SETDM 	  003320 R	#31-1017   
SETFIL	  002060 R	 26-607     26-616    #26-623    
SETRXF	  005012 R	 37-1356   #37-1362   
SF.FX 	= ******  GX	 32-1071   
SOMRXF	  005124 R	 37-1364   #37-1390   
SPSAVE	  000000 RG	#23-352    *28-869     30-898     30-912    
STAT  	= 174434	#21-161    
STATUS	= 000022	#21-161    
STKLEN	= 000200	 1-62      
STSW0 	= ******  GX	*31-975    
STSW1 	= ******  GX	*31-971    *31-974     38-1410   *38-1445   *38-1448   *38-1452   
SWR   	= 177570	#21-161    
SWSLLT	= 100000	#21-161    
SXBTHM	= 105755	#21-233     37-1326   
SYMNTD	  004534 R	 36-1270   #36-1283   
SYMNT1	  004544 R	 36-1280   #36-1285   
SYNERR	  001562 R	 25-497     25-501     25-513     25-522    #25-555    
SYSAVE	  002476 R	 27-734    #28-769    
SYSAV1	  002530 R	 28-775    #28-780    
SYSMSG	  004366 R	 35-1237   #35-1246   
SYSTRT	  004240 R	 34-1203   #35-1213   
S.DI  	= ******  GX	 32-1073   *32-1075   
S.FW  	= ******  GX	 32-1071   
S..AMC	= 000000	#2-89      
S..BDT	= 000011	#2-100     
S..CHK	= 000012	#2-101     
S..CNK	= 000003	#2-93      
S..CTY	= 000005	#2-95       64-2999   
S..DCP	= 000013	#2-102     
S..DL1	= 000002	#2-91      
S..DTE	= 000002	#2-92      
S..ILS	= 000004	#2-94      
S..KW1	= 000007	#2-97       69-3178    69-3181    69-3184    70-3210   
S..MEM	= 000006	#2-96       66-3080    66-3090   
S..NCN	= 000010	#2-98      
S..NXM	= 000001	#2-90       92-4092   
TCBA  	= 177346	#22-319    *51-2453   *52-2569   
TCBAD1	= 010204 R	 43-1920   #51-2447   
TCBAD2	= 010204 R	 43-1920   #51-2448   
TCBMSZ	  010350 R	 43-1920   #51-2507   
TCBNXT	  010322 R	#51-2494    51-2508   
TCBOOT	  010200 R	 43-1920   #51-2439    51-2468    51-2501    51-2544    52-2584   
TCCM  	= 177342	#22-306    *51-2453    51-2467    51-2474    51-2484   *51-2495    52-2563   *52-2569    52-2583   
                         52-2590    52-2600   *52-2611   
TCDT  	= 177350	#22-320     51-2474    51-2484    52-2590    52-2600   
TCENDZ	= 100000	#22-305    
TCERR 	= 100000	#22-307    
SAVE       CREATED BY  MACRO  ON 10-MAY-88 AT 15:27	PAGE 20

SYMBOL CROSS REFERENCE                                  CREF   04.00 

SYMBOL	VALUE		REFERENCES

TCFUNC	= 000016	#22-311    
TCGO  	= 000001	#22-317     51-2509    52-2624   
TCRDY 	= 000200	#22-310    
TCREAD	= 000004	#22-314     51-2490   
TCREV 	= 004000	#22-308     51-2459    51-2469    51-2477    52-2575    52-2585    52-2593   
TCRNUM	= 000002	#22-313     51-2457    52-2573   
TCSATM	= 000000	#22-312    
TCSET 	  010174 R	 43-1920   #50-2427   
TCST  	= 177340	#22-304     51-2467    52-2583   
TCSTOP	= 000010	#22-315     51-2509    52-2624   
TCUNIT	= 003400	#22-309    
TCWC  	= 177344	#22-318    *51-2495   *52-2611   
TCWERR	  010600 R	 52-2617   #52-2629   
TCWNXT	  010540 R	#52-2610    52-2623   
TCWRIT	= 000014	#22-316     52-2606   
TCWRT 	  010406 R	 43-1920   #52-2562   
TC.A16	= 000020	#15-516     90-4051   
TC.A17	= 000040	#15-515     90-4051   
TC.BAR	= 177346	#15-528    
TC.CLK	= 000100	#15-492    
TC.CMD	= 177342	#15-500    
TC.DAT	= 177350	#15-530    
TC.DT0	= 000020	#15-494    
TC.DT1	= 000010	#15-495    
TC.DT2	= 000004	#15-496    
TC.D16	= 000001	#15-498     90-4048   
TC.D17	= 000002	#15-497     90-4048   
TC.ERR	= 100000	#15-501    
TC.ILO	= 010000	#15-486    
TC.INE	= 000100	#15-514     90-4051    90-4064   
TC.LVL	= 000006	#15-480     60-2911    60-2911   
TC.MMT	= 000040	#15-493    
TC.MTE	= 020000	#15-485    
TC.NXM	= 000400	#15-490    
TC.PAR	= 040000	#15-484    
TC.RDA	= 000006	#15-520    
TC.RDY	= 000200	#15-513     90-4064   
TC.REV	= 004000	#15-504     90-4051   
TC.RMT	= 000002	#15-518    
TC.SAT	= 000000	#15-517    
TC.SST	= 000010	#15-521    
TC.STS	= 177340	#15-482     60-2911   
TC.UPS	= 000200	#15-491    
TC.US0	= 000000	#15-505    
TC.US1	= 000400	#15-506    
TC.US2	= 001000	#15-507    
TC.US3	= 001400	#15-508    
TC.US4	= 002000	#15-509    
TC.US5	= 002400	#15-510    
TC.US6	= 003000	#15-511    
TC.US7	= 003400	#15-512     90-4051   
TC.VEC	= 000214	#15-479     60-2911   
SAVE       CREATED BY  MACRO  ON 10-MAY-88 AT 15:27	PAGE 21

SYMBOL CROSS REFERENCE                                  CREF   04.00 

SYMBOL	VALUE		REFERENCES

TC.WCR	= 177344	#15-526    
TC.WRA	= 000016	#15-524    
TC.WTM	= 000012	#15-522    
TC..BM	= 002000	#15-488    
TC..DI	= 010000	#15-503     90-4051   
TC..DM	= 001000	#15-489    
TC..EZ	= 100000	#15-483    
TC..MM	= 020000	#15-502     90-4051   
TC..RD	= 000004	#15-519    
TC..SE	= 004000	#15-487    
TC..WR	= 000014	#15-523    
TENAD1	= 174410	#21-161    
TENAD2	= 174412	#21-161    
TE.BAS	= 174400	#16-538    
TE.BNX	= 000040	#16-539    
TE.DG1	= 000030	#16-563    
TE.DG2	= 000032	#16-564    
TE.DG3	= 000036	#16-590    
TE.DYC	= 000000	#16-541     85-3927   
TE.EAD	= 000022	#16-560    
TE.EBC	= 000016	#16-553    
TE.EDT	= 000026	#16-562    
TE.LVL	= 000006	#16-534     60-2913    60-2913   
TE.NNN	= 000004	#16-537    
TE.STW	= 000034	#16-568     85-3927   
TE.VEC	= 000774	#16-535    
TE.XAD	= 000020	#16-559    
TE.XA1	= 000010	#16-545    
TE.XA2	= 000012	#16-551    
TE.XBC	= 000014	#16-552    
TE.XDT	= 000024	#16-561    
TE.XW1	= 000006	#16-544    
TE.XW2	= 000004	#16-543    
TE.XW3	= 000002	#16-542    
TOBM  	= 000004	#21-161    
TOIP  	= 000002	#21-161    
TOIT  	= 000001	#21-161    
TO10  	= 000200	#21-161    
TO10AD	= 174420	#21-161    
TO10BC	= 174414	#21-161    
TO10BM	= 000001	#21-161    
TO10DB	= 000400	#21-161    
TO10DN	= 100000	#21-161    
TO10DT	= 174424	#21-161    
TO10ER	= 020000	#21-161    
TO11  	= 000100	#21-161    
TO11AD	= 174422	#21-161    
TO11BC	= 174416	#21-161    
TO11BM	= 020000	#21-161    
TO11DB	= 004000	#21-161    
TO11DN	= 000200	#21-161    
TO11DT	= 174426	#21-161    
SAVE       CREATED BY  MACRO  ON 10-MAY-88 AT 15:27	PAGE 22

SYMBOL CROSS REFERENCE                                  CREF   04.00 

SYMBOL	VALUE		REFERENCES

TO11ER	= 000002	#21-161    
TRPVEC	= 000034	#1-31      *63-2985   
TSTCHR	  017470 R	 88-4018   #88-4023   
TS.CET	= 000001	#16-588    
TS.DEI	= 000010	#16-584     85-3935   
TS.DEP	= 010000	#16-547    
TS.EBM	= 020000	#16-557    
TS.EEE	= 000040	#16-581     85-3929    85-3935   
TS.EET	= 000002	#16-586    
TS.EEX	= 000400	#16-578    
TS.EIS	= 002000	#16-576    
TS.ENT	= 000100	#16-580    
TS.EPE	= 000020	#16-582    
TS.ETD	= 000200	#16-579    
TS.IEN	= 000001	#16-587     85-3930    85-3936   
TS.IFB	= 100000	#16-555    
TS.MPE	= 001000	#16-577    
TS.PEX	= 100000	#16-549    
TS.POF	= 004000	#16-548    
TS.RES	= 004000	#16-575     85-3935   
TS.RM 	= 000010	#16-583     85-3941   
TS.RST	= 000100	#16-565     85-3945   
TS.TBM	= 000001	#16-591    
TS.XDN	= 000004	#16-585    
TS.XEC	= 010000	#16-573    
TS.XEE	= 004000	#16-574    
TS.XER	= 020000	#16-572    
TS.XNT	= 100000	#16-570    
TS.XTS	= 040000	#16-571    
TS.ZST	= 040000	#16-556    
TTYEND	= ******  GX	 31-1012   
TTYEXP	= ******  GX	*31-980    *31-981    *31-982    *31-983    *31-984     31-1003    38-1401   
TT.CRW	= ******  GX	 38-1410   
TT.CTY	= ******  GX	 31-971     31-974     38-1448    38-1452   
TT.OUT	= ******  GX	 38-1445   
TT.RIP	= ******  GX	 38-1410   
TYPBUF	  000064 R	#23-392     41-1634    41-1660    41-1661    42-1837   
TYPCR 	  006276 R	 41-1653   #41-1675   
TYPDAT	  006376 R	 41-1653   #41-1737   
TYPDEC	  006514 R	 41-1653   #41-1763   
TYPDEV	  006320 R	 41-1653   #41-1698   
TYPDON	  006204 R	 41-1653   #41-1658   
TYPERR	  006354 R	 41-1653   #41-1709   
TYPMAX	= 000013	 41-1642   #41-1654   
TYPMSG	  006112 R	 25-480     25-480     25-487     25-487     25-534     25-534     25-557     25-557     26-577    
                         26-577     26-589     26-589     26-617     26-617     26-619     26-619     26-688     26-688    
                         26-699     26-699     27-752     27-752     27-756     27-756     27-758     27-758     28-776    
                         28-776     35-1224    35-1224    35-1232    35-1232    35-1238    35-1238    35-1248    35-1248   
                         36-1258    36-1258    36-1271    36-1271    36-1284    36-1284    36-1300    36-1300    37-1314   
                         37-1314    37-1359    37-1359    37-1365    37-1365    37-1375    37-1375    37-1379    37-1379   
                         37-1383    37-1383    38-1457    38-1457    38-1458    38-1458    38-1462    38-1462    38-1485   
                         38-1485    38-1489    38-1489    39-1514    39-1514   #41-1631   
SAVE       CREATED BY  MACRO  ON 10-MAY-88 AT 15:27	PAGE 23

SYMBOL CROSS REFERENCE                                  CREF   04.00 

SYMBOL	VALUE		REFERENCES

TYPMS1	  006132 R	#41-1640    41-1643    41-1648   
TYPNUM	  006614 R	 41-1703    41-1703    41-1740    41-1740    41-1747    41-1747    41-1750    41-1750    41-1759   
                         41-1765    41-1765   #41-1783   
TYPSAV	  006270 R	 41-1653   #41-1669   
TYPSDV	  006314 R	 41-1653   #41-1692   
TYPSTR	  006366 R	 41-1653    41-1711   #41-1729    41-1731    41-1756    41-1756   
TYPTAB	  006156 R	 41-1647    41-1647   #41-1652    41-1654   
TYPTXT	  006302 R	 41-1653   #41-1682    41-1700    41-1700   
TYPWRN	  006362 R	 41-1653   #41-1719   
UNASG1	= 000032	#21-161    
UNASG2	= 000033	#21-161    
UNASG3	= 000034	#21-161    
UNASG4	= 000035	#21-161    
UNASG5	= 000036	#21-161    
UNASG6	= 000037	#21-161    
U.ACP 	= ******  GX	*26-612    *36-1265   
U.DACP	= ******  GX	 42-1840   
U.DN  	= ******  GX	 26-580     27-742     36-1260    36-1276    36-1286    41-1699    42-1821   
U.LBH 	= ******  GX	*33-1115   *33-1130   
U.LBN 	= ******  GX	*33-1114   *33-1129   
U.RP  	= ******  GX	 26-579     27-738    *32-1054   
U.SZ  	= ******  GX	 26-599     27-760     32-1063    42-1826   
U.UN  	= ******  GX	 26-581     27-742    *32-1046    33-1088    36-1260    36-1287    41-1702    42-1823   
U.VA  	= ******  GX	 26-608     27-740     27-754     36-1262   
VRCHK1	= 000067	#54-2723   
VRS   	= 000022	#1-38      
WBFLAG	  000046 R	#23-364     25-545    *29-879    
WEFLAG	  000060 R	#23-378     35-1222   *49-2412   
WEP   	= 000010	#21-161    
WRNMSG	  001472 R	 41-1720   #41-1724   
WRTERR	  010164 R	 46-2230    49-2376    49-2396    49-2398   #49-2411    52-2630   
WSFLAG	  000047 R	#23-366    *25-471     25-545    *29-877    
WTSAVE	  002670 R	#29-876     29-887    
ZSTOP 	= 040000	#21-161    
$BTMSK	= ******  GX	*31-966    
$DIV  	= ******  GX	 26-600     26-600     32-1064    32-1064    47-2256    47-2256   
$DSW  	= ******  GX	 27-743     39-1513    42-1870   
$DTA  	= ******	 36-1273    36-1288   
$UNIT 	= ******  GX	*31-968    
$$    	= 000037	#25-480     25-480    #25-487     25-487    #25-494     25-494    #25-496     25-496    #25-500    
                         25-500    #25-510     25-510    #25-521     25-521    #25-534     25-534    #25-557     25-557    
                        #26-573     26-573    #26-577     26-577    #26-589     26-589    #26-600     26-600    #26-611    
                         26-611    #26-615     26-615    #26-617     26-617    #26-619     26-619    #26-643     26-643    
                        #26-677     26-677    #26-686     26-686    #26-688     26-688    #26-699     26-699    #26-702    
                         26-702    #27-748     27-748    #27-752     27-752    #27-756     27-756    #27-758     27-758    
                        #28-776     28-776    #29-886     29-886    #30-906     30-906    #32-1043    32-1043   #32-1052   
                         32-1052   #32-1064    32-1064   #33-1112    33-1112   #34-1205    34-1205   #35-1218    35-1218   
                        #35-1224    35-1224   #35-1232    35-1232   #35-1238    35-1238   #35-1248    35-1248   #36-1258   
                         36-1258   #36-1264    36-1264   #36-1268    36-1268   #36-1271    36-1271   #36-1284    36-1284   
                        #36-1297    36-1297   #36-1300    36-1300   #37-1314    37-1314   #37-1323    37-1323   #37-1359   
                         37-1359   #37-1365    37-1365   #37-1375    37-1375   #37-1379    37-1379   #37-1383    37-1383   
                        #38-1457    38-1457   #38-1458    38-1458   #38-1462    38-1462   #38-1480    38-1480   #38-1485   
SAVE       CREATED BY  MACRO  ON 10-MAY-88 AT 15:27	PAGE 24

SYMBOL CROSS REFERENCE                                  CREF   04.00 

SYMBOL	VALUE		REFERENCES

                         38-1485   #38-1489    38-1489   #39-1514    39-1514   #41-1647    41-1647   #41-1700    41-1700   
                        #41-1703    41-1703   #41-1740    41-1740   #41-1747    41-1747   #41-1750    41-1750   #41-1756   
                         41-1756   #41-1765    41-1765   #41-1801    41-1801   #45-1986    45-1986   #45-1987    45-1987   
                        #45-2093    45-2093   #46-2154    46-2154   #46-2170    46-2170   #46-2171    46-2171   #47-2256   
                         47-2256   
$$$   	= 001414 R	#25-480     25-480    #25-487     25-487    #25-534     25-534    #25-557     25-557    #26-577    
                         26-577    #26-589     26-589    #26-617     26-617    #26-619     26-619    #26-688     26-688    
                        #26-699     26-699    #27-752     27-752    #27-756     27-756    #27-758     27-758    #28-776    
                         28-776    #35-1224    35-1224   #35-1232    35-1232   #35-1238    35-1238   #35-1248    35-1248   
                        #36-1258    36-1258   #36-1271    36-1271   #36-1284    36-1284   #36-1300    36-1300   #37-1314   
                         37-1314   #37-1359    37-1359   #37-1365    37-1365   #37-1375    37-1375   #37-1379    37-1379   
                        #37-1383    37-1383   #38-1457    38-1457   #38-1458    38-1458   #38-1462    38-1462   #38-1485   
                         38-1485   #38-1489    38-1489   #39-1514    39-1514   
$$$ADR	= 007120 R	#43-1918    43-1918    43-1918    43-1918    43-1918    43-1918    43-1918    43-1918    43-1918   
                         43-1918   #43-1919    43-1919    43-1919    43-1919    43-1919    43-1919    43-1919    43-1919   
                         43-1919    43-1919   #43-1920    43-1920    43-1920    43-1920    43-1920    43-1920    43-1920   
                         43-1920    43-1920    43-1920   
$$$ARG	= 000005	#25-478     25-478    #25-478     25-478    #25-478     25-478    #25-478     25-478     25-478    
                         25-478     25-478     25-478     25-478     25-478     25-478     25-478     25-478    #25-481    
                         25-481     25-481     25-481     25-481     25-481     25-481     25-481     25-481     25-481    
                         25-481     25-481    #26-571     26-571    #26-571     26-571    #26-571     26-571    #26-571    
                         26-571     26-571     26-571     26-571     26-571     26-571     26-571     26-571     26-571    
                         26-571    #27-742     27-742    #27-742     27-742    #27-742     27-742    #27-742     27-742    
                         27-742     27-742     27-742     27-742     27-742     27-742     27-742     27-742     27-742    
                        #36-1260    36-1260   #36-1260    36-1260   #36-1260    36-1260   #36-1260    36-1260    36-1260   
                         36-1260    36-1260    36-1260    36-1260    36-1260    36-1260    36-1260    36-1260   #38-1424   
                         38-1424    38-1424    38-1424    38-1424    38-1424    38-1424    38-1424    38-1424    38-1424   
                         38-1424   #41-1661    41-1661    41-1661    41-1661    41-1661    41-1661    41-1661    41-1661   
                         41-1661    41-1661    41-1661    41-1661   #42-1867    42-1867    42-1867    42-1867    42-1867   
                         42-1867    42-1867    42-1867    42-1867    42-1867    42-1867    42-1867   
$$$GLB	= ******	 28-770     28-770     28-770     28-770     28-770     28-770     28-770     28-770    
$$$OST	= 000020	#28-770     28-770     28-770    #28-770     28-770     28-770    #28-770     28-770     28-770    
                        #28-770     28-770     28-770    #28-770     28-770     28-770    #28-770     28-770     28-770    
                        #28-770     28-770     28-770    #28-770     28-770     28-770    #28-770    
$$$T1 	= 000013	#25-481     25-481    #41-1661    41-1661   #42-1867    42-1867   
$$$T2 	= 000001	#39-1511    39-1511   
.BRCLK	= 005000	#21-161    
.BTPRM	= ******  GX	*30-901     30-937     34-1200    38-1405    39-1498   
.CECLK	= 004000	#21-161    
.CLRMR	= 006000	#21-161    
.CLRUN	= 010000	#21-161    
.COMEF	= ******  GX	 28-774     38-1419    38-1421    38-1430    38-1464   
.CONBT	= 012000	#21-161    
.CPUSN	= ******  GX	*35-1215   
.CSHRG	= 164000	#21-161    
.DATE3	= ******  GX	*35-1214   
.DQPBA	= ******  GX	*31-973    
.DRLTC	= 015000	#21-161    
.DSACF	= 066000	#21-161    
.DSIOJ	= 065000	#21-161    
.EIOJA	= 067000	#21-161    
.FEMOD	= ******  GX	*38-1437   
SAVE       CREATED BY  MACRO  ON 10-MAY-88 AT 15:27	PAGE 25

SYMBOL CROSS REFERENCE                                  CREF   04.00 

SYMBOL	VALUE		REFERENCES

.FESTB	= ******  GX	 66-3059   
.GFNR 	= 102000	#21-161    
.HRDWR	= ******  GX	*35-1216   
.INICL	= 070000	#21-161    
.IRLTC	= 014000	#21-161    
.KLIWD	= ******  GX	*39-1510   
.KLNMD	= ******  GX	 38-1432    38-1435    38-1437   *38-1441    38-1446    38-1455    38-1467    38-1469   
.KLNSW	= ******  GX	*38-1435   
.LCRDL	= 052000	#21-161    
.LCRDR	= 051000	#21-161    
.LCRM1	= 057000	#21-161    
.LCRM2	= 056000	#21-161    
.LCRM3	= 055000	#21-161    
.LCRM4	= 054000	#21-161    
.LCRM5	= 053000	#21-161    
.LDAR 	= 077000	#21-161    
.LDBRL	= 043000	#21-161    
.LDBRR	= 042000	#21-161    
.LDCK1	= 046000	#21-161    
.LDCK2	= 047000	#21-161    
.LDDIS	= 045000	#21-161    
.LDRJD	= 064000	#21-161    
.LDRJV	= 063000	#21-161    
.LDRM1	= 060000	#21-161    
.LDRM2	= 061000	#21-161    
.LDRM3	= 062000	#21-161    
.LDSEL	= 044000	#21-161    
.MEMRS	= 076000	#21-161    
.NOERR	= ******  GX	*28-781    *34-1204   
.PCAB1	= 150000	#21-161    
.PCAB2	= 151000	#21-161    
.PCAB3	= 152000	#21-161    
.PCAB4	= 153000	#21-161    
.PRDTE	= ******  GX	*34-1192    35-1229   
.PRSTA	= ******  GX	*34-1196   *35-1231   
.PUDBA	= ******  GX	 26-598     27-736     32-1062    42-1819   
.PUDEA	= ******  GX	 27-761     42-1827   
.RCRM1	= 147000	#21-161    
.RCRM2	= 146000	#21-161    
.RCRM3	= 145000	#21-161    
.RCRM4	= 144000	#21-161    
.RCSPF	= 141000	#21-161    
.RDJ14	= 134000	#21-161    
.RDJ71	= 135000	#21-161    
.RDMAB	= 133000	#21-161    
.RHSN 	= ******  GX	*33-1111   *33-1119   
.RPADR	= ******  GX	 37-1332    37-1351    37-1363    37-1367    37-1385   *37-1391   
.SECLK	= 003000	#21-161    
.SERFG	= ******  GX	*35-1217   
.SETMR	= 007000	#21-161    
.SETRN	= 011000	#21-161    
.SSCLK	= 002000	#21-161    
SAVE       CREATED BY  MACRO  ON 10-MAY-88 AT 15:27	PAGE 26

SYMBOL CROSS REFERENCE                                  CREF   04.00 

SYMBOL	VALUE		REFERENCES

.STDTA	= ******  GX	 32-1066   
.STDTZ	= ******  GX	 32-1068   
.STPCL	= 000000	#21-161    
.STRCL	= 001000	#21-161    
.VERNO	= ******  GX	 35-1247   
.WRMBX	= 071000	#21-161    
..DTP2	= ******  GX	 34-1205    34-1205   
..ENB0	= ******  GX	 35-1218    35-1218   
..FSTD	= ******  GX	 42-1841   
..STIN	= ******  GX	 38-1480    38-1480   
SAVE       CREATED BY  MACRO  ON 10-MAY-88 AT 15:27	PAGE 27

MACRO CROSS REFERENCE                                   CREF   04.00 

MACRO NAME	REFERENCES

ALUN$S		#21-159     25-478     26-571     27-742     36-1260   
CALL  		#1-23      #21-160     25-480     25-487     25-494     25-496     25-500     25-510     25-521     25-534    
                 25-557     26-573     26-577     26-589     26-600     26-611     26-615     26-617     26-619     26-643    
                 26-677     26-686     26-688     26-699     26-702     27-748     27-752     27-756     27-758     28-776    
                 29-886     30-906     32-1043    32-1052    32-1064    33-1112    34-1205    35-1218    35-1224    35-1232   
                 35-1238    35-1248    36-1258    36-1264    36-1268    36-1271    36-1284    36-1297    36-1300    37-1314   
                 37-1323    37-1359    37-1365    37-1375    37-1379    37-1383    38-1457    38-1458    38-1462    38-1480   
                 38-1485    38-1489    39-1514    41-1647    41-1700    41-1703    41-1740    41-1747    41-1750    41-1756   
                 41-1765    41-1801    45-1986    45-1987    45-2093    46-2154    46-2170    46-2171    47-2256   
CKSERR		#59-2879    66-3079    66-3089    67-3132    70-3209    73-3338    76-3483    78-3556    78-3565    81-3731   
CK11SC		#56-2773    65-3030    66-3080    66-3090    67-3120    67-3127    67-3133    68-3148    69-3178    69-3181   
                 69-3184    70-3210    73-3288    73-3299    73-3339    73-3373    74-3401    74-3411    74-3418    75-3435   
                 75-3439    75-3444    75-3449    75-3454    76-3479    76-3484    77-3538    78-3557    78-3566    79-3581   
                 81-3732    81-3737    81-3744    81-3751    81-3760    81-3776    81-3782    81-3795    81-3806    81-3820   
                 84-3891    84-3903    84-3914    85-3932    85-3938    85-3943    86-3960    87-3984    87-3989    88-4003   
                 88-4008    92-4086    92-4092    93-4122    93-4135    93-4149    93-4157    93-4164    93-4169    93-4174   
                 93-4184   
CLEF$S		#21-159     38-1399    38-1426   
DEVICE		#58-2841    60-2904    60-2906    60-2907    60-2908    60-2909    60-2910    60-2911    60-2912    60-2913   
                 60-2914    60-2915    60-2916   
DEVTXT		#62-2933    62-2940    62-2941    62-2942    62-2943    62-2944    62-2945    62-2946    62-2947    62-2948   
                 62-2949    62-2950    62-2951    62-2952    62-2953    62-2954    62-2955   
DIR$  		#25-478     25-478    #25-481     25-481    #26-571     26-571    #27-742     27-742    #28-770     28-770    
                #36-1260    36-1260   #38-1399    38-1399   #38-1424    38-1424   #38-1425    38-1425   #38-1426    38-1426   
                #38-1481    38-1481   #39-1511    39-1511   #39-1523    39-1523   #41-1661    41-1661   #42-1867    42-1867   
DRIVER		#43-1887    43-1918    43-1919    43-1920   
ERROR 		#21-179     25-534     25-557     26-577     26-589     26-617     26-688     26-699     27-752     27-756    
                 28-776     35-1224    38-1485   
ERR$  		#25-478    #25-481    #26-571    #27-742    #28-770    #36-1260   #38-1399   #38-1424   #38-1425   #38-1426   
                #38-1481   #39-1511   #39-1523   #41-1661   #42-1867   
EXIT$S		#21-159     39-1523   
GTIM$S		#21-159     28-770    
MFPI  		#21-160     33-1102    33-1103    34-1156    34-1157    34-1161    34-1162   
MFPS  		#21-160    
MOV$  		#25-478    #25-478     25-478     25-478     25-478    #25-481    #25-481     25-481     25-481     25-481    
                 25-481     25-481     25-481    #26-571    #26-571     26-571     26-571     26-571    #27-742    #27-742    
                 27-742     27-742     27-742    #28-770     28-770    #36-1260   #36-1260    36-1260    36-1260    36-1260   
                #38-1399    38-1399   #38-1424    38-1424    38-1424    38-1424    38-1424   #38-1425    38-1425   #38-1426   
                 38-1426   #38-1481    38-1481   #39-1511    39-1511   #41-1661   #41-1661    41-1661    41-1661    41-1661   
                 41-1661    41-1661    41-1661    41-1661   #42-1867   #42-1867    42-1867    42-1867    42-1867    42-1867   
                 42-1867    42-1867    42-1867    42-1867    42-1867   
MRKT$S		#21-159     38-1424   
MTPI  		#21-160     33-1139    33-1140    34-1184    34-1185    34-1198    34-1199   
MTPS  		#21-160     33-1104    33-1105    34-1158    34-1159    34-1163    34-1164   
MVB$  		#25-481     25-481    #39-1511    39-1511   #41-1661    41-1661   #42-1867    42-1867   
NBL$  		#25-478     25-478    #26-571     26-571    #27-742     27-742    #36-1260    36-1260   
ND    		#17-594     55-2746    55-2747    55-2748    55-2749   
OFF$  		#28-770     28-770     28-770     28-770     28-770     28-770     28-770     28-770     28-770    
POP   		#21-160     27-749     30-913     36-1269    41-1663    41-1664    41-1803    45-2050    46-2234    47-2259   
                 95-4227    95-4227    95-4227   
PUSH  		#21-160     25-480     25-487     25-534     25-557     26-577     26-589     26-617     26-619     26-688    
                 26-699     27-747     27-752     27-756     27-758     28-776     28-848     35-1224    35-1232    35-1238   
SAVE       CREATED BY  MACRO  ON 10-MAY-88 AT 15:27	PAGE 28

MACRO CROSS REFERENCE                                   CREF   04.00 

MACRO NAME	REFERENCES

                 35-1248    36-1258    36-1267    36-1271    36-1284    36-1300    37-1314    37-1359    37-1365    37-1375   
                 37-1379    37-1383    38-1457    38-1458    38-1462    38-1485    38-1489    39-1514    41-1632    41-1798   
                 45-1971    45-1991    45-1997    45-2081    45-2105    45-2107    46-2186    46-2192    47-2254    48-2342   
                 48-2349    48-2351    51-2533    51-2540    51-2542    95-4227    95-4227    95-4227    95-4227    95-4227   
QDPB$S		#25-481     25-481    #41-1661    41-1661   #42-1867    42-1867   
QIOSY$		#21-159     21-162    
QIOW$S		#21-159     25-481     41-1661    42-1867   
RETURN		#1-23      #21-160     40-1552    40-1582    40-1608    41-1665    41-1688    41-1705    41-1733    41-1767   
                 41-1806    42-1831    42-1879    44-1940    45-2052    46-2159    46-2236    47-2260    49-2405    50-2429   
                 52-2625   
RFA$  		#39-1511    39-1511    39-1511   
RQST$S		#21-159     39-1511   
RVP$  		#25-478     25-478    #25-481     25-481    #26-571     26-571    #27-742     27-742    #36-1260    36-1260   
                #38-1424    38-1424   #41-1661    41-1661   #42-1867    42-1867   
SPD   		#24-434     24-438     24-439     24-440     24-441     24-442     24-443     24-444     24-445     24-446    
                 24-447     24-448     24-449     24-450     24-451     24-452     24-453    
STOPCD		#2-107     
TYPE  		#21-166     25-480     25-487     25-534     25-557     26-577     26-589     26-617     26-619     26-688    
                 26-699     27-752     27-756     27-758     28-776     35-1224    35-1232    35-1238    35-1248    36-1258   
                 36-1271    36-1284    36-1300    37-1314    37-1359    37-1365    37-1375    37-1379    37-1383    38-1457   
                 38-1458    38-1462    38-1485    38-1489    39-1514   
WARN  		#21-183     26-619     36-1271    36-1300    37-1314    37-1359    37-1365    37-1375    37-1379    37-1383   
                 38-1457    38-1458    38-1462    38-1489    39-1514   
WTSE$S		#21-159     38-1425    38-1481   
$CKINT		#57-2810    81-3693    81-3694    81-3696    84-3886    85-3935    86-3967    87-3994    88-4013    90-4064   
                 91-4074   
$DEF  		#21-159     21-161    
.CKTTS		#17-598     95-4227   
.ENB  		#21-160     35-1242   
.ENB6 		#21-160     38-1454   
.INH  		#21-160     28-782     35-1240   
.INH6 		#21-160     38-1429