Página 1 de 1

imprimir cadenas de texto y números en ensamblador

Publicado: Dom Oct 02, 2016 4:49 pm
por Kodaly
Hola. Estoy probando a imprimir cadenas de texto usando una llamada a la rom (call 8252) y también a imprimir valores de variables llamando a la dirección 6683 de la rom. Funcionar funciona pero el caso es que me salen bugs y cosas raras si uso este método. Por ejemplo, sólo me imprime correctamente un determinado valor dependiendo de dónde lo coloque en el listado.
¿Alguien usa este sistema sin darle problemas? ¿Qué otra forma de imprimir texto y números de forma sencilla con el set de carácteres por defecto del spectrum me recomendáis? Gracias de antemano.

Re: imprimir cadenas de texto y números en ensamblador

Publicado: Lun Oct 03, 2016 11:18 pm
por mcleod_ideafix
Pon un ejemplo (código) de cómo lo haces, a ver si detectamos algo extraño

Re: imprimir cadenas de texto y números en ensamblador

Publicado: Mar Oct 04, 2016 8:37 am
por climacus
Kodaly escribió:Hola. Estoy probando a imprimir cadenas de texto usando una llamada a la rom (call 8252) y también a imprimir valores de variables llamando a la dirección 6683 de la rom. Funcionar funciona pero el caso es que me salen bugs y cosas raras si uso este método. Por ejemplo, sólo me imprime correctamente un determinado valor dependiendo de dónde lo coloque en el listado.
¿Alguien usa este sistema sin darle problemas? ¿Qué otra forma de imprimir texto y números de forma sencilla con el set de carácteres por defecto del spectrum me recomendáis? Gracias de antemano.
En el wiki del Speccy de Santiago Romero hay unas rutinas muy útiles:

https://wiki.speccy.org/cursos/ensamblador/gfx4_fuentes

Re: imprimir cadenas de texto y números en ensamblador

Publicado: Mar Oct 04, 2016 8:36 pm
por Kodaly
mcleod_ideafix escribió:Pon un ejemplo (código) de cómo lo haces, a ver si detectamos algo extraño
Mcleod, me he basado en el tutorial de Chuntey: How to write Zx Spectrum games. En concreto, en este código:

ld a,2 ; upper screen
call 5633 ; open channel
ld de,string ; address of string
ld bc,eostr-string ; length of string to print
call 8252 ; print our string
ret
string defb 22,21,31,'!'
eostr equ $

Hay cadenas de texto que las imprime sin problemas, pero al incluir otras (otras incluso iguales que las anteriores para probar) éstas se imrprimen bien pero se producen fallos en el programa, como si se pisara alguna dirección de memoria.

Para imprimir valores de una variable uso esto (también del tutorial anterior):
ld bc,(score)
call 6683

Me ocurre que, siguiendo el ejemplo, según donde ponga score defb 0 en el listado puede imprimirse bien el valor o salen números que no deberían. Si se imprime algún número raro, cambio de lugar score defb 0 y ya va bien. Algo debo hacer mal.

Climacus, gracias a ti también por el enlace. No sabía que también ahí se explicaban rutinas para el charset de la rom.

Re: imprimir cadenas de texto y números en ensamblador

Publicado: Sab Oct 08, 2016 4:20 pm
por Kodaly
Tras varias pruebas creo que el problema viene de lo siguiente. A partir de una zona del listado del programa los datos que meto se corrompen. Esta zona es al final del programa, donde van todos los datos de gráficos y variables. Hay muchísimos bytes que se leen con normalidad y a partir de un punto...empiezan las cosillas raras.

Edito: Novatada. Me he dado cuenta de que la zona de memoria afectada es lógicamente la que uso para el doble buffer. Éste sobreescribe los datos. :oops: