--- 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