Psion MC400 ROM dump & emulation development

Shortly after writing this post in Sep 2021 I took the plunge, disassembled the MC400, de-soldered the flash ROM chips and imaged them using the trusty TL866. Poking around in either chip’s binary image didn’t reveal any recognisable strings so I left them at that for a while… until some time later my subconscious dredged up a random factoid I must’ve read in the Psion HDK some months before; “ASIC1 is always in 16-bit mode in the MC400<lightbulb on>

not covered in the “Operating Manual”…

The two 8-bit flash chips that I had imaged must share the address bus and provide high 8-bits and low 8 bits to the 16-bit data bus… I interleaved alternate bytes from each image into one blob and lo and behold I had an image of the ROM! (the “interleave” utility I used to do this is here – https://github.com/drojaazu/interleave ). Suddenly the ROM image makes a lot more sense – recognisable strings and the top 16 Bytes contain classic 8086 reset vector/bootstrap code that jumps to an address and also contains the date in ASCII when the image was built (30 36 30 38 39 32 = 060892) and the Hex Bytes that correspond to 2.60F (0F 26) of the machine release/version yay!)

0003fff0 ea 00 00 00 c0 00 30 36 30 38 39 32 0f 26 de 60 |......060892.&.`|
00040000

Armed with this ROM image I posted on a couple of forums lamenting over the lack of an MC400 emulator, and a response lead me to one of the MAME developers on the stardot fourms… and within just a few hours of sharing the ROM & links to SDK/HDK the boot splash screen was posted 🙂

Psion MC400 post-boot screen – Hello world!

But then we hit a brick wall – without documentation of all the IO ports realised in the 2 custom ASICs (ASIC1 & ASIC2) things are held up. But, some of the include files in the SDK detail some of the register names in ASIC2’s address space…

SIBO architecture
MC400 main board – CPU, ASICS…

Interestingly the (DOS-based) Psion SIBO SDK uses a version of the MC GUI environment as its debugger (SDBG.EXE):

(very badly) stitched together original (dosbox) white-on-black and inverted version of the same SDBG.EXE screenshot

Some clues to timer and interrupt controller function were found in the SDK code examples and some more progress was made… voila:

MC400 system screen emulated…

Lacking any of the system apps though, so next steps I guess are emulating an SSD with the app files on it?

The good thing is that the MC shares a similar architecture with the original Psion Series 3 and the HC (“Handheld Computer”) so with some modification (and ROMs!) this work should allow those machines to be emulated in MAME as well.

SIBO graveyard – MC400, Series 3 and Series 3a in various states of repair….
Series 3 mainboard – same NEC30H , ASIC1 & ASIC2 as the MC
Will the MC ever join the family of emulated SIBO/EPOC machines?
Tux makes it to the MC400 😀

Published by zedstarr

Chilled out human being, doing techy stuff.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: