Buenas...
Como sabeis la variable del sistema CHARS (23606) es la que controla en qué posición de memoria está alojado el set de carácteres... inicialmente apunta a la dirección 15360
Si POKEamos en las direcciones 23606 y 23607 podemos cambiar el set de carácteres por uno definido por nosotros...
Ahora bien... el set aparece desplazado... que no es poblema pokeando donde toca pero me pregunto
¿esto es debido a los carácteres de control?
Curiosidad acerca de CHARS
Moderador: Sir Cilve Sinclair
- Hark0
- Freddy Hardest
- Mensajes: 545
- Registrado: Mar Nov 13, 2012 12:42 pm
- Ubicación: Cornella de Llobregat - Barcelona
- Contactar:
Curiosidad acerca de CHARS
litiopixel.blogspot.com - Desarrollo videojuegos Indie · Pixel-Art · Retroinformática · Electrónica
- Alxinho
- Freddy Hardest
- Mensajes: 896
- Registrado: Mar Jun 19, 2007 11:20 am
- Ubicación: Barcelona
- Contactar:
Re: Curiosidad acerca de CHARS
Piensa que el 32 es el Espacio y para atrás cosicas de control del Spectrum.
En Mojonia tienes tutorial http://tcyr.wordpress.com/2012/02/23/tu ... -charsets/
Yo en ZX Basic hago POKE UINTEGER 23606, @fuente(0)-256 habiendo guardado en un array las fuentes y yatá.
Saludos y espero que te sirva!
En Mojonia tienes tutorial http://tcyr.wordpress.com/2012/02/23/tu ... -charsets/
Yo en ZX Basic hago POKE UINTEGER 23606, @fuente(0)-256 habiendo guardado en un array las fuentes y yatá.
Saludos y espero que te sirva!
Retrobytes Productions --> http://retrobytesproductions.blogspot.com.es
Soy un tío feliz, más que nada ... porque me sale más a cuenta.
Soy un tío feliz, más que nada ... porque me sale más a cuenta.
- mcleod_ideafix
- Johnny Jones
- Mensajes: 3985
- Registrado: Vie Sep 21, 2007 1:26 am
- Ubicación: Jerez de la Frontera
- Contactar:
Re: Curiosidad acerca de CHARS
Está desplazado para que apunte a la dirección del hipotético caracter cuyo código ASCII es el 0.
De esa forma, cuando quieres averiguar la dirección del comienzo de la definición de un carácter imprimible, sólo has de hacer:
O sea: DIRECCION = CHARS + ASCII * 8
En lugar de: DIRECCION = CHARS + (ASCII-32) * 8
(que de todas formas, añadiría sólamente una instrucción SUB al código anterior, pero la cosa es que si se puede hacer sin añadir esa instrucción y no complica ninguna otra parte del código, ¿para qué añadirla? )
De esa forma, cuando quieres averiguar la dirección del comienzo de la definición de un carácter imprimible, sólo has de hacer:
Código: Seleccionar todo
;A = código ASCII del carácter a imprimir
ld h,0
ld l,a
ld de,(chars)
add hl,hl
add hl,hl
add hl,hl
add hl,de ;HL = primer scan de la definición del carácter
O sea: DIRECCION = CHARS + ASCII * 8
En lugar de: DIRECCION = CHARS + (ASCII-32) * 8
(que de todas formas, añadiría sólamente una instrucción SUB al código anterior, pero la cosa es que si se puede hacer sin añadir esa instrucción y no complica ninguna otra parte del código, ¿para qué añadirla? )
Web: ZX Projects | Twitter: @zxprojects
- Hark0
- Freddy Hardest
- Mensajes: 545
- Registrado: Mar Nov 13, 2012 12:42 pm
- Ubicación: Cornella de Llobregat - Barcelona
- Contactar:
Re: Curiosidad acerca de CHARS
Gracias por los replys, suponia que era algo de eso... sobre la dirección exacta, lo tengo controlado... si quiero pintar un "!" y me sale una "A", es que la dirección no es correcta... pokeo un poco más allá y listos...
Cada dia me encanta más el Spectrum...
Gracias por los post!
Cada dia me encanta más el Spectrum...
Gracias por los post!
litiopixel.blogspot.com - Desarrollo videojuegos Indie · Pixel-Art · Retroinformática · Electrónica
¿Quién está conectado?
Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 41 invitados