Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Complete the 8-bit interface architecture #16547

Merged

Conversation

j4james
Copy link
Collaborator

@j4james j4james commented Jan 9, 2024

Summary of the Pull Request

This PR adds support for the missing operations that are required in the
8-bit interface architecture extension.

DECAUPSS - Assign User-Preference Supplemental Set
DECRQUPSS - Request User-Preference Supplemental Set
ACS - Announce Code Structure for ANSI levels 1, 2, and 3

Detailed Description of the Pull Request / Additional comments

For the UPSS assignment there's a new wstring_view in TerminalOutput
that tracks the current mapping table for the character set, and a new
VTID field tracking the ID so it can be queried. The ANSI conformance
just required a couple of calls to existing methods to designate the
appropriate character sets and GL/GR maps.

And now that we've implemented everything that's required, I've updated
our device attributes report (DA1) to indicate support for the 8-bit
interface architecture (feature 14).

This PR also addresses some issues with the way the 8-bit GR capability
is managed. Previously a soft reset (DECSTR) would return the code
page to its startup state, and the restore cursor operation (DECRC)
could have a similar effect. This was a problem for 8-bit apps that
weren't expecting that behavior.

I've now made it so those operations no longer have any effect on the
code page, and the same applies to the C1 parsing option (DECAC1). The
only way to restore the code page and C1 parsing to their startup state
now is with a hard reset (RIS).

Validation Steps Performed

I've added unit tests covering the DECAUPSS and DECRQUPSS sequences,
and I've also manually tested their behavior in Vttest.

PR Checklist

@microsoft-github-policy-service microsoft-github-policy-service bot added the Issue-Feature Complex enough to require an in depth planning process and actual budgeted, scheduled work. label Jan 9, 2024
@microsoft-github-policy-service microsoft-github-policy-service bot added Area-VT Virtual Terminal sequence support Product-Conhost For issues in the Console codebase labels Jan 12, 2024
@j4james j4james marked this pull request as ready for review January 13, 2024 21:17
Copy link
Member

@lhecker lhecker left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Neat!

@lhecker lhecker added the AutoMerge Marked for automatic merge by the bot when requirements are met label Feb 21, 2024
@microsoft-github-policy-service microsoft-github-policy-service bot merged commit 9654fc6 into microsoft:main Feb 21, 2024
15 checks passed
@DHowett
Copy link
Member

DHowett commented Feb 24, 2024

Thanks so much for this! Sorry I missed this one 😄

@j4james j4james deleted the feature-8bit-ia branch May 20, 2024 23:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Area-VT Virtual Terminal sequence support AutoMerge Marked for automatic merge by the bot when requirements are met Issue-Feature Complex enough to require an in depth planning process and actual budgeted, scheduled work. Product-Conhost For issues in the Console codebase
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Complete the 8-bit interface architecture
4 participants