Support for line draw Graphic escape codes #182
Replies: 2 comments 1 reply
-
Bump |
Beta Was this translation helpful? Give feedback.
-
Its perhaps worth pointing out that the form of these line drawing control sequences isn't valid according to ECMA-48/ISO 6429/ANSI X3.64 and because of that it directly conflicts with the Cursor Backwards Tabulation (CBT) control sequence. It doesn't look like VT132 supports CBT right now, but it couldn't support both this and CBT without introducing some setting to switch between them which may be undesirable. The specific problem is that 'Z' is only allowed to appear at the end of the control sequence (its one of the so-called final characters which cover the ASCII range @ through ~). Because 'Z' is only allowed to appear at the end, the sequence "ESC[Z1;1;1;5;1Z" will be treated by most ANSI/VT-compatible terminals as the control sequence "ESC[Z" (which is equivalent to "ESC[1Z" - go back one tab if they support CBT, or do nothing if they don't) followed by some text to be output to the screen ("1;1;1;5;1Z"). |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
Could you add support for Geoff's graphic escape commands to VT-132 as described in this document?
https://geoffg.net/Downloads/Terminal/TerminalEscapeCodes.pdf
They are non-standard, but they shouldn't break anything. The Altair-Duino folks are writing BASIC programs and it would be nice if they would work on the VT-132.
If you do decide to implement it, please add the Graphics Patch 2022 from John Galt:
void cmd_Draw(void) {
// if(Display24Lines) {
// arg[2] = (arg[2]/3)*2;
// arg[4] = (arg[4]/3)*2;
// }
if(arg[0] == 1) DrawLine(arg[1], arg[2], arg[3], arg[4], 1);
if(arg[0] == 2) DrawBox(arg[1], arg[2], arg[3], arg[4], 0, 1);
if(arg[0] == 3) DrawBox(arg[1], arg[2], arg[3], arg[4], 1, 1);
if(arg[0] == 4) DrawCircle(arg[1], arg[2], arg[3], 0, 1, vga ? 1.14 : 1.0);
if(arg[0] == 5) DrawCircle(arg[1], arg[2], arg[3], 1, 1, vga ? 1.14 : 1.0);
if(arg[0] == 6) DrawLine(arg[1], arg[2], arg[3], arg[4], 0);
if(arg[0] == 7) DrawBox(arg[1], arg[2], arg[3], arg[4], 0, 0);
if(arg[0] == 8) DrawBox(arg[1], arg[2], arg[3], arg[4], 1, 0);
if(arg[0] == 9) DrawCircle(arg[1], arg[2], arg[3], 0, 0, vga ? 1.14 : 1.0);
if(arg[0] == 10) DrawCircle(arg[1], arg[2], arg[3], 1, 0, vga ? 1.14 : 1.0);
}
Beta Was this translation helpful? Give feedback.
All reactions