--- np2/io/cgrom.c 2004/03/28 19:50:25 1.9 +++ np2/io/cgrom.c 2005/02/04 05:32:24 1.13 @@ -27,7 +27,7 @@ static void cgwindowset(CGROM cr) { cgwindow.writable |= 1; high += cr->lr; } - else if ((code >= 0x08) && (code < 0x0c)) { + else if ((code >= 0x09) && (code < 0x0c)) { // ver0.78 if (cr->lr) { high = low; } @@ -62,6 +62,7 @@ static void IOOUTCALL cgrom_oa1(UINT por CGROM cr; +// TRACEOUT(("%.4x:%.2x [%.4x:%.4x]", port, dat, CPU_CS, CPU_IP)); cr = &cgrom; cr->code = (dat << 8) | (cr->code & 0xff); cgwindowset(cr); @@ -73,6 +74,7 @@ static void IOOUTCALL cgrom_oa3(UINT por CGROM cr; +// TRACEOUT(("%.4x:%.2x [%.4x:%.4x]", port, dat, CPU_CS, CPU_IP)); cr = &cgrom; cr->code = (cr->code & 0xff00) | dat; cgwindowset(cr); @@ -109,12 +111,13 @@ static REG8 IOINPCALL cgrom_ia9(UINT por CGROM cr; const BYTE *ptr; + int type; cr = &cgrom; ptr = fontrom; - TRACEOUT(("read code = %.4x", cr->code)); - if ((cr->code & 0x00fc) == 0x0008) { - if (cr->lr) { + type = cr->code & 0x00ff; + if ((type >= 0x09) && (type < 0x0c)) { // ver0.78 + if (!cr->lr) { ptr += (cr->code & 0x7f7f) << 4; return(ptr[cr->line & 0x0f]); }