4 void Drawing08_Initialize_Palette(void)
\r
6 static uchar table_rgb[16 * 3] = {
\r
24 uchar table2[216 * 3];
\r
27 Drawing08_Set_Palette(0, 15, table_rgb);
\r
28 for (b = 0; b < 6; b++) {
\r
29 for (g = 0; g < 6; g++) {
\r
30 for (r = 0; r < 6; r++) {
\r
31 table2[(r + g * 6 + b * 36) * 3 + 0] = r * 51;
\r
32 table2[(r + g * 6 + b * 36) * 3 + 1] = g * 51;
\r
33 table2[(r + g * 6 + b * 36) * 3 + 2] = b * 51;
\r
37 Drawing08_Set_Palette(16, 231, table2);
\r
42 void Drawing08_Set_Palette(uint start, uint end, uchar *rgb)
\r
46 eflags = IO_Load_EFlags();
\r
48 IO_Out8(VGA_VDAC_WRITE_ADR, start);
\r
49 for (i = start; i <= end; i++) {
\r
50 IO_Out8(VGA_VDAC_DATA, rgb[0] >> 2);
\r
51 IO_Out8(VGA_VDAC_DATA, rgb[1] >> 2);
\r
52 IO_Out8(VGA_VDAC_DATA, rgb[2] >> 2);
\r
55 IO_Store_EFlags(eflags);
\r
59 void Drawing08_Fill_Rectangle(void *vram, uint xsize, uint c, uint x0, uint y0, uint x1, uint y1)
\r
63 //if negative location
\r
64 if((x0 & 0x80000000) != 0 || (y0 & 0x80000000) != 0 || (x1 & 0x80000000) != 0 || (y1 & 0x80000000) != 0){
\r
68 c = RGB_32_To_08(c);
\r
69 for(y = y0; y <= y1; y++){
\r
70 for(x = x0; x <= x1; x++){
\r
71 ((uchar *)vram)[y * xsize + x] = (uchar)c;
\r
77 void Drawing08_Put_Font(void *vram, uint xsize, uint x, uint y, uint c, const uchar *font)
\r
83 //if negative location
\r
84 if((x & 0x80000000) != 0 || (y & 0x80000000) != 0){
\r
88 for (i = 0; i < 16; i++) {
\r
89 p = (uchar *)(vram + (y + i) * xsize + x);
\r
91 if ((d & 0x80) != 0) { p[0] = (uchar)c; }
\r
92 if ((d & 0x40) != 0) { p[1] = (uchar)c; }
\r
93 if ((d & 0x20) != 0) { p[2] = (uchar)c; }
\r
94 if ((d & 0x10) != 0) { p[3] = (uchar)c; }
\r
95 if ((d & 0x08) != 0) { p[4] = (uchar)c; }
\r
96 if ((d & 0x04) != 0) { p[5] = (uchar)c; }
\r
97 if ((d & 0x02) != 0) { p[6] = (uchar)c; }
\r
98 if ((d & 0x01) != 0) { p[7] = (uchar)c; }
\r
103 void Drawing08_Put_String(void *vram, uint xsize, uint x, uint y, uint c, const uchar s[])
\r
105 //if negative location
\r
106 if((x & 0x80000000) != 0 || (y & 0x80000000) != 0){
\r
114 c = RGB_32_To_08(c);
\r
115 for(; *s != 0x00; s++){
\r
119 Drawing08_Put_Font(vram, xsize, x, y, c, hankaku + *s * 16);
\r
125 void Drawing08_Draw_Point(void *vram, uint xsize, uint x, uint y, uint c)
\r
127 //if negative location
\r
128 if((x & 0x80000000) != 0 || (y & 0x80000000) != 0){
\r
132 ((uchar *)vram)[y * xsize + x] = RGB_32_To_08_xy(c, x, y);
\r