Unless you want to keep arguing semantics, I can pull us out of this.
One set of Compaq engineers analyzed the published source code and specifications for IBM's BIOS, writing notes to describe only what it did -- no code allowed. Another set of engineers who had never seen the IBM BIOS documentation took those notes and wrote a BIOS to mimic that behavior.
But if you want to take this off on another semantic rant, is source code software? Your definition of software is instructions that make hardware do stuff, yet source code does nothing but tell a compiler or assembler how to make something that tells hardware to do stuff.
So if you want to get really freaky semantic, Compaq reverse engineered neither hardware nor software, but source code.
Correct. One group looked at the code, one group looked at how the code works.
But if you want to take this off on another semantic rant, is source code software?
Are you claiming source code is not software? Oh please!
Your definition of software is instructions that make hardware do stuff
Not my definition, the definition
yet source code does nothing but tell a compiler or assembler how to make something that tells hardware to do stuff.
Source code is one state of software (not complied). Software has many states: source code, object code, machine code. Different states but it is all software. Compilers change the state of software usually from source code to object code. Source code, object code, machine code is merely different types or states of software.
So if you want to get really freaky semantic, Compaq reverse engineered neither hardware nor software, but source code.
Source code = software.
Source code is software readable by people
Object code and machine code is software readable by computers.