Alternate screen size support.

This is a relatively big new feature, which introduces small breaking changes
to the API:

 * NegotiateTelnet() now returns (DevInfo, error) instead of just error.  The
   function signature for the Tx type now has one additional DevInfo parameter.
 * RunTransactions() requires one additional parameter, the DevInfo (which is
   allowed to be nil).

Otherwise, existing behavior continues to work as-is and everything still
defaults to operating on the default 24x80 terminal size.

See example5 for a larger-terminal-aware application.

Pending some time to make sure no new bugs cropped up in this release and that
the alternate screen size support works in the wild, I anticipate this will
become the v1.0.0 release of go3270.
This commit is contained in:
Matthew R. Wilson committed 2025-06-29 12:58:18 -07:00
1 parent 3a38ce6e4a
commit b6fa48f37f
19 files changed
+820 -126

No files matched your search

+14 -2
View File
@@ -9,15 +9,21 @@ import (
)
func TestEncode(t *testing.T) {
encoded := getpos(0, 0)
encoded := getpos(0, 0, 80)
if encoded[0] != 0x40 || encoded[1] != 0x40 {
t.Error("Position (0, 0) not correctly encoded")
}
encoded = getpos(11, 39)
encoded = getpos(11, 39, 80)
if encoded[0] != 0x4e || encoded[1] != 0xd7 {
t.Error("Position (11, 39) not correctly encoded")
}
// Large screen, 14-bit addressing
encoded = getpos(100, 120, 130)
if encoded[0] != 0x33 || encoded[1] != 0x40 {
t.Errorf("Position (100, 120) on 130-col screen not correctly encoded")
}
}
func TestDecode(t *testing.T) {
@@ -30,4 +36,10 @@ func TestDecode(t *testing.T) {
if decoded != 919 {
t.Error("Buffer address incorrectly decoded")
}
// Large screen, 14-bit addressing
decoded = decodeBufAddr([2]byte{0x33, 0x40})
if decoded != 13120 {
t.Error("14-bit buffer address incorrectly decoded")
}
}