-void draw_vrl_modex(unsigned int x,unsigned int y,struct vrl_header *hdr,unsigned char *data,unsigned int datasz) {\r
- unsigned int vram_offset = (y * vga_stride) + (x >> 2);\r
- unsigned char *fence = data + datasz;\r
- unsigned char vga_plane = (x & 3);\r
- unsigned char run,skip,b;\r
- unsigned char far *draw;\r
-\r
- while (data < fence) {\r
- /* start of another vertical strip */\r
- draw = vga_graphics_ram + vram_offset;\r
- vga_write_sequencer(0x02/*map mask*/,1 << vga_plane);\r
-\r
- while (data < fence) {\r
- run = *data++;\r
- if (run == 0xFF) break;\r
- skip = *data++;\r
- draw += skip * vga_stride;\r
- if (run & 0x80) {\r
- b = *data++;\r
- while (run > 0x80) {\r
- *draw = b;\r
- draw += vga_stride;\r
- run--;\r
- }\r
- }\r
- else {\r
- while (run > 0) {\r
- *draw = *data++;\r
- draw += vga_stride;\r
- run--;\r
- }\r
- }\r
- }\r
-\r
- /* end of a vertical strip. next line? */\r
- if ((++vga_plane) == 4) {\r
- vram_offset++;\r
- vga_plane = 0;\r
- }\r
- }\r
-\r
- vga_write_sequencer(0x02/*map mask*/,0xF);\r
-}\r
-\r