; O acumulador contém 1=Kempston, 2=Sinclair 2, 3=Sinclair 1
;e 4=Cursor.
25537 CP 1 ; Salta para diante se não for
JR NZ,25550 ;
Kempston.
LD BC,31 ; Porta para Kempston.
IN A,(C) ; Faz leitura da porta.
LD (24811),A ; Guarda resultado da leitura.
RET
25550 CP 2 ; Salta para diante se não for
JR NZ,25582 ;
Sinclair 2.
25554 LD BC,63486 ; Porta para Sinclair 2.
IN A,(C)
; Faz leitura da porta.
LD B,0 ; Inicializa modelo de bits.
BIT 0,A ; Se a tecla 1 (esquerda) foi
JR NZ,25567 ;
pressionada,
levanta bit 1 de B.
SET 1,B
25567 BIT 1,A ; Se a tecla 2 (direita) foi
JR NZ,25573 ;
pressionada,
levanta bit 0 de B.
SET 0,B
25573 AND 011100 ; Zera os bits exceto b2 a b4.
XOR 011100 ; Inverte os bits b2 a b4 e
OR B ;
mescla com os bits
em B.
LD (24811),A ; Guarda resultado final.
RET
25582 CP 3 ; Salta para diante se não for
JR NZ,25635 ;
Sinclair 1.
LD A,(24814) ; Lê Sinclair 2 se for o primeiro
CP 1 ;
jogador no
modo 2 jogadores.
25591 JR Z,25554
LD BC,61438 ; Porta para Sinclair 1.
IN A,(C) ; Faz leitura da porta.
BIT 0,A ; Se tecla 0 foi pressionada,
JR NZ,25606 ;
levanta
bit 4 de B.
SET 4,B
25606 BIT 1,A ; Se tecla 9 foi pressionada,
JR NZ,25612 ;
levanta
bit 3 de B.
SET 3,B
25612 BIT 2,A ; Se tecla 8 foi pressionada,
JR NZ,25618 ;
levanta
bit 2 de B.
SET 2,B
25618 BIT 3,A ; Se tecla 7 foi pressionada,
JR NZ,25624 ;
levanta
bit 0 de B.
SET 0,B
25624 BIT 4,A ; Se tecla 6 foi pressionada,
JR NZ,25630 ;
levanta
bit 1 de B.
SET 1,B
25630 LD A,B
LD (24811),A ; Guarda resultado final.
RET
JR Z
para JR NZ
, com o seguinte POKE:POKE 25591,32