[NTLK] Can the Newton's ARM processor ever be upgraded?

Matthias Melcher m.melcher at robowerk.de
Sun Nov 30 06:05:03 PST 2025



> On 30. Nov 2025, at 04:26, David Arnold <davida at pobox.com> wrote:
> 
>> On 30 Nov 2025, at 11:12, Matthias Melcher <m.melcher at robowerk.de> wrote:
> 
>> 
>> Oh, and  Einstein does run on an iPhone. It's just not very efficient because it is an emulation.
> 
> But … given Einstein is a REx that emulates all the peripherals of an MP2K, we have it as an example of a “HAL” that could serve as a template for adapting vanilla NewtonOS to a new platform (such as a Raspberry Pi or similar).
> 
> IIUC, this was the original purpose of the REx.
> 
> So … using a well-documented/understood target, it’d be approximately a similar order of magnitude of work to writing Einstein, with the bonus of having Einstein as an example, and the penalty of dealing with real hardware not virtual.
> 
> Or am I misunderstanding something?


Yes, you got it exactly right. A lot of resources can be replaced with drivers that are stored in the REx, and that's what makes Einstein possible in the way it was written.

The ROM contains an entire operating system plus graphical desktop, a bytecode interpreter, a compiler, a database system (Soups), HWR, and a NewtonScript environment on top of that. It's originally written in C++, but we have only the ARM32 assembly. Apple left the sybolic information in the developer ROM files (not their REx though), so we can see a lot of what is going on internally.

Much of that is portable. But ARM32 code does not "just run" on other ARM cpus. There are quite big differences between CPUs, even between ARM32 generations. 

The core of the OS is written in assembly directly and handles the MMU, interrupts, and task switching. This is all highly specific code for the CPU and would have to be adapted.

The SA-110 uses the ARMv4 instruction set which is a bit of the lowest common denominator, but things like task switching affects registers directly, and those change with instruction sets. 

The SA-110 has no floating point instructions and uses an emulation based on illegal command traps. It's unlikely this can just be copied to another ARM32 CPU and run.

Lastly, NewtonOS is written in big endian mode. All modern CPUs run in little endian mode, and even though ARM CPUs are still bi-modal, periphery may not be so easily switchable. Switching the endianness of the ROM is only possible if we know how each byte in the ROM is accessed (we would have to flip instructions and 32 bit integers, flip and swap 16 bit integers, flip and not swap UTF-16 strings, and leave ASCII strings alone, but not FourCC codes that look like ASCII, but are not).

That's for ARM32. If we want to run on a modern 64 bit CPU, all the above is obsolete, and we would have to rebuild from scratch.

There are projects out there that rewrote the original C/C++ code of entire games. So it is not impossible for NewtonOS, just highly unlikely: https://www.youtube.com/watch?v=gthm-0Av93Q .


More information about the NewtonTalk mailing list