+++ /dev/null
-\r
-#include "core.h"\r
-\r
-void init_system(void)\r
-{\r
- DATA_VESAInfo *vesa = (DATA_VESAInfo *) ADR_VESAINFO;\r
- DATA_BootInfo *boot = (DATA_BootInfo *) ADR_BOOTINFO;\r
- uint i;\r
-\r
- i = memtest(0x00400000, 0xbfffffff);\r
- sys_main_str_buf = (struct SYSTEM *)(i - sizeof(struct SYSTEM));\r
-\r
- system.io.mem.paging.dir = (uint *)0x00400000;\r
- (uint)system.io.mem.paging.table = 0x00400000 + (1024 * 4);\r
-\r
- system.io.mem.segment.gdt = (IO_SegmentDescriptor *)ADR_GDT;\r
- system.io.interrupt.idt = (IO_GateDescriptor *)ADR_IDT;\r
-\r
- system.io.mem.total = i;\r
- system.data.info.vesa = *vesa;\r
- system.data.info.boot = *boot;\r
-\r
- system.ui.console.org_xsize = (system.data.info.boot.scrnx >> 1) & 0xfffffff0;\r
- system.ui.console.org_ysize = (system.data.info.boot.scrny >> 1) & 0xffffffe0;\r
- system.ui.console.org_xchars = system.ui.console.org_xsize >> 3;\r
- system.ui.console.org_ychars = system.ui.console.org_ysize >> 4;\r
-\r
- system.io.file.list = (IO_FileInfo *)(ADR_DISKIMG + 0x00002600);\r
-\r
- init_gdtidt();\r
- init_pic();\r
- init_serial();\r
- init_paging();\r
- sys_memman_init();\r
- sys_memman_free((void *)(0x00400000 + (1024 * 4) + (1024 * 1024 * 4)), system.io.mem.total - sizeof(struct SYSTEM) - 0x00400000) - (1024 * 4) - (1024 * 1024 * 4);\r
- init_sheets(system.data.info.vesa.PhysBasePtr, system.data.info.boot.scrnx, system.data.info.boot.scrny, system.data.info.vesa.BitsPerPixel);\r
-\r
- system.ui.draw.sht.core = sheet_alloc();\r
- system.ui.draw.sht.desktop = sheet_alloc();\r
- system.ui.draw.sht.taskbar = sheet_alloc();\r
- system.ui.draw.sht.mouse = sheet_alloc();\r
-\r
- system.ui.draw.sht.core_buf = sys_memman_alloc(system.data.info.boot.scrnx * system.data.info.boot.scrny * (system.data.info.vesa.BitsPerPixel >> 3));\r
- system.ui.draw.sht.desktop_buf = sys_memman_alloc(system.data.info.boot.scrnx * system.data.info.boot.scrny * (system.data.info.vesa.BitsPerPixel >> 3));\r
- system.ui.draw.sht.taskbar_buf = sys_memman_alloc(system.data.info.boot.scrnx * TASKBAR_HEIGHT * (system.data.info.vesa.BitsPerPixel >> 3));\r
- system.ui.draw.sht.mouse_buf = sys_memman_alloc(24 * 24 * (system.data.info.vesa.BitsPerPixel >> 3));\r
-\r
- sheet_setbuf(system.ui.draw.sht.desktop, system.ui.draw.sht.desktop_buf, system.data.info.boot.scrnx, system.data.info.boot.scrny, INV_COL32);\r
- sheet_setbuf(system.ui.draw.sht.mouse, system.ui.draw.sht.mouse_buf, 24, 24, INV_COL32);\r
- sheet_setbuf(system.ui.draw.sht.taskbar, system.ui.draw.sht.taskbar_buf, system.data.info.boot.scrnx, TASKBAR_HEIGHT, INV_COL32);\r
- sheet_setbuf(system.ui.draw.sht.core, system.ui.draw.sht.core_buf, system.data.info.boot.scrnx, system.data.info.boot.scrny, INV_COL32);\r
-\r
- sheet_slide(system.ui.draw.sht.desktop, 0, 0);\r
- sheet_updown(system.ui.draw.sht.desktop, -1);\r
- sheet_slide(system.ui.draw.sht.taskbar, 0, system.data.info.boot.scrny - TASKBAR_HEIGHT);\r
- sheet_updown(system.ui.draw.sht.taskbar, -1);\r
- sheet_slide(system.ui.draw.sht.mouse, system.data.info.boot.scrnx >> 1, system.data.info.boot.scrny >> 1);\r
- sheet_updown(system.ui.draw.sht.mouse, -1);\r
-\r
- sheet_slide(system.ui.draw.sht.core, 0, 0);\r
- boxfill_i(system.ui.draw.sht.core_buf, system.data.info.boot.scrnx, 0x000000, 0, 0, system.data.info.boot.scrnx, system.data.info.boot.scrny);\r
- draw_chnos_logo(system.ui.draw.sht.core_buf, system.data.info.boot.scrnx, system.data.info.boot.scrnx >> 4, system.data.info.boot.scrnx >> 1, (system.data.info.boot.scrny >> 1) - (system.data.info.boot.scrny / 10));\r
- sheet_updown(system.ui.draw.sht.core, 0);\r
-\r
- fifo32_init(&system.data.fifo.main, SYS_FIFOSIZE, system.data.fifo.main_buf, 0);\r
- fifo32_init(&system.data.fifo.keycmd, KEYCMD_FIFOSIZE, system.data.fifo.keycmd_buf, 0);\r
- fifo32_init(&system.data.fifo.keyctrl, KEYCTRL_FIFOSIZE, system.data.fifo.keyctrl_buf, 0);\r
- fifo32_init(&system.data.fifo.mousectrl, MOUSECTRL_FIFOSIZE, system.data.fifo.mousectrl_buf, 0);\r
- init_pit();\r
- task_init();\r
-\r
- system.ui.task.keyctrl = task_alloc();\r
- system.ui.task.keyctrl->tss.esp = (int)sys_memman_alloc(64 * 1024) + 64 * 1024;\r
- system.ui.task.keyctrl->tss.eip = (int)&KeyBoardControlTask;\r
- system.ui.task.keyctrl->tss.es = 1 * 8;\r
- system.ui.task.keyctrl->tss.cs = 2 * 8;\r
- system.ui.task.keyctrl->tss.ss = 1 * 8;\r
- system.ui.task.keyctrl->tss.ds = 1 * 8;\r
- system.ui.task.keyctrl->tss.fs = 1 * 8;\r
- system.ui.task.keyctrl->tss.gs = 1 * 8;\r
-\r
- system.ui.task.mousectrl = task_alloc();\r
- system.ui.task.mousectrl->tss.esp = (int)sys_memman_alloc(64 * 1024) + 64 * 1024;\r
- system.ui.task.mousectrl->tss.eip = (int)&MouseControlTask;\r
- system.ui.task.mousectrl->tss.es = 1 * 8;\r
- system.ui.task.mousectrl->tss.cs = 2 * 8;\r
- system.ui.task.mousectrl->tss.ss = 1 * 8;\r
- system.ui.task.mousectrl->tss.ds = 1 * 8;\r
- system.ui.task.mousectrl->tss.fs = 1 * 8;\r
- system.ui.task.mousectrl->tss.gs = 1 * 8;\r
-\r
- system.data.fifo.main.task = system.ui.task.main;\r
- system.data.fifo.keycmd.task = system.ui.task.keyctrl;\r
- system.data.fifo.keyctrl.task = system.ui.task.keyctrl;\r
- system.data.fifo.mousectrl.task = system.ui.task.mousectrl;\r
-\r
- task_run(system.ui.task.main, 1, 0);\r
- task_run(system.ui.task.keyctrl, 1, 1);\r
- task_run(system.ui.task.mousectrl, 1, 1);\r
-\r
- init_keyboard(0x100);\r
- init_mouse(0x100);\r
- init_windows();\r
-\r
- fdc_motor_off(4);\r
-\r
- system.io.file.fat = sys_memman_alloc(2 * 2880);\r
- decode_fat(system.io.file.fat, false);\r
-\r
- return;\r
-}\r