At last it appears that we have come to the end of the Problem Solver saga, and I'm pleased to say that the conclusion appears to be a happy one.
Joaquim Carvallio, one of the authors of Problem Solver (I hope I got the surname right), visited the UK in late July with the intention of identifying and curing the difficulties experienced by some users of his program.
He called on me on the 2nd of August and I'm pleased to say that he delivered a new copy of the program which appears to suffer from none of the difficulties I'd previously found. We spent an interesting afternoon and evening discussing various aspects of the 512, including the reasons for applications incompatibility, and all in all a good time was had by all.
Joaquim explained to me how the program works and was kind (and confident) enough to leave the source code with me too. Knowing what PS (Problem Solver) sets out to achieve it's clear how, in the previous version this led to two particular areas of difficulty. I promised not to give away too many secrets, so the explanations which follow are fairly general, but even so I hope that the reasons for the problems experienced by some with earlier versions of the program will become clearer.
After gaining access to other 512 systems (he himself has a Master based system) he has been able both to identify these problems and to cure them. He was quite confident that the new version of the program would be much more reliable in all versions of BBC micro/512 system, and my own tests bear this out.
The first difficulty was that the earlier version of Problem Solver had assumed that various operating system variables were always located at certain addresses. While this is true some of the time it isn't absolutely reliable. This was the reason that PS simply would not work at all, or might partly work, but only sometimes.
The program has been changed so that these locations are now interrogated by legal calls, rather than being 'hard coded'. The result is that the new version installs itself correctly because the relevant memory addresses are now accurately known. So far as I have been able to test it (using DOS Plus 2.1, where most of the difficulties occurred) the program now always installs correctly and I've had no hangups with the new version except a few when trying out programs that I knew didn't normally run in the 512.
When Problem Solver is running correctly, what it sets out to do is to examine the code in applications so that it can locate and replace certain instructions which are known to give trouble in the 512. This examination and replacement can occur either as a program is loaded, if PS is enabled at the time, or subsequently by pressing <Shift-Ctrl-Copy followed by P>.
Some 80186 instructions always cause trouble in the 512, and as has been mentioned before, direct hardware access is the main area. Problem Solver attempts to find these instructions within the code and replace them, depending on the original instruction, with an invalid code which it will later recognise.
At the same time, it intercepts the 512's 'invalid opcode' error routine, so that when the application comes across one of these (replaced) invalid instructions, Problem Solver takes over, executing the appropriate legal sequence of instructions, identified by the (invalid) code. Control is then returned to the original program after the operation has been carried out.
Naturally this technique is quite fiddly to implement, and one reason for Problem Solver's previous 'delicacy' with some programs was that embedded data can sometimes look like a 512 incompatible instruction. The result was that in some cases bytes would be changed which should not have been.
The 'instruction search and replace' routine has been amended in such a way that Joaquim believes it is now much less likely to make this type of mistake. This means not only that its success rate with incompatible packages should be better, but interference with already compatible programs should be reduced.
As an indication of this, one package I use has always worked perfectly without Problem Solver, but it now also works normally with it, even in my own system. When running the previous version of Problem Solver with this package (in a Master, which was the only way I could get it to work at all) it always crashed the system, so this claim seems to be justified.
As it now seems that Problem Solver has matured into a reliable product I'll comment on the type of help it can be reasonably expected to offer. This might give some indication of the type of program which is likely to benefit from its use and to some extent these can then be predicted.
We'll start by eliminating the main groups of program that Problem Solver can't help.
It might seem unnecessary to say so, but obviously programs which require a 640K (or even a 512K MS-DOS) machine, or which need a different graphics adaptor to the CGA are first on the list. Next, any program which is not compatible with MS-DOS or PC-DOS 2.1 will remain incompatible. This is because these programs will by definition use operating system calls and facilities (like the extended memory system) which are simply impossible or missing in DOS Plus 2.1.
Additionally, utilities which attempt to do 'clever' things with a PC disc controller still won't work, because the BBC micro's WD1770 disc controller used by the 512 is not the correct type. Even if you gave it the 'correct' instructions in a legal manner it wouldn't know what to do with them.
Enough of the negatives, what about programs that can be helped? Perhaps the easiest to categorise are those which do run unaided, but produce a garbage display. This can happen for a number of reasons, but the most common is that the screen mode change within the program doesn't work in a 512.
The DOS Plus utility provided on issue disc 1, 'PCSCREEN', is a special for the 512, needed because all 512 displays are actually done (as far as the BBC micro is concerned) in a mode 3 screen. The different character sizes and colours in the 40 column graphics display are actually achieved by re-programming the BBC's 6845 CRTC registers directly, and by MOS calls to reprogram the video ULA. Obviously PC programs know nothing about any of this.
Because Problem Solver can issue the 512's 'mode change' command correctly, in some cases it will correct the screen display automatically. In other cases you might need to assist programs which otherwise display rubbish by manually changing the screen mode through Problem Solver.
It should be said that this type of problem doesn't apply to 80 column text output, and is therefore essentially restricted to games and graphics programs. However, if this is your problem PS may well hold the solution. The list of software it 'fixes' is quite lengthy, even though games do form a sizeable proportion.
I'll be honest and admit that I don't have any PC games of my own, but Joaquim did show me a dozen or more that definitely don't run without Problem Solver, but certainly do when it's installed. I can therefore personally confirm this point too.
Another area which is improved is keyboard handling. Programs that read keyboard entry through a character input function don't give trouble, but for various reasons some try to read the keyboard directly and don't work in the 512. This doesn't usually cause such problems as a crash, but instead a program will probably do nothing at all, failing to respond to particular keys and in some cases ignoring all of them.
By intercepting the keyboard input interrupt vector (INT 9), Problem Solver traps some of these calls and implements them legally. The result is that the calling routine receives the correct keyboard response and therefore functions accordingly.
I've tried this too, with a couple of shareware TSRs that rely on 'hot keys' and which totally ignore key depressions without Problem Solver. With it they function correctly. Again this depends to a degree on the particular program, because I also have other programs which still don't work even when Problem Solver is active.
To some extent common sense can tell you which programs might be helped and which won't, so long as you have a bit of information on their operation. For example, if a program requires a key which simply doesn't exist in the 512 system, for example function keys 11 to 20, it's unreasonable to expect Problem Solver to overcome this. However, if the keys required are available on your keyboard but the program doesn't work on its own, there's a good chance that Problem Solver will do the trick.
Users of model B and B+ micros should note that Master numeric keypad emulation is provided via one of the three function key definitions. On the first setting they operate as usual, the second selection provides insert, delete, +, -, *, /, left-shift, right-shift and scroll lock, while the third gives insert, end, cursor down, page down, cursor left, cursor right, home, cursor up and page up. I've had mixed success with these and again it obviously depends on the program in question.
Ultimately I can't tell you whether to buy Problem Solver or not. As I said to Joaquim, l still feel that it's a little over-priced, given that there can be no guarantee that it will cure a specific problem. It's only a personal opinion and you might disagree, but I think £15 or £20 would have been a better price, since it's still a gamble whether any particular package's problems will be solved or not.
Of course there are two ways to look at it. If it makes an otherwise useless £150 package into your favourite piece of software you will no doubt think it's excellent value. If you've managed without Problem Solver so far, it's equally possible that you, like me, have simply avoided problem packages and found alternatives that suit you and do the job. If your current range of software does everything you need you might have little to gain from Problem Solver.
However, if there's a specific package (or several) that you are keen to use and you think it falls into one of the categories outlined above, then Problem Solver might be just what you need.
What I can say is that the latest version of Problem Solver is clearly more robust and reliable than previous ones, and I would now expect it to be well behaved in all systems. It does meet its claims for a respectably large number of packages that will not run correctly in the 512 without it. As such it can now be recommended. There isn't space this month, but in the next Forum I'll include a list of packages that Problem Solver is known to 'fix'.
A few final points will, I'm sure, interest existing users. If you own an early copy of Problem Solver and have had trouble, Shibumi Soft will exchange it for the current version if you return the original disc. They will also replace any disc which has become corrupted. Finally, the latest version is unprotected, allowing hard disc users to transfer Problem Solver to their Winchester.
512 users should note that this month's magazine disc contains the second of two MS/DOS utilities by Bernard Hill, together with a documentation file covering both (repeated from last time). This month's program is a SORT utility.