javavm
Taurus JavaVM Project Diary
This page gives a short history of the the virtual machine project:

This page badly needs updating!
21st May 2000
Finally aquired an S5, and an S5 alpha tester (Matt Kasdorf) and started to test on a real S5. The bad news is that real S5s aren't like the emulator! Using stderr (as fd 2) seems to cause a KERN-EXEC 3, which is not good. Also an absence of re-direct in the shell has hindered progress. We can however print "Hello World", but only if we use my cut down runtime classes.

18th December 1999
Ported dhrystones to Java so that I can benchmark the VM. We are approx. 1/10th the speed of the Symantec VM, which considering the unoptimised code is pretty good.

4th December 1999
The libraries shipped with the EPOC32 SDK do not support long (64-bit) arithmetic. These are dummied (with appropriate debug) to 32-bit routines. These are actually part of the compiler support libraries, not the EPOC OS. After a few changes to the filename generation code, we can finally run "Hello World" under the emulator. As I am lacking a real S5, I can't test further.

28th November 1999
Started work on Psion Series 5 port, having finally got hold of the EPOC32 SDK. Lots of compile errors - this could take a while.

27th November 1999
Ported VM to Cygwin32 to aid testing builds destined for Linux. Need to read the copyright carefully to see what the restrictions are on making the binaries available. Have also started putting some work into a proper test suite to verify the VM. We now have a formal bug list too!

28th October 1999
Ported the VM to Linux-i386 for fun. Am getting into Linux and the port was incredibly easy. This port is being made available, and it uses the full 1.02 source code!

21st October 1999
SIBO port is looking good. Have solved a lot of problems with running as an installable application and have some basic graphics support throught the Taurus OPL Library. Have also done some tricks to reduce memory usage.

13th September 1999
Work had been getting in the way of development, but I have finally got back to doing some more on the SIBO port. Progressing well with the port running over 60% of it's intended instruction set. Have come up with a few bits of cunning which improve the VM overall and allow SIBO to support the class type checking (NT4 used string libraries heavily). The SIBO version can now run the proper java.lang.String and StringBuffer classes and merily concatenates strings. Classes seem to occupy a lot of memory though - my simple test program needs 40K of working memory to run!

8th May 1999
Ported the linker code and can now load and run several classfiles. After much poking around writing a SIBO string library, we can now link enough together to execute a real System.out.println(). Don't laugh, this involves initialising static fields, creating objects and coping with virtual methods! Am so pleased with progress that I have decided to make this version (0.10) available as a download.

26th April 1999
SIBO port is progressing well. It ran its first program a few days ago and I seem to be finding some time to get some work done on it. We are limited to loading a single class file at the moment - no linker yet! BCC is holding up well, and thanks to Robert de Bath, I can build SIBO img's. libc didn't fair so well in the end, so I am doing without it and using EPOC directly. Am building up slowly, but memory is already starting to get tight. I have a couple of plans to reduce memory consumption: i) run class files directly from disk; ii) reduce error messages to numbers (it's amazing how much space string constants take up). As yet I have no idea whether these will work...

24th March 1999
Have started work on getting the VM ported to SIBO. The first thing this will require is a C compiler, which seems rather hard to get hold of. Have adopted the Psion-c compiler, bcc, and am currently making good progress to get it running under NT4. A few problems with libc.a are holding back development.

27th January 1999
Have been rather busy travelling for my day job, so progress has slowed. Managed to put some effort into starting a test suite, which showed up a few memory errors when doing complex string handling. Have managed to fix most of these.

28th October 1998
Found a bug in the native implementation of java.lang.Object.newInstance() - we fail to call the default constructor on the newly created object! This has been resulting in a NullPointerException when loading LocaleElements_en.class.

8th October 1998
Fixed one or two minor bugs in the virtual instructions - mainly the most recently added stuff for performing long shifts.

17th August 1998
Did some major implementation of instructions, native methods and exceptions in order to support 'javac'. Amazing progress now means that 'javac' runs, but a logic error somewhere means we generate errors for legitimate code!!! :-(

28th July 1998
Major strategy rethink for the disassembler - we now use table which is common to both the command line VM and the graphical debugger - consistency at last...

12th April 1998
Yeehah! We can now print "Hello World!". You wouldn't beleive the number of classes it takes. We're still running with my modified java classes, we die most horribly with the JDK originals. I'm now working my way up to using the full JDK classes.zip.

9th March 1998
Debugger shaping up nicely. Split out the native IO functions so that we can write to either stdout or to the output pane of the debugger.

27th February 1998
Early days. We now have a class loader which works and the engine and native interface are beginning to take shape. Can't execute very much though.