Muis aansturing in ASM Alex vd Wal, 00-00-00 DE MUIS LEESAKTIE Er is in het verleden nogal wat verwarring geweest over de vraag hoe een MSX2 de muis leest omdat de VDP van een MSX2 een hardwarematische muisleesroutine bevat, die echter niet gebruikt wordt. De twee joystickpoorten zitten op alle MSX'en aan register 14 en 15 van de PSG en de VDP heeft er geen bal mee te maken. Om een komplete leesaktie te doen is nogal wat nodig omdat de muis maar de beschikking heeft over een 4 bits databus. Om dus 2 keer een 8 bits offset te lezen (X en Y) moet er dus 4 keer gelezen worden waarbij de muis eerst verteld moet worden dat er gelezen gaat worden. Aan de hand van de routine (GTMOUS) zal ik nu het algoritme verklaren. We nemen even aan dat de muis in poort 1 zit. In dat geval staat in (PORT) de waarde 10111111B en in (PORT+1) de waarde 00010000B GTMOUS: - Lees PSG register 15 - Wis bit 6, dit geeft aan dat de muis in poort 1 zit (Zet bit 6 om aan te geven dat de muis in poort 2 zit) - Zet bit 4, zodat de muis weet dat nu XH klaargezet moet worden. Bit 5 doet hetzelfde voor poort 2 Opm: XH/YH = Bit 4-7 van X/Y offset XL/YL = Bit 0-3 van X/Y offset - Wacht even op muis (het is een relatief traag ding) - Lees XH (Verdere details volgen) - Lees XL - Lees YH - Lees YL Dit lezen is niet eenvoudig omdat de muis niet automatisch weet wanneer een van de waarden gelezen is. Om aan de muis te vertellen dat je de waarde gelezen hebt, moet bit 4 (indien de muis in poort 2 zit bit 5) van PSG register 15 geinverteerd worden. Als tijdens de volgende leesaktie register 15 weer geschreven wordt zal de muis dit geinverteerde bit zien waarop het beestje de volgende te lezen waarde op zijn 4 bits databus zet. Na een kleine wachttijd wordt deze waarde dan uit register 14 gelezen. |