// **********************************
// Interpreter variables, flags, etc.
// **********************************

// vars
#define room_no                  v0
#define prev_room_no             v1
#define ego_edge_code            v2
#define score                    v3
#define object_touching_edge     v4
#define object_edge_code         v5
#define ego_dir                  v6
#define max_score                v7
#define free_memory              v8
#define unknown_word_no          v9
#define cycle_delay              v10
#define clock_seconds            v11
#define clock_minutes            v12
#define clock_hours              v13
#define clock_days               v14
#define joystick_sensitivity     v15
#define ego_view_no              v16
#define error_code               v17
#define error_information        v18
#define key_pressed              v19
#define computer_type            v20
#define window_close_time        v21
#define sound_type               v22
#define sound_volume             v23
// not sure what v24 is
#define selected_inventory_item  v25
#define video_mode               v26

// flags
#define ego_on_water             f0
#define ego_hidden               f1
#define input_recieved           f2
#define ego_touching_signal_line f3
#define input_parsed             f4
#define new_room                 f5
#define game_restarted           f6
#define script_buffer_blocked    f7
#define joystick_sensitivity_set f8
#define sound_on                 f9
#define trace_enabled            f10
#define first_logic0_cycle       f11
#define game_restored            f12
#define inventory_select_enabled f13
#define menu_enabled             f14
#define windows_remain           f15

// strings
#define prompt_char              s0

// edge codes
#define no_edge                  0
#define horizon_edge             1
#define right_edge               2
#define bottom_edge              3
#define left_edge                4

// directions
#define stopped                  0
#define up                       1
#define upright                  2
#define right                    3
#define downright                4
#define down                     5
#define downleft                 6
#define left                     7
#define upleft                   8

// video modes
#define CGA                      0
#define RGB                      1
#define Hercules                 2
#define EGA                      3
#define VGA                      4


// ***********
// Controllers
// ***********

#define left_key c2
#define right_key c3
#define drop_key c4
#define rotate_c_key c5
#define rotate_ac_key c6
#define pause_key c7
#define new_game_key c8
#define quit_key c9

#define ego o0


#define x v230
#define y v231
#define old_x v232
#define old_y v233
#define cycles_till_next_fall v234
#define piece_type v235
#define check_x v236
#define check_y v237
#define piece_rotation v238
#define piece_colour v239
#define next_piece v240
#define next_colour v241
#define next_rotation v242
#define score_1 v243
#define score_2 v244
#define fall_delay v245

#define start_fall_delay 8

#define block_move_ok f120
#define rotate_clockwise f121
#define drop_pressed f122
#define game_paused f123
#define game_over f124