1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 extern char * ctlr_type_strs [];
21 extern char * chan_type_strs [];
22
23 typedef enum chanType { chanTypeCPI, chanTypePSI, chanTypeDirect } chanType;
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74 enum chan_type_e { chan_type_CPI, chan_type_PSI, chan_type_direct };
75
76 enum ctlr_type_e
77 {
78 CTLR_T_NONE = 0,
79 CTLR_T_MTP,
80 CTLR_T_MSP,
81 CTLR_T_IPC,
82 CTLR_T_OPC,
83 CTLR_T_URP,
84 CTLR_T_FNP,
85 CTLR_T_ABSI,
86 CTLR_T_MGP,
87 CTLR_T_SKC,
88
89 };
90
91
92
93
94
95
96
97
98
99
100
101
102
103 struct scu_to_iom_s
104 {
105 bool in_use;
106 uint iom_unit_idx;
107 uint iom_port_num;
108 };
109
110 struct iom_to_scu_s
111 {
112 bool in_use;
113 uint scu_unit_idx;
114 uint scu_port_num;
115 uint scu_subport_num;
116 };
117
118 struct scu_to_cpu_s
119 {
120 bool in_use;
121 uint cpu_unit_idx;
122 uint cpu_port_num;
123 };
124
125 struct cpu_to_scu_s
126 {
127 bool in_use;
128 uint scu_unit_idx;
129 uint scu_port_num;
130 uint scu_subport_num;
131 };
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149 struct iom_to_ctlr_s
150 {
151 bool in_use;
152 uint ctlr_unit_idx;
153 uint port_num;
154 enum ctlr_type_e ctlr_type;
155 enum chan_type_e chan_type;
156 DEVICE * dev;
157 UNIT * board;
158 iom_cmd_t * iom_cmd;
159 };
160
161 struct ctlr_to_iom_s
162 {
163 bool in_use;
164 uint iom_unit_idx;
165 uint chan_num;
166 };
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199 struct ctlr_to_dev_s
200 {
201 bool in_use;
202 uint unit_idx;
203 iom_cmd_t * iom_cmd;
204 };
205
206 struct dev_to_ctlr_s
207 {
208 bool in_use;
209 uint ctlr_unit_idx;
210 uint dev_code;
211 enum ctlr_type_e ctlr_type;
212
213 };
214
215 struct cables_s
216 {
217
218
219 struct scu_to_iom_s scu_to_iom [N_SCU_UNITS_MAX] [N_SCU_PORTS];
220 struct iom_to_scu_s iom_to_scu [N_IOM_UNITS_MAX] [N_IOM_PORTS];
221
222 struct scu_to_cpu_s scu_to_cpu [N_SCU_UNITS_MAX] [N_SCU_PORTS] [N_SCU_SUBPORTS];
223 struct cpu_to_scu_s cpu_to_scu [N_CPU_UNITS_MAX] [N_CPU_PORTS];
224
225
226 struct iom_to_ctlr_s iom_to_ctlr [N_IOM_UNITS_MAX] [MAX_CHANNELS];
227
228 struct ctlr_to_iom_s mtp_to_iom [N_MTP_UNITS_MAX] [MAX_CTLR_PORTS];
229
230 struct ctlr_to_iom_s msp_to_iom [N_MSP_UNITS_MAX] [MAX_CTLR_PORTS];
231
232 struct ctlr_to_iom_s ipc_to_iom [N_IPC_UNITS_MAX] [MAX_CTLR_PORTS];
233
234 struct ctlr_to_iom_s urp_to_iom [N_URP_UNITS_MAX] [MAX_CTLR_PORTS];
235
236 struct ctlr_to_iom_s dia_to_iom [N_DIA_UNITS_MAX] [MAX_CTLR_PORTS];
237
238 struct ctlr_to_iom_s fnp_to_iom [N_FNP_UNITS_MAX] [MAX_CTLR_PORTS];
239
240 struct ctlr_to_iom_s absi_to_iom [N_ABSI_UNITS_MAX] [MAX_CTLR_PORTS];
241
242 struct ctlr_to_iom_s mgp_to_iom [N_MGP_UNITS_MAX] [MAX_CTLR_PORTS];
243
244 struct ctlr_to_iom_s opc_to_iom [N_OPC_UNITS_MAX] [MAX_CTLR_PORTS];
245
246 struct ctlr_to_iom_s sk_to_iom [N_SKC_UNITS_MAX] [MAX_CTLR_PORTS];
247
248
249
250 struct ctlr_to_dev_s mtp_to_tape [N_MTP_UNITS_MAX] [N_DEV_CODES];
251 struct dev_to_ctlr_s tape_to_mtp [N_MT_UNITS_MAX];
252
253 struct ctlr_to_dev_s ipc_to_dsk [N_IPC_UNITS_MAX] [N_DEV_CODES];
254
255 struct ctlr_to_dev_s msp_to_dsk [N_MSP_UNITS_MAX] [N_DEV_CODES];
256 struct dev_to_ctlr_s dsk_to_ctlr [N_DSK_UNITS_MAX];
257
258 struct ctlr_to_dev_s urp_to_urd [N_URP_UNITS_MAX] [N_DEV_CODES];
259 struct dev_to_ctlr_s rdr_to_urp [N_RDR_UNITS_MAX];
260 struct dev_to_ctlr_s pun_to_urp [N_PUN_UNITS_MAX];
261 struct dev_to_ctlr_s prt_to_urp [N_PRT_UNITS_MAX];
262 };
263
264 extern struct cables_s * cables;
265
266 t_stat sys_cable (UNUSED int32 arg, const char * buf);
267
268
269
270
271
272 #define get_ctlr_idx(iom_unit_idx, chan) \
273 (cables->iom_to_ctlr[iom_unit_idx][chan].ctlr_unit_idx)
274
275
276
277 #define get_ctlr_in_use(iom_unit_idx, chan) \
278 (cables->iom_to_ctlr[iom_unit_idx][chan].in_use)
279
280
281
282 #define get_scu_idx(cpu_unit_idx, cpu_port_num) \
283 (cables->cpu_to_scu[cpu_unit_idx][cpu_port_num].scu_unit_idx)
284
285
286
287 #define get_scu_in_use(cpu_unit_idx, cpu_port_num) \
288 (cables->cpu_to_scu[cpu_unit_idx][cpu_port_num].in_use)
289
290 t_stat sys_cable (UNUSED int32 arg, const char * buf);
291 t_stat sys_cable_ripout (UNUSED int32 arg, UNUSED const char * buf);
292 t_stat sys_cable_show (UNUSED int32 arg, UNUSED const char * buf);
293 void sysCableInit (void);