Google
 

Trailing-Edge - PDP-10 Archives - cuspbinsrc_2of2_bb-fp63b-sb - 10,7/feload/feload.lst
There are 4 other files named feload.lst in the archive. Click here to see a list.
FELOAD -- BOOT PROGRAM TO FIND & LOAD RSX20F V1(4) 10-FEB-88	MACDLX V31  02-MAY-88  11:28
FELOAD.P11    02-MAY-88 11:28		TABLE OF CONTENTS

    67		UNIVERSALS -- F11HOM - Format of the FILES-11 home block, offsets as seen from 11
   106	 UNIVERSALS -- T10HOM - Format of TOPS10 home block, as seen from 11 side
   136	 UNIVERSALS -- F11HED - format of FILES-11 file header block, as seen from 11
   186	 UNIVERSALS -- IOBITS - words and bits in the I/O page, seen from the 11
   342	 UNIVERSALS -- IOBITS - Basic CPU
   (1)	 UNIVERSALS -- IOBITS - DL11 console terminal
   (1)	 UNIVERSALS -- IOBITS - RH11/RP06 bit definitions
   344	 UNIVERSALS -- KLDHED - Format of entry in KLDCP directory
   373		DEFINITIONS - "helper" macros
   395		BLOCK 0 booting code
   594		END OF BLOCK 0 CODE
   599	000776	000002				.PRINT	1000-.;LOCATIONS LEFT IN BLOCK 0 BOOT
   601		START OF BLOCK 4-7 CODE
   618		BOOT IN AND START 20F FRONT END
  1033		END OF 2ND PART
  1037	007402	000376				.PRINT	10000-.;	BYTES REMAINING IN 2ND PART OF BOOT
  1039		IMPURE NON-INITIALIZED DATA
  1081	011226	011226				.PRINT .;END OF IMPURE AREA
FELOAD -- BOOT PROGRAM TO FIND & LOAD RSX20F V1(4) 10-FEB-88	MACDLX V31  02-MAY-88  11:28  PAGE 1
FELOAD.P11    02-MAY-88 11:28

     1						.TITLE	FELOAD -- BOOT PROGRAM TO FIND & LOAD RSX20F V1(4) 10-FEB-88
     2
     3					;COPYRIGHT (C) DIGITAL EQUIPMENT CORPORATION 1988.  ALL RIGHTS RESERVED.
     4					;
     5					;
     6					;THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
     7					;ONLY  IN  ACCORDANCE  WITH  THE  TERMS  OF  SUCH LICENSE AND WITH THE
     8					;INCLUSION OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR ANY  OTHER
     9					;COPIES THEREOF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY
    10					;OTHER PERSON.  NO TITLE TO AND OWNERSHIP OF THE  SOFTWARE  IS  HEREBY
    11					;TRANSFERRED.
    12					;
    13					;THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT  NOTICE
    14					;AND  SHOULD  NOT  BE  CONSTRUED  AS A COMMITMENT BY DIGITAL EQUIPMENT
    15					;CORPORATION.
    16					;
    17					;DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY  OF  ITS
    18					;SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY DIGITAL.
    19
    20					;ORIGINAL PROGRAM SUPPLIED BY JEFF GUENTHER, ADP NETWORK SERVICES,
    21					;ANN ARBOR, MICHIGAN.
    22
    23					;EDIT HISTORY
    24					;
    25					;EDIT	DESCRIPTION
    26					;----	-----------
    27					;1	MODIFY SENSE OF LEFTMOST SWITCH-REGISTER BIT
    28					;	TEST SO THAT '1' MEANS LOAD KLDCP AND '0' MEANS
    29					;	LOAD RSX-20F.  ADD TITLE, COPYRIGHT STATEMENT.
    30					;	28-JAN-88/JJF
    31					;
    32					;2	CHANGE "LOADING CORIMG.SYS" TO "LOADING RSX-20F".  ALSO CHANGE
    33					;	ALL TEXT MESSAGES TO MAKE THEM MORE MEANINGFUL; ADD PREFIX 
    34					;	QUESTION-MARK BEFORE ALL ERROR MESSAGES TO FIT INTO TOPS STANDARDS.
    35					;	05-FEB-88/JJF
    36					;
    37					;3	EXTEND TABLE OF .STDTB VALUES TO INCLUDE THE ONE FOR VERSION
    38					;	16-00 OF RSX-20F.
    39					;	10-FEB-88 /JJF
    40					;
    41					;[END OF EDIT HISTORY]
    42
    43					;;	FELOAD IS A SMALL PROGRAM USED TO LOAD THE "FRONT END" PROGRAM.
    44					;;	TAKING CUES FROM THE PDP11 SWITCH REGISTER AND THE OPERATOR
    45					;;	CONSOLE TELETYPE, IT DECIDES WHICH FRONT END SYSTEM (IE: RSX20F
    46					;;	OR KLDCP) TO RUN, SEARCHES THE APPROPRIATE FRONT END DIRECTORY
    47					;;	AND LOADS THE CORRECT BOOT FOR THE SYSTEM AND STARTS IT BY
    48					;;	BRANCHING TO LOCATION 0.
    49
    50						.ENABL	ABS,LC
    51						.ENABL	LC		;REALLY LOWER CASE
    52
    53
    54					;;	If FELOAD is started at it's "starting address", rather than 0
    55					;;	then it will load rsx20f unconditionally.  This is to support
    56					;;	booting from KLDCP into RSX20F via the .P 20F or >. RSX commands.
FELOAD -- BOOT PROGRAM TO FIND & LOAD RSX20F V1(4) 10-FEB-88	MACDLX V31  02-MAY-88  11:28  PAGE 1-1
FELOAD.P11    02-MAY-88 11:28

    57
    58					;	First, the BM873YJ rom reads our block 0 code into physical core
    59					;	block 0.  Then we read in blocks 4-7 into physical locations 4000-7777.
    60					;	We always use 10000-10777 as impure data storage.
    61					;	Then if we are booting rsx20f we move ourselves to 130000 and above.
    62
    63
    64		130000			NEWADR=	130000	;RELOCATION IF WE NEED TO LOAD 20F
    65		012000			KLDIR=	12000	;BUILD KLDCP DIRECTORY HERE UPWARDS
FELOAD -- BOOT PROGRAM TO FIND & LOAD RSX20F V1(4) 10-FEB-88	MACDLX V31  02-MAY-88  11:28  PAGE 2
FELOAD.P11    02-MAY-88 11:28		UNIVERSALS -- F11HOM - FORMAT OF THE FILES-11 HOME BLOCK, OFFSETS AS SEEN FROM 11

    67					.SBTTL	UNIVERSALS -- F11HOM - Format of the FILES-11 home block, offsets as seen from 1
    68
    69					.MACRO	BSYM	.name,.value	;;MACRO TO DEFINE SYMBOLS
    70						W.'.name'=.offset	;;define name as current offset
    71						.offset=.offset+'.value'.;;redefine offset for next symbol
    72					.ENDM	BSYM
    73
    74					.MACRO	F11HOM	;;ALL OFFSETS BELOW ARE GIVEN IN DECIMAL
    75						.offset=0	;;	START OFF AT 0
    76						BSYM	IBSZ,2	;;	OFFSET TO INDEX-BIT-MAP SIZE
    77								;;	# OF BLOCKS IN THE "SAT" PORTION ONLY
    78								;;	SO THE FILE INDEXF.SYS IS ALWAYS LARGER
    79								;;	SINCE IT INCLUDES THE FILE HEADERS ("RIB"S)
    80								;;	AS WELL AS THE SAT.
    81						BSYM	IBLB,4	;;	DISK ADDRESS (LBN) OF THE INDEX-BIT-MAP
    82						BSYM	FMAX,2	;;	# OF FILES ALLOWED
    83						BSYM	SBCL,2	;;	STORAGE-BIT-MAP CLUSTER SIZE
    84						BSYM	DVTY,2	;;	DISK-DEVICE TYPE
    85						BSYM	VLEV,2	;;	STRUCTURE LEVEL
    86						BSYM	VNAM,12	;;	12 ASCII CHARACTERS "VOLUME NAME"
    87						BSYM	RES1,4	;;	"RESERVED"
    88						BSYM	VOWN,2	;;	VOLUME OWNERS
    89						BSYM	VPRO,2	;;	VOLUME PROTECTION
    90						BSYM	VCHA,2	;;	VOLUME CHARACTERISTICS
    91						BSYM	DFPR,2	;;	DEFAULT PROTECTION
    92						BSYM	RES2,6	;;	"RESERVED"
    93						BSYM	WISZ,1	;;	DEFAULT NUMBER OF RETRIEVAL POINTERS IN A WINDOW
    94						BSYM	FIEX,1	;;	DEFAULT NUMBER OF BLOCKS TO EXTEND FILES
    95						BSYM	LRUC,1	;;	NUMBER OF ENTRIES IN DIRECTORY LRU
    96						BSYM	AVAL,11	;;	"AVAILABLE SPACE"
    97						BSYM	CHK1,2	;;	CHECKSUM OF WORDS 0-28.
    98						BSYM	VDAT,14	;;	CREATION DATE AND TIME
    99						BSYM	VHL,100	;;	VOLUME-HEADER LABEL
   100						BSYM	SYSI,82	;;	SYSTEM-SPECIFIC INFORMATION
   101						BSYM	RVOL,254;;	RELATIVE VOLUME TABLE
   102						BSYM	CHK2,2	;;	CHECKSUM OF HOME BLOCK WORDS 0 THRU 255
   103					.ENDM	F11HOM
   104	000000					F11HOM
FELOAD -- BOOT PROGRAM TO FIND & LOAD RSX20F V1(4) 10-FEB-88	MACDLX V31  02-MAY-88  11:28  PAGE 3
FELOAD.P11    02-MAY-88 11:28		UNIVERSALS -- T10HOM - FORMAT OF TOPS10 HOME BLOCK, AS SEEN FROM 11 SIDE

   106					.SBTTL UNIVERSALS -- T10HOM - Format of TOPS10 home block, as seen from 11 side
   107
   108					.MACRO	WSYM	.NAME,.VALUE
   109						'.NAME'='.VALUE'.
   110					.ENDM	WSYM
   111
   112					.MACRO	T10HOM
   113					;	This stuff defines the "PDP11 WORD NUMBER" of each thing
   114					WSYM	HOMNA0,0	;;OFFSET CONTAINING SIXBIT .HOM. (TRUNCATED TO 16 BITS)
   115						SIXHOM=105755	;;TOPS10 SIXBIT "HOM" TRUNCATED TO 16 BITS
   116					WSYM	HOMNA1,1	;;2ND HALF OF SIXBIT .HOM. (ALWAYS 0)
   117
   118					;;	HERE ARE THE KLDCP POINTERS
   119					WSYM	HOMKV1,98	;;CONTAINS .RAD50 /KL / IF KLDCP VERSION 1
   120					WSYM	HOMKV2,106	;;CONTAINS .RAD50 /KLA/ IF KLDCP VERSION 2
   121					WSYM	HOMKV3,107	;;CONTAINS .RAD50 /D10/ IF KLDCP VERSION 2
   122					WSYM	HOMKCY,108	;;CONTAINS CYLINDER OF KLADFE.SYS
   123					WSYM	HOMKTS,109	;;CONTAINS TRACK/SECTOR OF KLADFE.SYS
   124					WSYM	HOMKLN,110	;;CONTAINS LENGTH OF KLADFE.SYS
   125
   126					;;	HERE ARE THE FILES11 POINTERS
   127					WSYM	HOMFEV,98	;;CONTAINS 100000 IF FILES11 VALID
   128						VALID=100000	;;BIT ON IF FILES11 VALID
   129					WSYM	HOMFE0,99	;;CONTAINS LBN OF FILES11 FILE SYSTEM
   130					WSYM	HOMFLN,101	;;LENGTH OF CONTIGUOUS FILES11 FILE SYSTEM
   131					.ENDM	T10HOM
   132
   133	000000					T10HOM		;;FORCE DEFAULT DEFINITIONS
   134
FELOAD -- BOOT PROGRAM TO FIND & LOAD RSX20F V1(4) 10-FEB-88	MACDLX V31  02-MAY-88  11:28  PAGE 4
FELOAD.P11    02-MAY-88 11:28		UNIVERSALS -- F11HED - FORMAT OF FILES-11 FILE HEADER BLOCK, AS SEEN FROM 11

   136					.SBTTL UNIVERSALS -- F11HED - format of FILES-11 file header block, as seen from 11
   137
   138					.MACRO	BSYM	.name,.value
   139						W.'.name'=.offset
   140						.offset=.offset+'.value'.
   141					.ENDM	BSYM
   142
   143					.MACRO	F11HED
   144						.offset=0
   145						BSYM	IDOF,1	;;	OFFSET INTO THE ID AREA
   146						BSYM	MPOF,1	;;	OFFSET INTO THE MAP AREA (FROM THE ID AREA)
   147						BSYM	FNUM,2	;;	FILE NUMBER
   148						BSYM	FSEQ,2	;;	FILE SEQUENCE
   149						BSYM	FLEV,2	;;	STRUCTURE LEVEL AND SYSTEM NUMBER
   150						BSYM	PROG,1	;;	MEMBER NUMBER
   151						BSYM	PROJ,1	;;	GROUP NUMBER
   152						BSYM	FPRO,2	;;	FILE-PROTECTION CODE
   153						BSYM	UCHA,1	;;	USER CONTROLLER FILE CHARACTERISTICS
   154					.ENDM	F11HED
   155	000000					F11HED
   156
   157					.MACRO	F11FID	;; DEFINE ID AREA
   158						.offset=0	;; OFFSET FROM THE START OF THE ID AREA
   159						BSYM	FNAM,6	;; 6 BYTES OF RAD50, 3 CHARS PER 2 BYTES
   160						BSYM	FTYP,2	;; 2 BYTES OF FILE TYPE IN RAD50
   161						BSYM	FVER,2	;; FILE VERSION # IN BINARY
   162						BSYM	RVNO,2	;; REVISION # IN BINARY
   163						BSYM	RVDT,7	;; REVISION DATE IN ASCII ddmmmyy FORMAT
   164						BSYM	RVTI,6	;; REVISION TIME IN ASCII hhmmss FORMAT
   165						BSYM	CRDT,7	;; CREATION DATE IN ASCII ddmmmyy FORMAT
   166						BSYM	CRTI,6	;; CREATE TIME IN hhmmss FORMAT
   167						BSYM	EXDT,7	;; EXPIRE DATE IN ASCII ddmmmyy FORMAT
   168						.ENDM	F11FID
   169	000000					F11FID		;;INCARNATE THE SYMBOLS
   170
   171					.MACRO	F11MAP		;; DEFINE THE MAPPING AREA TOO
   172						.offset=0
   173						BSYM	ESQN,1	;; EXTENSION SEGMENT NUMBER
   174						BSYM	ERVN,1	;; EXTENSION RELATIVE VOLUME NUMBER (NEVER USED)
   175						BSYM	EFNU,2	;; EXTENSION FILE NUMBER
   176						BSYM	EFSQ,2	;; EXTENSION SEQUENCE NUMBER
   177						BSYM	CTSZ,1	;; # OF BYTES IN A "BLOCK-COUNT FIELD" - ALWAYS 1
   178						BSYM	LBSZ,1	;; # BYTES IN "LOGICAL BLOCK NUMBER FIELD" - ALWAYS 3
   179						BSYM	USE,1	;; # RETRIEVAL POINTERS
   180						BSYM	MAX,1	;; MAX # RETRIEVAL SLOTS IN THIS MAP
   181						BSYM	RTRV,0	;; OFFSET TO RETRIEVAL POINTERS
   182					.ENDM	F11MAP
   183	000000					F11MAP		;;INCARNATE THE SYMBOLS
   184
FELOAD -- BOOT PROGRAM TO FIND & LOAD RSX20F V1(4) 10-FEB-88	MACDLX V31  02-MAY-88  11:28  PAGE 5
FELOAD.P11    02-MAY-88 11:28		UNIVERSALS -- IOBITS - WORDS AND BITS IN THE I/O PAGE, SEEN FROM THE 11

   186					.SBTTL UNIVERSALS -- IOBITS - words and bits in the I/O page, seen from the 11
   187
   188					.MACRO	IOBITS
   189					.SBTTL UNIVERSALS -- IOBITS - Basic CPU
   190
   191					V.CPU=	004	;CPU errors VECTOR
   192					V.ILL=	010	;Illegal instruction VECTOR
   193					V.RES=	010	;Reserved instruction VECTOR
   194					V.BPT=	014	;BPT, breakpoint trap VECTOR
   195					V.IOT=	020	;IOT, input/output trap VECTOR
   196					V.PWF=	024	;Power Fail trap VECTOR
   197					V.EMT=	030	;EMT, emulator trap VECTOR
   198					V.TRP=	034	;TRAP instruction
   199
   200
   201					PS=	177776	;Processor Status word (IE: PS)
   202					R.SL=	177774	;Stack limit register
   203
   204					R.R7=	177707	;R7
   205					R.PC=	R.R7	;Another name
   206					R.R6=	177706	;R6
   207					R.SP=	R.R6	;Another name
   208
   209					R.R5=	177705	;R5
   210					R.R4=	177704	;R4
   211					R.R3=	177703	;R3
   212					R.R2=	177702	;R2
   213					R.R1=	177701	;R1
   214					R.R0=	177700	;R0
   215
   216					R.SWR=	177570	;Switch register
   217					SWR=R.SWR	;Another name
   218					R.DSP=	R.SWR	;Display register
FELOAD -- BOOT PROGRAM TO FIND & LOAD RSX20F V1(4) 10-FEB-88	MACDLX V31  02-MAY-88  11:28  PAGE 6
FELOAD.P11    02-MAY-88 11:28		UNIVERSALS -- IOBITS - WORDS AND BITS IN THE I/O PAGE, SEEN FROM THE 11

   220					.SBTTL UNIVERSALS -- IOBITS - DL11 console terminal
   221
   222					V.DLI=	060	;CONSOLE TERMINAL KEYBOARD VECTOR
   223					V.DLO=	064	;CONSOLE TERMINAL PRINTER VECTOR
   224
   225					DL.RSR=	177560	;RECEIVER STATUS REGISTER
   226					  DLDSCH=100000	;R/O DATASET STATUS CHANGE. REQUEST DATASET INTERRUPT.
   227					  DLRNGI=40000	;R/O RING INDICATOR. IF RING COMES ON, SETS DLDSCH.
   228					  DLCTS=20000	;R/O CLEAR TO SEND. IF CTS CHANGES, SETS DLDSCH
   229					  DLCD=10000	;R/O CARRIER DETECT. IF CD CHANGES, SETS DLDSCH.
   230					  DLRA=4000	;R/O RECEIVER ACTIVE. SET IF UART IS ASSEMBLING A CHARACTER.
   231					  DLSRD=2000	;R/O SECONDARY RECEIVED DATA. IF SRD CHANGES, SETS DLDSCH.
   232					  DLRD=200	;R/O RECEIVER DONE.  SET IF COMPLETE CHARACTER IS READY TO READ.
   233					  DLRIE=100	;R/W RECEIVER INTERRUPT ENABLE.  DO INTERRUPT IF DLRD TURNS ON.
   234					  DLDIE=40	;R/W DATASET INTERRUPT ENABLE. DO INTERRUPT IF DLDSCH TURNS ON
   235					  DLSTD=10	;R/W SECONDARY TRANSMITTED DATA. IF SET, SIGNAL GOES ON.
   236					  DLRTS=4	;R/W REQUEST TO SEND. IF SET, SIGNAL GOES ON.
   237					  DLDTR=2	;R/W DATA TERMINAL READY.  IF SET, SIGNAL GOES ON.
   238					  DLRDRE=1	;W/O READER ENABLE.  ADVANCE ASR PTR ONE FRAME IF AUTOMATIC.
   239
   240					DL.RBF=	177562	;RECEIVER BUFFER
   241					  DLRERR=100000	;R/O RECEIVER ERROR.  LOGICAL OR OF (DLROVR,DLRFRM,DLRPAR)
   242					  DLROVR=40000	;R/O RECEIVER OVERRUN.  THE OLD CHARACTER IS REPLACED WITH NEW.
   243					  DLRFRM=20000	;R/O RECEIVER FRAMING ERROR.
   244					  DLRPAR=10000	;R/O RECEIVER DATA PARITY ERROR.
   245					  DLRDAT=377	;R/O RECEIVER DATA. THE CHARACTER READ.
   246
   247					DL.XSR=	177564	;XMITTER STATUS
   248					  DLXRDY=200	;R/O TRANSMITTER READY. REQUESTS TRANSMITTER INTRP.
   249					  DLXIE=100	;R/W TRANSMITTER INTERRUPT ENABLED. DO INTERRUPT IF DLXRDY SET.
   250					  DLXMNT=4	;R/W TRANSMITTER MAINTENENCE.  CAUSES OUTPUT TO INPUT LOOP.
   251					  DLXBRK=1	;R/W TRANSMITTER BREAK.  FORCE BREAK SIGNAL UNTIL CLEARED.
   252
   253					DL.XBF=	177566	;XMITTER BUFFER
   254					  DLXDAT=377	;W/O TRANSMIT DATA. CHARACTER TO TYPE.
FELOAD -- BOOT PROGRAM TO FIND & LOAD RSX20F V1(4) 10-FEB-88	MACDLX V31  02-MAY-88  11:28  PAGE 7
FELOAD.P11    02-MAY-88 11:28		UNIVERSALS -- IOBITS - WORDS AND BITS IN THE I/O PAGE, SEEN FROM THE 11

   256					.SBTTL UNIVERSALS -- IOBITS - RH11/RP06 bit definitions
   257
   258
   259					V.RH11=	254	;RH11 INTERRUPT VECTOR
   260
   261					RP.CS1=	176700	;;CONTROL AND STATUS REGISTER 1
   262					  RPSC=100000	;;R/O SPECIAL CONDITION. LOGICAL OR OF "RPTRE","RPATTN","RPMCPE"
   263					  RPTRE=40000	;;R/O TRANSFER ERROR.  LOR OF DLT,WCE,UPE,NED,NEM,PGE,
   264							;;MXF, MDPE, OR A DRIVE ERROR DURING DATA XFER.
   265					  RPCPE=20000	;;R/O CONTROL BUS PARITY ERROR (DURING REMOTE REGISTER READ)
   266					  RPDVA=4000	;;R/O DRIVE AVAILABLE. 1=NOT BUSY ON OTHER PORT.
   267					  RPPSEL=2000	;;R/W PORT SELECT. 1=DO DATA TRANSFER VIA UNIBUS B.
   268					  RPAD17=1000	;;R/W UNIBUS ADDRESS BIT 17.
   269					  RPAD16=400	;;R/W UNIBUS ADDRESS BIT 16.
   270					  RPRDY=200	;;R/O READY. 1=DATA TRANSFER IN PROGRESS. 0=DONE.
   271					  RPIE=100	;;R/W INTERRUPT ENABLE. DO INTERUPT IF RPRDY OR RPATTN GET SET.
   272					  RPFUNC=77	;;R/W FUNCTION AND GO BITS.
   273					    RPOPNP=0	;  NO OPERATION
   274					    RPOPUL=2	;  UNLOAD/STANDBY
   275					    RPOPRC=6	;  RECALIBRATE
   276					    RPOPDC=10	;  DRIVE CLEAR
   277					    RPOPRP=12	;  RELEASE PORT
   278					    RPOPSR=30	;  SEARCH COMMAND
   279					    RPOPWC=50	;  WRITE CHECK DATA
   280					    RPOPWH=52	;  WRITE CHECK HEADER & DATA
   281					    RPOPWD=60	;  WRITE DATA
   282					    RPOPWF=62	;  WRITE FORMAT (HEADER & DATA)
   283					    RPOPRD=70	;  READ DATA
   284					    RPOPRF=72	;  READ FORMAT (HEADER & DATA)
   285					    RPOPSK=4	;  SEEK
   286					    RPOPOF=14	;  OFFSET
   287					    RPOPCL=16	;  (RETURN TO) CENTERLINE
   288					    RPOPPA=22	;  PACK ACKNOWLEDGE
   289					    RPOPRI=20	;  READ-IN PRESET
   290					      RPGO=1	;;R/W GO. REQUEST DRIVE TO DO FUNCTION. CLEARED WHEN DONE.
   291
   292					RP.WC=	176702	;;R/W WORD COUNT REGISTER. 2s COMPLEMENT WORD COUNT FOR XFER.
   293
   294					RP.BA=	176704	;;R/W UNIBUS ADDRESS REGISTER. LOW 15 BITS OF XFER ADDRESS.
   295
   296					RP.DA=	176706	;;DESIRED SECTOR/TRACK ADDRESS REGISTER
   297					  RPTRKA=017400	;;R/W TRACK ADDRESS - HIGH BYTE OF WORD IS TRACK ADDRESS
   298					  RPSCTA=37	;;R/W SECTOR ADDRESS - LOW BYTE OF WORD IS SECTOR ADDRESS
   299
   300					RP.CS2=	176710	;;CONTROL AND STATUS 2 REGISTER
   301					  RPDLT=100000	;;R/O DATA LATE. CAUSES RPTRE TO GET SET.
   302					  RPWCE=40000	;;R/O WRITE CHECK ERROR. MISMATCH DURING WRITE. SETS RPTRE.
   303
   304					RP.DS=	176712	;;DRIVE STATUS REGISTER
   305					  RPATA=100000	;;R/O ATTENTION.
   306					  RPERR=40000	;;R/O SET IF RP.ER1,RP.ER2,RP.ER3 GET SET. ONLY RPOPDC CAN CLR.
   307
   308					RP.ER1=	176714	;;ERROR REGISTER 01
   309					  RPDCK=100000	;;R/W DATA CHECK (IE: CORRECTABLE)
   310					  RPUNS=40000	;;R/W UNSAVE (LOGICAL OR OF ALL UNSAFE BITS IN RPER2&RPER3)
   311					  RPOPI=20000	;;R/W OPERATION INCOMPLETE
FELOAD -- BOOT PROGRAM TO FIND & LOAD RSX20F V1(4) 10-FEB-88	MACDLX V31  02-MAY-88  11:28  PAGE 7-1
FELOAD.P11    02-MAY-88 11:28		UNIVERSALS -- IOBITS - WORDS AND BITS IN THE I/O PAGE, SEEN FROM THE 11

   312					  RPDTE=10000	;;R/W DRIVE TIMING ERROR
   313					  RPWLE=4000	;;R/W WRITE LOCK ERROR
   314					  RPIAE=2000	;;R/W INVALID ADDRESS ERROR (DISK ADDRESS, NOT CORE ADDRESS)
   315					  RPAOE=1000	;;R/W ADDRESS OVERFLOW ERROR (CYLINDER REGISTER OVERFLOWED)
   316					  RPHCRF=400	;;R/W HEADER CRC ERROR
   317					  RPHCE=200	;;R/W HEADER COMPARE ERROR
   318					  RPECH=100	;;R/W ECC HARD ERROR
   319					  RPWCF=40	;;R/W WRITE CLOCK FAIL
   320					  RPFER=20	;;R/W FORMAT ERROR (OFFSET FMT DOESN'T MATCH DATA ON DISK)
   321					  RPPAR=10	;;R/W PARITY ERROR
   322					  RPRMR=4	;;R/W REGISTER MODIFICATION REFUSED
   323					  RPILR=2	;;R/W ILLEGAL REGISTER
   324					  RPILF=1	;;R/W ILLEGAL FUNCTION CODE
   325
   326					RP.OF=	176732	;;OFFSET REGISTER
   327					  RPSCG=100000	;;R/W SIGN CHANGE (FLIPS IF HEAD IS OVER TRUE TRACK'S CENTERLINE
   328					  RPFMT2=10000	;;R/W 1 WHEN 16BIT/WORD FORMAT, 0 WHEN 18BIT/WORD FORMAT
   329					  RPECI=4000	;;R/W 1 TO DISABLE ECC ERROR CORRECTION
   330					  RPHCI=2000	;;R/W 1 TO DISABLE "HEADER COMPARE"
   331					  RPOFSD=377	;;R/W OFFSET INFORMATION
   332
   333					RP.DC=	176734	;;DESIRED CYLINDER
   334					  RPCYLA=777	;;R/W CYLINDER ADDRESS.
   335
   336					RP.EC1=	176744	;;ECC POSITION
   337							;;R/O
   338
   339					RP.EC2=	176746	;;ECC PATTERN
   340							;;R/O
   341					.ENDM	IOBITS
   342	000000					IOBITS
FELOAD -- BOOT PROGRAM TO FIND & LOAD RSX20F V1(4) 10-FEB-88	MACDLX V31  02-MAY-88  11:28  PAGE 8
FELOAD.P11    02-MAY-88 11:28		UNIVERSALS -- KLDHED - FORMAT OF ENTRY IN KLDCP DIRECTORY

   344					.SBTTL UNIVERSALS -- KLDHED - Format of entry in KLDCP directory
   345
   346					.MACRO	WSYM	.NAME
   347						W.'.NAME'=.OFFSET
   348						.OFFSET=.OFFSET+2
   349					.ENDM	WSYM
   350		000000			.OFFSET=0
   351
   352					.MACRO	KLDHED
   353					WSYM	KFL0	;FIRST HALF OF KLDCP FILE NAME
   354					WSYM	KFL1	;SECOND HALF OF KLDCP FILE NAME
   355					WSYM	KEXT	;EXT OF KLDCP FILE NAME
   356					WSYM	KCRE	;CREATION DATA
   357					WSYM	KCYL	;CYLINDER OF FILE
   358					WSYM	KTS	;TRACK/SECTOR
   359					WSYM	KWAH	;WORDS ALLOCATED (HIGH)
   360					WSYM	KWAL	;WORDS ALLOCATED (LOW)
   361					WSYM	K1LA	;PDP11 LOAD ADDDRESS
   362					WSYM	K1SA	;PDP11 START ADDRESS
   363					WSYM	KTYP	;FILE TYPE & FILE STATUS
   364					WSYM	KCHK	;CHECK SUM
   365					WSYM	KRS1	;RESERVED (0)
   366					WSYM	KRS2	;RESERVED (0)
   367					WSYM	KCPH	;CURRENT POSITION (HIGH)
   368					WSYM	KCPL	;CURRENT POSITION (LOW)
   369					FDESIZ=.OFFSET	;SIZE OF AN ENTRY
   370					.ENDM	KLDHED
   371	000000					KLDHED
FELOAD -- BOOT PROGRAM TO FIND & LOAD RSX20F V1(4) 10-FEB-88	MACDLX V31  02-MAY-88  11:28  PAGE 9
FELOAD.P11    02-MAY-88 11:28		DEFINITIONS - "HELPER" MACROS

   373						.SBTTL	DEFINITIONS - "helper" macros
   374
   375					.MACRO	TYPE	.string	;;MACRO TO TYPE A STRING ON THE CONSOLE
   376						.ENABL	LC
   377						CALL	STYPE
   378						.ASCIZ	@'.string'@<15><12>
   379						.EVEN
   380					.ENDM	TYPE
   381
   382					.MACRO	ABORT	.string	;;MACRO TO TYPE A STRING AND THEN HALT
   383						TYPE	<'.string'>
   384						HALT
   385					.ENDM	ABORT
   386
   387					.MACRO	CALL	.dest
   388						JSR	PC,.dest
   389					.ENDM	CALL
   390
   391					.MACRO	RETURN
   392						RTS	PC
   393					.ENDM	RETURN
FELOAD -- BOOT PROGRAM TO FIND & LOAD RSX20F V1(4) 10-FEB-88	MACDLX V31  02-MAY-88  11:28  PAGE 10
FELOAD.P11    02-MAY-88 11:28		BLOCK 0 BOOTING CODE

   395						.SBTTL	BLOCK 0 booting code
   396		000000				.=0			;LOAD INTO LOCATION 0
   397
   398					;	THIS CODES RESIDES IN PHYSICAL DISK BLOCK 0; THE ROM LOADS IT
   399	000000	010067	011134		FELOAD:	MOV	R0,INITR0
   400	000004	012700	011142			MOV	#INITR1,R0
   401	000010	010120				MOV	R1,(R0)+			;SAVE R1
   402	000012	010220				MOV	R2,(R0)+			;SAVE R2
   403	000014	010320				MOV	R3,(R0)+			;SAVE R3
   404	000016	010420				MOV	R4,(R0)+			;SAVE R4
   405	000020	010520				MOV	R5,(R0)+			;SAVE R5
   406					;	MOV	SP,(R0)+			;SAVE SP
   407	000022	010105				MOV	R1,R5				;PRESERVE CSR ADDRESS IN R5
   408	000024	016567	000010	011130		MOV	RP.CS2-RP.CS1(R5),RPUNIT	;SAVE UNIT NUMBER
   409
   410					;	NOW READ IN 2ND PART OF BOOT
   411	000032	012700	004000			MOV	#PROMPT,R0		;UNIBUS ADDRESS OF 2ND PART
   412	000036	005001				CLR	R1			;HIGH ORDER LBN=0
   413	000040	012702	000004			MOV	#4,R2			;LOW ORDER LBN=4
   414	000044	010203				MOV	R2,R3			;REQUEST 4 BLOCK READ
   415	000046	012706	010120			MOV	#STAK,SP		;INIT THE STACK POINTER
   416	000052					CALL	REDBLK			;READ THAT BLOCK FROM RP04
   417	000056	103402				BCS	2$			;BRANCH IF CAN'T READ 2ND PART
   418	000060	000167	003714		1$:	JMP	PROMPT		;JOIN "2nD PART CODE"
   419
   420	000064				2$:	ABORT	<?Can't get FELOAD part 2>
FELOAD -- BOOT PROGRAM TO FIND & LOAD RSX20F V1(4) 10-FEB-88	MACDLX V31  02-MAY-88  11:28  PAGE 11
FELOAD.P11    02-MAY-88 11:28		BLOCK 0 BOOTING CODE

   422
   423					;	ROUTINE TO TYPE A CHARACTER ON THE CONSOLE TERMINAL
   424	000126	010037	177566		TYO:	MOV	R0,@#DL.XBF		;TYPE THE CHARACTER
   425	000132	105737	177564		TYO1:	TSTB	@#DL.XSR			;WAIT FOR "DONE" TO APPEAR
   426	000136	002375				BGE	TYO1			;LOOP UNTIL IT TURNS ON
   427	000140	000207				RTS	PC
   428
   429					;	ROUTINE TO TYPE A STRING
   430	000142	012601			STYPE:	MOV	(SP)+,R1		;PICK UP ADDRESS OF STRING
   431	000144	112100			STYPE1:	MOVB	(R1)+,R0		;PICK UP A BYTE
   432	000146	001403				BEQ	STYPE2			;EXIT IF WE PICK UP A ZERO
   433	000150					CALL	TYO			;OTHERWISE TYPE IT
   434	000154	000773				BR	STYPE1			;LOOP TILL WE FIND THE 0
   435	000156	005201			STYPE2:	INC	R1			;ADVANCE ONE BYTE
   436	000160	042701	000001			BIC	#1,R1			;TURN OFF ODD BIT
   437	000164	000111				JMP	@R1			;RETURN TO CALLER
FELOAD -- BOOT PROGRAM TO FIND & LOAD RSX20F V1(4) 10-FEB-88	MACDLX V31  02-MAY-88  11:28  PAGE 12
FELOAD.P11    02-MAY-88 11:28		BLOCK 0 BOOTING CODE

   439					;	ROUTINE TO ROTATE THE 3 WORDS @R1 (R3) BITS LEFT
   440					;	(USED TO DO ECC CORRECTION)
   441	000166	006311			PROL36:	ASL	(R1)
   442	000170	006161	000002			ROL	2(R1)
   443	000174	006161	000004			ROL	4(R1)
   444	000200	005303				DEC	R3
   445	000202	001371				BNE	PROL36
   446	000204					RETURN
FELOAD -- BOOT PROGRAM TO FIND & LOAD RSX20F V1(4) 10-FEB-88	MACDLX V31  02-MAY-88  11:28  PAGE 13
FELOAD.P11    02-MAY-88 11:28		BLOCK 0 BOOTING CODE

   448					;	ROUTINE TO READ RP04/RP05/RP06 DISK BLOCKS
   449					;ENTER:
   450					;	R0/	UNIBUS AADRESS OF 1ST WORD TO XFER
   451					;	R1/	HIGH ORDER WORD OF LBN
   452					;	R2/	LOW ORDER WORD OF LBN
   453					;	R3/	# OF BLOCKS TO READ CONTIGUOUSLY, 0 MEANS 1
   454					;	R5/	ADDRESS OF RPCS1
   455
   456	000206	010067	010746		REDBLK:	MOV	R0,SAVUBA	;SAVE UNIBUS ADDRESS
   457	000212	010367	010752			MOV	R3,SAVCNT	;SAVE COUNT OF BLOCKS
   458	000216	010167	010742		REDBL0:	MOV	R1,SAVHLB	;SAVE HIGH LBN
   459	000222	010267	010740			MOV	R2,SAVLLB	;SAVE LOW LBN
   460
   461					;	HERE TO READ A BLOCK
   462	000226	012704	000020			MOV	#16.,R4		;TRY UP TO 16 TIMES
   463	000232	016765	010724	000010	REDBL1:	MOV	RPUNIT,RP.CS2-RP.CS1(R5)	;SETUP UNIT FIELD
   464	000240	016765	010714	000004		MOV	SAVUBA,RP.BA-RP.CS1(R5)	;SET THE UNIBUS ADDRESS
   465	000246	012765	177400	000002		MOV	#-400,RP.WC-RP.CS1(R5)	;SET THE WORD COUNT FOR 1 BLOCK
   466	000254	005003				CLR	R3			;START OFF WITH 0 ANSWER
   467	000256	005203			1$:	INC	R3			;COUNT A SUBTRACTION
   468	000260	162702	000574			SUB	#380.,R2		;USE A SUBTRACT LOOP ...
   469	000264	005601				SBC	R1			;...TO CALCULATE "LBN / BPC"
   470	000266	100373				BPL	1$			;...TO GET DESIRED CYLINDER ADDRESS
   471	000270	005303				DEC	R3			;FORGET THE LAST SUBTRACTION
   472	000272	062702	000574			ADD	#380.,R2		;PUT BACK THE LAST CYLINDER'S BLOCKS
   473	000276	005501				ADC	R1			;...
   474					; NOW R3=DESIRED CYLINDER ADDRESS
   475	000300	010365	000034			MOV	R3,RP.DC-RP.CS1(R5)	;SPECIFY THE DESIRED CYLINDER
   476
   477	000304	005003				CLR	R3			;CLEAR RESULT
   478	000306	005203			2$:	INC	R3			;COUNT FIRST ONE
   479	000310	162702	000024			SUB	#20.,R2
   480	000314	005601				SBC	R1			;TAKE CARE OF CARRY (IF ANY)
   481	000316	100373				BPL	2$			;LOOP UNTIL WE GO TOO FAR
   482	000320	062702	000024			ADD	#20.,R2			;RETURN IT
   483	000324	005501				ADC	R1			;FIX FINAL CARRY
   484	000326	005303				DEC	R3			;ONE LESS THAN WE THOUGHT
   485
   486	000330	000303				SWAB	R3			;TRACK IN LH
   487	000332	050302				BIS	R3,R2			;INSERT SECTOR
   488	000334	010265	000006			MOV	R2,RP.DA-RP.CS1(R5)	;TELL DRIVE TRACK/SECTOR
   489
   490	000340	005065	000032			CLR	RP.OF-RP.CS1(R5)	;CLEAR OFFSET
   491	000344	020427	000010			CMP	R4,#8.		;2ND 8 TRIES?
   492	000350	003003				BGT	3$			;NO
   493	000352	012765	002000	000032		MOV	#RPHCI,RP.OF-RP.CS1(R5)	;YES, TRY TURNING ON HEADER INHIBIT
   494	000360	012765	000071	000000	3$:	MOV	#71,RP.CS1-RP.CS1(R5)	;TELL KONTROLLER TO DO THE READ
   495	000366	005000				CLR	R0			;CLEAR TIMEOUT COUNT
   496	000370	005200			4$:	INC	R0			;COUNT UP TIMER
   497	000372	001404				BEQ	5$			;BRANCH IF XFER TIMED OUT
   498	000374	032765	060200	000000		BIT	#RPTRE!RPCPE!RPRDY,RP.CS1-RP.CS1(R5)	;TEST FOR DONE
   499	000402	001772				BEQ	4$			;LOOP TILL ONE COMES ON
   500
   501	000404	005304			5$:	DEC	R4			;CHECK RETRY COUNT
   502	000406	100434				BMI	GIVEUP			;GIVE UP IF NO MORE POSSIBLE
   503	000410	005700				TST	R0			;TEST TIMEOUT COUNT
FELOAD -- BOOT PROGRAM TO FIND & LOAD RSX20F V1(4) 10-FEB-88	MACDLX V31  02-MAY-88  11:28  PAGE 13-1
FELOAD.P11    02-MAY-88 11:28		BLOCK 0 BOOTING CODE

   504	000412	001425				BEQ	RETRY			;IT TIMED OUT, TRY IT ALL OVER AGAIN
   505	000414	032765	060000	000000		BIT	#RPCPE!RPTRE,RP.CS1-RP.CS1(R5);CHECK CONTROL BUS PARITY ERROR
   506	000422	001021				BNE	RETRY			;RETRY ENTIRE OPERATION
   507	000424	032765	140000	000012		BIT	#RPATA!RPERR,RP.DS-RP.CS1(R5)	;CHECK DISK ERRORS
   508	000432	001024				BNE	TRYECC			;GO CONSIDER CORRECTABLE ERROR
   509
   510					;IF WE GET HERE, THE XFER WAS APPARENTLY ERROR-FREE
   511	000434	016702	010526		REDAOK:	MOV	SAVLLB,R2		;RESTORE LOW LBN
   512	000440	016701	010520			MOV	SAVHLB,R1		;RESTORE HIGH LBN
   513	000444	005202				INC	R2			;ADD 1 TO LBN
   514	000446	005501				ADC	R1			;ADD POSSIBLE CARRY
   515	000450	062767	001000	010502		ADD	#1000,SAVUBA		;STEP TO NEXT BLOCK ADDRESS
   516	000456	005367	010506			DEC	SAVCNT
   517	000462	003255				BGT	REDBL0			;READ ANOTHER
   518					;	ADD TO SAVUBA WILL NEVER "OVERFLOW" 16 BIT ADDRESS
   519					;	CLC				;CLEAR ERROR
   520	000464					RETURN
   521
   522					;HERE TO RETRY THE XFER
   523	000466	016701	010472		RETRY:	MOV	SAVHLB,R1		;RESTORE THE LBN TO XFER
   524	000472	016702	010470			MOV	SAVLLB,R2		;...
   525	000476	000655				BR	REDBL1			;GO DO THE OPERATION AGAIN
   526					;WE DID OUR BEST, GIVE UP
   527	000500	000261			GIVEUP:	SEC
   528	000502					RETURN
   529
   530					;HERE IF READ FAILED, TRY AGAIN
   531	000504	032765	077777	000014	TRYECC:	BIT	#77777,RP.ER1-RP.CS1(R5)	;CHECK FOR ANY ERROR, 'CEPT ECC DATA
   532	000512	001365				BNE	RETRY			;IF NOT ECC ERR, TRY VIA HARD RE-READ
   533	000514	016502	000044			MOV	RP.EC1-RP.CS1(R5),R2	;GET ECC POSITION
   534	000520	001762				BEQ	RETRY			;GIVE UP IF POS=0
   535
   536	000522	005067	010452			CLR	ECWRD0
   537	000526	005067	010450			CLR	ECWRD0+2
   538	000532	005067	010446			CLR	ECWRD0+4
   539	000536	005067	010444			CLR	ECWRD0+6
   540	000542	005067	010442			CLR	ECWRD0+10
   541	000546	005067	010440			CLR	ECWRD0+12
   542
   543	000552	016567	000046	010426		MOV	RP.EC2-RP.CS1(R5),ECMSK0;GET ECC CORRECTION
   544
   545	000560	005302				DEC	R2			;DIVIDE POSITION BY 18.
   546	000562	005003				CLR	R3
   547	000564	162702	000022		61$:	SUB	#18.,R2			;
   548	000570	002402				BLT	62$			;
   549	000572	005203				INC	R3			;
   550	000574	000773				BR	61$			;
   551
   552	000576	062702	000022		62$:	ADD	#18.,R2			;DONE, R3=WORD, R2=SHIFTS
   553	000602	006303				ASL	R3			;DOUBLE WORD POSITION, 11 ADR IN BYTES
   554	000604	066703	010350			ADD	SAVUBA,R3
   555	000610	010367	010400			MOV	R3,ECADR0		;SETUP 1ST BAD WORD ADDRESS
   556
   557	000614	005723				TST	(R3)+
   558	000616	010367	010374			MOV	R3,ECADR1		;SETUP 2ND BAD WORD ADDRESS
   559					;	MOV	#ECWRD0,R1
FELOAD -- BOOT PROGRAM TO FIND & LOAD RSX20F V1(4) 10-FEB-88	MACDLX V31  02-MAY-88  11:28  PAGE 13-2
FELOAD.P11    02-MAY-88 11:28		BLOCK 0 BOOTING CODE

   560	000622	011367	010352			MOV	(R3),ECWRD0		;SETUP 2ND BAD WORD
   561	000626	011367	010370			MOV	(R3),ECBAD1		;SAVE 2ND BAD WORD
   562	000632					CALL	PROL36			;POSITION 2ND WORD INTO UPPER 18 BITS
   563
   564	000636	017767	010352	010334		MOV	@ECADR0,ECWRD0		;SETUP 1ST BAD WORD
   565	000644	016767	010330	010346		MOV	ECWRD0,ECBAD0		;SAVE 1ST BAD WORD
   566
   567					;	MOV	#ECMSK0,R1
   568	000652	010203				MOV	R2,R3
   569	000654					CALL	PROL36			;POSITION ECC CORRECTION WORD
   570
   571	000660	016746	010322			MOV	ECMSK0,-(SP)		;CORRECT BITS 0-16
   572	000664	046716	010310			BIC	ECWRD0,(SP)		;
   573	000670	046767	010312	010302		BIC	ECMSK0,ECWRD0
   574	000676	052667	010276			BIS	(SP)+,ECWRD0
   575
   576	000702	016746	010302			MOV	ECMSK0+2,-(SP)		;CORRECT BITS 17-32
   577	000706	046716	010270			BIC	ECWRD1,(SP)		;
   578	000712	046767	010272	010262		BIC	ECMSK0+2,ECWRD1
   579	000720	052667	010256			BIS	(SP)+,ECWRD1
   580
   581	000724	016766	010262	177777		MOV	ECMSK0+4,-1(SP)		;CORRECT BITS 33-36
   582	000732	046716	010246			BIC	ECWRD2,(SP)
   583	000736	046767	010250	010240		BIC	ECMSK0+4,ECWRD2
   584	000744	052667	010234			BIS	(SP)+,ECWRD2
   585
   586					;	MOV	#ECWRD0,R1
   587	000750	016777	010224	010236		MOV	ECWRD0,@ECADR0		;PUT 1ST CORRECT WORD BACK IN CORE
   588
   589	000756	012703	000016			MOV	#14.,R3
   590	000762					CALL	PROL36
   591	000766	016777	010212	010222		MOV	ECWRD2,@ECADR1		;PUT 2ND WORD BACK IN CORE
   592	000774	000617				BR	REDAOK			;NOW GO TO NEXT BLOCK
FELOAD -- BOOT PROGRAM TO FIND & LOAD RSX20F V1(4) 10-FEB-88	MACDLX V31  02-MAY-88  11:28  PAGE 14
FELOAD.P11    02-MAY-88 11:28		END OF BLOCK 0 CODE

   594						.SBTTL	END OF BLOCK 0 CODE
   595
   596		000776				.DEPHASE
   597		000776				.=.
   598		000377			B0WRDS=./2		;# OF WORDS USED IN BLOCK 0 (NOT BYTES)
   599	000776	000002				.PRINT	1000-.;LOCATIONS LEFT IN BLOCK 0 BOOT
FELOAD -- BOOT PROGRAM TO FIND & LOAD RSX20F V1(4) 10-FEB-88	MACDLX V31  02-MAY-88  11:28  PAGE 15
FELOAD.P11    02-MAY-88 11:28		START OF BLOCK 4-7 CODE

   601						.SBTTL	START OF BLOCK 4-7 CODE
   602
   603		004000				.=4000				;THIS GOES INTO BLOCK 4 (THRU 7)
   604
   605	004000	032767	000001	005144	PROMPT:	BIT	#1,INITR5		;READ "SWR" BUTTON PUSHED?
   606	004006	001032				BNE	SWRFOO			;YES, GO DO THAT
   607
   608	004010	105767	005136			TSTB	INITR5			;TEST THE "DISK" BIT
   609	004014	100427				BMI	DISK			;BRANCH IF DISK SET
   610					;N.B.: HE PUSHED DTA/FLOPPY BUTTON - AND WE COULDN'T HAVE GOTTEN HERE!
   611	004016					ABORT	<?FELOAD cannot boot DECtape or floppy>
   612
   613	004074				SWRFOO:
   614	004074	032737	100000	177570	DISK:	BIT	#100000,@#SWR		;IS THE HIGH ORDER BIT SET?
   615	004102	001033				BNE	GETKLD			;YES, GET KLDCP
   616	004104	000412				BR	GETRSX			;NO, GET RSX20F
FELOAD -- BOOT PROGRAM TO FIND & LOAD RSX20F V1(4) 10-FEB-88	MACDLX V31  02-MAY-88  11:28  PAGE 16
FELOAD.P11    02-MAY-88 11:28		BOOT IN AND START 20F FRONT END

   618						.SBTTl	BOOT IN AND START 20F FRONT END
   619
   620	004106	012767	100207	005036	USERSX:	MOV	#100207,INITR5
   621	004114	012767	176700	005020		MOV	#176700,INITR1
   622	004122	012705	176700			MOV	#176700,R5
   623	004126	012706	010120			MOV	#STAK,SP
   624	004132				GETRSX:	CALL	MOVEME			;GO TO NEW HOME
   625	004136					CALL	GETHOM			;GET THE TOPS10 HOME BLOCKS
   626	004142					CALL	GETH11			;GET THE FILES11 HOME BLOCK
   627	004146					CALL	FND550			;GO FIND FHB FOR 5,5,0 (CORIMG.SYS)
   628	004152					CALL	RED550			;GO READ IN CORIMG.SYS INTO CORE
   629	004156					CALL	FNDACP			;GO FIND F11ACP.TSK
   630	004162					CALL	POK20F			;GO POKE SOME MAGIC VALUES INTO
   631										;THE RESIDENT IMAGE OF THE 20F MONITOR
   632	004166	000167	002660			JMP	RESACS			;RESTORE ACS AND START RSX20F
FELOAD -- BOOT PROGRAM TO FIND & LOAD RSX20F V1(4) 10-FEB-88	MACDLX V31  02-MAY-88  11:28  PAGE 17
FELOAD.P11    02-MAY-88 11:28		BOOT IN AND START 20F FRONT END

   634					;	HERE TO LOAD AND START KLDCP FRONT END
   635	004172				GETKLD:	CALL	GETHOM		;GET TOPS10 HOME BLOCK(S)
   636	004176					CALL	VRFKLD		;VERIFY THIS IS A KLAD PACK
   637	004202					CALL	FNDDIR		;FIND THE DIRECTORY LOCATION AND SIZE
   638	004206					CALL	REDDIR		;GO READ KLAD10 DIRECTORY
   639	004212					CALL	FNDKLD		;GO FIND KLDCP.BIN IN THE DIRECTORY
   640	004216					CALL	LODKLD		;GO LOAD KLDCP.BIN
   641
   642	004222	000167	002624			JMP	RESACS		;GO START KLDCP
FELOAD -- BOOT PROGRAM TO FIND & LOAD RSX20F V1(4) 10-FEB-88	MACDLX V31  02-MAY-88  11:28  PAGE 18
FELOAD.P11    02-MAY-88 11:28		BOOT IN AND START 20F FRONT END

   644	004226	012702	000001		GETHOM:	MOV	#1,R2
   645	004232					CALL	GETH10
   646	004236	103401				BCS	2$
   647	004240				1$:	RETURN
   648
   649	004242	012702	000012		2$:	MOV	#12,R2
   650	004246					CALL	GETH10
   651	004252	103372				BCC	1$
   652	004254					ABORT	<?Unable to read HOME.SYS>
   653
   654					;	ROUTINE TO READ A TOPS-10 HOME BLOCK
   655
   656	004316	016700	003056		GETH10:	MOV	DBA,R0			;ADDRESS OF DISK BUFFER
   657	004322	005001				CLR	R1			;HIGH ORDER LBN OF HOME BLOCKS ALWAYS 0
   658	004324	005003				CLR	R3			;ALWAYS JUST ONE BLOCK TO READ
   659	004326					CALL	REDBLK			;READ THE HOME BLOCK
   660	004332	103002				BCC	2$			;BRANCH IF NO ERRORS
   661	004334	000261			1$:	SEC				;SET CARRY SO CALLER SEES ERROR
   662	004336	000207				RTS	PC			;RETURN WITH CARRY SET
   663
   664					;HERE IF READ OF BLOCK SUCCEEDED
   665	004340	022767	105755	003554	2$:	CMP	#105755,DB		;MAKE SURE LH OF PDP10 WORD #0='HOM'
   666	004346	001372				BNE	1$			;GIVE ERROR RETURN IF NOT
   667	004350	005767	003550			TST	DB+2			;MAKE SURE RH OF PDP10 WORD#0 IS ZERO
   668	004354	001367				BNE	1$			;GIVE ERROR RETURN IF NOT
   669
   670	004356	000241				CLC				;CLEAR CARRY
   671	004360	000207				RTS	PC			;GIVE GOOD RETURN
FELOAD -- BOOT PROGRAM TO FIND & LOAD RSX20F V1(4) 10-FEB-88	MACDLX V31  02-MAY-88  11:28  PAGE 19
FELOAD.P11    02-MAY-88 11:28		BOOT IN AND START 20F FRONT END

   673					;	ROUTINE TO READ IN THE FILES11 HOME BLOCK
   674					;	ENTER WITH GOOD TOPS10 HOME BLOCK IN DB
   675	004362	016701	004040		GETH11:	MOV	DB+<HOMFE0*2>-2,R1	;GET "HIGH" LBN OF HOME BLOCK
   676	004366	100431				BMI	1$			;BRANCH IFF VALID BIT IS SET
   677	004370					ABORT	<?VALID bit not set in TOPS-10 home block>
   678
   679					;	HERE IF TOPS10 HOME BLOCK SAYS WE HAVE AN RSX20F FILE AREA
   680					;	READ IN THE FILES11 HOME BLOCK
   681	004452	110101			1$:	MOVB	R1,R1			;ISOLATE LOWBYTE (OF HIGH WORD)
   682	004454	016702	003750			MOV	DB+<HOMFE0*2>,R2	;GET LOW WORD OF HOME BLOCK LBN
   683	004460	105002				CLRB	R2			;CLEAR LOW BYTE
   684	004462	062702	000400			ADD	#400,R2			;STEP TO MULTIPLE OF 400 SECTORS
   685	004466	005003				CLR	R3			;SETUP TO READ 0 BLOCKS (=1 BLOCK)
   686	004470	016700	002704			MOV	DBA,R0			;SETUP TO READ INTO DISK BUFFER
   687
   688	004474					CALL	REDBLK			;READ WHAT OUGHT TO BE FILE11 HOME BLOCK
   689	004500	103026				BCC	2$			;
   690	004502					ABORT	<?Unable to read FILES-11 home block>
   691	004556				2$:	RETURN
FELOAD -- BOOT PROGRAM TO FIND & LOAD RSX20F V1(4) 10-FEB-88	MACDLX V31  02-MAY-88  11:28  PAGE 20
FELOAD.P11    02-MAY-88 11:28		BOOT IN AND START 20F FRONT END

   693					;	ROUTINE TO "FIND" THE FHB FOR CORIMG.SYS.
   694					;	CORIMG.SYS IS "KNOWN" FILE 5,5,0 SO LOOKUP THE QUICK WAY.
   695					;	ENTER WITH GOOD FILES11 HOME BLOCK IN DB
   696	004560	016701	003340		FND550:	MOV	DB+W.IBLB,R1		;GET HIGH ORDER INDEX BIT MAP LBN
   697	004564	016702	003336			MOV	DB+W.IBLB+2,R2		;GET LOW ORDER LBN
   698	004570	066702	003326			ADD	DB+W.IBSZ,R2		;ADD SIZE OF BIT MAP TO GET LBN OF 1,1,0
   699	004574	005501				ADC	R1			;ADD THE OVERFLOW OF THE LOW ORDER ADD
   700	004576	062702	000004			ADD	#5-1,R2			;COMPUTE ADDRESS OF (5,5,0)
   701	004602	005501				ADC	R1			;...
   702	004604	010167	004312			MOV	R1,SAVR1		;SAVE R1 OF FHB FOR CORIMG
   703	004610	010267	004310			MOV	R2,SAVR2		;SAVE R2 OF FHB FOR CORIMG
   704	004614	005003				CLR	R3			;SPECIFY 0 BLOCKS (=1 BLOCK)
   705	004616	016700	002556			MOV	DBA,R0			;READ INTO DISK BUFFER
   706	004622					CALL	REDBLK			;READ WHAT OUGHT TO BE THE RIB OF
   707										;(5,5,0), IE: CORIMG.SYS
   708	004626	103033				BCC	3$
   709	004630					ABORT	<?Can't read FHB of CORIMG.SYS to load RSX-20F>
   710
   711					;	HERE WHEN WE HAVE (APPARENTLY) READ IN THE FHB FOR CORIMG.SYS.
   712					;	DO SOME (CASUAL) VERIFICATION THAT IT REALLY...
   713					;	...IS A GOOD FHB FOR CORIMG.SYS(5,5,0).
   714	004716	016701	003202		3$:	MOV	DB+W.FNUM,R1		;GET FILE NUMBER
   715	004722	016702	003200			MOV	DB+W.FSEQ,R2		;GET FILE SEQUENCE NUMBER
   716	004726	020102				CMP	R1,R2			;THE SAME?
   717	004730	001433				BEQ	5$			;BRANCH AHEAD IF FILSEQ=FILNUM
   718	004732					ABORT	<?Sequence # of CORIMG.SYS not equal to file #>
   719
   720	005020	020127	000005		5$:	CMP	R1,#5			;SHOULD BE FILE (5,5,0)
   721	005024	001430				BEQ	6$			;
   722	005026					ABORT	<?File ID for CORIMG.SYS is not (5,5,0)>
   723
   724	005106				6$:	RETURN
FELOAD -- BOOT PROGRAM TO FIND & LOAD RSX20F V1(4) 10-FEB-88	MACDLX V31  02-MAY-88  11:28  PAGE 21
FELOAD.P11    02-MAY-88 11:28		BOOT IN AND START 20F FRONT END

   726					;	ROUTINE TO READ CORIMG.SYS INTO CORE IN THE PROPER PLACE (0-127777)
   727					;	ENTER WITH GOOD FHB FOR CORIMG.SYS IN DB
   728	005110				RED550:	TYPE	<[Loading RSX-20F]>
   729	005140	116702	002757			MOVB	DB+W.MPOF,R2		;GET OFFSET OF ID AREA
   730	005144	060202				ADD	R2,R2			;COMPUTE SIZE IN BYTES
   731	005146	066702	002226			ADD	DBA,R2			;COMPUTE R2= ADDRESS OF MAP AREA
   732	005152	116201	000012			MOVB	W.RTRV(R2),R1		;GET HIGH LBN BYTE
   733	005156	016202	000014			MOV	W.RTRV+2(R2),R2		;GET LOW LBN WORD
   734	005162	005000				CLR	R0			;READ INTO LOCATION 0
   735	005164	012703	000130			MOV	#130,R3			;READ 130 BLOCKS (IE: ALL OF CORIMG.SYS)
   736	005170					CALL	REDBLK			;READ A BLOCK (IE: BLOCK 0 OF CORIMG.SYS)
   737	005174	103035				BCC	1$
   738	005176					  ABORT	<Error reading CORIMG.SYS -- RSX-20F load aborted>
   739	005270				1$:	RETURN
FELOAD -- BOOT PROGRAM TO FIND & LOAD RSX20F V1(4) 10-FEB-88	MACDLX V31  02-MAY-88  11:28  PAGE 22
FELOAD.P11    02-MAY-88 11:28		BOOT IN AND START 20F FRONT END

   741					;	ROUTINE TO FIND THE LOWEST FILE#'D FILE WITH NAME OF F11ACP.TSK
   742					;	WE'LL USE THIS FILE'S LBN ADDRESS TO TELL THE INCORE RSX20F WHERE
   743					;	IT'S PRINCIPLE ACP FOR THE BOOT DEVICE IS
   744					;	ENTER WITH SAVR1/SAVR2 BEING THE LBN OF FHB FOR CORIMG.SYS
   745	005272	000074			FHBMAX:	60.				;READ NO MORE THAN 60 FHBS
   746	005274	025167	003310	000000	F11ACP:	.RAD50	/F11ACP   TSK/
	005302	100003
   747
   748	005304	005367	177762		FNDACP:	DEC	FHBMAX			;BUMP COUNT DOWN
   749	005310	100451				BMI	1$			;BRANCH IF WE'RE NEVER FOUND IT
   750	005312	005267	003606			INC	SAVR2			;STEP TO NEXT BLOCK
   751	005316	005767	003602			TST	SAVR2			;DID IT JUST OVERFLOW?
   752	005322	001002				BNE	2$			;NO, SKIP UPDATE
   753	005324	005267	003572			INC	SAVR1			;
   754	005330	016700	002044		2$:	MOV	DBA,R0			;READ NEXT FHB INTO DB
   755	005334	016701	003562			MOV	SAVR1,R1		;GET FHB LBN ADR
   756	005340	016702	003560			MOV	SAVR2,R2		;...
   757	005344	005003				CLR	R3			;1 BLOCK ONLY
   758	005346					CALL	REDBLK			;READ IN AN FHB
   759	005352	103754				BCS	FNDACP			;GO ON TO NEXT FHB IF WE CAN'T READ THIS
   760	005354	116702	002542			MOVB	DB+W.IDOF,R2		;GET OFFSET TO ID AREA IN WORDS
   761	005360	060202				ADD	R2,R2			;COMPUTE OFFSET IN WORDS
   762	005362	066702	002012			ADD	DBA,R2			;LOAD R2=ADDRESS OF ID AREA
   763	005366	026267	000000	177700		CMP	W.FNAM(R2),F11ACP	;DOES THIS LOOK AS IF IT IS F11ACP?
   764	005374	001343				BNE	FNDACP			;GO TO NEXT FHB IF FILE DOESN'T MATCH
   765	005376	026267	000002	177672		CMP	W.FNAM+2(R2),F11ACP+2	;...?
   766	005404	001337				BNE	FNDACP			;GO TO NEXT FHB IF FILE DOESN'T MATCH
   767	005406	005762	000004			TST	W.FNAM+4(R2)		;...
   768	005412	001334				BNE	FNDACP			;GO TO NEXT FHB IF FILE DOESN'T MATCH
   769	005414	026267	000006	177660		CMP	W.FTYP(R2),F11ACP+6.	;CHECK FOR .TSK EXTENSION
   770	005422	001330				BNE	FNDACP			;GO TO NEXT FHB IF TYPE DOESN'T MATCH
   771	005424	016267	000010	003572		MOV	W.FVER(R2),LEVELV	;STORE THE VERSION OF THE ACP
   772	005432					RETURN
   773
   774	005434	000261			1$:	SEC
   775	005436					RETURN
FELOAD -- BOOT PROGRAM TO FIND & LOAD RSX20F V1(4) 10-FEB-88	MACDLX V31  02-MAY-88  11:28  PAGE 23
FELOAD.P11    02-MAY-88 11:28		BOOT IN AND START 20F FRONT END

   777					;	ROUTINE TO POKE MAGIC VALUES INTO THE 20F CORE IMAGE
   778					;	  TO COMPENSATE FOR THE FACT WE DIDN'T BOOT THIS VIA "SAVE"S RPBOOT.
   779					;	ENTER WITH GOOD FHB FOR F11ACP IN DB.
   780
   781					;*** THE CONSTANTS DEFINED HERE NEED TO BE REDEFINED AS NEEDED
   782		000032			S.DL=32	;; THIS OFFSET IS START OF 2 WORD ENTRY CONTAINING DISK ADDRESS
   783						;; OF THE LOAD IMAGE FOR THIS TASK. OFFSET INTO STD BLOCK.
   784		007664			RPBOOT=7664	;; ADDRESS OF RPBOOT, TAKE FROM LISTING OF SAV TASK
   785		007772			RPRESU==7772	;; ADDRESS OF LINE SAYING "BOOTSTRAP COMPLETE", FROM SAV LISTING
   786					;*** THE CONSTANTS ABOVE MAY NEED TO BE UPDATED, BUT NOTE THAT
   787					;*** THIS IS NOT COMMON SINCE S.DL MAY NEVER CHANGE AND RPRESU-RPBOOT
   788					;*** WILL PROBABLY REMAIN A CONSTANT EVEN IF RPRESU OR RPBOOT CHANGES
   789	005440	116702	002457		POK20F:	MOVB	DB+W.MPOF,R2		;GET OFFSET TO MAP AREA
   790	005444	060202				ADD	R2,R2			;CONVERT TO BYTE OFFSET
   791	005446	066702	001726			ADD	DBA,R2			;ADD NEW BUFFER ADR
   792	005452	116201	000012			MOVB	W.RTRV(R2),R1		;GET HIGH LBN BYTE OF F11ACP.TSK
   793	005456	016202	000014			MOV	W.RTRV+2(R2),R2	;GET LOW LBN WORD OF F11ACP.TSK
   794	005462	062702	000002			ADD	#2,R2			;ADD 2 TO GET AT SKIP TASK HEADER INFO
   795	005466	005501				ADC	R1			;...
   796	005470					CALL	GETSTD		;FIND VALUE OF .STDTB BASED ON 20F VERSION
   797	005474	005700				TST	R0		;CHECK TO MAKE SURE WE GOT IT
   798	005476	001415				BEQ	1$
   799	005500	062700	000010			ADD	#<4*2>,R0	;COMPUTE ADDRESS OF F11ACP ENTRY
   800	005504	011000				MOV	@R0,R0		;LOAD R0 WITH STD FOR F11ACP
   801	005506	001411				BEQ	1$		;BRANCH IF WE FAILED
   802	005510	010160	000032			MOV	R1,S.DL+0(R0)	;INSERT HIGH ORDER LBN INTO STD BLOCK
   803	005514	010260	000034			MOV	R2,S.DL+2(R0)	;INSERT LOW ORDER LBN INTO STD BLOCK
   804
   805	005520	012767	000106	003430		MOV	#<RPRESU-RPBOOT>,NEWPC	;NEW PC INSIDE "RPBOOT" IN THE SAV TASK
   806
   807					;	Force RSX20F to believe that we used "SW/REG" rather than "DISK"
   808					;	even if we didn't!
   809					;[JJF %1(4) Maybe we really don't want it to believe it!]
   810					;	BIS	#200!1,INITR5		;TURN ON "DISK=200" AND "SW=1"
   811	005526	000167	001320			JMP	RESACS			;RESTORE ACS AND START BOOT
   812
   813	005532				1$:	ABORT	<?STD address of F11ACP within CORIMG.SYS incorrect>
FELOAD -- BOOT PROGRAM TO FIND & LOAD RSX20F V1(4) 10-FEB-88	MACDLX V31  02-MAY-88  11:28  PAGE 24
FELOAD.P11    02-MAY-88 11:28		BOOT IN AND START 20F FRONT END

   815					;	ROUTINE TO SEARCH TABLES TO FIND THE VALUE OF .STDTB
   816					;	RETURN CURRENT 20F'S VALUE OF .STDTB IN R0
   817
   818	005626	012700	135744		GETSTD:	MOV	#VERTAB+NEWADR,R0	;LOAD ADDRESS OF TABLE
   819	005632	005710			1$:	TST	@R0			;CHECK FOR END OF TABLE
   820	005634	001404				BEQ	2$			;BRANCH IF END OF TABLE
   821	005636	022067	003362			CMP	(R0)+,LEVELV		;COMPARE WITH 20F VERSION
   822	005642	001435				BEQ	GOTSTD			;BRANCH IF WE FIND SAME VERSION#
   823	005644	000772				BR	1$
   824	005646				2$:	ABORT	<?Unable to determine version of F11ACP.TSK file>
   825	005736	016000	000006		GOTSTD:	MOV	VALTAB-VERTAB-2(R0),R0	;LOAD STD ADDRESS
   826	005742					RETURN
   827
   828
   829					;*** NOTE THAT NEWER VERSIONS OF 20F WILL NEED TO HAVE ENTRIES IN THE DTBX MACRO
   830					;*** SIMPLY LOOK AT THE NEW RSX20F MAP FOR THE VALUE OF .STDTB.
   831						.MACRO	DTBX	;;LIST OF .STDTB VALUES
   832					XP	1506,6350	;VERSION 1506
   833					XP	1550,6372	;VERSION 1550
   834					XP	1600,6372	;VERSION 1600
   835						.ENDM
FELOAD -- BOOT PROGRAM TO FIND & LOAD RSX20F V1(4) 10-FEB-88	MACDLX V31  02-MAY-88  11:28  PAGE 25
FELOAD.P11    02-MAY-88 11:28		BOOT IN AND START 20F FRONT END

   837					;	MACROS TO EXPAND THE VERSION NUMBER INFO FOR 20F
   838					.MACRO XP	a,b
   839					.WORD	a
   840					.ENDM
   841	005744				VERTAB:	DTBX
   842	005752	000000				0
   843
   844					.MACRO XP	a,b
   845					.WORD	b
   846					.ENDM
   847	005754				VALTAB:	DTBX
FELOAD -- BOOT PROGRAM TO FIND & LOAD RSX20F V1(4) 10-FEB-88	MACDLX V31  02-MAY-88  11:28  PAGE 26
FELOAD.P11    02-MAY-88 11:28		BOOT IN AND START 20F FRONT END

   849					;	ROUTINE TO MOVE THE INCORE IMAGE 0-7777 TO NEWHOM-<NEWHOM+7777>
   850
   851	005762	012767	140122	001410	MOVEME:	MOV	#DB+NEWADR,DBA		;SETUP NEW DB ADDR
   852	005770	012700	130000			MOV	#NEWADR,R0		;SETUP DESTINATION
   853	005774	005001				CLR	R1			;SETUP ORIGIN
   854	005776	012702	004513			MOV	#ENDING/2,R2		;SETUP # WORDS TO MOVE
   855	006002	012120			1$:	MOV	(R1)+,(R0)+		;MOVE A WORD TO NEW HOME
   856	006004	077202				SOB	R2,1$			;KEEP DOING IT
   857
   858	006006	062706	130000			ADD	#NEWADR,SP		;RELOCATE THE STACK
   859	006012	062716	130000			ADD	#NEWADR,(SP)		;ADJUST RETURN ADDRESS
   860	006016	000207				RTS	PC			;RETURN TO SAME PLACE IN NEW HOME
FELOAD -- BOOT PROGRAM TO FIND & LOAD RSX20F V1(4) 10-FEB-88	MACDLX V31  02-MAY-88  11:28  PAGE 27
FELOAD.P11    02-MAY-88 11:28		BOOT IN AND START 20F FRONT END

   862					;	ROUTINE TO VERIFY THAT THIS IS A GOOD KLAD10 PACK
   863					;	ENTER WITH TOPS10 HOME BLOCK IN DB.
   864	006020	026727	002422	043241	VRFKLD:	CMP	DB+<HOMKV2*2>,#043241	;CHECK FOR "KLAD10" IN RAD50
   865	006026	001004				BNE	1$		;BRANCH IF NOT THERE
   866	006030	026727	002414	016766		CMP	DB+<HOMKV3*2>,#016766	;CHECK 2ND HALF
   867	006036	001420				BEQ	2$		;BRANCH IF "KLAD10" THERE
   868	006040				1$:	ABORT	<?RAD50 "KLAD10" missing>
   869
   870	006100	000207			2$:	RTS	PC			;RETURN
FELOAD -- BOOT PROGRAM TO FIND & LOAD RSX20F V1(4) 10-FEB-88	MACDLX V31  02-MAY-88  11:28  PAGE 28
FELOAD.P11    02-MAY-88 11:28		BOOT IN AND START 20F FRONT END

   872					;	ROUTINE TO LOCATE THE SIZE AND POSITION OF THE KLDCP DIRECTORY.
   873					;	ENTER WITH GOOD TOPS10 HOME BLOCK IN DB.
   874	006102	005067	003066		FNDDIR:	CLR	LBNL		;CLEAR BLOCK NUMBER SUM
   875	006106	005067	003060			CLR	LBNH		;CLEAR BLOCK NUMBER SUM HIGH ORDER
   876	006112	012701	000574			MOV	#19.*20.,R1	;GET MULTIPLIER
   877
   878	006116	066767	002330	003050	3$:	ADD	DB+<HOMKCY*2>,LBNL
   879	006124	005567	003042			ADC	LBNH		;ADD IN CARRY
   880	006130	077106				SOB	R1,3$		;LOOP
   881
   882	006132	012701	000024			MOV	#20.,R1		;GET MULTIPLIER
   883	006136	116704	002313			MOVB	DB+<HOMKTS*2>+1,R4	;GET TRACK
   884	006142	060467	003026		4$:	ADD	R4,LBNL		;ADD IN A TRACK OF BLOCKS
   885	006146	005567	003020			ADC	LBNH		;ADD IN CARRY
   886	006152	077105				SOB	R1,4$		;ACCOUNT FOR ALL TRACKS
   887
   888	006154	116704	002274			MOVB	DB+<HOMKTS*2>,R4	;GET SECTOR
   889	006160	060467	003010			ADD	R4,LBNL		;ADD IN SECTOR COUNT
   890	006164	005567	003002			ADC	LBNH		;FIX UP THE CARRY
   891	006170	016767	002262	003000		MOV	DB+<HOMKLN*2>,KLDLEN;REMEMBER SIZE OF DIRECTORY
   892	006176	000207				RTS	PC		;RETURN
FELOAD -- BOOT PROGRAM TO FIND & LOAD RSX20F V1(4) 10-FEB-88	MACDLX V31  02-MAY-88  11:28  PAGE 29
FELOAD.P11    02-MAY-88 11:28		BOOT IN AND START 20F FRONT END

   894	006200	012700	012000		REDDIR:	MOV	#KLDIR,R0	;SETUP ADDRESS OF DIRECTORY
   895	006204	016701	002762			MOV	LBNH,R1		;SETUP HIGH LBN
   896	006210	016702	002760			MOV	LBNL,R2		;SETUP LOW LBN OF DIRECTORY
   897	006214	016703	002756			MOV	KLDLEN,R3	;RECALL SIZE OF DIRECTORY
   898	006220					CALL	REDBLK		;READ IN THE DIRECTORY
   899	006224	103401				BCS	8$		;DIE IF CAN'T READ DIRECTORY
   900	006226	000207				RTS	PC		;RETURN
   901	006230				8$:	ABORT	<?I/O error reading KLADFE.DIR>
FELOAD -- BOOT PROGRAM TO FIND & LOAD RSX20F V1(4) 10-FEB-88	MACDLX V31  02-MAY-88  11:28  PAGE 30
FELOAD.P11    02-MAY-88 11:28		BOOT IN AND START 20F FRONT END

   903	006276	012704	012000		FNDKLD:	MOV	#KLDIR,R4	;POINT R4 AT DIRECTORY BUFFER
   904
   905	006302	005001				CLR	R1		;CLEAR SUM (WILL BECOME COUNT OF ENTRIES)
   906	006304	016702	002666			MOV	KLDLEN,R2	;GET MULTIPLIER
   907	006310	062701	000020		5$:	ADD	#1000/FDESIZ,R1	;COMPUTE # ENTRIES PER BLOCK
   908	006314	077203				SOB	R2,5$		;COMPUTE # OF ENTRIES
   909
   910
   911	006316	026467	000000	000256	6$:	CMP	W.KFL0(R4),W.KFL0+KLDCP
   912	006324	001010				BNE	7$		;BRANCH IF NOT EQUAL IN 1ST HALF OF FILE NAME
   913	006326	026467	000002	000250		CMP	W.KFL1(R4),W.KFL1+KLDCP
   914	006334	001004				BNE	7$		;BRANCH IF NOT CORRECT 2ND HALF OF FILE NAME
   915	006336	026467	000004	000242		CMP	W.KEXT(R4),W.KEXT+KLDCP
   916	006344	001423				BEQ	FOUNDK		;BRANCH IF FILE NAMES AND EXT ALL MATCH
   917
   918					; HERE IF SOME PART OF FILE NAME OR EXTENSION DOES NOT MATCH
   919	006346	062704	000040		7$:	ADD	#FDESIZ,R4	;STEP TO NEXT ENTRY
   920	006352	077117				SOB	R1,6$		;LOOP FOR NEXT ENTRY
   921	006354					ABORT	<?Cannot find KLDCP.BIN>
   922
   923					;FOUND KLDCP.BIN, CONVERT CYL/TRACK/SECTOR TO LOGICAL BLOCK NUMBER
   924	006414	005067	002552		FOUNDK:	CLR	LBNH		;CLEAR LBN HIGH
   925	006420	005067	002550			CLR	LBNL		;CLEAR LBN LOW
   926	006424	016400	000010			MOV	W.KCYL(R4),R0	;GET CYL#
   927	006430	001406				BEQ	2$		;SKIP IT IF ON CYLINDER 0
   928	006432	062767	000574	002534	1$:	ADD	#380.,LBNL	;ADD IN A CYLINDER WORTH OF BLOCKS
   929	006440	005567	002526			ADC	LBNH		;	(TAKE CARE OF CARRY, IF ANY)
   930	006444	077006				SOB	R0,1$		;...FOR EVERY CYLINDER THERE
   931	006446	116400	000013		2$:	MOVB	W.KTS+1(R4),R0	;GET TRACK # (NEVER .GT. 20, IGNORE SIGN EXTEND)
   932	006452	001406				BEQ	4$		;DON'T IF ON TRACK 0
   933	006454	062767	000024	002512	3$:	ADD	#20.,LBNL	;ADD IN A TRACK'S WORTH OF BLOCKS
   934	006462	005567	002504			ADC	LBNH		;	(TAKE CARE OF CARRY, IF ANY)
   935	006466	077006				SOB	R0,3$		;...FOR EVERY TRACK INVOLVED
   936	006470	116400	000012		4$:	MOVB	W.KTS(R4),R0	;GET SECTOR #
   937	006474	060067	002474			ADD	R0,LBNL		;ADD SECTOR NUMBER AS FINAL OFFSET
   938	006500	005567	002466			ADC	LBNH		;AND TAKE CARE OF FINAL CARRY
   939
   940					;CONVERT THE WORD COUNT TO A BLOCK COUNT
   941	006504	012700	000010		FIXWCK:	MOV	#8.,R0		;GET #POSITIONS TO SHIFT
   942	006510	006264	000014		1$:	ASR	W.KWAH(R4)	;SHIFT TO THE RIGHT
   943	006514	006064	000016			ROR	W.KWAL(R4)	;THE WORD COUNT RIGHT
   944	006520	077005				SOB	R0,1$		;TO CONVERT TO A BLOCK COUNT
   945	006522	005764	000014			TST	W.KWAH(R4)	;TEST HIGH ORDER (BLOCK) COUNT
   946	006526	001424				BEQ	2$
   947	006530					ABORT	<?KLDCP.BIN is too large to load>
   948	006600	000207			2$:	RTS	PC		;RETURN
   949
   950	006602	043244	012500	006766	KLDCP:	.RAD50	/KLDCP BIN/
FELOAD -- BOOT PROGRAM TO FIND & LOAD RSX20F V1(4) 10-FEB-88	MACDLX V31  02-MAY-88  11:28  PAGE 31
FELOAD.P11    02-MAY-88 11:28		BOOT IN AND START 20F FRONT END

   952	006610	005067	002322		LODKLD:	CLR	FCOUNT		;INITIALIZE "DVFRAM" (AND DVWORD)
   953	006614					TYPE	<[Loading KLDCP.BIN]>
   954	006646	016467	000016	002252		MOV	W.KWAL(R4),BLKCNT
   955	006654	005067	002252		LDBIN1:	CLR	$CKS11		;INITIALIZE THE CHECKSUM
   956	006660					CALL	DVFRAM		;GET A FRAME INTO R0
   957	006664	105300				DECB	R0		;CHECK FOR "BLOCK START"
   958	006666	001372				BNE	LDBIN1		;LOOP AND WAIT FOR BLOCK START CODE (IE: 1)
   959
   960	006670					CALL	DVFRAM		;READ ANOTHER FRAME (AND FORGET IT)
   961
   962	006674					CALL	DVWORD		;GET A FULL WORD, THE BYTE COUNT
   963	006700	010067	002224			MOV	R0,LBC		;SAVE BYTE COUNT
   964	006704	162767	000006	002216		SUB	#6,LBC		;CHECK FOR XFER BLOCK
   965	006712	001445				BEQ	LJMP		;IF BYTE COUNT = 6, THIS IS AN XFER BLOCK
   966	006714					CALL	DVWORD		;GET A FULL WORD, THE LOAD ADDRESS
   967	006720	010004				MOV	R0,R4		;SAVE LOAD ADDRESS
   968
   969	006722				LDBIN2:	CALL	DVFRAM		;GET A DATA BYTE
   970	006726	005367	002176			DEC	LBC		;DECREMENT BYTE COUNT
   971	006732	002033				BGE	LDBIN3		;BRANCH IF INSIDE DATA PART OF PACKET
   972	006734	105767	002172			TSTB	$CKS11		;IF BYTE COUNT EXPIRES, CHECK CHECKSUM
   973	006740	001745				BEQ	LDBIN1		;START ANOTHER BLOCK IF CHECKSUM WAS OK
   974	006742				BADCHK:	ABORT	<?Checksum error while loading KLDCP.BIN>
   975
   976	007022				LDBIN3:				;
   977	007022	110024			10$:	MOVB	R0,(R4)+	;SAVE THE BYTE INTO CORE
   978	007024	000736			12$:	BR	LDBIN2		;LOOP FOR MORE DATA
   979
   980	007026				LJMP:	CALL	DVWORD		;GET (POSSIBEL) XFER ADDRESS
   981	007032	010067	002120			MOV	R0,NEWPC		;REMEMBER XFER ADDRESS
   982	007036					CALL	DVFRAM		;GET A FRAME
   983	007042	105767	002064			TSTB	$CKS11		;CHECK CHECKSUM
   984	007046	001335				BNE	BADCHK
   985	007050	000207				RTS	PC		;RETURN
FELOAD -- BOOT PROGRAM TO FIND & LOAD RSX20F V1(4) 10-FEB-88	MACDLX V31  02-MAY-88  11:28  PAGE 32
FELOAD.P11    02-MAY-88 11:28		BOOT IN AND START 20F FRONT END

   987	007052	016700	002062		RESACS:	MOV	INITR0,R0	;RESTORE R0
   988	007056	016701	002060			MOV	INITR1,R1	;RESTORE R1
   989	007062	016702	002056			MOV	INITR2,R2	;RESTORE R2
   990	007066	016703	002054			MOV	INITR3,R3	;RESTORE R3
   991	007072	016704	002052			MOV	INITR4,R4	;RESTORE R4
   992	007076	016705	002050			MOV	INITR5,R5	;RESTORE R5
   993	007102	016706	002046			MOV	INITSP,SP	;RESTORE SP
   994	007106	000177	002044			JMP	@NEWPC		;START AT NEWLY LOADED CODE
FELOAD -- BOOT PROGRAM TO FIND & LOAD RSX20F V1(4) 10-FEB-88	MACDLX V31  02-MAY-88  11:28  PAGE 33
FELOAD.P11    02-MAY-88 11:28		BOOT IN AND START 20F FRONT END

   996					;	ROUTINE TO READ A FRAME
   997	007112	005367	002020		DVFRAM:	DEC	FCOUNT		;ANY FRAMES LEFT?
   998	007116	100421				BMI	DVFMOR		;NO, GO GET MORE
   999	007120	117700	002010			MOVB	@FPOINT,R0	;YES, GET IT
  1000	007124	042700	177400			BIC	#^C377,R0	;CLEAR UPPER BYTE
  1001	007130	060067	001776			ADD	R0,$CKS11	;COMPUTE CHECKSUM
  1002	007134	005267	001774			INC	FPOINT		;UPDATE POINTER
  1003	007140					RETURN			;RETURN
  1004
  1005	007142				DVWORD:	CALL	DVFRAM		;GET A FRAME
  1006	007146	010046				MOV	R0,-(SP)	;SAVE THE 1ST BYTE
  1007	007150					CALL	DVFRAM		;GET ANOTHER FRAME
  1008	007154	000300				SWAB	R0		;MAKE IT THE "HIGH" FRAME
  1009	007156	052600				BIS	(SP)+,R0	;COMBINE WITH 1ST BYTE
  1010	007160					RETURN			;RETURN
  1011
  1012	007162	005367	001740		DVFMOR:	DEC	BLKCNT		;COUNT ANOTHER BLOCK AS READ
  1013	007166	100454				BMI	2$		;COMPLAIN IF PREMATURE EOF
  1014	007170	016700	000204			MOV	DBA,R0		;BUFFER ADDRESS
  1015	007174	016701	001772			MOV	LBNH,R1		;GET DISK ADDRESS
  1016	007200	016702	001770			MOV	LBNL,R2		;GET DISK ADDRESS, LOW PART
  1017	007204	005003				CLR	R3		;GET 1 BLOCK ONLY
  1018	007206	010446				MOV	R4,-(SP)	;SAVE R4 (BYTE POINTER)
  1019	007210					CALL	REDBLK		;READ ANOTHER BLOCK
  1020	007214	103414				BCS	1$		;REMARK ON ERROR
  1021	007216	012604				MOV	(SP)+,R4	;RESTORE BYTE POINTER
  1022	007220	012767	001000	001710		MOV	#1000,FCOUNT	;1000 FRAMES NOW AVAILABLE
  1023	007226	016767	000146	001700		MOV	DBA,FPOINT	;STARTING AT DB
  1024	007234	005267	001734			INC	LBNL		;START TO READ NEXT BLOCK
  1025	007240	005567	001726			ADC	LBNH		;...
  1026	007244	000722				BR	DVFRAM
  1027
  1028	007246	012604			1$:	MOV	(SP)+,R4	;RESTORE BYTE POINTER
  1029	007250					ABORT	<?Input error reading KLDCP.BIN>
  1030
  1031	007320				2$:	ABORT	<?Premature EOF while reading KLDCP.BIN>
FELOAD -- BOOT PROGRAM TO FIND & LOAD RSX20F V1(4) 10-FEB-88	MACDLX V31  02-MAY-88  11:28  PAGE 34
FELOAD.P11    02-MAY-88 11:28		END OF 2ND PART

  1033						.SBTTL	END OF 2ND PART
  1034
  1035	007400	010122			DBA:	.WORD	DB
  1036		007402				.=.
  1037	007402	000376				.PRINT	10000-.;	BYTES REMAINING IN 2ND PART OF BOOT
FELOAD -- BOOT PROGRAM TO FIND & LOAD RSX20F V1(4) 10-FEB-88	MACDLX V31  02-MAY-88  11:28  PAGE 35
FELOAD.P11    02-MAY-88 11:28		IMPURE NON-INITIALIZED DATA

  1039						.SBTTL	IMPURE NON-INITIALIZED DATA
  1040
  1041		010000				.=10000
  1042	010000	000050				.BLKW	50
  1043	010120	000001			STAK:	.BLKW	1
  1044	010122	000400			DB:	.BLKW	400			;DISK I/O BUFFER
  1045	011122	000001			SAVR1:	.BLKW	1		;R1 (HIGH ORDER LBN OF CORIMG.SYS'S FHB)
  1046	011124	000001			SAVR2:	.BLKW	1		;R2 (LOW ORDER LBN OF CORIMG.SYS'S FHB)
  1047	011126	000001			BLKCNT:	.BLKW	1		;BLOCK COUNT FOR READING .BIN FILES
  1048	011130	000001			LBC:	.BLKW	1			;BYTE COUNT OF CURRENT .BIN PACKET
  1049	011132	000001			$CKS11:	.BLKw	1		;THE .BIN FILE CHECKSUM WORD
  1050	011134	000001			FPOINT:	.BLKW	1			;POINTER TO CURRENT FRAME
  1051	011136	000001			FCOUNT:	.BLKW	1			;COUNT OF FRAMES IN CURRENT DISK BUFFER
  1052
  1053	011140	000001			INITR0:	.BLKW	1			;THE R0 WE GOT FROM THE ROM
  1054	011142	000001			INITR1:	.BLKW	1			;THE R1 WE GOT FROM THE ROM
  1055	011144	000001			INITR2:	.BLKW	1			;THE R2 WE GOT FROM THE ROM
  1056	011146	000001			INITR3:	.BLKW	1			;THE R3 WE GOT FROM THE ROM
  1057	011150	000001			INITR4:	.BLKW	1			;THE R4 WE GOT FROM THE ROM
  1058	011152	000001			INITR5:	.BLKW	1			;THE R5 WE GOT FROM THE ROM
  1059	011154	000001			INITSP:	.BLKW	1			;THE SP WE GOT FROM THE ROM
  1060	011156	000001			NEWPC:	.BLKW	1		;THE R7 WE WANT TO START PROGRAM WITH
  1061	011160	000001			SAVUBA:	.BLKW	1			;THE UNIBUS ADDRESS
  1062	011162	000001			RPUNIT:	.BLKW	1			;COPY OF RPCS2 TO SAVE UNIT #
  1063	011164	000001			SAVHLB:	.BLKW	1			;HIGH WORD OF LBN FOR NEXT XFER
  1064	011166	000001			SAVLLB:	.BLKW	1			;LOW WORD OF LBN FOR NEXT XFER
  1065	011170	000001			SAVCNT:	.BLKW	1			;# OF BLOCKS TO XFER, 0 COUNTED AS 1
  1066	011172	000001			LBNH:	.BLKW	1			;LBN HIGH
  1067	011174	000001			LBNL:	.BLKW	1			;LBN LOW
  1068	011176	000001			KLDLEN:	.BLKW	1			;LENGTH OF KLDCP DIRECTORY
  1069	011200	000001			ECWRD0:	.BLKW	1
  1070	011202	000001			ECWRD1:	.BLKW	1
  1071	011204	000001			ECWRD2:	.BLKW	1
  1072	011206	000001			ECMSK0:	.BLKW	1
  1073	011210	000001			ECMSK1:	.BLKW	1
  1074	011212	000001			ECMSK2:	.BLKW	1
  1075	011214	000001			ECADR0:	.BLKW	1
  1076	011216	000001			ECADR1:	.BLKW	1
  1077	011220	000001			ECBAD0:	.BLKW	1
  1078	011222	000001			ECBAD1:	.BLKW	1
  1079	011224	000001			LEVELV:	.BLKW	1	;VERSION # OF 20F FROM F11ACP.TSK FILE
  1080
  1081	011226	011226				.PRINT .;END OF IMPURE AREA
  1082
  1083		011226			ENDING=.
  1084		004106				.END	USERSX			;GIVE USERSX FOR KLDCP
FELOAD -- BOOT PROGRAM TO FIND & LOAD RSX20F V1(4) 10-FEB-88	MACDLX V31  02-MAY-88  11:28  PAGE 36
FELOAD.P11    02-MAY-88 11:28		CROSS REFERENCE TABLE -- USER SYMBOLS

BADCHK  006742        	  974#	  984
BLKCNT  011126        	  954*	 1012*	 1047#
B0WRDS= 000377        	  598#
DB      010122        	  665	  667	  675	  682	  696	  697	  698	  714	  715	  729	  760	  789	  851
			  864	  866	  878	  883	  888	  891	 1035	 1044#
DBA     007400        	  656	  686	  705	  731	  754	  762	  791	  851*	 1014	 1023	 1035#
DISK    004074        	  609	  614#
DLCD  = 010000        	  342#
DLCTS = 020000        	  342#
DLDIE = 000040        	  342#
DLDSCH= 100000        	  342#
DLDTR = 000002        	  342#
DLRA  = 004000        	  342#
DLRD  = 000200        	  342#
DLRDAT= 000377        	  342#
DLRDRE= 000001        	  342#
DLRERR= 100000        	  342#
DLRFRM= 020000        	  342#
DLRIE = 000100        	  342#
DLRNGI= 040000        	  342#
DLROVR= 040000        	  342#
DLRPAR= 010000        	  342#
DLRTS = 000004        	  342#
DLSRD = 002000        	  342#
DLSTD = 000010        	  342#
DLXBRK= 000001        	  342#
DLXDAT= 000377        	  342#
DLXIE = 000100        	  342#
DLXMNT= 000004        	  342#
DLXRDY= 000200        	  342#
DL.RBF= 177562        	  342#
DL.RSR= 177560        	  342#
DL.XBF= 177566        	  342#	  424*
DL.XSR= 177564        	  342#	  425
DVFMOR  007162        	  998	 1012#
DVFRAM  007112        	  956	  960	  969	  982	  997#	 1005	 1007	 1026
DVWORD  007142        	  962	  966	  980	 1005#
ECADR0  011214        	  555*	  564	  587*	 1075#
ECADR1  011216        	  558*	  591*	 1076#
ECBAD0  011220        	  565*	 1077#
ECBAD1  011222        	  561*	 1078#
ECMSK0  011206        	  543*	  571	  573	  576	  578	  581	  583	 1072#
ECMSK1  011210        	 1073#
ECMSK2  011212        	 1074#
ECWRD0  011200        	  536*	  537*	  538*	  539*	  540*	  541*	  560*	  564*	  565	  572	  573*	  574*	  587
			 1069#
ECWRD1  011202        	  577	  578*	  579*	 1070#
ECWRD2  011204        	  582	  583*	  584*	  591	 1071#
ENDING= 011226        	  854	 1083#
FCOUNT  011136        	  952*	  997*	 1022*	 1051#
FDESIZ= 000040        	  371#	  907	  919
FELOAD  000000        	  399#
FHBMAX  005272        	  745#	  748*
FIXWCK  006504        	  941#
FNDACP  005304        	  629	  748#	  759	  764	  766	  768	  770
FNDDIR  006102        	  637	  874#
FELOAD -- BOOT PROGRAM TO FIND & LOAD RSX20F V1(4) 10-FEB-88	MACDLX V31  02-MAY-88  11:28  PAGE 36-1
FELOAD.P11    02-MAY-88 11:28		CROSS REFERENCE TABLE -- USER SYMBOLS

FNDKLD  006276        	  639	  903#
FND550  004560        	  627	  696#
FOUNDK  006414        	  916	  924#
FPOINT  011134        	  999	 1002*	 1023*	 1050#
F11ACP  005274        	  746#	  763	  765	  769
GETHOM  004226        	  625	  635	  644#
GETH10  004316        	  645	  650	  656#
GETH11  004362        	  626	  675#
GETKLD  004172        	  615	  635#
GETRSX  004132        	  616	  624#
GETSTD  005626        	  796	  818#
GIVEUP  000500        	  502	  527#
GOTSTD  005736        	  822	  825#
HOMFEV= 000142        	  133#
HOMFE0= 000143        	  133#	  675	  682
HOMFLN= 000145        	  133#
HOMKCY= 000154        	  133#	  878
HOMKLN= 000156        	  133#	  891
HOMKTS= 000155        	  133#	  883	  888
HOMKV1= 000142        	  133#
HOMKV2= 000152        	  133#	  864
HOMKV3= 000153        	  133#	  866
HOMNA0= 000000        	  133#
HOMNA1= 000001        	  133#
INITR0  011140        	  399*	  987	 1053#
INITR1  011142        	  400	  621*	  988	 1054#
INITR2  011144        	  989	 1055#
INITR3  011146        	  990	 1056#
INITR4  011150        	  991	 1057#
INITR5  011152        	  605	  608	  620*	  992	 1058#
INITSP  011154        	  993	 1059#
KLDCP   006602        	  911	  913	  915	  950#
KLDIR = 012000        	   65#	  894	  903
KLDLEN  011176        	  891*	  897	  906	 1068#
LBC     011130        	  963*	  964*	  970*	 1048#
LBNH    011172        	  875*	  879*	  885*	  890*	  895	  924*	  929*	  934*	  938*	 1015	 1025*	 1066#
LBNL    011174        	  874*	  878*	  884*	  889*	  896	  925*	  928*	  933*	  937*	 1016	 1024*	 1067#
LDBIN1  006654        	  955#	  958	  973
LDBIN2  006722        	  969#	  978
LDBIN3  007022        	  971	  976#
LEVELV  011224        	  771*	  821	 1079#
LJMP    007026        	  965	  980#
LODKLD  006610        	  640	  952#
MOVEME  005762        	  624	  851#
NEWADR= 130000        	   64#	  818	  851	  852	  858	  859
NEWPC   011156        	  805*	  981*	  994	 1060#
POK20F  005440        	  630	  789#
PROL36  000166        	  441#	  445	  562	  569	  590
PROMPT  004000        	  411	  418	  605#
PS    = 177776        	  342#
REDAOK  000434        	  511#	  592
REDBLK  000206        	  416	  456#	  659	  688	  706	  736	  758	  898	 1019
REDBL0  000216        	  458#	  517
REDBL1  000232        	  463#	  525
REDDIR  006200        	  638	  894#
RED550  005110        	  628	  728#
FELOAD -- BOOT PROGRAM TO FIND & LOAD RSX20F V1(4) 10-FEB-88	MACDLX V31  02-MAY-88  11:28  PAGE 36-2
FELOAD.P11    02-MAY-88 11:28		CROSS REFERENCE TABLE -- USER SYMBOLS

RESACS  007052        	  632	  642	  811	  987#
RETRY   000466        	  504	  506	  523#	  532	  534
RPAD16= 000400        	  342#
RPAD17= 001000        	  342#
RPAOE = 001000        	  342#
RPATA = 100000        	  342#	  507
RPBOOT= 007664        	  784#	  805
RPCPE = 020000        	  342#	  498	  505
RPCYLA= 000777        	  342#
RPDCK = 100000        	  342#
RPDLT = 100000        	  342#
RPDTE = 010000        	  342#
RPDVA = 004000        	  342#
RPECH = 000100        	  342#
RPECI = 004000        	  342#
RPERR = 040000        	  342#	  507
RPFER = 000020        	  342#
RPFMT2= 010000        	  342#
RPFUNC= 000077        	  342#
RPGO  = 000001        	  342#
RPHCE = 000200        	  342#
RPHCI = 002000        	  342#	  493
RPHCRF= 000400        	  342#
RPIAE = 002000        	  342#
RPIE  = 000100        	  342#
RPILF = 000001        	  342#
RPILR = 000002        	  342#
RPOFSD= 000377        	  342#
RPOPCL= 000016        	  342#
RPOPDC= 000010        	  342#
RPOPI = 020000        	  342#
RPOPNP= 000000        	  342#
RPOPOF= 000014        	  342#
RPOPPA= 000022        	  342#
RPOPRC= 000006        	  342#
RPOPRD= 000070        	  342#
RPOPRF= 000072        	  342#
RPOPRI= 000020        	  342#
RPOPRP= 000012        	  342#
RPOPSK= 000004        	  342#
RPOPSR= 000030        	  342#
RPOPUL= 000002        	  342#
RPOPWC= 000050        	  342#
RPOPWD= 000060        	  342#
RPOPWF= 000062        	  342#
RPOPWH= 000052        	  342#
RPPAR = 000010        	  342#
RPPSEL= 002000        	  342#
RPRDY = 000200        	  342#	  498
RPRESU= 007772 G      	  785#	  805
RPRMR = 000004        	  342#
RPSC  = 100000        	  342#
RPSCG = 100000        	  342#
RPSCTA= 000037        	  342#
RPTRE = 040000        	  342#	  498	  505
RPTRKA= 017400        	  342#
FELOAD -- BOOT PROGRAM TO FIND & LOAD RSX20F V1(4) 10-FEB-88	MACDLX V31  02-MAY-88  11:28  PAGE 36-3
FELOAD.P11    02-MAY-88 11:28		CROSS REFERENCE TABLE -- USER SYMBOLS

RPUNIT  011162        	  408*	  463	 1062#
RPUNS = 040000        	  342#
RPWCE = 040000        	  342#
RPWCF = 000040        	  342#
RPWLE = 004000        	  342#
RP.BA = 176704        	  342#	  464*
RP.CS1= 176700        	  342#	  408	  463*	  464*	  465*	  475*	  488*	  490*	  493*	  494*	  498	  505	  507
			  531	  533	  543
RP.CS2= 176710        	  342#	  408	  463*
RP.DA = 176706        	  342#	  488*
RP.DC = 176734        	  342#	  475*
RP.DS = 176712        	  342#	  507
RP.EC1= 176744        	  342#	  533
RP.EC2= 176746        	  342#	  543
RP.ER1= 176714        	  342#	  531
RP.OF = 176732        	  342#	  490*	  493*
RP.WC = 176702        	  342#	  465*
R.DSP = 177570        	  342#
R.PC  = 177707        	  342#
R.R0  = 177700        	  342#
R.R1  = 177701        	  342#
R.R2  = 177702        	  342#
R.R3  = 177703        	  342#
R.R4  = 177704        	  342#
R.R5  = 177705        	  342#
R.R6  = 177706        	  342#
R.R7  = 177707        	  342#
R.SL  = 177774        	  342#
R.SP  = 177706        	  342#
R.SWR = 177570        	  342#
SAVCNT  011170        	  457*	  516*	 1065#
SAVHLB  011164        	  458*	  512	  523	 1063#
SAVLLB  011166        	  459*	  511	  524	 1064#
SAVR1   011122        	  702*	  753*	  755	 1045#
SAVR2   011124        	  703*	  750*	  751	  756	 1046#
SAVUBA  011160        	  456*	  464	  515*	  554	 1061#
SIXHOM= 105755        	  133#
STAK    010120        	  415	  623	 1043#
STYPE   000142        	  420	  430#	  611	  652	  677	  690	  709	  718	  722	  728	  738	  813	  824
			  868	  901	  921	  947	  953	  974	 1029	 1031
STYPE1  000144        	  431#	  434
STYPE2  000156        	  432	  435#
SWR   = 177570        	  342#	  614
SWRFOO  004074        	  606	  613#
S.DL  = 000032        	  782#	  802*	  803*
TRYECC  000504        	  508	  531#
TYO     000126        	  424#	  433
TYO1    000132        	  425#	  426
USERSX  004106        	  620#	 1084
VALID = 100000        	  133#
VALTAB  005754        	  825	  847#
VERTAB  005744        	  818	  825	  841#
VRFKLD  006020        	  636	  864#
V.BPT = 000014        	  342#
V.CPU = 000004        	  342#
V.DLI = 000060        	  342#
FELOAD -- BOOT PROGRAM TO FIND & LOAD RSX20F V1(4) 10-FEB-88	MACDLX V31  02-MAY-88  11:28  PAGE 36-4
FELOAD.P11    02-MAY-88 11:28		CROSS REFERENCE TABLE -- USER SYMBOLS

V.DLO = 000064        	  342#
V.EMT = 000030        	  342#
V.ILL = 000010        	  342#
V.IOT = 000020        	  342#
V.PWF = 000024        	  342#
V.RES = 000010        	  342#
V.RH11= 000254        	  342#
V.TRP = 000034        	  342#
W.AVAL= 000057        	  104#
W.CHK1= 000072        	  104#
W.CHK2= 000776        	  104#
W.CRDT= 000031        	  169#
W.CRTI= 000040        	  169#
W.CTSZ= 000006        	  183#
W.DFPR= 000044        	  104#
W.DVTY= 000012        	  104#
W.EFNU= 000002        	  183#
W.EFSQ= 000004        	  183#
W.ERVN= 000001        	  183#
W.ESQN= 000000        	  183#
W.EXDT= 000046        	  169#
W.FIEX= 000055        	  104#
W.FLEV= 000006        	  155#
W.FMAX= 000006        	  104#
W.FNAM= 000000        	  169#	  763	  765	  767
W.FNUM= 000002        	  155#	  714
W.FPRO= 000012        	  155#
W.FSEQ= 000004        	  155#	  715
W.FTYP= 000006        	  169#	  769
W.FVER= 000010        	  169#	  771
W.IBLB= 000002        	  104#	  696	  697
W.IBSZ= 000000        	  104#	  698
W.IDOF= 000000        	  155#	  760
W.KCHK= 000026        	  371#
W.KCPH= 000034        	  371#
W.KCPL= 000036        	  371#
W.KCRE= 000006        	  371#
W.KCYL= 000010        	  371#	  926
W.KEXT= 000004        	  371#	  915
W.KFL0= 000000        	  371#	  911
W.KFL1= 000002        	  371#	  913
W.KRS1= 000030        	  371#
W.KRS2= 000032        	  371#
W.KTS = 000012        	  371#	  931	  936
W.KTYP= 000024        	  371#
W.KWAH= 000014        	  371#	  942*	  945
W.KWAL= 000016        	  371#	  943*	  954
W.K1LA= 000020        	  371#
W.K1SA= 000022        	  371#
W.LBSZ= 000007        	  183#
W.LRUC= 000056        	  104#
W.MAX = 000011        	  183#
W.MPOF= 000001        	  155#	  729	  789
W.PROG= 000010        	  155#
W.PROJ= 000011        	  155#
W.RES1= 000032        	  104#
FELOAD -- BOOT PROGRAM TO FIND & LOAD RSX20F V1(4) 10-FEB-88	MACDLX V31  02-MAY-88  11:28  PAGE 36-5
FELOAD.P11    02-MAY-88 11:28		CROSS REFERENCE TABLE -- USER SYMBOLS

W.RES2= 000046        	  104#
W.RTRV= 000012        	  183#	  732	  733	  792	  793
W.RVDT= 000014        	  169#
W.RVNO= 000012        	  169#
W.RVOL= 000400        	  104#
W.RVTI= 000023        	  169#
W.SBCL= 000010        	  104#
W.SYSI= 000256        	  104#
W.UCHA= 000014        	  155#
W.USE = 000010        	  183#
W.VCHA= 000042        	  104#
W.VDAT= 000074        	  104#
W.VHL = 000112        	  104#
W.VLEV= 000014        	  104#
W.VNAM= 000016        	  104#
W.VOWN= 000036        	  104#
W.VPRO= 000040        	  104#
W.WISZ= 000054        	  104#
$CKS11  011132        	  955*	  972	  983	 1001*	 1049#
.     = 011226        	  396#	  420#	  596#	  597#	  598	  599	  603#	  652#	  677#	  722#	  738#	  813#	  921#
			 1029#	 1031#	 1036#	 1037	 1041#	 1042#	 1043#	 1044#	 1045#	 1046#	 1047#	 1048#	 1049#
			 1050#	 1051#	 1053#	 1054#	 1055#	 1056#	 1057#	 1058#	 1059#	 1060#	 1061#	 1062#	 1063#
			 1064#	 1065#	 1066#	 1067#	 1068#	 1069#	 1070#	 1071#	 1072#	 1073#	 1074#	 1075#	 1076#
			 1077#	 1078#	 1079#	 1081	 1083
.OFFSE= 000040        	  104#	  155#	  169#	  183#	  350#	  371#
FELOAD -- BOOT PROGRAM TO FIND & LOAD RSX20F V1(4) 10-FEB-88	MACDLX V31  02-MAY-88  11:28  PAGE 37
FELOAD.P11    02-MAY-88 11:28		CROSS REFERENCE TABLE -- MACRO NAMES

ABORT	  382#	  420	  611	  652	  677	  690	  709	  718	  722	  738	  813	  824	  868	  901	  921
	  947	  974	 1029	 1031
BSYM	   69#	  104	  138#	  155	  169	  183
CALL	  387#	  416	  420	  433	  562	  569	  590	  611	  624	  625	  626	  627	  628	  629	  630
	  635	  636	  637	  638	  639	  640	  645	  650	  652	  659	  677	  688	  690	  706	  709
	  718	  722	  728	  736	  738	  758	  796	  813	  824	  868	  898	  901	  921	  947	  953
	  956	  960	  962	  966	  969	  974	  980	  982	 1005	 1007	 1019	 1029	 1031
DTBX	  831#	  841	  847
F11FID	  157#	  169
F11HED	  143#	  155
F11HOM	   74#	  104
F11MAP	  171#	  183
IOBITS	  188#	  342
KLDHED	  352#	  371
RETURN	  391#	  446	  520	  528	  647	  691	  724	  739	  772	  775	  826	 1003	 1010
TYPE	  375#	  420	  611	  652	  677	  690	  709	  718	  722	  728	  738	  813	  824	  868	  901
	  921	  947	  953	  974	 1029	 1031
T10HOM	  112#	  133
WSYM	  108#	  133	  346#	  371
XP	  838#	  841	  844#	  847


. ABS.  011226     000


 ERRORS DETECTED:  0

 FELOAD,FELOAD/CRF/NL:TTM=FELOAD
 RUN-TIME: 1 2 .4 SECONDS
 RUN-TIME RATIO: 19/5=3.7
 CORE USED:  7K  (13 PAGES)