Revistas en papel
 Commodore World Nº59
Anterior
MenĂº
Logotipo

 ARTAS DEL LECTOR

MEMORIA, MÚSICA Y GRÁFICOS

  1. ¿Me podríais explicar bien el uso de la instrucción CLEAR y la función específica de los valores que le siguen?

  2. ¿Hay otra forma de crear formas de onda, desde el Basic? (aparte de los sonidos digitalizados? con la función WAVE, es decir, utilizando el comando SOUND. Esta pregunta quizá os parezca un poco rara, pero he cambiado miles de veces los 256 valores de instrucción WAVE y siempre me da sonidos parecidos y por cierto bastante feos.

  3. ¿Hay alguna forma "numérica" de crear SPRITES y BOBS, sin utilizar el engorroso editor de objetos? Porque supongo que algún algoritmo numérico utilizará dicho programa para crearlos.

Vicente Zarzoso
Valencia

  1. La instrucción CLEAR sirve para reservar cierta cantidad de memoria para los programas y variables Basic. El formato es el siguiente:

    CLEAR [,Memoria para Basic][,Memoria para Stack]

El valor de MEMORIA PARA BASIC indica cuánta memoria se va a reservar para los programas y las variables. Si en tu programa necesitas, por ejemplo, dimensionar una matriz de 5000 x 5 elementos, los 25K libres para Basic que quedan al arrancar el Amiga Basic no serán suficientes, y tendrás que reservar algo más de memoria (Cerca de 100.000 bytes). En este caso, la instrucción que tendrías que incluir al principio del programa sería CLEAR,100000.

La MEMORIA PARA STACK (el "stack" también se conoce como la "pila" del procesador) sólo hace falta ampliarla en las ocasiones que aparece el error "Stack Overflow": cuando se utilizan demasiadas pantallas o un gran número de bucles FOR...NEXT o GOSUBs anidados (en procedimientos recursivos, por ejemplo). Así, por ejemplo, podrías reservar 5.000 bytes para el stack con CLEAR,,5000. Estas dos instrucciones se pueden combinar: CLEAR,100000,500 surte el mismo efecto que los dos ejemplos anteriores. Para no modificar el valor ya existente, debe emitirse el valor en cuestión, sin dejarte la coma o comas, naturalmente.

  1. Aparte de la utilización de sonidos digitalizados o sintetizados (para lo que se utilizan el comando WAVE y otras funciones), SOUND puede emplearse para la creación de música mediante notas sencillas, al estilo del C-64 o el C-128. La sintaxis es:

   SOUND frecuencia, duración [,volumen][,voz]

La tabla de frecuencias y notas, así como una explicación más amplia la tienes en el manual del Basic. También puedes ver cómo funciona este comando en los demos que se incluyen en el disco Extras. Y recuerda... ¡hay que experimentar!

  1. Puede ser bastante complicado obtener ese algoritmo. Si quieres, existe la posibilidad de crearlos desde programas como Deluxe Paint y grabarlos en formato Bob/Sprite, con algún pequeño utilitario de dominio público de los muchos que hay a tal efecto, más cómodo que el terrible "Editor de Objetos".


PANTALLAS A LA VISTA

Tengo varios visualizadores ILBM. Con este tipo de programas se pueden visualizar dibujos en formato IFF sin tener que cargar el programa de dibujo, pero sí quiero hacer un dibujo con ciclo de colores, o que tenga una animación figurada, ¿como hacerlo? He probado con algunos visualizadores y la animación o ciclo de colroes se queda parada y no sigue la ejecución de los colores, es decir, la paleta se queda parada. ¿Cómo puedo solucionarlo? ¿No existen otros tipos de visualizadores que permitan ver una pantalla en formato IFF con ciclos y cierta animación?

Además, quisiera que me dijerais si existen algunos programas educativos como Galileo 2.0 que permitan estudiar sobre moléculas y compuestos químicos.

Esteban Sánchez Rivas

Algunos de los programas visualizadores admiten el ciclo de colores. Nosotros utilizamos en nuestros discos de Amiga VIEW, que muestra la pantalla (con ciclo de colores, si lo tiene). Las pantallas las solemos grabar con Deluxe Paint II. Para que lo reconozcas, View es el que muestra el mensaje "<- Click here afer clicking below" para que cierres la pantalla. View tiene la ventaja de que permite visualizar pantallas en varios formatos, PAL incluido.

Respecto al otro programa, no conocemos ninguno como el que tú necesitas. Si algún otro lector sabe algo, le agradeceríamos que se pusiera en contacto con nosotros para publicar una nota.


SCROLL SUAVE Y LIMPIO

En mi haber constan numerosos juegos (todos en lenguaje máquina), en los que habría ido muy bien un scroll fino de pantalla en vez del que tienen, es decir, pantalla a pantalla. Por eso, me he decidido a escribiros para ver si me podéis decir cómo se hace el scroll fino.

He de deciros que yo lo he conseguido para pequeñas áreas de la pantalla, pero no puedo evitar que el raster me haga una mala jugada y la pantalla de la sensación de ir a saltos. ¿Qué hay que hacer, una vez que habiendo llegado las direcciones $D011 y $D016 a su valor límite?, ¿cuándo hay que hacer scroll de la memoria de vídeo, para evitar esos saltos?

José Rubio Cambrón
Barcelona

En Commodore World ya hemos publicado una amplia explicación sobre las técnicas de scroll, scroll fino y otras posibilidades de chip de vídeo. Te recomiendo que leas el capítulo 13 del "Código Máquina a Fondo", de Alvaro Ibáñez, donde se trata el tema en profundidad, incluidos los problemas con el raster. También puedes consultar el Rincon del CM 4 (18), 64 Sprites (24), Scan Master (41), Sprites en los bordes (39), Letras en movimiento (30), La Bolsa (46), Cursillo de Código Máquina 8 y 9 (10 y 11), Aprovecha el teclado (19), Ratón 64 (20) y Exploración del teclado (27).

El problema se soluciona, básicamente, refrescando la pantalla (redibujándola) cuando el raster se encuentra al principio del borde inferior de la pantalla o incluso un poco antes. Pero si tardas demasiado en hacer los cálculos, el efecto se pierde, pues el raster pasa sobre la pantalla que se está dibujando. Por esta razón, muchas veces estas rutinas se miden en "tiempo de raster": cuanto menos necesitan, mejor.


DUDAS EN C

Les escribo para consultar un problema que me surge al intentar compilar los listados que aparecen en el Curso de C del número 53 de Commodore World.

Sigo todos los pasos que me indicáis en el número 52, pero siempre me da error en las líneas donde se realizan las operaciones aritméticas, diciéndome que hago mal uso de las variables. ¿Qué es lo que ocurre? Por otro lado quisiera saber si es´ta ya disponible en España el Workbench 1.3.

Alejandro Morales Carrillo
Sevilla

Respecto a la primera pregunta, deberías indicarnos qué tipo de compilador de C estás utilizando y cuáles son las instrucciones que tecleas, pues de lo contrario no podemos decirte dónde está el fallo. Probablemente se deba a algún problema en la instalación del compilador, el linkador o las librerías del C.

El WorkBench 1.3 ya está disponible en casi todos los distribuidores Commodore. Incluye tres discos y manual (sin ROM). La ROM del 1.3 difiere únicamente de la 1.2 en la posibilidad de auto-arranque para los discos duros. Si en el futuro vas a instalar un disco duro auto-arrancable, la ROM 1.3 (en forma de Eprom) irá incluida con el disco duro y sólo tendrás que abrir el ordenador y sustituirla por la antigua.

Tu primera pregunta nos va a permitir hacer un comentario sobre algo que viene sucediendo desde hace ya tiempo en Commodore World y Amiga WOrld (aunque tal vez no sea tu caso). Se refiere a las consultas que recibimos, tanto telefónicas como por carta, de "presuntos" programadores en C. Después de quejarse porque los listados no les funcionan y porque no saben cómo arrancar el C para teclear los programas (como si el C fuera un programa que se arranca), acaban confesando las conocidas frases: bueno, es que realmente no tengo manual", "es que no me lo han pasado", "la copia que tengo no es un original"... etc.

Por lo tanto, un consejo: para aprender C hacen falta tres cosas:

  1. Comprar (no "piratear") un compilador de C. Si no, no hay manuales de referencia.

  2. Hacerse con toda la documentación posible: libros, revistas, cursillos y programas en C ya probados. En el dominio público hay un buen surtido.

  3. Dedicarle mucho tiempo y paciencia.

El C no es la "panacea" de lenaguaje maravilloso que sirve para todo y es sumamente sencillo de programar. De hecho, se aleja un poco de los lenguajes facilotes como el Basic o el Logo, a los que están acostumbrados los usuarios de Commodore, donde todo es encender el ordenador, teclear y RUN. Para Instalar el compilador, Editar, Compilar, Linkar, Depurar y Ejecutar los programas hace falta disponer de documentación, conocimientos... y mucha paciencia. De modo que los "listillos" que creen que con una copia (que muchas veces está incluso incompleta) del Lattice C o el Aztec C van a comenzar a programar en C... lo tienen claro.


LIBRERÍAS PARA EL AMIGA

Tengo una gran duda a pesar del artículo sobre librerías de la revista Amiga World 0, y es que no me aclaro nada con ellas. El caso es que estoy muy interesado en la magia titulada "CLI desde AmigaBASIC", publicada en la página 44 de la revista Commodore World 53. Con ella, se pueden ejecutar comandos o programas desde el basic como si estuviéramos en el CLI.

El problema es el siguiente: Escribo el listado en el Basic y quiero llamar al programa CLOCK (Workbench), hago un RUN y me da el error "File not Found" en la instrucción LIBRARY "dos.library". El artículo menciona que necesita un fichero DOS.MAP. Mi pregunta es... ¿Dónde se encuentra dicho fichero? ¿Dónde está la librería "dos.library"? ¿Qué librería debo tener en el disco con el que trabajo, si tengo que utilizar el conversor de ficheros ".fd" a ficheros ".bmap"? ¿Qué fichero en este caso debería convertir, y dónde situarlo? Me parece que en la primera instrucción del listado donde pone FUNCTION por segunda vez debería poner LIBRARY. Me gustaría que me dijerais los pasos a seguir y qué ficheros debo tener en el disco.

José Ramón González Pérez
Cartagena

Como somos conscientes del interés que despiertan las librerías en el Amiga, intentaremos preparar un amplio artículo sobre su funcionamiento y utilidad en alguno de los próximos números (seguramente de Amiga WOrld). De momento, te tendrás que conformar con la pequeña explicación que viene a continuación.

En primer lugar, para abrir una librería se debe utilizar la instrucción LIBRARY "nombre de la librería". En el caso de tu ejemplo, LIBRARY "DOS.LIBRARY". El basic se encarga de buscar en el disco (por lo que a veces hace falta indicarle el PATH completo del fichero, por ejemplo, DF0:/Libs) el fichero llamado "DOS.BMAP". La conversión de ".bmap" a ".library" la hace automáticamente el Amiga Basic. De hecho, si indicas LIBRARY "DOS.BMAP", no funciona. El resto de las llamadas a las librerías es más complicado, pues hay que conocer su estructura interna. En los listados del artículo hay algunos ejemplos.

Respecto a la magia "CLI desde Basic" hay que aclarar dos cosas: Primero, que tienes razón: DECLARE FUNCTION Execute&FUNCTION debe ser DECLARE FUNCTION Execute&LIBRARY. Errata. Segundo, que sólo funciona si el AmigaBasic se ha arrancado desde el CLI, con una instrucción como EXTRAS:AMIGABASIC. Si no hay un CLI "debajo", la rutina se cuelga, como sucede si abres el Amiga Basic desde el WorkBench. El fichero de la librería DOS.LIBRARY, llamado DOS.BMAP, se encuentra en el disco Extras, dentro del subdirectorio "BasicDemos" (por cierto: es increíble la cantidad de programas y ficheros que hay en este disco que la gente no conoce, simplemente por no preocuparse de investigar). Para que la rutina funcione directamente, puedes utilizar las instrucciones LIBRARY "Extras:BasicDemos/DOS.library" dentro del listado. El Amiga te pedirá el cambio de discos. Un ejemplo práctico de esta aplicación lo tienes en el programa LOTO publicado en el Amiga World 1, que utiliza esta rutina para ejecutar programas y leer el directorio.


Envía esta página web a un amigo:
Esta opción está desactivada temporalmente, rogamos disculpen las molestias

Volver a la página anterior

Al menú principal