[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
#include "func.h" #define COLORN 16 #define COL_000000 0 #define COL_FF0000 1 #define COL_00FF00 2 #define COL_FFFF00 3 #define COL_0000FF 4 #define COL_FF00FF 5 #define COL_00FFFF 6 #define COL_FFFFFF 7 #define COL_C6C6C6 8 #define COL_840000 9 #define COL_008400 10 #define COL_848400 11 #define COL_000084 12 #define COL_840084 13 #define COL_008484 14 #define COL_848484 15 void Main(); void init_palete(); void set_palete(int, int, unsigned char *); void boxfill(unsigned char *, int, unsigned char, int, int, int, int); void Main() { char *vram = (char *)0xa0000; const int x = 320, y = 200; init_palete(); boxfill(vram, x, COL_008484, 0, 0, x - 1, y - 29); boxfill(vram, x, COL_C6C6C6, 0, y - 28, x - 1, y - 28); boxfill(vram, x, COL_FFFFFF, 0, y - 27, x - 1, y - 27); boxfill(vram, x, COL_C6C6C6, 0, y - 26, x - 1, y - 1); boxfill(vram, x, COL_FFFFFF, 3, y - 24, 59, y - 24); boxfill(vram, x, COL_FFFFFF, 2, y - 24, 2, y - 4); boxfill(vram, x, COL_848484, 3, y - 4, 59, y - 4); boxfill(vram, x, COL_848484, 59, y - 23, 59, y - 5); boxfill(vram, x, COL_000000, 2, y - 3, 59, y - 3); boxfill(vram, x, COL_000000, 60, y - 24, 60, y - 3); boxfill(vram, x, COL_848484, x - 47, y - 24, x - 4, y - 24); boxfill(vram, x, COL_848484, x - 47, y - 23, x - 47, y - 4); boxfill(vram, x, COL_FFFFFF, x - 47, y - 3, x - 4, y - 3); boxfill(vram, x, COL_FFFFFF, x - 3, y - 24, x - 3, y - 3); while(1) { io_hlt(); } } void init_palete() { unsigned char table_rgb[COLORN * 3] = { 0x00, 0x00, 0x00, // 0: black 0xff, 0x00, 0x00, // 1: red 0x00, 0xff, 0x00, // 2: lime 0xff, 0xff, 0x00, // 3: yellow 0x00, 0x00, 0xff, // 4: blue 0xff, 0x00, 0xff, // 5: purple 0x00, 0xff, 0xff, // 6: cyan 0xff, 0xff, 0xff, // 7: white 0xc6, 0xc6, 0xc6, // 8: gray 0x84, 0x00, 0x00, // 9: dark red 0x00, 0x84, 0x00, // 10: green 0x84, 0x84, 0x00, // 11: dark yellow 0x00, 0x00, 0x84, // 12: dark blue 0x84, 0x00, 0x84, // 13: dark purple 0x00, 0x84, 0x84, // 14: dark cyan 0x84, 0x84, 0x84 // 15: dark gray }; set_palete(0, 15, table_rgb); } void set_palete(int start, int end, unsigned char *rgb) { int i, eflags; eflags = io_load_eflags(); io_cli(); io_out8(0x03c8, start); for( i = start; i <= end; i++ ) { io_out8(0x03c9, rgb[0] / 4); io_out8(0x03c9, rgb[1] / 4); io_out8(0x03c9, rgb[2] / 4); rgb += 3; } io_store_eflags(eflags); } void boxfill(unsigned char *vram, int width, unsigned char c, int x0, int y0, int x1, int y1) { int x, y; for( y = y0; y <= y1; y++ ) { for( x = x0; x <= x1; x++ ) vram[y * width + x] = c; } }boot.cです。bootpack.cから名前を変更しました。
COMMENT