diff --git a/umka.asm b/umka.asm index 7441fa8..d3c3aba 100644 --- a/umka.asm +++ b/umka.asm @@ -89,6 +89,10 @@ UMKA_OS = 3 UMKA_MEMORY_BYTES = 256 SHL 20 +UMKA_BOOT_DEFAULT_DISPLAY_BPP = 32 +UMKA_BOOT_DEFAULT_DISPLAY_WIDTH = 400 +UMKA_BOOT_DEFAULT_DISPLAY_HEIGHT = 300 + public idle_reached pubsym irq_serv.irq_10, 'kos_irq_serv_irq10' pubsym idts, 'kos_idts' @@ -586,6 +590,14 @@ ends proc umka_init c uses ebx esi edi ebp, _running call umka._.check_alignment + ; init boot vars + mov eax, BOOT + mov [eax + boot_data.x_res], UMKA_BOOT_DEFAULT_DISPLAY_WIDTH + mov [eax + boot_data.y_res], UMKA_BOOT_DEFAULT_DISPLAY_HEIGHT + mov [eax + boot_data.bpp], UMKA_BOOT_DEFAULT_DISPLAY_BPP + mov [eax + boot_data.pitch], UMKA_BOOT_DEFAULT_DISPLAY_BPP * \ + UMKA_BOOT_DEFAULT_DISPLAY_WIDTH / 8 + ; init umka context mov eax, umka mov [eax+umka_ctx.booted], 0 mov ecx, [_running] diff --git a/umka.h b/umka.h index ac61f56..70e3cb2 100644 --- a/umka.h +++ b/umka.h @@ -43,10 +43,6 @@ struct umka_ctx { atomic_int running; }; -#define UMKA_DEFAULT_DISPLAY_BPP 32 -#define UMKA_DEFAULT_DISPLAY_WIDTH 400 -#define UMKA_DEFAULT_DISPLAY_HEIGHT 300 - #define KEYBOARD_MODE_ASCII 0 #define KEYBOARD_MODE_SCANCODES 1 diff --git a/umka_fuse.c b/umka_fuse.c index dda3c78..26e49d7 100644 --- a/umka_fuse.c +++ b/umka_fuse.c @@ -167,14 +167,10 @@ main(int argc, char *argv[]) { exit(1); } - kos_boot.bpp = UMKA_DEFAULT_DISPLAY_BPP; - kos_boot.x_res = UMKA_DEFAULT_DISPLAY_WIDTH; - kos_boot.y_res = UMKA_DEFAULT_DISPLAY_HEIGHT; - kos_boot.pitch = UMKA_DEFAULT_DISPLAY_WIDTH * UMKA_DEFAULT_DISPLAY_BPP / 8; - struct umka_fuse_ctx *ctx = umka_fuse_init(); + umka_boot(); - struct vdisk *umka_disk = vdisk_init(argv[2], 1, 0u, 0); + struct vdisk *umka_disk = vdisk_init(argv[2], 1, 0u, ctx->io); disk_t *disk = disk_add(&umka_disk->diskfunc, "hd0", umka_disk, 0); disk_media_changed(disk, 1); return fuse_main(argc-1, argv, &umka_oper, ctx); diff --git a/umka_os.c b/umka_os.c index d6d090f..1c6033e 100644 --- a/umka_os.c +++ b/umka_os.c @@ -353,11 +353,6 @@ main(int argc, char *argv[]) { } memset((void*)app_ldr, 0, APP_MAX_MEM_SIZE); - kos_boot.bpp = UMKA_DEFAULT_DISPLAY_BPP; - kos_boot.x_res = UMKA_DEFAULT_DISPLAY_WIDTH; - kos_boot.y_res = UMKA_DEFAULT_DISPLAY_HEIGHT; - kos_boot.pitch = UMKA_DEFAULT_DISPLAY_WIDTH * UMKA_DEFAULT_DISPLAY_BPP / 8; - run_test(os->shell); os->shell->fin = fin; clearerr(stdin); // reset feof diff --git a/umka_shell.c b/umka_shell.c index 6a7ee22..aae7c1f 100644 --- a/umka_shell.c +++ b/umka_shell.c @@ -75,11 +75,6 @@ main(int argc, char **argv) { kos_boot.memmap_blocks[1] = (e820entry_t){(uintptr_t)mem1, 128*1024*1024, 1}; kos_boot.memmap_blocks[2] = (e820entry_t){(uintptr_t)mem2, 256*1024*1024, 1}; */ - kos_boot.bpp = UMKA_DEFAULT_DISPLAY_BPP; - kos_boot.x_res = UMKA_DEFAULT_DISPLAY_WIDTH; - kos_boot.y_res = UMKA_DEFAULT_DISPLAY_HEIGHT; - kos_boot.pitch = UMKA_DEFAULT_DISPLAY_WIDTH * UMKA_DEFAULT_DISPLAY_BPP / 8; - int reproducible = 0; struct optparse options;