imprimir cadenas de texto y números en ensamblador

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

Moderador: Sir Cilve Sinclair

Responder
Kodaly
Herbert
Mensajes: 75
Registrado: Lun Jul 23, 2012 1:55 pm

imprimir cadenas de texto y números en ensamblador

Mensaje por Kodaly » Dom Oct 02, 2016 4:49 pm

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.

Avatar de Usuario
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

Mensaje por mcleod_ideafix » Lun Oct 03, 2016 11:18 pm

Pon un ejemplo (código) de cómo lo haces, a ver si detectamos algo extraño
Web: ZX Projects | Twitter: @zxprojects

Avatar de Usuario
climacus
Sabreman
Mensajes: 411
Registrado: Mar Ago 25, 2009 1:46 pm

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

Mensaje por climacus » Mar Oct 04, 2016 8:37 am

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
Todos mis juegos en formato físico
http://www.matranet.net/boutique/zx/zx.php

Kodaly
Herbert
Mensajes: 75
Registrado: Lun Jul 23, 2012 1:55 pm

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

Mensaje por Kodaly » Mar Oct 04, 2016 8:36 pm

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.

Kodaly
Herbert
Mensajes: 75
Registrado: Lun Jul 23, 2012 1:55 pm

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

Mensaje por Kodaly » Sab Oct 08, 2016 4:20 pm

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:

Responder

¿Quién está conectado?

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