zxuno-git/software/ugophy/keyboard.asm

68 lines
1.2 KiB
NASM

; SPDX-FileCopyrightText: Copyright (C) 2019 Alexander Sharikhin
;
; SPDX-License-Identifier: GPL-3.0-or-later
CURKEY = 23560
; Returns in A key code or zero if key wans't pressed
inkey:
ld hl, CURKEY : ld a, (hl)
push af : xor a : ld (hl), a : pop af
ret
findZero:
ld a, (hl) : or a : ret z
inc hl
jp findZero
input:
ld b, 20 : ld c, 0 : call gotoXY
ld hl, cleanLine : call printZ64
ld hl, iBuff : call findZero
iLp:
halt
push hl
ld b, 20 : ld c, 0: call gotoXY
ld hl, iBuff : call printZ64
ld a, '_' : call putC : ld a, ' ' : call putC
call inkey
cp 0 : jr z, iNth
cp 12 : jr z, iBS
cp 13 : jr z, iRet
pop hl : ld (hl), A : push hl
ld de, iBuff + 62 : sub hl, de : ld a, h : or l : jr z, iCr
pop hl : inc hl
jr iLp
iBS: pop hl : push hl
ld de, iBuff : sub hl, de : ld a, h : or l
pop hl :jr z, iLp
dec hl : ld (hl), 0
jr iLp
iCr pop hl : xor a : ld (hl), a : push hl
iNth pop hl: jr iLp
cleanIBuff:
ld bc, 64 : ld hl, iBuff : ld de, iBuff + 1 : ld (hl), 0 : ldir
ret
iRet:
pop hl
ld b, 20 : ld c, 0 : call gotoXY
ld hl, cleanLine :call printZ64
ret
iBuff defs 65