From 9d629be747c22113f8db844b6f9157f655a523c4 Mon Sep 17 00:00:00 2001 From: Dennis Ranke Date: Sat, 28 Jan 2023 10:58:28 +0100 Subject: [PATCH] fix control codes 4-6 as parameters to other control codes --- platform/bin/platform.uw8 | Bin 3887 -> 3892 bytes platform/src/platform.cwa | 20 ++++++++++---------- test/text_modes.cwa | 13 +++++++++++++ 3 files changed, 23 insertions(+), 10 deletions(-) create mode 100644 test/text_modes.cwa diff --git a/platform/bin/platform.uw8 b/platform/bin/platform.uw8 index 444038bbb98851718bbc68115748d9e020634ca0..2425d513c13e60795216e9ef3226b268e9486756 100644 GIT binary patch literal 3892 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 C>cf8k literal 3887 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 diff --git a/platform/src/platform.cwa b/platform/src/platform.cwa index b8e7789..c6e37fd 100644 --- a/platform/src/platform.cwa +++ b/platform/src/platform.cwa @@ -372,16 +372,7 @@ export fn printChar(char: i32) { global mut controlCodeLength = 0; fn printSingleChar(char: i32) { - if char >= 4 & char <= 6 { - outputChannel = char - 4; - if !outputChannel { - textCursorX = 0; - textCursorY = 0; - } - return; - } - - if outputChannel >= 2 { + if outputChannel >= 2 & (char < 4 | char > 6) { logChar(char); return; } @@ -399,6 +390,15 @@ fn printSingleChar(char: i32) { return; } + if char >= 4 & char <= 6 { + outputChannel = char - 4; + if !outputChannel { + textCursorX = 0; + textCursorY = 0; + } + return; + } + if char == 7 { 80?0 = 80?0 ^ 2; return; diff --git a/test/text_modes.cwa b/test/text_modes.cwa new file mode 100644 index 0000000..68f9c64 --- /dev/null +++ b/test/text_modes.cwa @@ -0,0 +1,13 @@ +include "../examples/include/microw8-api.cwa" + +export fn upd() { + printString(USER_MEM); +} + +data USER_MEM { + i8(12, 31, 5, 6) "Text mode" + i8(5, 31, 4, 5) "Graphics mode" + i8(6) "Console output\nSecond line\n" + i8(4, 31, 4, 12) "Back to text mode" + i8(0) +}