Saturday, January 06, 2018

Updates on Web pages

Zex from zip to DMG

Zex download has been updated from a zip file to a dmg.


Well, download applications on MacOS get isolated (translocated) into a separate location in the file-system to avoid nasty things happening. This means that the application can't find the data files that are next to the original.

The same thing happens with unsigned DMG, which meant we ended up signing the DMG, and getting the user to copy it across to the application folder.

For the download go here -

P.S. Stu did most of the work here ... I just helped test.

Monday, July 24, 2017

More on the ZX Spectrum Recreate Keyboard

It seems Elite Systems has resolved their problems, and keyboard and app support has been available for a while - please see

Also some useful information from Philip Kendall, who has just done a small update to the "*unofficial* Recreated ZX Spectrum FAQ" (as mentioned on the ZX Spectrum Facebook Group) and is located

My previous post was


P.S. At the time of writing (end July 2017) UK retail outlet Game is selling them for £29.99... I'm sure that won't last long.

Tuesday, August 23, 2016

Live Coding

If you get a chance read this:

Mentions Bret Victor's interactive stuff - which is WELL worth watching - linked in above article.

We've been using ZeroBrane Studio (, which supports live programming) but FF has 'grown' beyond interactivity :-(

Did you see that old notch video doing minecraft dev?

We should change our code so that it supports this stuff!

Sunday, July 24, 2016

Notes on The Recreated ZX Spectrum bluetooth Keyboard


Sadly the tablet and web app have been taken off-line but I knew this before I bought it … It would be wonderful for it to be properly supported under emulators in the game mode. This post list some basic stuff I’ve found out about the keyboard.

Generally Spectrum emulators do work OK with QWERTY mode (Layer B) once unlocked, but really requires support for Game Mode (Layer A).


Unlocking QWERTY mode will be a problem for this keyboard without the App but there is an easy way to run the Javascript to fix this stupid locked mode [7].

Keyboard Modes

The Full User Guide has some information about the two modes - game and QWERTY  [4] - but not enough to really code for it. (But see [6] - although I wonder if it’s accurate - see below).

ZXSP does work with QWERTY mode, but because the two shift keys are overloaded in QWERTY mode, I don’t think this is going to be ideal for Spectrum games. Additionally SYMBOL-SHIFT Q, W, E generate two keys (most of the time) rather than SYMBOL-W key-combos - obviously.

The game mode is interesting - and uses a unique printable character for each of the keys. I guess this is so that it can interact with the web app (and tablet apps) very easily.

The keyboard mapping is pretty simple:

Key    Push+Release
1    ab
2    cd
3    ef
4    gh
5    ij
6    kl
7    mn
8    op
9    qr
0    st
Q    uv
W    wx
E    yz
R    AB
T    CD
Y    EF
U    GH
I    IJ
O    KL
P    MN
A    OP
S    QR
D    ST
F    UV
G    WX
H    YZ
J    01
K    23
L    45
ENTER    67
Z    <>
X    -=
C    []
V    ;:
B    ,.
N    /?
M    {}            See note [6]
SYMBOL SHIFT    !$        See Note [6]
BREAK SPACE        %^

So when key 1 is pressed, we get an ‘a’ and when released we get a ‘b’.


[1] Main link:

[2] Main support link:

[3] Quick Start:

[4] Full User Guide:

[5] QWERTY Keyboard shortcuts:

[6] There appears to be some conflict here - it might be related to which keyboard you have the Spectrum keyboard selected as - this technical document seems to cover this this … but I didn’t get any difference if I selected ISO or ANSI in my keyboard settings on my Mac

[7] set to Layer A. Then open Web browser and go to: In the search box go to The code to unlock it is relatively trivial.

Thursday, June 09, 2016

Battery Data

This is really cool. My Micromouse Robot - capturing data in the Raspberry Pi gives you a nice chunk of space to store data. In this case capturing battery data over 20 minutes - with a bunch of small runs. Here is a plot of a small amount of this data (400 points out of 10400) - it shows a short run drops the voltage in the 4 LiPo batteries - and the it's restored after the motor load is removed. I'm still running the dsPIC I/O processor, the Raspberry Pi and the Wi-Fi dongle.

Friday, December 11, 2015

Interesting serial port driver hacks

So ... say you've got a Mac. And you've upgraded to El Capitan.

Now your Keyspan serial adapter doesn't work (I have a USA-19HS and older USA-28x) - this used to be a built-in driver, but I guess Apple dropped it. This makes me sad, because Keyspan adapters generally were excellent and didn't cause kernel panics. One obvious option is to install the driver.
Say you also have a Prolific-based adapter - not surprising - these are everywhere for a good price. But the last time I installed the drivers I had kernel panics - of course it might be unrelated. You might have to install the native drivers if you want to use a Mac application with it, or see the options below...

Generally, apart from VirtualBox, I never want to install non-Apple drivers/Kext ever, really. (I've considered uninstalling VirtualBox in the past - but currently my machine seems stable even running VirtualBox ... thanks Apple ... famous last words, I know).

But installing drivers is the standard option, I'll admit.

You have the following other choices, as far as I can tell:
  1. Use a computer with Yosemite or before. If that sounds like a pain, that's because it is. Especially as your whole family appears to be upgrading.
  2. Get an FTDI-based serial adapter off Amazon. Hope it's not a dodgy FTDI clone. This is the route I'd go if it wasn't present season. I *suspect* that the Mac has an FTDI driver built in because it works with things like the Forth board on my the Display Board (which has an FTDI to serial adapter) without installing any drivers...
  3. Downgrade to Yosemite.
  4. Use a non-Mac ... (NOTE: My Windows PC machine can't sleep without a blue-screen half the time because of serial adapter drivers - none of the ones mentioned here, I should say. Yes I have evidence (a) it started crashing right after installing and (b) it also mentions the specific two drivers in the blue screen. But my work requires them, so hey...).
  5. Use a Mac ... but use Ubuntu running in VirtualBox! Ubuntu has Prolific drivers built-in.
VirtualBox has an interesting ability to pass USB traffic to the guest OS and use guest-native drivers, even if the host doesn't have a driver!! So, basically you never need to install a Mac driver (if you can use a Linux app rather than a Mac app).

This link might be helpful for VirtualBox or just normal Linux people ...

P.S. To use a Keyspan driver under Linux, you'd need to install it yourself. Debian didn't like the licensing terms, apparently.

Saturday, September 19, 2015

Automatic testing and Regression tests

For a couple of minutes a day, I've been creating regression tests for one of my background projects - LuaZ80. I started this to identify which instructions were implemented, and which were working properly.

Before that I was using a test file to single step the instructions.

Why I didn't make regression tests before because as well as finding which instructions are implemented (at all or properly) they've found a load of edge cases I'd have never found by manual testing.

Well, one reason is the massive effort required to do so ... I guess several times the amount of time to write the original compiling interpreter!

However, without them I have a project which doesn't work properly - based on the number of mistakes and minor errors I've found. And what use is that?

Additionally I have something to check the operation in the future when changes are made - the true meaning of regression tests.

Wednesday, July 01, 2015

Read out loud blog posts

Not sure why I didn't think of this before, but of course modern computers have text-to-speech and can read text aloud.

So I got it to read my post from yesterday - instantly found two errors (which then I had to correct) and also several poorly written sentences (which I left because life is short and it's probably better to make new blog posts better).

What made me realise this was browsing Mariner Software's writing software and finding this which allows setting different voices in different pieces of text. But for simple use cases the built-in stuff is enough.

Other notes and links:

Firefox has Text-to-speech add-ons.

Linux can use Festival but there are others as well.

Raspberry Pi Text to speech ... ... could be interesting for Embedded speech!

Windows Text to Speech is also available:

For Mac users, Safari and Text Edit read things aloud. Go to 'System Preferences' ->  'Dictation and Speech' to configure the voices.

Tuesday, June 30, 2015

New test version of Forlorn Fox

So, apparently it's been 3 months since the last public test version. There have been lots of internal changes and only a few visible external changes.

More annoying, immediately after packaging it, we find a simple but yucky bug - the glyph editor doesn't work at all. And the fix is trivial - literally one require line.

We decided to release with the fault anyway - because 3 months is way too long between test releases. And we can always release another version next week - the whole process of release for all four platforms is probably under two hours end-to-end. So I have to wonder why we waited so long - I guess it's the feeling of one more thing.

We spend time fixing the build-and-package earlier this year in fixing this after the 0.03 release took ages to put together.

Currently the upload to web site is manual - but it's relatively trivial to do. But we've of course talked about automating that as well.

Next up are various extra game features and maybe another mini-game, although we've been talking about fixing one specific 'structural' problem: the single player and server player (for network) share a lot of game logic code, but the network client player game is different in a lot of ways. This causes us problems every time we add a game feature - we effectively have to add it twice and debug it twice. One alternative is to run all games as a type of client. But that's quite a big change - but one which might be necessary.