home *** CD-ROM | disk | FTP | other *** search
MacBinary | 1995-07-24 | 38.8 KB | [TEXT/MPCC] |
open in:
MacOS 8.1
|
Win98
|
DOS
browse contents |
view JSON data
|
view as text
This file was processed as: MacBinary
(archive/macBinary).
Confidence | Program | Detection | Match Type | Support
|
---|
66%
| dexvert
| Compact Compressed (Unix) (archive/compact)
| ext
| Supported |
10%
| dexvert
| MacBinary (archive/macBinary)
| fallback
| Supported |
1%
| dexvert
| Text File (text/txt)
| fallback
| Supported |
100%
| file
| MacBinary II, inited, Mon Jul 24 17:34:50 1995, modified Mon Jul 24 17:34:50 1995, creator 'MPCC', type ASCII, 39014 bytes "NCRRunScript.c" , at 0x98e6 456 bytes resource
| default (weak)
| |
99%
| file
| data
| default
| |
74%
| TrID
| Macintosh plain text (MacBinary)
| default
| |
25%
| TrID
| MacBinary 2
| default (weak)
| |
100%
| siegfried
| fmt/1762 MacBinary (II)
| default
| |
100%
| lsar
| MacBinary
| default
|
|
id metadata |
---|
key | value |
---|
macFileType | [TEXT] |
macFileCreator | [MPCC] |
hex view+--------+-------------------------+-------------------------+--------+--------+
|00000000| 00 0e 4e 43 52 52 75 6e | 53 63 72 69 70 74 2e 63 |..NCRRun|Script.c|
|00000010| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000020| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000030| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000040| 00 54 45 58 54 4d 50 43 | 43 01 00 00 00 00 00 00 |.TEXTMPC|C.......|
|00000050| 00 00 00 00 00 98 66 00 | 00 01 c8 ac 39 c2 7a ac |......f.|....9.z.|
|00000060| 39 c2 7a 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |9.z.....|........|
|00000070| 00 00 00 00 00 00 00 00 | 00 00 81 81 ae a6 00 00 |........|........|
|00000080| 2f 2a 09 09 09 09 09 09 | 09 09 09 09 4e 43 52 52 |/*......|....NCRR|
|00000090| 75 6e 53 63 72 69 70 74 | 2e 63 09 09 09 09 09 09 |unScript|.c......|
|000000a0| 09 09 2a 2f 0d 2f 2a 0d | 20 2a 20 4e 43 52 52 75 |..*/./*.| * NCRRu|
|000000b0| 6e 53 63 72 69 70 74 2e | 63 0d 20 2a 20 43 6f 70 |nScript.|c. * Cop|
|000000c0| 79 72 69 67 68 74 20 a9 | 20 31 39 39 34 20 41 70 |yright .| 1994 Ap|
|000000d0| 70 6c 65 20 43 6f 6d 70 | 75 74 65 72 20 49 6e 63 |ple Comp|uter Inc|
|000000e0| 2e 20 41 6c 6c 20 72 69 | 67 68 74 73 20 72 65 73 |. All ri|ghts res|
|000000f0| 65 72 76 65 64 2e 0d 20 | 2a 2f 0d 2f 2a 09 2e 5f |erved.. |*/./*.._|
|00000100| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00000110| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00000120| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00000130| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00000140| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00000150| 5f 5f 2e 0d 20 20 09 7c | 20 54 68 65 73 65 20 6c |__.. .|| These l|
|00000160| 6f 77 2d 6c 65 76 65 6c | 20 72 6f 75 74 69 6e 65 |ow-level| routine|
|00000170| 73 20 61 63 63 65 73 73 | 20 74 68 65 20 4e 43 52 |s access| the NCR|
|00000180| 20 35 33 43 38 32 35 20 | 63 68 69 70 20 72 65 67 | 53C825 |chip reg|
|00000190| 69 73 74 65 72 73 2e 20 | 54 68 65 79 20 73 74 61 |isters. |They sta|
|000001a0| 72 74 20 61 6e 09 09 7c | 0d 20 20 09 7c 20 61 73 |rt an..||. .| as|
|000001b0| 79 6e 63 68 72 6f 75 73 | 20 6f 70 65 72 61 74 69 |ynchrous| operati|
|000001c0| 6f 6e 20 28 65 69 74 68 | 65 72 20 61 20 67 65 6e |on (eith|er a gen|
|000001d0| 65 72 61 6c 20 53 43 53 | 49 20 49 2f 4f 20 72 65 |eral SCS|I I/O re|
|000001e0| 71 75 65 73 74 20 6f 72 | 20 61 20 42 75 73 20 52 |quest or| a Bus R|
|000001f0| 65 73 65 74 20 6f 70 65 | 72 61 74 69 6f 6e 29 09 |eset ope|ration).|
|00000200| 7c 0d 20 20 09 7c 20 61 | 6e 64 20 66 6f 6c 6c 6f ||. .| a|nd follo|
|00000210| 77 20 69 74 73 20 6f 70 | 65 72 61 74 69 6f 6e 20 |w its op|eration |
|00000220| 74 6f 20 74 68 65 20 62 | 69 74 74 65 72 20 65 6e |to the b|itter en|
|00000230| 64 2e 20 57 68 69 6c 65 | 20 74 68 65 20 6c 6f 67 |d. While| the log|
|00000240| 69 63 20 69 73 20 65 78 | 74 72 65 6d 65 6c 79 20 |ic is ex|tremely |
|00000250| 73 70 65 63 69 66 69 63 | 09 7c 0d 20 20 09 7c 20 |specific|.|. .| |
|00000260| 74 6f 20 74 68 65 20 4e | 43 52 20 63 68 69 70 2c |to the N|CR chip,|
|00000270| 20 79 6f 75 20 73 68 6f | 75 6c 64 20 61 74 20 6c | you sho|uld at l|
|00000280| 65 61 73 74 20 72 65 61 | 64 20 74 68 72 6f 75 67 |east rea|d throug|
|00000290| 68 20 74 68 69 73 20 66 | 69 6c 65 20 74 6f 20 75 |h this f|ile to u|
|000002a0| 6e 64 65 72 73 74 61 6e | 64 20 74 68 65 09 09 7c |nderstan|d the..||
|000002b0| 0d 20 20 09 7c 20 72 65 | 6c 61 74 69 6f 6e 20 62 |. .| re|lation b|
|000002c0| 65 74 77 65 65 6e 20 74 | 68 65 20 68 61 72 64 77 |etween t|he hardw|
|000002d0| 61 72 65 2d 73 70 65 63 | 69 66 69 63 20 63 6f 64 |are-spec|ific cod|
|000002e0| 65 20 61 6e 64 20 74 68 | 65 20 44 72 69 76 65 72 |e and th|e Driver|
|000002f0| 20 53 65 72 76 69 63 65 | 73 20 63 6f 64 65 2e 09 | Service|s code..|
|00000300| 09 09 7c 0d 09 7c 09 09 | 09 09 09 09 09 09 09 09 |..|..|..|........|
|00000310| 09 09 09 09 09 09 09 09 | 09 09 09 7c 0d 09 7c 20 |........|...|..| |
|00000320| 41 6c 6d 6f 73 74 20 65 | 76 65 72 79 74 68 69 6e |Almost e|verythin|
|00000330| 67 20 68 65 72 65 20 69 | 73 20 73 70 65 63 69 66 |g here i|s specif|
|00000340| 69 63 20 74 6f 20 74 68 | 65 20 4e 43 52 20 63 68 |ic to th|e NCR ch|
|00000350| 69 70 2e 20 54 68 65 20 | 77 61 74 63 68 64 6f 67 |ip. The |watchdog|
|00000360| 20 74 69 6d 65 6f 75 74 | 20 77 69 6c 6c 09 09 7c | timeout| will..||
|00000370| 0d 09 7c 20 62 65 20 67 | 65 6e 65 72 61 6c 6c 79 |..| be g|enerally|
|00000380| 20 75 73 65 66 75 6c 2e | 20 48 6f 77 65 76 65 72 | useful.| However|
|00000390| 2c 20 69 74 20 68 61 73 | 20 6e 6f 74 20 62 65 65 |, it has| not bee|
|000003a0| 6e 20 74 65 73 74 65 64 | 20 79 65 74 2e 09 09 09 |n tested| yet....|
|000003b0| 09 09 09 09 7c 0d 09 2e | 5f 5f 5f 5f 5f 5f 5f 5f |....|...|________|
|000003c0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|000003d0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|000003e0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|000003f0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00000400| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 2e 0d 2a 2f 0d |________|___..*/.|
|00000410| 0d 23 69 6e 63 6c 75 64 | 65 20 22 4e 43 52 44 72 |.#includ|e "NCRDr|
|00000420| 69 76 65 72 50 72 69 76 | 61 74 65 2e 68 22 0d 2f |iverPriv|ate.h"./|
|00000430| 2a 0d 20 2a 20 73 74 64 | 64 65 66 20 64 65 66 69 |*. * std|def defi|
|00000440| 6e 65 73 20 6f 66 66 73 | 65 74 6f 66 28 29 0d 20 |nes offs|etof(). |
|00000450| 2a 2f 0d 23 69 6e 63 6c | 75 64 65 20 3c 73 74 64 |*/.#incl|ude <std|
|00000460| 64 65 66 2e 68 3e 0d 2f | 2a 0d 20 2a 20 57 41 52 |def.h>./|*. * WAR|
|00000470| 4e 49 4e 47 3a 20 74 68 | 65 20 62 75 73 20 72 65 |NING: th|e bus re|
|00000480| 73 65 74 20 73 63 72 69 | 70 74 20 68 61 6e 67 73 |set scri|pt hangs|
|00000490| 20 69 66 20 79 6f 75 20 | 74 75 72 6e 20 6f 6e 20 | if you |turn on |
|000004a0| 73 69 6e 67 6c 65 2d 73 | 74 65 70 70 69 6e 67 2e |single-s|tepping.|
|000004b0| 20 49 20 73 75 73 70 65 | 63 74 20 74 68 61 74 0d | I suspe|ct that.|
|000004c0| 20 2a 20 49 27 6d 20 6e | 6f 74 20 68 61 6e 64 6c | * I'm n|ot handl|
|000004d0| 69 6e 67 20 6d 75 6c 74 | 69 70 6c 65 20 69 6e 74 |ing mult|iple int|
|000004e0| 65 72 72 75 70 74 20 63 | 6f 6e 64 69 74 69 6f 6e |errupt c|ondition|
|000004f0| 73 20 63 6f 72 72 65 63 | 74 6c 79 2e 20 49 20 22 |s correc|tly. I "|
|00000500| 66 69 78 65 64 22 20 74 | 68 69 73 20 62 79 20 75 |fixed" t|his by u|
|00000510| 73 69 6e 67 0d 20 2a 20 | 74 68 65 20 44 72 69 76 |sing. * |the Driv|
|00000520| 65 72 53 65 72 76 69 63 | 65 73 20 44 65 6c 61 79 |erServic|es Delay|
|00000530| 46 6f 72 48 61 72 64 77 | 61 72 65 20 72 6f 75 74 |ForHardw|are rout|
|00000540| 69 6e 65 20 74 6f 20 64 | 6f 20 62 75 73 20 72 65 |ine to d|o bus re|
|00000550| 73 65 74 20 64 65 6c 61 | 79 73 2e 20 48 6f 77 65 |set dela|ys. Howe|
|00000560| 76 65 72 2c 20 69 6e 0d | 20 2a 20 67 65 6e 65 72 |ver, in.| * gener|
|00000570| 61 6c 2c 20 79 6f 75 20 | 73 68 6f 75 6c 64 20 6e |al, you |should n|
|00000580| 6f 74 20 65 78 70 65 63 | 74 20 73 69 6e 67 6c 65 |ot expec|t single|
|00000590| 2d 73 74 65 70 20 74 6f | 20 77 6f 72 6b 20 63 6f |-step to| work co|
|000005a0| 72 72 65 63 74 6c 79 2e | 0d 20 2a 2f 0d 23 64 65 |rrectly.|. */.#de|
|000005b0| 66 69 6e 65 20 53 49 4e | 47 4c 45 5f 53 54 45 50 |fine SIN|GLE_STEP|
|000005c0| 09 09 09 09 30 09 2f 2a | 20 55 73 65 64 20 66 6f |....0./*| Used fo|
|000005d0| 72 20 64 65 62 75 67 67 | 69 6e 67 20 74 68 65 20 |r debugg|ing the |
|000005e0| 73 63 72 69 70 74 20 2a | 2f 0d 23 69 66 6e 64 65 |script *|/.#ifnde|
|000005f0| 66 20 53 49 4e 47 4c 45 | 5f 53 54 45 50 5f 44 45 |f SINGLE|_STEP_DE|
|00000600| 46 41 55 4c 54 0d 23 64 | 65 66 69 6e 65 20 53 49 |FAULT.#d|efine SI|
|00000610| 4e 47 4c 45 5f 53 54 45 | 50 5f 44 45 46 41 55 4c |NGLE_STE|P_DEFAUL|
|00000620| 54 09 09 30 0d 23 65 6e | 64 69 66 0d 0d 76 6f 69 |T..0.#en|dif..voi|
|00000630| 64 09 09 09 09 09 09 53 | 74 61 72 74 57 61 74 63 |d......S|tartWatc|
|00000640| 68 64 6f 67 54 69 6d 65 | 6f 75 74 28 0d 09 09 72 |hdogTime|out(...r|
|00000650| 65 67 69 73 74 65 72 20 | 50 65 72 52 65 71 75 65 |egister |PerReque|
|00000660| 73 74 44 61 74 61 50 74 | 72 20 70 65 72 52 65 71 |stDataPt|r perReq|
|00000670| 75 65 73 74 44 61 74 61 | 50 74 72 0d 09 29 3b 0d |uestData|Ptr..);.|
|00000680| 4f 53 53 74 61 74 75 73 | 09 09 09 09 09 57 61 74 |OSStatus|.....Wat|
|00000690| 63 68 64 6f 67 54 69 6d | 65 72 43 6f 6d 70 6c 65 |chdogTim|erComple|
|000006a0| 74 69 6f 6e 28 0d 09 09 | 76 6f 69 64 09 09 09 09 |tion(...|void....|
|000006b0| 09 2a 70 31 2c 0d 09 09 | 76 6f 69 64 09 09 09 09 |.*p1,...|void....|
|000006c0| 09 2a 70 32 0d 09 29 3b | 0d 76 6f 69 64 09 09 09 |.*p2..);|.void...|
|000006d0| 09 09 09 53 74 61 72 74 | 53 63 72 69 70 74 28 0d |...Start|Script(.|
|000006e0| 09 09 72 65 67 69 73 74 | 65 72 20 50 65 72 52 65 |..regist|er PerRe|
|000006f0| 71 75 65 73 74 44 61 74 | 61 50 74 72 20 70 65 72 |questDat|aPtr per|
|00000700| 52 65 71 75 65 73 74 44 | 61 74 61 50 74 72 2c 0d |RequestD|ataPtr,.|
|00000710| 09 09 55 49 6e 74 33 32 | 09 09 09 09 09 73 63 72 |..UInt32|.....scr|
|00000720| 69 70 74 50 74 72 0d 09 | 29 3b 0d 0d 23 64 65 66 |iptPtr..|);..#def|
|00000730| 69 6e 65 20 52 45 51 55 | 45 53 54 09 09 28 2a 70 |ine REQU|EST..(*p|
|00000740| 65 72 52 65 71 75 65 73 | 74 44 61 74 61 50 74 72 |erReques|tDataPtr|
|00000750| 29 0d 23 64 65 66 69 6e | 65 20 53 43 52 49 50 54 |).#defin|e SCRIPT|
|00000760| 09 09 28 52 45 51 55 45 | 53 54 2e 73 63 72 69 70 |..(REQUE|ST.scrip|
|00000770| 74 44 61 74 61 29 0d 23 | 64 65 66 69 6e 65 20 53 |tData).#|define S|
|00000780| 48 41 44 4f 57 09 09 28 | 52 45 51 55 45 53 54 2e |HADOW..(|REQUEST.|
|00000790| 73 68 61 64 6f 77 29 0d | 0d 4f 53 45 72 72 09 09 |shadow).|.OSErr..|
|000007a0| 09 09 09 09 53 74 6f 72 | 65 44 4d 41 50 61 72 61 |....Stor|eDMAPara|
|000007b0| 6d 65 74 65 72 73 28 0d | 09 09 50 65 72 52 65 71 |meters(.|..PerReq|
|000007c0| 75 65 73 74 44 61 74 61 | 50 74 72 09 09 70 65 72 |uestData|Ptr..per|
|000007d0| 52 65 71 75 65 73 74 44 | 61 74 61 50 74 72 0d 09 |RequestD|ataPtr..|
|000007e0| 29 3b 0d 0d 23 69 66 20 | 30 20 26 26 20 55 53 45 |);..#if |0 && USE|
|000007f0| 5f 4c 4f 47 5f 4c 49 42 | 52 41 52 59 0d 76 6f 69 |_LOG_LIB|RARY.voi|
|00000800| 64 09 09 09 09 09 09 4c | 6f 67 53 63 72 69 70 74 |d......L|ogScript|
|00000810| 49 6e 74 65 72 72 75 70 | 74 28 0d 09 09 72 65 67 |Interrup|t(...reg|
|00000820| 69 73 74 65 72 20 50 65 | 72 52 65 71 75 65 73 74 |ister Pe|rRequest|
|00000830| 44 61 74 61 50 74 72 20 | 70 65 72 52 65 71 75 65 |DataPtr |perReque|
|00000840| 73 74 44 61 74 61 50 74 | 72 0d 09 29 3b 0d 23 65 |stDataPt|r..);.#e|
|00000850| 6c 73 65 0d 23 64 65 66 | 69 6e 65 20 4c 6f 67 53 |lse.#def|ine LogS|
|00000860| 63 72 69 70 74 49 6e 74 | 65 72 72 75 70 74 28 70 |criptInt|errupt(p|
|00000870| 65 72 52 65 71 75 65 73 | 74 44 61 74 61 50 74 72 |erReques|tDataPtr|
|00000880| 29 20 2f 2a 20 4e 6f 74 | 68 69 6e 67 20 2a 2f 0d |) /* Not|hing */.|
|00000890| 23 65 6e 64 69 66 0d 0d | 23 69 66 20 55 53 45 5f |#endif..|#if USE_|
|000008a0| 4c 4f 47 5f 4c 49 42 52 | 41 52 59 0d 76 6f 69 64 |LOG_LIBR|ARY.void|
|000008b0| 09 09 09 09 09 09 44 75 | 6d 70 52 65 67 69 73 74 |......Du|mpRegist|
|000008c0| 65 72 73 28 0d 09 09 72 | 65 67 69 73 74 65 72 20 |ers(...r|egister |
|000008d0| 50 65 72 52 65 71 75 65 | 73 74 44 61 74 61 50 74 |PerReque|stDataPt|
|000008e0| 72 20 70 65 72 52 65 71 | 75 65 73 74 44 61 74 61 |r perReq|uestData|
|000008f0| 50 74 72 0d 09 29 3b 0d | 23 65 6c 73 65 0d 23 64 |Ptr..);.|#else.#d|
|00000900| 65 66 69 6e 65 20 44 75 | 6d 70 52 65 67 69 73 74 |efine Du|mpRegist|
|00000910| 65 72 73 28 70 65 72 52 | 65 71 75 65 73 74 44 61 |ers(perR|equestDa|
|00000920| 74 61 50 74 72 29 09 2f | 2a 20 4e 6f 74 68 69 6e |taPtr)./|* Nothin|
|00000930| 67 20 2a 2f 0d 23 65 6e | 64 69 66 0d 0d 0d 2f 2a |g */.#en|dif.../*|
|00000940| 20 2a 20 2a 20 2a 20 2a | 20 2a 20 2a 20 2a 20 2a | * * * *| * * * *|
|00000950| 20 2a 20 2a 20 2a 20 2a | 20 2a 20 2a 20 2a 20 2a | * * * *| * * * *|
|00000960| 20 2a 20 2a 20 2a 20 2a | 20 2a 20 2a 20 2a 20 2a | * * * *| * * * *|
|00000970| 20 2a 20 2a 20 2a 20 2a | 20 2a 20 2a 20 2a 20 2a | * * * *| * * * *|
|00000980| 20 2a 20 2a 20 2a 20 2a | 20 2a 20 2a 20 2a 20 2a | * * * *| * * * *|
|00000990| 20 2a 20 2a 0d 20 2a 20 | 54 68 69 73 20 69 73 20 | * *. * |This is |
|000009a0| 74 68 65 20 70 72 69 6d | 61 72 79 20 69 6e 74 65 |the prim|ary inte|
|000009b0| 72 72 75 70 74 20 73 65 | 72 76 69 63 65 20 72 6f |rrupt se|rvice ro|
|000009c0| 75 74 69 6e 65 20 74 68 | 61 74 20 69 73 20 63 61 |utine th|at is ca|
|000009d0| 6c 6c 65 64 20 62 79 20 | 74 68 65 20 73 79 73 74 |lled by |the syst|
|000009e0| 65 6d 2e 20 49 6e 70 75 | 74 0d 20 2a 20 70 61 72 |em. Inpu|t. * par|
|000009f0| 61 6d 65 74 65 72 73 20 | 61 72 65 20 69 67 6e 6f |ameters |are igno|
|00000a00| 72 65 64 2e 0d 20 2a 0d | 20 2a 20 54 68 69 73 20 |red.. *.| * This |
|00000a10| 73 75 62 72 6f 75 74 69 | 6e 65 20 68 61 6e 64 6c |subrouti|ne handl|
|00000a20| 65 73 20 74 68 65 20 69 | 6e 74 65 72 72 75 70 74 |es the i|nterrupt|
|00000a30| 20 66 72 6f 6d 20 74 68 | 65 20 4e 43 52 20 63 68 | from th|e NCR ch|
|00000a40| 69 70 2e 20 54 68 65 20 | 6c 6f 67 69 63 20 69 73 |ip. The |logic is|
|00000a50| 20 66 72 6f 6d 20 74 68 | 65 0d 20 2a 20 4e 43 52 | from th|e. * NCR|
|00000a60| 20 46 61 6d 69 6c 79 20 | 50 72 6f 67 72 61 6d 6d | Family |Programm|
|00000a70| 65 72 73 20 47 75 69 64 | 65 2c 20 70 61 67 65 20 |ers Guid|e, page |
|00000a80| 38 2d 33 30 20 66 66 2e | 0d 20 2a 0d 20 2a 20 4e |8-30 ff.|. *. * N|
|00000a90| 6f 74 65 20 74 68 61 74 | 20 77 65 20 6d 75 73 74 |ote that| we must|
|00000aa0| 20 68 61 6e 64 6c 65 20 | 70 68 61 73 65 2d 6d 69 | handle |phase-mi|
|00000ab0| 73 6d 61 74 63 68 20 65 | 72 72 6f 72 73 20 68 65 |smatch e|rrors he|
|00000ac0| 72 65 2e 20 49 6e 20 70 | 61 72 74 69 63 75 6c 61 |re. In p|articula|
|00000ad0| 72 2c 20 77 65 20 6d 75 | 73 74 20 68 61 6e 64 6c |r, we mu|st handl|
|00000ae0| 65 0d 20 2a 20 72 65 73 | 69 64 75 61 6c 20 62 79 |e. * res|idual by|
|00000af0| 74 65 20 63 6f 75 6e 74 | 20 70 72 6f 62 6c 65 6d |te count| problem|
|00000b00| 73 20 28 52 65 71 75 65 | 73 74 20 53 65 6e 73 65 |s (Reque|st Sense|
|00000b10| 20 77 69 74 68 20 61 20 | 6c 61 72 67 65 72 20 62 | with a |larger b|
|00000b20| 75 66 66 65 72 20 74 68 | 61 6e 20 74 68 65 0d 20 |uffer th|an the. |
|00000b30| 2a 20 64 65 76 69 63 65 | 20 70 6c 61 6e 73 20 74 |* device| plans t|
|00000b40| 6f 20 64 65 6c 69 76 65 | 72 29 20 61 73 20 74 68 |o delive|r) as th|
|00000b50| 65 79 20 61 72 65 20 6e | 6f 74 20 66 61 74 61 6c |ey are n|ot fatal|
|00000b60| 20 65 72 72 6f 72 73 2e | 0d 20 2a 2f 0d 49 6e 74 | errors.|. */.Int|
|00000b70| 65 72 72 75 70 74 4d 65 | 6d 62 65 72 4e 75 6d 62 |erruptMe|mberNumb|
|00000b80| 65 72 0d 50 43 49 49 6e | 74 65 72 72 75 70 74 53 |er.PCIIn|terruptS|
|00000b90| 65 72 76 69 63 65 52 6f | 75 74 69 6e 65 28 0d 09 |erviceRo|utine(..|
|00000ba0| 09 49 6e 74 65 72 72 75 | 70 74 53 65 74 4d 65 6d |.Interru|ptSetMem|
|00000bb0| 62 65 72 09 09 6d 65 6d | 62 65 72 2c 0d 09 09 76 |ber..mem|ber,...v|
|00000bc0| 6f 69 64 09 09 09 09 09 | 2a 72 65 66 43 6f 6e 2c |oid.....|*refCon,|
|00000bd0| 0d 09 09 55 49 6e 74 33 | 32 09 09 09 09 09 74 68 |...UInt3|2.....th|
|00000be0| 65 49 6e 74 43 6f 75 6e | 74 0d 09 29 0d 7b 0d 09 |eIntCoun|t..).{..|
|00000bf0| 09 4f 53 45 72 72 09 09 | 09 09 09 73 74 61 74 75 |.OSErr..|...statu|
|00000c00| 73 3b 0d 09 09 72 65 67 | 69 73 74 65 72 20 50 65 |s;...reg|ister Pe|
|00000c10| 72 52 65 71 75 65 73 74 | 44 61 74 61 50 74 72 20 |rRequest|DataPtr |
|00000c20| 70 65 72 52 65 71 75 65 | 73 74 44 61 74 61 50 74 |perReque|stDataPt|
|00000c30| 72 3b 0d 09 09 75 6e 73 | 69 67 6e 65 64 20 73 68 |r;...uns|igned sh|
|00000c40| 6f 72 74 09 09 09 6f 6c | 64 50 68 61 73 65 3b 0d |ort...ol|dPhase;.|
|00000c50| 09 09 49 6e 74 65 72 72 | 75 70 74 4d 65 6d 62 65 |..Interr|uptMembe|
|00000c60| 72 4e 75 6d 62 65 72 09 | 72 65 73 75 6c 74 3b 0d |rNumber.|result;.|
|00000c70| 09 09 49 4f 50 61 72 61 | 6d 09 09 09 09 09 2a 70 |..IOPara|m.....*p|
|00000c80| 62 3b 0d 09 09 4e 43 52 | 53 43 53 49 50 61 72 61 |b;...NCR|SCSIPara|
|00000c90| 6d 50 74 72 09 09 09 73 | 63 73 69 50 61 72 61 6d |mPtr...s|csiParam|
|00000ca0| 50 74 72 3b 0d 09 09 73 | 68 6f 72 74 09 09 09 09 |Ptr;...s|hort....|
|00000cb0| 09 73 74 61 6c 6c 4c 6f | 6f 70 3b 0d 09 09 73 74 |.stallLo|op;...st|
|00000cc0| 61 74 69 63 20 63 6f 6e | 73 74 20 4e 61 6e 6f 73 |atic con|st Nanos|
|00000cd0| 65 63 6f 6e 64 73 20 67 | 54 65 6e 4d 73 65 63 20 |econds g|TenMsec |
|00000ce0| 3d 20 7b 20 30 2c 20 31 | 30 30 30 30 30 30 30 20 |= { 0, 1|0000000 |
|00000cf0| 7d 3b 0d 23 64 65 66 69 | 6e 65 20 50 42 09 09 28 |};.#defi|ne PB..(|
|00000d00| 2a 70 62 29 0d 23 64 65 | 66 69 6e 65 20 53 43 53 |*pb).#de|fine SCS|
|00000d10| 49 09 28 2a 73 63 73 69 | 50 61 72 61 6d 50 74 72 |I.(*scsi|ParamPtr|
|00000d20| 29 0d 0d 09 09 54 69 6d | 65 73 74 61 6d 70 28 27 |)....Tim|estamp('|
|00000d30| 44 4d 41 2d 27 29 3b 0d | 09 09 54 72 61 63 65 28 |DMA-');.|..Trace(|
|00000d40| 50 43 49 49 6e 74 65 72 | 72 75 70 74 53 65 72 76 |PCIInter|ruptServ|
|00000d50| 69 63 65 52 6f 75 74 69 | 6e 65 29 3b 0d 09 09 55 |iceRouti|ne);...U|
|00000d60| 4e 55 53 45 44 28 6d 65 | 6d 62 65 72 29 3b 0d 09 |NUSED(me|mber);..|
|00000d70| 09 55 4e 55 53 45 44 28 | 72 65 66 43 6f 6e 29 3b |.UNUSED(|refCon);|
|00000d80| 0d 09 09 55 4e 55 53 45 | 44 28 74 68 65 49 6e 74 |...UNUSE|D(theInt|
|00000d90| 43 6f 75 6e 74 29 3b 0d | 09 09 2f 2a 0d 09 09 20 |Count);.|../*... |
|00000da0| 2a 20 57 65 20 73 68 6f | 75 6c 64 20 74 72 79 20 |* We sho|uld try |
|00000db0| 74 6f 20 65 73 74 61 62 | 6c 69 73 68 20 77 68 69 |to estab|lish whi|
|00000dc0| 63 68 20 22 70 65 72 2d | 72 65 71 75 65 73 74 22 |ch "per-|request"|
|00000dd0| 20 69 6e 74 65 72 72 75 | 70 74 65 64 20 74 68 65 | interru|pted the|
|00000de0| 20 70 72 6f 63 65 73 73 | 6f 72 2e 0d 09 09 20 2a | process|or.... *|
|00000df0| 20 43 75 72 72 65 6e 74 | 6c 79 2c 20 77 65 20 73 | Current|ly, we s|
|00000e00| 75 70 70 6f 72 74 20 6f | 6e 6c 79 20 61 20 73 69 |upport o|nly a si|
|00000e10| 6e 67 6c 65 20 74 72 61 | 6e 73 66 65 72 2c 20 62 |ngle tra|nsfer, b|
|00000e20| 75 74 20 74 68 69 73 20 | 72 6f 75 74 69 6e 65 20 |ut this |routine |
|00000e30| 77 69 6c 6c 20 68 61 76 | 65 20 74 6f 0d 09 09 20 |will hav|e to... |
|00000e40| 2a 20 67 65 74 20 6d 6f | 72 65 20 63 6f 6d 70 6c |* get mo|re compl|
|00000e50| 65 78 20 28 62 79 20 71 | 75 65 72 79 69 6e 67 20 |ex (by q|uerying |
|00000e60| 74 68 65 20 4e 43 52 20 | 63 68 69 70 29 20 77 68 |the NCR |chip) wh|
|00000e70| 65 6e 20 77 65 20 73 75 | 70 70 6f 72 74 20 73 75 |en we su|pport su|
|00000e80| 73 70 65 6e 64 2d 72 65 | 73 75 6d 65 0d 09 09 20 |spend-re|sume... |
|00000e90| 2a 20 6f 72 20 74 61 67 | 67 65 64 20 63 6f 6d 6d |* or tag|ged comm|
|00000ea0| 61 6e 64 73 2e 20 46 6f | 72 20 65 78 61 6d 70 6c |ands. Fo|r exampl|
|00000eb0| 65 2c 20 77 65 20 63 6f | 75 6c 64 20 75 73 65 20 |e, we co|uld use |
|00000ec0| 74 68 65 20 64 61 74 61 | 20 73 74 6f 72 61 67 65 |the data| storage|
|00000ed0| 20 61 64 64 72 65 73 73 | 2e 0d 09 09 20 2a 20 54 | address|.... * T|
|00000ee0| 68 65 20 61 63 74 75 61 | 6c 20 69 6e 74 65 72 72 |he actua|l interr|
|00000ef0| 75 70 74 20 69 73 20 70 | 72 6f 63 65 73 73 65 64 |upt is p|rocessed|
|00000f00| 20 62 79 20 61 20 70 72 | 69 6d 61 72 79 20 69 6e | by a pr|imary in|
|00000f10| 74 65 72 72 75 70 74 20 | 72 6f 75 74 69 6e 65 2e |terrupt |routine.|
|00000f20| 20 57 68 65 6e 20 74 68 | 65 0d 09 09 20 2a 20 49 | When th|e... * I|
|00000f30| 2f 4f 20 6f 70 65 72 61 | 74 69 6f 6e 20 69 73 20 |/O opera|tion is |
|00000f40| 63 6f 6d 70 6c 65 74 65 | 64 2c 20 69 74 20 71 75 |complete|d, it qu|
|00000f50| 65 75 65 73 20 61 20 73 | 65 63 6f 6e 64 61 72 79 |eues a s|econdary|
|00000f60| 20 69 6e 74 65 72 72 75 | 70 74 20 72 6f 75 74 69 | interru|pt routi|
|00000f70| 6e 65 20 74 68 61 74 0d | 09 09 20 2a 20 66 72 65 |ne that.|.. * fre|
|00000f80| 65 73 20 72 65 73 6f 75 | 72 63 65 73 20 61 6e 64 |es resou|rces and|
|00000f90| 20 63 61 6c 6c 73 20 49 | 4f 43 6f 6d 6d 61 6e 64 | calls I|OCommand|
|00000fa0| 49 73 43 6f 6d 70 6c 65 | 74 65 2e 20 0d 09 09 20 |IsComple|te. ... |
|00000fb0| 2a 2f 0d 09 09 70 65 72 | 52 65 71 75 65 73 74 44 |*/...per|RequestD|
|00000fc0| 61 74 61 50 74 72 20 3d | 20 47 4c 4f 42 41 4c 2e |ataPtr =| GLOBAL.|
|00000fd0| 70 65 72 52 65 71 75 65 | 73 74 44 61 74 61 50 74 |perReque|stDataPt|
|00000fe0| 72 3b 0d 09 09 2f 2a 0d | 09 09 20 2a 20 54 68 65 |r;.../*.|.. * The|
|00000ff0| 73 65 20 61 72 65 20 6f | 6e 6c 79 20 6e 65 65 64 |se are o|nly need|
|00001000| 65 64 20 66 6f 72 20 72 | 65 2d 70 72 65 70 61 72 |ed for r|e-prepar|
|00001010| 61 74 69 6f 6e 2e 0d 09 | 09 20 2a 2f 0d 09 09 70 |ation...|. */...p|
|00001020| 62 20 3d 20 28 49 4f 50 | 61 72 61 6d 20 2a 29 20 |b = (IOP|aram *) |
|00001030| 52 45 51 55 45 53 54 2e | 70 62 3b 09 09 09 09 09 |REQUEST.|pb;.....|
|00001040| 2f 2a 20 70 62 20 63 61 | 6e 20 62 65 20 4e 55 4c |/* pb ca|n be NUL|
|00001050| 4c 09 09 09 2a 2f 0d 09 | 09 73 63 73 69 50 61 72 |L...*/..|.scsiPar|
|00001060| 61 6d 50 74 72 20 3d 20 | 28 70 62 20 3d 3d 20 4e |amPtr = |(pb == N|
|00001070| 55 4c 4c 29 20 3f 20 4e | 55 4c 4c 20 3a 20 28 4e |ULL) ? N|ULL : (N|
|00001080| 43 52 53 43 53 49 50 61 | 72 61 6d 50 74 72 29 20 |CRSCSIPa|ramPtr) |
|00001090| 50 42 2e 69 6f 4d 69 73 | 63 3b 0d 09 09 73 74 61 |PB.ioMis|c;...sta|
|000010a0| 74 75 73 20 3d 20 6b 49 | 4f 42 75 73 79 53 74 61 |tus = kI|OBusySta|
|000010b0| 74 75 73 3b 09 09 09 09 | 09 09 2f 2a 20 43 68 61 |tus;....|../* Cha|
|000010c0| 6e 67 65 64 20 62 79 20 | 63 6f 6d 70 6c 65 74 65 |nged by |complete|
|000010d0| 64 20 49 2f 4f 09 09 2a | 2f 0d 09 09 53 48 41 44 |d I/O..*|/...SHAD|
|000010e0| 4f 57 2e 69 73 74 61 74 | 20 3d 20 52 65 61 64 42 |OW.istat| = ReadB|
|000010f0| 79 74 65 28 49 53 54 41 | 54 29 3b 09 09 09 09 2f |yte(ISTA|T);..../|
|00001100| 2a 20 30 78 31 34 20 49 | 6e 74 65 72 72 75 70 74 |* 0x14 I|nterrupt|
|00001110| 20 53 74 61 74 75 73 09 | 09 2a 2f 0d 09 09 2f 2a | Status.|.*/.../*|
|00001120| 0d 09 09 20 2a 20 57 65 | 20 6d 75 73 74 20 63 68 |... * We| must ch|
|00001130| 65 63 6b 20 74 68 61 74 | 20 61 74 20 6c 65 61 73 |eck that| at leas|
|00001140| 74 20 6f 6e 65 20 69 6e | 74 65 72 72 75 70 74 20 |t one in|terrupt |
|00001150| 62 69 74 20 69 73 20 73 | 65 74 20 2d 2d 20 69 66 |bit is s|et -- if|
|00001160| 20 6e 6f 6e 65 20 61 72 | 65 20 73 65 74 2c 0d 09 | none ar|e set,..|
|00001170| 09 20 2a 20 74 68 69 73 | 20 69 73 20 61 20 73 70 |. * this| is a sp|
|00001180| 75 72 69 6f 75 73 20 69 | 6e 74 65 72 72 75 70 74 |urious i|nterrupt|
|00001190| 20 2d 2d 20 77 65 20 74 | 68 65 6e 20 72 65 74 75 | -- we t|hen retu|
|000011a0| 72 6e 20 6b 49 73 72 49 | 73 4e 6f 74 43 6f 6d 70 |rn kIsrI|sNotComp|
|000011b0| 6c 65 74 65 0d 09 09 20 | 2a 2f 0d 09 09 72 65 73 |lete... |*/...res|
|000011c0| 75 6c 74 20 3d 20 28 28 | 53 48 41 44 4f 57 2e 69 |ult = ((|SHADOW.i|
|000011d0| 73 74 61 74 20 26 20 28 | 62 69 74 32 20 7c 20 62 |stat & (|bit2 | b|
|000011e0| 69 74 31 20 7c 20 62 69 | 74 30 29 29 20 21 3d 20 |it1 | bi|t0)) != |
|000011f0| 30 29 0d 09 09 09 09 09 | 3f 20 6b 49 73 72 49 73 |0)......|? kIsrIs|
|00001200| 43 6f 6d 70 6c 65 74 65 | 20 3a 20 6b 49 73 72 49 |Complete| : kIsrI|
|00001210| 73 4e 6f 74 43 6f 6d 70 | 6c 65 74 65 3b 0d 09 09 |sNotComp|lete;...|
|00001220| 69 66 20 28 28 53 48 41 | 44 4f 57 2e 69 73 74 61 |if ((SHA|DOW.ista|
|00001230| 74 20 26 20 62 69 74 32 | 29 20 21 3d 20 30 29 20 |t & bit2|) != 0) |
|00001240| 7b 09 09 09 2f 2a 20 49 | 4e 54 46 3a 20 49 6e 74 |{.../* I|NTF: Int|
|00001250| 65 72 72 75 70 74 20 6f | 6e 20 74 68 65 20 66 6c |errupt o|n the fl|
|00001260| 79 3f 09 2a 2f 0d 09 09 | 09 2f 2a 0d 09 09 09 20 |y?.*/...|./*.... |
|00001270| 2a 20 54 68 69 73 20 62 | 69 74 20 6d 75 73 74 20 |* This b|it must |
|00001280| 62 65 20 77 72 69 74 74 | 65 6e 20 74 6f 20 31 20 |be writt|en to 1 |
|00001290| 74 6f 20 63 6c 65 61 72 | 20 69 74 2e 20 54 68 69 |to clear| it. Thi|
|000012a0| 73 20 69 6e 74 65 72 72 | 75 70 74 20 6d 75 73 74 |s interr|upt must|
|000012b0| 20 62 65 0d 09 09 09 20 | 2a 20 68 61 6e 64 6c 65 | be.... |* handle|
|000012c0| 64 20 62 65 66 6f 72 65 | 20 68 61 6e 64 6c 69 6e |d before| handlin|
|000012d0| 67 20 6f 74 68 65 72 20 | 69 6e 74 65 72 72 75 70 |g other |interrup|
|000012e0| 74 20 63 6f 6e 64 69 74 | 69 6f 6e 73 2e 20 57 65 |t condit|ions. We|
|000012f0| 20 64 6f 6e 27 74 0d 09 | 09 09 20 2a 20 63 75 72 | don't..|.. * cur|
|00001300| 72 65 6e 74 6c 79 20 75 | 73 65 20 74 68 65 20 49 |rently u|se the I|
|00001310| 4e 54 46 20 69 6e 74 65 | 72 72 75 70 74 2e 0d 09 |NTF inte|rrupt...|
|00001320| 09 09 20 2a 2f 0d 09 09 | 09 57 72 69 74 65 42 79 |.. */...|.WriteBy|
|00001330| 74 65 28 49 53 54 41 54 | 2c 20 53 48 41 44 4f 57 |te(ISTAT|, SHADOW|
|00001340| 2e 69 73 74 61 74 20 7c | 20 62 69 74 32 29 3b 0d |.istat || bit2);.|
|00001350| 09 09 09 53 79 6e 63 68 | 72 6f 6e 69 7a 65 49 4f |...Synch|ronizeIO|
|00001360| 28 29 3b 09 09 09 09 09 | 09 09 2f 2a 20 65 69 65 |();.....|../* eie|
|00001370| 69 6f 09 09 09 09 09 2a | 2f 0d 09 09 09 53 48 41 |io.....*|/....SHA|
|00001380| 44 4f 57 2e 69 73 74 61 | 74 20 3d 20 52 65 61 64 |DOW.ista|t = Read|
|00001390| 42 79 74 65 28 49 53 54 | 41 54 29 3b 09 09 09 09 |Byte(IST|AT);....|
|000013a0| 2f 2a 20 30 78 31 34 20 | 49 6e 74 2e 20 53 74 61 |/* 0x14 |Int. Sta|
|000013b0| 74 75 73 09 09 09 2a 2f | 0d 09 09 7d 0d 09 09 69 |tus...*/|...}...i|
|000013c0| 66 20 28 28 53 48 41 44 | 4f 57 2e 69 73 74 61 74 |f ((SHAD|OW.istat|
|000013d0| 20 26 20 28 62 69 74 31 | 20 7c 20 62 69 74 30 29 | & (bit1| | bit0)|
|000013e0| 29 20 21 3d 20 30 29 20 | 7b 0d 09 09 09 2f 2a 0d |) != 0) |{..../*.|
|000013f0| 09 09 09 20 2a 20 49 66 | 20 74 68 65 20 53 49 50 |... * If| the SIP|
|00001400| 20 61 6e 64 20 44 49 50 | 20 69 6e 74 65 72 72 75 | and DIP| interru|
|00001410| 70 74 73 20 61 72 65 20 | 63 6c 65 61 72 2c 20 74 |pts are |clear, t|
|00001420| 68 69 73 20 69 73 20 61 | 20 22 74 72 75 65 22 20 |his is a| "true" |
|00001430| 69 6e 74 65 72 72 75 70 | 74 20 6f 6e 0d 09 09 09 |interrup|t on....|
|00001440| 20 2a 20 74 68 65 20 66 | 6c 79 2e 20 45 78 69 74 | * the f|ly. Exit|
|00001450| 20 74 68 65 20 69 6e 74 | 65 72 72 75 70 74 20 73 | the int|errupt s|
|00001460| 65 72 76 69 63 65 20 72 | 6f 75 74 69 6e 65 20 74 |ervice r|outine t|
|00001470| 6f 20 6c 65 74 20 74 68 | 65 20 73 63 72 69 70 74 |o let th|e script|
|00001480| 20 63 6f 6e 74 69 6e 75 | 65 0d 09 09 09 20 2a 20 | continu|e.... * |
|00001490| 69 6e 20 70 65 61 63 65 | 20 2d 2d 20 77 65 27 72 |in peace| -- we'r|
|000014a0| 65 20 6e 6f 74 20 61 6c | 6c 6f 77 65 64 20 74 6f |e not al|lowed to|
|000014b0| 20 74 6f 75 63 68 20 6f | 74 68 65 72 20 4e 43 52 | touch o|ther NCR|
|000014c0| 20 63 68 69 70 20 72 65 | 67 69 73 74 65 72 73 2e | chip re|gisters.|
|000014d0| 0d 09 09 09 20 2a 20 49 | 66 20 65 69 74 68 65 72 |.... * I|f either|
|000014e0| 20 62 69 74 20 69 73 20 | 73 65 74 2c 20 74 68 69 | bit is |set, thi|
|000014f0| 73 20 69 73 20 61 20 6e | 6f 72 6d 61 6c 20 69 6e |s is a n|ormal in|
|00001500| 74 65 72 72 75 70 74 2e | 20 53 61 76 65 20 74 68 |terrupt.| Save th|
|00001510| 65 20 69 6e 74 65 72 65 | 73 74 69 6e 67 0d 09 09 |e intere|sting...|
|00001520| 09 20 2a 20 72 65 67 69 | 73 74 65 72 73 20 69 6e |. * regi|sters in|
|00001530| 20 74 68 65 20 70 65 72 | 2d 72 65 71 75 65 73 74 | the per|-request|
|00001540| 20 62 6c 6f 63 6b 3a 20 | 74 68 69 73 20 69 73 20 | block: |this is |
|00001550| 66 6f 72 20 64 65 62 75 | 67 67 69 6e 67 20 63 6f |for debu|gging co|
|00001560| 6e 76 65 6e 69 65 6e 63 | 65 2e 0d 09 09 09 20 2a |nvenienc|e..... *|
|00001570| 0d 09 09 09 20 2a 20 4e | 6f 74 65 3a 20 77 65 20 |.... * N|ote: we |
|00001580| 6d 69 67 68 74 20 6e 65 | 65 64 20 74 6f 20 66 69 |might ne|ed to fi|
|00001590| 78 20 74 68 69 73 20 61 | 6c 67 6f 72 69 74 68 6d |x this a|lgorithm|
|000015a0| 2e 20 53 65 65 20 74 68 | 65 20 64 69 73 63 75 73 |. See th|e discus|
|000015b0| 73 69 6f 6e 20 69 6e 20 | 74 68 65 0d 09 09 09 20 |sion in |the.... |
|000015c0| 2a 20 4e 43 52 20 35 33 | 43 38 32 35 20 6d 61 6e |* NCR 53|C825 man|
|000015d0| 75 61 6c 20 66 6f 72 20 | 74 68 65 20 72 65 61 73 |ual for |the reas|
|000015e0| 6f 6e 20 62 65 68 69 6e | 64 20 63 6c 65 61 72 69 |on behin|d cleari|
|000015f0| 6e 67 20 49 53 54 41 54 | 2e 0d 09 09 09 20 2a 2f |ng ISTAT|..... */|
|00001600| 0d 23 69 66 20 30 0d 09 | 09 09 69 66 20 28 28 53 |.#if 0..|..if ((S|
|00001610| 48 41 44 4f 57 2e 69 73 | 74 61 74 20 26 20 28 62 |HADOW.is|tat & (b|
|00001620| 69 74 31 20 7c 20 62 69 | 74 30 29 29 20 3d 3d 20 |it1 | bi|t0)) == |
|00001630| 62 69 74 30 29 0d 09 09 | 09 09 57 72 69 74 65 42 |bit0)...|..WriteB|
|00001640| 79 74 65 28 49 53 54 41 | 54 2c 20 30 29 3b 0d 23 |yte(ISTA|T, 0);.#|
|00001650| 65 6e 64 69 66 0d 09 09 | 09 53 48 41 44 4f 57 2e |endif...|.SHADOW.|
|00001660| 64 62 63 20 3d 20 52 65 | 61 64 4c 6f 6e 67 28 44 |dbc = Re|adLong(D|
|00001670| 42 43 29 3b 09 09 09 09 | 09 2f 2a 20 30 78 32 34 |BC);....|./* 0x24|
|00001680| 20 62 79 74 65 20 63 6f | 75 6e 74 09 09 09 2a 2f | byte co|unt...*/|
|00001690| 0d 09 09 09 53 48 41 44 | 4f 57 2e 64 73 70 20 3d |....SHAD|OW.dsp =|
|000016a0| 20 52 65 61 64 4c 6f 6e | 67 28 44 53 50 29 3b 09 | ReadLon|g(DSP);.|
|000016b0| 09 09 09 09 2f 2a 20 30 | 78 32 43 20 53 63 72 69 |..../* 0|x2C Scri|
|000016c0| 70 74 20 70 6f 69 6e 74 | 65 72 09 09 2a 2f 0d 09 |pt point|er..*/..|
|000016d0| 09 09 53 48 41 44 4f 57 | 2e 73 63 72 69 70 74 50 |..SHADOW|.scriptP|
|000016e0| 43 4f 66 66 73 65 74 20 | 3d 20 53 48 41 44 4f 57 |COffset |= SHADOW|
|000016f0| 2e 64 73 70 20 2d 20 52 | 45 51 55 45 53 54 2e 73 |.dsp - R|EQUEST.s|
|00001700| 63 72 69 70 74 42 61 73 | 65 41 64 64 72 65 73 73 |criptBas|eAddress|
|00001710| 20 2d 20 38 3b 0d 23 69 | 66 20 30 20 26 26 20 55 | - 8;.#i|f 0 && U|
|00001720| 53 45 5f 4c 4f 47 5f 4c | 49 42 52 41 52 59 0d 09 |SE_LOG_L|IBRARY..|
|00001730| 09 09 57 72 69 74 65 4c | 6f 67 45 6e 74 72 79 28 |..WriteL|ogEntry(|
|00001740| 47 4c 4f 42 41 4c 2e 6c | 6f 67 52 65 63 6f 72 64 |GLOBAL.l|ogRecord|
|00001750| 50 74 72 2c 20 27 50 49 | 53 52 27 2c 0d 09 09 09 |Ptr, 'PI|SR',....|
|00001760| 09 4c 6f 67 46 6f 72 6d | 61 74 34 28 6b 4c 6f 67 |.LogForm|at4(kLog|
|00001770| 46 6f 72 6d 61 74 41 64 | 64 72 65 73 73 2c 20 6b |FormatAd|dress, k|
|00001780| 4c 6f 67 46 6f 72 6d 61 | 74 41 64 64 72 65 73 73 |LogForma|tAddress|
|00001790| 2c 20 6b 4c 6f 67 46 6f | 72 6d 61 74 53 69 67 6e |, kLogFo|rmatSign|
|000017a0| 65 64 2c 20 6b 4c 6f 67 | 46 6f 72 6d 61 74 53 74 |ed, kLog|FormatSt|
|000017b0| 72 69 6e 67 29 2c 0d 09 | 09 09 09 28 55 49 6e 74 |ring),..|...(UInt|
|000017c0| 33 32 29 20 53 48 41 44 | 4f 57 2e 64 73 70 2c 0d |32) SHAD|OW.dsp,.|
|000017d0| 09 09 09 09 28 55 49 6e | 74 33 32 29 20 52 45 51 |....(UIn|t32) REQ|
|000017e0| 55 45 53 54 2e 73 63 72 | 69 70 74 42 61 73 65 41 |UEST.scr|iptBaseA|
|000017f0| 64 64 72 65 73 73 2c 0d | 09 09 09 09 28 53 49 6e |ddress,.|....(SIn|
|00001800| 74 33 32 29 20 53 48 41 | 44 4f 57 2e 73 63 72 69 |t32) SHA|DOW.scri|
|00001810| 70 74 50 43 4f 66 66 73 | 65 74 2c 0d 09 09 09 09 |ptPCOffs|et,.....|
|00001820| 22 5c 70 53 63 72 69 70 | 74 20 40 20 69 73 72 22 |"\pScrip|t @ isr"|
|00001830| 0d 09 09 09 29 3b 0d 23 | 65 6e 64 69 66 0d 09 09 |....);.#|endif...|
|00001840| 09 53 48 41 44 4f 57 2e | 64 73 70 73 20 3d 20 52 |.SHADOW.|dsps = R|
|00001850| 65 61 64 4c 6f 6e 67 28 | 44 53 50 53 29 3b 09 09 |eadLong(|DSPS);..|
|00001860| 09 09 2f 2a 20 30 78 33 | 30 20 53 63 72 69 70 74 |../* 0x3|0 Script|
|00001870| 20 32 6e 64 20 6c 6f 6e | 67 09 2a 2f 0d 09 09 09 | 2nd lon|g.*/....|
|00001880| 2f 2a 0d 09 09 09 20 2a | 20 52 65 61 64 20 73 69 |/*.... *| Read si|
|00001890| 73 74 30 20 61 6e 64 20 | 73 69 73 74 31 20 62 65 |st0 and |sist1 be|
|000018a0| 66 6f 72 65 20 72 65 61 | 64 69 6e 67 20 64 73 74 |fore rea|ding dst|
|000018b0| 61 74 2e 20 54 68 65 20 | 63 61 6c 6c 73 20 74 6f |at. The |calls to|
|000018c0| 0d 09 09 09 20 2a 20 44 | 65 6c 61 79 46 6f 72 48 |.... * D|elayForH|
|000018d0| 61 72 64 77 61 72 65 20 | 65 6e 66 6f 72 63 65 20 |ardware |enforce |
|000018e0| 61 20 31 32 20 63 6c 6f | 63 6b 20 74 69 63 6b 20 |a 12 clo|ck tick |
|000018f0| 64 65 6c 61 79 20 62 65 | 74 77 65 65 6e 20 72 65 |delay be|tween re|
|00001900| 61 64 73 2e 0d 09 09 09 | 20 2a 2f 0d 09 09 09 53 |ads.....| */....S|
|00001910| 48 41 44 4f 57 2e 73 69 | 73 74 30 20 3d 20 52 65 |HADOW.si|st0 = Re|
|00001920| 61 64 42 79 74 65 28 53 | 49 53 54 30 29 3b 09 09 |adByte(S|IST0);..|
|00001930| 09 09 2f 2a 20 30 78 34 | 32 20 53 43 53 49 20 49 |../* 0x4|2 SCSI I|
|00001940| 6e 74 2e 20 53 74 73 20 | 30 09 09 2a 2f 0d 09 09 |nt. Sts |0..*/...|
|00001950| 09 44 65 6c 61 79 46 6f | 72 48 61 72 64 77 61 72 |.DelayFo|rHardwar|
|00001960| 65 28 47 4c 4f 42 41 4c | 2e 63 6c 6f 63 6b 54 69 |e(GLOBAL|.clockTi|
|00001970| 63 6b 31 32 29 3b 0d 09 | 09 09 53 48 41 44 4f 57 |ck12);..|..SHADOW|
|00001980| 2e 73 69 73 74 31 20 3d | 20 52 65 61 64 42 79 74 |.sist1 =| ReadByt|
|00001990| 65 28 53 49 53 54 31 29 | 3b 09 09 09 09 2f 2a 20 |e(SIST1)|;..../* |
|000019a0| 30 78 34 33 20 53 43 53 | 49 20 49 6e 74 2e 20 53 |0x43 SCS|I Int. S|
|000019b0| 74 73 20 31 09 09 2a 2f | 0d 09 09 09 44 65 6c 61 |ts 1..*/|....Dela|
|000019c0| 79 46 6f 72 48 61 72 64 | 77 61 72 65 28 47 4c 4f |yForHard|ware(GLO|
|000019d0| 42 41 4c 2e 63 6c 6f 63 | 6b 54 69 63 6b 31 32 29 |BAL.cloc|kTick12)|
|000019e0| 3b 0d 09 09 09 53 48 41 | 44 4f 57 2e 64 73 74 61 |;....SHA|DOW.dsta|
|000019f0| 74 20 3d 20 52 65 61 64 | 42 79 74 65 28 44 53 54 |t = Read|Byte(DST|
|00001a00| 41 54 29 3b 09 09 09 09 | 2f 2a 20 30 78 30 43 20 |AT);....|/* 0x0C |
|00001a10| 44 4d 41 20 73 74 61 74 | 75 73 09 09 09 2a 2f 0d |DMA stat|us...*/.|
|00001a20| 09 09 09 53 48 41 44 4f | 57 2e 73 63 6e 74 6c 31 |...SHADO|W.scntl1|
|00001a30| 20 3d 20 52 65 61 64 42 | 79 74 65 28 53 43 4e 54 | = ReadB|yte(SCNT|
|00001a40| 4c 31 29 3b 09 09 09 2f | 2a 20 30 78 30 31 20 53 |L1);.../|* 0x01 S|
|00001a50| 43 53 49 20 63 6f 6e 74 | 72 6f 6c 20 31 09 09 2a |CSI cont|rol 1..*|
|00001a60| 2f 0d 09 09 09 53 48 41 | 44 4f 57 2e 73 6f 63 6c |/....SHA|DOW.socl|
|00001a70| 20 3d 20 52 65 61 64 42 | 79 74 65 28 53 4f 43 4c | = ReadB|yte(SOCL|
|00001a80| 29 3b 09 09 09 09 2f 2a | 20 30 78 30 39 20 53 43 |);..../*| 0x09 SC|
|00001a90| 53 49 20 6f 75 74 70 75 | 74 20 63 74 6c 09 09 2a |SI outpu|t ctl..*|
|00001aa0| 2f 0d 09 09 09 53 48 41 | 44 4f 57 2e 73 62 63 6c |/....SHA|DOW.sbcl|
|00001ab0| 20 3d 20 52 65 61 64 42 | 79 74 65 28 53 42 43 4c | = ReadB|yte(SBCL|
|00001ac0| 29 3b 09 09 09 09 2f 2a | 20 30 78 30 42 20 42 75 |);..../*| 0x0B Bu|
|00001ad0| 73 20 63 74 6c 20 73 69 | 67 6e 61 6c 73 09 09 2a |s ctl si|gnals..*|
|00001ae0| 2f 0d 09 09 09 53 48 41 | 44 4f 57 2e 73 73 74 61 |/....SHA|DOW.ssta|
|00001af0| 74 30 20 3d 20 52 65 61 | 64 42 79 74 65 28 53 53 |t0 = Rea|dByte(SS|
|00001b00| 54 41 54 30 29 3b 09 09 | 09 2f 2a 20 30 78 30 44 |TAT0);..|./* 0x0D|
|00001b10| 20 63 6f 72 65 20 73 74 | 61 74 75 73 09 09 09 2a | core st|atus...*|
|00001b20| 2f 0d 09 09 09 53 48 41 | 44 4f 57 2e 73 73 74 61 |/....SHA|DOW.ssta|
|00001b30| 74 31 20 3d 20 52 65 61 | 64 42 79 74 65 28 53 53 |t1 = Rea|dByte(SS|
|00001b40| 54 41 54 31 29 3b 09 09 | 09 2f 2a 20 30 78 30 45 |TAT1);..|./* 0x0E|
|00001b50| 20 63 6f 72 65 20 73 74 | 61 74 75 73 09 09 09 2a | core st|atus...*|
|00001b60| 2f 0d 09 09 09 53 48 41 | 44 4f 57 2e 73 73 74 61 |/....SHA|DOW.ssta|
|00001b70| 74 32 20 3d 20 52 65 61 | 64 42 79 74 65 28 53 53 |t2 = Rea|dByte(SS|
|00001b80| 54 41 54 32 29 3b 09 09 | 09 2f 2a 20 30 78 30 46 |TAT2);..|./* 0x0F|
|00001b90| 20 63 6f 72 65 20 73 74 | 61 74 75 73 09 09 09 2a | core st|atus...*|
|00001ba0| 2f 0d 09 09 09 53 48 41 | 44 4f 57 2e 64 66 69 66 |/....SHA|DOW.dfif|
|00001bb0| 6f 20 3d 20 52 65 61 64 | 42 79 74 65 28 44 46 49 |o = Read|Byte(DFI|
|00001bc0| 46 4f 29 3b 09 09 09 09 | 2f 2a 20 30 78 32 30 09 |FO);....|/* 0x20.|
|00001bd0| 66 69 66 6f 20 63 6f 75 | 6e 74 09 09 09 2a 2f 0d |fifo cou|nt...*/.|
|00001be0| 09 09 09 53 48 41 44 4f | 57 2e 64 62 63 20 26 3d |...SHADO|W.dbc &=|
|00001bf0| 20 30 78 30 30 46 46 46 | 46 46 46 3b 09 09 09 09 | 0x00FFF|FFF;....|
|00001c00| 09 2f 2a 20 4f 6e 6c 79 | 20 32 34 20 62 69 74 73 |./* Only| 24 bits|
|00001c10| 09 09 09 09 2a 2f 0d 09 | 09 09 4c 6f 67 53 63 72 |....*/..|..LogScr|
|00001c20| 69 70 74 49 6e 74 65 72 | 72 75 70 74 28 70 65 72 |iptInter|rupt(per|
|00001c30| 52 65 71 75 65 73 74 44 | 61 74 61 50 74 72 29 3b |RequestD|ataPtr);|
|00001c40| 09 09 2f 2a 20 44 65 62 | 75 67 3a 20 6c 6f 67 20 |../* Deb|ug: log |
|00001c50| 72 65 67 69 73 74 65 72 | 73 09 09 2a 2f 0d 09 09 |register|s..*/...|
|00001c60| 09 69 66 20 28 28 53 48 | 41 44 4f 57 2e 69 73 74 |.if ((SH|ADOW.ist|
|00001c70| 61 74 20 26 20 62 69 74 | 30 29 20 21 3d 20 30 29 |at & bit|0) != 0)|
|00001c80| 20 7b 09 09 09 2f 2a 20 | 44 4d 41 20 69 6e 74 65 | {.../* |DMA inte|
|00001c90| 72 72 75 70 74 20 70 65 | 6e 64 69 6e 67 3f 09 2a |rrupt pe|nding?.*|
|00001ca0| 2f 0d 09 09 09 09 69 66 | 20 28 28 53 48 41 44 4f |/.....if| ((SHADO|
|00001cb0| 57 2e 64 73 74 61 74 20 | 26 20 62 69 74 37 29 20 |W.dstat |& bit7) |
|00001cc0| 3d 3d 20 30 29 20 7b 09 | 09 2f 2a 20 44 4d 41 20 |== 0) {.|./* DMA |
|00001cd0| 66 69 66 6f 20 6e 6f 74 | 20 65 6d 70 74 79 3f 09 |fifo not| empty?.|
|00001ce0| 09 2a 2f 0d 09 09 09 09 | 09 4c 6f 67 48 65 78 28 |.*/.....|.LogHex(|
|00001cf0| 53 48 41 44 4f 57 2e 64 | 73 74 61 74 2c 20 22 5c |SHADOW.d|stat, "\|
|00001d00| 70 44 4d 41 20 66 69 66 | 6f 20 6e 6f 74 20 65 6d |pDMA fif|o not em|
|00001d10| 70 74 79 22 29 3b 0d 09 | 09 09 09 09 2f 2a 0d 09 |pty");..|..../*..|
|00001d20| 09 09 09 09 20 2a 20 43 | 6c 65 61 72 20 74 68 65 |.... * C|lear the|
|00001d30| 20 64 6d 61 20 66 69 66 | 6f 20 6e 6f 6e 2d 65 6d | dma fif|o non-em|
|00001d40| 70 74 79 20 63 6f 6e 64 | 69 74 69 6f 6e 20 62 79 |pty cond|ition by|
|00001d50| 20 72 65 73 65 74 74 69 | 6e 67 20 74 68 65 20 64 | resetti|ng the d|
|00001d60| 6d 61 0d 09 09 09 09 09 | 20 2a 20 61 6e 64 20 73 |ma......| * and s|
|00001d70| 63 73 69 20 66 69 66 6f | 73 2e 20 48 6d 6d 2c 20 |csi fifo|s. Hmm, |
|00001d80| 68 6f 77 20 64 6f 65 73 | 20 74 68 69 73 20 64 65 |how does| this de|
|00001d90| 61 6c 20 77 69 74 68 20 | 70 61 72 74 69 61 6c 20 |al with |partial |
|00001da0| 28 73 68 6f 72 74 29 0d | 09 09 09 09 09 20 2a 20 |(short).|..... * |
|00001db0| 70 72 65 70 61 72 61 74 | 69 6f 6e 3f 0d 09 09 09 |preparat|ion?....|
|00001dc0| 09 09 20 2a 2f 0d 09 09 | 09 09 09 53 48 41 44 4f |.. */...|...SHADO|
|00001dd0| 57 2e 73 74 65 73 74 33 | 20 3d 20 52 65 61 64 42 |W.stest3| = ReadB|
|00001de0| 79 74 65 28 53 54 45 53 | 54 33 29 3b 0d 09 09 09 |yte(STES|T3);....|
|00001df0| 09 09 57 72 69 74 65 42 | 79 74 65 28 53 54 45 53 |..WriteB|yte(STES|
|00001e00| 54 33 2c 20 53 48 41 44 | 4f 57 2e 73 74 65 73 74 |T3, SHAD|OW.stest|
|00001e10| 33 20 7c 20 62 69 74 31 | 29 3b 0d 09 09 09 09 09 |3 | bit1|);......|
|00001e20| 53 79 6e 63 68 72 6f 6e | 69 7a 65 49 4f 28 29 3b |Synchron|izeIO();|
|00001e30| 09 09 09 09 09 2f 2a 20 | 65 69 65 69 6f 09 09 09 |...../* |eieio...|
|00001e40| 09 09 2a 2f 0d 09 09 09 | 09 09 53 48 41 44 4f 57 |..*/....|..SHADOW|
|00001e50| 2e 63 74 65 73 74 33 20 | 3d 20 52 65 61 64 42 79 |.ctest3 |= ReadBy|
|00001e60| 74 65 28 43 54 45 53 54 | 33 29 3b 0d 09 09 09 09 |te(CTEST|3);.....|
|00001e70| 09 57 72 69 74 65 42 79 | 74 65 28 43 54 45 53 54 |.WriteBy|te(CTEST|
|00001e80| 33 2c 20 53 48 41 44 4f | 57 2e 63 74 65 73 74 33 |3, SHADO|W.ctest3|
|00001e90| 20 7c 20 62 69 74 32 29 | 3b 0d 09 09 09 09 7d 0d | | bit2)|;.....}.|
|00001ea0| 09 09 09 09 69 66 20 28 | 28 53 48 41 44 4f 57 2e |....if (|(SHADOW.|
|00001eb0| 64 73 74 61 74 20 26 20 | 28 62 69 74 35 20 7c 20 |dstat & |(bit5 | |
|00001ec0| 62 69 74 36 29 29 20 21 | 3d 20 30 29 20 7b 09 2f |bit6)) !|= 0) {./|
|00001ed0| 2a 20 50 43 49 20 62 75 | 73 20 66 61 75 6c 74 3f |* PCI bu|s fault?|
|00001ee0| 09 09 2a 2f 0d 09 09 09 | 09 09 4c 6f 67 48 65 78 |..*/....|..LogHex|
|00001ef0| 28 53 48 41 44 4f 57 2e | 64 73 74 61 74 2c 20 22 |(SHADOW.|dstat, "|
|00001f00| 5c 70 50 43 49 42 75 73 | 46 61 75 6c 74 22 29 3b |\pPCIBus|Fault");|
|00001f10| 0d 09 09 09 09 09 4c 6f | 67 48 65 78 28 52 65 61 |......Lo|gHex(Rea|
|00001f20| 64 4c 6f 6e 67 28 44 42 | 43 29 2c 20 22 5c 70 44 |dLong(DB|C), "\pD|
|00001f30| 42 43 20 30 78 32 34 2d | 32 36 2c 20 44 4e 41 44 |BC 0x24-|26, DNAD|
|00001f40| 20 30 78 32 37 20 2d 20 | 63 6f 75 6e 74 2c 20 63 | 0x27 - |count, c|
|00001f50| 6d 64 22 29 3b 0d 09 09 | 09 09 09 4c 6f 67 48 65 |md");...|...LogHe|
|00001f60| 78 28 52 65 61 64 4c 6f | 6e 67 28 44 4e 41 44 29 |x(ReadLo|ng(DNAD)|
|00001f70| 2c 20 22 5c 70 44 4e 41 | 44 20 30 78 32 38 20 2d |, "\pDNA|D 0x28 -|
|00001f80| 20 44 4d 41 20 6e 65 78 | 74 20 61 64 64 72 65 73 | DMA nex|t addres|
|00001f90| 73 22 29 3b 0d 09 09 09 | 09 09 4c 6f 67 48 65 78 |s");....|..LogHex|
|00001fa0| 28 52 65 61 64 4c 6f 6e | 67 28 44 53 50 53 29 2c |(ReadLon|g(DSPS),|
|00001fb0| 20 22 5c 70 44 53 50 53 | 20 30 78 33 30 20 2d 20 | "\pDSPS| 0x30 - |
|00001fc0| 53 63 72 69 70 74 73 20 | 70 6f 69 6e 74 65 72 20 |Scripts |pointer |
|00001fd0| 73 61 76 65 22 29 3b 0d | 09 09 09 09 09 73 74 61 |save");.|.....sta|
|00001fe0| 74 75 73 20 3d 20 73 63 | 73 69 54 65 72 6d 69 6e |tus = sc|siTermin|
|00001ff0| 61 74 65 64 3b 0d 09 09 | 09 09 7d 0d 09 09 09 09 |ated;...|..}.....|
|00002000| 65 6c 73 65 20 69 66 20 | 28 28 53 48 41 44 4f 57 |else if |((SHADOW|
|00002010| 2e 64 73 74 61 74 20 26 | 20 62 69 74 30 29 20 21 |.dstat &| bit0) !|
|00002020| 3d 20 30 29 20 7b 09 2f | 2a 20 49 6c 6c 65 67 61 |= 0) {./|* Illega|
|00002030| 6c 20 53 63 72 69 70 74 | 20 6f 70 63 6f 64 65 3f |l Script| opcode?|
|00002040| 09 2a 2f 0d 09 09 09 09 | 09 4c 6f 67 48 65 78 28 |.*/.....|.LogHex(|
|00002050| 53 48 41 44 4f 57 2e 73 | 63 72 69 70 74 50 43 4f |SHADOW.s|criptPCO|
|00002060| 66 66 73 65 74 2c 20 22 | 5c 70 49 6c 6c 65 67 61 |ffset, "|\pIllega|
|00002070| 6c 20 53 63 72 69 70 74 | 20 40 20 70 63 20 6f 66 |l Script| @ pc of|
|00002080| 66 73 65 74 22 29 3b 0d | 09 09 09 09 09 44 75 6d |fset");.|.....Dum|
|00002090| 70 52 65 67 69 73 74 65 | 72 73 28 70 65 72 52 65 |pRegiste|rs(perRe|
|000020a0| 71 75 65 73 74 44 61 74 | 61 50 74 72 29 3b 0d 09 |questDat|aPtr);..|
|000020b0| 09 09 09 09 73 74 61 74 | 75 73 20 3d 20 69 6f 45 |....stat|us = ioE|
|000020c0| 72 72 3b 0d 09 09 09 09 | 7d 0d 09 09 09 09 65 6c |rr;.....|}.....el|
|000020d0| 73 65 20 69 66 20 28 28 | 53 48 41 44 4f 57 2e 64 |se if ((|SHADOW.d|
|000020e0| 73 74 61 74 20 26 20 62 | 69 74 34 29 20 21 3d 20 |stat & b|it4) != |
|000020f0| 30 29 20 7b 09 2f 2a 20 | 41 62 6f 72 74 20 65 72 |0) {./* |Abort er|
|00002100| 72 6f 72 20 28 49 4f 4b | 69 6c 6c 29 09 09 2a 2f |ror (IOK|ill)..*/|
|00002110| 0d 09 09 09 09 09 2f 2a | 0d 09 09 09 09 09 20 2a |....../*|...... *|
|00002120| 20 4e 6f 74 65 3a 20 77 | 65 27 6c 6c 20 67 65 74 | Note: w|e'll get|
|00002130| 20 6f 6e 65 20 6f 66 20 | 74 68 65 73 65 20 69 66 | one of |these if|
|00002140| 20 74 68 65 20 6e 6f 6e | 2d 69 6e 74 65 72 72 75 | the non|-interru|
|00002150| 70 74 20 76 61 72 69 61 | 6e 74 0d 09 09 09 09 09 |pt varia|nt......|
|00002160| 20 2a 20 74 69 6d 65 73 | 20 6f 75 74 2e 20 41 20 | * times| out. A |
|00002170| 62 65 74 74 65 72 20 65 | 72 72 6f 72 20 6d 65 73 |better e|rror mes|
|00002180| 73 61 67 65 20 6d 65 63 | 68 61 6e 69 73 6d 20 69 |sage mec|hanism i|
|00002190| 73 20 70 72 6f 62 61 62 | 6c 79 20 6e 65 65 64 65 |s probab|ly neede|
|000021a0| 64 2e 0d 09 09 09 09 09 | 20 2a 20 41 20 4b 69 6c |d.......| * A Kil|
|000021b0| 6c 49 4f 20 72 65 71 75 | 65 73 74 20 61 6c 73 6f |lIO requ|est also|
|000021c0| 20 63 61 75 73 65 73 20 | 6f 6e 65 20 6f 66 20 74 | causes |one of t|
|000021d0| 68 65 73 65 2e 0d 09 09 | 09 09 09 20 2a 2f 0d 09 |hese....|... */..|
|000021e0| 09 09 09 09 4c 6f 67 53 | 74 72 69 6e 67 28 22 5c |....LogS|tring("\|
|000021f0| 70 43 68 69 70 2d 64 65 | 74 65 63 74 65 64 20 61 |pChip-de|tected a|
|00002200| 62 6f 72 74 22 29 3b 0d | 09 09 09 09 09 57 72 69 |bort");.|.....Wri|
|00002210| 74 65 42 79 74 65 28 49 | 53 54 41 54 2c 20 30 29 |teByte(I|STAT, 0)|
|00002220| 3b 09 09 09 09 2f 2a 20 | 43 6c 65 61 72 20 49 53 |;..../* |Clear IS|
|00002230| 54 41 54 20 61 67 61 69 | 6e 09 09 2a 2f 0d 09 09 |TAT agai|n..*/...|
|00002240| 09 09 09 2f 2a 0d 09 09 | 09 09 09 20 2a 20 54 6f |.../*...|... * To|
|00002250| 20 64 6f 3a 20 6c 6f 6f | 6b 20 61 74 20 74 68 65 | do: loo|k at the|
|00002260| 20 63 75 72 72 65 6e 74 | 20 62 75 73 20 73 74 61 | current| bus sta|
|00002270| 74 75 73 3a 20 69 66 20 | 77 65 20 61 72 65 20 63 |tus: if |we are c|
|00002280| 6f 6e 6e 65 63 74 65 64 | 0d 09 09 09 09 09 20 2a |onnected|...... *|
|00002290| 20 61 6e 64 20 52 45 51 | 20 69 73 20 73 65 74 2c | and REQ| is set,|
|000022a0| 20 74 68 65 20 74 61 72 | 67 65 74 20 69 73 20 74 | the tar|get is t|
|000022b0| 72 79 69 6e 67 20 74 6f | 20 64 6f 20 73 6f 6d 65 |rying to| do some|
|000022c0| 74 68 69 6e 67 20 61 6e | 64 20 77 65 0d 09 09 09 |thing an|d we....|
|000022d0| 09 09 20 2a 20 61 72 65 | 6e 27 74 20 72 65 73 70 |.. * are|n't resp|
|000022e0| 6f 6e 64 69 6e 67 2e 20 | 57 65 20 73 68 6f 75 6c |onding. |We shoul|
|000022f0| 64 20 72 65 73 74 61 72 | 74 20 74 68 65 20 73 63 |d restar|t the sc|
|00002300| 72 69 70 74 20 61 74 20 | 74 68 65 0d 09 09 09 09 |ript at |the.....|
|00002310| 09 20 2a 20 72 75 6e 64 | 6f 77 6e 20 61 64 64 72 |. * rund|own addr|
|00002320| 65 73 73 2e 20 49 66 20 | 77 65 20 61 72 65 20 63 |ess. If |we are c|
|00002330| 6f 6e 6e 65 63 74 65 64 | 20 61 6e 64 20 74 68 65 |onnected| and the|
|00002340| 20 74 61 72 67 65 74 20 | 69 73 0d 09 09 09 09 09 | target |is......|
|00002350| 20 2a 20 6e 6f 74 20 69 | 6e 20 52 45 51 2c 20 74 | * not i|n REQ, t|
|00002360| 68 65 20 64 65 76 69 63 | 65 20 69 73 2c 20 68 6f |he devic|e is, ho|
|00002370| 77 20 73 68 6f 75 6c 64 | 20 77 65 20 70 75 74 20 |w should| we put |
|00002380| 69 74 2c 20 64 65 61 64 | 2e 20 41 62 6f 75 74 0d |it, dead|. About.|
|00002390| 09 09 09 09 09 20 2a 20 | 61 6c 6c 20 77 65 20 63 |..... * |all we c|
|000023a0| 61 6e 20 64 6f 20 69 73 | 20 65 78 69 74 20 74 68 |an do is| exit th|
|000023b0| 65 20 73 63 72 69 70 74 | 20 61 6e 64 20 68 6f 70 |e script| and hop|
|000023c0| 65 20 74 68 61 74 20 74 | 68 65 20 63 61 6c 6c 65 |e that t|he calle|
|000023d0| 72 0d 09 09 09 09 09 20 | 2a 20 74 6f 73 73 65 73 |r...... |* tosses|
|000023e0| 20 61 20 42 75 73 20 52 | 65 73 65 74 20 6f 72 20 | a Bus R|eset or |
|000023f0| 49 2f 4f 20 52 75 6e 64 | 6f 77 6e 20 43 6f 6e 74 |I/O Rund|own Cont|
|00002400| 72 6f 6c 20 63 61 6c 6c | 20 61 74 20 75 73 2e 0d |rol call| at us..|
|00002410| 09 09 09 09 09 20 2a 2f | 0d 09 09 09 09 09 73 74 |..... */|......st|
|00002420| 61 74 75 73 20 3d 20 73 | 63 73 69 43 6f 6d 6d 61 |atus = s|csiComma|
|00002430| 6e 64 54 69 6d 65 6f 75 | 74 3b 0d 09 09 09 09 7d |ndTimeou|t;.....}|
|00002440| 0d 09 09 09 09 65 6c 73 | 65 20 69 66 20 28 28 53 |.....els|e if ((S|
|00002450| 48 41 44 4f 57 2e 64 73 | 74 61 74 20 26 20 62 69 |HADOW.ds|tat & bi|
|00002460| 74 32 29 20 21 3d 20 30 | 29 20 7b 09 2f 2a 20 53 |t2) != 0|) {./* S|
|00002470| 63 72 69 70 74 20 49 4e | 54 20 69 6e 73 74 72 75 |cript IN|T instru|
|00002480| 63 74 69 6f 6e 09 2a 2f | 0d 09 09 09 09 09 2f 2f |ction.*/|......//|
|00002490| 2a 2a 20 4c 6f 67 44 65 | 63 69 6d 61 6c 28 53 48 |** LogDe|cimal(SH|
|000024a0| 41 44 4f 57 2e 64 73 70 | 73 2c 20 22 5c 70 53 63 |ADOW.dsp|s, "\pSc|
|000024b0| 72 69 70 74 20 49 6e 74 | 65 72 72 75 70 74 22 29 |ript Int|errupt")|
|000024c0| 3b 0d 09 09 09 09 09 57 | 72 69 74 65 42 79 74 65 |;......W|riteByte|
|000024d0| 28 53 54 49 4d 45 30 2c | 20 30 29 3b 09 09 09 09 |(STIME0,| 0);....|
|000024e0| 2f 2a 20 43 61 6e 63 65 | 6c 20 74 69 6d 65 72 73 |/* Cance|l timers|
|000024f0| 09 09 09 2a 2f 0d 09 09 | 09 09 09 57 72 69 74 65 |...*/...|...Write|
|00002500| 42 79 74 65 28 53 54 49 | 4d 45 31 2c 20 30 29 3b |Byte(STI|ME1, 0);|
|00002510| 09 09 09 09 2f 2a 20 43 | 61 6e 63 65 6c 20 62 6f |..../* C|ancel bo|
|00002520| 74 68 20 6f 66 20 74 68 | 65 6d 09 09 2a 2f 0d 09 |th of th|em..*/..|
|00002530| 09 09 09 09 73 74 61 74 | 75 73 20 3d 20 53 48 41 |....stat|us = SHA|
|00002540| 44 4f 57 2e 64 73 70 73 | 3b 0d 09 09 09 09 09 69 |DOW.dsps|;......i|
|00002550| 66 20 28 73 74 61 74 75 | 73 20 3d 3d 20 6b 49 6e |f (statu|s == kIn|
|00002560| 74 4e 65 65 64 41 6e 6f | 74 68 65 72 50 72 65 70 |tNeedAno|therPrep|
|00002570| 61 72 61 74 69 6f 6e 29 | 20 7b 09 2f 2a 20 4e 6f |aration)| {./* No|
|00002580| 72 6d 61 6c 20 44 4d 41 | 3f 09 09 2a 2f 0d 09 09 |rmal DMA|?..*/...|
|00002590| 09 09 09 09 69 66 20 28 | 73 63 73 69 50 61 72 61 |....if (|scsiPara|
|000025a0| 6d 50 74 72 20 21 3d 20 | 4e 55 4c 4c 0d 09 09 09 |mPtr != |NULL....|
|000025b0| 09 09 20 09 20 26 26 20 | 53 43 53 49 2e 64 72 69 |.. . && |SCSI.dri|
|000025c0| 76 65 72 41 63 74 69 6f | 6e 20 21 3d 20 6b 4e 43 |verActio|n != kNC|
|000025d0| 52 44 72 69 76 65 72 4e | 6f 44 61 74 61 50 68 61 |RDriverN|oDataPha|
|000025e0| 73 65 29 20 7b 0d 09 09 | 09 09 09 09 09 2f 2a 0d |se) {...|...../*.|
|000025f0| 09 09 09 09 09 09 09 20 | 2a 20 57 65 20 61 72 65 |....... |* We are|
|00002600| 20 69 6e 20 61 20 64 61 | 74 61 20 70 68 61 73 65 | in a da|ta phase|
|00002610| 2c 20 62 75 74 20 64 6f | 6e 27 74 20 68 61 76 65 |, but do|n't have|
|00002620| 20 61 6e 79 20 70 72 65 | 70 61 72 65 64 20 49 2f | any pre|pared I/|
|00002630| 4f 2e 0d 09 09 09 09 09 | 09 09 20 2a 20 50 72 65 |O.......|.. * Pre|
|00002640| 70 61 72 65 20 74 68 65 | 20 6e 65 78 74 20 63 68 |pare the| next ch|
|00002650| 75 6e 6b 20 6f 66 20 44 | 4d 41 20 61 6e 64 20 72 |unk of D|MA and r|
|00002660| 65 73 74 61 72 74 20 74 | 68 65 20 73 63 72 69 70 |estart t|he scrip|
|00002670| 74 2e 0d 09 09 09 09 09 | 09 09 20 2a 20 49 66 20 |t.......|.. * If |
|00002680| 50 72 65 70 61 72 65 4e | 65 78 74 44 4d 41 20 72 |PrepareN|extDMA r|
|00002690| 65 74 75 72 6e 73 20 73 | 63 73 69 44 61 74 61 52 |eturns s|csiDataR|
|000026a0| 75 6e 45 72 72 6f 72 2c | 20 71 75 65 75 65 20 74 |unError,| queue t|
|000026b0| 68 65 0d 09 09 09 09 09 | 09 09 20 2a 20 53 65 63 |he......|.. * Sec|
|000026c0| 6f 6e 64 61 72 79 20 49 | 6e 74 65 72 72 75 70 74 |ondary I|nterrupt|
|000026d0| 20 48 61 6e 64 6c 65 72 | 20 74 6f 20 73 63 68 65 | Handler| to sche|
|000026e0| 64 75 6c 65 20 6f 75 72 | 20 53 6f 66 74 77 61 72 |dule our| Softwar|
|000026f0| 65 0d 09 09 09 09 09 09 | 09 20 2a 20 54 61 73 6b |e.......|. * Task|
|00002700| 20 74 68 61 74 20 77 69 | 6c 6c 20 63 61 6c 6c 20 | that wi|ll call |
|00002710| 50 72 65 70 61 72 65 4d | 65 6d 6f 72 79 46 6f 72 |PrepareM|emoryFor|
|00002720| 49 4f 2c 20 73 65 74 75 | 70 20 74 68 65 20 6e 65 |IO, setu|p the ne|
|00002730| 78 74 0d 09 09 09 09 09 | 09 09 20 2a 20 63 68 75 |xt......|.. * chu|
|00002740| 6e 6b 20 6f 66 20 74 68 | 65 20 74 72 61 6e 73 66 |nk of th|e transf|
|00002750| 65 72 2c 20 61 6e 64 20 | 74 68 65 6e 20 71 75 65 |er, and |then que|
|00002760| 75 65 20 74 68 65 20 53 | 65 63 6f 6e 64 61 72 79 |ue the S|econdary|
|00002770| 0d 09 09 09 09 09 09 09 | 20 2a 20 49 6e 74 65 72 |........| * Inter|
|00002780| 72 75 70 74 20 72 6f 75 | 74 69 6e 65 20 61 67 61 |rupt rou|tine aga|
|00002790| 69 6e 20 74 6f 20 72 65 | 73 74 61 72 74 20 74 68 |in to re|start th|
|000027a0| 65 20 64 65 76 69 63 65 | 2e 0d 09 09 09 09 09 09 |e device|........|
|000027b0| 09 20 2a 2f 0d 23 69 66 | 20 30 0d 09 09 09 09 09 |. */.#if| 0......|
|000027c0| 09 09 4c 6f 67 44 65 63 | 69 6d 61 6c 28 0d 09 09 |..LogDec|imal(...|
|000027d0| 09 09 09 09 09 09 28 53 | 49 6e 74 33 32 29 20 52 |......(S|Int32) R|
|000027e0| 65 61 64 42 79 74 65 28 | 43 54 45 53 54 30 29 2c |eadByte(|CTEST0),|
|000027f0| 0d 09 09 09 09 09 09 09 | 09 22 5c 70 43 61 6c 6c |........|."\pCall|
|00002800| 69 6e 67 20 50 72 65 70 | 61 72 65 5b 4e 65 78 74 |ing Prep|are[Next|
|00002810| 20 41 72 65 61 5d 22 0d | 09 09 09 09 09 09 09 29 | Area]".|.......)|
|00002820| 3b 0d 23 65 6e 64 69 66 | 0d 09 09 09 09 09 09 09 |;.#endif|........|
|00002830| 73 74 61 74 75 73 20 3d | 20 53 74 6f 72 65 44 4d |status =| StoreDM|
|00002840| 41 50 61 72 61 6d 65 74 | 65 72 73 28 70 65 72 52 |AParamet|ers(perR|
|00002850| 65 71 75 65 73 74 44 61 | 74 61 50 74 72 29 3b 0d |equestDa|taPtr);.|
|00002860| 09 09 09 09 09 09 09 69 | 66 20 28 73 74 61 74 75 |.......i|f (statu|
|00002870| 73 20 21 3d 20 6e 6f 45 | 72 72 29 0d 09 09 09 09 |s != noE|rr).....|
|00002880| 09 09 09 09 73 74 61 74 | 75 73 20 3d 20 6b 50 72 |....stat|us = kPr|
|00002890| 65 70 61 72 65 4d 65 6d | 6f 72 79 53 74 61 72 74 |epareMem|oryStart|
|000028a0| 54 61 73 6b 3b 0d 09 09 | 09 09 09 09 09 65 6c 73 |Task;...|.....els|
|000028b0| 65 20 7b 0d 09 09 09 09 | 09 09 09 09 57 72 69 74 |e {.....|....Writ|
|000028c0| 65 42 79 74 65 28 43 54 | 45 53 54 30 2c 20 53 43 |eByte(CT|EST0, SC|
|000028d0| 53 49 2e 64 72 69 76 65 | 72 41 63 74 69 6f 6e 29 |SI.drive|rAction)|
|000028e0| 3b 0d 09 09 09 09 09 09 | 09 09 73 74 61 74 75 73 |;.......|..status|
|000028f0| 20 3d 20 6b 49 4f 42 75 | 73 79 53 74 61 74 75 73 | = kIOBu|syStatus|
|00002900| 3b 0d 09 09 09 09 09 09 | 09 7d 0d 09 09 09 09 09 |;.......|.}......|
|00002910| 09 7d 0d 09 09 09 09 09 | 09 65 6c 73 65 20 7b 0d |.}......|.else {.|
|00002920| 09 09 09 09 09 09 09 73 | 74 61 74 75 73 20 3d 20 |.......s|tatus = |
|00002930| 73 63 73 69 54 72 61 6e | 73 66 65 72 54 79 70 65 |scsiTran|sferType|
|00002940| 49 6e 76 61 6c 69 64 3b | 09 2f 2a 20 4f 6f 70 73 |Invalid;|./* Oops|
|00002950| 09 09 09 2a 2f 0d 09 09 | 09 09 09 09 7d 0d 09 09 |...*/...|....}...|
|00002960| 09 09 09 7d 0d 09 09 09 | 09 09 65 6c 73 65 20 69 |...}....|..else i|
|00002970| 66 20 28 73 74 61 74 75 | 73 20 3d 3d 20 6b 49 6e |f (statu|s == kIn|
|00002980| 74 4d 65 6d 54 65 73 74 | 4e 65 65 64 73 41 6e 6f |tMemTest|NeedsAno|
|00002990| 74 68 65 72 50 72 65 70 | 61 72 61 74 69 6f 6e 29 |therPrep|aration)|
|000029a0| 20 7b 0d 09 09 09 09 09 | 09 73 74 61 74 75 73 20 | {......|.status |
|000029b0| 3d 20 53 74 6f 72 65 44 | 4d 41 50 61 72 61 6d 65 |= StoreD|MAParame|
|000029c0| 74 65 72 73 28 70 65 72 | 52 65 71 75 65 73 74 44 |ters(per|RequestD|
|000029d0| 61 74 61 50 74 72 29 3b | 0d 09 09 09 09 09 09 69 |ataPtr);|.......i|
|000029e0| 66 20 28 73 74 61 74 75 | 73 20 21 3d 20 6e 6f 45 |f (statu|s != noE|
|000029f0| 72 72 29 0d 09 09 09 09 | 09 09 09 73 74 61 74 75 |rr).....|...statu|
|00002a00| 73 20 3d 20 6b 50 72 65 | 70 61 72 65 4d 65 6d 6f |s = kPre|pareMemo|
|00002a10| 72 79 53 74 61 72 74 54 | 61 73 6b 3b 0d 09 09 09 |ryStartT|ask;....|
|00002a20| 09 09 09 65 6c 73 65 20 | 7b 0d 09 09 09 09 09 09 |...else |{.......|
|00002a30| 09 73 74 61 74 75 73 20 | 3d 20 6b 49 4f 42 75 73 |.status |= kIOBus|
|00002a40| 79 53 74 61 74 75 73 3b | 0d 09 09 09 09 09 09 09 |yStatus;|........|
|00002a50| 53 74 61 72 74 53 63 72 | 69 70 74 28 70 65 72 52 |StartScr|ipt(perR|
|00002a60| 65 71 75 65 73 74 44 61 | 74 61 50 74 72 2c 20 52 |equestDa|taPtr, R|
|00002a70| 45 51 55 45 53 54 2e 73 | 63 72 69 70 74 50 74 72 |EQUEST.s|criptPtr|
|00002a80| 29 3b 0d 09 09 09 09 09 | 09 09 67 6f 74 6f 20 65 |);......|..goto e|
|00002a90| 78 69 74 3b 0d 09 09 09 | 09 09 09 7d 0d 09 09 09 |xit;....|...}....|
|00002aa0| 09 09 7d 0d 09 09 09 09 | 09 65 6c 73 65 20 7b 0d |..}.....|.else {.|
|00002ab0| 09 09 09 09 09 09 2f 2a | 0d 09 09 09 09 09 09 20 |....../*|....... |
|00002ac0| 2a 20 54 68 69 73 20 69 | 73 20 73 6f 6d 65 20 6f |* This i|s some o|
|00002ad0| 74 68 65 72 20 22 66 69 | 6e 61 6c 22 20 53 43 53 |ther "fi|nal" SCS|
|00002ae0| 49 20 69 6e 74 65 72 72 | 75 70 74 20 73 74 61 74 |I interr|upt stat|
|00002af0| 75 73 2e 0d 09 09 09 09 | 09 09 20 2a 2f 0d 09 09 |us......|.. */...|
|00002b00| 09 09 09 7d 0d 09 09 09 | 09 7d 0d 09 09 09 09 69 |...}....|.}.....i|
|00002b10| 66 20 28 28 53 48 41 44 | 4f 57 2e 64 73 74 61 74 |f ((SHAD|OW.dstat|
|00002b20| 20 26 20 62 69 74 33 29 | 20 21 3d 20 30 29 20 7b | & bit3)| != 0) {|
|00002b30| 0d 09 09 09 09 09 2f 2a | 0d 09 09 09 09 09 20 2a |....../*|...... *|
|00002b40| 20 53 69 6e 67 6c 65 2d | 73 74 65 70 20 69 6e 74 | Single-|step int|
|00002b50| 65 72 72 75 70 74 2e 20 | 57 65 20 68 61 76 65 20 |errupt. |We have |
|00002b60| 70 72 65 73 75 6d 61 62 | 6c 79 20 6c 6f 67 67 65 |presumab|ly logge|
|00002b70| 64 20 74 68 65 20 69 6e | 74 65 72 72 75 70 74 0d |d the in|terrupt.|
|00002b80| 09 09 09 09 09 20 2a 20 | 73 6f 20 77 65 20 6e 65 |..... * |so we ne|
|00002b90| 65 64 20 6f 6e 6c 79 20 | 72 65 73 74 61 72 74 20 |ed only |restart |
|00002ba0| 74 68 65 20 70 72 6f 63 | 65 73 73 2e 20 54 68 69 |the proc|ess. Thi|
|00002bb0| 73 20 6d 61 79 20 62 65 | 20 69 6e 73 75 66 66 69 |s may be| insuffi|
|00002bc0| 63 69 65 6e 74 3a 0d 09 | 09 09 09 09 20 2a 20 77 |cient:..|.... * w|
|00002bd0| 65 20 6d 69 67 68 74 20 | 6e 65 65 64 20 74 6f 20 |e might |need to |
|00002be0| 72 65 2d 72 65 61 64 20 | 74 68 65 20 72 65 67 69 |re-read |the regi|
|00002bf0| 73 74 65 72 73 20 74 6f | 20 73 65 65 20 69 66 20 |sters to| see if |
|00002c00| 6f 74 68 65 72 20 69 6e | 74 65 72 72 75 70 74 0d |other in|terrupt.|
|00002c10| 09 09 09 09 09 20 2a 20 | 63 6f 6e 64 69 74 69 6f |..... * |conditio|
|00002c20| 6e 73 20 6e 65 65 64 20 | 74 6f 20 62 65 20 63 6c |ns need |to be cl|
|00002c30| 65 61 72 65 64 2e 0d 09 | 09 09 09 09 20 2a 0d 09 |eared...|.... *..|
|00002c40| 09 09 09 09 20 2a 20 57 | 61 72 6e 69 6e 67 3a 20 |.... * W|arning: |
|00002c50| 74 68 65 20 73 69 6e 67 | 6c 65 2d 73 74 65 70 20 |the sing|le-step |
|00002c60| 73 74 75 66 66 20 64 6f | 65 73 6e 27 74 20 77 6f |stuff do|esn't wo|
|00002c70| 72 6b 20 63 6f 72 72 65 | 63 74 6c 79 20 61 73 20 |rk corre|ctly as |
|00002c80| 74 68 65 0d 09 09 09 09 | 09 20 2a 20 63 68 69 70 |the.....|. * chip|
|00002c90| 20 61 70 70 61 72 65 6e | 74 6c 79 20 67 69 76 65 | apparen|tly give|
|00002ca0| 73 20 75 73 20 6d 75 6c | 74 69 70 6c 65 20 69 6e |s us mul|tiple in|
|00002cb0| 74 65 72 72 75 70 74 20 | 63 6f 6e 64 69 74 69 6f |terrupt |conditio|
|00002cc0| 6e 73 20 77 68 69 63 68 | 0d 09 09 09 09 09 20 2a |ns which|...... *|
|00002cd0| 20 74 68 65 20 69 6e 74 | 65 72 72 75 70 74 20 73 | the int|errupt s|
|00002ce0| 65 72 76 69 63 65 20 72 | 6f 75 74 69 6e 65 20 64 |ervice r|outine d|
|00002cf0| 6f 65 73 6e 27 74 20 68 | 61 6e 64 6c 65 20 70 72 |oesn't h|andle pr|
|00002d00| 6f 70 65 72 6c 79 2e 0d | 09 09 09 09 09 20 2a 2f |operly..|..... */|
|00002d10| 0d 09 09 09 09 7d 0d 09 | 09 09 7d 20 2f 2a 20 49 |.....}..|..} /* I|
|00002d20| 66 20 44 4d 41 20 69 6e | 74 65 72 72 75 70 74 20 |f DMA in|terrupt |
|00002d30| 6f 72 20 73 63 72 69 70 | 74 20 63 6f 6d 70 6c 65 |or scrip|t comple|
|00002d40| 74 65 20 2a 2f 0d 09 09 | 09 69 66 20 28 28 53 48 |te */...|.if ((SH|
|00002d50| 41 44 4f 57 2e 69 73 74 | 61 74 20 26 20 62 69 74 |ADOW.ist|at & bit|
|00002d60| 31 29 20 21 3d 20 30 29 | 20 7b 09 09 2f 2a 20 53 |1) != 0)| {../* S|
|00002d70| 49 50 3a 20 53 43 53 49 | 20 69 6e 74 65 72 72 75 |IP: SCSI| interru|
|00002d80| 70 74 20 70 65 6e 64 69 | 6e 67 3f 09 2a 2f 0d 09 |pt pendi|ng?.*/..|
|00002d90| 09 09 09 2f 2a 0d 09 09 | 09 09 20 2a 20 50 72 6f |.../*...|.. * Pro|
|00002da0| 63 65 73 73 20 61 20 53 | 43 53 49 20 69 6e 74 65 |cess a S|CSI inte|
|00002db0| 72 72 75 70 74 2e 0d 09 | 09 09 09 20 2a 2f 0d 09 |rrupt...|... */..|
|00002dc0| 09 09 09 69 66 20 28 28 | 53 48 41 44 4f 57 2e 73 |...if ((|SHADOW.s|
|00002dd0| 69 73 74 31 20 26 20 62 | 69 74 32 29 20 21 3d 20 |ist1 & b|it2) != |
|00002de0| 30 29 20 7b 09 09 2f 2a | 20 53 65 6c 65 63 74 69 |0) {../*| Selecti|
|00002df0| 6f 6e 20 74 69 6d 65 6f | 75 74 3f 09 09 2a 2f 0d |on timeo|ut?..*/.|
|00002e00| 09 09 09 09 09 57 72 69 | 74 65 42 79 74 65 28 53 |.....Wri|teByte(S|
|00002e10| 54 49 4d 45 30 2c 20 30 | 29 3b 09 09 09 09 2f 2a |TIME0, 0|);..../*|
|00002e20| 20 43 6c 65 61 72 20 74 | 68 65 20 74 69 6d 65 72 | Clear t|he timer|
|00002e30| 09 09 09 2a 2f 0d 09 09 | 09 09 09 73 74 61 74 75 |...*/...|...statu|
|00002e40| 73 20 3d 20 73 63 73 69 | 53 65 6c 65 63 74 54 69 |s = scsi|SelectTi|
|00002e50| 6d 65 6f 75 74 3b 0d 09 | 09 09 09 7d 0d 09 09 09 |meout;..|...}....|
|00002e60| 09 65 6c 73 65 20 69 66 | 20 28 28 53 48 41 44 4f |.else if| ((SHADO|
|00002e70| 57 2e 73 69 73 74 31 20 | 26 20 62 69 74 31 29 20 |W.sist1 |& bit1) |
|00002e80| 21 3d 20 30 29 20 7b 09 | 2f 2a 20 47 65 6e 65 72 |!= 0) {.|/* Gener|
|00002e90| 61 6c 20 74 69 6d 65 6f | 75 74 3f 09 09 09 2a 2f |al timeo|ut?...*/|
|00002ea0| 0d 09 09 09 09 09 57 72 | 69 74 65 42 79 74 65 28 |......Wr|iteByte(|
|00002eb0| 53 54 49 4d 45 31 2c 20 | 30 29 3b 09 09 09 09 2f |STIME1, |0);..../|
|00002ec0| 2a 20 43 6c 65 61 72 20 | 74 68 65 20 74 69 6d 65 |* Clear |the time|
|00002ed0| 72 09 09 09 2a 2f 0d 09 | 09 09 09 7d 0d 09 09 09 |r...*/..|...}....|
|00002ee0| 09 65 6c 73 65 20 69 66 | 20 28 28 53 48 41 44 4f |.else if| ((SHADO|
|00002ef0| 57 2e 73 69 73 74 30 20 | 26 20 28 62 69 74 33 20 |W.sist0 |& (bit3 |
|00002f00| 7c 20 62 69 74 32 20 7c | 20 62 69 74 31 20 7c 20 || bit2 || bit1 | |
|00002f10| 62 69 74 30 29 29 20 3d | 3d 20 62 69 74 31 29 20 |bit0)) =|= bit1) |
|00002f20| 7b 0d 09 09 09 09 09 2f | 2a 0d 09 09 09 09 09 20 |{....../|*...... |
|00002f30| 2a 20 42 75 73 20 52 65 | 73 65 74 2e 20 49 66 20 |* Bus Re|set. If |
|00002f40| 53 43 53 49 20 43 6f 6e | 74 72 6f 6c 20 31 20 68 |SCSI Con|trol 1 h|
|00002f50| 61 73 20 52 53 54 20 28 | 62 69 74 20 33 29 20 73 |as RST (|bit 3) s|
|00002f60| 65 74 2c 20 69 6e 64 69 | 63 61 74 69 6e 67 0d 09 |et, indi|cating..|
|00002f70| 09 09 09 09 20 2a 20 74 | 68 61 74 20 77 65 20 61 |.... * t|hat we a|
|00002f80| 73 73 65 72 74 65 64 20 | 62 75 73 20 52 65 73 65 |sserted |bus Rese|
|00002f90| 74 2c 20 67 65 6e 65 72 | 61 74 65 20 61 20 70 72 |t, gener|ate a pr|
|00002fa0| 69 76 61 74 65 20 73 74 | 61 74 75 73 20 74 68 61 |ivate st|atus tha|
|00002fb0| 74 0d 09 09 09 09 09 20 | 2a 20 74 68 65 20 73 65 |t...... |* the se|
|00002fc0| 63 6f 6e 64 61 72 79 20 | 69 6e 74 65 72 72 75 70 |condary |interrup|
|00002fd0| 74 20 72 6f 75 74 69 6e | 65 20 77 69 6c 6c 20 75 |t routin|e will u|
|00002fe0| 73 65 20 74 6f 20 73 74 | 61 6c 6c 20 74 68 65 20 |se to st|all the |
|00002ff0| 73 63 72 69 70 74 0d 09 | 09 09 09 09 20 2a 20 66 |script..|.... * f|
|00003000| 6f 72 20 32 35 30 20 6d | 73 65 63 2e 20 54 68 65 |or 250 m|sec. The|
|00003010| 6e 2c 20 69 74 20 72 65 | 73 74 61 72 74 73 20 74 |n, it re|starts t|
|00003020| 68 65 20 73 63 72 69 70 | 74 20 74 6f 20 63 6c 65 |he scrip|t to cle|
|00003030| 61 72 20 74 68 65 0d 09 | 09 09 09 09 20 2a 20 62 |ar the..|.... * b|
|00003040| 75 73 20 72 65 73 65 74 | 20 63 6f 6e 64 69 74 69 |us reset| conditi|
|00003050| 6f 6e 2e 0d 09 09 09 09 | 09 20 2a 2f 0d 09 09 09 |on......|. */....|
|00003060| 09 09 69 66 20 28 28 53 | 48 41 44 4f 57 2e 73 63 |..if ((S|HADOW.sc|
|00003070| 6e 74 6c 31 20 26 20 62 | 69 74 33 29 20 21 3d 20 |ntl1 & b|it3) != |
|00003080| 30 29 20 7b 0d 09 09 09 | 09 09 09 73 74 61 74 75 |0) {....|...statu|
|00003090| 73 20 3d 20 6b 42 75 73 | 52 65 73 65 74 52 65 73 |s = kBus|ResetRes|
|000030a0| 74 61 72 74 3b 09 09 2f | 2a 20 50 72 69 76 61 74 |tart;../|* Privat|
|000030b0| 65 20 73 74 61 74 75 73 | 09 09 09 2a 2f 0d 09 09 |e status|...*/...|
|000030c0| 09 09 09 7d 0d 09 09 09 | 09 09 65 6c 73 65 20 7b |...}....|..else {|
|000030d0| 0d 09 09 09 09 09 09 73 | 74 61 74 75 73 20 3d 20 |.......s|tatus = |
|000030e0| 73 63 73 69 53 43 53 49 | 42 75 73 52 65 73 65 74 |scsiSCSI|BusReset|
|000030f0| 3b 0d 09 09 09 09 09 09 | 4c 6f 67 53 74 72 69 6e |;.......|LogStrin|
|00003100| 67 28 22 5c 70 55 6e 65 | 78 70 65 63 74 65 64 20 |g("\pUne|xpected |
|00003110| 62 75 73 20 72 65 73 65 | 74 22 29 3b 0d 09 09 09 |bus rese|t");....|
|00003120| 09 09 7d 0d 09 09 09 09 | 7d 0d 09 09 09 09 65 6c |..}.....|}.....el|
|00003130| 73 65 20 69 66 20 28 28 | 53 48 41 44 4f 57 2e 73 |se if ((|SHADOW.s|
|00003140| 69 73 74 30 20 26 20 28 | 62 69 74 33 20 7c 20 62 |ist0 & (|bit3 | b|
|00003150| 69 74 32 20 7c 20 62 69 | 74 31 20 7c 20 62 69 74 |it2 | bi|t1 | bit|
|00003160| 30 29 29 20 21 3d 20 30 | 29 20 7b 0d 09 09 09 09 |0)) != 0|) {.....|
|00003170| 09 2f 2a 0d 09 09 09 09 | 09 20 2a 20 62 69 74 33 |./*.....|. * bit3|
|00003180| 3a 20 53 43 53 49 20 67 | 72 6f 73 73 20 65 72 72 |: SCSI g|ross err|
|00003190| 6f 72 20 28 64 61 74 61 | 20 75 6e 64 65 72 2f 6f |or (data| under/o|
|000031a0| 76 65 72 66 6c 6f 77 29 | 20 0d 09 09 09 09 09 20 |verflow)| ...... |
|000031b0| 2a 20 62 69 74 32 3a 20 | 55 6e 65 78 70 65 63 74 |* bit2: |Unexpect|
|000031c0| 65 64 20 64 69 73 63 6f | 6e 6e 65 63 74 0d 09 09 |ed disco|nnect...|
|000031d0| 09 09 09 20 2a 20 62 69 | 74 31 3a 20 42 75 73 20 |... * bi|t1: Bus |
|000031e0| 52 65 73 65 74 20 28 61 | 6e 64 20 73 6f 6d 65 20 |Reset (a|nd some |
|000031f0| 6f 74 68 65 72 20 53 43 | 53 49 20 69 6e 74 65 72 |other SC|SI inter|
|00003200| 72 75 70 74 29 0d 09 09 | 09 09 09 20 2a 20 62 69 |rupt)...|... * bi|
|00003210| 74 30 3a 20 42 75 73 20 | 70 61 72 69 74 79 20 65 |t0: Bus |parity e|
|00003220| 72 72 6f 72 2e 0d 09 09 | 09 09 09 20 2a 2f 0d 09 |rror....|... */..|
|00003230| 09 09 09 09 69 66 20 28 | 52 45 51 55 45 53 54 2e |....if (|REQUEST.|
|00003240| 73 63 72 69 70 74 53 65 | 6c 65 63 74 6f 72 20 3d |scriptSe|lector =|
|00003250| 3d 20 6b 53 43 53 49 43 | 6f 6d 6d 61 6e 64 53 63 |= kSCSIC|ommandSc|
|00003260| 72 69 70 74 29 20 7b 0d | 09 09 09 09 09 09 73 77 |ript) {.|......sw|
|00003270| 69 74 63 68 20 28 53 48 | 41 44 4f 57 2e 73 69 73 |itch (SH|ADOW.sis|
|00003280| 74 30 20 26 20 28 62 69 | 74 33 20 7c 20 62 69 74 |t0 & (bi|t3 | bit|
|00003290| 32 20 7c 20 62 69 74 31 | 20 7c 20 62 69 74 30 29 |2 | bit1| | bit0)|
|000032a0| 29 20 7b 0d 09 09 09 09 | 09 09 63 61 73 65 20 62 |) {.....|..case b|
|000032b0| 69 74 30 3a 09 73 74 61 | 74 75 73 20 3d 20 73 63 |it0:.sta|tus = sc|
|000032c0| 73 69 50 61 72 69 74 79 | 45 72 72 6f 72 3b 09 09 |siParity|Error;..|
|000032d0| 62 72 65 61 6b 3b 0d 09 | 09 09 09 09 09 63 61 73 |break;..|.....cas|
|000032e0| 65 20 62 69 74 31 3a 09 | 73 74 61 74 75 73 20 3d |e bit1:.|status =|
|000032f0| 20 73 63 73 69 53 43 53 | 49 42 75 73 52 65 73 65 | scsiSCS|IBusRese|
|00003300| 74 3b 09 09 62 72 65 61 | 6b 3b 0d 09 09 09 09 09 |t;..brea|k;......|
|00003310| 09 63 61 73 65 20 62 69 | 74 32 3a 09 73 74 61 74 |.case bi|t2:.stat|
|00003320| 75 73 20 3d 20 73 63 73 | 69 55 6e 65 78 70 65 63 |us = scs|iUnexpec|
|00003330| 74 65 64 42 75 73 46 72 | 65 65 3b 09 62 72 65 61 |tedBusFr|ee;.brea|
|00003340| 6b 3b 0d 09 09 09 09 09 | 09 63 61 73 65 20 62 69 |k;......|.case bi|
|00003350| 74 33 3a 09 73 74 61 74 | 75 73 20 3d 20 73 63 73 |t3:.stat|us = scs|
|00003360| 69 44 61 74 61 52 75 6e | 45 72 72 6f 72 3b 09 09 |iDataRun|Error;..|
|00003370| 62 72 65 61 6b 3b 0d 09 | 09 09 09 09 09 64 65 66 |break;..|.....def|
|00003380| 61 75 6c 74 3a 09 73 74 | 61 74 75 73 20 3d 20 73 |ault:.st|atus = s|
|00003390| 63 73 69 54 65 72 6d 69 | 6e 61 74 65 64 3b 09 09 |csiTermi|nated;..|
|000033a0| 62 72 65 61 6b 3b 0d 09 | 09 09 09 09 09 7d 0d 09 |break;..|.....}..|
|000033b0| 09 09 09 09 7d 0d 09 09 | 09 09 09 69 66 20 28 73 |....}...|...if (s|
|000033c0| 74 61 74 75 73 20 3d 3d | 20 73 63 73 69 53 43 53 |tatus ==| scsiSCS|
|000033d0| 49 42 75 73 52 65 73 65 | 74 09 09 09 09 09 2f 2a |IBusRese|t...../*|
|000033e0| 20 42 75 73 20 72 65 73 | 65 74 3f 09 2a 2f 0d 09 | Bus res|et?.*/..|
|000033f0| 09 09 09 09 20 26 26 20 | 52 45 51 55 45 53 54 2e |.... && |REQUEST.|
|00003400| 73 63 72 69 70 74 53 65 | 6c 65 63 74 6f 72 20 3d |scriptSe|lector =|
|00003410| 3d 20 6b 42 75 73 52 65 | 73 65 74 53 63 72 69 70 |= kBusRe|setScrip|
|00003420| 74 29 09 2f 2a 20 49 67 | 6e 6f 72 65 20 6f 75 72 |t)./* Ig|nore our|
|00003430| 73 09 2a 2f 0d 09 09 09 | 09 09 09 73 74 61 74 75 |s.*/....|...statu|
|00003440| 73 20 3d 20 6e 6f 45 72 | 72 3b 0d 09 09 09 09 09 |s = noEr|r;......|
|00003450| 65 6c 73 65 20 7b 0d 09 | 09 09 09 09 09 4c 6f 67 |else {..|.....Log|
|00003460| 48 65 78 28 53 48 41 44 | 4f 57 2e 73 69 73 74 30 |Hex(SHAD|OW.sist0|
|00003470| 2c 20 22 5c 70 53 74 72 | 61 6e 67 65 20 53 43 53 |, "\pStr|ange SCS|
|00003480| 49 20 65 72 72 6f 72 22 | 29 3b 0d 09 09 09 09 09 |I error"|);......|
|00003490| 7d 0d 09 09 09 09 7d 0d | 09 09 09 09 65 6c 73 65 |}.....}.|....else|
|000034a0| 20 69 66 20 28 28 53 48 | 41 44 4f 57 2e 73 69 73 | if ((SH|ADOW.sis|
|000034b0| 74 30 20 26 20 62 69 74 | 37 29 20 21 3d 20 30 29 |t0 & bit|7) != 0)|
|000034c0| 20 7b 09 09 2f 2a 20 50 | 68 61 73 65 20 6d 69 73 | {../* P|hase mis|
|000034d0| 6d 61 74 63 68 3f 09 09 | 2a 2f 0d 09 09 09 09 09 |match?..|*/......|
|000034e0| 2f 2a 0d 09 09 09 09 09 | 20 2a 20 50 68 61 73 65 |/*......| * Phase|
|000034f0| 20 6d 69 73 6d 61 74 63 | 68 20 2d 20 74 68 69 73 | mismatc|h - this|
|00003500| 20 69 73 20 6f 66 74 65 | 6e 20 61 6e 20 65 72 72 | is ofte|n an err|
|00003510| 6f 72 2c 20 62 75 74 20 | 77 65 20 64 6f 20 61 6c |or, but |we do al|
|00003520| 6c 6f 77 0d 09 09 09 09 | 09 20 2a 20 73 68 6f 72 |low.....|. * shor|
|00003530| 74 20 74 72 61 6e 73 66 | 65 72 73 2c 20 77 68 65 |t transf|ers, whe|
|00003540| 72 65 20 74 68 65 20 75 | 73 65 72 20 72 65 71 75 |re the u|ser requ|
|00003550| 65 73 74 65 64 20 61 20 | 6c 6f 6e 67 65 72 20 62 |ested a |longer b|
|00003560| 75 66 66 65 72 0d 09 09 | 09 09 09 20 2a 20 74 68 |uffer...|... * th|
|00003570| 61 6e 20 74 68 65 20 74 | 61 72 67 65 74 20 69 6e |an the t|arget in|
|00003580| 74 65 6e 64 73 20 74 6f | 20 70 72 6f 76 69 64 65 |tends to| provide|
|00003590| 2e 20 57 65 20 63 68 65 | 63 6b 20 74 68 69 73 20 |. We che|ck this |
|000035a0| 62 79 0d 09 09 09 09 09 | 20 2a 09 28 31 29 20 63 |by......| *.(1) c|
|000035b0| 68 65 63 6b 69 6e 67 20 | 66 6f 72 20 22 6f 6c 64 |hecking |for "old|
|000035c0| 22 20 70 68 61 73 65 20 | 69 6e 20 53 48 41 44 4f |" phase |in SHADO|
|000035d0| 57 2e 73 6f 63 6c 2e 20 | 4c 6f 6f 6b 20 66 6f 72 |W.socl. |Look for|
|000035e0| 20 44 41 54 49 2e 0d 09 | 09 09 09 09 20 2a 09 28 | DATI...|.... *.(|
|000035f0| 32 29 20 63 68 65 63 6b | 69 6e 67 20 66 6f 72 20 |2) check|ing for |
|00003600| 22 6e 65 77 22 20 70 68 | 61 73 65 20 2d 2d 20 69 |"new" ph|ase -- i|
|00003610| 74 20 73 68 6f 75 6c 64 | 20 62 65 20 53 54 41 54 |t should| be STAT|
|00003620| 55 53 2c 20 62 75 74 20 | 74 68 69 73 0d 09 09 09 |US, but |this....|
|00003630| 09 09 20 2a 09 09 69 73 | 20 6f 6e 6c 79 20 66 6f |.. *..is| only fo|
|00003640| 72 20 64 65 62 75 67 67 | 69 6e 67 3a 20 74 68 65 |r debugg|ing: the|
|00003650| 20 73 63 72 69 70 74 20 | 77 69 6c 6c 20 65 76 65 | script |will eve|
|00003660| 6e 74 75 61 6c 6c 79 20 | 66 61 69 6c 20 69 66 0d |ntually |fail if.|
|00003670| 09 09 09 09 09 20 2a 09 | 09 74 68 69 73 20 69 73 |..... *.|.this is|
|00003680| 20 6e 6f 74 20 74 68 65 | 20 63 61 73 65 2e 0d 09 | not the| case...|
|00003690| 09 09 09 09 20 2a 09 28 | 33 29 20 63 68 65 63 6b |.... *.(|3) check|
|000036a0| 69 6e 67 20 74 68 65 20 | 44 4d 41 20 66 69 66 6f |ing the |DMA fifo|
|000036b0| 20 2d 2d 20 69 74 20 73 | 68 6f 75 6c 64 20 62 65 | -- it s|hould be|
|000036c0| 20 65 6d 70 74 79 0d 09 | 09 09 09 09 20 2a 09 28 | empty..|.... *.(|
|000036d0| 34 29 20 63 68 65 63 6b | 69 6e 67 20 74 68 65 20 |4) check|ing the |
|000036e0| 44 42 43 20 74 72 61 6e | 73 66 65 72 20 63 6f 75 |DBC tran|sfer cou|
|000036f0| 6e 74 20 2d 2d 20 69 74 | 20 73 68 6f 75 6c 64 20 |nt -- it| should |
|00003700| 62 65 20 6e 6f 6e 7a 65 | 72 6f 2e 0d 09 09 09 09 |be nonze|ro......|
|00003710| 09 20 2a 20 4f 74 68 65 | 72 20 63 61 73 65 73 20 |. * Othe|r cases |
|00003720| 61 72 65 20 65 72 72 6f | 72 73 2e 20 54 68 65 20 |are erro|rs. The |
|00003730| 73 63 72 69 70 74 20 63 | 6f 6e 74 69 6e 75 65 73 |script c|ontinues|
|00003740| 20 61 66 74 65 72 20 70 | 68 61 73 65 2d 0d 09 09 | after p|hase-...|
|00003750| 09 09 09 20 2a 20 6d 69 | 73 6d 61 74 63 68 20 65 |... * mi|smatch e|
|00003760| 72 72 6f 72 73 3a 20 69 | 74 20 77 69 6c 6c 20 65 |rrors: i|t will e|
|00003770| 76 65 6e 74 75 61 6c 6c | 79 20 66 69 6e 69 73 68 |ventuall|y finish|
|00003780| 20 77 69 74 68 20 61 20 | 62 75 73 2d 66 72 65 65 | with a |bus-free|
|00003790| 0d 09 09 09 09 09 20 2a | 20 73 74 61 74 75 73 20 |...... *| status |
|000037a0| 61 6e 64 20 61 6e 20 49 | 6e 74 20 69 6e 73 74 72 |and an I|nt instr|
|000037b0| 75 63 74 69 6f 6e 2e 0d | 09 09 09 09 09 20 2a 0d |uction..|..... *.|
|000037c0| 09 09 09 09 09 20 2a 20 | 54 6f 20 68 61 6e 64 6c |..... * |To handl|
|000037d0| 65 20 70 61 72 74 69 61 | 6c 20 70 72 65 70 61 72 |e partia|l prepar|
|000037e0| 61 74 69 6f 6e 6e 2c 20 | 73 63 61 74 74 65 72 2d |ationn, |scatter-|
|000037f0| 67 61 74 68 65 72 2c 20 | 6f 72 20 6f 74 68 65 72 |gather, |or other|
|00003800| 0d 09 09 09 09 09 20 2a | 20 6e 6f 6e 2d 63 6f 6e |...... *| non-con|
|00003810| 74 69 67 75 6f 75 73 20 | 70 68 79 73 69 63 61 6c |tiguous |physical|
|00003820| 20 6d 65 6d 6f 72 79 20 | 73 69 74 75 61 74 69 6f | memory |situatio|
|00003830| 6e 73 2c 20 77 65 20 71 | 75 65 75 65 20 61 20 73 |ns, we q|ueue a s|
|00003840| 65 63 6f 6e 64 61 72 79 | 0d 09 09 09 09 09 20 2a |econdary|...... *|
|00003850| 20 69 6e 74 65 72 72 75 | 70 74 20 68 61 6e 64 6c | interru|pt handl|
|00003860| 65 72 20 74 68 61 74 20 | 72 65 63 6f 76 65 72 73 |er that |recovers|
|00003870| 20 74 68 65 20 72 65 73 | 69 64 75 61 6c 20 64 6d | the res|idual dm|
|00003880| 61 20 63 6f 75 6e 74 20 | 28 74 68 65 0d 09 09 09 |a count |(the....|
|00003890| 09 09 20 2a 20 66 6f 6c | 6c 6f 77 69 6e 67 20 63 |.. * fol|lowing c|
|000038a0| 6f 64 65 20 77 69 6c 6c | 20 62 65 20 63 6f 70 69 |ode will| be copi|
|000038b0| 65 64 20 74 68 65 72 65 | 29 2c 20 69 74 20 74 68 |ed there|), it th|
|000038c0| 65 6e 20 63 61 6c 6c 73 | 0d 09 09 09 09 09 20 2a |en calls|...... *|
|000038d0| 20 50 72 65 70 61 72 65 | 4d 65 6d 6f 72 79 46 6f | Prepare|MemoryFo|
|000038e0| 72 49 4f 20 74 6f 20 75 | 70 64 61 74 65 20 74 68 |rIO to u|pdate th|
|000038f0| 65 20 70 68 79 73 69 63 | 61 6c 20 6d 61 70 70 69 |e physic|al mappi|
|00003900| 6e 67 20 70 6f 69 6e 74 | 65 72 73 2c 0d 09 09 09 |ng point|ers,....|
|00003910| 09 09 20 2a 20 75 70 64 | 61 74 65 73 20 74 68 65 |.. * upd|ates the|
|00003920| 20 64 61 74 61 20 74 61 | 62 6c 65 2c 20 61 6e 64 | data ta|ble, and|
|00003930| 20 72 65 73 74 61 72 74 | 73 20 74 68 65 20 6f 70 | restart|s the op|
|00003940| 65 72 61 74 69 6f 6e 2e | 20 54 6f 6f 20 6d 75 63 |eration.| Too muc|
|00003950| 68 0d 09 09 09 09 09 20 | 2a 20 77 6f 72 6b 20 66 |h...... |* work f|
|00003960| 6f 72 20 61 20 73 61 6d | 70 6c 65 2e 0d 09 09 09 |or a sam|ple.....|
|00003970| 09 09 20 2a 2f 0d 09 09 | 09 09 09 6f 6c 64 50 68 |.. */...|...oldPh|
|00003980| 61 73 65 20 3d 20 53 48 | 41 44 4f 57 2e 73 6f 63 |ase = SH|ADOW.soc|
|00003990| 6c 20 26 20 30 78 30 37 | 3b 0d 09 09 09 09 09 69 |l & 0x07|;......i|
|000039a0| 66 20 28 6f 6c 64 50 68 | 61 73 65 20 3d 3d 20 44 |f (oldPh|ase == D|
|000039b0| 41 54 4f 20 7c 7c 20 6f | 6c 64 50 68 61 73 65 20 |ATO || o|ldPhase |
|000039c0| 3d 3d 20 44 41 54 49 29 | 20 7b 0d 09 09 09 09 09 |== DATI)| {......|
|000039d0| 09 2f 2a 0d 09 09 09 09 | 09 09 20 2a 20 54 72 79 |./*.....|.. * Try|
|000039e0| 20 74 6f 20 72 65 63 6f | 76 65 72 20 74 68 65 20 | to reco|ver the |
|000039f0| 72 65 73 69 64 75 61 6c | 20 64 6d 61 20 63 6f 75 |residual| dma cou|
|00003a00| 6e 74 2e 20 54 68 65 20 | 61 6c 67 6f 72 69 74 68 |nt. The |algorith|
|00003a10| 6d 20 69 73 0d 09 09 09 | 09 09 09 20 2a 20 66 72 |m is....|... * fr|
|00003a20| 6f 6d 20 70 61 67 65 20 | 35 2d 32 36 20 6f 66 20 |om page |5-26 of |
|00003a30| 74 68 65 20 20 4e 43 52 | 20 64 61 74 61 20 6d 61 |the NCR| data ma|
|00003a40| 6e 75 61 6c 3a 0d 09 09 | 09 09 09 09 20 2a 09 31 |nual:...|.... *.1|
|00003a50| 2e 20 53 75 62 74 72 61 | 63 74 20 74 68 65 20 73 |. Subtra|ct the s|
|00003a60| 65 76 65 6e 20 6c 65 61 | 73 74 20 73 69 67 6e 69 |even lea|st signi|
|00003a70| 66 69 63 61 6e 74 20 62 | 69 74 73 20 6f 66 20 74 |ficant b|its of t|
|00003a80| 68 65 20 64 62 63 0d 09 | 09 09 09 09 09 20 2a 09 |he dbc..|..... *.|
|00003a90| 09 72 65 67 69 73 74 65 | 72 20 66 72 6f 6d 20 74 |.registe|r from t|
|00003aa0| 68 65 20 37 2d 62 69 74 | 20 76 61 6c 75 65 20 6f |he 7-bit| value o|
|00003ab0| 66 20 74 68 65 20 64 66 | 69 66 6f 20 72 65 67 69 |f the df|ifo regi|
|00003ac0| 73 74 65 72 2e 0d 09 09 | 09 09 09 09 20 2a 09 32 |ster....|.... *.2|
|00003ad0| 2e 20 41 6e 64 20 74 68 | 65 20 72 65 73 75 6c 74 |. And th|e result|
|00003ae0| 20 77 69 74 68 20 30 78 | 37 46 20 66 6f 72 20 61 | with 0x|7F for a|
|00003af0| 20 62 79 74 65 20 63 6f | 75 6e 74 20 62 65 74 77 | byte co|unt betw|
|00003b00| 65 65 6e 0d 09 09 09 09 | 09 09 20 2a 09 09 7a 65 |een.....|.. *..ze|
|00003b10| 72 6f 20 61 6e 64 20 36 | 34 2e 0d 09 09 09 09 09 |ro and 6|4.......|
|00003b20| 09 20 2a 2f 0d 09 09 09 | 09 09 09 53 48 41 44 4f |. */....|...SHADO|
|00003b30| 57 2e 72 65 73 69 64 75 | 61 6c 54 72 61 6e 73 66 |W.residu|alTransf|
|00003b40| 65 72 43 6f 75 6e 74 20 | 3d 20 53 48 41 44 4f 57 |erCount |= SHADOW|
|00003b50| 2e 64 62 63 0d 09 09 09 | 09 09 09 09 2b 20 28 28 |.dbc....|....+ ((|
|00003b60| 28 53 48 41 44 4f 57 2e | 64 66 69 66 6f 20 26 20 |(SHADOW.|dfifo & |
|00003b70| 30 78 37 46 29 20 2d 20 | 28 53 48 41 44 4f 57 2e |0x7F) - |(SHADOW.|
|00003b80| 64 62 63 20 26 20 30 78 | 37 46 29 29 20 26 20 30 |dbc & 0x|7F)) & 0|
|00003b90| 78 37 46 29 3b 0d 09 09 | 09 09 09 09 2f 2a 0d 09 |x7F);...|..../*..|
|00003ba0| 09 09 09 09 09 20 2a 20 | 42 79 74 65 20 63 6f 75 |..... * |Byte cou|
|00003bb0| 6e 74 20 77 69 6c 6c 20 | 62 65 20 61 20 76 61 6c |nt will |be a val|
|00003bc0| 75 65 20 62 65 74 77 65 | 65 6e 20 7a 65 72 6f 20 |ue betwe|en zero |
|00003bd0| 61 6e 64 20 36 34 2e 0d | 09 09 09 09 09 09 20 2a |and 64..|...... *|
|00003be0| 20 49 66 20 74 68 69 73 | 20 77 61 73 20 61 20 73 | If this| was a s|
|00003bf0| 65 6e 64 20 28 44 41 54 | 4f 2c 20 4d 53 47 4f 2c |end (DAT|O, MSGO,|
|00003c00| 20 43 4d 44 29 20 6f 70 | 65 72 61 74 69 6f 6e 2c | CMD) op|eration,|
|00003c10| 20 6c 6f 6f 6b 0d 09 09 | 09 09 09 09 20 2a 20 61 | look...|.... * a|
|00003c20| 74 20 74 68 65 20 53 53 | 54 41 54 30 20 61 6e 64 |t the SS|TAT0 and|
|00003c30| 20 53 53 54 41 54 32 20 | 72 65 67 69 73 74 65 72 | SSTAT2 |register|
|00003c40| 73 20 74 6f 20 73 65 65 | 20 69 66 20 62 79 74 65 |s to see| if byte|
|00003c50| 73 20 72 65 6d 61 69 6e | 0d 09 09 09 09 09 09 20 |s remain|....... |
|00003c60| 2a 20 69 6e 20 74 68 65 | 20 53 4f 44 4c 20 72 65 |* in the| SODL re|
|00003c70| 67 69 73 74 65 72 2e 20 | 54 68 69 73 20 70 72 6f |gister. |This pro|
|00003c80| 62 61 62 6c 79 20 6e 65 | 65 64 73 20 77 6f 72 6b |bably ne|eds work|
|00003c90| 2e 0d 09 09 09 09 09 09 | 20 2a 2f 0d 09 09 09 09 |........| */.....|
|00003ca0| 09 09 69 66 20 28 6f 6c | 64 50 68 61 73 65 20 3d |..if (ol|dPhase =|
|00003cb0| 3d 20 44 41 54 4f 29 20 | 7b 0d 09 09 09 09 09 09 |= DATO) |{.......|
|00003cc0| 09 69 66 20 28 28 53 48 | 41 44 4f 57 2e 73 73 74 |.if ((SH|ADOW.sst|
|00003cd0| 61 74 30 20 26 20 62 69 | 74 35 29 20 21 3d 20 30 |at0 & bi|t5) != 0|
|00003ce0| 29 0d 09 09 09 09 09 09 | 09 09 2b 2b 53 48 41 44 |).......|..++SHAD|
|00003cf0| 4f 57 2e 72 65 73 69 64 | 75 61 6c 54 72 61 6e 73 |OW.resid|ualTrans|
|00003d00| 66 65 72 43 6f 75 6e 74 | 3b 0d 09 09 09 09 09 09 |ferCount|;.......|
|00003d10| 09 69 66 20 28 28 53 48 | 41 44 4f 57 2e 73 73 74 |.if ((SH|ADOW.sst|
|00003d20| 61 74 32 20 26 20 62 69 | 74 35 29 20 21 3d 20 30 |at2 & bi|t5) != 0|
|00003d30| 29 0d 09 09 09 09 09 09 | 09 09 2b 2b 53 48 41 44 |).......|..++SHAD|
|00003d40| 4f 57 2e 72 65 73 69 64 | 75 61 6c 54 72 61 6e 73 |OW.resid|ualTrans|
|00003d50| 66 65 72 43 6f 75 6e 74 | 3b 0d 09 09 09 09 09 09 |ferCount|;.......|
|00003d60| 7d 0d 09 09 09 09 09 09 | 65 6c 73 65 20 7b 0d 09 |}.......|else {..|
|00003d70| 09 09 09 09 09 09 69 66 | 20 28 28 53 48 41 44 4f |......if| ((SHADO|
|00003d80| 57 2e 73 73 74 61 74 30 | 20 26 20 62 69 74 37 29 |W.sstat0| & bit7)|
|00003d90| 20 21 3d 20 30 29 0d 09 | 09 09 09 09 09 09 09 2b | != 0)..|.......+|
|00003da0| 2b 53 48 41 44 4f 57 2e | 72 65 73 69 64 75 61 6c |+SHADOW.|residual|
|00003db0| 54 72 61 6e 73 66 65 72 | 43 6f 75 6e 74 3b 0d 09 |Transfer|Count;..|
|00003dc0| 09 09 09 09 09 09 69 66 | 20 28 28 53 48 41 44 4f |......if| ((SHADO|
|00003dd0| 57 2e 73 73 74 61 74 32 | 20 26 20 62 69 74 37 29 |W.sstat2| & bit7)|
|00003de0| 20 21 3d 20 30 29 0d 09 | 09 09 09 09 09 09 09 2b | != 0)..|.......+|
|00003df0| 2b 53 48 41 44 4f 57 2e | 72 65 73 69 64 75 61 6c |+SHADOW.|residual|
|00003e00| 54 72 61 6e 73 66 65 72 | 43 6f 75 6e 74 3b 0d 09 |Transfer|Count;..|
|00003e10| 09 09 09 09 09 7d 0d 09 | 09 09 09 09 09 69 66 20 |.....}..|.....if |
|00003e20| 28 70 62 20 21 3d 20 4e | 55 4c 4c 29 0d 09 09 09 |(pb != N|ULL)....|
|00003e30| 09 09 09 09 50 42 2e 69 | 6f 41 63 74 43 6f 75 6e |....PB.i|oActCoun|
|00003e40| 74 20 2d 3d 20 53 48 41 | 44 4f 57 2e 72 65 73 69 |t -= SHA|DOW.resi|
|00003e50| 64 75 61 6c 54 72 61 6e | 73 66 65 72 43 6f 75 6e |dualTran|sferCoun|
|00003e60| 74 3b 0d 09 09 09 09 09 | 7d 20 2f 2a 20 49 66 20 |t;......|} /* If |
|00003e70| 44 41 54 49 20 6f 72 20 | 44 41 54 4f 20 70 68 61 |DATI or |DATO pha|
|00003e80| 73 65 20 2a 2f 0d 09 09 | 09 09 7d 20 2f 2a 20 49 |se */...|..} /* I|
|00003e90| 66 20 74 68 69 73 20 69 | 73 20 61 20 70 68 61 73 |f this i|s a phas|
|00003ea0| 65 20 6d 69 73 6d 61 74 | 63 68 20 65 72 72 6f 72 |e mismat|ch error|
|00003eb0| 20 2a 2f 0d 09 09 09 7d | 0d 09 09 7d 0d 09 09 69 | */....}|...}...i|
|00003ec0| 66 20 28 73 74 61 74 75 | 73 20 21 3d 20 6b 49 4f |f (statu|s != kIO|
|00003ed0| 42 75 73 79 53 74 61 74 | 75 73 29 20 7b 0d 09 09 |BusyStat|us) {...|
|00003ee0| 09 2f 2a 0d 09 09 09 20 | 2a 20 54 75 72 6e 20 6f |./*.... |* Turn o|
|00003ef0| 66 66 20 74 68 65 20 69 | 6e 74 65 72 72 75 70 74 |ff the i|nterrupt|
|00003f00| 73 20 61 6e 64 20 63 68 | 69 70 20 74 69 6d 65 72 |s and ch|ip timer|
|00003f10| 73 20 74 6f 20 70 72 65 | 76 65 6e 74 20 61 6e 20 |s to pre|vent an |
|00003f20| 75 6e 65 78 70 65 63 74 | 65 64 0d 09 09 09 20 2a |unexpect|ed.... *|
|00003f30| 20 69 6e 74 65 72 72 75 | 70 74 3a 20 6f 75 72 20 | interru|pt: our |
|00003f40| 67 6c 6f 62 61 6c 20 70 | 65 72 2d 72 65 71 75 65 |global p|er-reque|
|00003f50| 73 74 20 72 65 63 6f 72 | 64 20 72 69 73 6b 73 20 |st recor|d risks |
|00003f60| 72 65 65 6e 74 72 61 6e | 63 79 20 62 75 67 73 2e |reentran|cy bugs.|
|00003f70| 0d 09 09 09 20 2a 20 49 | 66 20 77 65 20 72 65 73 |.... * I|f we res|
|00003f80| 74 61 72 74 20 49 2f 4f | 20 77 65 20 77 69 6c 6c |tart I/O| we will|
|00003f90| 20 72 65 2d 65 6e 61 62 | 6c 65 20 74 69 6d 65 72 | re-enab|le timer|
|00003fa0| 73 20 61 6e 64 20 69 6e | 74 65 72 72 75 70 74 73 |s and in|terrupts|
|00003fb0| 2e 0d 09 09 09 20 2a 2f | 0d 09 09 09 57 72 69 74 |..... */|....Writ|
|00003fc0| 65 42 79 74 65 28 44 49 | 45 4e 2c 20 30 29 3b 0d |eByte(DI|EN, 0);.|
|00003fd0| 09 09 09 57 72 69 74 65 | 42 79 74 65 28 53 49 45 |...Write|Byte(SIE|
|00003fe0| 4e 30 2c 20 30 29 3b 0d | 09 09 09 57 72 69 74 65 |N0, 0);.|...Write|
|00003ff0| 42 79 74 65 28 53 49 45 | 4e 31 2c 20 30 29 3b 0d |Byte(SIE|N1, 0);.|
|00004000| 09 09 09 57 72 69 74 65 | 42 79 74 65 28 53 54 49 |...Write|Byte(STI|
|00004010| 4d 45 30 2c 20 30 29 3b | 0d 09 09 09 57 72 69 74 |ME0, 0);|....Writ|
|00004020| 65 42 79 74 65 28 53 54 | 49 4d 45 31 2c 20 30 29 |eByte(ST|IME1, 0)|
|00004030| 3b 0d 09 09 09 2f 2a 0d | 09 09 09 20 2a 20 4e 6f |;..../*.|... * No|
|00004040| 74 65 20 74 68 61 74 20 | 61 63 74 75 61 6c 20 63 |te that |actual c|
|00004050| 6f 6d 70 6c 65 74 69 6f | 6e 20 69 73 20 64 6f 6e |ompletio|n is don|
|00004060| 65 20 66 72 6f 6d 20 61 | 20 73 65 63 6f 6e 64 61 |e from a| seconda|
|00004070| 72 79 20 69 6e 74 65 72 | 72 75 70 74 0d 09 09 09 |ry inter|rupt....|
|00004080| 20 2a 20 68 61 6e 64 6c | 65 72 20 61 73 20 77 65 | * handl|er as we|
|00004090| 20 6d 75 73 74 20 43 68 | 65 63 6b 70 6f 69 6e 74 | must Ch|eckpoint|
|000040a0| 20 74 68 65 20 49 2f 4f | 20 62 75 66 66 65 72 73 | the I/O| buffers|
|000040b0| 2e 0d 09 09 09 20 2a 2f | 0d 09 09 09 66 6f 72 20 |..... */|....for |
|000040c0| 28 73 74 61 6c 6c 4c 6f | 6f 70 20 3d 20 30 3b 20 |(stallLo|op = 0; |
|000040d0| 73 74 61 6c 6c 4c 6f 6f | 70 20 3c 20 31 30 30 3b |stallLoo|p < 100;|
|000040e0| 20 73 74 61 6c 6c 4c 6f | 6f 70 2b 2b 29 20 7b 0d | stallLo|op++) {.|
|000040f0| 09 09 09 09 73 74 61 74 | 75 73 20 3d 20 4e 43 52 |....stat|us = NCR|
|00004100| 51 75 65 75 65 53 65 63 | 6f 6e 64 61 72 79 49 6e |QueueSec|ondaryIn|
|00004110| 74 65 72 72 75 70 74 28 | 70 65 72 52 65 71 75 65 |terrupt(|perReque|
|00004120| 73 74 44 61 74 61 50 74 | 72 2c 20 73 74 61 74 75 |stDataPt|r, statu|
|00004130| 73 29 3b 0d 09 09 09 09 | 69 66 20 28 73 74 61 74 |s);.....|if (stat|
|00004140| 75 73 20 3d 3d 20 6e 6f | 45 72 72 29 0d 09 09 09 |us == no|Err)....|
|00004150| 09 09 62 72 65 61 6b 3b | 0d 09 09 09 09 2f 2a 0d |..break;|...../*.|
|00004160| 09 09 09 09 20 2a 20 46 | 6f 72 20 73 6f 6d 65 20 |.... * F|or some |
|00004170| 72 65 61 73 6f 6e 2c 20 | 77 65 20 63 6f 75 6c 64 |reason, |we could|
|00004180| 6e 27 74 20 71 75 65 75 | 65 20 61 20 73 65 63 6f |n't queu|e a seco|
|00004190| 6e 64 61 72 79 20 69 6e | 74 65 72 72 75 70 74 20 |ndary in|terrupt |
|000041a0| 68 61 6e 64 6c 65 72 0d | 09 09 09 09 20 2a 20 54 |handler.|.... * T|
|000041b0| 72 79 20 61 66 74 65 72 | 20 61 20 62 72 69 65 66 |ry after| a brief|
|000041c0| 20 73 74 61 6c 6c 2e 20 | 54 68 69 73 20 70 72 6f | stall. |This pro|
|000041d0| 62 61 62 6c 79 20 77 6f | 6e 27 74 20 77 6f 72 6b |bably wo|n't work|
|000041e0| 20 61 6e 64 20 63 65 72 | 74 61 69 6e 6c 79 0d 09 | and cer|tainly..|
|000041f0| 09 09 09 20 2a 20 77 6f | 6e 27 74 20 62 65 20 74 |... * wo|n't be t|
|00004200| 65 73 74 65 64 20 61 64 | 61 71 75 61 74 65 6c 79 |ested ad|aquately|
|00004210| 2e 0d 09 09 09 09 20 2a | 2f 0d 09 09 09 09 4c 6f |...... *|/.....Lo|
|00004220| 67 53 74 61 74 75 73 53 | 74 72 69 6e 67 28 73 74 |gStatusS|tring(st|
|00004230| 61 74 75 73 2c 20 22 5c | 70 51 75 65 75 65 53 65 |atus, "\|pQueueSe|
|00004240| 63 6f 6e 64 61 72 79 49 | 6e 74 65 72 72 75 70 74 |condaryI|nterrupt|
|00004250| 48 61 6e 64 6c 65 72 20 | 66 61 69 6c 22 29 3b 0d |Handler |fail");.|
|00004260| 09 09 09 09 44 65 6c 61 | 79 46 6f 72 48 61 72 64 |....Dela|yForHard|
|00004270| 77 61 72 65 28 67 54 65 | 6e 4d 73 65 63 29 3b 0d |ware(gTe|nMsec);.|
|00004280| 09 09 09 7d 0d 09 09 7d | 0d 09 09 65 6c 73 65 20 |...}...}|...else |
|00004290| 7b 0d 09 09 09 53 74 61 | 72 74 53 63 72 69 70 74 |{....Sta|rtScript|
|000042a0| 28 70 65 72 52 65 71 75 | 65 73 74 44 61 74 61 50 |(perRequ|estDataP|
|000042b0| 74 72 2c 20 53 48 41 44 | 4f 57 2e 64 73 70 29 3b |tr, SHAD|OW.dsp);|
|000042c0| 0d 09 09 7d 0d 09 09 2f | 2a 0d 09 09 20 2a 20 4a |...}.../|*... * J|
|000042d0| 75 6d 70 20 64 69 72 65 | 63 74 6c 79 20 74 6f 20 |ump dire|ctly to |
|000042e0| 65 78 69 74 20 74 6f 20 | 6c 65 61 76 65 20 74 68 |exit to |leave th|
|000042f0| 65 20 69 6e 74 65 72 72 | 75 70 74 20 73 65 72 76 |e interr|upt serv|
|00004300| 69 63 65 20 72 6f 75 74 | 69 6e 65 20 77 69 74 68 |ice rout|ine with|
|00004310| 6f 75 74 0d 09 09 20 2a | 20 72 65 73 74 61 72 74 |out... *| restart|
|00004320| 69 6e 67 20 74 68 65 20 | 73 63 72 69 70 74 20 6f |ing the |script o|
|00004330| 72 20 73 63 68 65 64 75 | 6c 69 6e 67 20 61 20 73 |r schedu|ling a s|
|00004340| 65 63 6f 6e 64 61 72 79 | 20 69 6e 74 65 72 72 75 |econdary| interru|
|00004350| 70 74 20 72 6f 75 74 69 | 6e 65 2e 0d 09 09 20 2a |pt routi|ne.... *|
|00004360| 2f 0d 65 78 69 74 3a 09 | 72 65 74 75 72 6e 20 28 |/.exit:.|return (|
|00004370| 72 65 73 75 6c 74 29 3b | 0d 23 75 6e 64 65 66 20 |result);|.#undef |
|00004380| 50 42 0d 23 75 6e 64 65 | 66 20 53 43 53 49 0d 7d |PB.#unde|f SCSI.}|
|00004390| 0d 0d 2f 2a 20 2a 20 2a | 20 2a 20 2a 20 2a 20 2a |../* * *| * * * *|
|000043a0| 20 2a 20 2a 20 2a 20 2a | 20 2a 20 2a 20 2a 20 2a | * * * *| * * * *|
|000043b0| 20 2a 20 2a 20 2a 20 2a | 20 2a 20 2a 20 2a 20 2a | * * * *| * * * *|
|000043c0| 20 2a 20 2a 20 2a 20 2a | 20 2a 20 2a 20 2a 20 2a | * * * *| * * * *|
|000043d0| 20 2a 20 2a 20 2a 20 2a | 20 2a 20 2a 20 2a 20 2a | * * * *| * * * *|
|000043e0| 20 2a 20 2a 20 2a 20 2a | 0d 20 2a 20 4e 43 52 51 | * * * *|. * NCRQ|
|000043f0| 75 65 75 65 53 65 63 6f | 6e 64 61 72 79 49 6e 74 |ueueSeco|ndaryInt|
|00004400| 65 72 72 75 70 74 0d 20 | 2a 0d 20 2a 20 54 68 69 |errupt. |*. * Thi|
|00004410| 73 20 72 6f 75 74 69 6e | 65 20 71 75 65 75 65 73 |s routin|e queues|
|00004420| 20 74 68 65 20 73 65 63 | 6f 6e 64 61 72 79 20 69 | the sec|ondary i|
|00004430| 6e 74 65 72 72 75 70 74 | 20 68 61 6e 64 6c 65 72 |nterrupt| handler|
|00004440| 2e 20 49 74 20 77 61 73 | 20 63 65 6e 74 72 61 6c |. It was| central|
|00004450| 69 7a 65 64 20 74 6f 20 | 68 65 6c 70 0d 20 2a 20 |ized to |help. * |
|00004460| 64 65 62 75 67 20 74 68 | 65 20 73 79 73 74 65 6d |debug th|e system|
|00004470| 20 52 4f 4d 73 2e 0d 20 | 2a 2f 0d 4f 53 45 72 72 | ROMs.. |*/.OSErr|
|00004480| 0d 4e 43 52 51 75 65 75 | 65 53 65 63 6f 6e 64 61 |.NCRQueu|eSeconda|
|00004490| 72 79 49 6e 74 65 72 72 | 75 70 74 28 0d 09 09 50 |ryInterr|upt(...P|
|000044a0| 65 72 52 65 71 75 65 73 | 74 44 61 74 61 50 74 72 |erReques|tDataPtr|
|000044b0| 09 09 70 65 72 52 65 71 | 75 65 73 74 44 61 74 61 |..perReq|uestData|
|000044c0| 50 74 72 2c 0d 09 09 4f | 53 45 72 72 09 09 09 09 |Ptr,...O|SErr....|
|000044d0| 09 73 74 61 74 75 73 4f | 72 53 69 67 6e 61 6c 0d |.statusO|rSignal.|
|000044e0| 09 29 0d 7b 0d 09 09 4f | 53 53 74 61 74 75 73 09 |.).{...O|SStatus.|
|000044f0| 09 09 09 6f 73 53 74 61 | 74 75 73 3b 0d 09 09 0d |...osSta|tus;....|
|00004500| 09 09 54 72 61 63 65 28 | 4e 43 52 51 75 65 75 65 |..Trace(|NCRQueue|
|00004510| 53 65 63 6f 6e 64 61 72 | 79 49 6e 74 65 72 72 75 |Secondar|yInterru|
|00004520| 70 74 29 3b 0d 09 09 54 | 69 6d 65 73 74 61 6d 70 |pt);...T|imestamp|
|00004530| 28 27 51 32 49 2b 27 29 | 3b 0d 09 09 6f 73 53 74 |('Q2I+')|;...osSt|
|00004540| 61 74 75 73 20 3d 20 51 | 75 65 75 65 53 65 63 6f |atus = Q|ueueSeco|
|00004550| 6e 64 61 72 79 49 6e 74 | 65 72 72 75 70 74 48 61 |ndaryInt|erruptHa|
|00004560| 6e 64 6c 65 72 28 0d 09 | 09 09 09 09 4e 43 52 53 |ndler(..|....NCRS|
|00004570| 65 63 6f 6e 64 61 72 79 | 49 6e 74 65 72 72 75 70 |econdary|Interrup|
|00004580| 74 48 61 6e 64 6c 65 72 | 2c 0d 09 09 09 09 09 4e |tHandler|,......N|
|00004590| 55 4c 4c 2c 0d 09 09 09 | 09 09 28 76 6f 69 64 20 |ULL,....|..(void |
|000045a0| 2a 29 20 70 65 72 52 65 | 71 75 65 73 74 44 61 74 |*) perRe|questDat|
|000045b0| 61 50 74 72 2c 0d 09 09 | 09 09 09 28 76 6f 69 64 |aPtr,...|...(void|
|000045c0| 20 2a 29 20 73 74 61 74 | 75 73 4f 72 53 69 67 6e | *) stat|usOrSign|
|000045d0| 61 6c 0d 09 09 09 09 29 | 3b 0d 09 09 43 68 65 63 |al.....)|;...Chec|
|000045e0| 6b 53 74 61 74 75 73 28 | 6f 73 53 74 61 74 75 73 |kStatus(|osStatus|
|000045f0| 2c 20 22 5c 70 51 75 65 | 75 65 53 65 63 6f 6e 64 |, "\pQue|ueSecond|
|00004600| 61 72 79 49 6e 74 65 72 | 72 75 70 74 48 61 6e 64 |aryInter|ruptHand|
|00004610| 6c 65 72 32 22 29 3b 0d | 09 09 72 65 74 75 72 6e |ler2");.|..return|
|00004620| 20 28 6f 73 53 74 61 74 | 75 73 29 3b 0d 7d 0d 0d | (osStat|us);.}..|
|00004630| 2f 2a 20 2a 20 2a 20 2a | 20 2a 20 2a 20 2a 20 2a |/* * * *| * * * *|
|00004640| 20 2a 20 2a 20 2a 20 2a | 20 2a 20 2a 20 2a 20 2a | * * * *| * * * *|
|00004650| 20 2a 20 2a 20 2a 20 2a | 20 2a 20 2a 20 2a 20 2a | * * * *| * * * *|
|00004660| 20 2a 20 2a 20 2a 20 2a | 20 2a 20 2a 20 2a 20 2a | * * * *| * * * *|
|00004670| 20 2a 20 2a 20 2a 20 2a | 20 2a 20 2a 20 2a 20 2a | * * * *| * * * *|
|00004680| 20 2a 20 2a 20 2a 0d 20 | 2a 20 4e 43 52 53 65 63 | * * *. |* NCRSec|
|00004690| 6f 6e 64 61 72 79 49 6e | 74 65 72 72 75 70 74 48 |ondaryIn|terruptH|
|000046a0| 61 6e 64 6c 65 72 0d 20 | 2a 0d 20 2a 20 54 68 69 |andler. |*. * Thi|
|000046b0| 73 20 69 73 20 61 20 73 | 65 63 6f 6e 64 61 72 79 |s is a s|econdary|
|000046c0| 20 69 6e 74 65 72 72 75 | 70 74 20 68 61 6e 64 6c | interru|pt handl|
|000046d0| 65 72 20 74 68 61 74 20 | 69 73 20 63 61 6c 6c 65 |er that |is calle|
|000046e0| 64 20 62 79 20 74 68 65 | 20 70 72 69 6d 61 72 79 |d by the| primary|
|000046f0| 20 69 6e 74 65 72 72 75 | 70 74 0d 20 2a 20 73 65 | interru|pt. * se|
|00004700| 72 76 69 63 65 20 72 6f | 75 74 69 6e 65 20 74 6f |rvice ro|utine to|
|00004710| 20 63 6f 6d 70 6c 65 74 | 65 20 61 6e 20 61 73 79 | complet|e an asy|
|00004720| 6e 63 68 72 6f 6e 6f 75 | 73 20 49 2f 4f 20 72 65 |nchronou|s I/O re|
|00004730| 71 75 65 73 74 2e 20 49 | 74 20 69 73 20 61 6c 73 |quest. I|t is als|
|00004740| 6f 20 63 61 6c 6c 65 64 | 0d 20 2a 20 64 69 72 65 |o called|. * dire|
|00004750| 63 74 6c 79 20 62 79 20 | 74 68 65 20 4b 69 6c 6c |ctly by |the Kill|
|00004760| 49 4f 20 68 61 6e 64 6c | 65 72 2e 20 49 74 20 75 |IO handl|er. It u|
|00004770| 73 65 73 20 74 68 65 20 | 61 74 6f 6d 69 63 20 74 |ses the |atomic t|
|00004780| 65 73 74 2d 61 6e 64 2d | 73 65 74 20 6f 70 65 72 |est-and-|set oper|
|00004790| 61 74 69 6f 6e 20 74 6f | 0d 20 2a 20 65 6e 73 75 |ation to|. * ensu|
|000047a0| 72 65 20 74 68 61 74 20 | 65 61 63 68 20 72 65 71 |re that |each req|
|000047b0| 75 65 73 74 20 69 73 20 | 63 6f 6d 70 6c 65 74 65 |uest is |complete|
|000047c0| 64 20 65 78 61 63 74 6c | 79 20 6f 6e 63 65 2e 0d |d exactl|y once..|
|000047d0| 20 2a 0d 20 2a 20 54 68 | 69 73 20 69 73 20 61 6c | *. * Th|is is al|
|000047e0| 73 6f 20 63 61 6c 6c 65 | 64 20 74 6f 20 72 65 73 |so calle|d to res|
|000047f0| 74 61 72 74 20 49 2f 4f | 20 66 72 6f 6d 20 74 68 |tart I/O| from th|
|00004800| 65 20 53 6f 66 74 77 61 | 72 65 20 49 6e 74 65 72 |e Softwa|re Inter|
|00004810| 72 75 70 74 20 54 61 73 | 6b 0d 20 2a 2f 0d 4f 53 |rupt Tas|k. */.OS|
|00004820| 53 74 61 74 75 73 0d 4e | 43 52 53 65 63 6f 6e 64 |Status.N|CRSecond|
|00004830| 61 72 79 49 6e 74 65 72 | 72 75 70 74 48 61 6e 64 |aryInter|ruptHand|
|00004840| 6c 65 72 28 0d 09 09 76 | 6f 69 64 09 09 09 09 09 |ler(...v|oid.....|
|00004850| 2a 70 31 2c 0d 09 09 76 | 6f 69 64 09 09 09 09 09 |*p1,...v|oid.....|
|00004860| 2a 70 32 0d 09 29 0d 7b | 0d 09 09 72 65 67 69 73 |*p2..).{|...regis|
|00004870| 74 65 72 20 50 65 72 52 | 65 71 75 65 73 74 44 61 |ter PerR|equestDa|
|00004880| 74 61 50 74 72 09 70 65 | 72 52 65 71 75 65 73 74 |taPtr.pe|rRequest|
|00004890| 44 61 74 61 50 74 72 3b | 0d 09 09 4f 53 45 72 72 |DataPtr;|...OSErr|
|000048a0| 09 09 09 09 09 69 6f 52 | 65 73 75 6c 74 3b 0d 09 |.....ioR|esult;..|
|000048b0| 09 2f 2a 0d 09 09 20 2a | 20 4e 6f 74 65 20 74 68 |./*... *| Note th|
|000048c0| 61 74 20 73 74 61 74 75 | 73 20 69 73 20 75 73 65 |at statu|s is use|
|000048d0| 64 20 68 65 72 65 20 6f | 6e 6c 79 20 66 6f 72 20 |d here o|nly for |
|000048e0| 61 64 6d 69 6e 73 74 72 | 61 74 69 76 65 20 73 74 |adminstr|ative st|
|000048f0| 61 74 75 73 20 66 72 6f | 6d 20 74 68 65 0d 09 09 |atus fro|m the...|
|00004900| 20 2a 20 44 72 69 76 65 | 72 20 53 65 72 76 69 63 | * Drive|r Servic|
|00004910| 65 73 20 4c 69 62 72 61 | 72 79 20 63 61 6c 6c 73 |es Libra|ry calls|
|00004920| 20 2d 2d 20 69 74 20 69 | 73 20 6e 65 76 65 72 20 | -- it i|s never |
|00004930| 70 61 73 73 65 64 20 62 | 61 63 6b 20 74 6f 20 74 |passed b|ack to t|
|00004940| 68 65 20 63 61 6c 6c 65 | 72 2e 0d 09 09 20 2a 2f |he calle|r.... */|
|00004950| 0d 09 09 4f 53 45 72 72 | 09 09 09 09 09 73 74 61 |...OSErr|.....sta|
|00004960| 74 75 73 3b 0d 09 09 4f | 53 53 74 61 74 75 73 09 |tus;...O|SStatus.|
|00004970| 09 09 09 6f 73 53 74 61 | 74 75 73 3b 0d 09 09 50 |...osSta|tus;...P|
|00004980| 61 72 6d 42 6c 6b 50 74 | 72 09 09 09 09 70 62 3b |armBlkPt|r....pb;|
|00004990| 0d 09 09 4e 43 52 53 43 | 53 49 50 61 72 61 6d 50 |...NCRSC|SIParamP|
|000049a0| 74 72 09 09 09 73 63 73 | 69 50 61 72 61 6d 50 74 |tr...scs|iParamPt|
|000049b0| 72 3b 0d 09 09 55 49 6e | 74 33 32 09 09 09 09 09 |r;...UIn|t32.....|
|000049c0| 73 63 72 69 70 74 50 74 | 72 3b 0d 23 64 65 66 69 |scriptPt|r;.#defi|
|000049d0| 6e 65 20 49 4f 50 42 09 | 28 70 62 2d 3e 69 6f 50 |ne IOPB.|(pb->ioP|
|000049e0| 61 72 61 6d 29 0d 23 64 | 65 66 69 6e 65 20 53 43 |aram).#d|efine SC|
|000049f0| 53 49 09 28 2a 73 63 73 | 69 50 61 72 61 6d 50 74 |SI.(*scs|iParamPt|
|00004a00| 72 29 0d 0d 09 09 54 72 | 61 63 65 28 4e 43 52 53 |r)....Tr|ace(NCRS|
|00004a10| 65 63 6f 6e 64 61 72 79 | 49 6e 74 65 72 72 75 70 |econdary|Interrup|
|00004a20| 74 48 61 6e 64 6c 65 72 | 29 3b 0d 09 09 54 69 6d |tHandler|);...Tim|
|00004a30| 65 73 74 61 6d 70 28 27 | 51 32 49 2d 27 29 3b 0d |estamp('|Q2I-');.|
|00004a40| 09 09 70 65 72 52 65 71 | 75 65 73 74 44 61 74 61 |..perReq|uestData|
|00004a50| 50 74 72 20 3d 20 28 50 | 65 72 52 65 71 75 65 73 |Ptr = (P|erReques|
|00004a60| 74 44 61 74 61 50 74 72 | 29 20 70 31 3b 0d 09 09 |tDataPtr|) p1;...|
|00004a70| 70 62 20 3d 20 52 45 51 | 55 45 53 54 2e 70 62 3b |pb = REQ|UEST.pb;|
|00004a80| 0d 09 09 69 6f 52 65 73 | 75 6c 74 20 3d 20 28 4f |...ioRes|ult = (O|
|00004a90| 53 45 72 72 29 20 70 32 | 3b 0d 09 09 2f 2a 0d 09 |SErr) p2|;.../*..|
|00004aa0| 09 20 2a 20 54 68 65 72 | 65 20 61 72 65 20 61 20 |. * Ther|e are a |
|00004ab0| 63 6f 75 70 6c 65 20 6f | 66 20 70 72 69 76 61 74 |couple o|f privat|
|00004ac0| 65 20 69 6f 52 65 73 75 | 6c 74 20 76 61 6c 75 65 |e ioResu|lt value|
|00004ad0| 73 20 74 68 61 74 20 61 | 72 65 20 75 73 65 64 20 |s that a|re used |
|00004ae0| 66 6f 72 0d 09 09 20 2a | 20 69 6e 74 65 72 6d 65 |for... *| interme|
|00004af0| 64 69 61 74 65 20 73 63 | 72 69 70 74 20 6f 70 65 |diate sc|ript ope|
|00004b00| 72 61 74 69 6f 6e 73 2e | 0d 09 09 20 2a 2f 0d 09 |rations.|... */..|
|00004b10| 09 73 77 69 74 63 68 20 | 28 69 6f 52 65 73 75 6c |.switch |(ioResul|
|00004b20| 74 29 20 7b 0d 09 09 63 | 61 73 65 20 6b 49 4f 52 |t) {...c|ase kIOR|
|00004b30| 65 71 75 65 73 74 53 74 | 61 72 74 3a 0d 09 09 09 |equestSt|art:....|
|00004b40| 53 48 41 44 4f 57 2e 72 | 65 73 69 64 75 61 6c 54 |SHADOW.r|esidualT|
|00004b50| 72 61 6e 73 66 65 72 43 | 6f 75 6e 74 20 3d 20 30 |ransferC|ount = 0|
|00004b60| 3b 0d 09 09 09 73 77 69 | 74 63 68 20 28 52 45 51 |;....swi|tch (REQ|
|00004b70| 55 45 53 54 2e 73 63 72 | 69 70 74 53 65 6c 65 63 |UEST.scr|iptSelec|
|00004b80| 74 6f 72 29 20 7b 0d 09 | 09 09 63 61 73 65 20 6b |tor) {..|..case k|
|00004b90| 53 43 53 49 43 6f 6d 6d | 61 6e 64 53 63 72 69 70 |SCSIComm|andScrip|
|00004ba0| 74 3a 0d 09 09 09 09 69 | 66 20 28 53 43 53 49 2e |t:.....i|f (SCSI.|
|00004bb0| 64 72 69 76 65 72 41 63 | 74 69 6f 6e 20 21 3d 20 |driverAc|tion != |
|00004bc0| 30 0d 09 09 09 09 20 26 | 26 20 53 74 6f 72 65 44 |0..... &|& StoreD|
|00004bd0| 4d 41 50 61 72 61 6d 65 | 74 65 72 73 28 70 65 72 |MAParame|ters(per|
|00004be0| 52 65 71 75 65 73 74 44 | 61 74 61 50 74 72 29 20 |RequestD|ataPtr) |
|00004bf0| 21 3d 20 6e 6f 45 72 72 | 29 20 7b 0d 09 09 09 09 |!= noErr|) {.....|
|00004c00| 09 69 6f 52 65 73 75 6c | 74 20 3d 20 73 63 73 69 |.ioResul|t = scsi|
|00004c10| 44 61 74 61 52 75 6e 45 | 72 72 6f 72 3b 0d 09 09 |DataRunE|rror;...|
|00004c20| 09 09 09 67 6f 74 6f 20 | 61 6c 6c 44 6f 6e 65 3b |...goto |allDone;|
|00004c30| 0d 09 09 09 09 7d 0d 09 | 09 09 09 57 72 69 74 65 |.....}..|...Write|
|00004c40| 42 79 74 65 28 53 43 49 | 44 2c 20 47 4c 4f 42 41 |Byte(SCI|D, GLOBA|
|00004c50| 4c 2e 69 6e 69 74 69 61 | 74 6f 72 49 44 29 3b 0d |L.initia|torID);.|
|00004c60| 09 09 09 09 2f 2a 0d 09 | 09 09 09 20 2a 20 54 69 |..../*..|... * Ti|
|00004c70| 6d 65 6f 75 74 20 69 66 | 20 73 65 6c 65 63 74 69 |meout if| selecti|
|00004c80| 6f 6e 20 66 61 69 6c 73 | 20 61 66 74 65 72 20 34 |on fails| after 4|
|00004c90| 30 39 2e 36 20 6d 73 65 | 63 2e 20 54 68 69 73 20 |09.6 mse|c. This |
|00004ca0| 69 73 20 74 68 65 20 73 | 6d 61 6c 6c 65 73 74 0d |is the s|mallest.|
|00004cb0| 09 09 09 09 20 2a 20 76 | 61 6c 75 65 20 6c 61 72 |.... * v|alue lar|
|00004cc0| 67 65 72 20 74 68 61 6e | 20 74 68 65 20 53 43 53 |ger than| the SCS|
|00004cd0| 49 20 53 74 61 6e 64 61 | 72 64 20 32 35 30 20 6d |I Standa|rd 250 m|
|00004ce0| 73 65 63 2e 20 74 69 6d | 65 6f 75 74 20 76 61 6c |sec. tim|eout val|
|00004cf0| 75 65 2e 0d 09 09 09 09 | 20 2a 2f 0d 09 09 09 09 |ue......| */.....|
|00004d00| 57 72 69 74 65 42 79 74 | 65 28 53 54 49 4d 45 30 |WriteByt|e(STIME0|
|00004d10| 2c 20 31 33 29 3b 09 09 | 09 09 09 09 09 2f 2a 20 |, 13);..|...../* |
|00004d20| 53 65 6c 65 63 74 69 6f | 6e 20 74 69 6d 65 72 09 |Selectio|n timer.|
|00004d30| 2a 2f 0d 09 09 09 09 57 | 72 69 74 65 4c 6f 6e 67 |*/.....W|riteLong|
|00004d40| 28 44 53 41 2c 20 52 45 | 51 55 45 53 54 2e 73 63 |(DSA, RE|QUEST.sc|
|00004d50| 72 69 70 74 44 61 74 61 | 50 74 72 29 3b 0d 09 09 |riptData|Ptr);...|
|00004d60| 09 09 53 79 6e 63 68 72 | 6f 6e 69 7a 65 49 4f 28 |..Synchr|onizeIO(|
|00004d70| 29 3b 09 09 09 09 09 09 | 09 09 2f 2a 20 65 69 65 |);......|../* eie|
|00004d80| 69 6f 09 09 09 2a 2f 0d | 09 09 09 09 62 72 65 61 |io...*/.|....brea|
|00004d90| 6b 3b 0d 09 09 09 63 61 | 73 65 20 6b 42 75 73 52 |k;....ca|se kBusR|
|00004da0| 65 73 65 74 53 63 72 69 | 70 74 3a 0d 09 09 09 09 |esetScri|pt:.....|
|00004db0| 2f 2a 0d 09 09 09 09 20 | 2a 20 4e 6f 20 69 6e 69 |/*..... |* No ini|
|00004dc0| 74 69 61 74 6f 72 20 49 | 44 2c 20 73 65 6c 65 63 |tiator I|D, selec|
|00004dd0| 74 69 6f 6e 20 74 69 6d | 65 6f 75 74 20 6f 72 20 |tion tim|eout or |
|00004de0| 44 53 41 2e 0d 09 09 09 | 09 20 2a 2f 0d 09 09 09 |DSA.....|. */....|
|00004df0| 09 57 72 69 74 65 42 79 | 74 65 28 53 43 49 44 2c |.WriteBy|te(SCID,|
|00004e00| 20 47 4c 4f 42 41 4c 2e | 69 6e 69 74 69 61 74 6f | GLOBAL.|initiato|
|00004e10| 72 49 44 29 3b 0d 09 09 | 09 09 57 72 69 74 65 42 |rID);...|..WriteB|
|00004e20| 79 74 65 28 53 54 49 4d | 45 30 2c 20 30 29 3b 0d |yte(STIM|E0, 0);.|
|00004e30| 09 09 09 09 57 72 69 74 | 65 4c 6f 6e 67 28 44 53 |....Writ|eLong(DS|
|00004e40| 41 2c 20 6b 49 6e 76 61 | 6c 69 64 50 61 67 65 41 |A, kInva|lidPageA|
|00004e50| 64 64 72 65 73 73 29 3b | 0d 09 09 09 09 62 72 65 |ddress);|.....bre|
|00004e60| 61 6b 3b 0d 09 09 09 63 | 61 73 65 20 6b 53 43 53 |ak;....c|ase kSCS|
|00004e70| 49 54 65 73 74 49 53 52 | 53 63 72 69 70 74 3a 0d |ITestISR|Script:.|
|00004e80| 09 09 09 63 61 73 65 20 | 6b 53 43 53 49 54 65 73 |...case |kSCSITes|
|00004e90| 74 4d 65 6d 6f 72 79 53 | 63 72 69 70 74 3a 0d 09 |tMemoryS|cript:..|
|00004ea0| 09 09 09 69 66 20 28 53 | 74 6f 72 65 44 4d 41 50 |...if (S|toreDMAP|
|00004eb0| 61 72 61 6d 65 74 65 72 | 73 28 70 65 72 52 65 71 |arameter|s(perReq|
|00004ec0| 75 65 73 74 44 61 74 61 | 50 74 72 29 20 21 3d 20 |uestData|Ptr) != |
|00004ed0| 6e 6f 45 72 72 29 20 7b | 0d 09 09 09 09 09 69 6f |noErr) {|......io|
|00004ee0| 52 65 73 75 6c 74 20 3d | 20 73 63 73 69 44 61 74 |Result =| scsiDat|
|00004ef0| 61 52 75 6e 45 72 72 6f | 72 3b 0d 09 09 09 09 09 |aRunErro|r;......|
|00004f00| 67 6f 74 6f 20 61 6c 6c | 44 6f 6e 65 3b 0d 09 09 |goto all|Done;...|
|00004f10| 09 09 7d 0d 09 09 09 09 | 57 72 69 74 65 4c 6f 6e |..}.....|WriteLon|
|00004f20| 67 28 44 53 41 2c 20 6b | 49 6e 76 61 6c 69 64 50 |g(DSA, k|InvalidP|
|00004f30| 61 67 65 41 64 64 72 65 | 73 73 29 3b 0d 09 09 09 |ageAddre|ss);....|
|00004f40| 09 62 72 65 61 6b 3b 0d | 09 09 09 7d 0d 09 09 09 |.break;.|...}....|
|00004f50| 53 74 61 72 74 57 61 74 | 63 68 64 6f 67 54 69 6d |StartWat|chdogTim|
|00004f60| 65 6f 75 74 28 70 65 72 | 52 65 71 75 65 73 74 44 |eout(per|RequestD|
|00004f70| 61 74 61 50 74 72 29 3b | 0d 09 09 09 53 74 61 72 |ataPtr);|....Star|
|00004f80| 74 53 63 72 69 70 74 28 | 70 65 72 52 65 71 75 65 |tScript(|perReque|
|00004f90| 73 74 44 61 74 61 50 74 | 72 2c 20 52 45 51 55 45 |stDataPt|r, REQUE|
|00004fa0| 53 54 2e 73 63 72 69 70 | 74 50 74 72 29 3b 0d 09 |ST.scrip|tPtr);..|
|00004fb0| 09 09 62 72 65 61 6b 3b | 0d 09 09 63 61 73 65 20 |..break;|...case |
|00004fc0| 6b 50 72 65 70 61 72 65 | 4d 65 6d 6f 72 79 53 74 |kPrepare|MemorySt|
|00004fd0| 61 72 74 54 61 73 6b 3a | 09 2f 2a 20 50 72 69 6d |artTask:|./* Prim|
|00004fe0| 61 72 79 20 49 6e 74 65 | 72 72 75 70 74 20 6e 65 |ary Inte|rrupt ne|
|00004ff0| 65 64 73 20 50 72 65 70 | 61 72 65 4d 65 6d 6f 72 |eds Prep|areMemor|
|00005000| 79 09 2a 2f 0d 09 09 09 | 2f 2a 0d 09 09 09 20 2a |y.*/....|/*.... *|
|00005010| 20 57 65 27 76 65 20 72 | 75 6e 20 6f 66 66 20 74 | We've r|un off t|
|00005020| 68 65 20 65 6e 64 20 6f | 66 20 74 68 65 20 70 72 |he end o|f the pr|
|00005030| 65 70 61 72 61 74 69 6f | 6e 2e 20 51 75 65 75 65 |eparatio|n. Queue|
|00005040| 20 61 20 53 6f 66 74 77 | 61 72 65 20 49 6e 74 65 | a Softw|are Inte|
|00005050| 72 72 75 70 74 0d 09 09 | 09 20 2a 20 74 68 61 74 |rrupt...|. * that|
|00005060| 20 77 69 6c 6c 20 63 61 | 6c 6c 20 50 72 65 70 61 | will ca|ll Prepa|
|00005070| 72 65 4d 65 6d 6f 72 79 | 46 6f 72 49 4f 20 74 6f |reMemory|ForIO to|
|00005080| 20 68 61 6e 64 6c 65 20 | 74 68 65 20 70 61 72 74 | handle |the part|
|00005090| 69 61 6c 20 70 72 65 70 | 61 72 61 74 69 6f 6e 2e |ial prep|aration.|
|000050a0| 0d 09 09 09 20 2a 20 49 | 66 20 74 68 69 73 20 66 |.... * I|f this f|
|000050b0| 61 69 6c 73 2c 20 72 65 | 73 74 61 72 74 20 49 2f |ails, re|start I/|
|000050c0| 4f 20 74 6f 20 72 75 6e | 64 6f 77 6e 20 74 68 65 |O to run|down the|
|000050d0| 20 53 43 53 49 20 64 65 | 76 69 63 65 2e 20 42 65 | SCSI de|vice. Be|
|000050e0| 63 61 75 73 65 20 74 68 | 69 73 0d 09 09 09 20 2a |cause th|is.... *|
|000050f0| 20 77 69 6c 6c 20 72 75 | 6e 20 22 74 61 73 6b 20 | will ru|n "task |
|00005100| 6c 65 76 65 6c 22 20 61 | 6e 64 20 6f 74 68 65 72 |level" a|nd other|
|00005110| 20 49 2f 4f 20 6d 61 79 | 20 69 6e 74 65 72 76 65 | I/O may| interve|
|00005120| 6e 65 2c 20 77 65 20 6d | 61 79 20 77 61 6e 74 20 |ne, we m|ay want |
|00005130| 74 6f 0d 09 09 09 20 2a | 20 63 61 6e 63 65 6c 20 |to.... *| cancel |
|00005140| 74 68 65 20 74 69 6d 65 | 72 20 28 66 6f 72 20 6e |the time|r (for n|
|00005150| 6f 77 29 20 61 6e 64 20 | 72 65 73 74 61 72 74 20 |ow) and |restart |
|00005160| 69 74 20 77 68 65 6e 20 | 74 68 65 20 64 72 69 76 |it when |the driv|
|00005170| 65 72 20 72 65 73 75 6d | 65 73 0d 09 09 09 20 2a |er resum|es.... *|
|00005180| 20 6f 70 65 72 61 74 69 | 6f 6e 2e 20 54 68 69 73 | operati|on. This|
|00005190| 20 72 65 71 75 69 72 65 | 73 20 74 68 6f 75 67 68 | require|s though|
|000051a0| 74 2c 20 62 75 74 20 49 | 20 64 6f 6e 27 74 20 6b |t, but I| don't k|
|000051b0| 6e 6f 77 20 74 68 65 20 | 72 69 67 68 74 20 61 6e |now the |right an|
|000051c0| 73 77 65 72 3b 0d 09 09 | 09 20 2a 20 62 75 74 20 |swer;...|. * but |
|000051d0| 49 27 6c 6c 20 74 72 79 | 20 69 74 20 66 6f 72 20 |I'll try| it for |
|000051e0| 6e 6f 77 2e 0d 09 09 09 | 20 2a 0d 09 09 09 20 2a |now.....| *.... *|
|000051f0| 20 48 6d 6d 2c 20 74 6f | 20 64 6f 20 74 68 69 73 | Hmm, to| do this|
|00005200| 20 72 69 67 68 74 2c 20 | 43 61 6e 63 65 6c 57 61 | right, |CancelWa|
|00005210| 74 63 68 64 6f 67 54 69 | 6d 65 72 20 6f 75 67 68 |tchdogTi|mer ough|
|00005220| 74 20 74 6f 20 72 65 74 | 75 72 6e 20 22 74 69 6d |t to ret|urn "tim|
|00005230| 65 0d 09 09 09 20 2a 20 | 72 65 6d 61 69 6e 69 6e |e.... * |remainin|
|00005240| 67 22 20 77 68 69 63 68 | 20 77 69 6c 6c 20 62 65 |g" which| will be|
|00005250| 20 75 73 65 64 20 74 6f | 20 72 65 73 74 61 72 74 | used to| restart|
|00005260| 20 74 68 65 20 74 69 6d | 65 72 2c 20 72 61 74 68 | the tim|er, rath|
|00005270| 65 72 20 74 68 61 6e 0d | 09 09 09 20 2a 20 61 6c |er than.|... * al|
|00005280| 77 61 79 73 20 73 74 61 | 72 74 69 6e 67 20 61 74 |ways sta|rting at|
|00005290| 20 74 68 65 20 6f 72 69 | 67 69 6e 61 6c 20 74 69 | the ori|ginal ti|
|000052a0| 6d 65 6f 75 74 2e 0d 09 | 09 09 20 2a 2f 0d 6e 65 |meout...|.. */.ne|
|000052b0| 65 64 41 6e 6f 74 68 65 | 72 50 72 65 70 61 72 65 |edAnothe|rPrepare|
|000052c0| 4d 65 6d 6f 72 79 3a 0d | 09 09 09 54 69 6d 65 73 |Memory:.|...Times|
|000052d0| 74 61 6d 70 28 27 53 53 | 49 2b 27 29 3b 0d 09 09 |tamp('SS|I+');...|
|000052e0| 09 43 61 6e 63 65 6c 57 | 61 74 63 68 64 6f 67 54 |.CancelW|atchdogT|
|000052f0| 69 6d 65 72 28 70 65 72 | 52 65 71 75 65 73 74 44 |imer(per|RequestD|
|00005300| 61 74 61 50 74 72 29 3b | 0d 09 09 09 43 68 65 63 |ataPtr);|....Chec|
|00005310| 6b 70 6f 69 6e 74 49 4f | 54 61 62 6c 65 28 26 52 |kpointIO|Table(&R|
|00005320| 45 51 55 45 53 54 2e 73 | 63 73 69 49 4f 54 61 62 |EQUEST.s|csiIOTab|
|00005330| 6c 65 29 3b 0d 09 09 09 | 6f 73 53 74 61 74 75 73 |le);....|osStatus|
|00005340| 20 3d 20 53 65 6e 64 53 | 6f 66 74 77 61 72 65 49 | = SendS|oftwareI|
|00005350| 6e 74 65 72 72 75 70 74 | 28 52 45 51 55 45 53 54 |nterrupt|(REQUEST|
|00005360| 2e 6e 65 78 74 44 4d 41 | 49 6e 74 65 72 72 75 70 |.nextDMA|Interrup|
|00005370| 74 49 44 2c 20 30 29 3b | 0d 09 09 09 43 68 65 63 |tID, 0);|....Chec|
|00005380| 6b 53 74 61 74 75 73 28 | 6f 73 53 74 61 74 75 73 |kStatus(|osStatus|
|00005390| 2c 20 22 5c 70 53 65 6e | 64 53 6f 66 74 77 61 72 |, "\pSen|dSoftwar|
|000053a0| 65 49 6e 74 65 72 72 75 | 70 74 22 29 3b 0d 09 09 |eInterru|pt");...|
|000053b0| 09 69 66 20 28 6f 73 53 | 74 61 74 75 73 20 21 3d |.if (osS|tatus !=|
|000053c0| 20 6e 6f 45 72 72 29 20 | 7b 0d 09 09 09 09 2f 2a | noErr) |{...../*|
|000053d0| 0d 09 09 09 09 20 2a 20 | 57 65 20 63 6f 75 6c 64 |..... * |We could|
|000053e0| 6e 27 74 20 71 75 65 75 | 65 20 61 20 73 6f 66 74 |n't queu|e a soft|
|000053f0| 77 61 72 65 20 69 6e 74 | 65 72 72 75 70 74 2e 20 |ware int|errupt. |
|00005400| 46 6f 72 63 65 20 74 68 | 65 0d 09 09 09 09 20 2a |Force th|e..... *|
|00005410| 20 64 65 76 69 63 65 20 | 69 6e 74 6f 20 69 74 73 | device |into its|
|00005420| 20 66 61 69 6c 75 72 65 | 20 73 63 72 69 70 74 2e | failure| script.|
|00005430| 20 54 68 65 20 64 65 76 | 69 63 65 20 77 69 6c 6c | The dev|ice will|
|00005440| 2c 20 65 76 65 6e 74 75 | 61 6c 6c 79 2c 0d 09 09 |, eventu|ally,...|
|00005450| 09 09 20 2a 20 65 78 69 | 74 20 61 6e 64 20 72 65 |.. * exi|t and re|
|00005460| 74 75 72 6e 20 61 6e 20 | 65 72 72 6f 72 20 69 6f |turn an |error io|
|00005470| 52 65 73 75 6c 74 20 74 | 6f 20 74 68 65 20 63 61 |Result t|o the ca|
|00005480| 6c 6c 65 72 2e 0d 09 09 | 09 09 20 2a 2f 0d 09 09 |ller....|.. */...|
|00005490| 09 09 57 72 69 74 65 42 | 79 74 65 28 43 54 45 53 |..WriteB|yte(CTES|
|000054a0| 54 30 2c 20 30 29 3b 09 | 2f 2a 20 54 68 69 73 20 |T0, 0);.|/* This |
|000054b0| 77 69 6c 6c 20 63 61 75 | 73 65 20 72 75 6e 64 6f |will cau|se rundo|
|000054c0| 77 6e 09 2a 2f 0d 09 09 | 09 09 73 63 72 69 70 74 |wn.*/...|..script|
|000054d0| 50 74 72 20 3d 20 28 28 | 55 49 6e 74 33 32 29 20 |Ptr = ((|UInt32) |
|000054e0| 47 4c 4f 42 41 4c 2e 73 | 63 72 69 70 74 49 4f 54 |GLOBAL.s|criptIOT|
|000054f0| 61 62 6c 65 2e 70 68 79 | 73 69 63 61 6c 4d 61 70 |able.phy|sicalMap|
|00005500| 70 69 6e 67 5b 30 5d 29 | 0d 09 09 09 09 09 09 09 |ping[0])|........|
|00005510| 2b 20 6b 53 43 53 49 52 | 75 6e 64 6f 77 6e 53 63 |+ kSCSIR|undownSc|
|00005520| 72 69 70 74 3b 0d 09 09 | 09 09 53 74 61 72 74 53 |ript;...|..StartS|
|00005530| 63 72 69 70 74 28 70 65 | 72 52 65 71 75 65 73 74 |cript(pe|rRequest|
|00005540| 44 61 74 61 50 74 72 2c | 20 73 63 72 69 70 74 50 |DataPtr,| scriptP|
|00005550| 74 72 29 3b 0d 09 09 09 | 7d 0d 09 09 09 62 72 65 |tr);....|}....bre|
|00005560| 61 6b 3b 09 09 0d 09 09 | 63 61 73 65 20 6b 50 72 |ak;.....|case kPr|
|00005570| 65 70 61 72 65 4d 65 6d | 6f 72 79 52 65 73 74 61 |epareMem|oryResta|
|00005580| 72 74 3a 09 09 2f 2a 20 | 50 72 65 70 61 72 65 4d |rt:../* |PrepareM|
|00005590| 65 6d 6f 72 79 46 6f 72 | 49 4f 20 63 61 6c 6c 65 |emoryFor|IO calle|
|000055a0| 64 09 09 09 09 2a 2f 0d | 09 09 09 69 66 20 28 53 |d....*/.|...if (S|
|000055b0| 74 6f 72 65 44 4d 41 50 | 61 72 61 6d 65 74 65 72 |toreDMAP|arameter|
|000055c0| 73 28 70 65 72 52 65 71 | 75 65 73 74 44 61 74 61 |s(perReq|uestData|
|000055d0| 50 74 72 29 20 21 3d 20 | 6e 6f 45 72 72 29 20 7b |Ptr) != |noErr) {|
|000055e0| 0d 09 09 09 09 69 66 20 | 28 52 45 51 55 45 53 54 |.....if |(REQUEST|
|000055f0| 2e 73 63 72 69 70 74 53 | 65 6c 65 63 74 6f 72 20 |.scriptS|elector |
|00005600| 3d 3d 20 6b 53 43 53 49 | 54 65 73 74 4d 65 6d 6f |== kSCSI|TestMemo|
|00005610| 72 79 53 63 72 69 70 74 | 29 20 7b 0d 09 09 09 09 |ryScript|) {.....|
|00005620| 09 69 6f 52 65 73 75 6c | 74 20 3d 20 73 63 73 69 |.ioResul|t = scsi|
|00005630| 44 61 74 61 52 75 6e 45 | 72 72 6f 72 3b 0d 09 09 |DataRunE|rror;...|
|00005640| 09 09 09 67 6f 74 6f 20 | 61 6c 6c 44 6f 6e 65 3b |...goto |allDone;|
|00005650| 0d 09 09 09 09 7d 0d 09 | 09 09 09 65 6c 73 65 20 |.....}..|...else |
|00005660| 7b 0d 09 09 09 09 09 57 | 72 69 74 65 42 79 74 65 |{......W|riteByte|
|00005670| 28 43 54 45 53 54 30 2c | 20 30 29 3b 09 2f 2a 20 |(CTEST0,| 0);./* |
|00005680| 54 68 69 73 20 77 69 6c | 6c 20 63 61 75 73 65 20 |This wil|l cause |
|00005690| 72 75 6e 64 6f 77 6e 09 | 2a 2f 0d 09 09 09 09 09 |rundown.|*/......|
|000056a0| 73 63 72 69 70 74 50 74 | 72 20 3d 20 28 28 55 49 |scriptPt|r = ((UI|
|000056b0| 6e 74 33 32 29 20 47 4c | 4f 42 41 4c 2e 73 63 72 |nt32) GL|OBAL.scr|
|000056c0| 69 70 74 49 4f 54 61 62 | 6c 65 2e 70 68 79 73 69 |iptIOTab|le.physi|
|000056d0| 63 61 6c 4d 61 70 70 69 | 6e 67 5b 30 5d 29 0d 09 |calMappi|ng[0])..|
|000056e0| 09 09 09 09 09 09 2b 20 | 6b 53 43 53 49 52 75 6e |......+ |kSCSIRun|
|000056f0| 64 6f 77 6e 53 63 72 69 | 70 74 3b 0d 09 09 09 09 |downScri|pt;.....|
|00005700| 09 53 74 61 72 74 53 63 | 72 69 70 74 28 70 65 72 |.StartSc|ript(per|
|00005710| 52 65 71 75 65 73 74 44 | 61 74 61 50 74 72 2c 20 |RequestD|ataPtr, |
|00005720| 73 63 72 69 70 74 50 74 | 72 29 3b 0d 09 09 09 09 |scriptPt|r);.....|
|00005730| 7d 0d 09 09 09 7d 0d 09 | 09 09 65 6c 73 65 20 7b |}....}..|..else {|
|00005740| 0d 09 09 09 09 53 74 61 | 72 74 57 61 74 63 68 64 |.....Sta|rtWatchd|
|00005750| 6f 67 54 69 6d 65 6f 75 | 74 28 70 65 72 52 65 71 |ogTimeou|t(perReq|
|00005760| 75 65 73 74 44 61 74 61 | 50 74 72 29 3b 0d 09 09 |uestData|Ptr);...|
|00005770| 09 09 69 66 20 28 52 45 | 51 55 45 53 54 2e 73 63 |..if (RE|QUEST.sc|
|00005780| 72 69 70 74 53 65 6c 65 | 63 74 6f 72 20 3d 3d 20 |riptSele|ctor == |
|00005790| 6b 53 43 53 49 54 65 73 | 74 4d 65 6d 6f 72 79 53 |kSCSITes|tMemoryS|
|000057a0| 63 72 69 70 74 29 20 7b | 0d 09 09 09 09 09 73 63 |cript) {|......sc|
|000057b0| 72 69 70 74 50 74 72 20 | 3d 20 28 28 55 49 6e 74 |riptPtr |= ((UInt|
|000057c0| 33 32 29 20 52 45 51 55 | 45 53 54 2e 70 65 72 52 |32) REQU|EST.perR|
|000057d0| 65 71 75 65 73 74 49 4f | 54 61 62 6c 65 2e 70 68 |equestIO|Table.ph|
|000057e0| 79 73 69 63 61 6c 4d 61 | 70 70 69 6e 67 5b 30 5d |ysicalMa|pping[0]|
|000057f0| 29 0d 09 09 09 09 09 09 | 09 2b 20 6f 66 66 73 65 |).......|.+ offse|
|00005800| 74 6f 66 28 50 65 72 52 | 65 71 75 65 73 74 44 61 |tof(PerR|equestDa|
|00005810| 74 61 2c 20 6d 65 6d 6f | 72 79 4d 6f 76 65 53 63 |ta, memo|ryMoveSc|
|00005820| 72 69 70 74 29 3b 0d 09 | 09 09 09 7d 0d 09 09 09 |ript);..|...}....|
|00005830| 09 65 6c 73 65 20 7b 0d | 09 09 09 09 09 73 63 72 |.else {.|.....scr|
|00005840| 69 70 74 50 74 72 20 3d | 20 28 28 55 49 6e 74 33 |iptPtr =| ((UInt3|
|00005850| 32 29 20 47 4c 4f 42 41 | 4c 2e 73 63 72 69 70 74 |2) GLOBA|L.script|
|00005860| 49 4f 54 61 62 6c 65 2e | 70 68 79 73 69 63 61 6c |IOTable.|physical|
|00005870| 4d 61 70 70 69 6e 67 5b | 30 5d 29 0d 09 09 09 09 |Mapping[|0]).....|
|00005880| 09 09 09 2b 20 6b 53 43 | 53 49 52 65 73 74 61 72 |...+ kSC|SIRestar|
|00005890| 74 53 63 72 69 70 74 3b | 0d 09 09 09 09 7d 0d 09 |tScript;|.....}..|
|000058a0| 09 09 09 53 74 61 72 74 | 53 63 72 69 70 74 28 70 |...Start|Script(p|
|000058b0| 65 72 52 65 71 75 65 73 | 74 44 61 74 61 50 74 72 |erReques|tDataPtr|
|000058c0| 2c 20 73 63 72 69 70 74 | 50 74 72 29 3b 0d 09 09 |, script|Ptr);...|
|000058d0| 09 7d 0d 09 09 09 62 72 | 65 61 6b 3b 0d 09 09 63 |.}....br|eak;...c|
|000058e0| 61 73 65 20 6b 42 75 73 | 52 65 73 65 74 52 65 73 |ase kBus|ResetRes|
|000058f0| 74 61 72 74 3a 09 09 09 | 2f 2a 20 42 75 73 20 72 |tart:...|/* Bus r|
|00005900| 65 73 65 74 3a 20 73 74 | 61 6c 6c 20 61 6e 64 20 |eset: st|all and |
|00005910| 72 65 73 74 61 72 74 20 | 74 68 65 20 73 63 72 69 |restart |the scri|
|00005920| 70 74 09 2a 2f 0d 09 09 | 09 44 65 6c 61 79 46 6f |pt.*/...|.DelayFo|
|00005930| 72 48 61 72 64 77 61 72 | 65 28 47 4c 4f 42 41 4c |rHardwar|e(GLOBAL|
|00005940| 2e 6d 73 65 63 32 35 30 | 29 3b 0d 09 09 09 73 63 |.msec250|);....sc|
|00005950| 72 69 70 74 50 74 72 20 | 3d 20 28 28 55 49 6e 74 |riptPtr |= ((UInt|
|00005960| 33 32 29 20 47 4c 4f 42 | 41 4c 2e 73 63 72 69 70 |32) GLOB|AL.scrip|
|00005970| 74 49 4f 54 61 62 6c 65 | 2e 70 68 79 73 69 63 61 |tIOTable|.physica|
|00005980| 6c 4d 61 70 70 69 6e 67 | 5b 30 5d 29 0d 09 09 09 |lMapping|[0])....|
|00005990| 09 09 09 2b 20 6b 42 75 | 73 52 65 73 65 74 53 63 |...+ kBu|sResetSc|
|000059a0| 72 69 70 74 52 65 73 74 | 61 72 74 3b 0d 09 09 09 |riptRest|art;....|
|000059b0| 53 74 61 72 74 53 63 72 | 69 70 74 28 70 65 72 52 |StartScr|ipt(perR|
|000059c0| 65 71 75 65 73 74 44 61 | 74 61 50 74 72 2c 20 73 |equestDa|taPtr, s|
|000059d0| 63 72 69 70 74 50 74 72 | 29 3b 0d 09 09 09 62 72 |criptPtr|);....br|
|000059e0| 65 61 6b 3b 0d 09 09 2f | 2a 0d 09 09 20 2a 20 54 |eak;.../|*... * T|
|000059f0| 68 65 73 65 20 61 72 65 | 20 69 6e 74 65 72 6d 65 |hese are| interme|
|00005a00| 64 69 61 74 65 20 65 72 | 72 6f 72 20 76 61 6c 75 |diate er|ror valu|
|00005a10| 65 73 3a 20 72 65 73 74 | 61 72 74 20 61 74 20 27 |es: rest|art at '|
|00005a20| 46 61 69 6c 27 0d 09 09 | 20 2a 2f 0d 09 09 63 61 |Fail'...| */...ca|
|00005a30| 73 65 20 6b 49 6e 74 46 | 61 69 6c 53 74 72 61 6e |se kIntF|ailStran|
|00005a40| 67 65 50 68 61 73 65 3a | 09 09 2f 2a 20 42 75 67 |gePhase:|../* Bug|
|00005a50| 3a 20 75 6e 6b 6e 6f 77 | 6e 20 70 68 61 73 65 20 |: unknow|n phase |
|00005a60| 61 74 20 70 68 61 73 65 | 20 6c 6f 6f 70 09 09 2a |at phase| loop..*|
|00005a70| 2f 0d 09 09 63 61 73 65 | 20 6b 49 6e 74 44 61 74 |/...case| kIntDat|
|00005a80| 61 50 68 61 73 65 45 78 | 70 65 63 74 65 64 3a 09 |aPhaseEx|pected:.|
|00005a90| 09 2f 2a 20 41 74 20 27 | 44 61 74 61 27 2c 20 62 |./* At '|Data', b|
|00005aa0| 75 74 20 6e 6f 74 20 69 | 6e 20 64 61 74 61 20 70 |ut not i|n data p|
|00005ab0| 68 61 73 65 09 09 2a 2f | 0d 09 09 63 61 73 65 20 |hase..*/|...case |
|00005ac0| 6b 49 6e 74 50 72 65 70 | 61 72 61 74 69 6f 6e 46 |kIntPrep|arationF|
|00005ad0| 61 69 6c 65 64 3a 09 09 | 2f 2a 20 43 54 45 53 54 |ailed:..|/* CTEST|
|00005ae0| 20 3d 3d 20 30 20 61 66 | 74 65 72 20 70 72 65 70 | == 0 af|ter prep|
|00005af0| 20 72 65 73 74 61 72 74 | 09 09 2a 2f 0d 09 09 63 | restart|..*/...c|
|00005b00| 61 73 65 20 6b 49 6e 74 | 44 61 74 61 4f 75 74 4e |ase kInt|DataOutN|
|00005b10| 6f 44 61 74 61 3a 09 09 | 09 2f 2a 20 43 54 45 53 |oData:..|./* CTES|
|00005b20| 54 20 6e 6f 74 20 3d 3d | 20 32 20 61 74 20 44 41 |T not ==| 2 at DA|
|00005b30| 54 4f 20 70 68 61 73 65 | 09 09 09 2a 2f 0d 09 09 |TO phase|...*/...|
|00005b40| 63 61 73 65 20 6b 49 6e | 74 44 61 74 61 49 6e 4e |case kIn|tDataInN|
|00005b50| 6f 44 61 74 61 3a 09 09 | 09 2f 2a 20 43 54 45 53 |oData:..|./* CTES|
|00005b60| 54 20 6e 6f 74 20 3d 3d | 20 31 20 61 74 20 44 41 |T not ==| 1 at DA|
|00005b70| 54 49 20 70 68 61 73 65 | 09 09 09 2a 2f 0d 09 09 |TI phase|...*/...|
|00005b80| 63 61 73 65 20 6b 49 6e | 74 4e 6f 74 4d 73 67 49 |case kIn|tNotMsgI|
|00005b90| 6e 41 66 74 65 72 53 74 | 61 74 75 73 3a 09 2f 2a |nAfterSt|atus:./*|
|00005ba0| 20 53 54 53 20 70 68 61 | 73 65 20 6d 75 73 74 20 | STS pha|se must |
|00005bb0| 62 65 20 66 6f 6c 6c 6f | 77 65 64 20 62 79 20 4d |be follo|wed by M|
|00005bc0| 53 47 49 09 2a 2f 0d 09 | 09 09 4c 6f 67 53 74 61 |SGI.*/..|..LogSta|
|00005bd0| 74 75 73 53 74 72 69 6e | 67 28 69 6f 52 65 73 75 |tusStrin|g(ioResu|
|00005be0| 6c 74 2c 20 22 5c 70 49 | 6e 74 65 72 6d 65 64 69 |lt, "\pI|ntermedi|
|00005bf0| 61 74 65 20 53 63 72 69 | 70 74 20 45 72 72 6f 72 |ate Scri|pt Error|
|00005c00| 22 29 3b 0d 09 09 09 73 | 63 72 69 70 74 50 74 72 |");....s|criptPtr|
|00005c10| 20 3d 20 28 28 55 49 6e | 74 33 32 29 20 47 4c 4f | = ((UIn|t32) GLO|
|00005c20| 42 41 4c 2e 73 63 72 69 | 70 74 49 4f 54 61 62 6c |BAL.scri|ptIOTabl|
|00005c30| 65 2e 70 68 79 73 69 63 | 61 6c 4d 61 70 70 69 6e |e.physic|alMappin|
|00005c40| 67 5b 30 5d 29 0d 09 09 | 09 09 09 09 09 2b 20 6b |g[0])...|.....+ k|
|00005c50| 53 43 53 49 52 75 6e 64 | 6f 77 6e 53 63 72 69 70 |SCSIRund|ownScrip|
|00005c60| 74 3b 0d 09 09 09 53 74 | 61 72 74 53 63 72 69 70 |t;....St|artScrip|
|00005c70| 74 28 70 65 72 52 65 71 | 75 65 73 74 44 61 74 61 |t(perReq|uestData|
|00005c80| 50 74 72 2c 20 73 63 72 | 69 70 74 50 74 72 29 3b |Ptr, scr|iptPtr);|
|00005c90| 0d 09 09 09 62 72 65 61 | 6b 3b 0d 09 09 63 61 73 |....brea|k;...cas|
|00005ca0| 65 20 6e 6f 45 72 72 3a | 09 09 09 09 09 09 2f 2a |e noErr:|....../*|
|00005cb0| 20 53 75 63 63 65 73 73 | 66 75 6c 20 63 6f 6d 70 | Success|ful comp|
|00005cc0| 6c 65 74 69 6f 6e 09 09 | 09 09 2a 2f 0d 09 09 09 |letion..|..*/....|
|00005cd0| 2f 2a 0d 09 09 09 20 2a | 20 42 75 74 20 77 61 69 |/*.... *| But wai|
|00005ce0| 74 2c 20 74 68 65 72 65 | 27 73 20 6d 6f 72 65 20 |t, there|'s more |
|00005cf0| 2d 2d 20 74 68 65 20 6d | 65 6d 6f 72 79 20 74 65 |-- the m|emory te|
|00005d00| 73 74 20 77 69 6c 6c 20 | 73 75 63 63 65 65 64 20 |st will |succeed |
|00005d10| 61 66 74 65 72 20 65 61 | 63 68 0d 09 09 09 20 2a |after ea|ch.... *|
|00005d20| 20 22 63 68 75 6e 6b 22 | 20 6f 66 20 44 4d 41 20 | "chunk"| of DMA |
|00005d30| 2d 2d 20 77 65 20 63 61 | 74 63 68 20 74 68 69 73 |-- we ca|tch this|
|00005d40| 20 68 65 72 65 20 61 6e | 64 20 72 65 2d 64 69 72 | here an|d re-dir|
|00005d50| 65 63 74 20 28 74 6f 20 | 75 73 65 20 61 20 6c 65 |ect (to |use a le|
|00005d60| 67 61 6c 0d 09 09 09 20 | 2a 20 74 65 72 6d 29 20 |gal.... |* term) |
|00005d70| 74 68 65 20 73 65 63 6f | 6e 64 61 72 79 20 69 6e |the seco|ndary in|
|00005d80| 74 65 72 72 75 70 74 20 | 74 6f 20 74 68 65 20 53 |terrupt |to the S|
|00005d90| 6f 66 74 77 61 72 65 20 | 54 61 73 6b 2e 0d 09 09 |oftware |Task....|
|00005da0| 09 20 2a 2f 0d 09 09 09 | 69 66 20 28 52 45 51 55 |. */....|if (REQU|
|00005db0| 45 53 54 2e 73 63 72 69 | 70 74 53 65 6c 65 63 74 |EST.scri|ptSelect|
|00005dc0| 6f 72 20 3d 3d 20 6b 53 | 43 53 49 54 65 73 74 4d |or == kS|CSITestM|
|00005dd0| 65 6d 6f 72 79 53 63 72 | 69 70 74 0d 09 09 09 20 |emoryScr|ipt.... |
|00005de0| 26 26 20 49 4f 50 42 2e | 69 6f 41 63 74 43 6f 75 |&& IOPB.|ioActCou|
|00005df0| 6e 74 20 3c 20 49 4f 50 | 42 2e 69 6f 52 65 71 43 |nt < IOP|B.ioReqC|
|00005e00| 6f 75 6e 74 29 0d 09 09 | 09 20 09 67 6f 74 6f 20 |ount)...|. .goto |
|00005e10| 6e 65 65 64 41 6e 6f 74 | 68 65 72 50 72 65 70 61 |needAnot|herPrepa|
|00005e20| 72 65 4d 65 6d 6f 72 79 | 3b 0d 09 09 09 20 2f 2a |reMemory|;.... /*|
|00005e30| 20 45 6c 73 65 2c 20 63 | 6f 6e 74 69 6e 75 65 20 | Else, c|ontinue |
|00005e40| 61 74 20 49 2f 4f 20 63 | 6f 6d 70 6c 65 74 69 6f |at I/O c|ompletio|
|00005e50| 6e 20 2a 2f 0d 09 09 64 | 65 66 61 75 6c 74 3a 0d |n */...d|efault:.|
|00005e60| 61 6c 6c 44 6f 6e 65 3a | 0d 09 09 09 2f 2a 0d 09 |allDone:|..../*..|
|00005e70| 09 09 20 2a 20 4e 6f 74 | 65 20 74 68 61 74 20 77 |.. * Not|e that w|
|00005e80| 65 20 75 73 65 20 61 6e | 20 61 74 6f 6d 69 63 20 |e use an| atomic |
|00005e90| 6d 65 6d 6f 72 79 20 73 | 65 71 75 65 6e 63 65 20 |memory s|equence |
|00005ea0| 74 6f 20 72 65 74 72 69 | 65 76 65 20 74 68 65 20 |to retri|eve the |
|00005eb0| 6f 6c 64 20 76 61 6c 75 | 65 20 6f 66 0d 09 09 09 |old valu|e of....|
|00005ec0| 20 2a 20 74 68 65 20 70 | 61 72 61 6d 65 74 65 72 | * the p|arameter|
|00005ed0| 20 62 6c 6f 63 6b 2c 20 | 74 68 65 6e 20 73 65 74 | block, |then set|
|00005ee0| 20 69 74 20 74 6f 20 4e | 55 4c 4c 2e 20 54 68 69 | it to N|ULL. Thi|
|00005ef0| 73 20 70 72 65 76 65 6e | 74 73 20 74 77 6f 20 61 |s preven|ts two a|
|00005f00| 73 79 6e 63 68 72 6f 6e | 6f 75 73 0d 09 09 09 20 |synchron|ous.... |
|00005f10| 2a 20 72 6f 75 74 69 6e | 65 73 20 66 72 6f 6d 20 |* routin|es from |
|00005f20| 63 61 6c 6c 69 6e 67 20 | 49 4f 43 6f 6d 6d 61 6e |calling |IOComman|
|00005f30| 64 49 73 43 6f 6d 70 6c | 65 74 65 20 6f 6e 20 74 |dIsCompl|ete on t|
|00005f40| 68 65 20 73 61 6d 65 20 | 70 61 72 61 6d 65 74 65 |he same |paramete|
|00005f50| 72 20 62 6c 6f 63 6b 2e | 0d 09 09 09 20 2a 20 49 |r block.|.... * I|
|00005f60| 67 6e 6f 72 69 6e 67 20 | 61 74 6f 6d 69 63 20 63 |gnoring |atomic c|
|00005f70| 6f 6e 73 69 64 65 72 61 | 74 69 6f 6e 73 2c 20 74 |onsidera|tions, t|
|00005f80| 68 65 20 77 68 69 6c 65 | 2f 69 66 20 73 65 71 75 |he while|/if sequ|
|00005f90| 65 6e 63 65 20 69 73 20 | 65 71 75 69 76 61 6c 65 |ence is |equivale|
|00005fa0| 6e 74 20 74 6f 0d 09 09 | 09 20 2a 09 09 70 62 20 |nt to...|. *..pb |
|00005fb0| 3d 20 52 45 51 55 45 53 | 54 2e 70 62 3b 0d 09 09 |= REQUES|T.pb;...|
|00005fc0| 09 20 2a 09 09 69 66 20 | 28 70 62 20 21 3d 20 4e |. *..if |(pb != N|
|00005fd0| 55 4c 4c 29 20 7b 0d 09 | 09 09 20 2a 09 09 09 52 |ULL) {..|.. *...R|
|00005fe0| 45 51 55 45 53 54 2e 70 | 62 20 3d 20 4e 55 4c 4c |EQUEST.p|b = NULL|
|00005ff0| 3b 0d 09 09 09 20 2a 09 | 09 09 2e 2e 2e 20 49 4f |;.... *.|..... IO|
|00006000| 43 6f 6d 6d 61 6e 64 49 | 73 43 6f 6d 70 6c 65 74 |CommandI|sComplet|
|00006010| 65 28 2e 2e 2e 29 3b 0d | 09 09 09 20 2a 09 09 7d |e(...);.|... *..}|
|00006020| 0d 09 09 09 20 2a 2f 0d | 23 69 66 20 30 20 26 26 |.... */.|#if 0 &&|
|00006030| 20 55 53 45 5f 4c 4f 47 | 5f 4c 49 42 52 41 52 59 | USE_LOG|_LIBRARY|
|00006040| 0d 09 09 09 57 72 69 74 | 65 4c 6f 67 45 6e 74 72 |....Writ|eLogEntr|
|00006050| 79 28 47 4c 4f 42 41 4c | 2e 6c 6f 67 52 65 63 6f |y(GLOBAL|.logReco|
|00006060| 72 64 50 74 72 2c 20 27 | 53 65 63 43 27 2c 0d 09 |rdPtr, '|SecC',..|
|00006070| 09 09 09 4c 6f 67 46 6f | 72 6d 61 74 34 28 0d 09 |...LogFo|rmat4(..|
|00006080| 09 09 09 09 6b 4c 6f 67 | 46 6f 72 6d 61 74 53 69 |....kLog|FormatSi|
|00006090| 67 6e 65 64 2c 20 6b 4c | 6f 67 46 6f 72 6d 61 74 |gned, kL|ogFormat|
|000060a0| 41 64 64 72 65 73 73 2c | 0d 09 09 09 09 09 6b 4c |Address,|......kL|
|000060b0| 6f 67 46 6f 72 6d 61 74 | 41 64 64 72 65 73 73 2c |ogFormat|Address,|
|000060c0| 20 6b 4c 6f 67 46 6f 72 | 6d 61 74 53 74 72 69 6e | kLogFor|matStrin|
|000060d0| 67 0d 09 09 09 09 29 2c | 0d 09 09 09 09 28 73 69 |g.....),|.....(si|
|000060e0| 67 6e 65 64 20 6c 6f 6e | 67 29 20 69 6f 52 65 73 |gned lon|g) ioRes|
|000060f0| 75 6c 74 2c 20 52 45 51 | 55 45 53 54 2e 70 62 2c |ult, REQ|UEST.pb,|
|00006100| 0d 09 09 09 09 28 28 28 | 75 6e 73 69 67 6e 65 64 |.....(((|unsigned|
|00006110| 20 6c 6f 6e 67 29 20 53 | 43 52 49 50 54 2e 63 6f | long) S|CRIPT.co|
|00006120| 6d 6d 61 6e 64 43 6f 6d | 70 6c 65 74 65 42 79 74 |mmandCom|pleteByt|
|00006130| 65 29 20 3c 3c 20 31 36 | 29 20 7c 20 53 43 52 49 |e) << 16|) | SCRI|
|00006140| 50 54 2e 73 74 61 74 75 | 73 42 79 74 65 2c 0d 09 |PT.statu|sByte,..|
|00006150| 09 09 09 22 5c 70 49 2f | 4f 20 63 6f 6d 70 6c 65 |..."\pI/|O comple|
|00006160| 74 65 22 0d 09 09 09 29 | 3b 0d 23 65 6e 64 69 66 |te"....)|;.#endif|
|00006170| 0d 09 09 09 2f 2a 0d 09 | 09 09 20 2a 20 57 61 74 |..../*..|.. * Wat|
|00006180| 63 68 20 6f 75 74 20 66 | 6f 72 20 72 65 2d 65 6e |ch out f|or re-en|
|00006190| 74 72 61 6e 63 79 20 70 | 72 6f 62 6c 65 6d 73 20 |trancy p|roblems |
|000061a0| 68 65 72 65 2e 20 4f 6e | 63 65 20 77 65 20 63 61 |here. On|ce we ca|
|000061b0| 6c 6c 20 49 4f 43 6f 6d | 6d 61 6e 64 49 73 43 6f |ll IOCom|mandIsCo|
|000061c0| 6d 70 6c 65 74 65 2c 0d | 09 09 09 20 2a 20 77 65 |mplete,.|... * we|
|000061d0| 20 6d 75 73 74 20 6e 6f | 74 20 63 6f 6e 74 69 6e | must no|t contin|
|000061e0| 75 65 20 74 68 65 20 77 | 68 69 6c 65 20 6c 6f 6f |ue the w|hile loo|
|000061f0| 70 20 61 73 20 74 68 65 | 20 52 45 51 55 45 53 54 |p as the| REQUEST|
|00006200| 20 61 6e 64 20 52 45 51 | 55 45 53 54 2e 70 62 20 | and REQ|UEST.pb |
|00006210| 6d 61 79 20 62 65 0d 09 | 09 09 20 2a 20 72 65 2d |may be..|.. * re-|
|00006220| 75 73 65 64 20 62 65 63 | 61 75 73 65 20 6f 66 20 |used bec|ause of |
|00006230| 61 6e 20 61 73 79 6e 63 | 68 72 6f 6e 6f 75 73 20 |an async|hronous |
|00006240| 72 65 71 75 65 73 74 20 | 73 74 61 72 74 65 64 20 |request |started |
|00006250| 66 72 6f 6d 20 74 68 65 | 20 63 6f 6d 70 6c 65 74 |from the| complet|
|00006260| 69 6f 6e 0d 09 09 09 20 | 2a 20 72 6f 75 74 69 6e |ion.... |* routin|
|00006270| 65 2e 0d 09 09 09 20 2a | 0d 09 09 09 20 2a 20 53 |e..... *|.... * S|
|00006280| 69 6e 63 65 20 77 65 27 | 72 65 20 64 6f 6e 65 20 |ince we'|re done |
|00006290| 77 69 74 68 20 74 68 69 | 73 20 49 2f 4f 20 72 65 |with thi|s I/O re|
|000062a0| 71 75 65 73 74 2c 20 63 | 68 65 63 6b 70 6f 69 6e |quest, c|heckpoin|
|000062b0| 74 20 74 68 65 20 70 65 | 72 2d 72 65 71 75 65 73 |t the pe|r-reques|
|000062c0| 74 0d 09 09 09 20 2a 20 | 74 61 62 6c 65 2c 20 62 |t.... * |table, b|
|000062d0| 75 74 20 64 6f 6e 27 74 | 20 72 65 6c 65 61 73 65 |ut don't| release|
|000062e0| 20 73 79 73 74 65 6d 20 | 72 65 73 6f 75 72 63 65 | system |resource|
|000062f0| 73 2e 0d 09 09 09 20 2a | 0d 09 09 09 20 2a 20 4e |s..... *|.... * N|
|00006300| 6f 74 65 3a 20 73 74 61 | 74 75 73 20 76 61 6c 75 |ote: sta|tus valu|
|00006310| 65 73 20 61 72 65 20 6e | 6f 74 20 70 61 73 73 65 |es are n|ot passe|
|00006320| 64 20 62 61 63 6b 20 74 | 6f 20 74 68 65 20 63 61 |d back t|o the ca|
|00006330| 6c 6c 65 72 20 2d 2d 20 | 69 6f 52 65 73 75 6c 74 |ller -- |ioResult|
|00006340| 20 68 61 73 0d 09 09 09 | 20 2a 20 74 68 65 20 66 | has....| * the f|
|00006350| 69 6e 61 6c 20 6f 70 65 | 72 61 74 69 6f 6e 20 73 |inal ope|ration s|
|00006360| 74 61 74 75 73 2e 0d 09 | 09 09 20 2a 2f 0d 09 09 |tatus...|.. */...|
|00006370| 09 73 74 61 74 75 73 20 | 3d 20 43 68 65 63 6b 70 |.status |= Checkp|
|00006380| 6f 69 6e 74 49 4f 28 0d | 09 09 09 09 09 09 52 45 |ointIO(.|......RE|
|00006390| 51 55 45 53 54 2e 70 65 | 72 52 65 71 75 65 73 74 |QUEST.pe|rRequest|
|000063a0| 49 4f 54 61 62 6c 65 2e | 70 72 65 70 61 72 61 74 |IOTable.|preparat|
|000063b0| 69 6f 6e 49 44 2c 0d 09 | 09 09 09 09 09 6b 4d 6f |ionID,..|.....kMo|
|000063c0| 72 65 49 4f 54 72 61 6e | 73 66 65 72 73 0d 09 09 |reIOTran|sfers...|
|000063d0| 09 09 09 29 3b 0d 09 09 | 09 43 68 65 63 6b 53 74 |...);...|.CheckSt|
|000063e0| 61 74 75 73 28 73 74 61 | 74 75 73 2c 20 22 5c 70 |atus(sta|tus, "\p|
|000063f0| 43 68 65 63 6b 70 6f 69 | 6e 74 49 4f 20 70 65 72 |Checkpoi|ntIO per|
+--------+-------------------------+-------------------------+--------+--------+
Only 25.0 KB of data is shown above.