Konamito.com

El pasado MSX más presente que nunca

Publicado por Konamito Miércoles 26 de mayo de 2010 6 Comentarios

José Vila Cuadrillero, más conodido como Pepe Vila, programador de New Frontier y redactor de la revista Input MSX a quien tuve la oportunidad de entrevistar hace un tiempo, ha tenido a bien crear un tutorial de iniciación a la programación en ensamblador  dirigido a los más novatos en estos menesteres. Seguramente alguna vez hemos deseado comenzar a trastear con el ensamblador pero no sabíamos qué editor de texto usar, cómo configurar las diferentes herramientas y programas, etc. y todo esto nos abrumaba y nos hacía desistir en el intento. Pues para solucionar nuestras frustraciones son las siguientes líneas:

Hola a tod@s me he decidido a escribir este tutorial para todos aquellos que queréis empezar con esto de la programación para MSX, y no sabéis por donde coger el hilo o que herramientas utilizar.

Lo primero que os voy a proponer son las herramientas que yo me he montado para poder realizar esta labor de la manera mas fácil, lógicamente vosotros podréis sentiros mas a gusto con otras o simplemente cambiarlas por alguna otra que ya estáis utilizando.

Bajamos un paquete recopilatorio de mis herramientas desde este enlace: http://www.megaupload.com/?d=9VS82B9A

Creamos una carpeta en nuestro disco duro y la llamamos C:\MSX. Descomprimimos el paquete de herramientas dentro de esa carpeta para tenerlas todas a mano.

Para compilar el código maquina que crearemos vamos a utilizar, el que para mí es el mejor compilador de Z80 para MSX que no es otro que asMSX versión 0.12e, Este compilador no incluye un editor de texto que es donde escribimos el código que queremos compilar, así que buscando y buscando he decidido quedarme con el EditPlus versión 3.01 que está incluido en el paquete y que será el punto de partida para todo nuestro desarrollo.

Vamos al directorio MSX donde tenemos el paquete y descomprimimos el fichero asmsx012e.zip y descomprímelo dentro de la carpeta C:\MSX dentro de esta carpeta te creara el descompresor la carpeta asmsx012e C:\MSX\asmsx012e Aquí, en este directorio estará nuestro ensamblador con todos sus ejemplos.

Ahora vamos a descomprimir el emulador de nuestro querido MSX donde probaremos nuestro código una vez compilado, lógicamente para mí el mejor emulador es blueMSX ya que lo suelo usar para probar bien el código y depurarlo en busca de errores. Sin embargo para lanzar y probar el compilado sobre emulador uso openMSX por la facilidad de lanzar o abrir el fichero compilado con el emulador.

Descomprimimos openMSX dentro de la carpeta del paquete. Vemos que hay dos ficheros uno –x64 si usamos Windows de 64bits y –x86 si usamos Windows de 32 bits.

Después de que hayamos descomprimido openMSX según nuestra versión de Windows veremos dentro de la carpeta del paquete, el instalador de openMSX versión 0.7.2. En mi caso uso Windows 7 Ultimate 64 bits por eso he descomprimido la versión de 64 bits.

Hacemos doble click sobre el icono para que comience la instalación.

En el instalador de openMSX pulsamos en el botón Next.

En esta parte es importante cambiar el directorio de instalación hacia C:\MSX ya que después en las macros de nuestro editor lo buscaremos ahí dentro. Pulsamos en Browse

Aquí modificamos Folder name: y escribimos C:\MSX\openMSX. Pulsamos luego el botón OK.

Aquí podemos ver que el directorio ha cambiado. Pulsamos el botón Next.

Finalmente pulsamos el botón Install.

Esperamos a que se instale, veremos las imágenes que están a continuación y pulsamos el botón Finish para terminar la instalación.

Ahora ya podemos instalar el que será el órgano común de nuestra forma de trabajar. Descomprimimimos EditPlus v.3.01 dentro de la carpeta del paquete. Aunque este es un software de pago, merece la pena instalarlo por todas las ventajas que nos da.

Dentro de la carpeta del paquete donde hemos descomprimido EditPlus veremos este icono. Hacemos doble click sobre él para instalarlo.

Pulsamos el botón Accept.

Pulsamos sobre el botón Yes para aceptar la licencia.

Modificamos los 3 directorios apuntando a C:\MSX\EditPlus 3 como vemos en la imagen.

Ya lo tenemos instalado. Pulsamos el botón Aceptar.

Ahora lo ejecutamos como administrador pulsando en Programas – EditPlus 3 – EditPlus 3, con el botón derecho del ratón y a continuación ejecutar como administrador, si lo hacemos en Windows Vista o Windows 7. Si usamos Windows XP no hace falta, os recomiendo copiar este acceso al escritorio.

Si tenemos los datos para el registro es el momento de introducirlos y pulsar el botón Register. De lo contrario pulsamos el botón Evaluate para que usar el programa durante 30 días.

Aquí tenemos nuestro editor en todo su esplendor, ahora vamos a realizar lo pasos más importantes. Uno será, incorporarle un añadido para que nos muestre por colores la sintaxis del lenguaje en ensamblador del Zylog Z80. Para ello el archivo que vamos a usar es asmz80.stx incluido en el paquete.

Para agregarlo vamos al menú Tools – Configure User Tools…

Primero en la izquierda tenemos que señalar la opción Settings & syntax.

Pulsamos el botón Add tecleamos en el campo Description: ASM Z80 Y en File extensions: .asm

Ahora pulsamos el botón de los tres puntos suspensivos tras Syntax file: y seleccionamos el archivo asmz80.stx que está dentro del directorio del paquete descargado.

Marcamos Associate in Explorer. Y si lo tenemos todo como en la imagen siguiente entonces pulsamos los botones Apply y OK.

Ahora vamos a crear nuestro propios botones. Uno será para compilar y el otro ejecutar el compilado o archivo ROM en el emulador openMSX.

De nuevo pulsamos Tools – Configure User Tools… en EditPlus.

Ahora pulsamos en el botón AddTool y en la ventana emergente elegimos la opción Program.

En Menu text: tecleamos Compilar.

Pulsamos en los tres puntos suspensivos tras Command: y le decimos la ruta de nuestro ensamblador C:\msx\asmsx012e\dist12e\asMSX.exe

En la opción Argument: pulsamos la flecha y seleccionamos File Name.

Y en la opción Initial directory: pulsamos la flecha y seleccionamos File Directory.

Mirad la siguiente imagen:

Este es el resultado final que debemos ver para el botón Compilar. Pulsamos el botón Apply y ahora repetimos todo el proceso para crear el segundo botón que lanza la ROM en el openMSX.

Pulsamos de nuevo en el botón Add Tool y en la ventana emergente elegimos la opción Program. Ahora en Menu text: tecleamos openMSX.

Pulsamos enlos tres puntos suspensivos tras Command: y seleccionamos el directorio donde está instalado openMSX, que supongo será C:\MSX\openMSX\openmsx.exe

En la opción Argument: pulsamos la flecha y seleccionamos File Name Without Extension y añadimos .rom al final.

Por último en la opción Initial directory: pulsamos la flecha y seleccionamos File Directory.

Fijaros en la siguiente imagen. Así es como tiene que quedar configurada la ventana:

Ya podemos pulsar el botón Apply y el botón OK.

Ahora vamos a mostrar en la barra de iconos nuestros dos nuevos botones:l Compilar y  openMSX.

Pulsamos en menú view – Toolbars/Views – User Toolbar para que se muestre la User Toolbar.

Y voilá… aquí podemos ver nuestros botones (martillos 1 y 2) Compilar y openMSX, señalados en el recuadro rojo.

También podemos llamar a nuestros botones a través del menú  Tools o pulsando Control+1 y Control+2

Vamos a probar si funciona todo nuestro tinglado a la perfección, os voy a enseñar a crear nuestra primera ROM de MSX con un Hola Mundo muy sencillito usando la BIOS.

Pulsamos en File – New – Others, seleccionamos ASM Z80 y pulsamos el botón OK.

Ahora copiamos y pegamos en EditPlus el texto que viene a continuación:

;---------------------------------------------------------

; Nombre de nuestro programa

; Hola Mundo

;---------------------------------------------------------

; DEFINIR CONTANTES

;---------------------------------------------------------

; no definimos ninguna constante

; Variables de sistema

FORCLR equ 0f3e9h ; Foreground colour

;---------------------------------------------------------

; DIRECTIVAS PARA EL ENSAMBLADOR ( asMSX )

;---------------------------------------------------------

.bios ; Definir Nombres de las llamadas a la BIOS

.page 2 ; Definir la direccion del código irá en 8000h

.rom ; esto es para indicar que crearemos una ROM

.start INICIO ; Inicio del Código de nuestro Programa

;---------------------------------------------------------

INICIO:

; INICIO DEL PROGRAMA

;---------------------------------------------------------

call INIT_MODE_SC0 ; iniciar el mode de pantalla

call IMPRI_MENSAJE ; imprimir el mensaje en pantalla

FIN:

jp FIN ; esto es como 100 goto 100

;---------------------------------------------------------

INIT_MODE_SC0:

; INICIALIZA EL MODO DE PANTALLA

;---------------------------------------------------------

; BASIC: COLOR 15,0,0

; Establecer el fondo de color Negro

ld hl,FORCLR

ld [hl],15 ; Color del primer plano

inc hl ; blanco

ld [hl],1 ; Color de fondo

inc hl ; negro

ld [hl],1 ; Color del borde

; negro

call INITXT ; set SCREEN 0

; call INIT32 ; set SCREEN 1

; call INIGRP ; set SCREEN 2

; SCREEN 0 : texto de 40 x 24 con 2 colores

; SCREEN 1 : texto de 32 x 24 con 16 colores

; SCREEN 2 : graficos de 256 x 192 con 16 colores

; SCREEN 3 : graficos de 64 x 48 con 16 colores

;

ret

;---------------------------------------------------------

;---------------------------------------------------------

IMPRI_MENSAJE:

; RUTINA QUE IMPRIME EL TEXTO EN PANTALLA

;---------------------------------------------------------

;

ld h,01 ; situamos la Columna

ld l,01 ; y la fila para

; ld hl,0101 ; tambien podemos hacerlo de esta manera

call POSIT ; fijar el cursor donde empezara a escribir

ld hl,mensaje ; ponemos hl apuntando al texto del mensaje

bucle:

ld a,[HL] ; cogemos el primer caracter y lo metemos en a

cp FFh ; comprobamos si hemos llegado al final del texto

ret z ; y salimos de la rutina en el caso que el compare sea z

call CHPUT ; escribimos ese caracter en la posicion del cursor

inc hl ; incrementamos hl para que apunte a la suguiente letra

cp FFh ; comprobamos si hemos llegado al final del texto

jr bucle ; si no hemos llegado al final comtinuamos escribiendo

;---------------------------------------------------------

mensaje:

.db "Hola Mundo",FFh

Ya estamos preparados para compilar y ejecutar el compilado en el openMSX, así que pulsamos Compilar o botón definido 1.

La primera vez que compilamos tenemos que guardar antes el archivo.ASM. Para ello creamos una capeta llamada MiP y le ponemos como nombre prueba1 y pulsamos el botón Guardar.

Aquí podemos ver que asMSX ha compilado nuestro código máquina o ensamblador sin ningún problema. Es importante que nos fijemos en esto antes de lanzar openMSX. Cerramos la ventana si todo está OK.

Aquí he forzado un error de sintaxis para que veáis que en caso de error, asMSX nos dice en qué línea o líneas del código hemos cometido un error de sintaxis, o algo que no hemos definido bien. Nos fijamos en el número de línea, 29, y la repasamos en el editor de texto para ver qué error hemos cometido.

Ahora que tenemos el código correctamente, vamos a probarlo. Pulsamos el botón openMSX o el botón definido 2.Vemos cómo arranca  openMSX cargando su BIOS como si fuera un MSX2 real.

Y voila aquí tenemos el resultado final.

Podemos cerrar el emulador openMSX y cerrar la otra ventana negra que queda al cerrarlo.

Ya hemos creado nuestra primera ROM para MSX increíblemente fácil. Ahora podéis modificar la fila y la columna donde tiene que salir el texto en pantalla, para que veáis lo fácil que es modificar compilar y lanzar.

Espero que sea de vuestro total agrado y espero veros de nuevo en el próximo tutorial, donde explicaré un poco el código de este artículo, dónde se miran las rutinas de la BIOS del MSX y cómo se puede depurar nuestro código con el debugger de blueMSX.

P.D. El resto de programas de paquete es para futuros capítulos.

José Vila Cuadrillero

Related posts:

  1. Tutoriales de programación en ensamblador (Ramones)
  2. Programación del Z80 con ensamblador
  3. openMSX 0.7.0
  4. Tutorial ensamblador (III) – Manejo del teclado y el joystick
  5. Tutorial ensamblador (V) – La memoria de los MSX

6 comentarios

  1. Konamito Konamito dice:

    Os animo a probarlo. Yo pude hacerme con todo en apenas unos minutos. Creo que el artículo está muy bien estructurado para comenzar a trabajar en ensamblador para nuestros MSX.

  2. josepzin josepzin dice:

    Tengo que hacer algo asi para C64

  3. Konamito Konamito dice:

    Pues estaría bien, sí señor ;)

  4. x_mangel x_mangel dice:

    Por fin he tenido un rato para probarlo, y por ahora todo funciona según lo explicado, ahora a aprender qué es todo eso que suena a chino.
     
    Muchas gracias por la iniciativa, espero aprender algo.

  5. Konamito Konamito dice:

    Ahora lo que nos queda es que algún experto en ensamblador nos comience a dar un poco de nociones de trabajo en este entorno que hemos montado en el PC ;)

  6. Eduardo Robsy Eduardo Robsy dice:

    Enhorabuena por la iniciativa, que me parece muy interesante, y gracias por elegir asMSX como herramienta. Deciros a todos que la última distribución “oficial” es la 0.12g, que podéis descargaros desde http://karoshi.auic.es/index.php?topic=834.0
    La 0.12e, empleada en este tutorial, es perfectamente satisfactoria, pero desde esa versión se publicaron la 0.12f, 0.12f1 y 0.12g, que principalmente añaden soporte para cassette (se generan ficheros CAS y/o WAV directamente), ensamblado condicional multinivel y mejora general de la estabilidad del ensamblador.
    Además, se han publicado versiones beta no oficiales, 0.14 y 0.15, pero la próxima versión oficial es la 0.16, en la que estoy trabajando en este momento, y que incluye diversas mejoras que facilitarán un poco más la vida al desarrollador.
    Mucho ánimo a los que empiezan, que todo lo que se requiere es paciencia. No es tan difícil, de verdad. Todo es ponerse…
    Un saludo,
    Edu R.

Queremos leer tu opinión