1*11188Ssam /* raboot.c 4.2 83/02/20 */ 211087Ssam 311087Ssam /* 4*11188Ssam * UDA50 1st level boot program: loads next 7.5Kbytes from 5*11188Ssam * boot sector of file system and sets it up to run. 6*11188Ssam * UNTESTED 711087Ssam */ 8*11188Ssam .set RELOC,0x50000 9*11188Ssam .set BOOTSIZE,15 /* size of boot in sectors */ 10*11188Ssam .set RABPSECT,512 /* bytes per sector */ 1111087Ssam 1211087Ssam init: 13*11188Ssam .word 0 /* entry mask for dec monitor */ 14*11188Ssam nop;nop;nop;nop;nop;nop;nop;nop /* some no-ops for 750 boot to skip */ 15*11188Ssam nop;nop; 1611087Ssam start: 17*11188Ssam movl r5,r11 /* boot flags */ 18*11188Ssam movl $RELOC,sp 19*11188Ssam moval init,r9 20*11188Ssam movc3 $end,(r9),(sp) 21*11188Ssam jmp *$RELOC+start2 22*11188Ssam /* now running relocated */ 23*11188Ssam /* bring in the boot program */ 2411087Ssam start2: /* running relocated */ 25*11188Ssam clrl r9 /* transfer counter */ 26*11188Ssam clrl r5 /* transfer address */ 27*11188Ssam movl $1,r8 /* requested sector # */ 2811087Ssam 1: 29*11188Ssam pushr $0xffff /* BEGIN FIREWALL */ 30*11188Ssam calls $0,(r6) /* call ROM-based driver */ 31*11188Ssam blbs r0,2f 32*11188Ssam halt /* read error */ 3311087Ssam 2: 34*11188Ssam popr $0xffff /* END FIREWALL */ 35*11188Ssam incl r8 /* bump sector */ 36*11188Ssam addl2 $RABPSECT,r5 /* bump memory location */ 37*11188Ssam aobleq BOOTSIZE,r9,1b 3811087Ssam 39*11188Ssam .set PROGSIZE,(BOOTSIZE*RABPSECT) 40*11188Ssam done: 41*11188Ssam movl $PROGSIZE,r3 42*11188Ssam clrcor: 43*11188Ssam clrq (r3) 44*11188Ssam acbl $RELOC,$8,r3,clrcor 45*11188Ssam /* start loaded program */ 46*11188Ssam movl $9,r10 /* major("/dev/ra0a") */ 47*11188Ssam calls $0,*$0 48*11188Ssam brw start2 4911087Ssam end: 50