Commodore 1541

**Commodore 1541** (eli **CBM 1541**, alkuperäiseltä nimeltään **VIC-1541**) on Commodoren valmistama 5¼" levykkeitä käyttänyt levykeasema, joka tuli myyntiin vuonna 1983. Se käyttää Commodoren omaa sarjakaapeliliitäntää ja on yhteensopiva Commodoren 8-bittisten kotitietokoneiden kanssa ja oli muun muassa Commodore 64:n käyttäjien keskuudessa suosittu levyasema.

1541 käyttää kaksinkertaisen tiheyden (Double Density) levykkeitä yksipuolisena. Yhdelle levypuolelle voidaan tallentaa 170 kilotavua tietoa. Kapasiteetti johtuu siitä, että levyn koodaustapana on Group Code Recording (GCR). Myös yhdelle uralle mahtuvien sektorien määrä vaihtelee 17–21 sen mukaan, miten kaukana ura on levyn keskustasta. Monesti kaksipuolisista levyistä kuitenkin käytännössä käytettiin molemmat puolet, koska levy toimi myös ympäri käännettynä.

Asema ei voi lukea CP/M:n MFM-koodausta käyttäviä levykkeitä, mikä oli ongelma esimerkiksi Commodore 128:n kanssa, joka pystyy ajamaan CP/M-ohjelmia.
Commodorella on myös MFM-koodausta tukeva levykeasema Commodore 1571 joka on myös yhteensopiva 1541:n kanssa.

1541:ssä on oma MOS 6502 -mikroprosessori ja kaksi kilotavua RAM-muistia. Suoritin toimii sekä levykontrollerina että levyaseman käyttöjärjestelmän hoitajana: tämän ansiosta tietokonetta itseään ei tarvittu kaikkien levytoimenpiteiden tekemiseen, tietokonetta pystyi käyttämään pitkien levyoperaatioiden aikana (esimerkiksi levykkeiden alustus kesti pitkään), eikä tietokoneeseen itseensä tarvinnut asentaa ylimääräisiä laitteita eikä muistiin ladata erillisiä apuohjelmia. Levykeaseman käyttöjärjestelmä on nimeltään CBM DOS 2.6.

Liitäntä on Commodoren oma sarjaliitäntä CBM-488. Tämä väylä otettiin käyttöön VIC-20:ssa korvaamaan Commodore PET -koneissa käytetty liian kallis IEEE-448-rinnakkaisliitäntä. Liittimenä on DIN-6. Commodoren dokumentit listaavat tiedonsiirron nopeudeksi 300 tavua sekunnissa. Sarjaliitännän erittäin hidas nopeus johtuu VIC-20-koneen aiemman Commodore 1540 -levyaseman 6522 VIA -UART-piirin bugista. Viallisen komponentin vuoksi asema joutui käyttämään ohjelmallista tiedonsiirtoa ja purkamaan tavut biteiksi ja siirtämään ne yksi kerrallaan. Ominaisuus säilytettiin 1541:ssa yhteensopivuuden vuoksi.

## Käyttö
Commodore 64:ssa levykkeen hakemiston tarkastelu tapahtuu komennolla `LOAD "$",8`. Tämä lataa hakemiston BASIC-ohjelmien muistiavaruuteen (ja tuhoaa olemassa olevan ohjelman). Tämän jälkeen hakemiston voi listata komennolla `LIST`. Commodore BASIC 3.5:ssa ja uudemmissa on myös komento `CATALOG`.

Tiedoston tallentaminen tapahtuu BASIC:istä avaamalla tiedosto ja kirjoittamalle sinne.
Esimerkkikoodi:
OPEN 3,8,4,"0:TIEDOSTO,SEQ,WRITE" avaa ja luo levykkeelle TIEDOSTO-nimisen SEQ-tyyppisen tiedoston.

OPEN-komennon parametrit ovat:
*tiedoston numero (3), joka vastaa Unix-tyyppisen käyttöjärjestelmän tiedostokuvaajaa (File Descriptor, FD). Tämä on käyttöjärjestelmän tietorakenne joka ei välity levykeasemalle.
*oheislaitteen numero (8). Ensimmäinen levykeasema on numero 8 ja toinen 9. Laitteet 0--3 ovat näppäimistö, kasettiasema, sarjaportti ja näyttö.
*kommunikaatiokanava (4) tietokoneen ja levykeaseman välillä. Näin voidaan käsitellä useita tiedostoja samaan aikaan.
*lainausmerkeissä on levykeasemalle lähettävä komentorivi. SEQ ja WRITE -parametrit voi myös kirjoittaa lyhyemmin S ja Q.

Tiedostoon voi kirjoittaa käskyllä:
PRINT#3, "Terve maailma"
Tiedosto on suljettava käskyllä:
CLOSE 3.

Tämän jälkeen ohjelma:

10 OPEN 2,8,2,"0:TIEDOSTO,S,R"
20 INPUT#2, RIVI$
30 CLOSE 2
40 PRINT RIVI$

Lukee tiedostosta yhden rivin ja tulostaa sen.

Levykeaseman käyttöjärjestelmälle pääsee antamaan komentoja käyttämällä komentokanavaa, joka on kommunikaatiokanava 15. Tämän avulla suoritetaan erilaisia toimintoja, kuten levykkeen alustaminen, tiedostojen poisto ja uudelleennimeäminen, kopiointi, aseman resetointi ja tiedostojärjestelmän tarkistus (vastaa CHKDSK/fsck-toimintoja muissa käyttöjärjestelmissä). Tiedoston poisto levykkeeltä tapahtuisi komennolla: OPEN 15,8,15,"S0:TIEDOSTO":CLOSE 15.

## DOS ja tiedostojärjestelmä
1541 ja sen levykäyttöjärjestelmä voi tallentaa levylle 144 tiedostoa. Järjestelmä ei tue alihakemistoja. Päähakemisto on tallennettu varatulle uralle 18, joka on noin levyn puolivälissä. Tiedoston nimi voi olla 16 tavua pitkä ja päättyy nollamerkkiin.

Tiedostoja on eri tyyppisiä:

*`SEQ` on tavuvirta-tyyppinen (Unix-tyyppinen) tiedosto, jonka voi lukea alusta loppuun. Tiedostolla ei ole sisäistä rakennetta.
*`PRG` on ohjelmatiedosto. Tiedoston kaksi ensimmäistä tavua ovat osoite, josta KERNALin rutiini aloittaa ohjelman suorituksen.
*`REL` on rakenteinen tietokanta-tyyppinen tiedosto. Tiedostossa on indeksointimekanismi ja korkeintaan 254-tavuisia tietueita, joita voi ladata tiedoston eri kohdista.
*`USR` tämä tyyppi on identtinen SEQ-tiedostojen kanssa. Alkuperäisenä tarkoituksena oli, että nämä ovat levykeaseman levykäyttöjärjestelmän ohjelmatiedostoja.
*`DEL` dokumentoimaton tyyppi, joita ei voi suoraan luoda.

Jos hakemistolistauksessa tiedoston tyypin edessä on *-merkki, se merkitsee, että tiedostoa ei suljettu oikein tallentamisen yhteydessä ja se voi olla vioittunut. Jos tiedosto poistetaan, se merkitään *DEL-tyyppiseksi ja sen tilan voi myöhemmin käyttää uusien tiedostojen tallentamiseen.
-merkki merkitsee, että tiedosto on kirjoitussuojattu. Tällaista tiedostoa ei voi poistaa ilman kolmannen osapuolen ohjelmaa.

Tilanvaraus tapahtuu BAM (Block Availability Map) -tietorakenteella. 1541 varaa yhden tavun tallentamaan kunkin uran sektorien määrän ja kolme tavua, jotka sisältävät bittikartan uran varatuista sektoreista. Jokaisesta tiedostolle varatusta 256 tavun sektorista varataan kaksi tavua osoittamaan seuraavaa tiedostolle varattua uraa ja sektoria.

## Ongelmat
1541:ssä oli myös ongelmia. Levyn lukupäiden kohdistus meni suhteellisen helposti pois paikoiltaan, ja korjaaminen vaati huoltoa. Alkuperäisessä mallissa aseman tunnusnumeron muuttaminen oli suhteellisen vaikeaa. Toimenpide oli kuitenkin tarpeellinen, jos käytössä oli useita asemia. Asemassa on sisäinen virtalähde, mikä tuottaa runsaasti lämpöä (käyttäjien keskuudessa asemaa kutsuttiinkin usein leivänpaahtimeksi), ja se hankaloitti aseman sijoittelua.

Levyasemasta tehtiin paranneltuja malleja: **1541C **(1986) oli vaaleanvärinen malli, joka sopi paremmin Commodore 64C:n ja Commodore 128:n väreihin. **1541-II** (1988) oli pieni malli, jossa oli tehty useita teknisiä uudistuksia, ja virtalähde oli ulkoinen.

## Lähteet

## Aiheesta muualla

* VIC-1541 Single Drive Floppy Disk User's Manual,  Commodore Computer, 1981  (PDF)
* Commodore-64 Data Files -- A BASIC Tutorial , David Miller, 1984  (PDF)