summaryrefslogtreecommitdiffstats
path: root/sw/z80/kernel/include
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--sw/z80/kernel/include/boot.h17
-rw-r--r--sw/z80/kernel/include/progman.h23
2 files changed, 40 insertions, 0 deletions
diff --git a/sw/z80/kernel/include/boot.h b/sw/z80/kernel/include/boot.h
index d581687..5310e45 100644
--- a/sw/z80/kernel/include/boot.h
+++ b/sw/z80/kernel/include/boot.h
@@ -1,10 +1,15 @@
#ifndef BOOT_H
#define BOOT_H
+#include "types.h"
+
#define LOGIN_PC // TODO find an address in ROM, to perform jumps
#define EXEC_STATUS // TODO find an address in Kernel space
+#define PWD_ADDR // TODO find an address in ROM, password
+#define PWD_SIZE 8
+
struct exec_status {
volatile int logged_in:1; // authenticated
@@ -15,4 +20,16 @@ struct exec_status {
void boot_init();
+/*
+* It returns 1 if succeded, otherwise 0
+*/
+
+int8_t authenticate(const char *pwd);
+
+/*
+* It sets the password in the ROM space, maximum 8 characters
+*/
+
+void set_pwd(const char *pwd);
+
#endif \ No newline at end of file
diff --git a/sw/z80/kernel/include/progman.h b/sw/z80/kernel/include/progman.h
index b37e9e9..0f56bb3 100644
--- a/sw/z80/kernel/include/progman.h
+++ b/sw/z80/kernel/include/progman.h
@@ -40,6 +40,29 @@ void progman_init();
int8_t prog_req(struct program_info *info);
/*
+* It allocates a program in the RAM
+* To obtain the right id call prog_req() first
+* Basic informations must be allocated and referenced by a program_base struct
+*/
+
+struct program_base {
+
+ void * inst_set; // pointer to the instructions set
+ size_t inst_size; // size of the instructions set
+ void * bss_data; // pointer to the bss/data space
+ size_t data_size; // size of the bss/data space
+ size_t stack_size; // size of the stack to determine the stack limit
+};
+
+void prog_alloc(int8_t id, struct program_info *info, const struct program_base *base);
+
+/*
+* It jumps the program counter to the given one
+*/
+
+void prog_exec(int8_t id, struct program_info *info);
+
+/*
* It sets a quit callback
*/