This index contains every variable that appears in the source code for the BBC Master version of Elite, grouped by category. A variable is defined as a labelled memory location that is used for storing data, and this list includes both variables that are defined in workspaces, and variables that are declared within the body of the source code.
- Dashboard
- Drawing lines
- Drawing pixels
- Drawing planets
- Drawing ships
- Drawing the screen
- Equipment
- Keyboard
- Loader
- Market
- Maths (Arithmetic)
- Maths (Geometry)
- Missions
- Save and load
- Ship hangar
- Sound
- Status
- Text
- Universe
- Utility routines
- Workspace variables
Dashboard
| |
ECBT | The character bitmap for the E.C.M. indicator bulb |
SPBT | The bitmap definition for the space station indicator bulb |
Drawing lines
| |
beamcol | An unused table of laser colours |
BOMBPOS | A set of x-coordinates that are used as the basis for the energy bomb's zig-zag lightning bolt |
BOMBTBX | This is where we store the x-coordinates for the energy bomb's zig-zag lightning bolt |
BOMBTBY | This is where we store the y-coordinates for the energy bomb's zig-zag lightning bolt |
sightcol | Colours for the crosshair sights on the different laser types |
Drawing pixels
| |
CTWOS | Ready-made single-pixel character row bytes for mode 2 |
orange | Lookup table for 2-pixel mode 1 orange pixels for the sun |
PXCL | A four-colour mode 1 pixel byte that represents a dot's distance |
TWFL | Ready-made character rows for the left end of a horizontal line |
TWFR | Ready-made character rows for the right end of a horizontal line |
TWOS | Ready-made single-pixel character row bytes for mode 1 |
TWOS (Loader) | Ready-made single-pixel character row bytes for mode 1 |
TWOS2 | Ready-made double-pixel character row bytes for mode 1 |
ylookup | Lookup table for converting pixel y-coordinate to page number of screen address |
Drawing planets
| |
CNT (Loader) | A counter for use in drawing Saturn's planetary body |
CNT2 (Loader) | A counter for use in drawing Saturn's background stars |
CNT3 (Loader) | A counter for use in drawing Saturn's rings |
RAND (Loader) | The random number seed used for drawing Saturn |
Drawing ships
| |
coltabl | Colours for ship explosions |
E% (Game data) | Ship blueprints default NEWB flags |
exlook | A table to shift X left by one place when X is 0 or 1 |
scacol | Ship colours on the scanner |
SHIP_ADDER (Game data) | Ship blueprint for an Adder |
SHIP_ANACONDA (Game data) | Ship blueprint for an Anaconda |
SHIP_ASP_MK_2 (Game data) | Ship blueprint for an Asp Mk II |
SHIP_ASTEROID (Game data) | Ship blueprint for an asteroid |
SHIP_BOA (Game data) | Ship blueprint for a Boa |
SHIP_BOULDER (Game data) | Ship blueprint for a boulder |
SHIP_CANISTER (Game data) | Ship blueprint for a cargo canister |
SHIP_COBRA_MK_1 (Game data) | Ship blueprint for a Cobra Mk I |
SHIP_COBRA_MK_3 (Game data) | Ship blueprint for a Cobra Mk III |
SHIP_COBRA_MK_3_P (Game data) | Ship blueprint for a Cobra Mk III (pirate) |
SHIP_CONSTRICTOR (Game data) | Ship blueprint for a Constrictor |
SHIP_CORIOLIS (Game data) | Ship blueprint for a Coriolis space station |
SHIP_COUGAR (Game data) | Ship blueprint for a Cougar |
SHIP_DODO (Game data) | Ship blueprint for a Dodecahedron ("Dodo") space station |
SHIP_ESCAPE_POD (Game data) | Ship blueprint for an escape pod |
SHIP_FER_DE_LANCE (Game data) | Ship blueprint for a Fer-de-Lance |
SHIP_GECKO (Game data) | Ship blueprint for a Gecko |
SHIP_KRAIT (Game data) | Ship blueprint for a Krait |
SHIP_MAMBA (Game data) | Ship blueprint for a Mamba |
SHIP_MISSILE (Game data) | Ship blueprint for a missile |
SHIP_MORAY (Game data) | Ship blueprint for a Moray |
SHIP_PLATE (Game data) | Ship blueprint for an alloy plate |
SHIP_PYTHON (Game data) | Ship blueprint for a Python |
SHIP_PYTHON_P (Game data) | Ship blueprint for a Python (pirate) |
SHIP_ROCK_HERMIT (Game data) | Ship blueprint for a rock hermit (asteroid) |
SHIP_SHUTTLE (Game data) | Ship blueprint for a Shuttle |
SHIP_SIDEWINDER (Game data) | Ship blueprint for a Sidewinder |
SHIP_SPLINTER (Game data) | Ship blueprint for a splinter |
SHIP_THARGOID (Game data) | Ship blueprint for a Thargoid mothership |
SHIP_THARGON (Game data) | Ship blueprint for a Thargon |
SHIP_TRANSPORTER (Game data) | Ship blueprint for a Transporter |
SHIP_VIPER (Game data) | Ship blueprint for a Viper |
SHIP_WORM (Game data) | Ship blueprint for a Worm |
shpcol | Ship colours |
XX21 (Game data) | Ship blueprints lookup table |
Drawing the screen
| |
B% (Loader) | VDU commands for setting the square mode 1 screen |
TVT1 | Palette data for the mode 2 part of the screen (the dashboard) |
TVT3 | Palette data for the mode 1 part of the screen (the top part) |
VEC | The original value of the IRQ1 vector |
VSCAN | Defines the split position in the split-screen mode |
Equipment
| |
PRXS | Equipment prices |
Keyboard
| |
IKNS | Lookup table for in-flight keyboard controls |
KTRAN | An unused key logger buffer that's left over from the 6502 Second Processor version of Elite |
TGINT | The keys used to toggle configuration settings when the game is paused |
TRTB% | Translation table from internal key number to ASCII |
Loader
| |
Dashboard image (Game data) | The binary for the dashboard image |
MESS1 (Loader) | The OS command string for loading the BDATA binary |
MESS2 (Loader) | The OS command string for loading the main game code binary |
MESS3 (Loader) | The OS command string for changing the disc directory to E |
Market
| |
QQ23 | Market prices table |
Maths (Arithmetic)
| |
alogh | Binary antilogarithm table |
log | Binary logarithm table (high byte) |
logL | Binary logarithm table (low byte) |
Maths (Geometry)
| |
ACT (Game data) | Arctan table |
SNE (Game data) | Sine/cosine table |
Missions
| |
SPMASK | Masks for updating sprite bits in VIC+&10 for the top bit of the 9-bit x-coordinates of the Trumble sprites |
TRIBDIR | The low byte of the four 16-bit directions in which Trumble sprites can move |
TRIBDIRH | The high byte of the four 16-bit directions in which Trumble sprites can move |
TRIBMA | A table for converting the number of Trumbles in the hold into a sprite-enable flag to use with VIC register &15 |
TRIBTA | A table for converting the number of Trumbles in the hold into a number of sprites in the range 0 to 6 |
Save and load
| |
CHK | First checksum byte for the saved commander data file |
CHK2 | Second checksum byte for the saved commander data file |
CTLI | The OS command string for cataloguing a disc |
DELI | The OS command string for deleting a file |
DIRI | The OS command string for changing directory on the Master Compact |
lodosc | The OS command string for loading a commander file |
NA% | The data block for the last saved commander |
NA2% | The data block for the default commander |
oldlong | Contains the length of the last saved commander name |
S1% | The drive and directory number used when saving or loading a commander file |
savosc | The OS command string for saving a commander file |
stackpt | Temporary storage for the stack pointer when jumping to the break handler at NEWBRK |
thislong | Contains the length of the most recently entered commander name |
Ship hangar
| |
HANGFLAG | The number of ships being displayed in the ship hangar |
HATB | Ship hangar group table |
Sound
| |
SFXBT | Sound data block 2 |
SFXFQ | Sound data block 3 |
SFXPR | Sound data block 1 |
SFXVC | Sound data block 4 |
SOFH | Sound chip data mask for choosing a tone channel in the range 0-2 |
SOOFF | Sound chip data to turn the volume down on all channels and to act as a mask for choosing a tone channel in the range 0-2 |
Status
| |
KWH% (Game data) | Integer number of kills awarded for destroying each type of ship |
KWL% (Game data) | Fractional number of kills awarded for destroying each type of ship |
Text
| |
DTW1 | A mask for applying the lower case part of Sentence Case to extended text tokens |
DTW2 | A flag that indicates whether we are currently printing a word |
DTW3 | A flag for switching between standard and extended text tokens |
DTW4 | Flags that govern how justified extended text tokens are printed |
DTW5 | The size of the justified text buffer at BUF |
DTW6 | A flag to denote whether printing in lower case is enabled for extended text tokens |
DTW8 | A mask for capitalising the next letter in an extended text token |
FONT% | A copy of the character definition bitmap table from the MOS ROM |
JMTB | The extended token table for jump tokens 1-32 (DETOK) |
MTIN | Lookup table for random tokens in the extended token table (0-37) |
QQ16 | The two-letter token lookup table |
QQ18 (Game data) | The recursive token table for tokens 0-148 |
RLINE | The OSWORD configuration block used to fetch a line of text from the keyboard |
RUGAL (Game data) | The criteria for systems with extended description overrides |
RUPLA (Game data) | System numbers that have extended description overrides |
RUTOK (Game data) | The second extended token table for recursive tokens 0-26 (DETOK3) |
TENS | A constant used when printing large numbers in BPRNT |
TKN1 (Game data) | The first extended token table for recursive tokens 0-255 (DETOK) |
TKN2 | The extended two-letter token lookup table |
Universe
| |
spasto | Contains the address of the Coriolis space station's ship blueprint |
UNIV | Table of pointers to the local universe's ship data blocks |
Utility routines
| |
F% | Denotes the end of the main game code, from ELITE A to ELITE H |
G% | Denotes the start of the main game code, from ELITE A to ELITE H |
Workspace variables
| |
ALP1 | Magnitude of the roll angle alpha, i.e. |alpha|, which is a positive value between 0 and 31 |
ALP2 | Bit 7 of ALP2 = sign of the roll angle in ALPHA |
ALPHA | The current roll angle alpha, which is reduced from JSTX to a sign-magnitude value between -31 and +31 |
ALTIT | Our altitude above the surface of the planet or sun |
ASH | Aft shield status |
auto | Docking computer activation status |
AVL | Market availability in the current system |
BALI | This byte appears to be unused |
BET1 | The magnitude of the pitch angle beta, i.e. |beta|, which is a positive value between 0 and 8 |
BET2 | Bit 7 of BET2 = sign of the pitch angle in BETA |
BETA | The current pitch angle beta, which is reduced from JSTY to a sign-magnitude value between -8 and +8 |
BOMB | Energy bomb |
boxsize | This byte appears to be unused |
BST | Fuel scoops (BST stands for "barrel status") |
BSTK | Bitstik configuration setting |
BUF | The line buffer used by DASC to print justified text |
CABTMP | Cabin temperature |
CASH | Our current cash pot |
CATF | The disc catalogue flag |
CNT | Temporary storage, typically used for storing the number of iterations required when looping |
CNT2 | Temporary storage, used in the planet-drawing routine to store the segment number where the arc of a partial circle should start |
COK | Flags used to generate the competition code |
COL | Temporary storage, used to store colour information when drawing pixels in the dashboard |
COMC | The colour of the dot on the compass |
COMX | The x-coordinate of the compass dot |
COMY | The y-coordinate of the compass dot |
CRGO | Our ship's cargo capacity |
DAMP | Keyboard damping configuration setting |
de | Equipment destruction flag |
DELT4 | Our current speed * 64 as a 16-bit value |
DELTA | Our current speed, in the range 1-40 |
DFLAG | This byte appears to be unused |
dialc | These bytes appear to be unused |
dials | These bytes appear to be unused |
DISK | The configuration setting for toggle key "T", which isn't actually used but is still updated by pressing "T" while the game is paused. This is a configuration option from some non-BBC versions of Elite that lets you switch between tape and disc |
distaway | Used to store the nearest distance of the rotating ship on the title screen |
DJD | Keyboard auto-recentre configuration setting |
DKCMP | Docking computer |
DL | Vertical sync flag |
DLY | In-flight message delay |
DNOIZ | Sound on/off configuration setting |
dontclip | This is set to 0 in the RES2 routine, but the value is never actually read (this is left over from the Commodore 64 version of Elite) |
ECM | E.C.M. system |
ECMA | The E.C.M. countdown timer, which determines whether an E.C.M. system is currently operating: |
ECMP | Our E.C.M. status |
ENERGY | Energy bank status |
ENGY | Energy unit |
ESCP | Escape pod |
EV | The "extra vessels" spawning counter |
FIST | Our legal status (FIST stands for "fugitive/innocent status"): |
FLAG | A flag that's used to define whether this is the first call to the ball line routine in BLINE, so it knows whether to wait for the second call before storing segment data in the ball line heap |
FLH | Flashing console bars configuration setting |
FRIN | Slots for the ships in the local bubble of universe |
frump | Used to store the number of particles in the explosion cloud, though the number is never actually used |
FSH | Forward shield status |
GCNT | The number of the current galaxy (0-7) |
GHYP | Galactic hyperdrive |
GNTMP | Laser temperature (or "gun temperature") |
gov | The current system's government type (0-7) |
HFX | A flag that toggles the hyperspace colour effect |
INF | Temporary storage, typically used for storing the address of a ship's data block, so it can be copied to and from the internal workspace at INWK |
INWK | The zero-page internal workspace for the current ship data block |
JOPOS | Contains the high byte of the latest value from ADC channel 1 (the joystick X value), which gets updated regularly by the IRQ1 interrupt handler |
JSTE | Reverse both joystick channels configuration setting |
JSTGY | Reverse joystick Y-channel configuration setting |
JSTK | Keyboard or joystick configuration setting |
JSTX | Our current roll rate |
JSTY | Our current pitch rate |
JUNK | The amount of junk in the local bubble |
K | Temporary storage, used in a number of places |
K2 | Temporary storage, used in a number of places |
K3 | Temporary storage, used in a number of places |
K4 | Temporary storage, used in a number of places |
K5 | Temporary storage used to store segment coordinates across successive calls to BLINE, the ball line routine |
K6 | Temporary storage, typically used for storing coordinates during vector calculations |
KL | The following bytes implement a key logger that enables Elite to scan for concurrent key presses of the primary flight keys, plus a secondary flight key |
KY1 | "?" is being pressed (slow down) |
KY12 | TAB is being pressed (energy bomb) |
KY13 | ESCAPE is being pressed (launch escape pod) |
KY14 | "T" is being pressed (target missile) |
KY15 | "U" is being pressed (unarm missile) |
KY16 | "M" is being pressed (fire missile) |
KY17 | "E" is being pressed (activate E.C.M.) |
KY18 | "J" is being pressed (in-system jump) |
KY19 | "C" is being pressed (activate docking computer) |
KY2 | Space is being pressed (speed up) |
KY20 | "P" is being pressed (deactivate docking computer) |
KY3 | "<" is being pressed (roll left) |
KY4 | ">" is being pressed (roll right) |
KY5 | "X" is being pressed (pull up) |
KY6 | "S" is being pressed (pitch down) |
KY7 | "A" is being pressed (fire lasers) |
LAS | Contains the laser power of the laser fitted to the current space view (or 0 if there is no laser fitted to the current view) |
LAS2 | Laser power for the current laser |
LASCT | The laser pulse count for the current laser |
LASER | The specifications of the lasers fitted to each of the four space views: |
LASX | The x-coordinate of the tip of the laser line |
LASY | The y-coordinate of the tip of the laser line |
LATCH (Loader) | The RAM copy of the currently selected paged ROM/RAM in SHEILA &30 |
LSNUM | The pointer to the current position in the ship line heap as we work our way through the new ship's edges (and the corresponding old ship's edges) when drawing the ship in the main ship-drawing routine at LL9 |
LSNUM2 | The size of the existing ship line heap for the ship we are drawing in LL9, i.e. the number of lines in the old ship that is currently shown on-screen and which we need to erase |
LSO | The ship line heap for the space station (see NWSPS) and the sun line heap (see SUN) |
LSP | The ball line heap pointer, which contains the number of the first free byte after the end of the LSX2 and LSY2 heaps (see the deep dive on "The ball line heap" for details) |
LSX | LSX contains the status of the sun line heap at LSO |
LSX2 | The ball line heap for storing x-coordinates (see the deep dive on "The ball line heap" for details) |
LSY2 | The ball line heap for storing y-coordinates (see the deep dive on "The ball line heap" for details) |
MANY | The number of ships of each type in the local bubble of universe |
MCH | The text token number of the in-flight message that is currently being shown, and which will be removed by the me2 routine when the counter in DLY reaches zero |
MCNT | The main loop counter |
messXC | Temporary storage, used to store the text column of the in-flight message in MESS, so it can be erased from the screen at the correct time |
MJ | Are we in witchspace (i.e. have we mis-jumped)? |
MOS | Determines whether we are running on a Master Compact |
MOS (Loader) | Determines whether we are running on a Master Compact |
MSAR | The targeting state of our leftmost missile |
mscol | This byte appears to be unused |
MSTG | The current missile lock target |
NAME | The current commander name |
NEWB | The ship's "new byte flags" (or NEWB flags) |
newzp | This is used by the STARS2 routine for storing the stardust particle's delta_x value |
NMI | Used to store the ID of the current owner of the NMI workspace in the NMICLAIM routine, so we can hand it back to them in the NMIRELEASE routine once we are done using it |
NOMSL | The number of missiles we have fitted (0-4) |
NOSTM | The number of stardust particles shown on screen, which is 20 (#NOST) for normal space, and 3 for witchspace |
P | Temporary storage, used in a number of places |
P (Loader) | Temporary storage, used in a number of places |
PATG | Configuration setting to show the author names on the start-up screen and enable manual hyperspace mis-jumps |
Q | Temporary storage, used in a number of places |
Q (Loader) | Temporary storage, used in a number of places |
QQ0 | The current system's galactic x-coordinate (0-256) |
QQ1 | The current system's galactic y-coordinate (0-256) |
QQ10 | The galactic y-coordinate of the crosshairs in the galaxy chart (and, most of the time, the selected system's galactic y-coordinate) |
QQ11 | The type of the current view: |
QQ12 | Our "docked" status |
QQ14 | Our current fuel level (0-70) |
QQ15 | The three 16-bit seeds for the selected system, i.e. the one in the crosshairs in the Short-range Chart |
QQ17 | Contains a number of flags that affect how text tokens are printed, particularly capitalisation: |
QQ19 | Temporary storage, used in a number of places |
QQ2 | The three 16-bit seeds for the current system, i.e. the one we are currently in |
QQ20 | The contents of our cargo hold |
QQ21 | The three 16-bit seeds for the current galaxy |
QQ22 | The two hyperspace countdown counters |
QQ24 | Temporary storage, used to store the current market item's price in routine TT151 |
QQ25 | Temporary storage, used to store the current market item's availability in routine TT151 |
QQ26 | A random value used to randomise market data |
QQ28 | The current system's economy (0-7) |
QQ29 | Temporary storage, used in a number of places |
QQ3 | The selected system's economy (0-7) |
QQ4 | The selected system's government (0-7) |
QQ5 | The selected system's tech level (0-14) |
QQ6 | The selected system's population in billions * 10 (1-71), so the maximum population is 7.1 billion |
QQ7 | The selected system's productivity in M CR (96-62480) |
QQ8 | The distance from the current system to the selected system in light years * 10, stored as a 16-bit number |
QQ9 | The galactic x-coordinate of the crosshairs in the galaxy chart (and, most of the time, the selected system's galactic x-coordinate) |
R | Temporary storage, used in a number of places |
RAND | Four 8-bit seeds for the random number generation system implemented in the DORND routine |
RAT | Used to store different signs depending on the current space view, for use in calculating stardust movement |
RAT2 | Temporary storage, used to store the pitch and roll signs when moving objects and stardust |
S | Temporary storage, used in a number of places |
safehouse | Backup storage for the seeds for the selected system |
SC | Screen address (low byte) |
SCH | Screen address (high byte) |
SLSP | The address of the bottom of the ship line heap |
SOCNT | Sound buffer for sound effect counters |
SOFLG | Sound buffer for sound effect flags |
SOFRCH | Sound buffer for frequency change values |
SOFRQ | Sound buffer for sound effect frequencies |
SOPR | Sound buffer for sound effect priorities |
SOVCH | Sound buffer for the volume change rate |
SOVOL | Sound buffer for volume levels |
SSPR | "Space station present" flag |
STP | The step size for drawing circles |
SUNX | The 16-bit x-coordinate of the vertical centre axis of the sun (which might be off-screen) |
SVC | The save count |
SWAP | Temporary storage, used to store a flag that records whether or not we had to swap a line's start and end coordinates around when clipping the line in routine LL145 (the flag is used in places like BLINE to swap them back) |
SX | This is where we store the x_hi coordinates for all the stardust particles |
SXL | This is where we store the x_lo coordinates for all the stardust particles |
SY | This is where we store the y_hi coordinates for all the stardust particles |
SYL | This is where we store the y_lo coordinates for all the stardust particles |
SZ | This is where we store the z_hi coordinates for all the stardust particles |
SZL | This is where we store the z_lo coordinates for all the stardust particles |
T | Temporary storage, used in a number of places |
T (Loader) | Temporary storage, used in a number of places |
T1 | Temporary storage, used in a number of places |
T2 | This byte appears to be unused |
T3 | This byte appears to be unused |
T4 | This byte appears to be unused |
TALLY | Our combat rank |
TALLYL | Combat rank fraction |
tek | The current system's tech level (0-14) |
TGT | Temporary storage, typically used as a target value for counters when drawing explosion clouds and partial circles |
TP | The current mission status |
TRIBBLE | The number of Trumbles in the cargo hold |
TYPE | The current ship type |
U | Temporary storage, used in a number of places |
UPO | This byte appears to be unused |
UPTOG | The configuration setting for toggle key "U", which isn't actually used but is still updated by pressing "U" while the game is paused. This is a configuration option from some non-BBC versions of Elite that lets you switch between lower-case and upper-case text |
V | Temporary storage, typically used for storing an address pointer |
VIEW | The number of the current space view |
VOL | The volume level for the game's sound effects (0-7) |
W | Temporary storage, used in a number of places |
widget | Temporary storage, used to store the original argument in A in the logarithmic FMLTU and LL28 routines |
X1 | Temporary storage, typically used for x-coordinates in line-drawing routines |
X2 | Temporary storage, typically used for x-coordinates in line-drawing routines |
XC | The x-coordinate of the text cursor (i.e. the text column), which can be from 0 to 32 |
XP | This byte appears to be unused |
XSAV | Temporary storage for saving the value of the X register, used in a number of places |
XSAV2 | This byte appears to be unused |
XX | Temporary storage, typically used for storing a 16-bit x-coordinate |
XX0 | Temporary storage, used to store the address of a ship blueprint. For example, it is used when we add a new ship to the local bubble in routine NWSHP, and it contains the address of the current ship's blueprint as we loop through all the nearby ships in the main flight loop |
XX1 | This is an alias for INWK that is used in the main ship-drawing routine at LL9 |
XX12 | Temporary storage for a block of values, used in a number of places |
XX13 | Temporary storage, typically used in the line-drawing routines |
XX15 | Temporary storage, typically used for storing screen coordinates in line-drawing routines |
XX16 | Temporary storage for a block of values, used in a number of places |
XX17 | Temporary storage, used in BPRNT to store the number of characters to print, and as the edge counter in the main ship-drawing routine |
XX18 | Temporary storage used to store coordinates in the LL9 ship-drawing routine |
XX19 | XX19(1 0) shares its location with INWK(34 33), which contains the address of the ship line heap |
XX2 | Temporary storage, used to store the visibility of the ship's faces during the ship-drawing routine at LL9 |
XX20 | Temporary storage, used in a number of places |
XX24 | This byte appears to be unused |
XX4 | Temporary storage, used in a number of places |
Y1 | Temporary storage, typically used for y-coordinates in line-drawing routines |
Y2 | Temporary storage, typically used for y-coordinates in line-drawing routines |
YC | The y-coordinate of the text cursor (i.e. the text row), which can be from 0 to 23 |
YP | This byte appears to be unused |
YS | This byte appears to be unused |
YSAV | Temporary storage for saving the value of the Y register, used in a number of places |
YSAV2 | This byte appears to be unused |
Yx2M1 | This is used to store the number of pixel rows in the space view minus 1, which is also the y-coordinate of the bottom pixel row of the space view (it is set to 191 in the RES2 routine) |
YY | Temporary storage, typically used for storing a 16-bit y-coordinate |
YY (Loader) | Temporary storage, used in a number of places |
ZZ | Temporary storage, typically used for distance values |