Archive for the ‘OpenZXRom’ Category

OpenZXRom 2008-01-07 (the PRINTworks)

Monday, January 7th, 2008

[Skool Daze: "700 lines ERIC - Don't do it again..."]It seems like only last week that… hmm, yes, well. After the last release in the closing hours of 2007, I was all set to put OpenZXRom aside for a while. But then Philip Kendall and a merry band of anonymous people did phenomenal work on the OpenZXRom wiki page, documenting a mountain of games that did and didn’t work – and the list of bug reports was a carrot dangling in front of me and whispering “fix me. fiiiiix meeeee.” And I don’t even like carrots.

So, this is the result. Biggest news this time is the arrival of the PRINT statement – yes, it’s been long overdue, but now OpenZXRom can run that legendary masterwork: 10 PRINT “the c64 was crap” / 20 GO TO 10. (Actually, it briefly works and then dies in a burst of attribute clash, because I haven’t bothered to test for running off the bottom of the screen yet. Still, eh?) We’ve also got FLASH, BRIGHT, PAUSE, and beefed-up keyboard scanning for the benefit of games that piggyback on the interrupt routines. Despite the “let’s make a bunch of games work” focus of this release, it’s actually only made modest progress – for all too many of them, fixing the simple bugs just replaces them with progressively more obscure ones. But it’s still fair to bask in the successes of the 15% or so that do work now, including Skool Daze.

Download OpenZXRom 2008-01-07

OpenZXRom 2007-12-31 (Here be dragons)

Monday, December 31st, 2007

[Screenshot: Paperboy, with 'Here be dragons: 0x03B5' error] Just sneaking in at the end of the year as if it was releasing to an actual deadline or something, OpenZXRom 2007-12-31 brings eagerly awaited support for the LOAD “” command. This means that it can now handle all the necessary parts of a ‘typical’ Basic loader – CLEAR, LOAD, RANDOMIZE USR – and make a good honest attempt at loading real commercial games from tape. Sometimes it even works: Manic Miner! Egghead 4! Fat Worm Blows A Sparky! They all load and run successfully, exactly the way they’re supposed to. No ifs, no buts.

Even for the programs that do fall over – still the majority – this release marks a turning point. At this stage, it makes sense to dig around and investigate why things are failing and what needs to be added next, rather than just shrugging and saying “well, what do you expect… of course it breaks right now, it’s still in the stupidly early stages”. To that end, the throbbing yellow and magenta border of death has been furnished with new diagnostic error messages like the one in the screenshot. In this example, Paperboy loads up correctly and gets as far as the main menu, but throws a “Here be dragons” error on starting the game – meaning that it’s jumped to an as-yet uncharted location in the ROM. It turns out that 0x03B5 is the address of the ‘beeper’ routine, hinting that that might be a useful addition for a future release…

Download OpenZXRom 2007-12-31

Update: There’s now a page on the ZX Spectrum Technical Info Wikia gathering a chart of OpenZXRom successes and failures.

OpenZXRom 2007-10-15 (Maths and minigames)

Tuesday, October 16th, 2007

[Screenshot: Play Ball! by Evilpaul] This is Play Ball! by EvilPaul, a 4K game from the 2003 Minigame competition. It has the distinction of being the first ever real-world Spectrum program to successfully load and run on OpenZXRom from a tape file. That’s due in no small part to the fact that the Basic portion consists of a single RANDOMIZE USR call followed by a REM, but still, that’s a worthy milestone for the project after a 16 month hiatus, wouldn’t you say?

We haven’t cut any corners in pursuit of that goal either – some crucial pieces of plumbing have been added in this release. The first dabblings into floating point arithmetic are in place, including the foundations for the stack-based mini-language that will be the heart of all our mathematical backflips later on. On the Basic language front we’ve added PEEK, POKE, IN, OUT, USR and PLOT to our repertoire. The big news, though, is that it can now handle simple string expressions, which means that LOAD “foo” CODE is just around the corner – and then that’s the final piece of the Classic Spectrum Basic Loader implemented, which should get a good few hundred games up and running.

There’s been a bit of prettying up too, both inside and outside – the code has been reshuffled into multiple files (because rom.asm eventually grew big enough to be annoying), and the system font has received some much needed care and attention courtesy of Paul van der Laan and his Clairsys font.

Download OpenZXRom 2007-10-15

Bleeding-edge seat-of-the-pants types can follow the OpenZXRom subversion repository for the latest updates.

OpenZXRom 2006-06-18 (back to BASICs…)

Wednesday, June 21st, 2006

Since succeeding at loading Basic programs into memory, I’ve been forging ahead at attempting to make sense of them. We now have an interpreter that can deal with a (very) modest subset of Sinclair Basic: INK, PAPER, BORDER, NEW, CLS, REM, GO TO, RUN, STOP, RANDOMIZE and CLEAR. As a teensy drawback, the only numbers it can handle right now are literal integers – there’s code in there that can parse almost any numeric expression, but nothing to actually do the maths.

Download OpenZXRom 2006-06-18

OpenZXRom 2006-06-03 (Houston, we have loading stripes!)

Saturday, June 3rd, 2006

OpenZXRom now has the all-important tape loading routine in place. There’s quite a lot involved behind the scenes – listening for signal edges, identifying the moment when the leader tone turns into data, keeping track of checksums, picking apart the header block – but it’s all doing it’s job, without a hint of Sinclair code to be found.

It doesn’t do anything after loading the file except sit around and sulk (although machine code programs that borrow the loader routine should be more enlightening) but the fact that it’s starting to do stuff that actually looks and feels like the original ZX ROM is occasion enough to put out a new release, I reckon.

Download OpenZXRom 2006-06-03