Capítulo 5. AMSDOS y CP/M

Parte 2: CP/M

Contenido:


CP/M Plus es un sistema operativo de disco. Es un programa especial que da acceso a la gran potencia del CPC6128. Aprovecha todos los 128K de RAM y deja libres más de 61K para los programas del usuario. CP/M permite el acceso aleatorio a los ficheros de datos; la implementación en el CPC6128 incluye un sofisticado emulador de consola.

El hecho de que CP/M esté disponible para tan gran variedad de ordenadores hace que se hayan escrito millares de paquetes de aplicación, entre los que usted puede elegir los que mejor satisfagan sus necesidades.

En la publicación "A Guide to CP/M Plus", SOFT971, se da una descripción completa de CP/M Plus, junto con información detallada sobre cómo escribir sus propios programas y sobre la implementación de CP/M Plus en el Amstrad. Puede consultar también otras publicaciones de Amsoft y de otros editores sobre este tema.

Introducción

El sistema operativo CP/M proporciona un medio de comunicación entre el usuario y el sistema informático, incluidas las unidades de disco y otros periféricos. Ofrece órdenes especiales (incorporadas en el sistema) y programas de ayuda (grabados en los discos) cuyo objetivo fundamental es ayudarle en la tarea principal y más frecuente: ejecutar los programas de las aplicaciones con sus propios datos.

Desde luego, es posible adquirir gran experiencia en el manejo de CP/M y todos sus programas de ayuda. Tal experiencia puede ayudarle a salir de algún apuro. Pero la realidad es que a la mayor parte de los usuarios les basta con saber cómo poner en marcha los programas. El resto de este capítulo estará dedicado a explicar las funciones y características fundamentales de CP/M, procurando evitar que el exceso de detalles oscurezca lo esencial.

Del mismo modo que BASIC tiene su "modo directo" o "modo inmediato", caracterizado por el mensaje inductor Ready, CP/M tiene un "modo directo de consola", identificado por los mensajes A> o B>. El sistema dispone de ciertas órdenes incorporadas, pero la mayor parte del trabajo se realiza cargando y ejecutando "programas transitorios". Se les llama "transitorios" porque normalmente están en el disco y sólo se los carga en la memoria cuando se los va a utilizar.

El sistema genera, además de los mensajes de error estándar de CP/M, cierto número de mensajes de error específicos de los circuitos, los cuales se distinguen por el hecho de que aparecen en la última línea de la pantalla en forma de "cinta sin fin".

Situación de CP/M Plus en el disco

La mayor parte de CP/M Plus reside en un fichero especial con distintivo de tipo .EMS, grabado en la cara 1 del juego de discos del sistema. El ordenador carga CP/M a partir de este fichero siguiendo un proceso de dos etapas.

En primer lugar, la orden |CPM de AMSDOS carga el primer sector de la pista número 0. En los discos con formato de sistema, este sector contiene un programa cuya única misión es cargar el fichero .EMS. El resto de las pistas del sistema no se utiliza.

Arranque en frío

Durante el proceso de carga, cuando se activa CP/M por primera vez, el sistema busca en el disco el fichero PROFILE.SUB. Si lo encuentra, ejecuta automáticamente las instrucciones contenidas en él. Así pues, incluyendo en el fichero PROFILE.SUB las instrucciones adecuadas, se puede automatizar la preparación del teclado, la inicialización de la impresora e incluso la puesta en marcha de una aplicación. En el capítulo 4 vimos cómo se cambia el nombre del fichero PROFILE (cara 1) para activarlo.

Mientras está funcionando el fichero PROFILE.SUB se crea en el disco un pequeño fichero transitorio; así pues, el disco no puede estar protegido contra escritura. Ésta es la razón por la que el fichero PROFILE del disco maestro no puede ser reconocible, esto es, no puede tener el distintivo .EMS.

Los ficheros PROFILE se pueden elaborar con un procesador de textos, con un editor de texto (tal como ED.COM) o incluso desde BASIC. El siguiente programa de BASIC podría haber sido utilizado para crear el fichero PROFILE.SUB:

10 OPENOUT "PROFILE.SUB"
20 PRINT #9,"SETKEYS KEYS.CCP"
30 PRINT #9,"LANGUAGE 3"
40 CLOSEOUT

Códigos de control de consola

En CP/M se utilizan diversas teclas para controlar la evolución de los programas. Estas funciones reemplazan la acción que ejercen las teclas de movimiento del cursor y [ESC] en BASIC. Los códigos de control que relacionamos a continuación se asignan a las correspondientes teclas ejecutando la orden

SETKEYS KEYS.CCP

El programa transitorio SETKEYS.COM y el fichero KEYS.CCP se encuentran ambos en la cara 1 del juego de discos del sistema.

Código de
control
TeclaFunción
[CONTROL] A[←]Mover el cursor una posición hacia la izquierda
[CONTROL] B[CONTROL] [←]
.. o bien ..
[CONTROL] [→]
Llevar el cursor al principio de la línea; si ya está en esa posición, lo lleva al final de la línea
[CONTROL] C[CONTROL] [ESC]Abandonar el programa
[CONTROL] E[CONTROL] [RETURN]Retorno físico del carro
[CONTROL] F[→]Mover el cursor una posición hacia la derecha
[CONTROL] G[CRL]Borrar el carácter que está en la posición actual del cursor
[CONTROL] H[←BORR]Borrar el carácter que está a la izquierda del cursor y mover éste una posición a la izquierda
[CONTROL] I[TAB]Llevar el cursor al siguiente tope de tabulación
[CONTROL] JIntroducir línea de orden
[CONTROL] K[CONTROL] [CLR]Borrar hasta el final de la línea
[CONTROL] M[RETURN]
.. o bien ..[INTRO]
Introducir línea de orden
[CONTROL] PBáscula de la impresora. Activa y desactiva el envío a la impresora de toda la información que aparece en la pantalla
[CONTROL] QReanudar el envío de información a la pantalla
[CONTROL] R[CONTROL] [INTRO]Repetir la línea de orden actual
[CONTROL] S[ESC]Detener el envío a la pantalla de la información generada por CP/M. Se reanuda con [CONTROL] Q
[CONTROL] UIgnorar la línea actual
[CONTROL] W[COPIA]Repetir la última orden tecleada
[CONTROL] X[CONTROL] [←BORR]Borrar desde el principio de la línea hasta la posición actual del cursor
[CONTROL] ZFin del texto

Nombres de ficheros

Muchas de las órdenes de CP/M llevan como parámetros nombres de ficheros. En ciertos casos se permite la inclusión de símbolos comodín (véase la sección Símbolos comodín en la parte 1 de este capítulo). El sistema convierte a mayúsculas todos los nombres de fichero.

Las órdenes directas de consola y la mayor parte de los programas de ayuda no requieren que se escriban los nombres de ficheros entre comillas.

Los nombres de los ficheros pueden incluir los prefijos A: o B: para obligar a CP/M a utilizar la unidad especificada.

Una orden típica de CP/M es, por ejemplo,

TYPE KEYS.CCP

donde TYPE es el nombre de la función ("visualizar en la pantalla") y KEYS.CCP es el nombre del fichero cuyo contenido queremos ver.

Cambio de la unidad de disco implícita

Si se tiene conectada la segunda unidad de disco, se puede especificar cuál de las dos debe ser considerada como implícita. Para ello se escribe A: o B: en respuesta a los mensajes inductores B> o A>, respectivamente. El propio mensaje inductor indica en todo momento cuál es la unidad implícita. La inclusión de A: o B: como prefijos en los nombres de los ficheros obliga a utilizar la unidad especificada en una operación concreta, pero no modifica la unidad implícita.

Órdenes directas de consola

Hay varias órdenes directas de consola que se pueden teclear en respuesta a los mensajes A> o B>. Estas órdenes pueden ser abreviadas. Las versiones simplificadas que vamos a estudiar sí están incorporadas en el sistema operativo, pero existen, con el mismo nombre, programas transitorios más complejos.

DIR

Escribe en la pantalla la lista del contenido del directorio. Los nombres de los ficheros no están ordenados según ningún criterio, sino en el orden en que están sus reseñas en el directorio. DIR admite símbolos comodín; no lista los ficheros que tengan el atributo "SYS".

OrdenAcción
DIRLista todos los ficheros de la unidad implícita
DIR B:Lista todos los ficheros de la unidad B:
DIR *.BASLista todos los ficheros del tipo .BAS
DIR B:*.BASLista todos los ficheros del tipo .BAS de la unidad B:
DIR PIP.COMLista solamente el fichero PIP.COM (si existe)

DIRSYS y DIRS

Estas órdenes escriben la lista de los ficheros del disco que tienen el atributo "SYS". Por lo demás funcionan igual que DIR. Más adelante describiremos el atributo SYS.

ERASE o ERA

Borra reseñas del directorio. Sólo se borra la reseña, de modo que los datos siguen estando en el disco hasta que se graben otros en su lugar; no obstante, la información es irrecuperable. ERA admite símbolos comodín; si se incluyen estos símbolos en el nombre de fichero, ERA pide que se le confirme que debe borrar todos los ficheros concordantes. ERA no lista los nombres de los ficheros que va borrando. Si alguno de los ficheros que se le ha pedido que borre es de "sólo lectura", la orden queda interrumpida. El atributo de "sólo lectura" será descrito más adelante.

OrdenAcción
ERA PIP.COMBorra el fichero PIP.COM
ERA B:PIP.COMBorra el fichero PIP.COM de la unidad B:
ERA *.BASBorra todos los ficheros de tipo .BAS

RENAME o REN

Cambia el nombre de un fichero ya existente. El primer nombre de fichero que se especifica es el nuevo, seguido del signo = y del nombre antiguo. Si ya hay en el disco un fichero con el nombre nuevo, se emite un mensaje de error. Como orden incorporada al sistema, REN no admite símbolos comodín en los nombres de los ficheros; sí lo hace, en cambio, el programa transitorio RENAME.COM.

OrdenAcción
REN FICHNUEV.BAS=FICHANTI.BASDa al fichero FICHANTI.BAS el nuevo nombre FICHNUEV.BAS
REN B:FICHNUEV.BAS=FICHANTI.BASDa al fichero FICHANTI.BAS el nuevo nombre FICHNUEV.BAS en la unidad B:

TYPE o TYP

Envía a la pantalla el contenido del fichero especificado. Si el fichero no es un fichero ASCII de texto, se producirán efectos imprevisibles, quizá indeseables.

OrdenAcción
TYPE KEYS.CCPExhibe el listado del programa KEYS.CCP

USER o USE

El "número de usuario" es un método de partición del directorio mediante el cual se limita el acceso de distintos usuarios a sus correspondientes ficheros. Normalmente un fichero sólo es accesible si está identificado con el número actual de usuario. Los ficheros que hayan sido grabados en "usuario 0" y tengan el atributo "SYS" son accesibles desde todos los números de usuario; de esta forma, los programas de ayuda y de aplicación están al servicio de todos los usuarios sin necesidad de que cada uno tenga una copia en su propia área.

La orden USER cambia el número actual de usuario.

OrdenAcción
USER 3Hace que el número de usuario sea el 3

Órdenes transitorias

Para realizar una gestión de ficheros más elaborada que la que permite el modo directo de consola es necesario recurrir a los diversos programas de ayuda disponibles. Estos programas se ejecutan sin más que escribir su nombre, en ocasiones seguido de algún nombre de fichero o de algún parámetro. El lector seguramente conocerá una de estas órdenes transitorias: DISCKIT3.

Las órdenes transitorias se dividen en los grupos indicados más abajo. La documentación disponible sobre estos programas es muy amplia; el lector puede consultar los ficheros HELP (cara 3 del juego de discos del sistema) y la publicación "A Guide to CP/M Plus", SOFT971.

Las órdenes transitorias DISCKIT, SETKEYS, SETLST, SETSIO, PALETTE, LANGUAGE y AMSDOS, así como los controladores de pantalla para GSX y la instalación de LOGO3, han sido diseñadas por Amstrad y funcionan solamente en este sistema. No son trasladables a ningún otro CP/M. En una misma línea se pueden incluir varias órdenes separándolas con el signo de exclamación (!):

LANGUAGE 3!SETKEYS KEYS.WP

Gestión de periféricos

DISCKIT3 es un programa completo para inicializar, copiar y comprobar discos. Es más rápido inicializar mientras se copia que inicializar primero y luego copiar. El programa ofrece menús que indican qué tecla (normalmente del teclado numérico) se debe pulsar para realizar cada función. El formato "comercial" (vendor) es un tipo especial de formato de sistema diseñado para la distribución comercial de programas. No obstante, los discos con formato "de datos" pueden ser más adecuados para ese fin.

AVISO
El acuerdo de licencia para su CP/M (que está codificado electrónicamente con un número de serie) permite su utilización en un solo ordenador. Esto significa, en particular, que está prohibido dar a otras personas una copia de su disco (la cual sería identificable por el número de serie). Puesto que todas las copias de la cara 1 llevan grabado su CP/M (en el fichero .EMS), tenga buen cuidado de no vender, intercambiar o de ninguna otra forma de enajenar discos con ese fichero en ellos.

LANGUAGE

EI CPC6128 tiene un juego de caracteres internacionales bastante completo. La orden LANGUAGE intercambia determinados grupos de caracteres para que los programas de aplicación puedan visualizar caracteres especiales y acentuados. En la parte 17 del capítulo titulado Para su referencia daremos más amplia información sobre este tema.

La orden

LANGUAGE 3

adapta el ordenador para que escriba el juego de caracteres británico, cuya diferencia con el estándar (EE.UU.) está en el intercambio de los signos £ y #.

Colores

Los colores iniciales de CP/M Plus en el 6128 (con monitor de color) son el blanco intenso para los caracteres y el azul para el fondo. Pero estos colores se pueden modificar con la orden PALETTE, la cual va seguida de varios parámetros, uno para cada tinta. La tinta 0 es la del borde y el fondo; la tinta 1 es la de los caracteres. Cada color está descrito por un número (margen de 0 a 63) que caracteriza al mismo tiempo la intensidad perceptible en un monitor monocromático.

Se puede especificar desde una hasta 16 tintas, pero sólo las dos primeras serán visibles en la pantalla de 80 columnas.

La orden

PALETTE 63,1

invierte la situación normal de las tintas 0 y 1, pues da caracteres azules (1) sobre fondo blanco intenso (63).

Utilice la tabla siguiente para elegir los colores (o las intensidades) que desee. Los números se pueden especificar en decimal o en hexadecimal.

ColorHexDecColorHexDec
Negro&000Azul pastel&2B43
Azul&022Naranja&2C44
Azul intenso&033Rosa&2E46
Rojo&088Magenta pastel&2F47
Magenta&0A10Verde intenso&3048
Malva&0B11Verde mar&3250
Rojo intenso&0C12Cyan intenso&3351
Morado&0E14Verde lima&3856
Magenta intenso&0F15Verde pastel&3A58
Verde&2032Cyan pastel&3B59
Cyan&2234Amarillo intenso&3C60
Azul celeste&2335Amarillo pastel&3E62
Amarillo&2840Blanco intenso&3F63
Blanco&2A42

El teclado

Los códigos generados por el teclado pueden ser modificados mediante la orden SETKEYS. Esta orden permite asignar los valores deseados a las teclas o a los códigos expansibles. La lista de códigos debe encontrarse en un fichero, cuyo nombre se incluye luego como parámetro de SETKEYS. El fichero puede haber sido creado con ED, con PIP o incluso desde BASIC. Por ejemplo, una orden típica es

SETKEYS KEYS.TST

donde el fichero KEYS.TST contiene

E &8C "DIR ^M" código expansible número 12
8 N S C "^H" retroceso del cursor=[CONTROL]H, ASCII 08

El carácter ^ se debe sustituir por ↑.

que primero redefine el código expansible generado por [CONTROL] [INTRO] (representado por &8C) para asignarle la cadena DIR[RETURN], y luego la tecla de "cursor a la izquierda" ([←], tecla número 8) para que genere un retroceso del cursor.

Los ficheros KEYS estándar suministrados con el ordenador 6128 son: KEYS.CCP para la edición de órdenes de CP/M, KEYS.DRL para utilizar con Dr. LOGO (cara 3) y KEYS.WP, adecuado para muchos procesadores de texto.

Impresoras

La inicialización de impresoras se puede realizar con la orden

SETLST <nombrefichero>

donde <nombrefichero> contiene la cadena de códigos que se debe enviar a la impresora. Al igual que en los ficheros de SETKEYS, los códigos de control se pueden representar por:

^<carácter>

o por

^'<valor del carácter>'

o bien por

^'<nombre del código de control>'

El carácter ^ se debe sustituir por ↑.

donde los <nombres del código de control> son ESC, FF, etc., o sea, los que se muestran en la tabla de caracteres ASCII del capítulo titulado Para su referencia.

Un código de inicialización de impresoras muy frecuente es el 15 (decimal), que establece el modo de escritura estrechada.

En BASIC la orden sería

PRINT #8,CHR$(15)

En CP/M,

SETLST ESTRECHA

donde el fichero ESTRECHA debe contener cualquiera de las siguientes líneas:

  • ↑'SI'
  • ↑O
  • ↑'&F'
  • ↑'15'

todas las cuales representan el código 15 (decimal).

Algunos programas de aplicación trabajan con la pantalla de 24x80. La orden

SET24x80

o bien

SET24X80 ON

selecciona el modo 24x80. La orden

SET24X80 OFF

lo anula.

La pantalla normal en el 6128 es 24x80, con la última línea reservada para los mensajes de estado. La desactivación del modo 24X80 sólo será apreciable si también se desactiva la línea de estado. En la parte 16 del capítulo 7 se explica cómo activar y desactivar la línea de estado.

Interfaz serie

CP/M puede controlar un interfaz serie monocanal de entrada/salida (RS232). Sus características fundamentales se pueden consultar ejecutando la orden SETSIO sin parámetros:

SETSIO

Se las puede modificar con esta misma orden incluyendo los siguientes parámetros (o algunos de ellos):

SETSIO, RX 1200, TX 75, PARITY NONE, STOP 1, BITS 8, HANDSHAKE ON, XOFF OFF

con lo que quedaría establecida una nueva configuración. Las características de velocidad de transmisión (RX) y de estado XON/XOFF pueden resultar afectadas por una de las acciones posibles de la orden DEVICE. Esta orden controla los dispositivos lógicos y físicos. Los dispositivos lógicos llevan como sufijo el signo de dos puntos (:). Para examinar los atributos actuales de los dispositivos se ejecuta la orden

DEVICE

Los atributos se pueden modificar con órdenes tales como las siguientes:

OrdenAcción
DEVICE SIO[1200]Establece la velocidad de 1200 bits por segundo para el interfaz serie
DEVICE SIO[XON]Activa el protocolo XON/XOFF
DEVICE SIO[NOXON]Desactiva el protocolo XON/XOFF

La correspondencia entre dispositivos lógicos y físicos también es modificable. Normalmente CON: es CRT (la consola, o sea, el teclado y la pantalla), AUX: es SIO (el interfaz serie opcional) y LST es LPT (el interfaz paralelo Centronics). La orden

DEVICE LST:=SIO

enviará al interfaz serie (si está conectado) la salida que normalmente iría a la impresora.

Observe que esto es una reasignación de canales, que no se debe confundir con las funciones de copia de ficheros realizadas por PIP. Las órdenes GET <nombrefichero> y PUT \nombrefichero> redirigen las entradas y salidas de la consola y la salida hacia la impresora para hacerles utilizar ficheros en lugar de controladores de dispositivo.

PIP

El programa de ayuda PIP (Peripheral Interchange Program, "programa de intercambio entre periféricos") realiza el intercambio de información entre el ordenador y sus periféricos.

La forma general de la orden es

PIP <destino>=<fuente>

La <fuente> y el <destino> pueden ser, o bien un dispositivo lógico, o bien nombres de ficheros; en este último caso se permiten símbolos comodín en la <fuente>. Los dispositivos lógicos utilizables son los siguientes:

DispositivoComo fuenteDispositivoComo destino
CON:Entrada por consolaCON:Salida por consola
AUX:Entrada auxiliarAUX:Salida auxiliar
EOF:Indicador de fin de ficheroLST:Impresora
PRN:Impresora con gestión de tabuladores, números de línea y salto entre páginas

Ejemplos de utilización de PIP:

PIP B:=A:*.COM

copia todos los ficheros *.COM de la unidad A: a la B:.

PIP TECLADO.CPM=KEYS.CCP

hace una copia del fichero KEYS.CCP y le da el nombre de TECLADO.CPM.

PIP CON:=KEYS.CCP

envía el fichero KEYS.CCP a la pantalla (efecto similar al de TYPE KEYS.CCP).

PIP LST:=KEYS.CCP

envía el fichero KEYS.CCP a la impresora.

PIP ENTRADA.TXT=CON:

capta caracteres por el teclado y los envía a un fichero llamado ENTRADA.TXT.

Observe que, en este último ejemplo, el proceso se concluye con el código de control [CONTROL] Z y que para pasar a la línea siguiente hay que pulsar siempre [CONTROL] J después de [RETURN]. [CONTROL] J es el código ASCII del avance de línea.

Cuando se escribe PIP sin parámetros, emite el mensaje inductor *, a continuación del cual se puede introducir las órdenes deseadas. Esta forma de funcionamiento es muy útil en el trabajo de copia de ficheros cuando no se tiene grabado el fichero PIP.COM en el disco fuente ni en el disco destino. El procedimiento consiste, pues, en cargar PIP con la cara 1 del juego de discos del sistema, extraer este disco y luego insertar los que hayan de intervenir en el proceso de copia.

Para abandonar PIP basta con pulsar [RETURN] en respuesta al mensaje inductor *.

Observe que PIP también puede copiar ficheros de un disco a otro en sistemas de una sola unidad; el programa avisa cuándo se debe cambiar el disco. Los indicadores de unidad de los ficheros fuente y destino deben ser diferentes.

Gestión del sistema

DIR, ERASE, RENAME y TYPE existen también como programas transitorios; en esta versión son más potentes que las correspondientes órdenes intrínsecas al sistema. Al igual que ocurre con otros programas transitorios suministrados por Digital Research, los parámetros secundarios se especifican entre corchetes. En los ficheros HELP de la cara 3 se da una explicación más completa. Veamos algunos ejemplos:

DIR [FULL]

muestra todos los nombres de los ficheros, con sus tamaños y atributos.

ERASE *.COM [CONFIRM]

pide confirmación individual para cada fichero que encuentra, antes de borrarlo.

RENAME

pregunta los nombres antiguo y nuevo del fichero.

RENAME *.SAV=*.BAK

cambia todos los distintivos de tipo de .BAK a .SAV.

TYPE KEYS.WP [NOPAGE]

inhibe la paginación en la pantalla.

Ya hemos mencionado antes los atributos de SYS (sistema) y RO (sólo lectura). Estos y muchos atributos pueden ser asignados mediante la orden SET, la cual acepta símbolos comodín.

Las órdenes

SET *.COM [RO]
SET KEYS.CCP [RO]
SET A: [RO]

asignan a los ficheros o a una unidad de disco el atributo RO (para prevenir el borrado accidental).

Las órdenes

SET *.COM [RW]
SET KEYS.CCP [RW]
SET A: [RW]

devuelven a los ficheros o a la unidad de disco el atributo de "lectura/escritura".

Las órdenes

SET *.COM [SYS]
SET KEYS.CCP [SYS]

dan a los ficheros el atributo de "sistema". Los ficheros que tienen este atributo no aparecen en los listados generados por DIR (pero sí en los de DIRS y DIRSYS). No obstante, esos ficheros están disponibles a todos los demás efectos; e incluso, si están en el área de usuario número 0, están disponibles para todos los números de área de usuario.

Las órdenes

SET *.COM [DIR]
SET KEYS.CCP [DIR]

anulan el atributo de "sistema".

A cada disco se le puede asignar una etiqueta o nombre (NAME) y también una clave (PASSWORD). La clave protege el directorio, no los ficheros. También se puede asignar claves a ficheros individuales. Las órdenes

SET [NAME=JAVIER]
SET [PASSWORD=SESAMO]
SET [PROTECT=ON]

actúan sobre el disco que está en la unidad implícita.

Las órdenes

SET *.*[PASSWORD=SESAMO]
SET *.*[PROTECT=READ]

actúan sobre ficheros de ese disco (*.* significa "todos los ficheros").

La estampación de fecha y hora se puede activar con INITDIR (cara 2 del juego de discos del sistema). Las órdenes

INITDIR
SET [CREATE=ON] ... o ... SET [ACCESS=ON] ... y ...
SET [UPDATE=ON] ... junto con ...
DIR [FULL]

inician y visualizan la estampación de fecha y hora del disco de la unidad implícita. La orden

DATE SET

será necesaria cada vez que se cargue CP/M Plus para comunicarle la fecha y la hora. Una vez puesto en hora, el reloj la actualiza con precisión razonable. Para consultarla se utiliza la orden

DATE ... y ...
DATE CONTINUOUS
ADVERTENCIA
Cuando a un disco se le asigna nombre o clave, o se le estampa fecha y hora, en ese disco ya no debe escribir ni AMSDOS ni CP/M 2.2, pues estos sistemas no están dotados de tales funciones.

Normalmente el sistema sólo accede a los ficheros del disco que está en la unidad implícita, salvo que se especifique otra unidad. Sin embargo, la orden

SETDEF *,A:

(donde * representa la unidad implícita) instruye a CP/M para que en lo sucesivo, cuando esté buscando ficheros, lo haga primero en la unidad implícita y luego en la A:. Dicho de otra forma, si la unidad implícita es la B:, el fichero será encontrado si está en alguna de las dos unidades.

Las órdenes

SETDEF [PAGE]   ... y ...
SETDEF [NOPAGE]

activan y desactivan la paginación en la pantalla (esto es, la pausa que el sistema hace automáticamente, en espera de que el usuario pulse una tecla, cuando la información emitida por la consola llena la pantalla).

Recuerde que la mayor parte de las funciones realizadas por DEVICES, SET y SETDEF, en particular cuando afectan a las unidades de disco (en lugar de a ficheros o discos concretos), han de ser inicializadas, junto con la fecha, cada vez que se carga CP/M Plus. Esta tarea se presta perfectamente a ser programada en un fichero PROFILE.SUB adecuado.

SUBMIT ejecuta grupos de órdenes individuales automáticamente. Las órdenes tienen que estar en un fichero de texto cuyo distintivo de tipo sea .SUB. Cada línea representa una orden; una línea puede ser la entrada a un programa si empieza con el signo <.

Con las diferentes versiones de SHOW se puede obtener información sobre el tamaño de un disco, el espacio libre, el número de reseñas libres en el directorio, ficheros que hay en las distintas áreas de usuario, el nombre del disco, las características de la unidad, etc.:

SHOW B:
SHOW B:[LABEL]
SHOW B:[USERS]
SHOW B:[DIR]
SHOW B:[DRIVE]

Salida de CP/M

La orden

AMSDOS

retira el control de CP/M y lo cede al BASIC de AMSTRAD, a través del cual se accede a las órdenes del sistema operativo de disco AMSDOS.

Programación avanzada

La cara 2 del juego de discos del sistema contiene diversos programas que han sido diseñados para ayudar a los programadores más expertos. Le sugerimos que consulte la publicación "A Guide to CP/M Plus", SOFT 971, o alguna otra obra de referencia.

CP/M 2.2

El objetivo de esta sección es poner de manifiesto las diferencias que hay entre CP/M Plus y CP/M 2.2.

CP/M 2.2 se carga con las dos primeras pistas de un disco de sistema. El sector de auto carga es diferente del que se utiliza para cargar CP/M Plus; es necesario no confundirlos. Aunque es posible utilizar discos con formato "comercial", "IBM" y "de datos" en cualquier unidad de disco, es habitual limitar su uso a la segunda unidad.

A menos que el programa tome medidas al efecto (tal como hace FILECOPY, por ejemplo), CP/M 2.2 no permite escribir en un disco que no haya sido "reconocido" previamente. Por otra parte, CP/M 2.2 sólo comprueba el tipo de formato que tiene el disco (sistema, datos o IBM) cuando lo reconoce. En el caso de la unidad de disco incorporada (unidad A) esto ocurre cada vez que vuelve al modo directo de consola o cuando se teclea [CONTROL]C en respuesta a los mensajes inductores A> o B>. En el caso de la unidad externa (unidad B), CP/M 2.2 reconoce el disco la primera vez que accede a él, después de reconocer el instalado en la unidad A.

Si se intenta escribir en un disco que no ha sido reconocido, se provoca el error

Bdos Err on <unidad>: R/O

Pulse una tecla cualquiera para continuar. Si además el nuevo disco es de formato distinto, se producirá un error de lectura o de escritura. Pulse C para continuar.

Si usted adquiere programas grabados en un disco con formato "comercial", puede, o bien copiarlo a un disco de sistema (de CP/M 2.2) mediante FILECOPY o PIP, o bien convertir el disco en un disco de sistema añadiéndole las pistas de su propio CP/M 2.2, para lo cual sirven los programas BOOTGEN y SYSGEN. Lea atentamente el Acuerdo de Licencia para el Usuario Final (apéndice 1 de este manual).

SYSGEN (sin parámetros) es un programa copiador especial que solicita los discos fuente y destino y copia las pistas del sistema CP/M 2.2 del uno al otro. BOOTGEN copia la pista 0 del sector 1 (el cargador) y el sector de configuración de un disco a otro.

La orden DIR no acepta parámetros (aparte del indicativo de la unidad). Los nombres de los ficheros no son ordenados según ningún criterio, sino que aparecen en la pantalla en el mismo orden en que figuran sus reseñas en el directorio.

STAT proporciona algunas de las funciones de SET y SHOW. Las órdenes

STAT
STAT A:
STAT B:

muestran el estado del disco y el espacio libre. Las órdenes

STAT *.COM
STAT DISC.BAS

dan información más amplia acerca de ficheros concretos.

Las órdenes

STAT *.COM $R/O
STAT DISC.BAS $R/O

asignan al fichero especificado el atributo de "sólo lectura", de forma que no queda ser borrado accidentalmente.

Las órdenes

STAT *.COM $R/W
STAT DISC.BAS $R/W

anulan el atributo de "sólo lectura" y activan el de "lectura/escritura".

Las órdenes

STAT *.COM $SYS
STAT SECRETO.BAS $SYS

asignan al fichero el atributo de "fichero de sistema" para hacerlo invisible a las operaciones de listado del directorio y de copia. El fichero seguirá disponible para todo lo demás.

Las órdenes

STAT *.COM $DIR
STAT SECRETO.BAS $DIR

asignan al fichero el atributo de "directorio", anulando el de "sistema".

El programa de ayuda FILECOPY permite copiar ficheros de un disco a otro en sistemas de una sola unidad de disco. Informa al usuario de cuándo debe intercambiar los discos y le da instrucciones completas a través de la pantalla. Si se incluyen símbolos comodín en los nombres de los ficheros, FILECOPY pide confirmación de que efectivamente se desea copiar cada uno de los ficheros encontrados. El programa escribe los nombres de los ficheros a medida que los va copiando. Ejemplos:

FILECOPY *.COM

copia todos los ficheros del tipo .COM.

FILECOPY PIP.COM

copia el fichero PIP.COM.

DISCKIT2 realiza las mismas funciones que DISCKIT3, pero es algo más lento en la copia de discos ya que dispone de menos espacio de memoria.

Hay dos programas de ayuda que realizan la transferencia entre disco y cinta. Salvo para el usuario especialista, lo normal es que sólo tenga interés transferir ficheros de texto (ASCII).

CLOAD puede llevar dos parámetros. El primero es el nombre del fichero origen (cinta), entre comillas; el segundo es el nombre del fichero destino (disco). Si se omite el segundo parámetro, el fichero destino tendrá el mismo nombre que el fichero origen; en tal caso el nombre tendrá que ajustarse a las normas de CP/M. Si se omite el nombre del fichero origen, CLOAD lee el primero que encuentra en la cinta. Si el primer carácter del nombre es el signo de admiración (!), se suprimen los mensajes habituales del sistema de cinta.

CLOAD "MI CARTA" MICARTA.TEXT

CSAVE puede llevar tres parámetros. El primero es el nombre del fichero origen (disco); el segundo es el nombre del fichero destino (cinta), entre comillas. Si se omite el segundo parámetro, el fichero se grabará en la cinta con el mismo nombre que tiene en el disco. Si el primer carácter del nombre del fichero destino es el signo de admiración (!), se suprimen los mensajes habituales del sistema de cinta. Si se especifican ambos nombres, se puede incluir un tercer parámetro para indicar la velocidad de transferencia de datos a la cinta: 0 para 1000 bits por segundo o 1 para 2000 bits por segundo.

Ejemplos:

CSAVE TEXTSAL.TXT "TEXTO SALIDA" 1
CSAVE FICHEDAT

SETUP

Este programa permite redefinir las características del teclado del CPC6128, del sistema de disco y del interfaz serie. También permite realizar diversas acciones cuando se carga CP/M 2.2. A diferencia de otros programas de ayuda, que realizan sus funciones cuando se los ejecuta, SETUP modifica el sector de configuración del disco (el cual sólo es invocado en los arranques en frío). En este aspecto, SETUP ejerce una acción similar a la de PROFILE.SUB de CP/M Plus.

El programa es controlado por menú; cuando una pantalla es correcta o no requiere modificación, se pasa a la siguiente respondiendo Y a la pregunta:

Is this correct (Y/N):_

("¿Es esto correcto?") Se puede interrumpir el programa pulsando [CONTROL]C. Una vez completos los cambios, el programa pregunta:

Do you want to update your system disc (Y/N):_

("¿Quiere actualizar el disco de sistema?") Esto da la oportunidad de conservar el sector de configuración existente pulsando N. También pregunta:

Do you want to restart CP/M (Y/N):_

lo que permite cargar y probar la nueva configuración pulsando Y.

Para copiar el sector de configuración en otro disco hay dos procedimientos: uno consiste en ejecutar BOOTGEN (véase más abajo); el otro, en cargar SETUP con el disco origen, responder con Y a todas las preguntas e insertar el disco destino antes de responder a la penúltima:

Do you want to update your system disc (Y/N):_

Los caracteres de código ASCII inferior a 32 (decimal) se pueden introducir en las cadenas literales tecleando el signo ↑ antes del carácter correspondiente, tomado del conjunto @, A-Z, [, \, ], >, _.

Las dos opciones siguientes son las que normalmente requieren mayor atención:

** Initial command buffer:

("Tampón de órdenes iniciales"). Los caracteres introducidos tendrán el mismo efecto que si se los teclease en modo directo de consola inmediatamente después de cargar CP/M, es decir, ejecutan automáticamente un programa en ese momento. No olvide incluir el equivalente a [RETURN], que se representa con los caracteres ↑M.

DIR^M

El carácter ^ se debe sustituir por ↑.

Para cargar Dr. LOGO,

SUBMIT LOGO2^M

El carácter ^ se debe sustituir por ↑.

El mensaje

Sign-on string:

es el que aparece en la parte superior de la pantalla cuando se carga CP/M 2.2. Observe los caracteres ↑J↑M, que producen el retorno del carro y el avance de línea. La primera parte del mensaje estándar establece los colores de la pantalla y el borde para trabajar con 80 columnas; cópielos literalmente si desea conservar estas características.

Keyboard translations:

("Adaptación del teclado"). Permite asignar nuevos valores ASCII a las teclas, simulando así el efecto de la orden KEY DEF de BASIC. Los parámetros requeridos son los números de las teclas y los valores ASCII asignados. Los números de las teclas están ilustrados en el diagrama que hay grabado a la derecha del teclado, y también en la parte 5 del capítulo Para su referencia.

Keyboard expansions

("Programación de teclas"). Simula el efecto de la orden KEY de BASIC.

Para terminar

Los programas DISCKIT2, SYSGEN, BOOTGEN, FILECOPY, SETUP, CSAVE y CLOAD han sido diseñados por Amstrad y funcionan solamente con CP/M 2.2 en el sistema Amstrad. Son incompatibles con otras versiones de CP/M, aunque los demás fabricantes suelen ofrecer programas similares (a menudo con los mismos nombres) escritos para sus máquinas.

En la cara 4 se incluyen varios programas de CP/M 2.2 destinados a los usuarios más expertos. Le sugerimos que consulte la publicación "A Guide to CP/M", SOFT159, u otras obras de referencia. Los programas son los siguientes:

ProgramaDescripción
AMSEnsamblador para 8080.
DDTPrograma de ayuda para la depuración de programas escritos en ensamblador 8080.
DUMPPrograma para el volcado de ficheros en hexadecimal.
EDEditor sencillo de texto.
LOADPara convertir un fichero .HEX generado por ASM en un fichero .COM.
MOVCPMPara cargar CP/M 2.2 en una posición de memoria más baja que la estándar (para reducir el tamaño del TPA).
SUBMITProcesador por lotes en modo de consola.
XSUBProcesador por lotes para programas transitorios.

Estos programas están grabados en la cara 4 y sólo pueden ser utilizados con CP/M 2.2. Evite confundirlos con otros programas de CP/M Plus (caras 1, 2 y 3).