From 38bd307bf3e777425f37b1d1ddc64d39c40843d4 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Deuc=D0=B5?= <shurd@sasktel.net>
Date: Mon, 3 Mar 2025 19:20:44 -0500
Subject: [PATCH] Fix Mode7 APS handling

The code is 0x1C, not 0x1E, and it's row then column.
---
 src/conio/cterm.c | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/src/conio/cterm.c b/src/conio/cterm.c
index de66b06d39..76fb0d4d70 100644
--- a/src/conio/cterm.c
+++ b/src/conio/cterm.c
@@ -5740,10 +5740,10 @@ CIOLIBEXPORT size_t cterm_write(struct cterminal * cterm, const void *vbuf, int
 								}
 								cterm->sequence = 0;
 								break;
-							case 31:
+							case 28:
 								if (cterm->sequence < 3)
 									break;
-								gotoxy(cterm->escbuf[1] + 1, cterm->escbuf[2] + 1);
+								gotoxy((cterm->escbuf[2] - ' ') + 1, (cterm->escbuf[1] - ' ') + 1);
 								cterm->sequence = 0;
 								break;
 							default:
@@ -6435,18 +6435,18 @@ CIOLIBEXPORT size_t cterm_write(struct cterminal * cterm, const void *vbuf, int
 								prnpos = prn;
 								cterm->escbuf[cterm->sequence++] = ch[0];
 								break;
-							case 30: // APH (Active Position Home)
+							case 28: // APS (Active Position Set) Move to position X,Y
 								uctputs(cterm, prn);
 								prn[0]=0;
 								prnpos = prn;
-								gotoxy(CURR_MINX, CURR_MINY);
-								prestel_new_line(cterm);
+								cterm->escbuf[cterm->sequence++] = ch[0];
 								break;
-							case 31: // Move to position X,Y
+							case 30: // APH (Active Position Home)
 								uctputs(cterm, prn);
 								prn[0]=0;
 								prnpos = prn;
-								cterm->escbuf[cterm->sequence++] = ch[0];
+								gotoxy(CURR_MINX, CURR_MINY);
+								prestel_new_line(cterm);
 								break;
 							case 127: // Destructive backspace
 								*prnpos++ = '\b';
-- 
GitLab