Mostrando entradas con la etiqueta codigo maquina. Mostrar todas las entradas
Mostrando entradas con la etiqueta codigo maquina. Mostrar todas las entradas

lunes, 4 de noviembre de 2019

Libros interesantes para Assembly en Commodore 64

He comenzado a retomar el desarrollo retro, esta vez fijándome en el Commodore 64. 

Para coger ritmo adquirí un par de libros y una libreta, que me acompañarán en esta aventura. 

Obviamente, Internet es el mejor de los recursos, pero encuentro los libros en papel y el uso de una libreta para tomar notas muy satisfactorio.

Los libros son:


Libro que refleja el trabajo realizado en el blog "Programación Retro del Commodore 64".

Todo lo que está en el libro tiene su origen en el blog. Está bien organizado y es de mucha ayuda. 


Este libro, aunque tiene una pequeña introducción al Assembly y al C64, va directo al desarrollo de un juego en ASM. Este lo dejo para más adelante, dado que quiero repasar bien lo básico con respecto al C64. 

Ah, y una libreta mágica para mis notas: 


Aquí voy escribiendo mis cositas y es también para referencia rápida.

El plan es ir publicando cosas sueltas, que me parecen interesantes mientras voy construyendo una librería propia en ASM, para mis desarrollos en el C64.

También iré haciendo cositas del ZX Spectrum, en medio, para no perder la costumbre.

Dentro de poco, comenzaré a publicar. 


miércoles, 2 de diciembre de 2015

Que usar para programar el BASIC del Commodore 64 en tu PC.

Me puse como objetivo encontrar un entorno de programación  gráfico al estilo de BasinC para ZX Spectrum

La idea es tener una GUI (Graphical User Inerface) con todas las herramientas necesarias para la programación BASIC del Commodore 64 en nuestro PC. No solamente código fuente, sino herramientas gráficas y de sprites, manuales y otro tipo de complementos que nos permitan hacer todo desde un mismo sitio. 

Voy a resaltar CBM .prg Studio de Arthur Jordison

Es un entorno completo al estilo de los entornos de programación actuales, como puede ser Visual Studio o Eclipse. 

Traducido de su página web, podemos ver capacidades y funcionalidad: 

Permite realizar desarrollos para : 

  • Commodore 64 (and SuperCPU)
  • Commodore 128
  • Commodore VIC 20
  • Commodore 16
  • Commodore Plus/4
  • Commodore PET BASIC 2 machines, e.g. PET 2001
  • Commodore PET BASIC 4 machines, e.g. PET 4000/9000

Un resumen de sus capacidades es: 

  • Múltiples tipos de ficheros de código (ensamblador o BASIC) se pueden componer a un solo destino.
  • Ensamblador / Desemsamblador y Depurador integrado para 6502/6510/65816
  • Importación de programas (.prg, .T64 or .D64/.D71/.D81)
  • Exportación de programas (.prg, .p00)
  • Editor de Sprites
  • Editor de juegos de caracteres
  • Diseñador de pantallas 
  • Generador de códidos especuales de impresión
  • Visor de memoria
  • Importación y exportación de binarios
  • Herramienta de creación de discos .D64/.D71/.D81
  • Constantes en BASIC
  • Re-numerado y formateo de código 
  • Formateo automático de código ensamblador
  • Interfaz de usuario tipo MDI
  • Gran cantidad de manuales, ayuda y tutoriales

La verdad que es una herramienta muy completa y funcional. 

Una cosa que no termina de convencerme es que para compilar y ejecutar un proyecto, necesita un emulador externo configurado en la propia herramienta. 

Seguramente con el tiempo y adquiriendo experiencia con el entorno, esta circunstancia se verá justificada. 

En este enlace tenéis más imágenes de la herramienta en acción.































viernes, 27 de noviembre de 2015

De BASIC a código máquina sin dolor, parte II

He estado probando diversos compiladores a Mcode (código máquina) aparte del ya mencionado Softek "FP" Full Compiler en la entrada "De BASIC a código máquina sin dolor". 

De las varias opciones con las que me he peleado (literal), os propongo como otra opción muy válida para pasar vuestros desarrollos BASIC a código máquina, el compilador "HiSoft BASIC" de Cameron Hayne y publicado en 1986 por HiSoft.

Este compilador soporta los modelos ZX Spectrum, ZX Spectrum +, ZX Spectrum 128 y ZX Spectrum Plus 2. 

Para usarlo en los ZX Spectrum +2A/B/3 deberéis usar el modo 48k. El cargador de 128 utiliza comandos CAT y nomenclatura de archivos que los 2A/B no entienden. 

En las versiones de 128k soportadas, solo ocupa 500 bytes de RAM de usuario, por lo que nos deja hasta 40k para nuestro programa BASIC. 

Estoy trabajando en una versión que cargue en los modelos +2A/B, dado que no hay una versión en cinta para ellos. Si hay una versión en disco para la el ZX Spectrum +3. 

Hay otra versión depurada por Zeljko Juric también disponible.

En general es un compilador muy robusto. Tiene varias particularidades muy buenas, como la de poder "mezclar" código máquina de una compilación con otra (al estilo de librerías o módulos) además de soportar básicamente todos los comandos de BASIC, incluyendo matrices de hasta 2 niveles (A(x,y)). Puedes definir renglones / áreas de compilación a Mcode y dejar bloques de BASIC libres. Esto es muy útil para los comandos no soportados desde el compilado. También es posible compilar por separado los segmentos DATA grandes que tengamos y "pegarlos" al código máquina principal del programa.

Los comandos no soportados, los podemos usar directamente con BASIC, yendo y viniendo del código máquina.

La versión que he utilizado es la 1.1.

La cinta viene con dos caras. Cara A para el 48k y cara B para los 128k soportados.

Hay un montón de ejemplos en la cinta y el manual de uso está muy bien; explica todo con detalle, da ejemplos y tiene un capítulo dedicado a tips para mejorar el rendimiento del código máquina generado por el compilador.

Otra funcionalidad muy curiosa, es la posibilidad de investigar las variables de nuestro programa, con el comando *T.

El propio compilador propone fijar un tipo de datos para la(s) variable(s) (con una directiva especial en una linea REM) , y así obtener un compilado aún más rápido y pequeño.

Soporta funciones de usuario, GOTO/GOSUB calculados, operaciones de floating point y otra gran cantidad de cosas.

El compilado contiene todo lo necesario para que el programa sea independiente (todos los run-time necesarios).

En las pruebas realizadas hasta ahora, con proyectos que tengo en curso, el resultado  (y la estabilidad) ha sido mejor que el obtenido con el compilador Softket "FP" Full Compiler.


martes, 17 de noviembre de 2015

De BASIC a código máquina sin dolor


Pues he aquí, de las muchas opciones de compiladores de BASIC a código máquina, la que encuentro más sencilla de usar, y que menos complicaciones presenta. 

El susodicho compilador es el "Softek FP Full Compiler".

Pero ojo, que no lo usaremos en su versión "estándar", sino en la versión "debugged" realizada por Zeljko Juric en 1988

Este compilador, es muy sencillo de usar y en su versión depurada, además de tener varios fallos corregidos y optimizaciones realizadas, viene con el programa "FPLINK", el cual nos permitirá "linkar" nuestro código máquina con el "run time" del compilador. 

De esta forma, nuestro programa BASIC, una vez pasado a código máquina y "linkado", será independiente y lo podremos distribuir sin el compilador.


Seguro que hay mejores compiladores (seguro vamos, por que lo he mirado), pero he aqui las principales ventajas de este: 

  1. Soporta operaciones de Floating Point.
  2. Aunque tiene (pocas) directivas de compilación, no es necesario usarlas. Vamos, que es cargar el código BASIC y ponerte a compilar, sin más. 
  3. Funciona con el editor BASIC 128. Los muchos otros que he probado, te revierten al modo de edición del 48k. 
  4. Carga bastante rápido desde la cinta. (Si, yo soy de esos, trabajo con cintas). 
  5. Deja bastante memoria libre RAM para trabajar. 


Tiene inconvenientes como que no le gustan las funciones de usuario.