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.
imprimir cadenas de texto y números en ensamblador
Moderador: Sir Cilve Sinclair
-
- Herbert
- Mensajes: 75
- Registrado: Lun Jul 23, 2012 1:55 pm
- mcleod_ideafix
- Johnny Jones
- Mensajes: 3985
- Registrado: Vie Sep 21, 2007 1:26 am
- Ubicación: Jerez de la Frontera
- Contactar:
Re: imprimir cadenas de texto y números en ensamblador
Pon un ejemplo (código) de cómo lo haces, a ver si detectamos algo extraño
Web: ZX Projects | Twitter: @zxprojects
- climacus
- Sabreman
- Mensajes: 411
- Registrado: Mar Ago 25, 2009 1:46 pm
Re: imprimir cadenas de texto y números en ensamblador
En el wiki del Speccy de Santiago Romero hay unas rutinas muy útiles: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.
https://wiki.speccy.org/cursos/ensamblador/gfx4_fuentes
Todos mis juegos en formato físico
http://www.matranet.net/boutique/zx/zx.php
http://www.matranet.net/boutique/zx/zx.php
-
- Herbert
- Mensajes: 75
- Registrado: Lun Jul 23, 2012 1:55 pm
Re: imprimir cadenas de texto y números en ensamblador
Mcleod, me he basado en el tutorial de Chuntey: How to write Zx Spectrum games. En concreto, en este código:mcleod_ideafix escribió:Pon un ejemplo (código) de cómo lo haces, a ver si detectamos algo extraño
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.
-
- Herbert
- Mensajes: 75
- Registrado: Lun Jul 23, 2012 1:55 pm
Re: imprimir cadenas de texto y números en ensamblador
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.
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.
¿Quién está conectado?
Usuarios navegando por este Foro: Amazon [Bot], Bing [Bot] y 37 invitados