1: /********** 2: / 3: / boot rom for si 9500 disk drive 4: / 5: /********** 6: 7: reset = 5 8: nop = 240 9: 10: <SI> / name code of boot rom 11: 0176 / offset to next rom 12: 13: sec / entry point, unit 0, no diagnostics 14: mov $0,r0 / entry point, unit 0, with diagnostics 15: mov $176700,r1 / load csr into r1 16: mov pc,r4 / for link 17: bcc diag / go do diagnostics if C set 18: br begin / skip next stuff 19: 20: 0173000 / pc on power up boot 21: 0340 / psw on power up boot 22: 23: begin: 24: reset / reset unibus devices 25: mov r0,r3 / move unit to r3 26: bis $01300,sp / get some stack 27: 28: mov 24(r1),r0 / load shared computer register to r0 29: bit $200,r0 / see if grant bit is set 30: bne 1f / set, is dual ported 31: mov 12(r1),r0 / move error register to r0 32: bic $037777,r0 / clear all but error and contention 33: cmp $140000,r0 / see if contention error 34: bne 2f / nope, must be normal 9500 35: 1: 36: bit $200,24(r1) / test for grant 37: bne 2f / got it 38: clr (r1) / issue login master clear to 9500 39: mov $1,24(r1) / set request 40: br 1b / loop until grant 41: 2: 42: mov $400,2(r1) / set for 512 bytes 43: clr 6(r1) / set for head 0, sector 0 44: clr 10(r1) / set to read at zero 45: bic $177774,r3 / clear all but bottom bits 46: ash $12,r3 / shift unit number 47: mov r3,4(r1) / set unit number 48: mov $5,(r1) / start the read 49: 3: 50: tstb (r1) / test for done 51: bpl 3b / wait for it 52: tst 12(r1) / see if error occured 53: bpl 4f / nope, all ok 54: br begin / try again 55: 4: 56: clr pc / jump to zero 57: diag: jmp *$165564 / go do diagnostics 58: 59: nop 60: nop