diff options
Diffstat (limited to 'src/kernel/plef.c')
-rw-r--r-- | src/kernel/plef.c | 32 |
1 files changed, 0 insertions, 32 deletions
diff --git a/src/kernel/plef.c b/src/kernel/plef.c deleted file mode 100644 index 710943f..0000000 --- a/src/kernel/plef.c +++ /dev/null @@ -1,32 +0,0 @@ -#include <stdint.h> -#include "drive.h" -#include "plef.h" -#include "task.h" -#include "util.h" - -#define PLEF_MAGIC 0xb9ba4c50 - -task_handle plef_run(const struct drive *d, const char *path) { - drive_file_id_t h = d->get_file(d, path); - if (!h) - return 0; - - uint8_t start[512]; - d->load_sector(d, h, 0, start); - - struct plef_header head = *(struct plef_header *)start; - if ((head.magic != PLEF_MAGIC) || (head.version_high)) { - d->free_file(d, h); - return 0; - } - - uint32_t payload_addr; - segment_id cs = new_segment(true, head.payload_length + head.bss_length, &payload_addr); - segment_id ds = mirror_segment(false, cs); - - fmcpy((void *)payload_addr, d, h, head.payload_offset, head.payload_length); - - d->free_file(d, h); - - return new_task(cs, ds, head.entry_point, head.payload_length + head.bss_length); -}
\ No newline at end of file |