TR-dos vrs: 1.xx - 4.xx. Sistema operativo de Digital Research Ltda. para la Interfase Beta Disk. Incluye la posibilidad de usar password con los discos. Sintaxis: comando "[drive:] nombre" [tipo] Comandos: Cat, Load, Save, Merge, Move, Erase, New, Poke, Peek, Return, Run, *, Usr, Randomize ...: Rem... Los drives admitidos son: "a:", "b:", "c:", "d:" (tanto en mayúsculas como en minúsculas). El nombre es de hasta 8 caracteres ya sean mayúsculas, minúsculas, incluido espacios. Se pueden escribir nombres de hasta 10 caracteres pero el Trdos ignorará los dos últimos caracteres. EL DOS diferencia los nombres con mayúsculas de aquellos en minúsculas. Por ejemplo: "QUOTE" es distinto de "quote" y "QuotE" o "qUOTe". Los archivos son catalogados de la siguiente manera con una letra designando el tipo: B - para programas en basic. C - para codigo máquina (bytes CODE), Screen$, snapshots. D - para archivos DATA No hay atributos ni extensiones. Se puede acceder a los comandos del DOS desde tres modos: modo TRdos, modo Basic y desde código máquina. Modo Trdos: Para entrar en este modo desde el Basic, hay que usar el comando directo: Randomize Usr 15350 En este modo se aceptan todos los comandos del DOS, los cuales pueden teclearse directamente, cualquier otra sentencia o símbolo será ignorado. Al pasar a este modo aparece el prompt "A>" y el dos queda a la espera de que se le dé algun comando a ejecutar. * (select drive) sintaxis: *"" Permite seleccionar o cambiar la unidad por defecto. Los comandos del dos operan generalmente con la unidad por defecto. Cat sintaxis: Cat Ejemplos: Cat - solo muestra la información del disco en la unidad usada por defecto. Cat "b:" - muestra el contenido del disco en el drive b. Save Sintaxis: Save "[drive:]nombre" [Line/Code/Data] Cuando el nombre existe en el directorio, el dos informa que el archivo ya existe y no ejecuta la acción de salvar. Desde el Basic en cambio no muestra mensaje alguno, simplemente no salva nada. En cualquier caso se salva con otro nombre, o se borra el archivo previo con Erase. Todas las pantallas se salvan mediante Code, en vez de Screen$. Load sintaxis: Load "[drive:]nombre" [Code/Data] Merge sintaxis: Merge "[drive:]nombre" Run sintaxis: Run "[drive:]nombre" [Code] Ejecuta cualquier archivo ya sea un programa Basic o código máquina. Move (Packing Disc Space) Permite liberar el espacio ocupado por los archivos borrados con Erase, para su futuro uso. sintaxis: MOVE ["drive"] Ejemplo: MOVE "b:" compacta disco en la unidad "b". Si se omite el drive, MOVE compacta el disco en la unidad por defecto. Despues de usar Move, Cat deja de mostrar el número de archivos borrados pues estos han sido plenamente eliminados. El manual original sugiere usar Move despues de cada Erase para facilitar los reajustes multiples en directorio. Erase sintaxis: Erase "[drive:]nombre" [Code/Data] Ejemplo: Erase "a:prg.p", Erase "Alfa" Data Nota: La ausencia de comodines (wildcards) en este comando lo obliga al usuario a borrar los archivos uno por uno. O usar Format si se quiere borrar todo el directorio. New (Rename) Comando para renombrar los archivos. sintaxis: New "[drive1:]nombre_1","[drive2:]nombre_2" [Code/Data] donde: nombre_1 = el nuevo nombre del archivo nombre_2 = el nombre original del archivo drive1 y drive2 deben ser iguales, si se omiten se renombrará el archivo en la unidad por defecto. Ejemplos: New "code.bin","Codigo.b" Code - renombra archivo tipo Code en la unidad por defecto. New "c:code.bas","c:Codigo.a" - renombra archivo Basic en la unidad "c". Poke Permite escribir sectores de datos de la RAM en cualquier parte de un archivo del disco. Sintaxis: Poke "[drive:]nombre" Buff_add, Sec_nums Ejemplo: Poke "B:OLD" 30024,10 Nota: Esta instrucción debe ser usada con cuidado debido a que modifica el contenido de un archivo en el disco. Peek Permite leer partes de archivos en disco y los transfiere a la RAM. Solo se puede leer un sector a la vez. Sintaxis: Peek "[drive:]nombre" Buff_add, Sec_numb. Ejemplos: Peek "a:record" 32768,5 Peek "datel.p" varnum1, varnum2 Usr Permite cambiar el password del disco. Al dar USR, el dos pasará a esperar que se escriba un nombre de hasta 9 letras. Una vez hecho eso, el dos mostrará el texto: New password: "xxx" indicando el nuevo nombre que uno eligiera. Return Permite salir del dos y devuelve el control al Basic. Modo Basic: Es el sistema (ZX Basic) por defecto al prender un 48k ó + (o el modo Basic que se elige en un 128k). Para acceder a los comandos del DOS desde el Basic se requiere la siguiente sintaxis: [número de línea] Randomize Usr 15363: Rem: Generalmente todas las sentencias del DOS pueden ser usadas como comandos directos o sentencias dentro de un listado Basic. Ejemplos: Randomize Usr 15363: Rem:*"b:" Randomize Usr 15363: Rem: Cat Randomize Usr 15363: Rem: Load "opus" Randomize Usr 15363: Rem: New "prb.m$","prgbk.m$" DATA Randomize Usr 15363: Rem: Merge "b:hunos" Nota: No puede haber más de un comando del DOS por línea admisible. Modo código máquina: Es relativamente simple incluir las rutinas del Trdos en programas en código máquina. Tres son los elementos requeridos por el programa: 1) el codigo máquina equivalente del comando TRDOS en Basic. 2) la subrutina en c.m. para ejecutar lo antes dicho. 3) la rutina c.m. que restaurará el sistema a su estado original antes de la llamada y ejecución del comando. Las posiciones reales de memoria a usar dependen del programa como un todo. En el ejemplo siguiente las rutinas se localiza en 40000 para LOAD y 50000 para la rutina de llamada. Así el elemento 1 estará en 40000 o 49500, mientras los elementos 2 y 3 estarán a partir de la 50000. Ejemplo: Dirección Codigo Basic Comentario 40000 234 REM Codigos del Apendice A del manual del Spectrum 40001 58 : 40002 248 LOAD 40003 34 " 40004 69 E 40005 120 x 40006 97 a 40007 109 m Nombre de archivo: "Example" 40008 112 p 40009 108 l 40010 101 e 40011 34 " 40012 13 ENTER Siempre debe terminar con ENTER Esta rutina puede ubicarse en cualquier parte, pero la rutina de inicio en la 50000 requerirá modificar LOAD para su redirecccionamiento. La rutina de inicio misma debe ser reensamblada para su relocalización. Por esa razón la rutina está en ensamblador: CHADD EQU 23645 Posición de la variable CHADD del SOS ORG XXXXX XXXX= dirección en que se colocará esta rutina LD HL,(CHADD) Comienza salvando real CHADD LD (TEMP), HL Almacenamiento temporal del real CHADD LD HL,40000 posición de la rutina LOAD LD (CHADD),HL CHADD ahora apunta a nuestra rutina CALL 15363 Entra al Load del TRDOS vía chadd BACK LD HL,(TEMP) empieza a restaurar CHADD LD (CHADD),HL Carga otra vez el CHADD original RET Retorna al sitio desde el cual llegasta aquí TEMP Etiqueta de localización de memoria para almacenamiento temporal Programas utilitarios: Son requeridos para ciertas operaciones que no pueden hacerse con los comandos incorporados del DOS. Backup Se carga haciendo: Run "backup" Esta utilidad permite hacer copias completas de discos usando una sola unidad. Para abandonar, pulsar EDIT. Copy Sintaxis: Copy "[drive1:]nombre_1","[drive2:]nombre_2" donde: nombre_1 = el nuevo nombre de la copia nombre_2 = el nombre del archivo original a copiar drive1 = la unidad en la cual se hará la copia drive2 = la unidad en la cual está el archivo a copiar Se carga con: Run "copy" El prompt "A>" cambia a "A*" y queda en modo de copiado, a la espera de que se le dé un comando. En modo copia están disponibles todos los demás comandos del Dos, además de la nueva orden Copy. Ejemplos: Copy "b:amigo","a:amigo" - copia archivo del drive "a" al drive "b" COPY "B:*", "A:*" - copia todos los archivos de "a" a "b". Si un archivo ya existiese en este caso, el dos preguntará si se desea sobreescribir o no el archivo. Scopy sintaxis: Copy "nombre2" [Code/Data] Se carga previamente con: Run "scopy" El prompt "A>" cambia a "A#" y queda en modo simple copia, a la espera de que se le dé un comando. Este comando extra permite hacer copias de archivos usando una sola unidad. Ejemplo: Copy "format" code - solicita cambiar el disco y vuelve a "A#" una vez hecha la copia. Format Para ejecutar esta utilidad usar: Run "format" Code Al entrar en este modo se obtiene el siguiente menú: 1 ---- 40 tracks simple cara 2 ---- 80 tracks simple cara 3 ---- 40 tracks doble cara 4 ---- 80 tracks doble cara Q ---- salir Una vez elegida la opción, se pregunta en qué unidad y entonces se ofrecen tres opciones: F - para formatear V - para verificar - chequea errores en el disco sin borrar la información existente. Q - para salir. Mensajes de error: Desde el Basic o el Código Máquina, no hay mensaje de error alguno, excepto los que son propios del Spectrum mismo. Los códigos de error se almacenan en el par de registros BC del Z80, quedando así disponibles para el usuario y son: 0 ----- No errors (O.K.) 1 ----- No files (no se halló el archivo) 2 ----- File exists (el archivo existe) 3 ----- No space (sin espacio) 5 ----- Record number overflow (se fue más allá del número de registros en el fichero) 7 ----- Disk errors (errores en el disco) 8 ----- Syntax errors (error de sintaxis) Para trabajar con los códigos de error, hay que asignar una variable al comando del Trdos. Esta variable cogerá el valor del error luego de ejecutarse el comando. Ejemplo 1: LET A=USR 15363: REM: CAT Ejemplo 2: Un simple programa que nos ilustra sobre el uso del código de error 1: 10 CLEAR 65367 20 LET ERR = USR 15363: REM: LOAD "COPY"CODE 25 REM el codigo de error es capturado en la variable ERR 30 IF ERR = 1 THE CLS: PRINT AT 10, 1;"""COPY""CODE No existe en el DISCO": STOP 40 RANDOMIZE USR 32768 50 RANDOMIZE USr 15360 Francisco Leon.