Here we are, the last ever 512 Forum! I've not been looking forward to it for obvious reasons, but also for the practical reason of finding a memorable subject (or at least interesting) which won't need a continuation article! I hope you think I've done our favourite machine justice.
Thanks to David MacGraw for supplying the information on his unique 512 upgrade. Space is too limited to do full justice to all his work, so I'll provide photocopies of his summary for a pound to anyone who wants more information. David and I have communicated for quite a time on general 512 matters, but last year he asked me for my thoughts about the 16Mhz speed upgrade mentioned in the 512 Technical Guide. Basically, did I think the 512 would go even faster and if so, what advice or suggestions could I offer.
There's nothing like being put on the spot, is there? Well, I did write the book, and I also produced the 512 memory expansion that quite a few of you including David use, so I could hardly say I had no idea!
Even so, this was totally uncharted territory. I'd never pushed my own 512 beyond 12Mhz and certainly never tried going beyond 16Mhz, because I knew very well that it would be a time consuming job even if it worked, and of course there was no guarantee it would.
After a bit of thought I told David that I couldn't see any obvious reasons why it wouldn't work in theory, provided that the job was tackled methodically and that he was prepared to replace (probably most of) the chips. I also said I thought it likely that if he reached it the ultimate performance barrier would probably be the tube, if not the ULA itself then because many XIOS (tube I-O) functions are time critical.
A few more letters passed and finally David asked me if I could supply a spare 512. He'd decided to have a go!
The first upgrade was a processor change, to a 16MHz CMOS version. This also involved a crystal (the hardware timer) change and a couple of other very minor mods, but no other changes. (More on this later, but if you're tempted this is the only upgrade I suggest you try and you might still need to upgrade the RAM.)
The result of this fairly simple change is an increase in general processing speed of around 60%, as you'd expect from the speeds of the two crystals, 20 and 32MHz Of course there's little benefit for tube/BBC micro dependent operations such as disc access or screen output, but that's a function of the machine's overall design so you can't do anything about it.
Successful so far, David's next step was a 20Mhz processor with a 40Mhz crystal, but he found that this time a RAM change to 80ns (nano-seconds) or better couldn't be avoided. It did then produce the expected performance improvement, but at the cost of re-wiring the 512's RAM for different chips.
In addition this change also threw up an 'ESC opcode error' from a number of programs, although others still worked normally. It didn't take long to spot that the troublesome programs were all EXE files, although not all EXE files were affected. When David mentioned this to me I dimly remembered the same problem in another machine a few years back.
Unfortunately the processor had failed, so the user had replaced it with a CMOS version, although in this case he certainly wasn't running it beyond 16MHz. He asked me if I had any ideas why a number of EXE programs would no longer run, all failing with an ESC opcode error.
At the time I hadn't, so I was only able to say that the new processor appeared to be responsible since it was unlikely to be the speed, my own standard chip being quite happy at 12Mhz (also, why some programs and not others?). In any case, although it was true some 512s wouldn't run reliably even at 12Mhz this wasn't the symptom they displayed, the whole machine crashed randomly.
The best guess was a minor incompatibility in the CMOS processor, in probability a bug which was never fixed because the 80186 was over-taken by the '286 and so was never used in PCs. How David reached 20Mhz before he encountered the problem I don't know, but possibly not all CMOS '186 chips are the same, I can certainly confirm from fitting memory expansions that not all 512s are the same.
David persisted and found that the cause was a maths co-processor instruction. Many EXE files compiled and linked in 'C' include floating point instructions in the program in case an '87 maths chip is available. So they can run in machines without the maths co-pro. these programs check to see if the maths chip is present at run time. Clearly this check fails in the CMOS '186 though not in the standard processor. Equally clearly it can be viewed as a bug, because maths coprocessors weren't introduced until the 80286 appeared.
Having established that the fault wasn't speed related David pressed on, this time to a 25MHz processor, which called for another RAM swap, down to 70ns, giving roughly 250% of the speed of the standard 512.
I've already mentioned that I actually run my (nominal 10MHz) 80186 at 12MHz without problems and I know quite a few other 512 users who do so too. Indeed a good many PCs employ a processor which is driven beyond its nominal rated speed to produce a faster machine without the costs of a faster chip.
Applying the same logic David pushed his 25MHz processor to 27.75MHz but to do so demanded yet another RAM change, now to 60ns. However, David feels that the cost and effort was worthwhile because he uses his 512 for a number of processor intensive design applications. For these his 512 now runs at 275% times its original speed (and around 75% of the speed of the '386 he uses at work for the same job).
David has tried to push the 25MHz chip to 30MHz but without success, so he says he's probably going to stop at that. From his notes it looks like the 25MHz processor might now be the limiting factor, but while I don't know the speed of the fastest C186 chip I do know it can't be much more than 25MHz, so perhaps there's no choice anyway.
What does surprise me is that the tube hasn't been a problem so far, unless that's what's actually now preventing a further speed increase. Bear in mind that the main difficulty of this sort of experimental development is that you can't identify a failure until, by a trial and error process of elimination, you've cured it. Each RAM and/or processor upgrade is quite expensive, so it obviously can't go on for ever.
I think David's wise to call it a day, he's got further than I expected and without doubt has the fastest 512 ever built. To give you a better idea I've summarised some of his performance tests in the table so you can see for yourself.
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Tests using SSE.COM
v.2 (Dabs shareware vol.2 disc 5) |
You can clearly see that for some operations the improvement is better than others, but as I said, for I/O the results remain almost the same regardless of processor speed. For example, comparing the 10MHz machine to the 27.75 version using 512BBCBASIC 'NEWBENCH', screen text output improves only 0.3 from 17.1 to 16.8, while disc access gains a little more (because there's more data to move!) from 5.0 to 4.3.
Before you get carried away with the idea of upgrading your own 512 a few words of warning are justified. I'll supply the information I have to anyone who wants it and David may be able to offer additional notes and guidance for would-be upgraders. However, if you do feel tempted be aware that you'll absolutely definitely have to do the job yourself.
Don't be under any illusions, the full upgrade is a considerable amount of work. It's fiddly, it's time consuming and you must know your way round the 512 circuit and the pins of both 256x1 and 256x4 DRAMs, since you will need to rewire the 512 to take four of the faster CMOS chips in place of the original sixteen 150ns NMOS devices.
I've only sketched the main steps in the development of this upgrade. Don't imagine it was straightforward, quite the opposite. Apart from the first change to 16MHz (which is a potential proposition for most people) David had numerous false starts and various problems to resolve before each speed increase finally worked properly (and he runs an electronics company!).
Note too that the EXE file problem remains and the only solution is to manually patch each affected program. Add to this the fact that some 512s are 'better' than others, even though the upgrade works in David's system on both the internal and external tube, there's no guarantee it would in yours.
Don't even contemplate this upgrade if you're not absolutely confident of your ability to modify the hardware and some programs. I repeat, the work CANNOT be done for you. (Even if it could, to put it in perspective, it would probably be almost as cheap to buy a PC.)
Sorry to those who've been waiting for things from me, my Beeb has problems (the final two Forums were written on a PC!!) which I hope will soon be fixed. When they are, I shall, thanks to Beebug, be able to release a (DOS) disc containing all the Forums (about 55 issues) still on my hard disc. See Editor's jottings in issue 8 for possible sources, or I can supply it on the usual terms.
The moment has arrived. It only remains to thank you all for your encouragement, kind words and enthusiasm over the years. I hope you continue to enjoy your 512 for many years to come and that I might hear from one or two of you from time to time.