[NTLK] A new ROM board

Matthias Melcher m.melcher at robowerk.de
Thu Feb 24 03:18:44 PST 2022


Thanks for all the encouraging replies.

The ROM Board Design is available here:

https://oshwlab.com/MatthiasM/original_0010_annotated

Basically anyone can download or forward the design to JLCPCB and they will manufacture the final board for you (minimum 5). However to initialise the board, you will need a stand-alone programmer. I will upload the PCB design for the programmer later, just in case. 

It makes no sense at the moment to sell these boards to end users. I do have a spare 8 boards and 8 programmers that I would give away to those who can either develop for the board, or want to offer the service to initially flash boards for end users. With the public design available, anyone can legally and easily have as many boards manufactured as they wish. All I ask is that the boards are sold at cost and not for profit. The programmers need an Arduino Due, an SD card, and a PC/Mac to run. Flashing existing ROM files is super easy.


This is how the board works:

NewtonOS supports two banks of memory of 16MB each. The original ROM uses only 8MB. We need a 32 bit data bus, but chips are only available with 16 bits, so we have two chips in parallel, but only the lower half of them is used. The control signals to select bank 0 (ROM) and bank 1 (ROM or Flash) are decoded to generate a single ~CS and a matching Address line (untested for the second bank). Read and write signals are available on the connector, but are not really required to read a ROM. Luckily, the Read signal *is* generated by the MessagePad hardware, even though the documentation states, that it is switched off during the boot process. It's not clear yet if the Write signal is generated.

With half of the Flash memory unused, a bank switching system would be nice, so we could switch between the original ROM and an experimental ROM, for example. I have not implemented that yet in hardware, but I am open to suggestions. I am not too keen on adding external switches, but there should be a fallback if flashing the ROM inside the machine should ever fail. It seems that NewtonOS will erase all apps and data whenever the ROM (checksum?) changes, so It may not be very useful to switch banks until we find out how to disable this feature.


Features for end users:

Until I find a way to make the boards flashable inside the machine, end users could send me a ROM file, I can program the card, and send the card to you. If we have more stand-alone programmers available around the world, other devs can flash cards for end users as well, so we can reduce shipping costs.

If flashing in situ works, users will be able to add up to 8MB of packages (possibly 24MB) to their machines with an additional desktop app. 

If everything works out, users will be able to reflash their entire NewtonOS. There is a slight risk to brick the Newton when interrupting such a process, but inserting the original ROM will always bring the machine back, and reflashing the new ROM externally will still be possible.


Features for the Pro:

With the programmer hardware, anything can be flashed into the card at any point. I appreciate suggestions for page switching and other extensions that we could put into a V2 of the board. Since production runs cost pretty much the same, no matter if we make 5 or 50 boards (about 10 Euros per board plus shipping, tax, and import, which doubles the cost in Germany), it would be easily possible to include improvements into the next design. There is even a small chance that the second bank can be recognised and used as an additional 16MB of internal Flash by the NewtonOS. But enabling this will require quite some reverse engineering and possibly different flash chips on the board.


This is my plan for the next weeks (not necessarily in that order):

 - improve the software of the stand-alone programmer to copy a ROM from SD card into the Flash much faster (this is the hardware intense solution), and assemble a few more of them to give them away

 - test if I can write the Flash board while it is plugged into the Newton. The Newton does not expect Flash memory in the ROM slot. It's not clear if it even generates the required "write" signal. The docs imply, that the signal exists, but can be switched on and off, but doesn't mention how.

 - if that works, write an app that takes a ROM stored in an SD card, read it through a PCMCIA adapter, and reprogram the Flash (this would be the solution with publicly available hardware). The problem here is that I don't know how to read through PCMCIA, but Paul's SD Card driver will hopefully reveal that. Or maybe just read a PCMCIA Linear card directly.

 - if that works, I will try to write a tiny emergency OS that boots the machine, enables the screen, and reads command sequences and ROM data through the serial port (this would be the minimal hardware solution, as all you need is a serial cable and a PC/Mac). This requires programming undocumented hardware. I could really use some help in getting screen and serial port going.

 - there is a last option for flashing the ROM that may work over a Wifi card by flashing the ROM twice (first the upper half, then copying everything to the lower half, then programming the upper half again). Maybe that is the beast approach after all?

Suggestions and help are always appreciated.

 - Matthias



More information about the NewtonTalk mailing list