2 * header.h -- part of ZilUtils/ZilAsm
4 * Copyright (C) 2016 Jason Self <j@jxself.org>
6 * This program is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU Affero General Public License as
8 * published by the Free Software Foundation, either version 3 of the
9 * License, or (at your option) any later version.
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU Affero General Public License for more details.
16 * You should have received a copy of the GNU Affero General Public License
17 * along with this program. If not, see <http://www.gnu.org/licenses/>
19 * SPDX-License-Identifier: AGPL-3.0-or-later
23 #define ZILASM_HEADER 1
27 typedef unsigned long Byte_address;
28 typedef unsigned long Word_address;
29 typedef unsigned long Packed_address;
30 typedef unsigned long Offset8;
31 typedef unsigned int Word;
32 typedef signed char Byte;
36 unsigned version; // 1..6
37 // [$01] V1..V3: Flags1
38 Bool statusline_type; // bit1: 0=score/turns, 1=hh:mm
39 Bool split_two_discs; // bit2
40 Bool statusline_notavail; // bit4
41 Bool screensplit_avail; // bit5
42 Bool varpitchfont_default; // bit6
44 Bool colors_avail; // v5: bit0
45 Bool pics_avail; // v6: bit1
46 Bool bold_avail; // v4: bit2
47 Bool italic_avail; // v4: bit3
48 Bool fixedspace_avail; // v4: bit4
49 Bool sound_avail; // v6: bit5
50 Bool timedkeyb_avail; // v4: bit7
52 Byte_address highmem_base; // [$04]
53 Byte_address start_pc; // [$06], v1
54 Packed_address start_routine; // [$06], v6
55 Byte_address dictionary; // [$08]
56 Byte_address objects; // [$0A]
57 Byte_address globals; // [$0C]
58 Byte_address static_base; // [$0E]
60 Bool transcript_on; // v1: bit0
61 Bool print_fixedfont; // v3: bit1
62 Bool request_redraw; // v6: bit2
63 Bool want_pics; // v5: bit3
64 Bool want_undo; // v5: bit4
65 Bool want_mouse; // v5: bit5
66 Bool want_colors; // v5: bit6
67 Bool want_sound; // v5: bit7
68 Bool want_menus; // v5: bit8
70 Byte_address abbrevs; // [$18], v2
71 Word file_length; // [$1A], v3
72 Word checksum; // [$1C], v3
73 Byte interpreter_number; // [$1E], v4
74 Byte interpreter_version; // [$1F], v4
76 Byte screen_lines; // [$20], v4 ($FF = infinite)
77 Byte screen_chars; // [$21], v4
78 Word screen_width; // [$22], v5
79 Word screen_height; // [$24], v5
80 Byte font_width; // [$26], v5/v6
81 Byte font_height; // [$27], v5/v6
83 Offset8 routines; // [$28], v6
84 Offset8 strings; // [$2A], v6
85 Byte backcolor; // [$2C], v5
86 Byte forecolor; // [$2D], v5
87 Byte_address term_chartable; // [$2E], v5
88 Word width3; // [$30], v6
89 Word revnumber; // [$32], v1
90 Byte_address alphabet; // [$34], v5
91 Byte_address header_ext; // [$36], v5
92 } Program_header_struct;
94 extern Program_header_struct Program_header;
96 void program_header_reset(unsigned zversion);
97 ZMemblock *program_header_build(void);
99 #endif /* ifndef ZILASM_HEADER */