Posts filed under 'retro'
Sain käsiini varsin harvinaisen kasibittifriikin tällä viikolla. Panasonic JR-200U ei ollut mikään myyntimenestys, mutta on niitä Suomeenkin päätynyt. Sisuksissa on melko tyypillistä aikakauden rautaa: 32 kiloa muistia, hiukan alta Megahertsin MC6802-klooni, piipperiäänet, kahdeksan väriä ja merkki/palikkagrafiikkatila. Dokumentaatio on kiven alla, mutta jotain on jo selvinnyt. Jatkan metsästystä, sillä tässä kuriositeetissa on jotain viehättävää.
January 25th, 2012
Kohta parisenkymmentä vuotta erilaisia emulaattoreita seuranneena pitänee sanoa tästäkin aiheesta jotain. Erinomaisten projektien, kuten vaikkapa OpenMSX, Mednafen, VICE tai DOSBox, vastapainona on olemassa lukematon määrä puolivalmiita, hylättyjä, vanhentuneita ja tasan yhdellä alustalla toimivia kämäisiä tekeleitä, joiden kanssa saa haaskattua sekä hermojaan että aikaansa. Ymmärrän kyllä, että ei harrastajaprojekteilta voi juuri mitään vaatia, mutta jotkin asiat voisi saman tien tehdä oikeinkin, kun kerran tekemään ryhtyy. Eli Huono emulaattori -HOWTO:
- Älä missään tapauksessa julkaise sorsia. Eihän niitä kehtaa näyttää, tai niissä on suuria liikesalaisuuksia, tai ehkäpä tällä emulaattorilla tahkotaan vielä joskus rahaa. Kukapa niitä jaksaisi edes lueskella.
- Heittäydy ahneeksi. Kyllä Sinclair QL -emulaattorista pitäisi 50 dollaria maksaa, kun sitä on kerran vaivalla tehty. Ja lisäkohtana:
- Jos kukaan ei kikkarettasi osta, niin älä julkaise sitä ilmaiseksi, eikä etenkään niitä sorsia.
- Sekoita käyttöliittymä- ja emulaatiokoodi keskenään. Näin voit varmistaa, että kerralla hyvin tehtyä käyttöliittymää tai suosikkikirjastoasi ei vaihdeta huonompaan.
- Optimoi tavujärjestykseen perustuvilla kikoilla. Kun sinun koneessasi kerran on MSB tai LSB, niin eiköhän se ole muillakin.
- Keksi oma formaatti. Muiden keksimissä levytiedosto-, kasetti-, rom- ym. formaateissa on aina jokin puute, tai sitten niiden käyttö on vaan muuten ikävää.
- Tee ajastukset silmukoilla. Nopeammalla koneella pyörii sitäkin paremmin!
- Keskity tasan yhteen alustaan. Järjestelmäkohtaiset rajapinnat ovat tehokkaita ja kun kerran kaikilla on se Win…jokin tietty käyttöjärjestelmä, niin turhaa vaivaa miettiä muita. Katso myös kohta sekoita käyttöliittymä- ja emulaatiokoodi keskenään.
- Älä tee emulaattorillesi www-sivuja. Ja tätä täydentävänä kohtana:
- Jos kuitenkin teet www-sivut, niin laita ne parin vuoden päästä katoavaan ilmaispalveluun tai koulusi koneelle, johon sinulla ei ole enää pian käyttölupaa.
Näillä pääsee jo pitkälle, takaan sen. Lisäkohtia voi ehdotella kommenteissa.
January 20th, 2012
One of these projects that might not be useful for anybody, but it was educational for me at least 🙂 For some time I had been looking for a bit nicer and easier way to code for Sinclair QL than just pure asm. There used to be a GCC hack, which can’t even be compiled these days. The other 68k-friendly alternative is vbcc, which has support for various related architectures such as Atari ST and Amiga, but no QDOS. Hacking GCC is nothing I’d love to do in my spare time, so I checked out vbcc instead.
The aim was simple enough: get compiled C code to run on QL at an absolute address (0x30000 in this case, right after the video ram). Dealing with nasty stuff such as executable headers wasn’t necessary, since vlink supports rawbin1 output, which is just good clean binary code and data. In addition to that there was a need for a trivial startup routine, which doesn’t do much more than call _main. The correct way would be to call libvc’s __main, which initializes the stack, the heap and the C library, but since the implementation here is so incomplete anyway, I decided to omit that at this point. The biggest challenge was to create the needed linker script to join different object files and sections to a coherent executable. The example scripts can bring tears to your eyes with their complexity, but to join the three required aout sections (.text, .data and .bss) wasn’t that bad after some orientation.
So, with about five hours of work I got to the point where I could compile and run C code on the QL using my own little Arduino-based transfer cable and software. Plain C without any standard stuff such as includes, stdlib and math isn’t very useful yet, so next it was time to look into that. To my surprise I found out that libvc is not part of the distribution at all. Fortunately, the TOS includes seemed to be almost generic, and since the libs are in aout format as well, I gave them a go as-is. Everything I tried seems to work just fine — of course excluding i/o — so there is no immediate need for a real libvc implementation. A kludge on top of another kludge doesn’t decrease the overall quality significantly 😛
The necessary files are here: vbcc-qdos-poc.zip. In order to compile anything, you need to install vbccm68k, copy the archive contents to /usr/local/vbcc, and then add +qdos to the compiler command line. There’s a lot of broken stuff, questionable hacks and so on, which is why I call it a proof of concept. Anyone willing to take the work further is most welcome to do so. This is enough for my humble purposes, probably coupled with a few additions to deal with the keyboard, screen mode etc.
January 14th, 2012
Kasibittikokoelman jatkoksi saapui “Ammu” eli Amstrad CPC 6128. Jokseenkin siisti yksilö, mutta sisäinen levari ei kylläkään toimi kunnolla — noissa kun on vanhemmiten tyyppivikana levarin hihnan sulaminen ja hapertuminen. Ammu ei ole koneena helpoimmasta päästä: hankalat 3″ korput ovat jo käymässä harvinaisiksi samoin kuin itse laitteet, pihalle ei saa kuin tasan RGB:tä (RF ja composite, mitä ne ovat?), virtaa tarvii syöttää kahta eri piuhaa pitkin ja eri videopiireistä seuraa omat ongelmansa. Videomonitori sentään syö SCARTin kautta RGB:tä, mutta videotykki onkin sitten toinen juttu, jollei omista vanhoja videoita tai muuta konvertteripurkkia. Alkujaanhan CPC:t myytiin aina näytön kanssa, ja näyttö toimi samalla virtalähteenä, joten mitään tarvetta ei pitänyt olla telkkarin kanssa käyttämiselle.
Levariongelma ratkesi lopulta varsin näppärästi HxC:llä. HxC lukee normaalilta SD-kortilta levytiedostoja ja emuloi sitten levaria piuhan toisessa päässä olevalle laitteelle. Tukea löytyy Atarista Amigaan ja Amstradista PC:hen, joten laite käy potentiaalisesti monenlaiseen käyttöön. Itse tilasin Lotharekin kaupitteleman version, jonka hinta etenkään koteloituna ei ole järin kukkaroystävällinen. Periaatteessa homma ei ole mutkikasta: SD-kortti formatoidaan FAT32:ksi, kopioidaan sinne asetustiedosto ja sen jälkeen HFE-muotoisia levytiedostoja, joita voi selailla laitteen napeista (tai joillakin alustoilla myös tietokoneelta itseltään). HFE-filuja voi konvertoida lukuisista emulaattorien käyttämistä formaateista Windows-softalla. Laiskalle Mäkki- tai Linux-käyttäjälle tiedoksi, että kikkare toimii riittävästi Winellä. Sorsista voi periaatteessa kääntää komentorivityökalun myös Linuxille, mutta viimeisin versio on rikki. Sain kääntymään lopulta vasta lataamalla viimekesäisen version (178) osapuilleen näin:
svn co https://hxcfloppyemu.svn.sourceforge.net/svnroot/hxcfloppyemu hxcfloppyemu -r {2011-06-01}
cd hxcfloppyemu/HxCFloppyEmulator/HxCFloppyEmulator_software/trunk/linux
make hxcfloppyemulator_convert
edit: Onnistuu samalla loitsulla myös OSX:llä
Itse päädyin nyppäämään sisäisestä levarista kaapelit kokonaan irti, minkä jälkeen jumpperoin HxC:n A-asemaksi (ahkerat harrastajat ovat jopa modanneet HxC:n CPC:n koteloon sisälle). Sisäinen levari ei tykkää olla B-asema ilman eri kolvausta, mihin en halunnut lähteä, minkä lisäksi softat eivät ilmeisesti aina toimi B-asemalta ajettuna. Melkein kaikki kokeilemani demot toimivatkin hienosti tämän järjestelyn jälkeen, paitsi että…
Ammuissa on käytetty eri valmistajien videopiirejä, eikä pelkästään konetta vilkaisemalla voi tarkalleen tietää, mikä sisuksissa majailee. Hyväkäytöksiset ohjelmat toimivat kyllä, mutta demot eivät niitä suinkaan aina ole. Nettiä penkomalla olen alkanut päästä hommasta hiljalleen jyvälle, vaikka piirien vivahde-eroja en väitäkään ymmärtäväni. Tarkkaa ajastusta vaativat demot on tehty joko CRTC0:lle tai CRT1:lle, jotka eivät ole keskenään samanlaisia. CRTC2 tuntuu olevan “välttäkää kuin ruttoa” -osastoa. CRTC 3 ja 4 olivat käytössä uudemmissa Plus-sarjan koneissa ja niissä oli lisätoimintoja kuten enemmän värejä. Hevosmiesten tietotoimiston mukaan 3 ja 4 muistuttavat muuten lähinnä CRTC0:aa. Ihannetilanteessa koneessa olisi sekä 0 että 1, jotka voisi kytkimellä valita, mutta olkoon nyt toistaiseksi näin, vaikka From Scratch jääkin näkemättä.
January 11th, 2012
Ja sitten sama toisin päin eli kuinka toimivat edellisen listan produt ZX Evolutionilla (perusasetuksilla)? Mahdollisuuksien mukaan ajettu scl-versioita, muussa tapauksessa tappeja.
- Mescaline Synesthesia (Demarche). Ok.
- Aeon (Triebkraft & 4th Dimension). Ok.
- Ahh… The Tape loading Era! (Ate Bit). Toimii wavina kasettiporttiin soitettuna.
- Your Song Is Quiet, Pt. 2 (Inward, TPOLM & CPU). Ok.
- Machined (Triebkraft & 4th Dimension). Tappi toimii hienosti.
- Bomb (Ate Bit). Ok.
- Your Song Is Quiet (Inward & CPU). Ok.
- Weed (Triebkraft & 4th Dimension). Ok.
- Paralacktica (Demarche). Kilahtaa sekä trd:stä että tapista suoraan ladattuna. TR-DOSista erikseen ladattuna toimii (ja vilkkuu asianmukaisesti kuin hullu).
- Justin Beeper (Hooy-Program). Ok.
- Goa 4k (Extreme Entertainment). Ok.
- MCMXCVII (Thesuper). Ok.
- Nyantro (Hooy-Program). Ok.
- I’am the Seed (CPU & Inward). Ok.
- Traumwerk (Triebkraft & 4th Dimension). Ok.
- Electrogodzilla & Pink Socks (Triebkraft & 4th Dimension). Ok.
- Melange (4th Dimension & Light Future). Ok.
- Hackerz Top 2010 Invitation (Target Team). Ok.
- Koopaville (UKscene Allstars). Pari osaa hiukan pielessä, etenkin rasterikikkailu.
- Brightpast (Thesuper). Ok.
- Kkolor (Triebkraft & 4th Dimension). Ok.
- Detroyt (Triebkraft & 4th Dimension). Ok.
- Scroller (Demarche). Ok. Vaatii Covoxin, jota Evo kuitenkin osaa emuloida.
- 40% (Mr. Plop & Dr. Kvetch). Ok.
- Reliable Fraud. Ok.
- <3 Krunk (Ate Bit). Ok.
- Ugly Kid, Magic Star (Triebkraft & 4th Dimension). Ok.
Selvä tapaushan tämä on: kaikki tuoreemman pään demot toimivat hyvin itäkoneella, siinä missä länsikoneilla ehkä noin puolet. Hyvin vanhan kaman tai fiksaamattomien klassikkopelien kohdalla tilanne voi toki olla toinen.
December 26th, 2011
Tähän mennessä kaapintäytteeksi on kertynyt aika lailla peruskamaa, mutta uusin tulokas onkin sitten aika lailla eksoottisempi tekele: ZX Evolution eli käytännössä Pentagonin työnjatkaja, moderni neuvosto-Spectrum. Parhaista spekudemoista ei toimi kuin ehkä puolet länsikoneilla, joten pistin elämän risaiseksi ja tilasin valmiiksi kootun emolevyn 3600 ruplalla (n. 90 euroa). Päälle piti vielä haalia mini-ITX-kotelo ja sopiva pikkunäppis, sekä kolvata kasaan RGB-piuha. 90 eurolleen saa hyvin vastinetta: laite sisältää kortinlukijan, VGA-ulostulon, laajennuspaikkoja, Covoxin, stereo-AY:n, 14 MHz turbon, neljä megaa muistia ja ties mitä muuta. Edellisessä versiossa oli myös composite-ulostulo, mutta se on valitettavasti poistettu viimeisimmästä. SCARTia varten piti vetää emolta piikkirimasta oma johto, joten laiskalle ainoa vaihtoehto on VGA, joka ei sekään ole aivan ongelmaton. Oma littunäyttöni ei synkannut riittävän alas, mutta videotykki sentään taajuuden kelpuutti. VGA:n ja RGB:n välillä voi vaihtaa SysRq-napilla.
Kunhan omalaatuisesta käyttöliittymästä pääsee selville, niin on lopulta varsin helppo latailla scl- ja trd-levytiedostoja ja viimeisimmillä firmiksillä jopa tap-tiedostoja. Buuttirommeja on valmiinakin kolme ja sivuilta saa vielä lisää, minkä lisäksi varsinaisen Spectrumin puolella voi käyttää 48k-, 128- ja TR-DOS-moodeja. Neuvostodemoista toimii suorilta suurin osa, mutta osa vaatii vielä vähän asetusten säätämistä tai vastaavaa. Ominaisuuksia on kaiken kaikkiaan niin paljon, että opettelussa menee vielä pitkään. Dokumentaatio ja keskustelupalstat ovat pääosin venäjäksi, mistä tulee oma lisähaasteensa. Yhtä kaikki: hauska laite ja mielenkiintoinen kurkistus itäisten Spectrumien omintakeiseen maailmaan.
December 24th, 2011
Again, there seem to be a lot of differing opinions and unclarity concerning a simple thing: how to load tap/tzx programs to your Spectrum using a computer or, say, some media player? This is how I got it to work:
- Get tape2wav (no link here, since it’s available on so many platforms)
- Convert your favourite game to a wav with it: tape2wav beli.tap beli.wav. The volume should be maximum by default.
- Load the sound file to your favorite music player
- Connect the EAR port to the PC sound output. I got the best results by using a stereo to mono converter cable (left and right connected to the tip). YMMV.
- Crank the volume up
- Type LOAD “” [enter] on the Spectrum
- Start playback on the music player. You should hear the loading noise and see flashing stripes in the border. Crank the volume up if not.
That should do it. Notice that on newer models, such as +2 this method won’t work. Use a tape adapter — or better, just get a divIDE.
December 14th, 2011
After some real trouble with three Spectrum +2s I’ve at least learnt a thing or two (not only about the build quality of those dogs). Most often the problems are caused by failing transistors, with other probable failures on top. Here’s for those who struggle with their Speccy:
- Power supply busted? They’re still available on eBay and elsewhere too, but any sturdy enough (2A) PSU will probably do. Nominally the voltage should be 9V DC, but you can also feed it a bit higher voltage, because a regulator will turn it into 5V anyway. Personally I’ve used two +2s with a generic 12V transformer. Note that the plug is shield positive.
- Still no voltage? Check the power connector on the PCB. The solder points don’t seem to last.
- Power LED doesn’t light up? Time to change the regulator that is attached to the big heat sink. 7805 is the one. Note that they are not all the same: if you intend to use expansions such as divIDE, get one with a high throughput (~2A).
- Still no picture?
- There are three ways to get video out: RF, composite and RGB (SCART). RGB is the least fragile of these, so if RF and composite fail, you might at least see something and confirm that the machine is otherwise sane.
- RGB works, the rest don’t? Most likely TR9 has failed. Replace it with another ZTX650/651.
- According to some account, it might do some good to change TR8, too. It’s a ZTX213.
- Distorted composite output? If you can get some dark output from TEA2000 pin 6, things are looking up! Most likely TR4 has failed and needs to be changed. This time you need a 2N3904. The markings on the PCB are upside down: install the transistor the other way around for a bit better image quality.
- Still no RF output? The RF modulator seems to crack off the PCB by time. The tiny wires bringing the signal in might suffer at that point.
- Constant noise in the audio output? This is not even a problem per se, but a feature of the +2 design. The tape drive head is connected to the sound output and it picks up all sorts of noise for your enjoyment. If you don’t need the drive, just snap off the white wire coming from it to the PCB. A bit more elegant solution is to place a switch on the wire, which lets you choose between sound quality and a working tape drive.
I hope this blurb is of use for someone. Let me know if there are any additions or errors.
December 8th, 2011
The sound “capabilities” of Sinclair QL are controlled through a single call to the IPC. You pass it two pitches, plus numerous strange parameters that distort the sound in more or less useful ways. To my great surprise I couldn’t find any description of the pitch parameter in any book or web page. For example, The SuperBASIC handbook goes to great detail with other parameters, but doesn’t explain how the pitch is calculated. I’m starting to feel like nobody really understood it and just quoted some technical manuals 🙂 Well, here’s my take on it, based on FFT analysis and a bit of math.
Pitch and frequency are inversely related, like on the Amiga, where you use periods. The highest tone you can output is pitch 0, which, according to Audacity’s FFT is 1313 Hz. At the other extreme there’s pitch 255, which produces a 43 Hz tone. Assuming that the formula is of the form a/(x+c), we get approximately the following relationship between frequency (f) and pitch (p):
- f = 11336.256 / (p + 8.634)
- p = 11336.256 / f – 8.634
When dealing with integer numbers you get a good enough approximation with p=11336/f-8. You can download a precalculated list of note pitches and frequencies here.
December 6th, 2011
Parin viikon touhuaminen Sinclair QL:n äärellä on ollut mielenkiintoista, opettavaista ja hyvin usein myös turhauttavaa. Alta löytyy pitkähkö valitus Sir Cliven muista maanantaikappaleista, mutta nekin ovat melkeinpä onnistuneita tekeleitä QL:ään verrattuna. Vähän vaikea kuvitella, mitä suunnittelijoiden päässä on kaikin ajoin liikkunut (tai onko mitään), kun noita kummallisia ratkaisuja katselee. Suuren osan kummallisuuksista selittänee ihan protektionismi: meidän koneeseen ostetaan meidän lisälaitteet, kun mikään normaali ei kerran sovi. Mikä siis meni vikaan?
- Prosessori. 8-bittinen versio 68k:sta oli ilmeisesti helppo ottaa käyttöön, mutta sivutuotteena kone tukehtui todella pahasti, kun dataa ja koodia käsitellään kasibittisen väylän kautta.
- Grafiikka. Jos unohdetaankin vähäiset värit hetkeksi, niin merkkitilan puuttuminen on yhtä kaikki paha juttu. Koneenreppana ehtii piirtää frameen noin kolmanneksen ruudustaan ja kun spritejäkään ei ole, niin QL:stä ei oikein ole pelikoneeksi, vaikka asiaa miten kääntelisi. Neljäs väribitti uhrattiin turhalle välkytystoiminnolle, mitä myötä menetettiin kahdeksan väriä. Qdos puolestaan päätettiin laittaa toisen grafiikkasivun päälle, joten sivuakaan ei voi vaihtaa systeemiä tappamatta.
- Kuvanlaatu. RGB:stä saa sinänsä oikein asiallista kuvaa, kunhan jaksaa kolvata johdon, mutta TV- ja compositelähdöt ovat huonommat kuin missään muussa omistamassani laitteessa pl. Atari 2600.
- Mikrokasetit. 30 vuoden aikana ei ole vielä tullut vastaan yhtä epäluotettavaa tallennusmediaa. Nauhat jumittuvat, menevät ryppyyn ja pahimmillaan jopa katkeavat. Kun saman nauhan formatoi useaan kertaan, niin joka kerralla saattaa saada eri kapasiteetin.
- Apuprosessori. Noin periaatteessa kaunis ja kannatettava idea, että mukana on Intelin 8049 IPC, joka hoitaa mm. näppäimistöä, sarjaportteja ja ääniä. Käytännössä IPC on laitettu hitaan sarjaväylän taakse, joten se siitä nopeushyödystä. Itse pääprosulla ei ole juuri mitään suoraa pääsyä lisälaitteisiin, joten vaikkapa näppäimistön lukeminen on tuskallista. IPC:llä ei ole omaa muistia, vaan se ajaa bugista rommia, joten huonouksia ei voi korjata ohjelmallisestikaan.
- Äänet. IPC:n reppana toimittaa myös äänipiirin virkaa, eikä järin hyvin. Periaatteessa ulos saisi vaikka mitä, mutta rommissa on jälleen tarjolla jonkinlainen maanantaiaamuna väsätty kummallinen piippausrajapinta. Ääniä ei saa koneesta pihalle vakiona, vaan sulosointuja pitää kuunnella sisäisestä kajarista.
- Liittimet. Jokainen liitin mallia oma. Sarja- ja joystickportit ovat jonkin sortin oma muunnelma Englannin puhelinpistokkeesta ja saatavuus sitä myöten lähellä nollaa.
- Näppäimistö. Marginaalisesti parempi kuin Spectrumin kuminäppis. Tuntuma on jo muutenkin huono ja kun vielä koneessa ei ole mitään kallistuskulmaa, niin kirjoittelun määrän mieluiten minimoi.
Kallis ostoshan tämä oli. Pelkkä lankku virtalähteineen on yli sata puntaa Englannin eBayltä hankittuna. Saatavuus on sentään vielä varsin hyvä. Mikrokasetteja saa niitäkin samasta paikasta, tosin kannattaa varautua siihen, että puolet eivät ikinä tule toimimaan. Sarjapiuhat ja joystickit ovatkin sitten jo kiven alla — itselläni tärppäsi Bebekistä, kun löytyi joku suunnilleen samanlainen liitin, jonka sai viilan ja puukon avustuksella sopimaan. Kaikesta tästä valituksesta huolimatta QL on ollut hauska projekti, ja 68k-konekielen äärelle palaaminen on aina antoisaa.
Pari knoppia vielä loppuun. Kai tiesitte, että Linus Torvaldsilla oli ennen PC:tä Sinclair QL? Ja että koneen toimisto-ohjelmat teki Psion, joka on myös vastuussa kämmentietokoneiden EPOC-käyttöjärjestelmästä, josta myöhemmin kehkeytyi muuan Symbian. QL:stä tehtiin myöhemmin myös PC:n ISA-korttipaikkaan sopiva versio, QXL, sekä paljon parannellut ja tehokkaammat kloonit Q40 ja Q60.
December 4th, 2011
Next Posts
Previous Posts