Un compilador de ZX Spectrum BASIC

Todo sobre la creación, diseño y programación de nuevo software para
nuestro Spectrum

Moderador: Sir Cilve Sinclair

Avatar de Usuario
Alxinho
Freddy Hardest
Mensajes: 896
Registrado: Mar Jun 19, 2007 11:20 am
Ubicación: Barcelona
Contactar:

Re: Un compilador de ZX Spectrum BASIC

Mensaje por Alxinho » Jue Abr 23, 2009 5:58 pm

Boriel escribió:¿Cuando dices que te quedas sin memoria, a qué te refieres? En general? El Programa no cabe??


Tranqui, que ya lo he solucionado ;)

El problema era que como usaba una array muy grande para las pantallas no me cabían todas y las he reducido de tamaño. Si usase aquello de los Supercaráteres que enseñaban en las Micros no tendría problema de hacer muchas pantallas. Nathan me lo comentó pero de momento prefiero seguir con arrays más pequeñas.
Retrobytes Productions --> http://retrobytesproductions.blogspot.com.es

Soy un tío feliz, más que nada ... porque me sale más a cuenta.

Avatar de Usuario
jordigahan
Jack The Nipper
Mensajes: 181
Registrado: Mar Oct 30, 2007 11:10 pm
Ubicación: qui lo xa
Contactar:

Re: Un compilador de ZX Spectrum BASIC

Mensaje por jordigahan » Jue Abr 23, 2009 10:29 pm

sromero escribió:
jordigahan escribió:para poder compilar directamente desde el *.z80 y no tener que pasar los archivos a *.bas


¿?

Los .z80 no se compilan. YA son "código compilado" (código máquina).

ZXBasic es un compilador, lo tienes que "alimentar" con código *.bas, no lo puedes alimentar con otra cosa ... :-?

ahora si que me has despistao del todo.
no se supone que lo que hace esto es que puedas programar en basic y lo compile para que tiren mejor los programas?
Imagen
Respuestas Acertadas: 3

Avatar de Usuario
Metalbrain
Freddy Hardest
Mensajes: 590
Registrado: Lun May 07, 2007 8:17 am
Ubicación: Sevilla
Contactar:

Re: Un compilador de ZX Spectrum BASIC

Mensaje por Metalbrain » Jue Abr 23, 2009 10:59 pm

jordigahan escribió:
sromero escribió: ZXBasic es un compilador, lo tienes que "alimentar" con código *.bas, no lo puedes alimentar con otra cosa ... :-?

ahora si que me has despistao del todo.
no se supone que lo que hace esto es que puedas programar en basic y lo compile para que tiren mejor los programas?


Lo que hace es que puedas programar en Basic desde el PC con un editor de texto y compilarlo para Spectrum. El BASIC es diferente al del Spectrum, así que eso de meterle un .z80 (en el cual hayas escrito el programa en el Basic propio del Spectrum, que es lo que parece que quieres hacer) no tiene sentido.

Tal vez podrías conseguir lo que quieres si usas BASin para extraer el programa en Basic del .z80 a un archivo .bas, y luego lo editas para que tenga el formato que requiere este compilador.
SevenuP se escribe con u minúscula y P mayúscula.

Avatar de Usuario
sromero
Nonamed
Mensajes: 1221
Registrado: Mar Abr 17, 2007 12:35 pm
Ubicación: Valencia
Contactar:

Re: Un compilador de ZX Spectrum BASIC

Mensaje por sromero » Vie Abr 24, 2009 9:04 am

jordigahan escribió:ahora si que me has despistao del todo.

no se supone que lo que hace esto es que puedas programar en basic y lo compile para que tiren mejor los programas?


Efectivamente. Es un compilador para programar en Standard BASIC (no Sinclair BASIC) y los compile para que tiren MUCHO mejor los programas.

De la misma página inicial y principal del proyecto.

Este proyecto intenta crear un compilador de un dialecto de BASIC para el ZX Spectrum


(Ese dialecto de BASIC es el BASIC STANDARD, como el que implementa FreeBasic).

Un saludo.
NoP / Compiler

Avatar de Usuario
na_th_an
Nonamed
Mensajes: 1889
Registrado: Lun May 07, 2007 10:16 am
Ubicación: Andalucía

Re: Un compilador de ZX Spectrum BASIC

Mensaje por na_th_an » Vie Abr 24, 2009 12:36 pm

Un compilador pilla código fuente y lo transforma en código máquina. Lo más cómodo, hoy día, si quieres generar código máquina para Spectrum, es que el compilador funcione en tu PC y lea ese código fuente de un archivo de texto que puedas crear y editar con cualquier editor de textos.

Boriel
Sabreman
Mensajes: 351
Registrado: Lun May 28, 2007 9:55 am
Ubicación: Tenerife
Contactar:

Soporte TOMMY GUN

Mensaje por Boriel » Dom May 17, 2009 11:59 am

Pues he contactado por email con el autor del IDE Tommy Gun y ha lanzado una nueva versión, que soporta ZX Basic. Así pues, ya es posible usar Tommy Gun como editor de ZX Basic (con sintaxis coloreada) y compilar desde él, e incluso lanzar el emulador.

La versión que lo soporta es la 0.9.39 (creo que la ha sacado hoy).

Lo único que tenéis que hacer es instalar la versión .MSI del compilador ZX Basic, y luego ir a las opciones de construcción de proyectos (Build Settings) de Tommy Gun, y poner la configuración como se muestra en la imagen:

Imagen

La configuración importante es la que se muestra en los recuadros en rojo.
El recuadro de -Console Parameters es útil porque si lo ponéis así, al hacer click sobre un mensaje de error saltará a la línea del código fuente donde está ese error ;)

Las opciones del recuadro -Assembler-Compiler... tal cual están producen .TZX autoejecutables (con cargador BASIC). Ya está en la wiki inglesa la ayuda de línea de comandos, para los parámetros que se pueden usar.
Última edición por Boriel el Lun May 18, 2009 10:23 am, editado 1 vez en total.

Avatar de Usuario
na_th_an
Nonamed
Mensajes: 1889
Registrado: Lun May 07, 2007 10:16 am
Ubicación: Andalucía

Re: Un compilador de ZX Spectrum BASIC

Mensaje por na_th_an » Lun May 18, 2009 8:18 am

Perfecto, ¡Ahora es más fácil que nunca!

Avatar de Usuario
compiuter
Sabreman
Mensajes: 337
Registrado: Vie May 18, 2007 9:00 pm
Ubicación: Palma de Mallorca

Re: Un compilador de ZX Spectrum BASIC

Mensaje por compiuter » Mié May 20, 2009 11:21 am

Estoy probando el TommyGun y parece una buena herramienta, pero no encuentro la opción word wrap, o -ajuste de linea del wordpad-, que me es muy práctica en el crimson editor. Tambien echo de menos que el procesador de texto se pueda separar en una ventana gigante del TommyGun, o maximizar a full screen, sibien se puede hacer astante grande ocultando iconos y barras. Quisiera saber la opinión de alguien que lo use y que puntos lo hacen mejor que otras herramientas combinadas.

maka
rst 0
Mensajes: 2
Registrado: Mié Ago 12, 2009 9:25 pm

Re: Un compilador de ZX Spectrum BASIC

Mensaje por maka » Mié Ago 12, 2009 9:31 pm

He puesto esto como comentario en tu web pero he pensado que iria mejor aqui.

Primero: muchisimas gracias! Estoy flipando con Tu compilador. Tanto que ya he hecho un juego (Star Trader's Luck. Esta en WOS pero no puedo poner enlace porque estoy en un movil) y algunos programillas cutres para probar varias cosillas (UDGs, scroll en basic, etc...)

Estoy haciendo un juego de aventura tipo elige Tu propia aventura para el concurso y tengo un problema: creo que me quedo sin memoria para el array de strings que almacena los parrafos. llega un momento en el que el texto no se almacena.

Lei en El foro sobre el heap que tiene 4kb, pero la solucion de usar --org no tiene efecto.

Hay otra forma de aumentar esta memoria? la parte logica del juego es muy reducida

maka
rst 0
Mensajes: 2
Registrado: Mié Ago 12, 2009 9:25 pm

Re: Un compilador de ZX Spectrum BASIC

Mensaje por maka » Mié Ago 12, 2009 9:45 pm

Y ya puestos, he estado intentando hacer un scroll de pantalla de caracteres con memcopy porque con print es muy lento, pero no veo mucha mejora de velocidad. No tengo ni idea de assambler y no se si es una locura, pero como seria la mejor forma para hacerlo?

Supongo que una rutina de asammbler es la solucion... la de scroll pixel a pixel va muy bien, pero no se como modificarla...

Boriel
Sabreman
Mensajes: 351
Registrado: Lun May 28, 2007 9:55 am
Ubicación: Tenerife
Contactar:

Re: Un compilador de ZX Spectrum BASIC

Mensaje por Boriel » Mié Ago 19, 2009 9:50 am

Maka, ya he sacado la versión 1.2.3 que permite ajustar el tamaño del heap. También corrige alguno fallos (te contesté tb. por correo).

Respecto a lo del scroll, hay varias rutinas por ahí en internet (te recomiendo que busques en MHoggle).
Cuando vuelva a tener más tiempo, le doy otra pulida al compilador. Ahora estoy redactando la memoria del doctorado.

Avatar de Usuario
apenao
Jack The Nipper
Mensajes: 154
Registrado: Dom Ene 27, 2008 6:08 pm
Ubicación: Marbella

Re: Un compilador de ZX Spectrum BASIC

Mensaje por apenao » Lun Ago 24, 2009 1:45 pm

¡Que maravilla!

Si llego a tener esto hace 25 años, riete tú de John Ritman o Mike Singleton :)

Bueno, como mis conocimientos en Asembler y programación en general son escasísimos, no he seguido de cerca este hilo. Hace cosa de un mes por fin me lo tomé un poco más en serio y me descargué el instalador de windows. Lo tengo funcionando con el ConText, que ya había usado para copiar algunas rutinillas en asembler (para ir viendo como funcionaban).

Lo primero que hice fue intentar compilar los juegos que he presentado últimamente en el CSSCGC. No funcionaban (cachis!) por la cosa de la sintaxis, así que decidí hacer uno partiendo de cero e ir compilando a cada paso que daba para ver en qué estaba fallando. Corrigiendo los end ifs, los gosubs y algunas cosillas más, ya le voy cogiendo el tranquillo al asunto. Me estoy leyendo el wiki (tambien le eché un vistazo a la documentación del Free Basic) y estoy encantado con las posibilidades que se me abren con las funciones nuevas (memcopy, while, etc). Como veis, estoy como un niño con zapatos nuevos. Lo único que echo en falta es que la wiki esté finalizada con la documentación de todos los comandos (aunque ya he leido a Boriel y estoy de acuerdo en que es más importante que él siga programando esto y los usuarios busquemos la informacion en las fuentes que nos da).

Ahora mismo estoy terminando mi segundo juego compilado (en realidad el primero sólo es un algoritmo para ordenar 10 registros usando el método burbuja -lo que se aprende por internet- para hacer una parodia de la polémica con las votaciones a La Abadia del Crimen en WoS). Cuando termine este, tengo un par de cosillas más en la cabeza.


Muchas gracias Boriel (y todos los demas que han contribuido en el proyecto). Seguiré contando mis experiencias en este post. Un saludo,

Apenao

Boriel
Sabreman
Mensajes: 351
Registrado: Lun May 28, 2007 9:55 am
Ubicación: Tenerife
Contactar:

Rutinas de SAVE/LOAD

Mensaje por Boriel » Mar Sep 29, 2009 9:33 pm

Pues quería aprovechar las de la ROM (más que nada por motivos de espacio; luego se pueden implementar otras, incluso a alto nivel).
El caso es que he implementado el SAVE "XX" SCREEN$ y SAVE "XX" CODE (y próximamente el SAVE DATA para grabar TODAS las variables -el estado del programa- o solo alguna de ellas). Solo se usará el SAVE de tipo CODE (binario) ya que es mucho más sencillo y tiene su lógica (todo son bloques de memoria).

El caso es que SAVE ya lo tengo implementado, hay una rutina de la ROM que lo graba con cabecera y todo. Pero el LOAD no consigo hacerlo. Es decir, hay una rutina de la ROM de carga genérica, pero quería ahorrarme (por motivos de espacio) la carga de la cabecera (con su posterior comprobación, etc). Alguien sabe algún punto de entrada de la ROM para implementar LOAD <nombre> CODE X, Y?

Avatar de Usuario
winston
Sabreman
Mensajes: 469
Registrado: Mar Ago 19, 2008 4:17 pm
Ubicación: Isla de Man
Contactar:

Re: Un compilador de ZX Spectrum BASIC

Mensaje por winston » Mié Sep 30, 2009 12:57 am

He estado trabajando en tales cosas esta noche :-) (El Spectranet usa "tape traps" para emular una cinta a través de la red)

La rutina LD-BYTES es lo que necesitas si quieres cargar una bloque de datos sin cabecera. LD-BYTES se ubica a 0x0562. IX = dirección para cargar los datos, DE = cuantos bytes para cargar, A = 0x00 para indicar una cabecera ó 0xFF para datos.

Si quieres cargar un fichero con cabeceras, no es tan fácil - no hay una rutina sencilla que puedes llamar para hacerlo. El código que analiza la sintaxis se mezcla con el código que pone los valores en los registros. Creo que sería más fácil escribir tu propia rutina si necesitas cargar ficheros con cabeceras.
Tarjeta ethernet para el Spectrum - http://spectrum.alioth.net/doc

Debemos practicar un quirkafleeg

Boriel
Sabreman
Mensajes: 351
Registrado: Lun May 28, 2007 9:55 am
Ubicación: Tenerife
Contactar:

Re: Un compilador de ZX Spectrum BASIC

Mensaje por Boriel » Mié Sep 30, 2009 9:00 am

winston escribió:He estado trabajando en tales cosas esta noche :-) (El Spectranet usa "tape traps" para emular una cinta a través de la red)

La rutina LD-BYTES es lo que necesitas si quieres cargar una bloque de datos sin cabecera. LD-BYTES se ubica a 0x0562. IX = dirección para cargar los datos, DE = cuantos bytes para cargar, A = 0x00 para indicar una cabecera ó 0xFF para datos.

Si quieres cargar un fichero con cabeceras, no es tan fácil - no hay una rutina sencilla que puedes llamar para hacerlo. El código que analiza la sintaxis se mezcla con el código que pone los valores en los registros. Creo que sería más fácil escribir tu propia rutina si necesitas cargar ficheros con cabeceras.


Gracias. Es justo lo que estoy haciendo. Me puse a examinar la ROM y efectivamente, mezcla sintaxis con ejecución. Bueno. El caso es que quiero emular la carga de LOAD para lograr la mayor compatibilidad posible. He copiado la rutina de la rom que lee las cabeceras (no es muy larga) y la estoy modificando para hacer eso mismo.

La única duda que me queda es: ahora que tengo un divIDE con Fatware (me acaba de llega :P), se podría programar un LOAD y un SAVE que use divIDE en vez de cinta? :P

Responder

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 6 invitados