Mikroprosessorit flippereissä
Ensimmäiset mikroprosessoriflipperit
Mikroprosessorin keksimisestä ei kulunut pitkääkään aikaa kun se jo löysi tiensä flippereihin.
Flipperi releineen ja moottoreineen onkin kiitollinen sovelluskohde prosessorille. Sillä
pystytään korvaamaan suuri määrä mekaanisia liikkuvia osia ja johtoja, eikä alkuaikojen pieni
muistikapasiteettikaan haitannut, eiväthän flipperitkään tuolloin kovin monimutkaisia olleet.
Alkuaikoina eivät valmistajat ehkä ymmärtäneet mitä mahdollisuuksia mikroprosessori peleihin
toisi, tai sitten eivät uskaltaneet tehdä totutuista poikkeavia koneita. Niinpä kolme suurta,
Gottlieb, Williams ja Bally tekivät kaikki muutamasta ensimmäisestä elektronisesta koneestaan
myös perinteisen EM-version. Elektroniikalla ei alkuaikoina tehty mitään sellaista, mikä ei olisi
releillä onnistunut.
Gottlieb System 1

Gottliebin System 1 CPU-kortti. Kuvan kortissa on vuotava akku
korvattu elektrolyyttikondensaattorilla, 'kultakonkalla'.
Kuva: Pascal Janin
Gottlieb, tuolloin suurin valmistaja, lähti eri linjoille kuin kaksi kilpailijaansa. Se
teetti koko elektroniikan alihankintana Rockwell-yhtiöllä, joka on tuttu mm. avaruussukkulan
tekniikan kehittämisestä. Nimekäs firma saikin aikaiseksi varsin erikoisen elektroniikan, joka
pohjautui Rockwellin oman 4-bittisen PPS4/2 mikroprosessorin ympärille. Pelit olivat niin
yksinkertaisia että vaatimaton nelibittinen riitti niitä ohjaamaan. Järjestelmä sai nimen
System 1. Monen muistamia koneita tuolta ajalta ovat esimerkiksi Joker Poker ja Cleopatra.
System 1 prosessorikortilla oli mikroprosessorin lisäksi kaksi kappaletta muistia ja I/O:ta
sisältävää piiriä, muistikapasiteetiltaan 2k x 8 bit ROM ja 128 x 4 bit RAM, sekä 16 I/O linjaa.
Yhteensä siis ROM-muistia oli 4 kilotavua ja RAM-muistia 256 tavua. Vaikka prosessori oli nelibittinen,
oli ohjelmamuisti kuitenkin 8 bittiä leveää. Datamuisti sen sijaan oli vain nelibittistä. Lisää I/O:ta
saatiin kahdesta GPIO piiristä, joissa molemmissa oli 12 input- ja 12 output-linjaa. Pelin sinisiä
seitsemän segmentin fluoresenssinäyttöjä ohjattiin samaan PPS4 perheeseen kuuluvalla GPKD näyttöpiirillä.
Edellämainittujen lisäksi System ykköseen kuului vielä 1k x 4 bipolaari-PROM, eli
pelirommi, joka olikin ainoa osa, joka kortilla vaihtui eri pelien välillä.
Asetuksia ja kirjanpitoa varten oli kortilla 256 x 4 bitin CMOS RAM. Kortin muuttumattomana pysyvä 4 kilotavua ROM:ia
sisälsi PGOL (Pinball Game Oriented Language) tulkin, jolla kielellä oli sitten koodattu peli-rommiin
kyseisen koneen toiminta. System 1 kykeni ohjaamaan kahdeksaa solenoidia (joista outhole, knocker
ja kolme ksylofonin kelloa veivät 5!), 32 lamppua ja 40 kytkintä. System 1 koneita tehtiin
vuosina 1978-1980. Nykypäivän korjaajalle ne ovat hankalia, koska Rockwellin PPS4 piirejä ei
saa enää mistään, ei varsinkaan maskirommia sisältäviä muistipiirejä. Kortilla oleva NiCd akku
oli tarkoitettu ylläpitämään muistin sisältöä kun koneessa ei ole virta päällä. Vanhetessaan
akku saattoi vuotaa elektrolyyttiänsä ulos tehden piirilevyn ja komponentit usein korjauskelvottomiksi.

Williams System 3
Samaan aikaan kun Gottlieb teetti peliensä elektroniikan Rockwellillä, päätti Williams
suunnitella oman järjestelmänsä. Se oli kokeillut elektroniikkaa jo 1977, jolloin Aztecista
tehtiin muutaman kappaleen sarja elektronista versiota. Varsinaiset ensimmäiset massatoimitukset
kuitenkin käynnistyivät vasta Hot Tip ja Lucky Seven -koneiden myötä. Kumpiakin tehtiin sekä EM
että elektronisia malleja. Elektroniikka sai nimekseen System 3, ilmeisesti kokeilut Aztecin kanssa
ja sen jälkeen ennen kahta tuotantokonetta olivat sitten 1 ja 2, näistä ei juuri tietoa ole olemassa.
Williams aloitti heti 8 bitin tekniikalla valiten tuolloin suositun Motorolan 6800-prosessorin.
Motorolan 6821 PIA-piirit hoitivat liitännät kenttään ja näyttöihin, näytöt olivat oransseja
7-segmenttiplasmanäyttöjä. Muistitilaa oli näissä koneissa hieman enemmän kuin Gottliebin System 1:ssä,
kortilla oli paikat viidelle 2k x 8 ROM-piirille. RAM:ia oli vain 128 x 8 työmuisti sekä 256 x 4
asetus- ja kirjanpitomuisti. Kortin ohjauskapasiteetti on suurempi kuin Gottliebilla, nämä ohjaavat
peräti 22 solenoidia, 64 kytkintä ja 64 lamppua. Standardien piirien ansiosta näitä kortteja voi vieläkin
korjata, kaikkia piirejä on jotenkuten vielä saatavissa. 23 vuotta vanhojen koneiden ongelmana alkaa olla
EPROM muistien hiipuminen, mutta onneksi Williamsin nettisivuilta voi imuroida vanhojenkin pelien ROM-koodit
ja ohjelmoida niillä EPROM:it uudelleen. Williamsin tekniikan heikohko kohta ovat huonot mikropiirikannat,
jotka vanhetessaan alkavat usein pätkiä. Huonon kannan tunnistaa siinä olevasta SCANBE-valmistajan
nimestä. Ne kannattaa vaihtaa uusiin heti kun ongelmia ilmenee. Williamsin korteilla ei ole akkuongelmaa,
niissä käytetään AA-paristoja. Ne on syytä vaihtaa uusiin 1-2 vuoden välein. Alkaliparistoilla ei
ole vuototaipumuksia kuten tavallisilla halvoilla. Käytä aina alkaliparistoja.
Bally AS2518

Ballyn AS2518-35 - järjestelmä. Vasemmalla ylhäällä CPU-kortti, alhaalla lamppujen ohjaus.
Oikealla ylhäällä solenoidiohjain / virtalähde, alhaalla Squawk and Talk - äänikortti.
Myös Bally suunnitteli oman mikroprosessorijärjestelmänsä. Samoin kuin Williamsin System 3, tämäkin
perustuu Motorolan 6800 ja 6821 piireille. Muistikapasiteettikin on suunnilleen sama kuin Williamsilla.
Ballyn järjestelmä on hieman 'kompaktimpi', siinä missä Williamsilla oli prosessorikortin lisäksi
erillinen driverkortti, jossa oli muutama PIA-piiri ja tehotransistoreja, tuli Bally toimeen
kahdella PIA:lla, jotka olivat prosessorikortilla. Sen sijaan solenoidien ohjaintransistorit olivat
toisella kortilla ja lamppujen ohjaus kolmannella. Kopioksi Williamsin ratkaisusta ei siis voi
Ballyn järjestelmää sanoa vaikka piirit ovatkin samoja. Ballyn ohjauskapasiteetti oli hieman
Williamsia pienempi, minkä vuoksi joihinkin koneisiin jouduttiin rakentamaan lisäohjainkortteja
suureksi kasvaneen lamppu- tai solenoidimäärän vuoksi. Ballyn muistivarmennus toimii jälleen NiCd
akulla, josta seuraa samoja ongelmia kuin Gottliebilla. Ensimmäisiä Ballyn elektronisia koneita
olivat Freedom, Night Rider ja Eight Ball.

6800 (tässä Hitachin valmistamana) sekä
jännästi koteloitu PPS4/2 mikroprosessori.
Muita valmistajia
Kolmen suuren lisäksi mikroprosessorikoneita kokeilivat pienemmätkin tehtaat. Erityisesti
on syytä mainita Mirco Games (siis ei Micro Games), joka ottaa kunnian ensimmäisestä mikroprosessoriflipperistä.
Peli oli Spirit of 76, ja se toimi Intelin 8008 prosessorilla. Tuotantomäärät jäivät pieneksi eikä ko. firma
tehnyt muita koneita. Espanjalainen Playmatic kehitti oman 1802 CMOS-prosessoriin perustuvan systeeminsä.
Näitä LED-näyttöisiä koneita on Suomessakin näkynyt aikoinaan, itse muistan korjanneeni Big Town -nimistä
Playmaticin elektronista. Toinen espanjalainen, Recel, teki muutamia koneita Gottliebista tutulla Rockwellin
PPS4 piirisarjalla, kuitenkin omilla ohjelmillaan.
Tekniikka kehittyy

Ensimmäisten prosessorikoneiden jälkeen kukin valmistaja jatkoi oman järjestelmänsä kehittelyä.
Gottlieb luotti edelleen Rockwelliin ja tilasi siltä toisen sukupolven prosessorijärjestelmän. Tämä
vuonna 1980 Spidermanissa ensi kertaa käytetty järjestelmä sai nimen System 80. Siinä käytettiin
monesta kotimikrosta tuttua 6502 prosessoria ja saman sarjan 6532 liitäntäpiirejä. System 80
koki pientä kehitystä vuosien varrella kun siihen lisättiin muistia ja aakkosnumeerisen näytön
ohjaus. Viimeiset Gottliebin pelit tehtiin System 3 -nimisellä järjestelmällä, joka pohjautui
edelleen 6502 prosessoriin mutta mm. solenoidien ohjauksessa käytettiin MOSFET-transistoreja.
Gottlieb vaihtoi omistajaa 1990 luvulla pari kertaa ja lopetti kokonaan 1996. Gottliebin, erityisesti
System 80-tekniikasta voit lukea lisää Pekan System 80 -sivuilta.

Williamsin System 6 - järjestelmä. Vasemmalla ylhäällä prosessorikortti, sen alla ohjainkortti.
Oikealla ylhäällä äänikortti, keskellä virtalähde ja alinna muuntaja, tasasuuntaajat ja suotoelkot.
Williams jatkoi oman korttinsa kehittelyä, System 3:n jälkeen seurasivat System 4, 6, 7, 9 ja 11,
jotka kaikki käyttivät edelleen Motorolan 6800 -tyyppistä prosessoria. Prosessori vaihtui System 9
kohdalla 6802:ksi, joka on käytännössä sama kuin 6800, sisältäen vain 128 tavua RAM:ia lisänä.
Muistikapasiteetti kasvoi mahdollistaen monimutkaisemmat pelit. System 11:ssa oli jo aakkosnumeerinen
näyttö. Merkittävä uudistus tuli vuonna 1990, WPC-järjestelmän myötä, jolloin prosessori vaihtui
nopeampaan 6809:ään ja kellotaajuuskin kasvoi kaksinkertaiseksi 2 MHz:iin.
APz:n flipperisivuilta voit lukea selostuksen WPC-järjestelmän
toiminnasta.
Bally käytti AS2518 korttia parin sukupolven ajan, joissa on eroa lähinnä muistikapasiteetissa.
Muistamme sellaiset hienot koneet kuin Flash Gordon, Vector ja Xenon. Seuraava kehitysaskel Ballyllä
oli vaihtaa prosessori 6803:een, jossa on sisäänrakennettua muistia ja ajastin. Tämä yksinkertaisti
korttia hieman, samaan aikaan muistikapasiteetti taas kasvoi. 6803-korttia käyttäviä koneita ovat
mm. Eight Ball Champ, Hardbody ja Truck Stop, joista jälkimmäinen jäikin viimeiseksi 6803-koneeksi Williamsin ja
Ballyn fuusioiduttua ja Williamsin tekniikan jäädessä käyttöön.
Nykyään, kun ainoa flipperinvalmistaja maailmassa on Stern, on mielenkiintoista tietää että
1980-luvun alussa Stern käytti Ballyltä lisensoitua tekniikkaa flippereissään, silloiset Sternin
pelit kuten Nugent, Flight2000 ja Lectronamo olivat sisältä kuin saman aikakauden Ballyt!

Ohjelmisto
Miten sitten mikroprosessori toimii flipperissä? Otetaanpa esimerkiksi Ballyn 6800-kortin toiminta.
Kahden 6821 PIA-piirin avulla 6800-prosessori ohjaa näyttöjä, lamppuja, solenoideja ja kytkimiä.
Prosessorin toimintaa ajoittaa kaksi eri keskeytystä: Zerocross-signaali aiheuttaa keskeytyksen aina
kun verkkojännitteen jakso menee nollakohdan yli. Näin tapahtuu 100 kertaa sekunnissa 50 Hz virralla.
Näyttökeskeytyksen tekee kortilla oleva oskillaattori noin 300 kertaa sekunnissa.
Vielä nykyäänkin flipperit ohjelmoidaan tiiviillä assemblerilla. Valmistajat eivät luota
korkean tason kääntäjiin, vaikka nykyään ne tekevät aivan yhtä hyvää koodia kuin assemblerkin,
ja jos mahdollista, vielä parempaa koska ohjelmoija ei tarvitse huolehtia rekisteritason
kysymyksistä.
Testit
Virta päälle kytkettäessä on ohjelman ensimmäinen tehtävä testata prosessorikortin toimivuus. Kaikista
ROM-piireistä lasketaan tarkistussumma, kaikki RAM testataan samoinkuin PIA-piirien toiminta ja
keskeytyksien tuleminen. Näin saadaan yli 90% kortin komponenteista testattua, ja koneen ei anneta
toimia ennenkuin kaikki testit menevät läpi. Testi kestää noin 10 sekuntia, ja testin etenemistä
voi seurata prosessorikortilla olevaa vilkkuvaa lediä seuraamalla. Jokainen onnistunut testi väläyttää
lopuksi lediä kerran. Väläytykset laskemalla voi nähdä, mikä testi epäonnistuu sillä virheen löytyessä
testaus pysähtyy.
;checksum rom
ldx #6000 ;start from 5fff (top of u6)
romck2: clra
lds #0400 ;add 0400 bytes
romck1: dex
adda 00,x
des
sts digit
bne romck1
coma ;check that sum is 0
bne . ;rom test error
cmpx #1000 ;all rom 1000-5fff done?
beq romok
cmpx #5000 ;u6 done?
bne romck2
ldx romend ;u6 done, get game rom end
beq romok
bra romck2
romok: lds #stack
bsr flashled ;1. flash: rom ok
Pääohjelma
Pääohjelmassa tutkitaan kytkinmatriisin tilaa. Tässä matriisissa ovat kaikki kentän kytkimet, sekä
myös rahakytkimet, tilt, starttinappi ym. Kun huomataan muuttunut kytkin, haetaan kytkimen numeron
perusteella sitä vastaavan aliohjelman osoite ja käydään suorittamassa se. Tämä voi olla rahakytkimen
tapauksessa aliohjelma, joka tutkii hinnoitteluasetukset ja antaa niiden mukaisen määrän credittejä,
tai vaikkapa tiltin tapauksessa ohjelma, joka asettaa pelin tilt-tilaan ja sytyttää vastaavan lampun.
Kytkinmatriisin tila luetaan zerocross-keskeytyksessä ja kolmen peräkkäisen luvun tulokset talletetaan
muistiin. Näin saadaan kosketinvärähtelyt eliminoitua. Kytkin hyväksytään sulkeutuneeksi ainoastaan
silloin kun vanhin lukukerta on 'auki', keskimmäinen 'kiinni' ja uusin 'kiinni' Vain tässä tilanteessa
suoritetaan kytkimen aliohjelma. Jos kolmen lukukerran tulokset ovat 'kiinni', 'kiinni' ja 'kiinni'
toteaa ohjelma kytkimen jumittuneen kiinni eikä tee mitään. Muut yhdistelmät ovat merkki häiriöistä
tai kosketinvärähtelyistä, ja ne voidaan niinikään hylätä.
main5: tba
coma
andb 00,x ;clear switch state
stab 00,x
ldx tmpvect ;get vector
ldx 00,x
jsr 00,x ;call vector
main1: ldx usrpresc
jsr 00,x
ldx scoreupd ;call score update routine
jsr 00,x
Zerocross-keskeytys
100 kertaa sekunnissa putoaa verkkojännitteen jakso nollakohtaan. Tämä aiheuttaa keskeytyksen CPU:lle,
joka sitten odottaa lyhyen hetken, että jännite ehtii taas nousta hieman. Sitten muistista haetaan
kaikkien koneen lamppujen tilatieto ja liipaistaan lamppua ohjaava tyristori päälle tarvittaessa.
Tyristori pysyy johtavana seuraavaan nollakohtaan asti, jolloin se tipahtaa automaattisesti pois.
Mikäli lamppu on vielä päällä, liipaistaan se taas seuraavassakin zerocross-keskeytyksessä.
Pelissä olevia ajastimia hoidetaan myös tässä keskeytyksessä. Mikäli ajastimen arvo on positiivinen,
vähennetään sitä yhdellä. Pääohjelmassa sitten voidaan tehdä eri temppuja sen mukaan mitkä ajastimet
ovat menneet nollaan, tai asettaa ajastimen alkuarvoksi haluttu pituus. Muunmuassa solenoidien vetopulssien
pituus määrätään näillä ajastimilla. Normaali bumperin tai slingshotin solenoidi laitetaan päälle kolmen
zerocross-keskeytyksen ajaksi. Montun solenoidi saa pitemmän pulssin, jotta pallo ehtisi varmasti ulos.
;system zerocross irq
zcirq: dec timer1
ldx timerw ;timer1 <= 0?
bmi zci1
beq zci1
dex ;dec timer1
zci1: stx timerw
ldaa timer2 ;timer2 at 0?
beq zci2
dec timer2 ;dec timer2
Seuraavaksi luetaan kytkinmatriisi. Kytkimien tilat talletetaan edelläkuvattuun kolmeen taulukkoon.
Koska kytkimen sulkeutumisen varmentamiseksi vaaditaan kolme lukukertaa, olisi se liian hidasta
bumperien ja slingshottien kanssa, joiden on reagoitava välittömästi palloon. Näitä nopeaa reagointia
vaativia kytkimiä luetaankin erikseen joka zerocross-keskeytyksessä ja ohjataan samantien vastaava
solenoidi päälle tarvittaessa. Näin saadaan bumpereille ja slingshoteille riittävä sähäkkyys.
Näyttökeskeytys
Noin 300 kertaa sekunnissa tulee prosessorille näyttökeskeytys. Pistenäytöt ovat multipleksattuja,
mikä tarkoittaa että vain yksi numero kussakin 5 näytössä (4 pelaajanäyttöä sekä credit/match -näyttö)
on kerrallaan päällä. Näytettävää numeroa vaihdetaan 300 kertaa sekunnissa, jolloin silmä näkee
hitautensa ansiosta kokonaisen näytöllisen. Viiden näytön numerot on talletettu muistiin omalle
alueelleen, samoinkuin näytettävän numeron paikkakin. Näyttökeskeytyksessä sammutetaan vanha numero,
siirrytään seuraavaan paikkaan ja sytytetään uusi numero.
dspi1: staa pia1a ;lamp data/adr=ff
ldab #3C
stab pia1bctl ;set lamp strobe 1
ldab #3D
stab pia2actl ;set lamp strobe 2, enable disp irq
ldab #34
stab pia1bctl ;clr lamp strobe 1
ldab #35
stab pia2actl ;clr lamp strobe 2
ldaa digit ;find current digit
ldx #021D ;and make X= 21d + digit#
dspi2: inx
asla
bcc dspi2
ldaa #35
staa pia1actl ;disp data enable
Ballyn vanhoissa peleissä oli käytetty pelkästään konekieltä. Williams sai samoihin
aikoihin puristettua moninkertaisen määrän toimintoja samaan muistitilaan käyttämällä omaa
tapahtumaohjattua käyttöjärjestelmäänsä ja skriptikieltä williams_lvl7_programming.html
Eri valmistajien 1980-luvun ohjelmistoratkaisuja vertaillessa huomaa hyvin, miten Williams kehittyi
aivan omaan luokkaansa. Bally pitäytyi konekielessä ja joutui tuskailemaan muistitilan rajoituksien kanssa,
Gottlieb ulkoisti koko ohjelmistopuolen menettäen samalla hallinnan pelien toiminnan suhteen,
mutta Williams kehitti ratkaisut toimia pienessä muistitilassa ja tuotti pelaajia yhä kiinnostavia koneita.
Ei ollut elektroniikan tai ohjelmiston vika että se joutui lopulta lopettamaan flipperien valmistuksen
kannattamattomana.

Takaisin