Tuesday, August 23, 2016

Live Coding

If you get a chance read this: http://prog21.dadgum.com/221.html

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

We've been using ZeroBrane Studio (https://studio.zerobrane.com/, which supports live programming) but FF has 'grown' beyond interactivity :-(

Did you see that old notch video doing minecraft dev? https://www.youtube.com/watch?v=BES9EKK4Aw4

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: http://sinclair.recreatedzxspectrum.com/

[2] Main support link: http://sinclair.recreatedzxspectrum.com/support.php

[3] Quick Start: http://sinclair.recreatedzxspectrum.com/downloads/recreated_zx_spectrum_user_guide_quick_start_draft_23_i15_v1_0.pdf

[4] Full User Guide: http://sinclair.recreatedzxspectrum.com/downloads/recreated_zx_spectrum_user_guide_l15_v1_0_3.pdf

[5] QWERTY Keyboard shortcuts: http://sinclair.recreatedzxspectrum.com/downloads/recreated_zx_spectrum_keyboard_shortcuts_label_draft_2_g15_v1_0.pdf

[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 http://sinclair.recreatedzxspectrum.com/downloads/recreated_sinclair_zx_spectrum_developer_guide_placeholder_ZX%20Keyboard%20Technical%20Document_a15_v1_1a.pdf

[7] set to Layer A. Then open Web browser and go to: archive.org In the search box go to sinclair.recreatedzxspectrum.com. 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. http://www.tripplite.com/support/USA19HS
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 ... http://ram.kossboss.com/prolific-rs232/

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 http://marinersoftware.com/products/narrator/ 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 http://www.xenocafe.com/tutorials/php/festival_text_to_speech/index.php but there are others as well.

Raspberry Pi Text to speech ... http://elinux.org/RPi_Text_to_Speech_%28Speech_Synthesis%29 ... could be interesting for Embedded speech!

Windows Text to Speech is also available: http://answers.microsoft.com/en-us/windows/forum/windows_7-pictures/how-to-configure-text-to-speech-in-windows-7/83f67763-9d2b-416b-ad03-0e40ea97585b?auth=1

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.

Saturday, January 31, 2015

Software and the Future of humanity

My day job is proprietary and closed-source software, and is a lot of other peoples I know. It seems to work well, most of the time.

But unlike most other technologies, the workings are almost totally hidden without massive effort with binary software.

The future of humanity is at a turning point regarding knowing what software actually does inside - and this disadvantage doesn't just affect individuals but governments and corporations as well.

At the moment 'we' are trying to trying to tie things down with operating system permissions and network settings; I think this effort will fail - even though it's only just started. Already simple Android applications ask for nearly all permissions and most programs require a set of network permissions to make them work properly. Apple and others can revoke iOS authors licenses killing all copies of that software. But again - the software has to be very bad for that for happen and won't happen in most cases. So how can we tie them down after the fact? I don't think we can.

There are options other than free software and open source. Partially open solutions, for instance, where you can see the code (and maybe even change it), but not redistribute it might be the right license for some software. Wasn't Minecraft like this? There are others - not all were as successful as Open Source but some were.

I also think that people making money of the same, basically unchanged, software for 30+ years seems silly - so free/open source solutions (e.g. LibreOffice and GNU/Linux) will perhaps provide competition and drive all software forward.

To clarify this last point - unlike artistic endeavours where there is something intrinsically special, most software is functional. You can argue that Minecraft is special and straight copies are morally wrong - but we wouldn't want to say no one could produce a computer/video game ever again - a game based on blocks, or with crafting, etc.. That would be silly. The same applies for Novels - Harry Potter is not the first or last wizard/witch at school book, and we wouldn't want that. But for functional software the gap is even narrower between the original and some other version - and this is how it should be.

I also occasionally release open-source/free software, but I know lots of people won't be able to get paid that way - and software takes a long time to write, document, finish and release.  Therefore I don't think free and open-source software can fill all gaps for everyone and every-company all of the time. But there needs to be some way of getting the middle ground accepted. Microsoft tried to do this - but people don't trust them and the software they tried it on could have easily been Open Sourced properly, in my opinion - or at least had lass onerous restrictions.

I'm not sure I know what the solution is. But I can see the problem.

Thursday, January 22, 2015

Forlorn Fox 0.03 Windows and Linux

I'd like to say thanks to Tony for sorting out the Linux and Windows builds of Forlorn Fox. It's taken a lot longer than expected... we sort of thought it would be easy ...

Oh well... It can only get easier ... right?


Sunday, January 18, 2015

Forlorn Fox - 0.03 dev test version release

So, myself Tony and Kenny have been working on a multiplayer, plan view, simple graphics game on-and-off for most of 2014. We are all very part time, but it has a few interesting features.

We finally got our act together and are releasing a very early test version.

There is not much there, but there is:
  • Networking multi-player, with a LAN-based game finder
  • A graphics editor
  • Some rooms
  • Selectable player characters
  • A simple coin-rush sub-game
  • A marginally scary 'eye-beast'
  • All game code in Lua
  • C++ engine
  • Linux/Mac/Windows (at the moment)

Currently it will be hosted on my personal web pages at robprobin.com, but you can go immediately there via redgameworks.com. The files should be up today or tomorrow.