HispaMSX

RE: problemas asMSX y VDP

2004-11-08 08:01:27

--- En hispamsx(_en_)yahoogroups(_punto_)com, "Dani" <danibarrientos@y...> 
escribió:
Buenas chavalones!!!
    bueno, comienzo mi andadura en el MSX (objetivo: MsxDev05)y me 
estoy
encontrando varios problemas/dudas.En otro correo haré un
listado 
de ellas
para que los gurus del MSX me la resuelvan pero ahora hay algo que 
me
resulta más urgente y tiene que ver con el ensamblador asMSX:
    En primer lugar dar la enhorabuena a Eduardo, me parece un 
trabajo muy
bueno. Y ahora  mis problemas:
 
    1º- el más importante. Tengo un codigo que termina
asi(antes 
hay mas).
 
[......]
.PAGE 3  ;para mis variables
 
TECLADO:
 ds  11  ;reservamos 11 bytes para almacenar el estado de las teclas
 
 CERO EQU 01H
 UNO EQU 02H
 DOS EQU 04H
 TRES EQU 08H
 CUATRO EQU 10H
 CINCO EQU 20H
 SEIS EQU 40H
 SIETE EQU 80H

OBJETO1:
 ds 4      ;4 BYTES PARA SPRITE BASICO
 db 0   ;ALMACENARE EL ESTADO
    
    pues bien, cuando ensamblo el programa (genero una ROM) me crea 
un
fichero de 24 Kb (desde luego mucho mas de lo que hay en total) y no
funciona. Sin embargo, si quito el último byte del trozo
anterior 
(el cual
ahora mismo no uso) ya me genera una ROM de 8 Kb y todo funciona. 
Eso si,
sorpresa, porque si en vez de poner "db 0" pongo ".byte", ¡ya 
funciona!.
???????


La razón es porque con db estás definiendo un byte
(con valor cero), y al definir con "0" realmente estás
escribiendo el dato en la ROM que estás creando. Con
lo cual, como tu rom llega hasta la page3 con 
ese db, pues te genera ese cambio de tamaño y te sale
un rom de 24Kb.

Para usar las variables debes reservar el espacio en RAM
con ds, cómo has hecho el resto, y no definir con db, que
no es lo mismo. Así, las variables son punteros que defines
para utilizar en RAM y no datos en ROM (que serían los db).
Tu "db 0" debes cambiarlo por ds 1 (reservar en RAM 1 byte).
Y si luego le quieres dar un valor de "0", se lo 
indicas en el código de tu programa con un
xor a / ld [OBJETO1+4],a

Un abrazo,

Jon Cortazar Abraido
(aka El Viejo Archivero)
Karoshi Corporation







<Anterior en la conversación] Conversación actual [Siguiente en la conversación>