-
Notifications
You must be signed in to change notification settings - Fork 1
/
tr_dos.dogma
43 lines (36 loc) · 1.35 KB
/
tr_dos.dogma
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
dogma_v1 utf-8
- identifier = trdos_filedesc
- description = TR-DOS file descriptor
- dogma = https://github.com/kstenerud/dogma/blob/master/v1/dogma_v1.md
file_descriptor = filename
& var(ext, extension)
& [
ext.type = 'B': format_basic;
ext.type = 'C': format_code;
ext.type = 'D': format_data;
ext.type = '#': format_print;
: format_generic;
]
& file_sectors
& start_sector
& start_track
;
filename = sized(8*8, uint(8,~)+ & uint(8,' ')*);
extension = var(type, uint(8, ~));
file_sectors = uint(8, ~);
start_sector = uint(8, ~);
start_track = uint(8, ~);
format_basic = program_length & variables_offset;
program_length = uint(16,~);
variables_offset = uint(16,~);
format_code = load_addres & code_length;
load_address = uint(16,~);
code_length = uint(16,~);
format_data = data_type & array_length;
data_type = uint(16,~);
array_length = uint(16,~);
format_print = extent_no & uint(8, 0x20) & print_length;
extent_no = uint(8, ~);
print_length = uint(16, 0~4096);
format_generic = uint(16,~) & generic_length;
generic_length = uint(16,~);