The Jolly Roger-Newton Flag
The (temporary) GNUton Logo

defying graffiti: the making of GNUton

motivation | software | hardware | status | screenshots | download | contacts


the motivations for this work are varied. initially, the goal was to have an emulator as part of a free development environment. even after Newton, Inc released the toolset, an emulator would be useful as a low-cost means of development, as a testing environment, to enable lower-level debugging, etc.

of course, the greater scheme was always a freeware pda. however, it was not until Apple dropped development of the Newton (just as it was reaching a widely useful state), that this became a pressing need.

for the future, i'd hope that having a system where the hardware is both off the shelf and not restricted to a single processor and form-factor, and the software is freely available, will enable a growth a the platform not seen under Apple. smaller systems, larger systems, Java VM extensions, C programming API, multi-threaded NewtonScript, novel UI concepts -- all are possible.

in the short term: i want something to replace my MessagePad when it's time to upgrade. the goal is to get Newton OS 2.1, subject to suitable hardware, running as a free system.


current work is on four fronts:

virtual machine
progressing, but really waiting for the package loader to have some code to execute. all these easy instructions are done, and the more complex are awaiting some heavy bytecode disassembly to see what the real semantics are.

this is based on two documents, the first now largely redundant since Apple released the bytecode and virtual machine specifications.

i've heard rumours (well, Walter Smith said it, so it's fairly substantiated ;-) that there were changes/extensions to the VM for OS 2.x. we'll need documentation for these at some point, so if you know anything, don't hesitate to share ...

package loader
decoding the package format and creating the application in the emulator memory. again, this is derived from the Apple-published specifications released by Newton Inc. loading the package requires the packages soup ...

the decoder for the package format is mostly done, except for pointers which are not being added to a pointer table, and looked up if they have already been decoded. once this is done, we'll be loading packages.

i just need to figure out exactly what SuckPackageFromBinary does now (time to write a little app for the mp2k) so i can reimplement it properly (along with freezing, thawing and package removal). anyone got any clues?

stores and soups
on the MessagePad, the limitations of memory require that stores put a lot of effort into compressing things, and then paging them into dynamic RAM during use. for the moment, i'm not worrying about this. all we need for now is working storage.

the current boot process is identifying devices configured that are possible store hosts, and probing for formatted stores. unformatted devices (like a new file) are queued for a notification once the event loop is up and running. if you give the ok, then the stores are mounted.

some work is still needed on the actual store implementation, but it's downhill from here.

view system
support for the primitive view classes, creation of the system messages and redevelopment of the standard protos.

because i think that the biggest difference between the possible host hardware is the displays, what i plan to do is implement both the drawing primitives, and the C-level views in the display drivers. that way, we can have a Tk driver, an MFC driver, a Linux SVGAlib driver, etc.

otherwise, the view system consists of the event loop to handle NewtonScript message sending. GnutOS will support both Python and NewtonScript objects, with some chance for other formats (C objects compiled for various processors) later on.

the big item missing here is obviously the handwriting recognition. i'm not intending to do this, but i hope that one or another of the hwr research projects around the place can cough up something that will plug in satisfactorily.

the initial goal is to get a minimal "hello world" package to load an execute, using only the protoApp and protoTextButton protos. this will demonstrate the basic functionality and requires the ability to load and activate packages. not happening yet ...

all the current code is written in python to speed development. the VM is the first candidate for a rewrite in C, probably followed by the view system.


hardware is an issue: we need to use something that is freely available, an open architecture, and preferably better than the MessagePad 2100 ;-)

now that i've stopped dreaming (sorry) the actual plans are to use something supporting a minimal linux kernel, with just the essential drivers (video, digitiser, serial, ethernet, ... ?). why linux? because it is free, widely ported, quite small and i like it ;-)

potential hosts are varied, but include x86, 68k, MIPS and ARM boxes from a variety of vendors. some that i have been considering are:

Site for various Unix flavours running on handhelds, with an emphasis on Compaq's very nice iPaq (derived from the Itsy below) and Samsung's Yopy.

Linux CE
Check these guys out -- they're making great progress on porting the Linux kernel to a variety of CE-based handhelds. Both MIPS and SH3/4-based devices are booting the basic kernel and entering a reduced userland environment.

uClinux and the uCsimm
this is a standard 30pin SIMM module, with what is essentially the guts of a palm pilot on it. ie. a Motorola DragonBall processor, 2M Flash, 8M DRAM, onboard ethernet, serial, etc.

they have a reduced Linux kernel running, with enough space to run a fair amount of code. don't know if we'll fit everything on there yet, but there's always the option of more Flash (ie. 4M on-board, or a secondary card.

i've ordered one of these. i have plans to hack one of my old OMPs, rip out the current motherboard and slot this in. i will need a second board to drive the digitiser, interface to the IR, do some power management, etc, but ... even if it just runs off the wall power, it'd be kinda cute ;-)

they guys are doing great stuff, building an open-hardware PDA platform using the StrongARM. if this comes off (ie. i can get one), this is my dream target.

Toshiba Libretto
a real PC, fits on your palm. the newer (read, more expensive) models even last something like 3 or 4 hours on a battery charge. doh! still ... my boss had one he got sick of, so it's sitting on my desk now ;-)

this is my current working system:

WinCE 2.0 devices
Philips Nino, NEC MobilePro, Everex, Casio A10, ...

The good thing about these is that they are plentiful, relatively cheap (compared to the rugged Wintel handhelds), and there's now an early port of Python available!

Casio PA-2400
about the same size as the MessagePad, no keyboard, runs WinCE (too bad if you're left handed though)

I kinda like the idea of this one -- it's almost like having a MessagePad again. Does anyone know if you can get a clean screen in WinCE 2.0? like, no start bar, window titles, etc? perhaps a games mode? (i know it can be done, but i'm not sure there's a way an application can switch it).

then again, i talked to the people at eWorld in sydney, and they said that the hardware is pretty poor quality, especially when compared to the mp2k series. hmmm.

Psion Series 5
has a Linux port. Of course it has a keyboard too ... :-(

Digital's Itsy
now this is looking better -- back to the StrongARM, and the same size as the Pilot! And it already runs Linux too! hmmm ...

initial development was on a 486dx100 with 8M RAM, VGA and a Wacom PenPartner digitiser tablet all running under Linux and SVGAlib. current work is focussed on a Toshiba Libretto 100CT, and a Vadem Clio running a very early Linux port!

screen shots

There's not much to see yet, but ... just to whet your appetite, here's a look at the current screen, and the boot log messages as well.

When it boots, it checks for available store devices. In this case, the config file specifies that a disc file be made available, but since it doesn't exist, the GNUton asks whether you'd like to initialise it as a store (much as if you'd put a blank PC Card into a MessagePad).

[screen shoot]


Warning ...

This does not work! That is, while it should run, it doesn't do anything yet. It's a snapshot of the code which you're welcome to look at, and more welcome to fix problems with, but it won't actually do anything. You have been warned!

Prerequisites for running this snapshot are

Unix (I've used Linux 2.x, Solaris 2.x and Digital Unix 4.0)

Windows 95/NT (thanks to Jack Skoda for testing this)

MacOS (no one has tested this yet -- please let me know!)

It's being developed on my Linux box, and I sometimes test it on Solaris and Digital Unix at work. Jack Skoda (thanks Jack!) reports that it works fine on Win NT.

I'd like to get it running on the Mac as well (since I suspect a lot of Newton people have Macs), so if you have a Macintosh and succeed in getting it going, please let me know. I suspect that bsddb will be a problem -- if you get the rest going, send me some mail and i'll try to come up with an alternative.

Download the current (or previous) versions: gnuton-0.1.7


for further information, and particularly if you're interested in helping the development, send some mail.

$Id: index.html,v 1.15 2000/09/25 13:27:44 arnold Exp $
Web space generously donated by SourceForge Logo