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 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 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 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+-2,R1 ;GET "HIGH" LBN OF HOME BLOCK 676 004366 100431 BMI 1$ ;BRANCH IFF VALID BIT IS SET 677 004370 ABORT 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+,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 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 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 719 720 005020 020127 000005 5$: CMP R1,#5 ;SHOULD BE FILE (5,5,0) 721 005024 001430 BEQ 6$ ; 722 005026 ABORT 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 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 #,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 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 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- 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+,#043241 ;CHECK FOR "KLAD10" IN RAD50 865 006026 001004 BNE 1$ ;BRANCH IF NOT THERE 866 006030 026727 002414 016766 CMP DB+,#016766 ;CHECK 2ND HALF 867 006036 001420 BEQ 2$ ;BRANCH IF "KLAD10" THERE 868 006040 1$: ABORT 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+,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++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+,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+,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 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 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 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 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 1030 1031 007320 2$: ABORT 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)