|
|
1.1 root 1: /* raboot.s 6.1 83/07/29 */
2:
3: /*
4: * UDA50 1st level boot program: loads next 7.5Kbytes from
5: * boot sector of file system and sets it up to run.
6: */
7: .set RELOC,0x50000
8: .set BOOTLAST,15 /* last boot sector */
9: .set RABPSECT,512 /* bytes per sector */
10:
11: init:
12: .word 0 /* entry mask for dec monitor */
13: nop;nop;nop;nop;nop;nop;nop;nop /* some no-ops for 750 boot to skip */
14: nop;nop;
15: start:
16: movl r1,r7 /* UNIBUS I/O page address */
17: movl r2,r8 /* boot device CSR */
18: movl r3,r9 /* unit number */
19: movl r5,r11 /* boot flags */
20: movl $RELOC,sp
21: moval init,r10
22: movc3 $end,(r10),(sp)
23: movl r7,r1 /* UNIBUS I/O page address */
24: movl r8,r2 /* boot device CSR */
25: movl r9,r3 /* unit number */
26: jmp *$RELOC+start2
27: /* now running relocated */
28: /* bring in the boot program */
29: start2: /* running relocated */
30: pushr $0xffff /* BEGIN FIREWALL */
31: movl $1,r4 /* first boot sector */
32: clrl r5 /* transfer address */
33: clrl -(sp) /* transfer address */
34: 1:
35: movl r4,r8 /* requested sector # */
36: jsb (r6) /* call ROM-based driver */
37: blbs r0,2f
38: halt /* read error */
39: 2:
40: addl2 $RABPSECT,r5 /* bump address */
41: movl r5,(sp)
42: aobleq $BOOTLAST,r4,1b
43:
44: .set PROGSIZE,((BOOTLAST-1)*RABPSECT)
45: done:
46: tstl (sp)+ /* pop address */
47: popr $0xffff /* END FIREWALL */
48: movl $PROGSIZE,r3
49: clrcor:
50: clrq (r3)
51: acbl $RELOC,$8,r3,clrcor
52: /* start loaded program */
53: movl $9,r10 /* major("/dev/ra0a") */
54: calls $0,*$0
55: brw start2
56: end:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.