|
|
1.1 root 1: /*
2: * Copyright (c) 1980,1986 Regents of the University of California.
3: * All rights reserved. The Berkeley software License Agreement
4: * specifies the terms and conditions for redistribution.
5: */
6:
7: /* "@(#)raboot.s 7.1 (Berkeley) 6/5/86" */
8:
9: .set MAJOR,9 /* major("/dev/ra0a") */
10:
11: /*
12: * 1st level boot program: loads next 7.5Kbytes from
13: * boot sector of file system and sets it up to run.
14: * Except for MAJOR definition above, should work
15: * with any disk using 750 boot rom.
16: */
17: .set RELOC,0x50000
18: .set BOOTLAST,15 /* last boot sector */
19: .set RABPSECT,512 /* bytes per sector */
20:
21: init:
22: .word 0 /* entry mask for dec monitor */
23: nop;nop;nop;nop;nop;nop;nop;nop /* some no-ops for 750 boot to skip */
24: nop;nop;
25: start:
26: movl $MAJOR,r10 /* major("/dev/xx0a") */
27: extzv $18,$1,r1,r4 /* get UBA number from R1 */
28: xorb2 $0x01,r4 /* complement bit */
29: insv r4,$24,$8,r10 /* set UBA number */
30: insv r3,$16,$8,r10 /* drive number */
31: extzv $12,$4,r5,r4 /* get partition from r5 */
32: bicw2 $0xf000,r5 /* remove from r5 */
33: insv r4,$8,$8,r10 /* set partition */
34: movl r5,r11 /* boot flags */
35: movl r1,r9 /* UNIBUS I/O page address */
36: movl r2,r8 /* boot device CSR */
37: movl r3,r7 /* unit number */
38: movl $RELOC,sp
39: moval init,r4
40: movc3 $end,(r4),(sp)
41: movl r9,r1 /* UNIBUS I/O page address */
42: movl r8,r2 /* boot device CSR */
43: movl r7,r3 /* unit number */
44: jmp *$RELOC+start2
45: /* now running relocated */
46: /* bring in the boot program */
47: start2: /* running relocated */
48: pushr $0xffff /* BEGIN FIREWALL */
49: movl $1,r4 /* first boot sector */
50: clrl r5 /* transfer address */
51: clrl -(sp) /* transfer address */
52: 1:
53: movl r4,r8 /* requested sector # */
54: jsb (r6) /* call ROM-based driver */
55: blbs r0,2f
56: halt /* read error */
57: 2:
58: addl2 $RABPSECT,r5 /* bump address */
59: movl r5,(sp)
60: aobleq $BOOTLAST,r4,1b
61:
62: .set PROGSIZE,(BOOTLAST*RABPSECT)
63: done:
64: tstl (sp)+ /* pop address */
65: popr $0xffff /* END FIREWALL */
66: movl $PROGSIZE,r4
67: clrcor:
68: clrq (r4)
69: acbl $RELOC,$8,r4,clrcor
70: /* start loaded program */
71: calls $0,*$0
72: brw start2
73: end:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.