Add a hack to detect the Milan which boots with a black&white mode, to make the menu and console readable.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42641 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -16,6 +16,9 @@
|
|||||||
#include "keyboard.h"
|
#include "keyboard.h"
|
||||||
|
|
||||||
|
|
||||||
|
static bool sForceBW = false; // force black & white for Milan
|
||||||
|
|
||||||
|
|
||||||
// TOS emulates a VT52
|
// TOS emulates a VT52
|
||||||
|
|
||||||
class ConsoleHandle : public CharHandle {
|
class ConsoleHandle : public CharHandle {
|
||||||
@@ -163,6 +166,33 @@ InputConsoleHandle::GetChar()
|
|||||||
// #pragma mark -
|
// #pragma mark -
|
||||||
|
|
||||||
|
|
||||||
|
static void
|
||||||
|
dump_colors()
|
||||||
|
{
|
||||||
|
int bg, fg;
|
||||||
|
dprintf("colors:\n");
|
||||||
|
for (bg = 0; bg < 16; bg++) {
|
||||||
|
for (fg = 0; fg < 16; fg++) {
|
||||||
|
console_set_color(fg, bg);
|
||||||
|
dprintf("#");
|
||||||
|
}
|
||||||
|
console_set_color(0, 15);
|
||||||
|
dprintf("\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static int32
|
||||||
|
dump_milan_modes(SCREENINFO *info, uint32 flags)
|
||||||
|
{
|
||||||
|
dprintf("mode: %d '%s':\n flags %08lx @%08lx %dx%d (%dx%d)\n%d planes %d colors fmt %08lx\n",
|
||||||
|
info->devID, info->name, info->scrFlags, info->frameadr,
|
||||||
|
info->scrWidth, info->scrHeight,
|
||||||
|
info->virtWidth, info->virtHeight,
|
||||||
|
info->scrPlanes, info->scrColors, info->scrFormat);
|
||||||
|
return ENUMMODE_CONT;
|
||||||
|
}
|
||||||
|
|
||||||
status_t
|
status_t
|
||||||
console_init(void)
|
console_init(void)
|
||||||
{
|
{
|
||||||
@@ -173,6 +203,17 @@ console_init(void)
|
|||||||
stdin = (FILE *)&sInput;
|
stdin = (FILE *)&sInput;
|
||||||
stdout = stderr = (FILE *)&sOutput;
|
stdout = stderr = (FILE *)&sOutput;
|
||||||
|
|
||||||
|
if (tos_find_cookie('_MIL')) {
|
||||||
|
dprintf("Milan detected... forcing black & white\n");
|
||||||
|
/*
|
||||||
|
dprintf("Getrez() = %d\n", Getrez());
|
||||||
|
Setscreen(-1, &dump_milan_modes, MI_MAGIC, CMD_ENUMMODES);
|
||||||
|
Setscreen((void*)-1, (void*)-1, 0, 0);
|
||||||
|
*/
|
||||||
|
sForceBW = true;
|
||||||
|
}
|
||||||
|
//dump_colors();
|
||||||
|
|
||||||
return B_OK;
|
return B_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -253,6 +294,15 @@ void
|
|||||||
console_set_color(int32 foreground, int32 background)
|
console_set_color(int32 foreground, int32 background)
|
||||||
{
|
{
|
||||||
char buff[] = "\033b \033c ";
|
char buff[] = "\033b \033c ";
|
||||||
|
if (sForceBW) {
|
||||||
|
if (background == 0)
|
||||||
|
foreground = 15;
|
||||||
|
else {
|
||||||
|
background = 15;
|
||||||
|
foreground = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
buff[2] += (char)translate_color(foreground);
|
buff[2] += (char)translate_color(foreground);
|
||||||
buff[5] += (char)translate_color(background);
|
buff[5] += (char)translate_color(background);
|
||||||
sInput.WriteAt(NULL, 0LL, buff, 6);
|
sInput.WriteAt(NULL, 0LL, buff, 6);
|
||||||
|
|||||||
Reference in New Issue
Block a user