Skip to content

Page-format controls DECSCPP and DECSLPP are ignored #138

Description

@tomlm

vttest menu 11 → 2 → 3, "Page Format Tests", judges these itself — it fills the page and reports how much of what it asked for it got:

DECSCPP:  Screen should be filled (80 of 80 columns)     ok
          Screen should be filled (80 of 132 columns)    <-- asked 132, got 80

DECSLPP:  Screen should be filled (24 of 24 rows)        ok
          Screen should be filled (24 of 25 rows)        <-- asked 25, got 24
          Screen should be filled (24 of 36 rows)
          Screen should be filled (24 of 48 rows)

Confirmed from the raw stream that the requests are actually sent: DECSCPP requests: ['', '80', '80', '132', ''], and no DECCOLM anywhere in that test — so this is DECSCPP on its own, not the 132-column path that already works.

Cause

DECSCPP (CSI Ps $ |) has no entry in the CSI identifier table — grep '$|' over CommandExtensions.cs returns nothing, so the sequence is parsed and dropped.

DECSLPP (CSI Ps t, Ps ≥ 24) reaches the window-operation switch, which handles up to case 23 (pop titles) and has nothing above it. CSI 25 t therefore falls through silently.

Expected

Both set the page size, and the emulator already knows how to resize itself — SetColumnMode does exactly this for DECCOLM, gated on Allow80To132.

One difference is worth getting right rather than reusing DECCOLM wholesale: DECCOLM clears the screen and DECSCPP does not. They are different controls with different side effects, and vttest's page-format test fills the screen and then checks it, so a clear would be visible as a failure of a different kind.

CSI Ps t is shared between DECSLPP and the dtterm window operations, and Ps ≥ 24 is the split — worth a comment where the switch grows the case, since the overlap is the sort of thing that gets "tidied" later.

Reproduction

wsl vttest
11    # Non-VT100 tests
2     # VT320 features
3     # page-format controls
1     # DECSCPP   (or 2 for DECSLPP)

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