21 PROGRAMAS MULTIPLES Y ACCESORIOS: Programas multiples. Pese a que AMOS solo te permite editar un so lo programa a un mismo tiempo. No existe limites para el numero de programas que pueden ser instalados en memoria, mas que el ni- vel de almacenaje disponible. Una vez que hayas almacenado un pro grama, lo puedes ejecutar desde la ventana de edicion usando la opcion RUN OTHER. Supongamos, por ejemplo, que encuentras un problema en alguno de tus programas. AMOS cambiara el programa de memoria para que sin dificultad puedas seguir experimentando hasta hallar la solu- cion. Una vez hayas acabado, podras grabar la nueva rutina en me- moria con la opcion CUT, y regresar a tu programa original solo pulsando dos teclas. La nueva rutina ha sido incluida en su sitio y podras seguir con tu programa como antes. La posibilidad de de- tener lo que estes haciendo y ejecutar tus ideas inmediatamente es muy importante en la practica. Otra posibilidad es el permanente acceso a las utilidades mas usadas como el Diseñador de sprites o el editor de mapas en memo- ria. Podras acceder a esas utilidades instantaneamente siempre que tu quieras. De hecho, AMOS incluye un sistema accesorio especial (ACCESSO- RY) que hace esto cada vez mas facil. Los programas de utilidades ofrecen un total acceso a todos los bancos de memoria de tus prin cipales programas. Asi el diseñador de sprites puede grabar las imagenes directamente de tu programa actual, y modificarlas direc tamente. Esta tecnica acelara el proceso general de diseño de una forma divertida. Echemos un rapido vistazo a una desmostracion de estas facul- tades. Introduce este pequeño programa en el editor: Print "Este es el programa Uno" Boom Ahora podemos introducir este programa en memoria mediante el comando PUSH, al que se accede pulsando AMIGA+P. Se te solicitara entonces el nombre del programa desde la linea de informacion. In troduce como nombre "Programa Uno". La pantalla de edicion se lim piara completamente. La nueva ventana estara totalmente separada de tu programa original. Como demostracion introduce ahora una se gunda rutina, como sigue: Print "Este es el programa Dos" Shoot Este programa podra ser ahora ejecutado desde la ventana de edicion mediante RUN (F1). Cuando termines, podras regresar al primero mediante la opcion FLICK. Pulsa AMIGA+F. Como antes seras preguntado por el nombre del programa. Usa como nombre "Programa Dos". El editor saltara como por arte de magia a tu programa ori- ginal. Es posible repetir este proceso saltando adelante y atras entre los dos programas. Cada programa es completamente indepen- diente y pueden tener sus listados, bancos y pantallas propias. 22 Acabamos de ver como se pueden usar dos programas al mismo tiempo. Sin embargo, puedes tener muchos programas mas en memoria Cada uno de esos programas pueden seleccionados individualmente usando el comando RUN OTHER y EDIT OTHER desde la ventana del me- nu. Cuando uses esos comandos, un selector de programas especial aparecera en pantalla. El selector de programas es casi identico al ya familiar selec tor de ficheros AMOS. La unica diferencia consiste en que este te permite elegir un programa desde la memoria mas rapidamente que desde el disco. Puedes seleccionar un programa simplemente sobre iluminandolo con el cursor del raton y pulsando una vez el boton izquierdo del raton. Accesorios. Al objeto de distinguir entre los accesorios y los programas normales Basic, existe una coletilla añadida (".ACC"). Los accesorios pueden ser cargados en memoria como un programa normal usando el comando LOAD OTHER. LOAD OTHER es un selector de ficheros normal que puede ser usa do para cargar un accesorio desde el disco. Una vez el accesorio haya sido instalado en memoria, puedes regresar a tu programa y podras ejecutar este accesorio siempre que quieras usando la op- cion RUN OTHER desde la ventana de menu. Simplemente mueve el pun tero del raton sobre el accesorio deseado y pulsa el boton iz- quierdo del raton. Alteranativamente, puedes cargar todos los accesorios desde el disco actual mediante la utilidad ACCNEW/LOAD. Esta opcion puede ser encontrada en el menu del sistema que aparece cuando presio- nas el boton derecho. ACCNEW/LOAD elimina todos los accesorios ya existentes y carga un nuevo set desde el disco. Para demostracion, coloca el disco AMOS y pulsa el boton ACC- NEW/LOAD desde el menu de sistema. El accesorio HELP se cargara rapidamente en memoria. HELP es un accesorio muy especial porque puede ser llamado directamente al presionar la tecla 'HELP'. Hemos equipado esta ayuda con toda la informacion necesaria que puedas requerir para tus programas en Basic. Todo lo que tienes que hacer es seguir los prompts que apareceran en pantalla. 14- Modo Directo A la ventana de Modo Directo se puede acceder pulsando la te- cla ESC en cualquier momento. Por defecto, la ventana aparecera en la mitad inferior de la pantalla, con la pantalla del programa al fondo. Si ejecutas un programa que altere el formato de pantalla (co mo diseño de ventanas, animacion de sprites, etc), entonces todos estos datos de pantalla permaneceran intactos. Asi puedes despla- zar la ventana DIRECTA a lo largo de la pantalla, o bien regresar al editor para realizar cambios en el programa sin alterar la ac- tual pantalla del programa. Esta ventana de Modo Directo es total mente independiente y es ejecutada en su propia pantalla. Mientras te encuentres en modo directo, podras teclar cual- quier linea Basic que desees. Los unicos comandos que no podras utilizar son las instrucciones de bucles (LOOPS y BRANCH), ademas solo tendras acceso a ciertas variables diferentes de aquellas ya definidas en un procedimiento. 23 Teclas del editor en MODO DIRECTO: ESC Salida a la ventana de edicion RETURN Ejecuta la actual linea de comandos DELETE Borra el caracter situado debajo del cursor BACKSPAGE Borra el caracter situada a la izquierda del cursor Flecha IZQ Mueve el cursor a la izquierda Flecha DCH Mueve el cursor a la derecha SHIFT +IZQ Desplaza una palabra a la izquierda SHIFT +DCH Desplaza una palabra a la derecha SHIFT +DEL Borra toda la linea SHIFT BACK Lo mismo HELP Muestra todas las teclas de funcion del Modo Directo F1 a F10 Conservan las ultimas 10 lineas que has ejecutado en Modo Directo. Siendo F1 la que muestra la ultima en ser ejecutada, F2 la segunda, etc. El area de memo- ria usada por este sistema se borra cuando regresas al Editor o bien ejecutas algun programa. 15- La ventana del Menu A continuacion una detallada explicacion de todas las opcio- nes disponibles en la ventana del Menu Principal: DEFAULT MENU. Te ofrece varios comandos que te permiten operar con el editor a la vez que puedes acceder a los menus BLOCK y al SEARCH. RUN (F1) Ejecuta el actual programa en memoria TEST (F2) Chequea la sintaxis del programa INDENT (F3) Toma el programa actual e indenta el listado BLOCKS MENU (F4) Muestra el Menu BLOCKS SEARCH MENU (F5) Muestra el Menu SEARCH RUN OTHER (F6) Ejecuta un programa o accesorio en memoria EDIT OTHER (F7) Edita un programa previamente instalado en me- moria mediante LOAD OTHER o ACCNEW/LOAD OVERWRITE (F8) Alterna modos de edicion INSERT y OVERWRITE FOLD/UNFOLD (F9) Toma una definicion de procedimiento y lo resu me dentro del listado de tu programa Normalmente, es posible reabrir un procedimiento resumido por FOLD, mediante la repeticion del proceso. Coloca el cursor sobre el procedimiento resumido y pulsa sobre FOLD/UNFOLD. Si tienes la necesidad de seguridad extra, tambien podras usar un accesorio especial del disco AMOS, el LOCK. Este te solicitara una contrase ña, con lo que podras asegurarte de que tus procedimientos no van a ser examinados desde Basic. Basta con resumir el procedimiento deseado y cargar el FOLD.ACC usando para ello LOAD OTHERS. Encon- traras mas informacion con la utilidad. La verdadera belleza de este sistema es que te permite crear grandes librerias de tus rutinas en disco, que podran ser carga- das en memoria como un programa separado (Ver LOAD OTHERS). Ahora podras entonces cortar la rutina que necesites y copiarla directa mente en tu programa principal. Asi que una vez que hayas escrito una rutina, podras grabarla y recuperarla para tus procedimientos una y otra vez. 24 Cada vez que realizas un FOLD o UNFOLD se produce un chequeo de sintaxis de todo el programa. Si existiera algun error, no se podra ejecutar la operacion. Asi que es vital que tengas a buen recaudo (Backups) tus rutinas antes de realizar estas operaciones: SYSTEM MENU: LOAD (SHIFT+F1 /AMIGA+L) Carga un programa AMOS Basic SAVE (SHIFT+F2 /AMIGA+S) Graba un programa AMOS Basic SAVE AS (SHIFT+F3 /AMIGA+SHIFT+S) Graba un programa con otro nombre MERGE (SHIFT+F4) Introduce el programa elegido en la actual posicion del cursor si alterar el programa actual MERGE ASCII (SHIFT+F5) Lo mismo pero de una version ASCII ACCNEW/LOAD (SHIFT+F6) Introduce un nuevo accesorio del disco LOAD OTHERS (SHIFT+F7) Carga un accesorio del disco NEW OTHERS (SHIFT+F8) Borra accesorios de memoria NEW (SHIFT+F9) Borra el programa actual de memoria QUIT (SHIFT+F10) Salida al AMOS bajo control del CLI BLOCKS MENU: BLOCK START (CTRL+B / F1) Situa el punto de partida en el bloque actual BLOCK END (CTRL+E / F6) Define el final de un bloque BLOCK CUT (CTRL+C / F2) Extrae el bloque seleccionado de la memoria BLOCK PASTE (CTRL+P / F7) Introduce el bloque en la actual posicion del cursor BLOCK MOVE (CTRL+M / F3) Mueve el bloque hasta la actual posicion del cursor borrando completamente la version original BLOCK STORE (CTRL+S / F8) Copia el bloque en memoria BLOCK HIDE (CTRL+H / F4) Deselecciona el bloque sobreimpresionado BLOCK SAVE (CTRL+F9) Graba el actual bloque en un disco como un programa AMOS BLOCK ASCII (CTRL+F5) Almacena el bloque seleccionado en el disco como texto de un fichero normal BLOCK PRINT (CTRL+F10) Imprime el bloque seleccionado 25 SEARCH MENU: FIND (ALT+F1) Introduce una cadena de mas de 32 caracteres y busca a traves del texto hasta encontrar una igual FIND NEXT (ALT+F2) Busca el proximo objeto que hayas especificado (cadena, coman- do, etc) FIND TOP (ALT+F3) Busca desde lo mas alto del programa una cadena justo hasta la posicion del cursor REPLACE (ALT+F4) * Antes de un FIND. Se te solicitara introduzcas la cadena que reemplazara al objeto * Despues de un FIND. Si la busqueda acabara con exito, el tex to y la actual posicion del cursor seran sustituidos por la cadena. Entonces REPLACE continuara buscando el proximo obje to. REPLACE ALL (ALT+F5) Replaza todas las copias de una palabra en tu programa LOW <> UP (ALT+F6) Cambia el grado de sensibilidad usado en los comandos de bus- queda OPEN ALL (ALT+F7) Abre todos los procedimientos cerrados en tu programa CLOSE ALL (ALT+F8) Cierra todos los procedimientos en tu programa SET TEXT B (ALT+F9) Set Text Buffer. Cambia el tipo de caracteres disponibles SET TAB (ALT+F10) Ubica el numero de caracteres que el cursor debe moverse cuan- do pulses la tecla TAB. 16- Keyboard MACROS =KEY$= (define un MACRO) KEY$(n)=command$ command$=KEY$(n) KEY$ asigna el contenido de command$ a la funcion numerica n (1-20). Las teclas del 1 al 10 tienen acceso si se aprietan con- juntamente con la tecla AMIGA izquierda. De forma similar, los nu meros 11 en adelante se llaman mediante una combinacion Fn mas te cla AMIGA derecha. Command$ puede ser cualquier cadena de texto que desees, hasta un maximo de 20 caracteres. Existen 2 caracteres especiales que son directamente interpretados por esta funcion: 26 (ALT+") Genera un codigo RETURN (") Encierra un comentario. Solo se ejecutara en tus lis- tados, siendo totalmente ignorado por la rutina MACRO Ejemplos: ? Key$(1) Key$(2)="Default" ALT+F2 Key$(3)="'Comment print" En la practica, este sistema de MACROS puede ser increiblemen te util. No solo puedes aumentar la velocidad de procesamiento de todos tus programas en Basic, sino que ademas puedes definir una lista de las entradas (Inputs) mas habituales de tus programas en Basic. Serian extremadamente efectivas en un juego tipo conversa- cional. Si deseas generar una funcion de tecla que no posea un equiva lente ASCII como ocurre con la flecha arriba, podras opcionalmen- te incluir un codigo de SCAN (exploracion) en ese MACRO. Esto se logra usando la funcion SCAN$. =SCAN$ (ofrece un codigo de SCAN para usar con KEY$) x$=SCAN$(n,i,m¿) En donde n es el codigo SCAN de una tecla que se utiliza en uno de tus MACROS; m es una mascara opcional que establece una tecla especial como CTRL o ALT, con el siguiente formato: Bit Tecla pulsada 0 SHIFT izquierda 1 SHIFT derecha 2 Caps Lock 3 CTRL 4 ALT izquierda 5 ALT derecha 6 AMIGA izquierda 7 AMIGA derecha Si un bit esta puesto en 1, entonces el boton asociado esta pulsado en tu MACRO. Ejemplos: KEY$(4)="Wheee!"+SCAN$($4C) KEY$(5)="Page Up!"+SCAN$($4C,%00010000) 27 17- Conservando memoria CLOSE WORKBENCH Cerrando la pantalla del WORKBENCH se ahorran alrededor de 40 K de memoria para tus programas. Ejemplo: Print Chip Free,Fast Free Close Workbench Print Chip Free,Fast Free El comando CLOSE WORKBENCH puede ejecutarse desde el modo di- recto, o desde el interior de tus propios programas. Una tipica linea de programa puede ser: If Fast Free=0 then Close Workbench Con lo que chequeas la expansion de memoria, cerrando el WB en caso de que no dispongas de memoria extra. CLOSE EDITOR Cerrar la ventana de edicion mientras ejecutas tus programas, puede ahorrar mas de 28K de memoria. Ademas, esto no produce abso lutamente ningun efecto sobre tus listados. Si no dispones de suficiente memoria para reabrir la ventan despues de que tu programa haya terminado, AMOS solamente borrara la pantalla actual y regresara a la pantalla habitual por defecto en tal caso, sin dificultad podras regresar al editor pulsando la tecla ESC. 18- Accesorios internos Ahora exploraremos las tecnicas generales necesarias para que escribas tus propios programas, como ya supondras ahora aparece- ran todas las instrucciones standards del Basic. Los accesorios se pueden ejecutar directamente junto con tus programas. Previamente hay que chequear el tipo y tamaño de la pantalla usando los comandos SCREEN HEIGHT, SCREEN WIDTH y SCREEN COLOUR, durante la fase de inicializacion. Si la pantalla actual no es aceptable, estaras obligado a abrir una nueva pantalla para la ventana del accesorio o borrar completamente la pantalla exis- tente con la instruccion DEFAULT. Cualquier banco de memoria usado por el accesorio es totalmen te independiente de tu programa. Si fuera preciso cambiar el ban- co de tu programa actual, lo puedes hacer con el comando especial BGRAB. BGRAB b (toma un banco reservado para el programa principal) BGRAB toma prestado un banco del programa actual copiando en el mismo banco del accesorio. Si existe ya un banco del accesorio el banco que acabas de tomar regresara automaticamente al progra ma principal sin cambios. b es el numero del banco (1 al 16). 28 Ten en cuenta que esta instruccion solo puede ser ejecutada como parte de un accesorio, ya que si la intentas incluir en un programa normal, obtendras el correspondiente mensaje de error. PRUN (ejecuta un programa desde memoria) PRUN "name" Ejecuta un programa Basic que ha sido previamente instalado en la memoria del AMIGA. Este comando puede ser usado desde el Modo Directo, o dentro de un programa. En efecto!! PRUN es muy parecido al procedimiento standard de ejecucion, solo que bobs, sprites y musica quedan totalmente abolidos. Advierte que no es posible llamar dos veces al mismo programa en la misma sesion. Una vez que lo hayas llamado, cualquier otro intento sera ignorado completamente. =PRG FIRST$ (lee el primer programa cargado en memoria) p$=PRG FIRST$ Con esta orden obtenemos el nombre el primer programa basic que ha sido instalado en la memoria. Se utiliza con conjuncion con el comando PRG NEXT$ para crear un listado completo de todos los programas disponibles. =PRG NEXT$ (Salta al proximo programa instalado en memoria) p$=PRG NEXT$ Este comando se usa despues del anterior para ir avanzando a traves de todos los programas instalados en la memoria del AMIGA. Cuando alcanzamos el final de la lista, sabremos el numero de pro gramas con la siguiente funcion: N$=PRG First$ While N$<>"" Print "Program" ";N$ N$=PRG Next$ Wend =PSEL$ (llama al selector de programas) n$=PSEL$("filter"¡default$;title1$;title2$¿ PSEL$ llama al selector de programas que es del todo identico al usado para los comandos RUN OTHER, EDIT OTHER, LOAD OTHERS y NEW OTHERS. Se utiliza para la seleccion de un programa de la forma ya usual. El nombre del programa seleccionado vendra en la funcion n$. En caso de que el usuario aborte la seleccion n$ toma ra el valor "". 29 "Filter" establece el tipo de programas que sera listado por esta instruccion. Los valores habituales son: "*.ACC" Lista todos los accesorios en memoria "*.AMOS" Solo muestra los programas AMOS que han sido instala dos en memoria "*.*" Lista todos los programas instalados en memoria Para mas detalles del sistema ver el comando DIR. Default$, establece el nombre del programa usado por defecto Title1$,title2$, contiene unas lineas de texto que seran mostradas en la parte superior del selector 19- El accesorio HELP Cada vez que la tecla HELP es pulsada desde la ventana de edi cion, AMOS automaticamente ejecuta un accesorio con el nombre de HELP.ACC si esta disponible. A diferencia de los otros accesorios este se ejecuta directamente sobre la ventana de edicion. Tiene un acceso especial a la palabra que estes editando en ese momento La direccion de esta palabra se coloca en un registro y puede ser leida usando la funcion AREG. 20- Las teclas de control del Editor Finalmente he aqui un listado completo de las teclas de con- trol y sus efectos: Teclas especiales: ESC Te lleva al Modo Directo Teclas de edicion: Backspace Borra el caracter a la izquierda del cursor DEL Borra el caracter debajo del cursor RETURN Ejecuta la actual linea. Si lo pulsas con el cursor en la mitad de la linea, la partiras. SHIFT+BACKSPACE o CTRL+Y Borra la linea actual CTRL+U Undo. Regresa a la ultima linea (Modo overwrite) CTRL+Q Borra todos los caracteres de la linea desde la posicion del cursor CTRL+I Inserta una linea en la actual posicion Flechas del cursor: IZQ, DCH Mueve el cursor un espacio IZQ/DCH ARR, ABA Mueve el cursor una linea ARR/ABA SHIFT+ IZQ/DCH Coloca el cursor sobre previa/proxima palabra SHIFT+ ARR/ABA Coloca el cursor en la primera/ultima linea CTRL+ ARR/ABA Muestra la previa/proxima pagina del programa SHIFT+CTRL+ARR/ABA Mueve al principio/final del texto AMIGA+ARR Produce scroll hacia arriba sin mover el cursor AMIGA+ABA Similar, pero hacia abajo AMIGA+ IZQ/DCH Similar, pero hacia IZQ/DCH 30 Control del programa: AMIGA+S Graba tu programa con el nombre actual AMIGA+SHIFT+S Graba tu programa con un nuevo nombre AMIGA+L Carga un programa AMIGA+P Coloca un programa en memoria y crea uno nuevo AMIGA+F Alterna entre dos programas almacenados en memo AMIGA+T Muestra el siguiente programa en memoria Cut & Paste: CTRL+B Situa el inicio de un bloque CTRL+E Situa el final de un bloque CTRL+C Corta un bloque CTRL+M Mueve un bloque CTRL+S Salva un bloque en memoria sin borrarlo primero CTRL+P Inserta un bloque en la actual posicion cursor CTRL+H Sobreimpresiona un bloque Marcas: CTRL+SHIFT+(0-9) Define un marcador en la posicion del cursor CTRL+(0-9) Salta hasta el marcador Search/replace: ALT+ARR Busca hacia atras de tu programa la primera linea que contenga una etiqueta o una determinada defi- nicion ALT+ABA Busca hacia delante de tu programa lo mismo CTRL+F Funcion FIND CTRL+N Funcion FIND NEXT CTRL+R Funcion REPLACE Tabuladores: TAB Mueve toda la linea desde el cursor hasta la pro- xima posicion de tabulacion SHIFT+TAB Mueve la linea a la posicion previa de tabulacion CTRL+TAB Adjudica un valor a TAB