The TRACE sequence operations is controlled by the tables listed below;

TRACE Sequence Tables

Num Name Address # Entries
1. AEC-TABLE 0xF000 128
2. PZT-TABLE 0xF4D0 3 X 16
3. Wavelength-TABLE 0xF500 32
3. Target-TABLE 0xF600 106
The address range 0x8000 to 0xEFFF (28 KBytes) is available for loading sequences and Frame definition Blocks. Sequences are loaded at increasing addresses starting at 0x8000 while FDB's are loaded at decreasing addresses starting at 0xEFE0.
/* Sequence Tables:
 *
 * The fixed tables and their structures are defined here.
 */

struct AREAPRM {
    unsigned int OpFmt    : 9;     // word 9
    unsigned int Bin      : 2;
    unsigned int OP       : 2;
    unsigned int Ref      : 3;

             int RowOffset:12;     // word 10
    unsigned int RowBlks  : 4;

             int ColOffset:12;     // word 11
    unsigned int ColBlks  : 4;
    };

struct FRMDEFB {
    unsigned int fid           :16;    // word 0
    unsigned int LocateImin    : 1;    // word 1
    unsigned int LocateImax    : 1;
    unsigned int DetectTrans   : 1;
    unsigned int DetectFlare   : 1;
    unsigned int DetectSuFlr   : 1;
    unsigned int EvtDetectArea : 1;
    unsigned int RdoutAmp      : 2;
    unsigned int TeleCmd       : 1;
    unsigned int ExtractSize   : 4;
    unsigned int CameraMode    : 3;

    unsigned int ExpCtrlWord   :16;    // word 2

    unsigned int TimeAvgIntrvl : 4;    // word 3
    unsigned int DoTimeAvg     : 2;
    unsigned int               : 1;
    unsigned int DarkTransient : 1;
    unsigned int TransMult     : 8;

    unsigned int TransPixCnt   :16;    // word 4

    unsigned int FlareCntRate  :16;    // word 5
    unsigned int SuFlrCntRate  :16;    // word 6

    unsigned int FlarePixCnt   :16;    // word 7

    unsigned int FullCamOpFmt  : 9;    // word 8
    unsigned int FullCamBin    : 2;
    unsigned int FullCamOP     : 2;
    unsigned int               : 3;

    struct AREAPRM SubArea[2];
    unsigned int               : 16;   // word 15
    };

struct ExpCtrlW {
    unsigned int  AECO_IND : 7;
    unsigned int  WLI      : 5;
    unsigned int  EXEC     : 1;
    unsigned int  DEF      : 1;
    unsigned int  SPEC     : 1;
    unsigned int  DRK      : 1;
    };

struct AREASPEC {
    int  out;
    int  TMS;
    int  TM0;
    long SA;
    int  NC;
    int  NR;
    int  RL;
    int  BM;
    int  APID;
    int  CMP;
    int  QT_PCK;
    int  HT_LUT;
    int  QM;
    int  spare1;
    int  spare2;
    };

struct P1IPB {
unsigned int    SPG;
unsigned int    BPT;
unsigned int    BPYO;
unsigned int    BPYL;
unsigned long   P1SA;
unsigned int    P1NC;
unsigned int    P1NR;
unsigned int    P1RL;
unsigned int    P1BF;
unsigned int    SF;
unsigned int    SFHB;
unsigned long   SFHC;
unsigned int    FF;
unsigned int    FHB;
unsigned long   FHC;
unsigned int    AECX;
unsigned int    AEHB;
unsigned long   AEHC;
unsigned int    AELB;
unsigned long   AELC;
unsigned int    TF;
unsigned int    TMUL;
unsigned long   TPC;
unsigned int    DT;
unsigned int    TAI;
unsigned int    T0;
unsigned int    IMX;
unsigned int    IMN;
unsigned int    spare[6];
struct AREASPEC FCP2P;
struct AREASPEC A1P2P;
struct AREASPEC A2P2P;
};

struct DHCRES {
    unsigned int  FlareEvt;
    unsigned int  SuFlareEvt;
    unsigned int  TransEvt;
             int  AECAdjust;
    unsigned int  IMaxValid;
    unsigned long IMaxLoc;
    unsigned int  IMinValid;
    unsigned long IMinLoc;
    unsigned int  spare1;
    unsigned int  spare2;
    unsigned int  NewRes;
    };


struct wlt {
    unsigned int F1A    :  8;      // Filter Wheel 1 Address
    unsigned int F1DB   :  2;      // Filter Wheel 1 Direction bits
    unsigned int        :  6;
    unsigned int F2A    :  8;      // Filter Wheel 2 Address
    unsigned int F2DB   :  2;      // Filter Wheel 2 Direction Bits
    unsigned int        :  6;
    unsigned int QSA    :  8;      // Quadrant Selector Address
    unsigned int QSDB   :  2;      // Quadrant Selector Direction Bits
    unsigned int        :  6;
    unsigned int FMA    :  8;      // Focus Mechanism Address
    unsigned int FMDB   :  2;      // Focus Mechanism Direction Bits
    unsigned int        :  6;
    };

struct AREADEF {
    unsigned int SRP      :16;
             int RowOffset:12;
    unsigned int RowBlks  : 4;
             int ColOffset:12;
    unsigned int ColBlks  : 4;
    };

struct pct {
    unsigned int TID_l  : 16;      // Compiler does'nt allow 32 bit fields
    unsigned int TID_h  : 16;
    unsigned int W2     :  8;
    unsigned int W1     :  8;
    unsigned int        :  5;
    unsigned int TC     :  2;
    unsigned int        :  5;
    unsigned int R2     :  1;
    unsigned int A2     :  1;
    unsigned int R1     :  1;
    unsigned int A1     :  1;
    struct AREADEF SubArea[2];
    unsigned int LOBT_l : 16;
    unsigned int LOBT_h : 16;
    };

struct expt {
    unsigned int shtr_md;
    unsigned int pic_indx;
    unsigned int sh_exp;
    };

struct aect {
    unsigned char DEF;
    unsigned char CUR;
    unsigned char SUP;
    unsigned char SDN;
    unsigned char PAH;
    unsigned char PAL;
    unsigned char INH;
    unsigned char INL;
    };

#define FDBTABLE     0xEFE0
#define PZTTABLE     0xF4D0
#define PTGCTRLTABLE 0xF600  // 0xE000
#define AECTABLE     0xF000  // 0xFC00
#define NUMPTG       106

#ifdef TRACE2
struct FRMDEFB *FDBarray = (struct FRMDEFB *) 0xEFE0;
struct FRMDEFB CurrFDB;


struct wlt *TS_WLT = (struct wlt *) 0xF500;
/*
struct wlt  TS_WLT[32] = {
  19,   2, 125,   2,  28,   2,   0,   2,
  19,   2,  53,   0,  28,   2,   0,   2,
  55,   0, 125,   2,  28,   2,   0,   2,
  55,   0,  53,   0,  28,   2,   0,   2,
  19,   2, 125,   2,  10,   2,   0,   2,
  19,   2,  53,   0,  10,   2,   0,   2,
  55,   0, 125,   2,  10,   2,   0,   2,
  55,   0,  53,   0,  10,   2,   0,   2,
  19,   2, 125,   2,   1,   2,   0,   2,
  19,   2,  53,   0,   1,   2,   0,   2,
  55,   0, 125,   2,   1,   2,   0,   2,
  55,   0,  53,   0,   1,   2,   0,   2,
  19,   2, 125,   2,  19,   2,   0,   2,
  19,   2,  17,   2,  19,   2,   0,   2,
  19,   2,  53,   0,  19,   2,   0,   2,
  19,   2,  89,   2,  19,   2,   0,   2,
  91,   2, 125,   2,  19,   2,   0,   2,
  91,   2,  17,   2,  19,   2,   0,   2,
  91,   2,  89,   2,  19,   2,   0,   2,
  55,   0, 125,   2,  19,   2,   0,   2,
  55,   0,  53,   0,  19,   2,   0,   2,
 127,   2, 125,   2,  19,   2,   0,   2,
 127,   2,  89,   2,  19,   2,   0,   2,
  19,   2,  17,   2,  28,   2,   0,   2,
  19,   2,  89,   2,  28,   2,   0,   2,
  91,   2, 125,   2,  28,   2,   0,   2,
 127,   2, 125,   2,  28,   2,   0,   2,
  19,   3, 125,   3,  19,   3,   0,   3,
  19,   3, 125,   3,  19,   3,   0,   3,
  19,   3, 125,   3,  19,   3,   0,   3,
  19,   3, 125,   3,  19,   3,   0,   3,
  19,   3, 125,   3,  19,   3,   0,   3};
*/

struct wlt  FrmWLT = {0, 0, 0, 0, 0, 0, 0, 0};
unsigned int *pWLT;

char *TS_PZTO = (char *) 0xF4D0;
char FrmPZTO[3] = {0, 0, 0};
unsigned int *pPZTO = (unsigned int *)&FrmPZTO;

struct pct  *TS_PCT = (struct pct *) 0xF600;
struct pct  FrmPCT = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
unsigned int *pPCT;

struct aect *TS_AECT = (struct aect *) 0xF000;
char FrmAECT[8];
char *pAECT;

#endif