FELOAD -- BOOT PROGRAM TO FIND & LOAD RSX20F V1(5) 30-JAN-89 MACDLX V31 10-OCT-90 12:16 FELOAD.P11 30-JAN-89 14:33 TABLE OF CONTENTS 74 UNIVERSALS -- F11HOM - Format of the FILES-11 home block, offsets as seen from 11 113 UNIVERSALS -- T10HOM - Format of TOPS10 home block, as seen from 11 side 143 UNIVERSALS -- F11HED - format of FILES-11 file header block, as seen from 11 193 UNIVERSALS -- IOBITS - words and bits in the I/O page, seen from the 11 349 UNIVERSALS -- IOBITS - Basic CPU (1) UNIVERSALS -- IOBITS - DL11 console terminal (1) UNIVERSALS -- IOBITS - RH11/RP06 bit definitions 351 UNIVERSALS -- KLDHED - Format of entry in KLDCP directory 380 DEFINITIONS - "helper" macros 402 BLOCK 0 booting code 601 END OF BLOCK 0 CODE 606 000776 000002 .PRINT 1000-.;LOCATIONS LEFT IN BLOCK 0 BOOT 608 START OF BLOCK 4-7 CODE 625 BOOT IN AND START 20F FRONT END 1041 END OF 2ND PART 1045 007404 000374 .PRINT 10000-.; BYTES REMAINING IN 2ND PART OF BOOT 1047 IMPURE NON-INITIALIZED DATA 1089 011226 011226 .PRINT .;END OF IMPURE AREA FELOAD -- BOOT PROGRAM TO FIND & LOAD RSX20F V1(5) 30-JAN-89 MACDLX V31 10-OCT-90 12:16 PAGE 1 FELOAD.P11 30-JAN-89 14:33 1 .TITLE FELOAD -- BOOT PROGRAM TO FIND & LOAD RSX20F V1(5) 30-JAN-89 2 3 ;COPYRIGHT (C) DIGITAL EQUIPMENT CORPORATION 1989. 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 ;4 FIX BUG WHERE THE MESSAGES WERE TOO LONG AND THE CODE WOULDN'T 42 ; ASSEMBLE BECAUSE IT WAS TOO BIG TO FIT IN BLOCKS 4 TO 7. 43 ; 12-MAY-88 /JJF 44 ; 45 ;5 EXTEND .STDTB TABLE TO INCLUDE VALUE FOR RSX-20F VERSION 16-01. 46 ; 30-JAN-89 /JJF 47 ; 48 ;[END OF EDIT HISTORY] 49 50 ;; FELOAD IS A SMALL PROGRAM USED TO LOAD THE "FRONT END" PROGRAM. 51 ;; TAKING CUES FROM THE PDP11 SWITCH REGISTER AND THE OPERATOR 52 ;; CONSOLE TELETYPE, IT DECIDES WHICH FRONT END SYSTEM (IE: RSX20F 53 ;; OR KLDCP) TO RUN, SEARCHES THE APPROPRIATE FRONT END DIRECTORY 54 ;; AND LOADS THE CORRECT BOOT FOR THE SYSTEM AND STARTS IT BY 55 ;; BRANCHING TO LOCATION 0. 56 FELOAD -- BOOT PROGRAM TO FIND & LOAD RSX20F V1(5) 30-JAN-89 MACDLX V31 10-OCT-90 12:16 PAGE 1-1 FELOAD.P11 30-JAN-89 14:33 57 .ENABL ABS,LC 58 .ENABL LC ;REALLY LOWER CASE 59 60 61 ;; If FELOAD is started at it's "starting address", rather than 0 62 ;; then it will load rsx20f unconditionally. This is to support 63 ;; booting from KLDCP into RSX20F via the .P 20F or >. RSX commands. 64 65 ; First, the BM873YJ rom reads our block 0 code into physical core 66 ; block 0. Then we read in blocks 4-7 into physical locations 4000-7777. 67 ; We always use 10000-10777 as impure data storage. 68 ; Then if we are booting rsx20f we move ourselves to 130000 and above. 69 70 71 130000 NEWADR= 130000 ;RELOCATION IF WE NEED TO LOAD 20F 72 012000 KLDIR= 12000 ;BUILD KLDCP DIRECTORY HERE UPWARDS FELOAD -- BOOT PROGRAM TO FIND & LOAD RSX20F V1(5) 30-JAN-89 MACDLX V31 10-OCT-90 12:16 PAGE 2 FELOAD.P11 30-JAN-89 14:33 UNIVERSALS -- F11HOM - FORMAT OF THE FILES-11 HOME BLOCK, OFFSETS AS SEEN FROM 11 74 .SBTTL UNIVERSALS -- F11HOM - Format of the FILES-11 home block, offsets as seen from 1 75 76 .MACRO BSYM .name,.value ;;MACRO TO DEFINE SYMBOLS 77 W.'.name'=.offset ;;define name as current offset 78 .offset=.offset+'.value'.;;redefine offset for next symbol 79 .ENDM BSYM 80 81 .MACRO F11HOM ;;ALL OFFSETS BELOW ARE GIVEN IN DECIMAL 82 .offset=0 ;; START OFF AT 0 83 BSYM IBSZ,2 ;; OFFSET TO INDEX-BIT-MAP SIZE 84 ;; # OF BLOCKS IN THE "SAT" PORTION ONLY 85 ;; SO THE FILE INDEXF.SYS IS ALWAYS LARGER 86 ;; SINCE IT INCLUDES THE FILE HEADERS ("RIB"S) 87 ;; AS WELL AS THE SAT. 88 BSYM IBLB,4 ;; DISK ADDRESS (LBN) OF THE INDEX-BIT-MAP 89 BSYM FMAX,2 ;; # OF FILES ALLOWED 90 BSYM SBCL,2 ;; STORAGE-BIT-MAP CLUSTER SIZE 91 BSYM DVTY,2 ;; DISK-DEVICE TYPE 92 BSYM VLEV,2 ;; STRUCTURE LEVEL 93 BSYM VNAM,12 ;; 12 ASCII CHARACTERS "VOLUME NAME" 94 BSYM RES1,4 ;; "RESERVED" 95 BSYM VOWN,2 ;; VOLUME OWNERS 96 BSYM VPRO,2 ;; VOLUME PROTECTION 97 BSYM VCHA,2 ;; VOLUME CHARACTERISTICS 98 BSYM DFPR,2 ;; DEFAULT PROTECTION 99 BSYM RES2,6 ;; "RESERVED" 100 BSYM WISZ,1 ;; DEFAULT NUMBER OF RETRIEVAL POINTERS IN A WINDOW 101 BSYM FIEX,1 ;; DEFAULT NUMBER OF BLOCKS TO EXTEND FILES 102 BSYM LRUC,1 ;; NUMBER OF ENTRIES IN DIRECTORY LRU 103 BSYM AVAL,11 ;; "AVAILABLE SPACE" 104 BSYM CHK1,2 ;; CHECKSUM OF WORDS 0-28. 105 BSYM VDAT,14 ;; CREATION DATE AND TIME 106 BSYM VHL,100 ;; VOLUME-HEADER LABEL 107 BSYM SYSI,82 ;; SYSTEM-SPECIFIC INFORMATION 108 BSYM RVOL,254;; RELATIVE VOLUME TABLE 109 BSYM CHK2,2 ;; CHECKSUM OF HOME BLOCK WORDS 0 THRU 255 110 .ENDM F11HOM 111 000000 F11HOM FELOAD -- BOOT PROGRAM TO FIND & LOAD RSX20F V1(5) 30-JAN-89 MACDLX V31 10-OCT-90 12:16 PAGE 3 FELOAD.P11 30-JAN-89 14:33 UNIVERSALS -- T10HOM - FORMAT OF TOPS10 HOME BLOCK, AS SEEN FROM 11 SIDE 113 .SBTTL UNIVERSALS -- T10HOM - Format of TOPS10 home block, as seen from 11 side 114 115 .MACRO WSYM .NAME,.VALUE 116 '.NAME'='.VALUE'. 117 .ENDM WSYM 118 119 .MACRO T10HOM 120 ; This stuff defines the "PDP11 WORD NUMBER" of each thing 121 WSYM HOMNA0,0 ;;OFFSET CONTAINING SIXBIT .HOM. (TRUNCATED TO 16 BITS) 122 SIXHOM=105755 ;;TOPS10 SIXBIT "HOM" TRUNCATED TO 16 BITS 123 WSYM HOMNA1,1 ;;2ND HALF OF SIXBIT .HOM. (ALWAYS 0) 124 125 ;; HERE ARE THE KLDCP POINTERS 126 WSYM HOMKV1,98 ;;CONTAINS .RAD50 /KL / IF KLDCP VERSION 1 127 WSYM HOMKV2,106 ;;CONTAINS .RAD50 /KLA/ IF KLDCP VERSION 2 128 WSYM HOMKV3,107 ;;CONTAINS .RAD50 /D10/ IF KLDCP VERSION 2 129 WSYM HOMKCY,108 ;;CONTAINS CYLINDER OF KLADFE.SYS 130 WSYM HOMKTS,109 ;;CONTAINS TRACK/SECTOR OF KLADFE.SYS 131 WSYM HOMKLN,110 ;;CONTAINS LENGTH OF KLADFE.SYS 132 133 ;; HERE ARE THE FILES11 POINTERS 134 WSYM HOMFEV,98 ;;CONTAINS 100000 IF FILES11 VALID 135 VALID=100000 ;;BIT ON IF FILES11 VALID 136 WSYM HOMFE0,99 ;;CONTAINS LBN OF FILES11 FILE SYSTEM 137 WSYM HOMFLN,101 ;;LENGTH OF CONTIGUOUS FILES11 FILE SYSTEM 138 .ENDM T10HOM 139 140 000000 T10HOM ;;FORCE DEFAULT DEFINITIONS 141 FELOAD -- BOOT PROGRAM TO FIND & LOAD RSX20F V1(5) 30-JAN-89 MACDLX V31 10-OCT-90 12:16 PAGE 4 FELOAD.P11 30-JAN-89 14:33 UNIVERSALS -- F11HED - FORMAT OF FILES-11 FILE HEADER BLOCK, AS SEEN FROM 11 143 .SBTTL UNIVERSALS -- F11HED - format of FILES-11 file header block, as seen from 11 144 145 .MACRO BSYM .name,.value 146 W.'.name'=.offset 147 .offset=.offset+'.value'. 148 .ENDM BSYM 149 150 .MACRO F11HED 151 .offset=0 152 BSYM IDOF,1 ;; OFFSET INTO THE ID AREA 153 BSYM MPOF,1 ;; OFFSET INTO THE MAP AREA (FROM THE ID AREA) 154 BSYM FNUM,2 ;; FILE NUMBER 155 BSYM FSEQ,2 ;; FILE SEQUENCE 156 BSYM FLEV,2 ;; STRUCTURE LEVEL AND SYSTEM NUMBER 157 BSYM PROG,1 ;; MEMBER NUMBER 158 BSYM PROJ,1 ;; GROUP NUMBER 159 BSYM FPRO,2 ;; FILE-PROTECTION CODE 160 BSYM UCHA,1 ;; USER CONTROLLER FILE CHARACTERISTICS 161 .ENDM F11HED 162 000000 F11HED 163 164 .MACRO F11FID ;; DEFINE ID AREA 165 .offset=0 ;; OFFSET FROM THE START OF THE ID AREA 166 BSYM FNAM,6 ;; 6 BYTES OF RAD50, 3 CHARS PER 2 BYTES 167 BSYM FTYP,2 ;; 2 BYTES OF FILE TYPE IN RAD50 168 BSYM FVER,2 ;; FILE VERSION # IN BINARY 169 BSYM RVNO,2 ;; REVISION # IN BINARY 170 BSYM RVDT,7 ;; REVISION DATE IN ASCII ddmmmyy FORMAT 171 BSYM RVTI,6 ;; REVISION TIME IN ASCII hhmmss FORMAT 172 BSYM CRDT,7 ;; CREATION DATE IN ASCII ddmmmyy FORMAT 173 BSYM CRTI,6 ;; CREATE TIME IN hhmmss FORMAT 174 BSYM EXDT,7 ;; EXPIRE DATE IN ASCII ddmmmyy FORMAT 175 .ENDM F11FID 176 000000 F11FID ;;INCARNATE THE SYMBOLS 177 178 .MACRO F11MAP ;; DEFINE THE MAPPING AREA TOO 179 .offset=0 180 BSYM ESQN,1 ;; EXTENSION SEGMENT NUMBER 181 BSYM ERVN,1 ;; EXTENSION RELATIVE VOLUME NUMBER (NEVER USED) 182 BSYM EFNU,2 ;; EXTENSION FILE NUMBER 183 BSYM EFSQ,2 ;; EXTENSION SEQUENCE NUMBER 184 BSYM CTSZ,1 ;; # OF BYTES IN A "BLOCK-COUNT FIELD" - ALWAYS 1 185 BSYM LBSZ,1 ;; # BYTES IN "LOGICAL BLOCK NUMBER FIELD" - ALWAYS 3 186 BSYM USE,1 ;; # RETRIEVAL POINTERS 187 BSYM MAX,1 ;; MAX # RETRIEVAL SLOTS IN THIS MAP 188 BSYM RTRV,0 ;; OFFSET TO RETRIEVAL POINTERS 189 .ENDM F11MAP 190 000000 F11MAP ;;INCARNATE THE SYMBOLS 191 FELOAD -- BOOT PROGRAM TO FIND & LOAD RSX20F V1(5) 30-JAN-89 MACDLX V31 10-OCT-90 12:16 PAGE 5 FELOAD.P11 30-JAN-89 14:33 UNIVERSALS -- IOBITS - WORDS AND BITS IN THE I/O PAGE, SEEN FROM THE 11 193 .SBTTL UNIVERSALS -- IOBITS - words and bits in the I/O page, seen from the 11 194 195 .MACRO IOBITS 196 .SBTTL UNIVERSALS -- IOBITS - Basic CPU 197 198 V.CPU= 004 ;CPU errors VECTOR 199 V.ILL= 010 ;Illegal instruction VECTOR 200 V.RES= 010 ;Reserved instruction VECTOR 201 V.BPT= 014 ;BPT, breakpoint trap VECTOR 202 V.IOT= 020 ;IOT, input/output trap VECTOR 203 V.PWF= 024 ;Power Fail trap VECTOR 204 V.EMT= 030 ;EMT, emulator trap VECTOR 205 V.TRP= 034 ;TRAP instruction 206 207 208 PS= 177776 ;Processor Status word (IE: PS) 209 R.SL= 177774 ;Stack limit register 210 211 R.R7= 177707 ;R7 212 R.PC= R.R7 ;Another name 213 R.R6= 177706 ;R6 214 R.SP= R.R6 ;Another name 215 216 R.R5= 177705 ;R5 217 R.R4= 177704 ;R4 218 R.R3= 177703 ;R3 219 R.R2= 177702 ;R2 220 R.R1= 177701 ;R1 221 R.R0= 177700 ;R0 222 223 R.SWR= 177570 ;Switch register 224 SWR=R.SWR ;Another name 225 R.DSP= R.SWR ;Display register FELOAD -- BOOT PROGRAM TO FIND & LOAD RSX20F V1(5) 30-JAN-89 MACDLX V31 10-OCT-90 12:16 PAGE 6 FELOAD.P11 30-JAN-89 14:33 UNIVERSALS -- IOBITS - WORDS AND BITS IN THE I/O PAGE, SEEN FROM THE 11 227 .SBTTL UNIVERSALS -- IOBITS - DL11 console terminal 228 229 V.DLI= 060 ;CONSOLE TERMINAL KEYBOARD VECTOR 230 V.DLO= 064 ;CONSOLE TERMINAL PRINTER VECTOR 231 232 DL.RSR= 177560 ;RECEIVER STATUS REGISTER 233 DLDSCH=100000 ;R/O DATASET STATUS CHANGE. REQUEST DATASET INTERRUPT. 234 DLRNGI=40000 ;R/O RING INDICATOR. IF RING COMES ON, SETS DLDSCH. 235 DLCTS=20000 ;R/O CLEAR TO SEND. IF CTS CHANGES, SETS DLDSCH 236 DLCD=10000 ;R/O CARRIER DETECT. IF CD CHANGES, SETS DLDSCH. 237 DLRA=4000 ;R/O RECEIVER ACTIVE. SET IF UART IS ASSEMBLING A CHARACTER. 238 DLSRD=2000 ;R/O SECONDARY RECEIVED DATA. IF SRD CHANGES, SETS DLDSCH. 239 DLRD=200 ;R/O RECEIVER DONE. SET IF COMPLETE CHARACTER IS READY TO READ. 240 DLRIE=100 ;R/W RECEIVER INTERRUPT ENABLE. DO INTERRUPT IF DLRD TURNS ON. 241 DLDIE=40 ;R/W DATASET INTERRUPT ENABLE. DO INTERRUPT IF DLDSCH TURNS ON 242 DLSTD=10 ;R/W SECONDARY TRANSMITTED DATA. IF SET, SIGNAL GOES ON. 243 DLRTS=4 ;R/W REQUEST TO SEND. IF SET, SIGNAL GOES ON. 244 DLDTR=2 ;R/W DATA TERMINAL READY. IF SET, SIGNAL GOES ON. 245 DLRDRE=1 ;W/O READER ENABLE. ADVANCE ASR PTR ONE FRAME IF AUTOMATIC. 246 247 DL.RBF= 177562 ;RECEIVER BUFFER 248 DLRERR=100000 ;R/O RECEIVER ERROR. LOGICAL OR OF (DLROVR,DLRFRM,DLRPAR) 249 DLROVR=40000 ;R/O RECEIVER OVERRUN. THE OLD CHARACTER IS REPLACED WITH NEW. 250 DLRFRM=20000 ;R/O RECEIVER FRAMING ERROR. 251 DLRPAR=10000 ;R/O RECEIVER DATA PARITY ERROR. 252 DLRDAT=377 ;R/O RECEIVER DATA. THE CHARACTER READ. 253 254 DL.XSR= 177564 ;XMITTER STATUS 255 DLXRDY=200 ;R/O TRANSMITTER READY. REQUESTS TRANSMITTER INTRP. 256 DLXIE=100 ;R/W TRANSMITTER INTERRUPT ENABLED. DO INTERRUPT IF DLXRDY SET. 257 DLXMNT=4 ;R/W TRANSMITTER MAINTENENCE. CAUSES OUTPUT TO INPUT LOOP. 258 DLXBRK=1 ;R/W TRANSMITTER BREAK. FORCE BREAK SIGNAL UNTIL CLEARED. 259 260 DL.XBF= 177566 ;XMITTER BUFFER 261 DLXDAT=377 ;W/O TRANSMIT DATA. CHARACTER TO TYPE. FELOAD -- BOOT PROGRAM TO FIND & LOAD RSX20F V1(5) 30-JAN-89 MACDLX V31 10-OCT-90 12:16 PAGE 7 FELOAD.P11 30-JAN-89 14:33 UNIVERSALS -- IOBITS - WORDS AND BITS IN THE I/O PAGE, SEEN FROM THE 11 263 .SBTTL UNIVERSALS -- IOBITS - RH11/RP06 bit definitions 264 265 266 V.RH11= 254 ;RH11 INTERRUPT VECTOR 267 268 RP.CS1= 176700 ;;CONTROL AND STATUS REGISTER 1 269 RPSC=100000 ;;R/O SPECIAL CONDITION. LOGICAL OR OF "RPTRE","RPATTN","RPMCPE" 270 RPTRE=40000 ;;R/O TRANSFER ERROR. LOR OF DLT,WCE,UPE,NED,NEM,PGE, 271 ;;MXF, MDPE, OR A DRIVE ERROR DURING DATA XFER. 272 RPCPE=20000 ;;R/O CONTROL BUS PARITY ERROR (DURING REMOTE REGISTER READ) 273 RPDVA=4000 ;;R/O DRIVE AVAILABLE. 1=NOT BUSY ON OTHER PORT. 274 RPPSEL=2000 ;;R/W PORT SELECT. 1=DO DATA TRANSFER VIA UNIBUS B. 275 RPAD17=1000 ;;R/W UNIBUS ADDRESS BIT 17. 276 RPAD16=400 ;;R/W UNIBUS ADDRESS BIT 16. 277 RPRDY=200 ;;R/O READY. 1=DATA TRANSFER IN PROGRESS. 0=DONE. 278 RPIE=100 ;;R/W INTERRUPT ENABLE. DO INTERUPT IF RPRDY OR RPATTN GET SET. 279 RPFUNC=77 ;;R/W FUNCTION AND GO BITS. 280 RPOPNP=0 ; NO OPERATION 281 RPOPUL=2 ; UNLOAD/STANDBY 282 RPOPRC=6 ; RECALIBRATE 283 RPOPDC=10 ; DRIVE CLEAR 284 RPOPRP=12 ; RELEASE PORT 285 RPOPSR=30 ; SEARCH COMMAND 286 RPOPWC=50 ; WRITE CHECK DATA 287 RPOPWH=52 ; WRITE CHECK HEADER & DATA 288 RPOPWD=60 ; WRITE DATA 289 RPOPWF=62 ; WRITE FORMAT (HEADER & DATA) 290 RPOPRD=70 ; READ DATA 291 RPOPRF=72 ; READ FORMAT (HEADER & DATA) 292 RPOPSK=4 ; SEEK 293 RPOPOF=14 ; OFFSET 294 RPOPCL=16 ; (RETURN TO) CENTERLINE 295 RPOPPA=22 ; PACK ACKNOWLEDGE 296 RPOPRI=20 ; READ-IN PRESET 297 RPGO=1 ;;R/W GO. REQUEST DRIVE TO DO FUNCTION. CLEARED WHEN DONE. 298 299 RP.WC= 176702 ;;R/W WORD COUNT REGISTER. 2s COMPLEMENT WORD COUNT FOR XFER. 300 301 RP.BA= 176704 ;;R/W UNIBUS ADDRESS REGISTER. LOW 15 BITS OF XFER ADDRESS. 302 303 RP.DA= 176706 ;;DESIRED SECTOR/TRACK ADDRESS REGISTER 304 RPTRKA=017400 ;;R/W TRACK ADDRESS - HIGH BYTE OF WORD IS TRACK ADDRESS 305 RPSCTA=37 ;;R/W SECTOR ADDRESS - LOW BYTE OF WORD IS SECTOR ADDRESS 306 307 RP.CS2= 176710 ;;CONTROL AND STATUS 2 REGISTER 308 RPDLT=100000 ;;R/O DATA LATE. CAUSES RPTRE TO GET SET. 309 RPWCE=40000 ;;R/O WRITE CHECK ERROR. MISMATCH DURING WRITE. SETS RPTRE. 310 311 RP.DS= 176712 ;;DRIVE STATUS REGISTER 312 RPATA=100000 ;;R/O ATTENTION. 313 RPERR=40000 ;;R/O SET IF RP.ER1,RP.ER2,RP.ER3 GET SET. ONLY RPOPDC CAN CLR. 314 315 RP.ER1= 176714 ;;ERROR REGISTER 01 316 RPDCK=100000 ;;R/W DATA CHECK (IE: CORRECTABLE) 317 RPUNS=40000 ;;R/W UNSAVE (LOGICAL OR OF ALL UNSAFE BITS IN RPER2&RPER3) 318 RPOPI=20000 ;;R/W OPERATION INCOMPLETE FELOAD -- BOOT PROGRAM TO FIND & LOAD RSX20F V1(5) 30-JAN-89 MACDLX V31 10-OCT-90 12:16 PAGE 7-1 FELOAD.P11 30-JAN-89 14:33 UNIVERSALS -- IOBITS - WORDS AND BITS IN THE I/O PAGE, SEEN FROM THE 11 319 RPDTE=10000 ;;R/W DRIVE TIMING ERROR 320 RPWLE=4000 ;;R/W WRITE LOCK ERROR 321 RPIAE=2000 ;;R/W INVALID ADDRESS ERROR (DISK ADDRESS, NOT CORE ADDRESS) 322 RPAOE=1000 ;;R/W ADDRESS OVERFLOW ERROR (CYLINDER REGISTER OVERFLOWED) 323 RPHCRF=400 ;;R/W HEADER CRC ERROR 324 RPHCE=200 ;;R/W HEADER COMPARE ERROR 325 RPECH=100 ;;R/W ECC HARD ERROR 326 RPWCF=40 ;;R/W WRITE CLOCK FAIL 327 RPFER=20 ;;R/W FORMAT ERROR (OFFSET FMT DOESN'T MATCH DATA ON DISK) 328 RPPAR=10 ;;R/W PARITY ERROR 329 RPRMR=4 ;;R/W REGISTER MODIFICATION REFUSED 330 RPILR=2 ;;R/W ILLEGAL REGISTER 331 RPILF=1 ;;R/W ILLEGAL FUNCTION CODE 332 333 RP.OF= 176732 ;;OFFSET REGISTER 334 RPSCG=100000 ;;R/W SIGN CHANGE (FLIPS IF HEAD IS OVER TRUE TRACK'S CENTERLINE 335 RPFMT2=10000 ;;R/W 1 WHEN 16BIT/WORD FORMAT, 0 WHEN 18BIT/WORD FORMAT 336 RPECI=4000 ;;R/W 1 TO DISABLE ECC ERROR CORRECTION 337 RPHCI=2000 ;;R/W 1 TO DISABLE "HEADER COMPARE" 338 RPOFSD=377 ;;R/W OFFSET INFORMATION 339 340 RP.DC= 176734 ;;DESIRED CYLINDER 341 RPCYLA=777 ;;R/W CYLINDER ADDRESS. 342 343 RP.EC1= 176744 ;;ECC POSITION 344 ;;R/O 345 346 RP.EC2= 176746 ;;ECC PATTERN 347 ;;R/O 348 .ENDM IOBITS 349 000000 IOBITS FELOAD -- BOOT PROGRAM TO FIND & LOAD RSX20F V1(5) 30-JAN-89 MACDLX V31 10-OCT-90 12:16 PAGE 8 FELOAD.P11 30-JAN-89 14:33 UNIVERSALS -- KLDHED - FORMAT OF ENTRY IN KLDCP DIRECTORY 351 .SBTTL UNIVERSALS -- KLDHED - Format of entry in KLDCP directory 352 353 .MACRO WSYM .NAME 354 W.'.NAME'=.OFFSET 355 .OFFSET=.OFFSET+2 356 .ENDM WSYM 357 000000 .OFFSET=0 358 359 .MACRO KLDHED 360 WSYM KFL0 ;FIRST HALF OF KLDCP FILE NAME 361 WSYM KFL1 ;SECOND HALF OF KLDCP FILE NAME 362 WSYM KEXT ;EXT OF KLDCP FILE NAME 363 WSYM KCRE ;CREATION DATA 364 WSYM KCYL ;CYLINDER OF FILE 365 WSYM KTS ;TRACK/SECTOR 366 WSYM KWAH ;WORDS ALLOCATED (HIGH) 367 WSYM KWAL ;WORDS ALLOCATED (LOW) 368 WSYM K1LA ;PDP11 LOAD ADDDRESS 369 WSYM K1SA ;PDP11 START ADDRESS 370 WSYM KTYP ;FILE TYPE & FILE STATUS 371 WSYM KCHK ;CHECK SUM 372 WSYM KRS1 ;RESERVED (0) 373 WSYM KRS2 ;RESERVED (0) 374 WSYM KCPH ;CURRENT POSITION (HIGH) 375 WSYM KCPL ;CURRENT POSITION (LOW) 376 FDESIZ=.OFFSET ;SIZE OF AN ENTRY 377 .ENDM KLDHED 378 000000 KLDHED FELOAD -- BOOT PROGRAM TO FIND & LOAD RSX20F V1(5) 30-JAN-89 MACDLX V31 10-OCT-90 12:16 PAGE 9 FELOAD.P11 30-JAN-89 14:33 DEFINITIONS - "HELPER" MACROS 380 .SBTTL DEFINITIONS - "helper" macros 381 382 .MACRO TYPE .string ;;MACRO TO TYPE A STRING ON THE CONSOLE 383 .ENABL LC 384 CALL STYPE 385 .ASCIZ @'.string'@<15><12> 386 .EVEN 387 .ENDM TYPE 388 389 .MACRO ABORT .string ;;MACRO TO TYPE A STRING AND THEN HALT 390 TYPE <'.string'> 391 HALT 392 .ENDM ABORT 393 394 .MACRO CALL .dest 395 JSR PC,.dest 396 .ENDM CALL 397 398 .MACRO RETURN 399 RTS PC 400 .ENDM RETURN FELOAD -- BOOT PROGRAM TO FIND & LOAD RSX20F V1(5) 30-JAN-89 MACDLX V31 10-OCT-90 12:16 PAGE 10 FELOAD.P11 30-JAN-89 14:33 BLOCK 0 BOOTING CODE 402 .SBTTL BLOCK 0 booting code 403 000000 .=0 ;LOAD INTO LOCATION 0 404 405 ; THIS CODES RESIDES IN PHYSICAL DISK BLOCK 0; THE ROM LOADS IT 406 000000 010067 011134 FELOAD: MOV R0,INITR0 407 000004 012700 011142 MOV #INITR1,R0 408 000010 010120 MOV R1,(R0)+ ;SAVE R1 409 000012 010220 MOV R2,(R0)+ ;SAVE R2 410 000014 010320 MOV R3,(R0)+ ;SAVE R3 411 000016 010420 MOV R4,(R0)+ ;SAVE R4 412 000020 010520 MOV R5,(R0)+ ;SAVE R5 413 ; MOV SP,(R0)+ ;SAVE SP 414 000022 010105 MOV R1,R5 ;PRESERVE CSR ADDRESS IN R5 415 000024 016567 000010 011130 MOV RP.CS2-RP.CS1(R5),RPUNIT ;SAVE UNIT NUMBER 416 417 ; NOW READ IN 2ND PART OF BOOT 418 000032 012700 004000 MOV #PROMPT,R0 ;UNIBUS ADDRESS OF 2ND PART 419 000036 005001 CLR R1 ;HIGH ORDER LBN=0 420 000040 012702 000004 MOV #4,R2 ;LOW ORDER LBN=4 421 000044 010203 MOV R2,R3 ;REQUEST 4 BLOCK READ 422 000046 012706 010120 MOV #STAK,SP ;INIT THE STACK POINTER 423 000052 CALL REDBLK ;READ THAT BLOCK FROM RP04 424 000056 103402 BCS 2$ ;BRANCH IF CAN'T READ 2ND PART 425 000060 000167 003714 1$: JMP PROMPT ;JOIN "2nD PART CODE" 426 427 000064 2$: ABORT FELOAD -- BOOT PROGRAM TO FIND & LOAD RSX20F V1(5) 30-JAN-89 MACDLX V31 10-OCT-90 12:16 PAGE 11 FELOAD.P11 30-JAN-89 14:33 BLOCK 0 BOOTING CODE 429 430 ; ROUTINE TO TYPE A CHARACTER ON THE CONSOLE TERMINAL 431 000126 010037 177566 TYO: MOV R0,@#DL.XBF ;TYPE THE CHARACTER 432 000132 105737 177564 TYO1: TSTB @#DL.XSR ;WAIT FOR "DONE" TO APPEAR 433 000136 002375 BGE TYO1 ;LOOP UNTIL IT TURNS ON 434 000140 000207 RTS PC 435 436 ; ROUTINE TO TYPE A STRING 437 000142 012601 STYPE: MOV (SP)+,R1 ;PICK UP ADDRESS OF STRING 438 000144 112100 STYPE1: MOVB (R1)+,R0 ;PICK UP A BYTE 439 000146 001403 BEQ STYPE2 ;EXIT IF WE PICK UP A ZERO 440 000150 CALL TYO ;OTHERWISE TYPE IT 441 000154 000773 BR STYPE1 ;LOOP TILL WE FIND THE 0 442 000156 005201 STYPE2: INC R1 ;ADVANCE ONE BYTE 443 000160 042701 000001 BIC #1,R1 ;TURN OFF ODD BIT 444 000164 000111 JMP @R1 ;RETURN TO CALLER FELOAD -- BOOT PROGRAM TO FIND & LOAD RSX20F V1(5) 30-JAN-89 MACDLX V31 10-OCT-90 12:16 PAGE 12 FELOAD.P11 30-JAN-89 14:33 BLOCK 0 BOOTING CODE 446 ; ROUTINE TO ROTATE THE 3 WORDS @R1 (R3) BITS LEFT 447 ; (USED TO DO ECC CORRECTION) 448 000166 006311 PROL36: ASL (R1) 449 000170 006161 000002 ROL 2(R1) 450 000174 006161 000004 ROL 4(R1) 451 000200 005303 DEC R3 452 000202 001371 BNE PROL36 453 000204 RETURN FELOAD -- BOOT PROGRAM TO FIND & LOAD RSX20F V1(5) 30-JAN-89 MACDLX V31 10-OCT-90 12:16 PAGE 13 FELOAD.P11 30-JAN-89 14:33 BLOCK 0 BOOTING CODE 455 ; ROUTINE TO READ RP04/RP05/RP06 DISK BLOCKS 456 ;ENTER: 457 ; R0/ UNIBUS AADRESS OF 1ST WORD TO XFER 458 ; R1/ HIGH ORDER WORD OF LBN 459 ; R2/ LOW ORDER WORD OF LBN 460 ; R3/ # OF BLOCKS TO READ CONTIGUOUSLY, 0 MEANS 1 461 ; R5/ ADDRESS OF RPCS1 462 463 000206 010067 010746 REDBLK: MOV R0,SAVUBA ;SAVE UNIBUS ADDRESS 464 000212 010367 010752 MOV R3,SAVCNT ;SAVE COUNT OF BLOCKS 465 000216 010167 010742 REDBL0: MOV R1,SAVHLB ;SAVE HIGH LBN 466 000222 010267 010740 MOV R2,SAVLLB ;SAVE LOW LBN 467 468 ; HERE TO READ A BLOCK 469 000226 012704 000020 MOV #16.,R4 ;TRY UP TO 16 TIMES 470 000232 016765 010724 000010 REDBL1: MOV RPUNIT,RP.CS2-RP.CS1(R5) ;SETUP UNIT FIELD 471 000240 016765 010714 000004 MOV SAVUBA,RP.BA-RP.CS1(R5) ;SET THE UNIBUS ADDRESS 472 000246 012765 177400 000002 MOV #-400,RP.WC-RP.CS1(R5) ;SET THE WORD COUNT FOR 1 BLOCK 473 000254 005003 CLR R3 ;START OFF WITH 0 ANSWER 474 000256 005203 1$: INC R3 ;COUNT A SUBTRACTION 475 000260 162702 000574 SUB #380.,R2 ;USE A SUBTRACT LOOP ... 476 000264 005601 SBC R1 ;...TO CALCULATE "LBN / BPC" 477 000266 100373 BPL 1$ ;...TO GET DESIRED CYLINDER ADDRESS 478 000270 005303 DEC R3 ;FORGET THE LAST SUBTRACTION 479 000272 062702 000574 ADD #380.,R2 ;PUT BACK THE LAST CYLINDER'S BLOCKS 480 000276 005501 ADC R1 ;... 481 ; NOW R3=DESIRED CYLINDER ADDRESS 482 000300 010365 000034 MOV R3,RP.DC-RP.CS1(R5) ;SPECIFY THE DESIRED CYLINDER 483 484 000304 005003 CLR R3 ;CLEAR RESULT 485 000306 005203 2$: INC R3 ;COUNT FIRST ONE 486 000310 162702 000024 SUB #20.,R2 487 000314 005601 SBC R1 ;TAKE CARE OF CARRY (IF ANY) 488 000316 100373 BPL 2$ ;LOOP UNTIL WE GO TOO FAR 489 000320 062702 000024 ADD #20.,R2 ;RETURN IT 490 000324 005501 ADC R1 ;FIX FINAL CARRY 491 000326 005303 DEC R3 ;ONE LESS THAN WE THOUGHT 492 493 000330 000303 SWAB R3 ;TRACK IN LH 494 000332 050302 BIS R3,R2 ;INSERT SECTOR 495 000334 010265 000006 MOV R2,RP.DA-RP.CS1(R5) ;TELL DRIVE TRACK/SECTOR 496 497 000340 005065 000032 CLR RP.OF-RP.CS1(R5) ;CLEAR OFFSET 498 000344 020427 000010 CMP R4,#8. ;2ND 8 TRIES? 499 000350 003003 BGT 3$ ;NO 500 000352 012765 002000 000032 MOV #RPHCI,RP.OF-RP.CS1(R5) ;YES, TRY TURNING ON HEADER INHIBIT 501 000360 012765 000071 000000 3$: MOV #71,RP.CS1-RP.CS1(R5) ;TELL KONTROLLER TO DO THE READ 502 000366 005000 CLR R0 ;CLEAR TIMEOUT COUNT 503 000370 005200 4$: INC R0 ;COUNT UP TIMER 504 000372 001404 BEQ 5$ ;BRANCH IF XFER TIMED OUT 505 000374 032765 060200 000000 BIT #RPTRE!RPCPE!RPRDY,RP.CS1-RP.CS1(R5) ;TEST FOR DONE 506 000402 001772 BEQ 4$ ;LOOP TILL ONE COMES ON 507 508 000404 005304 5$: DEC R4 ;CHECK RETRY COUNT 509 000406 100434 BMI GIVEUP ;GIVE UP IF NO MORE POSSIBLE 510 000410 005700 TST R0 ;TEST TIMEOUT COUNT FELOAD -- BOOT PROGRAM TO FIND & LOAD RSX20F V1(5) 30-JAN-89 MACDLX V31 10-OCT-90 12:16 PAGE 13-1 FELOAD.P11 30-JAN-89 14:33 BLOCK 0 BOOTING CODE 511 000412 001425 BEQ RETRY ;IT TIMED OUT, TRY IT ALL OVER AGAIN 512 000414 032765 060000 000000 BIT #RPCPE!RPTRE,RP.CS1-RP.CS1(R5);CHECK CONTROL BUS PARITY ERROR 513 000422 001021 BNE RETRY ;RETRY ENTIRE OPERATION 514 000424 032765 140000 000012 BIT #RPATA!RPERR,RP.DS-RP.CS1(R5) ;CHECK DISK ERRORS 515 000432 001024 BNE TRYECC ;GO CONSIDER CORRECTABLE ERROR 516 517 ;IF WE GET HERE, THE XFER WAS APPARENTLY ERROR-FREE 518 000434 016702 010526 REDAOK: MOV SAVLLB,R2 ;RESTORE LOW LBN 519 000440 016701 010520 MOV SAVHLB,R1 ;RESTORE HIGH LBN 520 000444 005202 INC R2 ;ADD 1 TO LBN 521 000446 005501 ADC R1 ;ADD POSSIBLE CARRY 522 000450 062767 001000 010502 ADD #1000,SAVUBA ;STEP TO NEXT BLOCK ADDRESS 523 000456 005367 010506 DEC SAVCNT 524 000462 003255 BGT REDBL0 ;READ ANOTHER 525 ; ADD TO SAVUBA WILL NEVER "OVERFLOW" 16 BIT ADDRESS 526 ; CLC ;CLEAR ERROR 527 000464 RETURN 528 529 ;HERE TO RETRY THE XFER 530 000466 016701 010472 RETRY: MOV SAVHLB,R1 ;RESTORE THE LBN TO XFER 531 000472 016702 010470 MOV SAVLLB,R2 ;... 532 000476 000655 BR REDBL1 ;GO DO THE OPERATION AGAIN 533 ;WE DID OUR BEST, GIVE UP 534 000500 000261 GIVEUP: SEC 535 000502 RETURN 536 537 ;HERE IF READ FAILED, TRY AGAIN 538 000504 032765 077777 000014 TRYECC: BIT #77777,RP.ER1-RP.CS1(R5) ;CHECK FOR ANY ERROR, 'CEPT ECC DATA 539 000512 001365 BNE RETRY ;IF NOT ECC ERR, TRY VIA HARD RE-READ 540 000514 016502 000044 MOV RP.EC1-RP.CS1(R5),R2 ;GET ECC POSITION 541 000520 001762 BEQ RETRY ;GIVE UP IF POS=0 542 543 000522 005067 010452 CLR ECWRD0 544 000526 005067 010450 CLR ECWRD0+2 545 000532 005067 010446 CLR ECWRD0+4 546 000536 005067 010444 CLR ECWRD0+6 547 000542 005067 010442 CLR ECWRD0+10 548 000546 005067 010440 CLR ECWRD0+12 549 550 000552 016567 000046 010426 MOV RP.EC2-RP.CS1(R5),ECMSK0;GET ECC CORRECTION 551 552 000560 005302 DEC R2 ;DIVIDE POSITION BY 18. 553 000562 005003 CLR R3 554 000564 162702 000022 61$: SUB #18.,R2 ; 555 000570 002402 BLT 62$ ; 556 000572 005203 INC R3 ; 557 000574 000773 BR 61$ ; 558 559 000576 062702 000022 62$: ADD #18.,R2 ;DONE, R3=WORD, R2=SHIFTS 560 000602 006303 ASL R3 ;DOUBLE WORD POSITION, 11 ADR IN BYTES 561 000604 066703 010350 ADD SAVUBA,R3 562 000610 010367 010400 MOV R3,ECADR0 ;SETUP 1ST BAD WORD ADDRESS 563 564 000614 005723 TST (R3)+ 565 000616 010367 010374 MOV R3,ECADR1 ;SETUP 2ND BAD WORD ADDRESS 566 ; MOV #ECWRD0,R1 FELOAD -- BOOT PROGRAM TO FIND & LOAD RSX20F V1(5) 30-JAN-89 MACDLX V31 10-OCT-90 12:16 PAGE 13-2 FELOAD.P11 30-JAN-89 14:33 BLOCK 0 BOOTING CODE 567 000622 011367 010352 MOV (R3),ECWRD0 ;SETUP 2ND BAD WORD 568 000626 011367 010370 MOV (R3),ECBAD1 ;SAVE 2ND BAD WORD 569 000632 CALL PROL36 ;POSITION 2ND WORD INTO UPPER 18 BITS 570 571 000636 017767 010352 010334 MOV @ECADR0,ECWRD0 ;SETUP 1ST BAD WORD 572 000644 016767 010330 010346 MOV ECWRD0,ECBAD0 ;SAVE 1ST BAD WORD 573 574 ; MOV #ECMSK0,R1 575 000652 010203 MOV R2,R3 576 000654 CALL PROL36 ;POSITION ECC CORRECTION WORD 577 578 000660 016746 010322 MOV ECMSK0,-(SP) ;CORRECT BITS 0-16 579 000664 046716 010310 BIC ECWRD0,(SP) ; 580 000670 046767 010312 010302 BIC ECMSK0,ECWRD0 581 000676 052667 010276 BIS (SP)+,ECWRD0 582 583 000702 016746 010302 MOV ECMSK0+2,-(SP) ;CORRECT BITS 17-32 584 000706 046716 010270 BIC ECWRD1,(SP) ; 585 000712 046767 010272 010262 BIC ECMSK0+2,ECWRD1 586 000720 052667 010256 BIS (SP)+,ECWRD1 587 588 000724 016766 010262 177777 MOV ECMSK0+4,-1(SP) ;CORRECT BITS 33-36 589 000732 046716 010246 BIC ECWRD2,(SP) 590 000736 046767 010250 010240 BIC ECMSK0+4,ECWRD2 591 000744 052667 010234 BIS (SP)+,ECWRD2 592 593 ; MOV #ECWRD0,R1 594 000750 016777 010224 010236 MOV ECWRD0,@ECADR0 ;PUT 1ST CORRECT WORD BACK IN CORE 595 596 000756 012703 000016 MOV #14.,R3 597 000762 CALL PROL36 598 000766 016777 010212 010222 MOV ECWRD2,@ECADR1 ;PUT 2ND WORD BACK IN CORE 599 000774 000617 BR REDAOK ;NOW GO TO NEXT BLOCK FELOAD -- BOOT PROGRAM TO FIND & LOAD RSX20F V1(5) 30-JAN-89 MACDLX V31 10-OCT-90 12:16 PAGE 14 FELOAD.P11 30-JAN-89 14:33 END OF BLOCK 0 CODE 601 .SBTTL END OF BLOCK 0 CODE 602 603 000776 .DEPHASE 604 000776 .=. 605 000377 B0WRDS=./2 ;# OF WORDS USED IN BLOCK 0 (NOT BYTES) 606 000776 000002 .PRINT 1000-.;LOCATIONS LEFT IN BLOCK 0 BOOT FELOAD -- BOOT PROGRAM TO FIND & LOAD RSX20F V1(5) 30-JAN-89 MACDLX V31 10-OCT-90 12:16 PAGE 15 FELOAD.P11 30-JAN-89 14:33 START OF BLOCK 4-7 CODE 608 .SBTTL START OF BLOCK 4-7 CODE 609 610 004000 .=4000 ;THIS GOES INTO BLOCK 4 (THRU 7) 611 612 004000 032767 000001 005144 PROMPT: BIT #1,INITR5 ;READ "SWR" BUTTON PUSHED? 613 004006 001032 BNE SWRFOO ;YES, GO DO THAT 614 615 004010 105767 005136 TSTB INITR5 ;TEST THE "DISK" BIT 616 004014 100427 BMI DISK ;BRANCH IF DISK SET 617 ;N.B.: HE PUSHED DTA/FLOPPY BUTTON - AND WE COULDN'T HAVE GOTTEN HERE! 618 004016 ABORT 619 620 004074 SWRFOO: 621 004074 032737 100000 177570 DISK: BIT #100000,@#SWR ;IS THE HIGH ORDER BIT SET? 622 004102 001033 BNE GETKLD ;YES, GET KLDCP 623 004104 000412 BR GETRSX ;NO, GET RSX20F FELOAD -- BOOT PROGRAM TO FIND & LOAD RSX20F V1(5) 30-JAN-89 MACDLX V31 10-OCT-90 12:16 PAGE 16 FELOAD.P11 30-JAN-89 14:33 BOOT IN AND START 20F FRONT END 625 .SBTTl BOOT IN AND START 20F FRONT END 626 627 004106 012767 100207 005036 USERSX: MOV #100207,INITR5 628 004114 012767 176700 005020 MOV #176700,INITR1 629 004122 012705 176700 MOV #176700,R5 630 004126 012706 010120 MOV #STAK,SP 631 004132 GETRSX: CALL MOVEME ;GO TO NEW HOME 632 004136 CALL GETHOM ;GET THE TOPS10 HOME BLOCKS 633 004142 CALL GETH11 ;GET THE FILES11 HOME BLOCK 634 004146 CALL FND550 ;GO FIND FHB FOR 5,5,0 (CORIMG.SYS) 635 004152 CALL RED550 ;GO READ IN CORIMG.SYS INTO CORE 636 004156 CALL FNDACP ;GO FIND F11ACP.TSK 637 004162 CALL POK20F ;GO POKE SOME MAGIC VALUES INTO 638 ;THE RESIDENT IMAGE OF THE 20F MONITOR 639 004166 000167 002662 JMP RESACS ;RESTORE ACS AND START RSX20F FELOAD -- BOOT PROGRAM TO FIND & LOAD RSX20F V1(5) 30-JAN-89 MACDLX V31 10-OCT-90 12:16 PAGE 17 FELOAD.P11 30-JAN-89 14:33 BOOT IN AND START 20F FRONT END 641 ; HERE TO LOAD AND START KLDCP FRONT END 642 004172 GETKLD: CALL GETHOM ;GET TOPS10 HOME BLOCK(S) 643 004176 CALL VRFKLD ;VERIFY THIS IS A KLAD PACK 644 004202 CALL FNDDIR ;FIND THE DIRECTORY LOCATION AND SIZE 645 004206 CALL REDDIR ;GO READ KLAD10 DIRECTORY 646 004212 CALL FNDKLD ;GO FIND KLDCP.BIN IN THE DIRECTORY 647 004216 CALL LODKLD ;GO LOAD KLDCP.BIN 648 649 004222 000167 002626 JMP RESACS ;GO START KLDCP FELOAD -- BOOT PROGRAM TO FIND & LOAD RSX20F V1(5) 30-JAN-89 MACDLX V31 10-OCT-90 12:16 PAGE 18 FELOAD.P11 30-JAN-89 14:33 BOOT IN AND START 20F FRONT END 651 004226 012702 000001 GETHOM: MOV #1,R2 652 004232 CALL GETH10 653 004236 103401 BCS 2$ 654 004240 1$: RETURN 655 656 004242 012702 000012 2$: MOV #12,R2 657 004246 CALL GETH10 658 004252 103372 BCC 1$ 659 004254 ABORT 660 661 ; ROUTINE TO READ A TOPS-10 HOME BLOCK 662 663 004316 016700 003060 GETH10: MOV DBA,R0 ;ADDRESS OF DISK BUFFER 664 004322 005001 CLR R1 ;HIGH ORDER LBN OF HOME BLOCKS ALWAYS 0 665 004324 005003 CLR R3 ;ALWAYS JUST ONE BLOCK TO READ 666 004326 CALL REDBLK ;READ THE HOME BLOCK 667 004332 103002 BCC 2$ ;BRANCH IF NO ERRORS 668 004334 000261 1$: SEC ;SET CARRY SO CALLER SEES ERROR 669 004336 000207 RTS PC ;RETURN WITH CARRY SET 670 671 ;HERE IF READ OF BLOCK SUCCEEDED 672 004340 022767 105755 003554 2$: CMP #105755,DB ;MAKE SURE LH OF PDP10 WORD #0='HOM' 673 004346 001372 BNE 1$ ;GIVE ERROR RETURN IF NOT 674 004350 005767 003550 TST DB+2 ;MAKE SURE RH OF PDP10 WORD#0 IS ZERO 675 004354 001367 BNE 1$ ;GIVE ERROR RETURN IF NOT 676 677 004356 000241 CLC ;CLEAR CARRY 678 004360 000207 RTS PC ;GIVE GOOD RETURN FELOAD -- BOOT PROGRAM TO FIND & LOAD RSX20F V1(5) 30-JAN-89 MACDLX V31 10-OCT-90 12:16 PAGE 19 FELOAD.P11 30-JAN-89 14:33 BOOT IN AND START 20F FRONT END 680 ; ROUTINE TO READ IN THE FILES11 HOME BLOCK 681 ; ENTER WITH GOOD TOPS10 HOME BLOCK IN DB 682 004362 016701 004040 GETH11: MOV DB+-2,R1 ;GET "HIGH" LBN OF HOME BLOCK 683 004366 100431 BMI 1$ ;BRANCH IFF VALID BIT IS SET 684 004370 ABORT 685 686 ; HERE IF TOPS10 HOME BLOCK SAYS WE HAVE AN RSX20F FILE AREA 687 ; READ IN THE FILES11 HOME BLOCK 688 004452 110101 1$: MOVB R1,R1 ;ISOLATE LOWBYTE (OF HIGH WORD) 689 004454 016702 003750 MOV DB+,R2 ;GET LOW WORD OF HOME BLOCK LBN 690 004460 105002 CLRB R2 ;CLEAR LOW BYTE 691 004462 062702 000400 ADD #400,R2 ;STEP TO MULTIPLE OF 400 SECTORS 692 004466 005003 CLR R3 ;SETUP TO READ 0 BLOCKS (=1 BLOCK) 693 004470 016700 002706 MOV DBA,R0 ;SETUP TO READ INTO DISK BUFFER 694 695 004474 CALL REDBLK ;READ WHAT OUGHT TO BE FILE11 HOME BLOCK 696 004500 103026 BCC 2$ ; 697 004502 ABORT 698 004556 2$: RETURN FELOAD -- BOOT PROGRAM TO FIND & LOAD RSX20F V1(5) 30-JAN-89 MACDLX V31 10-OCT-90 12:16 PAGE 20 FELOAD.P11 30-JAN-89 14:33 BOOT IN AND START 20F FRONT END 700 ; ROUTINE TO "FIND" THE FHB FOR CORIMG.SYS. 701 ; CORIMG.SYS IS "KNOWN" FILE 5,5,0 SO LOOKUP THE QUICK WAY. 702 ; ENTER WITH GOOD FILES11 HOME BLOCK IN DB 703 004560 016701 003340 FND550: MOV DB+W.IBLB,R1 ;GET HIGH ORDER INDEX BIT MAP LBN 704 004564 016702 003336 MOV DB+W.IBLB+2,R2 ;GET LOW ORDER LBN 705 004570 066702 003326 ADD DB+W.IBSZ,R2 ;ADD SIZE OF BIT MAP TO GET LBN OF 1,1,0 706 004574 005501 ADC R1 ;ADD THE OVERFLOW OF THE LOW ORDER ADD 707 004576 062702 000004 ADD #5-1,R2 ;COMPUTE ADDRESS OF (5,5,0) 708 004602 005501 ADC R1 ;... 709 004604 010167 004312 MOV R1,SAVR1 ;SAVE R1 OF FHB FOR CORIMG 710 004610 010267 004310 MOV R2,SAVR2 ;SAVE R2 OF FHB FOR CORIMG 711 004614 005003 CLR R3 ;SPECIFY 0 BLOCKS (=1 BLOCK) 712 004616 016700 002560 MOV DBA,R0 ;READ INTO DISK BUFFER 713 004622 CALL REDBLK ;READ WHAT OUGHT TO BE THE RIB OF 714 ;(5,5,0), IE: CORIMG.SYS 715 004626 103033 BCC 3$ 716 004630 ABORT 717 718 ; HERE WHEN WE HAVE (APPARENTLY) READ IN THE FHB FOR CORIMG.SYS. 719 ; DO SOME (CASUAL) VERIFICATION THAT IT REALLY... 720 ; ...IS A GOOD FHB FOR CORIMG.SYS(5,5,0). 721 004716 016701 003202 3$: MOV DB+W.FNUM,R1 ;GET FILE NUMBER 722 004722 016702 003200 MOV DB+W.FSEQ,R2 ;GET FILE SEQUENCE NUMBER 723 004726 020102 CMP R1,R2 ;THE SAME? 724 004730 001433 BEQ 5$ ;BRANCH AHEAD IF FILSEQ=FILNUM 725 004732 ABORT 726 727 005020 020127 000005 5$: CMP R1,#5 ;SHOULD BE FILE (5,5,0) 728 005024 001430 BEQ 6$ ; 729 005026 ABORT 730 731 005106 6$: RETURN FELOAD -- BOOT PROGRAM TO FIND & LOAD RSX20F V1(5) 30-JAN-89 MACDLX V31 10-OCT-90 12:16 PAGE 21 FELOAD.P11 30-JAN-89 14:33 BOOT IN AND START 20F FRONT END 733 ; ROUTINE TO READ CORIMG.SYS INTO CORE IN THE PROPER PLACE (0-127777) 734 ; ENTER WITH GOOD FHB FOR CORIMG.SYS IN DB 735 005110 RED550: TYPE <[Loading RSX-20F]> 736 005140 116702 002757 MOVB DB+W.MPOF,R2 ;GET OFFSET OF ID AREA 737 005144 060202 ADD R2,R2 ;COMPUTE SIZE IN BYTES 738 005146 066702 002230 ADD DBA,R2 ;COMPUTE R2= ADDRESS OF MAP AREA 739 005152 116201 000012 MOVB W.RTRV(R2),R1 ;GET HIGH LBN BYTE 740 005156 016202 000014 MOV W.RTRV+2(R2),R2 ;GET LOW LBN WORD 741 005162 005000 CLR R0 ;READ INTO LOCATION 0 742 005164 012703 000130 MOV #130,R3 ;READ 130 BLOCKS (IE: ALL OF CORIMG.SYS) 743 005170 CALL REDBLK ;READ A BLOCK (IE: BLOCK 0 OF CORIMG.SYS) 744 005174 103035 BCC 1$ 745 005176 ABORT 746 005270 1$: RETURN FELOAD -- BOOT PROGRAM TO FIND & LOAD RSX20F V1(5) 30-JAN-89 MACDLX V31 10-OCT-90 12:16 PAGE 22 FELOAD.P11 30-JAN-89 14:33 BOOT IN AND START 20F FRONT END 748 ; ROUTINE TO FIND THE LOWEST FILE#'D FILE WITH NAME OF F11ACP.TSK 749 ; WE'LL USE THIS FILE'S LBN ADDRESS TO TELL THE INCORE RSX20F WHERE 750 ; IT'S PRINCIPLE ACP FOR THE BOOT DEVICE IS 751 ; ENTER WITH SAVR1/SAVR2 BEING THE LBN OF FHB FOR CORIMG.SYS 752 005272 000074 FHBMAX: 60. ;READ NO MORE THAN 60 FHBS 753 005274 025167 003310 000000 F11ACP: .RAD50 /F11ACP TSK/ 005302 100003 754 755 005304 005367 177762 FNDACP: DEC FHBMAX ;BUMP COUNT DOWN 756 005310 100451 BMI 1$ ;BRANCH IF WE'RE NEVER FOUND IT 757 005312 005267 003606 INC SAVR2 ;STEP TO NEXT BLOCK 758 005316 005767 003602 TST SAVR2 ;DID IT JUST OVERFLOW? 759 005322 001002 BNE 2$ ;NO, SKIP UPDATE 760 005324 005267 003572 INC SAVR1 ; 761 005330 016700 002046 2$: MOV DBA,R0 ;READ NEXT FHB INTO DB 762 005334 016701 003562 MOV SAVR1,R1 ;GET FHB LBN ADR 763 005340 016702 003560 MOV SAVR2,R2 ;... 764 005344 005003 CLR R3 ;1 BLOCK ONLY 765 005346 CALL REDBLK ;READ IN AN FHB 766 005352 103754 BCS FNDACP ;GO ON TO NEXT FHB IF WE CAN'T READ THIS 767 005354 116702 002542 MOVB DB+W.IDOF,R2 ;GET OFFSET TO ID AREA IN WORDS 768 005360 060202 ADD R2,R2 ;COMPUTE OFFSET IN WORDS 769 005362 066702 002014 ADD DBA,R2 ;LOAD R2=ADDRESS OF ID AREA 770 005366 026267 000000 177700 CMP W.FNAM(R2),F11ACP ;DOES THIS LOOK AS IF IT IS F11ACP? 771 005374 001343 BNE FNDACP ;GO TO NEXT FHB IF FILE DOESN'T MATCH 772 005376 026267 000002 177672 CMP W.FNAM+2(R2),F11ACP+2 ;...? 773 005404 001337 BNE FNDACP ;GO TO NEXT FHB IF FILE DOESN'T MATCH 774 005406 005762 000004 TST W.FNAM+4(R2) ;... 775 005412 001334 BNE FNDACP ;GO TO NEXT FHB IF FILE DOESN'T MATCH 776 005414 026267 000006 177660 CMP W.FTYP(R2),F11ACP+6. ;CHECK FOR .TSK EXTENSION 777 005422 001330 BNE FNDACP ;GO TO NEXT FHB IF TYPE DOESN'T MATCH 778 005424 016267 000010 003572 MOV W.FVER(R2),LEVELV ;STORE THE VERSION OF THE ACP 779 005432 RETURN 780 781 005434 000261 1$: SEC 782 005436 RETURN FELOAD -- BOOT PROGRAM TO FIND & LOAD RSX20F V1(5) 30-JAN-89 MACDLX V31 10-OCT-90 12:16 PAGE 23 FELOAD.P11 30-JAN-89 14:33 BOOT IN AND START 20F FRONT END 784 ; ROUTINE TO POKE MAGIC VALUES INTO THE 20F CORE IMAGE 785 ; TO COMPENSATE FOR THE FACT WE DIDN'T BOOT THIS VIA "SAVE"S RPBOOT. 786 ; ENTER WITH GOOD FHB FOR F11ACP IN DB. 787 788 ;*** THE CONSTANTS DEFINED HERE NEED TO BE REDEFINED AS NEEDED 789 000032 S.DL=32 ;; THIS OFFSET IS START OF 2 WORD ENTRY CONTAINING DISK ADDRESS 790 ;; OF THE LOAD IMAGE FOR THIS TASK. OFFSET INTO STD BLOCK. 791 007664 RPBOOT=7664 ;; ADDRESS OF RPBOOT, TAKE FROM LISTING OF SAV TASK 792 007772 RPRESU==7772 ;; ADDRESS OF LINE SAYING "BOOTSTRAP COMPLETE", FROM SAV LISTING 793 ;*** THE CONSTANTS ABOVE MAY NEED TO BE UPDATED, BUT NOTE THAT 794 ;*** THIS IS NOT COMMON SINCE S.DL MAY NEVER CHANGE AND RPRESU-RPBOOT 795 ;*** WILL PROBABLY REMAIN A CONSTANT EVEN IF RPRESU OR RPBOOT CHANGES 796 005440 116702 002457 POK20F: MOVB DB+W.MPOF,R2 ;GET OFFSET TO MAP AREA 797 005444 060202 ADD R2,R2 ;CONVERT TO BYTE OFFSET 798 005446 066702 001730 ADD DBA,R2 ;ADD NEW BUFFER ADR 799 005452 116201 000012 MOVB W.RTRV(R2),R1 ;GET HIGH LBN BYTE OF F11ACP.TSK 800 005456 016202 000014 MOV W.RTRV+2(R2),R2 ;GET LOW LBN WORD OF F11ACP.TSK 801 005462 062702 000002 ADD #2,R2 ;ADD 2 TO GET AT SKIP TASK HEADER INFO 802 005466 005501 ADC R1 ;... 803 005470 CALL GETSTD ;FIND VALUE OF .STDTB BASED ON 20F VERSION 804 005474 005700 TST R0 ;CHECK TO MAKE SURE WE GOT IT 805 005476 001415 BEQ 1$ 806 005500 062700 000010 ADD #<4*2>,R0 ;COMPUTE ADDRESS OF F11ACP ENTRY 807 005504 011000 MOV @R0,R0 ;LOAD R0 WITH STD FOR F11ACP 808 005506 001411 BEQ 1$ ;BRANCH IF WE FAILED 809 005510 010160 000032 MOV R1,S.DL+0(R0) ;INSERT HIGH ORDER LBN INTO STD BLOCK 810 005514 010260 000034 MOV R2,S.DL+2(R0) ;INSERT LOW ORDER LBN INTO STD BLOCK 811 812 005520 012767 000106 003430 MOV #,NEWPC ;NEW PC INSIDE "RPBOOT" IN THE SAV TASK 813 814 ; Force RSX20F to believe that we used "SW/REG" rather than "DISK" 815 ; even if we didn't! 816 ;[JJF %1(4) Maybe we really don't want it to believe it!] 817 ; BIS #200!1,INITR5 ;TURN ON "DISK=200" AND "SW=1" 818 005526 000167 001322 JMP RESACS ;RESTORE ACS AND START BOOT 819 820 005532 1$: ABORT FELOAD -- BOOT PROGRAM TO FIND & LOAD RSX20F V1(5) 30-JAN-89 MACDLX V31 10-OCT-90 12:16 PAGE 24 FELOAD.P11 30-JAN-89 14:33 BOOT IN AND START 20F FRONT END 822 ; ROUTINE TO SEARCH TABLES TO FIND THE VALUE OF .STDTB 823 ; RETURN CURRENT 20F'S VALUE OF .STDTB IN R0 824 825 005626 012700 135742 GETSTD: MOV #VERTAB+NEWADR,R0 ;LOAD ADDRESS OF TABLE 826 005632 005710 1$: TST @R0 ;CHECK FOR END OF TABLE 827 005634 001404 BEQ 2$ ;BRANCH IF END OF TABLE 828 005636 022067 003362 CMP (R0)+,LEVELV ;COMPARE WITH 20F VERSION 829 005642 001434 BEQ GOTSTD ;BRANCH IF WE FIND SAME VERSION# 830 005644 000772 BR 1$ 831 005646 2$: ABORT 832 005734 016000 000010 GOTSTD: MOV VALTAB-VERTAB-2(R0),R0 ;LOAD STD ADDRESS 833 005740 RETURN 834 835 836 ;*** NOTE THAT NEWER VERSIONS OF 20F WILL NEED TO HAVE ENTRIES IN THE DTBX MACRO 837 ;*** SIMPLY LOOK AT THE NEW RSX20F MAP FOR THE VALUE OF .STDTB. 838 .MACRO DTBX ;;LIST OF .STDTB VALUES 839 XP 1506,6350 ;VERSION 1506 840 XP 1550,6372 ;VERSION 1550 841 XP 1600,6372 ;VERSION 1600 842 XP 1601,6372 ;VERSION 1601 843 .ENDM FELOAD -- BOOT PROGRAM TO FIND & LOAD RSX20F V1(5) 30-JAN-89 MACDLX V31 10-OCT-90 12:16 PAGE 25 FELOAD.P11 30-JAN-89 14:33 BOOT IN AND START 20F FRONT END 845 ; MACROS TO EXPAND THE VERSION NUMBER INFO FOR 20F 846 .MACRO XP a,b 847 .WORD a 848 .ENDM 849 005742 VERTAB: DTBX 850 005752 000000 0 851 852 .MACRO XP a,b 853 .WORD b 854 .ENDM 855 005754 VALTAB: DTBX FELOAD -- BOOT PROGRAM TO FIND & LOAD RSX20F V1(5) 30-JAN-89 MACDLX V31 10-OCT-90 12:16 PAGE 26 FELOAD.P11 30-JAN-89 14:33 BOOT IN AND START 20F FRONT END 857 ; ROUTINE TO MOVE THE INCORE IMAGE 0-7777 TO NEWHOM- 858 859 005764 012767 140122 001410 MOVEME: MOV #DB+NEWADR,DBA ;SETUP NEW DB ADDR 860 005772 012700 130000 MOV #NEWADR,R0 ;SETUP DESTINATION 861 005776 005001 CLR R1 ;SETUP ORIGIN 862 006000 012702 004513 MOV #ENDING/2,R2 ;SETUP # WORDS TO MOVE 863 006004 012120 1$: MOV (R1)+,(R0)+ ;MOVE A WORD TO NEW HOME 864 006006 077202 SOB R2,1$ ;KEEP DOING IT 865 866 006010 062706 130000 ADD #NEWADR,SP ;RELOCATE THE STACK 867 006014 062716 130000 ADD #NEWADR,(SP) ;ADJUST RETURN ADDRESS 868 006020 000207 RTS PC ;RETURN TO SAME PLACE IN NEW HOME FELOAD -- BOOT PROGRAM TO FIND & LOAD RSX20F V1(5) 30-JAN-89 MACDLX V31 10-OCT-90 12:16 PAGE 27 FELOAD.P11 30-JAN-89 14:33 BOOT IN AND START 20F FRONT END 870 ; ROUTINE TO VERIFY THAT THIS IS A GOOD KLAD10 PACK 871 ; ENTER WITH TOPS10 HOME BLOCK IN DB. 872 006022 026727 002420 043241 VRFKLD: CMP DB+,#043241 ;CHECK FOR "KLAD10" IN RAD50 873 006030 001004 BNE 1$ ;BRANCH IF NOT THERE 874 006032 026727 002412 016766 CMP DB+,#016766 ;CHECK 2ND HALF 875 006040 001420 BEQ 2$ ;BRANCH IF "KLAD10" THERE 876 006042 1$: ABORT 877 878 006102 000207 2$: RTS PC ;RETURN FELOAD -- BOOT PROGRAM TO FIND & LOAD RSX20F V1(5) 30-JAN-89 MACDLX V31 10-OCT-90 12:16 PAGE 28 FELOAD.P11 30-JAN-89 14:33 BOOT IN AND START 20F FRONT END 880 ; ROUTINE TO LOCATE THE SIZE AND POSITION OF THE KLDCP DIRECTORY. 881 ; ENTER WITH GOOD TOPS10 HOME BLOCK IN DB. 882 006104 005067 003064 FNDDIR: CLR LBNL ;CLEAR BLOCK NUMBER SUM 883 006110 005067 003056 CLR LBNH ;CLEAR BLOCK NUMBER SUM HIGH ORDER 884 006114 012701 000574 MOV #19.*20.,R1 ;GET MULTIPLIER 885 886 006120 066767 002326 003046 3$: ADD DB+,LBNL 887 006126 005567 003040 ADC LBNH ;ADD IN CARRY 888 006132 077106 SOB R1,3$ ;LOOP 889 890 006134 012701 000024 MOV #20.,R1 ;GET MULTIPLIER 891 006140 116704 002311 MOVB DB++1,R4 ;GET TRACK 892 006144 060467 003024 4$: ADD R4,LBNL ;ADD IN A TRACK OF BLOCKS 893 006150 005567 003016 ADC LBNH ;ADD IN CARRY 894 006154 077105 SOB R1,4$ ;ACCOUNT FOR ALL TRACKS 895 896 006156 116704 002272 MOVB DB+,R4 ;GET SECTOR 897 006162 060467 003006 ADD R4,LBNL ;ADD IN SECTOR COUNT 898 006166 005567 003000 ADC LBNH ;FIX UP THE CARRY 899 006172 016767 002260 002776 MOV DB+,KLDLEN;REMEMBER SIZE OF DIRECTORY 900 006200 000207 RTS PC ;RETURN FELOAD -- BOOT PROGRAM TO FIND & LOAD RSX20F V1(5) 30-JAN-89 MACDLX V31 10-OCT-90 12:16 PAGE 29 FELOAD.P11 30-JAN-89 14:33 BOOT IN AND START 20F FRONT END 902 006202 012700 012000 REDDIR: MOV #KLDIR,R0 ;SETUP ADDRESS OF DIRECTORY 903 006206 016701 002760 MOV LBNH,R1 ;SETUP HIGH LBN 904 006212 016702 002756 MOV LBNL,R2 ;SETUP LOW LBN OF DIRECTORY 905 006216 016703 002754 MOV KLDLEN,R3 ;RECALL SIZE OF DIRECTORY 906 006222 CALL REDBLK ;READ IN THE DIRECTORY 907 006226 103401 BCS 8$ ;DIE IF CAN'T READ DIRECTORY 908 006230 000207 RTS PC ;RETURN 909 006232 8$: ABORT FELOAD -- BOOT PROGRAM TO FIND & LOAD RSX20F V1(5) 30-JAN-89 MACDLX V31 10-OCT-90 12:16 PAGE 30 FELOAD.P11 30-JAN-89 14:33 BOOT IN AND START 20F FRONT END 911 006300 012704 012000 FNDKLD: MOV #KLDIR,R4 ;POINT R4 AT DIRECTORY BUFFER 912 913 006304 005001 CLR R1 ;CLEAR SUM (WILL BECOME COUNT OF ENTRIES) 914 006306 016702 002664 MOV KLDLEN,R2 ;GET MULTIPLIER 915 006312 062701 000020 5$: ADD #1000/FDESIZ,R1 ;COMPUTE # ENTRIES PER BLOCK 916 006316 077203 SOB R2,5$ ;COMPUTE # OF ENTRIES 917 918 919 006320 026467 000000 000256 6$: CMP W.KFL0(R4),W.KFL0+KLDCP 920 006326 001010 BNE 7$ ;BRANCH IF NOT EQUAL IN 1ST HALF OF FILE NAME 921 006330 026467 000002 000250 CMP W.KFL1(R4),W.KFL1+KLDCP 922 006336 001004 BNE 7$ ;BRANCH IF NOT CORRECT 2ND HALF OF FILE NAME 923 006340 026467 000004 000242 CMP W.KEXT(R4),W.KEXT+KLDCP 924 006346 001423 BEQ FOUNDK ;BRANCH IF FILE NAMES AND EXT ALL MATCH 925 926 ; HERE IF SOME PART OF FILE NAME OR EXTENSION DOES NOT MATCH 927 006350 062704 000040 7$: ADD #FDESIZ,R4 ;STEP TO NEXT ENTRY 928 006354 077117 SOB R1,6$ ;LOOP FOR NEXT ENTRY 929 006356 ABORT 930 931 ;FOUND KLDCP.BIN, CONVERT CYL/TRACK/SECTOR TO LOGICAL BLOCK NUMBER 932 006416 005067 002550 FOUNDK: CLR LBNH ;CLEAR LBN HIGH 933 006422 005067 002546 CLR LBNL ;CLEAR LBN LOW 934 006426 016400 000010 MOV W.KCYL(R4),R0 ;GET CYL# 935 006432 001406 BEQ 2$ ;SKIP IT IF ON CYLINDER 0 936 006434 062767 000574 002532 1$: ADD #380.,LBNL ;ADD IN A CYLINDER WORTH OF BLOCKS 937 006442 005567 002524 ADC LBNH ; (TAKE CARE OF CARRY, IF ANY) 938 006446 077006 SOB R0,1$ ;...FOR EVERY CYLINDER THERE 939 006450 116400 000013 2$: MOVB W.KTS+1(R4),R0 ;GET TRACK # (NEVER .GT. 20, IGNORE SIGN EXTEND) 940 006454 001406 BEQ 4$ ;DON'T IF ON TRACK 0 941 006456 062767 000024 002510 3$: ADD #20.,LBNL ;ADD IN A TRACK'S WORTH OF BLOCKS 942 006464 005567 002502 ADC LBNH ; (TAKE CARE OF CARRY, IF ANY) 943 006470 077006 SOB R0,3$ ;...FOR EVERY TRACK INVOLVED 944 006472 116400 000012 4$: MOVB W.KTS(R4),R0 ;GET SECTOR # 945 006476 060067 002472 ADD R0,LBNL ;ADD SECTOR NUMBER AS FINAL OFFSET 946 006502 005567 002464 ADC LBNH ;AND TAKE CARE OF FINAL CARRY 947 948 ;CONVERT THE WORD COUNT TO A BLOCK COUNT 949 006506 012700 000010 FIXWCK: MOV #8.,R0 ;GET #POSITIONS TO SHIFT 950 006512 006264 000014 1$: ASR W.KWAH(R4) ;SHIFT TO THE RIGHT 951 006516 006064 000016 ROR W.KWAL(R4) ;THE WORD COUNT RIGHT 952 006522 077005 SOB R0,1$ ;TO CONVERT TO A BLOCK COUNT 953 006524 005764 000014 TST W.KWAH(R4) ;TEST HIGH ORDER (BLOCK) COUNT 954 006530 001424 BEQ 2$ 955 006532 ABORT 956 006602 000207 2$: RTS PC ;RETURN 957 958 006604 043244 012500 006766 KLDCP: .RAD50 /KLDCP BIN/ FELOAD -- BOOT PROGRAM TO FIND & LOAD RSX20F V1(5) 30-JAN-89 MACDLX V31 10-OCT-90 12:16 PAGE 31 FELOAD.P11 30-JAN-89 14:33 BOOT IN AND START 20F FRONT END 960 006612 005067 002320 LODKLD: CLR FCOUNT ;INITIALIZE "DVFRAM" (AND DVWORD) 961 006616 TYPE <[Loading KLDCP.BIN]> 962 006650 016467 000016 002250 MOV W.KWAL(R4),BLKCNT 963 006656 005067 002250 LDBIN1: CLR $CKS11 ;INITIALIZE THE CHECKSUM 964 006662 CALL DVFRAM ;GET A FRAME INTO R0 965 006666 105300 DECB R0 ;CHECK FOR "BLOCK START" 966 006670 001372 BNE LDBIN1 ;LOOP AND WAIT FOR BLOCK START CODE (IE: 1) 967 968 006672 CALL DVFRAM ;READ ANOTHER FRAME (AND FORGET IT) 969 970 006676 CALL DVWORD ;GET A FULL WORD, THE BYTE COUNT 971 006702 010067 002222 MOV R0,LBC ;SAVE BYTE COUNT 972 006706 162767 000006 002214 SUB #6,LBC ;CHECK FOR XFER BLOCK 973 006714 001445 BEQ LJMP ;IF BYTE COUNT = 6, THIS IS AN XFER BLOCK 974 006716 CALL DVWORD ;GET A FULL WORD, THE LOAD ADDRESS 975 006722 010004 MOV R0,R4 ;SAVE LOAD ADDRESS 976 977 006724 LDBIN2: CALL DVFRAM ;GET A DATA BYTE 978 006730 005367 002174 DEC LBC ;DECREMENT BYTE COUNT 979 006734 002033 BGE LDBIN3 ;BRANCH IF INSIDE DATA PART OF PACKET 980 006736 105767 002170 TSTB $CKS11 ;IF BYTE COUNT EXPIRES, CHECK CHECKSUM 981 006742 001745 BEQ LDBIN1 ;START ANOTHER BLOCK IF CHECKSUM WAS OK 982 006744 BADCHK: ABORT 983 984 007024 LDBIN3: ; 985 007024 110024 10$: MOVB R0,(R4)+ ;SAVE THE BYTE INTO CORE 986 007026 000736 12$: BR LDBIN2 ;LOOP FOR MORE DATA 987 988 007030 LJMP: CALL DVWORD ;GET (POSSIBEL) XFER ADDRESS 989 007034 010067 002116 MOV R0,NEWPC ;REMEMBER XFER ADDRESS 990 007040 CALL DVFRAM ;GET A FRAME 991 007044 105767 002062 TSTB $CKS11 ;CHECK CHECKSUM 992 007050 001335 BNE BADCHK 993 007052 000207 RTS PC ;RETURN FELOAD -- BOOT PROGRAM TO FIND & LOAD RSX20F V1(5) 30-JAN-89 MACDLX V31 10-OCT-90 12:16 PAGE 32 FELOAD.P11 30-JAN-89 14:33 BOOT IN AND START 20F FRONT END 995 007054 016700 002060 RESACS: MOV INITR0,R0 ;RESTORE R0 996 007060 016701 002056 MOV INITR1,R1 ;RESTORE R1 997 007064 016702 002054 MOV INITR2,R2 ;RESTORE R2 998 007070 016703 002052 MOV INITR3,R3 ;RESTORE R3 999 007074 016704 002050 MOV INITR4,R4 ;RESTORE R4 1000 007100 016705 002046 MOV INITR5,R5 ;RESTORE R5 1001 007104 016706 002044 MOV INITSP,SP ;RESTORE SP 1002 007110 000177 002042 JMP @NEWPC ;START AT NEWLY LOADED CODE FELOAD -- BOOT PROGRAM TO FIND & LOAD RSX20F V1(5) 30-JAN-89 MACDLX V31 10-OCT-90 12:16 PAGE 33 FELOAD.P11 30-JAN-89 14:33 BOOT IN AND START 20F FRONT END 1004 ; ROUTINE TO READ A FRAME 1005 007114 005367 002016 DVFRAM: DEC FCOUNT ;ANY FRAMES LEFT? 1006 007120 100421 BMI DVFMOR ;NO, GO GET MORE 1007 007122 117700 002006 MOVB @FPOINT,R0 ;YES, GET IT 1008 007126 042700 177400 BIC #^C377,R0 ;CLEAR UPPER BYTE 1009 007132 060067 001774 ADD R0,$CKS11 ;COMPUTE CHECKSUM 1010 007136 005267 001772 INC FPOINT ;UPDATE POINTER 1011 007142 RETURN ;RETURN 1012 1013 007144 DVWORD: CALL DVFRAM ;GET A FRAME 1014 007150 010046 MOV R0,-(SP) ;SAVE THE 1ST BYTE 1015 007152 CALL DVFRAM ;GET ANOTHER FRAME 1016 007156 000300 SWAB R0 ;MAKE IT THE "HIGH" FRAME 1017 007160 052600 BIS (SP)+,R0 ;COMBINE WITH 1ST BYTE 1018 007162 RETURN ;RETURN 1019 1020 007164 005367 001736 DVFMOR: DEC BLKCNT ;COUNT ANOTHER BLOCK AS READ 1021 007170 100454 BMI 2$ ;COMPLAIN IF PREMATURE EOF 1022 007172 016700 000204 MOV DBA,R0 ;BUFFER ADDRESS 1023 007176 016701 001770 MOV LBNH,R1 ;GET DISK ADDRESS 1024 007202 016702 001766 MOV LBNL,R2 ;GET DISK ADDRESS, LOW PART 1025 007206 005003 CLR R3 ;GET 1 BLOCK ONLY 1026 007210 010446 MOV R4,-(SP) ;SAVE R4 (BYTE POINTER) 1027 007212 CALL REDBLK ;READ ANOTHER BLOCK 1028 007216 103414 BCS 1$ ;REMARK ON ERROR 1029 007220 012604 MOV (SP)+,R4 ;RESTORE BYTE POINTER 1030 007222 012767 001000 001706 MOV #1000,FCOUNT ;1000 FRAMES NOW AVAILABLE 1031 007230 016767 000146 001676 MOV DBA,FPOINT ;STARTING AT DB 1032 007236 005267 001732 INC LBNL ;START TO READ NEXT BLOCK 1033 007242 005567 001724 ADC LBNH ;... 1034 007246 000722 BR DVFRAM 1035 1036 007250 012604 1$: MOV (SP)+,R4 ;RESTORE BYTE POINTER 1037 007252 ABORT 1038 1039 007322 2$: ABORT FELOAD -- BOOT PROGRAM TO FIND & LOAD RSX20F V1(5) 30-JAN-89 MACDLX V31 10-OCT-90 12:16 PAGE 34 FELOAD.P11 30-JAN-89 14:33 END OF 2ND PART 1041 .SBTTL END OF 2ND PART 1042 1043 007402 010122 DBA: .WORD DB 1044 007404 .=. 1045 007404 000374 .PRINT 10000-.; BYTES REMAINING IN 2ND PART OF BOOT FELOAD -- BOOT PROGRAM TO FIND & LOAD RSX20F V1(5) 30-JAN-89 MACDLX V31 10-OCT-90 12:16 PAGE 35 FELOAD.P11 30-JAN-89 14:33 IMPURE NON-INITIALIZED DATA 1047 .SBTTL IMPURE NON-INITIALIZED DATA 1048 1049 010000 .=10000 1050 010000 000050 .BLKW 50 1051 010120 000001 STAK: .BLKW 1 1052 010122 000400 DB: .BLKW 400 ;DISK I/O BUFFER 1053 011122 000001 SAVR1: .BLKW 1 ;R1 (HIGH ORDER LBN OF CORIMG.SYS'S FHB) 1054 011124 000001 SAVR2: .BLKW 1 ;R2 (LOW ORDER LBN OF CORIMG.SYS'S FHB) 1055 011126 000001 BLKCNT: .BLKW 1 ;BLOCK COUNT FOR READING .BIN FILES 1056 011130 000001 LBC: .BLKW 1 ;BYTE COUNT OF CURRENT .BIN PACKET 1057 011132 000001 $CKS11: .BLKw 1 ;THE .BIN FILE CHECKSUM WORD 1058 011134 000001 FPOINT: .BLKW 1 ;POINTER TO CURRENT FRAME 1059 011136 000001 FCOUNT: .BLKW 1 ;COUNT OF FRAMES IN CURRENT DISK BUFFER 1060 1061 011140 000001 INITR0: .BLKW 1 ;THE R0 WE GOT FROM THE ROM 1062 011142 000001 INITR1: .BLKW 1 ;THE R1 WE GOT FROM THE ROM 1063 011144 000001 INITR2: .BLKW 1 ;THE R2 WE GOT FROM THE ROM 1064 011146 000001 INITR3: .BLKW 1 ;THE R3 WE GOT FROM THE ROM 1065 011150 000001 INITR4: .BLKW 1 ;THE R4 WE GOT FROM THE ROM 1066 011152 000001 INITR5: .BLKW 1 ;THE R5 WE GOT FROM THE ROM 1067 011154 000001 INITSP: .BLKW 1 ;THE SP WE GOT FROM THE ROM 1068 011156 000001 NEWPC: .BLKW 1 ;THE R7 WE WANT TO START PROGRAM WITH 1069 011160 000001 SAVUBA: .BLKW 1 ;THE UNIBUS ADDRESS 1070 011162 000001 RPUNIT: .BLKW 1 ;COPY OF RPCS2 TO SAVE UNIT # 1071 011164 000001 SAVHLB: .BLKW 1 ;HIGH WORD OF LBN FOR NEXT XFER 1072 011166 000001 SAVLLB: .BLKW 1 ;LOW WORD OF LBN FOR NEXT XFER 1073 011170 000001 SAVCNT: .BLKW 1 ;# OF BLOCKS TO XFER, 0 COUNTED AS 1 1074 011172 000001 LBNH: .BLKW 1 ;LBN HIGH 1075 011174 000001 LBNL: .BLKW 1 ;LBN LOW 1076 011176 000001 KLDLEN: .BLKW 1 ;LENGTH OF KLDCP DIRECTORY 1077 011200 000001 ECWRD0: .BLKW 1 1078 011202 000001 ECWRD1: .BLKW 1 1079 011204 000001 ECWRD2: .BLKW 1 1080 011206 000001 ECMSK0: .BLKW 1 1081 011210 000001 ECMSK1: .BLKW 1 1082 011212 000001 ECMSK2: .BLKW 1 1083 011214 000001 ECADR0: .BLKW 1 1084 011216 000001 ECADR1: .BLKW 1 1085 011220 000001 ECBAD0: .BLKW 1 1086 011222 000001 ECBAD1: .BLKW 1 1087 011224 000001 LEVELV: .BLKW 1 ;VERSION # OF 20F FROM F11ACP.TSK FILE 1088 1089 011226 011226 .PRINT .;END OF IMPURE AREA 1090 1091 011226 ENDING=. 1092 004106 .END USERSX ;GIVE USERSX FOR KLDCP FELOAD -- BOOT PROGRAM TO FIND & LOAD RSX20F V1(5) 30-JAN-89 MACDLX V31 10-OCT-90 12:16 PAGE 36 FELOAD.P11 30-JAN-89 14:33 CROSS REFERENCE TABLE -- USER SYMBOLS BADCHK 006744 982# 992 BLKCNT 011126 962* 1020* 1055# B0WRDS= 000377 605# DB 010122 672 674 682 689 703 704 705 721 722 736 767 796 859 872 874 886 891 896 899 1043 1052# DBA 007402 663 693 712 738 761 769 798 859* 1022 1031 1043# DISK 004074 616 621# DLCD = 010000 349# DLCTS = 020000 349# DLDIE = 000040 349# DLDSCH= 100000 349# DLDTR = 000002 349# DLRA = 004000 349# DLRD = 000200 349# DLRDAT= 000377 349# DLRDRE= 000001 349# DLRERR= 100000 349# DLRFRM= 020000 349# DLRIE = 000100 349# DLRNGI= 040000 349# DLROVR= 040000 349# DLRPAR= 010000 349# DLRTS = 000004 349# DLSRD = 002000 349# DLSTD = 000010 349# DLXBRK= 000001 349# DLXDAT= 000377 349# DLXIE = 000100 349# DLXMNT= 000004 349# DLXRDY= 000200 349# DL.RBF= 177562 349# DL.RSR= 177560 349# DL.XBF= 177566 349# 431* DL.XSR= 177564 349# 432 DVFMOR 007164 1006 1020# DVFRAM 007114 964 968 977 990 1005# 1013 1015 1034 DVWORD 007144 970 974 988 1013# ECADR0 011214 562* 571 594* 1083# ECADR1 011216 565* 598* 1084# ECBAD0 011220 572* 1085# ECBAD1 011222 568* 1086# ECMSK0 011206 550* 578 580 583 585 588 590 1080# ECMSK1 011210 1081# ECMSK2 011212 1082# ECWRD0 011200 543* 544* 545* 546* 547* 548* 567* 571* 572 579 580* 581* 594 1077# ECWRD1 011202 584 585* 586* 1078# ECWRD2 011204 589 590* 591* 598 1079# ENDING= 011226 862 1091# FCOUNT 011136 960* 1005* 1030* 1059# FDESIZ= 000040 378# 915 927 FELOAD 000000 406# FHBMAX 005272 752# 755* FIXWCK 006506 949# FNDACP 005304 636 755# 766 771 773 775 777 FNDDIR 006104 644 882# FELOAD -- BOOT PROGRAM TO FIND & LOAD RSX20F V1(5) 30-JAN-89 MACDLX V31 10-OCT-90 12:16 PAGE 36-1 FELOAD.P11 30-JAN-89 14:33 CROSS REFERENCE TABLE -- USER SYMBOLS FNDKLD 006300 646 911# FND550 004560 634 703# FOUNDK 006416 924 932# FPOINT 011134 1007 1010* 1031* 1058# F11ACP 005274 753# 770 772 776 GETHOM 004226 632 642 651# GETH10 004316 652 657 663# GETH11 004362 633 682# GETKLD 004172 622 642# GETRSX 004132 623 631# GETSTD 005626 803 825# GIVEUP 000500 509 534# GOTSTD 005734 829 832# HOMFEV= 000142 140# HOMFE0= 000143 140# 682 689 HOMFLN= 000145 140# HOMKCY= 000154 140# 886 HOMKLN= 000156 140# 899 HOMKTS= 000155 140# 891 896 HOMKV1= 000142 140# HOMKV2= 000152 140# 872 HOMKV3= 000153 140# 874 HOMNA0= 000000 140# HOMNA1= 000001 140# INITR0 011140 406* 995 1061# INITR1 011142 407 628* 996 1062# INITR2 011144 997 1063# INITR3 011146 998 1064# INITR4 011150 999 1065# INITR5 011152 612 615 627* 1000 1066# INITSP 011154 1001 1067# KLDCP 006604 919 921 923 958# KLDIR = 012000 72# 902 911 KLDLEN 011176 899* 905 914 1076# LBC 011130 971* 972* 978* 1056# LBNH 011172 883* 887* 893* 898* 903 932* 937* 942* 946* 1023 1033* 1074# LBNL 011174 882* 886* 892* 897* 904 933* 936* 941* 945* 1024 1032* 1075# LDBIN1 006656 963# 966 981 LDBIN2 006724 977# 986 LDBIN3 007024 979 984# LEVELV 011224 778* 828 1087# LJMP 007030 973 988# LODKLD 006612 647 960# MOVEME 005764 631 859# NEWADR= 130000 71# 825 859 860 866 867 NEWPC 011156 812* 989* 1002 1068# POK20F 005440 637 796# PROL36 000166 448# 452 569 576 597 PROMPT 004000 418 425 612# PS = 177776 349# REDAOK 000434 518# 599 REDBLK 000206 423 463# 666 695 713 743 765 906 1027 REDBL0 000216 465# 524 REDBL1 000232 470# 532 REDDIR 006202 645 902# RED550 005110 635 735# FELOAD -- BOOT PROGRAM TO FIND & LOAD RSX20F V1(5) 30-JAN-89 MACDLX V31 10-OCT-90 12:16 PAGE 36-2 FELOAD.P11 30-JAN-89 14:33 CROSS REFERENCE TABLE -- USER SYMBOLS RESACS 007054 639 649 818 995# RETRY 000466 511 513 530# 539 541 RPAD16= 000400 349# RPAD17= 001000 349# RPAOE = 001000 349# RPATA = 100000 349# 514 RPBOOT= 007664 791# 812 RPCPE = 020000 349# 505 512 RPCYLA= 000777 349# RPDCK = 100000 349# RPDLT = 100000 349# RPDTE = 010000 349# RPDVA = 004000 349# RPECH = 000100 349# RPECI = 004000 349# RPERR = 040000 349# 514 RPFER = 000020 349# RPFMT2= 010000 349# RPFUNC= 000077 349# RPGO = 000001 349# RPHCE = 000200 349# RPHCI = 002000 349# 500 RPHCRF= 000400 349# RPIAE = 002000 349# RPIE = 000100 349# RPILF = 000001 349# RPILR = 000002 349# RPOFSD= 000377 349# RPOPCL= 000016 349# RPOPDC= 000010 349# RPOPI = 020000 349# RPOPNP= 000000 349# RPOPOF= 000014 349# RPOPPA= 000022 349# RPOPRC= 000006 349# RPOPRD= 000070 349# RPOPRF= 000072 349# RPOPRI= 000020 349# RPOPRP= 000012 349# RPOPSK= 000004 349# RPOPSR= 000030 349# RPOPUL= 000002 349# RPOPWC= 000050 349# RPOPWD= 000060 349# RPOPWF= 000062 349# RPOPWH= 000052 349# RPPAR = 000010 349# RPPSEL= 002000 349# RPRDY = 000200 349# 505 RPRESU= 007772 G 792# 812 RPRMR = 000004 349# RPSC = 100000 349# RPSCG = 100000 349# RPSCTA= 000037 349# RPTRE = 040000 349# 505 512 RPTRKA= 017400 349# FELOAD -- BOOT PROGRAM TO FIND & LOAD RSX20F V1(5) 30-JAN-89 MACDLX V31 10-OCT-90 12:16 PAGE 36-3 FELOAD.P11 30-JAN-89 14:33 CROSS REFERENCE TABLE -- USER SYMBOLS RPUNIT 011162 415* 470 1070# RPUNS = 040000 349# RPWCE = 040000 349# RPWCF = 000040 349# RPWLE = 004000 349# RP.BA = 176704 349# 471* RP.CS1= 176700 349# 415 470* 471* 472* 482* 495* 497* 500* 501* 505 512 514 538 540 550 RP.CS2= 176710 349# 415 470* RP.DA = 176706 349# 495* RP.DC = 176734 349# 482* RP.DS = 176712 349# 514 RP.EC1= 176744 349# 540 RP.EC2= 176746 349# 550 RP.ER1= 176714 349# 538 RP.OF = 176732 349# 497* 500* RP.WC = 176702 349# 472* R.DSP = 177570 349# R.PC = 177707 349# R.R0 = 177700 349# R.R1 = 177701 349# R.R2 = 177702 349# R.R3 = 177703 349# R.R4 = 177704 349# R.R5 = 177705 349# R.R6 = 177706 349# R.R7 = 177707 349# R.SL = 177774 349# R.SP = 177706 349# R.SWR = 177570 349# SAVCNT 011170 464* 523* 1073# SAVHLB 011164 465* 519 530 1071# SAVLLB 011166 466* 518 531 1072# SAVR1 011122 709* 760* 762 1053# SAVR2 011124 710* 757* 758 763 1054# SAVUBA 011160 463* 471 522* 561 1069# SIXHOM= 105755 140# STAK 010120 422 630 1051# STYPE 000142 427 437# 618 659 684 697 716 725 729 735 745 820 831 876 909 929 955 961 982 1037 1039 STYPE1 000144 438# 441 STYPE2 000156 439 442# SWR = 177570 349# 621 SWRFOO 004074 613 620# S.DL = 000032 789# 809* 810* TRYECC 000504 515 538# TYO 000126 431# 440 TYO1 000132 432# 433 USERSX 004106 627# 1092 VALID = 100000 140# VALTAB 005754 832 855# VERTAB 005742 825 832 849# VRFKLD 006022 643 872# V.BPT = 000014 349# V.CPU = 000004 349# V.DLI = 000060 349# FELOAD -- BOOT PROGRAM TO FIND & LOAD RSX20F V1(5) 30-JAN-89 MACDLX V31 10-OCT-90 12:16 PAGE 36-4 FELOAD.P11 30-JAN-89 14:33 CROSS REFERENCE TABLE -- USER SYMBOLS V.DLO = 000064 349# V.EMT = 000030 349# V.ILL = 000010 349# V.IOT = 000020 349# V.PWF = 000024 349# V.RES = 000010 349# V.RH11= 000254 349# V.TRP = 000034 349# W.AVAL= 000057 111# W.CHK1= 000072 111# W.CHK2= 000776 111# W.CRDT= 000031 176# W.CRTI= 000040 176# W.CTSZ= 000006 190# W.DFPR= 000044 111# W.DVTY= 000012 111# W.EFNU= 000002 190# W.EFSQ= 000004 190# W.ERVN= 000001 190# W.ESQN= 000000 190# W.EXDT= 000046 176# W.FIEX= 000055 111# W.FLEV= 000006 162# W.FMAX= 000006 111# W.FNAM= 000000 176# 770 772 774 W.FNUM= 000002 162# 721 W.FPRO= 000012 162# W.FSEQ= 000004 162# 722 W.FTYP= 000006 176# 776 W.FVER= 000010 176# 778 W.IBLB= 000002 111# 703 704 W.IBSZ= 000000 111# 705 W.IDOF= 000000 162# 767 W.KCHK= 000026 378# W.KCPH= 000034 378# W.KCPL= 000036 378# W.KCRE= 000006 378# W.KCYL= 000010 378# 934 W.KEXT= 000004 378# 923 W.KFL0= 000000 378# 919 W.KFL1= 000002 378# 921 W.KRS1= 000030 378# W.KRS2= 000032 378# W.KTS = 000012 378# 939 944 W.KTYP= 000024 378# W.KWAH= 000014 378# 950* 953 W.KWAL= 000016 378# 951* 962 W.K1LA= 000020 378# W.K1SA= 000022 378# W.LBSZ= 000007 190# W.LRUC= 000056 111# W.MAX = 000011 190# W.MPOF= 000001 162# 736 796 W.PROG= 000010 162# W.PROJ= 000011 162# W.RES1= 000032 111# FELOAD -- BOOT PROGRAM TO FIND & LOAD RSX20F V1(5) 30-JAN-89 MACDLX V31 10-OCT-90 12:16 PAGE 36-5 FELOAD.P11 30-JAN-89 14:33 CROSS REFERENCE TABLE -- USER SYMBOLS W.RES2= 000046 111# W.RTRV= 000012 190# 739 740 799 800 W.RVDT= 000014 176# W.RVNO= 000012 176# W.RVOL= 000400 111# W.RVTI= 000023 176# W.SBCL= 000010 111# W.SYSI= 000256 111# W.UCHA= 000014 162# W.USE = 000010 190# W.VCHA= 000042 111# W.VDAT= 000074 111# W.VHL = 000112 111# W.VLEV= 000014 111# W.VNAM= 000016 111# W.VOWN= 000036 111# W.VPRO= 000040 111# W.WISZ= 000054 111# $CKS11 011132 963* 980 991 1009* 1057# . = 011226 403# 427# 603# 604# 605 606 610# 659# 684# 729# 745# 820# 831# 929# 1037# 1039# 1044# 1045 1049# 1050# 1051# 1052# 1053# 1054# 1055# 1056# 1057# 1058# 1059# 1061# 1062# 1063# 1064# 1065# 1066# 1067# 1068# 1069# 1070# 1071# 1072# 1073# 1074# 1075# 1076# 1077# 1078# 1079# 1080# 1081# 1082# 1083# 1084# 1085# 1086# 1087# 1089 1091 .OFFSE= 000040 111# 162# 176# 190# 357# 378# FELOAD -- BOOT PROGRAM TO FIND & LOAD RSX20F V1(5) 30-JAN-89 MACDLX V31 10-OCT-90 12:16 PAGE 37 FELOAD.P11 30-JAN-89 14:33 CROSS REFERENCE TABLE -- MACRO NAMES ABORT 389# 427 618 659 684 697 716 725 729 745 820 831 876 909 929 955 982 1037 1039 BSYM 76# 111 145# 162 176 190 CALL 394# 423 427 440 569 576 597 618 631 632 633 634 635 636 637 642 643 644 645 646 647 652 657 659 666 684 695 697 713 716 725 729 735 743 745 765 803 820 831 876 906 909 929 955 961 964 968 970 974 977 982 988 990 1013 1015 1027 1037 1039 DTBX 838# 849 855 F11FID 164# 176 F11HED 150# 162 F11HOM 81# 111 F11MAP 178# 190 IOBITS 195# 349 KLDHED 359# 378 RETURN 398# 453 527 535 654 698 731 746 779 782 833 1011 1018 TYPE 382# 427 618 659 684 697 716 725 729 735 745 820 831 876 909 929 955 961 982 1037 1039 T10HOM 119# 140 WSYM 115# 140 353# 378 XP 846# 849 852# 855 . ABS. 011226 000 ERRORS DETECTED: 0 FELOAD,FELOAD/CRF/NL:TTM=FELOAD RUN-TIME: 1 2 .4 SECONDS RUN-TIME RATIO: 14/5=2.7 CORE USED: 7K (13 PAGES)