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 // =========== Allow small terminators to take over 6 bit main frame computers
FC_CDC1604_P6(0, 64, FCDotCDC1604DashP6.values(), "Character Dough Cake"), 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_P7A(91, 27, FCDotLUA0127DashP7A.values(), "Local Union Alphabet P7A"),
FC_LUA0127_P7B(118, 27, FCDotLUA0127DashP7B.values(), "Local Union Alphabet P7B"), 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 /// Number signed 576 bit base 2 float
FC_E503M72_BANK(0x03D8B8, 4096, "Number of 576 bit base 10 decimal octals"), FC_E503M72_BANK(0x03D8B8, 4096, "Number of 576 bit base 10 decimal octals"),
__RESERVED_FREE(0x03E8B8, 0x3F000 - 0x03E8B8), __RESERVED_FREE(0x03E8B8, 0x3F000 - 0x03E8B8),
__RESERVED_ESC(0x03F000, 4096), __RESERVED_ESC(0x03F000, 4096 - 27),
FC_DEC2701_PX0(0x03FFE5, 27, FCDotDEC2701DashPX0.values(), "Direct or Escaped Control"),
// // 4096
//FC_DEC2701_PX0
; ;
private static final FourCornerDotCake[] VALUES = values(); private static final FourCornerDotCake[] VALUES = values();
private final int start; private final int start;

View file

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

View file

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

View file

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