Het uitlezen van de joystick-poorten gaat via de PSG-registers. Raar maar waar. In de PSG-chip zijn 2 "general purpose" registers vrij en daar hebben ze de onder andere de joystick-ingangen aangehangen. De beschrijving van die 2 PSG-registers is als volgt: Register 14: Read-only. (op MSX BELANGRIJK! HIER KAN JE JE PSG ANDERS MEE OPBLAZEN!) Bit 7: cassette-ingengssignaal bit 6: alleen gebruikt in Japanse MSX computers (= ??) bit 5: invoersignaal pin 7 (TRG 2) bit 4: invoersignaal pin 6 (TRG 1) bit 3: invoersignaal pin 4 (right) bit 2: invoersignaal pin 3 (left) bit 1: invoersignaal pin 2 (back) bit 0: invoersignaal pin 1 (forward) Register 15: Zowel lezen als schrijven. Bit 7: KANA led besturing (alleen Jap. MSX-en) 0=aan, 1=uit. bit 6: Keuze of register 14 betrekking heeft op joystickpoort 1 of 2 (1 = poort 2) bit 5: uitvoersignaal pin 8, poort 2 bit 4: uitvoersignaal pin 8, poort 1 bit 3: uitvoersignaal pin 7, poort 2 bit 2: uitvoersignaal pin 6, poort 2 bit 1: uitvoersignaal pin 7, poort 1 bit 0: uitvoersignaal pin 6, poort 1 PSG-registers lezen/schrijven gaat door het registernummer naar poort &HA0 te schrijven, waarna de waarde in poort &HA1 kan worden geschreven, of uitgelezen kan worden uit poort &HA2. De muis moet uitgelezen worden door 4 keer een joystick-poort uit te lezen. In bits 3-0 van register 14 krijg je dan achtereenvolgens binnen: hoge deel van de X-offset (bit 7-4) lage deel van de X-offset (bit 3-0) hoge deel van de Y-offset (bit 7-4) lage deel van de Y-offset (bit 3-0) Deze offsets zijn negatief. Bit 4 (voor poort 1) mot steeds geinverteerd worden bij iedere lees-aktie, zie listing... Een routine om de muis uit te lezen: LD D,&B10010011 ; Dit is de invoer als poort 1 uitgelezen LD E,&B00010000 ; wordt LD D,&B11101100 ; En dit voor poort 2 LD E,&B00100000 GTMOUS: ; LEES MUIS UIT. Invoer: D/E=.... Uitvoer: H=X-offset, L=Y-offset LD B,WACHT2 ; wacht de eerste keer langer CALL GTOFS2 ; Lees bit 7-4 van X-offset AND 0FH RLCA RLCA RLCA RLCA LD C,A CALL GTOFST ; Lees bit 3-0 van X-offset AND 0FH OR C LD H,A ; Sla komplete offset in A' op CALL GTOFST ; Lees bit 7-4 van Y-offset AND 0FH RLCA RLCA RLCA RLCA LD C,A CALL GTOFST ; Lees bit 3-0 van Y-offset AND 0FH OR C LD L,A ; Sla komplete offset in L op RET WACHT1: EQU 10 ; Wachtvariabele bij uitlezen muis. Laten staan. WACHT2: EQU 30 ; Idem GTOFST: LD B,WACHT1 GTOFS2: LD A,15 ; Lees muis uit OUT (0A0H),A LD A,D OUT (0A1H),A XOR E LD D,A WACHT: DJNZ WACHT ; Wacht even, de muis is nogal traag LD A,14 OUT (0A0H),A IN A,(0A2H) RET