Speccy DOS Versión 4.0 (10.01.1987) El Speccy-Dos soporta discos de 35, 40, 45 y 80 tracks, cada uno dividido en sectores de 256 bytes. Es posible formatear el disco desde los 90k con simple cara hasta los 655.4k con doble cara. Sintaxis: comando "nombre" Comandos: Format*, Load*, Save*, Merge*, Move*, Erase*, Run*, List*, Llist*, Copy*, Len*, Fn*, Def fn*, At*, Attr*, Usr*, Asn*, Step*. Los drives admitidos son 4, numerados del 0 al 3. El * indica que se trabajará con unidades de disco en vez del casete. El nombre es de hasta 10 caracteres. No admite wildcards (comodines) ni extensiones pero sí hay atributos. Comandos: Format sintaxis: Format *[]"nombre" [side density track] donde: número = un valor del 0 al 3 designando la unidad a elegir nombre = un texto de hasta 10 caracteres side = s: simple lado / d: doble lado density = s: simple densidad / d: doble densidad track = 35(lado simple),40,45(lado simple),80 Este comando formatea y da nombre de volumen a los discos. Ejemplos: FORMAT*"diskname" - formatea a 40 tracks,simple lado, doble densidad (valores por defecto) FORMAT*"essai"dd80 - doble cara, doble densidad y 80 tracks FORMAT*"Esssai"ds40 List sintaxis: List *[/<"nombre">//] donde: numero = un valor de 0 a 3 LIST* muestra en la pantalla el catalogo del disco. Ejemplos: List* - lista el directorio de la unidad por defecto List*"file_n" - busca y lista un archivo en particular List*2s - da el espacio libre del disco elegido (2 en el ejemplo) en Kb. List*i lista los archivos invisibles si este atributo es designados a ciertos archivos especiales Llist sintaxis: Llist *[/<"nombre">//] LLIST* puede enviar el catalogo del disco a una impresora ZX Printer o Alphacom si alguna estuviese conectada. Save Sintaxis: Save *[]"nombre" [Line/Code/Data/Screen$]/[d] Sintaxis completamente similar a su versión de casete. Salva el programa dándole un "nombre" en el drive o la unidad por defecto si el número se omite. SAVE*"nombre"d - salva tus archivos importantes dos veces. LIST solo mostrará un archivo salvado pero en su atributo se verá una D como indicador de que hay doble copia. Load sintaxis: Load *[]"nombre" [Code/Data/Screen$] Carga el programa "nombre" del drive o de la unidad por defecto como SAVE. Merge sintaxis: Merge *[]"nombre" Igual que el comando de casete, carga solo programas basic del drive o la unidad por defecto, con el "nombre" dado. Erase sintaxis: Erase *[]"nombre" Borra el programa "nombre" del drive o unidad por defecto. Run sintaxis: Run *[]"nombre"[Code[]] Ejecuta archivo "nombre" siempre que este exista en el drive, ya sea Basic o código máquina. Copy sintaxis: Copy *[]"fuente" to [[]"destino"] Permite copiar ficheros dentro de un mismo disco o hacer backups a más de una unidad. Ejemplos: COPY*"file_name1" TO - copia archivo con el mismo nombre en la misma unidad COPY*"file_name1" T0 "file_name2" - copia original y le da nuevo nombre COPY*2"Mary" TO 1 - copia archivo del drive 2 en la unidad 1 Move sintaxis: Move * to Este comando es usado sólo con fines de backups. Ejemplos: MOVE*0 TO 1 - copia todo el disco del drive 0 a la unidad 1 MOVE*0 TO 0 - hace el copiado pero con un solo drive. En este caso el sistema pedirá que se cambie el disco Nota: MOVE* TO 1 - es una sintaxis no válida. Deben haber al menos 10k libres para poder ejecutar Move*. Si hubiese un gran programa BASIC en memoria y se ejecutase un Move*, dicho programa no se destruirá pero la ejecución tardará más. Más aun si se trabaja con un solo drive. Por lo tanto es muy aconsejable que no hayan programas BASIC en el Spectrum durante cada Move*. Importante: Move* debe ser usado siempre con discos del mismo formato o habrá mensaje de error: ERROR code 37 = INEQUAL FORMAT @ MOVE*. Sólo pueden usarse Move* con discos que no contengan errores. Move* tampoco hace consulta alguna. Hay una utilidad en disco que permite COPY* con consulta (Y/N) y soporta todo tipo de formato. Asn sintaxis: Asn *[] Este comando permite cambiar la unidad por defecto. Un reseteo o NEW restauran la unidad por defecto. Una vez elegida la unidad, todas las funciones le son asignadas. Esto permite ejecutar programas multi carga sin alterar los comandos de llamada de los archivos entrelazados. At Atributos del disco físico. AT* fija la protección contra escritura del disco. Una W aparecerá en el directorio. Ingrese 1 para activar o 0 para resetear esta función. Attr sintaxis: Attr *"nombre" Atributos de archivo. Fija la protección contra escritura y el atributo de invisible al archivo "nombre". Una W o una I aparecerán en el directorio. Ingrese 1 para activar o 0 para resetear esta función. Def fn sintaxis: Def fn *"nombre" Permite renombrar el volumen del disco. Fn sintaxis: Fn *[]"nombre1" to "nombre2" Permite renombrar archivos existentes en el disco o la unidad por defecto. Len LEN* imprime en pantalla, el número de bytes libres en el Spectrum. Len* también puede ser usado para resetear los atributos de color. Step sintaxis: Step *[] Especifica la unidad de disco conectada al SPECCY. Sólo es permitida cualquier modelo de lectora de discos compatible con el llamado "estandar SHUGART". La velocidad del cabezal de lectura/escritura entre tracks puede variar. Generalmente las unidades más viejas pueden tener un "stepping rate" de hasta 30 msec, los nuevos, de hasta 6 mseco incluso menos. Ejemplos: Step*/Step* 0 - rate de 6msec. STEP*1 - rate de 12 msec. STEP*2 - rate de 20 msec. STEP*3 - rate de 30 msec. Step* usa el drive por defecto asignado mediante Asn*, siendo posible trabajar con cualqueira de las 4 unidades independientemente. Step* no es afectado por NEW, pero sí por Print Usr 0 o un RESET. Por defecto al encenderse el sistema, todas las unidades estan en 6msec. Usr sintaxis: Usr *["nombre"] Asigna un archivo para bootear automáticamente al arrancar en frío (sólo un archivo por disco). El archivo autobooteable aparecerá al final del directorio. USR* sólo, resetea la función. Disco de utilidades disponibles: COPY4 Utilidad de copiado de archivos - reemplaza a MOVE* para usar con discos con distinto formato. El programa pregunta (Y/N) para llevar a cabo el copiado. ORG4 Copia archivos igual que el anterior pero reorganizando la secuencia de los archivos según la entrada elegida. UTIL4 Programa utilitario que permite elegir las opciones siguientes: ATTRIBUT - ERASE - RENAME. COPY4TF Copia archivos del casete al disco (de hasta 41k de máximo). MENU4 Esta utilidad muestra un menú automaticamente con el cargador Basic (si se usan mayúsculas) justo antes de encargarse del estatus de los atributos. MAGIC2.x Este programa debe ser cargado antes en el SPECTRUM, para obtener un ahorro total de la memoria en disco. También permite recargarse en el SPECRUM y ejecutarse. INTS 4.0 Reemplaza al software del Interface III (Evesham Micro Center) cuando lee la cinta de conversiones, transfiere automáticamente los archivos al disco del Speccy. COPY4FT Copia datos del disco al casete. Compatibilidad Interface 1: Es posible intercambiar datos entre el Speccy-Dos y el IF1, pero para lograr una plena compatibilidad, al IF1 debe hacérsele primero una ligera modificación, ya que la salida de su BUS no corresponde con la del Spectrum mismo. Lo contrario sería conectar primero el Speccy, lo cual no es muy aceptable. De no modificarse el IF1, el sistema colapsará con el mínimo mensaje de error que se de. La modificación consiste en hacer la línea ROMCS (B25) del Spectrum accesible al conector extendido del IF1. Para esto se elige la línea A4 que no es usada por el Spectrum. Eso significa que esas dos líneas deben ser conectadas dentro del IF1. Al abrir el IF1, uno ve un pad de 2*28 soldaduras. Solo hay que soldar un cable para conectar las líneas B24 y A4. Una vez conectados ambos, no es necesario deshabilitar el IF1 para operaciones de DOS, pero si debe desactivarse el DOS para operaciones con el IF1. Esto es solo en caso de los comandos de ambos sistemas que tengan la misma sintaxis. Por ejemplo el IF1 ejecutará LOAD*"b" incluso con DOS activo. Para activar o desactivar el DOS desde el Basic: POKE 15169,0 - activa el DOS (DOS ON) POKE 15169,64 - desactiva el DOS (DOS OFF) Ejemplo: POKE 15169,64:LOAD*"....... :POKE 15169,0:SAVE*1"FILE" - carga programa desde el MicroDRive y lo salva en el disco. Debido a que el SPECCY no usa I/O,el IF! trabaja bien en conjunto. Acepta todas las normas de joystick incluido el Kempston con In 31. Acepta también todo tipo de impresoras. Magic2.x: Permite hacer backups completos de programas en la memoria del SPECTRUM como un solo archivo grande en el disco. Hay un contacto provisto en la interface. Primero se debe cargar la utilidad Magic2.x y pulsar ENTER. Elegir en el menú: S=salvar L=cargar $=salva pantalla C=crea cargador I=instrucciones E=fin. Puede cargarse el archivo fuente del casete, Microdrive o disco. Luego se pone un disco en la unidad asignada, se pulsa el botón de la interface y el archivo es salvado en el disco. Al terminar, la computadora se resetea por completo. Para cargar lo salvado se debe hacer lo siguiente: a) Si se creo un cargador simple entonces basta con LOAD*"test" por ejemplo. b) Se puede cargar Magic2.x, pulsar L y responder los mensajes que salgan. En caso de un SCREEN$, este debe cargarse antes que el cargador ya mencionado. Notas: Algunas posiciones del Spectrum no pueden ser utilizadas: 1292H - puntero de mensajes y AUTOBOOTeo. 1B41H - segundo puntero de entrada. 3B41H - guarda la densidad del disco usado. Estas posiciones no pueden ser normalmente accedidas por la computadora. De hacerlo, el sistema haría "crash". Si algun programa comercial colapsase, bastará con desactivar el DOS para solucionar el problema usando el POKE 15619,64 antes mencionado en la rutina cargador. Existe en EPROM, una versión distinta del DOS llamada v.4.0+ que incluye una rutina especial de escritura, que chequea tras escribir el contenido salvado en el disco. Esto afecta al comando MOVE*, que tarda 12 minutos para un disco dd80,en vez de 4min. con el v.4.0 pero puede ser muy util con ciertas aplicaciones. Los demás comandos mantienen sus velocidades sin cambio. Mensajes de error reportados: 1 LOST DATA (FDC) - dato perdido 2 CRC ERROR (FDC) (CHECK SUM ERROR ON DATA RECORD OR HEADER) - error en el chequeo de datos en el registro o la cabecera 3 RECORD NOT FOUND - registro no encontrado 4 DRIVE NOT READY - la unidad no está lista 5 DISK WRITE PROTECTED - disco protegido contra escritura 6 FILE ALREADY EXIST - el archivo ya existe 7 SEEK ERROR - error de busqueda 8 FILE TYPE ERROR - error en el tipo de archivo 9 INSUFFICIENT DISK SPACE - espacio insuficiente en el disco 10 INSUFFICIENT RAM SPACE - Ram insuficiente 11 DIRECTORY FULL (60 FILES MAXIMUM) - direc torio lleno (máximo 60 archivos por disco) 12 NO SUCH FILE - no hay tal archivo 13 CODE LONGER THAN SPECIFIED - código más largo de lo especificado 14 NO PROGRAM OR CODE - No es programa ni código 15 UNRECOGNIZED REC. FORMAT - Formato no reconocido 416 NON-SPECCY DISK - el disco no es de Speccy Codigos de los Mensajes de error: 30 = ATTEMPT TO WRITE SOFT WRITE PROTECTED DISK - intento de escribir en disco protegido contra escritura 31 = ATTEMPT TO WRITE SOFT WRITE PROTECTED FILE - intento de escribir en archivo protegido contra escritura 32 = DISK COPY PROTECTED - disco protegido contra copia 33 = FILE COPY PROTECTED - archivo protegido contra copia 34 = ATTEMPT TO ERASE AUTOBOOT FILE - intento de eliminar archivo auto buteable 35 = ATTEMPT TO RENAME AUTOBOOT FILE - intento de renombrar archivo auto buteable 36 = ATTEMPT TO RESET AUTOBOOT ATTRIBUT OF A DISK HAVING NO AUTOBOOT FILE - intento de resetear el atributo de un archivo auto buteable inexistente en el disco 37 = INEQUAL FORMAT @ MOVE* - Intento de usar Move* entre discos de formato diferente 50 = IMPROPER SYSTEM CALL - llamada inadecuada al sistema 51 = IMPROPER SYSTEM CALL - idem 52 = IMPROPER SYSTEM CALL - idem 53 = IMPROPER SYSTEM CALL - idem 70 = DISK READ UNDERRUN - disco leido "underrun" 71 = DISK WRITE UNDERRUN - disco escrito "underrun" 72 = DISK READ OVERRUN - disco leido "overrun" 71 = DISK WRITE OVERRUN - disco escrito "overrun"