Autor Tema: Ayuda con monitor de WinVICE  (Leído 3256 veces)

Carlos

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 652
    • Ver Perfil
Ayuda con monitor de WinVICE
« en: Marzo 09, 2011, 09:24:27 »
Alguien tiene experiencia manejando el monitor que tiene el VICE?

Básicamente lo que quiero hacer es cargar un programa y una vez hecho 'tocar' el valor de registros del VIC-II para comprobar ciertos funcionamientos. He echado un vistazo al manual pero no me aclaro demasiado.

josepzin

  • Administrador
  • Commodore Master
  • *****
  • Mensajes: 13719
  • Commodoreador web
    • Ver Perfil
    • Mi blog
Ayuda con monitor de WinVICE
« Respuesta #1 en: Marzo 10, 2011, 20:08:08 »
Ni idea... un par de veces caí en el monitor y no me acordaba de absolutamente nada.

Pensar que en su época me hice un editor de texto y compilador de assembler sólo usando un cartucho de monitor...
www.retroinvaders.com | www.commodoreplus.org  | josepzin.blogspot.com

lobogris

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 453
  • Programador
    • Ver Perfil
    • http://back2theretro.blogspot.com
Ayuda con monitor de WinVICE
« Respuesta #2 en: Marzo 11, 2011, 12:57:54 »
Lo utilizo bastante, la verdad es que al principio es un poco engorroso, y en general es bastante malillo, pero restulta útil por que es práctico tenerlo integrado en el emulador.

Para lo que comentas, te recomiendo el uso de breakpoints controlados y si puede ser reprograma la rutina de la interrupcion BRK (interrupcion de software) para que salte a tu propia pero antes almacene el contenido de los registros en posiciones de memoria que tu quieras, para testear que contenia antes del break.

Puedes usar breakpoints usando los menus del monitor de Vice, pero lo más comodo al menos para mi... Es poner una instrucción BRK en el punto de programa que quieras testear.

A continuación te muestro el código que uso en mis programas para testearlos:

[code]/* Rutinas para DEBUGGING: breakpoint y set_brk_vector
 
 jsr breakpoint
 
 Sale al basic cuando encuentra una instruccion BRK y:
 guarda el contenido de los registros A,X,Y en posiciones de memoria 820,821,822
 para ser vistos en basic con PEEK.
 Además repone el charset normal
 
 Para que funcione: hay que poner el vector de BRK apuntando a esta rutina.
 para ello llamamos al principio del juego a set_brk_vector
*/


breakpoint:
                        sta 820
                        stx 821
                        sty 822

                        lda #4
                        sta 648      // direccion modo texto normal (informa al kernal)
                        lda #21
                        sta $d018   // pone modo texto normal (informa al VIC)

                        :SetVicBank(0)

                        jsr 58251   // vuelve al basic

set_brk_vector:
                        lda   #<breakpoint
                        sta 790
                        lda #>breakpoint
                        sta 791
                        rts[/quote]

lobogris

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 453
  • Programador
    • Ver Perfil
    • http://back2theretro.blogspot.com
Breve tutorial del monitor de WinVice
« Respuesta #3 en: Marzo 11, 2011, 13:16:45 »
pero si quieres usar el monitor de vice, que es lo que preguntabas:

primero interrumpe el programa en el lugar que quieras con ALT-M para entrar en el monitor. luego teclea exit cuando quieras regresar (o cierra la ventana del monitor)

Usa R para ver los registros antes de regresar al programa.

puedes cambiar fácilmente los valores de los registros poniendo su nombre = valor (como si asignaras una variable en basic)

por ejemplo:
AC=09
pondria el valor 9 en el acumulador.
(los nombres de cada registro, son los que se listan cuando usas R)
Ten encuenta que PC es un registro especial que no se cambia por aqui
para ello usa el comando G (de "go", ir a), y pondra el PC a ese punto ejecuntando a partir de ahi tu programa (Es como hacer un JMP)

Tambien puedes rastrear linea a linea el código máquina con trace step y trace into (una variante del metodo BRK que te comentaba antes)
Trace into se mete dentro de las funciones (llamadas con JSR) y las "tracea" tambien.
Debes ir pulsando la tecla de funcion de trace que quieras continuamente, y ejecuta la instruccion del Puntero de programa en curso. Entonces se para, y puedes mirar la memoria y los registros del 6510.

Algunos comandos Útiles para el monitor de Vice:

Para mirar los registros usa el comando "r"y te saldrá el listado de todos los registros con sus valores.

Para mirar un rango de memoria usa "m": m seguido del rango de memoria a mirar en hexadecimal (pero sin usar el $ ni ningun prefijo, pues ya da por hecho que son nums hexa) y sin separar por comas ni nada, por ejemplo
m 0400 0410
nos haria un volcado de los bytes que hay en las primeras 16 posiciones de la mem de pantalla.

si quieres modificar un valor de memoria, usa el signo > seguido de la direccion de memoria y el nuevo byte a poner en ella.
ejemplo:
> 0400 00
pondria a 0 la posicion $0400

si quieres buscar un byte o un patrón de bytes en memoria usa h (de "hunt", "cazar")
h 1000 2000 03 fa ff

busca el patron "03 fa ff" en el rango $1000-$2000 y te lista las direcciones donde lo ha encontrado (Muy útil!)

para grabar una sección de memoria en disco usa save o s
ejemplo:
s "volcado de prueba.prg" 00 0400 0410

guarda en disco las primeras 16 posiciones de memoria de pantalla en el archivo indicado. Tras el numero de archivo se pone el numero de dispositivo para usar (disco, casette, o disco duro del pc)
00 es el disco duro del pc

para saber donde esta el directiorio de trabajo actual usa:

pwd

para cargar puedes usar load o l, y se usa igual salvo que se indica la direccion de rango, solo la direccion de carga o ninguna para que lo ponga en su original.

Para más información usa ?
o para informacion especifica de cada comando si te olvidas como iba
usa ? y a continuacion el comando a obtener ayuda.

por ejemplo:
? load

espero que esto sirva un poco de guia. Preguntame cualquier duda que tengas :wink:

Carlos

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 652
    • Ver Perfil
Ayuda con monitor de WinVICE
« Respuesta #4 en: Marzo 11, 2011, 15:33:17 »
Mil gracias! me ha ayudado un montón.. menos mal que no eres de los que responden con el RTFM  :wink:

lobogris

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 453
  • Programador
    • Ver Perfil
    • http://back2theretro.blogspot.com
Ayuda con monitor de WinVICE
« Respuesta #5 en: Marzo 11, 2011, 15:40:26 »
Me alegro que te haya ayudado.

que es el RTFM?

edit: jaja ya lo he encontrado el acrónimo (muy divertido) read the fuckin' manual :D