On Mon, 5 Jun 2023, Tom Gardner via cctalk wrote:
Hi:
Doing some research for historical purposed – no litigation at all – trying to identify the first “legal” PC-DOS compatible PC, “legal” in the sense that it’s BIOS was not a copy of an IBM BIOS. Eagle gets the honor of being first MS-DOS compatible and getting sued for copying IBM’s BIOS 😊 The Compaq Portable which shipped in November 1982 is generally credited with the first legal MS-DOS compatible PC. AFAIK it could not run PC-DOS and those applications which depended upon certain IBM BIOS commands would fail.

Although Compaq was formed as a company in 1982, the Compaq luggable was not released until March 1983. In summer of 1983, I used one for a week, and used PC-DOS, in addition to the Compaq MS-DOS 1.25 (equivalent to PC-DOS 1.10)

In talking about the PC ROM, much of the discussion is conflating the BIOS with the BASI*C ROMs. The 5150, as released in August 1981, had SIX ROM sockets. It had one 8K ROM for the BIOS, four 8K ROMs totaling 32K for BASIC, and one empty socket, which usually stayed empty. A company calling itself MBI sold an accessory ROM for that socket thatr added some trivial features.

In 1981, IBM immediately released the "PC Technical Reference Manual" which included schematics, and source code for the BIOS ROM. The Wikipedia article on the Columbia incorrectly states that IBM released the specification, but not the code; NO, the manual had the full source code for the BIOS.

Source code for the BASIC was not released.

If you look at the source code, each "section" documenting the BIOS interrupts started with a block of comments detailing the documentation for using that interrupt. Those comments, in the beginning of each interrupt source code were plenty to serve as specification for writing a BIOS that PC-DOS would run on.

But, that wasn't always good enough.  Instead of calling DOS with
MOV AH, 2
MOV DL, 42h
INT 21h      ; call DOS output
to put a 'B' on the screen, you could
MOV AH, 0fh  ; ?was that the right function?
MOV AL, 42h
INT 10h ; call BIOS video which was faster. Or you could do a far call to the memory location of INT10h, instead of using the Interrupt Vector Table. That would require that not only INT 10h had to be compatible, but it would also have to be at the same memory location, which is asking for more compatabilty. Or, you could call the memory location of funtion 0Fh of Int10h, instead of the memory location of Int10h, instead of using the interrupt vector table, which is asking for more compatability.

Or, you could ignore DOS and BIOS, and poke the character into video memory (Segment B000h for monochrome, segment B800h for CGA) DOS calls, calling BIOS calls was considered too slow for commercial software, if you were going to write the whole screen, so virtually all commercial software did direct memory access, and often bypassing DOS and BIOS for other actions, as well. THAT was where major incompatability occured.

PC-DOS required that the BIOS functions exist, and that the Interrupt Vector Table point to them. Some commercial software products expected the BIOS functions to be at the same physical address (not just pointed to by the IVT), and therefore required that the BIOS be a closer copy than just compatible.


When I released XenoCopy in 1983, I contracted with a publisher. They wanted to try to peddle licensing to IBM itself. For that, they insisted that I make a version of XenoCopy that would not run on anythying other than the real genuine IBM 5150 PC. I did that by accessing a location in the BASIC ROM. Once they found that they could not peddle it directly to IBM, all subsequent versions of XenoCopy that I wrote were compatible with almost anything that claimed compatability. When my royalties started to become later and later, I had to involve lawyers, and shut down the publisher, and then publish and market it myself.


MS-DOS 1.25 differed from PC-DOS in that IBMBIO.COM and IBMDOS.COM were named IO.SYS and MSDOS.SYS. PC-DOS had small programs BASIC.COM and BASICA.COM that added disk IO and a few other items to the ROM [Cassette] BASIC. BASICA.COM ("Advanced BASIC") was the full set, "BASIC.COM" was the minimal form for machines with inadequate RAM, with abbreviated error messages, etc. MS-DOS had GWBASIC.COM which was the equivalent of the full BASICA, but not requiring the ROM BASIC.

Microsoft now refuses to remember what GW stood for in GWBASIC! At the time, they said that it was "GEE WIZ", but later said that it was "Greg Whitten"; and also said that the "MZ" at the beginning of the .EXE file header stood for "Mark Zbikowski". BTW, DOS will look for an internal command first; failing that, it will look for .EXE or .COM but if it finds one, it will ignore the extension! and process it as memory image of EXE file structure based on presence or absence of "MZ"!; then it will check for a .BAT file.

Compaq RENAMED "GWBASIC.COM" to "BASICA.COM" (although it was a much larger file containing the entire BASIC, not just adding disk enhancements), so that batch files that mentioned "BASICA" would call it and still run.


In 1983 or 1984?, PC-World magazine ran an article comparing compatability of the clones. They "tested" based on which software would run, such as "Flight Simulator". They used version 1.00 of XenoCopy, which deliberately would only run on real genuine IBM 5150 PC, although the versions of XenoCopy being sold by that time would run on ANYTHING that had compatability with INT13h, Int1Eh, Int10h, and had the text screen memory at B000h or B800h. They referred to XenoCopy as "the acid test of compatability"


--
Grumpy Ol' Fred                 ci...@xenosoft.com
XenoSoft                        http://www.xenosoft.com

Reply via email to