DISCiPLE/+D Interface de disco e impresora. Sistema Uni-Dos. ---------------- Sistema operativo de discos mejorado para el +D y Disciple. Acepta todos los comandos y sintaxis del Gdos/Gdos+. Nota: A diferencia del Beta-Dos, hay que reemplazar la ROM de la Interface por una nueva eprom conteniendo al Uni-Dos. Ofrece algunas de las funciones que nos daba el Beta-Dos, quita y añade otras nuevas. Sintaxis: comando "pathname / nombre" Donde: drive solo puede ser 1, 2 ó *. pathname/ es el nombre o serie de subdirectorios a seleccionar. nombre debe ser de hasta 10 letras. Los signos * y ? son usados como wildcards (comodines) por el DOS. No deben ser usados como parte de nombre de archivo. Comandos: Format, Cat, Load, Save, Merge, Verify, Move, Erase, Open#, Close#*, Run, Poke@, Lprint, Llist, Clear#, Cls#. Point, In, Rnd, Line, Out#, Exp, !usr. Tipos de archivos: 0 Erased (archivos borrados) 1 Bas - programas Basic 2 D.array - para datos numéricos. 3 $.arrays - para datos alfanuméricos. 4 CDE - codigo máquina. 5 48k snapshot 6 Mdrv - los archivos Microdrive del Uni-dos son incompatibles con el tipo M/drive del Gdos/Gdos+. Requieren conversión. 7 screen$ 8 especiales 9 128k snapshot 10 opentype - para ficheros de datos Open/close 11 execute - programas ejecutables. Añade dos nuevos tipos de archivo a los ya conocidos. 12 Dir - Uni-Dos permite Subdirectorios. 13 Create - Archivos especiales del Uni-dos para ampliar el Basic extendido. Atributos: A diferencia del Gdos/Gdos+, Uni-dos ofrece dos únicos atributos. - archivos ocultos (el número de tipo de archivo más 128) - archivos protegidos (agrega 64 al valor anteriormente obtenido) Format sintaxis básica: Format d<*/número> este comando está desactivado en Unidos, para formatear discos se requiere dar la sigte orden: LOAD P "format" Se requiere cargar primero con Load el archivo create "ext_code" para la nueva sintaxis: Format d1;"volumen" Permite darle nombre al disco. Para borrar el nombre del disco se debe usar una cadena nula "": Format d*,"" Programas utilitarios: se cargan con LOAD del modo usual. _ format una vez cargado ofrece el siguiente menú: Utilidad de Formateado Usted desea: 1) Formatear un disco en la unidad 1 2) Formatear un disco en la unidad 2 3) Reformatear un disco en la unidad 1 4) Reformatear un disco en la unidad 2 5) Formato 1 identico a 2 6) Formato 2 identico a 1 Nota: Cuando se reformatea, no se pierden los datos en el disco El unico modo de salir es haciendo BREAK. _backup como su nombre lo indica: copia todo el contendio de un disco a otro. _setup una vez cargado, hace las preguntas necesarias sobre las caracteristicas de las unidades de disco a usar y la impresora para inicilaizar el sistema. _conversion es un subdirectorio con todas las utilidades para convertir tipos de archivos para ver su contenido basta hacer: CAT 1"conversion/" _creates subdirectorio con archivos especiales que expanden los comandos y funciones de Unidos (ver seccion: 'Archivos Create). _utilities subdirectorio con diversas utilidades Cat Nueva sintaxis: s1: CAT [#canal;][d]<*/número>["nombre"][!] Igual al Cat del Gdos/Gdos+ pero añade una "d" a la sintaxis, la cual puede ser opcional. s2: CAT [#canal;][d]<*/número>["pathname/"][!][NOT] donde: pathname/ = nombre de archivo o subdirectorio(s). Unidos usa "/" al estilo del Unix. Not = permite mostrar archivos ocultos. Cat d1"./" refiere al subdirectorio por defecto. Cat d*"../" alude al subdirectorio previo. Cat d1"/" es el directorio raiz. Todo nombre de subdirectorio debe llevar siempre un "/" al final para diferenciarlo de un nombre de archivo común. Ejemplo: Cat d2"progs/juegos/alfa" busca archivo "alfa" en subdirectorio "juegos" dentro del subdir. "Progs" en el disco del drive 2. s3(*): CAT [#canal;]L["pathname/"] Permite ver el contenido de todos los subdirectorios en modo "tree". (*)Requiere cargar primero con Load el archivo create "path_code". s4(**): Cat p["pathname/"] Puede decirse que el Cat muestra el directotio en "Vista detalles", Cat ! lo hace en "modo lista" y Cat P lo hace en modo "iconos grandes". (**)Requiere cargar primero con Load el archivo create "pic_code". Save Sintaxis completa: Save [Over]d<*/número>[;/,]"[pathname/]nombre" [Line/Code/Data/Screen$/[;]X,dir] Save Over permite sobreescribir un archivo a salvar sin dar mensaje igual que el Save Over del Beta-Dos. SAVE [OVER] d<*/número>""USR , Permite crear un archivo tipo "create" (*) SAVE [OVER] d<*/número>"pathname"CAT Equivale a MKDIR del MSDOS. Permite crear subdirectorios, es necesario dar el número de archivos que tendrá dicho subdirectorio. El nombre del directorio a crear no debe tener un "/" al final. (*) Requiere cargar primero con Load el archivo create "dir_code". Load Sintaxis básica: Load d<*/número>[;/,]"nombre" [Code/Data/Screen$] Nuevas opciones: LOAD d<*/número>"[pathname/]nombre"[LINE ] Este Line en Load auto ejecuta el programa a cargar y tiene prioridad sobre el Line del comando Save. LOAD d<*/número>"[pathname/]nombre"CODE [dir[,largo[,Auto-run]]] donde: dir = la dirección en memoria donde se quiera cargar el archivo en C.M. o Screen$ largo = un valor igual o mayor al que se usó en Save Code, de lo contrario dará error. auto-run = autoejecuta el programa en C.M. prevaleciendo sobre el auto-run del comando Save Code. LOAD d<*/número>""USR Permite cargar archivos "create". LOAD p"[pathname/]nombre" Igual a Load P pero esta vez carga el archivo por su nombre desde el directorio en el que se halle. También permite cargar archivos tipo "creates". Merge sintaxis básica: Merge d<*/número>[;/,]"nombre" Nuevas opciones: MERGE d<*/número>"[pathname/]nombre"CODE [dir[,largo]] Cargar un C.M. con este comando desabilita la opción de auto-run conque se grabara el archivo. Merge p ahora carga tanto programas basic como archivos en C.M. MERGE p"[pathname/]nombre" Igual a Merge P pero dando un nombre. Da error con archivos create o ejecutables. Verify sintaxis básica: Verify d<*/número>[,/;]"nombre" [Data/Screen$/Code[dir[,largo]]] Nuevas sintaxis: VERIFY d<*/número>"[pathname/]nombre" [Data/Screen$/CODE [dir[,largo]]] VERIFY p"[pathname/]nombre" como Verify p Erase sintaxis básica: Erase d<*/número>"nombre" Nueva sintaxis: ERASE d<*/número>"[pathname/]nombre" [NOT] No se pueden borrar archivos abiertos o protegidos. la opción "Not" borra sin esperar mensaje alguno de confirmación. (*) ERASE d<*/número>"nombre"CAT Permite borrar un subdirectorio incluido su contenido. El nombre no debe tener "/" final. No admite "wildcards". (*) Requiere cargar primero con Load el archivo create "dir_code". Erase to (Rename) Comando para renombrar los archivos. sintaxis: Erase d<*/número>"nombre viejo" to "nombre nuevo" Nueva sintaxis: Erase d<*/número>"[pathname/]nombre viejo" to "nombre nuevo" Encuentra el archivo en el subdirectorio especificado por "pathname" y lo renombra. En este caso, "nombre nuevo" debe ser nombre de archivo solamente y no incluir nombre de subdirectorio. Move Comando para mover o copiar datos. sintaxis 1: MOVE # TO # MOVE d"[pathname/]nombre" TO # MOVE # TO d"" Mueve datos entre canales. Se puede crear un canal temporal a un archivo mediante 'd"nombre". Una vez completada la orden, el canal se cierra, incluso si hubiese mensaje de error. Sintaxis 2: MOVE [OVER] d[""] TO d[""] Move [Over] d"nombre_1" to "nombre_2" Reemplaza a "Save to". Puede copiar cualquier archivo (excepto subdirectorios) que no tengan longitud cero. Incluidos: snapshots, MDRV, Opentypes así como archivos de más de 64k. A diferencia de "Save to", "Move to" no resetea el sistema al termino del copiado de datos. Si "nombre_2" ya existiera, el comando pediría confirmación de la sustitución. La opción Over sobreescribe sin pedir confirmación, devuelve error solo si hay protección contra escritura. Open# sintaxis básica: Open# canal,d[*/número],"nombre" [In / Out] Salva o lee datos secuencialmente en el archivo especificado dentro del directorio en curso. Nueva sintaxis: OPEN #;d""RND [,] Crea archivos directos con la longitud especificada e inicializa cada byte al valor especificado. El archivo creado con este comando está en blanco y listo para ser llenado. Puede ser despues leido con: Open #;d"nombre" IN o añadirsele datos más tarde con: Open #;d"nombre" RND. Nota: Un archivo creado con la opción OUT también puede ser leído al parecer directamente con IN o RND. OPEN #;d"" [IN / RND] Permite acceso directo a subdirectorios o archivos dependiendo de si el nombre final termina o no en "/". Ejemplo: OPEN #4;d1"/" RND accesa directamente al directorio raiz. Para solo lectura directa usar IN. OPEN #;d[IN / RND] Permite acceso directo al disco entero por medio de un canal especificado. Todos los 16 canales pueden acceder al mismo archivo a la vez. Accediendo así al disco se pueden modificar o leer los dos últimos bytes de cualquier sector que son de uso interno normalmente. Point # sintaxis: Point #, Permite elegir el registro cuyo dato debe ponerse/extraerse dentro del archivo directo con el cual se trabaja. Input# n;([Line]a$/var.) para datos numéricos y alfanuméricos. Inkey$# para leer datos alfanuméricos caracter a caracter. Print# n;(a$/var.) para la escritura de los datos. Close#* Sintaxis: Close#* [canal] Close#* sólo sin especificar, cierra todos los canales abiertos. Close#* completa la creación de archivos con Open# y salva los buffers que necesiten ser salvados. Nota: Su ausencia podría provocar la perdida de los datos y daño del archivo en curso abierto. Clear# No cierra archivos abiertos, solo los canales. Usarlo despues de Close#* o antes de un Open#. No completa los archivos ni salva datos como Close#*. Cls# Borra la pantalla y resetea todos los atributos definidos por Border, Paper, Ink, Bright, Inverse, Flash y Over. Poke @13, permite cambiar los colores por defecto. Run Bootea el DOS desde el drive 1. Estando un programa en memoria usar Run 10000. Save Screen$ sintaxis 1: Save Screen$ <1 / 2> Envía copia de pantalla a impresora según el set elegido 1 ó 2. Funciona igual que en el GDos pero sin escala de grises. sintaxis 2: Save Screen$ #flag[,pass[,margin[,y[,x[,height[,width]]]]]] Comando potenciado para volcar pantallas a impresora. Requiere siete parametros. flag = la suma de: 128 si se requiere una impresión hacia un lado. 64 si se desean los datos de color de pantalla en vez de solo los datos de pixeles. 8 las "n" veces de ampliación vertical (0-7 donde 0 es de hecho una magnificación de 8) 1 las veces de ampliación horizontal (0-7) pass = el número de pasos por linea para permitir diferentes grados de negro. margin = el margen de volcado en el ancho de los caracteres que es independiente del margen usado por Lprint. y,x = equivalente a "Print At y,x". height = la altura de la imagen en cuadros de caracteres. width = el ancho de la imagen en cuadros de caracteres. La impresión solo puede ser detenida pulsando BREAK al final de cada linea impresa. Lprint y Llist también son admitidos por Uni-dos. Poke @ sintaxis: Poke @ dirección, valor Pokea en el área de variables del DOS. Puede pokear en la memoria principal si los valores son mayores de 8192 hasta 65535. Save @ Sintaxis: Save@ Ndrive,Track,Sector,Dirección. Salva los datos de una dirección especificada a un sector del disco. Load @ sintaxis: Load@ Ndrive,Track,Sector,Dirección. Carga datos de un sector del disco a una dirección de memoria. Out# sintaxis: Out #, Salva todo los sectores del buffer de canales de acceso directo al disco. Devuelve error si el canal especificado no es de acceso directo. In (change dir) Equivalente al comando CD del MSDOS. sintaxis 1: IN d Cambia el drive por defecto. En el spectrum 128k, el editor evalua IN como función directa en modo calculadora. En este caso hay que usar ":IN d2" en vez de "IN d2" para seleccionar el drive 2 como unidad por defecto. sintaxis 2: IN d"/" Selecciona la unidad y subdirectorio en uso. El nombre del subdirectorio debe termninar siempre en "/". Todos los comandos del disco operarán con el drive y directorio seleccionado por defecto siempre que se especifique como "d*". Ejemplo: Cat d*, Save d*"...", Load p"nombre" Exp Cambia los atributos de archivo(*). sintaxis: Exp <+/-/=>[h/p];d"pathname" donde: h = oculto (hide) p = protegido + = activa el atributo elegido - = desactiva atributo el signo "=" fija el status (*) Requiere cargar previamente ejecutable "hide_code". !usr Imprime valores numericos con formato (*). Equivale a Print Using de otros Basics. sintaxis: !USR ,"###.###" (*) requiere cargar previamente ejecutable "pr_using". Nota: Las instrucciones Exp y !usr no están mencionadas en el manual original del Uni-Dos. Line (On error) Equivalente al comando "ON ERROR GOTO" de otros Basics para la captura de errores. sintaxis: LINE Detecta cualquier error tanto del 48k / 128k y DOS. Ejecuta subrutina en el número de linea especificado. CONTINUE equivale a RESUME y retorna al punto en que se detuvo el programa. Peek @99 equivale a ERR. Devuelve el codigo de error, siendo propios del DOS los valores mayores a 127. LINE 0 deshabilita la captura de errores. Equivalente al ON ERROR GOTO 0. Poke @4,0 deshabilita la tecla BREAK, excepto durante un mensaje de SCROLL?. Poke @4,1 (o un reseteo) rehabilita la tecla Break. Funciones: Todas las funciones exclusivas del DOS se hallan siempre entre parentesis y deben ser llamadas por otros comandos y sentencias del Basic o DOS. También pueden ser incluidas en operaciones de cálculo diverso. (Peek @dirección) Lee las variables del sistema del DOS. (Len #canal) Devuelve la longitud de un canal de acceso directo. Da error si el canal no es directo. (Point #canal) Nos dice donde está el puntero del archivo directo en curso. Da cero si se ha llegado al fin del fichero. Da error si el canal no es de acceso directo. (In #canal, long) lee el número de bytes específicos de cualqueir clase de canal de archivo como cadenas. Suple las limitaciones de Input #. (At d,"") Devuelve el número del archivo en el directorio a buscar. Da cero si el archivo no es hallado. (Line) Requiere cargar con Load el ejecutable "ext_code" primero. Le dice al programador cual disco está en uso. El resultado es el valor resulñtante de sumar: 128 si el disco está protegido contra escritura. 2 si el disco en uso está en la disquetera dos. 1 si está en la disquetera uno. Respuesta negativa en caso de que no halla disco alguno en la unidad esperada. (String$ #canal) Requiere cargar "ext_code" Devuelve una cadena. Nula si el archivo está cerrado. Una letra si el canal de archivo está en uso. "d" si es de acceso secuencial. "D" si es de acceso directo. (Step [d]) Requiere cargar "dir_code". Devuelve el nombre del último directorio accedido o de aquel que esté en curso. Archivos "create": Son programas especiales del Uni-Dos, basta con ser cargados para añadir nuevos comandos y funciones al DOS o ampliar la sintaxis de comandos ya existentes para nuevas acciones. Al cargarse con Load, ocupan la memoria entre el área de canales y el programa Basic. Hay que volver a cargarlos despues de cada NEW. El efecto de cargarlos es acumulativo. En el disco del sistema original del Uni-dos, dentro del directorio "CREATES/" se hallan los archivos "create" básicos. Se pueden crear, salvar y cargar mediante: SAVE [OVER] d<*/número>""USR , LOAD d<*/número>""USR ó LOAD p"[pathname/]nombre". Snapshots: Admite las mismas opciones que el Gdos/Gdos+. El botón de snapshots no funciona mientras un comando del DOS está ejecutándose. Como regla general no debe intentarse ningún snapshot mientras el disco esté corriendo. Al presionar el botón, la máquina queda a la espera de que se pulse lo siguiente: 1 - Volcado de pantalla a la impresora. 2 - Volcado a impresora en formato mayor. 3 - Salva un Screen$ en el disco. 4 - Salva un snapshot de 48k en disco. 5 - Salva un snapshot de 128k. X - Devuelve el control al basic o programa en curso en el punto que se pulsó el magic button para hacer el snapshot. P - Envía códigos de inicialización a la impresora. En el caso de elegir la opción 5, si la parte principal de la pantalla sigue sin cambio pulsar "n" para continuar. Si la parte principal cambia pulsar "y". Así el sistema sabe qué pantalla está en uso. Mensajes de error: 0 Nonsense in Uni-Dos (sin sentido en Uni-Dos) 1 O.K. Uni-Dos 2 Break requested (solicitado un break) 3 Corrupt sector (hay sectores corrompidos) 4 Sector missing (falta el sector) 5 Check disc in drive (verificar si hay disco en la unidad) 6 DOS file not found (archivo de DOS no hallado) 7 Invalid filename (el nombre de archivo no es válido) 8 Invalid sector number (el número del sector no es válido) 9 Invalid device/channel (el dispositivo/canal no es válido) 10 Wrong stream type (tipo de flujo erroneo) 11 Verification failed (falló la verificación) 12 Wrong file type (tipo de archivo erroneo) 13 CODE parameter error (error en los parametros de "CODE") 14 Directory not found (no se halla el directorio) 15 File has zero length (el archivo tiene longitud cero) 16 Reading a write file (leyendo fichero de solo escritura) 17 Writing a read file (escribiendo en fichero de solo lectura) 18 POINT outside file (el puntero marca más allá del número de datos en archivo) 19 Channel out of order (canal fuera de orden) 20 Illegal drive number (número de disquetera no válido) 21 Disc write protected (disco protegido contra escritura) 22 Not enough disc space (nohay suficiente espacio en disco) 23 Directory full (el directorio está lleno) 24 File not found (archivo no hallado) 25 End of file (fin de fichero) 26 Filename already used (ese nombre de archivo ya está siendo usado) 27 File still open (el fichero sigue abierto) 28 File in use (fichero en uso) 29 Channel already open (canal ya abierto) 30 Protected file (archivo protegido) 31 Unavailable RST 8 (rst 8 no está disponible) Francisco León. zx_if1@hotmail.com