started adding a vesa fb
This commit is contained in:
parent
dfd6e90200
commit
e8d09031cb
4 changed files with 35 additions and 12 deletions
|
@ -92,7 +92,7 @@
|
||||||
#define MULTIBOOT_INFO_FRAMEBUFFER_INFO 0x00001000
|
#define MULTIBOOT_INFO_FRAMEBUFFER_INFO 0x00001000
|
||||||
|
|
||||||
#ifndef ASM_FILE
|
#ifndef ASM_FILE
|
||||||
|
#define multiboot_PACKED __attribute__((packed))
|
||||||
typedef unsigned char multiboot_uint8_t;
|
typedef unsigned char multiboot_uint8_t;
|
||||||
typedef unsigned short multiboot_uint16_t;
|
typedef unsigned short multiboot_uint16_t;
|
||||||
typedef unsigned int multiboot_uint32_t;
|
typedef unsigned int multiboot_uint32_t;
|
||||||
|
@ -230,7 +230,7 @@ struct multiboot_mmap_entry {
|
||||||
#define MULTIBOOT_MEMORY_NVS 4
|
#define MULTIBOOT_MEMORY_NVS 4
|
||||||
#define MULTIBOOT_MEMORY_BADRAM 5
|
#define MULTIBOOT_MEMORY_BADRAM 5
|
||||||
multiboot_uint32_t type;
|
multiboot_uint32_t type;
|
||||||
} GRUB_PACKED;
|
} multiboot_PACKED;
|
||||||
typedef struct multiboot_mmap_entry multiboot_memory_map_t;
|
typedef struct multiboot_mmap_entry multiboot_memory_map_t;
|
||||||
|
|
||||||
struct multiboot_mod_list {
|
struct multiboot_mod_list {
|
||||||
|
@ -248,15 +248,15 @@ typedef struct multiboot_mod_list multiboot_module_t;
|
||||||
|
|
||||||
/* APM BIOS info. */
|
/* APM BIOS info. */
|
||||||
struct multiboot_apm_info {
|
struct multiboot_apm_info {
|
||||||
grub_uint16_t version;
|
multiboot_uint16_t version;
|
||||||
grub_uint16_t cseg;
|
multiboot_uint16_t cseg;
|
||||||
grub_uint32_t offset;
|
multiboot_uint32_t offset;
|
||||||
grub_uint16_t cseg_16;
|
multiboot_uint16_t cseg_16;
|
||||||
grub_uint16_t dseg;
|
multiboot_uint16_t dseg;
|
||||||
grub_uint16_t flags;
|
multiboot_uint16_t flags;
|
||||||
grub_uint16_t cseg_len;
|
multiboot_uint16_t cseg_len;
|
||||||
grub_uint16_t cseg_16_len;
|
multiboot_uint16_t cseg_16_len;
|
||||||
grub_uint16_t dseg_len;
|
multiboot_uint16_t dseg_len;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* ! ASM_FILE */
|
#endif /* ! ASM_FILE */
|
||||||
|
|
|
@ -1,8 +1,22 @@
|
||||||
|
#include <config.h>
|
||||||
|
#include <multiboot.h>
|
||||||
|
#ifndef ENABLE_FRAMEBUFFER
|
||||||
#include "../../../hw/pc/cgaterm/cgaterm.hpp"
|
#include "../../../hw/pc/cgaterm/cgaterm.hpp"
|
||||||
|
#else
|
||||||
|
#include "../../../hw/pc/vesafb/vesafb.hpp"
|
||||||
|
#endif
|
||||||
#include <base.hpp>
|
#include <base.hpp>
|
||||||
|
static multiboot_info_t *mb_info;
|
||||||
|
#ifndef ENABLE_FRAMEBUFFER
|
||||||
CGATerm term;
|
CGATerm term;
|
||||||
|
#else
|
||||||
|
VESAfb term(mb_info);
|
||||||
|
#endif
|
||||||
void main();
|
void main();
|
||||||
extern "C" void start() { main(); }
|
extern "C" void start(int eax, multiboot_info_t *ebx) {
|
||||||
|
mb_info = ebx;
|
||||||
|
main();
|
||||||
|
}
|
||||||
void drivers_init() {
|
void drivers_init() {
|
||||||
setMainTTY(&term);
|
setMainTTY(&term);
|
||||||
--term;
|
--term;
|
||||||
|
|
|
@ -7,8 +7,16 @@ _start:
|
||||||
jmp _start2
|
jmp _start2
|
||||||
.align MULTIBOOT_HEADER_ALIGN
|
.align MULTIBOOT_HEADER_ALIGN
|
||||||
.int MULTIBOOT_HEADER_MAGIC
|
.int MULTIBOOT_HEADER_MAGIC
|
||||||
|
#ifndef ENABLE_FRAMEBUFFER
|
||||||
.int 0x0
|
.int 0x0
|
||||||
.int -(MULTIBOOT_HEADER_MAGIC)
|
.int -(MULTIBOOT_HEADER_MAGIC)
|
||||||
|
#else
|
||||||
|
.int 0x7
|
||||||
|
.int -(MULTIBOOT_HEADER_MAGIC+0x7)
|
||||||
|
.int 0,0,0,0,0
|
||||||
|
.int 0
|
||||||
|
.int 1024, 768, 24
|
||||||
|
#endif
|
||||||
.align MULTIBOOT_HEADER_ALIGN
|
.align MULTIBOOT_HEADER_ALIGN
|
||||||
.extern start
|
.extern start
|
||||||
_start2:
|
_start2:
|
||||||
|
|
|
@ -2,6 +2,7 @@ config["ENABLE_FRAMEBUFFER"] = get_yes_no("Use VESA Framebuffer?", True)
|
||||||
if config["ENABLE_FRAMEBUFFER"]:
|
if config["ENABLE_FRAMEBUFFER"]:
|
||||||
config["ENABLE_FRAMEBUFFER_UNICODE"] = get_yes_no("Enable full Unicode BMP font (Adds around 1MB to binary)", False)
|
config["ENABLE_FRAMEBUFFER_UNICODE"] = get_yes_no("Enable full Unicode BMP font (Adds around 1MB to binary)", False)
|
||||||
if config["ENABLE_FRAMEBUFFER"]:
|
if config["ENABLE_FRAMEBUFFER"]:
|
||||||
|
add_driver(True, "framebuffer")
|
||||||
add_driver(False, "vesafb")
|
add_driver(False, "vesafb")
|
||||||
else:
|
else:
|
||||||
add_driver(False, "cgaterm")
|
add_driver(False, "cgaterm")
|
||||||
|
|
Loading…
Reference in a new issue