HispaMSX

Re[2]: [hispamsx] Compilador BASIC para Z80

2004-08-10 14:16:51
DB>> hace no mucho que he descubierto por ahi un buen IDE simulador para
DB>> Z80 extremadamente facil de usar.
DB>> ¿Que que tiene este de especial? pues un COMPILADOR Basic integrado,
DB>> con muchas cosas mas, ensamblador, desensamblador, creacion de fichero
DB>> objeto (o sea, la ROM), puedes ver paso a paso los estados de
DB>> cualquier registro, simula dispositivos para depurar el programa,
DB>> etc...

H> La verdad es que es muy bonito. Lo único malo es que no tienes
H> disponibles por ejemplo los registros del VDP, y el basic no usará por
H> supuesto las capacidades del MSX. Hice en su día una máquina
H> recreativa basada en Z80 y si hubiera tenido esto hubiera dado saltos
H> de alegría (por cierto, la programé usando un 8245 :)

H> SAludOS!

Pero con el MSXredBook por delante podras hacer lo que quieras sin
exprimirte el coco, miras en que puertos del Z80 estan los registros del
VDP y ya está.
Con decirte que en 10 minutillos, sin haber hecho nada en ensamblador
antes, he hecho el "Hola mundo!!" en screen 0

Mirad que chorra de codigo:

' - para que el vdp apunte a la direccion 0000h de la vram -

Put 99h, 0
Put 99h, 01000000b

' - comienza a escribir el texto "Hola mundo!!" -

Put 98h, "H"
Put 98h, "o"
Put 98h, "l"
Put 98h, "a"
Put 98h, 32
Put 98h, "m"
Put 98h, "u"
Put 98h, "n"
Put 98h, "d"
Put 98h, "o"
Put 98h, 32
Put 98h, "!"
Put 98h, "!"

End

------------------

Y genera el siguiente codigo ensamblador:

; Begin
        LD IX,0FF00H
        LD SP,0FF00H
; 1: ' - para que el vdp apunte a la direccion 0000h de la vram -
; 2:
; 3: Put 99h, 0
        LD A,00H
        OUT (99H),A
; 4: Put 99h, 01000000b
        LD A,40H
        OUT (99H),A
; 5:
; 6: ' - comienza a escribir el texto "Hola mundo!!" -
; 7:
; 8: Put 98h, "H"
        LD A,48H
        OUT (98H),A
; 9: Put 98h, "o"
        LD A,6FH
        OUT (98H),A
; 10: Put 98h, "l"
        LD A,6CH
        OUT (98H),A
; 11: Put 98h, "a"
        LD A,61H
        OUT (98H),A
; 12: Put 98h, 32
        LD A,20H
        OUT (98H),A
; 13: Put 98h, "m"
        LD A,6DH
        OUT (98H),A
; 14: Put 98h, "u"
        LD A,75H
        OUT (98H),A
; 15: Put 98h, "n"
        LD A,6EH
        OUT (98H),A
; 16: Put 98h, "d"
        LD A,64H
        OUT (98H),A
; 17: Put 98h, "o"
        LD A,6FH
        OUT (98H),A
; 18: Put 98h, 32
        LD A,20H
        OUT (98H),A
; 19: Put 98h, "!"
        LD A,21H
        OUT (98H),A
; 20: Put 98h, "!"
        LD A,21H
        OUT (98H),A
; 21:
; 22: End
        HALT
; End of program
        HALT
; End of listing
        .END


Y lo mas importante, ojea el codigo ensamblador que te genera y para
los que estan un poco pegados como yo, es perfecto para aprender el
ensamblador.
Para empezar sin preocuparte de como distribuir el uso de los registros
internos, crear estructuras iterativas, etc...

Llamas a rutinas de la BIOS y lo tienes casi todo hecho.


Parece bastante potente teniendo en cuenta como tu dices que es
para Z80, pero puedes simular un dispositivo conectado a un puerto y
ver que es lo que se esta esribiendo en él, estos serán los registros
del VDP, teclado, PSG, etc...

Puedes poner puntos de ruptura en el codigo y ver el estado de la CPU,
puertos IO, toda la memoria, etc... en cualquier punto del codigo.
Ejecutar paso a paso...

Bueno, a ver si me da tiempo de adaptar un código que en BASIC me va
demasiado lento, y lo presento al MSXDev'04.
Corre corre!!

                       -Daniel Berdugo-


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