1 ; BOOT MONITOR 2 ; 3 ; REBASE HIGHER LINK/BOT:140000 4 ; WANT PERFORMANCE COUNTER - CLOCK TICKS TO DO SOMETHING? 5 6 177776 PSW = 177776 7 177564 DL11XCSR = 177564 8 000064 DL11VEC = 64 9 10 177546 KW11LKS = 177546 11 000100 KW11VEC = 100 12 13 .ASECT 14 140000 .=140000 15 140000 000005 START: RESET 16 140002 005037 177776 CLR @#PSW 17 140006 012706 140000 MOV #START,SP 18 140012 005037 177564 CLR @#DL11XCSR ; CLEAR THE XCSR 19 140016 012700 141136 MOV #BANNER,R0 20 140022 004767 140150' JSR PC,PRINT 21 140026 012737 140124 000100 MOV #CLKAST,@#KW11VEC 22 140034 012737 000340 000102 MOV #340,@#KW11VEC+2 23 140042 052737 000100 177546 BIS #100,@#KW11LKS ; SET CLOCK TICKING 24 25 140050 012700 141166 MOV #PROMPT,R0 26 140054 004767 140150' JSR PC,PRINT 27 140060 162706 000256 SUB #256,SP 28 140064 010600 MOV SP,R0 29 140066 004767 140244' JSR PC,INPUT 30 140072 005000 CLR R0 31 140074 000001 1$: WAIT 32 140076 005200 INC R0 33 140100 005767 140120' TST LGHTON 34 140104 001773 BEQ 1$ 35 140106 012746 054000 MOV #054000,-(SP) ; SUPER PRIORITY 0 ALT REG 36 140112 016746 140120' MOV LGHTON,-(SP) ; CALL SUPER LOOP START 37 140116 000002 RTI 38 39 140120 000000 LGHTON: .WORD 0 40 140122 000000 CLKTIC: .WORD 0 41 42 CLKAST: 43 140124 005267 140122' INC CLKTIC 44 140130 000002 RTI 45 46 ONECHR: 47 140132 105737 177564 TSTB @#DL11XCSR 48 140136 100375 BPL ONECHR 49 140140 110037 177566 MOVB R0,@#177566 50 140144 000207 RTS PC 51 52 140146 000000 PRTPTR: .WORD 0 53 54 PRINT: 55 140150 132737 000100 177564 BITB #100,@#DL11XCSR 56 140156 001374 BNE PRINT 57 140160 010067 140146' MOV R0,PRTPTR 58 140164 012737 140210 000064 MOV #PRTAST,@#DL11VEC 59 140172 012737 000200 000066 MOV #200,@#DL11VEC+2 60 140200 152737 000100 177564 BISB #100,@#DL11XCSR 61 140206 000207 RTS PC 62 63 PRTAST: 64 140210 105777 140146' TSTB @PRTPTR 65 140214 001406 BEQ 2$ 66 140216 117737 140146' 177566 MOVB @PRTPTR,@#177566 67 140224 005267 140146' INC PRTPTR 68 140230 000002 RTI 69 140232 105037 177564 2$: CLRB @#177564 70 140236 000002 RTI 71 72 140240 000000 BUFFER: .WORD 0 ; INPUT BUFFER POINTER 73 140242 000000 LENGTH: .WORD 0 ; INPUT BUFFER LENGTH 74 75 INPUT: 76 140244 010067 140240' MOV R0,BUFFER 77 140250 005067 140242' CLR LENGTH 78 140254 012737 140300 000060 MOV #INPAST,@#60 79 140262 012737 000200 000062 MOV #200,@#62 80 140270 152737 000100 177560 BISB #100,@#177560 81 140276 000207 RTS PC 82 83 INPAST: 84 140300 010046 MOV R0,-(SP) 85 140302 113700 177562 MOVB @#177562,R0 86 140306 120027 000015 CMPB R0,#15 87 140312 001455 BEQ 7$ ; CARRIAGE RETURN 88 140314 120027 000177 CMPB R0,#127. 89 140320 001403 BEQ 2$ ; 90 140322 120027 000010 CMPB R0,#10 91 140326 001012 BNE 4$ ; BACK SPACE 92 140330 005767 140242' 2$: TST LENGTH ; DATA IN BUFFER? 93 140334 001406 BEQ 3$ 94 140336 005367 140242' DEC LENGTH ; LENGTH 95 140342 012700 141047 MOV #DEL,R0 96 140346 004767 140150' JSR PC,PRINT 97 140352 000453 3$: BR 9$ 98 140354 120027 000040 4$: CMPB R0,#40 99 140360 002450 BLT 9$ ; BELOW SPACE 100 140362 120027 000177 CMPB R0,#177 101 140366 002045 BGE 9$ ; SKIP STUFF TOO BIG 102 140370 004767 140132' JSR PC,ONECHR ; ECHO CHAR 103 140374 120027 000172 CMPB R0,#172 104 140400 003005 BGT 5$ ; ABOVE Z 105 140402 120027 000141 CMPB R0,#141 106 140406 002402 BLT 5$ ; BELOW A 107 140410 142700 000040 BICB #40,R0 ; CONVERT TO UPPER CASE 108 140414 026727 140242' 000254 5$: CMP LENGTH,#254 109 140422 002027 BGE 9$ 110 140424 110046 MOVB R0,-(SP) 111 140426 016700 140240' MOV BUFFER,R0 112 140432 066700 140242' ADD LENGTH,R0 113 140436 112610 MOVB (SP)+,(R0) 114 140440 005267 140242' INC LENGTH 115 140444 000416 BR 9$ 116 117 140446 016700 140240' 7$: MOV BUFFER,R0 118 140452 066700 140242' ADD LENGTH,R0 119 140456 105010 CLRB (R0) 120 140460 012737 140506 000240 MOV #CMD,@#240 ; CALL CMD AT PRIORITY 2 121 140466 012737 000100 000242 MOV #100,@#242 122 140474 012737 002000 177772 MOV #2000,@#177772 123 140502 012600 9$: MOV (SP)+,R0 124 140504 000002 RTI 125 126 CMD: 127 140506 005037 177772 CLR @#177772 ; NO MORE PIR CALLS 128 140512 010046 MOV R0,-(SP) 129 140514 010146 MOV R1,-(SP) 130 140516 010246 MOV R2,-(SP) 131 140520 010346 MOV R3,-(SP) 132 140522 010446 MOV R4,-(SP) 133 140524 012700 141044 MOV #EOL,R0 134 140530 004767 140150' JSR PC,PRINT 135 140534 132737 000100 177564 1$: BITB #100,@#177564 136 140542 001374 BNE 1$ 137 140544 005004 CLR R4 138 140546 012703 141053 MOV #CMDLST,R3 ; CMD LIST 139 140552 112300 3$: MOVB (R3)+,R0 140 140554 001431 BEQ 13$ 141 140556 016702 140240' MOV BUFFER,R2 ; USER CMD 142 140562 112201 4$: MOVB (R2)+,R1 143 140564 001431 BEQ 15$ ; NULL COMMAND? 144 140566 120127 000040 CMPB R1,#40 145 140572 001773 BEQ 4$ ; SKIP SPACE 146 140574 120001 5$: CMPB R0,R1 147 140576 001010 BNE 7$ 148 140600 112300 MOVB (R3)+,R0 149 140602 001412 BEQ 9$ 150 140604 112201 MOVB (R2)+,R1 151 140606 001410 BEQ 9$ 152 140610 120127 000040 CMPB R1,#40 153 140614 001367 BNE 5$ 154 140616 000404 BR 9$ 155 140620 112300 7$: MOVB (R3)+,R0 156 140622 001376 BNE 7$ 157 140624 005204 INC R4 158 140626 000751 BR 3$ 159 140630 006304 9$: ASL R4 160 140632 004774 140700 JSR PC,@CMDTBL(R4) ; EXECUTE 161 140636 000404 BR 15$ 162 163 140640 012700 141114 13$: MOV #UNKMSG,R0 164 140644 004767 140150' JSR PC,PRINT 165 166 140650 005067 140242' 15$: CLR LENGTH 167 140654 012700 141166 MOV #PROMPT,R0 168 140660 004767 140150' JSR PC,PRINT 169 140664 012604 MOV (SP)+,R4 170 140666 012603 MOV (SP)+,R3 171 140670 012602 MOV (SP)+,R2 172 140672 012601 MOV (SP)+,R1 173 140674 012600 MOV (SP)+,R0 174 140676 000002 RTI 175 176 177 140700 142656 141304 141320 CMDTBL: .WORD BOOT,HALT,TEST,DIAG,LIGHTS,HELP 140706 141426 142172 141272 178 140714 103 117 115 HLPMSG: .ASCIZ 'COMMANDS ARE BOOT, HALT, TEST, DIAG, LIGHTS AND HELP'<15><12>'BOOT DEVICES ARE RK? RL? OR RP?'<15><12> 140717 115 101 116 140722 104 123 040 140725 101 122 105 140730 040 102 117 140733 117 124 054 140736 040 110 101 140741 114 124 054 140744 040 124 105 140747 123 124 054 140752 040 104 111 140755 101 107 054 140760 040 114 111 140763 107 110 124 140766 123 040 101 140771 116 104 040 140774 110 105 114 140777 120 015 012 141002 102 117 117 141005 124 040 104 141010 105 126 111 141013 103 105 123 141016 040 101 122 141021 105 040 122 141024 113 077 040 141027 122 114 077 141032 040 117 122 141035 040 122 120 141040 077 015 012 141043 000 179 141044 015 012 000 EOL: .BYTE 15,12,0 180 141047 010 040 010 DEL: .BYTE 10,40,10,0 141052 000 181 141053 102 117 117 CMDLST: .ASCIZ 'BOOT' 141056 124 000 182 141060 110 101 114 .ASCIZ 'HALT' 141063 124 000 183 141065 124 105 123 .ASCIZ 'TEST' 141070 124 000 184 141072 104 111 101 .ASCIZ 'DIAG' 141075 107 000 185 141077 114 111 107 .ASCIZ 'LIGHTS' 141102 110 124 123 141105 000 186 141106 110 105 114 .ASCIZ 'HELP' 141111 120 000 187 141113 000 .BYTE 0 188 141114 125 116 113 UNKMSG: .ASCIZ 'UNKNOWN COMMAND'<12><15> 141117 116 117 127 141122 116 040 103 141125 117 115 115 141130 101 116 104 141133 012 015 000 189 141136 120 104 120 BANNER: .ASCIZ 'PDP-11 MONITOR V1.0'<12><15><12><15> 141141 055 061 061 141144 040 115 117 141147 116 111 124 141152 117 122 040 141155 126 061 056 141160 060 012 015 141163 012 015 000 190 ; 'ADAPTED FROM CODE BY PAUL NANKERVIS '<12><15><12><15> 191 141166 102 117 117 PROMPT: .ASCIZ 'BOOT> ' 141171 124 076 040 141174 000 192 141175 125 116 113 BADBOO: .ASCIZ 'UNKNOWN BOOT DEVICE'<12><15> 141200 116 117 127 141203 116 040 102 141206 117 117 124 141211 040 104 105 141214 126 111 103 141217 105 012 015 141222 000 193 141223 040 040 040 PERMSG: .ASCIZ ' CLOCK TICKS'<12><15> 141226 040 040 040 141231 103 114 117 141234 103 113 040 141237 124 111 103 141242 113 123 012 141245 015 000 194 141247 040 040 040 LOOMSG: .ASCIZ ' ITERATIONS'<12><15> 141252 040 040 040 141255 111 124 105 141260 122 101 124 141263 111 117 116 141266 123 012 015 141271 000 195 196 .EVEN 197 198 HELP: 199 141272 012700 140714 MOV #HLPMSG,R0 200 141276 004767 140150' JSR PC,PRINT 201 141302 000207 RTS PC 202 203 HALT: 204 141304 000000 HALT 205 141306 012700 141044 MOV #EOL,R0 206 141312 004767 140150' JSR PC,PRINT 207 141316 000207 RTS PC 208 209 TEST: 210 141320 005067 140122' CLR CLKTIC 211 212 141324 012705 015000 MOV #15000,R5 213 141330 010537 177570 10$: MOV R5,@#177570 ; DISPLAY 214 141334 010504 MOV R5,R4 215 141336 006204 ASR R4 216 141340 005000 15$: CLR R0 217 141342 010501 MOV R5,R1 218 141344 071004 DIV R4,R0 219 141346 010002 MOV R0,R2 220 141350 070204 MUL R4,R2 221 141352 060301 ADD R3,R1 222 141354 020105 CMP R1,R5 223 141356 001401 BEQ 20$ 224 141360 000000 HALT 225 141362 077412 20$: SOB R4,15$ 226 141364 077517 SOB R5,10$ 227 228 141366 012700 141230 MOV #PERMSG+5,R0 229 141372 016703 140122' MOV CLKTIC,R3 230 231 141376 005002 25$: CLR R2 232 141400 071227 000010 DIV #10,R2 233 141404 062703 000060 ADD #'0,R3 234 141410 110340 MOVB R3,-(R0) 235 141412 010203 MOV R2,R3 236 141414 001370 BNE 25$ 237 238 141416 004767 140150' JSR PC,PRINT 239 141422 000207 RTS PC 240 241 141424 000000 LOOCNT: .WORD 0 242 243 DIAG: 244 141426 005067 141424' CLR LOOCNT 245 141432 005067 140122' CLR CLKTIC 246 DIAGLP: 247 141436 005005 CLR R5 248 141440 100404 BMI L1 249 141442 102403 BVS L1 250 141444 101002 BHI L1 251 141446 002401 BLT L1 252 141450 101401 BLOS L2 253 141452 000000 L1: HALT 254 255 141454 005305 L2: DEC R5 256 141456 100003 BPL L3 257 141460 001402 BEQ L3 258 141462 002001 BGE L3 259 141464 003401 BLE L4 260 141466 000000 L3: HALT 261 262 141470 006005 L4: ROR R5 263 141472 102002 BVC L5 264 141474 103001 BCC L5 265 141476 001001 BNE L6 266 141500 000000 L5: HALT 267 268 141502 112737 000017 177776 L6: MOVB #17,@#177776 269 141510 100004 BPL L7 270 141512 102003 BVC L7 271 141514 002402 BLT L7 272 141516 101001 BHI L7 273 141520 100401 BMI L8 274 141522 000000 L7: HALT 275 276 141524 012703 077777 L8: MOV #77777,R3 277 141530 062703 077777 ADD #77777,R3 278 141534 123727 177776 000005 CMPB @#177776,#5 279 141542 001001 BNE L9 280 141544 000000 HALT 281 282 141546 112704 001700 L9: MOVB #1700,R4 283 141552 100003 BPL L10 284 141554 020427 177700 CMP R4,#177700 285 141560 001401 BEQ L11 286 141562 000000 L10: HALT 287 288 141564 105004 L11: CLRB R4 289 141566 020427 177400 CMP R4,#177400 290 141572 001401 BEQ L12 291 141574 000000 HALT 292 293 141576 012705 125252 L12: MOV #125252,R5 294 141602 010500 MOV R5,R0 295 141604 010001 MOV R0,R1 296 141606 010102 MOV R1,R2 297 141610 010203 MOV R2,R3 298 141612 010304 MOV R3,R4 299 141614 010405 MOV R4,R5 300 141616 160501 SUB R5,R1 301 141620 002401 BLT NODIAG 302 141622 001401 BEQ L13 303 141624 000000 NODIAG: HALT 304 305 141626 006102 L13: ROL R2 306 141630 103001 BCC L14 307 141632 002401 BLT L15 308 141634 000000 L14: HALT 309 310 141636 060203 L15: ADD R2,R3 311 141640 005203 INC R3 312 141642 005103 COM R3 313 141644 060301 ADD R3,R1 314 141646 103401 BCS L16 315 141650 003401 BLE L17 316 141652 000000 L16: HALT 317 318 141654 006004 L17: ROR R4 319 141656 050403 BIS R4,R3 320 141660 060503 ADD R5,R3 321 141662 005203 INC R3 322 141664 103402 BCS L18 323 141666 005301 DEC R1 324 141670 002401 BLT L19 325 141672 000000 L18: HALT 326 327 141674 005100 L19: COM R0 328 141676 101401 BLOS L20 329 141700 000000 HALT 330 331 141702 040001 L20: BIC R0,R1 332 141704 060101 ADD R1,R1 333 141706 003001 BGT L21 334 141710 003401 BLE L22 335 141712 000000 L21: HALT 336 337 141714 000301 L22: SWAB R1 338 141716 020127 052125 CMP R1,#052125 339 141722 001004 BNE L23 340 141724 030405 BIT R4,R5 341 141726 003002 BGT L23 342 141730 005105 COM R5 343 141732 001001 BNE L24 344 141734 000000 L23: HALT 345 346 141736 112700 177401 L24: MOVB #177401,R0 347 141742 100001 BPL L26 348 141744 000000 L25: HALT 349 350 141746 077002 L26: SOB R0,L25 351 141750 005001 CLR R1 352 141752 005201 L27: INC R1 353 141754 077002 SOB R0,L27 354 141756 005700 TST R0 355 141760 001002 BNE L28 356 141762 005701 TST R1 357 141764 001401 BEQ L29 358 141766 000000 L28: HALT 359 360 141770 012707 141776 L29: MOV #N1,PC 361 141774 000000 HALT 362 363 141776 005727 N1: TST (PC)+ 364 142000 000000 HALT 365 366 142002 012746 142012 N2: MOV #N3,-(SP) 367 142006 000207 RTS PC 368 142010 000000 HALT 369 370 142012 005046 N3: CLR -(SP) 371 142014 012746 142024 MOV #N4,-(SP) 372 142020 000002 RTI 373 142022 000000 HALT 374 375 142024 000137 142032 N4: JMP @#N5 376 142030 000000 HALT 377 378 142032 012705 000003 N5: MOV #3,R5 379 142036 005037 000006 CLR @#6 380 142042 012737 142054 000004 MOV #N6,@#4 381 142050 005745 TST -(R5) 382 142052 000000 HALT 383 142054 062706 000004 N6: ADD #4,SP 384 385 142060 005000 CLR R0 386 142062 012701 007777 MOV #7777,R1 387 142066 010002 N7: MOV R0,R2 388 142070 062702 000005 ADD #5,R2 389 142074 022062 177773 CMP (R0)+,-5(R2) 390 142100 001402 BEQ N8 391 142102 000000 HALT 392 142104 000000 D1: .WORD 0 393 394 142106 077111 N8: SOB R1,N7 395 396 142110 005267 141424' INC LOOCNT 397 142114 103001 BCC 10$ 398 142116 000000 HALT 399 142120 026727 140122' 002200 10$: CMP CLKTIC,#2200 400 142126 101002 BHI 20$ 401 142130 000167 141436' JMP DIAGLP 402 142134 012700 141254 20$: MOV #LOOMSG+5,R0 403 142140 016703 141424' MOV LOOCNT,R3 404 405 142144 005002 25$: CLR R2 406 142146 071227 000010 DIV #10,R2 407 142152 062703 000060 ADD #'0,R3 408 142156 110340 MOVB R3,-(R0) 409 142160 010203 MOV R2,R3 410 142162 001370 BNE 25$ 411 412 142164 004767 140150' JSR PC,PRINT 413 142170 000207 RTS PC 414 415 177572 MMR0=177572 416 177574 MMR1=177574 417 177576 MMR2=177576 418 172516 MMR3=172516 419 420 LIGHTS: 421 142172 012703 077406 MOV #77406,R3 ; DEFAULT PDR 422 142176 005002 CLR R2 423 142200 005001 CLR R1 424 142202 012700 000010 MOV #8.,R0 425 142206 010361 172300 1$: MOV R3,172300(R1) ; KERNEL I PDR 426 142212 010261 172340 MOV R2,172340(R1) ; KERNEL I PAR 427 142216 010361 172320 MOV R3,172320(R1) ; KERNEL D PDR 428 142222 010261 172360 MOV R2,172360(R1) ; KERNEL D PAR 429 142226 010361 172200 MOV R3,172200(R1) ; SUPER I PDR 430 142232 010261 172240 MOV R2,172240(R1) ; SUPER I PAR 431 142236 010361 172220 MOV R3,172220(R1) ; SUPER D PDR 432 142242 010261 172260 MOV R2,172260(R1) ; SUPER D PAR 433 142246 010361 177600 MOV R3,177600(R1) ; USER I PDR 434 142252 010261 177640 MOV R2,177640(R1) ; USER I PAR 435 142256 010361 177620 MOV R3,177620(R1) ; USER D PDR 436 142262 010361 177660 MOV R3,177660(R1) ; USER D PAR 437 142266 062702 000200 ADD #200,R2 438 142272 062701 000002 ADD #2,R1 439 142276 077035 SOB R0,1$ 440 142300 052737 176000 172376 BIS #176000,@#172376 ; KERNEL D POINTS TO I/O SPACE 441 142306 052737 176000 172276 BIS #176000,@#172276 ; SUPER D POINTS TO I/O SPACE 442 142314 052737 176000 177676 BIS #176000,@#177676 ; USER D POINTS TO I/O SPACE 443 142322 012737 000077 172516 MOV #77,@#MMR3 ; 77 FOR 22 BIT 444 142330 012737 000001 177572 MOV #1,@#MMR0 445 446 142336 012737 001700 172244 MOV #1700,@#172244 ; BASE SUPER I (PAR 2) #40000 AT #170000 447 142344 012737 001700 172264 MOV #1700,@#172264 ; BASE SUPER D (PAR 2) #40000 AT #170000 448 142352 012737 010000 177776 MOV #010000,@#177776 ; SET PM TO SUPER 449 450 142360 012703 040200 MOV #40200,R3 ; SUPER CODE ADDRESS 451 142364 012702 142412 MOV #SUPERS,R2 ; ADDRESS SUPER CODE 452 142370 012246 10$: MOV (R2)+,-(SP) 453 142372 006623 MTPI (R3)+ 454 142374 020227 142656 CMP R2,#SUPERE 455 142400 103773 BLO 10$ 456 457 142402 012767 040200 140120' MOV #40200,LGHTON ; CHANGE IDLE TASK 458 142410 000207 RTS PC 459 460 ; 461 ; TO BE COPIED TO SUPER #40200 AT PHYSICAL #170000 462 ; #40000 TO #40200 FOR WAIT & JMP INSTRUCTIONS 463 ; 464 SUPERS: 465 142412 012700 000037 MOV #37,R0 ; LOAD PATTERN 466 142416 012701 174000 MOV #174000,R1 467 142422 032737 000001 177570 BIT #1,@#177570 468 142430 001414 BEQ 10$ 469 142432 012700 007417 MOV #7417,R0 470 142436 010001 MOV R0,R1 471 142440 005101 COM R1 472 142442 032737 000002 177570 BIT #2,@#177570 473 142450 001404 BEQ 10$ 474 142452 012700 036163 MOV #36163,R0 475 142456 012701 037000 MOV #37000,R1 476 142462 010102 10$: MOV R1,R2 477 142464 162702 000002 SUB #2,R2 478 142470 042702 000001 BIC #1,R2 ; WAIT ADDRESS 479 142474 010203 MOV R2,R3 480 142476 042703 177701 BIC #177701,R3 ; ADDRESS OFFSET 481 142502 012763 000001 040000 MOV #0000001,40000(R3) ; WRITE WAIT 482 142510 062703 000002 ADD #2,R3 483 142514 012763 000113 040000 MOV #0000113,40000(R3) ; WRITE JMP (R3) 484 485 142522 010204 MOV R2,R4 486 142524 072427 177772 ASH #-6,R4 487 142530 042704 177600 BIC #177600,R4 488 142534 012705 001700 MOV #1700,R5 489 142540 160405 SUB R4,R5 ; PAR ADDRESS BASE FOR WAIT 490 142542 010204 MOV R2,R4 491 142544 072427 177764 ASH #-12.,R4 492 142550 042704 177761 BIC #177761,R4 ; PAR SELECT OFFSET 493 142554 010564 172240 MOV R5,172240(R4) ; SUPER I SPACE 494 495 142560 010103 MOV R1,R3 496 142562 072327 177764 ASH #-12.,R3 497 142566 042703 177761 BIC #177761,R3 ; PAR SELECT OFFSET 498 142572 020304 CMP R3,R4 ; SAME PAR 499 142574 001412 BEQ 30$ 500 142576 010104 MOV R1,R4 501 142600 072427 177772 ASH #-6,R4 502 142604 042704 177600 BIC #177600,R4 503 142610 012705 001700 MOV #1700,R5 504 142614 160405 SUB R4,R5 ; PAR ADDRESS BASE FOR JMP 505 142616 010563 172240 MOV R5,172240(R3) ; SUPER I SPACE 506 30$: 507 142622 012704 000003 MOV #3,R4 508 142626 063704 177570 ADD @#177570,R4 509 142632 012703 000002 MOV #2,R3 510 142636 060703 ADD PC,R3 511 142640 000112 40$: JMP (R2) 512 142642 077402 SOB R4,40$ 513 142644 010002 MOV R0,R2 514 142646 006002 ROR R2 ; ROTATE PATTERN 515 142650 006101 ROL R1 516 142652 006000 ROR R0 517 142654 000702 BR 10$ 518 SUPERE: 519 520 BOOT: 521 142656 005003 CLR R3 ; UNIT 522 142660 112201 1$: MOVB (R2)+,R1 523 142662 001545 BEQ BOOTRK ; DEFAULT DEVICE IS RK0 524 142664 120127 000040 CMPB R1,#40 525 142670 001773 BEQ 1$ 526 142672 120127 000122 CMPB R1,#'R 527 142676 001405 BEQ 5$ 528 529 142700 012700 141175 MOV #BADBOO,R0 530 142704 004767 140150' JSR PC,PRINT 531 142710 000207 RTS PC 532 533 142712 112201 5$: MOVB (R2)+,R1 ; HOPEFULLY K, L OR P 534 142714 112200 7$: MOVB (R2)+,R0 ; DIGIT 535 142716 001416 BEQ 9$ 536 142720 120027 000040 CMPB R0,#40 537 142724 001413 BEQ 9$ 538 142726 120027 000067 CMPB R0,#'7 539 142732 003031 BGT 11$ 540 142734 162700 000060 SUB #'0,R0 541 142740 002426 BLT 11$ 542 142742 006303 ASL R3 543 142744 006303 ASL R3 544 142746 006303 ASL R3 545 142750 050003 BIS R0,R3 ; PUT DIGIT INTO UNIT 546 142752 000760 BR 7$ 547 142754 005002 9$: CLR R2 548 142756 012722 000137 MOV #137,(R2)+ ; STORE "JMP @#140000" INSTRUCTION AT ADDRESS 0 549 142762 012722 140000 MOV #START,(R2)+ 550 142766 012722 140000 MOV #START,(R2)+ ; STORE #140000 IN VECTOR 4, IN CASE OF TRAP TO 4 551 142772 005022 CLR (R2)+ 552 142774 120127 000113 CMPB R1,#'K 553 143000 001476 BEQ BOOTRK 554 143002 120127 000114 CMPB R1,#'L 555 143006 001410 BEQ BOOTRL 556 143010 120127 000120 CMPB R1,#'P 557 143014 001517 BEQ BOOTRP 558 559 143016 012700 141114 11$: MOV #UNKMSG,R0 560 143022 004767 140150' JSR PC,PRINT 561 143026 000207 RTS PC 562 563 174400 RLCS=174400 564 BOOTRL: 565 143030 000005 RESET 566 143032 000303 SWAB R3 ; UNIT NUMBER 567 143034 012701 174400 MOV #RLCS,R1 ; CSR 568 143040 012761 000013 000004 MOV #13,4(R1) ; CLR ERR 569 143046 052703 000004 BIS #4,R3 ; UNIT+GSTAT 570 143052 010311 MOV R3,(R1) ; ISSUE CMD 571 143054 105711 TSTB (R1) ; WAIT 572 143056 100376 BPL .-2 573 143060 105003 CLRB R3 574 143062 052703 000010 BIS #10,R3 ; UNIT+RDHDR 575 143066 010311 MOV R3,(R1) ; ISSUE CMD 576 143070 105711 TSTB (R1) ; WAIT 577 143072 100376 BPL .-2 578 143074 016102 000006 MOV 6(R1),R2 ; GET HDR 579 143100 042702 000077 BIC #77,R2 ; CLR SECTOR 580 143104 005202 INC R2 ; MAGIC BIT 581 143106 010261 000004 MOV R2,4(R1) ; SEEK TO 0 582 143112 105003 CLRB R3 583 143114 052703 000006 BIS #6,R3 ; UNIT+SEEK 584 143120 010311 MOV R3,(R1) ; ISSUE CMD 585 143122 105711 TSTB (R1) ; WAIT 586 143124 100376 BPL .-2 587 143126 005061 000002 CLR 2(R1) ; CLR BA 588 143132 005061 000004 CLR 4(R1) ; CLR DA 589 143136 012761 177000 000006 MOV #-512.,6(R1) ; SET WC 590 143144 105003 CLRB R3 591 143146 052703 000014 BIS #14,R3 ; UNIT+READ 592 143152 010311 MOV R3,(R1) ; ISSUE CMD 593 143154 105711 TSTB (R1) ; WAIT 594 143156 100376 BPL .-2 595 143160 042711 000377 BIC #377,(R1) 596 143164 005002 CLR R2 597 143166 005003 CLR R3 598 143170 005004 CLR R4 599 143172 005005 CLR R5 600 143174 005007 CLR PC 601 602 177412 RKDA=177412 603 000005 READGO=5 604 BOOTRK: 605 143176 000005 RESET 606 143200 000303 SWAB R3 ; UNIT NUMBER 607 143202 006303 ASL R3 608 143204 006303 ASL R3 609 143206 006303 ASL R3 610 143210 006303 ASL R3 611 143212 006303 ASL R3 612 143214 012701 177412 MOV #RKDA,R1 ; CSR 613 143220 010311 MOV R3,(R1) ; LOAD DA 614 143222 005041 CLR -(R1) ; CLEAR BA 615 143224 012741 177000 MOV #-256.*2,-(R1) ; LOAD WC 616 143230 012741 000005 MOV #READGO,-(R1) ; READ & GO 617 143234 005002 CLR R2 618 143236 005003 CLR R3 619 143240 005004 CLR R4 620 143242 005005 CLR R5 621 143244 105711 TSTB (R1) 622 143246 100376 BPL .-2 623 143250 105011 CLRB (R1) 624 143252 005007 CLR PC 625 626 176700 RPCSR=0176700 627 BOOTRP: 628 143254 000005 RESET 629 143256 012701 176700 MOV #RPCSR, R1 630 143262 012761 000040 000010 MOV #0000040, 10(R1) ; RESET 631 143270 010361 000010 MOV R3, 10(R1) ; SET UNIT 632 143274 012711 000021 MOV #0000021, (R1) ; PACK ACK 633 143300 012761 010000 000032 MOV #0010000, 32(R1) ; 16B MODE 634 143306 012761 177000 000002 MOV #-512., 2(R1) ; SET WC 635 143314 005061 000004 CLR 4(R1) ; CLR BA 636 143320 005061 000006 CLR 6(R1) ; CLR DA 637 143324 005061 000034 CLR 34(R1) ; CLR CYL 638 143330 012711 000071 MOV #0000071, (R1) ; READ 639 143334 105711 TSTB (R1) ; WAIT 640 143336 100376 BPL .-2 641 143340 105011 CLRB (R1) 642 143342 010300 MOV R3,R0 643 143344 005007 CLR PC 644 645 .END START 645