80-Bus News


January–February 1983, Volume 2, Issue 1

Page 48 of 56

The SYS BIOS has supported a virtual disk for about a year and a half, using the original Nascom four 64K page system, but this was prohibitively expensive and was limited to a virtual disk size of about 128K. The introduction of the MAP 256K RAM card, no doubt to be followed by a similar product from Gemini, is already making large memory systems common, and virtual disks will be widely used as a result.

When I first used a virtual disk, I made it into CP/M drive P, and in fact on many systems it is known as drive M. The problem is that one tends to forget about it, and since the contents of the disk are lost when the power is turned off, a lot of time can be spent moving files from real disks to the virtual disk, and then later moving the new files back.

So for a long time I had the luxury of a virtual disk, but hardly ever used it. Then I started thinking about how it could be made more useful, and after much experimenting, came up with several ideas. The first was to reduce the time taken to warm boot by restoring the CP/M image from the virtual disk. This works well, and for the first time I began to find the virtual disk useful.

The next change was to prevent the virtual disk being wiped clean if I pressed Reset. This proved easy, as I simply put in a check to see if it was already initialised, and if it was then the initialisation was skipped.

Next I thought about how the speed of executing Submit files could be speeded up, since they are so amazingly slow. If the $$$.SUB file was written to the virtual disk instead of to a real disk, then the Submit overhead time ought to vanish. This needed several changes, because the virtual disk would have to be drive A, as I don’t believe in modifying the BDOS. At the same time I didn’t like the idea of confusing myself by moving all the real drives up by one to B and C, which was one suggestion. Programs like BACKUP and FORMAT would still refer to the real drives as A and B and I could imagine myself making some terrible errors. Therefore I decided to flip drives A and P, so that the real drive A would be called drive P and the virtual disk which was drive P would become drive A. Also I allowed drive P to be called drive M in case people preferred that.

This all seemed a marvellous idea until I tried it. The system silently warm booted up with drive A the virtual disk, but naturally there were no programs on it, so I had to log in to drive P! The solution to this problem was to make drive P the default logged in drive, so that on cold boot or after a drive select error, the system would come up with the prompt “P>”. A strange sight. Now I really thought that I had solved the problem. But when I tried SUBMIT it didn’t work! Of course the reason was that SUBMIT writes the $$$.SUB file to the logged in drive, and only executes $$$.SUB if it is on drive A. Now I could see that I was getting near to the answer. I had the source code of the excellent program EXSUB, which I had debugged earlier, and it is designed to be easily modified to force the writing of $$$.SUB to drive A regardless of the logged in drive. Success at last – using SUB was now a pleasure, and the EXSUB facility of being able to submit several commands without using a text editor to create a .SUB file became more useful.

But the final benefit of making drive A the virtual disk came unexpectedly with the use of CCPZ, which is a much improved CCP written in Z80 code and available from the CP/M Users Group. This CCP implements a very clever search for programs which you try to execute. For example if you are logged in to drive P, as user 4, and you try to execute a program, first it looks on drive P user 4. If this fails it looks on drive P user 0. If this fails then it looks on drive A user 0. And of course this is now the virtual disk. So if you put programs on the virtual disk then they will always run even if you type in the command while logged in to another drive. CCPZ has lots of advantages, including making the User number feature work sensibly, which is very useful particularly if you have a hard disk. In fact Gemini have had the great good sense to supply it with the MOVCPM for their Winchester system, instead of the standard CP/M CCP.

Several software products which make good use of disks to extend their ability to deal with large quantities of data benefit greatly from use with a virtual disk. A good example is WORDSTAR, which may be used to edit a text file of say 100K. It automatically reads and writes the file to disk so that a large

Page 48 of 56