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_SKC,
87
88 };
89
90
91
92
93
94
95
96
97
98
99
100
101
102 struct scu_to_iom_s
103 {
104 bool in_use;
105 uint iom_unit_idx;
106 uint iom_port_num;
107 };
108
109 struct iom_to_scu_s
110 {
111 bool in_use;
112 uint scu_unit_idx;
113 uint scu_port_num;
114 uint scu_subport_num;
115 };
116
117 struct scu_to_cpu_s
118 {
119 bool in_use;
120 uint cpu_unit_idx;
121 uint cpu_port_num;
122 };
123
124 struct cpu_to_scu_s
125 {
126 bool in_use;
127 uint scu_unit_idx;
128 uint scu_port_num;
129 uint scu_subport_num;
130 };
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148 struct iom_to_ctlr_s
149 {
150 bool in_use;
151 uint ctlr_unit_idx;
152 uint port_num;
153 enum ctlr_type_e ctlr_type;
154 enum chan_type_e chan_type;
155 DEVICE * dev;
156 UNIT * board;
157 iom_cmd_t * iom_cmd;
158 };
159
160 struct ctlr_to_iom_s
161 {
162 bool in_use;
163 uint iom_unit_idx;
164 uint chan_num;
165 };
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 struct ctlr_to_dev_s
199 {
200 bool in_use;
201 uint unit_idx;
202 iom_cmd_t * iom_cmd;
203 };
204
205 struct dev_to_ctlr_s
206 {
207 bool in_use;
208 uint ctlr_unit_idx;
209 uint dev_code;
210 enum ctlr_type_e ctlr_type;
211
212 };
213
214 struct cables_s
215 {
216
217
218 struct scu_to_iom_s scu_to_iom [N_SCU_UNITS_MAX] [N_SCU_PORTS];
219 struct iom_to_scu_s iom_to_scu [N_IOM_UNITS_MAX] [N_IOM_PORTS];
220
221 struct scu_to_cpu_s scu_to_cpu [N_SCU_UNITS_MAX] [N_SCU_PORTS] [N_SCU_SUBPORTS];
222 struct cpu_to_scu_s cpu_to_scu [N_CPU_UNITS_MAX] [N_CPU_PORTS];
223
224
225 struct iom_to_ctlr_s iom_to_ctlr [N_IOM_UNITS_MAX] [MAX_CHANNELS];
226
227 struct ctlr_to_iom_s mtp_to_iom [N_MTP_UNITS_MAX] [MAX_CTLR_PORTS];
228
229 struct ctlr_to_iom_s msp_to_iom [N_MSP_UNITS_MAX] [MAX_CTLR_PORTS];
230
231 struct ctlr_to_iom_s ipc_to_iom [N_IPC_UNITS_MAX] [MAX_CTLR_PORTS];
232
233 struct ctlr_to_iom_s urp_to_iom [N_URP_UNITS_MAX] [MAX_CTLR_PORTS];
234
235 struct ctlr_to_iom_s dia_to_iom [N_DIA_UNITS_MAX] [MAX_CTLR_PORTS];
236
237 struct ctlr_to_iom_s fnp_to_iom [N_FNP_UNITS_MAX] [MAX_CTLR_PORTS];
238
239 struct ctlr_to_iom_s absi_to_iom [N_ABSI_UNITS_MAX] [MAX_CTLR_PORTS];
240
241 struct ctlr_to_iom_s opc_to_iom [N_OPC_UNITS_MAX] [MAX_CTLR_PORTS];
242
243 struct ctlr_to_iom_s sk_to_iom [N_SKC_UNITS_MAX] [MAX_CTLR_PORTS];
244
245
246
247 struct ctlr_to_dev_s mtp_to_tape [N_MTP_UNITS_MAX] [N_DEV_CODES];
248 struct dev_to_ctlr_s tape_to_mtp [N_MT_UNITS_MAX];
249
250
251 struct ctlr_to_dev_s ipc_to_dsk [N_IPC_UNITS_MAX] [N_DEV_CODES];
252 struct ctlr_to_dev_s msp_to_dsk [N_MSP_UNITS_MAX] [N_DEV_CODES];
253 struct dev_to_ctlr_s dsk_to_ctlr [N_DSK_UNITS_MAX];
254
255 struct ctlr_to_dev_s urp_to_urd [N_URP_UNITS_MAX] [N_DEV_CODES];
256 struct dev_to_ctlr_s rdr_to_urp [N_RDR_UNITS_MAX];
257 struct dev_to_ctlr_s pun_to_urp [N_PUN_UNITS_MAX];
258 struct dev_to_ctlr_s prt_to_urp [N_PRT_UNITS_MAX];
259 };
260
261 extern struct cables_s * cables;
262
263 t_stat sys_cable (UNUSED int32 arg, const char * buf);
264
265
266
267
268
269 #define get_ctlr_idx(iom_unit_idx, chan) \
270 (cables->iom_to_ctlr[iom_unit_idx][chan].ctlr_unit_idx)
271
272
273
274 #define get_ctlr_in_use(iom_unit_idx, chan) \
275 (cables->iom_to_ctlr[iom_unit_idx][chan].in_use)
276
277
278
279 #define get_scu_idx(cpu_unit_idx, cpu_port_num) \
280 (cables->cpu_to_scu[cpu_unit_idx][cpu_port_num].scu_unit_idx)
281
282
283
284 #define get_scu_in_use(cpu_unit_idx, cpu_port_num) \
285 (cables->cpu_to_scu[cpu_unit_idx][cpu_port_num].in_use)
286
287 t_stat sys_cable (UNUSED int32 arg, const char * buf);
288 t_stat sys_cable_ripout (UNUSED int32 arg, UNUSED const char * buf);
289 t_stat sys_cable_show (UNUSED int32 arg, UNUSED const char * buf);
290 void sysCableInit (void);