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