FC18: Made the space num come in octal amount

This commit is contained in:
Willem Cazander 2025-09-28 16:33:29 +02:00
parent 1217d835a3
commit 44c66c5154
16 changed files with 104 additions and 146 deletions

View file

@ -36,7 +36,6 @@ import org.x4o.fc18.cake2.FourCornerDotCakeTower;
import org.x4o.fc18.cake2.FourCornerX00PetitVide; import org.x4o.fc18.cake2.FourCornerX00PetitVide;
import org.x4o.fc18.cake2.FourCornerX18CakePointDotName; import org.x4o.fc18.cake2.FourCornerX18CakePointDotName;
import org.x4o.fc18.cake2.FourCornerX21CodePointSequence; 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.dec1.FCDotINC0801DashP8;
import org.x4o.fc18.cake2.zero33.vt06.VTDash06DotZeroACursor; import org.x4o.fc18.cake2.zero33.vt06.VTDash06DotZeroACursor;
import org.x4o.fc18.cake2.zero33.vt06.VTDash06DotZeroCClear; import org.x4o.fc18.cake2.zero33.vt06.VTDash06DotZeroCClear;
@ -221,11 +220,11 @@ public class FCDocWriter {
wordNode.addNode(createNodeCakeWordEscape(vide, vide.name())); wordNode.addNode(createNodeCakeWordEscape(vide, vide.name()));
} }
} }
if ("ESC68_CMD5401_2D".equals(wordNode.getName())) { // if ("ESC68_CMD5401_2D".equals(wordNode.getName())) {
for (FCDotCMD5401Dash2D vide : FCDotCMD5401Dash2D.values()) { // for (FCDotCMD5401Dash2D vide : FCDotCMD5401Dash2D.values()) {
wordNode.addNode(createNodeCakeWordEscape(vide, vide.name())); // wordNode.addNode(createNodeCakeWordEscape(vide, vide.name()));
} // }
} // }
if ("ESC_VT06".equals(wordNode.getName())) { if ("ESC_VT06".equals(wordNode.getName())) {
for (VTDash06DotZeroACursor vide : VTDash06DotZeroACursor.values()) { for (VTDash06DotZeroACursor vide : VTDash06DotZeroACursor.values()) {
wordNode.addNode(createNodeCakeWordEscape(vide, vide.name())); wordNode.addNode(createNodeCakeWordEscape(vide, vide.name()));

View file

@ -37,7 +37,6 @@ import org.x4o.fc18.FourCornerUnicodeDisplay;
import org.x4o.fc18.FourCornerUnicodeImport; import org.x4o.fc18.FourCornerUnicodeImport;
import org.x4o.fc18.FourCornerRecipe; import org.x4o.fc18.FourCornerRecipe;
import org.x4o.fc18.cake2.zero33.FCDotCDC1604DashP6; import org.x4o.fc18.cake2.zero33.FCDotCDC1604DashP6;
import org.x4o.fc18.cake2.zero33.dec1.FCDotCMD5401Dash2D;
import org.x4o.fc18.zion7.octal8.PrimordialOctalOrangeString; import org.x4o.fc18.zion7.octal8.PrimordialOctalOrangeString;
/** /**

View file

@ -148,11 +148,6 @@ public class FourCornerUnicodeDisplay {
if (FourCornerDotCake.FC_DEC2701_PX0.equals(slice)) { if (FourCornerDotCake.FC_DEC2701_PX0.equals(slice)) {
output.appendCodePoint(FCDotPIE9DDash09.IMG_ESC_DEC.codePointDotIndex()); 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; 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 @Override
public void strobeNumberBASE2Lego(FCFlameFremanLegoBase2 type, BigInteger value) { public void strobeNumberBASE2Lego(FCFlameFremanLegoBase2 type, BigInteger value) {
List<Integer> numberCandy = new ArrayList<>(); List<Integer> numberCandy = new ArrayList<>();

View file

@ -32,9 +32,9 @@ import java.util.function.IntConsumer;
import org.x4o.fc18.cake2.FourCornerDotCake; import org.x4o.fc18.cake2.FourCornerDotCake;
import org.x4o.fc18.cake2.FourCornerX00PetitVide; 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.FCDotCDC1604DashP6;
import org.x4o.fc18.cake2.zero33.dec1.FCDotCMD5401Dash2D; import org.x4o.fc18.cake2.zero33.FCDotCDC1604DiceSaw;
import org.x4o.fc18.cake2.zero33.dec1.FCDotDEC2701DashPX0; import org.x4o.fc18.cake2.zero33.dec1.FCDotDEC2701DashPX0;
/// Imports unicode as four corner BASIC text from the "FC.CDC1604-P6" code page. /// 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) { private void sendTypeWriterNewLine(ImportState ctx) {
ctx.reset(); ctx.reset();
if (ctx.sixBit) { 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 { } else {
ctx.outAddAll(FCDotF4TTY0001DashNL.NETHER_LINE.cakePointSequence()); ctx.outAddAll(FCDotF4TTY0008DashNL.NETHER_LINE_1.cakePointSequence());
} }
} }

View file

@ -53,7 +53,7 @@ import org.x4o.fc18.cake2.clk1k.FCDotCLK1KDashW;
import org.x4o.fc18.cake2.clk1k.FCDotCLK1KDashX; import org.x4o.fc18.cake2.clk1k.FCDotCLK1KDashX;
import org.x4o.fc18.cake2.clk1k.FCDotCLK1KDashY; import org.x4o.fc18.cake2.clk1k.FCDotCLK1KDashY;
import org.x4o.fc18.cake2.clk1k.FCDotCLK1KDashZ; 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.FCDotPIE9CDash01;
import org.x4o.fc18.cake2.pie9c.FCDotPIE9CDash02; import org.x4o.fc18.cake2.pie9c.FCDotPIE9CDash02;
import org.x4o.fc18.cake2.pie9c.FCDotPIE9CDash03; import org.x4o.fc18.cake2.pie9c.FCDotPIE9CDash03;
@ -319,11 +319,11 @@ public enum FourCornerDotCake {
// TODO: convert to single 4096 block for F4TTY0001; // TODO: convert to single 4096 block for F4TTY0001;
/// Tele teXt Terminator zero one Nether Line /// Tele teXt Terminator octal Nether Line
FC_F4TTY0001_NL(0x02A000, 1, FCDotF4TTY0001DashNL.values(), "Flag4 TTY00 zero one Nether Line"), FC_F4TTY0008_NL(0x02A000, 8, FCDotF4TTY0008DashNL.values(), "Flag4 TTY00 octal Nether Line"),
/// Reserved Flag4 Structures /// 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), __F4_FREE(0x02C000, 0x02CC00 - 0x02C000),
__RESERVED_XDBX(0x02CC00, 512, "free"), __RESERVED_XDBX(0x02CC00, 512, "free"),

View file

@ -31,13 +31,20 @@ import org.x4o.fc18.cake2.FourCornerDotColleFlag4;
* @author Willem Cazander * @author Willem Cazander
* @version 1.0 Jan 22, 2025 * @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 @Override
public int cakePointDotIndex() { public int cakePointDotIndex() {
return FourCornerDotCake.FC_F4TTY0001_NL.getStart() + ordinal(); return FourCornerDotCake.FC_F4TTY0008_NL.getStart() + ordinal();
} }
} }

View file

@ -58,6 +58,10 @@ public enum FCDotCDC1604DiceSaw {
return ordinal() >= FACE_4NY.ordinal(); return ordinal() >= FACE_4NY.ordinal();
} }
public FCDotCDC1604DashP6 encodeOctalHigh(int value) {
return encodeOctal(value >> 9);
}
public FCDotCDC1604DashP6 encodeOctal(int value) { public FCDotCDC1604DashP6 encodeOctal(int value) {
int octalIdx = (value >> shiftValue) & 0b111; int octalIdx = (value >> shiftValue) & 0b111;
if (octalIdx < 0) { 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) { public int decodeOctal(int value, int cakePoint) {
if (offset.isNothingX()) { if (offset.isNothingX()) {
return value + ((cakePoint - offset.ordinal()) << shiftValue); return value + ((cakePoint - offset.ordinal()) << shiftValue);

View file

@ -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<Integer> baklavaPointSequence() {
List<Integer> result = new ArrayList<>();
result.addAll(FCDotDEC2701DashPX0.ESC6_CMD5401_2D.baklavaPointSequence());
result.add(selector.baklavaPointDotIndex());
return result;
}
@Override
public List<Integer> 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];
}
}

View file

@ -129,8 +129,8 @@ public enum FCDotDEC2701DashPX0 implements FourCornerX06BaklavaPointSequence, Fo
// =========== Internal control sequences // =========== Internal control sequences
/// _ESC6_X3 _ESC6_X1 _ESC6_X1 = 19 /// _ESC6_X3 _ESC6_X1 _ESC6_X1 = 19
/// Command for type writer signals shortcuts. /// Flags four type writer octal nether lines
ESC6_CMD5401_2D, ESC6_F4TTY0008_NL,
/// _ESC6_X3 _ESC6_X1 _ESC6_X2 = 20 /// _ESC6_X3 _ESC6_X1 _ESC6_X2 = 20
__ESC_RESERVED_C2, __ESC_RESERVED_C2,

View file

@ -32,6 +32,7 @@ import org.x4o.fc18.zion7.flame4.FCFlameFremanSignedBase2;
import org.x4o.fc18.zion7.flame4.FCFlameNumberTaste; import org.x4o.fc18.zion7.flame4.FCFlameNumberTaste;
import org.x4o.fc18.zion7.flame4.FCFlameSalahSequence; import org.x4o.fc18.zion7.flame4.FCFlameSalahSequence;
import org.x4o.fc18.zion7.flame4.FCFlameWordDish; import org.x4o.fc18.zion7.flame4.FCFlameWordDish;
import org.x4o.fc18.zion7.octal8.PrimordialOctal;
/// Handles the basic four corner cake strobes. /// 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. /// 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. /// 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); void strobeStructSpacePastor(int percentage);
// An structural nun line, as basic document grouping feature. /// An structural nun lines, as basic document grouping feature.
//void strobeStructNunLine(); void strobeStructNunLine(PrimordialOctal count);
/// An base2 computer lego number. /// An base2 computer lego number.
void strobeNumberBASE2Lego(FCFlameFremanLegoBase2 type, BigInteger value); void strobeNumberBASE2Lego(FCFlameFremanLegoBase2 type, BigInteger value);
@ -81,6 +83,10 @@ public interface FourCornerZion7Bereshit extends FourCornerZion7BaseVoid {
default void strobeStructSpacePastor(int percentage) { default void strobeStructSpacePastor(int percentage) {
} }
@Override
default void strobeStructNunLine(PrimordialOctal count) {
}
@Override @Override
default void strobeNumberBASE2Lego(FCFlameFremanLegoBase2 type, BigInteger value) { default void strobeNumberBASE2Lego(FCFlameFremanLegoBase2 type, BigInteger value) {
} }

View file

@ -335,6 +335,8 @@ public class FourCornerZionStenoGrapher {
requireBigMax(requireBigPositive(BigInteger.valueOf(percentage)), BigInteger.valueOf(4096)); requireBigMax(requireBigPositive(BigInteger.valueOf(percentage)), BigInteger.valueOf(4096));
if (outTongue.isSixBit()) { if (outTongue.isSixBit()) {
outAddAll(FCDotDEC2701DashPX0.ESC6_VARSP_4K.baklavaPointSequence()); 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_3NX.encodeOctal(percentage).baklavaPointDotIndex());
outAdd(FCDotCDC1604DiceSaw.FACE_2NX.encodeOctal(percentage).baklavaPointDotIndex()); outAdd(FCDotCDC1604DiceSaw.FACE_2NX.encodeOctal(percentage).baklavaPointDotIndex());
outAdd(FCDotCDC1604DiceSaw.FACE_1NX.encodeOctal(percentage).baklavaPointDotIndex()); outAdd(FCDotCDC1604DiceSaw.FACE_1NX.encodeOctal(percentage).baklavaPointDotIndex());
@ -345,6 +347,18 @@ public class FourCornerZionStenoGrapher {
outFlush(); 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 @Override
public void strobeNumberBASE2Lego(FCFlameFremanLegoBase2 type, BigInteger value) { public void strobeNumberBASE2Lego(FCFlameFremanLegoBase2 type, BigInteger value) {
Objects.requireNonNull(type); Objects.requireNonNull(type);

View file

@ -32,10 +32,8 @@ import java.util.Optional;
import org.x4o.fc18.cake2.FourCornerDotCake; import org.x4o.fc18.cake2.FourCornerDotCake;
import org.x4o.fc18.cake2.FourCornerDotCakeTower; 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.FCDotCDC1604DashP6;
import org.x4o.fc18.cake2.zero33.FCDotCDC1604DiceSaw; 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.FCDotDEC2701DashPX0;
import org.x4o.fc18.cake2.zero33.dec1.FCDotINC0801DashP8; import org.x4o.fc18.cake2.zero33.dec1.FCDotINC0801DashP8;
import org.x4o.fc18.zion7.flame4.FCFlameFremanChocoBase8; 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.KANJI_MEAT));
CAKE_EATERS.add(new StenoScannerWordCakeSlice(FCFlameWordDish.CLOCK_SAUCE)); CAKE_EATERS.add(new StenoScannerWordCakeSlice(FCFlameWordDish.CLOCK_SAUCE));
CAKE_EATERS.add(new StenoScannerWordSpace()); CAKE_EATERS.add(new StenoScannerWordSpace());
CAKE_EATERS.add(new StenoScannerNetherLine());
CAKE_EATERS.add(new StenoScannerSandWorm()); CAKE_EATERS.add(new StenoScannerSandWorm());
// fixme: convert to 4 freman loops // fixme: convert to 4 freman loops
Iterator<FCFlameFremanLegoBase2> fremanBase2LegoItr = Arrays.asList(FCFlameFremanLegoBase2.values()).iterator(); Iterator<FCFlameFremanLegoBase2> 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 { static final class StenoScannerNumberBase2Lego extends StenoScannerNumberBank {
private final FCFlameFremanLegoBase2 numberFreman; private final FCFlameFremanLegoBase2 numberFreman;
@ -777,8 +790,8 @@ public class FourCornerZionStenoLexer implements FourCornerZionStenoPetroglyphs
if (FCDotDEC2701DashPX0.ESC6_VARSP_4K.equals(cdcDECMode)) { if (FCDotDEC2701DashPX0.ESC6_VARSP_4K.equals(cdcDECMode)) {
return handleSP4K(lexer); return handleSP4K(lexer);
} }
if (FCDotDEC2701DashPX0.ESC6_CMD5401_2D.equals(cdcDECMode)) { if (FCDotDEC2701DashPX0.ESC6_F4TTY0008_NL.equals(cdcDECMode)) {
return handleCMD(lexer); return handleTTY(lexer);
} }
if (FCDotDEC2701DashPX0.ESC6_INC0801_P8.equals(cdcDECMode)) { if (FCDotDEC2701DashPX0.ESC6_INC0801_P8.equals(cdcDECMode)) {
return handleINC(lexer); return handleINC(lexer);
@ -815,31 +828,30 @@ public class FourCornerZionStenoLexer implements FourCornerZionStenoPetroglyphs
return true; return true;
} }
private boolean handleCMD(FourCornerZionStenoLexer lexer) { private boolean handleTTY(FourCornerZionStenoLexer lexer) {
int cdcPoint = lexer.input.get(lexer.cdcDECScanIndex); int cdcPoint = lexer.input.get(lexer.cdcDECScanIndex);
FCDotCMD5401Dash2D cmdMode = FCDotCMD5401Dash2D.valueOfCDC(cdcPoint); if (FCDotCDC1604DashP6.NS04_RAKA1_INTERROBANG.baklavaPointDotIndex() == cdcPoint) {
if (cmdMode == null) { lexer.decModeReset();
return true;
}
Optional<FCDotCDC1604DiceSaw> 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.decModeReset();
lexer.smokeSignals.burnControlCommandUnsupported(lexer.currLine, lexer.currCol, cdcPoint); lexer.smokeSignals.burnControlCommandUnsupported(lexer.currLine, lexer.currCol, cdcPoint);
return false; return false;
} }
// if (FCDotCMD5401Dash2D.CMD_F4TXT0001_SP.equals(cmdMode)) { int value = dice.decodeOctal(0, cdcPoint);
// lexer.decModeReset(); // TODO: delete CLK, this moves to own method. lexer.currLine = lexer.currLine + value;
// lexer.handler.strobeTheWord(FCFlameWordDish.CLOCK_SAUCE, FCDotF4TXT0001DashSP.SPANISH_PEACE.cakePointDotIndex()); // white space lexer.currCol = 0;
// return true; lexer.fireSignals.fireStateLine(lexer.currLine);
// } lexer.handler.strobeStructNunLine(PrimordialOctalSound.valueOf(value));
if (FCDotCMD5401Dash2D.CMD_F4TTY0001_NL.equals(cmdMode)) { return true;
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;
} }
private boolean handleSP4K(FourCornerZionStenoLexer lexer) { private boolean handleSP4K(FourCornerZionStenoLexer lexer) {

View file

@ -28,11 +28,9 @@ import java.util.List;
import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.x4o.fc18.cake2.FourCornerX06BaklavaPointSequence; import org.x4o.fc18.cake2.FourCornerX06BaklavaPointSequence;
import org.x4o.fc18.cake2.FourCornerX18CakePointSequence;
import org.x4o.fc18.cake2.pie9c.FCDotPIE9CDash26; import org.x4o.fc18.cake2.pie9c.FCDotPIE9CDash26;
import org.x4o.fc18.cake2.pie9d.FCDotPIE9DDash10; import org.x4o.fc18.cake2.pie9d.FCDotPIE9DDash10;
import org.x4o.fc18.cake2.zero33.FCDotCDC1604DashP6; 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.FCDotDEC2701DashPX0;
import org.x4o.fc18.cake2.zero33.dec1.FCDotINC0801DashP8; import org.x4o.fc18.cake2.zero33.dec1.FCDotINC0801DashP8;

View file

@ -196,7 +196,7 @@ public class FourCornerUnicodeImportTest {
Assertions.assertNotNull(cdc); Assertions.assertNotNull(cdc);
Assertions.assertTrue(cdi.hasNext()); Assertions.assertTrue(cdi.hasNext());
Assertions.assertFalse(cdc.isEmpty()); Assertions.assertFalse(cdc.isEmpty());
Assertions.assertEquals(38, cdc.size()); Assertions.assertEquals(46, cdc.size());
Assertions.assertEquals(FCDotCDC1604DashP6.NX01_A.ordinal(), cdi.next()); Assertions.assertEquals(FCDotCDC1604DashP6.NX01_A.ordinal(), cdi.next());
/* /*
Assertions.assertEquals(FCDotCMD5401Dash2D.CMD_F4TTY0001_NL, cdi.next()); Assertions.assertEquals(FCDotCMD5401Dash2D.CMD_F4TTY0001_NL, cdi.next());

View file

@ -35,7 +35,7 @@ import java.util.List;
import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.x4o.fc18.FourCornerUnicodeDisplay; 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.cake2.zero33.FCDotCDC1604DashP6;
import org.x4o.fc18.zion7.flame4.FCFlameNumberTaste; import org.x4o.fc18.zion7.flame4.FCFlameNumberTaste;
import org.x4o.fc18.zion7.flame4.FCFlameWordDish; import org.x4o.fc18.zion7.flame4.FCFlameWordDish;
@ -107,7 +107,7 @@ public class StenoGrapherTest {
for (int x = 1; x <= 1025 /*_999999*/; x++) { for (int x = 1; x <= 1025 /*_999999*/; x++) {
BigInteger v = BigInteger.valueOf(x); BigInteger v = BigInteger.valueOf(x);
writer.strobeNumberChocoPigRational(FCFlameNumberTaste.NUMBER_POSITIVE, FCFlameNumberTaste.NUMBER_POSITIVE, BigInteger.ONE, v); 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(); writer.strobeDocumentOmega();
PrimordialOctalOrangeString str = PrimordialOctalOrangeString.ioSmurfReadListX18(outX18); PrimordialOctalOrangeString str = PrimordialOctalOrangeString.ioSmurfReadListX18(outX18);

View file

@ -20,12 +20,10 @@
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * 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. * 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.Assertions;
import org.junit.jupiter.api.Test; 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. /// Tests for smurf and hinari octal big indian sex words.
/// ///