M carrera/io.h => carrera/io.h +2 -2
@@ 70,5 70,5 @@ struct Tte
#define UNCACHED(type, v) (type*)((ulong)(v)|0xA0000000)
#define EISA(v) (Eisamvirt+(v))
-#define EISAOUTB(port, v) *(uchar*)((EisaControl+(port))^2) = v
-#define EISAINB(port) (*(uchar*)((EisaControl+(port))^2))
+#define EISAOUTB(port, v) *(uchar*)((EisaControl+(port))^7) = v
+#define EISAINB(port) (*(uchar*)((EisaControl+(port))^7))
M carrera/main.c => carrera/main.c +1 -1
@@ 47,7 47,7 @@ main(void)
serialinit();
vecinit();
iprint("\n\nBrazil\n");
- screeninit(); /**/
+screeninit();
pageinit();
procinit0();
initseg();
M carrera/screen.c => carrera/screen.c +7 -3
@@ 190,6 190,10 @@ screeninit(void)
int i, j;
uchar *scr;
+ EISAOUTB(0x3c3, 1);
+ delay(1);
+ EISAOUTB(0x46e8, 0x8);
+
setmode(&dfltmode);
getvmode(&x);
writeregisters(&x);
@@ 445,9 449,6 @@ setmode(VGAmode *v)
{
int i;
- for(i = 0; i < sizeof(v->general); i++)
- genout(i, v->general[i]);
-
/* turn screen off (to avoid damage) */
srout(1, 0x21);
@@ 457,6 458,9 @@ setmode(VGAmode *v)
srout(0x00, srin(0x00) & 0xFD); /* synchronous reset*/
+ for(i = 0; i < sizeof(v->general); i++)
+ genout(i, v->general[i]);
+
for(i = 0; i < sizeof(v->sequencer); i++)
if(i == 1)
srout(i, v->sequencer[i]|0x20);