continua (next page) Frasi Famose index main index

La traduzione in italiano è a metà di questa pagina!

What is it.
CP/M (Control Program for Microcomputers) is the operating system of the early Eighties (created in 1977 by Gary Kildall), used on machines based on the processors of the 8080- and Z80-family. There were also 68000 and 8086 versions. The IBMDOS was born in 1981 just trying to be "CP/M-like".

Some very good information are on this site.

How did I get it.
When very young and hardly computer working, I found some Z80-based machines with eight-inches disks and even a TRUE, ORIGINAL package of the Digital Research's CP/M-86 v1.0.

Manuals, license, system disk: everything was bought by the company where I worked, but they didn't ever install it (sigh! they also preferred the DOS).

Well, soon after the company closed, and everything there disappeared. I saved from the bin the system disk, a 5.25" 320k-formatted (40 tracks, two sides of eight sectors) disk, of the CP/M-86. Now I still have the disk-image of it.

I don't know copyright issues, so I cannot place on-line that disk-image.

I tried to load that image under Linux with DOSemu: I just had to set up the virtual floppy disk using this line in the dosemu.conf file:

floppy { heads 2 sectors 8 tracks 40 fiveinch file cpm86.dsk }

I booted it and... YAY! It runs! I see CP/M-86 on my machine (a 750 MHz Pentium III with 192 Mb RAM). Here is the first screen:


CP/M-86 Bootstrap Loader 1.0
Reading Track 0 1 2 3 4

CP/M-86 for the IBM Personal Computer.
Version 1.0
Copyright 1982, Digital Research Inc.


Hardware Supported :
                    Diskette(s) : 1
                     Printer(s) : 1
                 Serial Port(s) : 1
                    Memory (Kb) : 128


A>
              |U=00|02/10/82|00:01:43|

Notice the "User=00", a desperate try to get multiuser while monotasking. Notice also the status-line on the 25th row of the text screen (something like today's status bar of almost all operating systems), assuming that all software uses only 24 rows.

This version (1.00) of CP/M-86 doesn't support directories (but also IBM DOS 1.0 didn't support them).

The default date is not "01/01/80" as it was in MS-PC/DOS: in CP/M-86 it's "Wed Feb 10, 1982", maybe the operating system release date. In those days, personal computers didn't have a CMOS-clock inside...!

This system also features the Y2K bug: dates after 31-12-1999 are not allowed, and after midnight of 31-12-1999 the clock becomes "??/??/??". They didn't think that today, in 2005, some guy might be playing with their system...! sigh!!!!!

The system RAM was 640k (and plenty of XMS by DOSemu), but CP/M-86 once loaded saw only 128k (see below).

The DIR command, like Unix's "ls", shows filenames only. To get some detailed information, I had to use STAT:


A>stat *.*

 Drive A:                         User :  0
 Recs  Bytes FCBs Attributes      Name
  205    26k    2 Dir RW        A:ASM86   .CMD
   16     2k    1 Dir RW        A:ASSIGN  .CMD
   19     3k    1 Dir RW        A:COPYDISK.CMD
  109    14k    1 Dir RW        A:DDT86   .CMD
   72     9k    1 Dir RW        A:ED      .CMD
   14     2k    1 Dir RW        A:FUNCTION.CMD
   45     6k    1 Dir RW        A:GENCMD  .CMD
   52     7k    1 Dir RW        A:HELP    .CMD
  195    25k    2 Dir RW        A:HELP    .HLP
   50     7k    1 Dir RW        A:NEWDISK .CMD
   59     8k    1 Dir RW        A:PIP     .CMD
   14     2k    1 Dir RW        A:PROTOCOL.CMD
   14     2k    1 Dir RW        A:SPEED   .CMD
   73    10k    1 Dir RW        A:STAT    .CMD
   31     4k    1 Dir RW        A:SUBMIT  .CMD
   21     3k    1 Dir RW        A:TOD     .CMD
----------------------------------------------
Total:  130k   18
A: RW, Free Space:        11k
A>

Notice file-control-blocks of the files, and 128 bytes records.

The COPY command didn't exist, but we had the nice PIP command, that is "Peripheral-Interchange-Program", giving almost the same DOS COPY features.

The NEWDISK program lets you format diskettes; PROTOCOL and SPEED configure the serial port; SUBMIT lets you execute batch files (yes, you had to ask manually to execute something like SUBMIT AUTOEXEC.BAT), the TOD command shows and lets you to modify date and time.

There is even an internal HELP command, vaguely hypertext-structured.

I'm wondering if there are other people that know that today's latest Windoze features were copied from these great operating systems of more than twenty years ago...!

The ASSIGN feature is like the one of the DOS 2.x; the COPYDISK is a diskcopy function. The editor is the classical ED. You have also a FUNCTION utility to program function keys (defaulting to "F1=dir").

And there is also the development system: ASM86, DDT86, GENCMD (that is: assembler, debugger and linker)!

Well, this system (dated 1982) is a complete operating system, with development kit and even on-line help.

When it boots, you can read a nice loading track 0... 1... 2... on the screen (well, it was an immediate load in my Linux DOSemu box). The boot and startup, if running on a true (not emulated) floppy disk drive, completes in four or five seconds, that is just better than the two or three minutes (or more) of today's operating systems...!

I noticed the "cpu hog" of DOSemu because CP/M does "keyboard polling": CP/M was born in Ye Olde Ancient Times, when CPUs didn't overheat, other tasks didn't claim system resources, and programmers didn't need to care about lots of system requirements...!

Since the original CP/M-80 2.2 was born for no-more-than-64k-RAM systems, and since the CP/M programmers discovered the segment registers, this CP/M-86 supports 128k RAM (64k code and 64k stack+data): maybe the above programmers didn't think that one can change a lot of times the segment registers and get access to more memory... ;-) But maybe they were interested in porting Z80 applications (full of 16 bit pointers).

In those times you can get a decent workstation ready in a few seconds, using a few kilobytes of RAM, and using a few keys to get all functions!

Quoting CP/M-2.2 manual (Digital Research, 1983), introduction chapter:

CP/M is a monitor control program for microcomputer system development that uses floppy disks of Winchester hard disks for backup storage. Using a computer system based on the Intel 8080 microcomputer, CP/M provides an environment for program construction, storage, and editing, along with assembly and program checkout facilities. CP/M can be easily altered to execute with any computer configuration that uses a Zilog Z80 or an Intel 8080 Central Processing Unit (CPU) and has at least 20K bytes of main memory with up to 16 disk drives.

Important note. Lots of people asked me to download the cpm86.dsk disk image file (320 kilobytes) to use on their own hardware of 20+ years ago. I didn't yet investigate about legal issues, and so I cannot (as of now) place it on my site for download.

(Italian translation follows)


Beh, era proprio nel CP/M che c'erano i Programmi Caricati All'Indirizzo 0100hex!

Cos'è.
Il CP/M (Control Program for Microcomputers) è il sistema operativo dell'inizio degli anni ottanta (creato da Gary Kildall) per macchine basate sui micro della famiglia 8080 e Z80; successivamente furono create altre versioni per processori 68000 e 8086. È ad imitazione del CP/M 2.2 che nacque il DOS 1.0 della IBM nel 1981.

Maggiori informazioni si possono trovare sul sito di questo Gaby, un fanatico del CP/M per Z80 che ha radunato una montagna di materiale per tutti i CP/M in circolazione.

Cosa viene presentato qui.
Lavorando nella MegaDitta, trovai alcune macchine basate su Z80 con floppy disk da otto pollici, che venivano usate ormai solo per riprogrammare EPROM. Negli scaffali, coperto da polvere, trovai una copia ORIGINALE (con manuali, licenza edisco originale) del CP/M-86 v1.0 della Digital Research. Quel sistema operativo, regolarmente acquistato dalla MegaDitta, non era mai stata utilizzato (e neppure installato) a causa dell'inarrestabile successo del DOS (IBMDOS prima e MSDOS poi).

Quando la MegaDitta fallì, tutto il materiale tecnico sparì nel nulla (perso tra rottami, immondezzai, etc). Riuscii miracolosamente a salvare una copia del dischetto in questione (era un 5.25" formattato a 320k, cioè quaranta tracce da otto settori).

Nonostante numerosi crash di questi anni, conservo ancora una copia dell'immagine del disco, che non oso mettere on-line perché non so ancora esattamente come ci si regola col copyright.

Per utilizzarlo col DOSemu di Linux, è sufficiente aggiungere questa riga nella configurazione del DOSemu (dosemu.conf):

floppy { heads 2 sectors 8 tracks 40 fiveinch file cpm86.dsk }

Ecco dunque cosa si vede a video al boot:


CP/M-86 Bootstrap Loader 1.0
Reading Track 0 1 2 3 4

CP/M-86 for the IBM Personal Computer.
Version 1.0
Copyright 1982, Digital Research Inc.


Hardware Supported :
                    Diskette(s) : 1
                     Printer(s) : 1
                 Serial Port(s) : 1
                    Memory (Kb) : 128


A>
              |U=00|02/10/82|00:01:43|

Da notare: "User=00", cioè disperato tentativo di multiuser in monotasking, con tanto di status-line sulla 25esima riga (come la barra "Avvio" di Wirus95, oppure, più probabilmente, perché il software in circolazione lavorava su 24 righe perché i terminali più di tanto non facevano). Le directories non esistevano ancora.

La data di default è mercoledì 10 febbraio 1982, cioè presumibilmente la data ufficiale del rilascio (e nel 1982 non c'erano ancora le schede timer per PC/XT). Notare il tremendo Y2K bug: non sono ammesse date posteriori al 31-12-1999, e alla mezzanotte di questo giorno la data diventa "??/??/??". Evidentemente non prevedevano che qualcuno, nell'anno di grazia 2002, ancora potesse sollazzarsi ad avviare il sistema...!

Notare inoltre che la memoria massima utilizzabile è di ben 128k (!!!) anche se il sistema in prova ne riporta 640 (figurarsi poi come vengono bellamente ignorati i diversi mega di XMS, EMS, etc).

Ecco che dunque dò un altro comando (DIR non dà le statistiche):


A>stat *.*

 Drive A:                         User :  0
 Recs  Bytes FCBs Attributes      Name
  205    26k    2 Dir RW        A:ASM86   .CMD
   16     2k    1 Dir RW        A:ASSIGN  .CMD
   19     3k    1 Dir RW        A:COPYDISK.CMD
  109    14k    1 Dir RW        A:DDT86   .CMD
   72     9k    1 Dir RW        A:ED      .CMD
   14     2k    1 Dir RW        A:FUNCTION.CMD
   45     6k    1 Dir RW        A:GENCMD  .CMD
   52     7k    1 Dir RW        A:HELP    .CMD
  195    25k    2 Dir RW        A:HELP    .HLP
   50     7k    1 Dir RW        A:NEWDISK .CMD
   59     8k    1 Dir RW        A:PIP     .CMD
   14     2k    1 Dir RW        A:PROTOCOL.CMD
   14     2k    1 Dir RW        A:SPEED   .CMD
   73    10k    1 Dir RW        A:STAT    .CMD
   31     4k    1 Dir RW        A:SUBMIT  .CMD
   21     3k    1 Dir RW        A:TOD     .CMD
----------------------------------------------
Total:  130k   18
A: RW, Free Space:        11k
A>

Notare i file-control-blocks dei files e i records da 128 bytes, dovuti al più famoso (all'epoca) formato dei settori (128 bytes anziché i canonici 512 di oggi).

Il comando COPY non esiste ancora, c'è in compenso il PIP, cioè Peripheral-Interchange-Program, che funziona quasi come il COPY del DOS.

Per formattare dischi si usa NEWDISK; i comandi PROTOCOL e SPEED configurano la porta seriale, il comando SUBMIT serve per eseguire files batch (sì, bisognava chiedere manualmente SUBMIT AUTOEXEC.BAT), il comando TOD visualizza e modifica data e ora, mentre il comando HELP (comando interno) addirittura un help contestuale sui comandi (davvero innovativo, per l'epoca!).

Il comando ASSIGN somiglia a quello DOS; COPYDISK è il diskcopy (ma no!), mentre ED è l'editor, FUNCTION il programma per configurare i tasti funzione della tastiera (per esempio, di default si parte con F1="dir"), e infine ci sono i tool di sviluppo: ASM86, DDT86, GENCMD (assembler, debugger e linker)!

Insomma, sistema operativo completo, con kit di sviluppo (compilatore, editor, assemblatore e linker, etc) e perfino help in linea. Niente male per un sistema operativo nato tra il 1979 e il 1981. Ma il bello deve ancora venire.

Quando il sistema parte, esce la scritta "loading track 0... 1... 2..." ad ogni traccia che viene caricata. Se si carica da floppy disk è davvero folkloristico; da DOSemu è immediato. In ogni caso, anche su un PC/XT, il tempo di caricamento e avvio del sistema operativo è di una decina scarsa di secondi, contro i due o tre minuti primi dei sistemi operativi "moderni".

Ho notato che sotto DOSemu questo CP/M ruba parecchio tempo di CPU perché evidentemente i programmatori della Digital hanno fatto il solito ciclo "cicla continuamente finché non trovi un tasto premuto": mancando altri task concorrendi e non essendoci problemi di temperatura della CPU, se lo potevano permettere...!

Il CP/M originale, il mitico CP/M-80 2.2 (Control Program for Microcomputers, versione per 8080 e Z80) vedeva al più 64k, e quindi, con questo nuovo potente processore a 16 bit qual era l'8088, avendo scoperto che prevedeva i registri code-segment e data-segment, avendo insomma capito che l'uso "combinato" permetteva di vedere ben 128k restando lontanamente compatibili con gli sforzi dei programmatori del CP/M originale, pensarono bene di sfruttare la scia del successo del CP/M con questo nuovo potentissimo sistema operativo, rilasciato nel febbraio 1982.

Poi, magari, detti programmatori si sarebbero un giorno accorti che i registri di segmento si potevano cambiare continuamente durante il funzionamento del computer, permettendo di "spazzolare" ben più dei canonici 128k (64k per il codice e 64k per stack e dati).

Loro ovviamente erano preoccupati più del porting di vecchie applicazioni (tutte con uso massiccio di puntatori a 16 bit) che dell'uso di maggiori quantità di memoria. Erano tempi in cui con un sistema con 24k RAM si potevano caricare sistema operativo e word-processor...!



Veduta di Castellammare di Stabia e del Vesuvio

send e-mail - continua (next page)