|
Joined: May 2012
Posts: 570 Likes: 12
Senior Member
|
OP
Senior Member
Joined: May 2012
Posts: 570 Likes: 12 |
8x300 firmware for the aforementioned harddisk controller got dumped. Looks sane, too:
00000000: E036 jmp 0036h
00000002: E029 jmp 0029h
00000004: B021 nzt liv0,1,01h
00000006: B704 nzt liv7,0,04h
00000008: B324 nzt liv3,1,04h
0000000A: 1781 move liv7,4,r1
0000000C: 8109 xec r1,09h
0000000E: 8119 xec r1,19h
00000010: E004 jmp 0004h
00000012: C700 xmit 00h,ivl
<...>
There's another 8x300 disassembler out there -- http://amigan.1emu.net/releases/Dis8X305.readme -- could be useful.
|
|
|
|
Joined: May 2012
Posts: 570 Likes: 12
Senior Member
|
OP
Senior Member
Joined: May 2012
Posts: 570 Likes: 12 |
Apparently, these are bitwise identical to firmware of DEC Pro controller Rev.1 (P/N 54-15134-01) -- ROMs 071B2, 072B2, 073B2... wonder if DEC published firmware source for it?
|
|
|
|
Joined: Jan 2011
Posts: 266 Likes: 4
Senior Member
|
Senior Member
Joined: Jan 2011
Posts: 266 Likes: 4 |
Apparently, these are bitwise identical to firmware of DEC Pro controller Rev.1 (P/N 54-15134-01) -- ROMs 071B2, 072B2, 073B2... wonder if DEC published firmware source for it? that's a useful data point. is the pro hard disk controller schematic somewhere? I think I looked for it when this came up and I don't think I found it
|
|
|
|
Joined: Feb 2012
Posts: 14
Member
|
Member
Joined: Feb 2012
Posts: 14 |
I've been working a little bit off-and-on for years on reverse-engineering the WD1000 and WD1001 disk controllers (8X300/8X305-based), and their clones. I've only made any significant progress within the last few days, after hacking together my own disassesmbler which deals with the Fast I/O Select PROM. I do NOT recommend using this disassembler yet, for reasons that are explained in the README, but I've put it on github: https://github.com/brouhaha/s8x30xI've made some progress interpreting the firmware of an early WD1000, which only had 512 words of firmware, and didn't support run-time configurable sector size selection. So far I've figured out how they handle the host reading and writing the task file, dispatching the commands, and much of the sector ID search.
|
|
|
|
Joined: May 2012
Posts: 570 Likes: 12
Senior Member
|
OP
Senior Member
Joined: May 2012
Posts: 570 Likes: 12 |
is the pro hard disk controller schematic somewhere? Apparently not. There's schematic of second clone, though: http://www.emuverse.ru/downloads/computers/DVK/docs/kzhd.djvuThe story, apparently, is that once Pro got cloned (with its disk controller), the design was reused in the DVK series, as a Q-bus controller. That document is for the DVK one.
|
|
|
|
Joined: Feb 2012
Posts: 14
Member
|
Member
Joined: Feb 2012
Posts: 14 |
I've put my work in progress on reverse-engineering the original WD1000 firmware on github: https://github.com/brouhaha/wd100xI use my own assembler syntax output by my previously mentioned s8x30x disassembler, so at the present there is no assembler for it. I expect to have an assembler in the not-too-distant future.
|
|
|
|
Joined: May 2012
Posts: 570 Likes: 12
Senior Member
|
OP
Senior Member
Joined: May 2012
Posts: 570 Likes: 12 |
I think (after quick look at kzhd.djvu) that dec's controller was derived from wd1000 (at least the fast select layout looks similar) and I've tried disassembling its firmware, but something is wrong (python 3.4.3):
% /tmp/s8x30x/dis8x30x /tmp/kr1656re3-4.bin /tmp/kr1656re3-5.bin
Traceback (most recent call last):
File "/tmp/s8x30x/dis8x30x", line 116, in <module>
disassemble(s8x30x, memory, show_obj = args.listing, output_file = args.output)
File "/tmp/s8x30x/dis8x30x", line 59, in disassemble
symtab_by_value = pass1(s8x30x, fw, base)
File "/tmp/s8x30x/dis8x30x", line 30, in pass1
(dis, operands, fields) = s8x30x.disassemble_inst(fw, pc, disassemble_operands = False)
File "/tmp/s8x30x/s8x30x.py", line 354, in disassemble_inst
inst, form, fields = self.inst_search(fw, pc)
File "/tmp/s8x30x/s8x30x.py", line 339, in inst_search
form, fields = self.form_search(fw, pc, inst)
File "/tmp/s8x30x/s8x30x.py", line 315, in form_search
if OT.sr in form.operands and not sr.is_src_reg():
File "/tmp/s8x30x/s8x30x.py", line 84, in is_src_reg
if self >= self.liv0:
AttributeError: 'Reg' object has no attribute 'liv0'
|
|
|
|
Joined: Feb 2012
Posts: 14
Member
|
Member
Joined: Feb 2012
Posts: 14 |
The WD1000 and WD1001 have very similar fast select, so it's not easy to distinguish them based on that. The surest way I know to distinguish them is that the WD1000 has a WD1100-04 CRC chip, while the WD1001 has a WD1100-06 ECC/CRC chip.
The WD1001 also has a WD1100-07 and WD1100-09, but it's possible that those could be used on late revisions of the WD1000, so I wouldn't assume that the presence of those is definitive.
The problem you found is due to an improvement in how enumerations work in Python 3.5. I've just pushed an update which I've tested with Python 3.4.5, so with a bit of luck it should work with Python 3.4.3.
I do all my normal development with Python 3.5.1 or newer, so please let me know if you run into any other Python 3.4 incompatibilities in future versions.
If a copy of the DEC PROMs can be made available, I'd appreciate it.
|
|
|
|
Joined: May 2012
Posts: 570 Likes: 12
Senior Member
|
OP
Senior Member
Joined: May 2012
Posts: 570 Likes: 12 |
Apparently, Pro350 controller uses WD1100-01, -04, -05 and -12 (looking at the schematics of the clone.)
|
|
|
|
Joined: May 2012
Posts: 570 Likes: 12
Senior Member
|
OP
Senior Member
Joined: May 2012
Posts: 570 Likes: 12 |
Help, my floppy disk is rusting This particular floppy is not interesting, but a few others in the same pile are -- but they use an unique format that has to be emulated first ( http://torlus.com/floppy/forum/viewtopic.php?f=19&t=1384)
|
|
|
1 members (1 invisible),
215
guests, and
1
robot. |
Key:
Admin,
Global Mod,
Mod
|
|
Forums9
Topics9,328
Posts122,128
Members5,074
|
Most Online1,283 Dec 21st, 2022
|
|
These forums are sponsored by Superior Solitaire, an ad-free card game collection for macOS and iOS. Download it today!
|
|
|
|