keskiviikko 6. toukokuuta 2020

IT-historiaa: DOS, CONFIG.SYS ja AUTOEXEC.BAT

DOS oli PC-koneiden merkkipohjainen käyttöjärjestelmä, jonka Microsoft kehitti PC:tä varten IBM:lle 1981 ja alkoi sitten myydä sitä muillekin laitevalmistajille MS-DOS-nimisenä. DOS oli pahamaineinen, koska se oli kyhätty äkkiä kasaan ja PC-käyttö karkasi käsistä. Vuonna 1981 kukaan ei osannut kuvitellakaan, ettei 64 kilotavun muistin laajentaminen 10-kertaiseksi 640 kilotavuun riittänytkään. Jo muutamassa vuodessa 640 kilosta tuli rasite, jota yritettiin kiertää EMS- ja jatkomuistilla (extended). Muistirajoitukset poistuivat Windows 3.0:sta alkaen (1990) ja lopullisesti vasta Windows 95:ssä (1995).

DOSissa ei tietenkään ollut moniajoa. Eipä sille ollut käyttöäkään, koska tietoliikennettä tai graafista käyttöliittymää ei ollut. Moniajolla olisi ehkä voinut formatoida lerppua, mutta siinä kaikki. (No joo, olihan silloin BBS-purkkeja, jotka yrittivät ajaa softaa kahdella modeemilinjalla Desqview-apuohjelman avittamana, vaihtelevalla menestyksellä).

DOS oli yksinkertainen, mikä oli mainiota. Sen kaikki apuohjelmat, valitsimet ja toiminnot pystyi oppimaan. Yritäpä samaa nykyisten Windowsien tai Macien kanssa! Automaattiset, grafiikan taakse piilotetut toiminnot tekevät omia juttujaan, mikä on yleensä hienoa -- mutta jos jotain menee pieleen, mikrotuen olo on kuin lääkärillä. Ei tiedetä, mistä jokin ongelma johtuu, voidaan vain kokeilla mikä siihen auttaisi.

Ai niin, DOSissa tiedostonimien maksimipituus oli kahdeksan merkkiä. SIIS KAHDEKSAN! Ja sitten oli vielä 3 merkin tarkennin. Yritäpä siinä sitten nimetä tiedostosi ymmärrettävästi.

Kun muistelin vanhoja aikoja, muistiin ponnahti heti hokema COM - EXE - BAT. Mikäli oletushakemistossa tai hakupolussa oli komentoa vastaava ohjelma, sitä etsittiin tässä järjestyksessä. BATit olivat komentojonoja (skriptejä, sanoivat Unix/Linus-käyttäjät silloin ja mekin nyt). Ne olivat alhaisimmalla prioriteetilla, COMit olivat ylimmällä.

Buuttilevykkeellä tai kiintolevyllä piti olla CONFIG.SYS ja AUTOEXEC.BAT. Vieläkö osaisit virittää ne ulkomuistista? Yksinkertaiset tekstitiedostot varasivat muistista tilaa tiedostopuskureille, latasivat ajureita, säätivät (myöhemmissä versioissa) muistinhallintaa ja lopuksi ajettiin AUTOEXEC.BAT, joka otti käyttöön suomenkielisen näppäimistön, asetti hakupolun, komentopromptin muodon ja niin edelleen.

Tyypilliset CONFIG.SYS ja AUTOEXEC.BAT-tiedostot.
Jos parempaa editoria ei ollut, piti käyttää DOSin mukana tulevaa EDLINiä. Se toimi yhden merkin pituisilla komennoilla rivi kerrallaan. Jokainen rivi piti hakea erikseen muokkausta varten sen nimen perusteella. Hullunkuriselta kuulostava systeemi oli perua vanhoista paperipäätteistä, joissa tietokoneen kanssa keskusteltiin kirjoittamalla komentoja ja kone vastasi omalla kirjoituksellaan. Keskuskoneaikana kaikilla ei todellakaan ollut pääsyä sellaiseen ylellisyyteen kuin merkkipohjainen CRT-näyttöpääte.

Kas näin editoitiin tiedostoa rivi kerrallaan, vihreän fosforin CRT-näyttö paperipäätettä matkien:

EDLIN in action.
DIR näytti hakemistolistauksen tiedostot:

DIR-tiedostolistauksen alkua.
Levyn vapaa tila ja tiedostojen määrä selvisi CHKDSK-ohjelmalla. Tässä XT-koneessa onkin myöhempää mallia oleva 20 megatavun kiintolevy (joka tuli markkinoille IBM AT:n yhteydessä 1984):

CHKDSK ja vielä 4,3 megatavua vapaana levyllä.
DOS-ikkuna on vielä uusissakin Windows-versioissa, vaikkei sillä ole mitään tekemistä DOSin kanssa. Komennot ja apuohjelmat ovat kuitenkin samanlaisia, joskin niissä on paljon uusia valitsimia ja kokonaan uusia ohjelmiakin. Pidän edelleen auki merkkipohjaista ikkunaa, sillä jotkin kopioinnit ja tiedostojen hakemiset on helpompaa tehdä merkkipohjaisilla komennoilla. Kun ne on kerran oppinut, ne muistaa lopun ikäänsä.

Lerput, 10 megan kiintolevyt, 640 kilon muistirajoitus, CONFIG.SYS... olihan se kaikki alkeellista tämän päivän mittapuulla ajatellen. Mutta silloin kaikki toimi, ja jos ei toiminut, sen pystyi itse korjaamaan manuaaleja lukemalla. Nykyisten koneiden kanssa virheiden selvittäminen on taistelua henkien kanssa.

15 kommenttia:

Nimetön kirjoitti...

Petteri Järvinen kirjoitti kattavasti dossista, mutta jäi mainitsematta Gary Kildall ja Digital Research. Kun dossi jo vaipunut syvälle historian unohdukseen nuoremmille, on paikallaan muistuttaa MS-DOS:n esikuvasta, CP/M-käyttöjärjestelmästä. Se oli ennen IBM PC:tä yleisin kotitietokoneiden, "mikrojen", käyttis.

Petteri Järvinen kirjoitti...

CP/M oli mikrojen ensimmäinen yleiskäyttöjärjestelmä, eli sovellukset pystyi tekemään usealle konemerkille kerralla. DOS-komennot ovat CP/M-komentojen perua, useimmat lähes samoja mutta laajennetuin valitsimin. CP/M-koneissa ei muuten ollut kelloja eikä kalenteria, joten tiedostoissa ei ollut päiväyksiä. Aluksi IBM PC:hen sai myös CP/M86-version, mutta se jäi nopeasti syrjään.

Ja kaikkein tunnetuin CP/M-sovellus oli tietenkin WORDSTAR! Se selvisi myös DOS-aikaan. Pitääkin kirjoittaa vanhoista tekstureista oma teksti ehtiessäni.

Nimetön kirjoitti...

Minulle ensimmäinen tietokone oli kaverin Sinclair Spectrum joskus 1983, mutta ensimmäinen oikeaan käyttöjärjestelmä oli koulun Compis-tietokoneiden CP/M. Vuosi oli 1985, lukiomme oli kokeilukoulu, jossa oli mahdollista ottaa pari ATK-kurssia, fysiikan ja kemian laboratoriota ei ollut, se oli saanut tehdä tilaa ATK-luokalle. Noissa ruotsalaisissa koneissa taisi muuten olla harvinainen 80186-prosessori, joka aiemman jutun kommenteissa mainittiin.

Compikset olivat omassa verkossaan, jossa niillä oli yhteinen printteri. Yhdessä koneista oli myös värimonitori, oli näppärää, kun pystyi tulostamaan ruudulle käyriä eri väreissä, muilla koneilla piti käyttää eri viivatyylejä tai symboleja.

Zarr kirjoitti...

Tekstureista ei sitten pidä unohtaa suomalaista TEKOa.

Jari kirjoitti...

Microsoft aloitti "vain" BASIC-tulkkien valmistajana. Se sai kuitenkin ison jalansijan kotimikroissa, koska tulkit sijaitsivat ROM-piireissä ja käynnistettiin automaattisesti. Esimerkiksi Commodore tilasi basicinsa heiltä. DOS-käyttöjärjestelmäänkin kuului BASIC-tulkki, mutta se piti käynnistää erikseen. Niitä oli Basica, GW-BASIC ja QBASIC. Ne katosivat lopulta kokonaan XP:n myötä.

Vaikka basicit olivat alkeellisia, kynnys ohjelmoinnin aloittamiseen oli melkein olematon, muutama näppäimen painallus. Ennen oletettiin, että käyttäjä komentaisi laitteistoa lähes suoraan. Ovathan Python ja Ruby tehokkaita, mutta eivät ne ole samalla tavalla integroidu järjestelmään. Esimerkiksi Pythonille pitää ladata kirjasto, jos haluaa piirtää viivan tai tulostaa värejä.

Nimetön kirjoitti...

Jari sanoi:
"Microsoft aloitti "vain" BASIC-tulkkien valmistajana."

Microsoft aloitti nimellä Traf-O-Data. Tuotteena CP/M:n päällä toiminut liikenteenseurantasofta. Siitä siirryttiin (Altair) Basiciin, jollaista myytiin MITS Altair 8800 -koneenrakennussarjan mukana.

Bill Gates kirjoitti Basicia laittomasti jakaville harrastajille avoimen kirjeen.

Jokke kirjoitti...

Olin dos-maailmassa ja mainitut komentojonot tulivat tutuiksi. Pidin dossista, ja sääli kun windows tuli päälle. Luin blogin pitäjän Dos-oppaita, mutta myös mainion Seppo Rothin ja Erik Ahosen dos-jippo kirjan, Kaikki mitä olet aina halunnut tietää tietokoneista, mutta et ole koskaan osannut kysyä, siinä oli 222 "vinkkiä".
Minulla on vielä PC, jonka aina välillä buuttaan diskeltillä, jotta saan pelattua pelejä, jotka vaativat sitä "konventionaalista RAM-muistia?" 640 kilosta yli 580 kiloa, ja silloin piti riisua autoexec.bat ja config.sys äärimmilleen.-

Markus kirjoitti...

Ei ne muistirajoitukset kyllä Windows ysivitosessa ihan vielä poistunut. Suureni kyllä runsaasti ja taas kerran uskomattomiin lukemiin, olisiko peräti gigatavuun. Ei tainnut ysivitonen ja ysikasi kyllä gigatavuakaan syödä. Puoli gigaa maksimissaan. En tiedä varmaksi mutta sen ajan käytölle ja keskimääräisille muistinmäärille (32/64 tai jopa 128 megatavua) puoli gigaa oli valtava määrä. Ysi-sarjalaiset ei kuitenkaan toiminut vakaasti kovinkaan suurilla muistimäärillä. Tästä rajoitteesta päästiin vasta NT-aikakautena (kotikäytössä) joka 32 bittisenä syö sen kolme gigaa muistia. Haittaa suuremmasta määrästä ei ollut mutta 32 bittisyys matemaattisesti rajoitti määrän kolmeen gigaan. Vasta Windows 7 myötä kotikäyttöönkin tuli "esiasennettuna" 64-Bittinen pohja (vaikka jopa XP:stä moinen erikoisversio erittäin huonolla ajurituella oli). Kuitenkin tarvittiin 64 bittinen pohja, jotta muistirajoitukset poistuivat ainakin vielä toistaiseksi.

Eikä pelkkä keskusmuisti ollut ongelma, vaan myös levytilat olivat ongelma. DOS/Windows 3.1/11 aikaan oli ongelmana jo jopa 540 megatavuinen levy. Gigatavuista (Tai no teratavuista nyt puhumattakaan). Taas kerran ongelmana oli bittisyys. FAT16 joka ei vielä ensimmäisessä windows 95 ollut kovin kummoinen. Tarvittiin lisäbitti "suurten levyjen tukeen". Seuraava pykälä taisi olla 8 gigatavussa. Windows 98 sieti jo suuria levyjä paremmin mutta taas kerran tarvittiin koko tiedostojärjestelmän vaihtaminen, jotta suurten levyjen ongelmilta vältyttiin. Eli siis NTFS.

En muista enää tarkkoja lukemia tarkkaan, mutta sen muistan, että ikuinen riesa nämä "nyt tämä ongelma on ratkaistu" rajoitukset on. Ei siis voi puhua, että jokin rajoite on nyt ohi ja nyt ollaan loputtoman äärellä. Aina se seuraava rajoite on horisontissa näköpiirissä, aina yhtä "mahdottomana".

Seuraava iso ongelma onkin Linux/Unix ajan laskentaan liittyvän numerosarjan loppuminen. Joskus 30-luvulla sekin on edessä. Voi taas vaikuttaa etäiseltä ongelmalta mutta oikeastaan koskettaa lähes kaikkia ja kaikkea. Molemmat kännykkäalustat on unix(apple) tai linux (android) pohjaisia, sekä tietysti koko maailman palvelinkanta. iOT laitteet. Kaikki älytelevisioista älyjääkaappeihin, autot... Siitä voi taas miettiä mikä ongelma edessä on about vuosikymmenen päästä.

Nimetön kirjoitti...

Paljon muistoja tulvahti mieleen tästä historia-blogista, lisää tällaista. 80-luvulla saattoi vielä kuvitella ymmärtävänsä jotain käyttöjärjestelmän ja ohjelmien toiminnasta, verrattomana apuna Petterin mainiot DOS-oppaat. Esim. dos-tekstinkäsittely oli kyllä sujuvuudeltaan ylivertainen mihin tahansa nykyiseen ohjelmistoon verrattuna, kunhan vain näki hiukan vaivaa komentojen opettelemisessa.

Jari kirjoitti...

Oliko osoiteavaruuden rajallisuus tai moniajon puute todellinen ongelma? Minun muistikuva on se, että 16-bittiset ohjelmat toimivat vakaammin kuin 32-bittiset. Muistin käyttö kun oli ennalta suunniteltua - todennäköisesti käytettiin pelkkää staattista muistivarausta. Moniajo toteutettiin herrasmiesperiaatteella: Windows-ohjelma saattoi lukea järjestelmän viestijonoa ja sai pieneksi aikaa kaiken prosessoriajan, mutta sen jälkeen se luovutti suorituksen takaisin käyttöjärjestelmälle. Väitteet siitä, että Windows 3.1:ssa yksi ohjelma saattoi kaataa koko järjestelmän ovat outoja. Kyllä silloinkin käytettiin suojattua muistia ja jumittunut ohjelma voitiin keskeyttää.

Nimetön kirjoitti...

Moniajon puute oli todellinen ongelma. Työskentelin 90-luvun alusta tieteellisen laskennan parissa, kun työasemien teho alkoi kasvamaan, niin yhä suurempi osa tehtävistä siirtyi keskuskoneilta niille. Nämäkin ajot saattoivat kestää tunti- tai päiväkausia, ilman tehokasta moniajoa oltaisiin oltu kuusessa. Nuo työasemat olivat aluksi Sunin ja muiden valmistajien Unix-myllyjä, myöhemmin Linuxin myötä siirryttiin PC-rautaan. Ja nykyäänhän Windowsissakin tapahtuu kaikenlaista taustalla.

Mitä tulee tuohon yksi ohjelma saattoi kaataa koko järjestelmän, niin tottahan se oli. Monesti jumi oli niin paha, että esim. näppäimistö ei ottanut mitään vastaan, edes "kolmen sormen tervehdys" ei auttanut, vaan oli IVO-buutti edessä. Pelien kanssa tämä oli tavallista vielä 98SE:n aikaan. Linuxin (ja mahdollisesti Windows NT:n) kanssa pystyi monesti loggaamaan toiselta koneelta ja tappamaan järjestelmän jumittaneen prosessin tai ainakin ajamaan koneen hallitusti alas.

Petteri Järvinen kirjoitti...

Mutta tuskin ne tieteellisen laskennan raskaat työt DOSilla pyörivät? Ja vaikka olisivat pyörineet, mitä olisit halunnut tehdä laskennan aikana samalla koneella? Itse en olisi uskaltanut koskeakaan tietäen, että kone voi jäädä jumiin ja monen tunnin laskentatyö menee hukkaan.

Jari kirjoitti...

Monet ongelmat johtuivat enemmän rajoitteiden rikkomisesta kuin rajoitteista itsessään. DOS ja Windows 3.1 olivat 16-bittisiä järjestelmiä, mutta uudet sovellukset halusivat hyödyntää 386-prosessorin 32-bittisyyttä. Laskentaohjelmat käyttivät Win32s-laajennusta ja pelit DOS/4G. Tässä mentiin AUTOEXEC.BAT:n ulkopuolelle, enkä näe että Windows 9x olisi koskaan kunnolla toiminut 32-bitillä. Mutta niin kauan kun pysyttiin 16-bitissä ja laadukkaissa ohjelmissa (ja konventionaalisen muistin optimoinnissa), järjestelmä toimi kuin Linux. -- Paitsi että 16-bittiselle laskennalle ei ollut enää käyttöä, ja muutos oli välttämätön.

Hukka kirjoitti...

Kyllähän sitä nuorena DOS:sin kans tuli painittua paljonkin. Tuli käytyä nuorena ammatilliset opinnot ja opiskeltua CNC-puusepäksi. Koulun nopein PC oli tuolloin 386 DX. Tietokoneluokassa oli 286 koneita. Kaikki piti DOS:silla vääntää :)

Nimetön kirjoitti...

"Mutta tuskin ne tieteellisen laskennan raskaat työt DOSilla pyörivät? Ja vaikka olisivat pyörineet, mitä olisit halunnut tehdä laskennan aikana samalla koneella? Itse en olisi uskaltanut koskeakaan tietäen, että kone voi jäädä jumiin ja monen tunnin laskentatyö menee hukkaan."

Eivät useita päiviä kestävät, niitä pyöritettiin Unix-koneissa ja myöhemmin Linuxilla. Mutta DOS:silla pyöriviä analyysiohjelmia oli kyllä jonkin verran, kun DOS myöhemmin putosi Windowsista, niin osaa niistä käytettiin vielä jollakin FreeDOS:silla ja myöhemmin Dosemussa.

Tieteellisen laskennan ja muun tutkimustyön puolella oli ja on edelleen paljon todella vanhaa koodia käytössä, moneen spesifiseen tarkoitukseen ei ole kaupallista koodia ja paras vaihtoehto on joskus alunperin 80-luvun puolivälissä jossakin yliopistossa tehty koodi, jonka kääntääkseen saattaa joutua seisomaan päällään.