man(1) Manual page archive


NAME
     boot procedures - UNIX startup

DESCRIPTION
     How to start UNIX.   UNIX is started by placing it in core
     at location zero and transferring to zero.  Since the system
     is not reenterable, it is necessary to read it in from disk
     or tape.

     The tp command places a bootstrap program on the otherwise
     unused block zero of the tape.  The DECtape version of this
     program is called tboot, the magtape version mboot.  If
     tboot or mboot is read into location zero and executed
     there, it will type `=' on the console, read in a tp entry
     name, load that entry into core, and transfer to zero.  Thus
     one way to run UNIX is to maintain the system code on a tape
     using tp.  Caution: the file /usr/mdec/tboot (DECtape) or
     /usr/mdec/mboot (magtape) must be present when the tape is
     made!  When a boot is required, execute (somehow) a program
     which reads in and jumps to the first block of the tape.  In
     response to the `=' prompt, type the entry name of the sys-
     tem on the tape (we use plain `unix').  It is strongly rec-
     ommended that a current version of the system be maintained
     in this way, even if it is usually booted from disk.

     The standard DEC ROM which loads DECtape is sufficient to
     read in tboot, but the magtape ROM loads block one, not
     zero.  If no suitable ROM is available, magtape and DECtape
     programs are presented below which may be manually placed in
     core and executed.

     The system can also be booted from a disk file with the aid
     of the uboot program.  When read into location 0 and exe-
     cuted, uboot reads a single character (either p or k for RP
     or RK, both drive 0) to specify which device is to be
     searched.  Then it reads a UNIX pathname from the console,
     finds the corresponding file on the given device, loads that
     file into core location zero, and transfers to it.  Uboot
     operates under very severe space constraints.  It supplies
     no prompts, except that it echoes a carriage return and line
     feed after the p or k.  No diagnostic is provided if the
     indicated file cannot be found, nor is there any means of
     correcting typographical errors in the file name except to
     start the program over.  If it fails to find the file, how-
     ever, it jumps back to its start, so another try can be
     attempted, starting again with the p or k.  Notice that
     uboot will only load a file from drive 0, and the file sys-
     tem it searches must start at the beginning of the disk.
     Uboot itself usually resides in the otherwise unused block 0
     of the disk, so it can be loaded by ROM program; mkfs can be
     used to put it there when the file system is created.  It
     can also be loaded from a tp tape as described above.

 1

     The switches.   The console switches play an important role
     in the use and especially the booting of UNIX.  During oper-
     ation, the console switches are examined 60 times per sec-
     ond, and the contents of the address specified by the
     switches are displayed in the display register.  (This is
     not true on the 11/40 since there is no display register on
     that machine.)  If the switch address is even, the address
     is interpreted in kernel (system) space; if odd, the
     rounded-down address is interpreted in the current user
     space.

     If any diagnostics are produced by the system, they are
     printed on the console only if the switches are non-zero.
     Thus it is wise to have a non-zero value in the switches at
     all times.

     During the startup of the system, the init program (VIII)
     reads the switches and will come up single-user if the
     switches are set to 173030.

     It is unwise to have a non-existent address in the switches.
     This causes a bus error in the system (displayed as 177777)
     at the rate of 60 times per second.  If there is a transfer
     of more than 16ms duration on a device with a data rate fas-
     ter than the bus error timeout (about 10μs) then a permanent
     disk non-existent-memory error will occur.

     ROM programs.   Here are some programs which are suitable
     for installing in read-only memories, or for manual keying
     into core if no ROM is present.  Each program is position-
     independent but should be placed well above location 0 so it
     will not be overwritten.  Each reads a block from the begin-
     ning of a device into core location zero.  The octal words
     constituting the program are listed on the left.

     DECtape (drive 0) from endzone:
        012700      mov     $tcba,r0
        177346
        010040      mov     r0,-(r0)       / use tc addr for wc
        012710      mov     $3,(r0)        / read bn forward
        000003
        105710  1:  tstb    (r0)           / wait for ready
        002376      bge     1b
        112710      movb    $5,(r0)        / read (forward)
        000005
        000777      br      .              / loop; now halt and start at 0

     DECtape (drive 0) with search:
        012700  1:  mov     $tcba,r0
        177346
        010040      mov     r0,-(r0)       / use tc addr for wc
        012740      mov     $4003,-(r0)    / read bn reverse
        004003
        005710  2:  tst     (r0)

 2

      002376        bge     2b             / wait for error
        005760      tst     -2(r0)         / loop if not end zone
        177776
        002365      bge     1b
        012710      mov     $3,(r0)        / read bn forward
        000003
        105710  2:  tstb    (r0)           / wait for ready
        002376      bge     2b
        112710      movb    $5,(r0)        / read (forward)
        000005
        105710  2:  tstb    (r0)           / wait for ready
        002376      bge     2b
        005007      clr     pc             / transfer to zero

     Caution: both of these DECtape programs will (literally)
     blow a fuse if 2 drives are dialed to zero.

     Magtape from load point:
        012700      mov     $mtcma,r0
        172526
        010040      mov     r0,-(r0)       / usr mt addr for wc
        012740      mov     $60003,-(r0)   / read 9-track
        060003
        000777      br      .              / loop; now halt and start at 0

     RK (drive 0):
        012700      mov     $rkda,r0
        177412
        005040      clr     -(r0)          / rkda cleared by start
        010040      mov     r0,-(r0)
        012740      mov     $5,-(r0)
        000005
        105710  1:  tstb    (r0)
        002376      bge     1b
        005007      clr     pc

     RP (drive 0)
        012700      mov     $rpmr,r0
        176726
        005040      clr     -(r0)
        005040      clr     -(r0)
        005040      clr     -(r0)
        010040      mov     r0,-(r0)
        012740      mov     $5,-(r0)
        000005
        105710  1:  tstb    (r0)
        002376      bge     1b
        005007      clr     pc

FILES
     /unix - UNIX code
     /usr/mdec/mboot - tp magtape bootstrap
     /usr/mdec/tboot - tp DECtape bootstrap
     /usr/mdec/uboot - file system bootstrap

 3

SEE ALSO
     tp (I), init (VIII)

 4