x86 On Acid

Abstract: To really get to know the inter-workings of a “common” computer at the machine level. One can make/do very cool things using assembly with DOS (FreeDOS of course!), a parallel port, a COM port and even the video display! This would prelude into building some devices (via parallel port or even PCI bus) and controlling them using DOS in ASM.

Why DOS (FreeDOS) and not GNU/Linux? We keep it simple. DOS doesn't have the overhead like GNU/Linux. That is to say, DOS will provide only the basics for one to start playing around with the hardware directly on the computer without any restrictions and if you make a mistake it will blow up in your face. (Hit reset and try again! :)

Why 80×86 and not ARM/PIC/Z80? Because the chances are higher to find a x86 box on the side of the road than a nice micro-controller. They are easily obtainable and (IMO) fun to program.

Why assembly and not C or something higher level? Psh… whats the fun in a higher level language? ASM will bring the programmer to a more “intimate” level to the hardware.

Equipment:

  • A 80×86 machine with:
  • KVM ability
  • Parallel/Serial port(s)
  • Hard Disk (>= 1 GB)
  • Serial and Parallel port breakout boxes (can be made)
  • Male/Female serial/parallel ports (many!)
  • Oscilloscope (or a voltmeter would do)
  • Some LEDs, switches, basic ICs… the normal hacker tool-chest of components.

Some projects ideas after learning basic ASM:

  • Basic I/O from keyboard/mouse
  • Video Display Hacking:
  • With DOS calls, then BIOS calls.
  • Working with the display memory directly.
  • Sound:
  • Working with the sound card
  • Working with the internal system bell (that can be fun)
  • Flipping of LEDs on the parallel port.
  • Reading switches from the parallel port.
  • Combining all of the above to make a simple game (space invaders or pong using custom controllers though the parallel port)
  • Simple operating system development
  • The list goes on! Many very cool things one can do with a x86 machine and ASM!

Tutorials/Reference:

Document TODO:

  • Add more tutorials and maybe write up some…
  • Add schematics with PCB layout…
project/x86_on_acid.txt · Last modified: 2010/01/12 13:15 by kuzew