15

Back in the PC clone days the accepted legally defensible method of selling a non-IBM PC BIOS was using a "clean room" whereby an engineer who had never been exposed to proprietary IBM information was given detailed "specifications" by another group who had studied the IBM PC architecture and available technical references, including the published BIOS source code.

What specific pieces of information were "off limits" to the "clean" engineer tasked with writing the actual BIOS code?

For example:

  1. Would they be able to read and reference the IBM Technical References with the BIOS source code pages removed?

  2. Could they reference electrical schematics or the logic diagrams included in the Technical Reference during development?

  3. Was it permitted to ask additional clarifying questions of the team who wrote the specifications originally?

  4. Would they be able to browse their own disassembly the ROMs on a retail-purchased IBM PC? What about tracing and observing BIOS call responses with a tool such as DEBUG?

  5. What about being able to use a scope or logic analyzer on a retail IBM PC?

  6. If the engineer had ever browsed the IBM Technical Manual (say in their personal life before the project started), would that permanently or temporarily disqualify them from ever being able to work in that capacity in their lifetime? Memories fade and I know that if I did a code review a year or more ago -- especially not with the goal in mind of ever being able to reproduce the work later, there's no way I could today remember more than the most cursory of details about it.

  7. Were code reviews permitted by the engineers who wrote the specs?

  8. How detailed were these "specifications" permitted to be? As in, could you only say "INT 14 takes port in DX and parameters in AL and returns these values in so and so registers in flags"? Or could it be more like pseudocode "first, send control byte 0x80 to port 3FB to set baud rate, then send high byte to port 3F9... etc, etc"?

Not looking for specific answers to each question - just using examples to try to understand where exactly the line was considered drawn. I'd expect some of the answers might be the intuitive "if any doubt, better safe than sorry and take them off the project". However, I'm wondering as much about the actual standards and practices that were in place that allowed companies like Award, AMI, Phoenix, Compaq, etc to successfully productize and sell clone BIOSes.

Related

6
  • 8
    This is much more a legal than a technical question - Because "Clean-room implementation is whatever a court would have considered it to be". If you could prove to the court that you had done whatever you could to keep your engineers away from simply copying the BIOS from the IBM manuals, you were (maybe) safe.
    – tofro
    Mar 30 at 22:38
  • @tofro Fair enough. Though I'm not so much looking at it from a legal perspective, I'm more curious from the perspective of the "clean room developer" in terms of their job description for the project and what processes or tools they were told they would be allowed to use.
    – 640KB
    Mar 31 at 14:12
  • 1
    I don't know about the legal climate back then but, if you're trying to understand how it's handled today, give the Abstraction-Filtration-Comparison test Wikipedia page a read.
    – ssokolow
    Mar 31 at 21:05
  • I'm adding this as a comment here because it would apply to both the question and all answers: "Was re-writing the IBM BIOS actually rocket science?" - The answer to that is definitely "no". We are talking about a very modest amount of code that lives in the upper 64kBytes of ROM space in the original IBM PC. It has to handle floppy drives and (very rudimentary) memory management. It doesn't even have to have screen handling, because that is normally handled by the BIOS on the graphics card. Some of the comments seem to really mystify the complexity of the PC BIOS.
    – tofro
    Apr 4 at 17:33
  • @tofro for sure, BIOS wasn't rocket science -- just start some timers, stuff a few bytes into the right places in memory, write a simple keyboard buffer and so long as you have a third party storage and video BIOS you'll boot into DOS. Though, thinking about it from the perspective of back then, when the ISA wasn't such common knowledge and the BIOS was a black box which you were forbidden to look into, and knowing IBM's reputation for airplanes full of lawyers, it might have seemed a bit intimidating. :)
    – 640KB
    Apr 4 at 21:53

2 Answers 2

18

Apparently, US law allows analysis of an implementation as a base for a clean-room implementation, as long as the analysis and the implementation is done by separate teams that are only exchanging specifications written by the analysis team.

In the case of the IBM PC BIOS, analysis was particularily simple, because you only had to thoroughly read the technical reference manual.

Some quotes from Wikipedia, from a Computerworld article on reverse-engineering:

[…] dirty room reverse engineering should be done in conjunction with clean room development by using two physically and electronically isolated teams where one team does dirty room reverse engineering and the other does clean room development. If a dirty room team exists, the clean room engineers can write a description of the portion of the specification that needs elaboration or clarification. The dirty room engineers then use that request to create additional functional specifications or tests.

and from a blog post on clean room policies:

To protect against charges of having simply (and illegally) copied IBM's BIOS, Phoenix reverse-engineered it using what's called a "clean room," or "Chinese wall," approach. First, a team of engineers studied the IBM BIOS—about 8KB of code—and described everything it did as completely as possible without using or referencing any actual code. Then Phoenix brought in a second team of programmers who had no prior knowledge of the IBM BIOS and had never seen its code. Working only from the first team's functional specifications, the second team wrote a new BIOS that operated as specified.

Phoenix's WoW, apparently, did withstand the test before court — before its jury — I don't think there's a guarantee that would have worked everywhere and in front of every possible judge. So, it's hard to say what the limits are of what exactly you can or cannot do to have your WoW still be accepted as clean-room. Given that, by the time, you were to, almost inevitably, face IBM lawyers in court, the answer might be: there were no hard limits other than "have the implementation team stay off as far as they can from any trace of IBM's concrete implementation and collect as much proof of your actions as possible".

Obviously, you need to make very sure that the Chinese wall between your teams is never broken, and you need some proof it never was. I think the term "Chinese wall" alone answers some of your detail questions. Consider that impenetrable, or your clean room is likely to get dirty and your position in court severely weakened.

You can, obviously, give the implementation team specifications of the hardware and the computer that you're building — because the implementation is for your computer, not the IBM PC - even if that's more or less the same thing.

5
  • 9
    What does "WoW" mean here? Presumably not "World of Warcraft", or "Windows on Windows"...
    – IMSoP
    Mar 31 at 8:22
  • 2
    @IMSoP "Way of Working", mabe?
    – tofro
    Mar 31 at 8:44
  • 1
    Legally speaking, there is no need whatsoever to prove the Chinese Wall quality. It's a civil suit, judged on the balances of probabilities, and IBM's specific claim would be that there was copyright infringement. The existence of two teams and their documentation is already a defense that IBM would need to overcome.
    – MSalters
    Mar 31 at 14:08
  • @MSalters Hmmm. I'm definitely not a lawyer, but would assume if you claim something (like having the wall) it's always good you got some proof (and some documentation how you ensured it's tight) for it. "Balance of probabilities" - It's tempting to simply copy because it would be so much cheaper, so probabilities is not something you have on your side.
    – tofro
    Mar 31 at 15:07
  • 2
    @tofro: "if you claim something"- that's technically not what the defendant does in a civil suit. The plaintiff (i.e. IBM) claims something. That claim has to be tight; the defendant will try to poke holes in that claim. As claims go, "they could have broken the law" is pretty weak. If IBM claims "would have been cheaper", you show the expenses of the two teams.
    – MSalters
    Mar 31 at 19:59
5

Reverse-engineering code for purposes of interoperability is explicitly permitted by US copyright law (i.e., it is not part of the rights that the copyright holder can claim exclusive capacity to prevent others from doing). The problem was the possibility that the people who read the code might have been tainted such that they'd inadvertently rewrite the code with exactly the same sequences of instructions. If they had, IBM would have identified the sequences of code that were rewritten or copied from memory, and been able to claim copyright infringement. This is why Phoenix had to do it the way they did.

Having had prior access to the IBM Technical Manuals might run afoul of non-disclosure agreements (and thus be treated like a theft of trade secrets), if they were only distributed under secrecy. If they had legitimate, non-secret access to the Technical Reference, they could have referred to it and its schematics as long as they didn't refer to the code (as it would not have been a trade secret once it was made generally available).

A programmer could observe the outputs of a BIOS call via DEBUG. It is unknown whether they could trace into the BIOS (it would depend on the judge and jury), but I would not have risked it. They definitely could not disassemble or reference a disassembly of the IBM BIOS.

They would have been able to use a scope on a retail IBM PC, as it would not involve reading and potentially copying the code from the PC BIOS.

It likely would have been permissible to ask clarifying questions if the dirty-room team were still in existence. The specifications could be as detailed as the dirty-room reverse engineers felt necessary and appropriate.

Code reviews by the dirty-room team would be extremely iffy, and I would not have risked it.

If the dirty-room team had written unit tests for every function and its potential error conditions, those unit tests could have certainly been used to validate the clean-room implementation. (Unit tests are specifications written in code, and do not copy any code from the systems under test.)

Note well: I am not a lawyer. These are just where I think the boundaries would be, based on the problem as I perceive it to be from how it was explained to me.

9
  • 2
    "Having had prior access to the IBM Technical Manuals might run afoul of non-disclosure agreements" - Not in the specific case of the original IBM PC: The BIOS listings were delivered as part of the computer's documentation, and as such protected by literature copyright (apparently done on purpose because there was not much of a copyright law for software, but books were pretty well protected). As soon as you bought the computer, you had "legitimate access" to the BIOS source code, because you bought the books.
    – tofro
    Mar 31 at 13:19
  • 1
    "Unit tests": The term didn't even exist by then ;) You tried if it worked by hacking some instructions into DEBUG, and if yes, that was that. Same with "Code reviews" - That term was created 20 years after the PC. Back then, you simply asked a colleague "can you have a look, can't find that bug" (which was generally considered embarrassing).
    – tofro
    Mar 31 at 13:28
  • 1
    @tofro yes, I used the term "code review" in the OP in a retroactive kind of way. It would be more like a "Hey guys, I wrote the code exactly to your specs but something isn't behaving the same way as the IBM. Can you review it and 'update' the specifications as needed"?
    – 640KB
    Mar 31 at 13:50
  • All good points. I've always wondered about the book as to what specific information is absolutely "copyrighted" and what would be considered general info that learned by reading the book. For example some of the information specific to the Intel chipsets is effectively reproduced from the data sheets published by Intel. IBM can't claim copyright on that. It only becomes somewhat proprietary in terms of exactly how IBM chose to implement it in the ISA. Ex: the PIT is accessed through this port number we chose- information both a BIOS and application developer needs, so is hardly trade secrets.
    – 640KB
    Mar 31 at 14:00
  • 3
    Ideas cannot be copyrighted. Only the tangible form of the material can be copyrighted. But, you can't copy the tangible form of something you never saw. There was likely a lot of overlap in what Phenix created and what IBM had published, and that was the reason for the suit. Phoenix's defense was basically "People in the same industry will often independently express the same idea the same way, without referencing each other's code." The clean-room process was essential to prove that to the court.
    – sjcaged
    Apr 2 at 5:45

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.