diff options
Diffstat (limited to 'sw/z80/kernel/include')
-rw-r--r-- | sw/z80/kernel/include/boot.h | 17 | ||||
-rw-r--r-- | sw/z80/kernel/include/progman.h | 23 |
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 */ |