Re: A86: Typing in letters
[Prev][Next][Index][Thread]
Re: A86: Typing in letters
Brian wrote:
>
> Is there an easier way to detect a person pressing a any letter on
> the the calc and then displaying that letter rather than going through
> and checking for every letter like so
Yes, by using CPIR:
NoMatch:
call GET_KEY
ld hl,Letters ; HL -> Letter table
ld bc,26 ; 26 letters to check
cpir ; Compare A with each letter until a match is
found
jr nz,NoMatch
ld a,c
add a,'A'
call _putc
; The keycodes of the alphabet backwards
Letters:
.db $19,$21,$0A,$12,$1A,$22,$0B,$13,$1B,$23,$2B
.db $0C,$14,$1C,$24,$2C,$0D,$15,$1D,$25,$2D,$0E
.db $16,$1E,$26,$2E
The alphabet is stored backwards because BC is decrease from
26 to 0. If you press 'Y', the keycode would $21, and BC
would decrease two times (CPIR decreases BC even though it
finds the matching code on the second try). Thus, 'A'+24 =
65+24 = 89 = 'Y'
--
Jimmy Mårdell "The nice thing about standards is that
mailto:mja@algonet.se there are so many of them to choose from."
http://www.algonet.se/~mja
IRC: Yarin "Sanity? I'm sure I have it on tape
somewhere!"
Follow-Ups:
References: