Skip to content

TENEX now boots to interactive EXEC (@): root causes of the 2022 hangs + working emulator combination #1

Description

@ajfa

Good news: with three emulator-side fixes, the install now runs all the way to a fully interactive EXEC — banner, date prompt, @, DIR/DAYTIME/SYSTAT, ENABLE, SSAVE of <SYSTEM>EXEC.SAV, and DLUSER completing with its usual "CAN'T CREATE USER ... CONTINUING" chatter. Transcript tail:

TENEX IN OPERATION
NO EXEC
.INIT BIT TABLE.
READ BADSPOTS FROM FILE: TTY: [Confirm] ^Z
.GET FILE DTA0:EXEC.SAV [Confirm]
.START.
 SUMEX-AIM Tenex 1.31.82, SUMEX-AIM EXEC 1.51
 ENTER DATE AND TIME AS MM/DD/YY HH:MM -- 08/01/76 08:00
@DIR
   <SYSTEM>
 DIRECTORY.;1 / DSKBTTBL.;1 / EXEC.SAV;1 / INDEX.;1 / JOBPMF.;...
@SYSTAT
 UP 0:20:27  ONE JOB

What was blocking it

  1. The post-restart hang ("TENEX RESTARTING, WAIT... NO CHECKDSK" then silence forever): fork 0 blocks in the SKIPE TTOCT(line) wait for DC10 scanner line 0's output queue to drain — TTMSG sends "TENEX IN OPERATION" to all TTYs. The emulator's kx10_dc.c only consumes output when a TCP client is connected to the line, so with nobody attached the queue never drains. Workaround: keep a TCP client connected to the DC port (12345) throughout the boot — the instant it connects, the system unwedges. Reported with a suggested device fix at rcornwell/sims (kx10_dc should complete transmission on unconnected lines, as real hardware does).

  2. GET FILE DTA0:EXEC.SAV crashing into a tight loop at absolute 45: the branch point of lars/tenex-patches predates Richard's upstream fixes for KI10 second-instruction interrupt dispatch. When the channel-2 vector's CONSZ does not skip, the emulator executed the "second instruction" from absolute 45 instead of EPT+45 (EB=050000). Cherry-picking upstream 62805b8 ("Fixed second instruction interrupt address") and 047beb0 ("Fix second interrupt instruction") on top of lars/tenex-patches + lars/dt fixes it.

  3. Minor: current rcornwell/sims HEAD additionally SIGFPEs in kx10_tym.c (room() divides by a ring size read from uninitialized guest memory) with the stock hardware.do's set tym enabled — also reported upstream. Workaround: set tym disabled.

Working combination

  • Emulator: larsbrinkhoff/ka10-simh branch lars/tenex-patches + cherry-picks 5e8c0b9 (lars/dt), 62805b8, 047beb0 (upstream sims).
  • Media regenerated with the repo's install/media.sh (tendmp round-trips byte-identical, so the tooling is fine).
  • Install dialogue exactly as in simh/syslod.do, plus a socket client parked on the DC port.
  • One timing note: mini-exec GET FILE DTA0:EXEC.SAV takes ~4 minutes of realistic DECtape crawl; typing ahead during it can wedge things, so scripts should wait for the next . prompt before sending S.

The SYSGO$G reboot ("INTERRUPT AT 0") and MINI-DUMPER issues from the README are still there, and the sporadic *DISK ERROR: reports (error counter words show they're mostly recoverable retries; the non-rec ones cluster around the Tymnet-base code paths touching drives 4/5) are unchanged — but a fresh SYSLOD install now reliably reaches a usable TENEX in ~10 minutes of wall clock.

Thanks for rescuing this system — happy to share the scripted install (SIMH expect-driven, lands at @ unattended) if useful.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions