The system takes a leftover window down

Lunar Porter put a fuel gauge up and never took it away, so the shell came
back with FUEL across the top and the cursor underneath. Clearing did not
help: a window is a layer at a SCREEN position that does not scroll, which
is exactly what makes one left behind unpleasant - it sits over whatever
comes next and cannot be scrolled off, cleared away or typed past.

Taken away rather than given back, like the sprite table and for the same
reason: nothing the shell draws is a window, so there is nothing to
restore. And a program that FAULTED while one was up could not have taken
it down itself, which is why this belongs to the system rather than to
whichever programs remember.

The check for it needed writing twice, and the first version was the
familiar kind of wrong. It counted the gauge BAR's colour - and the bar
disappears on its own whatever happens, because it is drawn with a tile
the screen save puts back, so the check passed with the teardown deleted.
What actually survives is the LABEL, in font tiles the shell needs anyway.

So the screen is cleared afterwards and read cell by cell. With the window
down a cleared row is "> " and a cursor; with it up the same row is F, U,
E, L. Cells one and three being empty is the whole difference, and it is
29 and 22 pixels of it rather than a threshold somebody has to believe.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01E2JrLzFvuFX9fgi1LDRjrW
This commit is contained in:
Anachronaut
2026-09-03 00:50:42 -04:00
co-authored by Claude Opus 5
parent 2274be4b68
commit 6073086584
3 changed files with 60 additions and 0 deletions
+13
View File
@@ -5125,6 +5125,19 @@ screenSane:
OUTA 0x38 ; No fraction of a cell in either direction.
OUTA 0x3C ; And the screen everybody else's map is in.
; ---- And no window left over the shell ----
;
; A window is a layer at a screen position that does not scroll, which is exactly what makes
; one left behind so unpleasant: it sits over the top rows of whatever comes next and cannot
; be scrolled off, cleared away or typed past. Lunar Porter left its fuel gauge there and
; the shell came back with FUEL across the top of it and the cursor underneath.
;
; Taken away rather than given back, for the same reason the sprite table is: nothing the
; shell draws is a window, so there is nothing to restore - and a program that FAULTED while
; one was up could not have taken it down itself.
OUTA 0x3D ; No rows, which is no window.
OUTA 0x3E ; And nowhere for it to start, so the state is a known one.
; ---- Which of the two screens is being shown ----
;
; A program that draws into the back buffer and flips is showing screen one, and the shell