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:
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 ...
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?
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.
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:
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 ;-)
this is my current working system:
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!
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.
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!
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).
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
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 firstname.lastname@example.org some mail.
|$Id: index.html,v 1.15 2000/09/25 13:27:44 arnold Exp $||Web space generously donated by|