Fixed offset of DEC pages and some other texts

This commit is contained in:
Willem Cazander 2025-01-14 01:30:02 +01:00
parent 1a314900ca
commit c5d497d2d1
2 changed files with 36 additions and 10 deletions

View file

@ -33,6 +33,10 @@ import org.x4o.o2o.fc18.FourCornerX18CakePoints;
/** /**
* "FC.DEC0127-PX0" Four Corner dot Direct or Escaped Control in grid of 1 by 27 of dashed CDC invisible page X Zero codes. * "FC.DEC0127-PX0" Four Corner dot Direct or Escaped Control in grid of 1 by 27 of dashed CDC invisible page X Zero codes.
* *
* A 6 bit computer always send 3 escapes to flag one of these escape control modes.
*
* A 8 or 18 bit computer used these escape cake points directly.
*
* NOTE: Only escapes starting with _ESC6_X3 are allowed to embed in a escape sequence. * NOTE: Only escapes starting with _ESC6_X3 are allowed to embed in a escape sequence.
* *
* @author Willem Cazander * @author Willem Cazander
@ -44,34 +48,46 @@ public enum FCDotDEC0127DashPX0 implements FourCornerX06BaklavaPoints, FourCorne
/// _ESC6_X1 _ESC6_X1 _ESC6_X1 /// _ESC6_X1 _ESC6_X1 _ESC6_X1
_ESC_USER_1, _ESC_USER_1,
/// _ESC6_X1 _ESC6_X1 _ESC6_X2 /// _ESC6_X1 _ESC6_X1 _ESC6_X2
_ESC_USER_2, _ESC_USER_2,
/// _ESC6_X1 _ESC6_X1 _ESC6_X3 /// _ESC6_X1 _ESC6_X1 _ESC6_X3
_ESC_USER_3, _ESC_USER_3,
/// _ESC6_X1 _ESC6_X2 _ESC6_X1 /// _ESC6_X1 _ESC6_X2 _ESC6_X1
_ESC_USER_4, _ESC_USER_4,
/// _ESC6_X1 _ESC6_X2 _ESC6_X2 /// _ESC6_X1 _ESC6_X2 _ESC6_X2
_ESC_USER_5, _ESC_USER_5,
/// _ESC6_X1 _ESC6_X2 _ESC6_X3 /// _ESC6_X1 _ESC6_X2 _ESC6_X3
/// Virtual Typewriter Six bit control support with argumented commands which MUST end with ESC_SEQ_SALAH. /// Virtual Typewriter Six bit control support with argumented commands which MUST end with ESC_SEQ_SALAH.
ESC_VT06, ESC_VT06,
/// _ESC6_X1 _ESC6_X3 _ESC6_X1 /// _ESC6_X1 _ESC6_X3 _ESC6_X1
__ESC_RESERVED_A7, __ESC_RESERVED_A7,
/// _ESC6_X1 _ESC6_X3 _ESC6_X2 /// _ESC6_X1 _ESC6_X3 _ESC6_X2
__ESC_RESERVED_A8, __ESC_RESERVED_A8,
/// _ESC6_X1 _ESC6_X3 _ESC6_X3 /// _ESC6_X1 _ESC6_X3 _ESC6_X3
__ESC_RESERVED_A9, __ESC_RESERVED_A9,
// =========== Internal escape sequence, mixes ending // =========== Internal escape sequence, with mixed endings
/// _ESC6_X2 _ESC6_X1 _ESC6_X1 /// _ESC6_X2 _ESC6_X1 _ESC6_X1
__ESC_RESERVED_B1, __ESC_RESERVED_B1,
/// _ESC6_X2 _ESC6_X1 _ESC6_X2 /// _ESC6_X2 _ESC6_X1 _ESC6_X2
__ESC_RESERVED_B2, __ESC_RESERVED_B2,
/// _ESC6_X2 _ESC6_X1 _ESC6_X3 /// _ESC6_X2 _ESC6_X1 _ESC6_X3
__ESC_RESERVED_B3, __ESC_RESERVED_B3,
/// _ESC6_X2 _ESC6_X2 _ESC6_X1 /// _ESC6_X2 _ESC6_X2 _ESC6_X1
__ESC_RESERVED_B4, __ESC_RESERVED_B4,
/// _ESC6_X2 _ESC6_X2 _ESC6_X2 /// _ESC6_X2 _ESC6_X2 _ESC6_X2
__ESC_RESERVED_B5, __ESC_RESERVED_B5,
@ -90,13 +106,16 @@ public enum FCDotDEC0127DashPX0 implements FourCornerX06BaklavaPoints, FourCorne
/// With an nether DB enabled text editor, it can render for example vector graphics in source like HolyC of TempleOS. /// With an nether DB enabled text editor, it can render for example vector graphics in source like HolyC of TempleOS.
/// The Número2 Lingua key is a sort of mime-type lookup, and later gets also definition structure and step code for type. /// The Número2 Lingua key is a sort of mime-type lookup, and later gets also definition structure and step code for type.
ESC_NETHER, ESC_NETHER,
/// _ESC6_X2 _ESC6_X3 _ESC6_X1 /// _ESC6_X2 _ESC6_X3 _ESC6_X1
/// End of argumented escape sequence prayer. /// End of argumented escape sequence prayer.
ESC_SEQ_SALAH, ESC_SEQ_SALAH,
/// _ESC6_X2 _ESC6_X3 _ESC6_X2 /// _ESC6_X2 _ESC6_X3 _ESC6_X2
/// Next argument separator for escape command sequences which MUST end with ESC_SEQ_SALAH. /// Next argument separator for escape command sequences which MUST end with ESC_SEQ_SALAH.
/// Only allowed cake points are 7-63 or from { to & 6 bit chars. /// Only allowed cake points are 7-63 or from { to & 6 bit chars.
ESC_SEQ_RAKA_AT, ESC_SEQ_RAKA_AT,
/// _ESC6_X2 _ESC6_X3 _ESC6_X3 /// _ESC6_X2 _ESC6_X3 _ESC6_X3
/// On 6/8 bit escape to 18 bit four corner cake points. /// On 6/8 bit escape to 18 bit four corner cake points.
/// Stream per six octals as CDC chars in NX01_A to NX08_H, and MUST end with ESC_SEQ_SALAH. /// Stream per six octals as CDC chars in NX01_A to NX08_H, and MUST end with ESC_SEQ_SALAH.
@ -106,29 +125,36 @@ public enum FCDotDEC0127DashPX0 implements FourCornerX06BaklavaPoints, FourCorne
/// _ESC6_X3 _ESC6_X1 _ESC6_X1 /// _ESC6_X3 _ESC6_X1 _ESC6_X1
ESC6_APL0127_P7A, ESC6_APL0127_P7A,
/// _ESC6_X3 _ESC6_X1 _ESC6_X2 /// _ESC6_X3 _ESC6_X1 _ESC6_X2
ESC6_APL0127_P7B, ESC6_APL0127_P7B,
/// _ESC6_X3 _ESC6_X1 _ESC6_X3 /// _ESC6_X3 _ESC6_X1 _ESC6_X3
ESC6_APL0127_P7C, ESC6_APL0127_P7C,
/// _ESC6_X3 _ESC6_X2 _ESC6_X1 /// _ESC6_X3 _ESC6_X2 _ESC6_X1
ESC6_BYD0127_P7D, ESC6_BYD0127_P7D,
/// _ESC6_X3 _ESC6_X2 _ESC6_X2 /// _ESC6_X3 _ESC6_X2 _ESC6_X2
ESC6_BYD0127_P7E, ESC6_BYD0127_P7E,
/// _ESC6_X3 _ESC6_X2 _ESC6_X3 /// _ESC6_X3 _ESC6_X2 _ESC6_X3
ESC6_BYD0127_P7F, ESC6_BYD0127_P7F,
/// _ESC6_X3 _ESC6_X3 _ESC6_X1 /// _ESC6_X3 _ESC6_X3 _ESC6_X1
/// Select packed pie terminator symbol on 6 and 8 bit systems. /// Select packed pie terminator symbol on 6 and 8 bit systems.
/// A = 1, first P6 is terminator select, than next P6 _A++ select pie part 1-27, until other P6 stops it. /// A = 1, first P6 is terminator select, than next P6 _A++ select pie part 1-27, until other P6 stops it.
/// Example ascii "012" is /// Example ascii "012" is
/// 012 = __PIE NX10_J NX01_A NX02_B NX02_C /// 012 = __PIE NX10_J NX01_A NX02_B NX02_C
ESC68_PIE, ESC68_PIE,
/// _ESC6_X3 _ESC6_X3 _ESC6_X2 /// _ESC6_X3 _ESC6_X3 _ESC6_X2
/// Select packed pie terminator number for 6 and 8 bit systems. /// Select packed pie terminator number for 6 and 8 bit systems.
/// First NXX P6 is terminator select, than next NXX P6 are values, until out of range. /// First NXX P6 is terminator select, than next NXX P6 are values, until out of range.
ESC68_NCR, ESC68_NCR,
/// _ESC6_X3 _ESC6_X3 _ESC6_X3 /// _ESC6_X3 _ESC6_X3 _ESC6_X3
/// An optional triple escape stops the open ended escape sequence. /// An optional triple escape stops the open ended escape sequence.
/// VT-100 Manual: "ESC also cancels any escape sequence".
ESC_STOP, ESC_STOP,
/* /*

View file

@ -274,7 +274,7 @@ public class FourCornerZionStenoLexer {
List<Integer> result = new ArrayList<>(); List<Integer> result = new ArrayList<>();
ScanResult status = safeReadCakePoints(input, FourCornerDotCake.FC_NCR1632_XD.getStart(), FourCornerDotCake.FC_NCR1632_XN.getStop(), result); ScanResult status = safeReadCakePoints(input, FourCornerDotCake.FC_NCR1632_XD.getStart(), FourCornerDotCake.FC_NCR1632_XN.getStop(), result);
if (!result.isEmpty()) { if (!result.isEmpty()) {
handlePoints(result); // mix of four blocks handlePoints(result); // mix of the two blocks
} }
return status; return status;
} }
@ -374,27 +374,27 @@ public class FourCornerZionStenoLexer {
} }
// Handle 8 and 18 bit direct cake points // Handle 8 and 18 bit direct cake points
if (FourCornerDotCake.FC_APL0127_P7A.contains(muffinPoint)) { if (FourCornerDotCake.FC_APL0127_P7A.contains(muffinPoint)) {
handler.strobeWords(FourCornerDotCake.FC_APL0127_P7A, List.of(muffinPoint)); handler.strobeWords(FourCornerDotCake.FC_APL0127_P7A, List.of(muffinPoint - FourCornerDotCake.FC_APL0127_P7A.getStart()));
continue; continue;
} }
if (FourCornerDotCake.FC_APL0127_P7B.contains(muffinPoint)) { if (FourCornerDotCake.FC_APL0127_P7B.contains(muffinPoint)) {
handler.strobeWords(FourCornerDotCake.FC_APL0127_P7B, List.of(muffinPoint)); handler.strobeWords(FourCornerDotCake.FC_APL0127_P7B, List.of(muffinPoint - FourCornerDotCake.FC_APL0127_P7B.getStart()));
continue; continue;
} }
if (FourCornerDotCake.FC_APL0127_P7C.contains(muffinPoint)) { if (FourCornerDotCake.FC_APL0127_P7C.contains(muffinPoint)) {
handler.strobeWords(FourCornerDotCake.FC_APL0127_P7C, List.of(muffinPoint)); handler.strobeWords(FourCornerDotCake.FC_APL0127_P7C, List.of(muffinPoint - FourCornerDotCake.FC_APL0127_P7C.getStart()));
continue; continue;
} }
if (FourCornerDotCake.FC_BYD0127_P7D.contains(muffinPoint)) { if (FourCornerDotCake.FC_BYD0127_P7D.contains(muffinPoint)) {
handler.strobeWords(FourCornerDotCake.FC_BYD0127_P7D, List.of(muffinPoint)); handler.strobeWords(FourCornerDotCake.FC_BYD0127_P7D, List.of(muffinPoint - FourCornerDotCake.FC_BYD0127_P7D.getStart()));
continue; continue;
} }
if (FourCornerDotCake.FC_BYD0127_P7E.contains(muffinPoint)) { if (FourCornerDotCake.FC_BYD0127_P7E.contains(muffinPoint)) {
handler.strobeWords(FourCornerDotCake.FC_BYD0127_P7E, List.of(muffinPoint)); handler.strobeWords(FourCornerDotCake.FC_BYD0127_P7E, List.of(muffinPoint - FourCornerDotCake.FC_BYD0127_P7E.getStart()));
continue; continue;
} }
if (FourCornerDotCake.FC_BYD0127_P7F.contains(muffinPoint)) { if (FourCornerDotCake.FC_BYD0127_P7F.contains(muffinPoint)) {
handler.strobeWords(FourCornerDotCake.FC_BYD0127_P7F, List.of(muffinPoint)); handler.strobeWords(FourCornerDotCake.FC_BYD0127_P7F, List.of(muffinPoint - FourCornerDotCake.FC_BYD0127_P7F.getStart()));
continue; continue;
} }
if (FourCornerDotCake.__MIND_THE_GAP.contains(muffinPoint)) { if (FourCornerDotCake.__MIND_THE_GAP.contains(muffinPoint)) {
@ -523,7 +523,7 @@ public class FourCornerZionStenoLexer {
return; return;
} }
if (decMode == FCDotDEC0127DashPX0.ESC_STOP) { if (decMode == FCDotDEC0127DashPX0.ESC_STOP) {
decMode = null; //decMode = null;
numberMode = null; // stop requested, print normal numberMode = null; // stop requested, print normal
} }
if (numberMode != null && (cdcPoint > numberMode)) { if (numberMode != null && (cdcPoint > numberMode)) {