Retro Games De C64 "Maxi" (geen PSU) (INT)
Net als vroeger: Programmeren in Basic met de C64
Programmeren met Basic was leuk voor mij als kind. Met een C64-imitatie probeer ik uit of dat nog steeds het geval is.
De Commodore 64: een legende uit het stenen tijdperk van de PC, 40 jaar oud. Het fascineert mensen vandaag de dag nog steeds. Dit is niet alleen omdat het verbonden is met herinneringen aan de jeugd, maar ook vanwege het principe van deze machine. Overstappen van een moderne PC naar de oude kist voelt als rijden in een kart in het Tesla-tijdperk. Nul comfort. Een eenvoudige werkwijze die onmiddellijk begrijpelijk is. De directheid waarmee handelingen effect hebben. Het is allemaal nutteloos, maar wel erg leuk.
Als je de C64 nieuw leven wilt inblazen, heb je veel mogelijkheden. Het makkelijkste is om het direct in je webbrowser te gebruiken. Of je kunt de VICE emulator downloaden, die wat meer mogelijkheden heeft. Ik ging een stap verder en kocht de C64 Maxi. Dit is eigenlijk ook een emulator, maar dan in een behuizing die heel dicht bij het origineel staat. Er zit ook een joystick bij. Puristen zullen zeker de voorkeur geven aan een echte C64. Voor mij voldoet deze replica, en hij kan handig via HDMI op een scherm worden aangesloten.
Ik heb zelf nooit een C64 gehad, en hij neemt geen belangrijke plaats in mijn herinneringen in. Toch roept de machine bij mij nostalgie op omdat de C64 geprogrammeerd is met Basic. Dat is de programmeertaal die ik tussen mijn 11e en 13e jaar leerde op een heel vreemd apparaat genaamd Basictutor.
Ik wil terug naar die tijd met de C64 en weer in Basic programmeren. Ik ben benieuwd wat er uit zal komen en of de magie van toen terugkomt. Of ik net zo overgemotiveerd zal zijn als in 1988, toen ik met kinderlijke naïviteit en jeugdige grootheidswaanzin een vluchtsimulator programmeerde op een apparaat dat slechts 15 tekens en geen graphics kon weergeven.
Het begint voordat het begint
In feite is mijn motivatie in het begin bijna te hoog: ik kan niet wachten tot de C64 Maxi geleverd wordt. In plaats daarvan begin ik te programmeren op mijn Mac. En ik doe dit niet op een C64 emulator, wat slimmer zou zijn geweest, maar neem de eerste Basic interpreter die ik met Google vind. Het is BBC Basic.
Wel, programmeren is zo gemakkelijker dan op een C64. Want met BBC Basic heb ik enkele van de gemakken van een moderne programmeeromgeving: debuggen met variabele bewaking of automatische hernummering van regels. Het probleem is dat niet alle Basic hetzelfde is, er zijn talloze taalvarianten. Een programma dat werkt met BBC Basic doet dat niet automatisch op de C64.
Mijn eerste idee is een programma dat de gebruiker mentale rekenproblemen geeft. In BBC Basic krijg ik verbazingwekkend snel een eerste werkende versie.
Transfer naar de C64 Maxi
Een paar dagen later is de C64 Maxi eindelijk bij me. Hoe krijg ik nu mijn programma op de doos? Een van de voordelen ten opzichte van een originele C64 is dat de C64 Maxi vier USB-poorten heeft. Daarom kan ik een USB-stick gebruiken om gegevens te laden en op te slaan.
Maar het is niet zo eenvoudig als het klinkt. Omdat de C64 Maxi geen bestanden rechtstreeks naar de stick kan schrijven of inlezen. Dit werkt alleen binnen een disk image bestand met de extensie .d64. Op mijn beurt kan ik de inhoud van de afbeelding niet openen vanaf mijn Mac.
De oplossing: Ik installeer de emulator VICE. Het kan tekst van het klembord in de C64-terminal invoeren. En het gebruikt ook D64 beelden. Dus kopieer ik de tekst uit BBC Basic, plak hem in de emulator en sla het programma op in de D64 image. Dit komt op de USB-stick terecht, waar de C64 Maxi het inleest. Een beetje onhandig, maar hé, het werkt!
Met "het werkt" wordt alleen de gegevensoverdracht bedoeld. Het programma zelf werkt niet. Mijn motivatie lijdt een lichte domper; maar tegelijkertijd ben ik wanhopig om dit knelpunt op te lossen.
Aanpassing aan de C64 en verder knutselen
Eerst moet ik alles omzetten naar kleine letters, want anders klopt de ASCII mapping niet - hoofdletters worden grafische symbolen op de C64. Het volgende probleem is dat de C64 geen ELSE statement kent. Verwarrend genoeg geeft het geen foutmelding, maar doet het iets - maar niet wat het zou moeten doen.
Het derde probleem: Het genereren van willekeurige getallen werkt anders. Het commando RND genereert wel een willekeurig getal in beide Basic dialecten. Maar in de C64 is het een getal tussen 0 en 1, terwijl het in BBC een geheel getal is met de bovengrens van de waarde tussen haakjes.
Er zijn ook een aantal andere optimalisaties. Tegen de tijd dat ik eindelijk tevreden ben over mijn eerste programma, is het uitgegroeid tot 139 regels. En dus al behoorlijk verwarrend. Want Basic heeft bijna geen mogelijkheden voor gestructureerd programmeren en een natuurlijke neiging tot spaghetti-code.
Maar juist omdat het programma vrij lang en verfijnd is geworden, ben ik trots op het resultaat. Net als toen, meer dan 30 jaar geleden. Het uitvoeren van een zelfgemaakt programma geeft gewoon veel voldoening. Ik ben vooral trots op het feit dat de moeilijkheidsgraad van de rekenproblemen zich automatisch aanpast, afhankelijk van hoe goed je ze oplost.
Probeer het uit
Hier kun je het gezipte image downloaden, uitpakken en naar het drag-and-drop vak slepen in de online emulator.
Het programma werkt als volgt:
- Eerst geef je aan hoeveel wiskundeproblemen je wilt oplossen.
- Daarna selecteer je het type berekening.
- Als je vaak goed rekent, worden de opgaven moeilijker. Omgekeerd worden ze gemakkelijker als je er vaak naast zit.
- Als je aan de verkeerde kant van de berekening zit, kies dan het type berekening.
- Als je op het moeilijkste niveau nog grotendeels gelijk hebt, eindigt het "spel" eerder - je hoeft niet verder te trainen 🥳
Dit was nog maar het begin, ik zal zeker meer programma's koken. Wat dacht je van een op tekst gebaseerde vluchtsimulator?
Mijn belangstelling voor computers en schrijven leidde me relatief vroeg (2000) naar de technische journalistiek. Ik ben geïnteresseerd in hoe je technologie kunt gebruiken zonder gebruikt te worden. In mijn vrije tijd maak ik graag muziek waarbij ik mijn gemiddelde talent compenseer met een enorme passie.