Matt Evans presented “The Ultimate Acorn Archimedes Talk”, the 8th talk in the “Ultimate Talk” series, at the 36th Chaos Communication Congress (36C3).
Here is the video:
Some Assembly Required
Matt Evans presented “The Ultimate Acorn Archimedes Talk”, the 8th talk in the “Ultimate Talk” series, at the 36th Chaos Communication Congress (36C3).
Here is the video:
Ah – those good old times come back to my mind. A good talk and great to hear that he had access to the developers of the ARM chip. I wish for a longer talk so he had more to talk about the software side and on how to great of a assembler that chip had. The os was quite flawless except for one files access routine bug.
For the talk he should show the demos from that time: Zarch (not Lander as Lander had only whole rectangles), the 2.3 second Mandelbrot demo and a command line to show a program listing ( which takes about a second for scrolling through thousands of lines).
Ah – good old times.
Bought myself an A440 when it was introduced – over £3000… my BBC Model B was £400!
Not sure if this is true or not, but in the launch material at the time I read that when the team received their first batch of chips back from fab, they took one from the first tray they opened, plugged it in… and it worked first time. I just hope that’s true!
At the end of the talk you mentioned code optimisation by unfolding loops – many happy hours spent doing this… but just to be clear… this was the technique that helped release as much of that 25Mb/s memory bandwidth as possible, because you did not want to be branching away from your current memory location as that cost a huge amount of performance.
You also didn’t really explore how the CPU’s instruction set was designed around this with the “conditional execution” capability… The ARM2 processor in my A440 had 44 basic instructions, but every instruction could be made conditional. This made it possible to effectively “jump over code” without having to jump – because it was quicker to add a conditional flag to a couple of instructions and ignore them than it was to branch over them. (In the compiler you could add the suffix “CC” to any instruction to restrict it so that it would only be performed if the Carry flag was Clear. Likewise, “CS” got the same result but only when the Carry flag was Set. The ARM CPU also supported both Big Endian and Little Endian byte ordering, which, combined with conditional flags, helped with this sort of code optimisation.
Another recollection – this time a weird hybrid between BBC BASIC and the 512kb ROM… was that the ROM chips Acorn used had significantly slower refresh rates / response times than the RAM. You could get a useful performance increase simply from loading BASIC in from disc in to RAM rather than relying on the ROM version.
One particularly elegant OS feature I liked was that “Applications” were basically bundles of code files that existed within a directory/folder on disc storage. To tell the OS that a folder was “an Application” and not “a folder”, all you had to do was make the first character of the folder name an exclamation mark. So simple, so elegant. If you did so designate a folder in this way, then the OS mandated a series of files with set names had to exist within the folder – things like the icon file that would appear on the desktop, the name of the first piece of code to execute, that sort of thing.
There was, however, one key downside to the Archimedes… which was that it was so powerful and so capacious that it forgave lazy and inefficient programming. I remember spending 2 weeks hand-optimising code for a BBC Micro ROM chip because my employer at the time [I was 18 and working my summer holiday] had gone out and bought a “job lot” of 8Kb EEPROMs and my first compile returned nearly 10Kb of code. I maintain to this day that I learned more about efficient coding in those 2 weeks than I’ve learned in the 40 years since!