GE-115 Emulator
An Emulator of the General Electrics GE-115 computer
msl-timings.c
Go to the documentation of this file.
1#include "msl-timings.h"
2#include "msl-comments.h"
3
4#define MSL_STATES_INCLUDED_BY_MSL_TIMINGS
5#include "msl-states.c"
6#undef MSL_STATES_INCLUDED_BY_MSL_TIMINGS
7
8
10 /* 00 */ {state_00},
11 /* 01 */ { },
12 /* 02 */ {state_02}, /* channel-2 OUTPUT data transfer (printer) */
13 /* 03 */ {state_02}, /* 02|03 share the chart per the flow sheet */
14 /* 04 */ { },
15 /* 05 */ { },
16 /* 06 */ { },
17 /* 07 */ { },
18 /* 08 */ {state_08},
19 /* 09 */ { },
20 /* 0a */ { },
21 /* 0b */ { },
22 /* 0c */ {state_0c}, /* channel-2 INPUT data transfer (integrated reader) */
23 /* 0d */ { },
24 /* 0e */ {state_0c}, /* 0c|0e share the chart per the flow sheet */
25 /* 0f */ { },
26 /* 10 */ { },
27 /* 11 */ { },
28 /* 12 */ { },
29 /* 13 */ { },
30 /* 14 */ { },
31 /* 15 */ { },
32 /* 16 */ { },
33 /* 17 */ { },
34 /* 18 */ { },
35 /* 19 */ { },
36 /* 1a */ { },
37 /* 1b */ { },
38 /* 1c */ { },
39 /* 1d */ { },
40 /* 1e */ { },
41 /* 1f */ { },
42 /* 20 */ { },
43 /* 21 */ { },
44 /* 22 */ { },
45 /* 23 */ { },
46 /* 24 */ { },
47 /* 25 */ { },
48 /* 26 */ { },
49 /* 27 */ { },
50 /* 28 */ { },
51 /* 29 */ { },
52 /* 2a */ { },
53 /* 2b */ { },
54 /* 2c */ { },
55 /* 2d */ { },
56 /* 2e */ { },
57 /* 2f */ { },
58 /* 30 */ { },
59 /* 31 */ { },
60 /* 32 */ { },
61 /* 33 */ { },
62 /* 34 */ { },
63 /* 35 */ { },
64 /* 36 */ { },
65 /* 37 */ { },
66 /* 38 */ { },
67 /* 39 */ { },
68 /* 3a */ { },
69 /* 3b */ { },
70 /* 3c */ { },
71 /* 3d */ { },
72 /* 3e */ { },
73 /* 3f */ { },
74 /* 40 */ { },
75 /* 41 */ { },
76 /* 42 */ { },
77 /* 43 */ { },
78 /* 44 */ { },
79 /* 45 */ { },
80 /* 46 */ { },
81 /* 47 */ { },
82 /* 48 */ { },
83 /* 49 */ { },
84 /* 4a */ { },
85 /* 4b */ { },
86 /* 4c */ { },
87 /* 4d */ { },
88 /* 4e */ { },
89 /* 4f */ { },
90 /* 50 */ { },
91 /* 51 */ { },
92 /* 52 */ { },
93 /* 53 */ { },
94 /* 54 */ { },
95 /* 55 */ { },
96 /* 56 */ { },
97 /* 57 */ { },
98 /* 58 */ { },
99 /* 59 */ { },
100 /* 5a */ { },
101 /* 5b */ { },
102 /* 5c */ { },
103 /* 5d */ { },
104 /* 5e */ { },
105 /* 5f */ { },
106 /* 60 */ { },
107 /* 61 */ { },
108 /* 62 */ { },
109 /* 63 */ { },
110 /* 64 */ {state_64_65},
111 /* 65 */ {state_64_65},
112 /* 66 */ {state_64_65}, /* CMI (compare-logical-immediate) beta; same chart */
113 /* 67 */ { },
114 /* 68 */ { },
115 /* 69 */ { },
116 /* 6a */ { },
117 /* 6b */ { },
118 /* 6c */ { },
119 /* 6d */ { },
120 /* 6e */ { },
121 /* 6f */ { },
122 /* 70 */ { },
123 /* 71 */ { },
124 /* 72 */ { },
125 /* 73 */ { },
126 /* 74 */ { },
127 /* 75 */ { },
128 /* 76 */ { },
129 /* 77 */ { },
130 /* 78 */ { },
131 /* 79 */ { },
132 /* 7a */ { },
133 /* 7b */ { },
134 /* 7c */ { },
135 /* 7d */ { },
136 /* 7e */ { },
137 /* 7f */ { },
138 /* 80 */ {state_80},
139 /* 81 */ { },
140 /* 82 */ { },
141 /* 83 */ { },
142 /* 84 */ { },
143 /* 85 */ { },
144 /* 86 */ { },
145 /* 87 */ { },
146 /* 88 */ { },
147 /* 89 */ { },
148 /* 8a */ { },
149 /* 8b */ { },
150 /* 8c */ { },
151 /* 8d */ { },
152 /* 8e */ { },
153 /* 8f */ { },
154 /* 90 */ { },
155 /* 91 */ { },
156 /* 92 */ { },
157 /* 93 */ { },
158 /* 94 */ { },
159 /* 95 */ { },
160 /* 96 */ { },
161 /* 97 */ { },
162 /* 98 */ { },
163 /* 99 */ { },
164 /* 9a */ { },
165 /* 9b */ { },
166 /* 9c */ { },
167 /* 9d */ { },
168 /* 9e */ { },
169 /* 9f */ { },
170 /* a0 */ { },
171 /* a1 */ { },
172 /* a2 */ { },
173 /* a3 */ { },
174 /* a4 */ { },
175 /* a5 */ { },
176 /* a6 */ { },
177 /* a7 */ { },
178 /* a8 */ {state_a8},
179 /* a9 */ {state_a9},
180 /* aa */ {state_aa},
181 /* ab */ {state_ab},
182 /* ac */ { },
183 /* ad */ { },
184 /* ae */ { },
185 /* af */ { },
186 /* b0 */ { },
187 /* b1 */ {state_b1},
188 /* b2 */ { },
189 /* b3 */ { },
190 /* b4 */ { },
191 /* b5 */ { },
192 /* b6 */ { },
193 /* b7 */ { },
194 /* b8 */ {state_b8},
195 /* b9 */ {state_b9},
196 /* ba */ { },
197 /* bb */ { },
198 /* bc */ { },
199 /* bd */ { },
200 /* be */ { },
201 /* bf */ { },
202 /* c0 */ {state_C0}, /* LPSR: load PO high (interrupt restore) */
203 /* c1 */ {state_C1}, /* LPSR: load PO low -> alpha */
204 /* c2 */ {state_C2}, /* LPSR: load status byte (from D1 interrupt)*/
205 /* c3 */ {state_C3}, /* LPSR: skip the zero byte */
206 /* c4 */ { },
207 /* c5 */ { },
208 /* c6 */ { },
209 /* c7 */ { },
210 /* c8 */ {state_c8},
211 /* c9 */ { },
212 /* ca */ {state_ca},
213 /* cb */ { },
214 /* cc */ {state_cc},
215 /* cd */ { },
216 /* ce */ { },
217 /* cf */ { },
218 /* d0 */ {state_D0}, /* interrupt save: PO high */
219 /* d1 */ {state_D1}, /* interrupt save: PO low */
220 /* d2 */ {state_D2}, /* interrupt save: status */
221 /* d3 */ {state_D3}, /* interrupt save: zero byte*/
222 /* d4 */ { },
223 /* d5 */ { },
224 /* d6 */ { },
225 /* d7 */ { },
226 /* d8 */ {state_d8},
227 /* d9 */ {state_d9},
228 /* da */ {state_da},
229 /* db */ {state_db},
230 /* dc */ {state_dc},
231 /* dd */ { },
232 /* de */ { },
233 /* df */ { },
234 /* e0 */ {state_E0},
235 /* e1 */ { },
236 /* e2 */ {state_E2_E3},
237 /* e3 */ {state_E2_E3},
238 /* e4 */ {state_E4},
239 /* e5 */ {state_E5},
240 /* e6 */ {state_E6},
241 /* e7 */ {state_E7},
242 /* e8 */ { },
243 /* e9 */ { },
244 /* ea */ {state_ea},
245 /* eb */ {state_eb},
246 /* ec */ {state_ED_EC}, /* modified-address indexing: EA = chgreg[N]+disp */
247 /* ed */ {state_ED_EC},
248 /* ee */ {state_EF_EE}, /* indexing done: route to op2 / SS exec / beta */
249 /* ef */ {state_EF_EE},
250 /* f0 */ {state_F0}, /* interruption entry (from alpha INTE) */
251 /* f1 */ { },
252 /* f2 */ { },
253 /* f3 */ { },
254 /* f4 */ { },
255 /* f5 */ { },
256 /* f6 */ { },
257 /* f7 */ { },
258 /* f8 */ { },
259 /* f9 */ { },
260 /* fa */ { },
261 /* fb */ { },
262 /* fc */ { },
263 /* fd */ { },
264 /* fe */ { },
265};
266
271
273#define X(command , comment) { command , #command " - " comment },
275#undef X
276};
277
279 for (int i = 0; i < sizeof(comments)/sizeof(struct msl_command_comment); i++) {
280 if (comments[i].command == command) {
281 return comments[i].comment;
282 }
283 }
284 return "[no comment]";
285}
#define ENUMERATE_COMMANDS_COMMENTS
Definition msl-comments.h:1
static const struct msl_timing_chart state_E7[]
Definition msl-states.c:295
static const struct msl_timing_chart state_cc[]
Definition msl-states.c:793
static const struct msl_timing_chart state_db[]
Definition msl-states.c:715
static const struct msl_timing_chart state_80[]
Definition msl-states.c:77
static const struct msl_timing_chart state_d8[]
Definition msl-states.c:674
static const struct msl_timing_chart state_D3[]
Definition msl-states.c:383
static const struct msl_timing_chart state_E2_E3[]
Definition msl-states.c:117
static const struct msl_timing_chart state_C2[]
Definition msl-states.c:386
static const struct msl_timing_chart state_ea[]
static const struct msl_timing_chart state_E6[]
Definition msl-states.c:240
static const struct msl_timing_chart state_0c[]
Definition msl-states.c:843
static const struct msl_timing_chart state_D2[]
Definition msl-states.c:382
static const struct msl_timing_chart state_EF_EE[]
Definition msl-states.c:363
static const struct msl_timing_chart state_D0[]
Definition msl-states.c:384
static const struct msl_timing_chart state_C3[]
Definition msl-states.c:387
static const struct msl_timing_chart state_c8[]
Definition msl-states.c:651
static const struct msl_timing_chart state_02[]
Definition msl-states.c:824
static const struct msl_timing_chart state_ca[]
Definition msl-states.c:862
static const struct msl_timing_chart state_F0[]
Definition msl-states.c:381
static const struct msl_timing_chart state_08[]
Definition msl-states.c:578
static const struct msl_timing_chart state_da[]
Definition msl-states.c:704
static const struct msl_timing_chart state_aa[]
Definition msl-states.c:906
static const struct msl_timing_chart state_E5[]
Definition msl-states.c:269
static const struct msl_timing_chart state_E0[]
Definition msl-states.c:149
static const struct msl_timing_chart state_d9[]
Definition msl-states.c:691
static const struct msl_timing_chart state_ab[]
Definition msl-states.c:931
static const struct msl_timing_chart state_ED_EC[]
Definition msl-states.c:357
static const struct msl_timing_chart state_C0[]
Definition msl-states.c:388
static const struct msl_timing_chart state_a9[]
Definition msl-states.c:887
static const struct msl_timing_chart state_C1[]
Definition msl-states.c:389
static const struct msl_timing_chart state_E4[]
Definition msl-states.c:213
static const struct msl_timing_chart state_64_65[]
Definition msl-states.c:495
static const struct msl_timing_chart state_00[]
Definition msl-states.c:548
static const struct msl_timing_chart state_b8[]
Definition msl-states.c:970
static const struct msl_timing_chart state_D1[]
Definition msl-states.c:385
static const struct msl_timing_chart state_a8[]
Definition msl-states.c:874
static const struct msl_timing_chart state_b9[]
static const struct msl_timing_chart state_dc[]
Definition msl-states.c:743
static const struct msl_timing_chart state_b1[]
Definition msl-states.c:989
static const struct msl_timing_chart state_eb[]
const char * msl_comment_for_command(msl_command_cb command)
struct msl_timing_state msl_timings[0xff]
Timing chart definitions.
Definition msl-timings.c:9
struct msl_command_comment comments[]
void(* msl_command_cb)(struct ge *)
Definition msl-timings.h:6
msl_command_cb command
const char * comment
Timing chart.
Definition msl-timings.h:52