diff options
-rw-r--r-- | Makefile | 26 | ||||
-rw-r--r-- | ti83c.c | 244 | ||||
-rw-r--r-- | tokens.h | 1178 |
3 files changed, 1448 insertions, 0 deletions
diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..d36578e --- /dev/null +++ b/Makefile @@ -0,0 +1,26 @@ +CC=gcc +BIN=ti83c +OBJ=ti83c.o +HEADERS=tokens.h +CFLAGS= + +prefix=/usr/local +exec_prefix=$(prefix) +bindir=$(exec_prefix)/bin +datadir=$(prefix)/share/$(BIN) +configdir=/etc/$(BIN) + +all : $(BIN) + +$(BIN): $(OBJ) + $(CC) -o $(BIN) $(OBJ) $(CFLAGS) + +%.o: %.c $(HEADERS) + $(CC) -c $*.c -o $*.o + +install: + cp $(BIN) $(bindir) + chmod 0755 $(bindir)/$(BIN) + +clean: + rm $(OBJ) $(BIN) @@ -0,0 +1,244 @@ +/* + * Copyright (C) 2013 Paul Kocialkowski <contact@paulk.fr> + * Copyright (c) 2011 Matthew Iselin + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> +#include <errno.h> + +#include <sys/types.h> +#include <sys/stat.h> +#include <fcntl.h> + +#include <linux/limits.h> + +#include "tokens.h" + +struct ti83_header { + char id[8]; + char fixed[3]; + char comment[42]; + unsigned short length; +} __attribute__((packed)); + +struct ti83_entry { + unsigned short offset; + unsigned short length1; + unsigned char type; + char name[8]; + unsigned short length2; + unsigned short data_length; +} __attribute__((packed)); + +char ti83_id[] = "**TI83**"; +char ti83_fixed[] = { 0x1a, 0x0a, 0x00 }; +char ti83_comment[] = "Compiled with ti83c"; + +void ti83_checksum(unsigned short *checksum, struct ti83_entry *entry, void *data, int length) +{ + unsigned char *p; + int sum = 0; + int i; + + p = (unsigned char *) entry; + for (i = 0 ; i < sizeof(struct ti83_entry) ; i++) + sum += *p++; + + p = (unsigned char *) data; + for (i = 0 ; i < length ; i++) + sum += *p++; + + sum %= 0xffff; + + *checksum = (sum & 0xff) + (sum >> 8); +} + +void ti83_entry(struct ti83_entry *entry, char *name, int length) +{ + int i; + + memset(entry, 0, sizeof(struct ti83_entry)); + + entry->offset = 0x0b; + entry->length1 = length + sizeof(short); + entry->type = 0x05; + snprintf(entry->name, sizeof(entry->name), "%s", name); + for (i = 0 ; i < sizeof(entry->name) ; i++) { + if (entry->name[i] == '\0') + break; + + entry->name[i] = toupper(entry->name[i]); + } + entry->length2 = length + sizeof(short); + entry->data_length = length; +} + +void ti83_header(struct ti83_header *header, int length) +{ + memset(header, 0, sizeof(struct ti83_header)); + + memcpy(header->id, &ti83_id, sizeof(header->id)); + memcpy(header->fixed, &ti83_fixed, sizeof(header->fixed)); + snprintf(header->comment, sizeof(header->comment), "%s", ti83_comment); + header->length = sizeof(struct ti83_entry) + length; +} + +int ti83_data(void *data, int length) +{ + unsigned char *buffer; + unsigned char *p; + int count; + int found; + int i, o, rc; + + buffer = calloc(1, length); + + count = sizeof(ti83_tokens) / sizeof(struct ti83_token); + + p = (unsigned char *) data; + rc = length; + o = 0; + + while (rc > 0) { + found = 0; + + for (i = 0 ; i < count ; i++) { + if (strncmp(ti83_tokens[i].string, p, strlen(ti83_tokens[i].string)) == 0) { + p += strlen(ti83_tokens[i].string); + rc -= strlen(ti83_tokens[i].string); + + if (ti83_tokens[i].length == 1) { + memcpy(buffer + o, &ti83_tokens[i].data8, 1); + o += 1; + } + else if (ti83_tokens[i].length == 2) { + memcpy(buffer + o, &ti83_tokens[i].data16, 2); + o += 2; + } + + found = 1; + + break; + } + } + + if (!found) { + if (isalpha(*p)) + *p = toupper(*p); + buffer[o++] = *p++; + rc -= 1; + } + } + + memset(data, 0, length); + + length = o; + memcpy(data, buffer, length); + + free(buffer); + + return length; +} + +void print_usage(char *argv[]) +{ + printf("Usage: %s input [output] [name]\n", argv[0]); +} + +int main(int argc, char *argv[]) +{ + struct ti83_header header; + struct ti83_entry entry; + void *data; + int length; + unsigned short checksum; + + struct stat s; + char path[PATH_MAX] = { 0 }; + char buffer[8] = { 0 }; + char *input; + char *output; + int input_fd; + int output_fd; + char *name; + unsigned char *p; + int tc, rc, c; + int i; + + if (argc < 2) { + print_usage(argv); + return 1; + } + + input = argv[1]; + if (input == NULL) + return 1; + + output = argv[2]; + name = argv[3]; + + input_fd = open(input, O_RDONLY); + if (input_fd < 0) { + printf("Failed to open %s: %s\n", input, strerror(errno)); + return 1; + } + + if (output == NULL) { + output = (char *) path; + snprintf(output, sizeof(path), "%s.83p", input); + } + + if (name == NULL) { + name = (char *) &buffer; + snprintf(name, sizeof(buffer), "%s", input); + } + + output_fd = open(output, O_RDWR | O_CREAT | O_TRUNC); + if (output_fd < 0) { + printf("Failed to open %s: %s\n", output, strerror(errno)); + return 1; + } + + stat(input, &s); + length = s.st_size; + + data = calloc(1, length); + + rc = 0; + tc = length; + while (tc > 0) { + p = (unsigned char *) ((unsigned char *) data + rc); + rc += read(input_fd, p, tc); + tc -= rc; + } + + length = ti83_data(data, length); + ti83_header(&header, length); + ti83_entry(&entry, name, length); + ti83_checksum(&checksum, &entry, data, length); + + write(output_fd, &header, sizeof(header)); + write(output_fd, &entry, sizeof(entry)); + write(output_fd, data, length); + write(output_fd, &checksum, sizeof(checksum)); + + close(output_fd); + close(input_fd); + + return 0; +} diff --git a/tokens.h b/tokens.h new file mode 100644 index 0000000..0a923f5 --- /dev/null +++ b/tokens.h @@ -0,0 +1,1178 @@ +/* + * Copyright (C) 2013 Paul Kocialkowski <contact@paulk.fr> + * Copyright (c) 2011 Matthew Iselin + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#ifndef TOKENS_H +#define TOKENS_H + +struct ti83_token { + char *string; + + union { + unsigned short data16; + unsigned char data8; + }; + int length; +}; + +#define TO_DMS 0x01 +#define TO_DEC 0x02 +#define TO_FRAC 0x03 +#define STORE 0x04 +#define BOXPLOT 0x05 +#define LEFTSBRACK 0x06 +#define RIGHTSBRACK 0x07 +#define LEFTBRACE 0x08 +#define RIGHTBRACE 0x09 +#define RADIANS 0x0A +#define DEGREES 0x0B +#define INVERSE 0x0C +#define SQUARE 0x0D +#define TRANSPOSE 0x0E +#define CUBE 0x0F +#define LEFTBRACKET 0x10 +#define RIGHTBRACKET 0x11 +#define ROUND 0x12 +#define PXLTEST 0x13 +#define AUGMENT 0x14 +#define ROWSWAP 0x15 +#define ROWPLUS 0x16 +#define STARROW 0x17 +#define STARROWPLUS 0x18 +#define MAX 0x19 +#define MIN 0x1B +#define MEDIAN 0x1F +#define RANDM 0x20 +#define MEAN 0x21 +#define SOLVE 0x22 +#define SEQFUNC 0x23 +#define FNINT 0x24 +#define NDERIV 0x25 +#define FMIN 0x27 +#define FMAX 0x28 +#define SPACE 0x29 +#define DOUBLEQUOTE 0x2A +#define COMMA 0x2B +#define IMAG_I 0x2C +#define FACTORIAL 0x2D +#define CUBICREG 0x2E +#define QUARTREG 0x2F +#define NUM_0 0x30 +#define NUM_1 0x31 +#define NUM_2 0x32 +#define NUM_3 0x33 +#define NUM_4 0x34 +#define NUM_5 0x35 +#define NUM_6 0x36 +#define NUM_7 0x37 +#define NUM_8 0x38 +#define NUM_9 0x39 +#define PERIOD 0x3A +#define EXPONENT 0x3B +#define LOGIC_OR 0x3C +#define LOGIC_XOR 0x3D +#define COLON 0x3E +#define HARD_RETURN 0x3F +#define LOGIC_AND 0x40 +#define STR_A 0x41 +#define STR_B 0x42 +#define STR_C 0x43 +#define STR_D 0x44 +#define STR_E 0x45 +#define STR_F 0x46 +#define STR_G 0x47 +#define STR_H 0x48 +#define STR_I 0x49 +#define STR_J 0x4A +#define STR_K 0x4B +#define STR_L 0x4C +#define STR_M 0x4D +#define STR_N 0x4E +#define STR_O 0x4F +#define STR_P 0x50 +#define STR_Q 0x51 +#define STR_R 0x52 +#define STR_S 0x53 +#define STR_T 0x54 +#define STR_U 0x55 +#define STR_V 0x56 +#define STR_W 0x57 +#define STR_X 0x58 +#define STR_Y 0x59 +#define STR_Z 0x5A +#define STR_THETA 0x5B +#define PROGRAM 0x5F + +/** SysVar **/ +#define RADIAN 0x64 +#define DEGREE 0x65 +#define NORMAL 0x66 +#define SCI 0x67 +#define ENG 0x68 +#define FLOAT 0x69 +#define TEST_EQUAL 0x6A +#define TEST_LESSTHAN 0x6B +#define TEST_HIGHTHAN 0x6C +#define TEST_LOREQU 0x6D +#define TEST_GOREQU 0x6E +#define TEST_NOTEQUAL 0x6F +#define ADD 0x70 +#define SUBTRACT 0x71 +#define ANSWER 0x72 +#define FIX 0x73 +#define HORIZ 0x74 +#define FULL 0x75 +#define FUNC 0x76 +#define PARAM 0x77 +#define POLAR 0x78 +#define SEQ 0x79 +#define INDPNTAUTO 0x7A +#define INDPNTASK 0x7B +#define DEPENDAUTO 0x7C +#define DEPENDASK 0x7D + +/** 7E VARIABLES, ie. graph manipulation **/ +#define BOX 0x7F +#define DIVIDE 0x80 +#define DOT 0x81 +#define MULTIPLY 0x82 +#define DIVIDE_SLASH 0x83 +#define TRACE 0x84 +#define CLRDRAW 0x85 +#define ZSTANDARD 0x86 +#define ZTRIG 0x87 +#define ZBOX 0x88 +#define ZOOMIN 0x89 +#define ZOOMOUT 0x8A +#define ZSQUARE 0x8B +#define ZINTEGER 0x8C +#define ZPREVIOUS 0x8D +#define ZDECIMAL 0x8E +#define ZOOMSTAT 0x8F +#define ZOOMRCL 0x90 +#define PRINTSCREEN 0x91 +#define ZOOMSTO 0x92 +#define TEXTFUNC 0x93 +#define NPR 0x94 +#define NCR 0x95 +#define FNON 0x96 +#define FNOFF 0x97 +#define STOREPIC 0x98 +#define RECALLPIC 0x99 +#define STOREGDB 0x9A +#define RECALLGDB 0x9B +#define LINE 0x9C +#define VERTICAL 0x9D +#define PTON 0x9E +#define PTOFF 0x9F +#define PTCHANGE 0xA0 +#define PXLON 0xA1 +#define PXLOFF 0xA2 +#define PXLCHANGE 0xA3 +#define SHADE 0xA4 +#define CIRCLE 0xA5 +#define HORIZONTAL 0xA6 +#define TANGENT 0xA7 +#define DRAWINV 0xA8 +#define DRAWF 0xA9 +#define RAND 0xAB +#define PI 0xAC +#define GETKEY 0xAD +#define APOSTROPHE 0xAE +#define QUESTIONMARK 0xAF + +/** SysVar **/ +#define NEGATIVE 0xB0 +#define CONV_INT 0xB1 +#define ABS 0xB2 +#define DETERMINANT 0xB3 +#define IDENTITY 0xB4 +#define DIM 0xB5 +#define SUM 0xB6 +#define PROD 0xB7 +#define NOT 0xB8 +#define IPART 0xB9 +#define FPART 0xBA + +/** BB tokens **/ +#define SQR_ROOT 0xBC +#define CUBE_ROOT 0xBD +#define NATLOG 0xBE +#define ETOPOWER 0xBF +#define LOGARITHM 0xC0 +#define POWER10 0xC1 +#define SINE 0xC2 +#define INVSIN 0xC3 +#define COSINE 0xC4 +#define INVCOSINE 0xC5 +#define TANGENT_TRIG 0xC6 +#define INVTANGENT 0xC7 +#define HYP_SINE 0xC8 +#define HYP_ISINE 0xC9 +#define HYP_COSINE 0xCA +#define HYP_ICOSINE 0xCB +#define HYP_TANGENT 0xCC +#define HYP_ITANGENT 0xCD +#define LOGIC_IF 0xCE +#define LOGIC_THEN 0xCF +#define LOGIC_ELSE 0xD0 +#define CTL_WHILE 0xD1 +#define CTL_REPEAT 0xD2 +#define CTL_FOR 0xD3 +#define CTL_END 0xD4 +#define CTL_RETURN 0xD5 +#define LABEL 0xD6 +#define CTL_GOTO 0xD7 +#define CTL_PAUSE 0xD8 +#define CTL_STOP 0xD9 +#define INCSKIPIFHIGH 0xDA +#define DECSKIPIFLOW 0xDB +#define INPUT 0xDC +#define PROMPT 0xDD +#define DISP 0xDE +#define DISPGRAPH 0xDF +#define OUTPUT 0xE0 +#define CLRHOME 0xE1 +#define FILL 0xE2 +#define SORTA 0xE3 +#define SORTD 0xE4 +#define DISPTABLE 0xE5 +#define MENU 0xE6 +#define SEND 0xE7 +#define GET 0xE8 +#define PLOTSON 0xE9 +#define PLOTSOFF 0xEA +#define LIST 0xEB +#define PLOT1 0xEC +#define PLOT2 0xED +#define PLOT3 0xEE +#define POWEROF 0xF0 +#define XTHROOT 0xF1 +#define VARSTATS_1 0xF2 +#define VARSTATS_2 0xF3 +#define LINREG1 0xF4 +#define EXPREG 0xF5 +#define LNREG 0xF6 +#define PWRREG 0xF7 +#define MEDMED 0xF8 +#define QUADREG 0xF9 +#define CLRLIST 0xFA +#define CLRTABLE 0xFB +#define HISTOGRAM 0xFC +#define XYLINE 0xFD +#define SCATTER 0xFE +#define LINREG2 0xFF + +/** SYSTEM VARIABLES **/ + +// Matrices +#define MAT_A 0x005C +#define MAT_B 0x015C +#define MAT_C 0x025C +#define MAT_D 0x035C +#define MAT_E 0x045C +#define MAT_F 0x055C +#define MAT_G 0x065C +#define MAT_H 0x075C +#define MAT_I 0x085C +#define MAT_J 0x095C + +// Lists +#define L1 0x005D +#define L2 0x015D +#define L3 0x025D +#define L4 0x035D +#define L5 0x045D +#define L6 0x055D +#define L7 0x065D +#define L8 0x075D +#define L9 0x085D +#define L0 0x095D + +// Graph (function) +#define Y1 0x105E +#define Y2 0x115E +#define Y3 0x125E +#define Y4 0x135E +#define Y5 0x145E +#define Y6 0x155E +#define Y7 0x165E +#define Y8 0x175E +#define Y9 0x185E +#define Y0 0x195E + +// Graph (parametric) +#define X1T 0x205E +#define Y1T 0x215E +#define X2T 0x225E +#define Y2T 0x235E +#define X3T 0x245E +#define Y3T 0x255E +#define X4T 0x265E +#define Y4T 0x275E +#define X5T 0x285E +#define Y5T 0x295E +#define X6T 0x2A5E +#define Y6T 0x2B5E + +// Graph (polar) +#define R1 0x405E +#define R2 0x415E +#define R3 0x425E +#define R4 0x435E +#define R5 0x445E +#define R6 0x455E +#define SYSVAR_U 0x805E +#define SYSVAR_V 0x815E + +// Pictures +#define PIC1 0x0060 +#define PIC2 0x0160 +#define PIC3 0x0260 +#define PIC4 0x0360 +#define PIC5 0x0460 +#define PIC6 0x0560 +#define PIC7 0x0660 +#define PIC8 0x0760 +#define PIC9 0x0860 +#define PIC0 0x0960 + +// Graph databases +#define GDB1 0x0061 +#define GDB2 0x0161 +#define GDB3 0x0261 +#define GDB4 0x0361 +#define GDB5 0x0461 +#define GDB6 0x0561 +#define GDB7 0x0661 +#define GDB8 0x0761 +#define GDB9 0x0861 +#define GDB0 0x0961 + +// Stat data +#define REGEQ 0x0162 +#define STAT_N 0x0262 +#define MEANX 0x0362 +#define SUMX 0x0462 +#define SUMXSQUARED 0x0562 +#define SX 0x0662 +#define SIGMAX 0x0762 +#define MINX 0x0862 +#define MAXX 0x0962 +#define MINY 0x0A62 +#define MAXY 0x0B02 +#define MEANY 0x0C62 +#define SUMY 0x0D62 +#define SUMYSQUARED 0x0E62 +#define SY 0x0F62 +#define SIGMAY 0x1062 +#define SUMXY 0x1162 +#define SYSVAR_R 0x1262 +#define MED 0x1362 +#define Q1 0x1462 +#define Q3 0x1562 +#define SYSVAR_A 0x1662 +#define SYSVAR_B 0x1762 +#define SYSVAR_C 0x1862 +#define SYSVAR_D 0x1962 +#define SYSVAR_E 0x1A62 +#define X1 0x1B62 +#define X2 0x1C62 +#define X3 0x1D62 +#define Y1_1 0x1E62 +#define Y2_1 0x1F62 +#define Y3_1 0x2062 +#define SYSVAR_N 0x2162 +#define SYSVAR_P 0x2262 +#define SYSVAR_Z 0x2362 +#define SYSVAR_T 0x2462 +#define CHISQUARED 0x2562 +#define FIN 0x2662 +#define DF 0x2762 +#define PHAT 0x2862 +#define PHAT1 0x2962 +#define PHAT2 0x2A62 +#define MEANX1 0x2B62 +#define SX1 0x2C62 +#define N1 0x2D62 +#define MEANX2 0x2E62 +#define SX2 0x2F62 +#define N2 0x3062 +#define SXP 0x3162 +#define LOWER 0x3262 +#define UPPER 0x3362 +#define SYSVAR_S 0x3462 +#define RSQUARED 0x3562 +#define CAPRSQUARED 0x3662 +#define DF2 0x3762 // not sure about this one +#define SS 0x3862 +#define MS 0x3962 +#define DF3 0x3A62 // again here? +#define SS1 0x3B62 // another double +#define MS1 0x3C62 // " " + +// Graph data +#define ZXSCL 0x0063 +#define ZYSCL 0x0163 +#define XSCL 0x0263 +#define YSCL 0x0363 +#define UNSTART 0x0463 +#define VNSTART 0x0563 +#define UNINVERSE 0x0663 +#define VNINVERSE 0x0763 +#define ZUNSTART 0x0863 +#define ZVNSTART 0x0963 +#define XMIN 0x0A63 +#define XMAX 0x0B63 +#define YMIN 0x0C63 +#define YMAX 0x0D63 +#define TMIN 0x0E63 +#define TMAX 0x0F63 +#define THETAMIN 0x1063 +#define THETAMAX 0x1163 +#define ZXMIN 0x1263 +#define ZXMAX 0x1363 +#define ZYMIN 0x1463 +#define ZYMAX 0x1563 +#define ZTHETAMIN 0x1663 +#define ZTHETAMAX 0x1763 +#define ZTMIN 0x1863 +#define ZTMAX 0x1963 +#define TBLMIN 0x1A63 +#define NMIN 0x1B63 +#define ZNMIN 0x1C63 +#define NMAX 0x1D63 +#define ZNMAX 0x1E63 +#define NSTART 0x1F63 +#define ZNSTART 0x2063 +#define DELTATABLE 0x2163 +#define TSTEP 0x2263 +#define THETASTEP 0x2363 +#define ZTSTEP 0x2463 +#define ZTHETASTEP 0x2563 +#define DELTAX 0x2663 +#define DELTAY 0x2763 +#define XFACT 0x2863 +#define YFACT 0x2963 +#define TBLINPUT 0x2A63 +#define SYSVAR_CAPN 0x2B63 +#define IPERCENT 0x2C63 +#define PV 0x2D63 +#define PMT 0x2E63 +#define FV 0x2F63 +#define XRES 0x3063 +#define ZXRES 0x3163 + +// Strings +#define STR1 0x00AA +#define STR2 0x01AA +#define STR3 0x02AA +#define STR4 0x03AA +#define STR5 0x04AA +#define STR6 0x05AA +#define STR7 0x06AA +#define STR8 0x07AA +#define STR9 0x08AA +#define STR0 0x09AA + +/** 7E VARIABLES **/ +#define SEQUENTIAL_7E 0x007E +#define SIMUL 0x017E +#define POLARGC 0x027E +#define RECTGC 0x037E +#define COORDON 0x047E +#define COORDOFF 0x057E +#define CONNECTED 0x067E +#define DOT_7E 0x077E +#define AXESON 0x087E +#define AXESOFF 0x097E +#define GRIDON 0x0A7E +#define GRIDOFF 0x0B7E +#define LABELON 0x0C7E +#define LABELOFF 0x0D7E +#define WEB 0x0E7E +#define TIME 0x0F7E +#define UVAXES 0x107E +#define VWAXES 0x117E +#define UWAXES 0x127E + +/** BB VARIABLES **/ +#define NPV 0x00BB +#define IRR 0x01BB +#define BAL 0x02BB +#define SUMPRN 0x03BB +#define SUMINT 0x04BB +#define TONOM 0x05BB +#define TOEFF 0x06BB +#define DBD 0x07BB +#define LCM 0x08BB +#define GCD 0x09BB +#define RANDINT 0x0ABB +#define RANDBIN 0x0BBB +#define SUB 0x0CBB +#define STDDEV 0x0DBB +#define VARIANCE 0x0EBB +#define INSTRING 0x0FBB +#define NORMALCDF 0x10BB +#define INVNORM 0x11BB +#define TCDF 0x12BB +#define XSQUCDF 0x13BB +#define FCDF 0x14BB +#define BINOMPDF 0x15BB +#define BINOMCDF 0x16BB +#define POISSONPDF 0x17BB +#define POISSONCDF 0x18BB +#define GEOMETPDF 0x19BB +#define GEOMETCDF 0x1ABB +#define NORMALPDF 0x1BBB +#define TPDF 0x1CBB +#define XSQUPDF 0x1DBB +#define FPDF 0x1EBB +#define RANDNORM 0x1FBB +#define TVM_PMT 0x20BB +#define TVM_I_PERCENT 0x21BB +#define TVM_PV 0x22BB +#define TVM_N 0x23BB +#define TVM_FV 0x24BB +#define CONJ 0x25BB +#define REAL 0x26BB +#define IMAG 0x27BB +#define ANGLE 0x28BB +#define CUMSUM 0x29BB +#define EXPR 0x2ABB +#define LENGTH 0x2BBB +#define DELTA_LIST 0x2CBB +#define REF 0x2DBB +#define RREF 0x2EBB +#define TORECT 0x2FBB +#define TOPOLAR 0x30BB +#define VAR_E 0x31BB +#define SINREG 0x32BB +#define LOGISTIC 0x33BB +#define LINREGTTEST 0x34BB +#define SHADENORM 0x35BB +#define SHADE_T 0x36BB +#define SHADEXSQU 0x37BB +#define SHADEF 0x38BB +#define MATRTOLIST 0x39BB +#define LISTTOMATR 0x3ABB +#define ZTEST 0x3BBB +#define TTEST 0x3CBB +#define TWO_SAMPZTEST 0x3DBB +#define ONE_PROPZTEST 0x3EBB +#define TWO_PROPZTEST 0x3FBB +#define XSQUTEST 0x40BB +#define ZINTERVAL 0x41BB +#define TWO_SAMPZINT 0x42BB +#define ONE_PROPZINT 0x43BB +#define TWO_PROPZINT 0x44BB +#define GRAPHSTYLE 0x45BB +#define TWO_SAMPTTEST 0x46BB +#define TWO_SAMPFTEST 0x47BB +#define TINTERVAL 0x48BB +#define TWO_SAMPTINT 0x49BB +#define SETUPEDITOR 0x4ABB +#define PMT_END 0x4BBB +#define PMT_BGN 0x4CBB +#define REAL_BB 0x4DBB +#define REPOWTHETAI 0x4EBB +#define APLUSBI 0x4FBB +#define EXPRON 0x50BB +#define EXPROFF 0x51BB +#define CLRALLLISTS 0x52BB +#define GETCALC 0x53BB +#define DELVAR 0x54BB +#define EQUTOSTRING 0x55BB +#define STRINGTOEQU 0x56BB +#define CLEARENTRIES 0x57BB +#define SELECT 0x58BB +#define ANOVA 0x59BB +#define MODBOXPLOT 0x5ABB +#define NORMPROBPLOT 0x5BBB + +struct ti83_token ti83_tokens[] = { + /** CONTROL page of PROGRAM EDITOR (press PRGM when EDITING a program) **/ + { .string="If ", .data8=LOGIC_IF, .length=1, }, + { .string="Then", .data8=LOGIC_THEN, .length=1, }, + { .string="Else", .data8=LOGIC_ELSE, .length=1, }, + { .string="For(", .data8=CTL_FOR, .length=1, }, + { .string="While ", .data8=CTL_WHILE, .length=1, }, + { .string="Repeat ", .data8=CTL_REPEAT, .length=1, }, + { .string="End", .data8=CTL_END, .length=1, }, + { .string="Pause ", .data8=CTL_PAUSE, .length=1, }, + { .string="Pause", .data8=CTL_PAUSE, .length=1, }, + { .string="Label ", .data8=LABEL, .length=1, }, + { .string="Goto ", .data8=CTL_GOTO, .length=1, }, + { .string="IS>(", .data8=INCSKIPIFHIGH, .length=1, }, + { .string="DS<(", .data8=DECSKIPIFLOW, .length=1, }, + { .string="Menu(", .data8=MENU, .length=1, }, + { .string="prgm", .data8=PROGRAM, .length=1, }, + { .string="Return", .data8=CTL_RETURN, .length=1, }, + { .string="Stop", .data8=CTL_STOP, .length=1, }, + + /** I/O page **/ + { .string="Input ", .data8=INPUT, .length=1, }, + { .string="Prompt ", .data8=PROMPT, .length=1, }, + { .string="Disp ", .data8=DISP, .length=1, }, + { .string="DispGraph", .data8=DISPGRAPH, .length=1, }, + { .string="DispTable", .data8=DISPTABLE, .length=1, }, + { .string="Output(", .data8=OUTPUT, .length=1, }, + { .string="getKey", .data8=GETKEY, .length=1, }, + { .string="ClrHome", .data8=CLRHOME, .length=1, }, + { .string="ClrTable", .data8=CLRTABLE, .length=1, }, + + /** GetCalc **/ + { .string="Get(", .data8=GET, .length=1, }, + { .string="Send(", .data8=SEND, .length=1, }, + + /** Plots **/ + { .string="PlotsOn ", .data8=PLOTSON, .length=1, }, + { .string="PlotsOff ", .data8=PLOTSOFF, .length=1, }, + + /** Others **/ + { .string="Trace", .data8=TRACE, .length=1, }, + { .string="ZStandard", .data8=ZSTANDARD, .length=1, }, + { .string="ZTrig", .data8=ZTRIG, .length=1, }, + { .string="ZBox", .data8=ZBOX, .length=1, }, + { .string="ZoomIn", .data8=ZOOMIN, .length=1, }, + { .string="ZoomOut", .data8=ZOOMOUT, .length=1, }, + { .string="ZSquare", .data8=ZSQUARE, .length=1, }, + { .string="ZInteger", .data8=ZINTEGER, .length=1, }, + { .string="ZPrevious", .data8=ZPREVIOUS, .length=1, }, + { .string="ZDecimal", .data8=ZDECIMAL, .length=1, }, + { .string="ZoomStat", .data8=ZOOMSTAT, .length=1, }, + { .string="ZoomRcl", .data8=ZOOMRCL, .length=1, }, + { .string="ZoomSto", .data8=ZOOMSTO, .length=1, }, + { .string="Text(", .data8=TEXTFUNC, .length=1, }, + { .string="StorePic", .data8=STOREPIC, .length=1, }, + { .string="RecallPic", .data8=RECALLPIC, .length=1, }, + { .string="StoreGDB", .data8=STOREGDB, .length=1, }, + + /** OTHERS **/ + { .string="->DMS", .data8=TO_DMS, .length=1, }, + { .string="->DEC", .data8=TO_DEC, .length=1, }, + { .string="->FRAC", .data8=TO_FRAC, .length=1, }, + { .string="->", .data8=STORE, .length=1, }, + { .string=" -> ", .data8=STORE, .length=1, }, + { .string=" ->", .data8=STORE, .length=1, }, + { .string="-> ", .data8=STORE, .length=1, }, + { .string="BoxPlot", .data8=BOXPLOT, .length=1, }, + { .string="[radians]", .data8=RADIANS, .length=1, }, + { .string="[degrees]", .data8=DEGREES, .length=1, }, + { .string="^-1", .data8=INVERSE, .length=1, }, + { .string="^2", .data8=SQUARE, .length=1, }, + { .string="²", .data8=SQUARE, .length=1, }, + { .string="[transpose]", .data8=TRANSPOSE, .length=1, }, + { .string="^3", .data8=CUBE, .length=1, }, + { .string="round(", .data8=ROUND, .length=1, }, + { .string="pxl-Test(", .data8=PXLTEST, .length=1, }, + { .string="augment(", .data8=AUGMENT, .length=1, }, + { .string="RowSwap(", .data8=ROWSWAP, .length=1, }, + { .string="row+(", .data8=ROWPLUS, .length=1, }, + { .string="*row(", .data8=STARROW, .length=1, }, + { .string="*row+(", .data8=STARROWPLUS, .length=1, }, + { .string="max(", .data8=MAX, .length=1, }, + { .string="min(", .data8=MIN, .length=1, }, + { .string="median(", .data8=MEDIAN, .length=1, }, + { .string="randM(", .data8=RANDM, .length=1, }, + { .string="mean(", .data8=MEAN, .length=1, }, + { .string="solve(", .data8=SOLVE, .length=1, }, + { .string="seq(", .data8=SEQFUNC, .length=1, }, + { .string="fnInt(", .data8=FNINT, .length=1, }, + { .string="NDeriv(", .data8=NDERIV, .length=1, }, + { .string="FMin(", .data8=FMIN, .length=1, }, + { .string="FMax(", .data8=FMAX, .length=1, }, + { .string="CubicReg ", .data8=CUBICREG, .length=1, }, + { .string="QuartReg ", .data8=QUARTREG, .length=1, }, + { .string=" or ", .data8=LOGIC_OR, .length=1, }, + { .string=" xor ", .data8=LOGIC_XOR, .length=1, }, + { .string="and", .data8=LOGIC_AND, .length=1, }, + { .string="[theta]", .data8=STR_THETA, .length=1, }, + { .string="prgm", .data8=PROGRAM, .length=1, }, + { .string="Radian", .data8=RADIAN, .length=1, }, + { .string="Degree", .data8=DEGREE, .length=1, }, + { .string="Normal", .data8=NORMAL, .length=1, }, + { .string="Sci", .data8=SCI, .length=1, }, + { .string="Eng", .data8=ENG, .length=1, }, + { .string="Float", .data8=FLOAT, .length=1, }, + { .string="<=", .data8=TEST_LOREQU, .length=1, }, + { .string=">=", .data8=TEST_GOREQU, .length=1, }, + { .string="!=", .data8=TEST_NOTEQUAL, .length=1, }, + { .string="Ans", .data8=ANSWER, .length=1, }, + { .string="Fix ", .data8=FIX, .length=1, }, + { .string="Horiz", .data8=HORIZ, .length=1, }, + { .string="Full", .data8=FULL, .length=1, }, + { .string="Func", .data8=FUNC, .length=1, }, + { .string="Param", .data8=PARAM, .length=1, }, + { .string="Polar", .data8=POLAR, .length=1, }, + { .string="Seq", .data8=SEQ, .length=1, }, + { .string="IndpntAuto", .data8=INDPNTAUTO, .length=1, }, + { .string="IndpntAsk", .data8=INDPNTASK, .length=1, }, + { .string="DependAuto", .data8=DEPENDAUTO, .length=1, }, + { .string="DependAsk", .data8=DEPENDASK, .length=1, }, + { .string="[box]", .data8=BOX, .length=1, }, + { .string="[dot]", .data8=DOT, .length=1, }, + { .string="Trace", .data8=TRACE, .length=1, }, + { .string="ClrDraw", .data8=CLRDRAW, .length=1, }, + { .string="ZStandard", .data8=ZSTANDARD, .length=1, }, + { .string="ZTrig", .data8=ZTRIG, .length=1, }, + { .string="ZBox", .data8=ZBOX, .length=1, }, + { .string="Zoom In", .data8=ZOOMIN, .length=1, }, + { .string="Zoom Out", .data8=ZOOMOUT, .length=1, }, + { .string="ZSquare", .data8=ZSQUARE, .length=1, }, + { .string="ZInteger", .data8=ZINTEGER, .length=1, }, + { .string="ZPrevious", .data8=ZPREVIOUS, .length=1, }, + { .string="ZDecimal", .data8=ZDECIMAL, .length=1, }, + { .string="ZoomStat", .data8=ZOOMSTAT, .length=1, }, + { .string="ZoomRcl", .data8=ZOOMRCL, .length=1, }, + { .string="PrintScreen", .data8=PRINTSCREEN, .length=1, }, + { .string="ZoomSto", .data8=ZOOMSTO, .length=1, }, + { .string="Text(", .data8=TEXTFUNC, .length=1, }, + { .string="nPr", .data8=NPR, .length=1, }, + { .string="nCr", .data8=NCR, .length=1, }, + { .string="FnOn ", .data8=FNON, .length=1, }, + { .string="FnOff ", .data8=FNOFF, .length=1, }, + { .string="StorePic ", .data8=STOREPIC, .length=1, }, + { .string="RecallPic ", .data8=RECALLPIC, .length=1, }, + { .string="StoreGDB ", .data8=STOREGDB, .length=1, }, + { .string="RecallGDB ", .data8=RECALLGDB, .length=1, }, + { .string="Line(", .data8=LINE, .length=1, }, + { .string="Vertical ", .data8=VERTICAL, .length=1, }, + { .string="Pt-On(", .data8=PTON, .length=1, }, + { .string="Pt-Off(", .data8=PTOFF, .length=1, }, + { .string="Pt-Change(", .data8=PTCHANGE, .length=1, }, + { .string="Pxl-On(", .data8=PXLON, .length=1, }, + { .string="Pxl-Off(", .data8=PXLOFF, .length=1, }, + { .string="Pxl-Change(", .data8=PXLCHANGE, .length=1, }, + { .string="Shade(", .data8=SHADE, .length=1, }, + { .string="Circle(", .data8=CIRCLE, .length=1, }, + { .string="Horizontal ", .data8=HORIZONTAL, .length=1, }, + { .string="Tangent(", .data8=TANGENT, .length=1, }, + { .string="DrawInv ", .data8=DRAWINV, .length=1, }, + { .string="DrawF ", .data8=DRAWF, .length=1, }, + { .string="[pi]", .data8=PI, .length=1, }, + { .string="getKey", .data8=GETKEY, .length=1, }, + { .string="[neg]", .data8=NEGATIVE, .length=1, }, + { .string="int(", .data8=CONV_INT, .length=1, }, + { .string="abs(", .data8=ABS, .length=1, }, + { .string="det(", .data8=DETERMINANT, .length=1, }, + { .string="identity(", .data8=IDENTITY, .length=1, }, + { .string="dim(", .data8=DIM, .length=1, }, + { .string="sum(", .data8=SUM, .length=1, }, + { .string="prod(", .data8=PROD, .length=1, }, + { .string="not(", .data8=NOT, .length=1, }, + { .string="iPart(", .data8=IPART, .length=1, }, + { .string="fPart(", .data8=FPART, .length=1, }, + { .string="[sqrt]", .data8=SQR_ROOT, .length=1, }, + { .string="[root]^2", .data8=SQR_ROOT, .length=1, }, + { .string="[root]^3", .data8=CUBE_ROOT, .length=1, }, + { .string="ln(", .data8=NATLOG, .length=1, }, + { .string="e^", .data8=ETOPOWER, .length=1, }, + { .string="log(", .data8=LOGARITHM, .length=1, }, + { .string="10^(", .data8=POWER10, .length=1, }, + { .string="sin(", .data8=SINE, .length=1, }, + { .string="asin(", .data8=INVSIN, .length=1, }, + { .string="cos(", .data8=COSINE, .length=1, }, + { .string="acos(", .data8=INVCOSINE, .length=1, }, + { .string="tan(", .data8=TANGENT_TRIG, .length=1, }, + { .string="atan(", .data8=INVTANGENT, .length=1, }, + { .string="sinh(", .data8=HYP_SINE, .length=1, }, + { .string="asinh(", .data8=HYP_ISINE, .length=1, }, + { .string="cosh(", .data8=HYP_COSINE, .length=1, }, + { .string="acosh(", .data8=HYP_ICOSINE, .length=1, }, + { .string="tanh(", .data8=HYP_TANGENT, .length=1, }, + { .string="atanh(", .data8=HYP_ITANGENT, .length=1, }, + { .string="Else", .data8=LOGIC_ELSE, .length=1, }, + { .string="Fill(", .data8=FILL, .length=1, }, + { .string="SortA(", .data8=SORTA, .length=1, }, + { .string="SortD(", .data8=SORTD, .length=1, }, + { .string="[list]", .data8=LIST, .length=1, }, + { .string="Plot1(", .data8=PLOT1, .length=1, }, + { .string="Plot2(", .data8=PLOT2, .length=1, }, + { .string="Plot3(", .data8=PLOT3, .length=1, }, + { .string="[root]^", .data8=XTHROOT, .length=1, }, + { .string="1-Var Stats ", .data8=VARSTATS_1, .length=1, }, + { .string="2-Var Stats ", .data8=VARSTATS_2, .length=1, }, + { .string="LinReg(a+bx) ", .data8=LINREG1, .length=1, }, + { .string="ExpReg ", .data8=EXPREG, .length=1, }, + { .string="LnReg ", .data8=LNREG, .length=1, }, + { .string="PwrReg ", .data8=PWRREG, .length=1, }, + { .string="Med-Med ", .data8=MEDMED, .length=1, }, + { .string="QuadReg ", .data8=QUADREG, .length=1, }, + { .string="ClrList ", .data8=CLRLIST, .length=1, }, + { .string="ClrTable", .data8=CLRTABLE, .length=1, }, + { .string="Histogram", .data8=HISTOGRAM, .length=1, }, + { .string="xyLine", .data8=XYLINE, .length=1, }, + { .string="Scatter", .data8=SCATTER, .length=1, }, + { .string="LinReg(ax+b) ", .data8=LINREG2, .length=1, }, + { .string="rand", .data8=RAND, .length=1, }, + + // AsmPrgm (uncompiled) + { .string="AsmPrgm", .data16=0x6CBB, .length=2, }, + { .string="AsmPrgm", .data16=0x6DBB, .length=2, }, + + // SysVar + { .string="[A]", .data16=MAT_A, .length=2, }, + { .string="[B]", .data16=MAT_B, .length=2, }, + { .string="[C]", .data16=MAT_C, .length=2, }, + { .string="[D]", .data16=MAT_D, .length=2, }, + { .string="[E]", .data16=MAT_E, .length=2, }, + { .string="[F]", .data16=MAT_F, .length=2, }, + { .string="[G]", .data16=MAT_G, .length=2, }, + { .string="[H]", .data16=MAT_H, .length=2, }, + { .string="[I]", .data16=MAT_I, .length=2, }, + { .string="[J]", .data16=MAT_J, .length=2, }, + { .string="L1", .data16=L1, .length=2, }, + { .string="L2", .data16=L2, .length=2, }, + { .string="L3", .data16=L3, .length=2, }, + { .string="L4", .data16=L4, .length=2, }, + { .string="L5", .data16=L5, .length=2, }, + { .string="L6", .data16=L6, .length=2, }, + { .string="L7", .data16=L7, .length=2, }, + { .string="L8", .data16=L8, .length=2, }, + { .string="L9", .data16=L9, .length=2, }, + { .string="L0", .data16=L0, .length=2, }, + { .string="Y1", .data16=Y1, .length=2, }, + { .string="Y2", .data16=Y2, .length=2, }, + { .string="Y3", .data16=Y3, .length=2, }, + { .string="Y4", .data16=Y4, .length=2, }, + { .string="Y5", .data16=Y5, .length=2, }, + { .string="Y6", .data16=Y6, .length=2, }, + { .string="Y7", .data16=Y7, .length=2, }, + { .string="Y8", .data16=Y8, .length=2, }, + { .string="Y9", .data16=Y9, .length=2, }, + { .string="Y0", .data16=Y0, .length=2, }, + { .string="X1T", .data16=X1T, .length=2, }, + { .string="Y1T", .data16=Y1T, .length=2, }, + { .string="X2T", .data16=X2T, .length=2, }, + { .string="Y2T", .data16=Y2T, .length=2, }, + { .string="X3T", .data16=X3T, .length=2, }, + { .string="Y3T", .data16=Y3T, .length=2, }, + { .string="X4T", .data16=X4T, .length=2, }, + { .string="Y4T", .data16=Y4T, .length=2, }, + { .string="X5T", .data16=X5T, .length=2, }, + { .string="Y5T", .data16=Y5T, .length=2, }, + { .string="X6T", .data16=X6T, .length=2, }, + { .string="Y6T", .data16=Y6T, .length=2, }, + { .string="R1", .data16=R1, .length=2, }, + { .string="R2", .data16=R2, .length=2, }, + { .string="R3", .data16=R3, .length=2, }, + { .string="R4", .data16=R4, .length=2, }, + { .string="R5", .data16=R5, .length=2, }, + { .string="R6", .data16=R6, .length=2, }, + { .string="[u]", .data16=SYSVAR_U, .length=2, }, + { .string="[v]", .data16=SYSVAR_V, .length=2, }, + { .string="PIC1", .data16=PIC1, .length=2, }, + { .string="PIC2", .data16=PIC2, .length=2, }, + { .string="PIC3", .data16=PIC3, .length=2, }, + { .string="PIC4", .data16=PIC4, .length=2, }, + { .string="PIC5", .data16=PIC5, .length=2, }, + { .string="PIC6", .data16=PIC6, .length=2, }, + { .string="PIC7", .data16=PIC7, .length=2, }, + { .string="PIC8", .data16=PIC8, .length=2, }, + { .string="PIC9", .data16=PIC9, .length=2, }, + { .string="PIC0", .data16=PIC0, .length=2, }, + { .string="GDB1", .data16=GDB1, .length=2, }, + { .string="GDB2", .data16=GDB2, .length=2, }, + { .string="GDB3", .data16=GDB3, .length=2, }, + { .string="GDB4", .data16=GDB4, .length=2, }, + { .string="GDB5", .data16=GDB5, .length=2, }, + { .string="GDB6", .data16=GDB6, .length=2, }, + { .string="GDB7", .data16=GDB7, .length=2, }, + { .string="GDB8", .data16=GDB8, .length=2, }, + { .string="GDB9", .data16=GDB9, .length=2, }, + { .string="GDB0", .data16=GDB0, .length=2, }, + + // finally, StatVars + { .string="Sx1", .data16=SX1, .length=2, }, + { .string="Sx2", .data16=SX2, .length=2, }, + { .string="Sxp", .data16=SXP, .length=2, }, + { .string="RegEq", .data16=REGEQ, .length=2, }, + { .string="[n]", .data16=STAT_N, .length=2, }, + { .string="mean(x)", .data16=MEANX, .length=2, }, + { .string="sum(x)^2", .data16=SUMXSQUARED, .length=2, }, + { .string="sum(x)", .data16=SUMX, .length=2, }, + { .string="Sx", .data16=SX, .length=2, }, + { .string="[sigma]x", .data16=SIGMAX, .length=2, }, + { .string="minX", .data16=MINX, .length=2, }, + { .string="maxX", .data16=MAXX, .length=2, }, + { .string="minY", .data16=MINY, .length=2, }, + { .string="maxY", .data16=MAXY, .length=2, }, + { .string="mean(y)", .data16=MEANY, .length=2, }, + { .string="sum(y)^2", .data16=SUMYSQUARED, .length=2, }, + { .string="sum(y)", .data16=SUMY, .length=2, }, + { .string="Sy", .data16=SY, .length=2, }, + { .string="[sigma]y", .data16=SIGMAY, .length=2, }, + { .string="sum(xy)", .data16=SUMXY, .length=2, }, + { .string="[r]", .data16=SYSVAR_R, .length=2, }, + { .string="Med", .data16=MED, .length=2, }, + { .string="Q1", .data16=Q1, .length=2, }, + { .string="Q3", .data16=Q3, .length=2, }, + { .string="[a]", .data16=SYSVAR_A, .length=2, }, + { .string="[b]", .data16=SYSVAR_B, .length=2, }, + { .string="[c]", .data16=SYSVAR_C, .length=2, }, + { .string="[d]", .data16=SYSVAR_D, .length=2, }, + { .string="[stat_e]", .data16=SYSVAR_E, .length=2, }, + { .string="x1", .data16=X1, .length=2, }, + { .string="x2", .data16=X2, .length=2, }, + { .string="x3", .data16=X3, .length=2, }, + { .string="y1", .data16=Y1_1, .length=2, }, + { .string="y2", .data16=Y2_1, .length=2, }, + { .string="y3", .data16=Y3_1, .length=2, }, + { .string="[n]", .data16=SYSVAR_N, .length=2, }, + { .string="[p]", .data16=SYSVAR_P, .length=2, }, + { .string="[z]", .data16=SYSVAR_Z, .length=2, }, + { .string="[t]", .data16=SYSVAR_T, .length=2, }, + { .string="[chi]^2", .data16=CHISQUARED, .length=2, }, + { .string="[fin]", .data16=FIN, .length=2, }, + { .string="[df]", .data16=DF, .length=2, }, + { .string="[p^]", .data16=PHAT, .length=2, }, + { .string="[p^1]", .data16=PHAT1, .length=2, }, + { .string="[p^2]", .data16=PHAT2, .length=2, }, + { .string="mean(x1)", .data16=MEANX1, .length=2, }, + { .string="[n1]", .data16=N1, .length=2, }, + { .string="mean(x2)", .data16=MEANX2, .length=2, }, + { .string="[n2]", .data16=N2, .length=2, }, + { .string="[lower]", .data16=LOWER, .length=2, }, + { .string="[upper]", .data16=UPPER, .length=2, }, + { .string="[s]", .data16=SYSVAR_S, .length=2, }, + { .string="r^2", .data16=RSQUARED, .length=2, }, + { .string="R^2", .data16=CAPRSQUARED, .length=2, }, + { .string="[df]", .data16=DF2, .length=2, }, + { .string="SS", .data16=SS, .length=2, }, + { .string="[df]", .data16=DF3, .length=2, }, + { .string="SS", .data16=SS1, .length=2, }, + { .string="MS", .data16=MS1, .length=2, }, + + // graph data + { .string="ZXscl", .data16=ZXSCL, .length=2, }, + { .string="ZYscl", .data16=ZYSCL, .length=2, }, + { .string="Xscl", .data16=XSCL, .length=2, }, + { .string="Yscl", .data16=YSCL, .length=2, }, + { .string="ZUnStart", .data16=ZUNSTART, .length=2, }, + { .string="ZVnStart", .data16=ZVNSTART, .length=2, }, + { .string="UnStart", .data16=UNSTART, .length=2, }, + { .string="VnStart", .data16=VNSTART, .length=2, }, + { .string="Un-1", .data16=UNINVERSE, .length=2, }, + { .string="Vn-1", .data16=VNINVERSE, .length=2, }, + { .string="ZXmin", .data16=ZXMIN, .length=2, }, + { .string="ZXmax", .data16=ZXMAX, .length=2, }, + { .string="ZYmin", .data16=ZYMIN, .length=2, }, + { .string="ZYmax", .data16=ZYMAX, .length=2, }, + { .string="Ztheta_min", .data16=ZTHETAMIN, .length=2, }, + { .string="Ztheta_max", .data16=ZTHETAMAX, .length=2, }, + { .string="ZTmin", .data16=ZTMIN, .length=2, }, + { .string="ZTmax", .data16=ZTMAX, .length=2, }, + { .string="Xmin", .data16=XMIN, .length=2, }, + { .string="Xmax", .data16=XMAX, .length=2, }, + { .string="Ymin", .data16=YMIN, .length=2, }, + { .string="Ymax", .data16=YMAX, .length=2, }, + { .string="Tmin", .data16=TMIN, .length=2, }, + { .string="Tmax", .data16=TMAX, .length=2, }, + { .string="theta_min", .data16=THETAMIN, .length=2, }, + { .string="theta_max", .data16=THETAMAX, .length=2, }, + { .string="TblMin", .data16=TBLMIN, .length=2, }, + { .string="ZnMin", .data16=ZNMIN, .length=2, }, + { .string="nMin", .data16=NMIN, .length=2, }, + { .string="ZnMax", .data16=ZNMAX, .length=2, }, + { .string="nMax", .data16=NMAX, .length=2, }, + { .string="ZnStart", .data16=ZNSTART, .length=2, }, + { .string="nStart", .data16=NSTART, .length=2, }, + { .string="delta_Tbl", .data16=DELTATABLE, .length=2, }, + { .string="ZTstep", .data16=ZTSTEP, .length=2, }, + { .string="Ztheta_step", .data16=ZTHETASTEP, .length=2, }, + { .string="Tstep", .data16=TSTEP, .length=2, }, + { .string="theta_step", .data16=THETASTEP, .length=2, }, + { .string="delta_X", .data16=DELTAX, .length=2, }, + { .string="delta_Y", .data16=DELTAY, .length=2, }, + { .string="XFact", .data16=XFACT, .length=2, }, + { .string="YFact", .data16=YFACT, .length=2, }, + { .string="TblInput", .data16=TBLINPUT, .length=2, }, + // finance app + { .string="[N]", .data16=SYSVAR_CAPN, .length=2, }, + { .string="I%", .data16=IPERCENT, .length=2, }, + { .string="PV", .data16=PV, .length=2, }, + { .string="PMT", .data16=PMT, .length=2, }, + { .string="FV", .data16=FV, .length=2, }, + { .string="ZXres", .data16=ZXRES, .length=2, }, + { .string="Xres", .data16=XRES, .length=2, }, + // strings + { .string="STR1", .data16=STR1, .length=2, }, + { .string="STR2", .data16=STR2, .length=2, }, + { .string="STR3", .data16=STR3, .length=2, }, + { .string="STR4", .data16=STR4, .length=2, }, + { .string="STR5", .data16=STR5, .length=2, }, + { .string="STR6", .data16=STR6, .length=2, }, + { .string="STR7", .data16=STR7, .length=2, }, + { .string="STR8", .data16=STR8, .length=2, }, + { .string="STR9", .data16=STR9, .length=2, }, + { .string="STR0", .data16=STR0, .length=2, }, + // 7E Variables + { .string="Sequential", .data16=SEQ, .length=2, }, + { .string="Simul", .data16=SIMUL, .length=2, }, + { .string="PolarGC", .data16=POLARGC, .length=2, }, + { .string="RectGC", .data16=RECTGC, .length=2, }, + { .string="CoordOn", .data16=COORDON, .length=2, }, + { .string="CoordOff", .data16=COORDOFF, .length=2, }, + { .string="Connected", .data16=CONNECTED, .length=2, }, + { .string="Dot", .data16=DOT_7E, .length=2, }, + { .string="AxesOn", .data16=AXESON, .length=2, }, + { .string="AxesOff", .data16=AXESOFF, .length=2, }, + { .string="GridOn", .data16=GRIDON, .length=2, }, + { .string="GridOff", .data16=GRIDOFF, .length=2, }, + { .string="LabelOn", .data16=LABELON, .length=2, }, + { .string="LabelOff", .data16=LABELOFF, .length=2, }, + { .string="Web", .data16=WEB, .length=2, }, + { .string="Time", .data16=TIME, .length=2, }, + { .string="uvAxes", .data16=UVAXES, .length=2, }, + { .string="vwAxes", .data16=VWAXES, .length=2, }, + { .string="uwAxes", .data16=UWAXES, .length=2, }, + // BB Variables + { .string="npv(", .data16=NPV, .length=2, }, + { .string="irr(", .data16=IRR, .length=2, }, + { .string="bal(", .data16=BAL, .length=2, }, + { .string="sum_prn(", .data16=SUMPRN, .length=2, }, + { .string="sum_int(", .data16=SUMINT, .length=2, }, + { .string="->Nom", .data16=TONOM, .length=2, }, + { .string="->Eff", .data16=TOEFF, .length=2, }, + { .string="dbd(", .data16=DBD, .length=2, }, + { .string="lcm(", .data16=LCM, .length=2, }, + { .string="gcd(", .data16=GCD, .length=2, }, + { .string="RandInt(", .data16=RANDINT, .length=2, }, + { .string="RandBin(", .data16=RANDBIN, .length=2, }, + { .string="sub(", .data16=SUB, .length=2, }, + { .string="StdDev(", .data16=STDDEV, .length=2, }, + { .string="variance(", .data16=VARIANCE, .length=2, }, + { .string="inString(", .data16=INSTRING, .length=2, }, + { .string="normalcdf(", .data16=NORMALCDF, .length=2, }, + { .string="invNorm(", .data16=INVNORM, .length=2, }, + { .string="tcdf(", .data16=TCDF, .length=2, }, + { .string="x^2cdf(", .data16=XSQUCDF, .length=2, }, + { .string="fcdf(", .data16=FCDF, .length=2, }, + { .string="binompdf(", .data16=BINOMPDF, .length=2, }, + { .string="binomcdf(", .data16=BINOMCDF, .length=2, }, + { .string="poissonpdf(", .data16=POISSONPDF, .length=2, }, + { .string="poissoncdf(", .data16=POISSONCDF, .length=2, }, + { .string="geometpdf(", .data16=GEOMETPDF, .length=2, }, + { .string="geometcdf(", .data16=GEOMETCDF, .length=2, }, + { .string="normalpdf(", .data16=NORMALPDF, .length=2, }, + { .string="tpdf(", .data16=TPDF, .length=2, }, + { .string="x^2pdf(", .data16=XSQUPDF, .length=2, }, + { .string="fpdf(", .data16=FPDF, .length=2, }, + { .string="RandNorm(", .data16=RANDNORM, .length=2, }, + { .string="tvm_pmt", .data16=TVM_PMT, .length=2, }, + { .string="tvm_i%", .data16=TVM_I_PERCENT, .length=2, }, + { .string="tvm_PV", .data16=TVM_PV, .length=2, }, + { .string="tvm_N", .data16=TVM_N, .length=2, }, + { .string="tvm_FV", .data16=TVM_FV, .length=2, }, + { .string="conj(", .data16=CONJ, .length=2, }, + { .string="real(", .data16=REAL, .length=2, }, + { .string="imag(", .data16=IMAG, .length=2, }, + { .string="angle(", .data16=ANGLE, .length=2, }, + { .string="cumSum(", .data16=CUMSUM, .length=2, }, + { .string="expr(", .data16=EXPR, .length=2, }, + { .string="length(", .data16=LENGTH, .length=2, }, + { .string="delta_List(", .data16=DELTA_LIST, .length=2, }, + { .string="ref(", .data16=REF, .length=2, }, + { .string="rref(", .data16=RREF, .length=2, }, + { .string="->Rect", .data16=TORECT, .length=2, }, + { .string="->Polar", .data16=TOPOLAR, .length=2, }, + { .string="[e]", .data16=VAR_E, .length=2, }, + { .string="SinReg ", .data16=SINREG, .length=2, }, + { .string="Logistic ", .data16=LOGISTIC, .length=2, }, + { .string="LinRegTTest ", .data16=LINREGTTEST, .length=2, }, + { .string="ShadeNorm(", .data16=SHADENORM, .length=2, }, + { .string="Shade_t(", .data16=SHADE_T, .length=2, }, + { .string="Shade_x^2(", .data16=SHADEXSQU, .length=2, }, + { .string="ShadeF(", .data16=SHADEF, .length=2, }, + { .string="Matr->list", .data16=MATRTOLIST, .length=2, }, + { .string="List->matr", .data16=LISTTOMATR, .length=2, }, + { .string="Z-Test(", .data16=ZTEST, .length=2, }, + { .string="T-Test ", .data16=TTEST, .length=2, }, + { .string="2-SampZTest(", .data16=TWO_SAMPZTEST, .length=2, }, + { .string="1-PropZTest(", .data16=ONE_PROPZTEST, .length=2, }, + { .string="2-PropZTest(", .data16=TWO_PROPZTEST, .length=2, }, + { .string="x^2_test(", .data16=XSQUTEST, .length=2, }, + { .string="ZInterval", .data16=ZINTERVAL, .length=2, }, + { .string="2-SampZInt(", .data16=TWO_SAMPZINT, .length=2, }, + { .string="1-PropZInt(", .data16=ONE_PROPZINT, .length=2, }, + { .string="2-PropZInt(", .data16=TWO_PROPZINT, .length=2, }, + { .string="GraphStyle(", .data16=GRAPHSTYLE, .length=2, }, + { .string="2-SampTTest ", .data16=TWO_SAMPTTEST, .length=2, }, + { .string="2-SampFTest_", .data16=TWO_SAMPFTEST, .length=2, }, + { .string="TInterval ", .data16=TINTERVAL, .length=2, }, + { .string="2-SampTInt ", .data16=TWO_SAMPTINT, .length=2, }, + { .string="SetUpEditor ", .data16=SETUPEDITOR, .length=2, }, + { .string="PMT_End", .data16=PMT_END, .length=2, }, + { .string="PMT_Bgn", .data16=PMT_BGN, .length=2, }, + { .string="Real", .data16=REAL_BB, .length=2, }, + { .string="re^[theta]i", .data16=REPOWTHETAI, .length=2, }, + { .string="a+bi", .data16=APLUSBI, .length=2, }, + { .string="ExprOn", .data16=EXPRON, .length=2, }, + { .string="ExprOff", .data16=EXPROFF, .length=2, }, + { .string="ClrAllLists", .data16=CLRALLLISTS, .length=2, }, + { .string="GetCalc(", .data16=GETCALC, .length=2, }, + { .string="DelVar ", .data16=DELVAR, .length=2, }, + { .string="Equ->String(", .data16=EQUTOSTRING, .length=2, }, + { .string="String->Equ(", .data16=STRINGTOEQU, .length=2, }, + { .string="Clear Entries", .data16=CLEARENTRIES, .length=2, }, + { .string="Select(", .data16=SELECT, .length=2, }, + { .string="ANOVA(", .data16=ANOVA, .length=2, }, + { .string="ModBoxPlot", .data16=MODBOXPLOT, .length=2, }, + { .string="NormProbPlot", .data16=NORMPROBPLOT, .length=2, }, + + { .string="\"", .data8=DOUBLEQUOTE, .length=1, }, + { .string="'", .data8=APOSTROPHE, .length=1, }, + { .string=",", .data8=COMMA, .length=1, }, + { .string="?", .data8=QUESTIONMARK, .length=1, }, + { .string=" ", .data8=SPACE, .length=1, }, + { .string="=", .data8=TEST_EQUAL, .length=1, }, + { .string="<", .data8=TEST_LESSTHAN, .length=1, }, + { .string=">", .data8=TEST_HIGHTHAN, .length=1, }, + { .string="+", .data8=ADD, .length=1, }, + { .string="-", .data8=SUBTRACT, .length=1, }, + { .string="/", .data8=DIVIDE_SLASH, .length=1, }, + { .string="*", .data8=MULTIPLY, .length=1, }, + { .string="!", .data8=FACTORIAL, .length=1, }, + { .string=":", .data8=COLON, .length=1, }, + { .string="\n", .data8=HARD_RETURN, .length=1, }, + { .string="0", .data8=NUM_0, .length=1, }, + { .string="1", .data8=NUM_1, .length=1, }, + { .string="2", .data8=NUM_2, .length=1, }, + { .string="3", .data8=NUM_3, .length=1, }, + { .string="4", .data8=NUM_4, .length=1, }, + { .string="5", .data8=NUM_5, .length=1, }, + { .string="6", .data8=NUM_6, .length=1, }, + { .string="7", .data8=NUM_7, .length=1, }, + { .string="8", .data8=NUM_8, .length=1, }, + { .string="9", .data8=NUM_9, .length=1, }, + { .string=".", .data8=PERIOD, .length=1, }, + { .string="[", .data8=LEFTSBRACK, .length=1, }, + { .string="]", .data8=RIGHTSBRACK, .length=1, }, + { .string="{", .data8=LEFTBRACE, .length=1, }, + { .string="}", .data8=RIGHTBRACE, .length=1, }, + { .string="(", .data8=LEFTBRACKET, .length=1, }, + { .string=")", .data8=RIGHTBRACKET, .length=1, }, + { .string="&", .data8=LOGIC_AND, .length=1, }, + { .string="|", .data8=LOGIC_OR, .length=1, }, + { .string="~", .data8=LOGIC_XOR, .length=1, }, + { .string="=", .data8=TEST_EQUAL, .length=1, }, + { .string="<", .data8=TEST_LESSTHAN, .length=1, }, + { .string=">", .data8=TEST_HIGHTHAN, .length=1, }, + { .string="^", .data8=POWEROF, .length=1, }, +}; + +#endif |