martes, 24 de mayo de 2016

ESTRUCTURA DEL CODIGO FUENTE Y ENSAMBLADOR

Las herramientas principales con las que trabajo son el editor de texto de Windows, el emulador Spectaculator, el ensamblador PASMO y para los gráficos, el editor SevenuP de Metalbrain.

Antes de seguir, te puedes descargar el PRIMER EJEMPLO que he realizado para el curso. De momento sólo vale para que entiendas PASMO y cómo organizo el código fuente.

Voy a explicar un poco cómo funciona PASMO.
Los archivos que pertenecen al ensamblador dentro de la carpeta BUFFER VOLCADO CON LDI, son: bin2tap.exe, pasmo.exe y AENSAMBLA.BAT.

Si editas AENSAMBLA.BAT verás la siguiente línea de comandos:





Cuando lo ejecutas, ensambla el código existente en  APRINCIPAL.ASM creando el código binario APRINCIPAL.bin y el fichero de texto APRINCIPAL.TXT que contiene las etiquetas usadas y su dirección correspondiente. Esto último nos será muy útil para depurar.

Prueba a borrar APRINCIPAL.bin y APRINCIPAL.TXT, y ejecuta  AENSAMBLA.BAT.

Si no ha habido ningún error, podrás ejecutar APRINCIPAL.bin en el emulador. En este caso debes poner la dirección de inicio de ejecución en 24000 que es donde empieza el programa.


En el directorio descargado ves que además hay distintos tipos de ficheros:


Ficheros *.ASM: Son los que ensambla PASMO

  • APRINCIPAL.ASM: Es el bucle principal. Dentro de él se pueden incluir otros *.ASM para que no resulte tan largo y se vea todo más claro. Para ello se usa la instrucción INCLUDE "*.ASM" donde se quiera meter el código. Por ejemplo al principio aparece INCLUDE "CONTENIDA.ASM".

  • CONTENIDA.ASM: Es el código que se va a incluir en la memoria contenida. Yo uso desde 24000 hasta 32768 que es donde acaba. El código contenido en estas direcciones va más lento, por lo que todo lo que se tenga que ejecutar con rapidez o a una velocidad constante se debe ensamblar por encima de 32768 (8000h). En CONTENIDA yo meto los menús, tablas de records, rutinas de preparación de tablas, borrado de pantalla...

  • ARUTINAS.ASM: En este fichero meto las rutinas y subrutinas que van fuera del bucle principal. Así el código está más claro y no me lío buscando dónde ponerlas.

  • ASPRITES.ASM: Aquí meto los gráficos de los Sprites

  • ATABLAS.ASM: Donde van las tablas para controlar los distintos Sprites, que ya explicaré más adelante
                   

Ficheros *.BIN: Son ficheros binarios que se incluyen en una determinada dirección del código.

     Se introducen en el código con la instrucción INCBIN   "*.BIN".
     En ASPRITES.ASM  aparecen unos cuantos metiendo los gráficos.


Bueno, pues si ejecutas APRINCIPAL.bin desde la dirección 24000, te aparecerá algo así como esto:




En las siguientes entradas veremos cómo funciona





9 comentarios:

  1. Ahí ahí...poniendo los dientes largos XD

    ResponderEliminar
  2. Hola Climacus. Cual versión del PASMO me recomiendas descargar? Cual usas tu?

    ResponderEliminar
    Respuestas
    1. No tienes que descargarte PASMO. En la carpeta que te bajas del curso ya está incluido y listo para usar

      Eliminar
    2. Ah, ok. La carpeta a la que haces referencia es la que dice PRIMER EJEMPLO no?

      Eliminar
  3. Hola nuevamente. No entiendo la parte de poner la dirección de inicio de ejecución en 24000, como se hace?. Cuando trato de abrir APRINCIPAL.bin en el emulador me tira un mje de error que dice Load Failed!. Estoy usando el ZXSpin o el EmuZwin. Me darías una mano?

    ResponderEliminar
    Respuestas
    1. He estado mirando cómo ejcutar un .bin en ZXSpin:

      Vete a File y abre Load Binary File. En FileName pones la ubicación del archivo y en Start Address: 24000. Das al botón de Load.
      Ahora vas a Tools/Debugger y en la parte derecha de arriba verás que pone Registers y debajo pone PC. Cambia el valor de PC a 24000 y pulsas el botón de la flecha verde de la barra de arriba que pone Run. Y ya estará corriendo el programa. Es más cómodo con la versión 7.00 de Spectaculator, pero el ZX Spin es muy buen emulador también.

      Eliminar
    2. Ahora si, ahí me funciono. Te agradezco realmente que me hayas respondido. Espero no tener que molestarte a seguido. El tema de Spectaculator no lo uso porque es pago. No se si habrá alguna versión gratuita.

      Eliminar
    3. Me alegro mucho. No te preocupes que como te he comentado el ZX Spin es muy bueno también.

      Eliminar