Skip to main content

Module screen

Module screen 

Source
Expand description

What has the keyboard: the stack (the ROM’s top-level outer loop), an open command line, a halted program, or an application’s own loop (an input form, a choose box, a message box, the graphics screen), read from RAM without pressing a key; the display only where RAM gave no sign (wiki: hardware/ui-state).

The signals, observed on the 48SX (ROM J), 48GX (ROM R) and 49G (ROM 2.10 and 1.19-6) while the ROM waits for a key:

  • The RPL return stack (between the saved HeapStart and the saved B): its bottom entries are the system outer loop’s own frame; while the stack has the keyboard, the sixth entry from the top (under the key wait’s four entries and the calling loop’s own return into it) is that same outer-loop frame. Any other loop (a parameterized outer loop: forms, choose and message boxes, the graphics screen, INPUT, WAIT, the interactive stack; the 48’s equation writer) puts its own frame there. A halted program leaves its frames on the return stack with a new outer loop above them, so each halted program adds one more copy of the outer-loop frame.
  • The temporary environments (RPLMAN 13.1): input forms bind named temporaries (IF on the 48GX, IfMenu, CurrentField, … on the 49G), the 49G’s choose box binds NbElm and others.
  • The display: the stack display’s GROB pointer equals the PICT pointer while the graphics screen shows.
  • The 48GX’s choose and message boxes bind only unnamed temporaries, so they are told apart on the display: a framed box with a two-dot shadow, a choose box with a dark (inverted) row inside it.

Structs§

ReturnStack
The return stack as the ROM left it.
Screen
The uiState protocol answer.
ScreenLayout
Where a model’s ROM keeps what the screen state is read from (wiki: hardware/ui-state). The *_ptr fields hold 5-nibble pointers.

Enums§

Kind
What has the keyboard.
Source
Where a Screen::kind came from.

Functions§

framed_box
A framed box with a two-dot shadow on the display (the 48GX’s and the 49G’s message and choose boxes): Some(true) when a row inside it is dark (a choose box’s highlighted item or title rule), Some(false) without, None when there is no such box.
innermost_names
The names of the temporaries bound in the newest environments, down to and including the first that binds SavedUI (the parameterized outer loop’s saved state: what the innermost loop bound); only the newest environment when none does. Names lose a leading '.
read
Read the screen state through the layouts, with pixels the display for the boxes RAM does not name.
screen
The screen state of machine (48SX, 48GX, 49G).