summaryrefslogtreecommitdiff
path: root/terminal/vt52.h
diff options
context:
space:
mode:
Diffstat (limited to 'terminal/vt52.h')
-rw-r--r--terminal/vt52.h35
1 files changed, 32 insertions, 3 deletions
diff --git a/terminal/vt52.h b/terminal/vt52.h
index cdc62bd..94502d1 100644
--- a/terminal/vt52.h
+++ b/terminal/vt52.h
@@ -4,8 +4,27 @@
#include <stdint.h>
-// REQUIREMENTS
-// * kballoc // block wise in-kernel allocation
+//
+// Emulator of a vt52 terminal
+//
+// 1. pass a term_out and term_in struct to vt52_init(..).
+// 2. use the vt52_kb function for terminal/user input (eg. keyboard).
+// 3. use the vt52_put function for input from the host/programms.
+//
+//
+//
+// ________
+// vt52_put() ------> | | ----> (term_out_struct)
+// | VT52 |
+// (term_in_struct)<-- |_______| <---- vt52_kb()
+//
+//
+// OTHER REQUIREMENTS
+//
+// Your also need to provide some memory allocation
+//
+// * uint32_t kballoc(uint32_t bloks); // block wise in-kernel allocation
+//
typedef struct term_out_struct
{
@@ -15,6 +34,13 @@ typedef struct term_out_struct
}term_out;
+typedef struct term_in_struct
+{
+
+ void (*put_char)(uint8_t c);
+
+}term_in;
+
typedef struct vt52_tty_struct
{
@@ -23,11 +49,14 @@ typedef struct vt52_tty_struct
uint32_t x;
uint32_t y;
uint32_t *data; // screen data
+
term_out *screen;
+ term_in *input;
}vt52_tty;
-vt52_tty vt52_init(term_out *screen);
+vt52_tty vt52_init(term_out *screen,term_in *input);
void vt52_put(vt52_tty *tty, uint8_t c);
+void vt52_kb(vt52_tty *tty, uint8_t c);
#endif