X-Git-Url: http://git.joshuawise.com/netwatch.git/blobdiff_plain/4033103109721ab7a85c743c5c9d1c8f29a734ef..b80e06bab89f413f40553f85490e0b8ce3225df7:/aseg-paging/smi.c?ds=inline diff --git a/aseg-paging/smi.c b/aseg-paging/smi.c index bd29f64..bc0960f 100644 --- a/aseg-paging/smi.c +++ b/aseg-paging/smi.c @@ -5,6 +5,8 @@ #include #include #include +#include +#include #include "../net/net.h" #include "vga-overlay.h" @@ -19,12 +21,43 @@ void smi_entry(void) pcisave = inl(0xCF8); vgasave = inb(0x3D4); pci_unbother_all(); + + serial_init(); + + if (fb) + fb->getvmode(fb->priv); counter++; sprintf(statstr, "NetWatch! %08x %08x", smi_status(), counter); - strblit(statstr, 0, 0); + strblit(statstr, 0, 0, 0); + + /* wee! */ + if (fb && !fb->curmode.text) + { + output("not text! nope nope nope"); + int ass[][2] = { + {1,0}, {4,0},{5,0},{6,0}, {8,0},{9,0},{10,0}, + {0,1}, {2,1}, {4,1}, {8,1}, + {0,2},{1,2},{2,2}, {4,2},{5,2},{6,2}, {8,2},{9,2},{10,2}, + {0,3}, {2,3}, {6,3}, {10,3}, + {0,4}, {2,4}, {4,4},{5,4},{6,4}, {8,4},{9,4},{10,4}, + {-1,-1} + }; + int p; + for (p = 0; ass[p][0] != -1; p++) + { + int x, y; + for (y = 0; y < 8; y++) + for (x = 0; x < 8; x++) + { + unsigned long a = + (unsigned long) fb->fbaddr + + ((y+ass[p][1]*8) * fb->curmode.xres + ass[p][0]*8 + x) * 4; + *(unsigned long *)p2v(a) = 0xFF0000FF; + } + } + } - serial_init(); eth_poll(); if (inl(0x840) & 0x1000)