OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [linux/] [linux-2.4/] [drivers/] [scsi/] [sim710.scr] - Blame information for rev 1765

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 1275 phoenix
/*
2
 * sim710.scr - Copyright (C) 1999 Richard Hirst
3
 */
4
 
5
/* Offsets from DSA, allow 128 elements of scatter/gather */
6
 
7
ABSOLUTE dsa_select  = 0
8
ABSOLUTE dsa_msgout  = 8
9
ABSOLUTE dsa_cmnd    = 16
10
ABSOLUTE dsa_status  = 24
11
ABSOLUTE dsa_msgin   = 32
12
ABSOLUTE dsa_datain  = 40       /* 8 * 128 = 1024 bytes */
13
ABSOLUTE dsa_dataout = 1064     /* 8 * 128 = 1024 bytes */
14
ABSOLUTE dsa_size     = 2088
15
 
16
ABSOLUTE reselected_identify = 0
17
ABSOLUTE msgin_buf = 0
18
ABSOLUTE msg_reject = 0
19
ABSOLUTE test1_src = 0
20
ABSOLUTE test1_dst = 0
21
 
22
/* Interrupt values passed back to driver */
23
 
24
ABSOLUTE int_bad_msg1           = 0xab930006
25
ABSOLUTE int_bad_msg2           = 0xab930007
26
ABSOLUTE int_bad_msg3           = 0xab930008
27
ABSOLUTE int_cmd_bad_phase      = 0xab930009
28
ABSOLUTE int_cmd_complete       = 0xab93000a
29
ABSOLUTE int_data_bad_phase     = 0xab93000b
30
ABSOLUTE int_msg_sdtr1          = 0xab93000c
31
ABSOLUTE int_msg_sdtr2          = 0xab93000d
32
ABSOLUTE int_msg_sdtr3          = 0xab93000e
33
ABSOLUTE int_no_msgout1         = 0xab93000f
34
ABSOLUTE int_no_msgout2         = 0xab930010
35
ABSOLUTE int_no_msgout3         = 0xab930011
36
ABSOLUTE int_not_cmd_complete   = 0xab930012
37
ABSOLUTE int_sel_no_ident       = 0xab930013
38
ABSOLUTE int_sel_not_cmd        = 0xab930014
39
ABSOLUTE int_status_not_msgin   = 0xab930015
40
ABSOLUTE int_resel_not_msgin    = 0xab930016
41
ABSOLUTE int_reselected         = 0xab930017
42
ABSOLUTE int_selected           = 0xab930018
43
ABSOLUTE int_disc1              = 0xab930019
44
ABSOLUTE int_disc2              = 0xab93001a
45
ABSOLUTE int_disc3              = 0xab93001b
46
ABSOLUTE int_not_rej            = 0xab93001c
47
ABSOLUTE int_test1              = 0xab93001d
48
 
49
/* Bit field settings used to record status in SCRATCH0 */
50
 
51
ABSOLUTE had_select     = 0x01
52
ABSOLUTE had_msgout     = 0x02
53
ABSOLUTE had_cmdout     = 0x04
54
ABSOLUTE had_datain     = 0x08
55
ABSOLUTE had_dataout    = 0x10
56
ABSOLUTE had_status     = 0x20
57
ABSOLUTE had_msgin      = 0x40
58
ABSOLUTE had_extmsg     = 0x80
59
 
60
/* Bit field settings used to record status in SCRATCH1 */
61
 
62
ABSOLUTE did_reject     = 0x01
63
 
64
/* These scripts are heavily based on the examples in the NCR 53C710
65
 * Programmer's Guide (Preliminary).
66
 */
67
 
68
ENTRY do_select
69
do_select:
70
        CLEAR TARGET
71
        ; Enable selection timer
72
        MOVE CTEST7 & 0xef TO CTEST7
73
        SELECT ATN FROM dsa_select, reselect
74
        JUMP get_status, WHEN STATUS
75
        ; Disable selection timer
76
        MOVE CTEST7 | 0x10 TO CTEST7
77
        MOVE SCRATCH0 | had_select TO SCRATCH0
78
        INT int_sel_no_ident, IF NOT MSG_OUT
79
        MOVE SCRATCH0 | had_msgout TO SCRATCH0
80
        MOVE FROM dsa_msgout, when MSG_OUT
81
ENTRY done_ident
82
done_ident:
83
        JUMP get_status, IF STATUS
84
redo_msgin1:
85
        JUMP get_msgin1, WHEN MSG_IN
86
        INT int_sel_not_cmd, IF NOT CMD
87
ENTRY resume_cmd
88
resume_cmd:
89
        MOVE SCRATCH0 | had_cmdout TO SCRATCH0
90
        MOVE FROM dsa_cmnd, WHEN CMD
91
ENTRY resume_pmm
92
resume_pmm:
93
redo_msgin2:
94
        JUMP get_msgin2, WHEN MSG_IN
95
        JUMP get_status, IF STATUS
96
        JUMP input_data, IF DATA_IN
97
        JUMP output_data, IF DATA_OUT
98
        INT int_cmd_bad_phase
99
 
100
get_status:
101
        ; Disable selection timer
102
        MOVE CTEST7 | 0x10 TO CTEST7
103
        MOVE FROM dsa_status, WHEN STATUS
104
        INT int_status_not_msgin, WHEN NOT MSG_IN
105
        MOVE FROM dsa_msgin, WHEN MSG_IN
106
        INT int_not_cmd_complete, IF NOT 0x00
107
        CLEAR ACK
108
ENTRY wait_disc_complete
109
wait_disc_complete:
110
        WAIT DISCONNECT
111
        INT int_cmd_complete
112
 
113
input_data:
114
        MOVE SCRATCH0 | had_datain TO SCRATCH0
115
ENTRY patch_input_data
116
patch_input_data:
117
        JUMP 0
118
        MOVE FROM dsa_datain+0x0000, WHEN DATA_IN
119
        MOVE FROM dsa_datain+0x0008, WHEN DATA_IN
120
        MOVE FROM dsa_datain+0x0010, WHEN DATA_IN
121
        MOVE FROM dsa_datain+0x0018, WHEN DATA_IN
122
        MOVE FROM dsa_datain+0x0020, WHEN DATA_IN
123
        MOVE FROM dsa_datain+0x0028, WHEN DATA_IN
124
        MOVE FROM dsa_datain+0x0030, WHEN DATA_IN
125
        MOVE FROM dsa_datain+0x0038, WHEN DATA_IN
126
        MOVE FROM dsa_datain+0x0040, WHEN DATA_IN
127
        MOVE FROM dsa_datain+0x0048, WHEN DATA_IN
128
        MOVE FROM dsa_datain+0x0050, WHEN DATA_IN
129
        MOVE FROM dsa_datain+0x0058, WHEN DATA_IN
130
        MOVE FROM dsa_datain+0x0060, WHEN DATA_IN
131
        MOVE FROM dsa_datain+0x0068, WHEN DATA_IN
132
        MOVE FROM dsa_datain+0x0070, WHEN DATA_IN
133
        MOVE FROM dsa_datain+0x0078, WHEN DATA_IN
134
        MOVE FROM dsa_datain+0x0080, WHEN DATA_IN
135
        MOVE FROM dsa_datain+0x0088, WHEN DATA_IN
136
        MOVE FROM dsa_datain+0x0090, WHEN DATA_IN
137
        MOVE FROM dsa_datain+0x0098, WHEN DATA_IN
138
        MOVE FROM dsa_datain+0x00a0, WHEN DATA_IN
139
        MOVE FROM dsa_datain+0x00a8, WHEN DATA_IN
140
        MOVE FROM dsa_datain+0x00b0, WHEN DATA_IN
141
        MOVE FROM dsa_datain+0x00b8, WHEN DATA_IN
142
        MOVE FROM dsa_datain+0x00c0, WHEN DATA_IN
143
        MOVE FROM dsa_datain+0x00c8, WHEN DATA_IN
144
        MOVE FROM dsa_datain+0x00d0, WHEN DATA_IN
145
        MOVE FROM dsa_datain+0x00d8, WHEN DATA_IN
146
        MOVE FROM dsa_datain+0x00e0, WHEN DATA_IN
147
        MOVE FROM dsa_datain+0x00e8, WHEN DATA_IN
148
        MOVE FROM dsa_datain+0x00f0, WHEN DATA_IN
149
        MOVE FROM dsa_datain+0x00f8, WHEN DATA_IN
150
        MOVE FROM dsa_datain+0x0100, WHEN DATA_IN
151
        MOVE FROM dsa_datain+0x0108, WHEN DATA_IN
152
        MOVE FROM dsa_datain+0x0110, WHEN DATA_IN
153
        MOVE FROM dsa_datain+0x0118, WHEN DATA_IN
154
        MOVE FROM dsa_datain+0x0120, WHEN DATA_IN
155
        MOVE FROM dsa_datain+0x0128, WHEN DATA_IN
156
        MOVE FROM dsa_datain+0x0130, WHEN DATA_IN
157
        MOVE FROM dsa_datain+0x0138, WHEN DATA_IN
158
        MOVE FROM dsa_datain+0x0140, WHEN DATA_IN
159
        MOVE FROM dsa_datain+0x0148, WHEN DATA_IN
160
        MOVE FROM dsa_datain+0x0150, WHEN DATA_IN
161
        MOVE FROM dsa_datain+0x0158, WHEN DATA_IN
162
        MOVE FROM dsa_datain+0x0160, WHEN DATA_IN
163
        MOVE FROM dsa_datain+0x0168, WHEN DATA_IN
164
        MOVE FROM dsa_datain+0x0170, WHEN DATA_IN
165
        MOVE FROM dsa_datain+0x0178, WHEN DATA_IN
166
        MOVE FROM dsa_datain+0x0180, WHEN DATA_IN
167
        MOVE FROM dsa_datain+0x0188, WHEN DATA_IN
168
        MOVE FROM dsa_datain+0x0190, WHEN DATA_IN
169
        MOVE FROM dsa_datain+0x0198, WHEN DATA_IN
170
        MOVE FROM dsa_datain+0x01a0, WHEN DATA_IN
171
        MOVE FROM dsa_datain+0x01a8, WHEN DATA_IN
172
        MOVE FROM dsa_datain+0x01b0, WHEN DATA_IN
173
        MOVE FROM dsa_datain+0x01b8, WHEN DATA_IN
174
        MOVE FROM dsa_datain+0x01c0, WHEN DATA_IN
175
        MOVE FROM dsa_datain+0x01c8, WHEN DATA_IN
176
        MOVE FROM dsa_datain+0x01d0, WHEN DATA_IN
177
        MOVE FROM dsa_datain+0x01d8, WHEN DATA_IN
178
        MOVE FROM dsa_datain+0x01e0, WHEN DATA_IN
179
        MOVE FROM dsa_datain+0x01e8, WHEN DATA_IN
180
        MOVE FROM dsa_datain+0x01f0, WHEN DATA_IN
181
        MOVE FROM dsa_datain+0x01f8, WHEN DATA_IN
182
        MOVE FROM dsa_datain+0x0200, WHEN DATA_IN
183
        MOVE FROM dsa_datain+0x0208, WHEN DATA_IN
184
        MOVE FROM dsa_datain+0x0210, WHEN DATA_IN
185
        MOVE FROM dsa_datain+0x0218, WHEN DATA_IN
186
        MOVE FROM dsa_datain+0x0220, WHEN DATA_IN
187
        MOVE FROM dsa_datain+0x0228, WHEN DATA_IN
188
        MOVE FROM dsa_datain+0x0230, WHEN DATA_IN
189
        MOVE FROM dsa_datain+0x0238, WHEN DATA_IN
190
        MOVE FROM dsa_datain+0x0240, WHEN DATA_IN
191
        MOVE FROM dsa_datain+0x0248, WHEN DATA_IN
192
        MOVE FROM dsa_datain+0x0250, WHEN DATA_IN
193
        MOVE FROM dsa_datain+0x0258, WHEN DATA_IN
194
        MOVE FROM dsa_datain+0x0260, WHEN DATA_IN
195
        MOVE FROM dsa_datain+0x0268, WHEN DATA_IN
196
        MOVE FROM dsa_datain+0x0270, WHEN DATA_IN
197
        MOVE FROM dsa_datain+0x0278, WHEN DATA_IN
198
        MOVE FROM dsa_datain+0x0280, WHEN DATA_IN
199
        MOVE FROM dsa_datain+0x0288, WHEN DATA_IN
200
        MOVE FROM dsa_datain+0x0290, WHEN DATA_IN
201
        MOVE FROM dsa_datain+0x0298, WHEN DATA_IN
202
        MOVE FROM dsa_datain+0x02a0, WHEN DATA_IN
203
        MOVE FROM dsa_datain+0x02a8, WHEN DATA_IN
204
        MOVE FROM dsa_datain+0x02b0, WHEN DATA_IN
205
        MOVE FROM dsa_datain+0x02b8, WHEN DATA_IN
206
        MOVE FROM dsa_datain+0x02c0, WHEN DATA_IN
207
        MOVE FROM dsa_datain+0x02c8, WHEN DATA_IN
208
        MOVE FROM dsa_datain+0x02d0, WHEN DATA_IN
209
        MOVE FROM dsa_datain+0x02d8, WHEN DATA_IN
210
        MOVE FROM dsa_datain+0x02e0, WHEN DATA_IN
211
        MOVE FROM dsa_datain+0x02e8, WHEN DATA_IN
212
        MOVE FROM dsa_datain+0x02f0, WHEN DATA_IN
213
        MOVE FROM dsa_datain+0x02f8, WHEN DATA_IN
214
        MOVE FROM dsa_datain+0x0300, WHEN DATA_IN
215
        MOVE FROM dsa_datain+0x0308, WHEN DATA_IN
216
        MOVE FROM dsa_datain+0x0310, WHEN DATA_IN
217
        MOVE FROM dsa_datain+0x0318, WHEN DATA_IN
218
        MOVE FROM dsa_datain+0x0320, WHEN DATA_IN
219
        MOVE FROM dsa_datain+0x0328, WHEN DATA_IN
220
        MOVE FROM dsa_datain+0x0330, WHEN DATA_IN
221
        MOVE FROM dsa_datain+0x0338, WHEN DATA_IN
222
        MOVE FROM dsa_datain+0x0340, WHEN DATA_IN
223
        MOVE FROM dsa_datain+0x0348, WHEN DATA_IN
224
        MOVE FROM dsa_datain+0x0350, WHEN DATA_IN
225
        MOVE FROM dsa_datain+0x0358, WHEN DATA_IN
226
        MOVE FROM dsa_datain+0x0360, WHEN DATA_IN
227
        MOVE FROM dsa_datain+0x0368, WHEN DATA_IN
228
        MOVE FROM dsa_datain+0x0370, WHEN DATA_IN
229
        MOVE FROM dsa_datain+0x0378, WHEN DATA_IN
230
        MOVE FROM dsa_datain+0x0380, WHEN DATA_IN
231
        MOVE FROM dsa_datain+0x0388, WHEN DATA_IN
232
        MOVE FROM dsa_datain+0x0390, WHEN DATA_IN
233
        MOVE FROM dsa_datain+0x0398, WHEN DATA_IN
234
        MOVE FROM dsa_datain+0x03a0, WHEN DATA_IN
235
        MOVE FROM dsa_datain+0x03a8, WHEN DATA_IN
236
        MOVE FROM dsa_datain+0x03b0, WHEN DATA_IN
237
        MOVE FROM dsa_datain+0x03b8, WHEN DATA_IN
238
        MOVE FROM dsa_datain+0x03c0, WHEN DATA_IN
239
        MOVE FROM dsa_datain+0x03c8, WHEN DATA_IN
240
        MOVE FROM dsa_datain+0x03d0, WHEN DATA_IN
241
        MOVE FROM dsa_datain+0x03d8, WHEN DATA_IN
242
        MOVE FROM dsa_datain+0x03e0, WHEN DATA_IN
243
        MOVE FROM dsa_datain+0x03e8, WHEN DATA_IN
244
        MOVE FROM dsa_datain+0x03f0, WHEN DATA_IN
245
        MOVE FROM dsa_datain+0x03f8, WHEN DATA_IN
246
        JUMP end_data_trans
247
 
248
output_data:
249
        MOVE SCRATCH0 | had_dataout TO SCRATCH0
250
ENTRY patch_output_data
251
patch_output_data:
252
        JUMP 0
253
        MOVE FROM dsa_dataout+0x0000, WHEN DATA_OUT
254
        MOVE FROM dsa_dataout+0x0008, WHEN DATA_OUT
255
        MOVE FROM dsa_dataout+0x0010, WHEN DATA_OUT
256
        MOVE FROM dsa_dataout+0x0018, WHEN DATA_OUT
257
        MOVE FROM dsa_dataout+0x0020, WHEN DATA_OUT
258
        MOVE FROM dsa_dataout+0x0028, WHEN DATA_OUT
259
        MOVE FROM dsa_dataout+0x0030, WHEN DATA_OUT
260
        MOVE FROM dsa_dataout+0x0038, WHEN DATA_OUT
261
        MOVE FROM dsa_dataout+0x0040, WHEN DATA_OUT
262
        MOVE FROM dsa_dataout+0x0048, WHEN DATA_OUT
263
        MOVE FROM dsa_dataout+0x0050, WHEN DATA_OUT
264
        MOVE FROM dsa_dataout+0x0058, WHEN DATA_OUT
265
        MOVE FROM dsa_dataout+0x0060, WHEN DATA_OUT
266
        MOVE FROM dsa_dataout+0x0068, WHEN DATA_OUT
267
        MOVE FROM dsa_dataout+0x0070, WHEN DATA_OUT
268
        MOVE FROM dsa_dataout+0x0078, WHEN DATA_OUT
269
        MOVE FROM dsa_dataout+0x0080, WHEN DATA_OUT
270
        MOVE FROM dsa_dataout+0x0088, WHEN DATA_OUT
271
        MOVE FROM dsa_dataout+0x0090, WHEN DATA_OUT
272
        MOVE FROM dsa_dataout+0x0098, WHEN DATA_OUT
273
        MOVE FROM dsa_dataout+0x00a0, WHEN DATA_OUT
274
        MOVE FROM dsa_dataout+0x00a8, WHEN DATA_OUT
275
        MOVE FROM dsa_dataout+0x00b0, WHEN DATA_OUT
276
        MOVE FROM dsa_dataout+0x00b8, WHEN DATA_OUT
277
        MOVE FROM dsa_dataout+0x00c0, WHEN DATA_OUT
278
        MOVE FROM dsa_dataout+0x00c8, WHEN DATA_OUT
279
        MOVE FROM dsa_dataout+0x00d0, WHEN DATA_OUT
280
        MOVE FROM dsa_dataout+0x00d8, WHEN DATA_OUT
281
        MOVE FROM dsa_dataout+0x00e0, WHEN DATA_OUT
282
        MOVE FROM dsa_dataout+0x00e8, WHEN DATA_OUT
283
        MOVE FROM dsa_dataout+0x00f0, WHEN DATA_OUT
284
        MOVE FROM dsa_dataout+0x00f8, WHEN DATA_OUT
285
        MOVE FROM dsa_dataout+0x0100, WHEN DATA_OUT
286
        MOVE FROM dsa_dataout+0x0108, WHEN DATA_OUT
287
        MOVE FROM dsa_dataout+0x0110, WHEN DATA_OUT
288
        MOVE FROM dsa_dataout+0x0118, WHEN DATA_OUT
289
        MOVE FROM dsa_dataout+0x0120, WHEN DATA_OUT
290
        MOVE FROM dsa_dataout+0x0128, WHEN DATA_OUT
291
        MOVE FROM dsa_dataout+0x0130, WHEN DATA_OUT
292
        MOVE FROM dsa_dataout+0x0138, WHEN DATA_OUT
293
        MOVE FROM dsa_dataout+0x0140, WHEN DATA_OUT
294
        MOVE FROM dsa_dataout+0x0148, WHEN DATA_OUT
295
        MOVE FROM dsa_dataout+0x0150, WHEN DATA_OUT
296
        MOVE FROM dsa_dataout+0x0158, WHEN DATA_OUT
297
        MOVE FROM dsa_dataout+0x0160, WHEN DATA_OUT
298
        MOVE FROM dsa_dataout+0x0168, WHEN DATA_OUT
299
        MOVE FROM dsa_dataout+0x0170, WHEN DATA_OUT
300
        MOVE FROM dsa_dataout+0x0178, WHEN DATA_OUT
301
        MOVE FROM dsa_dataout+0x0180, WHEN DATA_OUT
302
        MOVE FROM dsa_dataout+0x0188, WHEN DATA_OUT
303
        MOVE FROM dsa_dataout+0x0190, WHEN DATA_OUT
304
        MOVE FROM dsa_dataout+0x0198, WHEN DATA_OUT
305
        MOVE FROM dsa_dataout+0x01a0, WHEN DATA_OUT
306
        MOVE FROM dsa_dataout+0x01a8, WHEN DATA_OUT
307
        MOVE FROM dsa_dataout+0x01b0, WHEN DATA_OUT
308
        MOVE FROM dsa_dataout+0x01b8, WHEN DATA_OUT
309
        MOVE FROM dsa_dataout+0x01c0, WHEN DATA_OUT
310
        MOVE FROM dsa_dataout+0x01c8, WHEN DATA_OUT
311
        MOVE FROM dsa_dataout+0x01d0, WHEN DATA_OUT
312
        MOVE FROM dsa_dataout+0x01d8, WHEN DATA_OUT
313
        MOVE FROM dsa_dataout+0x01e0, WHEN DATA_OUT
314
        MOVE FROM dsa_dataout+0x01e8, WHEN DATA_OUT
315
        MOVE FROM dsa_dataout+0x01f0, WHEN DATA_OUT
316
        MOVE FROM dsa_dataout+0x01f8, WHEN DATA_OUT
317
        MOVE FROM dsa_dataout+0x0200, WHEN DATA_OUT
318
        MOVE FROM dsa_dataout+0x0208, WHEN DATA_OUT
319
        MOVE FROM dsa_dataout+0x0210, WHEN DATA_OUT
320
        MOVE FROM dsa_dataout+0x0218, WHEN DATA_OUT
321
        MOVE FROM dsa_dataout+0x0220, WHEN DATA_OUT
322
        MOVE FROM dsa_dataout+0x0228, WHEN DATA_OUT
323
        MOVE FROM dsa_dataout+0x0230, WHEN DATA_OUT
324
        MOVE FROM dsa_dataout+0x0238, WHEN DATA_OUT
325
        MOVE FROM dsa_dataout+0x0240, WHEN DATA_OUT
326
        MOVE FROM dsa_dataout+0x0248, WHEN DATA_OUT
327
        MOVE FROM dsa_dataout+0x0250, WHEN DATA_OUT
328
        MOVE FROM dsa_dataout+0x0258, WHEN DATA_OUT
329
        MOVE FROM dsa_dataout+0x0260, WHEN DATA_OUT
330
        MOVE FROM dsa_dataout+0x0268, WHEN DATA_OUT
331
        MOVE FROM dsa_dataout+0x0270, WHEN DATA_OUT
332
        MOVE FROM dsa_dataout+0x0278, WHEN DATA_OUT
333
        MOVE FROM dsa_dataout+0x0280, WHEN DATA_OUT
334
        MOVE FROM dsa_dataout+0x0288, WHEN DATA_OUT
335
        MOVE FROM dsa_dataout+0x0290, WHEN DATA_OUT
336
        MOVE FROM dsa_dataout+0x0298, WHEN DATA_OUT
337
        MOVE FROM dsa_dataout+0x02a0, WHEN DATA_OUT
338
        MOVE FROM dsa_dataout+0x02a8, WHEN DATA_OUT
339
        MOVE FROM dsa_dataout+0x02b0, WHEN DATA_OUT
340
        MOVE FROM dsa_dataout+0x02b8, WHEN DATA_OUT
341
        MOVE FROM dsa_dataout+0x02c0, WHEN DATA_OUT
342
        MOVE FROM dsa_dataout+0x02c8, WHEN DATA_OUT
343
        MOVE FROM dsa_dataout+0x02d0, WHEN DATA_OUT
344
        MOVE FROM dsa_dataout+0x02d8, WHEN DATA_OUT
345
        MOVE FROM dsa_dataout+0x02e0, WHEN DATA_OUT
346
        MOVE FROM dsa_dataout+0x02e8, WHEN DATA_OUT
347
        MOVE FROM dsa_dataout+0x02f0, WHEN DATA_OUT
348
        MOVE FROM dsa_dataout+0x02f8, WHEN DATA_OUT
349
        MOVE FROM dsa_dataout+0x0300, WHEN DATA_OUT
350
        MOVE FROM dsa_dataout+0x0308, WHEN DATA_OUT
351
        MOVE FROM dsa_dataout+0x0310, WHEN DATA_OUT
352
        MOVE FROM dsa_dataout+0x0318, WHEN DATA_OUT
353
        MOVE FROM dsa_dataout+0x0320, WHEN DATA_OUT
354
        MOVE FROM dsa_dataout+0x0328, WHEN DATA_OUT
355
        MOVE FROM dsa_dataout+0x0330, WHEN DATA_OUT
356
        MOVE FROM dsa_dataout+0x0338, WHEN DATA_OUT
357
        MOVE FROM dsa_dataout+0x0340, WHEN DATA_OUT
358
        MOVE FROM dsa_dataout+0x0348, WHEN DATA_OUT
359
        MOVE FROM dsa_dataout+0x0350, WHEN DATA_OUT
360
        MOVE FROM dsa_dataout+0x0358, WHEN DATA_OUT
361
        MOVE FROM dsa_dataout+0x0360, WHEN DATA_OUT
362
        MOVE FROM dsa_dataout+0x0368, WHEN DATA_OUT
363
        MOVE FROM dsa_dataout+0x0370, WHEN DATA_OUT
364
        MOVE FROM dsa_dataout+0x0378, WHEN DATA_OUT
365
        MOVE FROM dsa_dataout+0x0380, WHEN DATA_OUT
366
        MOVE FROM dsa_dataout+0x0388, WHEN DATA_OUT
367
        MOVE FROM dsa_dataout+0x0390, WHEN DATA_OUT
368
        MOVE FROM dsa_dataout+0x0398, WHEN DATA_OUT
369
        MOVE FROM dsa_dataout+0x03a0, WHEN DATA_OUT
370
        MOVE FROM dsa_dataout+0x03a8, WHEN DATA_OUT
371
        MOVE FROM dsa_dataout+0x03b0, WHEN DATA_OUT
372
        MOVE FROM dsa_dataout+0x03b8, WHEN DATA_OUT
373
        MOVE FROM dsa_dataout+0x03c0, WHEN DATA_OUT
374
        MOVE FROM dsa_dataout+0x03c8, WHEN DATA_OUT
375
        MOVE FROM dsa_dataout+0x03d0, WHEN DATA_OUT
376
        MOVE FROM dsa_dataout+0x03d8, WHEN DATA_OUT
377
        MOVE FROM dsa_dataout+0x03e0, WHEN DATA_OUT
378
        MOVE FROM dsa_dataout+0x03e8, WHEN DATA_OUT
379
        MOVE FROM dsa_dataout+0x03f0, WHEN DATA_OUT
380
        MOVE FROM dsa_dataout+0x03f8, WHEN DATA_OUT
381
ENTRY end_data_trans
382
end_data_trans:
383
redo_msgin3:
384
        JUMP get_status, WHEN STATUS
385
        JUMP get_msgin3, WHEN MSG_IN
386
        INT int_data_bad_phase
387
 
388
get_msgin1:
389
        MOVE SCRATCH0 | had_msgin TO SCRATCH0
390
        MOVE 1, msgin_buf, WHEN MSG_IN
391
        JUMP ext_msg1, IF 0x01          ; Extended Message
392
        JUMP ignore_msg1, IF 0x02       ; Save Data Pointers
393
        JUMP ignore_msg1, IF 0x03       ; Save Restore Pointers
394
        JUMP disc1, IF 0x04             ; Disconnect
395
        INT int_bad_msg1
396
ignore_msg1:
397
        CLEAR ACK
398
        JUMP redo_msgin1
399
ext_msg1:
400
        MOVE SCRATCH0 | had_extmsg TO SCRATCH0
401
        CLEAR ACK
402
        MOVE 1, msgin_buf + 1, WHEN MSG_IN
403
        JUMP reject_msg1, IF NOT 0x03   ; Only handle SDTR
404
        CLEAR ACK
405
        MOVE 1, msgin_buf + 2, WHEN MSG_IN
406
        JUMP reject_msg1, IF NOT 0x01   ; Only handle SDTR
407
        CLEAR ACK
408
        MOVE 2, msgin_buf + 3, WHEN MSG_IN
409
        INT int_msg_sdtr1
410
reject_msg1:
411
        MOVE SCRATCH1 | did_reject TO SCRATCH1
412
        SET ATN
413
        CLEAR ACK
414
        JUMP reject_msg1a, WHEN NOT MSG_IN
415
        MOVE 1, msgin_buf + 7, WHEN MSG_IN
416
        JUMP reject_msg1
417
reject_msg1a:
418
        MOVE 1, msg_reject, WHEN MSG_OUT
419
        JUMP redo_msgin1
420
disc1:
421
        CLEAR ACK
422
ENTRY wait_disc1
423
wait_disc1:
424
        WAIT DISCONNECT
425
        INT int_disc1
426
ENTRY resume_msgin1a
427
resume_msgin1a:
428
        CLEAR ACK
429
        JUMP redo_msgin1
430
ENTRY resume_msgin1b
431
resume_msgin1b:
432
        SET ATN
433
        CLEAR ACK
434
        INT int_no_msgout1, WHEN NOT MSG_OUT
435
        MOVE SCRATCH0 | had_msgout TO SCRATCH0
436
        MOVE FROM dsa_msgout, when MSG_OUT
437
        JUMP redo_msgin1
438
 
439
get_msgin2:
440
        MOVE SCRATCH0 | had_msgin TO SCRATCH0
441
        MOVE 1, msgin_buf, WHEN MSG_IN
442
        JUMP ext_msg2, IF 0x01          ; Extended Message
443
        JUMP ignore_msg2, IF 0x02       ; Save Data Pointers
444
        JUMP ignore_msg2, IF 0x03       ; Save Restore Pointers
445
        JUMP disc2, IF 0x04             ; Disconnect
446
        INT int_bad_msg2
447
ignore_msg2:
448
        CLEAR ACK
449
        JUMP redo_msgin2
450
ext_msg2:
451
        MOVE SCRATCH0 | had_extmsg TO SCRATCH0
452
        CLEAR ACK
453
        MOVE 1, msgin_buf + 1, WHEN MSG_IN
454
        JUMP reject_msg2, IF NOT 0x03   ; Only handle SDTR
455
        CLEAR ACK
456
        MOVE 1, msgin_buf + 2, WHEN MSG_IN
457
        JUMP reject_msg2, IF NOT 0x01   ; Only handle SDTR
458
        CLEAR ACK
459
        MOVE 2, msgin_buf + 3, WHEN MSG_IN
460
        INT int_msg_sdtr2
461
reject_msg2:
462
        MOVE SCRATCH1 | did_reject TO SCRATCH1
463
        SET ATN
464
        CLEAR ACK
465
        JUMP reject_msg2a, WHEN NOT MSG_IN
466
        MOVE 1, msgin_buf + 7, WHEN MSG_IN
467
        JUMP reject_msg2
468
reject_msg2a:
469
        MOVE 1, msg_reject, WHEN MSG_OUT
470
        JUMP redo_msgin2
471
disc2:
472
        CLEAR ACK
473
ENTRY wait_disc2
474
wait_disc2:
475
        WAIT DISCONNECT
476
        INT int_disc2
477
ENTRY resume_msgin2a
478
resume_msgin2a:
479
        CLEAR ACK
480
        JUMP redo_msgin2
481
ENTRY resume_msgin2b
482
resume_msgin2b:
483
        SET ATN
484
        CLEAR ACK
485
        INT int_no_msgout2, WHEN NOT MSG_OUT
486
        MOVE SCRATCH0 | had_msgout TO SCRATCH0
487
        MOVE FROM dsa_msgout, when MSG_OUT
488
        JUMP redo_msgin2
489
 
490
get_msgin3:
491
        MOVE SCRATCH0 | had_msgin TO SCRATCH0
492
        MOVE 1, msgin_buf, WHEN MSG_IN
493
        JUMP ext_msg3, IF 0x01          ; Extended Message
494
        JUMP ignore_msg3, IF 0x02       ; Save Data Pointers
495
        JUMP ignore_msg3, IF 0x03       ; Save Restore Pointers
496
        JUMP disc3, IF 0x04             ; Disconnect
497
        INT int_bad_msg3
498
ignore_msg3:
499
        CLEAR ACK
500
        JUMP redo_msgin3
501
ext_msg3:
502
        MOVE SCRATCH0 | had_extmsg TO SCRATCH0
503
        CLEAR ACK
504
        MOVE 1, msgin_buf + 1, WHEN MSG_IN
505
        JUMP reject_msg3, IF NOT 0x03   ; Only handle SDTR
506
        CLEAR ACK
507
        MOVE 1, msgin_buf + 2, WHEN MSG_IN
508
        JUMP reject_msg3, IF NOT 0x01   ; Only handle  SDTR
509
        CLEAR ACK
510
        MOVE 2, msgin_buf + 3, WHEN MSG_IN
511
        INT int_msg_sdtr3
512
reject_msg3:
513
        MOVE SCRATCH1 | did_reject TO SCRATCH1
514
        SET ATN
515
        CLEAR ACK
516
        JUMP reject_msg3a, WHEN NOT MSG_IN
517
        MOVE 1, msgin_buf + 7, WHEN MSG_IN
518
        JUMP reject_msg3
519
reject_msg3a:
520
        MOVE 1, msg_reject, WHEN MSG_OUT
521
        JUMP redo_msgin3
522
disc3:
523
        CLEAR ACK
524
ENTRY wait_disc3
525
wait_disc3:
526
        WAIT DISCONNECT
527
        INT int_disc3
528
ENTRY resume_msgin3a
529
resume_msgin3a:
530
        CLEAR ACK
531
        JUMP redo_msgin3
532
ENTRY resume_msgin3b
533
resume_msgin3b:
534
        SET ATN
535
        CLEAR ACK
536
        INT int_no_msgout3, WHEN NOT MSG_OUT
537
        MOVE SCRATCH0 | had_msgout TO SCRATCH0
538
        MOVE FROM dsa_msgout, when MSG_OUT
539
        JUMP redo_msgin3
540
 
541
ENTRY resume_rej_ident
542
resume_rej_ident:
543
        CLEAR ATN
544
        MOVE 1, msgin_buf, WHEN MSG_IN
545
        INT int_not_rej, IF NOT 0x07            ; Reject
546
        CLEAR ACK
547
        JUMP done_ident
548
 
549
ENTRY reselect
550
reselect:
551
        ; Disable selection timer
552
        MOVE CTEST7 | 0x10 TO CTEST7
553
        WAIT RESELECT resel_err
554
        INT int_resel_not_msgin, WHEN NOT MSG_IN
555
        MOVE 1, reselected_identify, WHEN MSG_IN
556
        INT int_reselected
557
resel_err:
558
        MOVE CTEST2 & 0x40 TO SFBR
559
        JUMP selected, IF 0x00
560
        MOVE SFBR & 0 TO SFBR
561
ENTRY patch_new_dsa
562
patch_new_dsa:
563
        MOVE SFBR | 0x11 TO DSA0
564
        MOVE SFBR | 0x22 TO DSA1
565
        MOVE SFBR | 0x33 TO DSA2
566
        MOVE SFBR | 0x44 TO DSA3
567
        JUMP do_select
568
 
569
selected:
570
        INT int_selected
571
 
572
ENTRY test1
573
test1:
574
        MOVE MEMORY 4, test1_src, test1_dst
575
        INT int_test1
576
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.