FC18: prepared salt3 for duel bank octal select option feature letters
This commit is contained in:
parent
b964f97421
commit
53b9db8319
7 changed files with 95 additions and 55 deletions
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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");
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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()) {
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue