CHARDEF Useissa peleissä ja monissa hyötyohjel- missakin on käytetty ns. merkinmäärit- telyä, jossa merkkifontit muutetaan pa- remmin käyttötarkoitukseen sopiviksi. Tyypillisiä esimerkkejä ovat skandinaa- visten kirjaimien luominen ja pelien tarvitsemat hahmot, esim. ukot ja pil- vet. Usein peleissä ei kannata käyttää hienografiikkaa, koska sen vaatiman suu- ren tietomäärän käsittely on liian hi- dasta varsinkin arcade-peleissä. Sen si- jaan käytetään uudelleen määriteltyjä merkkejä, joiden avulla ylletään lähes hienografiikan tasoisiin, jopa parem- piinkin saavutuksiin. Commodore 64:ssä on loistavat mahdolli- suudet merkkien uudelleen määrittelylle. Kuusnelonen pystyy esittämään ruudullaan samanaikaisesti 256 erilaista merkkiä, jotka ovat kaikki käyttäjän määriteltä- vissä. Jokainen merkkejä käsin määritel- lyt tietää kuitenkin, kuinka työlästä ja hidasta se on. Tässä artikkelissa on esitetty konekielisen merkkifonttien määrittelyohjelman listaus. Kuusneloseen on ennenkin ollut saatavana vastaavaan tarkoitukseen tehtyjä ohjelmia, jotka eivät kuitenkaan monipuolisuudessaan ja ohjelmoitavuudessaan yllä läheskään nyt esitettävän tasolle. Ohjelman erityisominaisuus on ohjelmoin- ti. Sen avulla voit antaa koneen suorit- taa useille merkeille samat operaatiot automaattisesti. Esim. jos tarvitset kääntää kaikkia kirjaimia 90 astetta va- semmalle, ohjelmoit vain merkinmäärit- telyohjelman tekemään tämän, eikä sinun tarvitse itse muuttaa jokaista merkkiä erikseen. Tutustumme seuraavaksi ohjelman käskyi- hin, joita on kaikkiaan n. 50. Editoitavan merkin valinta: Ruudussa näkyy vihreällä taustalla pala merkkivalikoimaa. Nuoli osoittaa merk- kiä, joka on tällä hetkellä valittuna. Voit liikkua vasemmalle painamalla "," ja oikealle painamalla ".". Lisäksi voit "hypätä" luettelossa suhteellisesti pai- namalla ensin "+" tai "-" sen mukaan, kumpaan suuntaan haluat liikkua, ja näp- päilemällä sitten kaksi heksadesimaali- digittiä, 00...ff. Absoluuttinen hyppy muodostetaan käskyl- lä "j", jonka jälkeen annetaan heksa- luku 00...ff, joka määrää suoraan halu- tun merkin koodin (poke-koodi, ks. käyt- töohjekirja). "Z"-näppäimellä valitaan haluttu merkki- valikoima 2...7 (vaihtaa merkkien osoi- tetta: 2=52 k, 3=54 k, 4=8 k, 5=10 k, 6=12 k ja 7=14 k). Valikoimat 2 ja 3 otetaan suoraan merkki-rom-muistista, joten niitä ei voi muuttaa. Valittu merkki otetaan editoitavaksi painamalla "g" ja valmiiksi editoitu siirretään haluttuun paikkaan merkkiva- likoimassa valitsemalla edellä kuvatulla tavalla ko. merkki ja painamalla sitten "P". Editointi: Kursori liikkuu editointiruudukossa nor- maalisti kursorinohjainnäppäimistä. Kur- sorin kohdalla oleva piste voidaa vaih- taa painamalla välinäppäintä (toggle). Ruudukko tyhjenee "CLR"-näppäimellä ja kursori siirtyy ruudukon home-paikkaan "HOME"-näppäimellä. "I" vaihtaa merkin käänteiseksi. "F" kääntää merkin ylösalaisin ja "M" peilaa sen sivusuunnassa. Merkin vieritys tapahtuu painamalla en- sin "S". Tämän jälkeen vieritys on mah- dollista kaikkiin suuntiin kursorioh- jainnäppäimiä käyttäen. Lopetettuasi vierityksen paina jotakin muuta kuin kursorinäppäintä, jolloin toiminta palaa editointimuotoon. Joskus on tarpeen piirtää suoria viivoja merkin tietystä pisteestä merkin reunaan saakka. Tämä tapahtuu seuraavasti: siirrä kursori viivan alkupisteeseen, paina "L" ja lopuksi kursorinäppäin, joka ilmoittaa haluamasi viivan suunnan. "R"-komennolla voidaan merkkiä pyörittää 90 astetta myötäpäivään. Ohjelmaan kuuluvat myös eräänlaiset ikkunointitoiminnot. Merkistä voidaan rajata pieni osa, jota voidaan sen jälkeen kä- sitellä erillään tai siirtää se esim. johonkin muuhun merkkiin. Ikkunan vasen ylänurkka asetetaan kursorin paikkaan painamalla "WC". painettaessa "WG" kur- sorin sen hetkinen paikka määrää oikean alanurkan. Näin määritellyltä alueelta kaikki merkin pikselit siirretään eril- liseen säilöön, josta ko. alue voidaan haluttaessa kutsua esiin "WP" komennolla, joka siirtää sen ruudukossa olevaan määriteltävään merkkiin. Valittua pikse- lialuetta voidaan vierittää "WS" komen- toa ja kursoriohjaimia käyttäen. Vieri- tyksen ajaksi ruudukkoon tulee valittu pikselialue. Kun toiminnosta poistutaan, palaa entinen merkki ruudukkoon. "Ikku- noitu" pikselialue voidaan siirtää ha- luttuun merkkiin kahdella tavalla: or- tai exclusive-or -toiminnoilla. Ne muo- dostavat loogiset operaatiot ikkunoidun alueen ja editoitavan merkin pikselien välillä. OR-toiminto valitaan painamalla "WO". "WM" vaihtaa or/eor toimintoja (toggle). Ruudun alalaidassa oleva "W" ilmaisee, kumpi toiminto on käytössä. Jos valittuna on OR-toiminto, "W" on käänteisellä kentällä. Merkki voidaan symmetrisoida X- tai Y- akselin suhteen kaikissa suunnissa käyt- täen komentoja "CD", "CU", "CL" ja "CR". "C" määrää symmetriatoiminnon ja toinen kirjain sen, miltä puolelta X- tai Y-ak- selia pikselit kopioidaan peilattuina toiselle puolelle (down, up, left, right). Esim. "CR" kopioi merkin oikean puoliskon peilattuna vasemmalle puolel- le. Toiminto on hyödyllinen tehtäessä symmetrisiä merkkejä. "DW"-komennolla voidaan laajentaa merkki kaksinkertaiseksi X-suunnassa siten, että pikselisarake 2 muodostaa uuden merkin sarakkeet 0 ja 1, sarake 3 sarakkeet 2 ja 3, sarake 4 sarakkeet 4 ja 5 sekä sarake 5 sarakkeet 6 ja 7. "DH"-komento on muuten samanlainen, mut- ta toiminta tapahtuu Y-suunnassa riveit- täin. "E1" asettaa laitenumeron lataamis- ja tallennusoperaatioille. Komennon jälkeen on annettava laitenumero heksadesimaali- na (0...f). Oletusarvo on 8. "E2" asettaa tiedoston nimen levyoperaa- tioille. Komennon jälkeen näppäillään nimi (maks. 16 merkkiä). "E3" lataa "E2":lla asetetulla nimellä tallennetut merkit halutulta laitteelta. "E4" tallettaa merkit massamuistiin. Le- vyä varten on ilmoitettava alkuosoite, johon merkkien halutaan latautuvan LOAD "NAME",n,1 -komennolla basicista käsin. Ko. osoite annetaan heksana 0000...ffff ja se kirjoitetaan levytiedoston kahteen ensimmäiseen tavuun. "E5" lataa merkkejä määrittelvän ohjel- man (kuten "E3", mutta lataa ohjelman merkkien sijasta). "E6" tallettaa ohjelman. Joskus tarvitaan useista merkeistä koos- tuvaa suurempaa kokonaisuutta. Tätä var- ten ohjelmassa on kokeilumoodi, jolloin C-64:n vapaa ruutueditointi on käytössä ilman, että ohjelmasta tarvitsee pois- tua. "T" siirtää ohjelman testimoodiin. Komennon antamisen jälkeen kone kysyy, halutaanko merkkien olevan ns. multico- lor-moodilla vai ei (Y=kyllä, N=ei); seuraavaksi se kysyy, käytetäänkö exten- ded-moodia (Y/N). Lopuksi kysytään neljä väriä, joita käytetään multicolor- ja extended color moodeissa. Ensimmäinen väri on taustan väri. Värit ilmoitetaan heksaluvuilla 00...ff. Test-moodista pa- lataan painamalla . Paluu basiciin tapahtuu painamalla "CTRL+X". Ohjelmointitoiminnot Jos samaa käsittelyä tarvitaan useille merkeille, kannattaa käyttää ohjelmoin- titoimintoa. Silloin ei tarvitse määri- tellä itse kuin yksi merkki ja kone hoi- taa loput. Ohjelmointitila näkyy merkkivalikoiman yläpuolella. Kun ohjelmatila on tyhjä, näkyvissä on vain "rotanhäntä" (a:n nä- köinen vänkkyrä) ohjelman alkukohdassa. Ohjelmatilaa on 255 merkkiä, ohjelmaa vieritetään ruudussa sitä mukaa kuin si- tä kirjoitetaan. "SHIFT+P" asettaa ohjelman kirjoitustoi- minnan. Kun kuvaruudun alalaidassa oleva P on käänteisellä kentällä, on ohjelmo- intitoiminto päällä. Uusi "SHIFT+P" lo- pettaa ohjelman kirjoitustoiminnon (tog- gle). "SHIFT+D" asettaa/poistaa (toggle) oh- jelman demonstroinnin ohjelmoinnin, ts. jos demonstrointi on päällä (ruudussa merkkivalo D on käänteisellä kentällä), kaikki ohjelmaan kirjoitetut käskyt suo- ritetaan editoitavalle merkille sen li- säksi, että ne tallennetaan muistiin. Tämä helpottaa ohjelmointia, koska koko ajan on nähtävissä ohjelman vaikutukset merkkiin. Ohjelmatilassa voidaan liikkua painamal- la ":" (vasemmalle) ja ";" oikealle. Ohjelmasta voidaan tuhota käskyjä paina- malla ko. käskyn päällä delete-näppäintä ja insertoida insert-näppäimellä. Käsit- telyn alla oleva merkki näkyy ruudussa valkoisena. Kaikki käskyt toimivat myös ohjelmassa. Ne kirjoitetaan samoin kuin suorassa toiminnassa, tarvittavat parametrit näp- päillään välittömästi ao. käskyn jäl- keen. CTRL+D tuhoaa koko ohjelman ja "_" siir- tää ohjelman alkukohtaansa. Ohjelmaan sijoitettu "U" pysäyttää oh- jelman sallien käyttäjän antaa normaa- listi komentoja, kunnes painetaan RETURN, joka jatkaa ohjelman suoritusta. Ohjelman loppuun täytyy sijoittaa loppu- merkiksi "rotanhäntä" @. Ohjelma käynnistetään "a":lla. Sen jäl- keen annetaan joko RETURN tai heksaluku 00...ff, joka ilmaisee, kuinka monta kertaa ohjelma suoritetaan. Ohjelmaan voidaan luoda silmukka seuraa- vasti: sijoitetaan ohjelmaan "A", suori- tusten lukumäärä 00...ff, "(", silmukas- sa suoritettavat käskyt ja ")". Samassa ohjelmassa voi olla useita silmukoita, ei kuitenkaan sisäkkäin. Nyt ohjelman käynnistyksen yhteydessä mahdollisesti annettava heksaluku ei vaikuta mitään. Esimerkkejä ohjelmoinnin käytöstä: Esim. 1. Käännetään kaikki merkit ylösalaisin Näppäile SHIFT+p, joka asettaa ohjel- moinnin päälle. Sitten kirjoita: j00a40(grrp.)@ shift+p a Huomaa, että kaikki em. komennot anne- taan SELLAISINAAN ilman lisäyksiä, pe- räkkäin. J00 aiheuttaa siirtymisen merk- kiin nro 00. A40 asettaa silmukkakertojen lukumäärän ($40 = 64). Sulut ilmoittavat silmukan alun ja lopun. G ottaa merkin ruudukkoon. RR pyörittää yhteensä 180 astetta. P pistää muutetun merkin vali- koimaan. .(piste) valitsee seuraavan merkin. @ ilmoittaa ohjelman lopun. Esim. 2. Kavennetaan merkit: Kytke jälleen ohjelmointitoiminto (tuhoa ensin entinen ohjelma CTRL+d:llä) ja näppäile sitten ohjelma: woa40(giwcwgws.wpip.)@ SHIFT+p a HUOM. , jne. ovat ao. näppäi- miä. Siis EI <, l, e, f, t jne. Ohjelman toiminnan voit tutkia itse käs- kyjen toimintojen perusteella. "_" siir- tää taas ohjelman alkuun, SHIFT+p pois- taa ohjelmointitoiminnon ja a käynnistää ohjelman. Huomaa, että a käynnistää oh- jelman siitä kohdasta alkaen, joka on valkoisen merkin kohdalla ruudussa. Ei siis välttämättä ohjelman alusta. Esim. 3. Muutaa käänteiset merkit alleviivatuiksi Ohjelma kirjoitetaan kuten edellä. Lis- taus: j80a80(gilp.)@ Suoritettuasi ohjelman paina CTRL+X pääs- täksesi BASICiin. Näppäile POKE53272,30 saadaksesi äskeiset merkit käyt- töön. Nyt kursori näyttää vain viivalta. Näppärää! Kaikki käänteiset merkit ovat muuttuneet. Esim. 4. Kopiointi merkki-ROM-muistista Ohjelma kopioi pikkukirjaimet editoita- viksi. j00z3gz7p.aff(z3gz7p.)@ Ohjelma Ohjelma käynnistetään RUN-käskyllä (ja ladataan LOAD"cd",8:lla). Ruudulla näkyvät tiedot: - ON SET ilmaisee merkkivalikoiman nu- meron 2...7 - CHAR #$ ilmaisee valitun merkin POKE- koodin heksana - nuoli osoittaa valittua merkkiä, jonka suurennos on nähtävissä ruudun ylälai- dassa - laatikossa nuolen alla näkyy valittua merkkiä vastaava standarmerkki, joka ei muutu, vaikka sitä vastaava merkki mää- riteltäisiinkin uudelleen - vasemmassa ylänurkassa merkinmäärit- telyruudukko 8x8 - merkkivalikoimarivin yläpuolella oh- jelma - alalaidassa merkkivalot (ks. teksti) Lyhennelmä komennoista: a käynnistä ohjelma a hex chr nn aja ohjelma $nn kertaa cd symmetria alhaalta ylös cl symmetria vasemmalta oikealle cr symmetria oikealta vasemmalle cu symmetria ylhäältä alas dw laajenna merkin sa- rakkeet 2, 3, 4 ja 5 x-suunnassa dh laajenna merkin rivit 2, 3, 4 ja 5 y-suun- nassa e1 hex chr n aseta laitenumero e2 name aseta tiedoston nimi e3 lataa merkit e4 hex addr mmmm talleta merkit, levyl- le alkuosoitteeksi $mmmm e5 lataa ohjelma e6 talleta ohjelma f käännä merkki ylös- alaisin g ota merkki ruudukkoon i reverse (vaihda kaikki pikselit) j hex byte nn siirry merkkiin $nn l crsr key piirrä viiva kursorin paikasta annettuun suuntaan m peilaa merkki p siirrä merkki ruudu- kosta valikoimaan r pyöritä merkkiä 90 astetta myötäpäivään s crsr key(s) vieritä merkkiä t kokeilumoodi u (ohjelmassa) pysäytä ohjelma ja salli käyttäjän antaa komentoja, kunnes wc aseta ikkunan kulma wg talleta ikkuna muistiin wp siirrä ikkuna muis- tista ruudukkoon ws crsr key(s) ikkunan vieritys wo aseta wp:n OR-toimin- nolle wm vaihda wp:n tilaa (OR/EOR) z hex chr n hyppää merkkisarjaan $n , siirry luettelossa vasemmalle . siirry luettelossa oikealle : siirry ohjelmassa vasemmalle (ohjelmointitila) ; siirry ohjelmassa oikealle (ohjelmointi- tila) _ siirry ohjelman alkuun + hex byte nn siirry luettelossa $nn oikealle - hex byte nn siirry luettelossa $nn vasemmalle aseta/poista piste kursori kotiin tyhjentää ruudukon liikuta kursoria SHIFT+d ohjelmointi päälle/ pois SHIFT+p demonstrointi päälle/ pois CTRL+d tuhoa ohjelma CTRL+x palaa BASICiin keskeyttää ohjelman suorituksen @ ilmoittaa ohjelman lopun Kiinnostuneille tiedoksi: Ohjelma käyt- tää keskeytyspohjaista rutiinia vaihta- maan mm. ruudun väriä ja merkkivalikoi- maa. Näin on mahdollistettu kaikkien 256 merkin määritteleminen, koska yhtään merkkiä ei kulu alkuperäisten malliksi eikä ohjelman omaan käyttöön. Ohjelma muuttaa itseään ajon aikana, joten tal- leta se ensin esim. levylle ja aja vasta sitten!