0
|
1 typedef unsigned char u_char;
|
|
2
|
|
3 typedef struct os9_module_t {
|
|
4 u_char id[2];
|
|
5 u_char size[2];
|
|
6 u_char name[2];
|
|
7 u_char tyla;
|
|
8 u_char atrv;
|
|
9 u_char parity;
|
|
10 union {
|
|
11 u_char data[1]; /* plain modules */
|
|
12 struct {
|
|
13 u_char exec[2];
|
|
14 u_char data[1];
|
|
15 } system;
|
|
16 struct {
|
|
17 u_char exec[2];
|
|
18 u_char mem[2];
|
|
19 u_char data[1];
|
|
20 } program;
|
|
21 struct {
|
|
22 u_char exec[2];
|
|
23 u_char mem[2];
|
|
24 u_char mode[1];
|
|
25 u_char data[1];
|
|
26 } driver;
|
|
27 struct {
|
|
28 u_char exec[2];
|
|
29 u_char data[1];
|
|
30 } file_mgr;
|
|
31 struct {
|
|
32 u_char fmgr[2];
|
|
33 u_char driver[2];
|
|
34 u_char mode;
|
|
35 u_char port[3];
|
|
36 u_char opt;
|
|
37 u_char dtype;
|
|
38 u_char data[1];
|
|
39 } descriptor;
|
|
40 } data;
|
|
41 } OS9_MODULE_t;
|
|
42
|
|
43 #define OS9_HEADER_SIZE 9
|
|
44
|
|
45 #define TYPE_MASK 0xF0
|
|
46 typedef enum os9_type_t {
|
|
47 NULL_TYPE = 0,
|
|
48 Prgrm,
|
|
49 Sbtrn,
|
|
50 Multi,
|
|
51 Data,
|
|
52 SSbtrn,
|
|
53 TYPE_6,
|
|
54 TYPE_7,
|
|
55 TYPE_8,
|
|
56 TYPE_9,
|
|
57 TYPE_A,
|
|
58 TYPE_B,
|
|
59 Systm,
|
|
60 FlMgr,
|
|
61 Drivr,
|
|
62 Devic
|
|
63 } OS9_TYPE_t;
|
|
64
|
|
65 #define LANG_MASK 0x0F
|
|
66 typedef enum os9_lang_t {
|
|
67 NULL_LANG = 0,
|
|
68 Objct,
|
|
69 ICode,
|
|
70 PCode,
|
|
71 CCode,
|
|
72 CblCode,
|
|
73 FrtnCode,
|
|
74 Obj6309,
|
|
75 } OS9_LANG_t;
|
|
76
|
|
77 #define ATTR_MASK 0xF0
|
|
78 typedef enum os9_attr_t {
|
|
79 ReEnt = 0x80,
|
|
80 Modprot = 0x40,
|
|
81 } OS9_attr_t;
|
|
82
|
|
83 #define REVS_MASK 0x0F
|
|
84
|
|
85 #define OS9_ID0 0x87
|
|
86 #define OS9_ID1 0xcd
|
|
87
|
|
88 #define OS9_CRC0 0x80
|
|
89 #define OS9_CRC1 0x0F
|
|
90 #define OS9_CRC2 0xE3
|
|
91
|
|
92 #define INT(foo) (foo[0] * 256 + foo[1])
|
|
93 int os9_crc(OS9_MODULE_t *mod);
|
|
94 int os9_header(OS9_MODULE_t *mod);
|