ldc: Small fixes (includes, less warnings etc.)
[h316.git] / pc-tools / ldc / hw_types.h
1 #include <stdio.h>
2 #include <string.h>
3 #include <stdlib.h>
4
5 #ifndef HW_TYPES_H
6 #define HW_TYPES_H
7 // #pragma pack(1)
8
9 struct hw16_bits {
10 unsigned int b9:1 __attribute__ ((packed));
11 unsigned int b10:1 __attribute__ ((packed));
12 unsigned int b11:1 __attribute__ ((packed));
13 unsigned int b12:1 __attribute__ ((packed));
14 unsigned int b13:1 __attribute__ ((packed));
15 unsigned int b14:1 __attribute__ ((packed));
16 unsigned int b15:1 __attribute__ ((packed));
17 unsigned int b16:1 __attribute__ ((packed));
18 unsigned int b1:1 __attribute__ ((packed));
19 unsigned int b2:1 __attribute__ ((packed));
20 unsigned int b3:1 __attribute__ ((packed));
21 unsigned int b4:1 __attribute__ ((packed));
22 unsigned int b5:1 __attribute__ ((packed));
23 unsigned int b6:1 __attribute__ ((packed));
24 unsigned int b7:1 __attribute__ ((packed));
25 unsigned int b8:1 __attribute__ ((packed));
26 } __attribute__ ((packed));
27
28 struct hw16_tape {
29 unsigned int low:6 __attribute__ ((packed));
30 unsigned int mid:6 __attribute__ ((packed));
31 unsigned int high:4 __attribute__ ((packed));
32 };
33
34 struct hw16_bytes {
35 unsigned char low;
36 unsigned char high;
37 } __attribute__((packed)) w;
38
39 struct hw16_otype {
40 unsigned int space1:6 __attribute__ ((packed));
41 unsigned int t0_subtype:6 __attribute__ ((packed));
42 unsigned int type:4 __attribute__ ((packed));
43 };
44
45 typedef struct {
46 unsigned int space3:6 __attribute__ ((packed)) __attribute__ ((packed)); //Erster Block
47 unsigned int S:6 __attribute__ ((packed));
48 unsigned int T:4 __attribute__ ((packed));
49 unsigned int space1:8 __attribute__ ((packed)); // Zweiter Block
50 unsigned int N:6 __attribute__ ((packed));
51 unsigned int space2:2 __attribute__ ((packed));
52 } head0;
53 typedef head0 head0_0;
54
55 typedef struct {
56 unsigned int space3:6 __attribute__ ((packed)); //Erster Block
57 unsigned int S:6 __attribute__ ((packed));
58 unsigned int T:4 __attribute__ ((packed));
59 } head0_23;
60 typedef head0_23 head0_2;
61 typedef head0_23 head0_3;
62
63
64 typedef struct {
65 unsigned int A1:6 __attribute__ ((packed));
66 unsigned int N:6 __attribute__ ((packed));
67 unsigned int T:4 __attribute__ ((packed));
68 unsigned int I:8 __attribute__ ((packed));
69 unsigned int A2:8 __attribute__ ((packed));
70 } head12;
71 typedef head12 head1;
72 typedef head12 head2;
73
74 typedef struct {
75 unsigned int A1:6 __attribute__ ((packed));
76 unsigned int space1:6 __attribute__ ((packed));
77 unsigned int T:4 __attribute__ ((packed));
78 unsigned int space2:8 __attribute__ ((packed));
79 unsigned int A2:8 __attribute__ ((packed));
80 } head34;
81 typedef head34 head3;
82 typedef head34 head4;
83
84 typedef struct {
85 unsigned int A:6 __attribute__ ((packed));
86 unsigned int OP:4 __attribute__ ((packed));
87 unsigned int T2:1 __attribute__ ((packed));
88 unsigned int F:1 __attribute__ ((packed));
89 unsigned int T:4 __attribute__ ((packed));
90 } head57;
91 typedef head57 head5;
92 typedef head57 head7;
93
94 typedef struct {
95 unsigned int A1:6 __attribute__ ((packed));
96 unsigned int space1:6 __attribute__ ((packed));
97 unsigned int T:4 __attribute__ ((packed));
98 unsigned int B:8 __attribute__ ((packed));
99 unsigned int A2:8 __attribute__ ((packed));
100 } head6;
101
102
103 typedef union{
104 unsigned int value __attribute__ ((packed));
105
106 struct {
107 unsigned int type:3; //Immer 0
108 unsigned int space:5;
109 unsigned int data:16;
110 } generic;
111
112 struct{
113 unsigned int one:1;
114 unsigned int R:2;
115 unsigned int ADDRESS:15;
116 unsigned int OP:4;
117 unsigned int T:1;
118 unsigned int F:1;
119 }op_known_address;
120
121 struct{
122 unsigned int two:3;
123 unsigned int SYMBOL_NUMBER:14;
124 unsigned int zero:1;
125 unsigned int OP:4;
126 unsigned int T:1;
127 unsigned int F:1;
128 }op_symbolic_address;
129
130 struct {
131 unsigned int four:3;
132 unsigned int ADDRESS:16;
133 unsigned int R:2;
134 unsigned int space:1;
135 unsigned int T:1;
136 unsigned int F:1;
137 } known_address;
138
139 struct {
140 unsigned int six:3;
141 unsigned int SYMBOL_NUMBER:14;
142 unsigned int space:5;
143 unsigned int T:1;
144 unsigned int F:1;
145 } symbolic_address;
146
147 }type_0_4_data;
148
149
150
151 typedef union {
152 struct hw16_bits bits;
153 struct hw16_bytes bytes;
154 struct hw16_tape tape;
155 struct hw16_otype blocktype;
156 unsigned short value;
157 } __attribute__ ((packed)) hw16;
158
159 enum {BT_DATA,BT_STOP};
160
161 typedef struct {
162 int size;
163 int type;
164 hw16 *data;
165 unsigned char * raw_data;
166 } datablock;
167
168
169 #endif