FC18: prepared salt3 for duel bank octal select option feature letters

This commit is contained in:
Willem Cazander 2025-09-06 16:43:55 +02:00
parent b964f97421
commit 53b9db8319
7 changed files with 95 additions and 55 deletions

View file

@ -38,7 +38,7 @@ import org.x4o.fc18.cake2.FourCornerX00PetitVideCoinCarneFrapperRetrait;
/// @version 1.0 Dec 22, 2024
///
public enum FCDotCDC1604DashP6 implements FourCornerDotColleZero33 {
// [__NUL][_ESC6_X1][_ESC6_X2][_ESC6_X3] ¿!? <>[] (){}
// [__NUL][_ESC6_X1][_ESC6_X2][_ESC6_X3] ¿?! <>[] (){}
// ~+-* ,.:; '"`^ =#$%
// |_\/ @ABC DEFG HIJK
// LMNO PQRS TUVW XYZ&
@ -57,12 +57,12 @@ public enum FCDotCDC1604DashP6 implements FourCornerDotColleZero33 {
NS05_RAKA1_UPQUESTION('¿'),
/// Use 3 pepper marks, to spice up the escape sequences.
NS06_PEPPER3_EXCLAMATION('!'),
NS07_PEPPER3_QUESTION('?'),
NS06_PEPPER3_QUESTION('?'),
NS07_PEPPER3_EXCLAMATION('!'),
/// Suger Argument Lexer Token, to sweat up the escape sequences.
NS08_SUGER1_COMPARE_LEFT('<'),
NS09_SUGER1_COMPARE_RIGHT('>'), // TODO: make it suger3
/// Use 3 Super Argument Lexer Token, to sweat up the escape sequences.
NS08_SALT3_COMPARE_LEFT('<'),
NS09_SALT3_COMPARE_RIGHT('>'),
/// Second set of number letters.
NY27_SQUARE_LEFT('['),
@ -202,40 +202,55 @@ public enum FCDotCDC1604DashP6 implements FourCornerDotColleZero33 {
return cakePoint == NS01_ESC3_X1.cakePointDotIndex() || cakePoint == NS02_ESC3_X2.cakePointDotIndex() || cakePoint == NS03_ESC3_X3.cakePointDotIndex();
}
static public boolean isEscapeSugerLeft(int cakePoint) {
return cakePoint == NS08_SUGER1_COMPARE_LEFT.cakePointDotIndex();
}
static public boolean isEscapeSugerRight(int cakePoint) {
return cakePoint == NS09_SUGER1_COMPARE_RIGHT.cakePointDotIndex();
}
static public boolean isEscapePepper(int cakePoint) {
return cakePoint == NS06_PEPPER3_EXCLAMATION.cakePointDotIndex() || cakePoint == NS07_PEPPER3_QUESTION.cakePointDotIndex();
return cakePoint == NS07_PEPPER3_EXCLAMATION.cakePointDotIndex() || cakePoint == NS06_PEPPER3_QUESTION.cakePointDotIndex();
}
static public boolean isEscapeSalt(int cakePoint) {
return cakePoint == NS08_SALT3_COMPARE_LEFT.cakePointDotIndex() || cakePoint == NS09_SALT3_COMPARE_RIGHT.cakePointDotIndex();
}
static public int pepper3SequenceRead(FCDotCDC1604DashP6 msb, FCDotCDC1604DashP6 csb, FCDotCDC1604DashP6 lsb) {
int c1 = msb == FCDotCDC1604DashP6.NS06_PEPPER3_EXCLAMATION?0:1;
int c2 = csb == FCDotCDC1604DashP6.NS06_PEPPER3_EXCLAMATION?0:1;
int c3 = lsb == FCDotCDC1604DashP6.NS06_PEPPER3_EXCLAMATION?0:1;
int c1 = msb == FCDotCDC1604DashP6.NS07_PEPPER3_EXCLAMATION?1:0;
int c2 = csb == FCDotCDC1604DashP6.NS07_PEPPER3_EXCLAMATION?1:0;
int c3 = lsb == FCDotCDC1604DashP6.NS07_PEPPER3_EXCLAMATION?1:0;
return (c1 << 2) + (c2 << 1) + (c3 << 0);
}
static public List<Integer> pepper3SequenceWritePoints(int mode) {
return pepper3SequenceWrite(mode).stream().map(v -> v.cakePointDotIndex()).toList();
}
static public List<FCDotCDC1604DashP6> pepper3SequenceWrite(int mode) {
static public List<Integer> pepper3SequenceWrite(List<Integer> out, int mode) {
if (mode < 0) {
throw new IllegalArgumentException("Negative pepper is illegal");
}
if (mode > 7) {
throw new IllegalArgumentException("Pepper spray is only 3 bit");
}
return List.of(
((mode >> 2) & 0b1)==0?NS06_PEPPER3_EXCLAMATION:NS07_PEPPER3_QUESTION,
((mode >> 1) & 0b1)==0?NS06_PEPPER3_EXCLAMATION:NS07_PEPPER3_QUESTION,
((mode >> 0) & 0b1)==0?NS06_PEPPER3_EXCLAMATION:NS07_PEPPER3_QUESTION
);
int pepperZero = NS06_PEPPER3_QUESTION.cakePointDotIndex();
int pepperOne = NS07_PEPPER3_EXCLAMATION.cakePointDotIndex();
out.add(((mode >> 2) & 0b1)==0?pepperZero:pepperOne);
out.add(((mode >> 1) & 0b1)==0?pepperZero:pepperOne);
out.add(((mode >> 0) & 0b1)==0?pepperZero:pepperOne);
return out;
}
static public int salt3SequenceRead(FCDotCDC1604DashP6 msb, FCDotCDC1604DashP6 csb, FCDotCDC1604DashP6 lsb) {
int c1 = msb == FCDotCDC1604DashP6.NS09_SALT3_COMPARE_RIGHT?1:0;
int c2 = csb == FCDotCDC1604DashP6.NS09_SALT3_COMPARE_RIGHT?1:0;
int c3 = lsb == FCDotCDC1604DashP6.NS09_SALT3_COMPARE_RIGHT?1:0;
return (c1 << 2) + (c2 << 1) + (c3 << 0);
}
static public List<Integer> salt3SequenceWrite(List<Integer> out, int mode) {
if (mode < 0) {
throw new IllegalArgumentException("Negative salt is illegal");
}
if (mode > 7) {
throw new IllegalArgumentException("Salt wash is only 3 bit");
}
int pepperZero = NS08_SALT3_COMPARE_LEFT.cakePointDotIndex();
int pepperOne = NS09_SALT3_COMPARE_RIGHT.cakePointDotIndex();
out.add(((mode >> 2) & 0b1)==0?pepperZero:pepperOne);
out.add(((mode >> 1) & 0b1)==0?pepperZero:pepperOne);
out.add(((mode >> 0) & 0b1)==0?pepperZero:pepperOne);
return out;
}
}

View file

@ -50,7 +50,7 @@ public enum FCDotCMD5401Dash2D implements FourCornerX06BaklavaPointSequence, Fou
private FCDotCMD5401Dash2D(FCDotCDC1604DashP6 selector) {
this.selector = Objects.requireNonNull(selector);
if (selector.ordinal() <= FCDotCDC1604DashP6.NS09_SUGER1_COMPARE_RIGHT.ordinal()) {
if (selector.ordinal() <= FCDotCDC1604DashP6.NS09_SALT3_COMPARE_RIGHT.ordinal()) {
throw new IllegalArgumentException("Not used here to keep mind space free");
}
}

View file

@ -40,6 +40,8 @@ import org.x4o.fc18.cake2.zero33.FCDotCDC1604DashP6;
*/
public enum FCDotINC0801DashP8 implements FourCornerX06BaklavaPointSequence, FourCornerX18CakePointSequence, FourCornerX18CakePointDotName {
// TODO: renumber add CDC1604 first ? and make it duel bank with salt AND pepper so print mixed case does not exit the escape sequence.
/// !!!
/// Select LUA page 7A mode.
INC_LUA0127_P7A(FourCornerDotCake.FC_LUA0127_P7A),
@ -89,7 +91,7 @@ public enum FCDotINC0801DashP8 implements FourCornerX06BaklavaPointSequence, Fou
public List<Integer> baklavaPointSequence() {
List<Integer> result = new ArrayList<>();
result.addAll(FCDotDEC2701DashPX0.ESC6_INC0801_P8.baklavaPointSequence());
result.addAll(FCDotCDC1604DashP6.pepper3SequenceWritePoints(ordinal()));
FCDotCDC1604DashP6.pepper3SequenceWrite(result, ordinal());
return result;
}

View file

@ -792,20 +792,20 @@ public class FourCornerZionStenoLexer implements FourCornerZionStenoPetroglyphs
if (cdcPoint >= FCDotCDC1604DashP6.NY27_SQUARE_LEFT.ordinal() && cdcPoint <= FCDotCDC1604DashP6.NY01_AT.ordinal()) {
lexer.cdcDECModePie = FCDotCDC1604DashP6.NY01_AT.ordinal() - cdcPoint; // goto relative
return true; // swallow button
} else if (cdcPoint == FCDotCDC1604DashP6.NS06_PEPPER3_EXCLAMATION.ordinal()) {
} else if (cdcPoint == FCDotCDC1604DashP6.NS07_PEPPER3_EXCLAMATION.ordinal()) {
if (lexer.cdcDECModePie < 26) {
lexer.cdcDECModePie++;
}
return true; // eat the up pepper
} else if (cdcPoint == FCDotCDC1604DashP6.NS07_PEPPER3_QUESTION.ordinal()) {
} else if (cdcPoint == FCDotCDC1604DashP6.NS06_PEPPER3_QUESTION.ordinal()) {
if (lexer.cdcDECModePie > 0) {
lexer.cdcDECModePie--;
}
return true; // eat the down suger
} else if (cdcPoint == FCDotCDC1604DashP6.NS08_SUGER1_COMPARE_LEFT.ordinal()) {
} else if (cdcPoint == FCDotCDC1604DashP6.NS08_SALT3_COMPARE_LEFT.ordinal()) {
lexer.cdcDECModePieAlt = false;
return true; // eat the left suger
} else if (cdcPoint == FCDotCDC1604DashP6.NS09_SUGER1_COMPARE_RIGHT.ordinal()) {
} else if (cdcPoint == FCDotCDC1604DashP6.NS09_SALT3_COMPARE_RIGHT.ordinal()) {
lexer.cdcDECModePieAlt = true;
return true; // eat the right suger
} else if (cdcPoint == FCDotCDC1604DashP6.NS04_RAKA1_INTERROBANG.ordinal() || cdcPoint == FCDotCDC1604DashP6.NS05_RAKA1_UPQUESTION.ordinal()) {

View file

@ -57,7 +57,7 @@ public class FourCornerUnicodeDisplayTest {
cdc.add(FCDotCDC1604DashP6.NY26_SQUARE_RIGHT); // select lower case
cdc.add(FCDotCDC1604DashP6.NX10_J);
cdc.add(FCDotCDC1604DashP6.NX11_K);
cdc.add(FCDotCDC1604DashP6.NS09_SUGER1_COMPARE_RIGHT);
cdc.add(FCDotCDC1604DashP6.NS09_SALT3_COMPARE_RIGHT);
cdc.add(FCDotCDC1604DashP6.NX12_L);
cdc.add(FCDotCDC1604DashP6.NX13_M);
cdc.add(FCDotDEC2701DashPX0.ESC_STOP);
@ -114,19 +114,19 @@ public class FourCornerUnicodeDisplayTest {
cdc.add(FCDotCDC1604DashP6.NX08_H);
cdc.add(FCDotCDC1604DashP6.NX15_O);
cdc.add(FCDotCDC1604DashP6.NX09_I);
cdc.add(FCDotCDC1604DashP6.NS09_SUGER1_COMPARE_RIGHT); // goto right FC.PIE9D-27
cdc.add(FCDotCDC1604DashP6.NS09_SALT3_COMPARE_RIGHT); // goto right FC.PIE9D-27
cdc.add(FCDotCDC1604DashP6.NX08_H);
cdc.add(FCDotCDC1604DashP6.NX15_O);
cdc.add(FCDotCDC1604DashP6.NX09_I);
cdc.add(FCDotCDC1604DashP6.NS07_PEPPER3_QUESTION); // goto up FC.PIE9D-26
cdc.add(FCDotCDC1604DashP6.NS06_PEPPER3_QUESTION); // goto up FC.PIE9D-26
cdc.add(FCDotCDC1604DashP6.NX08_H);
cdc.add(FCDotCDC1604DashP6.NX15_O);
cdc.add(FCDotCDC1604DashP6.NX09_I);
cdc.add(FCDotCDC1604DashP6.NS07_PEPPER3_QUESTION); // goto up FC.PIE9D-25
cdc.add(FCDotCDC1604DashP6.NS06_PEPPER3_QUESTION); // goto up FC.PIE9D-25
cdc.add(FCDotCDC1604DashP6.NX08_H);
cdc.add(FCDotCDC1604DashP6.NX15_O);
cdc.add(FCDotCDC1604DashP6.NX09_I);
cdc.add(FCDotCDC1604DashP6.NS07_PEPPER3_QUESTION); // goto up FC.PIE9D-24
cdc.add(FCDotCDC1604DashP6.NS06_PEPPER3_QUESTION); // goto up FC.PIE9D-24
cdc.add(FCDotCDC1604DashP6.NX08_H);
cdc.add(FCDotCDC1604DashP6.NX15_O);
cdc.add(FCDotCDC1604DashP6.NX09_I);

View file

@ -22,6 +22,8 @@
*/
package org.x4o.fc18.cake2.zero33;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
@ -54,26 +56,47 @@ public class FCDotCDC1604DashP6Test {
Assertions.assertFalse(duplicate, "Duplicate ascii core value detected");
}
@Test
public void testPepper3Points() throws Exception {
Assertions.assertEquals("!!!", FourCornerUnicodeDisplay.text().renderFromInt18(FCDotCDC1604DashP6.pepper3SequenceWritePoints(0)));
Assertions.assertEquals("!!?", FourCornerUnicodeDisplay.text().renderFromInt18(FCDotCDC1604DashP6.pepper3SequenceWritePoints(1)));
Assertions.assertEquals("!?!", FourCornerUnicodeDisplay.text().renderFromInt18(FCDotCDC1604DashP6.pepper3SequenceWritePoints(2)));
Assertions.assertEquals("!??", FourCornerUnicodeDisplay.text().renderFromInt18(FCDotCDC1604DashP6.pepper3SequenceWritePoints(3)));
Assertions.assertEquals("?!!", FourCornerUnicodeDisplay.text().renderFromInt18(FCDotCDC1604DashP6.pepper3SequenceWritePoints(4)));
Assertions.assertEquals("?!?", FourCornerUnicodeDisplay.text().renderFromInt18(FCDotCDC1604DashP6.pepper3SequenceWritePoints(5)));
Assertions.assertEquals("??!", FourCornerUnicodeDisplay.text().renderFromInt18(FCDotCDC1604DashP6.pepper3SequenceWritePoints(6)));
Assertions.assertEquals("???", FourCornerUnicodeDisplay.text().renderFromInt18(FCDotCDC1604DashP6.pepper3SequenceWritePoints(7)));
public void testPepper3Sequence() throws Exception {
Assertions.assertEquals("???", FourCornerUnicodeDisplay.text().renderFromInt18(FCDotCDC1604DashP6.pepper3SequenceWrite(new ArrayList<>(), 0)));
Assertions.assertEquals("??!", FourCornerUnicodeDisplay.text().renderFromInt18(FCDotCDC1604DashP6.pepper3SequenceWrite(new ArrayList<>(), 1)));
Assertions.assertEquals("?!?", FourCornerUnicodeDisplay.text().renderFromInt18(FCDotCDC1604DashP6.pepper3SequenceWrite(new ArrayList<>(), 2)));
Assertions.assertEquals("?!!", FourCornerUnicodeDisplay.text().renderFromInt18(FCDotCDC1604DashP6.pepper3SequenceWrite(new ArrayList<>(), 3)));
Assertions.assertEquals("!??", FourCornerUnicodeDisplay.text().renderFromInt18(FCDotCDC1604DashP6.pepper3SequenceWrite(new ArrayList<>(), 4)));
Assertions.assertEquals("!?!", FourCornerUnicodeDisplay.text().renderFromInt18(FCDotCDC1604DashP6.pepper3SequenceWrite(new ArrayList<>(), 5)));
Assertions.assertEquals("!!?", FourCornerUnicodeDisplay.text().renderFromInt18(FCDotCDC1604DashP6.pepper3SequenceWrite(new ArrayList<>(), 6)));
Assertions.assertEquals("!!!", FourCornerUnicodeDisplay.text().renderFromInt18(FCDotCDC1604DashP6.pepper3SequenceWrite(new ArrayList<>(), 7)));
}
@Test
public void testPepper3PointsRange() throws Exception {
public void testPepper3SequenceRange() throws Exception {
Assertions.assertThrows(IllegalArgumentException.class, () -> {
FCDotCDC1604DashP6.pepper3SequenceWritePoints(-1);
FCDotCDC1604DashP6.pepper3SequenceWrite(Collections.emptyList(), -1);
});
Assertions.assertThrows(IllegalArgumentException.class, () -> {
FCDotCDC1604DashP6.pepper3SequenceWritePoints(8);
FCDotCDC1604DashP6.pepper3SequenceWrite(Collections.emptyList(), 8);
});
}
@Test
public void testSalt3Sequence() throws Exception {
Assertions.assertEquals("<<<", FourCornerUnicodeDisplay.text().renderFromInt18(FCDotCDC1604DashP6.salt3SequenceWrite(new ArrayList<>(), 0)));
Assertions.assertEquals("<<>", FourCornerUnicodeDisplay.text().renderFromInt18(FCDotCDC1604DashP6.salt3SequenceWrite(new ArrayList<>(), 1)));
Assertions.assertEquals("<><", FourCornerUnicodeDisplay.text().renderFromInt18(FCDotCDC1604DashP6.salt3SequenceWrite(new ArrayList<>(), 2)));
Assertions.assertEquals("<>>", FourCornerUnicodeDisplay.text().renderFromInt18(FCDotCDC1604DashP6.salt3SequenceWrite(new ArrayList<>(), 3)));
Assertions.assertEquals("><<", FourCornerUnicodeDisplay.text().renderFromInt18(FCDotCDC1604DashP6.salt3SequenceWrite(new ArrayList<>(), 4)));
Assertions.assertEquals("><>", FourCornerUnicodeDisplay.text().renderFromInt18(FCDotCDC1604DashP6.salt3SequenceWrite(new ArrayList<>(), 5)));
Assertions.assertEquals(">><", FourCornerUnicodeDisplay.text().renderFromInt18(FCDotCDC1604DashP6.salt3SequenceWrite(new ArrayList<>(), 6)));
Assertions.assertEquals(">>>", FourCornerUnicodeDisplay.text().renderFromInt18(FCDotCDC1604DashP6.salt3SequenceWrite(new ArrayList<>(), 7)));
}
@Test
public void testSalt3SequenceRange() throws Exception {
Assertions.assertThrows(IllegalArgumentException.class, () -> {
FCDotCDC1604DashP6.salt3SequenceWrite(Collections.emptyList(), -1);
});
Assertions.assertThrows(IllegalArgumentException.class, () -> {
FCDotCDC1604DashP6.salt3SequenceWrite(Collections.emptyList(), 8);
});
}
}

View file

@ -49,8 +49,8 @@ public class FCDotINC0801DashP8Test {
Assertions.assertEquals(FCDotCDC1604DashP6.NS02_ESC3_X2.ordinal(), seq.get(0));
Assertions.assertEquals(FCDotCDC1604DashP6.NS03_ESC3_X3.ordinal(), seq.get(1));
Assertions.assertEquals(FCDotCDC1604DashP6.NS01_ESC3_X1.ordinal(), seq.get(2));
Assertions.assertEquals(FCDotCDC1604DashP6.NS06_PEPPER3_EXCLAMATION.ordinal(), seq.get(3));
Assertions.assertEquals(FCDotCDC1604DashP6.NS07_PEPPER3_QUESTION.ordinal(), seq.get(4));
Assertions.assertEquals(FCDotCDC1604DashP6.NS07_PEPPER3_QUESTION.ordinal(), seq.get(5));
Assertions.assertEquals(FCDotCDC1604DashP6.NS06_PEPPER3_QUESTION.ordinal(), seq.get(3));
Assertions.assertEquals(FCDotCDC1604DashP6.NS07_PEPPER3_EXCLAMATION.ordinal(), seq.get(4));
Assertions.assertEquals(FCDotCDC1604DashP6.NS07_PEPPER3_EXCLAMATION.ordinal(), seq.get(5));
}
}