Remove all vga code in init
This commit is contained in:
parent
27d0fd6bfd
commit
2c2cfc74ba
84
init/main.c
84
init/main.c
@ -1,5 +1,4 @@
|
||||
#include <string.h>
|
||||
#include "vga.h"
|
||||
#include <grub/text_fb_info.h>
|
||||
#include <ipc/vfs.h>
|
||||
#include <elf.h>
|
||||
@ -33,36 +32,6 @@ uint32_t getsize(const char *in) {
|
||||
return size;
|
||||
}
|
||||
|
||||
void display_msg(vfs_message* vfs_msg) {
|
||||
vga_write_string("Message of type ");
|
||||
char str[256];
|
||||
str[0]='\0';
|
||||
int_to_ascii(vfs_msg->type,str);
|
||||
vga_write_string(str);
|
||||
vga_write_string("\n");
|
||||
vga_write_string("ID ");
|
||||
str[0]='\0';
|
||||
int_to_ascii(vfs_msg->id,str);
|
||||
vga_write_string(str);
|
||||
vga_write_string("\n");
|
||||
vga_write_string("Mode ");
|
||||
vga_write_string(&vfs_msg->mode[0]);
|
||||
vga_write_string("\n");
|
||||
vga_write_string("FD ");
|
||||
str[0]='\0';
|
||||
int_to_ascii(vfs_msg->fd,str);
|
||||
vga_write_string(str);
|
||||
vga_write_string("\n");
|
||||
vga_write_string("Path ");
|
||||
vga_write_string(&vfs_msg->path[0]);
|
||||
vga_write_string("\n");
|
||||
vga_write_string("Flags ");
|
||||
str[0]='\0';
|
||||
hex_to_ascii(vfs_msg->flags,str);
|
||||
vga_write_string(str);
|
||||
vga_write_string("\n");
|
||||
}
|
||||
|
||||
uint32_t find_loc(char* name,char* initrd) {
|
||||
uint32_t pos=0;
|
||||
tar_header tar_hdr;
|
||||
@ -96,7 +65,6 @@ char load_task(uint32_t datapos,char* initrd) {
|
||||
pos++;
|
||||
}
|
||||
if (header.magic!=ELF_MAGIC) {
|
||||
vga_write_string("[INFO] Invalid magic number\n");
|
||||
return 0;
|
||||
} else {
|
||||
void* cr3=new_address_space();
|
||||
@ -124,49 +92,7 @@ char load_task(uint32_t datapos,char* initrd) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
vfs_message* make_msg(vfs_message_type type, char* mode, char* path) {
|
||||
static uint32_t id=0;
|
||||
vfs_message* msg_data=malloc(sizeof(vfs_message));
|
||||
msg_data->type=type;
|
||||
msg_data->id=id;
|
||||
id++;
|
||||
strcpy(&msg_data->mode[0],mode);
|
||||
strcpy(&msg_data->path[0],path);
|
||||
return msg_data;
|
||||
}
|
||||
|
||||
void test_vfs(char* path,uint32_t box,uint32_t fs_box) {
|
||||
vga_write_string("Sending test message\n");
|
||||
vfs_message* msg_data=make_msg(VFS_OPEN,"r",path);
|
||||
Message msg;
|
||||
msg.from=box;
|
||||
msg.to=1;
|
||||
msg.msg=msg_data;
|
||||
msg.size=sizeof(vfs_message);
|
||||
mailbox_send_msg(&msg);
|
||||
free(msg.msg);
|
||||
yield();
|
||||
vga_write_string("Getting fs_box message\n");
|
||||
yield();
|
||||
vga_write_string("Getting message\n");
|
||||
msg.msg=malloc(sizeof(vfs_message));
|
||||
mailbox_get_msg(box,&msg,sizeof(vfs_message));
|
||||
if (msg.from==0) {
|
||||
vga_write_string("No message\n");
|
||||
} else {
|
||||
vfs_message* vfs_msg=(vfs_message*)msg.msg;
|
||||
display_msg(vfs_msg);
|
||||
}
|
||||
free(msg.msg);
|
||||
}
|
||||
|
||||
int main() {
|
||||
text_fb_info info;
|
||||
info.address=map_phys((void*)0xB8000,10);
|
||||
info.width=80;
|
||||
info.height=25;
|
||||
vga_init(info);
|
||||
vga_write_string("INIT\n");
|
||||
long size=initrd_sz();
|
||||
char* initrd=malloc(size);
|
||||
initrd_get(initrd);
|
||||
@ -180,24 +106,14 @@ int main() {
|
||||
load_task(datapos,initrd);
|
||||
free(initrd);
|
||||
yieldToPID(4);
|
||||
serial_print("MOUNT\n");
|
||||
vga_write_string("CALLING MOUNT\n");
|
||||
mount("","devfs","/dev/");
|
||||
serial_print("MOUNT SUCSESFULL\n");
|
||||
vga_write_string("MOUNT SUCSESFULL\n");
|
||||
FILE* file;
|
||||
do {
|
||||
vga_write_string("CALLING FOPEN\n");
|
||||
file=fopen("/dev/vga","w");
|
||||
vga_write_string("FOPEN RETURNED\n");
|
||||
} while(file==NULL);
|
||||
do {
|
||||
vga_write_string("CALLING FOPEN\n");
|
||||
file=fopen("/dev/vga","w");
|
||||
vga_write_string("FOPEN RETURNED\n");
|
||||
} while(file==NULL);
|
||||
vga_write_string("CALLING FPUTS\n");
|
||||
fputs("FPUTS String\n",file);
|
||||
vga_write_string("FPUTS RETURNED\n");
|
||||
printf("Printf %d\n",size);
|
||||
}
|
||||
|
31
init/ports.c
31
init/ports.c
@ -1,31 +0,0 @@
|
||||
#include <stdint.h>
|
||||
|
||||
uint8_t port_byte_in(uint16_t port) {
|
||||
uint8_t result;
|
||||
asm("in %%dx, %%al":"=a"(result):"d"(port));
|
||||
return result;
|
||||
}
|
||||
|
||||
void port_byte_out(uint16_t port,uint8_t data) {
|
||||
asm("out %%al, %%dx":: "a"(data),"d"(port));
|
||||
}
|
||||
|
||||
uint16_t port_word_in(uint16_t port) {
|
||||
uint16_t result;
|
||||
asm("in %%dx, %%ax":"=a"(result):"d"(port));
|
||||
return result;
|
||||
}
|
||||
|
||||
void port_word_out(uint16_t port,uint16_t data) {
|
||||
asm("out %%ax, %%dx":: "a" (data), "d" (port));
|
||||
}
|
||||
|
||||
uint32_t port_long_in(uint16_t port) {
|
||||
uint32_t result;
|
||||
asm("inl %%dx, %%eax":"=a"(result):"d"(port));
|
||||
return result;
|
||||
}
|
||||
|
||||
void port_long_out(uint16_t port,uint32_t data) {
|
||||
asm("outl %%eax, %%dx":: "a" (data), "d" (port));
|
||||
}
|
12
init/ports.h
12
init/ports.h
@ -1,12 +0,0 @@
|
||||
#ifndef PORTS_H
|
||||
#define PORTS_H
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
uint8_t port_byte_in(uint16_t port);
|
||||
void port_byte_out(uint16_t port,uint8_t data);
|
||||
uint16_t port_word_in(uint16_t port);
|
||||
void port_word_out(uint16_t port,uint16_t data);
|
||||
uint32_t port_long_in(uint16_t port);
|
||||
void port_long_out(uint16_t port,uint32_t data);
|
||||
#endif
|
91
init/vga.c
91
init/vga.c
@ -1,91 +0,0 @@
|
||||
#include <grub/text_fb_info.h>
|
||||
#include "vga.h"
|
||||
#include "ports.h"
|
||||
#include <string.h>
|
||||
#include <stddef.h>
|
||||
#define xy_to_indx(x,y) ((x+(y*width))*2)
|
||||
static char* screen;
|
||||
static int width;
|
||||
static int height;
|
||||
static int x;
|
||||
static int y;
|
||||
static vga_colors fg_color;
|
||||
static vga_colors bg_color;
|
||||
static char* scroll_buf[0xfa0];
|
||||
|
||||
|
||||
static void set_char(int x,int y,char c) {
|
||||
screen[xy_to_indx(x,y)]=c;
|
||||
screen[xy_to_indx(x,y)+1]=(bg_color<<4)|fg_color;
|
||||
}
|
||||
|
||||
void vga_clear() {
|
||||
for (int y=0;y<height;y++) {
|
||||
for (int x=0;x<width;x++) {
|
||||
set_char(x,y,' ');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void set_cursor(int x,int y) {
|
||||
int pos=(x+(y*width));
|
||||
port_byte_out(0x3D4,0xF);
|
||||
port_byte_out(0x3D5,pos&0xFF);
|
||||
port_byte_out(0x3D4,0xE);
|
||||
port_byte_out(0x3D5,(pos&0xFF00)>>8);
|
||||
}
|
||||
|
||||
void vga_init(text_fb_info framebuffer_info) {
|
||||
x=0;
|
||||
y=0;
|
||||
fg_color=VGA_WHITE;
|
||||
bg_color=VGA_BLACK;
|
||||
screen=framebuffer_info.address;
|
||||
width=framebuffer_info.width;
|
||||
height=framebuffer_info.height;
|
||||
port_byte_out(0x3D4,0xA);
|
||||
port_byte_out(0x3D5,(port_byte_in(0x3D5)&0xC0)|14);
|
||||
port_byte_out(0x3D4,0xB);
|
||||
port_byte_out(0x3D5,(port_byte_in(0x3D5)&0xE0)|15);
|
||||
set_cursor(0,0);
|
||||
vga_clear();
|
||||
}
|
||||
|
||||
void vga_write_string(const char* string) {
|
||||
for (size_t i=0;i<strlen(string);i++) {
|
||||
char c=string[i];
|
||||
if (c=='\n') {
|
||||
x=0;
|
||||
y++;
|
||||
#pragma GCC diagnostic push
|
||||
#pragma GCC diagnostic ignored "-Wunused-value"
|
||||
for (int i=0;i<67108864;i++) {
|
||||
1+1;
|
||||
}
|
||||
#pragma GCC diagnostic pop
|
||||
} else {
|
||||
set_char(x,y,c);
|
||||
x++;
|
||||
}
|
||||
if (x==width) {
|
||||
x=0;
|
||||
y++;
|
||||
}
|
||||
if (y==height) {
|
||||
x=0;
|
||||
y=24;
|
||||
memcpy(scroll_buf,&screen[xy_to_indx(0,1)],xy_to_indx(0,24));
|
||||
vga_clear();
|
||||
memcpy(screen,scroll_buf,xy_to_indx(0,25));
|
||||
}
|
||||
}
|
||||
set_cursor(x,y);
|
||||
}
|
||||
|
||||
void vga_backspace() {
|
||||
if (x!=0) {
|
||||
x--;
|
||||
set_char(x,y,' ');
|
||||
set_cursor(x,y);
|
||||
}
|
||||
}
|
29
init/vga.h
29
init/vga.h
@ -1,29 +0,0 @@
|
||||
#ifndef vga_H
|
||||
#define vga_H
|
||||
|
||||
typedef enum {
|
||||
VGA_BLACK=0,
|
||||
VGA_BLUE=1,
|
||||
VGA_GREEN=2,
|
||||
VGA_CYAN=3,
|
||||
VGA_RED=4,
|
||||
VGA_PURPLE=5,
|
||||
VGA_BROWN=6,
|
||||
VGA_GRAY=7,
|
||||
VGA_DARK_GRAY=8,
|
||||
VGA_LIGHT_BLUE=9,
|
||||
VGA_LIGHT_GREEN=10,
|
||||
VGA_LIGHT_CYAN=11,
|
||||
VGA_LIGHT_RED=12,
|
||||
VGA_LIGHT_PURPLE=13,
|
||||
VGA_YELLOW=14,
|
||||
VGA_WHITE=15
|
||||
} vga_colors;
|
||||
|
||||
|
||||
void vga_init();
|
||||
void vga_write_string(const char *string);
|
||||
void vga_clear();
|
||||
void vga_backspace();
|
||||
|
||||
#endif
|
Loading…
x
Reference in New Issue
Block a user