Commodore DOS
Da Wikipedia, l'enciclopedia libera.
Commodore DOS, detto CBM DOS, era un sistema operativo per il disco, utilizzato dai computer a 8 bit della Commodore. Diversamente dagli altri sistemi DOS, CBM DOS è integrato nella ROM dei drive floppy*.
(* I rari modelli di hard disk venduti dalla Commodore avevano anch'essi il DOS nella ROM.)
Indice |
[modifica] Versioni del CBM DOS
- 1.0
- ...
- 2.6 – la versione più comune, integrata nei 1541
- ...
[modifica] Caratteristiche tecniche
[modifica] Directory e tipi di file
I dischi floppy possono contenere fino a 144 file. I nomi dei file possono essere lunghi fino a 16 caratteri. Non esistono sotto-directory e i nomi di file devono essere univoci; scrivendo direttamente alla tabella dei blocchi, è possibile avere più file con lo stesso nome. Un trucco molto comune utilizzato, ad esempio, da The Final Cartridge III, era quello di aggiungere nomi di file come "----------------" del tipo DEL<
alla directory. Molti sviluppatori di giochi, gruppi di membri di warez e hackers di demoscene utilizzavano trucchi simili .
C'era un altro trucco curioso: i nomi dei file potevano contenere caratteri composti da Shift+spazio, che veniva usato per creare codice come SAVE "PROGRAM
(shift+space),8,1:",8,1
, che apparirà nella directory come 32 "PROGRAM",8,1: PRG
. Quando l'utente muove il cursore all'inizio della linea e scrive LOAD
, sovrascrivendo la colonna della dimensione e premeva il tasto enter, il Commodore BASIC interpreta quella riga come LOAD "PROGRAM",8,1
.
Nel BASIC, la directory può essere visualizzata con LOAD "$",8
, seguita dal comando LIST
.
I seguenti tipi di file sono supportati:
SEQ
- File sequenziali, file che possono essere letti byte per byte o in accesso casuale. Molti dei file sono di questo tipo. Nel BASIC, essi possono essere aperti con il comando
OPEN
.
PRG
- Simile al tipo
SEQ
, essi hanno il program location header nei primi 2 byte. Tutti i programmi in BASIC e in linguaggio macchina sono salvati comePRG
, e possono essere salvati in memoria con il comandoLOAD
o la chiamata LOAD del KERNAL.
REL
- File relativi sono file con record di dimensione fissa.
USR
- File personalizzati dall'utente (User-specified files). Essi sono simili al tipo
SEQ
. Viene utilizzato da alcune applicazioni, la più nota delle quali è il GEOS, che salva i files in formato "VLIR", memorizzati come fileUSR
.
DEL
- Tipo di file non documentato, per uso interno. Strutturalmente, è simile al
SEQ
. I comandi DOS non possono creare files con questo tipo.
I files che contengono un asterisco *
(ad esempio, *SEQ
) sono file che non sono stati chiusi correttamente. I file con un segno del <
(ad esempio PRG<
) sono protetti e non possono essere cancellati.
[modifica] Accesso ai file
Nel Commodore BASIC per leggere o scrivere un file si utilizza il comando OPEN
, che richiede 4 parametri: il numero del descrittore del file, il numero del device, il numero dell'accesso secondario e il nome del file. Per leggere un file normale si utilizza il comando OPEN 2,8,2,"0:EXAMPLE FILE,SEQ,READ"
. Il numero 8 si riferisce al primo drive floppy. Su sistemi a due drive, il 9 si riferisce al secondo drive. Dopo il nome del file c'è il tipo del file e la modalità d'accesso (READ
, WRITE
o APPEND
). Questi campi possono essere abbrievati alla loro prima lettera (ad esempio OPEN 2,8,2,"0:EXAMPLE FILE,S,R"
)
I file possono essere caricati e salvati con i comandi LOAD
e SAVE
. Il comando SAVE "FILE",8,1
salva il programma BASIC con l'estensione PRG
e il comando SAVE "0:FILE,SEQ,WRITE",8,1
salva il programma BASIC con l'estensione SEQ.
[modifica] Command channel
Per accedere al DOS si utilizza il command channel. Questo canale è come un normale file, ma si utilizza il 15 come numero dell'accesso secondario.
È possibile conoscere lo stato del drive scrivendo i comandi OPEN 15,8,15: INPUT#15,E,E$,T,S: CLOSE 15: PRINT E,E$,T,S
. E
è il codice d'errore, E$
è il messaggio d'errore, T
e S
rappresentano la traccia e il settore dove è stato trovato l'errore. Il codice 0,"OK",0,0
indica che non vi è stato alcun errore. All'accensione, il drive restituisce la versione del DOS e il modello del drive: 73,"CBM DOS V2.6 1541",0,0
.
I comandi per la gestione del disco si scrivono attraverso il command channel: OPEN 15,8,15,"N0:WIKIPEDIA DOCS,WP":CLOSE 15
, questo comando effettuerà una formattazione del disco e lo nominerà come "WIKIPEDIA DOCS" con l'ID "WP".
Alcuni comandi caratteristici sono:
NEW0:DISKNAME,ID
o N0:DISKNAME,ID
- Formatta il disco. Il nome del disco può avere un massimo di 16 caratteri e il codice ID 2 caratteri. Il codice ID dovrrebbe essere unico per ogni disco.
SCRATCH0:FILE NAME
o S0:FILE NAME
- Elimina il file. I caratteri d'espansione ? e * sono supportati.
RENAME0:NEW NAME=OLD NAME
o R0:NEW NAME=OLD NAME
- Rinomina il file.
COPY0:NEW NAME=EXISTING NAME
o C0:NEW NAME=EXISTING NAME
- Copia il file.
VALIDATE0
o V0
- Marca come liberi tutti i blocchi non marcati o non utilizzati da nessun file ed elimina tutti i file non chiusi correttamente.
INITIALIZE0
o I0
- Reinizializza il drive e memorizza la tabella d'allocazione dei file (BAM).
Ci sono anche comandi per l'accesso casuale ai file: (BLOCK-READ
, BLOCK-WRITE
), gestione dei blocchi (BLOCK-ALLOCATE
, BLOCK-FREE
), gestione della memoria del 1541 ed esecuzione di codice attraverso il processore del 1541 (MEMORY-WRITE
, MEMORY-READ
, MEMORY-EXECUTE
, BLOCK-EXECUTE
, BUFFER-POINTER
) e funzioni definite dall'utente (USER
).
[modifica] Riferimenti
- 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). The Anatomy of the 1541 Disk Drive. Grand Rapids, MI: Abacus Software (tradotto dalla versione originale tedesca del 1983, Düsseldorf: Data Becker GmbH). ISBN 0-916439-01-1.
- Lundahl, Reijo (1986). 1541-Levyasema. Amersoft. ISBN 951-35-3707-7.