on the Spectrum/C64 debate, while the C64 was more advanced in that it had sprites and a sound chip, proper keyboard etc, it was crippled by the totally craptastic basic, written for Commodore by none other than MicroSoft, who else would write a basic for a machine with sprites and a decent graphics display and 64k of ram, then make sure the basic couldn`t use the sprites, had no graphics commands, the basic rom overlay the first 32k of ram (making it unusable from basic), plus it was an OS that required the floppy disk drive needed a cpu as powerful as the bloody computer, which made it incredibly expensive, and if you had any data stored in arrays, it got erased when you opened a channel to the floppy, even on 8 bit computers MS could only manage crap software (they also wrote an "almost as crap as the C64 basic" for the Dragon)
on the other hand, the spectrum had a neat and powerful basic, and the claimed 48k of ram was not overlaid by the rom at any point, so when they said 48k, you actually HAD 48k to play with (minus system vars and screen ram, which wasn't a lot), so the supposedly "smaller" spectrum had 16 k more ram free to basic than the C64, and a better basic that was half the size, makes you wonder if MS ever did write any decent software in their whole history.]
one trick you could do with the C64 was to make self modifying code, if you printed basic instructions to the screen from within the program (inc line numbers), then sent the cursor home and poked 5 returns into the keyboard buffer and ended the code, then the next 5 lines where entered as though you typed them in, by having Goto xxx as the last line, once the first four lines had been entered as program lines the program would resume at line xxx with all the variables intact, I actually made a sprite editor that created the data statements for making the sprites and then saved the code to disk, and then erased itself, even back then MS code had exploits.