fix: correction conversion EGA->RGB et decodage caractère...Reste bogue
This commit is contained in:
parent
ba7361eae6
commit
09e4ebbb38
|
@ -24,3 +24,4 @@ int disas(u8* commandline);
|
|||
int bpset(u8* commandline);
|
||||
int bpclr(u8* commandline);
|
||||
int help();
|
||||
int logo();
|
||||
|
|
|
@ -94,7 +94,7 @@ u8 getattrib (u16 coordx, u16 coordy);
|
|||
void writepxl (u16 x, u16 y, u32 color);
|
||||
void line(u32 x1, u32 y1, u32 x2, u32 y2, u8 color);
|
||||
void changemode(u8 mode);
|
||||
u32 vgatorgb(u8 ega);
|
||||
u32 egatorgb(u8 ega);
|
||||
u8 egatovga(u8 ega);
|
||||
|
||||
/* Fonctions de console */
|
||||
|
|
|
@ -30,4 +30,4 @@ u8 ansilogo[]="\
|
|||
\xB3\033[0m\033[6C\033[1mF1-F8\033[30m Consoles virtuelles \033[37mF9\033[30m Debug \033[37mF10\033[30m Mode graphique \033[37mF11\033[30m Aide\033[0m\033[9C\033[1;30m\xB3\r\n\
|
||||
\xB3\033[0m\033[77C\033[1;30m\xB3\r\n\
|
||||
\xB3\033[0m Developpe par \033[5;1;47mMrNop\033[0m\033[55C\xB3\r\n\
|
||||
\xC0\033[1;30m\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\033[0m\xC4\033[1;30m\xC4\033[0m\xC4\xC4\033[1m\xD9\r\n\r\n";
|
||||
\xC0\033[1;30m\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\033[0m\xC4\033[1;30m\xC4\033[0m\xC4\xC4\033[1m\xD9\033[0m\r\n\r\n";
|
11
lib/shell.c
11
lib/shell.c
|
@ -13,6 +13,7 @@
|
|||
#include "multiboot2.h"
|
||||
#include "math.h"
|
||||
#include "debug.h"
|
||||
#include "VGA/ansi.c"
|
||||
|
||||
static command commands[] = {
|
||||
{"reboot" , "", &rebootnow},
|
||||
|
@ -31,6 +32,7 @@ static command commands[] = {
|
|||
{"bpset" , "", &bpset},
|
||||
{"bpclr" , "", &bpclr},
|
||||
{"help" , "", &help},
|
||||
{"logo" , "", &logo},
|
||||
};
|
||||
|
||||
/*******************************************************************************/
|
||||
|
@ -70,6 +72,15 @@ int test(void)
|
|||
return;
|
||||
}
|
||||
|
||||
/*******************************************************************************/
|
||||
/* Affiche le logo */
|
||||
|
||||
int logo()
|
||||
{
|
||||
print(ansilogo);
|
||||
return;
|
||||
}
|
||||
|
||||
/*******************************************************************************/
|
||||
/* Renvoie les commandes disponibles */
|
||||
|
||||
|
|
27
lib/video.c
27
lib/video.c
|
@ -1051,15 +1051,22 @@ void showchar(u16 coordx, u16 coordy, u8 thechar, u8 attrib)
|
|||
pattern = font8x8[(thechar<<3) + y];
|
||||
for (x = 0; x < 8; x++)
|
||||
{
|
||||
rol(pattern);
|
||||
set = pattern & 0x1;
|
||||
if (set == 0)
|
||||
color = egatovga((attrib & 0xF0) >> 8);
|
||||
if (vinfo->currentdepth==32)
|
||||
color = egatorgb((attrib & 0xF0) >> 8);
|
||||
else
|
||||
color = egatovga((attrib & 0xF0) >> 8);
|
||||
else
|
||||
color = egatovga(attrib & 0x0F);
|
||||
if (vinfo->currentdepth==32)
|
||||
color = vgatorgb(color);
|
||||
if (vinfo->currentdepth==32)
|
||||
color = egatorgb(attrib & 0x0F);
|
||||
else
|
||||
color = egatovga(attrib & 0x0F);
|
||||
|
||||
|
||||
|
||||
writepxl((coordx<<3) + x, (coordy<<3) + y, color);
|
||||
rol(pattern);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1078,13 +1085,11 @@ u8 egatovga(u8 ega)
|
|||
/******************************************************************************/
|
||||
/* Retourne une couleur RGB 32 bits depuis une couleur EGA/VGA */
|
||||
|
||||
u32 vgatorgb(u8 vga)
|
||||
static convertrgb[]={0x000000,0x0000AA,0x00AA00,0x00AAAA,0xAA0000,0xAA00AA,0xAA5500,0xAAAAAA,0x555555,0x5555FF,0x55FF55,0x55FFFF,0xFF5555,0xFF55FF,0xFFFF55,0xFFFFFF};
|
||||
|
||||
u32 egatorgb(u8 vga)
|
||||
{
|
||||
if (vga==0) return 0;
|
||||
u8 red = 85 * (((vga >> 4) & 2) | (vga >> 2) & 1);
|
||||
u8 green = 85 * (((vga >> 3) & 2) | (vga >> 1) & 1);
|
||||
u8 blue = 85 * (((vga >> 2) & 2) | vga & 1);
|
||||
return (red<<16)+(green<<8)+blue+(0x0<<24);
|
||||
return convertrgb[vga & 0xF];
|
||||
}
|
||||
|
||||
/******************************************************************************/
|
||||
|
|
|
@ -12,7 +12,6 @@
|
|||
#include "cpu.h"
|
||||
#include "string.h"
|
||||
#include "2d.h"
|
||||
#include "ansi.c"
|
||||
#include "gdt.h"
|
||||
#include "shell.h"
|
||||
#include "syscall.h"
|
||||
|
@ -56,7 +55,7 @@ int main(u32 magic, u32 addr)
|
|||
|
||||
/* Efface l'ecran */
|
||||
print("\033[2J\r\n\000");
|
||||
print(ansilogo);
|
||||
logo();
|
||||
|
||||
print("\033[37m\033[0m -Chargement noyaux");
|
||||
ok();
|
||||
|
|
Loading…
Reference in New Issue