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