# Datassette

I Datassette (o anche Datasette) sono una linea di unità a nastro magnetico prodotte dalla Commodore International per i suoi computer a 8 bit. Il nome nasce dalla fusione delle parole inglesi data (dati) e cassette (cassetta).

## Storia

Il Datassette venne utilizzato fin dalla commercializzazione dei primi home computer Commodore, poiché di dimensioni contenute e soprattutto poco costoso, fattori che lo resero un ottimo strumento per l'utilizzo come memoria di massa.
In Europa ebbe una notevole diffusione e fu comunissimo anche dopo l'introduzione del Commodore 1541 e dei floppy disk, dato il suo prezzo contenuto rispetto a questi ultimi. Negli Stati Uniti d'America ebbe un ruolo minore come memoria di massa poiché i floppy disk ebbero maggior diffusione e divennero presto lo standard di fatto, nonostante la periferica Commodore 1541 costasse cinque volte più del Datassette.

## Caratteristiche
### Interfacciamento hardware

Il collegamento al computer avviene tramite un connettore a pettine, come quello utilizzato dall'unità Commodore 1530 del Commodore 64, o un connettore Mini-DIN adoperato nell'unità Commodore 1531 dedicata ai Commodore 16 e Plus 4. Poiché è impossibile usare segnali audio su tali computer, dato che i dati sono registrati come toni e non come segnale analogico, essi sono le uniche unità di memoria di massa basate su nastro magnetico utilizzabili con i sistemi Commodore. La quantità massima di dati immagazzinabile per l'utilizzo è di circa 100 kB per lato con una audiocassetta di 30 minuti; con l'utilizzo del turbo tape e di altri software appositi il limite può aumentare a 1000 kB.

### Elettronica e funzionamento

La meccanica di trascinamento del nastro, che per i modelli 1530 e 1531 era fornita dalla Tanashin, non presentava particolarità differenti di una analoga impiegata nei registratori audio a cassetta.
L'Elettronica relativa ai circuiti di lettura e scrittura era invece completamente diversa da quella impiegata in un registratore audio standard; quando veniva premuto il tasto "play" un segnale di massa veniva inviato ad un ingresso specifico interfacciato col microprocessore. Questi a sua volta, tramite un interruttore a transistor sul computer, azionava il motore per il trascinamento del nastro magnetico. La cassetta era quindi pronta per l'operazione di lettura o scrittura. Aveva anche un contatore di giri posto a lato dello sportello della cassetta che era usato per arrivare più rapidamente al programma voluto agendo sui tasti di avanzamento e riavvolgimento veloce.
In fase di lettura un circuito di preamplificazione/conversione prelevava il segnale della testina magnetica e lo riconvertiva in livelli logici. Questo si otteneva per passaggi successivi, attraverso una serie di stadi preamplificatori/equalizzatori di risposta, realizzati con amplificatori operazionali, seguiti da uno stadio squadratore realizzato a trigger di Schmitt e successive porte logiche (si utilizzavano in particolare degli inverter di un circuito integrato digitale 7414), che adeguavano i livelli logici del flusso di dati in uscita a standard TTL, adatto per essere recepito dal computer. Dopo un utilizzo intensivo poteva essere necessario procedere alla regolazione della vite dell'azimut della testina che tendeva a disallinearsi meccanicamente rispetto al nastro, rendendo difficoltoso il caricamento del software per troppi errori di lettura.
In fase di scrittura (salvataggio dati), il computer inviava un segnale digitale già idoneamente codificato, che il Datassette si limitava ad interfacciare con delle porte logiche (altri inverter dello stesso 7414) aventi il solo compito di elevare il segnale ad ampiezza sufficiente per pilotare la testina magnetica. La corrente in uscita dalle porte logiche veniva quindi a sua volta applicata alla bobina della testina, che in fase di registrazione risultava connessa a ponte tra le uscite di due porte logiche lavoranti in controfase. Un livello logico "alto" corrispondeva a una corrente inviata alla testina in un determinato verso, mentre un livello logico "basso" corrispondeva all'invio di una corrente di verso opposto, questo allo scopo di generare un campo magnetico complessivamente simmetrico. La testina a sua volta convertiva appunto le correnti in campi magnetici che per induzione imprimevano dei corrispondenti campi magnetici sul nastro, e che rappresentavano i dati informatici.
Il Datassette era privo di sistemi di conversione o modulazione/demodulazione interni propri, e si limitava in fase di registrazione/salvataggio al semplice adattamento di livello di tensione e corrente verso la testina magnetica del treno di dati già codificati proveniente dal computer, ovvero i singoli bit rappresentanti il programma da salvare pervenivano codificati, come si vedrà nei paragrafi seguenti, in sequenze di onde quadre di frequenze note. In fase di salvataggio su cassetta, eventuali dati pre-registrati erano debitamente cancellati dalla relativa testina di cancellazione, comandata -in questo specifico caso- con semplice corrente continua.
Non essendo richiesta la rigorosa proporzionalità di ampiezza tra il campo magnetico indotto dalla testina e quello memorizzato istante per istante dal nastro in scorrimento (rimanenza), sono completamente assenti i circuiti ausiliari di pre-magnetizzazione del nastro, che erano invece necessari un registratore a cassette per uso audio. Era sufficiente comandare la testina magnetica con segnali quadri di ampiezza abbastanza elevata per vincere la coercitività delle particelle ferromagnetiche depositate sul nastro della cassetta, e a ciò provvedevano le porte logiche facenti parte del circuito di registrazione interno al Datassette.

### I segnali utilizzati

I dati provenienti dal computer e destinati al Datassette erano costituiti da un pattern codificato di segnale ad onde quadre, incluso un bit di parità. Esse erano create inviando alternativamente un segnale forte e un'assenza di segnale, di uguale periodo. Poiché il Commodore 64 utilizza tre modelli di onda quadra che si differenziano per la lunghezza del periodo: breve, medio e lungo, i programmi erano scritti due volte su nastro per la correzione degli errori.
Il sistema operativo gestionale del computer, il KERNAL, già conteneva una codifica idonea per il salvataggio dati via Datassette. Quest'ultimo si limitava a ricevere il pattern già codificato di onde quadre e a inviarlo -opportunamente amplificato- direttamente verso testina magnetica, ed era in sè privo di particolari sistemi di conversione o modulazione/demodulazione. La codifica impiegata aveva anche lo scopo di evitare la possibilità di invio di frequenze irriproducibili dal nastro. Per esempio, nel caso particolare che il programma da salvare dovesse contenere lunghe sequenze consecutive di bit "0" o di bit "1" , al registratore venivano comunque inviate delle corrispondenti sequenze di onde quadre codificate con diversa alternanza di frequenze, evitando così di inviare lunghi periodi continui di stati "on" oppure di "off" , che equivarrebbero all'invio di correnti continue alla testina e campi magnetici continui verso il nastro, non riproducibili in fase di lettura.

### La struttura dei file

I file che rappresentano programmi o dati vengono registrati sul nastro magnetico come sequenza di byte. Lo scambio di Byte fra il computer e il registratore avviene a blocchi, tramite un buffer di 192 byte. Ogni byte di dati è preceduto da un marcatore costituito da un'onda lunga seguita da un'onda media. "0" bit viene rappresentato da un'onda corta seguita da un'onda media, mentre al contrario, "1" bit viene rappresentato da un'onda media seguita da un'onda corta.
Quando si salva un programma sul nastro, il KERNAL crea nel buffer un primo blocco, detto header, contenente:
* 2 byte per l'indirizzo della RAM;
* 2 byte per l'indirizzo della RAM occupato dall'ultima riga di programma;
* altri byte (max 128) relativi al nome del programma (max 16 caratteri);
* altri byte di valore 32 fino al riempimento del buffer.
Terminata la trasmissione dell'header, il sistema operativo effettua quindi la trasmissione dell'intero programma, diviso a blocchi di 192 byte. A questo punto il Kernal ripete la trasmissione dell'header e di tutti i blocchi del programma. Questa seconda trasmissione di dati ridondanti ha lo scopo di verificare, al momento della lettura, la correttezza dei byte ed eventualmente correggere quelli affetti da errori.

### Il controllo errori

Il controllo di errore era possibile dato che per ogni byte di programma il KERNAL trasmetteva in realtà un gruppo di 9 bit: 8 relativi al byte effettivamente da trasmettere e uno, di parità, calcolato in modo che la somma dei bit di valore 1 presenti nei 9 bit fosse un numero pari. Al momento della lettura del nastro, il KERNAL verificava che per ogni gruppo di 9 bit fosse soddisfatta la regola della parità; se ciò non accadeva esso memorizzava in una specifica locazione della RAM, il byte sospetto. Durante la lettura successiva dello stesso blocco di byte, il sistema verificava se i byte corrispondenti a quelli errati soddisfacevano la parità: se ciò accadeva il nuovo byte veniva sostituito a quello errato nella memoria di programma. Se anche qualcuno di questi byte non soddisfaceva la parità, il KERNAL cessava il caricamento ed inviava al video il messaggio ?LOAD ERROR
Il messaggio di errore si otteneva solo se ne venivano rilevati più di 30 al primo passaggio, o se quelli nel primo passaggio non potevano essere corretti dal secondo. Questo metodo di rilevazione degli errori era ritenuto abbastanza sicuro ed affidabile, a discapito però della velocità di caricamento. Per aumentare la velocità di caricamento del software contenuto nei nastri furono rilasciati programmi denominati turbo tape basati su sistemi di scrittura e lettura dei dati personalizzati.

## Specifiche tecniche

Le specifiche tecniche del Datassette erano:
* Velocità: 300 Baud (150 Baud reali a causa dei file salvati due volte per il controllo degli errori)
* Controlli: Tasti per la riproduzione "play", registrazione "record", avanzamento rapido "f.fwd", riavvolgimento "rewind", e di arresto "stop". Contatore per la posizione del nastro "counter".
* Formato dati: Formato proprietario della Commodore che utilizzava la modulazione in larghezza di impulso e onde quadre.
* Supporti: Utilizzava audiocassette standard. Era possibile immagazzinare 200 KB di dati (100 KB per un lato da 30 minuti).

## Modelli principali

Il primo modello fu il C2N, sviluppato come periferica per il Commodore PET, ma compatibile anche con il VIC-20 ed il C64/C128. Successivamente per questi computer fu sviluppato un modello con forme più arrotondate, denominato 1530, funzionalmente identico al C2N. Infine la Commodore rilasciò il modello 1531 per il C16/Plus/4, caratterizzato da un attacco differente rispetto a quello del 1530. I primi due modelli esterni erano venduti come periferiche per il Commodore PET, i restanti due per il VIC-20 e il C64. Erano tutti compatibili con le macchine ad 8 bit della Commodore, tranne che il 1531.
I modelli più recenti presentavano un forellino sopra la tastiera, per permettere l'accesso alla vite di regolazione della posizione dell'azimut, rendendo così possibile la regolazione tramite un piccolo giravite senza smontare il telaio della periferica. I più famosi furono:
* Il Datassette incorporato nel PET 2001 originale: coperchio alloggiamento nero, cinque tasti bianchi, privo di contatore, privo di SAVE LED;
* Modello C2N nero con forma originaria, coperchio cassetta nero, cinque tasti neri, privo di contatore, privo di LED "SAVE" (per indicare un'operazione di scrittura);
* Modello C2N bianco con forma originaria, coperchio cassetta nero, cinque tasti neri, dotato di contatore, privo di LED "SAVE";
* Modello 1530 con forma nuova, di colore bianco e coperchio cassetta in colore argento, sei tasti neri, dotato di contatore e di un LED "SAVE" rosso.
* Modello 1531 di colore nero/antracite ed estremamente simile ai modelli 1530/C2N nell'aspetto, ma incompatibile a causa del diverso connettore. Aveva il con coperchio cassetta in colore argento, sei tasti grigio chiaro, dotato di contatore e di LED "SAVE" rosso. Con un adattatore poteva essere utilizzato con il C64/128.

## Galleria d'immagini

* Datassette C2N (1977) - progettato per i PET ma compatibile anche con il VIC-20/C64/C128
* Datasette 1530 - Funzionalmente identico al C2N ma con forme più arrotondate che riprendevano quelle dei nuovi computer Commodore
* Datassette 1531 - Sviluppato per il C16/Plus4, aveva un attacco differente per cui non era usabile con i precedenti modelli