Programmeren in TI-83+ Assembly/Input en output/getKey
Een belangrijk element van input is het geven van een toetsaanslag door de gebruiker. Die kun je opvangen met de bcall _getKey en _getCSC, beide belangrijke bcall's.
_getKey
[bewerken]bcall(_getKey) wacht op een toetsaanslag. Voordat er een toets is ingedrukt, kan het programma dus niet verder. _getKey zet de output (= een toetsnummer van de ingedrukte toets) in het register a.
De toetscodes
[bewerken]Hoe weet je nu welke waarde van a bij welke toets hoort? Dat gaat gemakkelijk omdat alle toetsen zijn gedefinieerd in ti83plus.inc. Zoek naar keypress equates. Alle toetsen beginnen met een k. Bijvoorbeeld de eerste in ti83plus.inc is kRight. Hierop wordt a dus ingesteld als er op het pijltje naar rechts is gedrukt.
2nd en Alpha
[bewerken]_getKey houdt ook rekening met 2nd en Alpha. Dus als er 2nd of Alpha (of Alpha-Alpha, als de lowercase-systeemvlag aanstaat) is ingedrukt, krijg je een andere code in a.
_getCSC
[bewerken]bcall(_getCSC) werkt op een heel andere manier. Deze bcall wacht niet totdat er een toets ingedrukt is, maar hij bepaalt of er een toets ingedrukt is. Als er geen toets ingedrukt is, loopt het programma gewoon door. Dit is vooral handig in spellen e.d. waarbij het ongewenst is dat het programma stopt totdat er een knop ingedrukt is.
Om verwarring te voorkomen: er is in TI-Basic een commando getKey. Deze lijkt meer op de bcall _getCSC dan op de bcall _getKey!
Opdracht
[bewerken]Schrijf een programma dat de toetscode van de ingedrukte toets, die door _getKey wordt teruggegeven, naar het scherm schrijft. Dit programma kun je dan direct gebruiken om een toetscode te vinden, mocht je die niet kunnen vinden.
Je kunt ook proberen om hetzelfde programma met _getCSC te schrijven.
Het antwoord staat achterin het boek.