Una caratteristica peculiare dei sistemi Commodore è data dall’utilizzo di drive "intelligenti". Forse non tutti sanno con esattezza cosa questo significhi; in questo articolo cercherò, per quanto mi è possibile, di fare chiarezza in merito.
Prima di tutto, una doverosa precisazione: questa trattazione è riferita ai drive utilizzati negli elaboratori Commodore ad 8 bit (dal PET 2001 al Commodore 128).
Cominciamo con il chiarire cosa significhi il termine "intelligente" per un drive Commodore. Nell’appendice A del Manuale dell’Utente del Commodore 64 si può leggere la seguente frase (pag. 107):
"Le unità disco sono intelligenti, il che significa che dispongono di un proprio microprocessore e di una propria memoria".
Questa frase fa capire come un drive Commodore (ad esempio un 1541, uscito insieme al C64 nel lontano ’82) sia un qualcosa di più di una semplice periferica; esso, infatti, rappresenta più un computer con uno scopo specifico, evidentemente in questo caso il supporto per la lettura/scrittura mediante floppy.
Il fatto che un drive Commodore sia assimilabile ad un computer implica che questo sia riprogrammabile; effettivamente è così. Un 1541 (o 1570, 1571, 1581, ecc…) dispone di una propria memoria ROM (ove risiede il DOS Commodore) e di una propria memoria RAM (circa 2 kilobyte). La ROM permette di ospitare il sistema operativo per la gestione dei dischi, e questo evita l’assorbimento di memoria al computer Commodore. I 2K di RAM servono per ospitare dati e codice che il computer può inviare al drive. In questo sta la programmabilità dei drive Commodore. Cerchiamo di capire in cosa consiste tale caratteristica ed i vantaggi che possono essere tratti da essa.
Riferiamoci, senza limitare la validità generale del discorso, al Commodore 64. Siamo in molti ad apprezzare ancora questa macchina, tuttavia questo non significa che fosse esente da difetti. In particolare, le routine del kernel del C64 (il CBM KERNAL) erano molto lente nella gestione del caricamento/salvataggio da/su floppy (per non parlare poi delle cassette). Tale lentezza è dovuta al fatto che la Commodore diede la priorità all’efficienza più che alla velocità. Erano infatti presenti dei controlli degli errori molto ripetitivi, che rallentavano l’I/O. Questo incrementò eccessivamente i tempi di accesso ai dati, e anche se tale gestione era esente da errori rendeva troppo grandi i tempi di lettura-scrittura.
Le case software risolsero a loro tempo il problema scrivendo degli speciali programmi che gestivano meglio l’I/O, dando importanza anche alla velocità. La possibilità di programmazione del drive ebbe un ruolo fondamentale in tal senso. Ad esempio, il caricamento di un videogioco si attua in due fasi; nella prima fase, il C64 carica uno speciale programma di caricamento veloce (turboloader) e lo trasferisce nella RAM del 1541, poi, nella seconda fase, il 1541 esegue lui stesso tale programma, mentre il Commodore 64 si limita a ricevere i dati e a gestire il canale di comunicazione fra le due apparecchiature. Questo porta ad avere un multitasking reale, nel quale sia il C64 sia il drive eseguono i rispettivi programmi e si scambiano informazioni.
Per rendersi conto dell’effettiva possibilità del multitasking reale, basta osservare che con un Commodore 64 è possibile formattare un floppy e contemporaneamente continuare a scrivere del testo o fare altre operazioni, senza alcun rallentamento. Questo non è possibile con un PC in ambiente MS-DOS, perché nel PC un drive è soltanto un insieme di meccanismi, interamente controllati dal PC in tutti gli aspetti (oggi non ci accorgiamo di questo perché i floppy sono già formattati, ma una volta non lo erano…). Con Windows è possibile continuare a lavorare mentre si formatta, ma si riscontrano dei rallentamenti (almeno con il mio sistema Windows 98 – Pentium II 400 MHz – 64 Mb RAM).
Addirittura è possibile collegare ad un C64 fino a quattro drive, così ad esempio con uno si può formattare un floppy, con un altro si può cancellare un file su un altro floppy, con un altro si può compattare il contenuto di un ulteriore altro floppy, ecc… Queste infatti sono tutte operazioni gestite interamente dal drive, il quale richiede soltanto al C64 l’invio del comando relativo.