diff options
-rw-r--r-- | com32/lib/syslinux/load_linux.c | 3 | ||||
-rw-r--r-- | core/runkernel.inc | 11 |
2 files changed, 10 insertions, 4 deletions
diff --git a/com32/lib/syslinux/load_linux.c b/com32/lib/syslinux/load_linux.c index db985163..df793625 100644 --- a/com32/lib/syslinux/load_linux.c +++ b/com32/lib/syslinux/load_linux.c @@ -253,6 +253,9 @@ int syslinux_boot_linux(void *kernel_buf, size_t kernel_size, case 'n': /* "normal" */ video_mode = 0xffff; break; + case 'c': /* "current" */ + video_mode = 0x0f04; + break; default: video_mode = strtoul(arg, NULL, 0); break; diff --git a/core/runkernel.inc b/core/runkernel.inc index c437d72d..f6ede382 100644 --- a/core/runkernel.inc +++ b/core/runkernel.inc @@ -138,15 +138,18 @@ parse_cmdline: jmp .next_opt opt_vga: - mov eax,[es:di-1] + mov ax,[es:di-1] mov bx,-1 - cmp eax,'=nor' ; vga=normal + cmp ax,'=nor' ; vga=normal je .vc0 dec bx ; bx <- -2 - cmp eax,'=ext' ; vga=ext + cmp ax,'=ext' ; vga=ext je .vc0 dec bx ; bx <- -3 - cmp eax,'=ask' ; vga=ask + cmp ax,'=ask' ; vga=ask + je .vc0 + mov bx,0x0f04 ; bx <- 0x0f04 (current mode) + cmp ax,'=cur' ; vga=current je .vc0 call parseint_esdi ; vga=<number> jc .skip ; Not an integer |