Emulador 8086 en 4096 caracteres de código C
¿Qué programarías si tu código fuente solo puediese tener 4096 caracteres de código en C?Ese es el reto que cada año propone el IOCCC (International Obfuscated C Code Contest), desafío que pone a trabajar a miles de programadores de todo el mundo en busca del programa más complejo, enredado, dificil de leer pero útil a la vez que se pueda escribir. De los ganadores que la edición 2013 sobresale uno en particular: un completo emulador del micro Intel 8086 capaz de ejecutar MSDOS y sobre él programas como AutoCAD, Windows 3.0, SimCity y muchos más.
Como dice su autor, Adrian Cable, "en tan sólo 4043 bytes el código se las apaña para implementar casi todo el hardware de un IBM-PC de la era de 1980, usando unos pocos bits menos de código que transitores en la CPU 8086 original".
En total, el programador ha conseguido emular todos estos dispositivos:
CPU Intel 8086/186
1MB de RAM
8072A
3.5″ floppy disk controller (1.44MB/720KB)
Contrlador de disco duro (hasta 528MB)
Tarjeta gráfica Hercules, gráficos 720×348 de 2 colores, 64KB de video RAM y suporte de modo texto CGA 80×25 a 16 colores.
8253 programmable interval timer (PIT).
8259 programmable interrupt controller (PIC).
Controlador de teclado 8042, con teclado de 83 teclas tipo XT.
Reloj de tiempo real MC146818.
PC speaker.
(No puedo pegar aca el código, pero está
en mi blog)
SimCity
Autocad
Flight Simulator
Windows 3.0
¿No es increible?