Added APL and BYD support

This commit is contained in:
Willem Cazander 2025-01-01 21:26:15 +01:00
parent 3e69821a54
commit d088fe28b2
26 changed files with 724 additions and 54 deletions

View file

@ -24,7 +24,6 @@ package org.x4o.o2o.fc18;
import java.util.Optional;
///
/// The dot cake index of four corner 18 bit words in cake slices which holds the cake points.
///
/// @author Willem Cazander
@ -37,10 +36,10 @@ public enum FourCornerDotCake {
FC_CDC1604_P6(0, 64),
/// Direct or Escaped Control
FC_DEC1604_E6(64, 64),
/// Reserved for future 6 bit cake
__RESERVED_1604_EXT1(128, 64),
/// Reserved for future 6 bit cake
__RESERVED_1604_EXT2(192, 64),
/// A Programming Language
FC_APL1604_S6(128, 64),
/// Block Your Display
FC_BYD1604_C6(192, 64),
// =========== Allow end-user select rendering of data gram packet per context

View file

@ -125,7 +125,7 @@ public class FourCornerUnicodeDisplay {
if (numberMode == null) {
prevLetter = cdcPoint >= FCDotCDC1604DashP6.NX01_A.ordinal();
if (cdcPoint < FCDotCDC1604DashP6.length()) {
byte ch = FCDotCDC1604DashP6.indexOf(cdcPoint).asciiByte();
int ch = FCDotCDC1604DashP6.indexOf(cdcPoint).codePoint();
if (renderCasing) {
if (toUpper) {
toUpper = false;

View file

@ -79,7 +79,7 @@ public class FourCornerUnicodeImport {
continue;
}
for (FCDotCDC1604DashP6 v : cdcChars) {
if (v.asciiByte() == codePoint) {
if (v.codePoint() == codePoint) {
result.add(v);
found = true;
cdcNumberTerminator = null;
@ -112,7 +112,7 @@ public class FourCornerUnicodeImport {
String codePointStr = Character.toString(codePoint);
for (FCDotCDC1604DashP6 v : cdcChars) {
if (convertLowerCase) {
byte codePointLower = (byte) Character.toLowerCase(v.asciiByte());
byte codePointLower = (byte) Character.toLowerCase(v.codePoint());
if (codePointLower == codePoint) {
result.add(v);
found = true;

View file

@ -0,0 +1,33 @@
/*
* 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;
/// Number index retriever for four corner baklava points.
///
/// @author Willem Cazander
/// @version 1.0 Jan 1, 2025
public interface FourCornerX06BaklavaPoint {
/// One baklava piece weights 52 gram
int baklavaPoint();
}

View file

@ -0,0 +1,33 @@
/*
* 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;
/// Number index retriever for four corner muffin points.
///
/// @author Willem Cazander
/// @version 1.0 Jan 1, 2025
public interface FourCornerX08MuffinPoint {
/// One muffin piece weights 111 gram
int muffinPoint();
}

View file

@ -26,7 +26,8 @@ package org.x4o.o2o.fc18;
///
/// @author Willem Cazander
/// @version 1.0 Dec 28, 2024
public interface FourCornerDotCakePoint {
public interface FourCornerX18CakePoint {
/// One cake piece weights 800 gram
int cakePoint();
}

View file

@ -0,0 +1,33 @@
/*
* 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;
/// Number index retriever for four corner 21 bit code points.
///
/// @author Willem Cazander
/// @version 1.0 Jan 1, 2025
public interface FourCornerX21CodePoint {
/// One code point weights ~1234 gram
int codePoint();
}

View file

@ -39,6 +39,10 @@ public enum FCDotCLKSource implements FCDotCLKSourceLookup {
RUST,
PYTHON,
ES6,
//APL_DYADIC
//APL_MONADIC
//APL_CIRCLE
//APL_CMD
//BASIC,
//BASIC_MSX, // = disk-basic + msx stuff
//BASIC_MPI, // MPI-2 for BASIC

View file

@ -24,7 +24,7 @@ package org.x4o.o2o.fc18.clk9p;
import java.util.Optional;
import org.x4o.o2o.fc18.FourCornerDotCakePoint;
import org.x4o.o2o.fc18.FourCornerX18CakePoint;
/**
* Adds CLK source lookup support to an cake point.
@ -33,7 +33,7 @@ import org.x4o.o2o.fc18.FourCornerDotCakePoint;
* @author Willem Cazander
* @version 1.0 Dec 30, 2024
*/
public interface FCDotCLKSourceCakePoint extends FourCornerDotCakePoint {
public interface FCDotCLKSourceCakePoint extends FourCornerX18CakePoint {
FCDotCLKSourceLookup[] getLookups();

View file

@ -23,7 +23,7 @@
package org.x4o.o2o.fc18.zero33;
import org.x4o.o2o.fc18.FourCornerDotCake;
import org.x4o.o2o.fc18.FourCornerDotCakePoint;
import org.x4o.o2o.fc18.FourCornerX18CakePoint;
/**
* "FC.AMD0110-A4" Four Corner Application Methodoums Decimals
@ -32,7 +32,7 @@ import org.x4o.o2o.fc18.FourCornerDotCakePoint;
* @author Willem Cazander
* @version 1.0 Dec 31, 2024
*/
public enum FCDotAMD0110DashA4 implements FourCornerDotCakePoint {
public enum FCDotAMD0110DashA4 implements FourCornerX18CakePoint {
/// Shorthand for zero
T001_NXX_001,
/// Shorthand for one

View file

@ -0,0 +1,263 @@
/*
* 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.FourCornerX06BaklavaPoint;
import org.x4o.o2o.fc18.FourCornerX08MuffinPoint;
import org.x4o.o2o.fc18.FourCornerX18CakePoint;
import org.x4o.o2o.fc18.FourCornerX21CodePoint;
/// "FC.APL1604-S6" Four Corner A Programming Language symbols cake slice of cake points.
///
/// @author Willem Cazander
/// @version 1.0 Jan 1, 2025
///
public enum FCDotAPL1604DashS6 implements FourCornerX06BaklavaPoint, FourCornerX08MuffinPoint, FourCornerX18CakePoint, FourCornerX21CodePoint {
/// Indicator for termination of pussy strings, which is the compatibility duel octal, with the CDC 1604 computers.
__NUL_APL('\u0000'),
// see https://en.wikipedia.org/wiki/Digital_encoding_of_APL_symbols
/// SL010000
UP_STILE('⌈'),
/// SL020000
DOWN_STILE('⌊'),
/// SL030000
DEL('∇'),
/// SL040000
DEL_TILDE('⍫'),
/// SL050000
DEL_STILE('⍒'),
/// SL060000
DELTA('∆'),
/// SL070000
DELTA_STILE('⍋'),
/// SL080000
CIRCLE('○'),
/// SL090000
CIRCLE_STILE('⌽'),
/// SL100000
CIRCLE_SLOPE('⍉'),
/// SL110000
CIRCLE_STAR('⍟'),
/// SL120000
CIRCLE_BAR('⊖'),
/// SL130000
QUAD_QUOTE('⍞'),
/// SL140000
QUAD_DIVIDE('⌹'),
/// SL150000
SLASH_BAR('⌿'),
/// SL160000
SLOPE_BAR('⍀'),
/// SL170000
UP_CARET_TILDE('⍲'),
/// SL180000
DOWN_CARET_TILDE('⍱'),
/// SL190000
DOWN_TACK_JOT('⍎'),
/// SL200000
UP_TACK_JOT('⍕'),
/// SL210000
UP_SHOE_NULL('⍝'),
/// SL220000
UP_TACK(''),
/// SL230000
DOWN_TACK('⊥'),
/// SL240000
IBEAM_TACK('⌶'),
/// SL250000
JOT('∘'),
/// SL260000
SQUISH_QUAD('⌷'),
/// SL270000
QUAD_JOT('⌻'),
/// SL280000
QUAD_SLOPE('⍂'),
// SL290000 = Ampersand Underbar is on 6 bit = FCDotCDC1604DashP6.__ESC + FCDotDEC1604DashE6.__ESC_LL + FCDotCDC1604DashP6.NX27_AMPERSAND
// SL300000 = Equals underbar is on 6 bit = FCDotCDC1604DashP6.__ESC + FCDotDEC1604DashE6.__ESC_LL + FCDotCDC1604DashP6._EQUALS
// SL310000 = OUT Symbol = Not used by IBM ?
/// SL320000
DIAERESIS_DOT('∵'),
// SL330000 = Delta underbar is on 6 bit = FCDotCDC1604DashP6.__ESC + FCDotDEC1604DashE6.__ESC_LL + FCDotCDC1604DashP6.__ESC + FCDotDEC1604DashE6.__ESC_APL + FCDotAPL1604DashS6.DELTA
/// SL340000
LEFT_TACK('⊢'),
/// SL350000
RIGHT_TACK('⊣'),
/// SL360000
QUAD('⎕'),
/// SL370000
LESS_GREATER('⋄'),
// SL380000 = Stile = FCDotCDC1604DashP6.BAR_VERTICAL
// SL390000 = undefined
/// SL400000
UP_SHOE('∩'),
/// SL410000
DOWN_SHOE(''),
/// SL420000
LEFT_SHOE('⊂'),
/// SL430000
RIGHT_SHOE('⊃'),
// SL440000 = Underbar = FCDotCDC1604DashP6.BAR_UNDER
/// SL450000
DIAERESIS('¨'),
// SL460000 = Tilde = FCDotCDC1604DashP6._TILDE
// SL470000 = undefined
/// SL480000
CIRCLE_PLUS('⊕'),
/// SL490000
CIRCLE_TIMES('⊗'),
/// SL500000
DOWN_CARET(''),
/// SL510000
UP_CARET('∧'),
// SL520000 = Less than = FCDotCDC1604DashP6.TAG_COMPARE_LEFT
// SL530000 = Greater than = FCDotCDC1604DashP6.TAG_COMPARE_RIGHT
/// SL540000
DIVIDE('÷'),
/// SL550000
TIMES('×'),
/// SL560000
NOT_GREATER('≤'),
/// SL570000
NOT_LESS('≥'),
// SL580000 = Quote Dot = FCDotCDC1604DashP6._EXCLAMATION
/// SL590000
LEFT_ARROW('←'),
/// SL600000
RIGHT_ARROW('→'),
/// SL610000
UP_ARROW('↑'),
/// SL620000
DOWN_ARROW('↓'),
/// SL630000
OVERBAR('‾'),
// SL640000 = Slope = FCDotCDC1604DashP6.BAR_V_LEFT
// SL650000 = Star = FCDotCDC1604DashP6._ASTERISK
// SL660000 = Quota = FCDotCDC1604DashP6._APOSTROPHE
// SL670000 = Left Parenthesis = FCDotCDC1604DashP6.TAG_ROUND_LEFT
// SL680000 = Right Parenthesis = FCDotCDC1604DashP6.TAG_ROUND_RIGHT
// SL690000 = Bar = FCDotCDC1604DashP6._MINUS
// SL700000 = Query = FCDotCDC1604DashP6._QUESTION
/// SL710000
ALPHA(''),
/// SL720000
EPSILON('∊'),
/// SL730000
IOTA(''),
/// SL740000
RHO(''),
/// SL750000
OMEGA('⍵'),
// SL760000 = Slash = FCDotCDC1604DashP6.BAR_V_RIGHT
// SL770000 = Left Bracket = FCDotCDC1604DashP6.TAG_SQUARE_LEFT
// SL780000 = Right Bracket = FCDotCDC1604DashP6.TAG_SQUARE_RIGHT
// SL790000 = Plus = FCDotCDC1604DashP6._PLUS
// SL800000 = Semicolon = FCDotCDC1604DashP6._SEMICOLON
// SL810000 = Equal = FCDotCDC1604DashP6._EQUALS
/// SL820000
NOT_EQUAL('≠'),
// SL830000 = Colon = FCDotCDC1604DashP6._COLON
// SL840000 = Dot = FCDotCDC1604DashP6._DOT
// SL850000 = Comma = FCDotCDC1604DashP6._COMMA
// SL860000 = Iota Underbar
// SL870000 = Epsilon Underbar
// On 6 bit:
// FCDotCDC1604DashP6.__ESC + FCDotDEC1604DashE6.__ESC_LL + FCDotCDC1604DashP6.__ESC + FCDotDEC1604DashE6.__ESC_APL + FCDotAPL1604DashS6.EPSILON
// On 8 or 18 bit:
// FCDotDEC1604DashE6.__ESC_LL + FCDotAPL1604DashS6.EPSILON
// ----------- END APL
/// Lambda symbol
LAMBDA('λ'), // Greek Capital Letter Lambda
/// Phi symbol
PHI('Φ'), // Greek Capital Letter Phi
/// A Euler's Number symbol
AEN('ӕ'), // Cyrillic Small Ligature A Ie
/// One pi has symbol of 2T
PI_1('π'), // Greek Small Letter Pi
/// Two pi has symbol of 1T
PI_2('τ'), // Greek Capital Letter Tau
/// Three pi has symbol of 3T
PI_3('Ѧ'), // Cyrillic Capital Letter Little Yus
;
static final private FCDotAPL1604DashS6[] VALUES = values(); // values() is slow method
private final int codePoint;
private FCDotAPL1604DashS6(char codePoint) {
this.codePoint = codePoint;
}
@Override
public int baklavaPoint() {
return ordinal();
}
@Override
public int muffinPoint() {
return cakePoint();
}
@Override
public int cakePoint() {
return FourCornerDotCake.FC_APL1604_S6.getStart() + ordinal();
}
@Override
public int codePoint() {
return codePoint;
}
static public int length() {
return VALUES.length;
}
static public FCDotAPL1604DashS6 indexOf(int idx) {
return VALUES[idx];
}
}

View file

@ -23,7 +23,7 @@
package org.x4o.o2o.fc18.zero33;
import org.x4o.o2o.fc18.FourCornerDotCake;
import org.x4o.o2o.fc18.FourCornerDotCakePoint;
import org.x4o.o2o.fc18.FourCornerX18CakePoint;
/**
* "FC.BMW0102-D1" Four Corner Binary Model Word encoding.
@ -31,9 +31,9 @@ import org.x4o.o2o.fc18.FourCornerDotCakePoint;
* @author Willem Cazander
* @version 1.0 Dec 31, 2024
*/
public enum FCDotBMW0102DashD1 implements FourCornerDotCakePoint {
NXX_001,
NXX_002,
public enum FCDotBMW0102DashD1 implements FourCornerX18CakePoint {
T002_NXX_001,
T002_NXX_002,
;
@Override

View file

@ -0,0 +1,148 @@
/*
* 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.FourCornerX06BaklavaPoint;
import org.x4o.o2o.fc18.FourCornerX08MuffinPoint;
import org.x4o.o2o.fc18.FourCornerX18CakePoint;
import org.x4o.o2o.fc18.FourCornerX21CodePoint;
/// "FC.BYD1604-C6" Four Corner Block Your Display terminal application.
///
/// @author Willem Cazander
/// @version 1.0 Jan 1, 2025
///
public enum FCDotBYD1604DashC6 implements FourCornerX06BaklavaPoint, FourCornerX08MuffinPoint, FourCornerX18CakePoint, FourCornerX21CodePoint {
/// 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
BOX2_1('╧'),
BOX2_2('╟'),
BOX2_3('╚'),
BOX2_4('╤'),
BOX2_5('║'),
BOX2_6('╔'),
BOX2_7('╠'),
BOX2_8('╢'),
BOX2_9('╝'),
BOX2_A('═'),
BOX2_B('╩'),
BOX2_C('╗'),
BOX2_D('╣'),
BOX2_E('╦'),
BOX2_F('╬'),
/// this index is free in CP/M+, but here is the bi-cross glue from unicode "Box Drawing" char: 0x256A
BOX1_0('╪'),
BOX1_1('╵'),
BOX1_2('╶'),
BOX1_3('└'),
BOX1_4('╷'),
BOX1_5('│'),
BOX1_6('┌'),
BOX1_7('├'),
BOX1_8('╴'),
BOX1_9('┘'),
BOX1_A('─'),
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 FCDotBYD1604DashC6[] VALUES = values(); // values() is slow method
private final int codePoint;
private FCDotBYD1604DashC6(char codePoint) {
this.codePoint = codePoint;
}
@Override
public int baklavaPoint() {
return ordinal();
}
@Override
public int muffinPoint() {
return cakePoint();
}
@Override
public int cakePoint() {
return FourCornerDotCake.FC_BYD1604_C6.getStart() + ordinal();
}
@Override
public int codePoint() {
return codePoint;
}
static public int length() {
return VALUES.length;
}
static public FCDotBYD1604DashC6 indexOf(int idx) {
return VALUES[idx];
}
}

View file

@ -23,7 +23,10 @@
package org.x4o.o2o.fc18.zero33;
import org.x4o.o2o.fc18.FourCornerDotCake;
import org.x4o.o2o.fc18.FourCornerDotCakePoint;
import org.x4o.o2o.fc18.FourCornerX06BaklavaPoint;
import org.x4o.o2o.fc18.FourCornerX08MuffinPoint;
import org.x4o.o2o.fc18.FourCornerX18CakePoint;
import org.x4o.o2o.fc18.FourCornerX21CodePoint;
///
/// "FC.CDC1604-P6" Four Corner Core Data Cake has 27 pie slice number systems "Packed" for MATH and BASIC letters.
@ -38,7 +41,7 @@ import org.x4o.o2o.fc18.FourCornerDotCakePoint;
/// @author Willem Cazander
/// @version 1.0 Dec 22, 2024
///
public enum FCDotCDC1604DashP6 implements FourCornerDotCakePoint {
public enum FCDotCDC1604DashP6 implements FourCornerX06BaklavaPoint, FourCornerX08MuffinPoint, FourCornerX18CakePoint, FourCornerX21CodePoint {
// [__NUL][__PIE][__GLUE][__ESC] [__LINE][__SPACE]?! {[(< }])>
// ~+-* ,.:; '"`^ =#$%
// |_\/ @ABC DEFG HIJK
@ -125,19 +128,21 @@ public enum FCDotCDC1604DashP6 implements FourCornerDotCakePoint {
NX27_AMPERSAND('&'),
;
static final private FCDotCDC1604DashP6[] VALUES = values();
private final byte asciiByte;
static final private FCDotCDC1604DashP6[] VALUES = values(); // values() is slow method
private final int codePoint;
private FCDotCDC1604DashP6(char codePoint) {
this.asciiByte = (byte) codePoint;
this.codePoint = codePoint;
}
public byte cdcByte() {
return (byte) ordinal();
@Override
public int baklavaPoint() {
return ordinal();
}
public byte asciiByte() {
return asciiByte;
@Override
public int muffinPoint() {
return cakePoint();
}
@Override
@ -145,6 +150,11 @@ public enum FCDotCDC1604DashP6 implements FourCornerDotCakePoint {
return FourCornerDotCake.FC_CDC1604_P6.getStart() + ordinal();
}
@Override
public int codePoint() {
return codePoint;
}
static public int length() {
return VALUES.length;
}

View file

@ -23,7 +23,9 @@
package org.x4o.o2o.fc18.zero33;
import org.x4o.o2o.fc18.FourCornerDotCake;
import org.x4o.o2o.fc18.FourCornerDotCakePoint;
import org.x4o.o2o.fc18.FourCornerX06BaklavaPoint;
import org.x4o.o2o.fc18.FourCornerX08MuffinPoint;
import org.x4o.o2o.fc18.FourCornerX18CakePoint;
/**
* "FC.DEC1604-E2" Four Corner dot Direct or Escaped Control in grid of 16 by 04 of dashed Escape codes V2.
@ -39,23 +41,34 @@ import org.x4o.o2o.fc18.FourCornerDotCakePoint;
* @author Willem Cazander
* @version 1.0 Dec 24, 2024
*/
public enum FCDotDEC1604DashE6 implements FourCornerDotCakePoint {
RESERVED___NUL,
RESERVED___PIE,
public enum FCDotDEC1604DashE6 implements FourCornerX06BaklavaPoint, FourCornerX08MuffinPoint, FourCornerX18CakePoint {
/// Indicator for termination of pussy strings, which is the compatibility duel octal, with the CDC 1604 computers.
__NUL_DEC,
/// On 6 bit escape to the APL baklava.
__ESC6_APL,
/// Escape the next next 6 bit cake slice. (undefined)
RESERVED___GLUE,
/// Duel escape to 18 bit four corner on 6 and 8 bit systems.
/// On 6/8 bit escape to 18 bit four corner.
/// Stream six octals per cake point in NX01 to NX08, until any out of range P6, thus ending with __ESC
__ESC_18,
RESERVED__LINE,
RESERVED__SPACE,
__ESC6_FC18,
// "low line" escape for next single letter A-Z.
/// These were produced on APL printing terminals by over-striking a straight capital letter with an underscore character.
/// Example a̲b̲c̲/A̲B̲C̲
__ESC_LL,
/// "low line spaced" also called a "macron below" escape for next single letter A-Z.
/// Example a̱ḇc̱/A̱ḆC̱
__ESC_LLSP,
UNDEFINED__QUESTION,
UNDEFINED__EXCLAMATION,
UNDEFINED__TAG_CURLY_LEFT,
/// C1 char [ = CSI = Control Sequence Introducer
UNDEFINED__TAG_SQUARE_LEFT,
UNDEFINED__TAG_ROUND_LEFT,
UNDEFINED__TAG_COMPARE_LEFT,
UNDEFINED__TAG_CURLY_RIGHT,
/// C1 char ] = OSC = Operating System Command
UNDEFINED__TAG_SQUARE_RIGHT,
UNDEFINED__TAG_ROUND_RIGHT,
UNDEFINED__TAG_COMPARE_RIGHT,
@ -70,13 +83,16 @@ public enum FCDotDEC1604DashE6 implements FourCornerDotCakePoint {
UNDEFINED___APOSTROPHE,
UNDEFINED___QUOTATION,
UNDEFINED___BACKTICK,
/// C1 char ^ = PM = Privacy Message
UNDEFINED___CARET,
UNDEFINED___EQUALS,
UNDEFINED___HASH,
UNDEFINED___DOLLAR,
UNDEFINED___PERCENT,
UNDEFINED__BAR_VERTICAL,
/// C1 char _ = APC = Application Program Command
UNDEFINED__BAR_UNDER,
/// C1 char \ = ST = String Terminator
UNDEFINED__BAR_V_LEFT,
UNDEFINED__BAR_V_RIGHT,
UNDEFINED___AT,
@ -86,15 +102,24 @@ public enum FCDotDEC1604DashE6 implements FourCornerDotCakePoint {
UNDEFINED__NX04_D,
UNDEFINED__NX05_E,
UNDEFINED__NX06_F,
/// C0 char G = BEL = Bell, 0x07
UNDEFINED__NX07_G,
/// C0 char H = BS = Backspace
UNDEFINED__NX08_H,
/// C0 char I = HT = Tab
UNDEFINED__NX09_I,
/// C0 char J = LF = Line Feed
UNDEFINED__NX10_J,
UNDEFINED__NX11_K,
/// C0 char L = FF = Form Feed
UNDEFINED__NX12_L,
/// C0 char M = CR = Carriage Return
UNDEFINED__NX13_M,
/// C1 char N = SS2 = Single Shift Two
UNDEFINED__NX14_N,
/// C1 char O = SS3 = Single Shift Three
UNDEFINED__NX15_O,
/// C1 char P = DCS = Device Control String
UNDEFINED__NX16_P,
UNDEFINED__NX17_Q,
UNDEFINED__NX18_R,
@ -103,6 +128,7 @@ public enum FCDotDEC1604DashE6 implements FourCornerDotCakePoint {
UNDEFINED__NX21_U,
UNDEFINED__NX22_V,
UNDEFINED__NX23_W,
/// C1 char X = SOS = Start Of String
UNDEFINED__NX24_X,
UNDEFINED__NX25_Y,
UNDEFINED__NX26_Z,
@ -138,11 +164,21 @@ public enum FCDotDEC1604DashE6 implements FourCornerDotCakePoint {
// TODO: full new impl+cleanup of ANSI-NG for 6 bit real computer terminals !?!
;
static final private FCDotDEC1604DashE6[] VALUES = values();
static final private FCDotDEC1604DashE6[] VALUES = values(); // values() is slow method
private FCDotDEC1604DashE6() {
}
@Override
public int baklavaPoint() {
return ordinal();
}
@Override
public int muffinPoint() {
return cakePoint();
}
@Override
public int cakePoint() {
return FourCornerDotCake.FC_DEC1604_E6.getStart() + ordinal();

View file

@ -23,7 +23,7 @@
package org.x4o.o2o.fc18.zero33;
import org.x4o.o2o.fc18.FourCornerDotCake;
import org.x4o.o2o.fc18.FourCornerDotCakePoint;
import org.x4o.o2o.fc18.FourCornerX18CakePoint;
/**
* "FC.IBM1616-D8" Four Corner Interim Byte Mode, embed raw 8 bit Data
@ -32,7 +32,7 @@ import org.x4o.o2o.fc18.FourCornerDotCakePoint;
* @author Willem Cazander
* @version 1.0 Dec 30, 2024
*/
public enum FCDotIBM1616DashD8 implements FourCornerDotCakePoint {
public enum FCDotIBM1616DashD8 implements FourCornerX18CakePoint {
NXX_001,
NXX_002,
NXX_003,

View file

@ -23,7 +23,7 @@
package org.x4o.o2o.fc18.zero33;
import org.x4o.o2o.fc18.FourCornerDotCake;
import org.x4o.o2o.fc18.FourCornerDotCakePoint;
import org.x4o.o2o.fc18.FourCornerX18CakePoint;
/**
* "FC.NCR1632-0F" Four Corner New Counting Rods optional flags.
@ -31,7 +31,7 @@ import org.x4o.o2o.fc18.FourCornerDotCakePoint;
* @author Willem Cazander
* @version 1.0 Dec 31, 2024
*/
public enum FCDotNCR1632Dash0F implements FourCornerDotCakePoint {
public enum FCDotNCR1632Dash0F implements FourCornerX18CakePoint {
/// Reserved TODO: Check if we need 1PI/2PI/3PI/NaN minus in 4D and maybe replace math symbols from P6 to here..
RESERVED,

View file

@ -23,7 +23,7 @@
package org.x4o.o2o.fc18.zero33;
import org.x4o.o2o.fc18.FourCornerDotCake;
import org.x4o.o2o.fc18.FourCornerDotCakePoint;
import org.x4o.o2o.fc18.FourCornerX18CakePoint;
/**
* "FC.NCR1632-0M" Four Corner New Counting Rods terminator pie multiplier.
@ -31,7 +31,7 @@ import org.x4o.o2o.fc18.FourCornerDotCakePoint;
* @author Willem Cazander
* @version 1.0 Dec 31, 2024
*/
public enum FCDotNCR1632Dash0M implements FourCornerDotCakePoint {
public enum FCDotNCR1632Dash0M implements FourCornerX18CakePoint {
NXX_001,
NXX_002,
NXX_003,

View file

@ -23,7 +23,7 @@
package org.x4o.o2o.fc18.zero33;
import org.x4o.o2o.fc18.FourCornerDotCake;
import org.x4o.o2o.fc18.FourCornerDotCakePoint;
import org.x4o.o2o.fc18.FourCornerX18CakePoint;
/**
* "FC.NCR1632-1T" Four Corner New Counting Rods selects the Terminator pie.
@ -31,7 +31,7 @@ import org.x4o.o2o.fc18.FourCornerDotCakePoint;
* @author Willem Cazander
* @version 1.0 Dec 30, 2024
*/
public enum FCDotNCR1632Dash1T implements FourCornerDotCakePoint {
public enum FCDotNCR1632Dash1T implements FourCornerX18CakePoint {
NXX_001,
NXX_002,
NXX_003,

View file

@ -23,7 +23,7 @@
package org.x4o.o2o.fc18.zero33;
import org.x4o.o2o.fc18.FourCornerDotCake;
import org.x4o.o2o.fc18.FourCornerDotCakePoint;
import org.x4o.o2o.fc18.FourCornerX18CakePoint;
/**
* "FC.NCR1632-1V" Four Corner New Counting Rods One Value of a terminator slice.
@ -31,7 +31,7 @@ import org.x4o.o2o.fc18.FourCornerDotCakePoint;
* @author Willem Cazander
* @version 1.0 Dec 30, 2024
*/
public enum FCDotNCR1632Dash1V implements FourCornerDotCakePoint {
public enum FCDotNCR1632Dash1V implements FourCornerX18CakePoint {
NXX_001,
NXX_002,
NXX_003,

View file

@ -23,7 +23,7 @@
package org.x4o.o2o.fc18.zero33;
import org.x4o.o2o.fc18.FourCornerDotCake;
import org.x4o.o2o.fc18.FourCornerDotCakePoint;
import org.x4o.o2o.fc18.FourCornerX18CakePoint;
/**
* "FC.OCE0801-H3" Four Corner Octal Character Encoding in Hinari 3 bit.
@ -32,7 +32,7 @@ import org.x4o.o2o.fc18.FourCornerDotCakePoint;
* @author Willem Cazander
* @version 1.0 Dec 30, 2024
*/
public enum FCDotOCE0801DashH3 implements FourCornerDotCakePoint {
public enum FCDotOCE0801DashH3 implements FourCornerX18CakePoint {
NXX_001,
NXX_002,
NXX_003,

View file

@ -23,7 +23,7 @@
package org.x4o.o2o.fc18.zero33;
import org.x4o.o2o.fc18.FourCornerDotCake;
import org.x4o.o2o.fc18.FourCornerDotCakePoint;
import org.x4o.o2o.fc18.FourCornerX18CakePoint;
/**
* "FC.OCE0808-H6" Four Corner Octal Character Encoding in Hinari 6 bit.
@ -32,7 +32,7 @@ import org.x4o.o2o.fc18.FourCornerDotCakePoint;
* @author Willem Cazander
* @version 1.0 Dec 30, 2024
*/
public enum FCDotOCE0808DashH6 implements FourCornerDotCakePoint {
public enum FCDotOCE0808DashH6 implements FourCornerX18CakePoint {
NXX_001,
NXX_002,
NXX_003,

View file

@ -23,7 +23,7 @@
package org.x4o.o2o.fc18.zero33;
import org.x4o.o2o.fc18.FourCornerDotCake;
import org.x4o.o2o.fc18.FourCornerDotCakePoint;
import org.x4o.o2o.fc18.FourCornerX18CakePoint;
/**
* "FC.OCE0864-H9" Four Corner Octal Character Encoding in Hinari 9 bit.
@ -32,7 +32,7 @@ import org.x4o.o2o.fc18.FourCornerDotCakePoint;
* @author Willem Cazander
* @version 1.0 Dec 30, 2024
*/
public enum FCDotOCE0864DashH9 implements FourCornerDotCakePoint {
public enum FCDotOCE0864DashH9 implements FourCornerX18CakePoint {
NXX_001,
NXX_002,
NXX_003,

View file

@ -0,0 +1,55 @@
/*
* 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 java.util.HashMap;
import java.util.Map;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
/**
* Tests FCDotAPL1604DashS6 encoding.
*
* @author Willem Cazander
* @version 1.0 Jan 1, 2025
*/
public class FCDotAPL1604DashS6Test {
@Test
public void testValues() throws Exception {
Assertions.assertEquals(64, FCDotAPL1604DashS6.length());
boolean duplicate = false;
Map<Integer,FCDotAPL1604DashS6> global = new HashMap<>();
for (FCDotAPL1604DashS6 v : FCDotAPL1604DashS6.values()) {
Assertions.assertNotNull(v);
if (global.containsKey(v.codePoint())) {
duplicate = true;
break;
}
global.put(v.codePoint(), v);
}
Assertions.assertTrue(global.size() > 1);
Assertions.assertFalse(duplicate, "Duplicate ascii core value detected");
}
}

View file

@ -0,0 +1,55 @@
/*
* 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 java.util.HashMap;
import java.util.Map;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
/**
* Tests FCDotBYD1604DashC6 encoding.
*
* @author Willem Cazander
* @version 1.0 Dec 30, 2024
*/
public class FCDotBYD1604DashC6Test {
@Test
public void testValues() throws Exception {
Assertions.assertEquals(64, FCDotBYD1604DashC6.length());
boolean duplicate = false;
Map<Integer,FCDotBYD1604DashC6> global = new HashMap<>();
for (FCDotBYD1604DashC6 v : FCDotBYD1604DashC6.values()) {
Assertions.assertNotNull(v);
if (global.containsKey(v.codePoint())) {
duplicate = true;
break;
}
global.put(v.codePoint(), v);
}
Assertions.assertTrue(global.size() > 1);
Assertions.assertFalse(duplicate, "Duplicate ascii core value detected");
}
}

View file

@ -40,14 +40,14 @@ public class FCDotCDC1604DashP6Test {
public void testValues() throws Exception {
Assertions.assertEquals(64, FCDotCDC1604DashP6.length());
boolean duplicate = false;
Map<Byte,FCDotCDC1604DashP6> global = new HashMap<>();
Map<Integer,FCDotCDC1604DashP6> global = new HashMap<>();
for (FCDotCDC1604DashP6 v : FCDotCDC1604DashP6.values()) {
Assertions.assertNotNull(v);
if (global.containsKey(v.asciiByte())) {
if (global.containsKey(v.codePoint())) {
duplicate = true;
break;
}
global.put(v.asciiByte(), v);
global.put(v.codePoint(), v);
}
Assertions.assertTrue(global.size() > 1);
Assertions.assertFalse(duplicate, "Duplicate ascii core value detected");