- u16 i;
- for (i = lr.y; i >= ul.y; i--)
- if (i < ul.y + nblines)
- vgamem_fill_pl4(ul.x, i, cols, nbcols, cheight,
- attr);
- else
- vgamem_copy_pl4(ul.x, i, i - nblines, cols,
- nbcols, cheight);
-}
-
-static void
-vgamem_copy_cga(u8 xstart, u8 ysrc, u8 ydest, u8 cols, u8 nbcols,
- u8 cheight)
-{
- u16 src = ((ysrc * cheight * nbcols) >> 1) + xstart;
- u16 dest = ((ydest * cheight * nbcols) >> 1) + xstart;
- u8 i;
- for (i = 0; i < cheight; i++)
- if (i & 1)
- memcpy_far(SEG_CTEXT, (void*)(0x2000 + dest + (i >> 1) * nbcols)
- , SEG_CTEXT, (void*)(0x2000 + src + (i >> 1) * nbcols)
- , cols);
- else
- memcpy_far(SEG_CTEXT, (void*)(dest + (i >> 1) * nbcols)
- , SEG_CTEXT, (void*)(src + (i >> 1) * nbcols), cols);
-}
-
-static void
-vgamem_fill_cga(u8 xstart, u8 ystart, u8 cols, u8 nbcols, u8 cheight,
- u8 attr)
-{
- u16 dest = ((ystart * cheight * nbcols) >> 1) + xstart;
- u8 i;
- for (i = 0; i < cheight; i++)
- if (i & 1)
- memset_far(SEG_CTEXT, (void*)(0x2000 + dest + (i >> 1) * nbcols)
- , attr, cols);
- else
- memset_far(SEG_CTEXT, (void*)(dest + (i >> 1) * nbcols), attr, cols);
+ if (attr < 0)
+ attr = 0;
+ vgahw_grdc_write(0x05, 0x02);
+ memset_stride(SEG_GRAPH, dest_far, attr, cols, stride, nblines * cheight);
+ vgahw_grdc_write(0x05, 0x00);