why am i doing this to myself?
context.
this hex dump is actually *very cursed* for some surprising reasons
if you'll notice i'm decoding text as EBCDIC. this file is a set of "records" which are 80 bytes each. why 80? because that's what you could fit on one of these.
so this file is essentially a deck of punch cards. i've decoded the format.
there is a text field right up front (ebcdic, naturally) that describes the contents of the record. then there is an address followed by a length. then there is the data field (0x38 bytes long). unused space is filled with the ebcdic "space" character 0x40.
when you parse all the records in this deck, you wind up with a binary file that looks like this. but what is all this data?
well, it's an interrupt vector table followed by (starting at 0x200) a bunch of machine code. specifically, machine code for the motorola 68000 processor.
so that's a bit odd, you say. where exactly is this "card deck" from?
well, it's extracted from a program designed to run on a PC. yep. 68000 code that's been encoded for some sort of loader that speaks EBCDIC, running on an Intel 8088.
but it gets worse.
turns out the 68000 program that's in the card deck is designed to emulate IBM System 370 instructions. that's big iron -- a mainframe computer!
so, you might ask, what hardware is involved with this crazed combination of x86, 68k, and 370 code?
the answer is that it's this ISA card. it's designed to drop into an IBM XT computer. it's a bunch of TTL logic, but there are three devices on the far left with gold plated lids that are rather special.
here's a closeup of these devices. image shamelessly stolen from @bitsavers
but what are they? U67 (on the right) is a Motorola 68K processor. it's the device that runs the code from the punch card deck.
U66 (on the left) is also a Motorola 68K processor. but something is different--the microcode inside has been changed so that it doesn't run regular 68K code. instead it decodes and runs IBM System 370 code! well, most of it.
the System 370 was the crown jewel of CISC (complex instruction set computer) it had instructions for *everything* including operating the real-time clock!
due to that complexity, the most complex instructions had to be done by the 68K on the right, since the microcode architecture of the modified 68K (left) just was not up to the task.
but what about the third chip, the DIP-packaged device?
according to the docs, it is a modified Intel 8087 math coprocessor that has been changed to execute System 370 floating point instructions!
(the docs are wrong, btw, it is not an 8087. the pinouts do not match. i have some theories about this that are still under investigation.)
so why does this card even exist? (technically there are three cards to make a complete set: the CPU card, a RAM card, and a 3270 terminal emulator card)
it is because IBM sold a specific configuration of the XT computer (5160) called the XT/370 that came with these three cards installed, along with a suite of software that allowed it to act like a mainframe computer!
the reason is that mainframe computers were very expensive back in the day. the XT/370 allowed software developers to have a machine on their desk that they could use for development and testing without having to pay for expensive time on the mainframe!
granted it was not very fast, running at around 0.1 MIPS. for comparison, a low-end mainframe like the 4331 ran around twice as fast.
but the 4331 cost $1585 a month (2 year lease minimum), and you could *own* the xt/370 for about $12,000.
which is a really great deal if you have a room of software developers who *cost less than the mainframe* so you bet you want to have cheap desktop workstations for them so they don't tie up 🙌 The Mainframe 🙌
You can follow @TubeTimeUS.
Tip: mention @twtextapp on a Twitter thread with the keyword “unroll” to get a link to it.

Latest Threads Unrolled:

By continuing to use the site, you are consenting to the use of cookies as explained in our Cookie Policy to improve your experience.