Hi,
You should have a message with links to MEGA with the IDA stuff etc.?
You've got the logic a bit wrong.
ALEC enables the I/Os.
The data lines are normally high, but pull low if one of the Pterms detects a "hit".
So if you scan through the address range, you should see a ton of 0xFF bytes, and 56 '0' bits scattered within that space.
Ahh, that probably explains it. lol
I thought something might be inverted somewhere.
I'm too used to Verilog, where you generally don't have inverted output pins unless you specifically code that.
I forgot that PALs / GALs often have Active-Low outputs.
I've just inverted the data bus on the Verilog, and it's now matching 100% with your 12360 binary.
With regard to the OS... it looks like it's been loaded at address 0x0. I bet that isn't the load address.
You need to know what address (in RAM) the boot ROM loads the OS into, and what address it starts executing from. If you give IDA that, it should get a long way into the disassembly.
I think it might be stopping because the load/exec addresses are wrong.
Yep, I'm just trying to disassemble what I can atm, then work out where it normally loads the executables in RAM.
I would imagine it loads the entire 2-4MB OS file(s) directly into RAM, as it does seem to point to routines in that range a lot.
I did have the OS file for my older Harriet mostly disassembled in IDA, but the older IDA did have some bugs and glitches.
So, I've started again with IDA 6.6 instead.
I have nearly 50% of the code done so far, but I'm having to do a Ctrl-U to go to the next Undefined code, then hit C to convert to ASM.
Most of the strings / data come before the routine of course, so I'm having to skip those manually too.
Our guy in Oz did a superb job of figuring out most of the "Harriet" memory map btw.
(hope this is OK to post?)...
HW devices :
CPU 68010
DMA Controller MC68450 MC68450
MFP MC68901 MC68901
SCSI Controller WD33C93A WD33C93A x2 (found one only)
2 Serial Ports + 8 I/O : MC68681 x2 MC68681 (found one only)
SRAM + clock M48T02 x2 M48T02
3 rotary encoders move.w 0xFA0000, d0
Optional Ethernet module is implemented on SCSI ID 6, with simple command
Mapping addrs :
0x000000 - 0x008000 ROM (32 KBytes)
0x000100 - 0x0003FF RAM
0x040000 - 0x0407FF NVRAM, default boot device
0x040800 - 0x040FFF NVRAM2
0x400000 RAM do be verified
0x7FD000 - … (seems used as RAM too : Input Console buffer)
0x7FE000 - 0x7FFFFF RAM (4 KBytes) Initialized/tested during init
0xF10000 - 0xF1001F : Serial Port MC68681 need To be verified (A0 = 1 for decoding)
0xF100F1 : write on Serial GPIO : LED 7 segments front display (‘0’ to ‘9’)
0xF20000 - 0xF2002F : MFP MC68901 (Serial Console)
0xF30000 - 0xF300FF : DMA Controller MC68450
0xF40000 - 0xF4003F : SCSI Controller WD93C33A
0xF60000 : Device with DMA transfer on 0xF60000 (DMA channel 2), 0xF60002 (DMA channel 3)
0xF60007 : linked with burst write at 0xFE0004,8,A @sub3C0A
F6 Memory Storage Board ?
0xF96000 :
one word write
0xFA0000 : 3x Rotary Hex Switch : Word value
0F00 => SW14
00F0 => SW15
000F => SW7
sw14 SCSI Controller ID (normally 7 by default)
sw7 BootID (0 DebugMonitor, F Boot from NVRam (Autoboot) else Printf “Autoboot From %d”, BootID)
0xFB0000 : Leds ? Write 1 byte : 0x00 (init only) 0x1F or 0xFF (word) ; start and end of scsi cmds
0xFB0001 : Read 12Bits (dip switch ?) used only in one place to index BootDeviceList
0xFD0000 - 0xFD1FFF : Security PAL @sub52DC
Security PAL store 2 flags, seems related to HW configuration/installation (like is a floppy drive present, serial number ….)
0xFE0000 : ? @sub2726
0xFE0004,8,A : Writing word burst cmd 1,3,5,7,0 to these addr @sub3E8C
0xFE device is a Floppy Controller ?
I have found a few routines in the OS file which process the serial numbers, but they also appear to JSR to routines in RAM.
Here's one example...
ROM:00070D50 loc_70D50: ; CODE XREF: ROM:00070D48j
ROM:00070D50 adda.w #$44,sp ; 'D'
ROM:00070D54 movem.l d0-a4,-(sp)
ROM:00070D58 lea -$A(a6),a1
ROM:00070D5C lea ($404100).l,a2
ROM:00070D62 lea ($403CF2).l,a3
ROM:00070D68 lea ($6362DE).l,a4
ROM:00070D6E moveq #$C,d2
ROM:00070D70 moveq #1,d5
ROM:00070D72 subq.w #2,sp
ROM:00070D74 pea -$4A(a6)
ROM:00070D78 jsr $4710E8 ; <- Hard-coded to a routine in RAM.
ROM:00070D7E addq.w #4,sp
ROM:00070D80 tst.b (sp)+
ROM:00070D82 bne.s loc_70DA0
ROM:00070D84 pea aSerialNumberIn ; "Serial number invalid"
ROM:00070D88 pea ($15).w
ROM:00070D8C move.l (sp),-(sp)
ROM:00070D8E jsr $403FA4
ROM:00070D94 adda.w d2,sp
ROM:00070D96 jsr (a2)
ROM:00070D98 jsr (a2)
ROM:00070D9A clr.b -(sp)
ROM:00070D9C jsr (a3)
ROM:00070D9E addq.w #2,sp
OzOnE.