Menu

PC/MS DOS 2.x

..:: Data di Rilascio: 8 marzo 1983, costo: 40.00$ ::..

L'8 Marzo del 1983, IBM annuncia il PC DOS 2.0, pensato per il nuovo PC/XT, dotato di più memoria e di un hard disk di serie.
IBM ha ormai il vento in poppa, e, in due anni dal lancio del 5150, gli utenti guardano BigBlue come nuovo leader di settore, mentre il DOS si afferma sempre più come il sistema operativo di riferimento.

dos-2.0-boot

PC DOS 2.0 Command Prompt

La nuova versione del DOS è la prima scritta interamente da Microsoft, con un design che, abbandonato quello del Q-DOS, si rifà all'esperienza maturata con XENIX. I principali sviluppatori dispiegati dalla società di Redmond sono in tutto 6: Paul Allen (Team Lead), Mark Zbikowski (zibo), Aaron Reynolds, Nancy Panners, Chris Peters, e Mani Ulloa.

ibm-ms_dos_210_package

La maggiore novità della versione 2.0 è l'estensione al file system FAT in grado, ora di supportare gli Hard Disk con partizione fino a 10MB (FAT12). Altro elemento particolarmente rilevante è la possibilità di allocare e deallocare dinamicamente i programmi in memoria.
Dal mondo Xenix sono tre gli elementi principali che vengono presi in prestito:

          • Strutturazione gerarchica delle directory, soluzione diametralmente opposta a quella utilizzata dalle prime versioni del CP/M che prevede di suddividere logicamente il disco in mini-partizioni della dimensione di un floppy (floppy-sized partitions). In questo frangente viene mantenuto per retro-compatibilità il backslash come separatore del percorso su disco, perdendo l'occasione di riallineare il DOS con il mondo UNIX e CP/M;
          • Ridirezione dell'I/O (pipes), questo consente di trasformare l'output di un programma nell'input di un secondo programma o di scrivere il risultato dell'elaborazione su file. La gestione della pipe è demandata al COMMAND.COM che crea un file temporaneo come "collante" tra i due programmi, soluzione obbligata visto che il DOS non supporta l'esecuzione concorrente di più applicazioni, al contrario di Unix dove, di conseguenza, la pipe può essere gestita in memoria. Un utilizzo diretto delle pipe è possibile tramite il nuovo comando MORE.COM che, ad esempio, in congiunzione con TYPE ('TYPE foo.txt | MORE') permette di paginare la visualizzazione del file su video. Allo stesso modo è possibile utilizzare SORT.EXE per ordinare l'output di un programma;
          • Esecuzione in Background (daemons), pensata per aggirare la succitata limitazione di non poter eseguire più processi in contemporanea. Nascono i TSR (Terminate and Stay Resident), ovvero programmi residenti in memoria che rispondono a specifiche chiamate di sistema. Il primo utilizzo è associato a PRINT.COM che consente di creare una sorta di spooler di stampa, molto utile per non bloccare l'utilizzo del sistema in caso di stampe molto lente. In realtà i TSR non vengono ben documentati e creano diverse interpretazioni, spesso fantasiose, che minano la stabilità del sistema stesso (essendo il sistema operativo not-reentrant). La situazione verrà migliorata solo con il DOS 5.0 in cui il tutto sarà sufficientemente documentato e rodato.
        • Del tutto nuovo è, invece, il concetto di Installable Driver, ovvero la possibilità di caricare un nuovo driver, specifico di una scheda di espansione, all'avvio del sistema. Nella precedente versione era necessario modificare direttamente il kernel per supportare il nuovo hardware, ma con la rinnovata strategia "open" di IBM legata al PC/XT, si rende necessario un modo più flessibile per supportare le nuove espansioni.
          Questa nuova versione gestisce in modo leggermente diverso il caricamente dei file ".EXE": infatti, il sistema operativo esegue un check alla signature del file (primi 2 byte) per verificare se è effettivamente un file eseguibile o se si tratta di un file rinominato impropriamente. Tale signature riporta le iniziali di Mark Zbikowski (MZ), creatore del formato denominato DOS MZ executable.

Nasce così anche il file CONFIG.SYS che viene caricato automaticamente all'avvio del sistema operativo ed in cui è possibile definire quali driver (.SYS, tipicamente) caricare. L'idea dei driver deriva anch'essa da Unix, ma Microsoft la estende in "chiave binaria" (binary driver), ovvero un file che può essere caricato su versioni ed edizioni OEM diverse del DOS senza la necessità di incorporarlo direttamente a livello di Kernel. Notare che l'unico device driver fornito di default è ANSI.SYS, per l'emulazione di uno specifico terminale. La soluzione caratterizzerà in modo imponente la gestione di tutte le periferiche nel decennio successivo, se non oltre.

Il nuovo sistema richiede circa 12KB (in totale circa 30KB) di memoria in più del suo predecessore, supporta i floppy da 180KB e 360KB (in aggiunta a quelli da 120KB e 320KB) grazie ad una formattazione che contempla 9settori per traccia, anziché 8 come nella versione precedente.
La sua distribuzione avviene su un floppy primario da 180KB, per retro compatibilità con i vecchi sistemi, e un floppy "supplementare" dove trovano posto i tool di sviluppo: LINK, DEBUG, e EXE2BIN, unitamente a diversi esempi BASIC, il tutto sostanzialmente identico a quanto presente nella release 1.1. Si ricorda che l'interprete BASIC, nel caso del PC/XT originale, è residente nel BIOS.
Sul fronte delle utility, compare FDISK (scritto da David Litton di IBM), che consente di partizionare i dischi sfruttando l'interfaccia INT 13h fornita dal BIOS, vista l'alta dipendenza con le specifiche hardware. FORMAT, SYS, CHKDSK, BACKUP, e RESTORE vengono aggiornate per supportare i dischi rigidi e, per la prima volta (sfruttando la terna FDISK, FORMAT, e SYS) è possibile rendere un hard disk bootable senza, quindi, costringere ad effettuare il boot da floppy.

dos-2.0-fdisk

FDISK

Del tutto nuovo anche il comando ASSIGN.COM, indispensabile per consentire il funzionamento delle applicazioni pensate per il DOS 1.x e non in grado di utilizzare le directory annidate: il comando permette di associare una specifica directory ad una lettera di unità. Anche il comando TREE.COM (scritto da IBM) entra nel DOS 2.0, consentendo di visualizzare la struttura gerarchica delle directory (l'opzione /S del comando DIR non è ancora presente).
Il COMMAND.COM è chiaramente interessato da numerose modifiche, molte necessarie per supportare la nuova strutturazione del file system e derivate da una logica Unix-Like: CD/CHDIR per cambiare directory, MD/MKDIR per creare un directory, PATH per settare il percorso di ricerca di un file eseguibile, VOL per conoscere la label del volume e VERIFY per effettuare una verifica di lettura post scrittura (read-after-write verification). Sempre nel COMMAND.COM (2.0) troviamo il comando CLS, per pulire la console, CTTY, per cambiare la console di input/output da cui vengono impostati i comandi, PROMPT, per cambiare lo stile del command prompt (old C>, new C:\>), ECHO e VER. Molto interessante il potenziamento delle funzionalità di batch che ora supportano il costrutto condizionale IF, oltre alle istruzioni ERRORLEVEL, NOT, FOR, GOTO, SHIFT ed EXIT.
Infine una piccola curiosità: il DOS 2.0 (e il successivo 2.1) è anche il primo a contenere un innocente "Easter Egg" al suo interno. Infatti una volta avviato il programma RECOVER.COM (da utilizzare per tentare il recupero di file e/o settori disco danneggiati) se alla richiesta "press any key" si preme la coppia di tasti CTRL-W, compare la scritta "Chris Peters helped with the new dos! Microsoft rules ok".

dos-2.0-recover

Recover

Sempre Chris Peters è accreditato della "2second rule": in sostanza Peters è convinto che nessun utente può cambiare un floppy in meno di 2 secondi. Dopo aver confutato, con diverse prove, la sua tesi, viene implementato nel DOS un meccanismo rudimentale di caching basato sulla verifica della disponibilità del floppy e del passaggio di 2secondi dall'ultima operazione effettuata. Per quanto rudimentale, il sistema permette di migliorare decisamente le performance di I/O.
La release originale è seguita dopo pochi mesi (ottobre dello stesso anno) dalla minor release 2.01, che aggiunge il supporto al set di caratteri internazionali (tramite la keyword COUNTRY all'interno del file CONFIG.SYS) indispensabile per sdoganare il nuovo sistema al di fuori degli Stati Uniti. Tale versione è pensata solo per gli OEM visto che IBM non commercializza i PC al di fuori del Nord America.

A novembre del 1983 viene rilasciato il PC DOS 2.1 con il supporto al neonato PC IBM Jr. e basata sulla versione 2.0, quindi senza il supporto per il set di caratteri internazionali aggiunto dalla 2.01, per esplicita richiesta di IBM. Ben presto, però, Microsoft rilascia la versione 2.11, che unifica le varie edizioni e diventa l'OS di riferimento soprattutto presso gli OEM terzi, sia PC Compatibili (Toshiba, COMPAQ e Zenith in primis) e sia non-compatibili ma comunque 8086-based ed in grado di eseguire il DOS (Tandy 2000, Hewlett-Packard HP150).

dos211_command_prompt

MS DOS 2.11 Command Prompt

In realtà, quest'ultima categoria di macchine soffre della possibilità delle applicazioni di bypassare il sistema operativa e di accedere direttamente all'hardware, causando non pochi problemi di stabilità e relegandole a pochi esemplari. Nel caso delle versioni OEM per i calcolatori PC-Compatibili, va segnalato che le utility scritte direttamente da IBM non sono disponibili con l'edizione specifica del DOS e quindi vanno riscritte dal produttore stesso. Un esempio per tutti: FDISK.

wyse-dos-2.11-fdisk

WYSEpc FDISK

Sempre con le versioni OEM arriva anche il GW-BASIC, fornito direttamente su floppy, visto che, tipicamente, i cloni IBM non hanno un interprete BASIC integrato in ROM. Va ricordato che il BASIC, nel periodo di riferimento, è ritenuto un must a cui non è possibile rinunciare.
Infine ogni produttore riceve un OEM Adaptation Kit (OAK), contenente il codice sorgente dell'IBMBIO.COM (o dell'IO.SYS) e un object file relativo all'IBMDOS.COM (o MSDOS.SYS), insieme al codice sorgente di diverse utility per la gestione dei dischi come FORMAT.COM. La scelta è chiaramente dovuta al fatto che sono i singoli produttori a dover adattare il sistema operativo ai propri calcolatori, laddove necessario.

Release ufficiali: 2.0 (Retail), 2.1 (Retail), 2.11 (Retail), Version 2.2 (Retail), 2.21 (Retail)