AN IMPORTANT ANNOUNCEMENT: (well, not quite as important here as it would be on other SInclair forums, but I have to mention it...)
In response to an incredibly inept display of not-even-what-I'd-call-programming that I reviewed a couple of days ago (and which has not been revealed here yet, but will be in the next weekly round-up), I had cause to revisit
ZX80 programming, finally getting some machine code to work on it. It has made me rethink the Blue Challenge on this year's competition, in which the idea was to get the unexpanded 1K ZX80 to do... something, in machine code. And by that I meant
entirely in machine code - fill up the memory with about 700-and-something bytes and... you've got a rudimentary version of Nim, or Noughts And Crosses, or something similar.
When I came up with the challenge, I was under the impression that machine code programming on the ZX80 was similar to the ZX81, in that the code would be held in a REM statement and executed from there, and it was only after I opened
this can of worms on Sinclair ZX World in mid-June that I discovered the truth. (A side-effect of this bout of programming is that I appreciate the QL's POKE_W a lot more than I ever did before, so that I don't have to do the calculation myself to split a number larger than 255 into its component bytes.)
Even at this late stage (in that there's three and a half months to go,
possibly four if I'm generous in the end (which is much more likely, now that I know I've got a trustworthy host for next year lined up), I am going to revise the Blue Challenge to something that I think is more manageable, but retains the spirit of the original in some way.
BLUE CHALLENGE V2.0 (which shows up green here because the QL doesn't have blue in Mode 4):
Write a game for the ZX80 (anything up to 16K) which uses all eight of the Integral Functions: CHR$, STR$, TL$, PEEK, CODE, RND, USR, ABS.
Given that USR is involved then this
will involve machine code, but it can be something as simple as, say...
changing decimal into hex or binary. You know, like I just did. And in order to read the hex output from my program, both CHR$ and PEEK have to be used in combination with each other. So that's three functions dealt with already - the other five shouldn't be too much of a problem.
...yes, yes, I know, Z80 machine code and the ZX80 aren't exactly going to be massively relevant when you're all on Motorola processors and a much more powerful machine, but why not try something new, that's actually four years older, for a change? Meanwhile, carry on as you were.