|
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.
|