82 lines
898 B
NASM
82 lines
898 B
NASM
org 51000
|
|
|
|
counter EQU inc_counter + 1
|
|
attrs EQU #5800
|
|
xylo EQU attrs + 40
|
|
|
|
zero_counter:
|
|
xor a
|
|
|
|
set_counter:
|
|
ld (counter), a
|
|
|
|
read_keyboard:
|
|
ld a, #f7
|
|
in a, (#fe)
|
|
rra
|
|
jr nc, key_1
|
|
rra
|
|
jr nc, key_2
|
|
rra
|
|
jr nc, key_3
|
|
rra
|
|
jr nc, key_4
|
|
rra
|
|
jr c, read_keyboard
|
|
|
|
key_5:
|
|
ld de, #040C
|
|
jr invoke
|
|
|
|
key_2:
|
|
ld de, #0103
|
|
jr invoke
|
|
|
|
key_3:
|
|
ld de, #0206
|
|
jr invoke
|
|
|
|
key_4:
|
|
ld de, #0309
|
|
jr invoke
|
|
|
|
key_1:
|
|
ld de, #0000
|
|
invoke:
|
|
push de
|
|
call highlight_key
|
|
ld a, (counter)
|
|
add a, d
|
|
call play
|
|
pop de
|
|
call highlight_key
|
|
|
|
inc_counter:
|
|
ld a, 0 ;This value will be modified by the running code
|
|
add a, 5
|
|
cp 25
|
|
jr nz, set_counter
|
|
jr zero_counter
|
|
|
|
highlight_key:
|
|
ld hl, xylo
|
|
push de
|
|
ld d, 0
|
|
add hl, de
|
|
ld e, 30
|
|
ld a, (hl)
|
|
xor %01000000
|
|
ld b, 15
|
|
highlight_block:
|
|
ld (hl), a
|
|
inc hl
|
|
ld (hl), a
|
|
inc hl
|
|
ld (hl), a
|
|
add hl, de
|
|
djnz highlight_block
|
|
pop de
|
|
ret
|
|
|
|
INCLUDE "sample.asm"
|