20 UTILIDADES ------------- INDICE ------ Programacion Ensamblador Desemsamblador Cargador C/M Depurador Monitor Rutinas Cirujano Tokens Microcat Renumerador Conversor Complementos Listador Analizador de audio Agenda Cpyupi Editext Graficos y sonido Screens Multi UDG Traspa Databeep Sintetizador de voz ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ENSAMBLADOR ----------- Permite la confección de programas en código maquina, utilizando los mnemónicos del lenguaje ASSEMBLER del Z80. INSTRUCCIONES DE CARGA ---------------------- CLEAR 59975: LOAD "ENSAM" CODE La llamada al programa se efectuará con RANDOMIZE USR 60000 tras la cual apar ecerá el cursor en la parte inferior de la pantalla. La primera istrucción de cada programa deberá indicar la dirección de memoria donde se pretende ubicar el programa con: org dirección de memoria A partir de aqui deberán introducirse la sucesivas instrucciones del programa, teniendo en cuenta que este ensamblador utiliza solamente números decimales. FORMATO ------- Los números de línea se generan automáticamente, debiendo teclearse tan sólo las instrucciones. Cada línea solamente admitirá una instrucción. No se deberá mezclar en una sola línea etiquetas e instrucciones. BORRADO ------- Para invalidar un sola línea, basta con teclar su número y ésta será borrada y el resto del programa renumerado. Para borrar un bloque de líneas se utilizará: del primera linea, número de lineas. INSERCION --------- Para insertar una línea en el programma realizado, basta con teclear el número de línea a incluir seguida de un espacio y la corrispondiente instrucción. ETIQUETAS --------- Para la inclusión de líneas que actúen como etiquetas, éstas deben comenzar con una letra mayúscula. LISTAR ------ Pulsando l + SPACE + ENTER, se obtendrá un listado completo del programa efectuado. l espacio n Producirá un listado a partir de la línea n. Si durante el listado, pulsamos SYMBOL SHIFT éste correrá más lentamente. COMPILAR -------- Una vez terminado el programa se puede proceder a su compilación tecleando finish Si todo está correctamente un mensaje OK lo indicará, de lo contrario otros mensajes te ayudarán a localizar el error. SAVE ---- Puede salvarse el programa en cinta tecleando: save "nombre" LOAD ---- De modo similar podrás recuperar el programa con load "nombre" BASIC ----- En cualquier momento se puede retornar al Basic con el comando STOP. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ DESENSAMBLADOR -------------- Este programa nos permite obtener el listado de un programa en código máquina de forma similar al abitual listado de los programas Basic. INSTRUCCIONES DE CARGA ---------------------- LOAD "DESENS" Una de las formas más clásicas de desensamblar un programa en C/M es cargar primeramente el programa a analizar, teniendo la precaución de efectuar previamente el CLEAR correspondiente (dirección del C/M menos 1). Después se cargará el Desensamblador, el cual pedirá los valores de las direcciones de comienzo y final del bloque de programa que se pretenda observar y si se desea obtener el listado por pantalla o también efectuar una copia por impresora. Tras ello comenzará el listado de las instrucciones correspondientes a cada registro del bloque solicitado, efectuando un scroll hasta alcanzar el último dato. Las únicas precauciones a tener en cuenta al utilizar el desensamblador son utilizar para los valore de dirección. Números decimales (0 a 65535). Si por alguna circunstancia debiera de iniciarse el programa, deberá efectuarse co un GO TO 3000 y nunca con RUN, ya que los valores asignados a las variables serían borrados y el programa funcionaría erróneamente. A modo de ensayo se pueden dar como direcciones de comienzo y final del bloque 0 y 16383 ...se obtendrá el desemsamblado de la ROM del Spectrum. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ CARGADOR DE C/M --------------- La publicación de rutinas en código máquina se realiza en listados hexadecimales en los que es fácil equivocarse a la hora de copiarlos, este cargador os ayudará a introducirlos sin error. INSTRUCCIONES DE CARGA ---------------------- LOAD "CARGADOR" En el borde inferior aparece un pequeño menú de opciones al cual se accede pulsando la inicial correspondiente. INPUT ----- Este comando se empleará para introducir nuevas líneas de C/M. Obligatoriamente se empezará por la línea 1, a no ser que hayamos introducido alguna anteriormente. En cada línea se introducirán Veinte caracteres alfanuméricos, el programa chequeará si la cantidad es correcta pidiéndonos el valor de control de los mismos. En caso de error bien en la cantidad de datos como en el de control la línea no será aceptada debiendo ser introducida de nuevo. Si se desea variar la cantidad de dígitos por línea, basta con sostituir el valor 20 en las líneas 1010, 1020 y 1210. Finalizada la introducción de datos se puede retornar al menú pulsando ENTER ante la petición de nueva línea. DUMP ---- Este comando volcará el contenido de nuestras líneas en memoria a partir de la dirección que se le indique. Un mensaje de ESPACIO DE TRABAJO nos indicará que la dirección seleccionada no puede ser utilizada por estar ocupada por el propio programa lo cual supondría la destrucción del mismo y del trabajo efectuado. SAVE ---- Esta opción nos permitirá salvar en cinta tanto el programa fuente (tecleado por nosostros) como el objecto (producto del cargador), teniendo presente que para hacer un Save de este último deberá haberse efectuado un volcado en memoria (dump). LOAD ---- Esta opción servirá para reemprender un trabajo que hallamos suspendido anteriormente. TEST ---- Utilizando este comando se obtiene un listado de las líneas aceptadas hasta el momento después se puede continuar a partir de la última línea. ERRORES ------- Otros chequeos del programa son: - Número de líneas no correlativas. - Longitud de la cadena distinta del valor asignado (inicialmente 20). - Valor de datos fuera del rango hexadecimal (0 a 9 y A a F). - Valor del control distinto a la suma de los valores de cada código. La situación de error se advertirá por una señal acústica y coloración en rojo del borde de la pantalla. En situación normal el borde presentará color blanco). ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ DEPURADOR --------- Esta rutina puede resultar extremadamente útil para depurar programas en Basic. INSTRUCCIONES DE CARGA ---------------------- CLEAR 59999: LOAD "DEPURADOR" CODE Este pequeño programa efectúa una ejecutión a "cámara lenta" de cualquier programa Basic toda vez que simultáneamente a esta ejecutión nos muestra en una pequeña ventana la información correspondiente al número de línea e instrucción a la que corresponde cada secuencia. Por ejemplo si el programa contiene en una línea como: 160 CLS: PRINT AT 10,6;"XXXX" veremos que quando estas instrucciones son ejecutados lógicamente se efectúa un borrado de pantalla y comienza a imprimirse el texto mientras que el indicador nos muestra los datos correspondientes 0160 : 001 0160 : 002 Una vez cargado el Depurador, procederemos a la carga del programa Basic, parándolo en el caso de que se autoejecutase. Para observar su desarollo "paso a paso" teclearemos: RANDOMIZE USR 65000 y tras el mensaje OK, iniciaremos el programa con RUN o GOTO a una línea concreta y se podrá observar ed desarrollo del mismo. Esta velocidad puede ser aumentada mientras mantegamos pulsada la tecla SPACE. Para efectuar alguna corrección sobre él debemos efectuar un BREAK y tras él un RANDOMIZE USR 65122 que teclearemos con mucho tacto ya que todo el sistema se encontrará ralentizado debiendo mantener la tecla pulsada unos instantes para que ésta sea detectada, una vez desactivada la rutina todo quedará restaurado. Obviamente al repetir el RANDOMIZE USR 65000 y el RUN o GOTO volveremos a ralentizar el programa. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ MONITOR ------- Este curioso programa permitirá corregir cualquier texto de otro en C/M. INSTRUCCIONES DE CARGA ---------------------- CLEAR 61999: LOAD "MONITOR" CODE Algunas veces nos gustaría corregir los textos de un programa escrito en C/M pero la labor acceder, identificar y corregir éstos puede ser bastante laboriosa en función de los medios utilizados. No hay duda que la forma más rápida y segura es utilizando un Monitor. Para efectuar correciones sobre otro programa deberá efectuarse la carga de ambos teniendo la precaución de efectuar un CLEAR en la dirección de memoria (menos 1) de la ubicación del más bajo de los dos. Una vez cargados ambos programas inicializaremos el Monitor con: RANDOMIZE USR 62000 con ello el ordenador nos preguntará el valor de la dirección donde queremos iniciar la búsqueda, tras lo cual la pantalla del monitor nos mostrará el contenido de la memoria y un cursor. En las líneas inferiores podremos observar la dirección en la que se encuentra situado el cursor así como el, valor de operación de tal posición. Un rótulo nos indica además que estamos en el modo normal, es decir, de búsqueda. Utilizando los cursores se obtiene un rápido desplazamiento de la pantalla en cualquier dirección facilitándonos la tarea de búsqueda de textos, una vez localizados podremos corregirlos pasando a modo INSERCION, lo cual se obtiene pulsando CONTROL + SIMBOL (EXTEND MODE). En esta opción se procederá a "escribir" el nuevo texto sobre el antiguo, sin utilizar más espacios de los que éste ocupe a fin de no modificar otros valores correspondientes a comandos de operación de alguna rutina. Estos comandos también pueden coregirse para ello pulsar CAPS + 1 (EDIT) y tras la petición de nuevo valor teclearlo seguido de enter. Si ha sido realizada una correción y se desea dejarla como se encontraba inicialmente, basta con borrar esta última con CAPS + 0 (DELETE) y obtendremos de nuevo el valor primitivo. Finalizada la correción podremos retornar al Basic mediante BREAK (sólo en el modo NORMAL) y salvar el nuevo programa. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ CIRUJANO -------- Rutina para reparar programas cargados defectuosamente. INSTRUCCIONES DE CARGA ---------------------- LOAD "CIRUJANO" CODE Cuando durante la carga de un programa Basic, se produce el temido error "R error tape loading", obtenemos como resultado un listado que a partir de cierta línea presenta una serie de interrogaciones que invalidan el programa. La recuperación total del programa lógicamente no es posible y de forma ordinaria no se puede eliminar la parte que contiene los errores de carga. Ante uno de estos casos, se procederá a la carga del cirujano y una vez efectuada se inicializará con RANDOMIZE USR 23296 tras lo cual nuestro programa quedará liberado de las líneas corrompidas, pudiendo continuar con su elaboración. Al ser una rutina reubicable podrá cargarse en cualquier otra dirección de memoria, teniendo en cuenta que en tal caso la llamada a la rutina será: RANDOMIZE USR dirección de carga ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ TOKENS ------ Localizador de tokens (palabra clave del Spectrum). INSTRUCCIONES DE CARGA ---------------------- MERGE "TOKENS": CLEAR 61999 LOAD "TOKCODE" CODE En alguna ocasión nos será bastante cómodo averiguar cuántas veces está utilizado en un programa un determinado comando y en qué líneas se encuentra cada uno de ellos. Tokens, efectuará esta incordiosa labor instantáneamente. Con el programa objeto cargado en el ordenador, se efetuará en primer lugar un MERGE del programa TOKENS, el cuál sólo consta de una línea 0, a fin de evitar la corrupción del ya existente. Tras el CLEAR correspondiente efectuaremos la carga de la rutina TOKCODE. A partir de aquí podremos realizar la búsqueda tecleando la instrucción: RANDOMIZE FN a (CODE "token") teniendo presente que no ha de teclearse letra a letra el nombre de éste. Para más facilidad pulsar primero el comando y tras "retroceder" el cursor a completar la instrucción dado que la sintaxis del Spectrum no lo permitiría directamente. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ MICROCAT -------- Los datos relativos a la información guardada en un cartucho de Microdrive, son de vital importancia. INSTRUCCIONES DE CARGA ---------------------- LOAD "MICROCAT" La primera operación que realiza el Microcat es identificar la versión del Interface 1 que en ese momento está conectado al ordenador, dado que han sido comercializados con dos tipos de ROM con distinta ubicación de las rutinas de contenido de y así carga uno de los dos bloques de código máquina que constan en la cinta según corresponda. Una vez cargado el programa se introducirá un cartucho en la unidad de Microdrive y la pantalla nos mostrará los datos del contenido con el siguiente formato: XXXXX BASIC long. = XXXXX XXXXX LINE YYYYY AUTO EJEC. = YYYYY CODE DDDDD,LLLL DIRECCION = DDDDD LONGITUD = LLLLL DATA N MATRIZ NUMERICA N DATA N$ MATRIZ ALFANUM. N$ PRINT ARCHIVO Tipo PRINT ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ RENUMERADOR ----------- Uno de los comandos de edición más potentes y apreciados por los programadores. INSTRUCCIONES DE CARGA ---------------------- CLEAR 59999: LOAD "RENUM" CODE Con este nuevo comando se puede organizar la numeración total o parcial de las líneas que componen un programa Basic. La sintaxis requerida por esta rutina es variable según el tipo de renumeración requerida en cada caso, así: RANDOMIZE USR 60000: REM: LINE Efectuará una numeracion de todo el programa en paso 10. Primera línea 10. RANDOMIZE USR 60000: REM: LINE n Renumerción de paso 10. Primera línea n. RANDOMIZE USR 60000: REM: LINE n STEP s Paso s a partir de la línea n, RANDOMIZE USR 60000: REM: LINE n TO m STEP s Renumeración de línea n a línea m con paso s. En caso de que exigamos una renumeración imposible de realizar, los mensajes del error correspondiente. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ CONVERSOR --------- Números decimales a hexadecimales y viceversa en cualquier momento. INSTRUCCIONES DE CARGA ---------------------- CLEAR 63999: LOAD "CONVERSOR" CODE Tras la carga de esta rutina el ordenador quedará suplementado en un nuevo comando ...el convertidor decimal/hexadecimal. Para su inicialización teclar: RANDOMIZE USR 64000 Este comando es accesible en cualquier momento, dado que funciona utilizando el modo de interrupciones y, por lo tanto, utilizable aun cuando se esté confeccionando un programa. Para su acceso basta pulsar simultaneamente las teclas SYMBOL SHIFT + ENTER y un mensaje en la parte baja de la pantalla esperará la indicación del tipo de conversión a efectuar. Pulsando la tecla correspondiente a decimal o hexadecimal esperará a que el número a convertir sea introducido. Los límites de este convertidor son: 0 a 65535 en numeración decimal y 0000 a FFFF en hexadecimal. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LISTADOR -------- Todos los datos relativos al contenido de cada cinta de cassette al descubierto. INSTRUCCIONES DE CARGA ---------------------- LOAD "LISTADOR" Una vez introducidos los datos de nombre y cara de la cinta, poner el cassette en marcha. El ordenador irá leyendo sucesivamente todas las cabeceras de los programas contenidos y reflejando en pantalla los datos correspondientes a cada uno de ellos indicando longitud y línea de ejecución de los programas Basic y dirección de comienzo y longitud en los de código máquina. Si se conecta una impresora al ordenador (tipo ZX, GP50 o similar) la información será transmitida simultáneamente a la pantalla y al periférico. Es importante destacar que durante la lectura de la cinta tan sólo se consideran las cabeceras y no la información de cada programa. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ANALIZADOR DE AUDIO ------------------- Trazador gráfico de señales de audio para grabaciones en cassette. INSTRUCCIONES DE CARGA ---------------------- LOAD "AUDI" Una de las principales causas del error de carga de programas grabados en cinta de cassette, suele ser la falta de nivel en la señal enviada por el reproductor. El mayor o nivel volumen de audición en un magnetófono a cassette, puede ser producto de la grabación o de la posición de la cabeza lectora del cassette sobre la cinta (azimut). Esta posición puede llegar a sufrir variaciones con el uso del cassette y con ello variar el volumen de reproducción. El azimut puede ser corregido actuando sobre el tornillo de regulación, los diferentes cambios de intensidad pueden ser observados con ayuda de este analizador mientras se realiza el ajuste el trazado sobre la pantalla de referencia a las distintas bandas de color. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ AGENDA ------ Fichero personal de direcciones. INSTRUCCIONES DE CARGA ---------------------- LOAD "AGENDA" Este fichero permite una versátil manipulación de la información almacenada en memoria del ordenador gracias a su espléndido menú. CREAR ----- Lógicamente este es el primer paso para la utilización del programa, esta opción pedirá sucesivamente los datos de cada ficha: Nombre: 18 caracteres Apellidos: 36 caracteres Dirección: 36 caracteres Población: 18 caracteres Teléfono: 10 caracteres Prefijo: 8 caracteres Cod. Postal: 10 caracteres SELECCION --------- Esta opción permitirá la búsqueda directa de cualquier dato del fichero. LISTAR ------ Efectuará una presentación secuencial de las fichas creadas. CARGAR-SALVAR ------------- El fichero podrá ser cargado en memoria y después incrementar o modificar para posteriormente salvar de nuevo, tanto en cinta como en microdrive. Por último la opción de Impresora, ejecutará un listado de toda la información por tal periférico. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ COPYUPI ------- Copiador de programas de cinta a cinta para efectuar copias de seguridad con toda fiabilidad. INSTRUCCIONES DE CARGA ---------------------- LOAD "COPYUPI" Las diferentes opciones de este copiador permiten cargar de cinta de cassette distintos tipos de programas. Las opciones de Save, Load y Verify incluyen dos versiones de utilización: - Normal: Para las habituales grabaciones de programas con cabecera. - Especial: Para los programas grabados sin cabecera. Como complemento de estas modalidades Copyupi está dotado con las de leer cabeceras, leer flags e incluso la posibilidad de cambiar cualquier valor de los datos obtenidos en la lectura. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ EDITEX ------ Procesador de textos a 64 columnas. INSTRUCCIONES DE CARGA ---------------------- LOAD "EDITEXT" El presente editor de textos, permite utilizar el ordenador como una máquina de escribir ordinaria con las opciones propias de éstas, poner y quitar tabuladores, fijar y borrar párrafos e incluye además las posibilidades de acentuación, Ñ mayúscula y minúscula con las funciones: SIMBOL + 2 = ñ SIMBOL + 6 = Ñ MODO EXTENDIDO 1 = Fija tabuladores 9 = Borra tabuladores T = Tabulación P = Fija párrafo a, e, i, o, u = acentuación ENTER = final de página Otras opciones del programa permiten almacenar, leer e imprimir páginas (hasta un límite de 23), además de Salvar y Cargar textos de cinta de cassette, los datos relativos a estas opciones están contenidos en el propio programa. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ SCREENS ------- Editor de gráficos para creación de espectaculares pantallas. INSTRUCCIONES DE CARGA ---------------------- LOAD "SCREENS" Un poco de imaginación y algunas horas de práctica son los únicos elementos necesarios para la confección de atractivos dibujos. Los desplazamientos del cursor por la pantalla se efectúan con las tecla 1 a 8 activando o desactivando pixels según se haya seleccionado previamente: 0 Modo pintar 9 Modo borrado Las restantes opciones del programa se obtienen pulsando distintas teclas, así: Q Activa la trama guía. E Amplía x8 el carácter donde esté el puntero (con guía activada) W Elimina la trama gruía. N Marca principio de llenado. M Marca final de memoria. O Sombrea zona con tipo de trama. P Rellena zona seleccionada. C Seleccionar color de tinta. F Activar colores del carácter donde esté situado el puntero. A Centro de círculo, arco u origen de recta. S Punto final del arco, círculo o resta. G Salvar la pantalla en cassette. L Carga pantalla de cassette. I Instrucciones. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ MULTI U.D.G. ------------ Editor de Gráficos Definidos de gran capacidad y versatilidad. INSTRUCCIONES DE CARGA ---------------------- LOAD "MULTI" Tras la aparición en pantalla de una gran rejilla de 24x24 caracteres, dividida a su vez en 9 bloques y en la que podemos diseñar otros tantos UDG utilizando para ello las teclas de los cursores o un Joystick Kempston. Para la confección de los gráficos se utilizarán las teclas cursoras (5 a 8) o bien Joystick Kempston y empleando el botón de fuego o 0 para los distintos modos de Pintar, Mover o Borrar. Pulsando 1 se borra toda la pantalla sin afectar a ningún dato anterior. Cada vez que una pantalla de gráficos se termine se puede memorizar y posteriormente buscar y/o reproducir de nuevo en pantalla. 2 Modo MEMORIA 3 Manejo de memoria de figuras 6 Selección de figuras (siguiente) 7 Selección de figuras (anterior) 0 Recupera de memoria a pantalla. Se pueden obtener las datas correspondientes a cada gráfico en particular utilizando: 4 Modo DATAS 0 Selecciona UDG (a a i) Por otra parte la capacidad de almacenamiento de grficos del programa es de 300 pantallas de 3x3 UDG 2700 UDG). ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ TRASPA ------ Copiador de caracteres, gráficos y atributos. INSTRUCCIONES DE CARGA ---------------------- CLEAR 49999: LOAD "TRASPA" CODE Con RANDOMIZE USR 50000 obtendremos sobra la pantalla del monitor un cursor parpadeante que con las 5, 6, 7 y 8 podrá desplazarse a cualquier lugar de ésta. El resto de las funciones son accesibles utilizando las teclas: 1 Archiva Atributos 2 Copia Atributos 9 Archiva Gráfico 0 Copia Gráfico De modo que situando el cursor sobre el carácter elegido utilizando las opciones de archivo, el cursor se "carga" con la información del carácter y éste puede reproducirse en diversos lugares, esta información se pierde al archivar un nuevo carácter o al pulsar ENTER. Conviene saber que no pueden ser archivados los espacios en blanco. Para retornar al Basic bastará con pulsar BREAK. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ DATABEEP -------- La ejecución de melodías en CM ofrece las ventajas de menor ocupación y mayor calidad musical. INFORMACCIONES DE CARGA ----------------------- LOAD "BEEP" Al ejecutarse el programa, suena una melodía de ejemplo que se encuentra en las datas en las líneas 6000..., en ellas se puede observar la especial sintaxis para los sonidos. Cada uno de ello está compuesto por dos valores, el primero corresponde a la duración de (de 0.01 a 10 segundos), y el segundo a la nota musical cuyo valor será de: 12 DO 16 MI 20 SOL# 13 DO# 17 FA 21 LA 14 RE 18 FA# 22 LA# 15 RE# 19 SOL 23 SI Se pueden utilizar mayores o menos (sumando o restando 12) para escalas más altas o más bajas. Para realizar una nueva melodía se comenzará por borrar las líneas 6000 a 6070 e introducir en ellas los nuevos valores. Las líneas a utilizar para los datos serán de la 1000 a las 8000 el resto deberán respetarse para no corromper el programa. Con RUN quedará codificada y ejecutada, si se desea corregir algún dato hacer BREAK para realizar la correción. Caso de que la melodía esté completada ésta se puede salvar en Bytes y un mensaje indicará la dirección y longitud donde se encuentran los datos. Para poder utilizarla en un programa distinto del DATABEEP, deberá incluirse en él la rutina en código máquina que se salvará como: SAVE "nombre" CODE 50282,65 esta rutina es reubicable por lo que el programa que la contenga puede cargarla en cualquier dirección de memoria, ej.: Si se ha compuesto una melodía, cuyos datos han sido salvados como CODE 60000,200 y queremos utilizarla con la rutina de "tocar" salvada con CODE 50282 bastará con incluir las instrucciones: LOAD "datos" CODE 6000: LOAD "rutina" CODE n (nueva dirección) y ejecutarla con RANDOMIZE USR n. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ VOZ --- Sintetizador de voz. INSTRUCCIONES DE CARGA ---------------------- LOAD "VOZ" Con este programa el Spectrum es capaz de pronunciar con cierta precisión las fases que previamente se indique en el INPUT. Para ello habrá de tenerse en cuenta la sintaxis a utilizar, según la ortografía empleada se obtendrán distintas inflexiones de voz. También ciertas reglas gramaticales ordinarias deberán cambiarse a fin de que la frase sea interpretada correctamente, así: H muda no debe teclearse, dado que no necesita pronunciación alguna, lo mismo sucede con la U muda. CH para obtener este sonido se sustituirá por H simplemente. Ñ Al no disponer de esta letra en el teclado se sustituirá por GN. LL Una mejor pronunciación se obtendrá con LY. C para el sonido de C fuerte se sostituirá por Q o K y el débil se obtendrá con C o Z. Los espacios serán interpretados por silencios o pausas entre palabras. El sonido de una sílaba puede ser prolongado repitiendo algunas de las letras (papa, paapaa, paapa, etc.). Para incorporar el sintetizador a cualquier otro programa salvarlo como: SAVE "nombre" CODE 63000,2222 adjudicar la frase a leer a la variable v$ y con RANDOMIZE USR 63000, será pronunciada.