Programación en Lenguaje Ensamblador

-El Verdadero Lenguaje de las Máquinas-

Vagabundos de 32 Bits

¿Era ese el final de los Programadores de Ensamblador?

Esta historia es continuación de la nota anterior llamada “Desterrados de 32 Bits” que a su vez es continuación de “Revolución de 32 Bits” y cuenta uno de los episodios mas deprimentes en la historia de la programación en Ensamblador de principos de este siglo.

artedeprogramador

En la última entrada se cuenta como de la noche a la mañana, se volvió casi imposible programar en Ensamblador para computadoras con Windows basados en tecnología NT (como el 2000, ME y XP) y como muchos tuvieron que dejar de lado la programación en Ensamblador y rebajarse a manejar bases de datos para poder sobrevivir. Y de como mis compañeros programadores y yo decidimos hacerle frente a este destierro sin obtener lo que se dice los mejores resultados en el proceso. Sin mas, aquí está la historia:

El asunto no podía quedarse así, por lo que en ese entonces reuní a lo que entonces era mi pequeña banda de forajidos computacionales y en una junta tomamos una de las decisiones que, aunque tuvo muchas cosas buenas retrasó nuestro avance en el desarrollo de videojuegos por al menos nueve años. Ahí, frente a unos demos de DirectX, recuerdo especialmente uno de una calabaza de halloween que desplegaba un Framerate de 120 FPS, nos preguntamos:

¿Continuamos con la programación directa del hardware o nos metemos con DirectX?

¡Demonios! Si pudiera regresar el tiempo justo a ese instante me abofetearía a mi mismo hasta que solo me funcionaran el sentido del oido y el sentido común y me gritaría a mi mismo:

¡No seas 9*n3+@5! ¡Es perfectamente posible programar para Windows en Ensamblador!

Pero en ese entonces tenía un concepto muy equivocado sobre lo que era programar para Windows. Creía que la única manera de desarrollar para las versiones mas avanzadas de este sistema operativo era con herramientas como el Visual Studio y similares. Las cuales en ese entonces (o sus equivalentes de ese entonces) aunque eran buenas resultaban muy caras, extremadamente difíciles de conseguir, con infomación casi nula y aún bien dominadas el rendimiento del producto final no se comparaba con el de una aplicación programada completamente en Ensamblador. Por lo que, confiados en nuestra habilidad para programar en ASM tomamos una decisión tan valiente como ingenua: ¡Nuestros juegos debían de ser capaces de ejecutarse sin sistema operativo!

Hoy en día es mas o menos conocido el concepto de Live CD entre los aficionados a Linux. Y para los que no saben, un live CD es un disco que uno pone en una computadora y que es capaz de correr una aplicación completa sin necesidad de alterar en lo mas mínimo el sistema operativo instalado, y se usa para versiones de prueba de sistemas operativos. Nuestro plan era hacer juegos que funcionaran de la misma manera. Durante ese tiempo, que abarcó mas o menos 2 años aprendimos muchísimo sobre como hacer un sistema operativo y, al igual que cuando intentamos hacer un compilador propio y nos topamos con FASM, esta vez nos topamos con MenuetOS. Un interesante sistema operativo de Europa Oriental programado completamente en Ensamblador. Aprendimos mucho de esa experiencia, aunque mas hubiéramos aprendido de haber sabido hablar ruso. Algunas de las hazañas que conseguimos en ese entonces fueron:

  • Arrancar una PC sin sistema operativo por medio de un Bootloader en Floppy y CD
  • Hacer controladores de discos y periféricos para ese bootloader.
  • Entrar al modo protegido desde ese bootloader
  • Tomar control sobre el misterioso BIOS de 32 bits.
  • Manipular el BUS PCI y todos lo periféricos conectados al mismo.
  • Manipular las tarjetas de video de aquel entonces compatibles con el estandar VESA 2.0 y superior.
  • Mover grandes cantidades de datos con el DMA de 32 bits.
  • Y muchas cosas igual o mas impresionantes que al final no nos sirvieron para mucho.

menuetos

Al final, ya cuando teníamos la capacidad de desarrollar software mas o menos decente que corriera desde un live CD (por cierto, en esa época las grabadoras caseras de CD eran tan caras como una computadora de escritorio) nos topamos de narices con que la gente no aceptaba ningun software que no corriera en Windows. Era una ironía que aún teniéndo la capacidad de desarrollar un sistema operativo completo si hubiéramos querido eramos incapaces de programar unos humildes juegos.

A partir de entonces no ocurrió nada bueno, salvo el haber levantado una pequeña oficina en un local que había permanecido abandonado durante cuarenta años. Y que a pesar de tener serias carencias nos sirvió bien para continuar nuestras investigaciones por los primeros 2 años de este siglo XXI. En ese corto espacio jugamos a ser una empresa de 3 (5 si contamos al Samuel y a Aldape) programadores sin documentos ni ganancias. Pero que logramos uificar todo lo que hasta entonces habíamos desarrollado.

Sin embargo, al pasar el tiempo y no lograr avances que fueran redituables el grupo se fue debilitando. Ya no éramos mas los programadores capaces de trabajar en un demo por 3 días seguidos de campamento en la oficina, algunos se vieron obligados a trabajar por hambre y necesidad. Eso sin mencionar que en ese entonces fue cuando me expulsaron de la universidad cuando ya iba en mi penúltimo semestre. El juicio fue algo traumático pero mas traumáticos fueron los meses antes y después del mismo. Y como ya comenté, no podré poner un pie en mi antigua facultad hasta bien entrado el 2024. Pero si regreso no va a ser como estudiante. Por cierto, mas o menos a la mitad del siguiente año fue cuando nuestro grupo de desarrollo acabó de desmoronarse por completo. Aunque aun nos veíamos ocasionalmente para planear estrategias que nunca llevábamos a cabo. Y aunque habíamos caído, aun no estábamos muertos.

Y aun estaba por venir lo peor…

Los siguientes dos años fueron los peores, no tiene caso que comente mis tragedias personales pero solo voy a decirles que en ese entonces fue cuando comenzó mi odio contra los lamers, pues en ese tiempo no encontraba trabajo ni como barrendero y el ver como todos los empleos en computación se los llevaban gentes cuyas únicas habilidades eran copiar querys, escribir documentos html (y no precisamente con un editor de texto), hacer clientes con editores de Visual Basic y trabajar con hojas de cálculo era algo que me enfurecía mas allá de los límites del razonamiento humano. Aún recuerdo como disimulé el asco al saludar de mano a un jefe de recursos humanos que tenía unas horribles manchas en la piel.

Y así pasé ese tiempo hasta que un día me llegó el chisme de que al otro lado del mundo alguien estaba desarrollando una nuevo consola de videojuegos y que no encontraba programadores. Esa pequeña aventura fue lo que me mantuvo vivo durante esos años negros y aunque no terminó como me hubiera gustado,si me hizo sentirme mejor conmigo mismo y me ayudó a reconstruir parte de mi antiguo equipo de desarrollo. Dicho aparato era conocido como GP32 de una empresa de Corea del Sur llamada Gamepark ubicada en Seoul. Espero poder escribir sobre ese asunto un día de estos. Pero supe que lo peor había pasado cuando, durante una sesión de programación con esta consola portatil, el buen Julio dijera:

–Te ves mucho mas repuesto que como te veías en los años de universidad… ¡En especial el último!

En fin, en el tiempo en que tuve esa consola coreana en mis manos recuperé mucho de lo que había perdido en años anteriores y si no fuera porque mi familia me obligó a rehacer mis estudios muy probablemente estaría escribiendo este blog desde algún lugar de Corea del Sur. Sin embargo, a pesar de esta gran victoria semipersonal (pues el Julio también colaboró muy de cerca) la programación para sistemas Windows había quedado abandonada durante siete años y dudo que en los 2 próximos años pueda hacerse algo que valga la pena vender. Apenas hace un año y luego de meses de ingeniería inversa y otras artes oscuras que no se si sea seguro mencionar en público es que logré hacer funcionar el ensamblador en una computadora con CPU de nucleo múltiple en Windows Vista. Y es ahora cuando realmente puedo retomar todo lo que dejé pendiente hace ya tanto tiempo.

Derrotados pero no muertos

Como se dijo en la nota anterior, este regreso a la programación en Ensamblador para Windows se debe en gran parte a los esfuerzos de grandes programadores como Iczelion, el autor del FASM Thomasz Grysztar, gente de sitios como asmcommunity.net y otros muchos mas que a partir de mucha investigación lograron devolverle su merecido lugar a la programación en ASM. En la siguiente entrada se hablará de este feliz regreso. Sin embargo, apenas se había descubierto el camino a seguir. El recorrerlo y llegar hasta el final era un esfuerzo de proporciones épicas, mismas que se detallarán en la siguiente nota donde además de eso se contará como los programadores de Ensamblador regresamos al territorio del que alguna vez fuimos cruelmente expulsados.

Anuncios

diciembre 6, 2009 - Posted by | Uncategorized | , , ,

9 comentarios »

  1. Sigue adelante hermano que la vida siempre te da palos para que te rindas , tu dale palos a la vida .

    Saludos

    Comentario por Un Misterioso programador de Ensamblador | diciembre 10, 2009 | Responder

  2. Feliz año nuevo !!

    Comentario por Un Misterioso programador de Ensamblador | diciembre 10, 2009 | Responder

  3. vas mejorando con tus dibujos en paint. ¿Pero que no te habian expulsado, en el anteanteantepenultimo semestre?

    Comentario por b1ackpig | diciembre 10, 2009 | Responder

    • Pues llevaba Circuitos Digitales con Vale (ese que parecia personaje de peliculas de kung fu de los 70’s) que era una materia de octavo semestre de 9 que eran. Ademas la llevaba buen tiempo ahi dentro. Entonces cuenta como de penultimo semestre. El que haya llevado una o 2 materias atrasadas es otro asunto.

      Comentario por asm86 | diciembre 10, 2009 | Responder

  4. mmm yo kisiera saber donde empiezo para crear mi Kernel? me puedes ayudar.. es que quiero crear mi propio SO, osea lo que kiero es hacer lo mismo que hisite vos.. hacer un juego que no dependa del SO..
    Saludos

    Comentario por Pavon | noviembre 29, 2010 | Responder

    • El mejor lugar para empezar a hacer un sistema operativo es jugar con los sectores de arranque. Si logras arrancar una computadora programando tu propio sistema de arranque desde un medio externo luego podras instalar tu propio software operativo. Te aconsejo que busques una PC antigua que no aprecies porque puedes arruinar el software existente, de preferencia una con discos de 3.5 o arranque USB.

      Comentario por asm86 | noviembre 30, 2010 | Responder

      • Bueno.. necesito crear un BootLoader.. ahora mi pregunta es la siguiente: como creo un bootloader en asm de 64bit? osea como se puede tradusir digamosle, de asm de 32bit a 64bit?

        Comentario por Pavon | noviembre 30, 2010

      • Primero considera lo que vas a hacer, hacer un bootloader solo lo vale para hacer un sistema operativo o utilerias muy especializadas. La ultima vez que hice uno habia que escribir una rutina en el sector de arranque de un disco de 3.5 (aunque puede hacerse con un disco duro o una memoria externa). Los procesadores intel por default arrancan (o arrancaban) en modo real de 16 bits. Por lo que hay que escribir la rutina del bootloader en este y luego entrar al modo protegido. Lo mejor es hacer una rutina que lea a su vez otro codigo para inicializar.

        Cosas aparte, es posible hacer un buen juego en ensamblador para windows sin necesidad de correr sin sistema operativo. Son mas optimos que los juegos hechos en cualquier otro lenguaje. Otra cosa es que muchos gamers no van a ver con buenos ojos un juego que necesite salir del windows para funcionar. Si a pesar de esto aun quieres hacer un bootlader puedes buscar en google “bootloader” y seguir las instrucciones.

        Comentario por asm86 | diciembre 5, 2010

  5. las pc actuales inician en modo real?? osea lo que quiero saber es si se puede hacer un bootloader de 64 bit

    Comentario por Pavon | febrero 11, 2011 | Responder


Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: