Looking for a disassembler (68030+68882).

Atari talk, or the life and the universe and things. Just keep it clean!
stephen_usher
Trusted Guru
Trusted Guru
Posts: 666
Joined: Mon Nov 13, 2017 7:19 pm
Location: Oxford, UK.
Contact:

Looking for a disassembler (68030+68882).

Post by stephen_usher » Tue May 05, 2020 10:02 pm

Does anyone here know of a good disassembler?

I'm trying to disassemble the boot ROM of an old UNIX machine so as to determine hardware addresses and how hardware is being initialised. (Due to hardware failure it looks like I may have to reverse engineer some hardware.)

I've tried m68kdis which isn't bad but is having issues with some of the code.

Anything better?
Intro retro computers since before they were retro...
ZX81->Spectrum->Memotech MTX->Sinclair QL->520STM->BBC Micro->TT030->PCs & Sun Workstations.
Added code to the MiNT kernel (still there the last time I checked) + put together MiNTOS.
Collection now with added Macs, Amigas, Suns and Acorns.

User avatar
mrbombermillzy
Posts: 121
Joined: Sun Jun 03, 2018 7:37 pm

Re: Looking for a disassembler (68030+68882).

Post by mrbombermillzy » Tue May 05, 2020 11:09 pm

Well for native 68k series there is on Atari: Easy Rider and Digger.

Then for Windows, theres IdaPro. Havent used it but it looks pretty powerful/comprehensive.

As for if they are 'good'. Im afraid I havent had much call to use them yet. Its a start though! ;)

User avatar
ari.tao
Posts: 45
Joined: Tue Sep 18, 2018 8:50 am

Re: Looking for a disassembler (68030+68882).

Post by ari.tao » Tue May 05, 2020 11:56 pm

Don´t know if it might help.
Don´t ask me, was done long ago...
Attachments
DISASS.ZIP
(32.53 KiB) Downloaded 32 times
Falcon, TT & some more

User avatar
thorsten.otto
Posts: 81
Joined: Mon Nov 04, 2019 2:20 am

Re: Looking for a disassembler (68030+68882).

Post by thorsten.otto » Wed May 06, 2020 12:24 am

If using linux, or windows+cygwin, you can try objdump -d (objdump is part of binutils)

If all else fails, and you can send the ROM, i can also offer to feed it through some local tool that i originally used to disassemble the TOS ROMs. Output of this will look like

Code: Select all

[00000030] 46fc 2700                 move.w     #$2700,sr
[00000034] 31fc 0100 8606            move.w     #$0100,($FFFF8606).w
[0000003a] 31fc 0000 8606            move.w     #$0000,($FFFF8606).w
[00000040] 4e70                      reset
[00000042] 0cb9 fa52 235f 00fa 0000  cmpi.l     #$FA52235F,$00FA0000
[0000004c] 660a                      bne.s      $00000058
[0000004e] 4dfa 0008                 lea.l      $00000058(pc),a6
[00000052] 4ef9 00fa 0004            jmp        $00FA0004
[00000058] 203c 0000 0808            move.l     #$00000808,d0
[0000005e] 4e7b 0002                 movec      d0,cacr ; 68020+ only
[00000062] 7000                      moveq.l    #0,d0
[00000064] 4e7b 0801                 movec      d0,vbr ; 68020+ only
[00000068] f039 4000 00e3 6014       pmove.l    $00E36014,tc
[00000070] f039 0800 00e3 6014       pmove.l    $00E36014,tt0
[00000078] f039 0c00 00e3 6014       pmove.l    $00E36014,tt1
[00000080] f379 00e3 6014            frestore   $00E36014
If you know the address where that ROM is actually mapped, this can also be taken into account:

Code: Select all

[00e00030] 46fc 2700                 move.w     #$2700,sr
[00e00034] 31fc 0100 8606            move.w     #$0100,($FFFF8606).w
[00e0003a] 31fc 0000 8606            move.w     #$0000,($FFFF8606).w
[00e00040] 4e70                      reset
[00e00042] 0cb9 fa52 235f 00fa 0000  cmpi.l     #$FA52235F,$00FA0000
[00e0004c] 660a                      bne.s      $00E00058
[00e0004e] 4dfa 0008                 lea.l      $00E00058(pc),a6
[00e00052] 4ef9 00fa 0004            jmp        $00FA0004
[00e00058] 203c 0000 0808            move.l     #$00000808,d0
[00e0005e] 4e7b 0002                 movec      d0,cacr ; 68020+ only
[00e00062] 7000                      moveq.l    #0,d0
[00e00064] 4e7b 0801                 movec      d0,vbr ; 68020+ only
[00e00068] f039 4000 00e3 6014       pmove.l    $00E36014,tc
[00e00070] f039 0800 00e3 6014       pmove.l    $00E36014,tt0
[00e00078] f039 0c00 00e3 6014       pmove.l    $00E36014,tt1
[00e00080] f379 00e3 6014            frestore   $00E36014

czietz
Posts: 305
Joined: Sun Jan 14, 2018 1:02 pm

Re: Looking for a disassembler (68030+68882).

Post by czietz » Wed May 06, 2020 6:32 am

Ghidra: https://ghidra-sre.org/. I use it regularly for Atari (and other architectures) software reverse-engineering. In particular, the included decompiler -- while not perfect -- gives you a high-level view of what the disassembled code is doing. Also, since the NSA released it about a year ago, there has been continuous development and a lot of third-party scripts and addons were created.

User avatar
Smonson
Trusted Guru
Trusted Guru
Posts: 562
Joined: Sat Oct 28, 2017 10:21 am
Location: Canberra, Australia
Contact:

Re: Looking for a disassembler (68030+68882).

Post by Smonson » Wed May 06, 2020 8:55 am

Personally, I use GNU binutils.

terriblefire
Moderator Team
Moderator Team
Posts: 3192
Joined: Mon Aug 28, 2017 10:56 pm
Location: Glasgow, UK
Contact:

Re: Looking for a disassembler (68030+68882).

Post by terriblefire » Wed May 06, 2020 9:27 am

I use Ghidra. Will also translate to C for you.
———
I get cranky when asked to repeat myself.

stephen_usher
Trusted Guru
Trusted Guru
Posts: 666
Joined: Mon Nov 13, 2017 7:19 pm
Location: Oxford, UK.
Contact:

Re: Looking for a disassembler (68030+68882).

Post by stephen_usher » Wed May 06, 2020 10:01 am

Hmm... Interesting. Thanks all.

I think I have enough information from the MAME emulation to get the ROM base address (though this changes in the code after the MMU is initialised and the ROM remapped, it seems). The machine in a Sun 3/80, the only 69030 based workstation they built. The chip which has died is a VLSI custom one labelled "DECODE1" which amongst other things controls access to the serial ports meaning that you can't even get diag information from the machine.

I'll have a look at Ghidra.
Intro retro computers since before they were retro...
ZX81->Spectrum->Memotech MTX->Sinclair QL->520STM->BBC Micro->TT030->PCs & Sun Workstations.
Added code to the MiNT kernel (still there the last time I checked) + put together MiNTOS.
Collection now with added Macs, Amigas, Suns and Acorns.

stephen_usher
Trusted Guru
Trusted Guru
Posts: 666
Joined: Mon Nov 13, 2017 7:19 pm
Location: Oxford, UK.
Contact:

Re: Looking for a disassembler (68030+68882).

Post by stephen_usher » Wed May 06, 2020 1:46 pm

Hmm.. Ghidra's having "issues" with the ROM image and translating less than m68kdis, but it is managing to show some of the call chains... but then it's finding quite a few "unsupported instructions". Hmmm.
Intro retro computers since before they were retro...
ZX81->Spectrum->Memotech MTX->Sinclair QL->520STM->BBC Micro->TT030->PCs & Sun Workstations.
Added code to the MiNT kernel (still there the last time I checked) + put together MiNTOS.
Collection now with added Macs, Amigas, Suns and Acorns.

User avatar
mrbombermillzy
Posts: 121
Joined: Sun Jun 03, 2018 7:37 pm

Re: Looking for a disassembler (68030+68882).

Post by mrbombermillzy » Wed May 06, 2020 2:08 pm

Seriously, try IdaPro. You may find it more to your liking.

Post Reply

Return to “CHAT FORUM”