[LMH]Diagnostic Engine Code again

Nyef nyef@softhome.net
Wed Sep 3 17:23:01 2003


  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.
  Send mail to mime@docserver.cac.washington.edu for more info.

--8323328-1581355948-1062638176=:17823
Content-Type: TEXT/PLAIN; charset=US-ASCII

Hello all.

On monday evening I was looking through hexdumps of disk images for no 
real reason, and I stumbled upon something interesting in explScsi0Dr1.dsk 
at offset #x49c10: An opcode list for Diagnostic Engine Code.

Attached is the source code for a Diagnostic Engine Code disassembler. It 
make need some tweaking in order to work (a couple includes are probably 
wrong for your systems, and you may need some typedefs), but works fine 
over here.

A couple sample command lines:

./disdec aek/E1_eproms/2236662_SIB 0x0e 0x0c 0xf8

./disdec aek/explorerI_diskDumps/explScsi0Dr1.dsk 0x4b134 0x1534 0x100

Unfortunately, while I turned up an opcode list, it didn't include such 
niceties as full instruction encoding information or desciptions of 
instruction semantics. Some parts of the disassembler code are educated 
guesses that held up in practice. Some parts are completely untested (due 
mainly to not having any code that triggers them handy).

Anyway, that's what I've been messing with for the past couple days.

---------------------------
All programming can be viewed as an exercise.
---------------------------
Alastair Bridgewater
e-mail: nyef@softhome.net
--8323328-1581355948-1062638176=:17823
Content-Type: TEXT/plain; name="disdec.c"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.LNX.4.56.0309032116160.17823@mai.paradiesanalytics.com>
Content-Description: 
Content-Disposition: attachment; filename="disdec.c"

LyoNCiAqIGRpc2RlYy5jDQogKg0KICogRGlhZ25vc3RpYyBFbmdpbmUgQ29k
ZSBkaXNhc3NlbWJsZXINCiAqLw0KDQojaW5jbHVkZSA8Y29tbW9uL2Rpc21h
bi5oPg0KI2luY2x1ZGUgPHN0ZGxpYi5oPg0KDQpzdHJ1Y3QgaW5zdHIgew0K
ICAgIGludCBudW1ieXRlczsNCiAgICBjaGFyICpuYW1lOw0KfTsNCg0Kc3Ry
dWN0IGluc3RyIGluc3Ryc1sweDgwXSA9IHsNCiAgICAvKiA4MCAtIDg3ICov
DQogICAgezEsICJoYWx0In0sDQogICAgezMsICJnb3RvIn0sDQogICAgezEs
ICJwbHVzIn0sDQogICAgezEsICJub3QifSwNCiAgICB7MSwgInJvdGF0ZSJ9
LA0KICAgIHsxLCAiZXF1YWxzIn0sDQogICAgezEsICJub3ZlciJ9LA0KICAg
IHsxLCAicGljayJ9LA0KDQogICAgLyogODggLSA4ZiAqLw0KICAgIHsyLCAi
dmFsMSJ9LA0KICAgIHsxLCAiZnJvbXIifSwNCiAgICB7MSwgInRvciJ9LA0K
ICAgIHsxLCAicmdldCJ9LA0KICAgIHsxLCAiZW1pdCJ9LA0KICAgIHsyLCBO
VUxMfSwgLyogOGQsIHN1Yi1kaXNwYXRjaCAqLw0KICAgIHsxLCAic2V0diJ9
LA0KICAgIHsxLCAiY2FsbDAifSwNCg0KICAgIC8qIDkwIC0gOTcgKi8NCiAg
ICB7MSwgImRwdXQifSwNCiAgICB7MSwgIm5wdXQlYiJ9LA0KICAgIHsxLCAi
YnB1dCViIn0sDQogICAgezEsICJpcHV0In0sDQogICAgezEsICJkZ2V0In0s
DQogICAgezEsICJuZ2V0JWIifSwNCiAgICB7MSwgImJnZXQlYiJ9LA0KICAg
IHsxLCAiaWdldCJ9LA0KDQogICAgLyogOTggLSA5ZiAqLw0KICAgIHsxLCAi
c2V0bWVtJWIifSwNCiAgICB7MSwgImNoZWNrbWVtJWIifSwNCiAgICB7MSwg
IndhbGttZW0lYiJ9LA0KICAgIHsxLCAibW92ZW1lbSViIn0sDQogICAgezEs
ICJjbXBtZW0lYiJ9LA0KICAgIHsxLCAiZnJvbXgifSwNCiAgICB7MSwgImVy
ZXgifSwNCiAgICB7MSwgInVucmVjb2duaXplZCJ9LA0KDQogICAgLyogYTAg
LSBhNyAqLw0KICAgIHsxLCAibm9wIn0sDQogICAgezMsICJqaWZ6In0sDQog
ICAgezEsICJtaW51cyJ9LA0KICAgIHsxLCAiYW5kIn0sDQogICAgezEsICJz
aGlmdCJ9LA0KICAgIHsxLCAibGVzcyJ9LA0KICAgIHsxLCAic3dhcCJ9LA0K
ICAgIHsxLCAiZHVwIn0sDQoNCiAgICAvKiBhOCAtIGFmICovDQogICAgezMs
ICJ2YWwyIn0sDQogICAgezEsICJ1bnJlY29nbml6ZWQifSwNCiAgICB7MSwg
InVucmVjb2duaXplZCJ9LA0KICAgIHsxLCAicmdldDEifSwNCiAgICB7MSwg
InVucmVjb2duaXplZCJ9LA0KICAgIHsyLCBOVUxMfSwgLyogYWQsIHN1Yi1k
aXNwYXRjaCAqLw0KICAgIHsxLCAiZ2V0diJ9LA0KICAgIHsxLCAiY2FsbDEi
fSwNCg0KICAgIC8qIGIwIC0gYjcgKi8NCiAgICB7MSwgInVucmVjb2duaXpl
ZCJ9LA0KICAgIHsxLCAibnB1dCVoIn0sDQogICAgezEsICJicHV0JWgifSwN
CiAgICB7MSwgImdldGJiIn0sDQogICAgezEsICJ1bnJlY29nbml6ZWQifSwN
CiAgICB7MSwgIm5nZXQlaCJ9LA0KICAgIHsxLCAiYmdldCVoIn0sDQogICAg
ezEsICJ1bnJlY29nbml6ZWQifSwNCg0KICAgIC8qIGI4IC0gYmYgKi8NCiAg
ICB7MSwgInNldG1lbSVoIn0sDQogICAgezEsICJjaGVja21lbSVoIn0sDQog
ICAgezEsICJ3YWxrbWVtJWgifSwNCiAgICB7MSwgIm1vdmVtZW0laCJ9LA0K
ICAgIHsxLCAiY21wbWVtJWgifSwNCiAgICB7MSwgInRveCJ9LA0KICAgIHsx
LCAiZ2V0aW50In0sDQogICAgezEsICJ1bnJlY29nbml6ZWQifSwNCg0KICAg
IC8qIGMwIC0gYzcgKi8NCiAgICB7MSwgInJldHVybiJ9LA0KICAgIHszLCAi
am5iIn0sDQogICAgezEsICJ0aW1lcyJ9LA0KICAgIHsxLCAib3IifSwNCiAg
ICB7MSwgInVucmVjb2duaXplZCJ9LA0KICAgIHsxLCAidWxlc3MifSwNCiAg
ICB7MSwgInVucmVjb2duaXplZCJ9LA0KICAgIHsxLCAiZHJvcCJ9LA0KDQog
ICAgLyogYzggLSBjZiAqLw0KICAgIHs0LCAidmFsMyJ9LA0KICAgIHsxLCAi
dW5yZWNvZ25pemVkIn0sDQogICAgezEsICJ1bnJlY29nbml6ZWQifSwNCiAg
ICB7MSwgInJnZXQyIn0sDQogICAgezEsICJ1bnJlY29nbml6ZWQifSwNCiAg
ICB7MSwgInVucmVjb2duaXplZCJ9LA0KICAgIHsxLCAiY2FsbHYifSwNCiAg
ICB7MSwgImNhbGwyIn0sDQoNCiAgICAvKiBkMCAtIGQ3ICovDQogICAgezEs
ICJ1bnJlY29nbml6ZWQifSwNCiAgICB7MSwgIm5wdXQldyJ9LA0KICAgIHsx
LCAiYnB1dCV3In0sDQogICAgezEsICJzZXRiYiJ9LA0KICAgIHsxLCAidW5y
ZWNvZ25pemVkIn0sDQogICAgezEsICJuZ2V0JXcifSwNCiAgICB7MSwgIm5w
dXQldyJ9LA0KICAgIHsxLCAidW5yZWNvZ25pemVkIn0sDQoNCiAgICAvKiBk
OCAtIGRmICovDQogICAgezEsICJzZXRtZW0ldyJ9LA0KICAgIHsxLCAiY2hl
Y2ttZW0ldyJ9LA0KICAgIHsxLCAid2Fsa21lbSV3In0sDQogICAgezEsICJt
b3ZlbWVtJXcifSwNCiAgICB7MSwgImNtcG1lbSV3In0sDQogICAgezEsICJn
ZXR4In0sDQogICAgezEsICJzZXRpbnQifSwNCiAgICB7MSwgInVucmVjb2du
aXplZCJ9LA0KDQogICAgLyogZTAgLSBlNyAqLw0KICAgIHsxLCAid2FpdCJ9
LA0KICAgIHsxLCAiaWxsb3AifSwNCiAgICB7MSwgImRpdm1vZCJ9LA0KICAg
IHsxLCAieG9yIn0sDQogICAgezEsICJ1bnJlY29nbml6ZWQifSwNCiAgICB7
MSwgInVucmVjb2duaXplZCJ9LA0KICAgIHsxLCAidW5yZWNvZ25pemVkIn0s
DQogICAgezEsICJ1bnJlY29nbml6ZWQifSwNCg0KICAgIC8qIGU4IC0gZWYg
Ki8NCiAgICB7NSwgInZhbDQifSwNCiAgICB7MSwgInVucmVjb2duaXplZCJ9
LA0KICAgIHsxLCAidW5yZWNvZ25pemVkIn0sDQogICAgezEsICJyZ2V0MyJ9
LA0KICAgIHsxLCAicWtleSJ9LA0KICAgIHsxLCAidW5yZWNvZ25pemVkIn0s
DQogICAgezEsICJleGl0In0sDQogICAgezEsICJjYWxsMyJ9LA0KDQogICAg
LyogZjAgLSBmNyAqLw0KICAgIHsxLCAidW5yZWNvZ25pemVkIn0sDQogICAg
ezEsICJ1bnJlY29nbml6ZWQifSwNCiAgICB7MSwgInVucmVjb2duaXplZCJ9
LA0KICAgIHsxLCAidW5yZWNvZ25pemVkIn0sDQogICAgezEsICJ1bnJlY29n
bml6ZWQifSwNCiAgICB7MSwgInVucmVjb2duaXplZCJ9LA0KICAgIHsxLCAi
dW5yZWNvZ25pemVkIn0sDQogICAgezEsICJ1bnJlY29nbml6ZWQifSwNCg0K
ICAgIC8qIGY4IC0gZmYgKi8NCiAgICB7MSwgInVucmVjb2duaXplZCJ9LA0K
ICAgIHsxLCAidW5yZWNvZ25pemVkIn0sDQogICAgezEsICJ1bnJlY29nbml6
ZWQifSwNCiAgICB7MSwgInVucmVjb2duaXplZCJ9LA0KICAgIHsxLCAidW5y
ZWNvZ25pemVkIn0sDQogICAgezEsICJ1bnJlY29nbml6ZWQifSwNCiAgICB7
MSwgImludGZvIn0sDQogICAgezEsICJ1bnJlY29nbml6ZWQifSwNCn07DQoN
CmNoYXIgKmJhc2VfOGRfbmFtZXNbOF0gPSB7DQogICAgIm1vdmJsayIsDQog
ICAgIm1vdmFuZCIsDQogICAgIm1vdm9yIiwNCiAgICAibW92eG9yIiwNCiAg
ICAibW92bmJsayIsDQogICAgIm1vdm5hbmQiLA0KICAgICJtb3Zub3IiLA0K
ICAgICJtb3ZueG9yIiwNCn07DQoNCmNoYXIgKmJhc2VfYWRfbmFtZXNbMl0g
PSB7DQogICAgInFzY2FuIiwNCiAgICAicXNjYW5mIiwNCn07DQoNCmludCBk
aXNhc3NlbWJsZV9pbnN0cih1OCAqZGF0YSwgbG9uZyBhZGRyZXNzKQ0Kew0K
ICAgIGNoYXIgYnVmZmVyWzgwXTsNCiAgICBpbnQgbnVtYnl0ZXM7DQogICAg
DQogICAgaWYgKCEoZGF0YVswXSAmIDB4ODApKSB7DQoJLyogaGlnaCBiaXQg
bm90IHNldCwgaXMgaGlnaCBieXRlIG9mIGFic29sdXRlIGZ1bmN0aW9uIGFk
ZHJlc3MgKi8NCglzcHJpbnRmKGJ1ZmZlciwgIiQlMDJ4JTAyeCIsIGRhdGFb
MF0sIGRhdGFbMV0pOw0KCW51bWJ5dGVzID0gMjsNCiAgICB9IGVsc2Ugew0K
CXN0cnVjdCBpbnN0ciAqaW5zdHI7DQoNCglpbnN0ciA9ICZpbnN0cnNbZGF0
YVswXSAmIDB4N2ZdOw0KCW51bWJ5dGVzID0gaW5zdHItPm51bWJ5dGVzOw0K
DQoJaWYgKCFpbnN0ci0+bmFtZSkgew0KCSAgICBjaGFyICp3aWR0aDsNCgkg
ICAgaW50IG1heGluc3RyOw0KCSAgICBjaGFyICoqaW5zdHJzOw0KCSAgICAN
CgkgICAgaWYgKChkYXRhWzFdICYgMHhmMCkgPT0gMHgwMCkgew0KCQl3aWR0
aCA9ICIlYiI7DQoJICAgIH0gZWxzZSBpZiAoKGRhdGFbMV0gJiAweGYwKSA9
PSAweDIwKSB7DQoJCXdpZHRoID0gIiVoIjsNCgkgICAgfSBlbHNlIGlmICgo
ZGF0YVsxXSAmIDB4ZjApID09IDB4NDApIHsNCgkJd2lkdGggPSAiJXciOw0K
CSAgICB9IGVsc2Ugew0KCQkvKiBGSVhNRTogTWF5IHdhbnQgdG8gc2lnbmFs
IG1vcmUgb2J2aW91cyBlcnJvciAqLw0KCQl3aWR0aCA9IE5VTEw7DQoJICAg
IH0NCg0KCSAgICBpZiAoZGF0YVswXSA9PSAweDhkKSB7DQoJCW1heGluc3Ry
ID0gNzsNCgkJaW5zdHJzID0gYmFzZV84ZF9uYW1lczsNCgkgICAgfSBlbHNl
IHsgLyogYWQgKi8NCgkJbWF4aW5zdHIgPSAxOw0KCQlpbnN0cnMgPSBiYXNl
X2FkX25hbWVzOw0KCSAgICB9DQoNCgkgICAgaWYgKChkYXRhWzFdICYgMHgw
ZikgPiBtYXhpbnN0cikgew0KCQlzcHJpbnRmKGJ1ZmZlciwgInVucmVjb2du
aXplZCIpOw0KCSAgICB9IGVsc2Ugew0KCQlzcHJpbnRmKGJ1ZmZlciwgIiVz
JXMiLCBpbnN0cnNbZGF0YVsxXSAmIDB4MGZdLCB3aWR0aCk7DQoJICAgIH0N
Cgl9IGVsc2UgaWYgKG51bWJ5dGVzID09IDEpIHsNCgkgICAgc3ByaW50Zihi
dWZmZXIsICIlcyIsIGluc3RyLT5uYW1lKTsNCgl9IGVsc2UgaWYgKG51bWJ5
dGVzID09IDIpIHsNCgkgICAgaWYgKGRhdGFbMF0gPT0gMHg4OCkgew0KCQlz
cHJpbnRmKGJ1ZmZlciwgIiVzICN4JTAyeCIsIGluc3RyLT5uYW1lLCBkYXRh
WzFdKTsNCgkgICAgfSBlbHNlIHsNCgkJLyogc3ViLWRpc3BhdGNoICovDQoJ
CXNwcmludGYoYnVmZmVyLCAic3ViLWRpc3BhdGNoICUwMngiLCBkYXRhWzFd
KTsNCgkgICAgfQ0KCX0gZWxzZSBpZiAobnVtYnl0ZXMgPT0gMykgew0KCSAg
ICBpZiAoZGF0YVswXSA9PSAweGE4KSB7DQoJCXNwcmludGYoYnVmZmVyLCAi
JXMgI3glMDJ4JTAyeCIsIGluc3RyLT5uYW1lLA0KCQkJZGF0YVsxXSwgZGF0
YVsyXSk7DQoJICAgIH0gZWxzZSB7DQoJCXNwcmludGYoYnVmZmVyLCAiJXMg
JCUwMnglMDJ4IiwgaW5zdHItPm5hbWUsDQoJCQlkYXRhWzFdLCBkYXRhWzJd
KTsNCgkgICAgfQ0KCX0gZWxzZSBpZiAobnVtYnl0ZXMgPT0gNCkgew0KCSAg
ICBzcHJpbnRmKGJ1ZmZlciwgIiVzICN4JTAyeCUwMnglMDJ4IiwgaW5zdHIt
Pm5hbWUsDQoJCSAgICBkYXRhWzFdLCBkYXRhWzJdLCBkYXRhWzNdKTsNCgl9
IGVsc2Ugew0KCSAgICBzcHJpbnRmKGJ1ZmZlciwgIiVzICN4JTAyeCUwMngl
MDJ4JTAyeCIsIGluc3RyLT5uYW1lLA0KCQkgICAgZGF0YVsxXSwgZGF0YVsy
XSwgZGF0YVszXSwgZGF0YVs0XSk7DQoJfQ0KICAgIH0NCg0KICAgIGlmIChu
dW1ieXRlcyA9PSAxKSB7DQoJcHJpbnRmKCIlMDhseDogJTAyeCAgICAgICAg
ICAgICAgIiwgYWRkcmVzcywgZGF0YVswXSk7DQogICAgfSBlbHNlIGlmIChu
dW1ieXRlcyA9PSAyKSB7DQoJcHJpbnRmKCIlMDhseDogJTAyeCAlMDJ4ICAg
ICAgICAgICAiLCBhZGRyZXNzLCBkYXRhWzBdLCBkYXRhWzFdKTsNCiAgICB9
IGVsc2UgaWYgKG51bWJ5dGVzID09IDMpIHsNCglwcmludGYoIiUwOGx4OiAl
MDJ4ICUwMnggJTAyeCAgICAgICAgIiwgYWRkcmVzcywNCgkgICAgICAgZGF0
YVswXSwgZGF0YVsxXSwgZGF0YVsyXSk7DQogICAgfSBlbHNlIGlmIChudW1i
eXRlcyA9PSA0KSB7DQoJcHJpbnRmKCIlMDhseDogJTAyeCAlMDJ4ICUwMngg
JTAyeCAgICAgIiwgYWRkcmVzcywNCgkgICAgICAgZGF0YVswXSwgZGF0YVsx
XSwgZGF0YVsyXSwgZGF0YVszXSk7DQogICAgfSBlbHNlIGlmIChudW1ieXRl
cyA9PSA1KSB7DQoJcHJpbnRmKCIlMDhseDogJTAyeCAlMDJ4ICUwMnggJTAy
eCAlMDJ4ICAiLCBhZGRyZXNzLA0KCSAgICAgICBkYXRhWzBdLCBkYXRhWzFd
LCBkYXRhWzJdLCBkYXRhWzNdLCBkYXRhWzRdKTsNCiAgICB9DQogICAgDQog
ICAgcHJpbnRmKCIlc1xuIiwgYnVmZmVyKTsNCiAgICANCiAgICByZXR1cm4g
bnVtYnl0ZXM7DQp9DQoNCi8qIEVPRiAqLw0K

--8323328-1581355948-1062638176=:17823
Content-Type: TEXT/plain; name="disman.h"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.LNX.4.56.0309032116161.17823@mai.paradiesanalytics.com>
Content-Description: 
Content-Disposition: attachment; filename="disman.h"

LyoNCiAqIGRpc21hbi5oDQogKg0KICogQ29tbW9uIG1haW4gZnVuY3Rpb24g
Zm9yIHNpbXBsZSBkaXNhc3NlbWJsZXJzDQogKi8NCg0KI2luY2x1ZGUgPGNv
bW1vbi90eXBlcy5oPg0KI2luY2x1ZGUgPHN0ZGlvLmg+DQoNCg0KaW50IGRp
c2Fzc2VtYmxlX2luc3RyKHU4ICpkYXRhLCBsb25nIGFkZHJlc3MpOw0KDQp2
b2lkIHVzYWdlKGNoYXIgKnByb2duYW1lKQ0Kew0KICAgIHByaW50ZigiJXMg
PGZpbGVuYW1lPiA8b2Zmc2V0PiA8YmFzZT4gPGxlbmd0aD5cbiIsIHByb2du
YW1lKTsNCn0NCg0KaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkN
CnsNCiAgICBGSUxFICpmaWxlOw0KICAgIGxvbmcgb2Zmc2V0Ow0KICAgIGxv
bmcgYmFzZTsNCiAgICBsb25nIGxlbmd0aDsNCiAgICBsb25nIHBvc2l0aW9u
Ow0KICAgIGxvbmcgcmVzdWx0Ow0KICAgIHU4ICpidWZmZXI7DQogICAgDQog
ICAgaWYgKGFyZ2MgIT0gNSkgew0KCXVzYWdlKGFyZ3ZbMF0pOw0KCXJldHVy
biAtMTsNCiAgICB9DQoNCiAgICBvZmZzZXQgPSBzdHJ0b2woYXJndlsyXSwg
TlVMTCwgMCk7DQogICAgYmFzZSA9IHN0cnRvbChhcmd2WzNdLCBOVUxMLCAw
KTsNCiAgICBsZW5ndGggPSBzdHJ0b2woYXJndls0XSwgTlVMTCwgMCk7DQoN
CiAgICBmaWxlID0gZm9wZW4oYXJndlsxXSwgInJiIik7DQogICAgZnNlZWso
ZmlsZSwgb2Zmc2V0LCBTRUVLX1NFVCk7DQogICAgYnVmZmVyID0gbWFsbG9j
KGxlbmd0aCk7DQogICAgZnJlYWQoYnVmZmVyLCAxLCBsZW5ndGgsIGZpbGUp
Ow0KDQogICAgZm9yIChwb3NpdGlvbiA9IDA7IHBvc2l0aW9uIDwgbGVuZ3Ro
OyApIHsNCglyZXN1bHQgPSBkaXNhc3NlbWJsZV9pbnN0cihidWZmZXIgKyBw
b3NpdGlvbiwgYmFzZSArIHBvc2l0aW9uKTsNCglpZiAoIXJlc3VsdCkgcmV0
dXJuIC0xOw0KCXBvc2l0aW9uICs9IHJlc3VsdDsNCiAgICB9DQogICAgDQog
ICAgcmV0dXJuIDA7DQp9DQoNCi8qIEVPRiAqLw0K

--8323328-1581355948-1062638176=:17823--