Home
Home
Principio Anterior Contenido Próximo Término
Principio - Anterior - Contenido - Próximo - Término
English Deutsch Italiano
English - Deutsch - Italiano

7. Programas Incorporados

Power64 dispone de varios programas incorporados. SMON y NEW Magician son herramientas útiles que viene muy bien tener a mano cuando se está programando el C64. Block Out, Serpentine y Quadromania son divertidos juegos que pueden utilizarse para verificar al instante la calidad del emulador.

Tenga en cuenta que seleccionar uno de estos programas desde la barra de menú cargará ese programa sin respetar cualquier otra aplicación que estuviera ejecutándose en ese instante.

7.1 SMON

SMON es uno de los mejores (si no el mejor) monitor de código máquina para Commodore 64. Ofrece una amplia variedad de funciones para mostrar y modificar la memoria del C64 (incluso un ensamblador). Además permite ejecutar los programas paso a paso. Hasta lleva incorporado un pequeño monitor de disco.

SMON necesita 4 KBytes de RAM para almacenar su código y las variables locales. Para disponer de una mayor flexibilidad, Power64 suministra tres versiones de SMON que difieren únicamente en términos del intervalo de memoria que ocupan en la memoria del C64. SMON($C000) utiliza la memoria desde $C000 hasta $CFFF y debe ser ejecutado con SYS 49152. Esta parte de la RAM no es utilizada por el BASIC, y es por tanto el lugar más popular (y recomendado) para herramientas como SMON. Si desea utilizar SMON junto a otras herramientas que bloquean este espacio, puede utilizar una de las otras dos versiones de SMON, o SMON($9000) [SYS 36864] o SMON($8000) [SYS 32768]. Observe que estas versiones utilizan parte de la memoria (4 KBytes para SMON($9000) y 8 KBytes para SMON($8000)) que de otra manera podría estar disponible para el BASIC. El puntero de la parte superior de la RAM disponible ($37/$38) es ajustado automáticamente cuando se cargan estas versiones de SMON para prevenir que el BASIC sobreescriba SMON con variables.

Advertencia de Copyright
SMON fue escrito por N.Mann y Dietrich Weineck en 1984/85 y fue puesto en circulación (en entregas) al público como un listado en la revista alemana "64'er". Los listados y una descripción detallada de SMON puede encontrarse en los números 11/84, 12/84, 1/85 (p.69), 2/85 (p.72), 4/85 (p.64) y 12/85 (p.100). Ha sido incluido en Power64 con el amable permiso de Magna Media.

La revista "64'er" fue publicada mensualmente hasta Enero de 1997 por

MagnaMedia Verlag (anteriormente Markt&Technik Verlag AG)
Redaktion 64'er
Hans-Pinsel-Str. 2
85540 Haar bei München
Germany
http://www.magnamedia.de/64er

SMON tiene disponibles las siguientes órdenes:

A xxxx - Ensamblar
Ensambla código comenzando en xxxx. Es posible utilizar marcadores (una forma simple de etiquetas simbólicas) de la forma Mxx. Una X sola finaliza el ensamblado.
B xxxx yyyy - Datos de BASIC
Crea líneas de datos de BASIC desde xxxx hasta yyyy. Observación: Los números de línea comienzan con 32000.
C xxxx yyyy zzzz aaaa bbbb - Convertir programa
El bloque de memoria desde xxxx hasta yyyy es movido a zzzz. Todas las direcciones de memoria absolutas en el código entre aaaa y bbbb que apuntan al intervalo movido son ajustadas.
D xxxx (yyyy) - Desensamblar
Desensambla el programa comenzando en xxxx (y terminando en yyyy). Es posible realizar cambios en el código sobreescribiendo los códigos de operación.
F aa bb cc ..., xxxx yyyy - Buscar byte
Busca todas las ocurrencias de la secuencia de bytes aabbcc ... dentro del intervalo de memoria desde xxxx hasta yyyy. Es posible especificar algunos dígitos hexadecimales para que tengan cualquier valor utilizando el comodín '*'.
Observación: Al contrario que la mayoría de las otras órdenes de SMON, las órdenes de búsqueda son muy estrictas acerca de la sintaxis. No debe haber ningún espacio entre el nombre de la orden y los argumentos a buscar (excepción: la orden 'Buscar byte' necesita exactamente un espacio), y debe haber una coma antes del intervalo de memoria especificado.
FAaaaa, xxxx yyyy - Buscar dirección absoluta
Busca todas las referencias a la dirección absoluta aaaa dentro del intervalo de memoria desde xxxx hasta yyyy. Observe que no hay ningún espacio entre FA y aaaa.
FRaaaa, xxxx yyyy - Buscar dirección relativa
Busca las expresiones de bifurcación que apuntan a la dirección aaaa dentro del intervalo de memoria desde xxxx hasta yyyy. Observe que no hay ningún espacio entre FR y aaaa.
FTxxxx yyyy - Buscar tabla
Busca todas las tablas en el intervalo de memoria desde xxxx hasta yyyy. SMON define una tabla como cualquier información que no puede desensamblarse.
FZaa, xxxx yyyy - Buscar página cero
Busca todas las referencias a la dirección de página cero aa dentro del intervalo de memoria desde xxxx hasta yyyy. Observe que no hay ningún espacio entre FZ y aa.
FIaa, xxxx yyyy - Buscar operando inmediato
Busca todas las expresiones en el intervalo de memoria desde xxxx hasta yyyy, que utilicen aa como operando inmediato. Observe que no hay ningún espacio entre FI y aa.
G (xxxx) - Ejecutar
Ejecuta el código máquina en la dirección de memoria xxxx o el contador de programa actual. Si el código termina con RTS, SMON es finalizado. Para volver a SMON después de ejecutar el código, el programa debe terminar con BRK.
I xx - Dispositivo de E/S
Selecciona el dispositivo de E/S para Cargar y Guardar. Los valores comunes de xx son 01 para la Unidad de Cinta y desde 08 hasta 0B para las Unidades de Disco.
K xxxx (yyyy) - Contenido de la memoria
Muestra el contenido de la memoria desde xxxx hasta yyyy en caracteres ASCII. Es posible realizar cambios sobreescribiendo los caracteres.
L "nombreArchivo" (xxxx) - Cargar
Carga un archivo desde el dispositivo de E/S estándar (ver la orden I) a la dirección estándar o a xxxx.
M xxxx (yyyy) - Volcado de memoria
Muestra el contenido de la memoria desde xxxx hasta yyyy en valores hexadecimales y en caracteres ASCII. Es posible realizar cambios sobreescribiendo los valores hexadecimales.
O xxxx yyyy zz - Ocupar
Rellena el intervalo de memoria desde xxxx hasta yyyy con el valor zz.
P xx - Impresora
Selecciona el número de dispositivo para la impresora. Los valores permitidos de xx son 04 y 05. Para enviar el resultado de una orden a la impresora, el mnemónico de esa orden debe escribirse en mayúsculas.
R - Registros
Muestra el contenido de los registros de la CPU. Es posible realizar cambios sobreescribiendo los valores.
S ("nombreArchivo" xxxx yyyy) - Guardar
Guarda en un archivo el contenido de la memoria desde xxxx hasta yyyy. Si el archivo fue cargado utilizando la orden L los parámetros para guardar son opcionales.
TW (xxxx) - Ejecución paso a paso
Ejecuta el código máquina en la dirección de memoria xxxx (o el contador de programa actual) en modo paso a paso. Después de cada orden ejecutada, se muestra el contenido de los registros y el sistema se para hasta que se pulsa una tecla. Las subrutinas pueden ejecutarse en tiempo real pulsando la tecla 'J'.
TB xxxx yy - Punto de interrupción
Establece un punto de interrupción en la dirección de memoria xxxx. Cuando más tarde el código es ejecutado con 'Ejecución rápida' (ver debajo) la ejecución cambia al modo paso a paso cuando el punto de interrupción es alcanzado (yy+1) veces.
TQ (xxxx) - Ejecución rápida
Ejecuta el código máquina en la dirección de memoria xxxx (o el contador de programa actual) en tiempo real. Cuando se encuentra un punto de interrupción la ejecución cambia al modo paso a paso. (Ver TW - Ejecución paso a paso)
TS xxxx (yyyy) - Ejecución con parada
Ejecuta el código máquina en la dirección de memoria xxxx en tiempo real. La ejecución se detiene cuando el programa alcanza la dirección de memoria yyyy (¡Sólo funciona en la RAM!).
V xxxx yyyy zzzz aaaa bbbb - Mover direcciones
Todas las direcciones absolutas de memoria que se encuentran en el código entre aaaa y bbbb y que apuntan dentro del intervalo comprendido entre xxxx y yyyy son ajustadas para apuntar dentro del intervalo que comienza en la dirección zzzz.
W xxxx yyyy zzzz - Escribir
Copia el contenido de la memoria entre la dirección xxxx y yyyy a zzzz. No se transforman direcciones u otros parámetros. Trabaja correctamente incluso cuando los intervalos de origen y destino se superponen.
= xxxx yyyy - Comprobar igualdad
Los intervalos de memoria que comienzan en xxxx y yyyy son comparados. Se muestra la dirección del primer byte que es diferente.
X - Salir de SMON
# num - Convertir decimal
El número decimal num se convierte a notación hexadecimal. Si num es un número de 8 bits también se muestra su forma binaria.
$ xxxx - Convertir hexadecimal
El número hexadecimal xxxx se convierte a notación decimal. Si xxxx es un número de 8 bits también se muestra su forma binaria.
% xxxxxxxx - Convertir binario
El número binario (¡de 8 bits!) xxxxxxxx se convierte a notación decimal y hexadecimal.
? xxxx + yyyy - Suma o resta hexadecimal
Se suman o restan dos números hexadecimales de 16 bits.
Z - Ejecuta el monitor de disco (orden equivalente: H)

SMON dispone de un monitor de disco para la unidad de disco nº 8. Para evitar confusión con los nombres de las órdenes, el monitor de disco debe ser ejecutado y finalizado explícitamente. Mientras SMON permanece en el modo monitor de disco, sólo se encuentran disponibles las siguientes órdenes:
Observación: No es posible examinar otro dispositivo que no sea un disco (p.e. no una carpeta de un disco duro de Mac o una cinta) montado en la unidad nº 8.

R (pp ss) - Leer sector
Carga el sector ss de la pista pp en la memoria. Si pp y ss no existen se lee el siguiente sector lógico (¡no físico!).
W (pp ss) - Escribir sector
Escribe sobre el sector ss de la pista pp del disco. Si pp y ss no existen se utilizan los parámetros de la última orden 'Leer sector' utilizada.
M - Volcado de memoria
Muestra en la pantalla el sector del disco que se encuentra en memoria. Pueden utilizarse las teclas Shift para interrumpir/continuar la visualización de los datos.
@ - Estado de error del disco
Muestra el actual Mensaje de Error de Disco. Si no ha ocurrido ningún error no se muestra ningún mensaje, p.e. el mensaje 00, OK,00,00 es suprimido.
X - Salir del monitor de disco / Volver al propio SMON

7.2 NEW Magician

NEW Magician es un pequeño programa que puede recuperar un programa BASIC que ha sido destruido por un Reinicio (o por la ejecución accidental de una orden NEW). Su uso es muy simple: Cargue NEW Magician en la RAM inmediatamente después del Reinicio y ejecútelo con SYS 828.
Nota Técnica: Cuando se borra un programa BASIC de la RAM del C64, sólo se ajustan unos pocos punteros y se sobreescriben los 3 primeros Bytes del programa. El resto se deja sin tocar. Por tanto es bastante fácil deshacer el borrado si se hace inmediatamente. Desafortunadamente cada variable que se define en este punto sobreescribe el código del programa y lo destruye, normalmente de forma irrecuperable. Por tanto es esencial utilizar NEW Magician inmediatamente después de que se haya perdido el programa.

Advertencia de Copyright
El origen de NEW Magician es desconocido para mi. Tiene al menos 10 años y ya no recuerdo si lo escribí yo mismo (probablemente), lo copié de alguna revista o lo obtuve de un amigo. Había muchas herramientas para este propósito…

7.3 Joystick Demo

Joystick Demo es una pequeña herramienta que muestra el estado de los dos joysticks del C64. Puede utilizarse para verificar que los joysticks USB son efectivamente requeridos por Power64, y que sus estados están disponibles para el C64 emulado.

Algunos juegos sólo funcionan con el joystick en el puerto 1, otros necesitan que el joystick esté en el puerto 2, y aún hay otros que permiten que el joystick esté en cualquiera de los dos puertos. Si la actividad del joystick es visible en Joystick Demo, pero su juego favorito no reconoce sus movimientos, pruebe a intercambiar los puertos de los joysticks (Cmd-J). Puesto que algunos juegos fallan si hay actividad en el puerto de joystick que no usan, de manera general no se recomienda configurar ambos joysticks para que estén los dos activos y utilicen las mismas entradas.
Para más información sobre la configuración del joystick vea el capítulo 5.5 Joysticks.

Advertencia de Copyright
Joystick Demo fue escrito en 2006 por Roland Lieger. Es Software de Dominio Público y puede ser distribuido libre y gratuitamente.

7.4 Block Out

Block Out es un divertido juego basado en el clásico juego de arcade Break Out. El principal objetivo de Block Out es romper seis filas de bloques golpeando los bloques con una pelota. El campo está limitado por los laterales y la parte superior por paredes que hacen rebotar la pelota. La parte inferior de la pantalla no tiene pared y la tarea de los jugadores es mover su pequeña raqueta hacia el lugar adecuado en el momento justo para que la pelota permanezca en juego. Se cuentan puntos por cada bloque roto (1-3 puntos por bloque, dependiendo del color) y por limpiar completamente el nivel. La raqueta se controla con el joystick nº 2.

Advertencia de Copyright
Block Out fue escrito en 1985 por Roland Lieger. Ahora es Software de Dominio Público que puede ser distribuido gratuitamente sin cargo alguno. Block Out fue publicado también como un listado en la revista alemana "64'er" número 11/85 (p.84).

7.5 Serpentine

Serpentine es un juego de acción donde varias serpientes se deslizan a través de un laberinto tratando de comerse unas a otras y de no ser comidas. Al principio del juego nuestro héroe, la serpiente azul, es un poco pequeña, mientras que el enemigo es grande y rojo. De modo que no puede atacar al enemigo de frente, sólo la cola de una serpiente está indefensa. Deslizándose por detrás nuestro héroe puede darles un buen bocado a las otras serpientes, reduciendo su longitud con cada bocado. Una vez que un enemigo es más pequeño que nuestro héroe, se vuelve verde y miedoso, y un encuentro de frente con nuestro héroe matará al enemigo. Una confrontación tan valiente levantará la moral de nuestro héroe y le provocará un crecimiento extra. También puede matarse a un enemigo comiéndole totalmente la cola, pero un ataque tan cobarde desde detrás no levanta la moral.

De vez en cuando se perderá un ratón en el laberinto. A las serpientes les gustan mucho los ratones (aunque esa amistad quizá sea sólo por una de las dos partes y un poco efímera) y crecerán cuando se coman uno.

Cuando una serpiente ha crecido hasta su tamaño máximo, y sigue bien alimentada, es hora de pensar en la siguiente generación y deposita un huevo. Los huevos se incubarán hasta el final de cada nivel, dando origen a un enemigo extra o una vida extra respectivamente. Un huevo es una excelente comida tanto para los ratones como para las serpientes, pero por supuesto no existe el canibalismo.

Se cuentan puntos por cada segmento mordido a un enemigo, cada enemigo muerto (extra para confrontaciones de frente), así como por cada ratón o huevo comido. La serpiente puede guiarse utilizando el joystick nº 1 o el nº 2.

Preste atención a la excelente melodía que suena de fondo.

La idea central de 'Serpentine' es original del juego Brøderbund del mismo nombre. El juego original no tenía ninguna melodía, ni disponía del agradable editor de niveles.

Advertencia de Copyright
Serpentine fue escrito en 1985 por Roland Lieger. Ahora es Software de Dominio Público que puede ser distribuido gratuitamente sin cargo alguno.

7.6 Quadromania

Quadromania es un exprime-cerebros. Consiste en un campo rectangular de piedras negras y blancas, y un pequeño marcador rectangular que puede utilizarse para invertir el color de las piedras (las piedras blancas se volverán negras y las piedras negras se volverán blancas). Al principio todas las piedras son blancas. Entonces la computadora marcará aleatoriamente las piedras para provocar el caos total. El trabajo consiste en deshacer los cambios y restaurar el prístino campo blanco, utilizando el menor número de movimientos posible.

El juego se controla a través del menú que se encuentra a la derecha de la pantalla. Para seleccionar un elemento mueva el cursor sobre él y pulse el botón de disparo. Para jugar debe seleccionar primero 'Autom. Erstellen' (crear automáticamente). Cuando hayan tenido lugar suficientes inversiones, pulse el botón de disparo para finalizar el proceso y haga doble click sobre 'Start' para comenzar el juego. El puntero cambiará automáticamente al marcador cuando se mueve sobre el campo de juego.
El marcador/puntero puede controlarse utilizando el joystick nº 1 o nº 2.

Observe que también puede ajustar el tamaño del campo de juego y del marcador. Además es posible tener más de dos colores. El marcador pasará entonces por los colores de manera cíclica (p.e. blanco-rojo-azul, blanco-rojo-azul…). Para aquellos que sólo dispongan de un monitor en blanco y negro existe también la opción de jugar con números ('Ziffern') en lugar de con colores ('Farben').
Quadromania mostrará también el tiempo que emplea en la partida, el número de movimientos que darían la mejor solución, el número de movimientos que todavía se requieren desde la posición actual y el número de movimientos hechos. También existe la opción de obtener ayuda para realizar un buen movimiento ('Zugvorschlag') o para dar marcha atrás un movimiento ('Zuruecknehmen'). Tenga en cuenta que dar marcha atrás un movimiento también se considera como un movimiento. (¡Aquí no pueden hacerse trampas!)

También es un interesante acertijo para pensar sin necesidad de utilizar el ordenador. Existe un algoritmo bastante simple que resuelve cualquier rompecabezas con un número mínimo de movimientos. ¡Intente encontrarlo!

La idea central de Quadromania viene de Christian Zwicker y fue publicada primeramente en "Happy Computer" número 7/87 p.65.

Advertencia de Copyright
Quadromania fue escrito en 1987 por Roland Lieger. Ahora es Software de Dominio Público que puede ser distribuido gratuitamente sin cargo alguno. Quadromania fue publicado también como un listado en la revista alemana "Happy Computer" número 2/88 (p.15 y p.113). Desafortunadamente "Happy Computer" ya no se edita.

7.7 Añadiendo Programas Propios

Mientras que los programas mostrados arriba son grandes herramientas y divertidos juegos, cada entusiasta del C64 tiene su propio conjunto de software esencial que es bueno tener a mano todo el tiempo. Por tanto es posible extender el menú Programas de Power64 con software adicional. Por favor, tenga en cuenta que esta opción se ha diseñado únicamente para herramientas 'esenciales'. No es conveniente para manejar una gran colección de juegos.

Para extender la colección de herramientas del menú Programas de Power64 hay que seguir sólo unos pocos pasos:

1) Crear una carpeta llamada 'Power64 Software' dentro de la carpeta de Power64.
2) Colocar las herramientas deseadas en formato *.PRG/*.CBM o *.P00 en la nueva capeta 'Power64 Software'. Si las herramientas están almacenadas actualmente en una imagen de disco o cinta, la manera más fácil de pasarlas a formato *.PRG o *.P00 es montando el disco de origen en la unidad nº 8 y la carpeta 'Power64 Software' como unidad nº 9. Después simplemente copie los archivos utilizando la opción arrastrar y soltar. Tenga en cuenta que sólo puede añadir al menú Programas herramientas de un único archivo. Si el programa necesita cargar datos adicionales (p.e. niveles de juego) desde un archivo separado después de haber comenzado, deberá cargarlos desde una unidad de disco o cinta.
Por favor, observe también que no puede utilizar archivos comprimidos (ZIP/GZ/LHA). Debe utilizar simples archivos *.PRG o *.P00.
3) Utilizando su editor de textos favorito (p.e. SimpleText, BBEdit, Alpha) cree un archivo de sólo texto (no un archivo *.RTF, *.DOC o de cualquier otro procesador de textos) llamado 'Index.txt' dentro de la carpeta 'Power64 Software'. Cada línea de este archivo deberá contener cuatro elementos separados por comas, describiendo las herramientas:
.) El primer elemento establece el nombre de la herramienta de C64 que se utilizará en el menú Programas.
.) El segundo elemento contiene el nombre del archivo *.PRG/*.P00 en el MacOS.
.) El tercer elemento define la orden necesaria para ejecutar el programa (p.e. RUN o SYS 12345) (máx. 10 caracteres).
.) El cuarto elemento configura los joysticks para un juego. Los valores permitidos son:
"?" - No cambiar la configuración de joysticks
"-" - Deshabilitar ambos puertos de joystick
"1" - Habilitar el puerto del joystick 1
"2" - Habilitar el puerto del joystick 2
"1+2" - Habilitar ambos puertos de joystick
"1/2" - Asegurarse de que al menos un puerto de joystick está habilitado.
Si uno de los elementos contiene un carácter coma, debe encerrar ese elemento entre comillas dobles. En otros casos las comillas son opcionales, aunque recomendables. Es posible crear submenús dentro del menú Programas. Para hacerlo introduzca un elemento de menú de la forma "submenu:elemento". Incluso es posible crear submenús de submenús de la forma "submenu:subsubmenu:elemento". ¡Niveles de anidamiento más profundos están prohibidos! Si el elemento consiste en un único signo menos (-), se inserta una línea de separación en el (sub) menú.
Las líneas que empiezan con un '#' son comentarios y se ignoran como si fueran líneas vacías.
Si no existe el archivo 'Index.txt' en la carpeta 'Power64 Software', Power64 simplemente añade al menú Programas (en orden alfabético) todos los archivos que encuentre en dicha carpeta.
4) La próxima vez que ejecute Power64 se extenderá el menú Programas.

Ejemplo de un archivo 'Index.txt':

# Ejemplo de Colección de Software para utilizar con Power64

"C64 Wedge",           "C64Wedge.P00",     "RUN:",       "?"
-
"Tools:Simon's Basic", "SimonsBASIC.PRG",  "RUN:",       "?"
"Tools:Profi-Ass",     "ProfiAss.PRG",     "SYS 36864:", "?"
"Spiele:Arkanoid",     "Arkanoid.P00",     "RUN:",       "2"
"Spiele:Arkanoid 2",   "Arkanoid2.P00",    "RUN:",       "2"
"Spiele:-"
"Spiele:Archon",       "Archon.P00",       "RUN:",      "1+2"
"Spiele:Pitstop II",   "PitstopII.PRG",    "RUN:",      "1+2"

Advertencia de Copyright
Por favor, recuerde que no está permitido distribuir Power64 con software pirata.
Si usted distribuye copias de Power64, por favor hágalo sin incluir su propia carpeta 'Power64 Software'. Incluso si la persona que lo recibe dispone de una licencia válida para ese software (p.e. porque lo ha escrito usted mismo, o es de dominio público) esto es necesario para mantener una clara separación entre el software de C64 que es oficialmente parte de Power64 (y por tanto permitido) y las adiciones personales (no permitido).

Home Principio Anterior Contenido Próximo Término Top of Page

Fuente: http://www.salto.at/Power64/Documentation/Power64-Leame/07-Programas.html
Power64 Homepage: http://www.infinite-loop.at y http://www.salto.at - EMail:
© Roland Lieger, Goethegasse 39, A-2340 Mödling, Austria - Europe
Últiomo Modificación: 29 de Febrero de 2008
Valid HTML 4.01!