-- | As a kind of object file or byte code, TI-85 programs can be
-- represented as list of tokens.
--
-- The contents of this module describe the possible tokens, and a way
-- to convert from byte to token.
module Data.TI85.Token where

import Data.Word
import Data.Array.Unboxed (Array, array)
import Data.Text (Text)

-- | There are several types of tokens. Most come
-- with some instructions for what do to with the
-- bytes following the token.
data TokenDef = Invalid
    | Fixed Text      -- ^ Representation of specific text
    | QuoteText       -- ^ Quoted string
    | NameLength      -- ^ A string specified by length
    | FixedLength Int -- ^ A fixed-length string
    | Extended        -- ^ Look up the next token in the extended token table
    | Conversion      -- ^ Unit conversion
    | Literal         -- ^ Literal value, represented as text
    | Label           -- ^ Lbl, with a text label
    | Goto            -- ^ Goto, with a text label
    deriving Int -> TokenDef -> ShowS
[TokenDef] -> ShowS
TokenDef -> String
(Int -> TokenDef -> ShowS)
-> (TokenDef -> String) -> ([TokenDef] -> ShowS) -> Show TokenDef
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> TokenDef -> ShowS
showsPrec :: Int -> TokenDef -> ShowS
$cshow :: TokenDef -> String
show :: TokenDef -> String
$cshowList :: [TokenDef] -> ShowS
showList :: [TokenDef] -> ShowS
Show

-- | Mapping from byte to TokenDef.
tokenTable :: Array Word8 TokenDef
tokenTable :: Array Word8 TokenDef
tokenTable = (Word8, Word8) -> [(Word8, TokenDef)] -> Array Word8 TokenDef
forall (a :: * -> * -> *) e i.
(IArray a e, Ix i) =>
(i, i) -> [(i, e)] -> a i e
array (Word8
0x00,Word8
0xff) [
    (Word8
0x00, TokenDef
Invalid),
    (Word8
0x01, Text -> TokenDef
Fixed Text
"▸Rec"),
    (Word8
0x02, Text -> TokenDef
Fixed Text
"▸Pol"),
    (Word8
0x03, Text -> TokenDef
Fixed Text
"▸Cyl"),
    (Word8
0x04, Text -> TokenDef
Fixed Text
"▸Sph"),
    (Word8
0x05, Text -> TokenDef
Fixed Text
"▸DMS"),
    (Word8
0x06, Text -> TokenDef
Fixed Text
"▸Bin"),
    (Word8
0x07, Text -> TokenDef
Fixed Text
"▸Hex"),
    (Word8
0x08, Text -> TokenDef
Fixed Text
"▸Oct"),
    (Word8
0x09, Text -> TokenDef
Fixed Text
"▸Dec"),
    (Word8
0x0A, Text -> TokenDef
Fixed Text
"▸Frac"),
    (Word8
0x0B, Text -> TokenDef
Fixed Text
"→"),
    (Word8
0x0C, Text -> TokenDef
Fixed Text
"["),
    (Word8
0x0D, Text -> TokenDef
Fixed Text
"]"),
    (Word8
0x0E, Text -> TokenDef
Fixed Text
"{"),
    (Word8
0x0F, Text -> TokenDef
Fixed Text
"}"),
    (Word8
0x10, Text -> TokenDef
Fixed Text
"("),
    (Word8
0x11, Text -> TokenDef
Fixed Text
")"),
    (Word8
0x12, Text -> TokenDef
Fixed Text
"round"),
    (Word8
0x13, Text -> TokenDef
Fixed Text
"max"),
    (Word8
0x14, Text -> TokenDef
Fixed Text
"min"),
    (Word8
0x15, Text -> TokenDef
Fixed Text
"mod"),
    (Word8
0x16, Text -> TokenDef
Fixed Text
"cross"),
    (Word8
0x17, Text -> TokenDef
Fixed Text
"dot"),
    (Word8
0x18, Text -> TokenDef
Fixed Text
"aug"),
    (Word8
0x19, Text -> TokenDef
Fixed Text
"rSwap"),
    (Word8
0x1A, Text -> TokenDef
Fixed Text
"rAdd"),
    (Word8
0x1B, Text -> TokenDef
Fixed Text
"multR"),
    (Word8
0x1C, Text -> TokenDef
Fixed Text
"mRAdd"),
    (Word8
0x1D, Text -> TokenDef
Fixed Text
"sub"),
    (Word8
0x1E, Text -> TokenDef
Fixed Text
"lcm"),
    (Word8
0x1F, Text -> TokenDef
Fixed Text
"gcd"),
    (Word8
0x20, Text -> TokenDef
Fixed Text
"simult"),
    (Word8
0x21, Text -> TokenDef
Fixed Text
"inter"),
    (Word8
0x22, Text -> TokenDef
Fixed Text
"pEval"),
    (Word8
0x23, Text -> TokenDef
Fixed Text
"randM"),
    (Word8
0x24, Text -> TokenDef
Fixed Text
"seq"),
    (Word8
0x25, Text -> TokenDef
Fixed Text
"evalF"),
    (Word8
0x26, Text -> TokenDef
Fixed Text
"fnInt"),
    (Word8
0x27, Text -> TokenDef
Fixed Text
"arc"),
    (Word8
0x28, Text -> TokenDef
Fixed Text
"fMin"),
    (Word8
0x29, Text -> TokenDef
Fixed Text
"fMax"),
    (Word8
0x2A, Text -> TokenDef
Fixed Text
"der1"),
    (Word8
0x2B, Text -> TokenDef
Fixed Text
"der2"),
    (Word8
0x2C, Text -> TokenDef
Fixed Text
"nDer"),
    (Word8
0x2D, TokenDef
QuoteText),
    (Word8
0x2E, Text -> TokenDef
Fixed Text
"∠"),
    (Word8
0x2F, Text -> TokenDef
Fixed Text
","),
    (Word8
0x30, Text -> TokenDef
Fixed Text
" or "),
    (Word8
0x31, Text -> TokenDef
Fixed Text
" xor "),
    (Word8
0x32, TokenDef
NameLength),
    (Word8
0x33, Int -> TokenDef
FixedLength Int
1),
    (Word8
0x34, Int -> TokenDef
FixedLength Int
2),
    (Word8
0x35, Int -> TokenDef
FixedLength Int
3),
    (Word8
0x36, Int -> TokenDef
FixedLength Int
4),
    (Word8
0x37, Int -> TokenDef
FixedLength Int
5),
    (Word8
0x38, Int -> TokenDef
FixedLength Int
6),
    (Word8
0x39, Int -> TokenDef
FixedLength Int
7),
    (Word8
0x3A, Int -> TokenDef
FixedLength Int
8),
    (Word8
0x3B, TokenDef
NameLength),
    (Word8
0x3C, TokenDef
NameLength),
    (Word8
0x3D, TokenDef
Extended),
    (Word8
0x3E, TokenDef
Conversion),
    (Word8
0x3F, Text -> TokenDef
Fixed Text
"="),
    (Word8
0x40, Text -> TokenDef
Fixed Text
" and "),
    (Word8
0x41, Text -> TokenDef
Fixed Text
"rand"),
    (Word8
0x42, Text -> TokenDef
Fixed Text
"π"),
    (Word8
0x43, Text -> TokenDef
Fixed Text
"getKy"),
    (Word8
0x44, TokenDef
Literal),
    (Word8
0x45, Text -> TokenDef
Fixed Text
"%"),
    (Word8
0x46, Text -> TokenDef
Fixed Text
"!"),
    (Word8
0x47, Text -> TokenDef
Fixed Text
"ʳ"),
    (Word8
0x48, Text -> TokenDef
Fixed Text
"°"),
    (Word8
0x49, Text -> TokenDef
Fixed Text
"⁻¹"),
    (Word8
0x4A, Text -> TokenDef
Fixed Text
"²"),
    (Word8
0x4B, Text -> TokenDef
Fixed Text
"ᵀ"),
    (Word8
0x4C, Text -> TokenDef
Fixed Text
"Menu"),
    (Word8
0x4D, Text -> TokenDef
Fixed Text
"P2Reg"),
    (Word8
0x4E, Text -> TokenDef
Fixed Text
"P3Reg"),
    (Word8
0x4F, Text -> TokenDef
Fixed Text
"P4Reg"),
    (Word8
0x50, Text -> TokenDef
Fixed Text
"=="),
    (Word8
0x51, Text -> TokenDef
Fixed Text
"<"),
    (Word8
0x52, Text -> TokenDef
Fixed Text
">"),
    (Word8
0x53, Text -> TokenDef
Fixed Text
"<="),
    (Word8
0x54, Text -> TokenDef
Fixed Text
">="),
    (Word8
0x55, Text -> TokenDef
Fixed Text
"≠"),
    (Word8
0x56, Text -> TokenDef
Fixed Text
"Radian"),
    (Word8
0x57, Text -> TokenDef
Fixed Text
"Degree"),
    (Word8
0x58, Text -> TokenDef
Fixed Text
"Normal"),
    (Word8
0x59, Text -> TokenDef
Fixed Text
"Sci"),
    (Word8
0x5A, Text -> TokenDef
Fixed Text
"Eng"),
    (Word8
0x5B, Text -> TokenDef
Fixed Text
"Float"),
    (Word8
0x5C, Text -> TokenDef
Fixed Text
"Fix"),
    (Word8
0x5D, Text -> TokenDef
Fixed Text
"RectV"),
    (Word8
0x5E, Text -> TokenDef
Fixed Text
"CylV"),
    (Word8
0x5F, Text -> TokenDef
Fixed Text
"SphereV"),
    (Word8
0x60, Text -> TokenDef
Fixed Text
"+"),
    (Word8
0x61, Text -> TokenDef
Fixed Text
"-"),
    (Word8
0x62, Text -> TokenDef
Fixed Text
"Func"),
    (Word8
0x63, Text -> TokenDef
Fixed Text
"Param"),
    (Word8
0x64, Text -> TokenDef
Fixed Text
"Pol"),
    (Word8
0x65, Text -> TokenDef
Fixed Text
"DifEq"),
    (Word8
0x66, Text -> TokenDef
Fixed Text
"Bin"),
    (Word8
0x67, Text -> TokenDef
Fixed Text
"Oct"),
    (Word8
0x68, Text -> TokenDef
Fixed Text
"Hex"),
    (Word8
0x69, Text -> TokenDef
Fixed Text
"Dec"),
    (Word8
0x6A, Text -> TokenDef
Fixed Text
"RectC"),
    (Word8
0x6B, Text -> TokenDef
Fixed Text
"PolarC"),
    (Word8
0x6C, Text -> TokenDef
Fixed Text
"dxDer1"),
    (Word8
0x6D, Text -> TokenDef
Fixed Text
"dxNDer"),
    (Word8
0x6E, Text -> TokenDef
Fixed Text
":"),
    (Word8
0x6F, Text -> TokenDef
Fixed Text
"\n"),
    (Word8
0x70, Text -> TokenDef
Fixed Text
"*"),
    (Word8
0x71, Text -> TokenDef
Fixed Text
"/"),
    (Word8
0x72, Text -> TokenDef
Fixed Text
"SeqG"),
    (Word8
0x73, Text -> TokenDef
Fixed Text
"SimulG"),
    (Word8
0x74, Text -> TokenDef
Fixed Text
"PolarGC"),
    (Word8
0x75, Text -> TokenDef
Fixed Text
"RectGC"),
    (Word8
0x76, Text -> TokenDef
Fixed Text
"CoordOn"),
    (Word8
0x77, Text -> TokenDef
Fixed Text
"CoordOff"),
    (Word8
0x78, Text -> TokenDef
Fixed Text
"DrawLine"),
    (Word8
0x79, Text -> TokenDef
Fixed Text
"DrawDot"),
    (Word8
0x7A, Text -> TokenDef
Fixed Text
"AxesOn"),
    (Word8
0x7B, Text -> TokenDef
Fixed Text
"AxesOff"),
    (Word8
0x7C, Text -> TokenDef
Fixed Text
"GridOn"),
    (Word8
0x7D, Text -> TokenDef
Fixed Text
"GridOff"),
    (Word8
0x7E, Text -> TokenDef
Fixed Text
"LabelOn"),
    (Word8
0x7F, Text -> TokenDef
Fixed Text
"LabelOff"),
    (Word8
0x80, Text -> TokenDef
Fixed Text
"nPr"),
    (Word8
0x81, Text -> TokenDef
Fixed Text
"nCr"),
    (Word8
0x82, Text -> TokenDef
Fixed Text
"Trace"),
    (Word8
0x83, Text -> TokenDef
Fixed Text
"ClDrw"),
    (Word8
0x84, Text -> TokenDef
Fixed Text
"ZStd"),
    (Word8
0x85, Text -> TokenDef
Fixed Text
"ZTrig"),
    (Word8
0x86, Text -> TokenDef
Fixed Text
"ZFit"),
    (Word8
0x87, Text -> TokenDef
Fixed Text
"ZIn"),
    (Word8
0x88, Text -> TokenDef
Fixed Text
"ZOut"),
    (Word8
0x89, Text -> TokenDef
Fixed Text
"ZSqr"),
    (Word8
0x8A, Text -> TokenDef
Fixed Text
"ZInt"),
    (Word8
0x8B, Text -> TokenDef
Fixed Text
"ZPrev"),
    (Word8
0x8C, Text -> TokenDef
Fixed Text
"ZDecm"),
    (Word8
0x8D, Text -> TokenDef
Fixed Text
"ZRcl"),
    (Word8
0x8E, Text -> TokenDef
Fixed Text
"PrtScrn"),
    (Word8
0x8F, Text -> TokenDef
Fixed Text
"DrawF"),
    (Word8
0x90, Text -> TokenDef
Fixed Text
"FnOn "),
    (Word8
0x91, Text -> TokenDef
Fixed Text
"FnOff "),
    (Word8
0x92, Text -> TokenDef
Fixed Text
"StPic"),
    (Word8
0x93, Text -> TokenDef
Fixed Text
"RcPic"),
    (Word8
0x94, Text -> TokenDef
Fixed Text
"StGDB"),
    (Word8
0x95, Text -> TokenDef
Fixed Text
"RcGDB"),
    (Word8
0x96, Text -> TokenDef
Fixed Text
"Line"),
    (Word8
0x97, Text -> TokenDef
Fixed Text
"Vert"),
    (Word8
0x98, Text -> TokenDef
Fixed Text
"PtOn"),
    (Word8
0x99, Text -> TokenDef
Fixed Text
"PtOff"),
    (Word8
0x9A, Text -> TokenDef
Fixed Text
"PtChg"),
    (Word8
0x9B, Text -> TokenDef
Fixed Text
"Shade"),
    (Word8
0x9C, Text -> TokenDef
Fixed Text
"Circl"),
    (Word8
0x9D, Text -> TokenDef
Fixed Text
"Axes"),
    (Word8
0x9E, Text -> TokenDef
Fixed Text
"TanLn"),
    (Word8
0x9F, Text -> TokenDef
Fixed Text
"DrInv"),
    (Word8
0xA0, Text -> TokenDef
Fixed Text
"√"),
    (Word8
0xA1, Text -> TokenDef
Fixed Text
"-"),
    (Word8
0xA2, Text -> TokenDef
Fixed Text
"abs"),
    (Word8
0xA3, Text -> TokenDef
Fixed Text
"iPart"),
    (Word8
0xA4, Text -> TokenDef
Fixed Text
"fPart"),
    (Word8
0xA5, Text -> TokenDef
Fixed Text
"int"),
    (Word8
0xA6, Text -> TokenDef
Fixed Text
"ln"),
    (Word8
0xA7, Text -> TokenDef
Fixed Text
"e^"),
    (Word8
0xA8, Text -> TokenDef
Fixed Text
"log"),
    (Word8
0xA9, Text -> TokenDef
Fixed Text
"10^"),
    (Word8
0xAA, Text -> TokenDef
Fixed Text
"sin "),
    (Word8
0xAB, Text -> TokenDef
Fixed Text
"sin⁻¹ "),
    (Word8
0xAC, Text -> TokenDef
Fixed Text
"cos "),
    (Word8
0xAD, Text -> TokenDef
Fixed Text
"cos⁻¹ "),
    (Word8
0xAE, Text -> TokenDef
Fixed Text
"tan "),
    (Word8
0xAF, Text -> TokenDef
Fixed Text
"tan⁻¹ "),
    (Word8
0xB0, Text -> TokenDef
Fixed Text
"sinh "),
    (Word8
0xB1, Text -> TokenDef
Fixed Text
"sinh⁻¹ "),
    (Word8
0xB2, Text -> TokenDef
Fixed Text
"cosh "),
    (Word8
0xB3, Text -> TokenDef
Fixed Text
"cosh⁻¹ "),
    (Word8
0xB4, Text -> TokenDef
Fixed Text
"tanh "),
    (Word8
0xB5, Text -> TokenDef
Fixed Text
"tanh⁻¹ "),
    (Word8
0xB6, Text -> TokenDef
Fixed Text
"sign "),
    (Word8
0xB7, Text -> TokenDef
Fixed Text
"det "),
    (Word8
0xB8, Text -> TokenDef
Fixed Text
"ident"),
    (Word8
0xB9, Text -> TokenDef
Fixed Text
"unitV"),
    (Word8
0xBA, Text -> TokenDef
Fixed Text
"norm"),
    (Word8
0xBB, Text -> TokenDef
Fixed Text
"rnorm"),
    (Word8
0xBC, Text -> TokenDef
Fixed Text
"cnorm"),
    (Word8
0xBD, Text -> TokenDef
Fixed Text
"ref"),
    (Word8
0xBE, Text -> TokenDef
Fixed Text
"rref"),
    (Word8
0xBF, Text -> TokenDef
Fixed Text
"dim"),
    (Word8
0xC0, Text -> TokenDef
Fixed Text
"dimL"),
    (Word8
0xC1, Text -> TokenDef
Fixed Text
"sum"),
    (Word8
0xC2, Text -> TokenDef
Fixed Text
"prod"),
    (Word8
0xC3, Text -> TokenDef
Fixed Text
"sortA"),
    (Word8
0xC4, Text -> TokenDef
Fixed Text
"sortD"),
    (Word8
0xC5, Text -> TokenDef
Fixed Text
"li▸vc"),
    (Word8
0xC6, Text -> TokenDef
Fixed Text
"vc▸li"),
    (Word8
0xC7, Text -> TokenDef
Fixed Text
"lngth"),
    (Word8
0xC8, Text -> TokenDef
Fixed Text
"conj"),
    (Word8
0xC9, Text -> TokenDef
Fixed Text
"real"),
    (Word8
0xCA, Text -> TokenDef
Fixed Text
"imag"),
    (Word8
0xCB, Text -> TokenDef
Fixed Text
"angle"),
    (Word8
0xCC, Text -> TokenDef
Fixed Text
"not"),
    (Word8
0xCD, Text -> TokenDef
Fixed Text
"rotR"),
    (Word8
0xCE, Text -> TokenDef
Fixed Text
"rotL"),
    (Word8
0xCF, Text -> TokenDef
Fixed Text
"shftR"),
    (Word8
0xD0, Text -> TokenDef
Fixed Text
"shftL"),
    (Word8
0xD1, Text -> TokenDef
Fixed Text
"eigVl"),
    (Word8
0xD2, Text -> TokenDef
Fixed Text
"eigVc"),
    (Word8
0xD3, Text -> TokenDef
Fixed Text
"cond"),
    (Word8
0xD4, Text -> TokenDef
Fixed Text
"poly"),
    (Word8
0xD5, Text -> TokenDef
Fixed Text
"fcstx"),
    (Word8
0xD6, Text -> TokenDef
Fixed Text
"fcsty"),
    (Word8
0xD7, Text -> TokenDef
Fixed Text
"eval "),
    (Word8
0xD8, Text -> TokenDef
Fixed Text
"If "),
    (Word8
0xD9, Text -> TokenDef
Fixed Text
"Then"),
    (Word8
0xDA, Text -> TokenDef
Fixed Text
"Else"),
    (Word8
0xDB, Text -> TokenDef
Fixed Text
"While "),
    (Word8
0xDC, Text -> TokenDef
Fixed Text
"Repeat "),
    (Word8
0xDD, Text -> TokenDef
Fixed Text
"For"),
    (Word8
0xDE, Text -> TokenDef
Fixed Text
"End"),
    (Word8
0xDF, Text -> TokenDef
Fixed Text
"Return"),
    (Word8
0xE0, TokenDef
Label),
    (Word8
0xE1, TokenDef
Goto),
    (Word8
0xE2, Text -> TokenDef
Fixed Text
"Pause"),
    (Word8
0xE3, Text -> TokenDef
Fixed Text
"Stop"),
    (Word8
0xE4, Text -> TokenDef
Fixed Text
"IS>"),
    (Word8
0xE5, Text -> TokenDef
Fixed Text
"DS<"),
    (Word8
0xE6, Text -> TokenDef
Fixed Text
"Input "),
    (Word8
0xE7, Text -> TokenDef
Fixed Text
"Prompt "),
    (Word8
0xE8, Text -> TokenDef
Fixed Text
"InpSt "),
    (Word8
0xE9, Text -> TokenDef
Fixed Text
"Disp "),
    (Word8
0xEA, Text -> TokenDef
Fixed Text
"DispG"),
    (Word8
0xEB, Text -> TokenDef
Fixed Text
"Outpt"),
    (Word8
0xEC, Text -> TokenDef
Fixed Text
"ClLCD"),
    (Word8
0xED, Text -> TokenDef
Fixed Text
"Eq▸St"),
    (Word8
0xEE, Text -> TokenDef
Fixed Text
"St▸Eq"),
    (Word8
0xEF, Text -> TokenDef
Fixed Text
"Fill"),
    (Word8
0xF0, Text -> TokenDef
Fixed Text
"^"),
    (Word8
0xF1, Text -> TokenDef
Fixed Text
"ˣ√"),
    (Word8
0xF2, Text -> TokenDef
Fixed Text
"Solver"),
    (Word8
0xF3, Text -> TokenDef
Fixed Text
"OneVar"),
    (Word8
0xF4, Text -> TokenDef
Fixed Text
"LinR"),
    (Word8
0xF5, Text -> TokenDef
Fixed Text
"ExpR"),
    (Word8
0xF6, Text -> TokenDef
Fixed Text
"LnR"),
    (Word8
0xF7, Text -> TokenDef
Fixed Text
"PwrR"),
    (Word8
0xF8, Text -> TokenDef
Fixed Text
"ShwSt"),
    (Word8
0xF9, Text -> TokenDef
Fixed Text
"Hist"),
    (Word8
0xFA, Text -> TokenDef
Fixed Text
"xyLine"),
    (Word8
0xFB, Text -> TokenDef
Fixed Text
"Scatter"),
    (Word8
0xFC, Text -> TokenDef
Fixed Text
"SortX"),
    (Word8
0xFD, Text -> TokenDef
Fixed Text
"SortY"),
    (Word8
0xFE, Text -> TokenDef
Fixed Text
"LU"),
    (Word8
0xFF, TokenDef
Invalid)
    ]

-- | Extended table of tokens.
-- When the token is 'Extended' this table
-- is used to look up the final token.
tokenTableExtended :: Array Word8 TokenDef
tokenTableExtended :: Array Word8 TokenDef
tokenTableExtended = (Word8, Word8) -> [(Word8, TokenDef)] -> Array Word8 TokenDef
forall (a :: * -> * -> *) e i.
(IArray a e, Ix i) =>
(i, i) -> [(i, e)] -> a i e
array (Word8
0x00,Word8
0x35) [
    (Word8
0x00, Text -> TokenDef
Fixed Text
"zxScl"),
    (Word8
0x01, Text -> TokenDef
Fixed Text
"zyScl"),
    (Word8
0x02, Text -> TokenDef
Fixed Text
"xScl"),
    (Word8
0x03, Text -> TokenDef
Fixed Text
"yScl"),
    (Word8
0x04, Text -> TokenDef
Fixed Text
"xMin"),
    (Word8
0x05, Text -> TokenDef
Fixed Text
"xMax"),
    (Word8
0x06, Text -> TokenDef
Fixed Text
"yMin"),
    (Word8
0x07, Text -> TokenDef
Fixed Text
"yMax"),
    (Word8
0x08, Text -> TokenDef
Fixed Text
"tMin"),
    (Word8
0x09, Text -> TokenDef
Fixed Text
"tMax"),
    (Word8
0x0a, Text -> TokenDef
Fixed Text
"tStep"),
    (Word8
0x0b, Text -> TokenDef
Fixed Text
"θStep"),
    (Word8
0x0c, Text -> TokenDef
Fixed Text
"ztStep"),
    (Word8
0x0d, Text -> TokenDef
Fixed Text
"zθStep"),
    (Word8
0x0e, Text -> TokenDef
Fixed Text
"tPlot"),
    (Word8
0x0f, Text -> TokenDef
Fixed Text
"θMin"),
    (Word8
0x10, Text -> TokenDef
Fixed Text
"θMax"),
    (Word8
0x11, Text -> TokenDef
Fixed Text
"zxMin"),
    (Word8
0x12, Text -> TokenDef
Fixed Text
"zxMax"),
    (Word8
0x13, Text -> TokenDef
Fixed Text
"zyMin"),
    (Word8
0x14, Text -> TokenDef
Fixed Text
"zyMax"),
    (Word8
0x15, Text -> TokenDef
Fixed Text
"ztPlot"),
    (Word8
0x16, Text -> TokenDef
Fixed Text
"zθMin"),
    (Word8
0x17, Text -> TokenDef
Fixed Text
"zθMax"),
    (Word8
0x18, Text -> TokenDef
Fixed Text
"ztMin"),
    (Word8
0x19, Text -> TokenDef
Fixed Text
"ztMax"),
    (Word8
0x1a, Text -> TokenDef
Fixed Text
"lower"),
    (Word8
0x1b, Text -> TokenDef
Fixed Text
"upper"),
    (Word8
0x1c, Text -> TokenDef
Fixed Text
"Δx"),
    (Word8
0x1d, Text -> TokenDef
Fixed Text
"Δy"),
    (Word8
0x1e, Text -> TokenDef
Fixed Text
"xFact"),
    (Word8
0x1f, Text -> TokenDef
Fixed Text
"yFact"),
    (Word8
0x20, Text -> TokenDef
Fixed Text
"difTol"),
    (Word8
0x21, Text -> TokenDef
Fixed Text
"tol"),
    (Word8
0x22, Text -> TokenDef
Fixed Text
"δ"),
    (Word8
0x23, Text -> TokenDef
Fixed Text
"Na"),
    (Word8
0x24, Text -> TokenDef
Fixed Text
"k"),
    (Word8
0x25, Text -> TokenDef
Fixed Text
"Cc"),
    (Word8
0x26, Text -> TokenDef
Fixed Text
"ec"),
    (Word8
0x27, Text -> TokenDef
Fixed Text
"Rc"),
    (Word8
0x28, Text -> TokenDef
Fixed Text
"Gc"),
    (Word8
0x29, Text -> TokenDef
Fixed Text
"g"),
    (Word8
0x2a, Text -> TokenDef
Fixed Text
"Me"),
    (Word8
0x2b, Text -> TokenDef
Fixed Text
"Mp"),
    (Word8
0x2c, Text -> TokenDef
Fixed Text
"Mn"),
    (Word8
0x2d, Text -> TokenDef
Fixed Text
"µ0"),
    (Word8
0x2e, Text -> TokenDef
Fixed Text
"ε0"),
    (Word8
0x2f, Text -> TokenDef
Fixed Text
"h"),
    (Word8
0x30, Text -> TokenDef
Fixed Text
"c"),
    (Word8
0x31, Text -> TokenDef
Fixed Text
"u"),
    (Word8
0x32, Text -> TokenDef
Fixed Text
"e"),
    (Word8
0x33, Text -> TokenDef
Fixed Text
"xStat"),
    (Word8
0x34, Text -> TokenDef
Fixed Text
"yStat"),
    (Word8
0x35, Text -> TokenDef
Fixed Text
"Plot")
    ]