<%image(20060907-arenalogin.gif|120|83|)%>Way back in the days when I was a nipper hacking around the school’s Econet, I co-wrote (with a chap called Ben Horsley) my first multi-user game which ran on networked BBC Micro machines. Called Arena II it involved a small map, some objects you couldn’t really do much with, and a hell of a lot of file-handling. I was quite surprised to find it mentioned on the BBC Micro mailing list, referring to Jonathan Harston’s MDFS website here, dated 31st October 1990!
Why file-handling? The reason for this was that I hadn’t really worked out the client/server relationship involved (not that Econet facilitated it too much either) and so the whole system was quite clumsy. Filehandling on Econet was great – if someone else had a file open, it locked it so you couldn’t open it from another workstation. This led to lots of fun in a multiuser random-access system such as Arena, where a program would open the ‘current locations’ file, update the user’s position and read the current positions of other users, then close the file; the only way of working out if a file was open was trying it and trapping the error condition.
This now meant that we had error trapping going on everywhere and whenever an error was trapped, the program counter was reset with the function stack pointer (so if you were in a function or procedure, you suddenly weren’t). A chap called Andy Dowson came up with the novel idea of using GOTO (which wasn’t subject to the function stack) to solve that one – thus it was a haphazard melange of GOTO statements and error trapping.
Add to that the repeated hammering of files (30 people all using the system meant that it was pot luck if you got a lock on the file, which caused vast amounts of network traffic) and the network would slow to a crawl.
I’m tempted to rewrite it to use a couple of service ROM images as a server (or perhaps requiring a 6502 coprocessor), with 6502 machine-code based clients, but I’m not sure I can remember all the 6502 stuff nor (I am reliably informed) do I have time. Great days though.