1 /*
2  * extern.c
3  *
4  * Global data.
5  *
6  */
7 
8 #include "ztypes.h"
9 
10 /* Game header data */
11 
12 zbyte_t h_type = 0;
13 zbyte_t h_config = 0;
14 zword_t h_version = 0;
15 zword_t h_data_size = 0;
16 zword_t h_start_pc = 0;
17 zword_t h_words_offset = 0;
18 zword_t h_objects_offset = 0;
19 zword_t h_globals_offset = 0;
20 zword_t h_restart_size = 0;
21 zword_t h_flags = 0;
22 zword_t h_synonyms_offset = 0;
23 zword_t h_file_size = 0;
24 zword_t h_checksum = 0;
25 zbyte_t h_interpreter = INTERP_MSDOS;
26 zbyte_t h_interpreter_version = 'B'; /* Interpreter version 2 */
27 zword_t h_alternate_alphabet_offset = 0;
28 
29 /* Game version specific data */
30 
31 int story_scaler = 0;
32 int story_shift = 0;
33 int property_mask = 0;
34 int property_size_mask = 0;
35 
36 /* Stack and PC data */
37 
38 zword_t stack[STACK_SIZE];
39 zword_t sp = STACK_SIZE;
40 zword_t fp = STACK_SIZE - 1;
41 zword_t frame_count = 0; /* frame pointer for get_fp */
42 unsigned long pc = 0;
43 int interpreter_state = RUN;
44 int interpreter_status = 0;
45 
46 /* Data region data */
47 
48 unsigned int data_size = 0;
49 zbyte_t *datap = NULL;
50 zbyte_t *undo_datap = NULL;
51 
52 /* Screen size data */
53 
54 int screen_rows = 0;
55 int screen_cols = 0;
56 
57 /* Current window data */
58 
59 int screen_window = TEXT_WINDOW;
60 
61 /* Formatting and output control data */
62 
63 int formatting = ON;
64 int outputting = ON;
65 int redirect_depth = 0; /* 1 or higher means ON */
66 int scripting_disable = OFF;
67 int scripting = OFF;
68 int recording = OFF;
69 int replaying = OFF;
70 int font = 1;
71 
72 /* Status region data */
73 
74 int status_active = OFF;
75 int status_size = 0;
76 
77 /* Text output buffer data */
78 
79 int lines_written = 0;
80 int status_pos = 0;
81 
82 /* Dynamic buffer data */
83 
84 /*char *line = NULL;*/
85 char *status_line = NULL;
86 
87 /* Character translation tables */
88 
89 char lookup_table[3][26];
90