This document is also available in English. Dieses Dokument ist auch auf Deutsch erhältlich.

Marko Mäkelä: vanhat tietokoneet: C2N232, RS-232-liitäntäinen kasettiasemaemulaattori

1. Mikä C2N232 on?

C2N232 on pieni RS-232-sovitin, joka voidaan liittää 8-bittisen Commodore-tietokoneen kasettiasemaliitäntään:

1.1 Mistä nimi C2N232 on peräisin?

Nimessä C2N232 on kaksi osaa: C2N ja 232. C2N on Commodore-kasettiaseman alkuperäinen mallinimi. Luku 232 viittaa RS-232:een, joka on tahdistamattoman sarjamuotoisen tiedonsiirron hallitseva standardi.

1.2 Minkä Commodore-mallien kanssa C2N232 toimii?

Laite on mahdollista kytkeä mihin tahansa Commodore-tietokoneeseen, jossa on kasettiasemaliitäntä. 264-malliston koneisiin liitettäessä on käytettävä sovitinta, sillä liitin on erilainen.

Laitetta voidaan käyttää myös muiden 8-bittisten tietokoneiden kanssa. Varusohjelmisto tuntee myös Tangerine Oric-1:n tallennusmuodon.

1.3 Mitä ohjelmia C2N232:een liittyy?

c2n
matkii Commodoren alkuperäistä tallennusmuotoa (LOAD, SAVE, OPEN)
c2nload
pikalatausohjelma, joka latautuu ja käynnistyy alle 10 sekunnissa ja lataa varsinaisen ohjelman 38 400 bitin sekuntivauhdilla
faucet
matalan tason kasetinkuvien (.tap) latausohjelma
cisp
mahdollistaa C2N232:n sisäänrakennetun ohjelman vaihtamisen
cbmlink
mahdollistaa Commodore-koneiden etäkäytön sekä muistin, tiedostojen ja levykkeiden kopioinnin
cbmconvert
muuntaa Commodore-koneiden tiedostoja muodosta toiseen

1.4 Kuinka RS-232-liitäntä on kytketty?

RS-232-liitin on naaraspuolinen 9-nastainen D-liitin, eli se sopii suoraan IBM PC/AT -tyylisen sarjaliitäntään.

Tavallisesti C2N232:n RS-232-päähän liitetään jatkojohto. Vähintään kolme johtoa on kytkettävä: nastat 5 (maa), 2 (lähetetty tieto) ja 3 (vastaanotettu tieto). 25-napaisessa liittimessä vastaavat nastat ovat numeroiltaan 7, 3 ja 2. Koska C2N232:n liitin on kytketty DCE:n tapaan, nollamodeemijohtoa ei pidä käyttää.

2. Peruskäyttö

2.1 Kuinka lataan ohjelman?

Seuraavassa oletetaan, että sinulla on Commodore 64.

2.1.1 Helpoin tapa: c2nload

  1. Paina SHIFT-näppäin pohjaan ja näpäytä STOP tai kirjoita LOAD ja paina RETURN.
  2. Commodore vastaa PRESS PLAY ON TAPE.
  3. Käynnistä siirto isossa koneessa seuraavaan tapaan. Voit muuttaa tiedostonimeä, sarjaliitännän laitekuvaimen nimeä tai tietokoneen mallia tarpeen mukaan.
    Commodore AmigaOS:
    c2nload -c serial.device -m 64 file.prg
    Microsoft Windows:
    c2nload -c com1 -m 64 file.prg
    Unix:
    c2nload -c /dev/ttyS0 -m 64 file.prg
  4. Commodoren näyttö pimenee.
  5. Commodore vastaa FOUND FILE.PRG.
  6. Paina C=-näppäintä välittömästi tai pidä se pohjassa niin kauan, kunnes FOUND-viesti välähtää näytössä, jotta tietokoneelta ei jää ohjelman loppu lataamatta, sillä C2N232 ei tottele moottorinohjausviestejä. Älä paina välilyöntiä, sillä kone saattaa jättää lopun väliin ja jäädä odottamaan seuraavan tiedoston alkua.

Jos ohjelma on käynnistettävä SYS-komennolla, voit antaa SYS-osoitteen -j-vivulla.

2.1.2 Monipuolisin tapa: cbmlink

  1. Lataa cbmlink-palvelin edellisen kohdan ohjeiden mukaisesti, esimerkiksi c2nload -c /dev/ttyS0 -m 64 -j 52224 cbmprg/c2n232/c64/plain.prg.
  2. Commodore vastaa lopulta READY.
  3. Nyt cbmlink voidaan ajaa isossa koneessa.
    Commodore AmigaOS:
    cbmlink -c c2n232 serial.device
    Microsoft Windows:
    cbmlink -c c2n232 com1
    Unix:
    cbmlink -c c2n232 /dev/ttyS0
  4. Voit kopioida cbmlink-palvelimen levykkeelle lataamisen nopeuttamiseksi ja automatisoimiseksi Commodore 128:n käynnistyslohkon avulla. Huomaa, että nykyisen cbmlink-ohjelman valitsimet -fr ja -fw eivät muunna tiedostonimien merkistöä eivätkä poista hakemistonimiä eivätkä päätteitä tiedostonimistä. Kannattaa nimetä tiedosto uudelleen ensin, esimerkiksi C64 SYS52224. Commodore 64:n palvelinohjelma voidaan kopioida levykkeelle seuraavasti.
    Commodore AmigaOS:
    cbmlink -c c2n232 serial.device -fw cbmprg/c64/plain.prg
    Microsoft Windows:
    cbmlink -c c2n232 com1 -fw cbmprg\c64\plain.prg
    Unix:
    cbmlink -c c2n232 /dev/ttyS0 -fw cbmprg/c64/plain.prg

2.2 Eikö kasettiaseman matkiminen ole hidasta?

Kyllä, mutta kasettiaseman matkintaa tarvitaan vain c2nload-pikalatausohjelman lataamiseen, joka kestää muutaman sekunnin. Varsinaisten ohjelmien siirtoa jarruttaa RS-232-liitännän nopeus, 38 400 bittiä eli noin 3 840 tavua sekunnissa.

2.3 Voidaanko matalan tason kasetinkuvia (.tap-tiedostoja) ladata?

Ohjelma faucet kykenee toistamaan joitakin tiedostoja.

2.4 Toimiiko C2N232 minkään pääteohjelman kanssa?

Valitettavasti nykyistä C2N232-koodia voi ohjata vain RS-232-liitännän välityksellä. Myöhemmin julkaistava koodi mahdollistaa C2N232:n ohjaamisen myös Commodoren puolelta.

2.5 Ohjelmisto ei toimi oikein Windowsissa!

Oletko varma, että FIFO-puskurit on asetettu käyttöön laitehallinnassa?

Laitehallintaan pääsee Ohjauspaneelista. Kaksoisnapsauta kuvaketta Järjestelmä avataksesi ikkunan Ominaisuudet: Järjestelmä. Valitse välilehti Laitehallinta. Windows 2000:ssa kyseinen välilehti on korvattu välilehden Laitteisto painikkeella Laitehallinta.

Valitse esille tulevasta laiteajuriluettelosta Portit (COM ja LPT) sekä se sarjaliitäntä, johon C2N232 on kytketty.

Ikkuna Ominaisuudet: Tietoliikenneportti (COMx) avautuu. Valitse välilehdeltä Porttiasetukset vuonohjaus Laitteisto ja paina Lisäasetukset avataksesi ikkunan Porttien lisäasetukset. Varmista, että kohta Käytä FIFO-puskureita on valittu.

Kaikkien muiden asetusten pitäisi olla C2N232-ohjelmiston hallinnassa. Elleivät ohjelmat edelleenkään toimi, käytä ikkunan Porttien lisäasetukset painiketta Oletukset tai ikkunan Ominaisuudet: Tietoliikenneportti välilehden Porttiasetukset painiketta Palauta oletukset.

2.6 Ohjelmisto ei toimi oikein USB-sovitinten kanssa!

USB-RS-232-sovitinten ajurit ovat pääsääntöisesti puutteellisia. Mac OS X:ssä toimivat Keyspanin valmistamat sovittimet. Prolific PL-2303:llä toteutetut sovittimet toimivat ainakin Windowsissa ja GNU/Linuxissa pienin ohjelmistomuutoksin. Kalliista hinnastaan huolimatta FTDI:n sovittimet ja mikropiirit eivät ole suositeltavia, sillä Linux-ajuri ei lähettäessään toteuta minkäänlaista vuonohjausta. Windows-ajurikin näyttää yleensä olevan piittaamatta vuonohjauksesta.

Prolificin elokuussa 2005 julkaisema Windows-ajuri voi kaataa koneen. Linux-ajurissa ei toimi XON/XOFF-vuonohjaus, mutta onneksi edes CTS/RTS toimii oikein.

3. Kuinka laitteen ohjelmisto päivitetään?

C2N232-laitteen sisältämä koodi päivitetään RS-232-liitännän välityksellä käyttämällä Unixia tai Windowsia.

3.1 Kuinka johdot on kytkettävä?

On kytkettävä neljä aktiivista signaalia (RxD, TxD, CTS ja RTS) sekä kytkettävä mikro-ohjaimen AT90S2313 RESET-linja (nasta 1) maahan (nasta 10, RS-232-liitännän nasta 5 tai kortinreunaliittimen nasta 1). Lisäksi piirilevyyn on kytkettävä käyttöjännite.

Piirilevyn tuotantoversiossa on kaksi hyppylangan paikkaa. Toinen, joka on osittain mikro-ohjaimen alla, voi olla aina kytkettynä. Toinen, AT90S2313:n RESET-kytkin, sijaitsee kasettiliittimen vieressä. Se on suljettava koodin päivittämisen ajaksi.

3.2 Kuinka ohjelmisto käynnistetään?

Aluksi voit kopioida nykyisen koodin talteen kirjoittamalla seuraavanlaisen komennon.

Commodore AmigaOS:
Valitettavasti cisp-ohjelmaa ei ole vielä sovitettu Amigalle.
Microsoft Windows:
cisp -c c2n232 com1 -s firm-old.s19
Unix:
cisp -c c2n232 /dev/ttyS0 -s firm-old.s19

Avaa AT90S2313:n RESET-kytkin tai sammuta C2N232 hetkeksi. Sen jälkeen voit päivittää koodin seuraavanlaisella komennolla.

Commodore AmigaOS:
Valitettavasti cisp-ohjelmaa ei ole vielä sovitettu Amigalle.
Microsoft Windows:
cisp -c c2n232 com1 -e -l firmware.s19
Unix:
cisp -c c2n232 /dev/ttyS0 -e -l firmware.s19

Jos haluat vielä tarkistaa ohjelmoinnin onnistumisen, avaa taas RESET-kytkin tai sammuta virta hetkeksi, ja anna seuraavantapainen komento.

Commodore AmigaOS:
Valitettavasti cisp-ohjelmaa ei ole vielä sovitettu Amigalle.
Microsoft Windows:
cisp -c c2n232 com1 -v firmware.s19
Unix:
cisp -c c2n232 /dev/ttyS0 -v firmware.s19

3.3 cisp: failed to enable the programming mode

Unohditko yhdistää C2N232:n RESET-linjan maahan ja kytkeä käyttöjännitteen? Onko RS-232-liitäntä kytketty oikein? Osaako Unix-koneesi CTS/RTS-kättelyn?

3.4 detect: device is locked

Koska RESET-linja ei ole cisp-ohjelman hallinnassa, tätä virhettä on vaikea poistaa. Virhe ilmenee ainakin sen jälkeen, kun koodi on ladattu komennolla cisp -l. Lataamisen onnistumisen tarkistamiseksi C2N232:n virta on katkaistava tai RESET-hyppylanka on irrotettava hetkeksi.

4. Mistä saan C2N232:n?

Ellet halua itse rakentaa C2N232-laitetta piirilevykuvien perusteella, Nicolas Welte voi auttaa. Marko Mäkelän tuottamat 130 laitetta on myyty nyt loppuun. Edellisen valmistuserän hinta—toimituskuluineen mihin tahansa maailmassa—oli 20 €.

4.1 Miltä C2N232 näyttää?

[C2N232-piirilevyn päällipuoli]

Lisää kuvia on kuvagalleriassamme. Marko myy laitteet ilman koteloa, mutta voit tehdä kuten Nicolas Welte. Hän sovitti DB9–DB25-kotelon C2N232:lle ja liimasi siihen kasettiasemaliittimen alapuolen kiinni:

[DB9–DB25-kotelo, jonka toiselle sivulle on sahattu kaksi
 viiltoa][C2N232:n kasettiasemaliitin koteloon liimattuna]

4.2 Millainen ohjelmisto tarvitaan?

Tiedostonimi Tarkoitus Järjestelmät
c2nload Pieni itsestään käynnistyvä C2N232-pikalataaja Commodore AmigaOS, Microsoft Windows ja Unixin kaltaiset järjestelmät; kaikki Commodore-koneet, jotka osaavat ladata kasetilta
c2n Kasettiaseman matkija C2N232:lle Commodore AmigaOS, Microsoft Windows ja Unixin kaltaiset järjestelmät
cbmlink Tiedostonsiirto ja Commodore-koneiden etähallinta Commodore AmigaOS, Microsoft Windows ja Unixin kaltaiset järjestelmät

Kaikki Commodore-ohjelmat on kirjoitettu 6502-konekielellä; muu on C-kieltä. Amigalle ja Windowsille on valmiiksi käännetyt ohjelmat. Unixin kaltaisten järjestelmien käyttäjät saavat käyttää C-kääntäjää.

4.3 Mistä saan firmware-koodin?

C2N232-firmware-sivulla on lähdekoodi ja hieman dokumentaatiota. Koodin muuttamiseksi tarvitset GNU Binutilsin.

Koodin siirtämiseen tarkoitettu cisp-ohjelma, joka on saatavissa firmware-sivulta, on testattu FreeBSD:ssä, Linuxissa ja Microsoft Windowsissa. Voinet käyttää muutakin siirto-ohjelmaa.

Menneisyys ja tulevaisuus

Ajatus C2N232:n kehittämisestä syntyi 30. kesäkuuta 2001, kun Marko Mäkelä vieraili tutun Commodore-hakkerin Christopher Phillipsin luona Newcastle upon Tyne’issä. Christopherilla ei ollut mitään tiedonsiirtovälinettä Commodore 64:n ja hänen pääkoneensa, Apple Macintoshin välillä. Koska ainoa järkevä Mac-koneen liitäntä on RS-232, olemassa olevat rinnakkaisporttia edellyttävät ratkaisut eivät olleet käytettävissä.

Ensimmäinen prototyyppi valmistui heinä- tai elokuussa, ja ohjelmiston kehittäminen alkoi samoihin aikoihin.

Aluksi kirjoitin jonkin verran koodia saadakseni luetuksi kirjoitussignaalista pulssinleveyksiä voidakseni selvittää tallennusmuodon yksityiskohdat. Tim Arnot’n teoksen Commodore 64 Whole Memory Guide tiedot osoittautuivat epätarkoiksi. Kirjoitin ohjelman c2n, joka koodaa ja purkaa Commodore-kasettien pulssijonoja ja lisäsin cbmconvert-ohjelmaan Commodore-kasettien korkean tason tiedostomuodot.

Seuraavaksi toteutin pulssijonojen toistamisen. Viimeiset virheet korjattiin 11. syyskuuta 2001, kun Juha Kouri ja Turo Heikkinen vierailivat luonani Espoossa voidakseen tutkia kytkentää muistioskilloskoopilla.

Nopean tiedonsiirtomenetelmän kehittäminen kesti muiden kiireiden vuoksi useita kuukausia. Suunnittelin yhteyskäytännön kaikilla 8-bittisillä Commodore-tietokoneilla toimivaksi. Kun väylä on vapaa, molemmat signaalit, READ ja WRITE, ovat loogisessa 1-tilassa. Sekä lähetyksen että vastaanottamisen aloittaa Commodore asettamalla WRITE-signaalin loogiseen 0-tilaan. Siten yhteyskäytäntö voi toimia oikein, vaikka READ-signaalin putoamisesta kertovan rekisterin sisältö tuhoutuisi väylän ollessa vapaana. Lähetyksen ajoitus on erittäin tarkka: suorittimen kellotaajuuden on pysyttävä sen aikana vakiona.

Muistioskilloskoopille tuli taas käyttöä loka- tai marraskuussa, kun nopea tiedonsiirtomenetelmä piti saada toimimaan 264-sarjan koneissa. Muista Commodoreista poiketen niissä READ-signaali ei ole reunaherkkä.

Kahdenkymmenen laitteen esisarja valmistui ennen sarjatuotantoa. Ensimmäinen laite kasattiin tehdasvalmisteiselle piirilevylle 22. toukokuuta 2002.

Huhtikuussa 2002 tilatut komponentit saapuivat viimein heinäkuun alussa. Ensimmäiset laitteet toimitettiin heinä- tai elokuussa 2002. Kaikki 110 laitetta myytiin loppuun vuonna 2004.

Kesällä 2003 kehitin C2N232:lle liitännän Commodoren sarjaväylään. Paranneltu C2N232 matkii levyaseman tapaisia oheislaitteita, mutta jostakin syystä väyläohjaimen matkiminen, esimerkiksi komentojen lähettäminen levykeasemalle, ei onnistu. Lopetin kehittämisen joulukuussa 2003. Tuorein osittain sarjaväylää tukeva firmware-koodi ja lyhyet muistiinpanoni testatuista asioista ovat saatavilla.

En ole kiinnostunut tuottamaan uutta sarjaa C2N232:ta. Nicolas Welte on suunnitellut tuottavansa uuden laitteen, jossa on paikka sarjaväylän liittimelle, mutta tämänkaltaiset harrastushankkeet vievät joskus aikaa.

Kiitokset

Juha Kouri ja Turo Heikkinen avustivat prototyyppien tekemisessä ja mittauksissa. Nicolas Welte auttoi vaikeasti saatavien osien hankkimisessa.

Nicolas Welte ja Wolfgang Moser ovat ehdottaneet parannuksia näihin ohjeisiin.

Linkkejä