<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>