From dbca35cfc52f7c0510198bed305c74ad1b218366 Mon Sep 17 00:00:00 2001 From: Daniele Verducci su MatissePenguin <daniele.verducci@gmail.com> Date: Sun, 1 Nov 2020 21:11:42 +0100 Subject: [PATCH] Quick 2x2 keyboard test --- assembly/bios/driver_hd44780.asm | 7 +++++++ assembly/bios/driver_keyboard.asm | 22 +++++++++++++++++++++- assembly/bios/main.asm | 2 +- 3 files changed, 29 insertions(+), 2 deletions(-) diff --git a/assembly/bios/driver_hd44780.asm b/assembly/bios/driver_hd44780.asm index 7f83c2d..7485c46 100644 --- a/assembly/bios/driver_hd44780.asm +++ b/assembly/bios/driver_hd44780.asm @@ -61,6 +61,13 @@ Lcd_print: ld (lcd_cur_x), a ; else set y pos to 0 jp Lcd_print +; Writes a single character at current cursror position +; @param A Value of character to print +Lcd_printc: + out (LCD_DATA_REG),a + ret + + ; Set cursor position ; @param B X-axis position (0 to 19) ; @param C Y-axis position (0 to 3) diff --git a/assembly/bios/driver_keyboard.asm b/assembly/bios/driver_keyboard.asm index dddf841..f3c0340 100644 --- a/assembly/bios/driver_keyboard.asm +++ b/assembly/bios/driver_keyboard.asm @@ -27,4 +27,24 @@ ; Reads the keyboard ; @return: a 0-terminated array of keycodes representing the pressed keys Keyb_read: - in (KEYB_A0_REG),a + in a, (KEYB_A0_REG) + cp 0 + jp z, _keyb_read_a1 + add a, %01000000 + call Lcd_printc ; A already contains char to print + _loop: + in a, (KEYB_A0_REG) + cp 0 + jp nz, _loop + ret + _keyb_read_a1: + in a, (KEYB_A1_REG) + cp 0 + ret z + add a, %01010000 + call Lcd_printc ; A already contains char to print + _loop2: + in a, (KEYB_A1_REG) + cp 0 + jp nz, _loop2 + ret diff --git a/assembly/bios/main.asm b/assembly/bios/main.asm index f361321..f94b601 100644 --- a/assembly/bios/main.asm +++ b/assembly/bios/main.asm @@ -74,5 +74,5 @@ Sysinit: ; poll keyboard _poll_keyb: call Keyb_read - jp poll_keyb + jp _poll_keyb