Annotation of 43BSD/sys/mdec/raboot.s, revision 1.1.1.1

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:

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.