Code: Select all
; Test for the existance of a ZXpand interface.
xor a
ld (GLOBAL_HARDWARESTATE), a
ld bc, %1110000000000111
ld a, $aa
out (c), a
nop
nop
nop ; [some small delay, 10 clocks or so]
in a, (c)
cp $f0
jr nz, FRONTEND_NOZXPAND
ld a, $55
out (c), a
nop
nop
nop ; [some small delay, 10 clocks or so]
in a, (c)
cp $0f
jr nz, FRONTEND_NOZXPAND
; ZXpand detected.
ld hl, GLOBAL_HARDWARESTATE
set CONST_HARDWARESTATEBIT_ZXPAND, (hl)
FRONTEND_NOZXPAND
Code: Select all
; Check for ZXpand interface.
ld hl, GLOBAL_HARDWARESTATE
bit CONST_HARDWARESTATEBIT_ZXPAND, (hl)
jr z, SUB_DOFIRSTTURN_USEKEYBOARD
SUB_DOFIRSTTURN_USEZXPAND
; Read the joystick.
push bc
ld bc, %1110000000000111
ld a, $a0
out (c), a
nop
nop
nop ; [some small delay, 10 clocks or so]
in a, (c)
pop bc
; Check for moving left.
bit 5, a
jr z, SUB_DOFIRSTTURN_MOVELEFT
; Check for moving right.
bit 4, a
jr z, SUB_DOFIRSTTURN_MOVERIGHT
; Check for moving up.
bit 7, a
jp z, SUB_DOFIRSTTURN_MOVEUP
; Check for moving down.
bit 6, a
jp z, SUB_DOFIRSTTURN_MOVEDOWN
SUB_DOFIRSTTURN_USEKEYBOARD