Post by Zach ZwergelIs there a way to port Altair 4K to CP/M and to patch out the Z80 bug?
If that cannot be done, how about 8K?
Hahaha! Just half-an-hour ago, I wrote a long message to someone else explaining why! Funny coincidence!
Ok. The Intel 8080 CPU uses some locations at the beginning of its memory for "Restart instructions" (the 8086, and its family, do the same).
However, CP/M uses COMmand files, which are "memory images" of the RAM, starting at 100H. The first 256 bytes are named "Page Zero", following the 2 "00" numbers as in 100H.
Among the standard uses of this "Page Zero" is to contain the location of the BDOS ("CALL BDOS" or "CALL 0005H"), the BIOS, and (important for I/O) the "DMA Buffer".
So, it is difficult for CP/M to run without this "Page Zero" initialized the way it was standard. (The famous "IOBYTE" was coming from Intel usage on their microcomputers, since Gary worked several years at Intel.)
Now, it so happens that "Altair 4K BASIC Version 3.2", "Altair 8K BASIC Version 4.0", "Altair Extended BASIC", and "Altair Disk BASIC" all use the famous Intel 8080 RST instructions for some of the most-often used subroutines of the BASIC interpreter...
So, they cannot be run under CP/M: you need to use an "emulator" (like the "AltairZ80" emulator of Peter Schorn) of the hardware under which they used to run.
However, CP/M was the de facto standard. So, Microsoft made versions of its "Altair Disk BASIC" running under CP/M.
Apparently, the oldest version surviving is "OBASIC" (version 4.51), which stands for "Old BASIC" (this name was given to it when the standard Version 5.xx of CP/M 2.2 was introduced).
OBASIC is slightly different than MBASIC, but only in the details of the commands dealing with disk files.
So, OBASIC is the oldest version of Altair/Microsoft BASIC able to run under CP/M.
Hope that helps.
Yours Sincerely,
Mr. Emmanuel Roche, France