aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/garmos/arch.h22
-rw-r--r--include/garmos/term.h30
-rw-r--r--include/garmos/types.h39
-rw-r--r--include/garmos/vga.h40
4 files changed, 131 insertions, 0 deletions
diff --git a/include/garmos/arch.h b/include/garmos/arch.h
new file mode 100644
index 0000000..1e57e06
--- /dev/null
+++ b/include/garmos/arch.h
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2017 Robin Krahl <robin.krahl@ireas.org>
+ *
+ * This program is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation, either version 3 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ */
+
+#ifndef GARMOS_ARCH_H
+#define GARMOS_ARCH_H
+
+#include <garmos/types.h>
+
+void regset8(const uint32_t reg, const uint8_t val);
+
+#endif
diff --git a/include/garmos/term.h b/include/garmos/term.h
new file mode 100644
index 0000000..35e7273
--- /dev/null
+++ b/include/garmos/term.h
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2017 Robin Krahl <robin.krahl@ireas.org>
+ *
+ * This program is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation, either version 3 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ */
+
+#ifndef GARMOS_TERM_H
+#define GARMOS_TERM_H
+
+#include <garmos/types.h>
+
+/*
+ * term is currently only able to access VGA text mode. If VGA text mode is
+ * not supported, i. e. if ENABLE_VGA is not set, term will not do anything.
+ */
+
+void term_clear(void);
+uint8_t term_enabled(void);
+void term_put(char c);
+void term_print(char *s);
+
+#endif
diff --git a/include/garmos/types.h b/include/garmos/types.h
new file mode 100644
index 0000000..cfe13bb
--- /dev/null
+++ b/include/garmos/types.h
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2017 Robin Krahl <robin.krahl@ireas.org>
+ *
+ * This program is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation, either version 3 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ */
+
+#ifndef GARMOS_TYPES_H
+#define GARMOS_TYPES_H
+
+/*
+ * The defines x_IS_INT8, x_IS_INT16 and x_IS_INT32 must be set appropriately
+ * in the architecture's config.mk. If they are not set, the fixed width int
+ * types will not be defined and the kernel will not compile.
+ */
+
+#ifdef CHAR_IS_INT8
+#define int8_t signed char
+#define uint8_t unsigned char
+#endif
+
+#ifdef SHORT_IS_INT16
+#define int16_t short
+#define uint16_t unsigned short
+#endif
+
+#ifdef INT_IS_INT32
+#define int32_t int
+#define uint32_t unsigned int
+#endif
+
+#endif
diff --git a/include/garmos/vga.h b/include/garmos/vga.h
new file mode 100644
index 0000000..f8b1a16
--- /dev/null
+++ b/include/garmos/vga.h
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2017 Robin Krahl <robin.krahl@ireas.org>
+ *
+ * This program is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation, either version 3 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ */
+
+#ifndef GARMOS_VGA_H
+#define GARMOS_VGA_H
+
+#include <garmos/types.h>
+
+/*
+ * VGA text mode is only supported if ENABLE_VGA is defined, usually in the
+ * architecture's config.mk. For VGA_MEMORY, VGA_ROWS and VGA_COLS, sensible
+ * defaults are chosen. If these default values do not apply, the correct
+ * values should be set in the architecture's config.mk.
+ */
+
+#ifndef VGA_ROWS
+#define VGA_ROWS 20
+#endif
+
+#ifndef VGA_COLS
+#define VGA_COLS 80
+#endif
+
+void vga_clear(void);
+void vga_pclear(uint8_t attr);
+void vga_print(uint32_t row, uint32_t col, uint8_t c);
+void vga_pprint(uint32_t row, uint32_t col, uint8_t attr, uint8_t c);
+
+#endif