producción

PhrozenC

Descargar 2010_phrozenc.zip

Créditos

  • Código — NoRecess
  • Motor — Small-C, by Ron Cain

Créditos tal como figuran en la release.

PhrozenC es un compilador de C basado en el compilador SmallC K&R original (¡1981!). Le añadí algunas funciones menores, como la opción #include o un mejor uso de la memoria. También hice una versión que funciona en un CPC de verdad (en versión de archivo y en versión ROM).

Small-C lo escribió Ron Cain en 1980, para las máquinas CP/M de entonces, entre las que está el Amstrad CPC. A principios de 2010 volví a encontrar sus fuentes, las compilé para el PC y me parecieron notablemente económicas en memoria. Por gusto, como la mayoría de los proyectos, intenté un portado real al CPC. Al principio no funcionó como esperaba; costó bastantes dolores de cabeza antes de conseguirlo.

Lo que hace es sencillo: convierte un archivo C y todo lo que incluye en un único fuente en ensamblador, listo para el Maxam de Arnor o el WinAPE de Richard Wilson. Compila en una sola pasada, así que nunca tiene que guardar el programa entero en memoria.

Las versiones

  • Windows — un programa autónomo de línea de órdenes.
  • CPC 464 / 464+ — un programa autónomo que ocupa toda la memoria de la máquina y destruye lo que hubiera antes. Publicado por compatibilidad, y no es la versión que conviene elegir.
  • CPC 6128 / 6128+ — gobernado por una RSX, usando los 64K adicionales para mantener el compilador comprimido y dejar intactos los primeros 64K.
  • CPC 6128 / 6128+, ROM — otra vez una RSX, usando los 48K superiores (bancos C5, C6 y C7) y dejando intactas la memoria residente y el banco C4. Es la que hay que usar junto a las ROM de Arnor: Protext, Maxam y Promerge.

Capturas de pantalla

Un fuente C abierto en Protext, que incluye PRINT.C y muestra el alfabeto en un bucle
El fuente, escrito en Protext en la propia máquina.
La pantalla de arranque del CPC con PARADOS, PROTEXT, MAXAM y PhrozenC V1.0, y luego una compilación sin errores
PhrozenC anunciándose entre las ROM de Arnor, y una compilación que acaba con cero errores.
El ensamblador Z80 generado, abierto en Protext, que empieza por org &4000
Lo que sale: un único fuente en ensamblador, listo para Maxam.