FC18 redone ESC sequence layout and conventions

This commit is contained in:
Willem Cazander 2025-01-13 21:21:18 +01:00
parent f60d30e63f
commit 1a314900ca
50 changed files with 1371 additions and 614 deletions

View file

@ -51,10 +51,14 @@ import org.x4o.o2o.fc18.pie9c.FCDotPIE9CDash24;
import org.x4o.o2o.fc18.pie9c.FCDotPIE9CDash25; import org.x4o.o2o.fc18.pie9c.FCDotPIE9CDash25;
import org.x4o.o2o.fc18.pie9c.FCDotPIE9CDash26; import org.x4o.o2o.fc18.pie9c.FCDotPIE9CDash26;
import org.x4o.o2o.fc18.pie9c.FCDotPIE9CDash27; import org.x4o.o2o.fc18.pie9c.FCDotPIE9CDash27;
import org.x4o.o2o.fc18.zero33.FCDotAPL1604DashP8L; import org.x4o.o2o.fc18.zero33.FCDotAPL0127DashP7A;
import org.x4o.o2o.fc18.zero33.FCDotBYD1604DashP8H; import org.x4o.o2o.fc18.zero33.FCDotAPL0127DashP7B;
import org.x4o.o2o.fc18.zero33.FCDotAPL0127DashP7C;
import org.x4o.o2o.fc18.zero33.FCDotBYD0127DashP7D;
import org.x4o.o2o.fc18.zero33.FCDotBYD0127DashP7E;
import org.x4o.o2o.fc18.zero33.FCDotBYD0127DashP7F;
import org.x4o.o2o.fc18.zero33.FCDotCDC1604DashP6; import org.x4o.o2o.fc18.zero33.FCDotCDC1604DashP6;
import org.x4o.o2o.fc18.zero33.FCDotDEC1604DashP7; import org.x4o.o2o.fc18.zero33.FCDotDEC0127DashPX0;
/// The dot cake index of four corner 18 bit words in cake slices which holds the cake points. /// The dot cake index of four corner 18 bit words in cake slices which holds the cake points.
/// ///
@ -66,12 +70,22 @@ public enum FourCornerDotCake {
/// Character Dough Cake /// Character Dough Cake
FC_CDC1604_P6(0, 64, FCDotCDC1604DashP6.values()), FC_CDC1604_P6(0, 64, FCDotCDC1604DashP6.values()),
/// Direct or Escaped Control /// Direct or Escaped Control
FC_DEC1604_P7(64, 64, FCDotDEC1604DashP7.values()), FC_DEC0127_PX0(64, 27, FCDotDEC0127DashPX0.values()),
/// Array Programming Language /// Array Programming Language
FC_APL1604_P8L(128, 64, FCDotAPL1604DashP8L.values()), FC_APL0127_P7A(91, 27, FCDotAPL0127DashP7A.values()),
FC_APL0127_P7B(118, 27, FCDotAPL0127DashP7B.values()),
FC_APL0127_P7C(145, 27, FCDotAPL0127DashP7C.values()),
/// Block Your Display /// Block Your Display
FC_BYD1604_P8H(192, 64, FCDotBYD1604DashP8H.values()), FC_BYD0127_P7D(172, 27, FCDotBYD0127DashP7D.values()),
FC_BYD0127_P7E(199, 27, FCDotBYD0127DashP7E.values()),
FC_BYD0127_P7F(226, 27, FCDotBYD0127DashP7F.values()),
/// Mind the gap, for retro metro, mini maxi mosi members
__MIND_THE_GAP(253, 3),
// =========== Allow pie terminators for symbols without escaping // =========== Allow pie terminators for symbols without escaping
@ -218,6 +232,7 @@ public enum FourCornerDotCake {
private final int start; private final int start;
private final int stop; private final int stop;
private final FourCornerX00PetitVidePoints[] videPoints; private final FourCornerX00PetitVidePoints[] videPoints;
private static final FourCornerDotCake[] VALUES = values();
private FourCornerDotCake(int start, int size) { private FourCornerDotCake(int start, int size) {
this(start, size, new FourCornerX00PetitVidePoints[] {}); this(start, size, new FourCornerX00PetitVidePoints[] {});
@ -280,9 +295,9 @@ public enum FourCornerDotCake {
return videPoints; return videPoints;
} }
public static Optional<FourCornerDotCake> valueOfInt18(int smurfPaint) { public static Optional<FourCornerDotCake> valueFromCakePoint(int cakePoint) {
for (FourCornerDotCake cakeSlice : values()) { for (FourCornerDotCake cakeSlice : VALUES) {
if (cakeSlice.contains(smurfPaint)) { if (cakeSlice.contains(cakePoint)) {
return Optional.of(cakeSlice); return Optional.of(cakeSlice);
} }
} }

View file

@ -152,7 +152,7 @@ public class FourCornerUnicodeDisplay {
return true; return true;
} }
} }
if (FourCornerDotCake.FC_DEC1604_P7.equals(slice)) { if (FourCornerDotCake.FC_DEC0127_PX0.equals(slice)) {
if (offset < 6) { if (offset < 6) {
output.appendCodePoint(FCDotCDC1604DashP6.escapeSignUnicode(offset)); output.appendCodePoint(FCDotCDC1604DashP6.escapeSignUnicode(offset));
return true; return true;
@ -201,6 +201,9 @@ public class FourCornerUnicodeDisplay {
if (printedEscape(slice, offset)) { if (printedEscape(slice, offset)) {
continue; continue;
} }
//if (offset < 0 || offset > videPoints.length) {
// continue;
//}
FourCornerX00PetitVidePoints videPoint = videPoints[offset]; FourCornerX00PetitVidePoints videPoint = videPoints[offset];
if (videPoint.isX21()) { if (videPoint.isX21()) {
Arrays.stream(videPoint.toX21().codePoints()).forEach(v -> output.appendCodePoint(v)); Arrays.stream(videPoint.toX21().codePoints()).forEach(v -> output.appendCodePoint(v));
@ -256,5 +259,15 @@ public class FourCornerUnicodeDisplay {
output.append(";"); output.append(";");
} }
} }
@Override
public void burnRecursive(int line, int col) {
throw new IllegalStateException("loop");
}
@Override
public void burnInvalidSalah(int line, int col) {
throw new IllegalStateException("Invalid salah on line: " + line + ":" + col);
}
} }
} }

View file

@ -27,7 +27,7 @@ import java.util.List;
import java.util.PrimitiveIterator; import java.util.PrimitiveIterator;
import org.x4o.o2o.fc18.zero33.FCDotCDC1604DashP6; import org.x4o.o2o.fc18.zero33.FCDotCDC1604DashP6;
import org.x4o.o2o.fc18.zero33.FCDotDEC1604DashP7; import org.x4o.o2o.fc18.zero33.FCDotDEC0127DashPX0;
import org.x4o.o2o.octal.PrimordialOctalOrangeJuiceCord; import org.x4o.o2o.octal.PrimordialOctalOrangeJuiceCord;
import org.x4o.o2o.octal.PrimordialOctalOrangeString; import org.x4o.o2o.octal.PrimordialOctalOrangeString;
@ -185,8 +185,11 @@ public class FourCornerUnicodeImport {
} }
if (ctx.codePoint >= '0' && ctx.codePoint <= '9') { if (ctx.codePoint >= '0' && ctx.codePoint <= '9') {
if (!FCDotCDC1604DashP6.NX10_J.equals(ctx.cdcNumberTerminator)) { if (!FCDotCDC1604DashP6.NX10_J.equals(ctx.cdcNumberTerminator)) {
ctx.output.add(FCDotCDC1604DashP6.__PIE68); if (ctx.bits == 6) {
ctx.output.add(FCDotCDC1604DashP6.NX10_J); ctx.output.addAll(FCDotDEC0127DashPX0.ESC68_PIE.toX06BaklavaPoints(FCDotCDC1604DashP6.NX10_J));
} else {
ctx.output.addAll(FCDotDEC0127DashPX0.ESC68_PIE.toX08MuffinPoints(FCDotCDC1604DashP6.NX10_J));
}
ctx.cdcNumberTerminator = FCDotCDC1604DashP6.NX10_J; ctx.cdcNumberTerminator = FCDotCDC1604DashP6.NX10_J;
} }
int cdcNumberOff = ctx.codePoint - '0'; int cdcNumberOff = ctx.codePoint - '0';
@ -196,11 +199,11 @@ public class FourCornerUnicodeImport {
} }
if (ctx.cdcNumberTerminator != null) { if (ctx.cdcNumberTerminator != null) {
ctx.cdcNumberTerminator = null; ctx.cdcNumberTerminator = null;
//ctx.output.add(FCDotDEC0127DashP7G.ESC_STOP);
if (ctx.bits == 6) { if (ctx.bits == 6) {
ctx.output.add(FCDotCDC1604DashP6.__ESC6); ctx.output.addAll(FCDotDEC0127DashPX0.ESC_STOP.toX06BaklavaPoints());
ctx.output.add(FCDotCDC1604DashP6.__ESC6);
} else { } else {
ctx.output.add(FCDotDEC1604DashP7.__ESC_STOP); ctx.output.add(FCDotDEC0127DashPX0.ESC_STOP);
} }
} }
return false; return false;
@ -212,8 +215,11 @@ public class FourCornerUnicodeImport {
} }
if (ctx.codePoint >= 'a' && ctx.codePoint <= 'z') { if (ctx.codePoint >= 'a' && ctx.codePoint <= 'z') {
if (!FCDotCDC1604DashP6.NX26_Z.equals(ctx.cdcCaseTerminator)) { if (!FCDotCDC1604DashP6.NX26_Z.equals(ctx.cdcCaseTerminator)) {
ctx.output.add(FCDotCDC1604DashP6.__PIE68); if (ctx.bits == 6) {
ctx.output.add(FCDotCDC1604DashP6.NX26_Z); ctx.output.addAll(FCDotDEC0127DashPX0.ESC68_PIE.toX06BaklavaPoints(FCDotCDC1604DashP6.NX26_Z));
} else {
ctx.output.addAll(FCDotDEC0127DashPX0.ESC68_PIE.toX08MuffinPoints(FCDotCDC1604DashP6.NX26_Z));
}
ctx.cdcCaseTerminator = FCDotCDC1604DashP6.NX26_Z; ctx.cdcCaseTerminator = FCDotCDC1604DashP6.NX26_Z;
} }
int cdcNumberOff = ctx.codePoint - 'a'; int cdcNumberOff = ctx.codePoint - 'a';
@ -224,10 +230,9 @@ public class FourCornerUnicodeImport {
if (ctx.cdcCaseTerminator != null) { if (ctx.cdcCaseTerminator != null) {
ctx.cdcCaseTerminator = null; ctx.cdcCaseTerminator = null;
if (ctx.bits == 6) { if (ctx.bits == 6) {
ctx.output.add(FCDotCDC1604DashP6.__ESC6); ctx.output.addAll(FCDotDEC0127DashPX0.ESC_STOP.toX06BaklavaPoints());
ctx.output.add(FCDotCDC1604DashP6.__ESC6);
} else { } else {
ctx.output.add(FCDotDEC1604DashP7.__ESC_STOP); ctx.output.add(FCDotDEC0127DashPX0.ESC_STOP);
} }
} }
return false; return false;

View file

@ -27,12 +27,15 @@ import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collections; import java.util.Collections;
import java.util.HashMap; import java.util.HashMap;
import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.PrimitiveIterator; import java.util.PrimitiveIterator;
import org.x4o.o2o.fc18.pie9c.FCDotPIE9CDash11; import org.x4o.o2o.fc18.pie9c.FCDotPIE9CDash11;
import org.x4o.o2o.fc18.pie9c.FCDotPIE9CDash20; import org.x4o.o2o.fc18.pie9c.FCDotPIE9CDash20;
import org.x4o.o2o.fc18.zero33.FCDotCDC1604DashP6;
import org.x4o.o2o.fc18.zero33.FCDotDEC0127DashPX0;
/// Holds conversion maps between four corner int18 and unicode int21 points. /// Holds conversion maps between four corner int18 and unicode int21 points.
/// ///
@ -100,6 +103,25 @@ public enum FourCornerUnicodeMapper {
return int21ToVide.get(letter); return int21ToVide.get(letter);
} }
public List<Integer> embedFC18(List<Integer> cakePoints) {
if (cakePoints.isEmpty()) {
return cakePoints;
}
List<Integer> result = new ArrayList<>();
result.addAll(FCDotDEC0127DashPX0.ESC68_FC18.toInt18BaklavaPoints());
Iterator<Integer> i = cakePoints.iterator();
while (i.hasNext()) {
int cakePoint = i.next();
for (int cakePointIdx=0;cakePointIdx<=6;cakePointIdx++) {
int octal = (cakePoint >> ((6-cakePointIdx)*3)) & 0b111;
int letter = octal + FCDotCDC1604DashP6.NX01_A.ordinal();
result.add(letter);
}
}
result.addAll(FCDotDEC0127DashPX0.ESC_SEQ_SALAH.toInt18BaklavaPoints());
return result;
}
public List<Integer> embedUNI2K(String value) { public List<Integer> embedUNI2K(String value) {
List<Integer> result = new ArrayList<>(value.length()); List<Integer> result = new ArrayList<>(value.length());
PrimitiveIterator.OfInt i = value.codePoints().iterator(); PrimitiveIterator.OfInt i = value.codePoints().iterator();

View file

@ -28,6 +28,7 @@ import org.x4o.o2o.fc18.FourCornerX08MuffinPoints;
import org.x4o.o2o.fc18.FourCornerX18CakePoints; import org.x4o.o2o.fc18.FourCornerX18CakePoints;
import org.x4o.o2o.fc18.FourCornerX21CodePoints; import org.x4o.o2o.fc18.FourCornerX21CodePoints;
import org.x4o.o2o.fc18.zero33.FCDotCDC1604DashP6; import org.x4o.o2o.fc18.zero33.FCDotCDC1604DashP6;
import org.x4o.o2o.fc18.zero33.FCDotDEC0127DashPX0;
/** /**
* Pie slice number symbols for NXX_01. * Pie slice number symbols for NXX_01.
@ -47,12 +48,12 @@ public enum FCDotPIE9CDash01 implements FourCornerX06BaklavaPoints, FourCornerX0
@Override @Override
public int[] baklavaPoints() { public int[] baklavaPoints() {
return muffinPoints(); return FCDotDEC0127DashPX0.ESC68_PIE.baklavaPointsPIE9C(FCDotCDC1604DashP6.NX01_A, ordinal());
} }
@Override @Override
public int[] muffinPoints() { public int[] muffinPoints() {
return new int[] {FCDotCDC1604DashP6.__PIE68.ordinal(), FCDotCDC1604DashP6.NX01_A.ordinal(), FCDotCDC1604DashP6.NX01_A.ordinal() + ordinal()}; return baklavaPoints();
} }
@Override @Override

View file

@ -28,6 +28,7 @@ import org.x4o.o2o.fc18.FourCornerX08MuffinPoints;
import org.x4o.o2o.fc18.FourCornerX18CakePoints; import org.x4o.o2o.fc18.FourCornerX18CakePoints;
import org.x4o.o2o.fc18.FourCornerX21CodePoints; import org.x4o.o2o.fc18.FourCornerX21CodePoints;
import org.x4o.o2o.fc18.zero33.FCDotCDC1604DashP6; import org.x4o.o2o.fc18.zero33.FCDotCDC1604DashP6;
import org.x4o.o2o.fc18.zero33.FCDotDEC0127DashPX0;
/** /**
* Pie slice number symbols for NXX_02. * Pie slice number symbols for NXX_02.
@ -48,12 +49,12 @@ public enum FCDotPIE9CDash02 implements FourCornerX06BaklavaPoints, FourCornerX0
@Override @Override
public int[] baklavaPoints() { public int[] baklavaPoints() {
return muffinPoints(); return FCDotDEC0127DashPX0.ESC68_PIE.baklavaPointsPIE9C(FCDotCDC1604DashP6.NX02_B, ordinal());
} }
@Override @Override
public int[] muffinPoints() { public int[] muffinPoints() {
return new int[] {FCDotCDC1604DashP6.__PIE68.ordinal(), FCDotCDC1604DashP6.NX02_B.ordinal(), FCDotCDC1604DashP6.NX01_A.ordinal() + ordinal()}; return baklavaPoints();
} }
@Override @Override

View file

@ -28,6 +28,7 @@ import org.x4o.o2o.fc18.FourCornerX08MuffinPoints;
import org.x4o.o2o.fc18.FourCornerX18CakePoints; import org.x4o.o2o.fc18.FourCornerX18CakePoints;
import org.x4o.o2o.fc18.FourCornerX21CodePoints; import org.x4o.o2o.fc18.FourCornerX21CodePoints;
import org.x4o.o2o.fc18.zero33.FCDotCDC1604DashP6; import org.x4o.o2o.fc18.zero33.FCDotCDC1604DashP6;
import org.x4o.o2o.fc18.zero33.FCDotDEC0127DashPX0;
/** /**
* Pie slice number symbols for NXX_03. * Pie slice number symbols for NXX_03.
@ -49,12 +50,12 @@ public enum FCDotPIE9CDash03 implements FourCornerX06BaklavaPoints, FourCornerX0
@Override @Override
public int[] baklavaPoints() { public int[] baklavaPoints() {
return muffinPoints(); return FCDotDEC0127DashPX0.ESC68_PIE.baklavaPointsPIE9C(FCDotCDC1604DashP6.NX03_C, ordinal());
} }
@Override @Override
public int[] muffinPoints() { public int[] muffinPoints() {
return new int[] {FCDotCDC1604DashP6.__PIE68.ordinal(), FCDotCDC1604DashP6.NX03_C.ordinal(), FCDotCDC1604DashP6.NX01_A.ordinal() + ordinal()}; return baklavaPoints();
} }
@Override @Override

View file

@ -28,6 +28,7 @@ import org.x4o.o2o.fc18.FourCornerX08MuffinPoints;
import org.x4o.o2o.fc18.FourCornerX18CakePoints; import org.x4o.o2o.fc18.FourCornerX18CakePoints;
import org.x4o.o2o.fc18.FourCornerX21CodePoints; import org.x4o.o2o.fc18.FourCornerX21CodePoints;
import org.x4o.o2o.fc18.zero33.FCDotCDC1604DashP6; import org.x4o.o2o.fc18.zero33.FCDotCDC1604DashP6;
import org.x4o.o2o.fc18.zero33.FCDotDEC0127DashPX0;
/** /**
* Pie slice number symbols for NXX_04. * Pie slice number symbols for NXX_04.
@ -50,12 +51,12 @@ public enum FCDotPIE9CDash04 implements FourCornerX06BaklavaPoints, FourCornerX0
@Override @Override
public int[] baklavaPoints() { public int[] baklavaPoints() {
return muffinPoints(); return FCDotDEC0127DashPX0.ESC68_PIE.baklavaPointsPIE9C(FCDotCDC1604DashP6.NX04_D, ordinal());
} }
@Override @Override
public int[] muffinPoints() { public int[] muffinPoints() {
return new int[] {FCDotCDC1604DashP6.__PIE68.ordinal(), FCDotCDC1604DashP6.NX04_D.ordinal(), FCDotCDC1604DashP6.NX01_A.ordinal() + ordinal()}; return baklavaPoints();
} }
@Override @Override

View file

@ -28,6 +28,7 @@ import org.x4o.o2o.fc18.FourCornerX08MuffinPoints;
import org.x4o.o2o.fc18.FourCornerX18CakePoints; import org.x4o.o2o.fc18.FourCornerX18CakePoints;
import org.x4o.o2o.fc18.FourCornerX21CodePoints; import org.x4o.o2o.fc18.FourCornerX21CodePoints;
import org.x4o.o2o.fc18.zero33.FCDotCDC1604DashP6; import org.x4o.o2o.fc18.zero33.FCDotCDC1604DashP6;
import org.x4o.o2o.fc18.zero33.FCDotDEC0127DashPX0;
/** /**
* Pie slice number symbols for NXX_05. * Pie slice number symbols for NXX_05.
@ -51,12 +52,12 @@ public enum FCDotPIE9CDash05 implements FourCornerX06BaklavaPoints, FourCornerX0
@Override @Override
public int[] baklavaPoints() { public int[] baklavaPoints() {
return muffinPoints(); return FCDotDEC0127DashPX0.ESC68_PIE.baklavaPointsPIE9C(FCDotCDC1604DashP6.NX05_E, ordinal());
} }
@Override @Override
public int[] muffinPoints() { public int[] muffinPoints() {
return new int[] {FCDotCDC1604DashP6.__PIE68.ordinal(), FCDotCDC1604DashP6.NX05_E.ordinal(), FCDotCDC1604DashP6.NX01_A.ordinal() + ordinal()}; return baklavaPoints();
} }
@Override @Override

View file

@ -28,6 +28,7 @@ import org.x4o.o2o.fc18.FourCornerX08MuffinPoints;
import org.x4o.o2o.fc18.FourCornerX18CakePoints; import org.x4o.o2o.fc18.FourCornerX18CakePoints;
import org.x4o.o2o.fc18.FourCornerX21CodePoints; import org.x4o.o2o.fc18.FourCornerX21CodePoints;
import org.x4o.o2o.fc18.zero33.FCDotCDC1604DashP6; import org.x4o.o2o.fc18.zero33.FCDotCDC1604DashP6;
import org.x4o.o2o.fc18.zero33.FCDotDEC0127DashPX0;
/** /**
* Pie slice number symbols for NXX_06. * Pie slice number symbols for NXX_06.
@ -52,12 +53,12 @@ public enum FCDotPIE9CDash06 implements FourCornerX06BaklavaPoints, FourCornerX0
@Override @Override
public int[] baklavaPoints() { public int[] baklavaPoints() {
return muffinPoints(); return FCDotDEC0127DashPX0.ESC68_PIE.baklavaPointsPIE9C(FCDotCDC1604DashP6.NX06_F, ordinal());
} }
@Override @Override
public int[] muffinPoints() { public int[] muffinPoints() {
return new int[] {FCDotCDC1604DashP6.__PIE68.ordinal(), FCDotCDC1604DashP6.NX06_F.ordinal(), FCDotCDC1604DashP6.NX01_A.ordinal() + ordinal()}; return baklavaPoints();
} }
@Override @Override

View file

@ -28,6 +28,7 @@ import org.x4o.o2o.fc18.FourCornerX08MuffinPoints;
import org.x4o.o2o.fc18.FourCornerX18CakePoints; import org.x4o.o2o.fc18.FourCornerX18CakePoints;
import org.x4o.o2o.fc18.FourCornerX21CodePoints; import org.x4o.o2o.fc18.FourCornerX21CodePoints;
import org.x4o.o2o.fc18.zero33.FCDotCDC1604DashP6; import org.x4o.o2o.fc18.zero33.FCDotCDC1604DashP6;
import org.x4o.o2o.fc18.zero33.FCDotDEC0127DashPX0;
/** /**
* Pie slice number symbols for NXX_07. * Pie slice number symbols for NXX_07.
@ -53,12 +54,12 @@ public enum FCDotPIE9CDash07 implements FourCornerX06BaklavaPoints, FourCornerX0
@Override @Override
public int[] baklavaPoints() { public int[] baklavaPoints() {
return muffinPoints(); return FCDotDEC0127DashPX0.ESC68_PIE.baklavaPointsPIE9C(FCDotCDC1604DashP6.NX07_G, ordinal());
} }
@Override @Override
public int[] muffinPoints() { public int[] muffinPoints() {
return new int[] {FCDotCDC1604DashP6.__PIE68.ordinal(), FCDotCDC1604DashP6.NX07_G.ordinal(), FCDotCDC1604DashP6.NX01_A.ordinal() + ordinal()}; return baklavaPoints();
} }
@Override @Override

View file

@ -28,6 +28,7 @@ import org.x4o.o2o.fc18.FourCornerX08MuffinPoints;
import org.x4o.o2o.fc18.FourCornerX18CakePoints; import org.x4o.o2o.fc18.FourCornerX18CakePoints;
import org.x4o.o2o.fc18.FourCornerX21CodePoints; import org.x4o.o2o.fc18.FourCornerX21CodePoints;
import org.x4o.o2o.fc18.zero33.FCDotCDC1604DashP6; import org.x4o.o2o.fc18.zero33.FCDotCDC1604DashP6;
import org.x4o.o2o.fc18.zero33.FCDotDEC0127DashPX0;
/** /**
* Pie slice number symbols for NXX_08. * Pie slice number symbols for NXX_08.
@ -54,12 +55,12 @@ public enum FCDotPIE9CDash08 implements FourCornerX06BaklavaPoints, FourCornerX0
@Override @Override
public int[] baklavaPoints() { public int[] baklavaPoints() {
return muffinPoints(); return FCDotDEC0127DashPX0.ESC68_PIE.baklavaPointsPIE9C(FCDotCDC1604DashP6.NX08_H, ordinal());
} }
@Override @Override
public int[] muffinPoints() { public int[] muffinPoints() {
return new int[] {FCDotCDC1604DashP6.__PIE68.ordinal(), FCDotCDC1604DashP6.NX08_H.ordinal(), FCDotCDC1604DashP6.NX01_A.ordinal() + ordinal()}; return baklavaPoints();
} }
@Override @Override

View file

@ -28,6 +28,7 @@ import org.x4o.o2o.fc18.FourCornerX08MuffinPoints;
import org.x4o.o2o.fc18.FourCornerX18CakePoints; import org.x4o.o2o.fc18.FourCornerX18CakePoints;
import org.x4o.o2o.fc18.FourCornerX21CodePoints; import org.x4o.o2o.fc18.FourCornerX21CodePoints;
import org.x4o.o2o.fc18.zero33.FCDotCDC1604DashP6; import org.x4o.o2o.fc18.zero33.FCDotCDC1604DashP6;
import org.x4o.o2o.fc18.zero33.FCDotDEC0127DashPX0;
/** /**
* Pie slice number symbols for NXX_09. * Pie slice number symbols for NXX_09.
@ -55,12 +56,12 @@ public enum FCDotPIE9CDash09 implements FourCornerX06BaklavaPoints, FourCornerX0
@Override @Override
public int[] baklavaPoints() { public int[] baklavaPoints() {
return muffinPoints(); return FCDotDEC0127DashPX0.ESC68_PIE.baklavaPointsPIE9C(FCDotCDC1604DashP6.NX09_I, ordinal());
} }
@Override @Override
public int[] muffinPoints() { public int[] muffinPoints() {
return new int[] {FCDotCDC1604DashP6.__PIE68.ordinal(), FCDotCDC1604DashP6.NX09_I.ordinal(), FCDotCDC1604DashP6.NX01_A.ordinal() + ordinal()}; return baklavaPoints();
} }
@Override @Override

View file

@ -33,6 +33,7 @@ import org.x4o.o2o.fc18.FourCornerX08MuffinPoints;
import org.x4o.o2o.fc18.FourCornerX18CakePoints; import org.x4o.o2o.fc18.FourCornerX18CakePoints;
import org.x4o.o2o.fc18.FourCornerX21CodePoints; import org.x4o.o2o.fc18.FourCornerX21CodePoints;
import org.x4o.o2o.fc18.zero33.FCDotCDC1604DashP6; import org.x4o.o2o.fc18.zero33.FCDotCDC1604DashP6;
import org.x4o.o2o.fc18.zero33.FCDotDEC0127DashPX0;
/** /**
* Pie slice number symbols for NXX_10. * Pie slice number symbols for NXX_10.
@ -61,12 +62,12 @@ public enum FCDotPIE9CDash10 implements FourCornerX06BaklavaPoints, FourCornerX0
@Override @Override
public int[] baklavaPoints() { public int[] baklavaPoints() {
return muffinPoints(); return FCDotDEC0127DashPX0.ESC68_PIE.baklavaPointsPIE9C(FCDotCDC1604DashP6.NX10_J, ordinal());
} }
@Override @Override
public int[] muffinPoints() { public int[] muffinPoints() {
return new int[] {FCDotCDC1604DashP6.__PIE68.ordinal(), FCDotCDC1604DashP6.NX10_J.ordinal(), FCDotCDC1604DashP6.NX01_A.ordinal() + ordinal()}; return baklavaPoints();
} }
@Override @Override
@ -79,6 +80,7 @@ public enum FCDotPIE9CDash10 implements FourCornerX06BaklavaPoints, FourCornerX0
return codePoints; return codePoints;
} }
@Deprecated
static public List<FourCornerX06BaklavaPoints> toDecimalsX06(int value) { static public List<FourCornerX06BaklavaPoints> toDecimalsX06(int value) {
return toDecimalsX00(value); return toDecimalsX00(value);
} }

View file

@ -28,6 +28,7 @@ import org.x4o.o2o.fc18.FourCornerX08MuffinPoints;
import org.x4o.o2o.fc18.FourCornerX18CakePoints; import org.x4o.o2o.fc18.FourCornerX18CakePoints;
import org.x4o.o2o.fc18.FourCornerX21CodePoints; import org.x4o.o2o.fc18.FourCornerX21CodePoints;
import org.x4o.o2o.fc18.zero33.FCDotCDC1604DashP6; import org.x4o.o2o.fc18.zero33.FCDotCDC1604DashP6;
import org.x4o.o2o.fc18.zero33.FCDotDEC0127DashPX0;
/** /**
* Pie slice number symbols for NXX_11. * Pie slice number symbols for NXX_11.
@ -57,12 +58,12 @@ public enum FCDotPIE9CDash11 implements FourCornerX06BaklavaPoints, FourCornerX0
@Override @Override
public int[] baklavaPoints() { public int[] baklavaPoints() {
return muffinPoints(); return FCDotDEC0127DashPX0.ESC68_PIE.baklavaPointsPIE9C(FCDotCDC1604DashP6.NX11_K, ordinal());
} }
@Override @Override
public int[] muffinPoints() { public int[] muffinPoints() {
return new int[] {FCDotCDC1604DashP6.__PIE68.ordinal(), FCDotCDC1604DashP6.NX11_K.ordinal(), FCDotCDC1604DashP6.NX01_A.ordinal() + ordinal()}; return baklavaPoints();
} }
@Override @Override

View file

@ -28,6 +28,7 @@ import org.x4o.o2o.fc18.FourCornerX08MuffinPoints;
import org.x4o.o2o.fc18.FourCornerX18CakePoints; import org.x4o.o2o.fc18.FourCornerX18CakePoints;
import org.x4o.o2o.fc18.FourCornerX21CodePoints; import org.x4o.o2o.fc18.FourCornerX21CodePoints;
import org.x4o.o2o.fc18.zero33.FCDotCDC1604DashP6; import org.x4o.o2o.fc18.zero33.FCDotCDC1604DashP6;
import org.x4o.o2o.fc18.zero33.FCDotDEC0127DashPX0;
/** /**
* Pie slice number symbols for NXX_12. * Pie slice number symbols for NXX_12.
@ -58,12 +59,12 @@ public enum FCDotPIE9CDash12 implements FourCornerX06BaklavaPoints, FourCornerX0
@Override @Override
public int[] baklavaPoints() { public int[] baklavaPoints() {
return muffinPoints(); return FCDotDEC0127DashPX0.ESC68_PIE.baklavaPointsPIE9C(FCDotCDC1604DashP6.NX12_L, ordinal());
} }
@Override @Override
public int[] muffinPoints() { public int[] muffinPoints() {
return new int[] {FCDotCDC1604DashP6.__PIE68.ordinal(), FCDotCDC1604DashP6.NX12_L.ordinal(), FCDotCDC1604DashP6.NX01_A.ordinal() + ordinal()}; return baklavaPoints();
} }
@Override @Override

View file

@ -28,6 +28,7 @@ import org.x4o.o2o.fc18.FourCornerX08MuffinPoints;
import org.x4o.o2o.fc18.FourCornerX18CakePoints; import org.x4o.o2o.fc18.FourCornerX18CakePoints;
import org.x4o.o2o.fc18.FourCornerX21CodePoints; import org.x4o.o2o.fc18.FourCornerX21CodePoints;
import org.x4o.o2o.fc18.zero33.FCDotCDC1604DashP6; import org.x4o.o2o.fc18.zero33.FCDotCDC1604DashP6;
import org.x4o.o2o.fc18.zero33.FCDotDEC0127DashPX0;
/** /**
* Pie slice number symbols for NXX_13. * Pie slice number symbols for NXX_13.
@ -59,12 +60,12 @@ public enum FCDotPIE9CDash13 implements FourCornerX06BaklavaPoints, FourCornerX0
@Override @Override
public int[] baklavaPoints() { public int[] baklavaPoints() {
return muffinPoints(); return FCDotDEC0127DashPX0.ESC68_PIE.baklavaPointsPIE9C(FCDotCDC1604DashP6.NX13_M, ordinal());
} }
@Override @Override
public int[] muffinPoints() { public int[] muffinPoints() {
return new int[] {FCDotCDC1604DashP6.__PIE68.ordinal(), FCDotCDC1604DashP6.NX13_M.ordinal(), FCDotCDC1604DashP6.NX01_A.ordinal() + ordinal()}; return baklavaPoints();
} }
@Override @Override

View file

@ -28,6 +28,7 @@ import org.x4o.o2o.fc18.FourCornerX08MuffinPoints;
import org.x4o.o2o.fc18.FourCornerX18CakePoints; import org.x4o.o2o.fc18.FourCornerX18CakePoints;
import org.x4o.o2o.fc18.FourCornerX21CodePoints; import org.x4o.o2o.fc18.FourCornerX21CodePoints;
import org.x4o.o2o.fc18.zero33.FCDotCDC1604DashP6; import org.x4o.o2o.fc18.zero33.FCDotCDC1604DashP6;
import org.x4o.o2o.fc18.zero33.FCDotDEC0127DashPX0;
/** /**
* Pie slice number symbols for NXX_14. * Pie slice number symbols for NXX_14.
@ -60,12 +61,12 @@ public enum FCDotPIE9CDash14 implements FourCornerX06BaklavaPoints, FourCornerX0
@Override @Override
public int[] baklavaPoints() { public int[] baklavaPoints() {
return muffinPoints(); return FCDotDEC0127DashPX0.ESC68_PIE.baklavaPointsPIE9C(FCDotCDC1604DashP6.NX14_N, ordinal());
} }
@Override @Override
public int[] muffinPoints() { public int[] muffinPoints() {
return new int[] {FCDotCDC1604DashP6.__PIE68.ordinal(), FCDotCDC1604DashP6.NX14_N.ordinal(), FCDotCDC1604DashP6.NX01_A.ordinal() + ordinal()}; return baklavaPoints();
} }
@Override @Override

View file

@ -28,6 +28,7 @@ import org.x4o.o2o.fc18.FourCornerX08MuffinPoints;
import org.x4o.o2o.fc18.FourCornerX18CakePoints; import org.x4o.o2o.fc18.FourCornerX18CakePoints;
import org.x4o.o2o.fc18.FourCornerX21CodePoints; import org.x4o.o2o.fc18.FourCornerX21CodePoints;
import org.x4o.o2o.fc18.zero33.FCDotCDC1604DashP6; import org.x4o.o2o.fc18.zero33.FCDotCDC1604DashP6;
import org.x4o.o2o.fc18.zero33.FCDotDEC0127DashPX0;
/** /**
* Pie slice number symbols for NXX_15. * Pie slice number symbols for NXX_15.
@ -61,12 +62,12 @@ public enum FCDotPIE9CDash15 implements FourCornerX06BaklavaPoints, FourCornerX0
@Override @Override
public int[] baklavaPoints() { public int[] baklavaPoints() {
return muffinPoints(); return FCDotDEC0127DashPX0.ESC68_PIE.baklavaPointsPIE9C(FCDotCDC1604DashP6.NX15_O, ordinal());
} }
@Override @Override
public int[] muffinPoints() { public int[] muffinPoints() {
return new int[] {FCDotCDC1604DashP6.__PIE68.ordinal(), FCDotCDC1604DashP6.NX15_O.ordinal(), FCDotCDC1604DashP6.NX01_A.ordinal() + ordinal()}; return baklavaPoints();
} }
@Override @Override

View file

@ -28,6 +28,7 @@ import org.x4o.o2o.fc18.FourCornerX08MuffinPoints;
import org.x4o.o2o.fc18.FourCornerX18CakePoints; import org.x4o.o2o.fc18.FourCornerX18CakePoints;
import org.x4o.o2o.fc18.FourCornerX21CodePoints; import org.x4o.o2o.fc18.FourCornerX21CodePoints;
import org.x4o.o2o.fc18.zero33.FCDotCDC1604DashP6; import org.x4o.o2o.fc18.zero33.FCDotCDC1604DashP6;
import org.x4o.o2o.fc18.zero33.FCDotDEC0127DashPX0;
/** /**
* Pie slice number symbols for NXX_16. * Pie slice number symbols for NXX_16.
@ -62,12 +63,12 @@ public enum FCDotPIE9CDash16 implements FourCornerX06BaklavaPoints, FourCornerX0
@Override @Override
public int[] baklavaPoints() { public int[] baklavaPoints() {
return muffinPoints(); return FCDotDEC0127DashPX0.ESC68_PIE.baklavaPointsPIE9C(FCDotCDC1604DashP6.NX16_P, ordinal());
} }
@Override @Override
public int[] muffinPoints() { public int[] muffinPoints() {
return new int[] {FCDotCDC1604DashP6.__PIE68.ordinal(), FCDotCDC1604DashP6.NX16_P.ordinal(), FCDotCDC1604DashP6.NX01_A.ordinal() + ordinal()}; return baklavaPoints();
} }
@Override @Override

View file

@ -28,6 +28,7 @@ import org.x4o.o2o.fc18.FourCornerX08MuffinPoints;
import org.x4o.o2o.fc18.FourCornerX18CakePoints; import org.x4o.o2o.fc18.FourCornerX18CakePoints;
import org.x4o.o2o.fc18.FourCornerX21CodePoints; import org.x4o.o2o.fc18.FourCornerX21CodePoints;
import org.x4o.o2o.fc18.zero33.FCDotCDC1604DashP6; import org.x4o.o2o.fc18.zero33.FCDotCDC1604DashP6;
import org.x4o.o2o.fc18.zero33.FCDotDEC0127DashPX0;
/** /**
* Pie slice number symbols for NXX_17. * Pie slice number symbols for NXX_17.
@ -63,12 +64,12 @@ public enum FCDotPIE9CDash17 implements FourCornerX06BaklavaPoints, FourCornerX0
@Override @Override
public int[] baklavaPoints() { public int[] baklavaPoints() {
return muffinPoints(); return FCDotDEC0127DashPX0.ESC68_PIE.baklavaPointsPIE9C(FCDotCDC1604DashP6.NX17_Q, ordinal());
} }
@Override @Override
public int[] muffinPoints() { public int[] muffinPoints() {
return new int[] {FCDotCDC1604DashP6.__PIE68.ordinal(), FCDotCDC1604DashP6.NX17_Q.ordinal(), FCDotCDC1604DashP6.NX01_A.ordinal() + ordinal()}; return baklavaPoints();
} }
@Override @Override

View file

@ -28,6 +28,7 @@ import org.x4o.o2o.fc18.FourCornerX08MuffinPoints;
import org.x4o.o2o.fc18.FourCornerX18CakePoints; import org.x4o.o2o.fc18.FourCornerX18CakePoints;
import org.x4o.o2o.fc18.FourCornerX21CodePoints; import org.x4o.o2o.fc18.FourCornerX21CodePoints;
import org.x4o.o2o.fc18.zero33.FCDotCDC1604DashP6; import org.x4o.o2o.fc18.zero33.FCDotCDC1604DashP6;
import org.x4o.o2o.fc18.zero33.FCDotDEC0127DashPX0;
/** /**
* Pie slice number symbols for NXX_18. * Pie slice number symbols for NXX_18.
@ -64,12 +65,12 @@ public enum FCDotPIE9CDash18 implements FourCornerX06BaklavaPoints, FourCornerX0
@Override @Override
public int[] baklavaPoints() { public int[] baklavaPoints() {
return muffinPoints(); return FCDotDEC0127DashPX0.ESC68_PIE.baklavaPointsPIE9C(FCDotCDC1604DashP6.NX18_R, ordinal());
} }
@Override @Override
public int[] muffinPoints() { public int[] muffinPoints() {
return new int[] {FCDotCDC1604DashP6.__PIE68.ordinal(), FCDotCDC1604DashP6.NX18_R.ordinal(), FCDotCDC1604DashP6.NX01_A.ordinal() + ordinal()}; return baklavaPoints();
} }
@Override @Override

View file

@ -28,6 +28,7 @@ import org.x4o.o2o.fc18.FourCornerX08MuffinPoints;
import org.x4o.o2o.fc18.FourCornerX18CakePoints; import org.x4o.o2o.fc18.FourCornerX18CakePoints;
import org.x4o.o2o.fc18.FourCornerX21CodePoints; import org.x4o.o2o.fc18.FourCornerX21CodePoints;
import org.x4o.o2o.fc18.zero33.FCDotCDC1604DashP6; import org.x4o.o2o.fc18.zero33.FCDotCDC1604DashP6;
import org.x4o.o2o.fc18.zero33.FCDotDEC0127DashPX0;
/** /**
* Pie slice number symbols for NXX_19. * Pie slice number symbols for NXX_19.
@ -65,12 +66,12 @@ public enum FCDotPIE9CDash19 implements FourCornerX06BaklavaPoints, FourCornerX0
@Override @Override
public int[] baklavaPoints() { public int[] baklavaPoints() {
return muffinPoints(); return FCDotDEC0127DashPX0.ESC68_PIE.baklavaPointsPIE9C(FCDotCDC1604DashP6.NX19_S, ordinal());
} }
@Override @Override
public int[] muffinPoints() { public int[] muffinPoints() {
return new int[] {FCDotCDC1604DashP6.__PIE68.ordinal(), FCDotCDC1604DashP6.NX19_S.ordinal(), FCDotCDC1604DashP6.NX01_A.ordinal() + ordinal()}; return baklavaPoints();
} }
@Override @Override

View file

@ -28,6 +28,7 @@ import org.x4o.o2o.fc18.FourCornerX08MuffinPoints;
import org.x4o.o2o.fc18.FourCornerX18CakePoints; import org.x4o.o2o.fc18.FourCornerX18CakePoints;
import org.x4o.o2o.fc18.FourCornerX21CodePoints; import org.x4o.o2o.fc18.FourCornerX21CodePoints;
import org.x4o.o2o.fc18.zero33.FCDotCDC1604DashP6; import org.x4o.o2o.fc18.zero33.FCDotCDC1604DashP6;
import org.x4o.o2o.fc18.zero33.FCDotDEC0127DashPX0;
/** /**
* Pie slice number symbols for NXX_20. * Pie slice number symbols for NXX_20.
@ -66,12 +67,12 @@ public enum FCDotPIE9CDash20 implements FourCornerX06BaklavaPoints, FourCornerX0
@Override @Override
public int[] baklavaPoints() { public int[] baklavaPoints() {
return muffinPoints(); return FCDotDEC0127DashPX0.ESC68_PIE.baklavaPointsPIE9C(FCDotCDC1604DashP6.NX20_T, ordinal());
} }
@Override @Override
public int[] muffinPoints() { public int[] muffinPoints() {
return new int[] {FCDotCDC1604DashP6.__PIE68.ordinal(), FCDotCDC1604DashP6.NX20_T.ordinal(), FCDotCDC1604DashP6.NX01_A.ordinal() + ordinal()}; return baklavaPoints();
} }
@Override @Override

View file

@ -28,6 +28,7 @@ import org.x4o.o2o.fc18.FourCornerX08MuffinPoints;
import org.x4o.o2o.fc18.FourCornerX18CakePoints; import org.x4o.o2o.fc18.FourCornerX18CakePoints;
import org.x4o.o2o.fc18.FourCornerX21CodePoints; import org.x4o.o2o.fc18.FourCornerX21CodePoints;
import org.x4o.o2o.fc18.zero33.FCDotCDC1604DashP6; import org.x4o.o2o.fc18.zero33.FCDotCDC1604DashP6;
import org.x4o.o2o.fc18.zero33.FCDotDEC0127DashPX0;
/** /**
* Pie slice number symbols for NXX_21. * Pie slice number symbols for NXX_21.
@ -67,12 +68,12 @@ public enum FCDotPIE9CDash21 implements FourCornerX06BaklavaPoints, FourCornerX0
@Override @Override
public int[] baklavaPoints() { public int[] baklavaPoints() {
return muffinPoints(); return FCDotDEC0127DashPX0.ESC68_PIE.baklavaPointsPIE9C(FCDotCDC1604DashP6.NX21_U, ordinal());
} }
@Override @Override
public int[] muffinPoints() { public int[] muffinPoints() {
return new int[] {FCDotCDC1604DashP6.__PIE68.ordinal(), FCDotCDC1604DashP6.NX21_U.ordinal(), FCDotCDC1604DashP6.NX01_A.ordinal() + ordinal()}; return baklavaPoints();
} }
@Override @Override

View file

@ -28,6 +28,7 @@ import org.x4o.o2o.fc18.FourCornerX08MuffinPoints;
import org.x4o.o2o.fc18.FourCornerX18CakePoints; import org.x4o.o2o.fc18.FourCornerX18CakePoints;
import org.x4o.o2o.fc18.FourCornerX21CodePoints; import org.x4o.o2o.fc18.FourCornerX21CodePoints;
import org.x4o.o2o.fc18.zero33.FCDotCDC1604DashP6; import org.x4o.o2o.fc18.zero33.FCDotCDC1604DashP6;
import org.x4o.o2o.fc18.zero33.FCDotDEC0127DashPX0;
/** /**
* Pie slice number symbols for NXX_22. * Pie slice number symbols for NXX_22.
@ -68,12 +69,12 @@ public enum FCDotPIE9CDash22 implements FourCornerX06BaklavaPoints, FourCornerX0
@Override @Override
public int[] baklavaPoints() { public int[] baklavaPoints() {
return muffinPoints(); return FCDotDEC0127DashPX0.ESC68_PIE.baklavaPointsPIE9C(FCDotCDC1604DashP6.NX22_V, ordinal());
} }
@Override @Override
public int[] muffinPoints() { public int[] muffinPoints() {
return new int[] {FCDotCDC1604DashP6.__PIE68.ordinal(), FCDotCDC1604DashP6.NX22_V.ordinal(), FCDotCDC1604DashP6.NX01_A.ordinal() + ordinal()}; return baklavaPoints();
} }
@Override @Override

View file

@ -28,6 +28,7 @@ import org.x4o.o2o.fc18.FourCornerX08MuffinPoints;
import org.x4o.o2o.fc18.FourCornerX18CakePoints; import org.x4o.o2o.fc18.FourCornerX18CakePoints;
import org.x4o.o2o.fc18.FourCornerX21CodePoints; import org.x4o.o2o.fc18.FourCornerX21CodePoints;
import org.x4o.o2o.fc18.zero33.FCDotCDC1604DashP6; import org.x4o.o2o.fc18.zero33.FCDotCDC1604DashP6;
import org.x4o.o2o.fc18.zero33.FCDotDEC0127DashPX0;
/** /**
* Pie slice number symbols for NXX_23. * Pie slice number symbols for NXX_23.
@ -69,12 +70,12 @@ public enum FCDotPIE9CDash23 implements FourCornerX06BaklavaPoints, FourCornerX0
@Override @Override
public int[] baklavaPoints() { public int[] baklavaPoints() {
return muffinPoints(); return FCDotDEC0127DashPX0.ESC68_PIE.baklavaPointsPIE9C(FCDotCDC1604DashP6.NX23_W, ordinal());
} }
@Override @Override
public int[] muffinPoints() { public int[] muffinPoints() {
return new int[] {FCDotCDC1604DashP6.__PIE68.ordinal(), FCDotCDC1604DashP6.NX23_W.ordinal(), FCDotCDC1604DashP6.NX01_A.ordinal() + ordinal()}; return baklavaPoints();
} }
@Override @Override

View file

@ -28,6 +28,7 @@ import org.x4o.o2o.fc18.FourCornerX08MuffinPoints;
import org.x4o.o2o.fc18.FourCornerX18CakePoints; import org.x4o.o2o.fc18.FourCornerX18CakePoints;
import org.x4o.o2o.fc18.FourCornerX21CodePoints; import org.x4o.o2o.fc18.FourCornerX21CodePoints;
import org.x4o.o2o.fc18.zero33.FCDotCDC1604DashP6; import org.x4o.o2o.fc18.zero33.FCDotCDC1604DashP6;
import org.x4o.o2o.fc18.zero33.FCDotDEC0127DashPX0;
/** /**
* Pie slice number symbols for NXX_24. * Pie slice number symbols for NXX_24.
@ -70,12 +71,12 @@ public enum FCDotPIE9CDash24 implements FourCornerX06BaklavaPoints, FourCornerX0
@Override @Override
public int[] baklavaPoints() { public int[] baklavaPoints() {
return muffinPoints(); return FCDotDEC0127DashPX0.ESC68_PIE.baklavaPointsPIE9C(FCDotCDC1604DashP6.NX24_X, ordinal());
} }
@Override @Override
public int[] muffinPoints() { public int[] muffinPoints() {
return new int[] {FCDotCDC1604DashP6.__PIE68.ordinal(), FCDotCDC1604DashP6.NX24_X.ordinal(), FCDotCDC1604DashP6.NX01_A.ordinal() + ordinal()}; return baklavaPoints();
} }
@Override @Override

View file

@ -28,6 +28,7 @@ import org.x4o.o2o.fc18.FourCornerX08MuffinPoints;
import org.x4o.o2o.fc18.FourCornerX18CakePoints; import org.x4o.o2o.fc18.FourCornerX18CakePoints;
import org.x4o.o2o.fc18.FourCornerX21CodePoints; import org.x4o.o2o.fc18.FourCornerX21CodePoints;
import org.x4o.o2o.fc18.zero33.FCDotCDC1604DashP6; import org.x4o.o2o.fc18.zero33.FCDotCDC1604DashP6;
import org.x4o.o2o.fc18.zero33.FCDotDEC0127DashPX0;
/** /**
* Pie slice number symbols for NXX_25. * Pie slice number symbols for NXX_25.
@ -71,12 +72,12 @@ public enum FCDotPIE9CDash25 implements FourCornerX06BaklavaPoints, FourCornerX0
@Override @Override
public int[] baklavaPoints() { public int[] baklavaPoints() {
return muffinPoints(); return FCDotDEC0127DashPX0.ESC68_PIE.baklavaPointsPIE9C(FCDotCDC1604DashP6.NX25_Y, ordinal());
} }
@Override @Override
public int[] muffinPoints() { public int[] muffinPoints() {
return new int[] {FCDotCDC1604DashP6.__PIE68.ordinal(), FCDotCDC1604DashP6.NX25_Y.ordinal(), FCDotCDC1604DashP6.NX01_A.ordinal() + ordinal()}; return baklavaPoints();
} }
@Override @Override

View file

@ -28,6 +28,7 @@ import org.x4o.o2o.fc18.FourCornerX08MuffinPoints;
import org.x4o.o2o.fc18.FourCornerX18CakePoints; import org.x4o.o2o.fc18.FourCornerX18CakePoints;
import org.x4o.o2o.fc18.FourCornerX21CodePoints; import org.x4o.o2o.fc18.FourCornerX21CodePoints;
import org.x4o.o2o.fc18.zero33.FCDotCDC1604DashP6; import org.x4o.o2o.fc18.zero33.FCDotCDC1604DashP6;
import org.x4o.o2o.fc18.zero33.FCDotDEC0127DashPX0;
/** /**
* Pie slice number symbols for NXX_26. * Pie slice number symbols for NXX_26.
@ -72,12 +73,12 @@ public enum FCDotPIE9CDash26 implements FourCornerX06BaklavaPoints, FourCornerX0
@Override @Override
public int[] baklavaPoints() { public int[] baklavaPoints() {
return muffinPoints(); return FCDotDEC0127DashPX0.ESC68_PIE.baklavaPointsPIE9C(FCDotCDC1604DashP6.NX26_Z, ordinal());
} }
@Override @Override
public int[] muffinPoints() { public int[] muffinPoints() {
return new int[] {FCDotCDC1604DashP6.__PIE68.ordinal(), FCDotCDC1604DashP6.NX26_Z.ordinal(), FCDotCDC1604DashP6.NX01_A.ordinal() + ordinal()}; return baklavaPoints();
} }
@Override @Override

View file

@ -28,6 +28,7 @@ import org.x4o.o2o.fc18.FourCornerX08MuffinPoints;
import org.x4o.o2o.fc18.FourCornerX18CakePoints; import org.x4o.o2o.fc18.FourCornerX18CakePoints;
import org.x4o.o2o.fc18.FourCornerX21CodePoints; import org.x4o.o2o.fc18.FourCornerX21CodePoints;
import org.x4o.o2o.fc18.zero33.FCDotCDC1604DashP6; import org.x4o.o2o.fc18.zero33.FCDotCDC1604DashP6;
import org.x4o.o2o.fc18.zero33.FCDotDEC0127DashPX0;
/** /**
* Pie slice number symbols for NXX_27. * Pie slice number symbols for NXX_27.
@ -73,12 +74,12 @@ public enum FCDotPIE9CDash27 implements FourCornerX06BaklavaPoints, FourCornerX0
@Override @Override
public int[] baklavaPoints() { public int[] baklavaPoints() {
return muffinPoints(); return FCDotDEC0127DashPX0.ESC68_PIE.baklavaPointsPIE9C(FCDotCDC1604DashP6.NX27_AMPERSAND, ordinal());
} }
@Override @Override
public int[] muffinPoints() { public int[] muffinPoints() {
return new int[] {FCDotCDC1604DashP6.__PIE68.ordinal(), FCDotCDC1604DashP6.NX27_AMPERSAND.ordinal(), FCDotCDC1604DashP6.NX01_A.ordinal() + ordinal()}; return baklavaPoints();
} }
@Override @Override

View file

@ -0,0 +1,143 @@
/*
* 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.o2o.fc18.zero33;
import org.x4o.o2o.fc18.FourCornerDotCake;
import org.x4o.o2o.fc18.FourCornerX06BaklavaPoints;
import org.x4o.o2o.fc18.FourCornerX08MuffinPoints;
import org.x4o.o2o.fc18.FourCornerX18CakePoints;
import org.x4o.o2o.fc18.FourCornerX21CodePoints;
/// "FC.APL0127-P8A" Four Corner A Programming Language symbols cake slice of cake points.
///
/// @author Willem Cazander
/// @version 1.0 Jan 1, 2025
///
public enum FCDotAPL0127DashP7A implements FourCornerX06BaklavaPoints, FourCornerX08MuffinPoints, FourCornerX18CakePoints, FourCornerX21CodePoints {
/// SL080000 One is pi
CIRCLE('○'),
// === 2 + 6 boxes
/// SL360000
QUAD('⎕'),
/// SL260000
SQUISH_QUAD('⌷'),
/// SL140000
QUAD_DIVIDE('⌹'),
/// NEW from Dynlog APL
QUAD_DOT2('⍠'),
/// NEW from Dynlog APL
QUAD_BOX3('⌸'),
/// NEW from Dynlog APl
QUAD_QUAD('⌺'),
// === 8 directions T arrows
/// SL610000
UP_ARROW('↑'),
/// SL600000
RIGHT_ARROW('→'),
/// SL620000
DOWN_ARROW('↓'),
/// SL590000
LEFT_ARROW('←'),
/// SL220000
UP_TACK(''),
/// SL350000
RIGHT_TACK('⊣'),
/// SL230000
DOWN_TACK('⊥'),
/// SL340000
LEFT_TACK('⊢'),
// === 8 mirrors
/// SL190000
DOWN_TACK_JOT('⍎'),
/// SL200000
UP_TACK_JOT('⍕'),
/// SL150000
SLASH_BAR('⌿'),
/// SL160000
SLOPE_BAR('⍀'),
/// SL010000
UP_STILE('⌈'),
/// SL020000
DOWN_STILE('⌊'),
/// SL030000 (used in GNU GPL)
DEL('∇'),
/// SL060000 (used in GNU GPL)
DELTA('∆'),
// === 8 Oooohhhs
/// SL110000
CIRCLE_STAR('⍟'),
/// SL090000
CIRCLE_STILE('⌽'),
/// SL120000
CIRCLE_BAR('⊖'),
/// SL100000
CIRCLE_SLOPE('⍉'),
;
static final private FCDotAPL0127DashP7A[] VALUES = values(); // values() is slow method
private final int codePoint;
private FCDotAPL0127DashP7A(char codePoint) {
this.codePoint = codePoint;
}
@Override
public int[] baklavaPoints() {
return FCDotDEC0127DashPX0.ESC6_APL0127_P7A.baklavaPointsP7(ordinal());
}
@Override
public int[] muffinPoints() {
return cakePoints();
}
@Override
public int[] cakePoints() {
return new int[] {FourCornerDotCake.FC_APL0127_P7A.getStart() + ordinal()};
}
@Override
public int[] codePoints() {
return new int[] {codePoint};
}
static public int length() {
return VALUES.length;
}
static public FCDotAPL0127DashP7A indexOf(int idx) {
return VALUES[idx];
}
}

View file

@ -28,83 +28,13 @@ import org.x4o.o2o.fc18.FourCornerX08MuffinPoints;
import org.x4o.o2o.fc18.FourCornerX18CakePoints; import org.x4o.o2o.fc18.FourCornerX18CakePoints;
import org.x4o.o2o.fc18.FourCornerX21CodePoints; import org.x4o.o2o.fc18.FourCornerX21CodePoints;
/// "FC.APL1604-P8L" Four Corner A Programming Language symbols cake slice of cake points. /// "FC.APL0127-P8B" Four Corner A Programming Language symbols cake slice of cake points.
/// ///
/// @author Willem Cazander /// @author Willem Cazander
/// @version 1.0 Jan 1, 2025 /// @version 1.0 Jan 1, 2025
/// ///
public enum FCDotAPL1604DashP8L implements FourCornerX06BaklavaPoints, FourCornerX08MuffinPoints, FourCornerX18CakePoints, FourCornerX21CodePoints { public enum FCDotAPL0127DashP7B implements FourCornerX06BaklavaPoints, FourCornerX08MuffinPoints, FourCornerX18CakePoints, FourCornerX21CodePoints {
/// Indicator for termination of pussy strings, which is the compatibility duel octal, with the CDC 1604 computers.
__NUL_APL('\u0000'),
/// SL080000 One is pi
CIRCLE('○'),
// === 2 + 6 boxes
/// SL360000
QUAD('⎕'),
/// SL260000
SQUISH_QUAD('⌷'),
/// SL140000
QUAD_DIVIDE('⌹'),
/// NEW from Dynlog APL
QUAD_DOT2('⍠'),
/// NEW from Dynlog APL
QUAD_BOX3('⌸'),
/// NEW from Dynlog APl
QUAD_QUAD('⌺'),
// === 8 directions T arrows
/// SL610000
UP_ARROW('↑'),
/// SL600000
RIGHT_ARROW('→'),
/// SL620000
DOWN_ARROW('↓'),
/// SL590000
LEFT_ARROW('←'),
/// SL220000
UP_TACK(''),
/// SL350000
RIGHT_TACK('⊣'),
/// SL230000
DOWN_TACK('⊥'),
/// SL340000
LEFT_TACK('⊢'),
// === 8 mirrors
/// SL190000
DOWN_TACK_JOT('⍎'),
/// SL200000
UP_TACK_JOT('⍕'),
/// SL150000
SLASH_BAR('⌿'),
/// SL160000
SLOPE_BAR('⍀'),
/// SL010000
UP_STILE('⌈'),
/// SL020000
DOWN_STILE('⌊'),
/// SL030000 (used in GNU GPL)
DEL('∇'),
/// SL060000 (used in GNU GPL)
DELTA('∆'),
// === 8 Oooohhhs
/// SL110000
CIRCLE_STAR('⍟'),
/// SL090000
CIRCLE_STILE('⌽'),
/// SL120000
CIRCLE_BAR('⊖'),
/// SL100000
CIRCLE_SLOPE('⍉'),
/// NEW from dynlog APL /// NEW from dynlog APL
CIRCLE_DOT_XL('⍥'), CIRCLE_DOT_XL('⍥'),
/// NEW from dynlog APL /// NEW from dynlog APL
@ -177,82 +107,19 @@ public enum FCDotAPL1604DashP8L implements FourCornerX06BaklavaPoints, FourCorne
DOWN_SHOE(''), DOWN_SHOE(''),
/// SL400000 /// SL400000
UP_SHOE('∩'), UP_SHOE('∩'),
/// SL720000
EPSILON('∊'),
/// NEW from dynslog APL
LEFT_SHOE_UNDERBAR('⊆'),
/// SL420000
LEFT_SHOE('⊂'),
/// SL740000
RHO(''),
/// NEW from dynlog APL
MINUS_COMMA('⍪'),
/// --------- Left over from IBM APL
/// SL210000
UP_SHOE_NULL('⍝'),
/// SL630000
OVERBAR('‾'),
/// SL710000
ALPHA(''),
/// SL750000
OMEGA('⍵'),
/// SL040000
// DEL_TILDE('⍫'), /// === LOCK
/// SL130000
// QUAD_QUOTE('⍞'), // GNU APL: stdin and debug out
/// SL270000
// QUAD_JOT('⌻'), // file meta info
/// SL280000
// QUAD_SLOPE('⍂'), // was expand
/// SL320000
// DIAERESIS_DOT('∵'), // each item
// SL330000
// DELTA_UNDERBAR('⍙'), // GNU APL: user var: starts (A-Z) or one of the 3 characters _, , or
/// SL370000
// LESS_GREATER('⋄'), // each stmt
/// SL480000
// CIRCLE_PLUS('⊕'), // group
/// SL490000
// CIRCLE_TIMES('⊗'), // index of
// SL290000 = Unsupported = Ampersand Underbar
// SL310000 = Unsupported = OUT Symbol = Not used by IBM ?
// SL380000 = Stile = FCDotCDC1604DashP6.BAR_VERTICAL
// SL390000 = undefined
// SL440000 = Underbar = FCDotCDC1604DashP6.BAR_UNDER
// SL460000 = Tilde = FCDotCDC1604DashP6._TILDE
// SL470000 = undefined
// SL580000 = Quote Dot = FCDotCDC1604DashP6._EXCLAMATION
// SL640000 = Slope = FCDotCDC1604DashP6.BAR_V_LEFT
// SL650000 = Star = FCDotCDC1604DashP6._ASTRIKS
// SL660000 = Quota = FCDotCDC1604DashP6._APOSTROPHE
// SL670000 = Left Parenthesis = FCDotCDC1604DashP6.TAG_ROUND_LEFT
// SL680000 = Right Parenthesis = FCDotCDC1604DashP6.TAG_ROUND_RIGHT
// SL700000 = Query = FCDotCDC1604DashP6._QUESTION
// SL770000 = Left Bracket = FCDotCDC1604DashP6.TAG_SQUARE_LEFT
// SL780000 = Right Bracket = FCDotCDC1604DashP6.TAG_SQUARE_RIGHT
// SL800000 = Semicolon = FCDotCDC1604DashP6._SEMICOLON
// SL830000 = Colon = FCDotCDC1604DashP6._COLON
// SL840000 = Dot = FCDotCDC1604DashP6._DOT
// SL850000 = Comma = FCDotCDC1604DashP6._COMMA
; ;
static final private FCDotAPL1604DashP8L[] VALUES = values(); // values() is slow method static final private FCDotAPL0127DashP7B[] VALUES = values(); // values() is slow method
private final int codePoint; private final int codePoint;
private FCDotAPL1604DashP8L(char codePoint) { private FCDotAPL0127DashP7B(char codePoint) {
this.codePoint = codePoint; this.codePoint = codePoint;
} }
@Override @Override
public int[] baklavaPoints() { public int[] baklavaPoints() {
return new int[] {FCDotCDC1604DashP6.__ESC6.ordinal(), FCDotDEC1604DashP7.__ESC6_APL.ordinal(), ordinal()}; return FCDotDEC0127DashPX0.ESC6_APL0127_P7B.baklavaPointsP7(ordinal());
} }
@Override @Override
@ -262,7 +129,7 @@ public enum FCDotAPL1604DashP8L implements FourCornerX06BaklavaPoints, FourCorne
@Override @Override
public int[] cakePoints() { public int[] cakePoints() {
return new int[] {FourCornerDotCake.FC_APL1604_P8L.getStart() + ordinal()}; return new int[] {FourCornerDotCake.FC_APL0127_P7B.getStart() + ordinal()};
} }
@Override @Override
@ -274,7 +141,7 @@ public enum FCDotAPL1604DashP8L implements FourCornerX06BaklavaPoints, FourCorne
return VALUES.length; return VALUES.length;
} }
static public FCDotAPL1604DashP8L indexOf(int idx) { static public FCDotAPL0127DashP7B indexOf(int idx) {
return VALUES[idx]; return VALUES[idx];
} }
} }

View file

@ -0,0 +1,149 @@
/*
* 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.o2o.fc18.zero33;
import org.x4o.o2o.fc18.FourCornerDotCake;
import org.x4o.o2o.fc18.FourCornerX06BaklavaPoints;
import org.x4o.o2o.fc18.FourCornerX08MuffinPoints;
import org.x4o.o2o.fc18.FourCornerX18CakePoints;
import org.x4o.o2o.fc18.FourCornerX21CodePoints;
/// "FC.APL0127-P8C" Four Corner A Programming Language symbols cake slice of cake points.
///
/// @author Willem Cazander
/// @version 1.0 Jan 1, 2025
///
public enum FCDotAPL0127DashP7C implements FourCornerX06BaklavaPoints, FourCornerX08MuffinPoints, FourCornerX18CakePoints, FourCornerX21CodePoints {
/// SL720000
EPSILON('∊'),
/// NEW from dynslog APL
LEFT_SHOE_UNDERBAR('⊆'),
/// SL420000
LEFT_SHOE('⊂'),
/// SL740000
RHO(''),
/// NEW from dynlog APL
MINUS_COMMA('⍪'),
/// --------- Left over from IBM APL
/// SL210000
UP_SHOE_NULL('⍝'),
/// SL630000
OVERBAR('‾'),
/// SL710000
ALPHA(''),
/// SL750000
OMEGA('⍵'),
/// SL040000
DEL_TILDE('⍫'), /// === LOCK
/// SL130000
QUAD_QUOTE('⍞'), // GNU APL: stdin and debug out
/// SL270000
QUAD_JOT('⌻'), // file meta info
/// SL280000
QUAD_SLOPE('⍂'), // was expand
/// SL320000
DIAERESIS_DOT('∵'), // each item
// SL330000
DELTA_UNDERBAR('⍙'), // GNU APL: user var: starts (A-Z) or one of the 3 characters _, , or
/// SL370000
LESS_GREATER('⋄'), // each stmt
/// SL480000
CIRCLE_PLUS('⊕'), // group
/// SL490000
CIRCLE_TIMES('⊗'), // index of
OPEN_19('?'),
OPEN_20('?'),
OPEN_21('?'),
OPEN_22('?'),
OPEN_23('?'),
OPEN_24('?'),
OPEN_25('?'),
OPEN_26('?'),
OPEN_27('?'),
// SL290000 = Unsupported = Ampersand Underbar
// SL310000 = Unsupported = OUT Symbol = Not used by IBM ?
// SL380000 = Stile = FCDotCDC1604DashP6.BAR_VERTICAL
// SL390000 = undefined
// SL440000 = Underbar = FCDotCDC1604DashP6.BAR_UNDER
// SL460000 = Tilde = FCDotCDC1604DashP6._TILDE
// SL470000 = undefined
// SL580000 = Quote Dot = FCDotCDC1604DashP6._EXCLAMATION
// SL640000 = Slope = FCDotCDC1604DashP6.BAR_V_LEFT
// SL650000 = Star = FCDotCDC1604DashP6._ASTRIKS
// SL660000 = Quota = FCDotCDC1604DashP6._APOSTROPHE
// SL670000 = Left Parenthesis = FCDotCDC1604DashP6.TAG_ROUND_LEFT
// SL680000 = Right Parenthesis = FCDotCDC1604DashP6.TAG_ROUND_RIGHT
// SL700000 = Query = FCDotCDC1604DashP6._QUESTION
// SL770000 = Left Bracket = FCDotCDC1604DashP6.TAG_SQUARE_LEFT
// SL780000 = Right Bracket = FCDotCDC1604DashP6.TAG_SQUARE_RIGHT
// SL800000 = Semicolon = FCDotCDC1604DashP6._SEMICOLON
// SL830000 = Colon = FCDotCDC1604DashP6._COLON
// SL840000 = Dot = FCDotCDC1604DashP6._DOT
// SL850000 = Comma = FCDotCDC1604DashP6._COMMA
;
static final private FCDotAPL0127DashP7C[] VALUES = values(); // values() is slow method
private final int codePoint;
private FCDotAPL0127DashP7C(char codePoint) {
this.codePoint = codePoint;
}
@Override
public int[] baklavaPoints() {
return FCDotDEC0127DashPX0.ESC6_APL0127_P7A.baklavaPointsP7(ordinal());
}
@Override
public int[] muffinPoints() {
return cakePoints();
}
@Override
public int[] cakePoints() {
return new int[] {FourCornerDotCake.FC_APL0127_P7C.getStart() + ordinal()};
}
@Override
public int[] codePoints() {
return new int[] {codePoint};
}
static public int length() {
return VALUES.length;
}
static public FCDotAPL0127DashP7C indexOf(int idx) {
return VALUES[idx];
}
}

View file

@ -28,15 +28,12 @@ import org.x4o.o2o.fc18.FourCornerX08MuffinPoints;
import org.x4o.o2o.fc18.FourCornerX18CakePoints; import org.x4o.o2o.fc18.FourCornerX18CakePoints;
import org.x4o.o2o.fc18.FourCornerX21CodePoints; import org.x4o.o2o.fc18.FourCornerX21CodePoints;
/// "FC.BYD1604-P8H" Four Corner Block Your Display terminal application. /// "FC.BYD0127-P8D" Four Corner Block Your Display terminal application.
/// ///
/// @author Willem Cazander /// @author Willem Cazander
/// @version 1.0 Jan 1, 2025 /// @version 1.0 Jan 1, 2025
/// ///
public enum FCDotBYD1604DashP8H implements FourCornerX06BaklavaPoints, FourCornerX08MuffinPoints, FourCornerX18CakePoints, FourCornerX21CodePoints { public enum FCDotBYD0127DashP7D implements FourCornerX06BaklavaPoints, FourCornerX08MuffinPoints, FourCornerX18CakePoints, FourCornerX21CodePoints {
/// Indicator for termination of pussy strings, which is the compatibility duel octal, with the CDC 1604 computers.
__NUL_BYD('\u0000'),
// 32 chars are CP/M Plus aligned // 32 chars are CP/M Plus aligned
@ -69,58 +66,18 @@ public enum FCDotBYD1604DashP8H implements FourCornerX06BaklavaPoints, FourCorne
BOX1_9('┘'), BOX1_9('┘'),
BOX1_A('─'), BOX1_A('─'),
BOX1_B('┴'), BOX1_B('┴'),
BOX1_C('┐'),
BOX1_D('┤'),
BOX1_E('┬'),
BOX1_F('┼'),
// 32 chars aligned with unicode "Block Elements"
U2580('▀'),
U2581('▁'),
U2582('▂'),
U2583('▃'),
U2584('▄'),
U2585('▅'),
U2586('▆'),
U2587('▇'),
U2588('█'),
U2589('▉'),
U258A('▊'),
U258B('▋'),
U258C('▌'),
U258D('▍'),
U258E('▎'),
U258F('▏'),
U2590('▐'),
U2591('░'),
U2592('▒'),
U2593('▓'),
U2594('▔'),
U2595('▕'),
U2596('▖'),
U2597('▗'),
U2598('▘'),
U2599('▙'),
U259A('▚'),
U259B('▛'),
U259C('▜'),
U259D('▝'),
U259E('▞'),
U259F('▟'),
; ;
static final private FCDotBYD1604DashP8H[] VALUES = values(); // values() is slow method static final private FCDotBYD0127DashP7D[] VALUES = values(); // values() is slow method
private final int codePoint; private final int codePoint;
private FCDotBYD1604DashP8H(char codePoint) { private FCDotBYD0127DashP7D(char codePoint) {
this.codePoint = codePoint; this.codePoint = codePoint;
} }
@Override @Override
public int[] baklavaPoints() { public int[] baklavaPoints() {
return new int[] {FCDotCDC1604DashP6.__ESC6.ordinal(), FCDotDEC1604DashP7.__ESC6_BYD.ordinal(), ordinal()}; return FCDotDEC0127DashPX0.ESC6_BYD0127_P7D.baklavaPointsP7(ordinal());
} }
@Override @Override
@ -130,7 +87,7 @@ public enum FCDotBYD1604DashP8H implements FourCornerX06BaklavaPoints, FourCorne
@Override @Override
public int[] cakePoints() { public int[] cakePoints() {
return new int[] {FourCornerDotCake.FC_BYD1604_P8H.getStart() + ordinal()}; return new int[] {FourCornerDotCake.FC_BYD0127_P7D.getStart() + ordinal()};
} }
@Override @Override
@ -142,7 +99,7 @@ public enum FCDotBYD1604DashP8H implements FourCornerX06BaklavaPoints, FourCorne
return VALUES.length; return VALUES.length;
} }
static public FCDotBYD1604DashP8H indexOf(int idx) { static public FCDotBYD0127DashP7D indexOf(int idx) {
return VALUES[idx]; return VALUES[idx];
} }
} }

View file

@ -0,0 +1,105 @@
/*
* 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.o2o.fc18.zero33;
import org.x4o.o2o.fc18.FourCornerDotCake;
import org.x4o.o2o.fc18.FourCornerX06BaklavaPoints;
import org.x4o.o2o.fc18.FourCornerX08MuffinPoints;
import org.x4o.o2o.fc18.FourCornerX18CakePoints;
import org.x4o.o2o.fc18.FourCornerX21CodePoints;
/// "FC.BYD0127-P8E" Four Corner Block Your Display terminal application.
///
/// @author Willem Cazander
/// @version 1.0 Jan 1, 2025
///
public enum FCDotBYD0127DashP7E implements FourCornerX06BaklavaPoints, FourCornerX08MuffinPoints, FourCornerX18CakePoints, FourCornerX21CodePoints {
BOX1_C('┐'),
BOX1_D('┤'),
BOX1_E('┬'),
BOX1_F('┼'),
// 32 chars aligned with unicode "Block Elements"
U2580('▀'),
U2581('▁'),
U2582('▂'),
U2583('▃'),
U2584('▄'),
U2585('▅'),
U2586('▆'),
U2587('▇'),
U2588('█'),
U2589('▉'),
U258A('▊'),
U258B('▋'),
U258C('▌'),
U258D('▍'),
U258E('▎'),
U258F('▏'),
U2590('▐'),
U2591('░'),
U2592('▒'),
U2593('▓'),
U2594('▔'),
U2595('▕'),
U2596('▖'),
;
static final private FCDotBYD0127DashP7E[] VALUES = values(); // values() is slow method
private final int codePoint;
private FCDotBYD0127DashP7E(char codePoint) {
this.codePoint = codePoint;
}
@Override
public int[] baklavaPoints() {
return FCDotDEC0127DashPX0.ESC6_BYD0127_P7E.baklavaPointsP7(ordinal());
}
@Override
public int[] muffinPoints() {
return cakePoints();
}
@Override
public int[] cakePoints() {
return new int[] {FourCornerDotCake.FC_BYD0127_P7E.getStart() + ordinal()};
}
@Override
public int[] codePoints() {
return new int[] {codePoint};
}
static public int length() {
return VALUES.length;
}
static public FCDotBYD0127DashP7E indexOf(int idx) {
return VALUES[idx];
}
}

View file

@ -0,0 +1,104 @@
/*
* 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.o2o.fc18.zero33;
import org.x4o.o2o.fc18.FourCornerDotCake;
import org.x4o.o2o.fc18.FourCornerX06BaklavaPoints;
import org.x4o.o2o.fc18.FourCornerX08MuffinPoints;
import org.x4o.o2o.fc18.FourCornerX18CakePoints;
import org.x4o.o2o.fc18.FourCornerX21CodePoints;
/// "FC.BYD0127-P8F" Four Corner Block Your Display terminal application.
///
/// @author Willem Cazander
/// @version 1.0 Jan 1, 2025
///
public enum FCDotBYD0127DashP7F implements FourCornerX06BaklavaPoints, FourCornerX08MuffinPoints, FourCornerX18CakePoints, FourCornerX21CodePoints {
U2597('▗'),
U2598('▘'),
U2599('▙'),
U259A('▚'),
U259B('▛'),
U259C('▜'),
U259D('▝'),
U259E('▞'),
U259F('▟'),
OPEN_10('?'),
OPEN_11('?'),
OPEN_12('?'),
OPEN_13('?'),
OPEN_14('?'),
OPEN_15('?'),
OPEN_16('?'),
OPEN_17('?'),
OPEN_18('?'),
OPEN_19('?'),
OPEN_20('?'),
OPEN_21('?'),
OPEN_22('?'),
OPEN_23('?'),
OPEN_24('?'),
OPEN_25('?'),
OPEN_26('?'),
OPEN_27('?'),
;
static final private FCDotBYD0127DashP7F[] VALUES = values(); // values() is slow method
private final int codePoint;
private FCDotBYD0127DashP7F(char codePoint) {
this.codePoint = codePoint;
}
@Override
public int[] baklavaPoints() {
return FCDotDEC0127DashPX0.ESC6_BYD0127_P7F.baklavaPointsP7(ordinal());
}
@Override
public int[] muffinPoints() {
return cakePoints();
}
@Override
public int[] cakePoints() {
return new int[] {FourCornerDotCake.FC_BYD0127_P7F.getStart() + ordinal()};
}
@Override
public int[] codePoints() {
return new int[] {codePoint};
}
static public int length() {
return VALUES.length;
}
static public FCDotBYD0127DashP7F indexOf(int idx) {
return VALUES[idx];
}
}

View file

@ -47,17 +47,12 @@ public enum FCDotCDC1604DashP6 implements FourCornerX06BaklavaPoints, FourCorner
// LMNO PQRS TUVW XYZ& // LMNO PQRS TUVW XYZ&
/// Indicator for termination of pussy strings, which is the compatibility duel octal, with the CDC 1604 computers. /// Indicator for termination of pussy strings, which is the compatibility duel octal, with the CDC 1604 computers.
__NUL('\u0000'), _NUL('\u0000'),
/// 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. /// Escape to direct control codes for 6 bit systems requires an sequence of 3 escapes.
/// Example ascii "012" is _ESC6_X1('\u0001'),
/// 012 = __PIE NX10_J NX01_A NX02_B NX02_C _ESC6_X2('\u0002'),
__PIE68('\u0001'), _ESC6_X3('\u0003'),
/// 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.
__NCR68('\u0002'),
/// Escape to direct control code for 6 bit systems.
__ESC6('\u0003'),
_NEWLINE('\n'), _NEWLINE('\n'),
_SPACE(' '), _SPACE(' '),
QUESTION('?'), QUESTION('?'),
@ -160,6 +155,10 @@ public enum FCDotCDC1604DashP6 implements FourCornerX06BaklavaPoints, FourCorner
return VALUES[idx]; return VALUES[idx];
} }
static public boolean isEscape6(int cakePoint) {
return cakePoint == _ESC6_X1.ordinal() || cakePoint == _ESC6_X2.ordinal() || cakePoint == _ESC6_X3.ordinal();
}
static public char escapeSignUnicode(int idx) { static public char escapeSignUnicode(int idx) {
if (idx == 0) { if (idx == 0) {
return '␀'; return '␀';

View file

@ -22,87 +22,116 @@
*/ */
package org.x4o.o2o.fc18.zero33; package org.x4o.o2o.fc18.zero33;
import java.util.ArrayList;
import java.util.List;
import org.x4o.o2o.fc18.FourCornerDotCake; import org.x4o.o2o.fc18.FourCornerDotCake;
import org.x4o.o2o.fc18.FourCornerX06BaklavaPoints; import org.x4o.o2o.fc18.FourCornerX06BaklavaPoints;
import org.x4o.o2o.fc18.FourCornerX08MuffinPoints; import org.x4o.o2o.fc18.FourCornerX08MuffinPoints;
import org.x4o.o2o.fc18.FourCornerX18CakePoints; import org.x4o.o2o.fc18.FourCornerX18CakePoints;
/** /**
* "FC.DEC1604-P7" Four Corner dot Direct or Escaped Control in grid of 16 by 04 of dashed Escape codes V2. * "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 use the __ESC6 to use these 64 control codes. * NOTE: Only escapes starting with _ESC6_X3 are allowed to embed in a escape sequence.
*
* A 8 or 18 or 144 bit computer uses this direct as the second 64 part page. (thus number 64 to 127)
*
* Defines VT-NX01 which are terminal escape sequences for text based applications.
* *
* @author Willem Cazander * @author Willem Cazander
* @version 1.0 Dec 24, 2024 * @version 1.0 Dec 24, 2024
*/ */
public enum FCDotDEC1604DashP7 implements FourCornerX06BaklavaPoints, FourCornerX08MuffinPoints, FourCornerX18CakePoints { public enum FCDotDEC0127DashPX0 implements FourCornerX06BaklavaPoints, FourCornerX08MuffinPoints, FourCornerX18CakePoints {
/// Indicator for termination of pussy strings, which is the compatibility duel octal, with the CDC 1604 computers. // =========== External argumented escape sequence, always has closed ending. (MUST terminate with ESC_SEQ_SALAH)
__NUL_DEC,
/// On 6 bit escape to the APL baklava for single char. /// _ESC6_X1 _ESC6_X1 _ESC6_X1
__ESC6_APL, _ESC_USER_1,
/// On 6 bit escape to the BYD baklave for single char. /// _ESC6_X1 _ESC6_X1 _ESC6_X2
__ESC6_BYD, _ESC_USER_2,
/// Duel escape stops the escaped __PIE68 or __NCR68 escape sequence data mode. /// _ESC6_X1 _ESC6_X1 _ESC6_X3
/// VT-100 Manual: "ESC also cancels any escape sequence". _ESC_USER_3,
__ESC_STOP, /// _ESC6_X1 _ESC6_X2 _ESC6_X1
/// On 6/8 bit escape to 18 bit four corner cake points. _ESC_USER_4,
/// Stream per six octals as CDC chars in NX01_A to NX08_H, until any out of range P6. /// _ESC6_X1 _ESC6_X2 _ESC6_X2
__ESC68_FC18, _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
/// _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,
/// _ESC6_X2 _ESC6_X2 _ESC6_X3
/// To escape the question of undefined behavior, we define it as dark nether space, so we can see it in C++ /// To escape the question of undefined behavior, we define it as dark nether space, so we can see it in C++
/// Using dark mode nether requires 18 bit cake points as we embed 15 bit data point in the cake; /// Using dark mode nether requires 18 bit cake points as we embed 15 bit data point in the cake;
/// ///
/// __ESC18_NETHER VT_RAKA_AT /// __ESC18_NETHER
/// + ?slug + ?VT_RAKA_AT (None or 72 to 576 bit Número2 Lingua tree key per 72 bit slug) /// + ?slug + ?ESC_SEQ_RAKA_AT (None or 72 to 576 bit Número2 Lingua tree key per 72 bit slug)
/// + ?slug + ?VT_RAKA_AT (Up to 8 slug arguments to have max key) /// + ?slug + ?ESC_SEQ_RAKA_AT (Up to 8 slug arguments to have max key)
/// + VT_SALAH + data-block as FC_NETHER in 15 bit embedded octals /// + ESC_SEQ_SALAH + data-block as FC_NETHER in 15 bit embedded octals
/// ///
/// NOTE: key slug format is <6><6><6><9><6><6><6><6><6><6><9> encoded in FC_OCE0808_H6 and FC_OCE0808_H9 /// NOTE: key slug format is <6><6><6><9><6><6><6><6><6><6><9> encoded as 4 bit octals with CDC MX01_A++ "letnums".
/// ///
/// With dark nether space you can add unnamed and real dark(key is optional) undefined data segments in text. /// With dark nether space you can add unnamed and real dark(key is optional) undefined data segments in text.
/// 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.
__ESC18_NETHER, 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.
ESC68_FC18,
/// VT-NX01 = __ESC6 ? = Begin and next argument separator for escape command sequences which MUST end with __ESC_NX_EXECUTE. // =========== Embeddable sequences, with open or manual stopped or auto stopped ending. (stop on out of range)
VT_RAKA_AT,
/// VT-NX01 = __ESC6 ! = End of escape command sequence.
VT_SALAH,
DEC_TAG_CURLY_LEFT, /// _ESC6_X3 _ESC6_X1 _ESC6_X1
DEC_TAG_CURLY_RIGHT, ESC6_APL0127_P7A,
/// ANSI C1 char [ = CSI = Control Sequence Introducer /// _ESC6_X3 _ESC6_X1 _ESC6_X2
RESERVED_ANSI_CSI, ESC6_APL0127_P7B,
UNDEFINED__TAG_SQUARE_RIGHT, /// _ESC6_X3 _ESC6_X1 _ESC6_X3
UNDEFINED__TAG_ROUND_LEFT, ESC6_APL0127_P7C,
UNDEFINED__TAG_ROUND_RIGHT, /// _ESC6_X3 _ESC6_X2 _ESC6_X1
UNDEFINED__TAG_COMPARE_LEFT, ESC6_BYD0127_P7D,
UNDEFINED__TAG_COMPARE_RIGHT, /// _ESC6_X3 _ESC6_X2 _ESC6_X2
UNDEFINED___TILDE, ESC6_BYD0127_P7E,
UNDEFINED___PLUS, /// _ESC6_X3 _ESC6_X2 _ESC6_X3
UNDEFINED___MINUS, ESC6_BYD0127_P7F,
UNDEFINED___ASTERISK, /// _ESC6_X3 _ESC6_X3 _ESC6_X1
UNDEFINED___COMMA, /// Select packed pie terminator symbol on 6 and 8 bit systems.
UNDEFINED___DOT, /// A = 1, first P6 is terminator select, than next P6 _A++ select pie part 1-27, until other P6 stops it.
UNDEFINED___COLON, /// Example ascii "012" is
UNDEFINED___SEMICOLON, /// 012 = __PIE NX10_J NX01_A NX02_B NX02_C
UNDEFINED___APOSTROPHE, ESC68_PIE,
UNDEFINED___QUOTATION, /// _ESC6_X3 _ESC6_X3 _ESC6_X2
UNDEFINED___BACKTICK, /// Select packed pie terminator number for 6 and 8 bit systems.
UNDEFINED___CARET, /// First NXX P6 is terminator select, than next NXX P6 are values, until out of range.
UNDEFINED___EQUALS, ESC68_NCR,
UNDEFINED___HASH, /// _ESC6_X3 _ESC6_X3 _ESC6_X3
UNDEFINED___DOLLAR, /// An optional triple escape stops the open ended escape sequence.
UNDEFINED___PERCENT, /// VT-100 Manual: "ESC also cancels any escape sequence".
UNDEFINED__BAR_VERTICAL, ESC_STOP,
UNDEFINED__BAR_UNDER,
UNDEFINED__BAR_V_LEFT, /*
UNDEFINED__BAR_V_RIGHT,
UNDEFINED__AT,
/// VT-NX01 = __ESC6 A + ?num + VT_NX01_EXECUTE = Cursor one or X up /// VT-NX01 = __ESC6 A + ?num + VT_NX01_EXECUTE = Cursor one or X up
NX_CURSOR_UP, NX_CURSOR_UP,
@ -129,17 +158,6 @@ public enum FCDotDEC1604DashP7 implements FourCornerX06BaklavaPoints, FourCorner
OLD_MSX_INSERT_LINE, OLD_MSX_INSERT_LINE,
/// VT-52 = ESC M = Delete line /// VT-52 = ESC M = Delete line
OLD_MSX_DELETE_LINE, OLD_MSX_DELETE_LINE,
UNDEFINED__NX14_N,
UNDEFINED__NX15_O,
UNDEFINED__NX16_P,
UNDEFINED__NX17_Q,
UNDEFINED__NX18_R,
UNDEFINED__NX19_S,
UNDEFINED__NX20_T,
UNDEFINED__NX21_U,
UNDEFINED__NX22_V,
UNDEFINED__NX23_W,
UNDEFINED__NX24_X,
/// VT-NX01 = __ESC6 Y + ?x + ?(VT_NX01_NEXT + y) + VT_NX01_EXECUTE = Set cursor to X and Y position or only X or home /// VT-NX01 = __ESC6 Y + ?x + ?(VT_NX01_NEXT + y) + VT_NX01_EXECUTE = Set cursor to X and Y position or only X or home
NX_CURSOR_GOTO, NX_CURSOR_GOTO,
@ -176,7 +194,7 @@ public enum FCDotDEC1604DashP7 implements FourCornerX06BaklavaPoints, FourCorner
/// -9 = Pink alert; /// -9 = Pink alert;
/// Security or intruder alert. /// Security or intruder alert.
NX_BELL, NX_BELL,
*/
// MSX is simple VT-52 for reference see https://www.msx.org/wiki/MSX_Characters_and_Control_Codes#Escape_codes // MSX is simple VT-52 for reference see https://www.msx.org/wiki/MSX_Characters_and_Control_Codes#Escape_codes
// //
// ANSI CSI has dynamic termination; // ANSI CSI has dynamic termination;
@ -202,25 +220,82 @@ public enum FCDotDEC1604DashP7 implements FourCornerX06BaklavaPoints, FourCorner
// C1 char X = SOS = Start Of String // C1 char X = SOS = Start Of String
; ;
static final private FCDotDEC1604DashP7[] VALUES = values(); // values() is slow method private FCDotDEC0127DashPX0() {
private FCDotDEC1604DashP7() {
} }
public boolean isAlias(FCDotCDC1604DashP6 cdc) { public boolean isEmbeddable() {
if (cdc == null) { if (ordinal() >= ESC6_APL0127_P7A.ordinal()) {
return false; return true;
} }
return cdc.ordinal() == ordinal(); return false;
} }
public FCDotCDC1604DashP6 toAlias() { public boolean isExternal() {
return FCDotCDC1604DashP6.indexOf(ordinal()); if (ordinal() <= __ESC_RESERVED_A9.ordinal()) {
return true;
}
return false;
}
// ============ TODO: make api more nice
public List<FourCornerX08MuffinPoints> toX08MuffinPoints(FCDotCDC1604DashP6... letters) {
List<FourCornerX08MuffinPoints> result = new ArrayList<>();
result.add(this);
for (FCDotCDC1604DashP6 letter : letters) {
result.add(letter);
}
return result;
}
public List<FourCornerX06BaklavaPoints> toX06BaklavaPoints(FCDotCDC1604DashP6... letters) {
List<FourCornerX06BaklavaPoints> result = new ArrayList<>();
for (int baklave : baklavaPoints()) {
result.add(FCDotCDC1604DashP6.indexOf(baklave));
}
for (FCDotCDC1604DashP6 letter : letters) {
result.add(letter);
}
return result;
}
public List<Integer> toInt18BaklavaPoints(int... letters) {
List<Integer> result = new ArrayList<>();
for (int baklave : baklavaPoints()) {
result.add(baklave);
}
for (int letter : letters) {
result.add(letter);
}
return result;
}
public int[] baklavaPointsPIE9C(FCDotCDC1604DashP6 letter, int offset) {
return new int[] {
FCDotCDC1604DashP6._ESC6_X1.ordinal() + (ordinal() / 9),
FCDotCDC1604DashP6._ESC6_X1.ordinal() + ((ordinal() / 3) % 3),
FCDotCDC1604DashP6._ESC6_X1.ordinal() + (ordinal() % 3),
letter.ordinal(),
FCDotCDC1604DashP6.NX01_A.ordinal() + offset
};
}
public int[] baklavaPointsP7(int offset) {
return new int[] {
FCDotCDC1604DashP6._ESC6_X1.ordinal() + (ordinal() / 9),
FCDotCDC1604DashP6._ESC6_X1.ordinal() + ((ordinal() / 3) % 3),
FCDotCDC1604DashP6._ESC6_X1.ordinal() + (ordinal() % 3),
FCDotCDC1604DashP6.NX01_A.ordinal() + offset
};
} }
@Override @Override
public int[] baklavaPoints() { public int[] baklavaPoints() {
return new int[] {FCDotCDC1604DashP6.__ESC6.ordinal(), ordinal()}; return new int[] {
FCDotCDC1604DashP6._ESC6_X1.ordinal() + (ordinal() / 9),
FCDotCDC1604DashP6._ESC6_X1.ordinal() + ((ordinal() / 3) % 3),
FCDotCDC1604DashP6._ESC6_X1.ordinal() + (ordinal() % 3),
};
} }
@Override @Override
@ -230,14 +305,13 @@ public enum FCDotDEC1604DashP7 implements FourCornerX06BaklavaPoints, FourCorner
@Override @Override
public int[] cakePoints() { public int[] cakePoints() {
return new int[] {FourCornerDotCake.FC_DEC1604_P7.getStart() + ordinal()}; return new int[] {FourCornerDotCake.FC_DEC0127_PX0.getStart() + ordinal()};
} }
static public int length() { public static FCDotDEC0127DashPX0 valueOf(FCDotCDC1604DashP6 msb, FCDotCDC1604DashP6 csb, FCDotCDC1604DashP6 lsb) {
return VALUES.length; int idx = (msb.ordinal() - FCDotCDC1604DashP6._ESC6_X1.ordinal()) * 9;
} idx += (csb.ordinal() - FCDotCDC1604DashP6._ESC6_X1.ordinal()) * 3;
idx += (lsb.ordinal() - FCDotCDC1604DashP6._ESC6_X1.ordinal());
static public FCDotDEC1604DashP7 indexOf(int idx) { return FCDotDEC0127DashPX0.values()[idx];
return VALUES[idx];
} }
} }

View file

@ -24,13 +24,13 @@ package org.x4o.o2o.fc18.zion7;
import java.util.List; import java.util.List;
import org.x4o.o2o.fc18.zero33.FCDotDEC0127DashPX0;
/// Handles the lexer salah sequence strobes. /// Handles the lexer salah sequence strobes.
/// ///
/// @author Willem Cazander /// @author Willem Cazander
/// @version 1.0 Jan 11, 2025 /// @version 1.0 Jan 11, 2025
public interface FourCornerZion7SalahSequence extends FourCornerZion7Candlelier { public interface FourCornerZion7SalahSequence extends FourCornerZion7Candlelier {
void strobeSalahRaka(Integer cakePoint); void strobeSalahSequence(FCDotDEC0127DashPX0 type, List<List<Integer>> arguments);
void strobeSalahRaketSequence(List<List<Integer>> arguments);
} }

View file

@ -27,12 +27,11 @@ import java.util.ArrayList;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
import java.util.Optional;
import org.x4o.o2o.fc18.FourCornerDotCake; import org.x4o.o2o.fc18.FourCornerDotCake;
import org.x4o.o2o.fc18.zero33.FCDotAPL1604DashP8L;
import org.x4o.o2o.fc18.zero33.FCDotBYD1604DashP8H;
import org.x4o.o2o.fc18.zero33.FCDotCDC1604DashP6; import org.x4o.o2o.fc18.zero33.FCDotCDC1604DashP6;
import org.x4o.o2o.fc18.zero33.FCDotDEC1604DashP7; import org.x4o.o2o.fc18.zero33.FCDotDEC0127DashPX0;
/// Parsed FC text and calls the handler methods for the classified strobe lights. /// Parsed FC text and calls the handler methods for the classified strobe lights.
/// ///
@ -43,14 +42,15 @@ public class FourCornerZionStenoLexer {
private final boolean handlerEscape; private final boolean handlerEscape;
private final FourCornerZion7Candlelier handler; private final FourCornerZion7Candlelier handler;
private final FourCornerZion7AlphaOmega handlerDocument; private final FourCornerZion7AlphaOmega handlerDocument;
private final FourCornerZion7SalahSequence handlerRocket; private final FourCornerZion7SalahSequence handlerSalahSequence;
private final FourCornerZion7TempleScrolls handlerTempleScrolls; private final FourCornerZion7TempleScrolls handlerTempleScrolls;
private final List<StenoScanner> scanners = new ArrayList<>(); private final List<StenoScanner> scanners = new ArrayList<>();
private Iterator<Integer> input = null; private int readLevel = 0;
private Integer cakePoint = null; private Integer cakePoint = null;
private int currLine = 0; private int currLine = 0;
private int currCol = 0; private int currCol = 0;
private FourCornerZionStenoLexerSmoke smokeSignals; private FourCornerZionStenoLexerSmoke smokeSignals;
private FourCornerZionStenoLexerFire fireSignals;
public FourCornerZionStenoLexer(FourCornerZion7Candlelier handler) { public FourCornerZionStenoLexer(FourCornerZion7Candlelier handler) {
this(handler, true); this(handler, true);
@ -65,9 +65,9 @@ public class FourCornerZionStenoLexer {
this.handlerDocument = null; this.handlerDocument = null;
} }
if (handler instanceof FourCornerZion7SalahSequence) { if (handler instanceof FourCornerZion7SalahSequence) {
this.handlerRocket = FourCornerZion7SalahSequence.class.cast(handler); this.handlerSalahSequence = FourCornerZion7SalahSequence.class.cast(handler);
} else { } else {
this.handlerRocket = null; this.handlerSalahSequence = null;
} }
if (handler instanceof FourCornerZion7TempleScrolls) { if (handler instanceof FourCornerZion7TempleScrolls) {
this.handlerTempleScrolls = FourCornerZion7TempleScrolls.class.cast(handler); this.handlerTempleScrolls = FourCornerZion7TempleScrolls.class.cast(handler);
@ -78,25 +78,27 @@ public class FourCornerZionStenoLexer {
if (cakeSlice.name().startsWith("__")) { if (cakeSlice.name().startsWith("__")) {
continue; // can't handle reserved, we be reported as continue; // can't handle reserved, we be reported as
} }
if (FourCornerDotCake.FC_CDC1604_P6.equals(cakeSlice)) { if (cakeSlice.getStop() <= 0xFF) {
continue; // handle esc's manual continue; // handle CDC and DEC and muffins manual
} }
if (FourCornerDotCake.FC_DEC1604_P7.equals(cakeSlice)) { if (FourCornerDotCake.FC_UNI2K_11.equals(cakeSlice)) {
continue; // handle esc's manual
}
if (cakeSlice.name().startsWith("FC_NCR")) {
continue; // parse blocks manual continue; // parse blocks manual
} }
if (cakeSlice.name().startsWith("FC_UNI")) { if (FourCornerDotCake.FC_UNI2K_22.equals(cakeSlice)) {
continue; // parse blocks manual continue; // parse blocks manual
} }
if (FourCornerDotCake.FC_NETHER.equals(cakeSlice)) { if (FourCornerDotCake.FC_NETHER.equals(cakeSlice)) {
continue; // merge the nether data to octals manual continue; // merge the nether data to octals manual
} }
if (FourCornerDotCake.FC_NCR1632_XD.equals(cakeSlice)) {
continue; // merge the nether data to octals manual
}
if (FourCornerDotCake.FC_NCR1632_XN.equals(cakeSlice)) {
continue; // merge the nether data to octals manual
}
this.scanners.add(new StenoScannerWordCakeSlice(cakeSlice)); this.scanners.add(new StenoScannerWordCakeSlice(cakeSlice));
} }
this.scanners.add(new StenoScannerCDC()); this.scanners.add(new StenoScannerCDCDECMuffin());
this.scanners.add(new StenoScannerDEC());
this.scanners.add(new StenoScannerNCR18()); this.scanners.add(new StenoScannerNCR18());
this.scanners.add(new StenoScannerUNI21()); this.scanners.add(new StenoScannerUNI21());
this.scanners.add(new StenoScannerNether()); this.scanners.add(new StenoScannerNether());
@ -107,6 +109,11 @@ public class FourCornerZionStenoLexer {
return this; return this;
} }
public FourCornerZionStenoLexer withFireSignals(FourCornerZionStenoLexerFire fireSignals) {
this.fireSignals = fireSignals;
return this;
}
private enum ScanResult { private enum ScanResult {
EOF, EOF,
NEXT, NEXT,
@ -121,7 +128,7 @@ public class FourCornerZionStenoLexer {
} }
private interface StenoScanner { private interface StenoScanner {
ScanResult scan(); ScanResult scan(Iterator<Integer> input);
} }
public void read(List<Integer> points) { public void read(List<Integer> points) {
@ -129,20 +136,29 @@ public class FourCornerZionStenoLexer {
} }
public void read(Iterator<Integer> points) { public void read(Iterator<Integer> points) {
this.input = Objects.requireNonNull(points); Iterator<Integer> input = Objects.requireNonNull(points);
this.cakePoint = null; readLevel++; // first puts on one, we allow level deep
this.currLine = 0; if (readLevel > 2) {
this.currCol = 0; if (smokeSignals != null) {
if (handlerDocument != null) { smokeSignals.burnRecursive(currLine, currCol);
handlerDocument.strobeDocumentAlpha(); }
return;
}
if (readLevel == 1) {
this.cakePoint = null; // allow reuse of lexer
this.currLine = 0;
this.currCol = 0;
if (handlerDocument != null) {
handlerDocument.strobeDocumentAlpha();
}
} }
while (input.hasNext()) { while (input.hasNext()) {
if (safeNext().isEOF()) { if (safeNext(input).isEOF()) {
break; break;
} }
ScanResult run = ScanResult.DONE; ScanResult run = ScanResult.DONE;
while (run.isDone()) { while (run.isDone()) {
run = parseSections(); run = readTokens(input);
} }
if (run.isEOF()) { if (run.isEOF()) {
break; break;
@ -151,15 +167,16 @@ public class FourCornerZionStenoLexer {
smokeSignals.burnUnsupported(currLine, currCol, cakePoint); smokeSignals.burnUnsupported(currLine, currCol, cakePoint);
} }
} }
if (handlerDocument != null) { if (handlerDocument != null && readLevel == 1) {
handlerDocument.strobeDocumentOmega(); handlerDocument.strobeDocumentOmega();
} }
readLevel--;
} }
private ScanResult parseSections() { private ScanResult readTokens(Iterator<Integer> input) {
ScanResult result = ScanResult.NEXT; ScanResult result = ScanResult.NEXT;
for (StenoScanner scanner : scanners) { for (StenoScanner scanner : scanners) {
result = scanner.scan(); result = scanner.scan(input);
if (result.isEOF()) { if (result.isEOF()) {
return result; return result;
} }
@ -170,31 +187,34 @@ public class FourCornerZionStenoLexer {
return result; return result;
} }
private ScanResult safeNext() { private ScanResult safeNext(Iterator<Integer> input) {
if (!input.hasNext()) { if (!input.hasNext()) {
return ScanResult.EOF; return ScanResult.EOF;
} }
cakePoint = input.next(); cakePoint = input.next();
currCol++; currCol++;
if (fireSignals != null) {
fireSignals.fireStateColumn(currCol);
}
return ScanResult.DONE; return ScanResult.DONE;
} }
private ScanResult safeReadCakePoints(int start, int stop, List<Integer> result) { private ScanResult safeReadCakePoints(Iterator<Integer> input, int start, int stop, List<Integer> result) {
return safeReadRange(start, stop, result, false); return safeReadRange(input, start, stop, result, false);
} }
private ScanResult safeReadSliceOffsets(int start, int stop, List<Integer> result) { private ScanResult safeReadSliceOffsets(Iterator<Integer> input, int start, int stop, List<Integer> result) {
return safeReadRange(start, stop, result, true); return safeReadRange(input, start, stop, result, true);
} }
private ScanResult safeReadRange(int start, int stop, List<Integer> result, boolean offset) { private ScanResult safeReadRange(Iterator<Integer> input, int start, int stop, List<Integer> result, boolean offset) {
while (cakePoint >= start && cakePoint <= stop) { while (cakePoint >= start && cakePoint <= stop) {
if (offset) { if (offset) {
result.add(cakePoint - start); result.add(cakePoint - start);
} else { } else {
result.add(cakePoint); result.add(cakePoint);
} }
if (safeNext().isEOF()) { if (safeNext(input).isEOF()) {
return ScanResult.EOF; return ScanResult.EOF;
} }
} }
@ -210,12 +230,12 @@ public class FourCornerZionStenoLexer {
} }
@Override @Override
public ScanResult scan() { public ScanResult scan(Iterator<Integer> input) {
if (cakeSlice.containsNot(cakePoint)) { if (cakeSlice.containsNot(cakePoint)) {
return ScanResult.NEXT; return ScanResult.NEXT;
} }
List<Integer> result = new ArrayList<>(); List<Integer> result = new ArrayList<>();
ScanResult status = safeReadSliceOffsets(cakeSlice.getStart(), cakeSlice.getStop(), result); ScanResult status = safeReadSliceOffsets(input, cakeSlice.getStart(), cakeSlice.getStop(), result);
if (!result.isEmpty()) { if (!result.isEmpty()) {
handler.strobeWords(cakeSlice, result); handler.strobeWords(cakeSlice, result);
} }
@ -226,12 +246,12 @@ public class FourCornerZionStenoLexer {
class StenoScannerNether implements StenoScanner { class StenoScannerNether implements StenoScanner {
@Override @Override
public ScanResult scan() { public ScanResult scan(Iterator<Integer> input) {
if (FourCornerDotCake.FC_NETHER.containsNot(cakePoint)) { if (FourCornerDotCake.FC_NETHER.containsNot(cakePoint)) {
return ScanResult.NEXT; return ScanResult.NEXT;
} }
List<Integer> result = new ArrayList<>(); List<Integer> result = new ArrayList<>();
ScanResult status = safeReadCakePoints(FourCornerDotCake.FC_NETHER.getStart(), FourCornerDotCake.FC_NETHER.getStop(), result); ScanResult status = safeReadCakePoints(input, FourCornerDotCake.FC_NETHER.getStart(), FourCornerDotCake.FC_NETHER.getStop(), result);
if (!result.isEmpty()) { if (!result.isEmpty()) {
handlePoints(result); handlePoints(result);
} }
@ -247,12 +267,12 @@ public class FourCornerZionStenoLexer {
class StenoScannerNCR18 implements StenoScanner { class StenoScannerNCR18 implements StenoScanner {
@Override @Override
public ScanResult scan() { public ScanResult scan(Iterator<Integer> input) {
if (cakePoint < FourCornerDotCake.FC_NCR1632_XD.getStart() || cakePoint > FourCornerDotCake.FC_NCR1632_XN.getStop()) { if (cakePoint < FourCornerDotCake.FC_NCR1632_XD.getStart() || cakePoint > FourCornerDotCake.FC_NCR1632_XN.getStop()) {
return ScanResult.NEXT; return ScanResult.NEXT;
} }
List<Integer> result = new ArrayList<>(); List<Integer> result = new ArrayList<>();
ScanResult status = safeReadCakePoints(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 four blocks
} }
@ -290,12 +310,12 @@ public class FourCornerZionStenoLexer {
class StenoScannerUNI21 implements StenoScanner { class StenoScannerUNI21 implements StenoScanner {
@Override @Override
public ScanResult scan() { public ScanResult scan(Iterator<Integer> input) {
if (cakePoint < FourCornerDotCake.FC_UNI2K_11.getStart() || cakePoint > FourCornerDotCake.FC_UNI2K_22.getStop()) { if (cakePoint < FourCornerDotCake.FC_UNI2K_11.getStart() || cakePoint > FourCornerDotCake.FC_UNI2K_22.getStop()) {
return ScanResult.NEXT; return ScanResult.NEXT;
} }
List<Integer> result = new ArrayList<>(); List<Integer> result = new ArrayList<>();
ScanResult status = safeReadCakePoints(FourCornerDotCake.FC_UNI2K_11.getStart(), FourCornerDotCake.FC_UNI2K_22.getStop(), result); ScanResult status = safeReadCakePoints(input, FourCornerDotCake.FC_UNI2K_11.getStart(), FourCornerDotCake.FC_UNI2K_22.getStop(), result);
if (!result.isEmpty()) { if (!result.isEmpty()) {
handlePoints(result); // mix of the two unicode blocks pages handlePoints(result); // mix of the two unicode blocks pages
} }
@ -318,18 +338,19 @@ public class FourCornerZionStenoLexer {
} }
} }
class StenoScannerCDC implements StenoScanner { class StenoScannerCDCDECMuffin implements StenoScanner {
Integer numberMode = null; private Integer numberMode = null;
boolean numberPIE = true; private boolean numberPIE = true;
private FCDotDEC0127DashPX0 decMode = null;
@Override @Override
public ScanResult scan() { public ScanResult scan(Iterator<Integer> input) {
if (FourCornerDotCake.FC_CDC1604_P6.containsNot(cakePoint)) { if (cakePoint < FourCornerDotCake.FC_CDC1604_P6.getStart() || cakePoint > FourCornerDotCake.__MIND_THE_GAP.getStop()) {
return ScanResult.NEXT; return ScanResult.NEXT;
} }
List<Integer> result = new ArrayList<>(); List<Integer> result = new ArrayList<>();
ScanResult status = safeReadCakePoints(FourCornerDotCake.FC_CDC1604_P6.getStart(), FourCornerDotCake.FC_CDC1604_P6.getStop(), result); ScanResult status = safeReadCakePoints(input, FourCornerDotCake.FC_CDC1604_P6.getStart(), FourCornerDotCake.__MIND_THE_GAP.getStop(), result);
if (!result.isEmpty()) { if (!result.isEmpty()) {
handlePoints(result); handlePoints(result);
} }
@ -341,33 +362,169 @@ public class FourCornerZionStenoLexer {
numberMode = null; numberMode = null;
numberPIE = true; numberPIE = true;
while (cdc.hasNext()) { while (cdc.hasNext()) {
Integer cdcPoint = cdc.next(); Integer muffinPoint = cdc.next();
if (FCDotCDC1604DashP6._NEWLINE.ordinal() == cdcPoint) { // Log state changes
if (FCDotCDC1604DashP6._NEWLINE.ordinal() == muffinPoint) {
currLine++; currLine++;
if (smokeSignals != null) { currCol = 0;
smokeSignals.burnNewLine(); if (fireSignals != null) {
fireSignals.fireStateLine(currLine);
fireSignals.fireStateColumn(currCol);
} }
} }
// Handle 8 and 18 bit direct cake points
if (FourCornerDotCake.FC_APL0127_P7A.contains(muffinPoint)) {
handler.strobeWords(FourCornerDotCake.FC_APL0127_P7A, List.of(muffinPoint));
continue;
}
if (FourCornerDotCake.FC_APL0127_P7B.contains(muffinPoint)) {
handler.strobeWords(FourCornerDotCake.FC_APL0127_P7B, List.of(muffinPoint));
continue;
}
if (FourCornerDotCake.FC_APL0127_P7C.contains(muffinPoint)) {
handler.strobeWords(FourCornerDotCake.FC_APL0127_P7C, List.of(muffinPoint));
continue;
}
if (FourCornerDotCake.FC_BYD0127_P7D.contains(muffinPoint)) {
handler.strobeWords(FourCornerDotCake.FC_BYD0127_P7D, List.of(muffinPoint));
continue;
}
if (FourCornerDotCake.FC_BYD0127_P7E.contains(muffinPoint)) {
handler.strobeWords(FourCornerDotCake.FC_BYD0127_P7E, List.of(muffinPoint));
continue;
}
if (FourCornerDotCake.FC_BYD0127_P7F.contains(muffinPoint)) {
handler.strobeWords(FourCornerDotCake.FC_BYD0127_P7F, List.of(muffinPoint));
continue;
}
if (FourCornerDotCake.__MIND_THE_GAP.contains(muffinPoint)) {
if (smokeSignals != null) {
smokeSignals.burnUnsupported(currLine, currCol, cakePoint);
}
continue;
}
if (handlerEscape) { if (handlerEscape) {
handleCDC(cdc, cdcPoint); // Handle 6 bit CDC and DEC 6/8/18 codes
handleCDCDEC(cdc, muffinPoint, null);
} else if (FourCornerDotCake.FC_DEC0127_PX0.contains(muffinPoint)) {
// No escaping, print DEC code for 8 and 18 bit
handler.strobeWords(FourCornerDotCake.FC_DEC0127_PX0, List.of(muffinPoint - FourCornerDotCake.FC_DEC0127_PX0.getStart()));
} else { } else {
handler.strobeWords(FourCornerDotCake.FC_CDC1604_P6, List.of(cdcPoint)); // No escaping, print CDC code
handler.strobeWords(FourCornerDotCake.FC_CDC1604_P6, List.of(muffinPoint));
} }
} }
} }
private void handleCDC(Iterator<Integer> cdc, Integer cdcPoint) { private FCDotDEC0127DashPX0 readEscape6(Iterator<Integer> cdc, Integer cdcPoint) {
if (FCDotCDC1604DashP6.__ESC6.ordinal() == cdcPoint) { // Read 8 or 18 bit Direct Escape Code
if (!cdc.hasNext()) { if (FourCornerDotCake.FC_DEC0127_PX0.contains(cdcPoint)) {
return; return FCDotDEC0127DashPX0.values()[cdcPoint - FourCornerDotCake.FC_DEC0127_PX0.getStart()];
} }
FCDotDEC1604DashP7 decCode = FCDotDEC1604DashP7.indexOf(cdc.next()); // Read 6 bit escape code
FCDotCDC1604DashP6 x1 = FCDotCDC1604DashP6.indexOf(cdcPoint);
FCDotCDC1604DashP6 x2 = null;
FCDotCDC1604DashP6 x3 = null;
if (!cdc.hasNext()) {
return null;
}
cdcPoint = cdc.next();
if (FCDotCDC1604DashP6.isEscape6(cdcPoint)) {
x2 = FCDotCDC1604DashP6.indexOf(cdcPoint);
} else {
return null;
}
if (!cdc.hasNext()) {
return null;
}
cdcPoint = cdc.next();
if (FCDotCDC1604DashP6.isEscape6(cdcPoint)) {
x3 = FCDotCDC1604DashP6.indexOf(cdcPoint);
} else {
return null;
}
return FCDotDEC0127DashPX0.valueOf(x1, x2, x3);
}
/// note; cdcPoint is always CDC or direct DEC escape code
private void handleCDCDEC(Iterator<Integer> cdc, Integer cdcPoint, FCDotDEC0127DashPX0 startMode) {
if (startMode != null) {
numberMode = null;
decMode = startMode;
}
// Start of escape
if (FCDotCDC1604DashP6.isEscape6(cdcPoint) || FourCornerDotCake.FC_DEC0127_PX0.contains(cdcPoint)) {
numberMode = null; // out of range, thus stop numberMode = null; // out of range, thus stop
Integer handled = handleEscape6(decCode, cdc); decMode = readEscape6(cdc, cdcPoint);
if (handled == null) { if (decMode == null) {
if (smokeSignals != null) {
smokeSignals.burnInvalidEscape(currLine, currCol, cdcPoint);
}
return; return;
} }
cdcPoint = handled; // out of range, is back to normal if (decMode == FCDotDEC0127DashPX0.ESC68_PIE || decMode == FCDotDEC0127DashPX0.ESC68_NCR) {
if (!cdc.hasNext()) {
return;
}
numberMode = cdc.next();
numberPIE = decMode == FCDotDEC0127DashPX0.ESC68_PIE; // is false for NCR
if (numberMode < FCDotCDC1604DashP6.NX01_A.ordinal()) {
cdcPoint = numberMode; // print char
numberMode = null; // invalid selector, thus stop
} else {
if (!cdc.hasNext()) {
return;
}
cdcPoint = cdc.next(); // fetch next letter, for number mode
}
} else {
boolean modeDone = readDECMode(cdc);
if (modeDone) {
return; // fetch next
}
if (!cdc.hasNext()) {
return;
}
cdcPoint = cdc.next(); // is used by readEscape6, thus read again
}
}
// Escape without body and new escape ...
if (FCDotCDC1604DashP6.isEscape6(cdcPoint) || FourCornerDotCake.FC_DEC0127_PX0.contains(cdcPoint)) {
//goto next_escape; TODO: add extra loop to remove stack here...
handleCDCDEC(cdc, cdcPoint, startMode);
return;
}
if (decMode == FCDotDEC0127DashPX0.ESC6_APL0127_P7A) {
handler.strobeWords(FourCornerDotCake.FC_APL0127_P7A, List.of(cdcPoint - FCDotCDC1604DashP6.NX01_A.ordinal()));
return;
}
if (decMode == FCDotDEC0127DashPX0.ESC6_APL0127_P7B) {
handler.strobeWords(FourCornerDotCake.FC_APL0127_P7B, List.of(cdcPoint - FCDotCDC1604DashP6.NX01_A.ordinal()));
return;
}
if (decMode == FCDotDEC0127DashPX0.ESC6_APL0127_P7C) {
handler.strobeWords(FourCornerDotCake.FC_APL0127_P7C, List.of(cdcPoint - FCDotCDC1604DashP6.NX01_A.ordinal()));
return;
}
if (decMode == FCDotDEC0127DashPX0.ESC6_BYD0127_P7D) {
handler.strobeWords(FourCornerDotCake.FC_BYD0127_P7D, List.of(cdcPoint - FCDotCDC1604DashP6.NX01_A.ordinal()));
return;
}
if (decMode == FCDotDEC0127DashPX0.ESC6_BYD0127_P7E) {
handler.strobeWords(FourCornerDotCake.FC_BYD0127_P7E, List.of(cdcPoint - FCDotCDC1604DashP6.NX01_A.ordinal()));
return;
}
if (decMode == FCDotDEC0127DashPX0.ESC6_BYD0127_P7F) {
handler.strobeWords(FourCornerDotCake.FC_BYD0127_P7F, List.of(cdcPoint - FCDotCDC1604DashP6.NX01_A.ordinal()));
return;
}
if (decMode == FCDotDEC0127DashPX0.ESC_STOP) {
decMode = null;
numberMode = null; // stop requested, print normal
} }
if (numberMode != null && (cdcPoint > numberMode)) { if (numberMode != null && (cdcPoint > numberMode)) {
numberMode = null; // out of range numberMode = null; // out of range
@ -375,21 +532,15 @@ public class FourCornerZionStenoLexer {
if (numberMode != null && (cdcPoint < FCDotCDC1604DashP6.NX01_A.ordinal())) { if (numberMode != null && (cdcPoint < FCDotCDC1604DashP6.NX01_A.ordinal())) {
numberMode = null; // below index 1 is end number mode numberMode = null; // below index 1 is end number mode
} }
if (FCDotCDC1604DashP6.__PIE68.ordinal() == cdcPoint || FCDotCDC1604DashP6.__NCR68.ordinal() == cdcPoint) {
if (!cdc.hasNext()) {
return;
}
numberMode = cdc.next();
numberPIE = FCDotCDC1604DashP6.__PIE68.ordinal() == cdcPoint; // is false for PIN
if (numberMode != null && numberMode < FCDotCDC1604DashP6.NX01_A.ordinal()) {
cdcPoint = numberMode; // print char
numberMode = null; // illegal number mode
} else {
return;
}
}
if (numberMode == null) { if (numberMode == null) {
handler.strobeWords(FourCornerDotCake.FC_CDC1604_P6, List.of(cdcPoint)); Optional<FourCornerDotCake> slice = FourCornerDotCake.valueFromCakePoint(cdcPoint);
if (slice.isEmpty()) {
if (smokeSignals != null) {
smokeSignals.burnUnsupported(currLine, currCol, cdcPoint);
}
return;
}
handler.strobeWords(slice.get(), List.of(cdcPoint));
return; return;
} }
if (numberPIE) { if (numberPIE) {
@ -405,75 +556,108 @@ public class FourCornerZionStenoLexer {
handler.strobeNCR1632(denominator, numerator); handler.strobeNCR1632(denominator, numerator);
} }
} }
}
private boolean readDECMode(Iterator<Integer> cdc) {
class StenoScannerDEC implements StenoScanner { for (FCDotDEC0127DashPX0 salahMode : FCDotDEC0127DashPX0.values()) {
if (!salahMode.isExternal()) {
@Override continue;
public ScanResult scan() { }
if (FourCornerDotCake.FC_DEC1604_P7.containsNot(cakePoint)) { if (salahMode.equals(decMode)) {
return ScanResult.NEXT; if (salahMode.name().startsWith("__")) {
} if (smokeSignals != null) {
Integer decPoint = cakePoint - FourCornerDotCake.FC_DEC1604_P7.getLength(); smokeSignals.burnInvalidSalah(currLine, currCol);
FCDotDEC1604DashP7 decCode = FCDotDEC1604DashP7.indexOf(decPoint); }
if (handlerEscape) { return false;
//numberMode = null; // out of range, thus stop }
Integer handled = handleEscape6(decCode, input); List<List<Integer>> args = new ArrayList<>();
if (handled == null) { scanSalahRakaAt(cdc, args);
return safeNext(); if (!args.isEmpty() && handlerSalahSequence != null) {
handlerSalahSequence.strobeSalahSequence(salahMode, args);
}
return true;
} }
//cakePoint = handled; // out of range, is back to normal
} }
handler.strobeWords(FourCornerDotCake.FC_DEC1604_P7, List.of(decPoint)); if (FCDotDEC0127DashPX0.ESC68_FC18.equals(decMode)) {
return safeNext(); List<List<Integer>> result = new ArrayList<>();
} scanSalahRakaAt(cdc, result);
} if (!result.isEmpty()) {
List<Integer> renderCakePoints = new ArrayList<>();
private Integer handleEscape6(FCDotDEC1604DashP7 decCode, Iterator<Integer> cdc) { for (List<Integer> argu : result) {
if (FCDotDEC1604DashP7.__NUL_DEC.equals(decCode)) { int cakePointArgu = 0;
return null; int cakePointIdx = 6;
} for (Integer octal : argu) {
if (FCDotDEC1604DashP7.__ESC6_APL.equals(decCode)) { if (octal < FCDotCDC1604DashP6.NX01_A.ordinal()) {
if (!cdc.hasNext()) { continue;
return null; }
if (octal > FCDotCDC1604DashP6.NX08_H.ordinal()) {
continue;
}
int offset = octal - FCDotCDC1604DashP6.NX01_A.ordinal();
cakePointArgu = cakePointArgu + (offset << (cakePointIdx*3));
cakePointIdx--;
if (cakePointIdx < 0) {
renderCakePoints.add(cakePointArgu);
cakePointIdx = 6;
cakePointArgu = 0;
}
}
}
read(renderCakePoints);
return true;
}
} }
FCDotAPL1604DashP8L aplCode = FCDotAPL1604DashP8L.indexOf(cdc.next()); return false;
handler.strobeWords(FourCornerDotCake.FC_APL1604_P8L, List.of(aplCode.ordinal()));
return null;
} }
if (FCDotDEC1604DashP7.__ESC6_BYD.equals(decCode)) {
if (!cdc.hasNext()) { private ScanResult scanSalahRakaAt(Iterator<Integer> input, List<List<Integer>> result) {
return null; List<Integer> argu = new ArrayList<>();
while (input.hasNext()) {
int cdcPoint = input.next();
if (cdcPoint == FCDotCDC1604DashP6._NUL.ordinal()) {
if (smokeSignals != null) {
smokeSignals.burnInvalidSalah(currLine, currCol);
}
result.clear();
return ScanResult.NEXT; // _NUL not allowed salah
}
if (FCDotCDC1604DashP6.isEscape6(cdcPoint) || FourCornerDotCake.FC_DEC0127_PX0.contains(cdcPoint)) {
FCDotDEC0127DashPX0 embedESC = readEscape6(input, cdcPoint);
if (embedESC == null) {
if (smokeSignals != null) {
smokeSignals.burnInvalidEscape(currLine, currCol, cdcPoint);
}
result.clear();
return ScanResult.NEXT;
}
if (FCDotDEC0127DashPX0.ESC_SEQ_SALAH.equals(embedESC)) {
result.add(argu);
return ScanResult.DONE; // 6/8/18 bits are DONE
}
if (FCDotDEC0127DashPX0.ESC_SEQ_RAKA_AT.equals(embedESC)) {
result.add(argu);
argu = new ArrayList<>();
if (safeNext(input).isEOF()) {
return ScanResult.EOF;
}
continue; // Next argument
}
if (!embedESC.isEmbeddable()) {
if (smokeSignals != null) {
smokeSignals.burnInvalidEscape(currLine, currCol, cdcPoint);
}
result.clear();
return ScanResult.NEXT;
}
handleCDCDEC(input, cdcPoint, embedESC);
continue;
}
argu.add(cdcPoint);
} }
FCDotBYD1604DashP8H bydCode = FCDotBYD1604DashP8H.indexOf(cdc.next()); if (smokeSignals != null) {
handler.strobeWords(FourCornerDotCake.FC_BYD1604_P8H, List.of(bydCode.ordinal())); smokeSignals.burnInvalidSalah(currLine, currCol);
return null;
}
if (FCDotDEC1604DashP7.__ESC_STOP.equals(decCode)) {
return null;
}
if (FCDotDEC1604DashP7.__ESC68_FC18.equals(decCode)) {
return decCode.ordinal(); // todo handle
}
if (FCDotDEC1604DashP7.__ESC18_NETHER.equals(decCode)) {
if (!cdc.hasNext()) {
return null;
} }
// buf.append(FCDotCDC1604DashP6.escapeSignUnicode(FCDotCDC1604DashP6.__ESC6.ordinal()));// TODO: add new symbol result.clear();
// TODO: eat header and eat data, as we can't display it return ScanResult.NEXT;
return null;
} }
if (FCDotDEC1604DashP7.VT_RAKA_AT.equals(decCode)) {
return decCode.ordinal(); // todo handle
}
if (FCDotDEC1604DashP7.VT_SALAH.equals(decCode)) {
return decCode.ordinal(); // todo handle
}
if (handlerRocket == null) {
handler.strobeWords(FourCornerDotCake.FC_DEC1604_P7, List.of(decCode.ordinal()));
} else {
handlerRocket.strobeSalahRaka(decCode.cakePoints()[0]);
}
return null;
} }
} }

View file

@ -0,0 +1,36 @@
/*
* 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.o2o.fc18.zion7;
/// Provides lexer fire state signals.
///
/// @author Willem Cazander
/// @version 1.0 Jan 13, 2025
public interface FourCornerZionStenoLexerFire {
default void fireStateLine(int line) {
}
default void fireStateColumn(int column) {
}
}

View file

@ -28,8 +28,15 @@ package org.x4o.o2o.fc18.zion7;
/// @version 1.0 Jan 12, 2025 /// @version 1.0 Jan 12, 2025
public interface FourCornerZionStenoLexerSmoke { public interface FourCornerZionStenoLexerSmoke {
default void burnNewLine() { default void burnUnsupported(int line, int col, int cakePoint) {
} }
void burnUnsupported(int line, int col, int cakePoint); default void burnRecursive(int line, int col) {
}
default void burnInvalidSalah(int line, int col) {
}
default void burnInvalidEscape(int line, int col, int cakePoint) {
}
} }

View file

@ -40,7 +40,7 @@ public class FourCornerDotCakeTest {
Assertions.assertNotNull(v); Assertions.assertNotNull(v);
Assertions.assertTrue(v.getStart() <= v.getStop(), "Start is larger than stop in: " + v.name()); Assertions.assertTrue(v.getStart() <= v.getStop(), "Start is larger than stop in: " + v.name());
sizeTotal += v.getLength(); sizeTotal += v.getLength();
System.out.println("Cake start: 0x" + Integer.toHexString(v.getStart()) + " end: 0" + Integer.toHexString(v.getStop()) + " of " + v.name() + " size: " + v.getLength()); //System.out.println("Cake start: 0x" + Integer.toHexString(v.getStart()) + " end: 0" + Integer.toHexString(v.getStop()) + " of " + v.name() + " size: " + v.getLength());
} }
Assertions.assertEquals(262144, sizeTotal); Assertions.assertEquals(262144, sizeTotal);
} }

View file

@ -30,7 +30,7 @@ import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.x4o.o2o.fc18.pie9c.FCDotPIE9CDash26; import org.x4o.o2o.fc18.pie9c.FCDotPIE9CDash26;
import org.x4o.o2o.fc18.zero33.FCDotCDC1604DashP6; import org.x4o.o2o.fc18.zero33.FCDotCDC1604DashP6;
import org.x4o.o2o.fc18.zero33.FCDotDEC1604DashP7; import org.x4o.o2o.fc18.zero33.FCDotDEC0127DashPX0;
/** /**
* Tests four corner displayed as unicode. * Tests four corner displayed as unicode.
@ -45,7 +45,7 @@ public class FourCornerUnicodeDisplayTest {
List<FourCornerX06BaklavaPoints> cdc = new ArrayList<>(); List<FourCornerX06BaklavaPoints> cdc = new ArrayList<>();
cdc.add(FCDotCDC1604DashP6.NX24_X); // = X cdc.add(FCDotCDC1604DashP6.NX24_X); // = X
cdc.add(FCDotCDC1604DashP6.EQUALS); cdc.add(FCDotCDC1604DashP6.EQUALS);
cdc.add(FCDotCDC1604DashP6.__NCR68); cdc.addAll(FCDotDEC0127DashPX0.ESC68_NCR.toX06BaklavaPoints());
cdc.add(FCDotCDC1604DashP6.NX15_O); // T015 cdc.add(FCDotCDC1604DashP6.NX15_O); // T015
cdc.add(FCDotCDC1604DashP6.NX14_N); // NXX_014 cdc.add(FCDotCDC1604DashP6.NX14_N); // NXX_014
cdc.add(FCDotCDC1604DashP6.NX05_E); // NXX_005 cdc.add(FCDotCDC1604DashP6.NX05_E); // NXX_005
@ -56,7 +56,7 @@ public class FourCornerUnicodeDisplayTest {
cdc.add(FCDotCDC1604DashP6._NEWLINE); cdc.add(FCDotCDC1604DashP6._NEWLINE);
Assertions.assertEquals("X=¹⁴/₁₅⁵/₁₅⁷/₁₅¹⁵/₁₅⁴/₁₅;\n", FourCornerUnicodeDisplay.text().renderFromX06(cdc)); Assertions.assertEquals("X=¹⁴/₁₅⁵/₁₅⁷/₁₅¹⁵/₁₅⁴/₁₅;\n", FourCornerUnicodeDisplay.text().renderFromX06(cdc));
Assertions.assertEquals("X=␂ONEGOD;\n", FourCornerUnicodeDisplay.raw().renderFromX06(cdc)); Assertions.assertEquals("X=␃␃␂ONEGOD;\n", FourCornerUnicodeDisplay.raw().renderFromX06(cdc));
} }
@Test @Test
@ -99,27 +99,27 @@ public class FourCornerUnicodeDisplayTest {
cdc.add(FCDotCDC1604DashP6.NX03_C); cdc.add(FCDotCDC1604DashP6.NX03_C);
cdc.add(FCDotCDC1604DashP6.NX04_D); cdc.add(FCDotCDC1604DashP6.NX04_D);
cdc.add(FCDotCDC1604DashP6.DOT); cdc.add(FCDotCDC1604DashP6.DOT);
cdc.add(FCDotCDC1604DashP6.__PIE68); cdc.addAll(FCDotDEC0127DashPX0.ESC68_PIE.toX06BaklavaPoints());
cdc.add(FCDotCDC1604DashP6.NX26_Z); // select lower case cdc.add(FCDotCDC1604DashP6.NX26_Z); // select lower case
cdc.add(FCDotCDC1604DashP6.NX10_J); cdc.add(FCDotCDC1604DashP6.NX10_J);
cdc.add(FCDotCDC1604DashP6.NX11_K); cdc.add(FCDotCDC1604DashP6.NX11_K);
cdc.add(FCDotCDC1604DashP6.NX12_L); cdc.add(FCDotCDC1604DashP6.NX12_L);
cdc.add(FCDotCDC1604DashP6.NX13_M); cdc.add(FCDotCDC1604DashP6.NX13_M);
cdc.add(FCDotDEC1604DashP7.__ESC_STOP); cdc.addAll(FCDotDEC0127DashPX0.ESC_STOP.toX06BaklavaPoints());
cdc.add(FCDotCDC1604DashP6.NX15_O); cdc.add(FCDotCDC1604DashP6.NX15_O);
Assertions.assertEquals("ab BCD.jklmO", FourCornerUnicodeDisplay.text().renderFromX06(cdc)); Assertions.assertEquals("ab BCD.jklmO", FourCornerUnicodeDisplay.text().renderFromX06(cdc));
Assertions.assertEquals("␁ZA␁ZB BCD.␁ZJKLM␃␃O", FourCornerUnicodeDisplay.raw().renderFromX06(cdc)); Assertions.assertEquals("␃␃␁ZA␃␃␁ZB BCD.␃␃␁ZJKLM␃␃O", FourCornerUnicodeDisplay.raw().renderFromX06(cdc));
} }
@Test @Test
public void testNumberTerminatorOutOfRange() throws Exception { public void testNumberTerminatorOutOfRange() throws Exception {
List<FourCornerX06BaklavaPoints> cdc = new ArrayList<>(); List<FourCornerX06BaklavaPoints> cdc = new ArrayList<>();
cdc.add(FCDotCDC1604DashP6.NX24_X); // = X cdc.add(FCDotCDC1604DashP6.NX24_X); // = X
cdc.add(FCDotCDC1604DashP6.__PIE68); cdc.addAll(FCDotDEC0127DashPX0.ESC68_PIE.toX06BaklavaPoints());
cdc.add(FCDotCDC1604DashP6.CARET); // ^ cdc.add(FCDotCDC1604DashP6.CARET); // ^
cdc.add(FCDotCDC1604DashP6.PERCENT); // = % cdc.add(FCDotCDC1604DashP6.PERCENT); // = %
cdc.add(FCDotCDC1604DashP6.__PIE68); cdc.addAll(FCDotDEC0127DashPX0.ESC68_PIE.toX06BaklavaPoints());
cdc.add(FCDotCDC1604DashP6.AT); cdc.add(FCDotCDC1604DashP6.AT);
cdc.add(FCDotCDC1604DashP6.NX11_K); // = K cdc.add(FCDotCDC1604DashP6.NX11_K); // = K
@ -129,10 +129,10 @@ public class FourCornerUnicodeDisplayTest {
@Test @Test
public void testNumberPieOutOfRange() throws Exception { public void testNumberPieOutOfRange() throws Exception {
List<FourCornerX06BaklavaPoints> cdc = new ArrayList<>(); List<FourCornerX06BaklavaPoints> cdc = new ArrayList<>();
cdc.add(FCDotCDC1604DashP6.__PIE68); cdc.addAll(FCDotDEC0127DashPX0.ESC68_PIE.toX06BaklavaPoints());
cdc.add(FCDotCDC1604DashP6.NX01_A); cdc.add(FCDotCDC1604DashP6.NX01_A);
cdc.add(FCDotCDC1604DashP6.NX02_B); // B cdc.add(FCDotCDC1604DashP6.NX02_B); // B
cdc.add(FCDotCDC1604DashP6.__PIE68); cdc.addAll(FCDotDEC0127DashPX0.ESC68_PIE.toX06BaklavaPoints());
cdc.add(FCDotCDC1604DashP6.NX10_J); cdc.add(FCDotCDC1604DashP6.NX10_J);
cdc.add(FCDotCDC1604DashP6.NX04_D); // 3 cdc.add(FCDotCDC1604DashP6.NX04_D); // 3
cdc.add(FCDotCDC1604DashP6.NX11_K); // K cdc.add(FCDotCDC1604DashP6.NX11_K); // K
@ -157,5 +157,15 @@ public class FourCornerUnicodeDisplayTest {
int bitsUTF8 = outputExpected.getBytes(StandardCharsets.UTF_8).length*8; int bitsUTF8 = outputExpected.getBytes(StandardCharsets.UTF_8).length*8;
int bitsFC18 = cdc.size()*18; int bitsFC18 = cdc.size()*18;
Assertions.assertTrue(bitsFC18 < bitsUTF8, "FC18 is not smaller"); Assertions.assertTrue(bitsFC18 < bitsUTF8, "FC18 is not smaller");
List<Integer> cdc6 = FourCornerUnicodeMapper.DICTIONARY.embedFC18(cdc);
Assertions.assertEquals(outputExpected, FourCornerUnicodeDisplay.text().renderFromInt18(cdc6));
Assertions.assertTrue(cdc6.size() > cdc.size(), "FCx6 is not bigger");
System.out.println("size FC18="+cdc.size());
System.out.println("size 0x21="+outputExpected.length());
System.out.println("size UTF8="+outputExpected.getBytes(StandardCharsets.UTF_8).length);
System.out.println("size FCx6="+cdc6.size());
System.out.println("raw FCx6="+FourCornerUnicodeDisplay.raw().renderFromInt18(cdc6));
} }
} }

View file

@ -29,7 +29,7 @@ import org.junit.jupiter.api.Test;
import org.x4o.o2o.fc18.pie9c.FCDotPIE9CDash10; import org.x4o.o2o.fc18.pie9c.FCDotPIE9CDash10;
import org.x4o.o2o.fc18.pie9c.FCDotPIE9CDash26; import org.x4o.o2o.fc18.pie9c.FCDotPIE9CDash26;
import org.x4o.o2o.fc18.zero33.FCDotCDC1604DashP6; import org.x4o.o2o.fc18.zero33.FCDotCDC1604DashP6;
import org.x4o.o2o.fc18.zero33.FCDotDEC1604DashP7; import org.x4o.o2o.fc18.zero33.FCDotDEC0127DashPX0;
/** /**
* Tests four corner unicode import. * Tests four corner unicode import.
@ -61,15 +61,17 @@ public class FourCornerUnicodeImportTest {
List<FourCornerX06BaklavaPoints> cdc = FourCornerUnicodeImport.strict().convertToX06("foobar"); List<FourCornerX06BaklavaPoints> cdc = FourCornerUnicodeImport.strict().convertToX06("foobar");
Assertions.assertNotNull(cdc); Assertions.assertNotNull(cdc);
Assertions.assertFalse(cdc.isEmpty()); Assertions.assertFalse(cdc.isEmpty());
Assertions.assertEquals(8, cdc.size()); Assertions.assertEquals(10, cdc.size());
Assertions.assertEquals(FCDotCDC1604DashP6.__PIE68, cdc.get(0)); Assertions.assertEquals(FCDotCDC1604DashP6._ESC6_X3, cdc.get(0));
Assertions.assertEquals(FCDotCDC1604DashP6.NX26_Z, cdc.get(1)); Assertions.assertEquals(FCDotCDC1604DashP6._ESC6_X3, cdc.get(1));
Assertions.assertEquals(FCDotCDC1604DashP6.NX06_F, cdc.get(2)); Assertions.assertEquals(FCDotCDC1604DashP6._ESC6_X1, cdc.get(2));
Assertions.assertEquals(FCDotCDC1604DashP6.NX15_O, cdc.get(3)); Assertions.assertEquals(FCDotCDC1604DashP6.NX26_Z, cdc.get(3));
Assertions.assertEquals(FCDotCDC1604DashP6.NX15_O, cdc.get(4)); Assertions.assertEquals(FCDotCDC1604DashP6.NX06_F, cdc.get(4));
Assertions.assertEquals(FCDotCDC1604DashP6.NX02_B, cdc.get(5)); Assertions.assertEquals(FCDotCDC1604DashP6.NX15_O, cdc.get(5));
Assertions.assertEquals(FCDotCDC1604DashP6.NX01_A, cdc.get(6)); Assertions.assertEquals(FCDotCDC1604DashP6.NX15_O, cdc.get(6));
Assertions.assertEquals(FCDotCDC1604DashP6.NX18_R, cdc.get(7)); Assertions.assertEquals(FCDotCDC1604DashP6.NX02_B, cdc.get(7));
Assertions.assertEquals(FCDotCDC1604DashP6.NX01_A, cdc.get(8));
Assertions.assertEquals(FCDotCDC1604DashP6.NX18_R, cdc.get(9));
String out = FourCornerUnicodeDisplay.text().renderFromX06(cdc); String out = FourCornerUnicodeDisplay.text().renderFromX06(cdc);
Assertions.assertEquals("foobar", out); Assertions.assertEquals("foobar", out);
@ -80,17 +82,20 @@ public class FourCornerUnicodeImportTest {
List<FourCornerX06BaklavaPoints> cdc = FourCornerUnicodeImport.strict().convertToX06("fooBAR"); List<FourCornerX06BaklavaPoints> cdc = FourCornerUnicodeImport.strict().convertToX06("fooBAR");
Assertions.assertNotNull(cdc); Assertions.assertNotNull(cdc);
Assertions.assertFalse(cdc.isEmpty()); Assertions.assertFalse(cdc.isEmpty());
Assertions.assertEquals(10, cdc.size()); // = 60 bit Assertions.assertEquals(13, cdc.size());
Assertions.assertEquals(FCDotCDC1604DashP6.__PIE68, cdc.get(0)); Assertions.assertEquals(FCDotCDC1604DashP6._ESC6_X3, cdc.get(0));
Assertions.assertEquals(FCDotCDC1604DashP6.NX26_Z, cdc.get(1)); Assertions.assertEquals(FCDotCDC1604DashP6._ESC6_X3, cdc.get(1));
Assertions.assertEquals(FCDotCDC1604DashP6.NX06_F, cdc.get(2)); Assertions.assertEquals(FCDotCDC1604DashP6._ESC6_X1, cdc.get(2));
Assertions.assertEquals(FCDotCDC1604DashP6.NX15_O, cdc.get(3)); Assertions.assertEquals(FCDotCDC1604DashP6.NX26_Z, cdc.get(3));
Assertions.assertEquals(FCDotCDC1604DashP6.NX15_O, cdc.get(4)); Assertions.assertEquals(FCDotCDC1604DashP6.NX06_F, cdc.get(4));
Assertions.assertEquals(FCDotCDC1604DashP6.__ESC6, cdc.get(5)); Assertions.assertEquals(FCDotCDC1604DashP6.NX15_O, cdc.get(5));
Assertions.assertEquals(FCDotCDC1604DashP6.__ESC6, cdc.get(6)); Assertions.assertEquals(FCDotCDC1604DashP6.NX15_O, cdc.get(6));
Assertions.assertEquals(FCDotCDC1604DashP6.NX02_B, cdc.get(7)); Assertions.assertEquals(FCDotCDC1604DashP6._ESC6_X3, cdc.get(7));
Assertions.assertEquals(FCDotCDC1604DashP6.NX01_A, cdc.get(8)); Assertions.assertEquals(FCDotCDC1604DashP6._ESC6_X3, cdc.get(8));
Assertions.assertEquals(FCDotCDC1604DashP6.NX18_R, cdc.get(9)); Assertions.assertEquals(FCDotCDC1604DashP6._ESC6_X3, cdc.get(9));
Assertions.assertEquals(FCDotCDC1604DashP6.NX02_B, cdc.get(10));
Assertions.assertEquals(FCDotCDC1604DashP6.NX01_A, cdc.get(11));
Assertions.assertEquals(FCDotCDC1604DashP6.NX18_R, cdc.get(12));
String out = FourCornerUnicodeDisplay.text().renderFromX06(cdc); String out = FourCornerUnicodeDisplay.text().renderFromX06(cdc);
Assertions.assertEquals("fooBAR", out); Assertions.assertEquals("fooBAR", out);
@ -101,13 +106,13 @@ public class FourCornerUnicodeImportTest {
List<FourCornerX08MuffinPoints> cdc = FourCornerUnicodeImport.strict().convertToX08("fooBAR"); List<FourCornerX08MuffinPoints> cdc = FourCornerUnicodeImport.strict().convertToX08("fooBAR");
Assertions.assertNotNull(cdc); Assertions.assertNotNull(cdc);
Assertions.assertFalse(cdc.isEmpty()); Assertions.assertFalse(cdc.isEmpty());
Assertions.assertEquals(9, cdc.size()); // = 72 bit Assertions.assertEquals(9, cdc.size());
Assertions.assertEquals(FCDotCDC1604DashP6.__PIE68, cdc.get(0)); Assertions.assertEquals(FCDotDEC0127DashPX0.ESC68_PIE, cdc.get(0));
Assertions.assertEquals(FCDotCDC1604DashP6.NX26_Z, cdc.get(1)); Assertions.assertEquals(FCDotCDC1604DashP6.NX26_Z, cdc.get(1));
Assertions.assertEquals(FCDotCDC1604DashP6.NX06_F, cdc.get(2)); Assertions.assertEquals(FCDotCDC1604DashP6.NX06_F, cdc.get(2));
Assertions.assertEquals(FCDotCDC1604DashP6.NX15_O, cdc.get(3)); Assertions.assertEquals(FCDotCDC1604DashP6.NX15_O, cdc.get(3));
Assertions.assertEquals(FCDotCDC1604DashP6.NX15_O, cdc.get(4)); Assertions.assertEquals(FCDotCDC1604DashP6.NX15_O, cdc.get(4));
Assertions.assertEquals(FCDotDEC1604DashP7.__ESC_STOP, cdc.get(5)); Assertions.assertEquals(FCDotDEC0127DashPX0.ESC_STOP, cdc.get(5));
Assertions.assertEquals(FCDotCDC1604DashP6.NX02_B, cdc.get(6)); Assertions.assertEquals(FCDotCDC1604DashP6.NX02_B, cdc.get(6));
Assertions.assertEquals(FCDotCDC1604DashP6.NX01_A, cdc.get(7)); Assertions.assertEquals(FCDotCDC1604DashP6.NX01_A, cdc.get(7));
Assertions.assertEquals(FCDotCDC1604DashP6.NX18_R, cdc.get(8)); Assertions.assertEquals(FCDotCDC1604DashP6.NX18_R, cdc.get(8));
@ -163,17 +168,19 @@ public class FourCornerUnicodeImportTest {
List<FourCornerX06BaklavaPoints> cdc = FourCornerUnicodeImport.strict().convertToX06("01201337"); List<FourCornerX06BaklavaPoints> cdc = FourCornerUnicodeImport.strict().convertToX06("01201337");
Assertions.assertNotNull(cdc); Assertions.assertNotNull(cdc);
Assertions.assertFalse(cdc.isEmpty()); Assertions.assertFalse(cdc.isEmpty());
Assertions.assertEquals(10, cdc.size()); Assertions.assertEquals(12, cdc.size());
Assertions.assertEquals(FCDotCDC1604DashP6.__PIE68, cdc.get(0)); Assertions.assertEquals(FCDotCDC1604DashP6._ESC6_X3, cdc.get(0));
Assertions.assertEquals(FCDotCDC1604DashP6.NX10_J, cdc.get(1)); Assertions.assertEquals(FCDotCDC1604DashP6._ESC6_X3, cdc.get(1));
Assertions.assertEquals(FCDotCDC1604DashP6.NX01_A, cdc.get(2)); // 0 Assertions.assertEquals(FCDotCDC1604DashP6._ESC6_X1, cdc.get(2));
Assertions.assertEquals(FCDotCDC1604DashP6.NX02_B, cdc.get(3)); // 1 Assertions.assertEquals(FCDotCDC1604DashP6.NX10_J, cdc.get(3));
Assertions.assertEquals(FCDotCDC1604DashP6.NX03_C, cdc.get(4)); // 2 Assertions.assertEquals(FCDotCDC1604DashP6.NX01_A, cdc.get(4)); // 0
Assertions.assertEquals(FCDotCDC1604DashP6.NX01_A, cdc.get(5)); // 0 Assertions.assertEquals(FCDotCDC1604DashP6.NX02_B, cdc.get(5)); // 1
Assertions.assertEquals(FCDotCDC1604DashP6.NX02_B, cdc.get(6)); // 1 Assertions.assertEquals(FCDotCDC1604DashP6.NX03_C, cdc.get(6)); // 2
Assertions.assertEquals(FCDotCDC1604DashP6.NX04_D, cdc.get(7)); // 3 Assertions.assertEquals(FCDotCDC1604DashP6.NX01_A, cdc.get(7)); // 0
Assertions.assertEquals(FCDotCDC1604DashP6.NX04_D, cdc.get(8)); // 3 Assertions.assertEquals(FCDotCDC1604DashP6.NX02_B, cdc.get(8)); // 1
Assertions.assertEquals(FCDotCDC1604DashP6.NX08_H, cdc.get(9)); // 7 Assertions.assertEquals(FCDotCDC1604DashP6.NX04_D, cdc.get(9)); // 3
Assertions.assertEquals(FCDotCDC1604DashP6.NX04_D, cdc.get(10)); // 3
Assertions.assertEquals(FCDotCDC1604DashP6.NX08_H, cdc.get(11)); // 7
String out = FourCornerUnicodeDisplay.text().renderFromX06(cdc); String out = FourCornerUnicodeDisplay.text().renderFromX06(cdc);
Assertions.assertEquals("01201337", out); Assertions.assertEquals("01201337", out);
@ -185,7 +192,7 @@ public class FourCornerUnicodeImportTest {
Assertions.assertNotNull(cdc); Assertions.assertNotNull(cdc);
Assertions.assertFalse(cdc.isEmpty()); Assertions.assertFalse(cdc.isEmpty());
Assertions.assertEquals(10, cdc.size()); Assertions.assertEquals(10, cdc.size());
Assertions.assertEquals(FCDotCDC1604DashP6.__PIE68, cdc.get(0)); Assertions.assertEquals(FCDotDEC0127DashPX0.ESC68_PIE, cdc.get(0));
Assertions.assertEquals(FCDotCDC1604DashP6.NX10_J, cdc.get(1)); Assertions.assertEquals(FCDotCDC1604DashP6.NX10_J, cdc.get(1));
Assertions.assertEquals(FCDotCDC1604DashP6.NX01_A, cdc.get(2)); // 0 Assertions.assertEquals(FCDotCDC1604DashP6.NX01_A, cdc.get(2)); // 0
Assertions.assertEquals(FCDotCDC1604DashP6.NX02_B, cdc.get(3)); // 1 Assertions.assertEquals(FCDotCDC1604DashP6.NX02_B, cdc.get(3)); // 1

View file

@ -28,10 +28,16 @@ import java.nio.file.Files;
import java.nio.file.StandardOpenOption; import java.nio.file.StandardOpenOption;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.function.Function;
import org.x4o.o2o.fc18.zero33.FCDotAPL1604DashP8L; import org.x4o.o2o.fc18.zero33.FCDotAPL0127DashP7A;
import org.x4o.o2o.fc18.zero33.FCDotBYD1604DashP8H; import org.x4o.o2o.fc18.zero33.FCDotAPL0127DashP7B;
import org.x4o.o2o.fc18.zero33.FCDotAPL0127DashP7C;
import org.x4o.o2o.fc18.zero33.FCDotBYD0127DashP7D;
import org.x4o.o2o.fc18.zero33.FCDotBYD0127DashP7E;
import org.x4o.o2o.fc18.zero33.FCDotBYD0127DashP7F;
import org.x4o.o2o.fc18.zero33.FCDotCDC1604DashP6; import org.x4o.o2o.fc18.zero33.FCDotCDC1604DashP6;
import org.x4o.o2o.fc18.zero33.FCDotDEC0127DashPX0;
/** /**
* Writes fc example markdown document. * Writes fc example markdown document.
@ -70,25 +76,25 @@ public class FourCornerWriteExampleMD {
writeTableEnd(buf); writeTableEnd(buf);
buf.append("<br><br>\n"); buf.append("<br><br>\n");
writeTitle3(buf, "FC.APL1604-S6"); int startAPL = FourCornerDotCake.FC_APL0127_P7A.getStart();
writeTableStart17(buf); writeTitle3(buf, "FC.APL0127-P7(ABC)");
writeAPL(buf, 0x00); writeTableStart28(buf);
writeAPL(buf, 0x10); writeAPL(buf, startAPL + 0, v -> FCDotAPL0127DashP7A.indexOf(v).codePoints()[0]);
writeAPL(buf, 0x20); writeAPL(buf, startAPL + 27, v -> FCDotAPL0127DashP7B.indexOf(v).codePoints()[0]);
writeAPL(buf, 0x30); writeAPL(buf, startAPL + 54, v -> FCDotAPL0127DashP7C.indexOf(v).codePoints()[0]);
writeTableEnd(buf); writeTableEnd(buf);
buf.append("<br><br>\n"); buf.append("<br><br>\n");
writeTitle3(buf, "FC.BYD1604-C6"); int startBYD = FourCornerDotCake.FC_BYD0127_P7D.getStart();
writeTableStart17(buf); writeTitle3(buf, "FC.BYD0127-P7(DEF)");
writeBYD(buf, 0x00); writeTableStart28(buf);
writeBYD(buf, 0x10); writeBYD(buf, startBYD + 0, v -> FCDotBYD0127DashP7D.indexOf(v).codePoints()[0]);
writeBYD(buf, 0x20); writeBYD(buf, startBYD + 27, v -> FCDotBYD0127DashP7E.indexOf(v).codePoints()[0]);
writeBYD(buf, 0x30); writeBYD(buf, startBYD + 54, v -> FCDotBYD0127DashP7F.indexOf(v).codePoints()[0]);
writeTableEnd(buf); writeTableEnd(buf);
buf.append("<br><br>\n"); buf.append("<br><br>\n");
writeTitle3(buf, "FC.PIE9C-XX"); writeTitle3(buf, "FC.PIE9C-(01-27)");
writeTableStart28(buf); writeTableStart28(buf);
writePIE(buf, FourCornerDotCake.FC_PIE9C_01); writePIE(buf, FourCornerDotCake.FC_PIE9C_01);
writePIE(buf, FourCornerDotCake.FC_PIE9C_02); writePIE(buf, FourCornerDotCake.FC_PIE9C_02);
@ -185,15 +191,16 @@ public class FourCornerWriteExampleMD {
buf.append("</tr>\n"); buf.append("</tr>\n");
} }
private void writeAPL(StringBuilder buf, int off) { private void writeAPL(StringBuilder buf, int off, Function<Integer, Integer> conv) {
String prefixHex = Integer.toHexString(0x80 + off).toUpperCase(); String prefixHex = Integer.toHexString(off).toUpperCase();
buf.append("<tr>"); buf.append("<tr>");
buf.append("<td>U+0000"); buf.append("<td>U+0000");
buf.append(prefixHex.charAt(0)); buf.append(prefixHex);
buf.append("x</td>"); buf.append("x</td>");
for (int i=off; i<16+off;i++) { for (int i=0; i<27;i++) {
FCDotAPL1604DashP8L apl = FCDotAPL1604DashP8L.indexOf(i); //FCDotAPL0127DashP7A apl = c.indexOf(i);
int codePoint = apl.codePoints()[0]; //int codePoint = apl.codePoints()[0];
int codePoint = conv.apply(i);
buf.append("<td>"); buf.append("<td>");
if (codePoint == '\u0000') { if (codePoint == '\u0000') {
buf.append(""); buf.append("");
@ -205,15 +212,16 @@ public class FourCornerWriteExampleMD {
buf.append("</tr>\n"); buf.append("</tr>\n");
} }
private void writeBYD(StringBuilder buf, int off) { private void writeBYD(StringBuilder buf, int off, Function<Integer, Integer> conv) {
String prefixHex = Integer.toHexString(0xC0 + off).toUpperCase(); String prefixHex = Integer.toHexString(off).toUpperCase();
buf.append("<tr>"); buf.append("<tr>");
buf.append("<td>U+0000"); buf.append("<td>U+0000");
buf.append(prefixHex.charAt(0)); buf.append(prefixHex);
buf.append("x</td>"); buf.append("x</td>");
for (int i=off; i<16+off;i++) { for (int i=0; i<27;i++) {
FCDotBYD1604DashP8H byd = FCDotBYD1604DashP8H.indexOf(i); //FCDotBYD0127DashP7D byd = FCDotBYD0127DashP7D.indexOf(i);
int codePoint = byd.codePoints()[0]; //int codePoint = byd.codePoints()[0];
int codePoint = conv.apply(i);
buf.append("<td>"); buf.append("<td>");
if (codePoint == '\u0000') { if (codePoint == '\u0000') {
buf.append(""); buf.append("");
@ -262,7 +270,10 @@ public class FourCornerWriteExampleMD {
continue; continue;
} }
List<Integer> piNum = new ArrayList<>(); List<Integer> piNum = new ArrayList<>();
piNum.add(FCDotCDC1604DashP6.__NCR68.ordinal()); //piNum.add(FCDotCDC1604DashP6.__NCR68.ordinal());\
for (int letter : FCDotDEC0127DashPX0.ESC68_NCR.baklavaPoints()) {
piNum.add(letter);
}
piNum.add(FCDotCDC1604DashP6.NX01_A.ordinal() + t); piNum.add(FCDotCDC1604DashP6.NX01_A.ordinal() + t);
piNum.add(FCDotCDC1604DashP6.NX01_A.ordinal() + i); piNum.add(FCDotCDC1604DashP6.NX01_A.ordinal() + i);
String char18Str = FourCornerUnicodeDisplay.text().renderFromInt18(piNum); String char18Str = FourCornerUnicodeDisplay.text().renderFromInt18(piNum);

View file

@ -38,10 +38,12 @@ public class FCDotAPL1604DashP8LTest {
@Test @Test
public void testValues() throws Exception { public void testValues() throws Exception {
Assertions.assertEquals(64, FCDotAPL1604DashP8L.length()); Assertions.assertEquals(27, FCDotAPL0127DashP7A.length());
Assertions.assertEquals(27, FCDotAPL0127DashP7B.length());
Assertions.assertEquals(27, FCDotAPL0127DashP7C.length());
boolean duplicate = false; boolean duplicate = false;
Map<Integer,FCDotAPL1604DashP8L> global = new HashMap<>(); Map<Integer,FCDotAPL0127DashP7A> global = new HashMap<>();
for (FCDotAPL1604DashP8L v : FCDotAPL1604DashP8L.values()) { for (FCDotAPL0127DashP7A v : FCDotAPL0127DashP7A.values()) {
Assertions.assertNotNull(v); Assertions.assertNotNull(v);
if (global.containsKey(v.codePoints()[0])) { if (global.containsKey(v.codePoints()[0])) {
duplicate = true; duplicate = true;

View file

@ -42,10 +42,10 @@ public class FCDotBYD1604DashP8HTest {
@Test @Test
public void testValues() throws Exception { public void testValues() throws Exception {
Assertions.assertEquals(64, FCDotBYD1604DashP8H.length()); Assertions.assertEquals(27, FCDotBYD0127DashP7D.length());
boolean duplicate = false; boolean duplicate = false;
Map<Integer,FCDotBYD1604DashP8H> global = new HashMap<>(); Map<Integer,FCDotBYD0127DashP7D> global = new HashMap<>();
for (FCDotBYD1604DashP8H v : FCDotBYD1604DashP8H.values()) { for (FCDotBYD0127DashP7D v : FCDotBYD0127DashP7D.values()) {
Assertions.assertNotNull(v); Assertions.assertNotNull(v);
if (global.containsKey(v.codePoints()[0])) { if (global.containsKey(v.codePoints()[0])) {
duplicate = true; duplicate = true;
@ -60,14 +60,14 @@ public class FCDotBYD1604DashP8HTest {
@Test @Test
public void testDisplay() throws Exception { public void testDisplay() throws Exception {
List<FourCornerX06BaklavaPoints> cdc = new ArrayList<>(); List<FourCornerX06BaklavaPoints> cdc = new ArrayList<>();
cdc.add(FCDotBYD1604DashP8H.BOX2_A); cdc.add(FCDotBYD0127DashP7D.BOX2_A);
cdc.add(FCDotBYD1604DashP8H.BOX2_B); cdc.add(FCDotBYD0127DashP7D.BOX2_B);
cdc.add(FCDotBYD1604DashP8H.BOX2_B); cdc.add(FCDotBYD0127DashP7D.BOX2_B);
cdc.add(FCDotBYD1604DashP8H.BOX2_A); cdc.add(FCDotBYD0127DashP7D.BOX2_A);
cdc.add(FCDotBYD1604DashP8H.BOX1_1); cdc.add(FCDotBYD0127DashP7D.BOX1_1);
cdc.add(FCDotBYD1604DashP8H.BOX1_3); cdc.add(FCDotBYD0127DashP7D.BOX1_3);
cdc.add(FCDotBYD1604DashP8H.BOX1_3); cdc.add(FCDotBYD0127DashP7D.BOX1_3);
cdc.add(FCDotBYD1604DashP8H.BOX1_7); cdc.add(FCDotBYD0127DashP7D.BOX1_7);
Assertions.assertEquals("═╩╩═╵└└├", FourCornerUnicodeDisplay.text().renderFromX06(cdc)); Assertions.assertEquals("═╩╩═╵└└├", FourCornerUnicodeDisplay.text().renderFromX06(cdc));
} }

View file

@ -37,33 +37,51 @@ import org.x4o.o2o.fc18.pie9c.FCDotPIE9CDash10;
* @author Willem Cazander * @author Willem Cazander
* @version 1.0 Jan 08, 2025 * @version 1.0 Jan 08, 2025
*/ */
public class FCDotDEC1604DashP7Test { public class FCDotDEC0127DashP7GTest {
@Test @Test
public void testSize() throws Exception { public void testSize() throws Exception {
Assertions.assertEquals(64, FCDotDEC1604DashP7.length()); Assertions.assertEquals(27, FCDotDEC0127DashPX0.values().length);
} }
@Test @Test
public void testBaklavaSequence() throws Exception { public void testBaklavaSequence() throws Exception {
int[] seq = FCDotDEC1604DashP7.NX_CURSOR_GOTO.baklavaPoints(); int[] seq = null;
Assertions.assertEquals(2, seq.length); seq = FCDotDEC0127DashPX0._ESC_USER_1.baklavaPoints();
Assertions.assertEquals(FCDotCDC1604DashP6.__ESC6.ordinal(), seq[0]); Assertions.assertEquals(3, seq.length);
Assertions.assertEquals(FCDotCDC1604DashP6.NX25_Y.ordinal(), seq[1]); Assertions.assertEquals(FCDotCDC1604DashP6._ESC6_X1.ordinal(), seq[0]);
Assertions.assertEquals(FCDotDEC1604DashP7.NX_BELL.ordinal(), FCDotCDC1604DashP6.NX27_AMPERSAND.ordinal()); Assertions.assertEquals(FCDotCDC1604DashP6._ESC6_X1.ordinal(), seq[1]);
Assertions.assertEquals(FCDotCDC1604DashP6._ESC6_X1.ordinal(), seq[2]);
seq = FCDotDEC0127DashPX0.ESC_VT06.baklavaPoints();
Assertions.assertEquals(3, seq.length);
Assertions.assertEquals(FCDotCDC1604DashP6._ESC6_X1.ordinal(), seq[0]);
Assertions.assertEquals(FCDotCDC1604DashP6._ESC6_X2.ordinal(), seq[1]);
Assertions.assertEquals(FCDotCDC1604DashP6._ESC6_X3.ordinal(), seq[2]);
seq = FCDotDEC0127DashPX0.ESC_NETHER.baklavaPoints();
Assertions.assertEquals(FCDotCDC1604DashP6._ESC6_X2.ordinal(), seq[0]);
Assertions.assertEquals(FCDotCDC1604DashP6._ESC6_X2.ordinal(), seq[1]);
Assertions.assertEquals(FCDotCDC1604DashP6._ESC6_X3.ordinal(), seq[2]);
seq = FCDotDEC0127DashPX0.ESC_STOP.baklavaPoints();
Assertions.assertEquals(FCDotCDC1604DashP6._ESC6_X3.ordinal(), seq[0]);
Assertions.assertEquals(FCDotCDC1604DashP6._ESC6_X3.ordinal(), seq[1]);
Assertions.assertEquals(FCDotCDC1604DashP6._ESC6_X3.ordinal(), seq[2]);
} }
/*
@Test @Test
public void testCusorGoto() throws Exception { public void testCusorGoto() throws Exception {
List<FourCornerX06BaklavaPoints> cdc = new ArrayList<>(); List<FourCornerX06BaklavaPoints> cdc = new ArrayList<>();
cdc.add(FCDotDEC1604DashP7.NX_CURSOR_GOTO); cdc.add(FCDotDEC0127DashP7G.NX_CURSOR_GOTO);
cdc.add(FCDotDEC1604DashP7.VT_RAKA_AT); cdc.add(FCDotDEC0127DashP7G.VT_RAKA_AT);
cdc.add(FCDotCDC1604DashP6.NX25_Y); cdc.add(FCDotCDC1604DashP6.NX25_Y);
cdc.add(FCDotDEC1604DashP7.VT_RAKA_AT); cdc.add(FCDotDEC0127DashP7G.VT_RAKA_AT);
cdc.addAll(FCDotPIE9CDash10.toDecimalsX06(123)); cdc.addAll(FCDotPIE9CDash10.toDecimalsX06(123));
cdc.add(FCDotDEC1604DashP7.VT_RAKA_AT); cdc.add(FCDotDEC0127DashP7G.VT_RAKA_AT);
cdc.addAll(FCDotPIE9CDash10.toDecimalsX06(456)); cdc.addAll(FCDotPIE9CDash10.toDecimalsX06(456));
cdc.add(FCDotDEC1604DashP7.VT_SALAH); cdc.add(FCDotDEC0127DashP7G.VT_SALAH);
Assertions.assertEquals("␃Y␃?Y␃?␁JBCD␃?␁JEFG␃!", FourCornerUnicodeDisplay.raw().renderFromX06(cdc)); Assertions.assertEquals("␃Y␃?Y␃?␁JBCD␃?␁JEFG␃!", FourCornerUnicodeDisplay.raw().renderFromX06(cdc));
Assertions.assertEquals("?Y?123?456!", FourCornerUnicodeDisplay.text().renderFromX06(cdc)); Assertions.assertEquals("?Y?123?456!", FourCornerUnicodeDisplay.text().renderFromX06(cdc));
@ -72,11 +90,12 @@ public class FCDotDEC1604DashP7Test {
@Test @Test
public void testClearTop5Lines() throws Exception { public void testClearTop5Lines() throws Exception {
List<FourCornerX06BaklavaPoints> cdc = new ArrayList<>(); List<FourCornerX06BaklavaPoints> cdc = new ArrayList<>();
cdc.add(FCDotDEC1604DashP7.NX_CLEAR_TOP); cdc.add(FCDotDEC0127DashP7G.NX_CLEAR_TOP);
cdc.add(FCDotDEC1604DashP7.VT_RAKA_AT); cdc.add(FCDotDEC0127DashP7G.VT_RAKA_AT);
cdc.addAll(FCDotPIE9CDash10.toDecimalsX06(5)); cdc.addAll(FCDotPIE9CDash10.toDecimalsX06(5));
cdc.add(FCDotDEC1604DashP7.VT_SALAH); cdc.add(FCDotDEC0127DashP7G.VT_SALAH);
Assertions.assertEquals("␃E␃?␁JF␃!", FourCornerUnicodeDisplay.raw().renderFromX06(cdc)); Assertions.assertEquals("␃E␃?␁JF␃!", FourCornerUnicodeDisplay.raw().renderFromX06(cdc));
} }
*/
} }