I'm not an expert, but I can give a few advices:
1. Seagate firmwares disassemble OK enough in IDA. Selected small parts of code can even be debugged under IDA+QEMU - I attached a screenshot - with well-known limitations of such debugging, e.g. memory is not filled during execution...
2. dont' try to disassemble any files without knowing their loading addresses - it makes no sense, because there are direct addresses in code and you will lost any references to them
3. you can get loading addresses for parts of ROM e.g. from E123s' soft - F3 ROM explorer
4. the best method is not to take loading addresses from firmware itself, but dump RAM and then check, when given file/part of code loads. Then you are sure, that your code in disassembler is like in live drive.
5. you cant' really understand such low-level code without original symbols. Try to find such symbols in firmware updates... it's really difficult, symbols are intentionally removed from any distributed soft. I know only a few exceptions to this - old disks of Quantum or Samsung. Symbols dont' need to be for the given version - any are priceless.
6. chips: ROM initializes chips, which have no public available datasheets.... Try to find older/similar ones. For Lucent/Agere/LSI - forget it. For proprietary Seagates' ASIC - forget it. You can decrypt pins with logic analyzer of proper speed and cost
, with probes of proper raster (0,025'' or smaller) and cost.... and proper very specialistic KNOWLEDGE.
The simple UART base address visible on attached disassembly was manually found by me, of course. Real meanings and names of [800D3000] address or function "ROM_puts_to_UART" dont' exist in firmware retail code
7. So.... I dont' think so