1 /* raboot.c 4.2 83/02/20 */ 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 * UNTESTED 7 */ 8 .set RELOC,0x50000 9 .set BOOTSIZE,15 /* size of boot in sectors */ 10 .set RABPSECT,512 /* bytes per sector */ 11 12 init: 13 .word 0 /* entry mask for dec monitor */ 14 nop;nop;nop;nop;nop;nop;nop;nop /* some no-ops for 750 boot to skip */ 15 nop;nop; 16 start: 17 movl r5,r11 /* boot flags */ 18 movl $RELOC,sp 19 moval init,r9 20 movc3 $end,(r9),(sp) 21 jmp *$RELOC+start2 22 /* now running relocated */ 23 /* bring in the boot program */ 24 start2: /* running relocated */ 25 clrl r9 /* transfer counter */ 26 clrl r5 /* transfer address */ 27 movl $1,r8 /* requested sector # */ 28 1: 29 pushr $0xffff /* BEGIN FIREWALL */ 30 calls $0,(r6) /* call ROM-based driver */ 31 blbs r0,2f 32 halt /* read error */ 33 2: 34 popr $0xffff /* END FIREWALL */ 35 incl r8 /* bump sector */ 36 addl2 $RABPSECT,r5 /* bump memory location */ 37 aobleq BOOTSIZE,r9,1b 38 39 .set PROGSIZE,(BOOTSIZE*RABPSECT) 40 done: 41 movl $PROGSIZE,r3 42 clrcor: 43 clrq (r3) 44 acbl $RELOC,$8,r3,clrcor 45 /* start loaded program */ 46 movl $9,r10 /* major("/dev/ra0a") */ 47 calls $0,*$0 48 brw start2 49 end: 50