A téglák rajzolásán még lehetett optimalizálni, a régi megoldásnál rövidebb és gyorsabb is lett. Igy már elfér a továbbfejlesztett irányítás.
még az jutott eszembe az este, hogy talán a legrövidebb billentyűolvasó rutin az lenne, ha minden billre el lenne tárolva a sor, és az AND érték egymás után, így lenne egy 18 elemű tábla, és egy rövid bill olvasó, ami vagy mindig meg lenne hívva. kb (a 18 byte-ot máris le lehetett faragni 12-re)
ld hl,right
call readkey
jr z,pressed
.
.
.
read_key
ld a,(hl)
inc hl
out (0b5h),a
in a,(0b5h)
and (hl)
inc hl
ret z
ld a,(hl)
inc hl
out (0b5h),a
in a,(0b6h)
and 01h
ret z
ld a,(hl)
inc hl
out (0b5h),a
in a,(0b6h)
and 01h
ret
left db 07h,20h,03h,08h
right db 07h,04h,04h,09h
space db 08h,40h,00h,05h
És esetleg lehetne még faragni az OUTI-s megoldással
ld hl,right
call readkey
jr z,pressed
.
.
.
read_key
ld c,0b5h
outi
in a,(0b5h)
and (hl)
inc hl
ret z
outi
in a,(0b6h)
and 01h
ret z
outi
in a,(0b6h)
and 01h
ret
left db 07h,20h,03h,08h
right db 07h,04h,04h,09h
space db 08h,40h,00h,05h
Ezt lehet megnézem nálam is, mert az enyém tuti sokkal hosszabb
Sokkal rövidebb lett, legalábbis az enyém
, és ha a végére kerül a billentyűolvasás, még rövidebb
read_key
ld c,0b5h
outi
in a,(0b6h)
and 01h
ret z
outi
in a,(0b6h)
and 01h
ret z
outi
in a,(0b5h)
and (hl)
ret
left db 03h,08h,07h,20h
right db 04h,09h,07h,04h
space db 00h,05h,08h,40h