PCjs Machines

Home of the original IBM PC emulator for browsers.

Logo

PCjs Blog

Halt and Catch Liar

I had high hopes for the new AMC series “Halt and Catch Fire,” but it has proven to be an utter disappointment. I think I can suspend my disbelief as well as anyone, but this show requires you to completely turn your brain off in order to be believed. I’m also baffled by the show’s high IMDb score, which is currently 8.4 (out of 10). Either AMC has figured out how to game the system, or viewers are easily turned on by clichés, like the know-it-all Hot Programmer, the self-assured Sales Guy, and the non-plot-advancing sex that they almost instantly engage in.

The premise: ex-IBM Sales Guy waltzes into a fictional computer company, smooth-talks his way into a top marketing position without so much as a resumé, and then immediately risks all, including a huge potential lawsuit with IBM, because he has dreams of building IBM clones that are “2x fast” at “1/2 price” – with handles!

And the first thing they must do to achieve this dream is clone the IBM PC ROM BIOS, which the show pretends was so secret that you couldn’t even tell which chips on the IBM PC motherboard contained the ROM. Never mind that IBM published the entire ROM BIOS listing in their Technical Reference Manual, which also included system diagrams identifying every chip in the machine. I think if you’re going to weave facts into your fiction, the least you can do is get your facts right.

And centerpiece of this whole conceit – the cloning of the IBM PC ROM BIOS. What a farce! Check out this scene from Episode 2, where Brilliant Engineer looks at Hot Programmer’s whiteboard in awe. Apparently, he is easily awed, because he did the same thing when Sales Guy wrote “2x fast, 1/2 price” on an earlier whiteboard.

"Halt and Catch Fire" Scene from Episode 2

So if you deconstruct the code on this whiteboard, you quickly notice that while it IS assembly language, it is NOT the sort of assembly language you would find in a ROM BIOS, let alone ANYTHING that would leave you in awe.

Here are some excerpts:

Initialization
	MOV  AX,CX      ; set up DS
	MOV  DS,AX
	MOV  SS,AX      ; and SS
	LEA  AX,BEGINSTACK
	MOV  SP,AX
	MOV  AL,OUTINT
	...
TSTART
	LEA  AX,BEGTRACE
	MOV  POINT,AX
	MOV  AL,YES     ; TURN TRACE ON
	MOV  TFLAG,AL
	MOV  AL,NO      ; NOT WRAPPED
	MOV  WRAP,AL
	MOV  AX,CS      ; CONVERT ADDRESS FOR OUTPUT
	LEA  SI,LOADCS
	CALL HEXPRT
	MOV  AX,100H
	LEA  SI,LOADIP
	CALL HEXPRT
	LEA  DX,SIGNIN
	MOV  AH,9
	INT  DOSINT
	LEA  DX,OUTPUT
	MOV  AL,OUTPUT (?)
	MOV  AH,25H     ; Set Interrupt Vector
	INT  DOSINT     ; Have DOS place the interrupt...
	...

This is clearly NOT code for a PC ROM BIOS, because no PC BIOS would ever issue a DOS interrupt. A BIOS is designed to be called by DOS, not the other way around.

This turns out to be code largely copied from a file I found online: PCTRACE.ASM

Another curiosity is that searching for this resulted in a “Googlewhack” of sorts:

Googlewhack

Technically, a Googlewhack (a two-word search that yields exactly one result) must use two words found in an actual dictionary. But dictionaries are so passé.

Jeff Parsons
Jun 14, 2014