<html>
  <head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <p>Even better were DG Novas with core memory, just turn the machine
      off, come back in the morning, turn on the machine, pick up where
      you left off :)</p>
    <div class="moz-cite-prefix">On 09/18/2024 03:38 PM, ron minnich
      wrote:<br>
    </div>
    <blockquote
cite="mid:CAP6exYJusuxfOtP8Bu5bc+93QLHyGQYQt3dBDVfvxPZUDiJ+dw@mail.gmail.com"
      type="cite">
      <div dir="ltr">Interesting about the amiga. I'm assuming their
        firmware zeros memory on reset, so you have to do handoff from
        kernel to kernel, not via a reset and so on?
        <div><br>
        </div>
        <div>What was particularly nice about the V6/PDP-11 case: we
          were able to yank reset, which let us cleanly reset/disable
          devices, because everything was in memory when we got back. I
          miss the simplicity of the old machines.</div>
      </div>
      <br>
      <div class="gmail_quote">
        <div dir="ltr" class="gmail_attr">On Wed, Sep 18, 2024 at
          3:07 PM Christian Hopps <<a moz-do-not-send="true"
            href="mailto:chopps@chopps.org">chopps@chopps.org</a>>
          wrote:<br>
        </div>
        <blockquote class="gmail_quote" style="margin:0px 0px 0px
          0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><br>
          We had/have this functionality in the Amiga port of NetBSD.<br>
          <br>
          It is implemented as `/dev/reload` device and you copy a
          kernel image to it. In locore.s there's code that copies the
          kernel image over top of the running kernel and then restarts.
          I believe for it to work nothing below the copy code in
          locore.s can change :)<br>
          <br>
          Thanks,<br>
          Chris.<br>
          <br>
          Phil Budne <<a moz-do-not-send="true"
            href="mailto:phil@ultimate.com" target="_blank">phil@ultimate.com</a>>
          writes:<br>
          <br>
          > ron minnich wrote:<br>
          >> But I'm wondering: is Ed's work in 1977 the first
          "kernel boots kernel" or<br>
          >> was there something before?<br>
          ><br>
          > There was!  The PDP-7 UNIX listings contain a program
          trysys.s<br>
          > <a moz-do-not-send="true"
href="https://github.com/DoctorWkt/pdp7-unix/blob/master/src/sys/trysys.s"
            rel="noreferrer" target="_blank">https://github.com/DoctorWkt/pdp7-unix/blob/master/src/sys/trysys.s</a><br>
          > that reboots the system by reading a.out into user memory
          (in the high<br>
          > 4K of core), then copies it to low memory and jumping to
          the entry<br>
          > point.  The name suggests its original intended use was
          to test a new<br>
          > system (kernel).<br>
          ><br>
          > P.S.<br>
          > Normal bootable system images seem to have been stored in
          reserved<br>
          > tracks of the (fixed head) disk (that are inacessible via
          system calls):<br>
          ><br>
          > <a moz-do-not-send="true"
href="https://github.com/DoctorWkt/pdp7-unix/blob/master/src/sys/maksys.s"
            rel="noreferrer" target="_blank">https://github.com/DoctorWkt/pdp7-unix/blob/master/src/sys/maksys.s</a><br>
          > reads a.out and uses I/O instructions to write it out.<br>
          ><br>
          > P.P.S.<br>
          > Accordingly, I put together a "paper tape" for booting
          the system:<br>
          > <a moz-do-not-send="true"
href="https://github.com/DoctorWkt/pdp7-unix/blob/master/src/other/pbboot.s"
            rel="noreferrer" target="_blank">https://github.com/DoctorWkt/pdp7-unix/blob/master/src/other/pbboot.s</a><br>
          ><br>
          > P.P.P.S.<br>
          > The system (kernel) is 3K words, the last 1K of low
          memory<br>
          > used for the character table for the vector graphics
          controller.<br>
          ><br>
          > The definitions for the table are compiled by<br>
          > <a moz-do-not-send="true"
            href="https://github.com/DoctorWkt/pdp7-unix/blob/master/src/cmd/cas.s"
            rel="noreferrer" target="_blank">https://github.com/DoctorWkt/pdp7-unix/blob/master/src/cmd/cas.s</a><br>
          > from definition file<br>
          > <a moz-do-not-send="true"
            href="https://github.com/DoctorWkt/pdp7-unix/blob/master/src/sys/cas.in"
            rel="noreferrer" target="_blank">https://github.com/DoctorWkt/pdp7-unix/blob/master/src/sys/cas.in</a><br>
          > (after, ISTR, figuring out the ordering of the listing
          pages!)<br>
          ><br>
          > I don't think we ever figured out how the initial
          character table<br>
          > is loaded into core.  One thing that was missing from the
          table<br>
          > was the dispatch array, which I recreated:<br>
          > <a moz-do-not-send="true"
href="https://github.com/DoctorWkt/pdp7-unix/blob/master/src/other/chrtbl.s"
            rel="noreferrer" target="_blank">https://github.com/DoctorWkt/pdp7-unix/blob/master/src/other/chrtbl.s</a><br>
          ><br>
          > The system (kernel) could be built for a "cold start",
          reloading the<br>
          > disk (prone to head crashes?) from paper tape? But I
          don't think<br>
          > anyone ever reconstructed the procedure for rebuilding a
          disk that way.<br>
          ><br>
          > The disk was two sided, and the running system only used
          one side:<br>
          > <a moz-do-not-send="true"
href="https://github.com/DoctorWkt/pdp7-unix/blob/master/src/cmd/dsksav.s"
            rel="noreferrer" target="_blank">https://github.com/DoctorWkt/pdp7-unix/blob/master/src/cmd/dsksav.s</a><br>
          > <a moz-do-not-send="true"
href="https://github.com/DoctorWkt/pdp7-unix/blob/master/src/cmd/dskres.s"
            rel="noreferrer" target="_blank">https://github.com/DoctorWkt/pdp7-unix/blob/master/src/cmd/dskres.s</a><br>
          > appear to be programs to save and restore the filesystem
          from the<br>
          > "other" side of the disk.<br>
          <br>
        </blockquote>
      </div>
    </blockquote>
    <br>
  </body>
</html>