Graphical User Environment for the ZX Spectrum
ZXDesk is in a very early stage right now, and missing almost all of its planned functionality.
However it does have enough innards to allow you to browse and load TAP files from a statically configured list of examples – and that is the primary function of this release.
To be completely clear:
ZXDesk PoC1 has been released at this time under the label of “Proof of Concept” and is presented to you in accordance with that expectation in mind.
Caveat Emptor. Your Milage May Vary. That means that if this eats the contents of you SD card and turns your AY-3-8912 into MOS-6581 then you brought it on yourself. Blame it on the cat.
The concept of ZXDesk is simple; a graphical user interface designed around the new generation of mass storage adapters that have been released in the last few years. Based upon progressive enhancement (i.e. it will do more stuff the more powerful your speccy) and dating back as far as Classic (48k, currently!) it tries to cover almost any ‘ZX Spectrum class’ computer with an ESXDOS 0.8.6 (or higher?) compatible configuration.
I say “almost any” because while I am trying to test it on as many as I can I obviously (sadly?) don’t own one of every Sinclair ZX Spectrum ever made; which is probably a good thing — there must be a level where I can pushed things a bit too far for even my wife to tolerate! Let alone all the clones to consider – both authorised like Timex and Investrónica, and otherwise like the TK, Pentagon and Leningrad lines. So, while much of the actual testing takes place on real hardware including both FPGA based modern remakes and original 80s classics machine I can’t cover all the bases… anyway I don’t even own any Russian Speccy Species at all… yet… 😉
So, technically everything is recent, because everything is new, much of it contrived for this demo, but almost all of it is wrong.
Now that PoC1 is finished I’ve already branched the git repo and started working on .ini file based config management, and a few more quality of life issues, like more input methods, etc… so there’s not really a lot to cover here right now.
Most of these aren’t bugs, they’re just things I’ve not written yet, or things I’ve stubbed out of this release to ensure the PoC ran on the widest range of systems possible. Here is a summary of some of the more obvious ones, and if there are any more details they can be found on the issue tracker:
- No bounds checking.
- i.e. You can easily move the mouse pointer outside the screen. And if you click the “mouse pointer” outside the screen it’ll almost certainly crash or reset your speccy… probably… maybe…
- The “mouse pointer” isn’t a mouse.
- Input is restricted to ONLY a Kempston joystick.
- Some games still run out of memory.
- Blizzard 128k for example, included in this demo – feel free to swap the .TAP files to test other games and improve our supported list!
- The debounce rarely works.
- Accidental double-clicks, about window closes itself, etc.
- Much of the drawing routine isn’t optimised, and thus still very slow.
- For an expected example of anticipated screen draw speeds see the initial desktop draw, and the about screen, items like group opening are still very much not finished and the speed reflects that.
- Layout is hardcoded, and not very good, this will change.
- I’ve got no idea what it does when you boot it from the second mass storage interface.
- If you try that and suddenly your cat turns evil don’t blame me, it was your own fault. Anyway, chances are the cat was always evil.
- Sometimes you get the wrong group opening
- Sometimes you click on the desktop and a group opens at random
- Sometimes it snows in April
Cardboard Box (full o’ Crap that doesn’t fit anywhere else)
There’s loads of design decisions in ZXDesk that have been shortcut for the purpose of this Proof of Concept.
Don’t like the layout? Don’t worry, it’s not final.
Don’t like the spacing? Don’t worry, it’s not final.
Don’t like the way groups fill a whole screen? Don’t worry, it’s not final.
Don’t like the colours? Don’t worry it’s not final.
In-fact, you should probably worry less all around, especially about ZXDesk – it sounds like you need to chill out, it’ll do you all kinds of good… 😉
Saying that… if you do have something you think you’ve found that’s an honest bug worth reporting please head over to our issue tracker!
Anyway, so little of this is even complete in my head yet, and I want to make it as versatile and as useful as I can while sticking to my core goals of compatibility and flexibility. That means the only thing you see now that you can be sure exists in the next release is “loading tap files” and “it’s got a pointer”. Probably.
Large Thank-You’s (& Credits)
In no specific order…
The Wife – for being the wife. She lets me talk about Speccy stuff when we go out to dinner, or to the pub, or on holiday. She rocks.
Mike Cottrell – for the devkit. His motivation, encouragement and mutual retro-lust spurred me into finishing PoC1. This first release is named in his honour.
Richard Spencer – for the external SD drives. You probably saved me from killing my devkit card slot, and definitely let me carry on deving when my bruised spine stopped me from moving! And for the ZX ProPad, my high-scores thank you…
Antonio Villena – for getting me setting me set up with the Uno. I probably asked way too many noob questions, and mangled a lot of Spanish along the way. I can perfect my Pac-Man foo now too.
Allan Albright – for all your API help. Without your helpful instructions, experimental overnight builds, and boundless knowledge almost none of this would be a reality. Plus, you know, for Z88DK, obviously!
Ben Versteeg – for the DivMMC EnJOY! Pro One. It was that which made me start experimenting in how far I could push the Spectrum, and we’ve not anywhere near the end yet. Continued innovation like this with new hardware keeps me thinking of new ways to push ZXDesk.
Tim Gilberts – for infinite patience. You always seem to be there when I’m spouting my hair-brained ideas, always listening and your endless offers of example code constantly enthuse me to be a better dev. We need more people like you.
My SD Card Saviours – the anonymous and the famous. Thanks, stupid little things like this, arriving home to a literal pile of tiny SD cards warmed my heart and made me even keener to get back to the code-face. You all rock.
ZX Spectrum Next Group – community, Community, COMMUNITY. It’s been great fun sharing the development of this wee toy with you all, and I look forward to your input, and sharing the next output with you all. Soon!
D. Rimron-Soutter – that’s me. I wrote this, you all helped, inspired, maybe even steered a little, but fundamentally the buck stops here when it turns your Toastrack into a TRS80. Plus, if you don’t like this, you can always go back to the Tape Loader.
The forgotten ones – I am sorry. But I am also extra thankful to you because I have been keeping notes of who you are and who to thank for months and months now, and when it finally came to writing this I lost them all. I suck, lots – so why not email me and remind me of how much I suck, and I can thank you in the next release…
With a plan to releasing libraries and headers to let you integrate with ZXDesk I’m already leveraging the power of GitHub, so you can find the issue tracker over there.
Extract the contents of the distribution .ZIP to the root directory of a blank FAT16 formatted SDCard.
Boot your Spectrum from that SDCard.
Please Note: The Spectrum Next is currently setup to boot using VGA for the output. Config files for both HDMI and VGA can be found in the tbblue directory, as per the default ZX Next OS instructions. You can change these files as your requirements dictate.