MORE THAN TWO SYSTEM TRACKS FOR CP/M 2.2 - A PRACTICAL SOLUTION By Donald E. Killen For those of you out there in CP/M-land who want three (or more) system tracks but are tired of asking "HOW", here is one way. It works in conjunction with the program "SGEN.COM" which I have provided the Group with. For openers, when I found myself running out of BIOS space (CP/M 2.2 is two sectors WORSE than good ol' 1.4 on this count), I asked myself, "Self, how are you going to GET all the nice stuff you write in assembler code ON a floppy, using Digital Research's SYSGEN (or a "GETSYS/ PUTSYS" combination of some sort)?" And I answered - "with difficulty". Next, I found myself musing about compatibility with the "two-tracked" world once I did manage to build 3 or more system tracks and use the thing successfully. So again I said, "Self, how are you going to get out of THAT one?" And I answered "With difficulty". Just to show you how unreliable first impressions can be, I looked closer at the documentation on CP/M 2.2 (As an avid non-reader of most documentation, I did what I usually did, search for the pictures, found none of those, and started from the back, reading towards the front.) About three one morning I said "AHA" - I know what I'll do - I'll fool the system by defining (in 2.2) TWO sets of logical disk drives, and "fold" one set over the other such that there is one set of physical drives, each drive of which has two logical definitions, either of which can be specified at run time. I defined eight physical drives, 0 through 7. Drives 0, 1, 2, and 3 are defined just like the others except that three (3) tracks are "reserved" - i.e. used for the "system", which includes my gigantic BIOS. Drives 4, 5, 6, and 7 use two (2) system tracks. Selecting drive "A" in my system gets a 3-track drive, selecting "E" gets you the SAME physical drive, only it is known (to CP/M) to have only two system tracks. Thus I can be compatible with certain 2-tracked worlds with only one drive, if I must. Or I can use up to four drives and mix them any way I want. One EASY way to tell if you've forgotten and selected a two-track drive which has a 3-track floppy in it is that DIR gets you a lot of nulls or "NO FILE", depending upon whims, etc.This works the other way around also. Physical Drive 0 1 2 3 ---------------------------------------------- 3-track drive: A B C D 2-track drive: E F G H ---------------------------------------------- The chart above is a handy reference and serves to illustrate the functionality of this scheme. However, one further point has to be mentioned. Your average (e.g. Tarbell) Floppy Disk Interface can select one of a maximum of FOUR drives. Therefore, I had to perform minor surgery on the SELDSK routine in BIOS. Just at the point that SELDSK is about to ship off two bits specifying which of four drives you want, the third (hi-order, or bit 2) bit gets discarded. Up to that point, and for that matter, in RAM until changed, are three bits defining the LOGICAL drive requested. That accesses the tables (in CP/M 2.2) which define the disk parameters. Then, for the purposes of limited controllers (like the Tarbell Single Density controller), only the least significant two bits are used - hence a 4 looks like a 0, a 5 like a 1, and so-forth. If anyone is really interested in the gory details, Charlie Foster has a disk with a copy of my BIOS (KBIOS.MAC/PRN) - which might convey the details in more depth. Once CP/M has this capability, I next needed to refine the program I call SGEN. SGEN.COM will do anything Digital Research's SYSGEN will do, plus it is an "n-track" system in that it asks you up front how many tracks (system tracks) you want to copy. It works with 1-9 tracks (NOTE: If anyone comes up with a one-track system, let me know, o.k.). It makes you say "y" (or "Y") to make doubly sure, then copies from memory or disk to memory or disk - just like SYSGEN. You'll also need the upgraded versions of MACRO.LIB, which, after converting nearly everything to Zilog notation, is called MACROZ.MAC, and I believe CLIB.MAC is also used. The latter is a clutter of miscellany which I've put together for assembly development work. I have no idea what one would do with regard to defining drives "sort of" like the above only for CP/M 1.4 - but I'd like to hear any comments anyone has. EDITOR'S NOTE: Don Killen is willing to discuss this (or any other items of interest) with anyone but prefers a note in the mail however he doesn't really mind the phone at all. So---- Donald Killen 2101 Hickory Drive Home: (214) 242-4968 Carrollton, Tx 75006