Breakout game in Forth
Deze pagina is nog in opbouw (komt nog meer bij)
Een van de eerste spelletjes die ik destijds in Forth gemaakt heb was een
simpele versie van 'breakout', het klassieke spelletje om met een batje en
balletje blokken uit een muur weg te schieten. De meest recente versie hiervan
die ik terug heb gevonden op mijn oude disks was uit september 1982. Het
was geschreven in mijn eigen variant van Forth ('MForth'), en werkte op mijn
zelfbouw-computer gebaseerd op de Eurocom II.
De Eurocom II had voor die tijd al behoorlijke grafische mogelijkheden, met
een scherm van 512 x 256 pixels. Dit scherm was 'memory-mapped', en kon direct
vanuit het programma geschreven en gelezen worden als een 16 Kbyte blok
geheugen. Ieder byte was 8 pixels (wit=1, zwart=0), een lijn bestaat dus uit 64
bytes x 8 pixels is 256 pixels. Dit maakte het mogelijk eenvoudige graphics als
voor breakout direct vanuit high-level Forth te programmeren, door waardes in
het geheugen te schrijven (screen shots volgen nog een keer).
Daarnaast had ik ook mogelijkheden voor geluid: op een lijn in een
output-poort had ik een speakertje aangesloten, en door deze lijn aan en uit te
zetten kon ik het speakertje geluid laten maken (als je de lijn 1000 keer per
seconde aan en weer uit zet heb je een pieptoon van 1000 Hertz). Ook de
geluidseffecten werden hiermee dus in Forth geprogrammeerd.
Besturing ging via een draaiweerstand, zoals ook in het oorspronkelijke
spel: door aan de knop te draaien kon je de paddle bewegen. De Eurocom II had
hiervoor een simpele A/D-mogelijkheid, die twee zulke draaiweerstanden tegelijk
kon meten (hiervoor had mijn Forth het ingebouwde commande 'JOYADC'
gekregen).
Wil je de listing zien? Bekijk hier het breakout programma in
MForth. De uitleg komt nog een keer; het commentaar in de listing is erg
summier, zeker als je de Eurocom II (of Forth) niet kent.
|