FC18: Moved FC_DEC2701_PX0 to end of cake

This commit is contained in:
Willem Cazander 2025-09-01 14:04:24 +02:00
parent e790e89dd7
commit f93d447ba3
4 changed files with 45 additions and 23 deletions

View file

@ -145,7 +145,8 @@ public enum FourCornerDotCake {
// =========== Allow small terminators to take over 6 bit main frame computers
FC_CDC1604_P6(0, 64, FCDotCDC1604DashP6.values(), "Character Dough Cake"),
FC_DEC2701_PX0(64, 27, FCDotDEC2701DashPX0.values(), "Direct or Escaped Control"),
__FREE_DEC(64, 27),
//FC_DEC2701_PX0(64, 27, FCDotDEC2701DashPX0.values(), "Direct or Escaped Control"),
FC_LUA0127_P7A(91, 27, FCDotLUA0127DashP7A.values(), "Local Union Alphabet P7A"),
FC_LUA0127_P7B(118, 27, FCDotLUA0127DashP7B.values(), "Local Union Alphabet P7B"),
@ -443,14 +444,10 @@ public enum FourCornerDotCake {
/// Number signed 576 bit base 2 float
FC_E503M72_BANK(0x03D8B8, 4096, "Number of 576 bit base 10 decimal octals"),
__RESERVED_FREE(0x03E8B8, 0x3F000 - 0x03E8B8),
__RESERVED_ESC(0x03F000, 4096),
// // 4096
//FC_DEC2701_PX0
__RESERVED_ESC(0x03F000, 4096 - 27),
FC_DEC2701_PX0(0x03FFE5, 27, FCDotDEC2701DashPX0.values(), "Direct or Escaped Control"),
;
private static final FourCornerDotCake[] VALUES = values();
private final int start;

View file

@ -183,7 +183,7 @@ public enum FCDotDEC2701DashPX0 implements FourCornerX06BaklavaPointSequence, Fo
@Override
public List<Integer> muffinPointSequence() {
return cakePointSequence();
return baklavaPointSequence();
}
@Override

View file

@ -53,6 +53,7 @@ public class FourCornerZionStenoLexer {
private final boolean handlerEscape;
private final FourCornerZion7Candlelier handler;
private final FourCornerZion7TempleScrolls handlerTempleScrolls;
//private final short numberBank[] = new short[256]; // up to 9 bit values
private final int numeratorBank[] = new int[48];
private final int denominatorBank[] = new int[numeratorBank.length];
private List<Integer> input;
@ -77,9 +78,11 @@ public class FourCornerZionStenoLexer {
continue; // can't handle reserved, we be reported as
}
if (FourCornerDotCake.FC_CDC1604_P6.equals(cakeSlice)) {
CAKE_SLICE_EATERS.add(new StenoScannerCDCDEC(cakeSlice));
continue; // handle CDC manually
}
if (FourCornerDotCake.FC_DEC2701_PX0.equals(cakeSlice)) {
CAKE_SLICE_EATERS.add(new StenoScannerCDCDEC(cakeSlice));
continue; // handle DEC manually
}
if (FourCornerDotCake.FC_XDBX0512_NS.equals(cakeSlice)) {
@ -121,12 +124,12 @@ public class FourCornerZionStenoLexer {
if (cakeSlice.name().startsWith("FC_BA") && cakeSlice.name().endsWith("_SEL0")) {
continue; // done by bank slices below
}
if (cakeSlice.name().contains("BA2") && cakeSlice.name().contains("BANK")) {
if (cakeSlice.name().startsWith("FC_BA2") && cakeSlice.name().endsWith("_BANK")) {
FourCornerDotCake cakeSliceSel = FourCornerDotCake.valueOf(cakeSlice.ordinal() - 1);
CAKE_SLICE_EATERS.add(new StenoScannerNumberBase2(cakeSliceSel, cakeSlice, fremanBase2Itr.next()));
continue;
}
if (cakeSlice.name().contains("BA8") && cakeSlice.name().contains("BANK")) {
if (cakeSlice.name().startsWith("FC_BA8") && cakeSlice.name().endsWith("_BANK")) {
FourCornerDotCake cakeSliceSel = FourCornerDotCake.valueOf(cakeSlice.ordinal() - 1);
CAKE_SLICE_EATERS.add(new StenoScannerNumberBase8(cakeSliceSel, cakeSlice, fremanBase8Itr.next()));
continue;
@ -137,7 +140,6 @@ public class FourCornerZionStenoLexer {
}
CAKE_SLICE_EATERS.add(new StenoScannerWordCakeSlice(cakeSlice));
}
CAKE_SLICE_EATERS.add(new StenoScannerCDCDEC());
CAKE_SLICE_EATERS.add(new StenoScannerSandWorm());
CAKE_SLICE_EATERS.add(new StenoScannerNumberNCR1632());
CAKE_SLICE_EATERS.add(new StenoScannerNumberDEC576());
@ -655,10 +657,14 @@ public class FourCornerZionStenoLexer {
static final class StenoScannerCDCDEC extends StenoScanner {
public StenoScannerCDCDEC() {
super(FourCornerDotCake.FC_CDC1604_P6.getStart(), FourCornerDotCake.FC_DEC2701_PX0.getStop());
public StenoScannerCDCDEC(FourCornerDotCake cakeSlice) {
super(cakeSlice);
}
//public StenoScannerCDCDEC() {
// super(FourCornerDotCake.FC_CDC1604_P6.getStart(), FourCornerDotCake.FC_DEC2701_PX0.getStop());
//}
@Override
public void process(FourCornerZionStenoLexer lexer, int idxFirst, int idxLast) {
lexer.decModeReset();

View file

@ -73,12 +73,14 @@ public class FCDotPIE9Test {
@Test
public void testUnusedKuTen1And2() throws Exception {
// see: https://www.msx.org/wiki/KuTen_-_JIS_-_SJIS_Code_Conversion_Tables
String kuTenPage1 = "、。,.・:;?!゛゜´`¨" + "^ ̄_ヽヾゝゞ〃仝々〆〇ー―‐/"
+ "\~∥|…‥‘’“”()〔〕[]" + "}〈〉《》「」『』【】+-±×"
+ "÷=≠<>≦≧∞∴♂♀°′″℃¥" + "$¢£%#&*@§☆★○●◎◇";
String kuTenPage2 = "◆□■△▲▽▼※〒→←↑↓〓" + "∈∋⊆⊇⊂⊃"
+ "∪∩∧∨¬⇒⇔∀" + "∃∠⊥⌒∂"
+ "∇≡≒≪≫√∽∝∵∫∬" + "ʼn♯♭♪†‡¶◯";
String kuTenPage1 = ""+
"、。,.・:;?!゛゜´`¨" + "^ ̄_ヽヾゝゞ〃仝々〆〇ー―‐/" +
"\~∥|…‥‘’“”()〔〕[]" + "}〈〉《》「」『』【】+-±×" +
"÷=≠<>≦≧∞∴♂♀°′″℃¥" + "$¢£%#&*@§☆★○●◎◇";
String kuTenPage2 = ""+
"◆□■△▲▽▼※〒→←↑↓〓" + "∈∋⊆⊇⊂⊃" +
"∪∩∧∨¬⇒⇔∀" + "∃∠⊥⌒∂" +
"∇≡≒≪≫√∽∝∵∫∬" + "ʼn♯♭♪†‡¶◯";
String kuTen = (kuTenPage1 + kuTenPage2).replaceAll("\t", "").replaceAll(" ", "");
int totalMissing = 0;
PrimitiveIterator.OfInt charCheck = kuTen.codePoints().iterator();
@ -95,10 +97,27 @@ public class FCDotPIE9Test {
@Test
public void testUnusedVGATempleOS() throws Exception {
// see: https://github.com/rendello/templeos_font/blob/master/Convert/chars.txt
String vgaTOSChars = " !\"#$%&'()*+,-./" + "0123456789:;<=>?" + "@ABCDEFGHIJKLMNO" + "PQRSTUVWXYZ[\\]^_" + "`abcdefghijklmno" + "pqrstuvwxyz{|}~ "
+ "çüéâäàȧ êëèïîìÄȦ" + "ÉæÆôöòûùÿÖÜ¢£¥ 𝑓" + "áíóú ¿ ½¼¡«»" + "░▒▓│┤╡╢╖╕╣║╗╝╜╛┐" + "└┴┬├─┼╞╟╚╔╩╦╠═╬╧" + "╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀"
+ "αβΓπΣσμτΦθΩδ∞ ε " + "≡±≤≥ ÷≈ √ⁿ² " + "ВГЁЖЗИЙЛПУФЧШЪЫЭ" + "ЮЯбвгёжзийклмнпт" + "чшъыьэюя „”№ " + " ⅠⅡ↑↓⭰⭲ "
+ "ДЦЩдф щ ij🔔 " + " ⅓ ¾ §¶ ";
String vgaTOSChars = ""+
" !\"#$%&'()*+,-./"+
"0123456789:;<=>?" +
"@ABCDEFGHIJKLMNO" +
"PQRSTUVWXYZ[\\]^_" +
"`abcdefghijklmno" +
"pqrstuvwxyz{|}~ " +
"çüéâäàȧ êëèïîìÄȦ" +
"ÉæÆôöòûùÿÖÜ¢£¥ 𝑓" +
"áíóú ¿ ½¼¡«»" +
"░▒▓│┤╡╢╖╕╣║╗╝╜╛┐" +
"└┴┬├─┼╞╟╚╔╩╦╠═╬╧" +
"╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀" +
"αβΓπΣσμτΦθΩδ∞ ε " +
"≡±≤≥ ÷≈ √ⁿ² " +
"ВГЁЖЗИЙЛПУФЧШЪЫЭ" +
"ЮЯбвгёжзийклмнпт" +
"чшъыьэюя „”№ " +
" ⅠⅡ↑↓⭰⭲ " +
"ДЦЩдф щ ij🔔 " +
" ⅓ ¾ §¶ ";
int totalMissing = 0;
PrimitiveIterator.OfInt charCheck = vgaTOSChars.codePoints().iterator();
while (charCheck.hasNext()) {