Escribir un compilador, aunque sea reducido en posibilidades es un reto, pero hacerlo además para un procesador como el 6502, con las limitaciones que imponían estos chips de 8 bits, resulta aún una tarea más compleja y de alguna manera más ingrata. Nick Gammon, aunque tenía experiencia en la programación en ensamblador (del 6800 de Motorola), emprendió el trabajo de escribir un compilador de Pascal para una máquina con un microprocesador como el 6502. Sus primeros intentos por comercializarlo no parecen haber dado muy buenos resultados, aún así, no desistió en su esfuerzo.
En abril de 1983 Nick fue contactado por Ian Webster, el editor de la revista Australian Computer, quien quería hablas con él. Ian había visto G-Pascal para la Apple II y sugirió que portara su programa a la Commodore 64 que en principio se pensaba sería incluso una máquina más poderosa que la Apple. Gammon se compró una Commodore 64 y desarrolló un método para transmitir sus archivos de la Apple II a la Commodore a través del puerto paralelo. Esto significó la posibilidad de usar el ensamblador que había comprado para la Apple y ensamblar programas para que corrieran en la Commodore. La Apple de Nick tenía ya una unidad de discos y un ensamblador (Merlin), que simplifica mucho el problema del ensamblar los programas.
El método de transferencia de datos implicaba dos programas, que se cargaban en ambas máquinas y una se inicializaba para mandar y otra para recibir datos. El mecanismo resultó muy rápido y en pocos segundos se mandaban todos los archivos de G-Pascal. La Commodore 64 tenía una tecnología de sprites para hacer gráficas, cosa que no tenía la Apple II, por lo que Nick agregó las rutinas para ello en su compilador. Igualmente hizo uso de las posibilidades de la pantalla de color y del chip de sonido. Todo esto agregó 4K al sistema. Ahora sí, el compilador ya tenía, sólo él, unos 16K de tamaño.
Para noviembre de 1983, en la revista “Your Computer”, Nick halló una crítica muy favorable de su producto parea la Commodore 64 y el autor del artículo decía: “Habrán escuchado probablemente que los programadores australianos son tan buenos como cualquier otro, bueno, aquí está la evidencia”
Nick piensa que eventualmente vendió unas 2000 copias de G-Pascal. Ciertamente hizo algo de dinero, aunque una buena parte de éste se fue en los anuncios. Probablemente Gammon habría hecho mucho más dinero en un trabajo normal, por lo cual decidió en algún momento a su trabajo tradicional.
Nick piensa que el trabajo de escribir programas en ensamblador, usando papel y lápiz, era interesante. Dice que se volvió muy bueno recordando los códigos de las instrucciones más usadas. De alguna manera le entra la nostalgia por esos días.
Si a usted le interesa probar G-Pascal (no necesita una Commodore 64, puede usar algún emulador de los muchos que hay en Internet, como por ejemplo, VICE), puede descargar las imágenes de los discos. También puede hacerse del manual (vea las referencias).
Más allá de toda esta historia, el realizar este tipo de programas es una tarea complicada y la historia refleja -por lo menos para mí- que no se necesita más que mucho interés y ganas de realizar un programa determinado. En el caso de Gammon, el artículo de Byte sobre el “Tiny Pascal Compiler” fue un elemento fundamental para este desarrollo. A pesar que finalmente, en un artículo (aunque haya sido en tres partes), tiene la información básica e incluso muchas veces abreviada, nos muestra que tampoco se requiere de mucha teoría o cursos de un año para poder hacer una tarea como la de escribir un compilador. Hoy en día tenemos además una serie de herramientas de programación que rebasan por mucho las posibilidades técnicas de los años 80s. Y además, el hecho de que Nick Gammon ya haya decidido dar acceso a su código fuente puede ser inspiración para realizar este tipo de trabajos en sistemas embebidos, por ejemplo. Vamos, que no necesariamente es un trabajo que hoy mismo no tiene sentido. Es más, simplemente en términos de aprendizaje me parece buena idea “hincarle el diente” a este código.
Referencias: