package com.bytezone.diskbrowser.applefile;

// -----------------------------------------------------------------------------------//
public interface ApplesoftConstants
// -----------------------------------------------------------------------------------//
{
  String[] tokens = { //
                     "END", "FOR", "NEXT", "DATA",              // 0x80 - 0x83
                     "INPUT", "DEL", "DIM", "READ",             // 0x84 - 0x87
                     "GR", "TEXT", "PR#", "IN#",                // 0x88 - 0x8B
                     "CALL", "PLOT", "HLIN", "VLIN",            // 0x8C - 0x8F
                     "HGR2", "HGR", "HCOLOR=", "HPLOT",         // 0x90
                     "DRAW", "XDRAW", "HTAB", "HOME",           // 0x94
                     "ROT=", "SCALE=", "SHLOAD", "TRACE",       // 0x98
                     "NOTRACE", "NORMAL", "INVERSE", "FLASH",   // 0x9C
                     "COLOR=", "POP", "VTAB", "HIMEM:",         // 0xA0
                     "LOMEM:", "ONERR", "RESUME", "RECALL",     // 0xA4 - 0xA7
                     "STORE", "SPEED=", "LET", "GOTO",          // 0xA8
                     "RUN", "IF", "RESTORE", "&",               // 0xAC
                     "GOSUB", "RETURN", "REM", "STOP",          // 0xB0
                     "ON", "WAIT", "LOAD", "SAVE",              // 0xB4
                     "DEF", "POKE", "PRINT", "CONT",            // 0xB8
                     "LIST", "CLEAR", "GET", "NEW",             // 0xBC
                     "TAB(", "TO", "FN", "SPC(",                // 0xC0
                     "THEN", "AT", "NOT", "STEP",               // 0xC4
                     "+", "-", "*", "/",                        // 0xC8
                     "^", "AND", "OR", ">",                     // 0xCC
                     "=", "<", "SGN", "INT",                    // 0xD0
                     "ABS", "USR", "FRE", "SCRN(",              // 0xD4 
                     "PDL", "POS", "SQR", "RND",                // 0xD8
                     "LOG", "EXP", "COS", "SIN",                // 0xDC
                     "TAN", "ATN", "PEEK", "LEN",               // 0xE0 - 0xE3
                     "STR$", "VAL", "ASC", "CHR$",              // 0xE4 - 0xE7
                     "LEFT$", "RIGHT$", "MID$", "",             // 0xE8 - 0xEB
                     "", "", "", "",                            // 0xEC - 0xEF
                     "", "", "", "",                            // 0xF0 - 0xF3
                     "", "", "", "",                            // 0xF4 - 0xF7
                     "", "", "", "",                            // 0xF8 - 0xFB
                     "", "", "", "",                            // 0xFC - 0xFF
  };

  static final byte TOKEN_FOR = (byte) 0x81;
  static final byte TOKEN_NEXT = (byte) 0x82;
  static final byte TOKEN_DATA = (byte) 0x83;
  static final byte TOKEN_INPUT = (byte) 0x84;
  static final byte TOKEN_DIM = (byte) 0x86;
  static final byte TOKEN_CALL = (byte) 0x8C;
  static final byte TOKEN_ONERR = (byte) 0xA5;
  static final byte TOKEN_LET = (byte) 0xAA;
  static final byte TOKEN_GOTO = (byte) 0xAB;
  static final byte TOKEN_IF = (byte) 0xAD;
  static final byte TOKEN_AMPERSAND = (byte) 0xAF;
  static final byte TOKEN_GOSUB = (byte) 0xB0;
  static final byte TOKEN_RETURN = (byte) 0xB1;
  static final byte TOKEN_REM = (byte) 0xB2;
  static final byte TOKEN_ON = (byte) 0xB4;
  static final byte TOKEN_DEF = (byte) 0xB8;
  static final byte TOKEN_PRINT = (byte) 0xBA;
  static final byte TOKEN_FN = (byte) 0xC2;
  static final byte TOKEN_THEN = (byte) 0xC4;
  static final byte TOKEN_MINUS = (byte) 0xC9;
  static final byte TOKEN_EQUALS = (byte) 0xD0;

  int[] tokenAddresses =
      { 0xD870, 0xD766, 0xDCF9, 0xD995, 0xDBB2, 0xF331, 0xDFD9, 0xDBE2, 0xF390, 0xF399,
        0xF1E5, 0xF1DE, 0xF1D5, 0xF225, 0xF232, 0xF241, 0xF3D8, 0xF3E2, 0xF6E9, 0xF6FE,
        0xF769, 0xF76F, 0xF7E7, 0xFC58, 0xF721, 0xF727, 0xF775, 0xF26D, 0xF26F, 0xF273,
        0xF277, 0xF280, 0xF24F, 0xD96B, 0xF256, 0xF286, 0xF2A6, 0xF2CB, 0xF318, 0xF3BC,
        0xF39F, 0xF262, 0xDA46, 0xD93E, 0xD912, 0xD9C9, 0xD849, 0x03F5, 0xD921, 0xD96B,
        0xD9DC, 0xD86E, 0xD9EC, 0xE784, 0xD8C9, 0xD8B0, 0xE313, 0xE77B, 0xDAD5, 0xD896,
        0xD6A5, 0xD66A, 0xDBA0, 0xD649, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
        0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xEB90, 0xEC23, 0xEBAF, 0x000A, 0xE2DE,
        0xD412, 0xDFCD, 0xE2FF, 0xEE8D, 0xEFAE, 0xE941, 0xEF09, 0xEFEA, 0xEFF1, 0xF03A,
        0xF09E, 0xE764, 0xE6D6, 0xE3C5, 0xE707, 0xE6E5, 0xE646, 0xE65A, 0xE686, 0xE691 };
}

/*
https://groups.google.com/forum/#!topic/comp.sys.apple2/_lQ2-l9i5cw
NEW Applesoft tokens
$F0 - ELSE
$F1 - MOD
$F2 - INC - as in Increment, so instead of A=A+1: use INC A
$F3 - DEC - opposite of INC
$F4 - DEEK - two-byte PEEK
$F5 - DOKE - two-byte POKE
$F6 - REPEAT
$F7 - UNTIL
*/
