From 44c66c5154d849a4e10ed8c52cb645d88dbe940c Mon Sep 17 00:00:00 2001 From: Willem Date: Sun, 28 Sep 2025 16:33:29 +0200 Subject: [PATCH] FC18: Made the space num come in octal amount --- .../nx01/mushroom/mais/fc18/FCDocWriter.java | 11 ++- .../mais/fc18/kanji/KanjiDictTest.java | 1 - .../x4o/fc18/FourCornerUnicodeDisplay.java | 12 +-- .../org/x4o/fc18/FourCornerUnicodeImport.java | 10 ++- .../org/x4o/fc18/cake2/FourCornerDotCake.java | 8 +- ...1DashNL.java => FCDotF4TTY0008DashNL.java} | 13 ++- .../cake2/zero33/FCDotCDC1604DiceSaw.java | 8 ++ .../cake2/zero33/dec1/FCDotCMD5401Dash2D.java | 87 ------------------- .../zero33/dec1/FCDotDEC2701DashPX0.java | 4 +- .../fc18/zion7/FourCornerZion7Bereshit.java | 10 ++- .../zion7/FourCornerZionStenoGrapher.java | 14 +++ .../fc18/zion7/FourCornerZionStenoLexer.java | 60 ++++++++----- .../fc18/FourCornerUnicodeDisplayTest.java | 2 - .../x4o/fc18/FourCornerUnicodeImportTest.java | 2 +- .../org/x4o/fc18/zion7/StenoGrapherTest.java | 4 +- .../PrimordialOctalOrangeSexWordTest.java | 4 +- 16 files changed, 104 insertions(+), 146 deletions(-) rename nx01-x4o-fc18/src/main/java/org/x4o/fc18/cake2/flag4/{FCDotF4TTY0001DashNL.java => FCDotF4TTY0008DashNL.java} (87%) delete mode 100644 nx01-x4o-fc18/src/main/java/org/x4o/fc18/cake2/zero33/dec1/FCDotCMD5401Dash2D.java rename nx01-x4o-fc18/src/test/java/org/x4o/fc18/{ => zion7}/octal8/PrimordialOctalOrangeSexWordTest.java (95%) diff --git a/nx01-mushroom-mais-fc18/src/main/java/love/distributedrebirth/nx01/mushroom/mais/fc18/FCDocWriter.java b/nx01-mushroom-mais-fc18/src/main/java/love/distributedrebirth/nx01/mushroom/mais/fc18/FCDocWriter.java index fdf2459..971ce21 100644 --- a/nx01-mushroom-mais-fc18/src/main/java/love/distributedrebirth/nx01/mushroom/mais/fc18/FCDocWriter.java +++ b/nx01-mushroom-mais-fc18/src/main/java/love/distributedrebirth/nx01/mushroom/mais/fc18/FCDocWriter.java @@ -36,7 +36,6 @@ import org.x4o.fc18.cake2.FourCornerDotCakeTower; import org.x4o.fc18.cake2.FourCornerX00PetitVide; import org.x4o.fc18.cake2.FourCornerX18CakePointDotName; import org.x4o.fc18.cake2.FourCornerX21CodePointSequence; -import org.x4o.fc18.cake2.zero33.dec1.FCDotCMD5401Dash2D; import org.x4o.fc18.cake2.zero33.dec1.FCDotINC0801DashP8; import org.x4o.fc18.cake2.zero33.vt06.VTDash06DotZeroACursor; import org.x4o.fc18.cake2.zero33.vt06.VTDash06DotZeroCClear; @@ -221,11 +220,11 @@ public class FCDocWriter { wordNode.addNode(createNodeCakeWordEscape(vide, vide.name())); } } - if ("ESC68_CMD5401_2D".equals(wordNode.getName())) { - for (FCDotCMD5401Dash2D vide : FCDotCMD5401Dash2D.values()) { - wordNode.addNode(createNodeCakeWordEscape(vide, vide.name())); - } - } +// if ("ESC68_CMD5401_2D".equals(wordNode.getName())) { +// for (FCDotCMD5401Dash2D vide : FCDotCMD5401Dash2D.values()) { +// wordNode.addNode(createNodeCakeWordEscape(vide, vide.name())); +// } +// } if ("ESC_VT06".equals(wordNode.getName())) { for (VTDash06DotZeroACursor vide : VTDash06DotZeroACursor.values()) { wordNode.addNode(createNodeCakeWordEscape(vide, vide.name())); diff --git a/nx01-mushroom-mais-fc18/src/test/java/love/distributedrebirth/nx01/mushroom/mais/fc18/kanji/KanjiDictTest.java b/nx01-mushroom-mais-fc18/src/test/java/love/distributedrebirth/nx01/mushroom/mais/fc18/kanji/KanjiDictTest.java index eae9f51..b9d0b85 100644 --- a/nx01-mushroom-mais-fc18/src/test/java/love/distributedrebirth/nx01/mushroom/mais/fc18/kanji/KanjiDictTest.java +++ b/nx01-mushroom-mais-fc18/src/test/java/love/distributedrebirth/nx01/mushroom/mais/fc18/kanji/KanjiDictTest.java @@ -37,7 +37,6 @@ import org.x4o.fc18.FourCornerUnicodeDisplay; import org.x4o.fc18.FourCornerUnicodeImport; import org.x4o.fc18.FourCornerRecipe; import org.x4o.fc18.cake2.zero33.FCDotCDC1604DashP6; -import org.x4o.fc18.cake2.zero33.dec1.FCDotCMD5401Dash2D; import org.x4o.fc18.zion7.octal8.PrimordialOctalOrangeString; /** diff --git a/nx01-x4o-fc18/src/main/java/org/x4o/fc18/FourCornerUnicodeDisplay.java b/nx01-x4o-fc18/src/main/java/org/x4o/fc18/FourCornerUnicodeDisplay.java index 1ae5f59..059f46f 100644 --- a/nx01-x4o-fc18/src/main/java/org/x4o/fc18/FourCornerUnicodeDisplay.java +++ b/nx01-x4o-fc18/src/main/java/org/x4o/fc18/FourCornerUnicodeDisplay.java @@ -148,11 +148,6 @@ public class FourCornerUnicodeDisplay { if (FourCornerDotCake.FC_DEC2701_PX0.equals(slice)) { output.appendCodePoint(FCDotPIE9DDash09.IMG_ESC_DEC.codePointDotIndex()); } - // TODO: rm after file loadings - if (FourCornerDotCake.FC_F4TTY0001_NL.equals(slice)) { - output.appendCodePoint('\n'); - return true; - } return false; } @@ -256,6 +251,13 @@ public class FourCornerUnicodeDisplay { } } + @Override + public void strobeStructNunLine(PrimordialOctal count) { + for (int i = count.ordinal(); i >= 0; i--) { + output.appendCodePoint('\n'); + } + } + @Override public void strobeNumberBASE2Lego(FCFlameFremanLegoBase2 type, BigInteger value) { List numberCandy = new ArrayList<>(); diff --git a/nx01-x4o-fc18/src/main/java/org/x4o/fc18/FourCornerUnicodeImport.java b/nx01-x4o-fc18/src/main/java/org/x4o/fc18/FourCornerUnicodeImport.java index 237be2d..bbb5a5c 100644 --- a/nx01-x4o-fc18/src/main/java/org/x4o/fc18/FourCornerUnicodeImport.java +++ b/nx01-x4o-fc18/src/main/java/org/x4o/fc18/FourCornerUnicodeImport.java @@ -32,9 +32,9 @@ import java.util.function.IntConsumer; import org.x4o.fc18.cake2.FourCornerDotCake; import org.x4o.fc18.cake2.FourCornerX00PetitVide; -import org.x4o.fc18.cake2.flag4.FCDotF4TTY0001DashNL; +import org.x4o.fc18.cake2.flag4.FCDotF4TTY0008DashNL; import org.x4o.fc18.cake2.zero33.FCDotCDC1604DashP6; -import org.x4o.fc18.cake2.zero33.dec1.FCDotCMD5401Dash2D; +import org.x4o.fc18.cake2.zero33.FCDotCDC1604DiceSaw; import org.x4o.fc18.cake2.zero33.dec1.FCDotDEC2701DashPX0; /// Imports unicode as four corner BASIC text from the "FC.CDC1604-P6" code page. @@ -232,9 +232,11 @@ public class FourCornerUnicodeImport { private void sendTypeWriterNewLine(ImportState ctx) { ctx.reset(); if (ctx.sixBit) { - ctx.outAddAll(FCDotCMD5401Dash2D.CMD_F4TTY0001_NL.baklavaPointSequence()); + ctx.outAddAll(FCDotDEC2701DashPX0.ESC6_F4TTY0008_NL.baklavaPointSequence()); + ctx.outAdd(FCDotCDC1604DiceSaw.FACE_1NX.encodeOctal(0).baklavaPointDotIndex()); // zero = one nether line + ctx.outAdd(FCDotCDC1604DashP6.NS04_RAKA1_INTERROBANG.baklavaPointDotIndex()); } else { - ctx.outAddAll(FCDotF4TTY0001DashNL.NETHER_LINE.cakePointSequence()); + ctx.outAddAll(FCDotF4TTY0008DashNL.NETHER_LINE_1.cakePointSequence()); } } 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 782cc5d..e0c62d2 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 @@ -53,7 +53,7 @@ import org.x4o.fc18.cake2.clk1k.FCDotCLK1KDashW; import org.x4o.fc18.cake2.clk1k.FCDotCLK1KDashX; import org.x4o.fc18.cake2.clk1k.FCDotCLK1KDashY; import org.x4o.fc18.cake2.clk1k.FCDotCLK1KDashZ; -import org.x4o.fc18.cake2.flag4.FCDotF4TTY0001DashNL; +import org.x4o.fc18.cake2.flag4.FCDotF4TTY0008DashNL; import org.x4o.fc18.cake2.pie9c.FCDotPIE9CDash01; import org.x4o.fc18.cake2.pie9c.FCDotPIE9CDash02; import org.x4o.fc18.cake2.pie9c.FCDotPIE9CDash03; @@ -319,11 +319,11 @@ public enum FourCornerDotCake { // TODO: convert to single 4096 block for F4TTY0001; - /// Tele teXt Terminator zero one Nether Line - FC_F4TTY0001_NL(0x02A000, 1, FCDotF4TTY0001DashNL.values(), "Flag4 TTY00 zero one Nether Line"), + /// Tele teXt Terminator octal Nether Line + FC_F4TTY0008_NL(0x02A000, 8, FCDotF4TTY0008DashNL.values(), "Flag4 TTY00 octal Nether Line"), /// Reserved Flag4 Structures - __RESERVED_F4(0x02A001, 0x02C000 - 0x02A001, "Reserved for F4 structures"), + __RESERVED_F4(0x02A008, 0x02C000 - 0x02A008, "Reserved for F4 structures"), __F4_FREE(0x02C000, 0x02CC00 - 0x02C000), __RESERVED_XDBX(0x02CC00, 512, "free"), diff --git a/nx01-x4o-fc18/src/main/java/org/x4o/fc18/cake2/flag4/FCDotF4TTY0001DashNL.java b/nx01-x4o-fc18/src/main/java/org/x4o/fc18/cake2/flag4/FCDotF4TTY0008DashNL.java similarity index 87% rename from nx01-x4o-fc18/src/main/java/org/x4o/fc18/cake2/flag4/FCDotF4TTY0001DashNL.java rename to nx01-x4o-fc18/src/main/java/org/x4o/fc18/cake2/flag4/FCDotF4TTY0008DashNL.java index 279f93e..39bdd8b 100644 --- a/nx01-x4o-fc18/src/main/java/org/x4o/fc18/cake2/flag4/FCDotF4TTY0001DashNL.java +++ b/nx01-x4o-fc18/src/main/java/org/x4o/fc18/cake2/flag4/FCDotF4TTY0008DashNL.java @@ -31,13 +31,20 @@ import org.x4o.fc18.cake2.FourCornerDotColleFlag4; * @author Willem Cazander * @version 1.0 Jan 22, 2025 */ -public enum FCDotF4TTY0001DashNL implements FourCornerDotColleFlag4 { +public enum FCDotF4TTY0008DashNL implements FourCornerDotColleFlag4 { - NETHER_LINE, + NETHER_LINE_1, + NETHER_LINE_2, + NETHER_LINE_3, + NETHER_LINE_4, + NETHER_LINE_5, + NETHER_LINE_6, + NETHER_LINE_7, + NETHER_LINE_8, ; @Override public int cakePointDotIndex() { - return FourCornerDotCake.FC_F4TTY0001_NL.getStart() + ordinal(); + return FourCornerDotCake.FC_F4TTY0008_NL.getStart() + ordinal(); } } diff --git a/nx01-x4o-fc18/src/main/java/org/x4o/fc18/cake2/zero33/FCDotCDC1604DiceSaw.java b/nx01-x4o-fc18/src/main/java/org/x4o/fc18/cake2/zero33/FCDotCDC1604DiceSaw.java index 435d109..a2ea3eb 100644 --- a/nx01-x4o-fc18/src/main/java/org/x4o/fc18/cake2/zero33/FCDotCDC1604DiceSaw.java +++ b/nx01-x4o-fc18/src/main/java/org/x4o/fc18/cake2/zero33/FCDotCDC1604DiceSaw.java @@ -58,6 +58,10 @@ public enum FCDotCDC1604DiceSaw { return ordinal() >= FACE_4NY.ordinal(); } + public FCDotCDC1604DashP6 encodeOctalHigh(int value) { + return encodeOctal(value >> 9); + } + public FCDotCDC1604DashP6 encodeOctal(int value) { int octalIdx = (value >> shiftValue) & 0b111; if (octalIdx < 0) { @@ -73,6 +77,10 @@ public enum FCDotCDC1604DiceSaw { } } + public int decodeOctalHigh(int value, int cakePoint) { + return decodeOctal(value << 9, cakePoint); + } + public int decodeOctal(int value, int cakePoint) { if (offset.isNothingX()) { return value + ((cakePoint - offset.ordinal()) << shiftValue); diff --git a/nx01-x4o-fc18/src/main/java/org/x4o/fc18/cake2/zero33/dec1/FCDotCMD5401Dash2D.java b/nx01-x4o-fc18/src/main/java/org/x4o/fc18/cake2/zero33/dec1/FCDotCMD5401Dash2D.java deleted file mode 100644 index 12aa1d8..0000000 --- a/nx01-x4o-fc18/src/main/java/org/x4o/fc18/cake2/zero33/dec1/FCDotCMD5401Dash2D.java +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Copyright (c) 2004-2014, Willem Cazander - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, are permitted provided - * that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright notice, this list of conditions and the - * following disclaimer. - * * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and - * the following disclaimer in the documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL - * THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT - * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR - * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -package org.x4o.fc18.cake2.zero33.dec1; - -import java.util.ArrayList; -import java.util.List; -import java.util.Objects; - -import org.x4o.fc18.cake2.FourCornerX06BaklavaPointSequence; -import org.x4o.fc18.cake2.FourCornerX18CakePointDotName; -import org.x4o.fc18.cake2.FourCornerX18CakePointSequence; -import org.x4o.fc18.cake2.zero33.FCDotCDC1604DashP6; - -/** - * "FC.CMD5401-2D" Four Corner dot Command for 54 embedded control codes. - * - * @author Willem Cazander - * @version 1.0 Jan 21, 2025 - */ -public enum FCDotCMD5401Dash2D implements FourCornerX06BaklavaPointSequence, FourCornerX18CakePointSequence, FourCornerX18CakePointDotName { - - // Write out an basic spanish peace sign, a virtual none-excisting symbol. - //CMD_F4TXT0001_SP(FCDotCDC1604DashP6.NX01_A), - - /// Write out an nether line which goes to the line below, also called a line feed with automatic carriage return. - CMD_F4TTY0001_NL(FCDotCDC1604DashP6.NX01_A), - ; - private static final FCDotCMD5401Dash2D[] VALUES = values(); - private final FCDotCDC1604DashP6 selector; - - private FCDotCMD5401Dash2D(FCDotCDC1604DashP6 selector) { - this.selector = Objects.requireNonNull(selector); - if (selector.ordinal() <= FCDotCDC1604DashP6.NS09_SALT3_COMPARE_RIGHT.ordinal()) { - throw new IllegalArgumentException("Not used here to keep mind space free"); - } - } - - @Override - public List baklavaPointSequence() { - List result = new ArrayList<>(); - result.addAll(FCDotDEC2701DashPX0.ESC6_CMD5401_2D.baklavaPointSequence()); - result.add(selector.baklavaPointDotIndex()); - return result; - } - - @Override - public List cakePointSequence() { - return baklavaPointSequence(); - } - - static public FCDotCMD5401Dash2D valueOfCDC(int cdcPoint) { - for (FCDotCMD5401Dash2D value : values()) { - if (value.selector.baklavaPointDotIndex() == cdcPoint) { - return value; - } - } - return null; - } - - static public int valuesLength() { - return VALUES.length; - } - - static public FCDotCMD5401Dash2D valueOf(int idx) { - return VALUES[idx]; - } -} 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 b869213..92b3986 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 @@ -129,8 +129,8 @@ public enum FCDotDEC2701DashPX0 implements FourCornerX06BaklavaPointSequence, Fo // =========== Internal control sequences /// _ESC6_X3 _ESC6_X1 _ESC6_X1 = 19 - /// Command for type writer signals shortcuts. - ESC6_CMD5401_2D, + /// Flags four type writer octal nether lines + ESC6_F4TTY0008_NL, /// _ESC6_X3 _ESC6_X1 _ESC6_X2 = 20 __ESC_RESERVED_C2, diff --git a/nx01-x4o-fc18/src/main/java/org/x4o/fc18/zion7/FourCornerZion7Bereshit.java b/nx01-x4o-fc18/src/main/java/org/x4o/fc18/zion7/FourCornerZion7Bereshit.java index d7cb6a3..614fda1 100644 --- a/nx01-x4o-fc18/src/main/java/org/x4o/fc18/zion7/FourCornerZion7Bereshit.java +++ b/nx01-x4o-fc18/src/main/java/org/x4o/fc18/zion7/FourCornerZion7Bereshit.java @@ -32,6 +32,7 @@ import org.x4o.fc18.zion7.flame4.FCFlameFremanSignedBase2; import org.x4o.fc18.zion7.flame4.FCFlameNumberTaste; import org.x4o.fc18.zion7.flame4.FCFlameSalahSequence; import org.x4o.fc18.zion7.flame4.FCFlameWordDish; +import org.x4o.fc18.zion7.octal8.PrimordialOctal; /// Handles the basic four corner cake strobes. /// @@ -47,10 +48,11 @@ public interface FourCornerZion7Bereshit extends FourCornerZion7BaseVoid { /// An structural space pastor, as basic word separator feature. /// 100% is normal space, 400% is tab space, 0% is empty space, and odd number is no break space. + /// @param percentage Unsigned integer of 12 bit. (0-4096) void strobeStructSpacePastor(int percentage); - // An structural nun line, as basic document grouping feature. - //void strobeStructNunLine(); + /// An structural nun lines, as basic document grouping feature. + void strobeStructNunLine(PrimordialOctal count); /// An base2 computer lego number. void strobeNumberBASE2Lego(FCFlameFremanLegoBase2 type, BigInteger value); @@ -81,6 +83,10 @@ public interface FourCornerZion7Bereshit extends FourCornerZion7BaseVoid { default void strobeStructSpacePastor(int percentage) { } + @Override + default void strobeStructNunLine(PrimordialOctal count) { + } + @Override default void strobeNumberBASE2Lego(FCFlameFremanLegoBase2 type, BigInteger value) { } diff --git a/nx01-x4o-fc18/src/main/java/org/x4o/fc18/zion7/FourCornerZionStenoGrapher.java b/nx01-x4o-fc18/src/main/java/org/x4o/fc18/zion7/FourCornerZionStenoGrapher.java index eed94d7..36a57b6 100644 --- a/nx01-x4o-fc18/src/main/java/org/x4o/fc18/zion7/FourCornerZionStenoGrapher.java +++ b/nx01-x4o-fc18/src/main/java/org/x4o/fc18/zion7/FourCornerZionStenoGrapher.java @@ -335,6 +335,8 @@ public class FourCornerZionStenoGrapher { requireBigMax(requireBigPositive(BigInteger.valueOf(percentage)), BigInteger.valueOf(4096)); if (outTongue.isSixBit()) { outAddAll(FCDotDEC2701DashPX0.ESC6_VARSP_4K.baklavaPointSequence()); + // TODO: add part1 check and strip leading part1's + outAdd(FCDotCDC1604DiceSaw.FACE_4NY.encodeOctalHigh(percentage).baklavaPointDotIndex()); outAdd(FCDotCDC1604DiceSaw.FACE_3NX.encodeOctal(percentage).baklavaPointDotIndex()); outAdd(FCDotCDC1604DiceSaw.FACE_2NX.encodeOctal(percentage).baklavaPointDotIndex()); outAdd(FCDotCDC1604DiceSaw.FACE_1NX.encodeOctal(percentage).baklavaPointDotIndex()); @@ -345,6 +347,18 @@ public class FourCornerZionStenoGrapher { outFlush(); } + @Override + public void strobeStructNunLine(PrimordialOctal count) { + if (outTongue.isSixBit()) { + outAddAll(FCDotDEC2701DashPX0.ESC6_F4TTY0008_NL.baklavaPointSequence()); + outAdd(FCDotCDC1604DiceSaw.FACE_1NX.encodeOctal(count.ordinal()).baklavaPointDotIndex()); + outAdd(FCDotCDC1604DashP6.NS04_RAKA1_INTERROBANG.baklavaPointDotIndex()); + } else { + outAdd(FourCornerDotCake.FC_F4TTY0008_NL.getStart() + count.ordinal()); + } + outFlush(); + } + @Override public void strobeNumberBASE2Lego(FCFlameFremanLegoBase2 type, BigInteger value) { Objects.requireNonNull(type); 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 eb2e40e..f4f41e6 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 @@ -32,10 +32,8 @@ import java.util.Optional; import org.x4o.fc18.cake2.FourCornerDotCake; import org.x4o.fc18.cake2.FourCornerDotCakeTower; -import org.x4o.fc18.cake2.flag4.FCDotF4TTY0001DashNL; import org.x4o.fc18.cake2.zero33.FCDotCDC1604DashP6; import org.x4o.fc18.cake2.zero33.FCDotCDC1604DiceSaw; -import org.x4o.fc18.cake2.zero33.dec1.FCDotCMD5401Dash2D; import org.x4o.fc18.cake2.zero33.dec1.FCDotDEC2701DashPX0; import org.x4o.fc18.cake2.zero33.dec1.FCDotINC0801DashP8; import org.x4o.fc18.zion7.flame4.FCFlameFremanChocoBase8; @@ -96,6 +94,7 @@ public class FourCornerZionStenoLexer implements FourCornerZionStenoPetroglyphs CAKE_EATERS.add(new StenoScannerWordCakeSlice(FCFlameWordDish.KANJI_MEAT)); CAKE_EATERS.add(new StenoScannerWordCakeSlice(FCFlameWordDish.CLOCK_SAUCE)); CAKE_EATERS.add(new StenoScannerWordSpace()); + CAKE_EATERS.add(new StenoScannerNetherLine()); CAKE_EATERS.add(new StenoScannerSandWorm()); // fixme: convert to 4 freman loops Iterator fremanBase2LegoItr = Arrays.asList(FCFlameFremanLegoBase2.values()).iterator(); @@ -411,6 +410,20 @@ public class FourCornerZionStenoLexer implements FourCornerZionStenoPetroglyphs } } + static final class StenoScannerNetherLine extends StenoScanner { + + public StenoScannerNetherLine() { + super(FourCornerDotCake.FC_F4TTY0008_NL); + } + + @Override + public void process(FourCornerZionStenoLexer lexer, int idxFirst, int idxLast) { + for (int i = idxFirst; i <= idxLast; i++) { + lexer.handler.strobeStructNunLine(PrimordialOctalSound.valueOf(lexer.input.get(i) - blockStart)); + } + } + } + static final class StenoScannerNumberBase2Lego extends StenoScannerNumberBank { private final FCFlameFremanLegoBase2 numberFreman; @@ -777,8 +790,8 @@ public class FourCornerZionStenoLexer implements FourCornerZionStenoPetroglyphs if (FCDotDEC2701DashPX0.ESC6_VARSP_4K.equals(cdcDECMode)) { return handleSP4K(lexer); } - if (FCDotDEC2701DashPX0.ESC6_CMD5401_2D.equals(cdcDECMode)) { - return handleCMD(lexer); + if (FCDotDEC2701DashPX0.ESC6_F4TTY0008_NL.equals(cdcDECMode)) { + return handleTTY(lexer); } if (FCDotDEC2701DashPX0.ESC6_INC0801_P8.equals(cdcDECMode)) { return handleINC(lexer); @@ -815,31 +828,30 @@ public class FourCornerZionStenoLexer implements FourCornerZionStenoPetroglyphs return true; } - private boolean handleCMD(FourCornerZionStenoLexer lexer) { + private boolean handleTTY(FourCornerZionStenoLexer lexer) { int cdcPoint = lexer.input.get(lexer.cdcDECScanIndex); - FCDotCMD5401Dash2D cmdMode = FCDotCMD5401Dash2D.valueOfCDC(cdcPoint); - if (cmdMode == null) { + if (FCDotCDC1604DashP6.NS04_RAKA1_INTERROBANG.baklavaPointDotIndex() == cdcPoint) { + lexer.decModeReset(); + return true; + } + Optional diceOpt = FCDotCDC1604DiceSaw.valueOfCakePoint(cdcPoint); + if (diceOpt.isEmpty()) { + lexer.decModeReset(); + lexer.smokeSignals.burnControlCommandUnsupported(lexer.currLine, lexer.currCol, cdcPoint); + return false; // not handled thus print + } + FCDotCDC1604DiceSaw dice = diceOpt.get(); + if (!FCDotCDC1604DiceSaw.FACE_1NX.equals(dice)) { lexer.decModeReset(); lexer.smokeSignals.burnControlCommandUnsupported(lexer.currLine, lexer.currCol, cdcPoint); return false; } -// if (FCDotCMD5401Dash2D.CMD_F4TXT0001_SP.equals(cmdMode)) { -// lexer.decModeReset(); // TODO: delete CLK, this moves to own method. -// lexer.handler.strobeTheWord(FCFlameWordDish.CLOCK_SAUCE, FCDotF4TXT0001DashSP.SPANISH_PEACE.cakePointDotIndex()); // white space -// return true; -// } - if (FCDotCMD5401Dash2D.CMD_F4TTY0001_NL.equals(cmdMode)) { - lexer.decModeReset(); - lexer.currLine++; - lexer.currCol = 0; - lexer.fireSignals.fireStateLine(lexer.currLine); - // TODO: move to own method - lexer.handler.strobeTheWord(FCFlameWordDish.CLOCK_SAUCE, FCDotF4TTY0001DashNL.NETHER_LINE.cakePointDotIndex()); // new line - return true; - } - lexer.decModeReset(); - lexer.smokeSignals.burnControlCommandUnsupported(lexer.currLine, lexer.currCol, cdcPoint); - return false; + int value = dice.decodeOctal(0, cdcPoint); + lexer.currLine = lexer.currLine + value; + lexer.currCol = 0; + lexer.fireSignals.fireStateLine(lexer.currLine); + lexer.handler.strobeStructNunLine(PrimordialOctalSound.valueOf(value)); + return true; } private boolean handleSP4K(FourCornerZionStenoLexer lexer) { diff --git a/nx01-x4o-fc18/src/test/java/org/x4o/fc18/FourCornerUnicodeDisplayTest.java b/nx01-x4o-fc18/src/test/java/org/x4o/fc18/FourCornerUnicodeDisplayTest.java index b9f400c..9f42d65 100644 --- a/nx01-x4o-fc18/src/test/java/org/x4o/fc18/FourCornerUnicodeDisplayTest.java +++ b/nx01-x4o-fc18/src/test/java/org/x4o/fc18/FourCornerUnicodeDisplayTest.java @@ -28,11 +28,9 @@ import java.util.List; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.x4o.fc18.cake2.FourCornerX06BaklavaPointSequence; -import org.x4o.fc18.cake2.FourCornerX18CakePointSequence; import org.x4o.fc18.cake2.pie9c.FCDotPIE9CDash26; import org.x4o.fc18.cake2.pie9d.FCDotPIE9DDash10; import org.x4o.fc18.cake2.zero33.FCDotCDC1604DashP6; -import org.x4o.fc18.cake2.zero33.dec1.FCDotCMD5401Dash2D; import org.x4o.fc18.cake2.zero33.dec1.FCDotDEC2701DashPX0; import org.x4o.fc18.cake2.zero33.dec1.FCDotINC0801DashP8; diff --git a/nx01-x4o-fc18/src/test/java/org/x4o/fc18/FourCornerUnicodeImportTest.java b/nx01-x4o-fc18/src/test/java/org/x4o/fc18/FourCornerUnicodeImportTest.java index c73ea32..f8e9bb3 100644 --- a/nx01-x4o-fc18/src/test/java/org/x4o/fc18/FourCornerUnicodeImportTest.java +++ b/nx01-x4o-fc18/src/test/java/org/x4o/fc18/FourCornerUnicodeImportTest.java @@ -196,7 +196,7 @@ public class FourCornerUnicodeImportTest { Assertions.assertNotNull(cdc); Assertions.assertTrue(cdi.hasNext()); Assertions.assertFalse(cdc.isEmpty()); - Assertions.assertEquals(38, cdc.size()); + Assertions.assertEquals(46, cdc.size()); Assertions.assertEquals(FCDotCDC1604DashP6.NX01_A.ordinal(), cdi.next()); /* Assertions.assertEquals(FCDotCMD5401Dash2D.CMD_F4TTY0001_NL, cdi.next()); diff --git a/nx01-x4o-fc18/src/test/java/org/x4o/fc18/zion7/StenoGrapherTest.java b/nx01-x4o-fc18/src/test/java/org/x4o/fc18/zion7/StenoGrapherTest.java index 2490e44..8da31a0 100644 --- a/nx01-x4o-fc18/src/test/java/org/x4o/fc18/zion7/StenoGrapherTest.java +++ b/nx01-x4o-fc18/src/test/java/org/x4o/fc18/zion7/StenoGrapherTest.java @@ -35,7 +35,7 @@ import java.util.List; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.x4o.fc18.FourCornerUnicodeDisplay; -import org.x4o.fc18.cake2.flag4.FCDotF4TTY0001DashNL; +import org.x4o.fc18.cake2.flag4.FCDotF4TTY0008DashNL; import org.x4o.fc18.cake2.zero33.FCDotCDC1604DashP6; import org.x4o.fc18.zion7.flame4.FCFlameNumberTaste; import org.x4o.fc18.zion7.flame4.FCFlameWordDish; @@ -107,7 +107,7 @@ public class StenoGrapherTest { for (int x = 1; x <= 1025 /*_999999*/; x++) { BigInteger v = BigInteger.valueOf(x); writer.strobeNumberChocoPigRational(FCFlameNumberTaste.NUMBER_POSITIVE, FCFlameNumberTaste.NUMBER_POSITIVE, BigInteger.ONE, v); - writer.strobeTheWord(FCFlameWordDish.CLOCK_SAUCE, FCDotF4TTY0001DashNL.NETHER_LINE.cakePointDotIndex()); + writer.strobeTheWord(FCFlameWordDish.CLOCK_SAUCE, FCDotF4TTY0008DashNL.NETHER_LINE_1.cakePointDotIndex()); } writer.strobeDocumentOmega(); PrimordialOctalOrangeString str = PrimordialOctalOrangeString.ioSmurfReadListX18(outX18); diff --git a/nx01-x4o-fc18/src/test/java/org/x4o/fc18/octal8/PrimordialOctalOrangeSexWordTest.java b/nx01-x4o-fc18/src/test/java/org/x4o/fc18/zion7/octal8/PrimordialOctalOrangeSexWordTest.java similarity index 95% rename from nx01-x4o-fc18/src/test/java/org/x4o/fc18/octal8/PrimordialOctalOrangeSexWordTest.java rename to nx01-x4o-fc18/src/test/java/org/x4o/fc18/zion7/octal8/PrimordialOctalOrangeSexWordTest.java index e8a6a2f..b0a2673 100644 --- a/nx01-x4o-fc18/src/test/java/org/x4o/fc18/octal8/PrimordialOctalOrangeSexWordTest.java +++ b/nx01-x4o-fc18/src/test/java/org/x4o/fc18/zion7/octal8/PrimordialOctalOrangeSexWordTest.java @@ -20,12 +20,10 @@ * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -package org.x4o.fc18.octal8; +package org.x4o.fc18.zion7.octal8; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; -import org.x4o.fc18.zion7.octal8.PrimordialOctalOrangeSexWord; -import org.x4o.fc18.zion7.octal8.PrimordialOctalSound; /// Tests for smurf and hinari octal big indian sex words. ///