From f93d447ba368a2d38f1d2030178a39588915fcc4 Mon Sep 17 00:00:00 2001 From: Willem Date: Mon, 1 Sep 2025 14:04:24 +0200 Subject: [PATCH] FC18: Moved FC_DEC2701_PX0 to end of cake --- .../org/x4o/fc18/cake2/FourCornerDotCake.java | 11 ++---- .../zero33/dec1/FCDotDEC2701DashPX0.java | 2 +- .../fc18/zion7/FourCornerZionStenoLexer.java | 16 +++++--- .../x4o/fc18/cake2/pie9/FCDotPIE9Test.java | 39 ++++++++++++++----- 4 files changed, 45 insertions(+), 23 deletions(-) diff --git a/nx01-x4o-fc18/src/main/java/org/x4o/fc18/cake2/FourCornerDotCake.java b/nx01-x4o-fc18/src/main/java/org/x4o/fc18/cake2/FourCornerDotCake.java index 3ad2ffc..341aa83 100644 --- a/nx01-x4o-fc18/src/main/java/org/x4o/fc18/cake2/FourCornerDotCake.java +++ b/nx01-x4o-fc18/src/main/java/org/x4o/fc18/cake2/FourCornerDotCake.java @@ -145,7 +145,8 @@ public enum FourCornerDotCake { // =========== Allow small terminators to take over 6 bit main frame computers FC_CDC1604_P6(0, 64, FCDotCDC1604DashP6.values(), "Character Dough Cake"), - FC_DEC2701_PX0(64, 27, FCDotDEC2701DashPX0.values(), "Direct or Escaped Control"), + __FREE_DEC(64, 27), + //FC_DEC2701_PX0(64, 27, FCDotDEC2701DashPX0.values(), "Direct or Escaped Control"), FC_LUA0127_P7A(91, 27, FCDotLUA0127DashP7A.values(), "Local Union Alphabet P7A"), FC_LUA0127_P7B(118, 27, FCDotLUA0127DashP7B.values(), "Local Union Alphabet P7B"), @@ -443,14 +444,10 @@ public enum FourCornerDotCake { /// Number signed 576 bit base 2 float FC_E503M72_BANK(0x03D8B8, 4096, "Number of 576 bit base 10 decimal octals"), - - __RESERVED_FREE(0x03E8B8, 0x3F000 - 0x03E8B8), - __RESERVED_ESC(0x03F000, 4096), - - // // 4096 - //FC_DEC2701_PX0 + __RESERVED_ESC(0x03F000, 4096 - 27), + FC_DEC2701_PX0(0x03FFE5, 27, FCDotDEC2701DashPX0.values(), "Direct or Escaped Control"), ; private static final FourCornerDotCake[] VALUES = values(); private final int start; diff --git a/nx01-x4o-fc18/src/main/java/org/x4o/fc18/cake2/zero33/dec1/FCDotDEC2701DashPX0.java b/nx01-x4o-fc18/src/main/java/org/x4o/fc18/cake2/zero33/dec1/FCDotDEC2701DashPX0.java index 0344169..7fbf29c 100644 --- a/nx01-x4o-fc18/src/main/java/org/x4o/fc18/cake2/zero33/dec1/FCDotDEC2701DashPX0.java +++ b/nx01-x4o-fc18/src/main/java/org/x4o/fc18/cake2/zero33/dec1/FCDotDEC2701DashPX0.java @@ -183,7 +183,7 @@ public enum FCDotDEC2701DashPX0 implements FourCornerX06BaklavaPointSequence, Fo @Override public List muffinPointSequence() { - return cakePointSequence(); + return baklavaPointSequence(); } @Override diff --git a/nx01-x4o-fc18/src/main/java/org/x4o/fc18/zion7/FourCornerZionStenoLexer.java b/nx01-x4o-fc18/src/main/java/org/x4o/fc18/zion7/FourCornerZionStenoLexer.java index 5dfa129..22a2797 100644 --- a/nx01-x4o-fc18/src/main/java/org/x4o/fc18/zion7/FourCornerZionStenoLexer.java +++ b/nx01-x4o-fc18/src/main/java/org/x4o/fc18/zion7/FourCornerZionStenoLexer.java @@ -53,6 +53,7 @@ public class FourCornerZionStenoLexer { private final boolean handlerEscape; private final FourCornerZion7Candlelier handler; private final FourCornerZion7TempleScrolls handlerTempleScrolls; + //private final short numberBank[] = new short[256]; // up to 9 bit values private final int numeratorBank[] = new int[48]; private final int denominatorBank[] = new int[numeratorBank.length]; private List input; @@ -77,9 +78,11 @@ public class FourCornerZionStenoLexer { continue; // can't handle reserved, we be reported as } if (FourCornerDotCake.FC_CDC1604_P6.equals(cakeSlice)) { + CAKE_SLICE_EATERS.add(new StenoScannerCDCDEC(cakeSlice)); continue; // handle CDC manually } if (FourCornerDotCake.FC_DEC2701_PX0.equals(cakeSlice)) { + CAKE_SLICE_EATERS.add(new StenoScannerCDCDEC(cakeSlice)); continue; // handle DEC manually } if (FourCornerDotCake.FC_XDBX0512_NS.equals(cakeSlice)) { @@ -121,12 +124,12 @@ public class FourCornerZionStenoLexer { if (cakeSlice.name().startsWith("FC_BA") && cakeSlice.name().endsWith("_SEL0")) { continue; // done by bank slices below } - if (cakeSlice.name().contains("BA2") && cakeSlice.name().contains("BANK")) { + if (cakeSlice.name().startsWith("FC_BA2") && cakeSlice.name().endsWith("_BANK")) { FourCornerDotCake cakeSliceSel = FourCornerDotCake.valueOf(cakeSlice.ordinal() - 1); CAKE_SLICE_EATERS.add(new StenoScannerNumberBase2(cakeSliceSel, cakeSlice, fremanBase2Itr.next())); continue; } - if (cakeSlice.name().contains("BA8") && cakeSlice.name().contains("BANK")) { + if (cakeSlice.name().startsWith("FC_BA8") && cakeSlice.name().endsWith("_BANK")) { FourCornerDotCake cakeSliceSel = FourCornerDotCake.valueOf(cakeSlice.ordinal() - 1); CAKE_SLICE_EATERS.add(new StenoScannerNumberBase8(cakeSliceSel, cakeSlice, fremanBase8Itr.next())); continue; @@ -137,7 +140,6 @@ public class FourCornerZionStenoLexer { } CAKE_SLICE_EATERS.add(new StenoScannerWordCakeSlice(cakeSlice)); } - CAKE_SLICE_EATERS.add(new StenoScannerCDCDEC()); CAKE_SLICE_EATERS.add(new StenoScannerSandWorm()); CAKE_SLICE_EATERS.add(new StenoScannerNumberNCR1632()); CAKE_SLICE_EATERS.add(new StenoScannerNumberDEC576()); @@ -655,10 +657,14 @@ public class FourCornerZionStenoLexer { static final class StenoScannerCDCDEC extends StenoScanner { - public StenoScannerCDCDEC() { - super(FourCornerDotCake.FC_CDC1604_P6.getStart(), FourCornerDotCake.FC_DEC2701_PX0.getStop()); + public StenoScannerCDCDEC(FourCornerDotCake cakeSlice) { + super(cakeSlice); } + //public StenoScannerCDCDEC() { + // super(FourCornerDotCake.FC_CDC1604_P6.getStart(), FourCornerDotCake.FC_DEC2701_PX0.getStop()); + //} + @Override public void process(FourCornerZionStenoLexer lexer, int idxFirst, int idxLast) { lexer.decModeReset(); diff --git a/nx01-x4o-fc18/src/test/java/org/x4o/fc18/cake2/pie9/FCDotPIE9Test.java b/nx01-x4o-fc18/src/test/java/org/x4o/fc18/cake2/pie9/FCDotPIE9Test.java index d82d10a..c0f7761 100644 --- a/nx01-x4o-fc18/src/test/java/org/x4o/fc18/cake2/pie9/FCDotPIE9Test.java +++ b/nx01-x4o-fc18/src/test/java/org/x4o/fc18/cake2/pie9/FCDotPIE9Test.java @@ -73,12 +73,14 @@ public class FCDotPIE9Test { @Test public void testUnusedKuTen1And2() throws Exception { // see: https://www.msx.org/wiki/KuTen_-_JIS_-_SJIS_Code_Conversion_Tables - String kuTenPage1 = "、。,.・:;?!゛゜´`¨" + "^ ̄_ヽヾゝゞ〃仝々〆〇ー―‐/" - + "\~∥|…‥‘’“”()〔〕[]" + "}〈〉《》「」『』【】+-±×" - + "÷=≠<>≦≧∞∴♂♀°′″℃¥" + "$¢£%#&*@§☆★○●◎◇"; - String kuTenPage2 = "◆□■△▲▽▼※〒→←↑↓〓" + "∈∋⊆⊇⊂⊃" - + "∪∩∧∨¬⇒⇔∀" + "∃∠⊥⌒∂" - + "∇≡≒≪≫√∽∝∵∫∬" + "ʼn♯♭♪†‡¶◯"; + String kuTenPage1 = ""+ + "、。,.・:;?!゛゜´`¨" + "^ ̄_ヽヾゝゞ〃仝々〆〇ー―‐/" + + "\~∥|…‥‘’“”()〔〕[]" + "}〈〉《》「」『』【】+-±×" + + "÷=≠<>≦≧∞∴♂♀°′″℃¥" + "$¢£%#&*@§☆★○●◎◇"; + String kuTenPage2 = ""+ + "◆□■△▲▽▼※〒→←↑↓〓" + "∈∋⊆⊇⊂⊃" + + "∪∩∧∨¬⇒⇔∀" + "∃∠⊥⌒∂" + + "∇≡≒≪≫√∽∝∵∫∬" + "ʼn♯♭♪†‡¶◯"; String kuTen = (kuTenPage1 + kuTenPage2).replaceAll("\t", "").replaceAll(" ", ""); int totalMissing = 0; PrimitiveIterator.OfInt charCheck = kuTen.codePoints().iterator(); @@ -95,10 +97,27 @@ public class FCDotPIE9Test { @Test public void testUnusedVGATempleOS() throws Exception { // see: https://github.com/rendello/templeos_font/blob/master/Convert/chars.txt - String vgaTOSChars = " !\"#$%&'()*+,-./" + "0123456789:;<=>?" + "@ABCDEFGHIJKLMNO" + "PQRSTUVWXYZ[\\]^_" + "`abcdefghijklmno" + "pqrstuvwxyz{|}~ " - + "çüéâäàȧ êëèïîìÄȦ" + "ÉæÆôöòûùÿÖÜ¢£¥ 𝑓" + "áíóú ¿ ½¼¡«»" + "░▒▓│┤╡╢╖╕╣║╗╝╜╛┐" + "└┴┬├─┼╞╟╚╔╩╦╠═╬╧" + "╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀" - + "αβΓπΣσμτΦθΩδ∞ ε " + "≡±≤≥ ÷≈ √ⁿ² " + "ВГЁЖЗИЙЛПУФЧШЪЫЭ" + "ЮЯбвгёжзийклмнпт" + "чшъыьэюя „”№ " + " ⅠⅡ↑↓⭰⭲ " - + "ДЦЩдф щ ij🔔 " + " ⅓ ¾ §¶ "; + String vgaTOSChars = ""+ + " !\"#$%&'()*+,-./"+ + "0123456789:;<=>?" + + "@ABCDEFGHIJKLMNO" + + "PQRSTUVWXYZ[\\]^_" + + "`abcdefghijklmno" + + "pqrstuvwxyz{|}~ " + + "çüéâäàȧ êëèïîìÄȦ" + + "ÉæÆôöòûùÿÖÜ¢£¥ 𝑓" + + "áíóú ¿ ½¼¡«»" + + "░▒▓│┤╡╢╖╕╣║╗╝╜╛┐" + + "└┴┬├─┼╞╟╚╔╩╦╠═╬╧" + + "╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀" + + "αβΓπΣσμτΦθΩδ∞ ε " + + "≡±≤≥ ÷≈ √ⁿ² " + + "ВГЁЖЗИЙЛПУФЧШЪЫЭ" + + "ЮЯбвгёжзийклмнпт" + + "чшъыьэюя „”№ " + + " ⅠⅡ↑↓⭰⭲ " + + "ДЦЩдф щ ij🔔 " + + " ⅓ ¾ §¶ "; int totalMissing = 0; PrimitiveIterator.OfInt charCheck = vgaTOSChars.codePoints().iterator(); while (charCheck.hasNext()) {