Omdat ik gemerkt heb dat er redelijk wat onduidelijkheden zijn in verband met het gebruik van EPROMs in flipperkasten (en ook omdat ik zelf al veel tijd verloren heb i.v.m. opzoekingswerk hieromtrent), schrijf ik deze uiteenzetting. De bedoeling is een kort overzicht te geven van de verschillende types EPROMs die vaak voorkomen in flipperkasten en wat de belangrijkste eigenschappen hier van zijn. Voor deze uitleg ben ik uitgegaan zo weinig mogelijk voorkennis van de lezer, dus misschien zal het voor sommigen hier iets té basic zijn.
- PROM? EPROM? EEPROM?
"ROM" staat voor "Read-Only Memory" en het zijn de chips waar data op geprogrammeerd kan worden. In flipperkasten worden ze vooral gebruikt om de programmacode (software) of om muziek en geluidseffecten op te slaan. Je hoort wel eens de verschillende afkortingen "PROM", "EPROM" en "EEPROM". Maar wat betekenen deze nu juist?
- PROM: Programmable Read-Only Memory. Dit zijn chips die vanuit de fabriek geprogrammeerd zijn en daarna onmogelijk gewist of overschreven kunnen worden. Een beetje vergelijkbaar met een CD(-ROM) die je in de winkel koopt. Veel oudere flipperkasten maken hiervan gebruik en deze chips hebben vaak allerlei exotische typenummers.
- EPROM: Erasable Programmable Read-Only Memory. Deze chips kunnen wél gewist worden, namelijk door ze een aantal minuten bloot te stellen aan UV-licht van een zeer specifieke golflengte (ze in de zon of onder een zonnebank leggen zal dus niet werken). Wanneer ze volledig leeg zijn, kunnen ze met een brander opnieuw geprogrammeerd worden. EPROMs zijn veruit het meest voorkomende type ROM in flipperkasten.
- EEPROM: Electrically Erasable Programmable Read-Only Memory. Eigenlijk identiek aan de EPROM, maar deze chips kunnen gewist worden door simpelweg een bepaald voltage op een pin te zetten. Een brander kan deze chips dus gewoon wissen, wat het gebruik ervan heel wat versimpelt. Komt helaas niet zo vaak voor in flipperkasten.
Williams Pinball 2000 is een beetje een tussengeval. Men gebruikte ROMs voor het geluid en de graphics, maar de software werd opgeslagen in flashgeheugen dat updatebaar was. Het was ook mogelijk om geluidclips te updaten, deze werden dan ook in het flashgeheugen opgeslagen. Updaten gebeurde via een seriele poort.
Het mag wel duidelijk zijn dat ROMs gebruiken om data op te slaan een techniek van het verleden is. De reden waarom ze in flipperkasten gebruik werden is omdat de chips niet onderhevig zijn aan gevolgen van vibratie (in tegenstelling tot bijvoorbeeld een harde schijf) of vuil (in tegenstelling tot een diskettelezer of cd-lezer). Tegenwoordig zijn er echter veel betere oplossingen zoals flashgeheugen (bijvoorbeeld geheugenkaartjes of SSD disks). Het is dus niet verwonderlijk dat het als maar problematischer wordt om met deze oude ROMs te werken.
In deze uiteenzetting ga ik me beperken tot EPROMs. De reden is simpel: EEPROMs worden bijna niet gebruikt en het heeft geen zin een uitleg te geven over PROMs aangezien we die toch niet zelf kunnen branden. - Hoe herken ik een EPROM? Waar vind ik ze in mijn flipperkast?
Een EPROM herkennen is niet moeilijk, maar het is wel niet zo evident om uit te leggen. Eens je weet hoe ze eruit zien, herken je ze onmiddellijk. Enkele foto's van typische EPROMs:
Wat je kan doen is zoeken naar chips met een stickertje er op geplakt. Dit etiket dient om de EPROM te beschermen tegen UV-licht. Alle EPROMs hebben dus zo'n sticker (tenzij die afgevallen is, in welk geval je er best een nieuwe op plakt). Het probleem is wel dat er soms ook stickers geplakt worden op andere chips om het type aan te duiden of om een serienummer te vermelden. Dit is typisch het geval op een WPC CPU. Hier zien we in het midden (met opdruk P3) de EPROM en net eronder de foto een RAM chip met een serienummer er op geplakt. De chip boven de EPROM is de processor.
In flipperkasten zitten EPROMs ook altijd in voetjes. Op de bovenstaande WPC CPU zit de RAM bijvoorbeeld niet in een voetje.
Typische plaatsen om EPROMs te zoeken in flipperkasten is op de MPU en op het soundboard.
- Hoe vervang ik een EPROM?
Net zoals het vervangen van andere chips die in voetjes zitten, kan je voorzichtig met een kleine schroevendraaier de chip proberen los te peuteren door beurtelings aan beide korte zijden de chip omhoog te heffen. Wees wel voorzichtig want veel voetjes zijn open aan de onderkant, waardoor je met een schroevendraaier makkelijk onderliggende baantjes kan beschadigen indien je te diep steekt en de schroevendraaier als hefboom op de print gebruikt. Probeer ook beide kanten zo gelijkmatig mogelijk omhoog te heffen, zo verklein je het risico op gebogen pinnetjes. Je kan ook een IC extractor gebruiken.
Vergeet bij het plaatsen van de nieuwe EPROM niet dat deze chips een oriëntatie hebben en je ze wel degelijk ondersteboven kan steken, wat waarschijnlijk de EPROM zal beschadigen. De "bovenkant" van de chip wordt aangeduid met een inham ("notch") en geeft aan waar pin 1 zich bevindt. Deze moet op de plaats zitten waar er ook een notch is in het voetje of waar pin 1 aangeduid staat op het PCB (met een bolletje bijvoorbeeld). Ben je niet helemaal zeker, dan kan je ook kijken naar de notches van de omliggende chips want meestal zijn deze allemaal op dezelfde manier geörienteerd. Vertrouw niet op de leesbaarheid van de opdruk op de sticker op de EPROM. Op heel wat printplaten zitten alle chips namelijk "ondersteboven".
Ik heb hieromtrent een tof filmpje gevonden (van iemand met een leuk accent).
- Naamgeving
In de loop van de voorbije 45 jaar zijn er veel reeksen, types en groottes van EPROMs geweest. Laat ik anders beginnen met een voorbeeld. Een tijdje geleden heb ik een aantal EPROMs gekocht op eBay om software te kunnen branden voor een reeks WPC kasten (bijvoorbeeld voor een Twilight Zone).
Dit is de opdruk op deze EPROM: AM27C040-120DC
- AM: De fabrikant. In dit geval AMD.
- 27: De "reeks". In dit geval dus de 27-reeks. Later hierover meer.
- C: Het type geheugen. C staat in de 27-reeks voor CMOS. Indien de C ontbreekt, is het NMOS. Eigenlijk moet je je hier niets van aantrekken. Het grootste verschil is het stroomverbruik. Een NMOS verbruikt typisch meer stroom dan een CMOS. Een NMOS mag je dus altijd vervangen door een CMOS en (in flipperkasten) meestal ook andersom.
- 040: Dit duidt de grootte aan. 040 staat voor 4 megabit.
- 120: De snelheid.
- D: De "verpakking". Met andere woorden: de "vorm" van de chip. D staat voor "DIP". EPROMs in flipperkasten zijn altijd in DIP verpakking.
- C: Toegestane gebruikstemperatuur. C staat voor "commercial". Niet belangrijk.
Enkele andere voorbeelden om het wat duidelijker te maken:
- AM27C080-120DC: 8 megabit EPROM van 27-reeks
- D27C128: 128 kilobit EPROM van 27-reeks
- MBM2764: 64 kilobit EPROM van 27-reeks (in NMOS)
- TMS2532: 32 kilobit EPROM van 25-reeks
- De grootte
Op het eerste gezicht is de aanduiding van de grootte misschien een beetje verwarrend. 040 staat voor 4 megabit en 512 voor 512 kilobit. Dus 40 is dan groter dan 512? Inderdaad.
Grootte van EPROMs zijn altijd in machten van 2 en verdubbelen dus telkens bij de release van een nieuw type, zoals zoveel zaken in de computerindustrie. De kleinste EPROM die je gaat tegenkomen is er eentje van 8 kilobit. Hier vlug een overzicht hoe de chipgrootte aangeduid wordt in de chipnaam. Iedere stap is dus een verdubbeling in grootte.
04: 4 kilobit
08: 8 kilobit
16: 16 kilobit
32: 32 kilobit
64: 64 kilobit
128: 128 kilobit
256: 256 kilobit
512: 512 kilobit
010 of 1024: 1 megabit (== 1024 kilobit)
020 of 2048: 2 megabit
040 of 4096: 4 megabit
080 of 8192: 8 megabit
Een 27C020 is dus een EPROM van 2 megabit. Let wel op! Een 27C020 is niet compatibel met een 27C2048. Het zijn beide chips met dezelfde grootte, maar ze hebben een andere pinout:
Voor de geeks : Niet alleen de pinout is anders, ook de geheugenindeling is anders. De 27C010 is (zoals de klassieke EPROMS) per byte opvraagbaar, de 27C1024 is per 2 bytes aanspreekbaar.
- Programmeervoltages
Iets wat niet altijd meteen af te leiden valt uit de naam (maar soms wel op de chip gedrukt staat), is het voltage dat nodig is om de chip te kunnen programmeren. Sinds de 2732 draaien alle chips op 5V (leesmodus), maar voor het programmeren zijn andere (hogere) voltages nodig.
In de loop der jaren werd (door de vooruitgang der techniek) dit benodigde voltage telkens in stappen verlaagd. Van 25V, naar 21V, naar 13V of 12.5V. Vanaf 27256 is het programmeervoltage gestabiliseerd op 12.5V of 13V. In 2764 en 27128 zijn er verschillende voltages te vinden. Sommige hebben 21V nodig, andere 13V. Alles wat 2732 is of ouder heeft 21V of zelfs 25V nodig.
Dit is belangrijk om weten omdat sommige branders de hogere voltages niet aankunnen. Heb je bijvoorbeeld een brander die geen 21V en 25V aankan, dan kan je geen chips branden die 2732 zijn of ouder. Van de 2764 en 27128 kan je enkel deze chips branden die 12.5V / 13V ondersteuning hebben. Vanaf 27256 kan je alles branden. Dit soort branders komt zeer vaak voor (omdat deze hogere voltages niet meer nodig zijn voor moderne chips). Als je je beperkt tot flipperkasten die jonger zijn dan ongeveer 1985/1986, kom je hier mee toe. Bovendien kan je natuurlijk de oudere chips vaak wel gewoon uitlezen.
Vaak wordt in 2732, 2764 en 27128 een onderscheid gemaakt in het programmeervoltage door een A toe te voegen aan het einde van de naam. Een 2764 of 27128 betekent dan dat het een 21V chip betreft, terwijl je voor een 2764A en 27128A slechts 12.5V nodig hebt. Voor de 2732 ligt het wat anders. Daar duidt 2732A op 21V terwijl 2732 25V betekent!
Het lijkt allemaal muggenzifterij, maar geloof me: ik heb ooit uren verprutst omdat ik dit niet wist en 2764 chips probeerde te branden met een brander die geen 21V ondersteunde. Het probleem was dat ik een batch EPROMs van 64 kilobit had waarvan sommige 2764 en sommige 2764A waren. De ene chip werkte dus wel en de andere niet...
- De reeksen
Ik ga het hier slechts hebben over 2 reeksen: de 27-reeks en de 25-reeks omdat dit de meest voorkomende zijn in flipperkasten. Er zijn nog veel andere reeksen, maar deze zijn te oud, te nieuw of te exotisch om nuttig te zijn voor ons.
De 27-reeks is de belangrijkste, de grootste en bijgevolg ook nog het best ondersteund door branders. Je vindt het volledige gamma (van 8 kilobit tot 8 megabit) aan EPROMs in 27-formaat.
De 25-reeks is eigenlijk een spin-off van de 27-reeks. Deze reeks heeft slechts een zeer klein leven beschoren gehad en er zijn hierin enkel EPROMs te vinden van 16 kilobit of 32 kilobit. Binnen deze groottes komt de 25-reeks echter nog wel regelmatig voor. Dit wil zeggen dat je toch wel dergelijke chips gaat terugvinden in flipperkasten (of arcadeprints) van eind jaren 70, begin jaren 80. Omdat de 25-reeks zo lang geleden gestopt werd, is het niet altijd even evident om een brander te vinden die deze reeks ondersteunt of om lege chips te vinden. Het is nog mogelijk, maar vaak is het makkelijker om de inhoud op een 27-er te branden en de printplaat om te vormen zodat deze 27-reeks EPROMs ondersteunt.
Het verschil tussen beide reeksen zit hem vaak in de pinout. Het is dus duidelijk dat 25-ers en 27-ers niet zomaar uitwisselbaar zijn.
Er zijn eigenlijk nog een paar belangrijke complicaties die te maken hebben met het ontstaan van beide reeksen. Deze informatie is wel zéér nuttig als je vaak met oude flipperkasten werkt!
In den beginne (ergens in de tweede helft van de jaren 70) was er enkel de 2708. Deze chip had 3 (!) verschillende voltages nodig om te kunnen werken. Niet erg handig dus.
Destijds waren er twee grote rivaliserende bedrijven die EPROMs produceerden: Intel en Texas Instruments. Beide gingen simultaan op zoek naar een ontwerp voor de aankomende 2716 chip. Na verloop van tijd kwamen beide bedrijven ongeveer gelijktijdig met een 2716 chip op de markt. De 2716 van Texas Instruments was volledig analoog aan de 2708 en werkte dus ook op 3 voltages. Die van Intel echter draaide enkel op 5V, een pak eenvoudiger. Het gevolg laat zich raden: alle andere fabrikanten produceerden chips die compatibel waren met het ontwerp van Intel, wat dus in praktijk de standaard werd. De versie van Texas Instruments (TMS2716) is dus niet compatibel met alle andere 2716's op de markt.
Het wordt echter nog toffer. Texas Instruments vond het bijgevolg niet leuk dat ze volop chips aan het produceren waren die niet compatibel waren met de rest (ze voelden dat ook in hun verkoop). Dus maakten ook zij een chip die compatibel was met de 2716 van Intel. Maar... ze konden deze chip niet meer 2716 noemen (want zo hadden ze er al één), dus noemden ze die maar de 2516. Gevolg: een 2516 is compatibel met een 2716.
Maar... het wordt nog toffer! Toen Intel een tijd later de 2732 uitbracht, ontworpen ze die volledig analoog aan de 2716, ze voegden enkel een extra adreslijn toe. Texas Instruments wou echter leuk doen en bracht een 32 kilobit EPROM op de markt die niet compatibel was met die van Intel, in de hoop zelf de standaard te worden. Ze doopten deze chip de 2532. Tevergeefs. De chip van Intel werd weer de standaard. Vanaf 2764 gaf Texas Instruments het op en werd gewoon verder gebouwd op het ontwerp van de 2732 van Intel.
Conlusie:
TMS2716 is NIET compatibel met alle andere 2716
TMS2516 is WEL compatibel met 2716
TMS2532 is NIET compatibel met 2732
De TMS2516 ga je niet vaak tegenkomen, maar de andere twee wel. Vooral de 2532 was toch nog redelijk populair en heb ik persoonlijk al veel gezien op arcadeprints. Het lijkt een klotechip, want veel branders kunnen hem enkel lezen en dus niet schrijven. Alé, op het eerste zicht toch. Want het is niet echt moeilijk om een adapter te maken zodat je een 2732 kunt gebruiken in plaats van een 2532.
- EPROMs wissen
Zoals reeds eerder vermeld kan je EPROMs wissen met UV-licht van een specifieke golflengte. Hiervoor zijn speciale wissers op de markt die dit licht uitzenden.
Een EPROM bevat in het midden op de chip een klein glaasje waardoor het licht binnen kan vallen. Als je dit met een microscoop zou bekijken, zie je het volgende:
Om de EPROM te wissen, verwijder je dus eerst de sticker die het glaasje beschermt (en dus ook eventueel achtergebleven lijmresten) en leg je de EPROM in de wisser met het glaasje naar de lamp. Meestal laat ik mijn EPROMs een tiental minuutjes er in liggen om ze volledig te wissen. Als je ze er niet lang genoeg in laat liggen, ga je niet alle bits op 1 krijgen. En als je ze er té lang in laat liggen, help je de EPROM om zeep. Voorzichtig dus.
Wat ik ook aanraad is van het moment dat ze uit de wisser komen (en dus voordat je gaat branden) het glaasje al terug af te plakken. Plaats nooit EPROMs met onbeschermd glaasje in een flipperkast. De reden is simpel: alle licht (en zeker van TL-buizen) bevat UV-straling. Niet voldoende om een EPROM in een paar minuten te wissen, maar wel voldoende om na enkele weken, maanden of jaren een paar bits te doen omslaan. Problemen gegarandeerd.
Gebruik een plakkertje dat UV-licht zo goed mogelijk tegenhoudt. Ik gebruik tape voor elektriciteit. - Welke grootte van EPROM heb ik nodig?
Een vaak gestelde vraag is de volgende: "Ik heb een image gedownload voor flipperkast X, deze is Y bytes groot. Hoe groot moet de EPROM zijn waarop ik dit image wil branden?"
Het antwoord is simpel. De image is altijd exact even groot als de grootte van de EPROM. Dit komt omdat de "lege bits" in zo'n image ook vermeld staan (bij een volledig lege EPROM staan alle bits op 1). Zo'n image is dus eigenlijk een exacte 1-op-1 kopie van de inhoud van een EPROM. Alleen kan het soms een beetje verwarrend zijn omdat de grootte van een image door je computer uitgedrukt wordt in bytes, terwijl de groote van een EPROM uitgedrukt wordt in bits.
Laten we een voorbeeld nemen. Ik wil een nieuwe EPROM branden voor mijn Diner. Ik ga naar IPDB en download daar de "Game ROM L-4", een zip-bestand. In die zipfile zitten alle images van alle ROMs die nodig zijn voor Diner, dat zijn er 5 in totaal. Neem bijvoorbeeld DINR_U26.L4. Dit bestand bevat een deel van de spelcode van Diner en namelijk dat stuk dat op de EPROM moet die op positie U26 zit.
Nadat het bestand is uitgepakt, zien we dat het 32 kilobyte groot is. 1 byte bevat 8 bit. Dat betekent dat 32 kilobyte gelijk is aan 256 kilobit (32*8). We hebben dus een EPROM nodig van type 27256. Zo simpel is het. Gewoon maal 8. - Welke brander moet ik kopen?
Ik ga geen programmers aanraden. De reden is simpel: ik heb al vaak problemen gelezen online met mensen die bepaalde specifieke chips niet kunnen branden met hun brander. Als ik dus een bepaald type ga aanraden, en hij voldoet net niet voor jouw specifieke doeleinden, heb ik slechte raad gegeven.
Het is wel de bedoeling dat je aan de hand van de uitleg in deze post zelf een idee kan vormen aan de hand van de specificaties (en de lijst met ondersteunde chips) welke brander het meest geschikt is voor jou. Vooral weten welke reeksen en programmeervoltages de brander ondersteunt, is belangrijk.
Wel nog een tip: heb je een brander die enkel zijn stroom haalt via USB (en dus geen aparte adapter heeft), sluit hem dan aan op een USB hub mét aparte voeding en niet rechtstreeks op de poort van je PC. Zo hou je het programmeervoltage stabieler. - Welke EPROMs zitten in welke flipperkast?
TODO: overzicht in volgende post.
Het logische gevolg is dat dus 1 kilobit strikt genomen 1000 bit betekent. Dit is in geheugenopslag niet het geval. Een 2732 EPROM bevat geen 32 000 bit, maar 32 768 bit. Dit komt omdat we werken in een binair talstelsel en dus telkens met veelvouden van 2.
Een 2732 EPROM bevat dus geen 32 kilobit maar eigenlijk 32 kibibit. De voorzetsels "kibi" en "mebi" duiden op een macht van 1024 (i.p.v. 1000). 1 kibibyte is dus 1024 byte. 1 mebibyte is 1 048 576 (== 1024²) byte. 32 kibibit is 32 768 bit (32 x 1024).
Iedereen spreekt dus wel van kilobytes, megabytes en gigabytes, maar eigenlijk bedoelen we allemaal kibibytes, mebibytes en gibibytes. Niemand gebruikt machten van 1000 om geheugengrootte voor te stellen... behalve fabrikanten van harde schijven. Zo kunnen ze immers hun schijven er groter doen uitzien dan ze werkelijk zijn. Zo zal een schijf van 250 gigabyte die je in de winkel koopt in je PC slechts tonen als ongeveer 245 gibibyte.