diff --git a/nx01-x4o-o2o/src/main/java/org/x4o/o2o/fc18/zero33/FCDotDEC0127DashPX0.java b/nx01-x4o-o2o/src/main/java/org/x4o/o2o/fc18/zero33/FCDotDEC0127DashPX0.java index 388c8c1..6ecfecb 100644 --- a/nx01-x4o-o2o/src/main/java/org/x4o/o2o/fc18/zero33/FCDotDEC0127DashPX0.java +++ b/nx01-x4o-o2o/src/main/java/org/x4o/o2o/fc18/zero33/FCDotDEC0127DashPX0.java @@ -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. * + * 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. * * @author Willem Cazander @@ -44,34 +48,46 @@ public enum FCDotDEC0127DashPX0 implements FourCornerX06BaklavaPoints, FourCorne /// _ESC6_X1 _ESC6_X1 _ESC6_X1 _ESC_USER_1, + /// _ESC6_X1 _ESC6_X1 _ESC6_X2 _ESC_USER_2, + /// _ESC6_X1 _ESC6_X1 _ESC6_X3 _ESC_USER_3, + /// _ESC6_X1 _ESC6_X2 _ESC6_X1 _ESC_USER_4, + /// _ESC6_X1 _ESC6_X2 _ESC6_X2 _ESC_USER_5, + /// _ESC6_X1 _ESC6_X2 _ESC6_X3 /// Virtual Typewriter Six bit control support with argumented commands which MUST end with ESC_SEQ_SALAH. ESC_VT06, + /// _ESC6_X1 _ESC6_X3 _ESC6_X1 __ESC_RESERVED_A7, + /// _ESC6_X1 _ESC6_X3 _ESC6_X2 __ESC_RESERVED_A8, + /// _ESC6_X1 _ESC6_X3 _ESC6_X3 __ESC_RESERVED_A9, - // =========== Internal escape sequence, mixes ending + // =========== Internal escape sequence, with mixed endings /// _ESC6_X2 _ESC6_X1 _ESC6_X1 __ESC_RESERVED_B1, + /// _ESC6_X2 _ESC6_X1 _ESC6_X2 __ESC_RESERVED_B2, + /// _ESC6_X2 _ESC6_X1 _ESC6_X3 __ESC_RESERVED_B3, + /// _ESC6_X2 _ESC6_X2 _ESC6_X1 __ESC_RESERVED_B4, + /// _ESC6_X2 _ESC6_X2 _ESC6_X2 __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. /// 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, + /// _ESC6_X2 _ESC6_X3 _ESC6_X1 /// End of argumented escape sequence prayer. ESC_SEQ_SALAH, + /// _ESC6_X2 _ESC6_X3 _ESC6_X2 /// 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. ESC_SEQ_RAKA_AT, + /// _ESC6_X2 _ESC6_X3 _ESC6_X3 /// 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. @@ -106,29 +125,36 @@ public enum FCDotDEC0127DashPX0 implements FourCornerX06BaklavaPoints, FourCorne /// _ESC6_X3 _ESC6_X1 _ESC6_X1 ESC6_APL0127_P7A, + /// _ESC6_X3 _ESC6_X1 _ESC6_X2 ESC6_APL0127_P7B, + /// _ESC6_X3 _ESC6_X1 _ESC6_X3 ESC6_APL0127_P7C, + /// _ESC6_X3 _ESC6_X2 _ESC6_X1 ESC6_BYD0127_P7D, + /// _ESC6_X3 _ESC6_X2 _ESC6_X2 ESC6_BYD0127_P7E, + /// _ESC6_X3 _ESC6_X2 _ESC6_X3 ESC6_BYD0127_P7F, + /// _ESC6_X3 _ESC6_X3 _ESC6_X1 /// 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. /// Example ascii "012" is /// 012 = __PIE NX10_J NX01_A NX02_B NX02_C ESC68_PIE, + /// _ESC6_X3 _ESC6_X3 _ESC6_X2 /// 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. ESC68_NCR, + /// _ESC6_X3 _ESC6_X3 _ESC6_X3 /// An optional triple escape stops the open ended escape sequence. - /// VT-100 Manual: "ESC also cancels any escape sequence". ESC_STOP, /* diff --git a/nx01-x4o-o2o/src/main/java/org/x4o/o2o/fc18/zion7/FourCornerZionStenoLexer.java b/nx01-x4o-o2o/src/main/java/org/x4o/o2o/fc18/zion7/FourCornerZionStenoLexer.java index b06f097..fa94b3f 100644 --- a/nx01-x4o-o2o/src/main/java/org/x4o/o2o/fc18/zion7/FourCornerZionStenoLexer.java +++ b/nx01-x4o-o2o/src/main/java/org/x4o/o2o/fc18/zion7/FourCornerZionStenoLexer.java @@ -274,7 +274,7 @@ public class FourCornerZionStenoLexer { List result = new ArrayList<>(); ScanResult status = safeReadCakePoints(input, FourCornerDotCake.FC_NCR1632_XD.getStart(), FourCornerDotCake.FC_NCR1632_XN.getStop(), result); if (!result.isEmpty()) { - handlePoints(result); // mix of four blocks + handlePoints(result); // mix of the two blocks } return status; } @@ -374,27 +374,27 @@ public class FourCornerZionStenoLexer { } // Handle 8 and 18 bit direct cake points 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; } 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; } 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; } 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; } 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; } 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; } if (FourCornerDotCake.__MIND_THE_GAP.contains(muffinPoint)) { @@ -523,7 +523,7 @@ public class FourCornerZionStenoLexer { return; } if (decMode == FCDotDEC0127DashPX0.ESC_STOP) { - decMode = null; + //decMode = null; numberMode = null; // stop requested, print normal } if (numberMode != null && (cdcPoint > numberMode)) {