SWIFT DISK Emulacion de Microdrive: Basta con cargar un programa llamado EMUL para que el Swift se porte igual que un IF1. Al ejecutarlo, la rutina se almacena en la RAM de la interfaz, permitiendole al usuario correr programas comerciales para Microdrive sin modificarlos. Tanto el Swift-DOS y Swift-basic son deshabilitados y reemplazados por los comandos propios del MicroDRive. El emulador es facil de usar. Toma 4 segundos cargarlo. Una vez hecho esto, FORMAT toma un area del disco y lo usa como si fuese un cartucho de Micro drive. Es posible crear hasta cuatro cartuchos virtuales en un disco y trabajar con todos ellos a la vez. Si bien el Swift-dos ve cada subdivision como un archivo de 128k, desde el emulador CAT solo muestra hasta 50 archivos dentro de esa subdivision. Opciones de CATalogo, ensamblado de archivos multiples y otras operaciones "truqueras" trabajan muy bien. Entre los muchos programas probados con este sistema emulado estan: Cheetah's Sound Sampler, Powerprint 2, Beta BASIC, HiSoft Pascal 1.6M, Oasis's Laser Genius, MIRA Pascal, Tasword I y Picturesque. Es posible conectar un IF1 real y correr discos y cartuchos de MicroDRive a la vez, si bien no es posible usar los MicroDRives reales cuando se esta en modo emulador, por razones obvias. En este caso, para intercambiar datos, Swift D ofrecia un programa que pasaba los datos de cinta a un cartucho virtual automaticamente. A continuacion mi traduccion del manual: INTRODUCCION El emulador de Microdrives viene en un disco de 3.5". En su directorio nos encontramos con dos archivos: EMUL - el emulador propiamente dicho COPY - programa para copiar cartuchos a los pseudo cartuchos en el disco. Este emulador funciona solamente con el Swift Disk V3 en adelante. Trasfondo El emulador se carga en la RAM de la interfaz, la cual es complemento de otra porcion residente la PROM. Se emulan hasta 4 unidades de microcartuchos en un solo disco. Las unidades emuladas son llamadas pseudo microdrives y existen en el disco bajo el nombre de MICRODRIVEx y solo se puede usar el disco 0. El programa COPY requiere que primero se conecte la Interfaz 1 y a este se le conecte el Swift disk. Se emula la salida por el puerto serial pero no la lectura. Los codigos de enganche (hook codes) estan plenamente soportados y lo que se emula es la Interfaz 1 en su version 1. Pero los de RED han sido asignados para poner la interfaz en modo transparente, el cual permite al programa COPY tener habilitada la IF1 mientras se usa el emulador. El emulador no esta protegido por lo que puede ser copiado con fines de backup. Ejecucion Para cargarlo debemos pulsar el boton del DOS y tipear L EMUL. Desde el Basic podemos usar LOAD %0;"EMUL". El Spectrum se RESETea cuando se carga el emulador desde el DOS. Eso no pasa si hace desde el Basic. El sistema se comporta como si hubiera un IF1 conectado y ya no se puede usar el boton del DOS. Ni NEW o un cuelgue desactivan al emulador, por lo que no es necesario tener que cargarlo de nuevo. Solo si pulsa el RESET o se apaga la maquina. Para los usuarios que no esten familiarizados con los comandos del IF1, se da a continuacion la lista de comandos y su sintaxis. COMANDOS FORMAT sintaxis: FORMAT "m",,"nombre" donde: x = un valor del 1 al 8 - en el caso del emulador seria solo del 1 al 4 nombre = un texto de 10 caracteres maximo Si este comando es usado por primera vez, entonces se crea un pseudo cartucho en el disco 0, de 130k llamado MICRODRIVEx. Si se vuelve a usar con esa misma unidad, entonces se borraran todos los archivos que pudiese contener. Si se aplica la orden KEEP del DOS a un pseudo cartucho, el cartucho en cuestion quedara protegido contra formateos. CAT sintaxis: CAT {#z;} donde z = un flujo opcional de 0 a 15 al cual se enviara el catalogo x = la unidad de pseudo cartucho cuyo directorio se quiere ver SAVE sintaxis: SAVE *"m",; "nombre" [tipo] sin ningun tipo salva solamente un programa Basic sin auto arranque donde: tipo = LINE - salva con auto arranque en la linea nn - opcional CODE,- salva rutina en C.M. direccion dir con largo len SCREEN$ - salva solamente la pantalla DATA var{$}() - salva la matriz ya numerica var() o de cadena var$() LOAD sintaxis: LOAD *"m",; "nombre" [tipo] sin ningun tipo carga un programa Basic y lo ejecuta si tiene auto arranque donde: tipo = CODE [dir{,len}] - carga el C.M. y opcionalmente en dir y si se quiere len SCREEN$ - carga una pantalla DATA - carga una matriz y la asocia a la letra asignada a var{$}() VERIFY sintaxis: VERIFY *"m",; "nombre" [tipo] verifica si un programa ha sido salvado correctamente segun su tipo donde: tipo = CODE / SCREEN$ / DATA MERGE sintaxis: MERGE *"m",; "nombre" carga un programa Basic y lo fusiona con el programa en curso. Genera error si se intenta cargar un programa salvado con auto arranque o que no sea Basic. ERASE sintaxis: ERASE "m";;"nombre" Borra el programa "nombre" del pseudo cartucho x. El archivo una vez borrado solo podria ser recuperado mediante una utilidad. Ficheros Los microdrives sin ninguna expansion, solamente pueden trabajar con ficheros de tipo secuencial. Sus comandos son los sigtes.: OPEN sintaxis: OPEN #;"m";;"nombre" Crea un fichero "nombre" de solo escritura en la unidad x, por medio de un flujo dado la primera vez que se usa dicho nombre. El mismo comando lo abre para solo lectura la segunda vez que se usa ese mismo nombre. CLOSE sintaxis: CLOSE# {%#} Cierra el flujo y vacia todos los datos en el pseudo cartucho. CLOSE# puede colgar el sistema si el flujo no estaba abierto y no hay ningun IF1 conectado. Si hay IF1, entonces el error es capturado por el sistema. En caso de no haber un IF1, lo mejor es usar CLOSE# %# con el emulador. PRINT# sintaxis: PRINT #;datos imprime los datos (numeros o textos) por un flujo dado a un fichero abierto. INPUT# sintaxis: INPUT #;vars{$} lee los datos de un fichero pasandolos a variables numericas o de cadena. MOVE sintaxis: MOVE "m";;"nombre" TO n2 donde: n2 = # - manda un fichero "nombre" a un flujo dado = "m";;"nombre2" - copia el fichero a otra unidad x2 dandole nombre2 MOVE permite que los datos de un fichero sean movidos a un canal asociado a ya sea una impresora, la pantalla misma u otro fichero. MOVE tambien permite a~adir datos de un fichero existente a otro nuevo. NOTA: MOVE solamente funciona con ficheros, pero no con programas de ningun otro tipo. Puerto serial Para manejar los datos por medio del puerto serial tenemos los sigtes. comandos: format sintaxis: FORMAT p$, donde: p$ = "T" o "t" - modo texto, todos los caracteres son interpretados, util con LLIST = "B" o "b" - binario, ningun caracter es interpretado sino enviado tal cual b = baudios para transferencia RS232 open sintaxis: OPEN #;p$ Abre el canal de impresora serial ya sea para modo T o B. Ejemplo: 10 FORMAT "T";1200 20 OPEN#3;"T" 30 LLIST FRAGMENTACION Se sugiere para sacarle el maximo partido a los pseudo cartuchos, que se creen en un disco recien formateado ya que eso incrementa la velocidad operativa, ya que cada pseudo unidad estara en sectores contiguos en pistas contiguas. En cambio, si se usa un disco ya usado, la velocidad decrementara notablemente. MICRODRIVEx Si pulsamos el boton del DOS, notaremos que el comando Cat no muestra el contenido de estos pseudo cartuchos llamados MICRODRIVEx. Por otro lado, si alguno de estos archivos es renombrado, ya no sera reconocido por el emulador. Solamente es util si se desea tener mas del numero de pseudo cartuchos. CARTUCHO INEXISTENTE Cuando el emulador no encuentra el pseudo cartucho requerido, devuelve el mensaje de error "%file not found" (%archivo no encontrado). El "%" nos dice que es un mensaje del Swift Disk, a diferencia del "archivo no hallado" propio del Microdrive que se da cuando este no encuentra un programa en cartucho. NOTAS UTILES El emulador solamente replica al Interfaz 1 lo mas cercanamente posible pero es solamente una emulacion software, por loq ue hay dos puntos a notar. 1 - la IF1 tiene un atrapamiento por Hardware para capturar CLOSE#. Esto no pudo ser emulado por lo que se incluyo la sintaxis CLOSE#%#, como ya se menciono. 2 - algunas rutinas en C.M. pueden querer accesar al hardware del IF1, si este no esta conectada puede darse el error de "Microdrive no presente". En este caso, debemos: a - tener conectado un IF1, pero esa no es una solucion a largo plazo. b - modificar el C.M. para que ya no accese al hardware y si es necesario, hacer que acceda al amulador en cambio. Esto ultimo requiere que el usuario posea conocimientos de C.M., pero es una mejor solucion a largo termino. Sixword ofrecia una lista de parches para usar con aquellos programas que ellos conocian que hacian uso del control directo del hardware. De ese modo ya no era mas necesario tener que estar conectando la IF1 con el Swift disk. (c)2023-24 zx_if1@hotmail.com