--- np2/lio/gline.c 2004/02/22 00:52:55 1.11 +++ np2/lio/gline.c 2004/06/03 13:35:28 1.13 @@ -303,18 +303,18 @@ REG8 lio_gline(GLIO lio) { BYTE tile[256]; lio_updatedraw(lio); - i286_memstr_read(CPU_DS, CPU_BX, &dat, sizeof(dat)); + MEML_READSTR(CPU_DS, CPU_BX, &dat, sizeof(dat)); lp.x1 = (SINT16)LOADINTELWORD(dat.x1); lp.y1 = (SINT16)LOADINTELWORD(dat.y1); lp.x2 = (SINT16)LOADINTELWORD(dat.x2); lp.y2 = (SINT16)LOADINTELWORD(dat.y2); + + TRACEOUT(("lio_gline %d,%d-%d,%d [%d]", lp.x1, lp.y1, lp.x2, lp.y2, dat.type)); + if (dat.pal == 0xff) { - lp.pal = lio->work.fgcolor; - } - else { - lp.pal = dat.pal; + dat.pal = lio->work.fgcolor; } - if (lp.pal >= lio->draw.palmax) { + if (dat.pal >= lio->draw.palmax) { goto gline_err; } pat = 0xffff; @@ -323,6 +323,7 @@ REG8 lio_gline(GLIO lio) { pat = (GDCPATREVERSE(dat.style[0]) << 8) + GDCPATREVERSE(dat.style[1]); } + lp.pal = dat.pal; if (dat.type == 0) { gline(lio, &lp, pat); } @@ -337,10 +338,19 @@ REG8 lio_gline(GLIO lio) { if (leng == 0) { goto gline_err; } - i286_memstr_read(LOADINTELWORD(dat.seg), LOADINTELWORD(dat.off), + MEML_READSTR(LOADINTELWORD(dat.seg), LOADINTELWORD(dat.off), tile, leng); } - gbox(lio, &lp, tile, leng); + if (dat.sw != 1) { + lp.pal = dat.pal; + gbox(lio, &lp, tile, leng); + } + else { + lp.pal = dat.style[0]; + gbox(lio, &lp, tile, leng); + lp.pal = dat.pal; + glineb(lio, &lp, 0xffff); + } } else { goto gline_err;