Subversion Repositories planix.SVN

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 - 1
unsigned long na_script[] = {
2
			/*	extern	scsi_id_buf */
3
			/*	extern	msg_out_buf */
4
			/*	extern	cmd_buf */
5
			/*	extern	data_buf */
6
			/*	extern	status_buf */
7
			/*	extern	msgin_buf */
8
			/*	extern	dsa_0 */
9
			/*	extern  dsa_1 */
10
			/*	extern	dsa_head */
11
			/*	extern	ssid_mask */
12
			/*	SIR_MSG_IO_COMPLETE = 0 */
13
			/*	error_not_cmd_complete = 1 */
14
			/*	error_disconnected = 2 */
15
			/*	error_reselected = 3 */
16
			/*	error_unexpected_phase = 4 */
17
			/*	error_weird_message = 5 */
18
			/*	SIR_ERROR_NOT_MSG_IN_AFTER_RESELECT = 6 */
19
			/*	error_not_identify_after_reselect = 7 */
20
			/*	error_too_much_data = 8 */
21
			/*	error_too_little_data = 9 */
22
			/*	SIR_MSG_REJECT = 10 */
23
			/*	SIR_MSG_SDTR = 11 */
24
			/*	SIR_EV_RESPONSE_OK = 12 */
25
			/*	error_sigp_set = 13 */
26
			/*	SIR_EV_PHASE_SWITCH_AFTER_ID = 14 */
27
			/*	SIR_MSG_WDTR = 15 */
28
			/*	SIR_MSG_IGNORE_WIDE_RESIDUE = 16 */
29
			/*	SIR_NOTIFY_DISC = 100 */
30
			/*	SIR_NOTIFY_RESELECT = 101 */
31
			/*	SIR_NOTIFY_MSG_IN = 102 */
32
			/*	SIR_NOTIFY_STATUS = 103 */
33
			/*	SIR_NOTIFY_DUMP = 104 */
34
			/*	SIR_NOTIFY_DUMP2 = 105 */
35
			/*	SIR_NOTIFY_SIGP = 106 */
36
			/*	SIR_NOTIFY_ISSUE = 107 */
37
			/*	SIR_NOTIFY_WAIT_RESELECT = 108 */
38
			/*	SIR_NOTIFY_ISSUE_CHECK = 109 */
39
			/*	SIR_NOTIFY_DUMP_NEXT_CODE = 110 */
40
			/*	SIR_NOTIFY_COMMAND = 111 */
41
			/*	SIR_NOTIFY_DATA_IN = 112 */
42
			/*	SIR_NOTIFY_DATA_OUT = 113 */
43
			/*	SIR_NOTIFY_BLOCK_DATA_IN = 114 */
44
			/*	SIR_NOTIFY_WSR = 115 */
45
			/*	SIR_NOTIFY_LOAD_SYNC = 116 */
46
			/*	SIR_NOTIFY_RESELECTED_ON_SELECT = 117 */
47
			/*	SIR_NOTIFY_LOAD_STATE = 118 */
48
			/*	STATE_FREE = 0 */
49
			/*	STATE_ALLOCATED = 1 */
50
			/*	STATE_ISSUE = 2 */
51
			/*	STATE_DISCONNECTED = 3 */
52
			/*	STATE_DONE = 4 */
53
			/*	STATE_END = 5 */
54
			/*	RESULT_OK = 0 */
55
			/*	MSG_IDENTIFY = 0x80 */
56
			/*	MSG_DISCONNECT = 0x04 */
57
			/*	MSG_SAVE_DATA_POINTER = 0x02 */
58
			/*	MSG_RESTORE_POINTERS = 0x03 */
59
			/*	MSG_IGNORE_WIDE_RESIDUE = 0x23 */
60
			/*	X_MSG = 0x01 */
61
			/*	X_MSG_SDTR = 0x01 */
62
			/*	X_MSG_WDTR = 0x03 */
63
			/*	MSG_REJECT = 0x07 */
64
			/*	BSIZE = 512 */
65
/* 0000 */ 0x80880000L, /*		jump	wait_for_reselection */
66
/* 0004 */ 0x00000514L,
67
/* 0008 */ 0x88880000L, /*		call	load_sync */
68
/* 000c */ 0x00000790L,
69
/* 0010 */ 0x60000200L, /*		clear	target */
70
/* 0014 */ 0x00000000L,
71
/* 0018 */ 0x47000000L, /*		select	atn from scsi_id_buf, reselected_on_select */
72
/* 001c */ 0x000004ecL,
73
/* 0020 */ 0x878b0000L, /*		jump	start1, when msg_in */
74
/* 0024 */ 0x00000000L,
75
/* 0028 */ 0x1e000000L, /*		move	from msg_out_buf, when msg_out */
76
/* 002c */ 0x00000001L,
77
/* 0030 */ 0x868b0000L, /*		jump	start1, when msg_out */
78
/* 0034 */ 0x00fffff0L,
79
/* 0038 */ 0x82830000L, /*		jump	to_decisions, when not cmd */
80
/* 003c */ 0x000005b8L,
81
/* 0040 */ 0x60000008L, /*		clear	atn */
82
/* 0044 */ 0x00000000L,
83
/* 0048 */ 0x1a000000L, /*		move	from cmd_buf, when cmd */
84
/* 004c */ 0x00000002L,
85
/* 0050 */ 0x81830000L, /*		jump	to_decisions, when not data_in */
86
/* 0054 */ 0x000005a0L,
87
/* 0058 */ 0xc0000004L, /*		move	memory 4, state, scratcha */
88
/* 005c */ 0x00000640L,
89
/* 0060 */ 0x00000034L,
90
/* 0064 */ 0xc0000004L, /*		move	memory 4, dmaaddr, scratchb */
91
/* 0068 */ 0x00000644L,
92
/* 006c */ 0x0000005cL,
93
/* 0070 */ 0x72360000L, /*		move	scratcha2 to sfbr */
94
/* 0074 */ 0x00000000L,
95
/* 0078 */ 0x808c0000L, /*		jump	data_in_normal, if 0 */
96
/* 007c */ 0x00000078L,
97
/* 0080 */ 0x29000200L, /*		move	BSIZE, ptr dmaaddr, when data_in */
98
/* 0084 */ 0x00000644L,
99
/* 0088 */ 0x7e5d0200L, /*		move	scratchb1 + BSIZE / 256 to scratchb1 */
100
/* 008c */ 0x00000000L,
101
/* 0090 */ 0x7f5e0000L, /*		move	scratchb2 + 0 to scratchb2 with carry */
102
/* 0094 */ 0x00000000L,
103
/* 0098 */ 0x7f5f0000L, /*		move	scratchb3 + 0 to scratchb3 with carry */
104
/* 009c */ 0x00000000L,
105
/* 00a0 */ 0x7e36ff00L, /*		move	scratcha2 + 255 to scratcha2 */
106
/* 00a4 */ 0x00000000L,
107
/* 00a8 */ 0xc0000004L, /*		move	memory 4, scratchb, dmaaddr */
108
/* 00ac */ 0x0000005cL,
109
/* 00b0 */ 0x00000644L,
110
/* 00b4 */ 0x818b0000L, /*		jump	data_in_block_loop, when data_in */
111
/* 00b8 */ 0x00ffffb4L,
112
/* 00bc */ 0xc0000004L, /*		move	memory 4, scratcha, state */
113
/* 00c0 */ 0x00000034L,
114
/* 00c4 */ 0x00000640L,
115
/* 00c8 */ 0x88880000L, /*		call	save_state */
116
/* 00cc */ 0x0000065cL,
117
/* 00d0 */ 0x80880000L, /*		jump	to_decisions */
118
/* 00d4 */ 0x00000520L,
119
/* 00d8 */ 0xc0000004L, /*		move	memory 4, scratchb, dmaaddr */
120
/* 00dc */ 0x0000005cL,
121
/* 00e0 */ 0x00000644L,
122
/* 00e4 */ 0xc0000004L, /*		move	memory 4, scratcha, state */
123
/* 00e8 */ 0x00000034L,
124
/* 00ec */ 0x00000640L,
125
/* 00f0 */ 0x80880000L, /*		jump	to_decisions */
126
/* 00f4 */ 0x00000500L,
127
/* 00f8 */ 0x72370000L, /*		move	scratcha3 to sfbr */
128
/* 00fc */ 0x00000000L,
129
/* 0100 */ 0x98040000L, /*		int	error_too_much_data, if not 0 */
130
/* 0104 */ 0x00000008L,
131
/* 0108 */ 0x19000000L, /*		move	from data_buf, when data_in */
132
/* 010c */ 0x00000003L,
133
/* 0110 */ 0x78370200L, /*		move	2 to scratcha3 */
134
/* 0114 */ 0x00000000L,
135
/* 0118 */ 0xc0000004L, /*		move	memory 4, scratcha, state */
136
/* 011c */ 0x00000034L,
137
/* 0120 */ 0x00000640L,
138
/* 0124 */ 0x88880000L, /*		call	save_state */
139
/* 0128 */ 0x00000600L,
140
/* 012c */ 0x80880000L, /*		jump	post_data_to_decisions */
141
/* 0130 */ 0x000004f4L,
142
/* 0134 */ 0xc0000004L, /*		move	memory 4, state, scratcha */
143
/* 0138 */ 0x00000640L,
144
/* 013c */ 0x00000034L,
145
/* 0140 */ 0xc0000004L, /*		move	memory 4, dmaaddr, scratchb */
146
/* 0144 */ 0x00000644L,
147
/* 0148 */ 0x0000005cL,
148
/* 014c */ 0x72360000L, /*		move	scratcha2 to sfbr */
149
/* 0150 */ 0x00000000L,
150
/* 0154 */ 0x808c0000L, /*		jump	data_out_normal, if 0 */
151
/* 0158 */ 0x0000005cL,
152
/* 015c */ 0xc0000004L, /*		move	memory 4, dmaaddr, scratchb */
153
/* 0160 */ 0x00000644L,
154
/* 0164 */ 0x0000005cL,
155
/* 0168 */ 0x28000200L, /*		move	BSIZE, ptr dmaaddr, when data_out */
156
/* 016c */ 0x00000644L,
157
/* 0170 */ 0x7e5d0200L, /*		move	scratchb1 + BSIZE / 256 to scratchb1 */
158
/* 0174 */ 0x00000000L,
159
/* 0178 */ 0x7f5e0000L, /*		move	scratchb2 + 0 to scratchb2 with carry */
160
/* 017c */ 0x00000000L,
161
/* 0180 */ 0x7f5f0000L, /*		move	scratchb3 + 0 to scratchb3 with carry */
162
/* 0184 */ 0x00000000L,
163
/* 0188 */ 0x7e36ff00L, /*		move	scratcha2 + 255 to scratcha2 */
164
/* 018c */ 0x00000000L,
165
/* 0190 */ 0xc0000004L, /*		move	memory 4, scratchb, dmaaddr */
166
/* 0194 */ 0x0000005cL,
167
/* 0198 */ 0x00000644L,
168
/* 019c */ 0x808b0000L, /*		jump	data_out_block_loop, when data_out */
169
/* 01a0 */ 0x00ffffa8L,
170
/* 01a4 */ 0xc0000004L, /*		move	memory 4, scratcha, state */
171
/* 01a8 */ 0x00000034L,
172
/* 01ac */ 0x00000640L,
173
/* 01b0 */ 0x80880000L, /*		jump	to_decisions */
174
/* 01b4 */ 0x00000440L,
175
/* 01b8 */ 0x72370000L, /*		move	scratcha3 to sfbr */
176
/* 01bc */ 0x00000000L,
177
/* 01c0 */ 0x98040000L, /*		int	error_too_little_data, if not 0 */
178
/* 01c4 */ 0x00000009L,
179
/* 01c8 */ 0x18000000L, /*		move	from data_buf, when data_out */
180
/* 01cc */ 0x00000003L,
181
/* 01d0 */ 0x78370200L, /*		move	2 to scratcha3 */
182
/* 01d4 */ 0x00000000L,
183
/* 01d8 */ 0xc0000004L, /*		move	memory 4, scratcha, state */
184
/* 01dc */ 0x00000034L,
185
/* 01e0 */ 0x00000640L,
186
/* 01e4 */ 0x88880000L, /*		call	save_state */
187
/* 01e8 */ 0x00000540L,
188
/* 01ec */ 0x80880000L, /*		jump	post_data_to_decisions */
189
/* 01f0 */ 0x00000434L,
190
/* 01f4 */ 0x1b000000L, /*		move	from status_buf, when status */
191
/* 01f8 */ 0x00000004L,
192
/* 01fc */ 0x9f030000L, /*		int	error_unexpected_phase, when not msg_in */
193
/* 0200 */ 0x00000004L,
194
/* 0204 */ 0x0f000001L, /*		move	1, scratcha, when msg_in */
195
/* 0208 */ 0x00000034L,
196
/* 020c */ 0x808c0007L, /*		jump	rejected, if MSG_REJECT */
197
/* 0210 */ 0x00000088L,
198
/* 0214 */ 0x808c0004L, /*		jump	disconnected, if MSG_DISCONNECT */
199
/* 0218 */ 0x00000298L,
200
/* 021c */ 0x808c0002L, /*		jump	msg_in_skip, if MSG_SAVE_DATA_POINTER */
201
/* 0220 */ 0x00000090L,
202
/* 0224 */ 0x808c0003L, /*		jump	msg_in_skip, if MSG_RESTORE_POINTERS */
203
/* 0228 */ 0x00000088L,
204
/* 022c */ 0x808c0023L, /*		jump	ignore_wide, if MSG_IGNORE_WIDE_RESIDUE */
205
/* 0230 */ 0x000001f0L,
206
/* 0234 */ 0x808c0001L, /*		jump	extended, if X_MSG */
207
/* 0238 */ 0x00000088L,
208
/* 023c */ 0x98040000L, /*		int	error_not_cmd_complete, if not 0 */
209
/* 0240 */ 0x00000001L,
210
/* 0244 */ 0x7c027e00L, /*		move	scntl2&0x7e to scntl2 */
211
/* 0248 */ 0x00000000L,
212
/* 024c */ 0x60000040L, /*		clear	ack */
213
/* 0250 */ 0x00000000L,
214
/* 0254 */ 0x48000000L, /*		wait	disconnect */
215
/* 0258 */ 0x00000000L,
216
/* 025c */ 0xc0000004L, /*		move	memory 4, state, scratcha */
217
/* 0260 */ 0x00000640L,
218
/* 0264 */ 0x00000034L,
219
/* 0268 */ 0x78340400L, /*		move	STATE_DONE to scratcha0 */
220
/* 026c */ 0x00000000L,
221
/* 0270 */ 0x78350000L, /*		move	RESULT_OK to scratcha1 */
222
/* 0274 */ 0x00000000L,
223
/* 0278 */ 0xc0000004L, /*		move	memory 4, scratcha, state */
224
/* 027c */ 0x00000034L,
225
/* 0280 */ 0x00000640L,
226
/* 0284 */ 0x88880000L, /*		call	save_state */
227
/* 0288 */ 0x000004a0L,
228
/* 028c */ 0x98180000L, /*		intfly	0 */
229
/* 0290 */ 0x00000000L,
230
/* 0294 */ 0x80880000L, /*		jump	issue_check */
231
/* 0298 */ 0x000004b8L,
232
/* 029c */ 0x98080000L, /*		int	SIR_MSG_REJECT */
233
/* 02a0 */ 0x0000000aL,
234
/* 02a4 */ 0x60000040L, /*		clear	ack */
235
/* 02a8 */ 0x00000000L,
236
/* 02ac */ 0x80880000L, /*		jump	to_decisions */
237
/* 02b0 */ 0x00000344L,
238
/* 02b4 */ 0x60000040L, /*		clear	ack */
239
/* 02b8 */ 0x00000000L,
240
/* 02bc */ 0x80880000L, /*		jump	to_decisions */
241
/* 02c0 */ 0x00000334L,
242
/* 02c4 */ 0x60000040L, /*		clear	ack */
243
/* 02c8 */ 0x00000000L,
244
/* 02cc */ 0x9f030000L, /*		int	error_unexpected_phase, when not msg_in */
245
/* 02d0 */ 0x00000004L,
246
/* 02d4 */ 0x0f000001L, /*		move	1, scratcha1, when msg_in */
247
/* 02d8 */ 0x00000035L,
248
/* 02dc */ 0x808c0003L, /*		jump	ext_3, if 3 */
249
/* 02e0 */ 0x00000030L,
250
/* 02e4 */ 0x808c0002L, /*		jump	ext_2, if 2 */
251
/* 02e8 */ 0x00000098L,
252
/* 02ec */ 0x98040001L, /*		int	error_weird_message, if not 1 */
253
/* 02f0 */ 0x00000005L,
254
/* 02f4 */ 0x60000040L, /*		clear	ack */
255
/* 02f8 */ 0x00000000L,
256
/* 02fc */ 0x9f030000L, /*		int	error_unexpected_phase, when not msg_in */
257
/* 0300 */ 0x00000004L,
258
/* 0304 */ 0x0f000001L, /*		move	1, scratcha1, when msg_in */
259
/* 0308 */ 0x00000035L,
260
/* 030c */ 0x80880000L, /*		jump	ext_done */
261
/* 0310 */ 0x000000c8L,
262
/* 0314 */ 0x60000040L, /*	ext_3:	clear	ack */
263
/* 0318 */ 0x00000000L,
264
/* 031c */ 0x9f030000L, /*		int	error_unexpected_phase, when not msg_in */
265
/* 0320 */ 0x00000004L,
266
/* 0324 */ 0x0f000001L, /*		move	1, scratcha1, when msg_in */
267
/* 0328 */ 0x00000035L,
268
/* 032c */ 0x60000040L, /*		clear	ack */
269
/* 0330 */ 0x00000000L,
270
/* 0334 */ 0x9f030000L, /*		int	error_unexpected_phase, when not msg_in */
271
/* 0338 */ 0x00000004L,
272
/* 033c */ 0x0f000001L, /*		move	1, scratcha2, when msg_in */
273
/* 0340 */ 0x00000036L,
274
/* 0344 */ 0x60000040L, /*		clear	ack */
275
/* 0348 */ 0x00000000L,
276
/* 034c */ 0x9f030000L, /*		int	error_unexpected_phase, when not msg_in */
277
/* 0350 */ 0x00000004L,
278
/* 0354 */ 0x0f000001L, /*		move	1, scratcha3, when msg_in */
279
/* 0358 */ 0x00000037L,
280
/* 035c */ 0x72350000L, /*		move	scratcha1 to sfbr */
281
/* 0360 */ 0x00000000L,
282
/* 0364 */ 0x80840001L, /*		jump	ext_done, if not X_MSG_SDTR */
283
/* 0368 */ 0x00000070L,
284
/* 036c */ 0x98080000L, /*	sdtr:	int	SIR_MSG_SDTR */
285
/* 0370 */ 0x0000000bL,
286
/* 0374 */ 0x60000040L, /*		clear	ack */
287
/* 0378 */ 0x00000000L,
288
/* 037c */ 0x80880000L, /*		jump	to_decisions */
289
/* 0380 */ 0x00000274L,
290
/* 0384 */ 0x60000040L, /*	ext_2:	clear	ack */
291
/* 0388 */ 0x00000000L,
292
/* 038c */ 0x9f030000L, /*		int	error_unexpected_phase, when not msg_in */
293
/* 0390 */ 0x00000004L,
294
/* 0394 */ 0x0f000001L, /*		move	1, scratcha1, when msg_in */
295
/* 0398 */ 0x00000035L,
296
/* 039c */ 0x60000040L, /*		clear	ack */
297
/* 03a0 */ 0x00000000L,
298
/* 03a4 */ 0x9f030000L, /*		int	error_unexpected_phase, when not msg_in */
299
/* 03a8 */ 0x00000004L,
300
/* 03ac */ 0x0f000001L, /*		move	1, scratcha2, when msg_in */
301
/* 03b0 */ 0x00000036L,
302
/* 03b4 */ 0x72350000L, /*		move	scratcha1 to sfbr */
303
/* 03b8 */ 0x00000000L,
304
/* 03bc */ 0x80840003L, /*		jump	ext_done, if not X_MSG_WDTR */
305
/* 03c0 */ 0x00000018L,
306
/* 03c4 */ 0x98080000L, /*	wdtr:	int	SIR_MSG_WDTR */
307
/* 03c8 */ 0x0000000fL,
308
/* 03cc */ 0x60000040L, /*		clear	ack */
309
/* 03d0 */ 0x00000000L,
310
/* 03d4 */ 0x80880000L, /*		jump	to_decisions */
311
/* 03d8 */ 0x0000021cL,
312
/* 03dc */ 0x58000008L, /*		set	atn */
313
/* 03e0 */ 0x00000000L,
314
/* 03e4 */ 0x60000040L, /*		clear	ack */
315
/* 03e8 */ 0x00000000L,
316
/* 03ec */ 0x78340700L, /*		move	MSG_REJECT to scratcha */
317
/* 03f0 */ 0x00000000L,
318
/* 03f4 */ 0x9e030000L, /*		int	error_unexpected_phase, when not msg_out */
319
/* 03f8 */ 0x00000004L,
320
/* 03fc */ 0x60000008L, /*		clear	atn */
321
/* 0400 */ 0x00000000L,
322
/* 0404 */ 0x0e000001L, /*		move	1, scratcha, when msg_out */
323
/* 0408 */ 0x00000034L,
324
/* 040c */ 0x60000040L, /*		clear	ack */
325
/* 0410 */ 0x00000000L,
326
/* 0414 */ 0x868b0000L, /*		jump	reject, when msg_out */
327
/* 0418 */ 0x00ffffc0L,
328
/* 041c */ 0x80880000L, /*		jump	to_decisions */
329
/* 0420 */ 0x000001d4L,
330
/* 0424 */ 0x60000040L, /*		clear	ack */
331
/* 0428 */ 0x00000000L,
332
/* 042c */ 0x9f030000L, /*		int	error_unexpected_phase, when not msg_in */
333
/* 0430 */ 0x00000004L,
334
/* 0434 */ 0x0f000001L, /*		move	1, scratcha1, when msg_in */
335
/* 0438 */ 0x00000035L,
336
/* 043c */ 0x98080000L, /*		int	SIR_MSG_IGNORE_WIDE_RESIDUE */
337
/* 0440 */ 0x00000010L,
338
/* 0444 */ 0x60000040L, /*		clear	ack */
339
/* 0448 */ 0x00000000L,
340
/* 044c */ 0x80880000L, /*		jump	to_decisions */
341
/* 0450 */ 0x000001a4L,
342
/* 0454 */ 0x58000008L, /*		set	atn */
343
/* 0458 */ 0x00000000L,
344
/* 045c */ 0x60000040L, /*		clear	ack */
345
/* 0460 */ 0x00000000L,
346
/* 0464 */ 0x9e030000L, /*		int	error_unexpected_phase, when not msg_out */
347
/* 0468 */ 0x00000004L,
348
/* 046c */ 0x1e000000L, /*		move	from msg_out_buf, when msg_out */
349
/* 0470 */ 0x00000001L,
350
/* 0474 */ 0x868b0000L, /*		jump	response_repeat, when msg_out */
351
/* 0478 */ 0x00fffff0L,
352
/* 047c */ 0x878b0000L, /*		jump	response_msg_in, when msg_in */
353
/* 0480 */ 0x00000010L,
354
/* 0484 */ 0x98080000L, /*		int	SIR_EV_RESPONSE_OK */
355
/* 0488 */ 0x0000000cL,
356
/* 048c */ 0x80880000L, /*		jump	to_decisions */
357
/* 0490 */ 0x00000164L,
358
/* 0494 */ 0x0f000001L, /*		move	1, scratcha, when msg_in */
359
/* 0498 */ 0x00000034L,
360
/* 049c */ 0x808c0007L, /*		jump	rejected, if MSG_REJECT */
361
/* 04a0 */ 0x00fffdf8L,
362
/* 04a4 */ 0x98080000L, /*		int	SIR_EV_RESPONSE_OK */
363
/* 04a8 */ 0x0000000cL,
364
/* 04ac */ 0x80880000L, /*		jump	msg_in_not_reject */
365
/* 04b0 */ 0x00fffd60L,
366
/* 04b4 */ 0x7c027e00L, /*		move	scntl2&0x7e to scntl2 */
367
/* 04b8 */ 0x00000000L,
368
/* 04bc */ 0x60000040L, /*		clear 	ack */
369
/* 04c0 */ 0x00000000L,
370
/* 04c4 */ 0x48000000L, /*		wait	disconnect */
371
/* 04c8 */ 0x00000000L,
372
/* 04cc */ 0xc0000004L, /*		move	memory 4, state, scratcha */
373
/* 04d0 */ 0x00000640L,
374
/* 04d4 */ 0x00000034L,
375
/* 04d8 */ 0x78340300L, /*		move	STATE_DISCONNECTED to scratcha0 */
376
/* 04dc */ 0x00000000L,
377
/* 04e0 */ 0xc0000004L, /*		move	memory 4, scratcha, state */
378
/* 04e4 */ 0x00000034L,
379
/* 04e8 */ 0x00000640L,
380
/* 04ec */ 0x88880000L, /*		call	save_state */
381
/* 04f0 */ 0x00000238L,
382
/* 04f4 */ 0x74020100L, /*		move	scntl2&0x01 to sfbr */
383
/* 04f8 */ 0x00000000L,
384
/* 04fc */ 0x98040000L, /*		int	SIR_NOTIFY_WSR, if not 0 */
385
/* 0500 */ 0x00000073L,
386
/* 0504 */ 0x80880000L, /*		jump	issue_check */
387
/* 0508 */ 0x00000248L,
388
/* 050c */ 0x98080000L, /*		int	SIR_NOTIFY_RESELECTED_ON_SELECT */
389
/* 0510 */ 0x00000075L,
390
/* 0514 */ 0x80880000L, /*		jump	reselected */
391
/* 0518 */ 0x00000008L,
392
/* 051c */ 0x54000000L, /*		wait reselect sigp_set */
393
/* 0520 */ 0x00000228L,
394
/* 0524 */ 0x60000200L, /*		clear	target */
395
/* 0528 */ 0x00000000L,
396
/* 052c */ 0x9f030000L, /*		int	SIR_ERROR_NOT_MSG_IN_AFTER_RESELECT, when not msg_in */
397
/* 0530 */ 0x00000006L,
398
/* 0534 */ 0x0f000001L, /*		move	1, scratchb, when msg_in */
399
/* 0538 */ 0x0000005cL,
400
/* 053c */ 0x98041f80L, /*		int	error_not_identify_after_reselect, if not MSG_IDENTIFY and mask 0x1f */
401
/* 0540 */ 0x00000007L,
402
/* 0544 */ 0xc0000004L, /*	 	move	memory 4, dsa_head, dsa */
403
/* 0548 */ 0x00000008L,
404
/* 054c */ 0x00000010L,
405
/* 0550 */ 0x88880000L, /*		call	load_state */
406
/* 0554 */ 0x00000100L,
407
/* 0558 */ 0xc0000004L, /*		move	memory 4, state, scratcha */
408
/* 055c */ 0x00000640L,
409
/* 0560 */ 0x00000034L,
410
/* 0564 */ 0x72340000L, /*		move	scratcha0 to sfbr */
411
/* 0568 */ 0x00000000L,
412
/* 056c */ 0x80840003L, /*		jump	find_dsa_next, if not STATE_DISCONNECTED */
413
/* 0570 */ 0x00000040L,
414
/* 0574 */ 0x980c0005L, /*		int	error_reselected, if STATE_END */
415
/* 0578 */ 0x00000003L,
416
/* 057c */ 0x740a0900L, /*		move	ssid & ssid_mask to sfbr */
417
/* 0580 */ 0x00000000L,
418
/* 0584 */ 0xc0000001L, /*		move	memory 1, targ, find_dsa_smc1 */
419
/* 0588 */ 0x00000648L,
420
/* 058c */ 0x00000590L,
421
/* 0590 */ 0x808400ffL, /*		jump	find_dsa_next, if not 255 */
422
/* 0594 */ 0x0000001cL,
423
/* 0598 */ 0xc0000001L, /*		move	memory 1, lun, find_dsa_smc2 */
424
/* 059c */ 0x0000064cL,
425
/* 05a0 */ 0x000005acL,
426
/* 05a4 */ 0x725c0000L, /*		move	scratchb0 to sfbr */
427
/* 05a8 */ 0x00000000L,
428
/* 05ac */ 0x808cf8ffL, /*		jump	reload_sync, if 255 and mask ~7 */
429
/* 05b0 */ 0x00000034L,
430
/* 05b4 */ 0xc0000004L, /*		move	memory 4, next, dsa */
431
/* 05b8 */ 0x00000654L,
432
/* 05bc */ 0x00000010L,
433
/* 05c0 */ 0x80880000L, /*		jump	find_dsa_loop */
434
/* 05c4 */ 0x00ffff88L,
435
/* 05c8 */ 0x60000008L, /*		clear	atn */
436
/* 05cc */ 0x00000000L,
437
/* 05d0 */ 0x878b0000L, /*	        jump    msg_in_phase, when msg_in */
438
/* 05d4 */ 0x00fffc2cL,
439
/* 05d8 */ 0x98080000L, /*	        int     SIR_MSG_REJECT */
440
/* 05dc */ 0x0000000aL,
441
/* 05e0 */ 0x80880000L, /*	        jump    to_decisions */
442
/* 05e4 */ 0x00000010L,
443
/* 05e8 */ 0x88880000L, /*		call	load_sync */
444
/* 05ec */ 0x000001b0L,
445
/* 05f0 */ 0x60000040L, /*		clear	ack */
446
/* 05f4 */ 0x00000000L,
447
/* 05f8 */ 0x818b0000L, /*		jump	data_in_phase, when data_in */
448
/* 05fc */ 0x00fffa58L,
449
/* 0600 */ 0x828a0000L, /*		jump	cmd_phase, if cmd */
450
/* 0604 */ 0x00fffa38L,
451
/* 0608 */ 0x808a0000L, /*		jump	data_out_phase, if data_out */
452
/* 060c */ 0x00fffb24L,
453
/* 0610 */ 0x838a0000L, /*		jump	status_phase, if status */
454
/* 0614 */ 0x00fffbdcL,
455
/* 0618 */ 0x878a0000L, /*		jump	msg_in_phase, if msg_in */
456
/* 061c */ 0x00fffbe4L,
457
/* 0620 */ 0x98080000L, /*		int	error_unexpected_phase */
458
/* 0624 */ 0x00000004L,
459
/* 0628 */ 0x838b0000L, /*		jump	status_phase, when status */
460
/* 062c */ 0x00fffbc4L,
461
/* 0630 */ 0x878a0000L, /*		jump	msg_in_phase, if msg_in */
462
/* 0634 */ 0x00fffbccL,
463
/* 0638 */ 0x98080000L, /*		int	error_unexpected_phase */
464
/* 063c */ 0x00000004L,
465
/* 0640 */ 0x00000000L, /*	state:	defw	0 */
466
/* 0644 */ 0x00000000L, /*	dmaaddr: defw	0 */
467
/* 0648 */ 0x00000000L, /*	targ:	defw	0 */
468
/* 064c */ 0x00000000L, /*	lun:	defw	0 */
469
/* 0650 */ 0x00000000L, /*	sync:	defw	0 */
470
/* 0654 */ 0x00000000L, /*	next:	defw	0 */
471
			/*	dsa_load_len = dsa_load_end - dsa_copy */
472
			/*	dsa_save_len = dsa_save_end - dsa_copy */
473
/* 0658 */ 0x80880000L, /*		jump load_state_okay */
474
/* 065c */ 0x000000acL,
475
/* 0660 */ 0x72100000L, /*		move	dsa0 to sfbr */
476
/* 0664 */ 0x00000000L,
477
/* 0668 */ 0x80840000L, /*		jump load_state_okay, if not 0 */
478
/* 066c */ 0x0000009cL,
479
/* 0670 */ 0x72110000L, /*		move	dsa1 to sfbr */
480
/* 0674 */ 0x00000000L,
481
/* 0678 */ 0x80840000L, /*		jump load_state_okay, if not 0 */
482
/* 067c */ 0x0000008cL,
483
/* 0680 */ 0x72120000L, /*		move	dsa2 to sfbr */
484
/* 0684 */ 0x00000000L,
485
/* 0688 */ 0x80840000L, /*		jump load_state_okay, if not 0 */
486
/* 068c */ 0x0000007cL,
487
/* 0690 */ 0x72130000L, /*		move	dsa3 to sfbr */
488
/* 0694 */ 0x00000000L,
489
/* 0698 */ 0x80840000L, /*		jump load_state_okay, if not 0 */
490
/* 069c */ 0x0000006cL,
491
/* 06a0 */ 0xc0000004L, /*		move	memory 4, dsa, dmaaddr */
492
/* 06a4 */ 0x00000010L,
493
/* 06a8 */ 0x00000644L,
494
/* 06ac */ 0xc0000004L, /*		move	memory 4, dsa, targ */
495
/* 06b0 */ 0x00000010L,
496
/* 06b4 */ 0x00000648L,
497
/* 06b8 */ 0xc0000004L, /*		move	memory 4, dsa, lun */
498
/* 06bc */ 0x00000010L,
499
/* 06c0 */ 0x0000064cL,
500
/* 06c4 */ 0xc0000004L, /*		move	memory 4, dsa, sync */
501
/* 06c8 */ 0x00000010L,
502
/* 06cc */ 0x00000650L,
503
/* 06d0 */ 0xc0000004L, /*		move	memory 4, dsa, next */
504
/* 06d4 */ 0x00000010L,
505
/* 06d8 */ 0x00000654L,
506
/* 06dc */ 0xc0000004L, /*		move	memory 4, dsa, scratcha */
507
/* 06e0 */ 0x00000010L,
508
/* 06e4 */ 0x00000034L,
509
/* 06e8 */ 0x68080500L, /*		move	STATE_END to sfbr */
510
/* 06ec */ 0x00000000L,
511
/* 06f0 */ 0x6a340000L, /*		move	sfbr to scratcha0 */
512
/* 06f4 */ 0x00000000L,
513
/* 06f8 */ 0xc0000004L, /*		move	memory 4, scratcha, state */
514
/* 06fc */ 0x00000034L,
515
/* 0700 */ 0x00000640L,
516
/* 0704 */ 0x90080000L, /*		return */
517
/* 0708 */ 0x00000000L,
518
/* 070c */ 0xc0000004L, /*		move	memory 4, dsa, load_state_smc0 + 4 */
519
/* 0710 */ 0x00000010L,
520
/* 0714 */ 0x0000071cL,
521
/* 0718 */ 0xc0000018L, /*		move	memory dsa_load_len, 0, dsa_copy */
522
/* 071c */ 0x00000000L,
523
/* 0720 */ 0x00000640L,
524
/* 0724 */ 0x90080000L, /*		return */
525
/* 0728 */ 0x00000000L,
526
/* 072c */ 0xc0000004L, /*		move	memory 4, dsa, save_state_smc0 + 8 */
527
/* 0730 */ 0x00000010L,
528
/* 0734 */ 0x00000740L,
529
/* 0738 */ 0xc0000008L, /*		move	memory dsa_save_len, dsa_copy, 0 */
530
/* 073c */ 0x00000640L,
531
/* 0740 */ 0x00000000L,
532
/* 0744 */ 0x90080000L, /*		return */
533
/* 0748 */ 0x00000000L,
534
/* 074c */ 0x721a0000L, /*		move	ctest2 to sfbr */
535
/* 0750 */ 0x00000000L,
536
/* 0754 */ 0xc0000004L, /*		move	memory 4, dsa_head, dsa */
537
/* 0758 */ 0x00000008L,
538
/* 075c */ 0x00000010L,
539
/* 0760 */ 0x88880000L, /*	 	call	load_state */
540
/* 0764 */ 0x00fffef0L,
541
/* 0768 */ 0xc0000004L, /*		move	memory 4, state, scratcha */
542
/* 076c */ 0x00000640L,
543
/* 0770 */ 0x00000034L,
544
/* 0774 */ 0x72340000L, /*		move	scratcha0 to sfbr */
545
/* 0778 */ 0x00000000L,
546
/* 077c */ 0x808c0002L, /*		jump	start, if STATE_ISSUE */
547
/* 0780 */ 0x00fff884L,
548
/* 0784 */ 0x808c0005L, /*		jump	wait_for_reselection, if STATE_END */
549
/* 0788 */ 0x00fffd90L,
550
/* 078c */ 0xc0000004L, /*		move	memory 4, next, dsa */
551
/* 0790 */ 0x00000654L,
552
/* 0794 */ 0x00000010L,
553
/* 0798 */ 0x80880000L, /*		jump	issue_check_loop */
554
/* 079c */ 0x00ffffc0L,
555
/* 07a0 */ 0xc0000004L, /*		move	memory 4, sync, scratcha */
556
/* 07a4 */ 0x00000650L,
557
/* 07a8 */ 0x00000034L,
558
/* 07ac */ 0x72340000L, /*		move	scratcha0 to sfbr */
559
/* 07b0 */ 0x00000000L,
560
/* 07b4 */ 0x6a030000L, /*		move	sfbr to scntl3 */
561
/* 07b8 */ 0x00000000L,
562
/* 07bc */ 0x72350000L, /*		move	scratcha1 to sfbr */
563
/* 07c0 */ 0x00000000L,
564
/* 07c4 */ 0x6a050000L, /*		move	sfbr to sxfer */
565
/* 07c8 */ 0x00000000L,
566
/* 07cc */ 0x90080000L, /*		return */
567
/* 07d0 */ 0x00000000L,
568
};
569
 
570
#define NA_SCRIPT_SIZE 501
571
 
572
struct na_patch na_patches[] = {
573
	{ 0x0006, 5 }, /* 00000018 */
574
	{ 0x000b, 4 }, /* 0000002c */
575
	{ 0x0013, 4 }, /* 0000004c */
576
	{ 0x0017, 1 }, /* 0000005c */
577
	{ 0x0018, 2 }, /* 00000060 */
578
	{ 0x001a, 1 }, /* 00000068 */
579
	{ 0x001b, 2 }, /* 0000006c */
580
	{ 0x0021, 1 }, /* 00000084 */
581
	{ 0x002b, 2 }, /* 000000ac */
582
	{ 0x002c, 1 }, /* 000000b0 */
583
	{ 0x0030, 2 }, /* 000000c0 */
584
	{ 0x0031, 1 }, /* 000000c4 */
585
	{ 0x0037, 2 }, /* 000000dc */
586
	{ 0x0038, 1 }, /* 000000e0 */
587
	{ 0x003a, 2 }, /* 000000e8 */
588
	{ 0x003b, 1 }, /* 000000ec */
589
	{ 0x0043, 4 }, /* 0000010c */
590
	{ 0x0047, 2 }, /* 0000011c */
591
	{ 0x0048, 1 }, /* 00000120 */
592
	{ 0x004e, 1 }, /* 00000138 */
593
	{ 0x004f, 2 }, /* 0000013c */
594
	{ 0x0051, 1 }, /* 00000144 */
595
	{ 0x0052, 2 }, /* 00000148 */
596
	{ 0x0058, 1 }, /* 00000160 */
597
	{ 0x0059, 2 }, /* 00000164 */
598
	{ 0x005b, 1 }, /* 0000016c */
599
	{ 0x0065, 2 }, /* 00000194 */
600
	{ 0x0066, 1 }, /* 00000198 */
601
	{ 0x006a, 2 }, /* 000001a8 */
602
	{ 0x006b, 1 }, /* 000001ac */
603
	{ 0x0073, 4 }, /* 000001cc */
604
	{ 0x0077, 2 }, /* 000001dc */
605
	{ 0x0078, 1 }, /* 000001e0 */
606
	{ 0x007e, 4 }, /* 000001f8 */
607
	{ 0x0082, 2 }, /* 00000208 */
608
	{ 0x0098, 1 }, /* 00000260 */
609
	{ 0x0099, 2 }, /* 00000264 */
610
	{ 0x009f, 2 }, /* 0000027c */
611
	{ 0x00a0, 1 }, /* 00000280 */
612
	{ 0x00b6, 2 }, /* 000002d8 */
613
	{ 0x00c2, 2 }, /* 00000308 */
614
	{ 0x00ca, 2 }, /* 00000328 */
615
	{ 0x00d0, 2 }, /* 00000340 */
616
	{ 0x00d6, 2 }, /* 00000358 */
617
	{ 0x00e6, 2 }, /* 00000398 */
618
	{ 0x00ec, 2 }, /* 000003b0 */
619
	{ 0x0102, 2 }, /* 00000408 */
620
	{ 0x010e, 2 }, /* 00000438 */
621
	{ 0x011c, 4 }, /* 00000470 */
622
	{ 0x0126, 2 }, /* 00000498 */
623
	{ 0x0134, 1 }, /* 000004d0 */
624
	{ 0x0135, 2 }, /* 000004d4 */
625
	{ 0x0139, 2 }, /* 000004e4 */
626
	{ 0x013a, 1 }, /* 000004e8 */
627
	{ 0x014e, 2 }, /* 00000538 */
628
	{ 0x0152, 4 }, /* 00000548 */
629
	{ 0x0153, 2 }, /* 0000054c */
630
	{ 0x0157, 1 }, /* 0000055c */
631
	{ 0x0158, 2 }, /* 00000560 */
632
	{ 0x015f, 3 }, /* 0000057c */
633
	{ 0x0162, 1 }, /* 00000588 */
634
	{ 0x0163, 1 }, /* 0000058c */
635
	{ 0x0167, 1 }, /* 0000059c */
636
	{ 0x0168, 1 }, /* 000005a0 */
637
	{ 0x016e, 1 }, /* 000005b8 */
638
	{ 0x016f, 2 }, /* 000005bc */
639
	{ 0x01a9, 2 }, /* 000006a4 */
640
	{ 0x01aa, 1 }, /* 000006a8 */
641
	{ 0x01ac, 2 }, /* 000006b0 */
642
	{ 0x01ad, 1 }, /* 000006b4 */
643
	{ 0x01af, 2 }, /* 000006bc */
644
	{ 0x01b0, 1 }, /* 000006c0 */
645
	{ 0x01b2, 2 }, /* 000006c8 */
646
	{ 0x01b3, 1 }, /* 000006cc */
647
	{ 0x01b5, 2 }, /* 000006d4 */
648
	{ 0x01b6, 1 }, /* 000006d8 */
649
	{ 0x01b8, 2 }, /* 000006e0 */
650
	{ 0x01b9, 2 }, /* 000006e4 */
651
	{ 0x01bf, 2 }, /* 000006fc */
652
	{ 0x01c0, 1 }, /* 00000700 */
653
	{ 0x01c4, 2 }, /* 00000710 */
654
	{ 0x01c5, 1 }, /* 00000714 */
655
	{ 0x01c8, 1 }, /* 00000720 */
656
	{ 0x01cc, 2 }, /* 00000730 */
657
	{ 0x01cd, 1 }, /* 00000734 */
658
	{ 0x01cf, 1 }, /* 0000073c */
659
	{ 0x01d6, 4 }, /* 00000758 */
660
	{ 0x01d7, 2 }, /* 0000075c */
661
	{ 0x01db, 1 }, /* 0000076c */
662
	{ 0x01dc, 2 }, /* 00000770 */
663
	{ 0x01e4, 1 }, /* 00000790 */
664
	{ 0x01e5, 2 }, /* 00000794 */
665
	{ 0x01e9, 1 }, /* 000007a4 */
666
	{ 0x01ea, 2 }, /* 000007a8 */
667
};
668
#define NA_PATCHES 94
669
 
670
enum na_external {
671
	X_scsi_id_buf,
672
	X_msg_out_buf,
673
	X_cmd_buf,
674
	X_data_buf,
675
	X_status_buf,
676
	X_msgin_buf,
677
	X_dsa_0,
678
	X_dsa_1,
679
	X_dsa_head,
680
	X_ssid_mask,
681
};
682
 
683
enum {
684
	E_issue_check_loop = 1888,
685
	E_save_state_smc0 = 1848,
686
	E_load_state_smc0 = 1816,
687
	E_load_state_okay = 1804,
688
	E_dsa_load_end = 1624,
689
	E_sync = 1616,
690
	E_dsa_save_end = 1608,
691
	E_dsa_copy = 1600,
692
	E_id_out_mismatch_recover = 1480,
693
	E_next = 1620,
694
	E_reload_sync = 1512,
695
	E_find_dsa_smc2 = 1452,
696
	E_lun = 1612,
697
	E_find_dsa_smc1 = 1424,
698
	E_targ = 1608,
699
	E_find_dsa_next = 1460,
700
	E_load_state = 1624,
701
	E_find_dsa_loop = 1360,
702
	E_find_dsa = 1348,
703
	E_sigp_set = 1868,
704
	E_reselected = 1316,
705
	E_wsr_check = 1268,
706
	E_response_msg_in = 1172,
707
	E_response_repeat = 1132,
708
	E_response = 1108,
709
	E_reject = 988,
710
	E_wdtr = 964,
711
	E_sdtr = 876,
712
	E_ext_done = 988,
713
	E_ext_1 = 756,
714
	E_ext_2 = 900,
715
	E_ext_3 = 788,
716
	E_issue_check = 1876,
717
	E_extended = 708,
718
	E_ignore_wide = 1060,
719
	E_msg_in_skip = 692,
720
	E_disconnected = 1204,
721
	E_msg_in_not_reject = 532,
722
	E_rejected = 668,
723
	E_msg_in_phase = 516,
724
	E_status_phase = 500,
725
	E_data_out_mismatch = 464,
726
	E_data_out_block_mismatch = 368,
727
	E_data_out_normal = 440,
728
	E_data_out_block_loop = 332,
729
	E_data_out_phase = 308,
730
	E_post_data_to_decisions = 1576,
731
	E_data_in_mismatch = 272,
732
	E_data_mismatch_recover = 228,
733
	E_data_block_mismatch_recover = 216,
734
	E_save_state = 1836,
735
	E_data_in_block_mismatch = 136,
736
	E_data_in_normal = 248,
737
	E_data_in_block_loop = 112,
738
	E_dmaaddr = 1604,
739
	E_state = 1600,
740
	E_data_in_phase = 88,
741
	E_cmd_out_mismatch = 80,
742
	E_cmd_phase = 64,
743
	E_to_decisions = 1528,
744
	E_id_out_mismatch = 48,
745
	E_start1 = 40,
746
	E_reselected_on_select = 1292,
747
	E_load_sync = 1952,
748
	E_start = 8,
749
	E_wait_for_reselection = 1308,
750
};
751
#define A_dsa_save_len 8
752
#define A_dsa_load_len 24
753
#define A_BSIZE 512
754
#define A_MSG_REJECT 7
755
#define A_X_MSG_WDTR 3
756
#define A_X_MSG_SDTR 1
757
#define A_X_MSG 1
758
#define A_MSG_IGNORE_WIDE_RESIDUE 35
759
#define A_MSG_RESTORE_POINTERS 3
760
#define A_MSG_SAVE_DATA_POINTER 2
761
#define A_MSG_DISCONNECT 4
762
#define A_MSG_IDENTIFY 128
763
#define A_RESULT_OK 0
764
#define A_STATE_END 5
765
#define A_STATE_DONE 4
766
#define A_STATE_DISCONNECTED 3
767
#define A_STATE_ISSUE 2
768
#define A_STATE_ALLOCATED 1
769
#define A_STATE_FREE 0
770
#define A_SIR_NOTIFY_LOAD_STATE 118
771
#define A_SIR_NOTIFY_RESELECTED_ON_SELECT 117
772
#define A_SIR_NOTIFY_LOAD_SYNC 116
773
#define A_SIR_NOTIFY_WSR 115
774
#define A_SIR_NOTIFY_BLOCK_DATA_IN 114
775
#define A_SIR_NOTIFY_DATA_OUT 113
776
#define A_SIR_NOTIFY_DATA_IN 112
777
#define A_SIR_NOTIFY_COMMAND 111
778
#define A_SIR_NOTIFY_DUMP_NEXT_CODE 110
779
#define A_SIR_NOTIFY_ISSUE_CHECK 109
780
#define A_SIR_NOTIFY_WAIT_RESELECT 108
781
#define A_SIR_NOTIFY_ISSUE 107
782
#define A_SIR_NOTIFY_SIGP 106
783
#define A_SIR_NOTIFY_DUMP2 105
784
#define A_SIR_NOTIFY_DUMP 104
785
#define A_SIR_NOTIFY_STATUS 103
786
#define A_SIR_NOTIFY_MSG_IN 102
787
#define A_SIR_NOTIFY_RESELECT 101
788
#define A_SIR_NOTIFY_DISC 100
789
#define A_SIR_MSG_IGNORE_WIDE_RESIDUE 16
790
#define A_SIR_MSG_WDTR 15
791
#define A_SIR_EV_PHASE_SWITCH_AFTER_ID 14
792
#define A_error_sigp_set 13
793
#define A_SIR_EV_RESPONSE_OK 12
794
#define A_SIR_MSG_SDTR 11
795
#define A_SIR_MSG_REJECT 10
796
#define A_error_too_little_data 9
797
#define A_error_too_much_data 8
798
#define A_error_not_identify_after_reselect 7
799
#define A_SIR_ERROR_NOT_MSG_IN_AFTER_RESELECT 6
800
#define A_error_weird_message 5
801
#define A_error_unexpected_phase 4
802
#define A_error_reselected 3
803
#define A_error_disconnected 2
804
#define A_error_not_cmd_complete 1
805
#define A_SIR_MSG_IO_COMPLETE 0