Última actualización de la página, compilador o documentación: 13 enero 2014
(ver sección Novedades para consultar últimos cambios)
Índice

Descripción
El lenguaje ccz80 tiene una sintaxis basada en el lenguaje C. Trabaja en modo de línea de comando bajo Windows, pero es posible usarlo bajo Linux con WINE o MONO y también en Mac con MONO. A partir de un programa escrito en lenguaje ccz80 el compilador genera un fichero ejecutable binario para un ordenador basado en Z80 o un emulador y también un fichero ensamblador equivalente.
El compilador es gratuito para cualquier uso y la librería de funciones existente en esta página es de código abierto, pero el código fuente del compilador no está liberado.
Es necesario tener instalada la librería Microsoft .NET Framework 4 Client Profile para utilizar el compilador, el IDE y la utilidad de instalación.
Uso
Se recomienda utilizar el ccz80 IDE, que incluye un editor especializado para código ccz80 y la comodidad de compilar, localizar errores, corregirlos en diferentes archivos, especificar las opciones del compilador de forma visual, etc. desde un mismo programa.
Si no se utiliza ccz80 IDE son necesarias las siguientes utilidades (se recomienda crear una carpeta dedicada al compilador, los ficheros de librerías de funciones y los ficheros fuente, objeto y binario generados):
  • Un editor de textos para escribir el programa fuente en lenguaje ccz80, como UltraEdit, PSPad, Notepad++, etc.
  • El compilador ccz80 (fichero ccz80.exe).
  • La librería estándard (fichero standard.ccz80).
  • Los ficheros de librerías necesarios dependiendo del ordenador destino del programa (ficheros cpc464.ccz80, cpc6128.ccz80, spectrum.ccz80 o msx.ccz80).
Si se escribe y salva un programa ccz80 llamado programa.ccz80 y se quiere ejecutar in la dirección #A000 (40960), para compilarlo se puede escribir en la línea de comandos:
ccz80 programa.ccz80 /org=#A000
Con esto se tendrá creado el fichero binario programa.bin, o el código ensamblador equivalente programa.asm si se especifica la opción /asm, si la compilación es correcta. Tras esto es necesario pasar el fichero binario a un ordenador real o a un emulador.
Para facilitar la labor de edición y compilación se puede utilizar opcionalmente el IDE que corresponde al fichero ccz80IDE.exe.

Ejemplos
Este ejemplo sirve para crear bajo Windows un programa para el emulador ZX Spin del ZX Spectrum. Los pasos recomendados son:
  1. Crear una nueva carpeta en el disco duro.
  2. Descargar el compilador y copiar el fichero ccz80.exe, la librería estándar standard.ccz80 y la librería spectrum.ccz80 a la carpeta creada.
  3. Abrir un editor de texto (por ejemplo Notepad), escribir y salvar con el nombre caracteres.ccz80 en la carpeta creada el siguiente programa en lenguaje ccz80 (tras salvar este programa no es necesario cerrar el editor de texto):

    include "spectrum.ccz80"; // Usar la librería de Spectrum (la librería estándar es incluída por la librería spectrum)
    byte i; // Declarar una varible byte
    stream(2); // Establecer el cauce actual hacia la pantalla principal
    for (i = 32; i <= 128; ++i) // Bucle donde i comienza con 32 y termina con 128 para ejecutar la siguiente línea
    printc(i); // Llamada a la función printc (incluida en la librería spectrum.ccz80)
    return; // Finaliza el programa y regresa al BASIC

  4. En Windows pulsar Inicio/Ejecutar, teclear cmd y pulsar Aceptar para abrir una ventana de comando.
  5. En la ventana de comando, ir hasta la carpeta creada utilizando la orden CD.
  6. Cuando se encuentre en la carpeta creada escribir la siguiente sentencia en la ventana de comandos:

    ccz80 caracteres.ccz80 /org=50000

    Si se muestra algún mensaje de error, comprobar el programa fuente escrito en el paso 3 y salvarlo tras corregirlo. No es necesario cerrar la ventana de comandos para los siguientes pasos.
  7. Ejecutar el emulador ZX Spin y usar la opción File/Load binary file. Pulsar el botón de carpeta para explorar y encontrar el fichero caracteres.bin generado en la carpeta creada tras el paso previo; teclear 50000 como dirección inicial y pulsar el botón Load para cargar el contenido del fichero en la memoria del emulador.
  8. Finalmente teclear en el emulador el comando RANDOMIZE USR 50000 para ejecutar el programa. Esto es todo.
Se puede volver al editor de texto, modificar el programa y repetir las operaciones para crear nuevos programas.
Otro ejemplo, también bajo Windows, para el modelo Amstrad CPC 464:
  1. Crear una nueva carpeta en el disco duro.
  2. Descargar el compilador y copiar el fichero ccz80.exe, la librería estándar standard.ccz80 y la librería de Amstrad cpc464.ccz80 a la carpeta creada.
  3. Abrir un editor de texto (por ejemplo el Notepad), escribir y salvar con el nombre caracteres.ccz80 en la carpeta creada el siguiente programa en lenguaje ccz80 (tras salvar este programa no es necesario cerrar el editor de texto):

    include "cpc464.ccz80"; // Usar la librería de Amstrad CPC 464 (la librería estándar es incluída por la librería Amstrad)
    byte i = 32; // Declarar una varible byte e inicializarla con 32
    repeat (224) // Bucle de 224 repeticiones para ejecutar la siguiente línea
    printc(i++); // Llamada a la función printc (incluida en la librería cpc464.ccz80) y post-incrementar la varible i
    return; // Finalizar el programa y regresar al BASIC

  4. En Windows pulsar Inicio/Ejecutar, teclear cmd y pulsar Aceptar para abrir una ventana de comando.
  5. En la ventana de comando ir hasta la carpeta creada utilizando la orden CD.
  6. Cuando se esté en la carpeta creada escribir la siguiente sentencia en la ventana de comando:

    ccz80 caracteres.ccz80 /org=#A000

    Si aparece algún mensaje de error, comprobar el programa fuente escrito en el paso 3 y salvarlo tras las correcciones. No es necesario cerrar la ventana de comando para los siguientes pasos.
  7. Ejecutar el emulador WinCPC y usar la opción File/Load binary file, teclear A000 como dirección de carga y en el emulador teclear la sentencia CALL &A000 para ejecutar el programa ccz80 creado.

Descargas
Eel compilador, documentación y utilidades se pueden descargar en el siguiente enlace:
Si la instalación se quiere hacer dentro una carpeta protegida por el sistema, por ejemplo C:\Archivos de programa, es necesario ejecutar la utilidad de instalación con permisos de administrador. Igualmente, para permitir la modificación del archivo de configuración, la aplicación IDE debe ejecutarse también con permisos de administrador.

Enlaces
Enlaces a algunos programas y utilidades mencionados en esta página:

Novedades
13 ene 2008 Liberada la versión inicial 1.0.0 del compilador, librerías y documentación.
14 ene 2008 Compilador versión 1.0.2
  • Corrección en la operación de decremento de variables word.
  • Corrección en la optimización de líneas precedidas de línea en blanco.
17 ene 2008 Compilador versión 1.0.3
  • Cambio en el formato de mensajes de error.
  • Cambios internos para aumentar la velocidad de compilación.
Pequeñas mejoras en la documentación de ccz80.
Añadido un fichero de sintaxis para usar con UltraEdit (en la sección Descargas).
Añadido un forum dedicado (en la sección Contactar).
20 ene 2008 Compilador versión 1.1.0
  • Añadidas sentencias const y string.
  • Correcciones en la evaluación de los operadores && y ||.
  • Correcciones en la evaluación de suma de constantes numéricas.
  • Algunos cambios para intentar mayor velocidad de compilación.
  • Permitir escribir comentarios en cualquier lugar del código y eliminarlos del código ensamblador producido.
  • Limitar a aproximadamente 130 caracteres por línea de código ensamblador producido, para compatibilidad con más ensambladores.
  • Constantes de caracteres se escriben tal cual, no como el código ASCII correspondiente, para mejorar la comprensión del programa.
  • Etiquetas para la declaración de variables, tablas, cadenas, etc. aparecen en una sóla línea en el código ensamblador, para compatibilidad con más ensambladores.
Cambios en la documentación para las nuevas sentencias.
26 ene 2008 Liberada la versión inicial 1.0.0 del IDE ccz80 (en la sección Descargas se encuentra la aplicación y la documentación).
29 ene 2008 Liberada la versión 1.0.1 del IDE ccz80 con algunos errores corregidos y nuevas opciones para recargar un fichero y cambiar la fuente de las ventanas de edición.
03 feb 2008 Liberada la versión 1.0.2 del IDE ccz80 corrigiendo la activación de algunas teclas rápidas.
06 feb 2008 Añadida una librería básica para MSX.
20 feb 2008 Nuevo enlace relacionado con MSX.
24 feb 2008 Compilador para Linux.
02 abr 2008 Compilador versión 2.0.0
  • Añadida la claúsula inline en la definición de funciones.
  • Ensamblador integrado para generar el fichero binario directamente, junto al fichero ensamblador equivalente
  • Modificaciones en la sintaxis de algunos elementos del código ensamblador generado para el ensamblador integrado.
  • Otras pequeñas correcciones.
Cambios en la documentación para las nuevas sentencias.
Modificaciones en la sintaxis de las librerías de funciones (estándar, Amstrad CPC, Spectrum y MSX) para el ensamblador integrado.
Modificaciones en algunas funciones en las librerías para su optimización mediante la claúsula inline.
Cambio en la documentación del lenguaje ccz80 para explicar las novedades.
Eliminación de la versión del compilador para Linux (usar la versión Windows con WINE o MONO).
04 abr 2008 Actualización de fichero de sintaxis para UltraEdit.
15 abr 2008 Compilador versión 2.0.1
  • Añadido el parámetro /asm al compilador ccz80.
  • Algunas mejoras en la optimización de código.
Cambio en la documentación para describir el parámetro /asm.
28 abr 2008 Compilador versión 2.0.2
  • Evitar especificar como fichero fuente el valor "".
  • Evitar el aviso 'Constant not used' cuando sí es utilizada.
  • Correcciones en la evaluación de expresiones.
11 sep 2008 Compilador versión 2.0.3
  • Corrección del error cuando se utiliza una etiqueta como parámetro para un argumento de tipo byte en la llamada a una función.
23 oct 2008 Añadida versión en español de la página web.
Pequeñas correcciones y añadidos en el contenido de la página web.
29 oct 2008 Añadida versión en español del documento de especificación del lenguaje.
Correcciones en la versión inglesa de la web.
24 nov 2008 Versión 1.0.3 de IDE ccz80 con pequeñas correcciones.
Manual de IDE ccz80 en español.
Corrección del manual IDE ccz80 en inglés.
Liberado código fuente del IDE ccz80.
27 dic 2008 Publicada librería y documentación para usar rutinas de Sprites Alive en Amstrad CPC.
11 ene 2009 Compilador versión 2.0.4
  • Corregida la evaluación del operador ! para valores de tipo word.
  • Añadida la etiqueta __end_program al final del código fuente ensamblador generado para conocer donde comienza el espacio libre en memoria.
27 mar 2009 Compilador versión 2.0.5
  • Nueva opción para el compilador /include para especificar rutas de búsqueda de ficheros incluídos en el programa.
  • Permitir el uso de etiquetas con los operadores == y !=.
  • Permitir en el código ensamblador las instrucciones indocumentadas (uso de registros IXh, IXl, IYh, IYl y rotación/desplazamiento).
  • Si el parámetro del comando repeat es 0 no ejecutar el bucle (previamente a la corrección se ejecutaba 65536 veces).
  • Evitar error de ejecución del compilador cuando se omitía un elemento en una lista separada por comas (en los parámetros de una función por ejemplo).
  • Optimización para eliminar de la pila los parámetros de una función tras la ejecución de la misma.
  • Mejoras en las operación de producto, división y módulo y pequeñas mejoras en la optimización del código.
  • Mejora en el formato del código fuente ensamblador obtenido con la opción /asm.
  • Mostrar mensaje de compilación finalizada cuando no hay errores.
11 abr 2009 Nuevo formato en la sección de descargas.
17 abr 2009 Compilador versión 2.0.6
  • Corregidos errores al usar comillas (\") o punto y coma (;) dentro de una constante de cadena.
  • Nueva opción del compilador /post para lanzar otras aplicaciones tras la compilación.
  • Nueva directiva datafile para incluir ficheros binarios en un programa ccz80.
24 jul 2009 IDE version 1.0.6, almacena las opciones en un fichero .INI, no en el registro de Windows.
26 jul 2009 Incluído en el paquete para Amstrad CPC la librería sprUtilCPC para programar usando sprites.
5 ago 2009 Compilador ccz80 versión 2.0.7: admite claúsula register para funciones de un parámetro que pasan el valor en registro y no en pila.
Optimización de librería estándar y librerías específicas de cada ordenador para aprovechar la claúsula register.
Actualización de ficheros de sintaxis para los editores para la nueva claúsula.
Actualización de la documentación sobre la claúsula register.
Corrección de algunos errores en las librerías.
11 oct 2009 ccz80 IDE versión 1.0.7: corregidos algunos pequeños errores.
20 oct 2009 Incluida librería para utilizar rutinas de Fourspriter 1.0 para Spectrum.
15 feb 2010 Nueva versión del compilador ccz80 2.0.8:
  • Permite inicializar una cadena de texto en la declaración con la instrucción string.
  • Corregidas las funciones printf, fprintf y lprinf en las librerías para Amstrad CPC para la escritura de números reales negativos.
  • Muestra información resumen del fichero binario generado.
13 abr 2010 Nueva versión del compilador ccz80 3.0.0:
  • Permite escribir las palabras clave en mayúscula o minúscula.
  • Añade la posibilidad de crear macros con la instrucción define.
  • Eliminada la instrucción const cuya funcionalidad es sustituida por define.
29 oct 2010 Corrección en funcion save para Amstrad CPC.
2 nov 2010 Nueva versión del compilador ccz80 3.0.1 para Microsoft .NET 4 con aumento de 25% la velocidad de compilación.
12 nov 2010 Nueva versión del compilador ccz80 3.0.2:
  • Uso de Microsoft .NET 4 Client Profile para disminuir los requisitos necesarios del equipo.
  • Añadidas algunas optimizaciones del código generado.
IDE ccz80 y editor de sprites para sprUtilCPC compilado también para Microsoft .NET 4 Client Profile.
Ficheros de sintaxis para editores adaptados para ccz80 versión 3.
19 nov 2010 Corregida y mejorada la aplicación y documentación de ImgEditSprUtilCPC para el diseño de sprites para usar con sprUtilCPC.
23 nov 2010 Incluída la utilidad para la descarga e instalación del compilador, documentación, herramientas, etc.
5 ene 2011 Nuevo IDE versión 2.
8 ene 2011 Mejoras menores en ccz80 IDE y en su documentación.
22 ene 2011 Mejoras en la utilidad de instalación:
  • Facilitar la implementación de ccz80 para diferentes ordenadores.
  • Creación de accesos directos para toda la documentación instalada.
Compilador ccz80 versión 3.1.0:
  • Permite indicar valores constantes de tipo byte, word y cadena como una expresión con operandos constantes.
  • Revisión y mejoras en la comprobación de sintaxis del código fuente.
2 feb 2011 Mejoras en ccz80 IDE:
  • Nueva opción Edit/Select block.
  • Mejoras en el resultado de la opción Format/Formatting assembler.
  • Nuevo botón en la ventana de búsqueda/sustitución para copiar al portatapeles las líneas de texto con coincidencias.
  • Corrección en el reemplazo de texto dentro de una selección.
  • Selección inicialmente de todas las coincidencias encontradas en la ventana de búsqueda/sustitución.
Compilador ccz80 versión 3.1.1:
  • Corrección para la ejecución de aplicaciones indicadas con la opción /post cuando la ruta contiene espacios.
  • Mejoras en el formato del código ensamblador generado con la opción /asm.
3 feb 2011 Nueva librería de functiones para Amstrad PCW. También válida con alguna excepción para Amstrad CPC 6128 y Spectrum +3 con CP/M Plus.
Añadida en utilidad de instalación la opción para instalar el entorno para Amstrad PCW utilizando esta nueva librería.
9 feb 2011 Compilador ccz80 versión 3.1.2: mejora y corrección de error existente en la versión previa para formatear el código ensamblador.
Nueva versión de ccz80 IDE: mejora y corrección de error existente para formatear código ensamblador.
4 mar 2012 Compilador ccz80 versión 3.1.3:
  • Corrección de valor producido por los operadores relacionales.
  • Admitir valores positivos y negativos en el desplazamiento de las instrucciones de ensamblador con registros indexados.
  • Detección de error de división por cero en expresiones en código ccz80 y en expresiones en código ensamblador.
  • Corrección en la codificación de caracteres de ficheros de texto generados.
  • Admitir constante de cadena como segundo parámetro en sustracción.
  • Admitir constante numérica como condición en operador condicional.
  • Añadida etiqueta __begin_program en el punto de inicio del programa.
  • Añadidas nuevas funciones en la librería standard.ccz80: absb, absw, sgnb, sgnw, min, max, sqrt, power, previousrand, signedword, endprogram.
  • Corrección de funciones btoh y wtoh en librería standard.ccz80.
  • Corrección de funciones cursor, key, finputc, finputs y eof en librerías para Amstrad CPC.
  • Optimización de función copychr y mejora de función save en librerías para Amstrad CPC.
17 mar 2012 IDE versión 2.0.0.5: solucionado problema que bloqueaba el IDE cuando el resultado de la compilación producía demasiado texto.
13 ene 2014 ccz80 IDE version 2.0.0.6: solucionado problema que indicaba siempre que no podía encontrar archivo ccz80.exe cuando había un error de compilación.
17 mayo 2014 Compilador versión 3.1.4:
  • Corrección error en producto con tipos word.
  • Corrección error en división y módulo con tipos word.
  • Corrección para evitar optimizaciones erróneas en comparaciones con valores constantes de 1 a 4.
  • Modificación para permitir bucle for sin condición.
  • Modificaciones para la integración dentro de otros compiladores.
2 enero 2015 Compilador versión 3.1.5:
  • Corregido error en la asignación a variables o parámetros de tipo short de valores fuera de rango.
24 abril 2023 Añadido enlace para la utilidad cc2msx.

Contactar
Para contactar con el autor del compilador ccz80 y comunicar errores, sugerencias, etc. se puede escribir a:

e-mail


Si se quiere recibir notificación de novedades sobre este desarrollo, escribir un correo con el asunto "News" para ser añadido a la lista de correo.

Se puede visitar el foro dedicado:

Foro ccz80


Gracias por el interés.