OSDN Git Service

SimpleHTMLEditorを追加。
[chnosproject/CHNOSProject.git] / CHNOSProject / chnos / tolset_chn_000 / chnos_010 / chnos / display.c
diff --git a/CHNOSProject/chnos/tolset_chn_000/chnos_010/chnos/display.c b/CHNOSProject/chnos/tolset_chn_000/chnos_010/chnos/display.c
deleted file mode 100644 (file)
index 0af1837..0000000
+++ /dev/null
@@ -1,284 +0,0 @@
-\r
-#include "core.h"\r
-\r
-//VBE\82ª\8eg\82¦\82é\82Ì\82Í\81Actrl->display_mode == DISPLAYMODE_VBE_LINEAR\82Ì\8e\9e\82¾\82¯\81B\r
-\r
-#define SIGNAL_BIOS_OPERATION_END      0xff\r
-\r
-IO_DisplayControl *Initialize_Display(void)\r
-{\r
-       //\8dÅ\8f\89\82É\8c»\8dÝ\82Ì\89æ\96Ê\83\82\81[\83h\82ðVGA320*200-8bit\82É\90Ý\92è\82·\82é\81B(BIOS)\r
-\r
-       IO_CallBIOSControl *callbiosctrl;\r
-       INFO_VBE_BIOS *info_vbe_bios;\r
-       uint data;\r
-       IO_DisplayControl *ctrl;\r
-       uint i;\r
-       INFO_VBE_VideoMode *info_vbe_vmode;\r
-\r
-       ctrl = (IO_DisplayControl *)System_Memory_Allocate(sizeof(IO_DisplayControl));\r
-\r
-       ctrl->bios_signal = System_FIFO32_Initialize(64);\r
-\r
-       callbiosctrl = System_CallBIOS_Get_Controller();\r
-       callbiosctrl->CallBIOS_Task->tss->eax = 0x0013;\r
-       System_CallBIOS_Execute(0x10, ctrl->bios_signal, SIGNAL_BIOS_OPERATION_END);\r
-\r
-       for(;;){\r
-               if(FIFO32_Status(ctrl->bios_signal) == 0){\r
-\r
-               } else{\r
-                       data = FIFO32_Get(ctrl->bios_signal);\r
-                       if(data == SIGNAL_BIOS_OPERATION_END || data == SIGNAL_BIOS_OPERATION_END + 1){\r
-                               break;\r
-                       }\r
-               }\r
-       }\r
-\r
-       ctrl->vmode = 0x0000;\r
-       ctrl->vmode_index = 0;\r
-       ctrl->bpp = 8;\r
-       ctrl->xsize = VGA08_VRAM_XSIZE;\r
-       ctrl->ysize = VGA08_VRAM_YSIZE;\r
-       ctrl->vram = VGA_VRAM_ADR;\r
-\r
-       Drawing08_Initialize_Palette();\r
-       Initialize_Drawing();\r
-       Error_Set_Enable_Display_TextMode(False);\r
-       Error_Set_Enable_Display_GraphicMode(True, ctrl->vram, ctrl->xsize, ctrl->ysize >> 4);\r
-       ctrl->vramsheet = Sheet_Initialize();\r
-       Sheet_SetBuffer(ctrl->vramsheet, ctrl->vram, ctrl->xsize, ctrl->ysize, ctrl->bpp);\r
-\r
-       //\8e\9f\82É\81AVBE\82ÌBIOS\8fî\95ñ\82ð\93¾\82é\81B\r
-\r
-       callbiosctrl->CallBIOS_Task->tss->eax = 0x4f00;\r
-       callbiosctrl->CallBIOS_Task->tss->es = 0x0000;\r
-       callbiosctrl->CallBIOS_Task->tss->edi = 0x0e00;\r
-       System_CallBIOS_Execute(0x10, ctrl->bios_signal, SIGNAL_BIOS_OPERATION_END);\r
-\r
-       for(;;){\r
-               if(FIFO32_Status(ctrl->bios_signal) == 0){\r
-\r
-               } else{\r
-                       data = FIFO32_Get(ctrl->bios_signal);\r
-                       if(data == SIGNAL_BIOS_OPERATION_END || data == SIGNAL_BIOS_OPERATION_END + 1){\r
-                               break;\r
-                       }\r
-               }\r
-       }\r
-\r
-       info_vbe_bios = VBE_REALMODE_RETVALUE_ADDRESS;\r
-\r
-       if(data == SIGNAL_BIOS_OPERATION_END && (callbiosctrl->retvalue.eax & 0x000000ff) == 0x4f && (callbiosctrl->retvalue.eax & 0x0000ff00) == 0x00){\r
-               ctrl->VBE.version_minor = info_vbe_bios->ver_minor;\r
-               ctrl->VBE.version_major = info_vbe_bios->ver_major;\r
-               ctrl->VBE.vram_supported_size_kb = info_vbe_bios->vram_supported_size_kb;\r
-               ctrl->VBE.flags = (info_vbe_bios->flags[1] << 8) | info_vbe_bios->flags[0];\r
-               ctrl->VBE.oem_string = (uchar *)(info_vbe_bios->oem_string_segment << 4 | info_vbe_bios->oem_string_offset);\r
-               ctrl->VBE.vmode_args = (ushort *)(info_vbe_bios->vmode_args_segment << 4 | info_vbe_bios->vmode_args_offset);\r
-               if(ctrl->VBE.version_major >= 0x02){\r
-                       ctrl->display_mode = DISPLAYMODE_VBE_LINEAR;\r
-               } else{\r
-                       ctrl->display_mode = DISPLAYMODE_VBE_WINDOW;\r
-               }\r
-               #ifdef CHNOSPROJECT_DEBUG_DISPLAY\r
-                       debug("Display:VBE is Enbaled(Version %d.%d).\n", ctrl->VBE.version_major, ctrl->VBE.version_minor);\r
-                       debug("Display:OEM:[%s]\n", ctrl->VBE.oem_string);\r
-               #endif\r
-       } else{\r
-               ctrl->display_mode = DISPLAYMODE_BIOS;\r
-       }\r
-\r
-       if(ctrl->display_mode == DISPLAYMODE_VBE_LINEAR){\r
-               #ifdef CHNOSPROJECT_DEBUG_DISPLAY\r
-                       debug("Display:Getting Video Modes...\n");\r
-               #endif\r
-               for(i = 0; ctrl->VBE.vmode_args[i] != 0xffff; i++){\r
-\r
-               }\r
-               ctrl->VBE.list_vmode_tags = i;\r
-               ctrl->VBE.list_vmode = (INFO_VBE_VideoModeTag *)System_Memory_Allocate(sizeof(INFO_VBE_VideoModeTag) * ctrl->VBE.list_vmode_tags);\r
-               info_vbe_vmode = VBE_REALMODE_RETVALUE_ADDRESS;\r
-               #ifdef CHNOSPROJECT_DEBUG_DISPLAY\r
-                       debug("Display:VBE has %d Video Modes.\n", ctrl->VBE.list_vmode_tags);\r
-               #endif\r
-               for(i = 0; i < ctrl->VBE.list_vmode_tags; i++){\r
-                       callbiosctrl->CallBIOS_Task->tss->eax = 0x4f01;\r
-                       callbiosctrl->CallBIOS_Task->tss->es = 0x0000;\r
-                       callbiosctrl->CallBIOS_Task->tss->edi = 0x0e00;\r
-                       callbiosctrl->CallBIOS_Task->tss->ecx = ctrl->VBE.vmode_args[i];\r
-                       System_CallBIOS_Execute(0x10, ctrl->bios_signal, SIGNAL_BIOS_OPERATION_END);\r
-\r
-                       for(;;){\r
-                               if(FIFO32_Status(ctrl->bios_signal) == 0){\r
-\r
-                               } else{\r
-                                       data = FIFO32_Get(ctrl->bios_signal);\r
-                                       if(data == SIGNAL_BIOS_OPERATION_END || data == SIGNAL_BIOS_OPERATION_END + 1){\r
-                                               break;\r
-                                       }\r
-                               }\r
-                       }\r
-\r
-                       if(data == SIGNAL_BIOS_OPERATION_END && (callbiosctrl->retvalue.eax & 0x000000ff) == 0x4f && (callbiosctrl->retvalue.eax & 0x0000ff00) == 0x00){\r
-                               ctrl->VBE.list_vmode[i].mode_number = ctrl->VBE.vmode_args[i];\r
-                               ctrl->VBE.list_vmode[i].xsize = info_vbe_vmode->XResolution;\r
-                               ctrl->VBE.list_vmode[i].ysize = info_vbe_vmode->YResolution;\r
-                               ctrl->VBE.list_vmode[i].bpp = info_vbe_vmode->BitsPerPixel;\r
-                               ctrl->VBE.list_vmode[i].memory_model = info_vbe_vmode->MemoryModel;\r
-                               ctrl->VBE.list_vmode[i].attribute = info_vbe_vmode->ModeAttributes;\r
-                               ctrl->VBE.list_vmode[i].vram = info_vbe_vmode->PhysBasePtr;\r
-                               #ifdef CHNOSPROJECT_DEBUG_DISPLAY\r
-                                       debug("Display:%d:0x%X (%dx%d-%dbit) [0x%X]\nDisplay:", i, ctrl->VBE.list_vmode[i].mode_number, ctrl->VBE.list_vmode[i].xsize, ctrl->VBE.list_vmode[i].ysize, ctrl->VBE.list_vmode[i].bpp, ctrl->VBE.list_vmode[i].vram);\r
-                                       if(ctrl->VBE.list_vmode[i].memory_model == 0x04){\r
-                                               debug(" 256-palette");\r
-                                       }\r
-                                       if(ctrl->VBE.list_vmode[i].memory_model == 0x06){\r
-                                               debug(" direct-color");\r
-                                       }\r
-                                       if((ctrl->VBE.list_vmode[i].attribute & (1 << 3)) != 0){\r
-                                               debug(" color");\r
-                                       } else{\r
-                                               debug(" monochrome");\r
-                                       }\r
-                                       if((ctrl->VBE.list_vmode[i].attribute & (1 << 4)) != 0){\r
-                                               debug(" graphic");\r
-                                       } else{\r
-                                               debug(" text");\r
-                                       }\r
-                                       if((ctrl->VBE.list_vmode[i].attribute & (1 << 7)) != 0){\r
-                                               debug(" linear-access-supported");\r
-                                       }\r
-                                       debug("\n");\r
-                                       debug("%d:0x%X %dx%d-%dbits\n", 0, ctrl->VBE.list_vmode[0].mode_number, ctrl->VBE.list_vmode[0].xsize, ctrl->VBE.list_vmode[0].ysize, ctrl->VBE.list_vmode[0].bpp);\r
-\r
-                               #endif\r
-                       } else{\r
-                               ctrl->VBE.list_vmode[i].mode_number = ctrl->VBE.vmode_args[i];\r
-                               ctrl->VBE.list_vmode[i].vram = (void *)0x00000000;\r
-                               #ifdef CHNOSPROJECT_DEBUG_DISPLAY\r
-                                       debug("Display:%d:0x%X Function Failed.\n", i, ctrl->VBE.list_vmode[i].mode_number);\r
-                               #endif\r
-                       }\r
-               }\r
-\r
-\r
-       }\r
-\r
-       #ifdef CHNOSPROJECT_DEBUG_DISPLAY\r
-               debug("Display:Ctrl:[0x%X]\n", ctrl);\r
-               debug("Display:ctrl->VBE.list_vmode[0]:[0x%X]\n", &ctrl->VBE.list_vmode[0]);\r
-               debug("Display:ctrl->bios_signal->buf:[0x%X]\n", ctrl->bios_signal->buf);\r
-       #endif\r
-\r
-       return ctrl;\r
-}\r
-\r
-uint Display_VESA_Set_VideoMode(IO_DisplayControl *ctrl, uint index)\r
-{\r
-       //retvalue:0 = \90Ø\82è\91Ö\82¦\90¬\8c÷\r
-       //retvalue:1 = \90Ø\82è\91Ö\82¦\8e¸\94s(BIOS Call Error)\r
-       //retvalue:2 = \90Ø\82è\91Ö\82¦\8e¸\94s(VBE\96³\8cø version < 2.0)\r
-       //retvalue:3 = \90Ø\82è\91Ö\82¦\8e¸\94s(Invalid VideoMode Index)\r
-       //retvalue:4 = \90Ø\82è\91Ö\82¦\8e¸\94s(Linear Mode Not Supported)\r
-       //retvalue:5 = \90Ø\82è\91Ö\82¦\8e¸\94s(\83V\83X\83e\83\80(CHNOSProject)\8fã\82Å\96¢\91Î\89\9e\82Ì\83r\83b\83g\90\94\82Ì\82½\82ß)\r
-       //retvalue:6 = \90Ø\82è\91Ö\82¦\8e¸\94s(\83V\83X\83e\83\80(CHNOSProject)\8fã\82Å\96³\8cø\82Æ\83}\81[\83N\82³\82ê\82Ä\82¢\82é(vram == null)\82½\82ß)\r
-\r
-       IO_CallBIOSControl *callbiosctrl;\r
-       uint data;\r
-\r
-       callbiosctrl = System_CallBIOS_Get_Controller();\r
-\r
-       if(ctrl->display_mode != DISPLAYMODE_VBE_LINEAR){\r
-               #ifdef CHNOSPROJECT_DEBUG_DISPLAY\r
-                       debug("SetVideo:Error:VBE version < 2.0.\n");\r
-               #endif\r
-               return 2;\r
-       }\r
-\r
-       if(index >= ctrl->VBE.list_vmode_tags){\r
-               #ifdef CHNOSPROJECT_DEBUG_DISPLAY\r
-                       debug("SetVideo:Error:Invalid VideoMode Index.\n");\r
-               #endif\r
-               return 3;\r
-       }\r
-\r
-       if((ctrl->VBE.list_vmode[index].attribute & (1 << 7)) == 0){\r
-               #ifdef CHNOSPROJECT_DEBUG_DISPLAY\r
-                       debug("SetVideo:Error:This VideoMode is Not Supported Linear Mode.\n");\r
-               #endif\r
-               return 4;\r
-       }\r
-\r
-       if(!(ctrl->VBE.list_vmode[index].bpp == 8 || ctrl->VBE.list_vmode[index].bpp == 16 || ctrl->VBE.list_vmode[index].bpp == 32)){\r
-               #ifdef CHNOSPROJECT_DEBUG_DISPLAY\r
-                       debug("SetVideo:Error:This VideoMode's BitsPerPixel is Not Supported in CHNOSProject.\n");\r
-               #endif\r
-               return 5;\r
-       }\r
-\r
-       if(ctrl->VBE.list_vmode[index].vram == 0x00000000){\r
-               #ifdef CHNOSPROJECT_DEBUG_DISPLAY\r
-                       debug("SetVideo:Error:This VideoMode has been Marked Invalid(vram==null).\n");\r
-               #endif\r
-               return 6;\r
-       }\r
-\r
-       callbiosctrl->CallBIOS_Task->tss->eax = 0x4f02;\r
-       callbiosctrl->CallBIOS_Task->tss->ebx = ctrl->VBE.list_vmode[index].mode_number | VESA_LINEAR_ACCESS;\r
-       System_CallBIOS_Execute(0x10, ctrl->bios_signal, SIGNAL_BIOS_OPERATION_END);\r
-\r
-       for(;;){\r
-               if(FIFO32_Status(ctrl->bios_signal) == 0){\r
-\r
-               } else{\r
-                       data = FIFO32_Get(ctrl->bios_signal);\r
-                       if(data == SIGNAL_BIOS_OPERATION_END || data == SIGNAL_BIOS_OPERATION_END + 1){\r
-                               break;\r
-                       }\r
-               }\r
-       }\r
-\r
-       if(data == SIGNAL_BIOS_OPERATION_END && (callbiosctrl->retvalue.eax & 0x000000ff) == 0x4f && (callbiosctrl->retvalue.eax & 0x0000ff00) == 0x00){\r
-               ctrl->vmode = ctrl->VBE.list_vmode[index].mode_number;\r
-               ctrl->vmode_index = index;\r
-               ctrl->bpp = ctrl->VBE.list_vmode[index].bpp;\r
-               ctrl->xsize = ctrl->VBE.list_vmode[index].xsize;\r
-               ctrl->ysize = ctrl->VBE.list_vmode[index].ysize;\r
-               ctrl->vram = ctrl->VBE.list_vmode[index].vram;\r
-               #ifdef CHNOSPROJECT_DEBUG_DISPLAY\r
-                       debug("Display:VBE VideoMode Changed.\nDisplay:%d:0x%X (%dx%d-%dbit) [0x%X]\nDisplay:", index, ctrl->VBE.list_vmode[index].mode_number, ctrl->VBE.list_vmode[index].xsize, ctrl->VBE.list_vmode[index].ysize, ctrl->VBE.list_vmode[index].bpp, ctrl->VBE.list_vmode[index].vram);\r
-                       if(ctrl->VBE.list_vmode[index].memory_model == 0x04){\r
-                               debug(" 256-palette");\r
-                       }\r
-                       if(ctrl->VBE.list_vmode[index].memory_model == 0x06){\r
-                               debug(" direct-color");\r
-                       }\r
-                       if((ctrl->VBE.list_vmode[index].attribute & (1 << 3)) != 0){\r
-                               debug(" color");\r
-                       } else{\r
-                               debug(" monochrome");\r
-                       }\r
-                       if((ctrl->VBE.list_vmode[index].attribute & (1 << 4)) != 0){\r
-                               debug(" graphic");\r
-                       } else{\r
-                               debug(" text");\r
-                       }\r
-                       if((ctrl->VBE.list_vmode[index].attribute & (1 << 7)) != 0){\r
-                               debug(" linear-access-supported");\r
-                       }\r
-                       debug("\n");\r
-               #endif\r
-               Initialize_Drawing();\r
-               Error_Set_Enable_Display_GraphicMode(True, ctrl->vram, ctrl->xsize, ctrl->ysize >> 4);\r
-               Sheet_SetBuffer(ctrl->vramsheet, ctrl->vram, ctrl->xsize, ctrl->ysize, ctrl->bpp);\r
-               System_TaskControlMessage_Send_AllTask(TCM_OFFSET + TCM_INFO_DISPLAY_UPDATE_RESOLUTION);\r
-               return 0;\r
-       }\r
-\r
-       #ifdef CHNOSPROJECT_DEBUG_DISPLAY\r
-               debug("Display:%d:0x%X Function Failed.\n", index, ctrl->VBE.list_vmode[index].mode_number);\r
-       #endif\r
-\r
-       return 1;\r
-}\r