Articulo de referencia

Commodore DOS

Commodore DOS , también conocido como CBM DOS , es el sistema operativo de disco utilizado en los ordenadores de 8 bits de Commodore . A diferencia de la mayoría de los demás si...

Commodore DOS , también conocido como CBM DOS , es el sistema operativo de disco utilizado en los ordenadores de 8 bits de Commodore . A diferencia de la mayoría de los demás sistemas DOS , que se cargan desde el disco a la memoria RAM del ordenador y se ejecutan allí, CBM DOS se ejecuta internamente en la unidad: el sistema DOS reside en chips ROM dentro de la unidad y es ejecutado allí por una o más CPU dedicadas de la familia MOS 6502. Por lo tanto, la transferencia de datos entre los ordenadores Commodore de 8 bits y sus unidades de disco se asemeja más a una conexión de red local que a las transferencias típicas entre disco y host.

Versiones CBM para DOS

Se sabe que existen al menos siete versiones numeradas distintas de Commodore DOS; la siguiente lista muestra los números de versión y las unidades de disco relacionadas. A menos que se indique lo contrario, las unidades son de formato de 5¼ pulgadas. El código "lp" designa unidades de "perfil bajo". Las unidades cuyo número de modelo comienza con 15 se conectan a través de los protocolos seriales (TALK/LISTEN) del bus IEEE-488 (IEC Bus) exclusivos de Commodore; todas las demás utilizan el bus IEEE-488 paralelo .

  • 1.0 se encuentra en las unidades de disquete 2040 y 3040
  • 2.0 se encuentra en las unidades de disquete 4040 y 3040
  • 2.5 se encuentra en las unidades de disquete 8050
  • 2.6 se encuentra en las unidades de disquete 1540 , 1541 , incluyendo la integrada en el SX-64 , 1551 , 2031 (+"lp") y 4031 .
  • 2.7 se encuentra en las unidades de disquete 8050 , 8250 (+"lp") y SFD-1001.
  • 3.0 presente en las unidades de disquete 1570 , 1571 externa y 8280 (8280: 8 pulgadas), así como en los discos duros 9060 y 9090.
  • 3.1 se encuentra en la unidad 1571 integrada de los ordenadores C128DCR
  • 10.0 se encuentra en la unidad de disquete 1581 ( 3 + 1/2 pulgadas )

La versión 2.6 fue, con diferencia, la versión de DOS más utilizada y conocida, debido a su uso en el 1541 como parte de los sistemas C64 .

Nota: La versión revisada del firmware para el modelo 1571, que solucionó el error de archivos relativos, también se identificó como V3.0. Por lo tanto, no es posible diferenciar ambas versiones utilizando únicamente el número de versión.

Descripción general técnica

1541 tipos de directorios y archivos

El disquete Commodore 1541 puede contener hasta 144 archivos en un espacio de nombres plano (sin subdirectorios ); el directorio se almacena en la pista reservada 18, que se encuentra a medio camino entre el centro y el borde de un disco de una sola cara de 35 pistas. Un nombre de archivo puede tener hasta 16 bytes de longitud y es teóricamente único; mediante métodos de acceso directo a la estructura de directorios, es posible renombrar un archivo con el nombre de otro , aunque acceder a dichos archivos puede ser difícil o imposible. Los archivos con nombres idénticos generalmente no tienen otra función que informar o gestionar visualmente los archivos. Un truco popular, utilizado, por ejemplo, por The Final Cartridge III , consistía en añadir archivos con nombres "----------------"de tipo al directorio, y luego los archivos podían reorganizarse alrededor de esas líneas para formar grupos. Muchos desarrolladores de juegos, miembros de grupos de warez y hackers de la demoscene también utilizaron entradas de directorio personalizadas más ingeniosas.DEL<

Los nombres de archivo pueden contener un carácter de espacio desplazado ( $A0), y si el listado del directorio se visualiza desde BASIC, la parte del nombre del archivo que sigue al $A0carácter aparecerá separada de la primera parte del nombre del archivo por una comilla, lo que hace que BASIC no la considere parte del nombre completo del archivo. Esta característica se puede utilizar para crear entradas de directorio como , que luego aparecerán en el listado del directorio como, por ejemplo,SAVE "PROGRAM⇧ Shiftspace CommodoreDUDE",8,132 "PROGRAMA",8,1 PRG[ 1 ] Cuando el usuario mueve el cursor al principio de la línea, escribe la palabra sobre el tamaño delLOAD archivo y presiona , BASIC lo interpreta como , lo que provoca que el programa se cargue en la memoria. Todo lo que esté después de los dos puntos o la dirección secundaria no se ejecutará, ya que la computadora ignora cualquier comando después de LOAD. [ 2 ] Alternativamente, el usuario podría presionar para y el programa automáticamente. [ 3 ]RETURNLOAD"PROGRAM",8,1...⇧ ShiftRUN/STOPLOADRUN

Un byte nulo incrustado en el nombre de un archivo interrumpirá la visualización del código después de cargarlo en BASIC. Si hay tres bytes nulos, resulta difícil visualizar el código en BASIC. Muchos programadores de lenguaje máquina experimentaban con bytes nulos para dificultar el acceso y la manipulación del código por parte de los programadores de BASIC.

En BASIC, se puede acceder al directorio como un programa pseudo-BASIC no ejecutable con (o en el caso de una unidad doble) seguido de . La primera línea tiene un número de línea de 0 o 1 (que indica el número de la unidad), mostrando en vídeo inverso el nombre y la ID del disco y un código abreviado para la versión de DOS con la que se creó (los códigos varían solo en la medida en que las versiones de DOS usan formatos de disco incompatibles: "2A" es utilizado por la mayoría de las versiones de DOS de 5,25 pulgadas, "3D" por la 1581 de 3,5 pulgadas). Las líneas posteriores tienen el tamaño de un archivo (en bloques de disco) como su pseudo "número de línea", seguido del nombre del archivo entre comillas y el código de tipo de tres letras. La última línea muestra el número de bloques no asignados en el disco (de nuevo como un pseudo "número de línea"), seguido de las palabras "BLOCKS FREE".LOAD"$0",8LOAD"$1",8LIST

En la Commodore 64 , al introducir la tecla Enter se llenará la pantalla de caracteres basura en lugar de cargar el directorio en la RAM de BASIC. Esto se debe a que la unidad asigna al directorio una dirección de carga de $ 0401 (1025), que es equivalente al inicio de BASIC para la Commodore PET , pero corresponde a la memoria de pantalla predeterminada en la C64 (que comienza con el segundo carácter de la primera línea de la pantalla).LOAD"$",8,1

Al visualizar el directorio con un comando, se sobrescribe el programa BASIC en la memoria. El DOS Wedge y varios cartuchos y extensores de terceros, como Epyx Fast Load , Action Replay y The Final Cartridge III, permiten visualizar el directorio del disco mediante comandos especiales que cargan el directorio en la memoria de pantalla sin interrumpir el programa BASIC actual. Algunas versiones de Commodore BASIC incluyen un comando que realiza la misma función.LOAD"$",8DIRECTORYCATALOG

Se admiten los siguientes tipos de archivo:

SEQ
Un archivo secuencial es un archivo de datos que se puede leer linealmente de principio a fin. SEQEstos archivos se utilizan comúnmente para almacenar documentos o archivos de texto creados por un procesador de texto u otro editor similar. Un archivo secuencial es análogo a un archivo plano en Linux o UNIX , ya que no posee una estructura interna especializada. No es posible posicionarse en cualquier ubicación arbitraria dentro de un archivo secuencial, puesto que no existe un equivalente a la lseekllamada al kernel que se encuentra en los sistemas operativos tipo UNIX .
PRG
PRGLos archivos normalmente contienen código de programa ejecutable, aunque también pueden usarse para archivos de datos. Los dos primeros bytes PRGson leídos por la rutina del kernel "load file" y se utilizan para determinar la dirección de carga (se almacenan en formato little-endian ).
REL
Un archivo relativo es una variante del tipo de archivo secuencial, que incorpora un mecanismo de indexación denominado sectores laterales para permitir el acceso orientado a registros. Los registros pueden tener un tamaño máximo de 254 bytes y se direccionan mediante un número cardinal basado en uno, lo que permite un acceso verdaderamente aleatorio a cualquier parte del archivo.
USR
Un archivo especificado por el usuario tiene una estructura interna idéntica a la de un archivo secuencial. El propósito original de Commodore para este tipo de archivo era facilitar el desarrollo de DOS, ya que el contenido del archivo podía copiarse en un búfer de la unidad para su ejecución por el microprocesador de la unidad. Muy pocos programas llegaron a utilizar este tipo de archivo. Algunas aplicaciones que utilizan estructuras de disco de bajo nivel no estándar guardan datos en formato USR, lo que llegó a considerarse una especie de indicación de "déjame en paz, no intentes copiar ni borrar" para el usuario. En particular, los archivos "VLIR" de GEOS aparecen como USRarchivos.
DEL
Un tipo de archivo interno no documentado, con una estructura similar a la de un archivo secuencial. La creación de este tipo de archivo debe realizarse mediante la manipulación directa del directorio del disco.

La presencia de un asterisco ( **) antepuesto al tipo de archivo en una lista de directorio (por ejemplo, *SEQ) indica que el archivo no se cerró correctamente después de la escritura. Cuando se ordena a la unidad que cierre un archivo que se ha abierto para escritura, el búfer asociado se vacía en el disco y el mapa de disponibilidad de bloques (BAM) se actualiza para reflejar con precisión qué bloques se han utilizado. Si un fallo del programa u otro problema (como que el usuario extraiga el disco mientras un archivo está abierto) da como resultado un "archivo huérfano", también conocido como archivo "veneno" o "splat", los búferes no se vacían y el BAM no reflejará con precisión el uso del disco, lo que pone al disco en riesgo de corrupción. Un archivo venenoso generalmente no se puede acceder (pero se puede abrir en modo "modificar"), y un intento de usar el scratchcomando de DOS para eliminar el archivo puede causar corrupción del sistema de archivos , como enlaces cruzados. El único método práctico para eliminar uno de estos archivos es abrirlo en modo "modificar" (y corregirlo), o validar el disco (véase el validatecomando de DOS a continuación). Este último método reconstruye el archivo BAM y elimina las referencias a archivos maliciosos del directorio. El conocido error de guardar con reemplazo podría generar archivos de splat.

*DELes un tipo especial que se escribe en la entrada del directorio en disco de los archivos que se han eliminado. Estos archivos no se muestran en una lista de directorio normal, y sus bloques de datos y entradas de directorio se reutilizarán en archivos que se creen posteriormente. Algunos programas de utilidad permiten "recuperar" estos archivos si sus bloques de datos y entradas de directorio aún no han sido sobrescritos por otros archivos. DEL filesse utilizan comúnmente para insertar banners o secciones de comentarios en una lista de directorio.

Los tipos de archivo que <tienen después (por ejemplo, ) están "bloqueados" y no se pueden eliminar ; sin embargo, se pueden abrir para lectura. No existe ningún comando de Commodore DOS que permita establecer o borrar explícitamente este estado, pero se han escrito muchas utilidades de terceros para permitirlo. Estas utilidades generalmente leen el directorio mediante comandos de acceso directo, realizan las modificaciones necesarias en los datos sin procesar y luego escriben los cambios en el disco.PRG<

Acceso a archivos

El acceso a archivos es principalmente responsabilidad del ordenador anfitrión. La ROM del kernel contiene las rutinas básicas necesarias para acceder a los archivos, mientras que la ROM de BASIC ofrece una abstracción de nivel superior para el acceso a archivos mediante la sintaxis de BASIC. Los componentes que conciernen al propio DOS son el análisis de nombres de archivo y la dirección secundaria. Esta sección ofrece una descripción general de los comandos de BASIC necesarios para mayor claridad.

Abrir un archivo en una unidad de disco Commodore implica el procesamiento de una serie de parámetros que son vagamente análogos a los procedimientos de apertura de archivos en otros entornos. Dado que el DOS se ejecuta en el controlador de la unidad, la secuencia de apertura de archivos debe transmitir suficiente información a la unidad para garantizar una interpretación inequívoca. Una instrucción típica en BASIC para escribir en un archivo secuencial sería la siguiente:

OPEN3,8,4,"0:ADDRESSBOOK,S,W"

Los parámetros que siguen al OPENverbo son los siguientes:

3
Este parámetro, el número de archivo , identifica lógicamente el archivo abierto dentro del sistema operativo del ordenador y es análogo a un descriptor de archivo en sistemas operativos tipo UNIX . Nunca se envía a la unidad y, por lo tanto, el sistema operativo de la unidad no lo conoce ni lo utiliza. El número de archivo puede estar en el rango de 1 a 254 (inclusive), lo asigna el programador y debe ser único si se abren varios archivos simultáneamente. Una vez abierto el archivo, todos los procedimientos de entrada y salida del programa utilizan el número de archivo. En los programas en lenguaje ensamblador , este valor se suele denominar LA (dirección lógica), abreviatura que proviene del mnemónico que indica la ubicación de memoria donde se almacena el número de archivo. Los números de archivo mayores que 127 hacen que el sistema escriba un salto de línea adicional después de cada retorno de carro (útil para, por ejemplo, dar doble espacio a un documento).
8
Este parámetro, el número de dispositivo , identifica un periférico específico conectado al ordenador. Los dispositivos del 0 al 3 corresponden al teclado, la unidad de casete, la interfaz RS-232 y la pantalla de vídeo, respectivamente, todos ellos controlados directamente por la ROM del kernel. Los dispositivos con números 4 o superiores corresponden a dispositivos conectados al bus de periféricos, como impresoras o unidades de disco. En el caso de una unidad de disco, el número de dispositivo se refiere al controlador de la unidad, no al mecanismo de accionamiento interno. Por convención, la primera unidad de disco de un sistema tiene el número de dispositivo 8, la segunda, si la hay, el 9, etc., hasta un máximo de 15 (cuando hay ocho unidades de disco conectadas). El esquema de numeración de dispositivos se derivó del bus IEEE-488 (o interfaz de propósito general GPIB ) utilizado en los modelos Commodore PET/CBM. En los programas en lenguaje ensamblador, este valor se suele denominar FA o PA (dirección física), también por el acrónimo de la ubicación de memoria donde se almacena el número de dispositivo.
4
Este parámetro, la dirección secundaria , que puede variar de 0 a 15 inclusive, se refiere a un canal de comunicación específico establecido con el controlador del dispositivo y se le pasa al dispositivo cuando se le ordena "hablar" o "escuchar" en el bus periférico. Al igual que con el número de archivo, la dirección secundaria la determina el programador y debe ser única para el dispositivo en cuestión. El rango de 0 a 14 inclusive se utiliza para pasar datos hacia o desde el dispositivo, mientras que 15, denominado "canal de comandos", se utiliza para emitir comandos al controlador del dispositivo (como cambiar el nombre de un archivo de disco), si el dispositivo puede admitir dicha operación. En las unidades de disco, las direcciones secundarias de 0 a 14 inclusive se asignan a búferes dentro del controlador, estableciendo así la comunicación con un archivo específico en un disco específico; dado que, como se mencionó anteriormente, la unidad no conoce el número de archivo , solo puede usar la dirección secundaria para diferenciar entre varios archivos que están abiertos al mismo tiempo. Por otro lado, el sistema operativo host es indiferente a la dirección secundaria; Se transmite a la unidad cada vez que se accede al archivo, pero el sistema no lo utiliza para ningún otro fin. En los programas en lenguaje ensamblador, este valor suele denominarse SA (dirección secundaria).
CADENA DE COMANDOS
En la documentación de Commodore, este "0:ADDRESSBOOK,S,W"parámetro se denomina oficialmente cadena de comandos y es interpretado por el controlador del dispositivo al que se accede. En el caso de una unidad de disco, la estructura formal de la cadena de comandos consta del número de mecanismo de la unidad ( 0:, que no debe confundirse con el número de dispositivo), el nombre del archivo ( ADDRESSBOOK), el tipo de archivo ( S, secuencial en este ejemplo) y el modo de acceso ( W, abierto para escritura en este ejemplo). En la práctica, algunos de estos parámetros pueden omitirse. Como mínimo, solo se requiere el nombre del archivo si este se va a abrir para lectura.
El número de unidad identifica un mecanismo de unidad conectado al controlador de una unidad de disco y es análogo a un número de unidad lógica en un controlador SCSI capaz de controlar múltiples mecanismos (por ejemplo, los controladores OMTI SASI desarrollados para funcionar con discos duros ST-412 / ST-506 en la década de 1980). En las unidades de disquete, el primer mecanismo es la unidad 0: y el segundo es la 1:. Es bastante común omitir el número de unidad al comunicarse con una unidad de disquete de una sola unidad, ya que 0: es el valor predeterminado en dichas unidades, pero dado que omitir el número puede provocar algunos errores poco comunes en DOS, no es una práctica recomendada (dos puntos por sí solos equivalen a 0: y son suficientes para evitar esos errores). Una excepción a esta convención se da en el subsistema de disco duro Lt. Kernal , en el que el número de unidad se refiere a "unidades lógicas" ( unidades virtuales creadas en una sola unidad física), lo que hacía necesaria una sintaxis como 4: o 10: si el archivo que se iba a abrir no estaba en la unidad lógica cero (equivalente al mecanismo de unidad cero en una unidad de disquete doble).

Los archivos también se pueden cargar y guardar con comandos LOADy SAVE. Aquí también se pueden usar especificadores de nombre de archivo, por ejemplo, guarda el programa BASIC en un archivo (program) y guarda el programa BASIC en un archivo secuencial. Si la dirección secundaria no se especifica o se especifica como 0 (por ejemplo ), el archivo se guarda/carga desde el área de memoria BASIC (que, en el C64, comienza por defecto en $ 0801). Si la dirección secundaria se especifica como un valor distinto de cero (por ejemplo ), el programa se carga comenzando desde la dirección especificada por el propio archivo (el encabezado PRG, que son los dos primeros bytes del archivo) esta forma de comando es más común cuando se cargan programas de código máquina.SAVE"FILE",8PRGSAVE"0:FILE,SEQ,WRITE",8,1LOAD"FILE",8LOAD"FILE",8,1

La reubicación de carga se introdujo por primera vez en el VIC-20 porque esta máquina podía iniciar la RAM de BASIC en varias ubicaciones diferentes, dependiendo de la expansión de memoria instalada. La serie anterior de Commodore PET no admitía la reubicación, por lo que tendría el mismo efecto: el archivo se cargaría en la misma región de memoria desde la que se guardó. La reubicación de carga se realiza en el host, siendo una excepción a lo dicho anteriormente sobre el uso interno de la dirección secundaria. Dado que el PET no puede reubicar archivos, los programas BASIC escritos en máquinas Commodore posteriores deben modificarse utilizando un editor de sectores para cambiar los bytes de la cabecera. También es posible utilizar el monitor de lenguaje máquina integrado del PET para cambiar la dirección de enlace del programa BASIC después de cargarlo.LOAD"FILE",8LOAD"FILE",8,1

El comando cargará el primer programa del disco desde la ubicación de memoria especificada por el archivo. Este es uno de los comandos de carga más populares de las plataformas, el método para iniciar la mayoría del software comercial, por ejemplo. Cabe destacar que la expansión con comodines solo seleccionará el primer nombre de catálogo cuando no se haya accedido a ningún otro archivo en ese disco; el nombre del último archivo utilizado se guarda en memoria, y los comandos posteriores cargarán ese archivo en lugar del primero. (Sin embargo, siempre se cargará el primer archivo del disco).LOAD"*",8,1LOAD"*",8,1LOAD"0:*",8,1LOAD":*",8,1

Los directorios de discos en unidades de dos unidades se acceden como y . y no acceden al directorio, sino a archivos reales en una unidad u otra que casualmente se llaman . Se pueden cargar directorios parciales agregando dos puntos y una plantilla: por ejemplo, cargaría un directorio parcial que muestra solo los archivos cuyo nombre comienza con la letra K y que son de tipo PRG; todos esos directorios parciales aún contienen la línea del nombre del disco inicial y la línea final "BLOCKS FREE".LOAD"$0",8LOAD"$1",8"0:$""1:$""$"LOAD"$0:K*=P",8

El error de guardar con reemplazo

Commodore DOS también ofrece un comando "Guardar con reemplazo", que permite guardar un archivo sobre un archivo existente sin necesidad de sobrescribir primero SCRATCHel archivo existente. Esto se hacía anteponiendo un @símbolo al nombre del archivo durante la operación OPENor , por ejemplo, . Durante años se extendieron rumores, comenzando con la unidad 4040, de un error en la implementación del comando. Al principio, algunos comentaristas lo negaron. Se ofrecieron premios para probar la existencia del error. [ 4 ] A principios de 1985 , la revista Compute! aconsejó a sus lectores que evitaran usar el comando. [ 5 ] Ese año, varios autores publicaron de forma independiente artículos [ 4 ] [ 6 ] [ 7 ] [ 8 ] que demostraban que el error de Guardar con reemplazo era real e incluían métodos para activarlo.SAVESAVE"@MY PROGRAM",8

Los dispositivos afectados incluían el 1541 de una sola unidad y el 4040 de doble unidad; el 8050 y el 8250 no presentaban el problema. [ 4 ] Algunos comentaristas sugirieron que el error podía evitarse especificando siempre explícitamente el 0:número de unidad al guardar, [ 6 ] aunque posteriormente se demostró que cualquier operación de disco sin un número de unidad era suficiente para provocar el error. [ 9 ] El error se originó en el hecho de que las implementaciones de DOS afectadas eran versiones modificadas del DOS contenido en unidades duales Commodore PET anteriores, como el 8050. Esto creaba una "unidad fantasma 1:" en sistemas de una sola unidad, lo que resultaba en la asignación de un búfer innecesario bajo ciertas condiciones. Dado que el comando Guardar con reemplazo utilizaba los cinco búferes de la unidad, y debido a que el método por el cual se asignaba el búfer "fantasma" no cumplía con las especificaciones, esto podía resultar en la escritura de datos ilegibles en el disco.

En septiembre de 1986, Philip A. Slaymaker publicó un artículo [ 10 ] que describía con gran detalle la causa del error y proporcionaba parches para las ROM de la unidad 1541; los lectores con una grabadora de EPROM podían producir sus propias ROM parcheadas que podían intercambiarse en la unidad. Commodore fue informado de los hallazgos de Slaymaker, y aunque nunca emitieron una actualización oficial para las ROM de la 1541 original, sí corrigieron el error en la Revisión 5 de las ROM de la 1571, y también en las ROM para las unidades 1541-c y 1541-II. Aunque no es compatible con Commodore, se sabe que el firmware de la 1541-II (pero no el de la 1541-c) también puede usarse en una unidad 1541 original mediante el uso de EPROM, lo que corregirá el error también para esa unidad.

Canal de comandos

Como se mencionó anteriormente, se accede al propio Commodore DOS a través del "canal de comandos", utilizando una sintaxis similar a la que se usa para acceder a archivos. Para enviar comandos al DOS y recuperar los mensajes de estado y error generados en respuesta a dichos comandos, se abre un archivo en el dispositivo utilizando 15 como dirección secundaria, por ejemplo:

OPEN1,8,15

Para recuperar y mostrar el estado del dispositivo, se podría usar el siguiente código:

OPEN1,8,15:INPUT#1,E,E$,T,S:PRINTE,E$,T,S:CLOSE1

En el ejemplo anterior, Econtendrá el número de error (si lo hay; será cero si no existe ningún error), E$será una breve descripción del error en texto, Trepresentará la pista del disco donde ocurrió el error y Sserá el sector en la pista Tal que se refiere el error. Si no existe ningún error, el equivalente de00,OK,00,00Se devolverá en las cuatro variables. Tenga en cuenta que INPUT#es un verbo exclusivo del modo de ejecución. Además, en programas que emiten muchos comandos de disco, es habitual abrir un archivo en el canal de comandos del dispositivo al inicio del programa y no cerrarlo hasta que este haya finalizado.

Las versiones 4.0 y posteriores de Commodore BASIC proporcionan una pseudovariable DS$que se puede usar para recuperar el estado de la unidad en lugar del código anterior. Esta variable reservada no está disponible en versiones anteriores de BASIC, por lo que el canal de comandos debe leerse manualmente como se muestra arriba. Tenga en cuenta que inmediatamente después del encendido o reinicio, se devolverá la revisión de DOS. Por ejemplo, una 1541 devolverá73,CBM DOS V2.6 1541,00,00El código de error 73 es común a todos los modelos de unidades y puede utilizarse para determinar si la unidad se ha restablecido a su estado de encendido.

Comandos de DOS

También hay un comando para buscar en archivos de tipo RELativo ( RECORD#), varios comandos de acceso directo a nivel de bloque ( BLOCK-READ, BLOCK-WRITE, BUFFER-POINTER), administración de bloques ( BLOCK-ALLOCATE, BLOCK-FREE), manipulación de la memoria de la unidad y ejecución de código de programa en el procesador de la unidad ( MEMORY-WRITE, MEMORY-READ, MEMORY-EXECUTE, BLOCK-EXECUTE) y funciones definibles por el usuario ( USERy &comandos). Algunas de las funciones teóricamente definibles por el usuario se rediseñaron para acceder a nuevas funcionalidades en versiones de DOS posteriores a la 1.0.

Referencias

  1. Sturdivant, Jerry A. (febrero-marzo de 1985). "Carga rápida" . Commodore Power/Play . Vol.  4, n.º  1, pág. 54. Consultado el 7 de octubre de 2018 . 
  2. Brannon, Charles (diciembre de 1983). "Horizontes: 64" . Gaceta de COMPUTE!. N.° 6. pág. 178. Consultado el 7 de octubre de 2018 .  
  3. Grace, Paul (1986). "Un tipo extraño" . RUN Número especial 1987. Peterborough, New Hampshire: CW Communications/Peterborough, Inc. Recuperado el 7 de octubre de 2018 .
  4. 1 2 3 Whittern, Charles H. (julio de 1985). "¡¡GUARDAR con REEMPLAZAR al descubierto!!" . The Transactor . 6 (1): 20.
  5. "El gran debate sobre salvar/reemplazar del comodoro" . Compute!. Febrero de 1985. pág. 10. Consultado el 6 de octubre de 2013 . 
  6. 1 2 Slaymaker, PA (octubre de 1985). "Guardar con reemplazar: depurado por fin / Parte 1" . Compute! . pág. 79 . Recuperado el 16 de octubre de 2013 . 
  7. Slaymaker, PA (noviembre de 1985). "Guardar con reemplazo: depurado por fin / Parte 2" . Compute!. pág. 111. Consultado el 30 de octubre de 2013 . 
  8. Editores. "Save@: La teoría de Gerry Neufield sobre un viejo error". Info n.° 9, diciembre de 1985/enero de 1986.
  9. Fragmento de un correo electrónico de Philip A. Slaymaker, también archivado en Groups.Google
  10. Philip A. Slaymaker. "Eliminando SAVE@ y otros errores 1541". The Transactor Vol. 7 No. O2, septiembre de 1986, pp. 33–35.
Notas
  • Immers, Richard; Neufeld, Gerald G. (1984). Inside Commodore DOS. The Complete Guide to the 1541 Disk Operating System. DATAMOST, Inc & Reston Publishing Company, Inc. (Prentice-Hall). ISBN 0-8359-3091-2.
  • Englisch, Lothar; Szczepanowski, Norbert (1984). Anatomía de la unidad de disco 1541. Grand Rapids, MI: Abacus Software (traducido de la edición original alemana de 1983, Düsseldorf: Data Becker GmbH). ISBN 0-916439-01-1.
  • (en finlandés) Lundahl, Reijo (1986). 1541-Levyasema . Amersoft. ISBN 951-35-3206-2