From e2b78d20b80d89321d8d9df3ab8ade8407642dfc Mon Sep 17 00:00:00 2001 From: Aleksa Vučković Date: Sun, 2 Jan 2022 22:56:02 +0100 Subject: Adding code --- include/06.keyboard/keyboard00.c | 3 +++ include/06.keyboard/keyboard01.c | 7 ++++++ include/06.keyboard/keyboard02.c | 7 ++++++ include/06.keyboard/keyboard03.c | 6 +++++ include/06.keyboard/keyboard04.c | 6 +++++ include/06.keyboard/keyboard05.c | 5 +++++ include/06.keyboard/keyboard06.c | 6 +++++ include/06.keyboard/keyboard07.c | 8 +++++++ include/06.keyboard/keyboard08.c | 18 +++++++++++++++ include/06.keyboard/keyboard09.c | 5 +++++ include/06.keyboard/keyboard10.c | 11 +++++++++ include/06.keyboard/keyboard11.c | 11 +++++++++ include/06.keyboard/keyboard12.c | 48 ++++++++++++++++++++++++++++++++++++++++ 13 files changed, 141 insertions(+) create mode 100644 include/06.keyboard/keyboard00.c create mode 100644 include/06.keyboard/keyboard01.c create mode 100644 include/06.keyboard/keyboard02.c create mode 100644 include/06.keyboard/keyboard03.c create mode 100644 include/06.keyboard/keyboard04.c create mode 100644 include/06.keyboard/keyboard05.c create mode 100644 include/06.keyboard/keyboard06.c create mode 100644 include/06.keyboard/keyboard07.c create mode 100644 include/06.keyboard/keyboard08.c create mode 100644 include/06.keyboard/keyboard09.c create mode 100644 include/06.keyboard/keyboard10.c create mode 100644 include/06.keyboard/keyboard11.c create mode 100644 include/06.keyboard/keyboard12.c (limited to 'include/06.keyboard') diff --git a/include/06.keyboard/keyboard00.c b/include/06.keyboard/keyboard00.c new file mode 100644 index 0000000..13fd550 --- /dev/null +++ b/include/06.keyboard/keyboard00.c @@ -0,0 +1,3 @@ +#include +#include +#include diff --git a/include/06.keyboard/keyboard01.c b/include/06.keyboard/keyboard01.c new file mode 100644 index 0000000..50d7c07 --- /dev/null +++ b/include/06.keyboard/keyboard01.c @@ -0,0 +1,7 @@ +#define BUFFER_SIZE 200 +#define BUFFER_LOG 200 +char buffer[BUFFER_LOG][BUFFER_SIZE]; +size_t buffer_size[BUFFER_LOG]; +size_t buffer_current=0; +size_t buffer_all=0; +size_t buffer_index=0; diff --git a/include/06.keyboard/keyboard02.c b/include/06.keyboard/keyboard02.c new file mode 100644 index 0000000..239c874 --- /dev/null +++ b/include/06.keyboard/keyboard02.c @@ -0,0 +1,7 @@ +#define PIC1_COMMAND_PORT 0x20 +#define PIC1_DATA_PORT 0x21 +#define PIC2_COMMAND_PORT 0xA0 +#define PIC2_DATA_PORT 0xA1 +// IO Ports for Keyboard +#define KEYBOARD_DATA_PORT 0x60 +#define KEYBOARD_STATUS_PORT 0x64 diff --git a/include/06.keyboard/keyboard03.c b/include/06.keyboard/keyboard03.c new file mode 100644 index 0000000..3322fd7 --- /dev/null +++ b/include/06.keyboard/keyboard03.c @@ -0,0 +1,6 @@ +void previous_field(void); +void tty(char *buffer); +void prompt(void); +void clear(); +void us_en(char keymap[]); +void us_en_shift(char keymap[]); diff --git a/include/06.keyboard/keyboard04.c b/include/06.keyboard/keyboard04.c new file mode 100644 index 0000000..cc6e7d5 --- /dev/null +++ b/include/06.keyboard/keyboard04.c @@ -0,0 +1,6 @@ +char charcode[256]; +char shift_charcode[256]; +bool ispressed[128]; +#define lshift ispressed[0x2A] +#define rshift ispressed[0x36] +#define lctrl ispressed[0x1D] diff --git a/include/06.keyboard/keyboard05.c b/include/06.keyboard/keyboard05.c new file mode 100644 index 0000000..5c089ce --- /dev/null +++ b/include/06.keyboard/keyboard05.c @@ -0,0 +1,5 @@ +void init_keyboard() +{ + us_en(charcode); + us_en_shift(shift_charcode); +} diff --git a/include/06.keyboard/keyboard06.c b/include/06.keyboard/keyboard06.c new file mode 100644 index 0000000..55e04b8 --- /dev/null +++ b/include/06.keyboard/keyboard06.c @@ -0,0 +1,6 @@ +void deletelast() +{ + previous_field(); + printf(" "); + previous_field(); +} diff --git a/include/06.keyboard/keyboard07.c b/include/06.keyboard/keyboard07.c new file mode 100644 index 0000000..480abb1 --- /dev/null +++ b/include/06.keyboard/keyboard07.c @@ -0,0 +1,8 @@ +void backspace() +{ + if(buffer_index<=0) return; + + deletelast(); + buffer[buffer_current][--buffer_index]='\0'; + return; +} diff --git a/include/06.keyboard/keyboard08.c b/include/06.keyboard/keyboard08.c new file mode 100644 index 0000000..822e038 --- /dev/null +++ b/include/06.keyboard/keyboard08.c @@ -0,0 +1,18 @@ +void enter() +{ + printf("\n"); + if(buffer_index>0) + { + tty(buffer[buffer_current]); + buffer_size[buffer_current]=buffer_index; + if(buffer_current==buffer_all) buffer_current=(++buffer_all); + else + { + for(size_t i=0;i0) + { + buffer_size[buffer_current]=buffer_index; + for(size_t i=0;i