A memory-preserving reset button can be useful for a developer, cracker or a cheating gamer, too. Got my hands finally on the Service Manual, and based on p. 29 it was easy to make a – hopefully – safe reset button. You could ground the processor /HALT pin directly, but this one is safer, as the signal goes through two inverters and there’s a capacitor to filter the noise caused by lousy buttons (like mine). See here:

First find the capacitor and diode (D1) at the top right corner of the mobo. Solder a wire to the back leg of the diode, add a button and connect the other leg of the button to the ground. For example the screws holding the mobo in place are grounded, so you can tighten the wire under one of them.
September 10th, 2014
Jokusen päivän lainassa ollut Schneider EuroPC herätti virittelyinnon ja tuntikausien säätämisestä syntyikin jotain tulosta. Vaikka kyseessä onkin vanha peeseenraato, tekee laitteesta edes hieman mielenkiintoisen sen Ataria ja Amigaa muistuttava yhdysrakenteisuus: samassa lootassa ovat niin levari, näppis kuin emolevykin. Lisäksi Snaikussa on jonkun verran nostalgia-arvoa, sillä yhdellä Vammalan aikojen ex-tutulla sattui olemaan samanlainen. Oranssi-musta-näytöllä tuli aikanaan pelattua ainakin Diggeriä ja yriteltyä jotain muitakin SIMCGA:n avustamana.
Haasteita riittikin mukavasti heti ensimetreiltä, sillä en saanut koneen mukana edes virtalähdettä. EuroPC vaatii +5, +12 ja -12 volttia, joista kaksi ensimmäistä ovat peruskauraa, mutta -12 edellytti hieman kaivelemista vanhan AT-powerin uumenista. Nämä kaikki DIN-liittimeen ja kone rupesi ainakin piippaamaan ja sytytti ledinsä. Piipperi on sivumennen sanoen jopa PC:ksi huono, äänekäs ja särkevä pietso suoraan emolevylle kolvattuna. Jonkun sortin etuvastus olisi tarpeen, hiukan auttoi jo ihan erkkarikin 🙂
Seuraavaksi piti luonnollisesti saada kuvaa pihalle. Vanhasta muistista tiesin, että Snaikussa on Hercules-ohjain, joka käyttää samaa D9-liitintä kuin MDA. Suuri oli yllätykseni, kun kuulin sisuksissa olevan myös ehdan CGA:n. Kone ilmeisesti tunnistaa käynnistyksessä näytön ja vaihtaa ohjaimen tilaa sen mukaan. TTL-tasoinen RGBI ei kelpaa nykynäytöille ilman adapterien virittelyä, mutta onneksi Philipsin videomonsu syö sellaista mutisematta. Lisää kolvailua ja katso: kuvaa tulee!
Jäljellä oli enää kaksi isompaa ongelmaa, joista toinen oli puuttuva BIOS-akku, joka oli ilmeisesti ruvennut vuotamaan ja heitetty sitä myötä mäkeen. Asetusten tekeminen joka käynnistyksen jälkeen uusiksi vie paatuneemmaltakin hermot, mutta tilasin korvaavan tuotteen jo eBayltä. Pahempi dilemma oli se, että Snaikku ei tykännyt käynnistyä korpulta. Netistä löytyi hieman huonoja ja puutteellisia pinnijärjestyksiä, mutta pitkähkön pohdinnan jälkeen ilmeni ainakin, että levarin johto oli sekä emolla että korppuasemassa väärin päin. Suoralla johdolla asia olisi ok, mutta kun osa pinneistä on käännetty johdossa, niin eihän se toimi samalla tavalla. Britelite supplytti Schneiderin dossiversion 3.30, jonka myötä kone alkoi lopulta buutatakin.
Kokeilin testimielessä muutamaa tuttua vanhaa dossipeliä, kuten Prince of Persiaa, Bubble Bobblea, Ironmania, Bruce Leetä ja Larryä. Myös kestosuosikkini Populous toimii CGA:lla, mutta sen kanssa jalka toppasi sarjahiiren puuttumiseen. Tällä testaamisella kaikki sinänsä toimii, mutta näytönkäsittely tuntuu odottamattoman hitaalta. Samoja pelejä on pelattu aikanaan hitaammallakin CPU:lla jouhevasti, vaikka niissä koneissa tosin olikin EGA-ohjain.

Todo-listan kärkipäässä on BIOS-akun vaihtaminen ja levarin korvaaminen HxC:llä. Yritinkin jo HxC:tä kiinni parilla eri pinnijärjestyksellä ja asetuksella, mutta yhteisymmärrystä ei laitteiden välille vielä syntynyt. Tein itsevarmasti suoraan kolvaamalla kaapelin, mutta hyppylangoilla protoilu olisi nyt se oikeampi tapa. Vasemman reunan lyhyeen 8-bittiseen ISA-paikkaan voi keksiä sopivaa täytettä – tarvetta laajennuksille ainakin olisi. Äänikortti? Parempi näyttis? IO-kortti, johon kiintari? Koneen perässä on liitin ulkoiselle kiintarillekin, mutta ilmeisesti BIOS tukee vain paria tiettyä kokoa, eikä sopivia MFM-levyjä tai liittimiä kasva puissa.
edit: kiloinen etuvastus lienee aika sopiva spiikkerille, tööttäys vaimeni siedettävälle tasolle jo 500 ohmillakin.
September 8th, 2014
Eräs pahimpia Panasonic JR-200 -koodailun esteitä on kunnollisen emulaattorin tai nopean siirtoratkaisun puute. Virtual Panasonic JR ei yksinkertaisesti riitä laitteistonläheiseen ohjelmointiin ja on muutenkin ajan hampaan pahasti kalvama Windows only -tekele. Kasettiportin kautta voi pöristellä softaa helposti sisään aidolle koneelle äänikortista, mutta 2400 bps käy tuskaisen hitaaksi vähänkin isommilla tiedostoilla, minkä lisäksi joka välissä pitää olla näppäilemässä latauskomentoja. Eli hakusessa olisi jotain “resetoi kone ja se lataa koodin” -tyylistä ratkaisua. Mitään sellaistahan ei tietenkään valmiina ole noin marginaaliselle koneelle, joten lähdimme Teron kanssa kyhäämään omaa siirtopiuhaa.
Elektroniikan vähäinen tuntemus asetti tiukat puitteet sille, kuinka valmiista komponenteista kikkale pitäisi tehdä ja kuinka mutkikkaaseen ratkaisuun rahkeet riittäisivät. Arduino oli tuttuna laitteena luonteva lähtökohta rajoituksistaan huolimatta, ja loput palaset koottiin normaaleista logiikkapiireistä: halpa EPROM, salpapiiri (latch) dataväylälle ja perinteinen GAL osoiteväylää dekoodaamaan. Sekaan vielä fiilispohjalta heitetty konkka kohinaa vaimentamaan 🙂 Olemattoman dokumentaation takia Panan laajennusväylän pinnitkin piti ensin selvittää omatoimisesti yleismittarilla – onneksi kaikki tarpeelliset sentään löytyivät. Sivussa piti opetella käyttämään eprommeria ja tutustua GAL-ohjelmointiin, mutta niistäkin selvittiin. Eprommerin käyttämiä jed-tiedostoja sai tehtyä eqn2jed-ohjelmalla. Tältä näyttää kahden väyläosoitteen dekooderi ($d800 ja $8000 viisi ylintä bittiä):
CHIP GALLI 16V8
i0=1 phi2=2 rw=3 vma=4 a11=5 a12=6 a13=7 a14=8 a15=9 gnd=10
i1=11 o7=12 o6=13 o5=14 o4=15 o3=16 o2=17 lat=18 rom=19 vcc=20
EQUATIONS
/lat = !vma * !rw * a15 * !a14 * !a13 * !a12 * !a11 * !phi2
/rom = !vma * !rw * a15 * a14 * !a13 * a12 * a11 * !phi2
Ohjelmistopuolellakin riitti haasteita, kun kolme tietokonetta piti saada toimimaan keskenään synkronoidusti. PC-päässä istuu lähetyskikkare, joka lähinnä lukee tiedoston levyltä ja lähettää sen Arduinolle sopivan verkkaiseen tahtiin. Arduinon sarjapuskuri vuotaa helposti yli (128 tavua kaikkiaan, kaksisuuntaisella lähetyksellä ilmeisesti 64/64), joten välillä pitää jäädä odottelemaan kuittausta. Suurin ongelma oli Artturin ja peeseen saaminen aluksi synkkaan, jottei tavuja menisi hukkaan puolin eikä toisin. 115200 bps sarjasiirto toimi lopulta varsin luotettavasti eikä ole edes nopeudeltaan pullonkaula. Sekä Linuxin että Arduinon pitäisi toimia suuremmillakin nopeuksilla: pikku kokeilulla myös 230400 meni läpi, mutta kun en ollut varma Mäkin tuesta, niin jätin nopeuskokeilut sikseen.
Arduinon ja Panasonicin välinen siirto vaati enemmän jumppaamista. Vaikka siirto meni varsin lujaa läpi suurimman osan ajasta triviaalillakin latchin rämpytyksellä, niin välillä tavuja kuitenkin putoili. Toimiva ratkaisu perustui lopulta siihen, että kun pana lukee siirrossa käytettävää muistiosoitetta, niin se liipaisee lopettaessaan Artturilta keskeytyksen, jossa liipaistaan salpapiiriin uusi arvo. Näin varmistui se, ettei liipaisu tapahdu kesken osoitteen lukemisen. Nopeus putosi samalla puoleen, mutta tärkeämpää oli saada tavut perille. Optimoinnin jälkeen todellinen siirtonopeus asettui n. viiteen kilotavuun sekunnissa. Silläkin täyttyy jo koko muisti seitsemässä sekunnissa pakkaamattomalla datalla.
Aiemmissa siirtopiuhoissani olin käyttänyt yksinkertaista alternating bit -toteutusta, jossa vaikkapa kahdesta pinnistä toinen on kello ja toinen itse data. Nyt oli kuitenkin käytössä juhlavat kahdeksan bittiä kerralla, ja mieli teki siirtää täysiä tavuja kerralla ilman bittien shiftaamista. Kotipolttoisena ratkaisuna tein niin, että peräkkäiset tavut muuttuvat joka kerta, jolloin Pana tunnistaa seuraavan tavun pelkästä arvon muutoksesta ilman erillistä synkronointia. Pitkien nollasarjojen ym. tehokkaan siirron vuoksi tavuihin sotketaan mukaan “kantoaalto”, joka miinustetaan vastaanottopäässä. Jokunen harva tilanne, jossa peräkkäiset tavut ovat sittenkin samat, hoidetaan erillisellä escape-merkillä.

Nyt on jo kotelokin ja kaikki. Oikealla Teron PETSCII:nä piirtämä piirikaavio, josta näkyvät piirit ja niiden väliset kytkennät tarkemmin. Kehityskohteita olisi tietysti lukuisia:
- Pienemmällä rommilla säästyisi tilaa levyltä: nyt on käytössä kokonaiset 256 tavua 128 kilon piiriltä. Mutta kun niitä sattui olemaan…
- Arduino Nanon voisi korvata ATMegalla, kunhan vaan saisi USB-liikenteen ja virransyötön jotenkin hoidettua. Toinen vaihtoehto olisi halvempi Arduino Micro.
- Sekaan roiskaistu yksinäinen konkka ei välttämättä tee mitään hyödyllistä: pitäisi tutustua joskus tarkemmin, mihin ja millaisia niitä oikeasti tarvitaan
- Siirtosofta voisi palata BASIC-tulkkiin ja ylipäänsä tehdä vähän enemmänkin asioita
- Koko härpättimelle päälle/pois-kytkin
- Resettinappi, jos mahdollista laajennusportin kautta
- Oikean kunnon piirilevyn teettämällä saisi tilaa säästettyä huomattavasti samoin kuin hyppylankasotkua
Puutteineenkin Panana ratkaisee pääongelman eli nopean koodin siirtämisen peeseeltä Panasonicille. Jatkokehityksen toppasi toistaiseksi se, että eBayltä haalimani Kiina-Nanot osoittautuivat viallisiksi (kloonatut FTDI-piirit eivät osaa kaksisuuntaista liikennettä). Kunhan saan toimivampia, niin julkaisen koko projektin sitten virallisestikin Panasonic-sivulla.
September 6th, 2014
Nykyään ei oikein ehdi lukea kuin tutkimukseen liittyviä kirjoja, mutta onneksi ne ovat sentään toisinaan hyviä ja ajatuksia herättäviä. Arabianrannan ja Otaonnelan välillä tällä kertaa loppuun saatettu David Muggletonin Inside Subculture – The Postmodern Meaning of Style, joka edustaa tuoreehkoa englantilaista alakulttuuritutkimusta.
Kun jo kirjan nimessä on viittaus Dick Hebdigen Subculture – The Meaning of Style -kirjaan, niin on toki odotettavissa, että klassikkoa käsitellään uudessa valossa. Eikä kritiikkiä toki säästelläkään: CCCS saa kuulla kunniansa moneen kertaan, ja marxilaisen luokkatietoisen alakulttuuritutkimuksen heikkouksia ruoditaan kautta kirjan. Kuten kirjoittaja itsekin myöntää, CCCS:n kritisoinnista tuli jossain vaiheessa suorastaan muoti-ilmiö.
Muggletonin keskeisin teesi on se, että alakulttuurien jäsenet eivät ole tiukasti yhden yhteisön jäseniä, vaan heidän identiteettinsä saattaa muuttua moneen kertaan ja olla sekoitus erilaisia vaikutteita. Jos CCCS näki alakulttuurit vastauksena työväenluokan asemaan, niin Inside Subculturessa keskeisiksi teemoiksi nousevat individualismi ja itseilmaisu. Työväenluokkainen taustakaan ei näytä olevan jäseniä yhdistävä tekijä, sillä monien näkyvien yhteisöjen aktiivijäsenet ovat olleet pikemminkin keskiluokkaisia ja Muggletonin tulkinnan mukaan siten edustaneet pikemminkin liberalistisia ihanteita.
Summa summarum: mielenkiintoinen ja helppolukuinen kirja, jonka taustalla on vaikuttava määrä alan tutkimuksen tuntemusta. Samalla mielenkiintoinen vastine Hebdigen kirjalle ja näin demotutkijallekin monin kohdin valaisevaa luettavaa.
September 4th, 2014
Panasonic JR-200 on laite, jota on tullut pöyhittyä harvinaisen paljon ja syvällisesti, etenkin kun ottaa huomioon sen totaalisen marginaalisuuden. Harvinaisuus on toisaalta ollut juuri se syy, miksi tonkiminen on ollut tarpeen: yleisemmistä laitteista löytyy niin piirikaaviot kuin ohjelmointioppaatkin. Panan tapauksessa ylimääräistä haastetta on tuottanut myös se, että osa piireistä on tehty tai kustomoitu vain ja ainoastaan tuota yhtä laitetta varten, joten niistä ei välttämättä löydy kirjallisuutta.
Parin vuoden takaiset aiemmat yrittelyt tuottivat jo mukavasti tulosta, mutta monia asioita jäi edelleen selvittämättä, etenkin kun taannoinen haksorointi perustui lähinnä ROM:ien sisältöön ja piirien ohjekirjoihin. Sittemmin olen hieman rohkaistunut elektroniikan suhteen, joten ryhdyimme Teron kanssa jälleen kartoittamaan laitetta, tällä kertaa yleismittarin avulla. Huoltomanuaalistahan näitä samoja asioita löytyisi suoraan, mutta sen saanti on osoittautunut lähes mahdottomaksi, ja toisaalta tällainen lähestymistapa on varsin opettavainen koneen toiminnan syvällisessä ymmärtämisessä.
Uusia selvinneitä juttuja ovat mm. laajennusväylän pinnit, joista epäselvyyttä on oikeastaan enää muutaman osalta. Lisäksi IO-piiri MN1271 on lähes kokonaan kartoitettu paria porttia lukuun ottamatta ja kaikkiaan on syntynyt paljon syvällisempää ymmärrystä piirien rooleista. Esimerkiksi MN1544 on lopulta melko turha, sillä se lähinnä lukee näppäimistöä ja ilotikkua, minkä voisi hoitaa suoraviivaisemmin ja halvemmin ihan pelkällä prosessorilla. Hitachin “näytönohjain” tekee itse asiassa monenlaista juttua, kuten dekoodaa osoitelinjoja toisille piireille ja tuottaa kellon CPU:lle.
Sivumennen selvisi sekin, miten laajennusporttiin saisi automaattisesti käynnistyvän rommin. Kunnon siirtopiuha on siintänyt mielessä jo pidempään, mutta ilman tietoa laajennusliittimien toiminnasta sellaista ei ole ollut mahdollista tehdä, minkä lisäksi pitäisi jotenkin saada itse siirtosoftakin ladattua. Seuraavaksi siis tavoitteeksi laajennusliitäntään tuleva buuttaava rommi sekä muutaman pinnin siirtotiluttaja perinteiseen tapaan Arduinolta! Lisäilen laajennusportin dokumentaation Pana-sivulle, kunhan pinnit on avattu loppuun asti.
August 22nd, 2014
Sheesh, THIS basic stuff really ought to work already, but it doesn’t seem to. When you press the eject key on the keyboard, nothing happens. It’s easy to fix, but not quite evident at first. Add the following piece to ~/.config/openbox/lubuntu-rc.xml (or might be just rc.xml) together with the rest of the key bindings:
<!-- Eject with... eject -->
<keybind key="XF86Eject">
<action name="Execute">
<command>eject</command>
</action>
</keybind>
After that killall -USR2 openbox and things should be a-ok.
August 19th, 2014
Quite many people seem to suffer from the same problem as I with VLC versions around 2.1.4: DVD playback stutters, jumps and lags. There didn’t seem to be any definitive solution to the problem and it doesn’t even affect everybody. If you’re googling around, then here’s what I did: switch audio settings from default or ALSA to Pulseaudio (and install it if needed, like in Lubuntu). Tips like setting the drive region, changing the demuxer or installing various extra libs worked as good as waving your hands in the air. It seems there’s some problem with the way audio is synchronized with ALSA. Apparently the bug is fixed in 2.1.5, but as of now all *.Ubuntus don’t yet come with that version or aren’t otherwise patched.
August 19th, 2014
Lars Wadefalkin kehittelemä UNO2IEC on epäilemättä halvin tapa ladata pelejä Commodore 64:lle. Arduinon ja nepan välille kolvataan kuuden piuhan kaapeli, ladataan Arduinoon ohjelma ja käännetään Qt-projekti. Isäntäkoneen päässä on sitten helppo käyttöliittymä, josta voi ladata d64-tiedostoja. Fastloaderit eivät toki toimi, joten demoja on melko turha yrittää ajaa, lukuun ottamatta yhdellä kerralla muistiin ladattavia.
Dokumentaatio on hieman rajallista, joten esimerkiksi kaapelin teko-ohje löytyi puoliksi sattumalta mukana seuranneesta Excel-filusta. Pahimmaksi ongelmaksi osoittautui kuitenkin Qt-projektin kääntäminen, etenkin kun en ollut tuota Qt Creatoria koskaan käyttänyt. Tämän ohjeen perusteella sain projektin ylipäänsä latautumaan säätämällä “kitin” asetuksia. Lisäpalikka QextSerialPort piti purkaa samalle tasolle kuin projektihakemisto itse, eikä suinkaan sen alle. Näiden jälkeen iski vielä niskaan hämmentävä yhteensopivuusongelma, sillä tuoreehko Qt 5 ei projektia kääntänyt virheellisten polkujen takia, ja Qt 4:n (4.8.6) kanssa puolestaan puuttui QTimerin vaatima vakiomäärittely. Rajapinta on jossain välissä muuttunut, mutta heivaamalla koko Qt::CoarseTimerin mäkeen funktiokutsusta käännös meni läpi.

Kuten kuvasta näkyy, johtoa ei ole työläs tehdä. Nepan pään pinnien numerot löytää esim. täältä. Jäi hieman epäselväksi, olisiko joihinkin piikeistä pitänyt laittaa 10 ohmin vastukset, mutta tuntuipa tuo toimivan ilmankin. SD2IEC:lle pätsätty pelikokoelma näyttää toimivan hyvin myös UNO2IEC:n kanssa, joitakin pelejä lukuun ottamatta. Summa summarum: halpa ja monessa suhteessa kätevä tapa siirtää tiedostoja nepan suuntaan, kunhan tiedostaa rajoitukset ja on valmis käyttämään jonkun hetken kolvaamiseen sekä ohjelmien kanssa tusaamiseen. Kiina-Arduino 6 € posteineen, dinni, johdonpätkä ja palanen piikkirimaa tekee kokonaishinnaksi noin kympin.
edit: Niin tokihan tämä toimii yhtä lailla Vicin tai +4:n kanssa. Latailin juuri kokeeksi jotain demoja Plussalla.
August 16th, 2014
It turns out that in the Finnish and French versions of the Canon X-07 manual the cassette port is described incorrectly. Maybe the port is different on the Japanese model, or maybe there was something lost in translation. Anyway, as the original data cable is kind of hard to get these days, you may want to make one of your own. Here’s the correct pinout for a PC->Canon cable:
- Pin 5 – MIC tip
- Pin 4 – EAR tip
- Pin 2 – EAR and MIC sleeve
You can, of course, leave the MIC plug out if you don’t need to transfer anything back from the machine. 3.5 mm mono plugs seem to work, even though it might be a better idea to use stereo plugs and leave the ring unconnected. Thanks to Tero H. for figuring out the correct pinout!

As you can see on the right, the English version of the manual has the pins numbered correctly.
August 15th, 2014
A couple of weeks ago I didn’t even know that there are WLAN-enabled SD cards, but such beasts exist indeed. Usually they are meant for cameras and automatic uploading of recent photos, but a creative mind can quite obviously think of a lot of other uses for them. The most interesting product seems to be Toshiba FlashAir, since it allows file upload unlike most other devices. It’s not too expensive either, so I got myself the 8G model.
Instructions on setting up the card can be found on other sites. As a matter of fact, the documentation is surprisingly extensive. At its heart the card contains a web server that can be used for different transactions (plus those automatic uploads that I’m not interested in). It didn’t take much effort to edit the needed config file to get the gadget set up. After that you just need to find out its IP and start browsing. There are various hidden CGI files, such as upload.cgi, that let you do a number of things ranging from file browsing to configuration. They and their parameters are all described on the FlashAir Developers’ site.
I expected there to be some ready-made handy tool for file handling and maybe there is, but all I could find were various code snippets in Python or PHP. Browser-based file handling isn’t that great, so I ended up hacking together a little shell script called FA that lets you do the most needed basic stuff from the command line. Should work in any *nix, as long as you’re using bash and have cURL installed. Maybe even Cygwin or similar, who knows. Use as you wish, but don’t come complaining to me if your files were lost 🙂
The original reason for getting the card was to use it with various oldschool computers and their card readers. So far I’ve only tried Sinclair QL and it kind of works. The only remaining problem is that the card doesn’t deal well with reset: after that you need to reinsert it, which sort of beats the purpose of wireless data transfer. After reinserting the card it also takes about 10 seconds to be back online, which is a bit annoying if you need to wait for it frequently. I’ll update this post when I’ve experimented with other machines.

I’m sure there’s more to discover when dealing with other machine/card reader combinations. For example, I don’t know if the filesystem needs to be FAT32. If so, some readers will not work.
edit: Similar behavior with the 1541 Ultimate. Initially the card works like an angel, but after the C64 has accessed the virtual drive the web server disappears until the next cold boot or card reinsertion. Mere reset doesn’t help.
edit2: Another interesting discovery is the user IO mode, where you can control individual SD pins as you see fit. Could make an interesting wireless controller or something.
edit3: According to Tero’s tests, the card works better with a ZX Evolution. It seems that the Evo doesn’t kill the WLAN after a reset.
August 11th, 2014
Next Posts
Previous Posts