Can I tell you a secret?

I see dead Systems

Avishai Ish-Shalom



Many many years ago

The IBM XT computer had 1MB of RAM.


It's shiny successor - AT 80286 - has just arrived and it had whooping 16MB of RAM


One problem: compatibility!

X86 Real mode

  • Registers are 16 bit, memory bus 20bit
  • 2 16bit coordinates: Segment, offset
  • Combined: Segment*16+offset
  • 4096 equivalent addresses for every physical address:
    0xFFFF:0x0005 == 0xFFF0:0x00F5 -> 0xFFFF5
  • If address > 20bit (0xFFFFF) wrap around:
    0xFFFF:0x000F + 1 = 0x100000 = 0x00000
int enable_a20(void)
       int loops = A20_ENABLE_LOOPS;
       int kbc_err;

       while (loops--) {
	       /* First, check to see if A20 is already enabled
		  (legacy free, etc.) */
	       if (a20_test_short())
		       return 0;
	       /* Next, try the BIOS (INT 0x15, AX=0x2401) */
	       if (a20_test_short())
		       return 0;
	       /* Try enabling A20 through the keyboard controller */
	       kbc_err = empty_8042();

	       if (a20_test_short())
		       return 0; /* BIOS worked, but with delayed reaction */
	       if (!kbc_err) {
		       if (a20_test_long())
			       return 0;
	       /* Finally, try enabling the "fast A20 gate" */
	       if (a20_test_long())
		       return 0;
       return -1;


  • A20 gate enables/disables real mode
  • A20 gate needed to be switched on/off
  • The keyboard controller had a spare pin
  • IBM routed A20 through the pin
  • Controlled with keyboard controller interrupt


Yes, we still do this today - on every boot!


Remember this?

Let's talk about terminals

  • The "terminal window" is in fact a terminal emulator
  • It works with a 40 years old protocol
  • Based on the 1869 stock ticker

Ever tried colors in the terminal?


This is also a terminal

X Windows

  • 1st version: 1984
  • Your app is an "X client"
  • "X server" provides KVM
  • They communicate over a network
  • Yes, you can run remote!
  • But it's also sllloooowww




(and yes, it's still used in ubuntu 18.04)

Want more?

The great CPU war


  • high level instruction set
  • Easy to program assembly with
  • Intel sold cheap x86 CISC chips


  • Low level instruction set
  • Fast
  • Easy to optimize
  • High-end CPUs were mostly RISC


And then Intel won

  • By the mid 90s Intel decided to move to RISC
  • Everyone were using x86 instruction set
  • Lots of proprietary (compiled) software
  • Itanium shipped in 2001 and was a bust


Guess what Intel did

You guessed it

  • Internal interpreter compiles CISC to RISC on the fly
  • CPU works with compiled RISC microcode internally
  • x86 instruction set compatability
  • Originally in Pentium Pro (1995) 



So now we have RISC CPUs with CISC interface. Brilliant.


(Disclaimer: there were unexpected benefits!)


Had enough?

  • tar
  • DNS
  • Email (SMTP)
  • NTP


Bonus points:

What is a CR-LF ?

What is Caps Lock?


You think that's bad?

  • Airplanes
  • SMS
  • Credit Cards
  • F*cking nuclear missles


VOIP running over DSL over analog phone line


I wasn't kidding about the nuclear missiles


How the #$@% did this happen



  • Physical
  • Logistics nightmare
  • Common dependency
  • Hardware, no SW upgrade



  • Hard to replace
  • No attention to compatibility
  • Standards (or lack of)
  • Abstractions
  • "Network effect"



  • No deprecation plan
  • Deprecation was never a feature
  • What if the 3rd parties refuse?


For the love of God

Build Deprecatable systems

Or a at least upgradable


Every good thing must come to an end

  • Have a deprecation plan
  • Extensible protocols
  • Data export
  • If it's active, it should be maintained
  • Upgradable or Replaceable


Thank you

I See dead Systems

By Avishai Ish-Shalom

I See dead Systems

The computer systems of today are riddled with legacy. Traces of dead systems are everywhere, burdening further progress and making our life harder.

  • 1,760