Questa guida nasce dal mio hobby chiamato retrocomputing, che consiste nel far "rivivere" e funzionare vecchi computer ormai obsoleti. Uno dei computer più interessanti che ho nella mia piccola collezione è il Commodore 128. È un computer "3-in-1", le tre modalità di funzionamento sono:

  • Commodore 128 nativo (BASIC 7.0)
  • Commodore 64 (BASIC 2.0)
  • Compatibile CP/M

La modalità più utilizzata è stata la modalità "Commodore 64", cioè la meno potente, per via dell'enorme quantità di software prodotto per il "fratello minore" C64. Sensibilmente meno utilizzata era la modalità "nativa" basata sul BASIC 7.0 e ancor meno la modalità CP/M, che poggiava sulla seconda CPU di questa potente macchina, il microprocessore Z80. Tale modalità rendeva disponibile una grande libreria di software professionale, per un sistema che però purtroppo nel 1985 era giù sul viale del tramonto. Tuttavia, nonostante l'infelice scelta di supportare tale piattaforma, se la casa madre avesse speso più parole su questo possibile utilizzo della macchina, questa sarebbe davvero diventata un degno competitor degli MS-DOS compatibili in forte ascesa e svariate volte più costosi.

In questa pagina viene descritto come portare su dischi leggibili dal Commodore 128, fisici o virtuali (.D71) il software CP/M che ancora oggi circola in varie forme (principalmente come abandonware) in Rete, per poter "assaporare" al giorno d'oggi le potenzialità di allora. Ricordiamo che software storici come Wordstar, Multiplan, dBase e anche Turbo Pascal sono nati proprio su CP/M.

Creare dischi in formato CP/M per C128

Nelle raccolte di abandonware in Rete si trovano diversi software interessanti: questi sono distribuiti in genere come file .zip contenenti i singoli file (dati ed eseguibili CP/M) che fanno parte del pacchetto: bisogna quindi renderli disponibili nel formato in cui il C128 possa "digerirli": bisogna creare un'immagine .D71 di un disco e quindi copiarvi i file al suo interno.

CTOOLS

Il set di utility chiamato CTOOLS consente (1) di creare un'immagine vuota di floppy in formato CP/M per il Commodore 128 e (2) di leggere/scrivere questa "immagine" (trattata come fosse un archivio .zip) inserendo, estraendo o cancellando file da essa. CTOOLS nasce in versione multipiattaforma per UNIX e per MS-DOS, ma nelle ultime release è stato abbandonato il supporto a MS-DOS. Ecco una serie di link dove poter scaricare CTOOLS in diverse "salse":

Sorgenti per UNIX
Versione correntemente mantenuta da mist64. Ci sono solo i sorgenti per UNIX, il supporto per MS-DOS è stato rimosso.
Eseguibili per Mac OS X
Versione 0.4 compilata per Mac OS X a 64 bit.
Eseguibili per MS-DOS
Versione 0.4 compilata per MS-DOS. Può girare anche sotto Windows (32 e 64 bit), ma tramite DOSBox.

Creazione floppy CP/M vuoto

Il Commodore 128 utilizzava un disk drive creato appositamente per lui, il 1571, che gestiva entrambe le facciate dei floppy da 5,25". In questa guida verrà spiegato come creare file-immagine di questo tipo di floppy, capace di 340kB anziché i "classici" 170kB gestibili dal 1541, il disk drive del Commodore 64. I file immagine dei floppy da 340kB hanno estensione .D71.
Ecco come crearne uno, vuoto e formattato per CP/M (il simbolo $ rappresenta il prompt dei comandi):

$ cformat -2 nomedisco.d71



In particolare il parametro -2 indica di creare un file immagine di 340kB, contro i 170kB che verrebbero utilizzati per default.

Copiare sul nuovo disco un CP/M "base"

Il CP/M è un sistema operativo che va caricato da disco, quindi si presuppone che per iniziare a lavorare bisogna (1) fare il boot dal disco di sistema, attenderne il caricamento e poi (2) togliere il disco di sistema, inserire il disco con l'applicazione e lanciarla. Possiamo per comodità inserire su un unico disco sia l'applicazione che un subset minimale del sistema operativo, sufficiente per fare il boot e avere quindi l'applicazione a disposizione.

Per rendere un disco bootable è sufficiente copiarvi due file di sistema: CPM+.SYS e CCP.COM.



Una volta scaricati questi due file (estraendoli dall'archivio .zip), è arrivato il momento di scriverli sul file immagine precedentemente creato tramite il comando cformat, stavolta usando il comando ctools:

$ ctools nomedisco.d71 p cpm+.sys ccp.com



Notare l'opzione p, che sta a indicare "put", cioè "inserisci" i file indicati (separati da spazio) all'interno del disco "nomedisco.d71". Altre opzioni sono d per leggere la directory di nomedisco.d71...

$ ctools nomedisco.d71 d

  Name         Bytes  Recs    Attributes
-------------- ----- ------- ------------
A:CPM+    .SYS    26k    196 Dir RW      
A:CCP     .COM     4k     25 Dir RW      
-------------- ----- ------- ------------
   2 file(s)     306k free



...oppure g per estrarre (get) file dall'immagine .D71 o anche e (erase) per cancellare un file. Per avere una panoramica è sufficiente usare l'opzione --help:

$ ctools --help

ctools V0.4  manipulate c64/c128 CP/M disk images
Copyright (c) 1995-1997  Jochen Metzinger

Usage: ctools [--help] [-i] [-u user-array] image command [options]

-i --initdir           remove SFCB, XFCB and dir labels
-u --user user-array   set default user array (a-p)
image                  disk image
command                tool:
  c                      check directory (correct with -i)
  d [file]               show directory
  e file                 erase file
  g file                 get file from image
  h,?                    show this display this help and exit
  m file                 output dump of file
  p files                put files onto image
  r old new              rename old to new
  t file                 output file
  u                      unerase files

-h --help              print this help, then exit



Completiamo la panoramica specificando che le opzioni p, g (put, get) supportano le wildcards, per cui si può specificare "tutti i file" indicano semplicemente *.*

Il comando DEVICE.COM

Può risultare utile inserire nel disco "minimale" anche il comando DEVICE.COM, scaricabile presso questo link: è da utilizzare nel caso in cui il boot sia effettuato in modalità 40 colonne, e a boot terminato si voglia invece passare in modalità 80 colonne. Nel caso lo si ritenga utile, si può copiarlo nel disco "base", e utilizzarlo in questo modo (per passare a 80 colonne):

A>DEVICE CONOUT=80COL





Copiare sul nuovo disco del software applicativo

Ora che abbiamo un disco bootable minimale ma essenzialmente... vuoto, possiamo scaricare dalla Rete il software applicativo che vogliamo utilizzare. Ci sono un po' di siti da cui è possibile scaricare piccoli capolavori del passato.

Su Retroarchive per esempio è possibile trovare Turbo Pascal 3.01 di Borland: sì, proprio lui, l'originale. Basta scaricarlo, estrarre i file dall'archivio .zip in una directory di lavoro e poi lanciare, utilizzando il medesimo file .D71 creato precedentemente, il seguente comando dall'interno della directory di lavoro (IMPORTANTE: per utilizzare la wildcard * bisogna porre il file .D71 in una directory diversa da quelle dei file da copiarvi in modo da non inglobare anche il .D71 stesso nell'elenco dei file da aggiungere):

$ ctools /cartella/d71/nomedisco.d71 p *



Utilizzo sulla macchina fisica

Ora che abbiamo il nostro .D71 abbiamo due modi di utilizzarlo:

  • Trasferendone il contenuto su un vero floppy da 5,25" tramite un vero drive 1571, cavi fatti ad hoc seguendo varie guide che si trovano online.
  • Trasferendo il file .D71 su una SD e utilizzando una delle tante incarnazioni del dispositivo chiamato SD2IEC, che consente a una macchina Commodore a 8 bit (compreso il Commodore 128) di leggere/scrivere direttamente da/su una moderna SD.

Due esempi di "incarnazioni" di SD2IEC, dove è anche possibile l'acquisto:

Il colore dei caratteri

Se trovate senza senso la scelta del colore dei caratteri magenta su fondo nero, non preoccupatevi: con la combinazione CTRL+2 passate a un più rassicurante bianco carta.