# Research Machines 380Z

Il Research Machines 380Z (spesso indicato come RM 380Z o RML 380Z) è uno dei primi microcomputer a 8 bit. Fu prodotto da Research Machines Limited, con sede a Didcot, Oxfordshire (Gran Bretagna) dal 1977 al 1985.
Il 380Z usava un microprocessore Zilog Z80A (da cui il nome) con fino a 64 KB di memoria RAM (di cui solo 56 disponibili all'utente). Se l'utente acquistava l'unità disco opzionale, il computer poteva far girare il sistema operativo CP/M. Il sistema base era offerto con una scheda video capace solo di una modalità testo monocromatico; poteva però essere acquistata a parte una scheda grafica ad alta risoluzione.
Il 380Z fu venduto prevalentemente alle scuole britanniche, con alcune unità acquistate anche da industrie. Nel 1979 un sistema con 2 unità disco da 8" e con 56 KB di RAM costava 3.266 sterline, un sistema con lettore di cassette e 16 KB di memoria 965 sterline (IVA esclusa).

## Hardware
### Architettura

Il 380Z era assemblato con un case metallico rettangolare di colore nero largo 19", misura standard degli armadi rack, che conteneva l'alimentatore, un certo numero di schede elettroniche e le unità disco opzionali. Il pannello frontale aveva un paio di robuste maniglie per il trasporto, un interruttore ed un pulsante di reset. La tastiera era separata dalla macchina, alloggiata in un contenitore metallico.
Le prime versioni, realizzate in un numero limitato di esemplari, avevano il case di colore blu chiaro con il frontale bianco ed avevano solo l'interfaccia per il lettore di cassette o per le unità disco da 8". Opzionalmente era disponibile anche un lettore/perforatore di nastri perforati ad 8 bit in codice ASCII, un supporto di memorizzazione molto comune all'epoca dato che i precedenti utilizzi dei computer erano limitati alle macchine telescriventi collegate ad un mainframe tramite telefono.
Il sistema utilizzava un'architettura a bus senza scheda madre: tutta l'elettronica era contenuta su schede interconnesse da cavi. L'unica CPU disponibile era lo Zilog Z80A, con frequenza di 4 MHz.

### Memoria

La memoria era fornita su banchi di RAM (max. 4), ognuno con 4 o 16 KB di memoria, anche se non erano permesse tutte le combinazioni. Le configurazioni tipo prevedevano 16 KB per i sistemi con il solo lettore di cassette e 32/48/64 KB per i sistemi con le unità disco. La memoria principale non veniva impiegata dalle schede video testo o grafiche, la cui memoria invece risiedeva in un blocco da 1,5 KB accessibile via bank switching.
Il 380Z aveva inoltre un firmware su di 5,25 KB noto come COS. Sui sistemi con meno di 64 KB il COS riservava 1 KB di RAM di sistema, lasciando il resto disponibile all'utente; sui sistemi con 64 KB di RAM l'utente poteva gestire solo 56 KB di memoria dato che il restante quantitativo era inaccessibile per via della ROM dello stesso COS, per la memoria riservata al video e per la mappatura delle porte di I/O.

### Video

Il COS 3.4 (vedi sotto) e precedenti avevano una scheda video di base capace solo di una modalità testo monocromatica con 40x24 caratteri. L'uscita video composita pilotava un monitor esterno mentre il modulatore RF permetteva di collegare il computer ad un comune televisore. I sistemi successivi erano dotati di una scheda video migliorata che permetteva di passare via software dal modo 40×24 al modo 80×24 caratteri oltre che supportare un certo numero di attributi del carattere (sottolineatura, dimensione, video invertito). Entrambe le schede avevano la propria memoria dedicata.
In aggiunta alle schede video di base capaci della sola modalità testo, erano disponibili delle schede grafiche ad alta risoluzione (HRG). Queste erano fornite con 16 KB di memoria dedicata e supportavano 2 modalità video:
* alta risoluzione: 320×192 pixel, 16 colori;
* media risoluxione: 160×96, 4 colori.
Tramite una lookup table i colori potevano essere scelti fra una tavolozza di 256 tonalità (con uscita RGB) oppure intensità (uscita composita).
L'uscita della scheda grafica era miscelata con l'uscita della scheda video testuale così che era possibile sovrapporre le 2 schermate. L'uscita della scheda grafica copriva solo 20 righe dello schermo testuale per cui la sovrapposizione poteva magari lasciare al testo le ultime 4 righe in basso, se l'effetto di miscelazione non era gradito.

### Memorie di massa

Il salvataggio dei dati poteva avvenire o tramite un registratore a cassette oppure su floppy disk (in questo caso bisognava acquistare la relativa scheda). La velocità di trasmissione dei dati era di 300 bit/s (standard CUTS) o di 1200 bit/s. Dal COS 4.0 in poi l'interfaccia per i lettori di cassette non fu più supportata.
I primi sistemi potevano essere equipaggiati con un controller per i dischi a singola densità che poteva gestire sia le unità da 5"¼ che quelle da 8": la capacità dei dischi era di 80 KB per i primi e di 250,25 per i secondi. Le unità capaci di leggere i dischi a doppia faccia erano gestite come 2 unità indipendenti con una lettera assegnata ad ogni lato. Il CP/M usava le prime 4 tracce dei dischi da 5"¼ e le prime 3 su quelli da 8", riducendo lo spazio di un disco a singola faccia e singola densità da 5"¼ a 72 KB.
I sistemi successivi (come il 380Z-D) avevano un controller per i dischi a doppia densità che incrementava la capacità dei dischi a 180 KB o 360 KB per faccia sui dischi da 5"¼ ed a 500,5 KB per faccia sui dischi da 8". Il sistema supportava anche un disco rigido tramite una scheda che supportava l'interfaccia Shugart Associates System Interface (SASI). I sistemi con dischi rigidi erano generalmente usati come file server per i sistemi Research Machines LINK 480Z.

### Schede di espansione

L'architettura a bus permetteva di installare nel 380Z un discreto numero di schede. Quelle necessarie al funzionamento del sistema erano:
* Scheda CPU/RAM: conteneva la CPU Z80A, la ROM del firmware e fino a 32 KB di RAM. La scheda inoltre forniva una porta Centronics per stampanti.
* Scheda video: forniva la modalità testo a 40×24 (VDU-40) o la 80×24/40×24 (VDU-80) caratteri.
Le altre schede erano opzionali, ed includevano:
* Scheda RAM: identica alla scheda CPU/RAM, non aveva la CPU e la ROM e conteneva fino ad un massimo di 32 KB di RAM.
* Scheda controller per floppy disk (FDC): controller per i dischi a singola densità, che forniva anche un'interfaccia seriale RS-232.
* Scheda controller IDC (Intelligent Disc Controller): controller per dischi a doppia densità con un microprocessore dedicato.
* Scheda grafica ad alta risoluzione (HRG): risoluzione massima di 320×192 pixel.
* Scheda per dischi rigidi HIB (Host Interface Board).
* Scheda di rete 380Z-NET (380Z Network Interface Board): un'interfaccia di rete proprietaria con velocità trasmissione di 800 kbit/s per collegare il 380Z alle reti composte dai LINK 480Z.
* Interfaccia seriale 1 (SIO-1): disponibile come SIO-1A (RS-232) o SIO-1B (Current loop a 20 mA).
* Interfaccia seriale 2 (SIO-2): disponibile come SIO-2 (RS-232) o SIO-2B/SIO-3 (Current loop a 20 mA).
* Interfaccia seriale 4C (SIO-4C): forniva un'interfaccia SIO-4s sui sistemi con lettori di cassette senza la scheda FDC.
* Interfaccia IEEE-488.
* Scheda di sviluppo PIO/RTC: forniva i chip periferici Z80 PIO e Z80 RTC.
* Scheda I/O analogica: forniva 16 canali di input e 2 canali di output analogici.

## Firmware
### Monitor di boot

Il firmware del sistema conteneva solo un semplice programma di monitor, noto come COS (per Cassette Operating System fino alla versione 3.4 e Central Operating System nelle successive versioni destinate ai computer con sole unità disco). Il monitor permetteva poche operazioni: da esso si potevano lanciare applicazioni come il BASIC da cassetta oppure caricare un sistema operativo per gestire i dischi. Il COS forniva inoltre un pannello di controllo software che permetteva di visualizzare i registri del processore e la memoria, e supportava l'esecuzione di codice macchina per singole istruzioni o con breakpoint.
Il monitor del COS era memorizzato su ROM, 4 KB per il COS fino alla versione 3.4 e 6 KB per le successive anche se, nel secondo caso, erano usati solo 5,25 KB di memoria.

### Servizi del COS

Il COS forniva un certo numero di funzioni base per il controllo dell'hardware come l'input da tastiera, la scrittura di testo sullo schermo tramite la scheda video e le operazioni di I/O da disco. Le funzioni del COS erano chiamate ricorrendo a pseudo-opcode che invocavano delle eccezioni chiamate tramite l'istruzione dello Z80 RST 30H. Il gestore delle eccezioni (EMT, da Emulator Trap) leggeva i primi byte successivi all'istruzione RST 30H per determinare quale funzione era richiesta; tutti i parametri erano passati tramite i registri della CPU.

### Principali versioni del COS

Le versioni del COS erano legate principalmente alle funzioni hardware che supportavano:
* COS 2.3: sistemi solo con lettori di cassette e schede video solo testo a 40×24 caratteri.
* COS 3.0: supporto per i floppy disk.
* COS 3.4: versione principale del COS, con supporto ai dischi a singola densità e schede video solo testo a 40×24 caratteri.
* COS 4.0: supporto per le schede video solo testo a 80×24 caratteri; nessun supporto ai lettori di cassette.
* COS 4.2: supporto per le unità disco a doppia densità (380Z-D).

## Software
### Sistemi operativi

Il principale sistema operativo per dischi era il CP/M, inizialmente il CP/M 1.4 e successivamente il CP/M 2.2. L'MP/M II fu usato sulla versione file server, che poteva interfacciarsi con una rete di LINK 480Z tramite il CP/NET.

### Applicativi

Erano disponibili molte diffuse applicazioni per il CP/M, come WordStar. Research Machines proponeva anche un proprio assembler (ZASM), un editor di testo (TXED) ed alcuni interprete BASIC: Tiny BASIC (supportava i numeri interi), 9K BASIC (numeri in virgola mobile con 6 cifre significative e supporto per la grafica), 12K BASIC (senza supporto per la grafica, con numeri in virgola mobile con 12 cifre significative ed altre aggiunte.