diff options
Diffstat (limited to 'sw/z80/kernel/include/progman.h')
-rw-r--r-- | sw/z80/kernel/include/progman.h | 109 |
1 files changed, 0 insertions, 109 deletions
diff --git a/sw/z80/kernel/include/progman.h b/sw/z80/kernel/include/progman.h deleted file mode 100644 index b59e14a..0000000 --- a/sw/z80/kernel/include/progman.h +++ /dev/null @@ -1,109 +0,0 @@ -#ifndef PROGRAM_MAN -#define PROGRAM_MAN - -#include "types.h" - -#define PROG_0 0x0 -#define PROG_1 0x1 - -#define PROG_VSTART 0x1000 -#define PROG_0_PREFIX 0xA000 -#define PROG_1_PREFIX 0xC000 - -#define PROG_0_INFO // TODO -#define PROG_1_INFO // TODO find a space in the ram - -struct prog_status { - - // The program is in execution - - uint8_t running:1; - - // The program is executing its quit callback - - uint8_t exiting:1; - - uint8_t unused:6; // TODO, find a usage for these bits -}: - -struct prog_data { - - struct prog_status status; - - /* - * The following addresses are needed to map - * map the usable memory for dynamic allocations - */ - - // Virtual address of the heap - - uint8_t heap_addr:12; - - // Virtual address of the stack limit - - uint8_t stack_limit:12; - - /* - * Function called when the program exits normally - */ - - void (*quit_cb)(void); // 16 -}; - -/* -* Initialize the program manager system -*/ - -void progman_init(); - -/* -* Check if it can start a new program -* If it succedes, the program id is returned, -* otherwise it is returned an error number -* -* ! Disable virtual addresses when this function is called -*/ - -#define PROG_REQ_FULL -1 - -int8_t prog_req(); - -/* -* 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 -* -* ! Disable virtual addresses when this function is called -*/ - -struct prog_space { - - 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 -}; - -void prog_alloc(int8_t id, struct prog_data *data, const struct prog_space *space); - -/* -* It jumps the program counter to the given one -*/ - -void prog_exec(int8_t id, struct prog_data *data); - -/* -* It sets a quit callback -*/ - -void prog_0_set_qcb(void (*callback)(void)); -void prog_1_set_qcb(void (*callback)(void)); - -/* -* It quits a program, if a callback is set, it will be called -*/ - -void prog_0_quit(uint8_t force); -void prog_1_quit(uint8_t force); - -#endif
\ No newline at end of file |