[NTLK] A new ROM board
jake at allaboutjake.com
Tue Feb 22 04:30:13 PST 2022
Nicely Done. Can’t wait to get my hands on a couple of these!
From: NewtonTalk <newtontalk-bounces at newtontalk.net> on behalf of Matthias Melcher <m.melcher at robowerk.de>
Date: Tuesday, February 22, 2022 at 7:23 AM
To: newtontalk at newtontalk.net <newtontalk at newtontalk.net>
Subject: [NTLK] A new ROM board
I'd like to show off my latest project. As you all know, the Newton ROM can't be upgraded. It can patched to a certain degree, but some things will remain hardcoded. Modern devices can do firmware updates, so I want on the quest of allowing firmware updates for MP2x00 devices.
Here is the result:
I reverse-engineered the original ROM board quite a while ago and converted them into Eagle CAD schematics and layouts. I even had clones of the original ROM boards made, and they worked just fine by soldering original ROM chips back onto the board. So my layout was correct.
Now I replaced the ROM chips with Flash memory that can be reprogrammed a few thousand times. Thanks to JLCPCB, a Chinese circuit board manufacturer, creating the board is quite exciting: I imported the ROM board into their online software, deleted the ROMs and all traces, and then chose FLash chips from their page. Now, the fun part is, that all the chips they offer, they also solder directly onto the board for a minimal fee, so I don't have to.
Choosing the Flash chip was fun. I need 8MB for the ROM, but NewtonOS supports 16MB for additional apps. And hey, NewtonOS supports another 16MB on a second bank, so why not. Since we have a 32bit data bus, we need to use two 16bit chips, which is 32MBytes / 2 chips = 16MByte pre chip = 128MBits. Now for the curiosities of today chip market, 128MBit Flash no longer exists, 256MBit is at 60$ per chip insanely expensive, but 512MBit Flash chips are easily available for 2.50$ a piece.
So, LOL, I make the chip compatible by disabling 7/8ths of its capacity and still using only 1/4th of what remains.
Making the layout online is super easy. Just palce the chips and have the router help me draw the connections. One-click send, and two weeks later - yesterday - my package with 10 boards arrived in the mail.
All boards pass visual inspection. But will they work? Well, the memory is empty, so plugging them into the MessagePad like this will do nothing. But as a few of you may remember, I built a ROM board reader around an Arduino a few years back. After some digging, I found it, and I even found the source code that made the thing run.
I quickly slammed a few lines of code together to handle Flash instead of ROM, and yes, reading the ROM returns FFFF on all addresses, as expected. The command sequence to get the chip status? Works! This is a huge win. The address bus, data bus, and control bus work as expected. Now the sequence to write on word of data. Yes! It works! Add SD card support, read the ROM code from SD and copy it over to the Flash? Yes, that worked too. It took half the night, but I was able to copy the contents of the original ROM into the Flash memeory on my new card.
Which brings me to the last step, and the point, where you all have to suffer together with me: will the ROM work in the MessagePad? And sorry, I don't know yet. My MP refused to boot up this morning, still with the original ROM card. So until I have my MessagePad fixed, we will all have to be very patient.
Very, very patient... .
PS: among other things, flashing new ROMs can fix timer bugs, allow flashing the French ROM. Fix the time/date entry to the current century when booting, add up to 8MB (24MB?) of NewtonScript packages without using up any of the internal Flash space, change graphics, change sounds, change texts, add new words to the dictionary permanently, etc. etc. .
Any other suggestions?
More information about the NewtonTalk