BIOSTotalMem function rewritten

FPS changed from 60 to 30 (temporarily)
slight font change
SYS_VBE_FINAL -> SYS_VBE_FINAL_MODE_NUM
This commit is contained in:
xmm15 2020-02-21 01:05:20 -06:00
parent 07084cf26c
commit 8723b39969
10 changed files with 188 additions and 185 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -92,7 +92,7 @@ public U64 sys_font_std[256] = {
0x003F01020C10203F,//Z
0x003E06060606063E,//[
0x00406030180C0603,//\
0x003E30303030303E,//]
0x001F18181818181F,//]
0x0000000022361C08,//^
0xFFFF000000000000,//_
0x000000000030180C,//`
@ -121,7 +121,7 @@ public U64 sys_font_std[256] = {
0x0036494949410000,//w
0x0021120C12210000,//x
0x1E203E2121210000,//y
0x007E0418207E0000,//z
0x003F020C103F0000,//z
0x003018180E181830,//{
0x0018181818181818,//|
0x000C18187018180C,//}
@ -255,4 +255,4 @@ public U64 sys_font_std[256] = {
0x0000003E061C301E,//ý
0x00003C3C3C3C0000,//þ
0xFFFFFFFFFFFFFFFF,//ÿ
};
};

View file

@ -1,63 +1,61 @@
asm {/* See $LK,"::/Doc/Boot.DD"$.
ZenithOS starts in real, calls some BIOS
routines, switches to 32 bit, and 64 bit mode
and continues in $LK,"CosmiC",A="FI:::/Doc/CosmiC.DD"$ at $LK,"KMain",A="MN:KMain"$().
ZenithOS starts in real, calls some BIOS routines, switches to 32 bit, and 64 bit mode and continues in $LK,"CosmiC",A="FI:::/Doc/CosmiC.DD"$ at $LK,"KMain",A="MN:KMain"$().
The boot loader jumps here in real-mode (16-bit).
It actually jumps to the $LK,"CBinFile",A="MN:CBinFile"$ header which is
placed just before this by $LK,"the compiler",A="FF:::/Compiler/CMain.CC,16 ALIGN"$.
The header begins with a short jmp to
the start of this file's code which begins
with the following small jump past some data.
It actually jumps to the $LK,"CBinFile",A="MN:CBinFile"$ header which is placed just before this by $LK,"the compiler",A="FF:::/Compiler/CMain.CC,16 ALIGN"$.
The header begins with a short jmp to the start of this file's code which begins with the following small jump past some data.
This file is first in the Kernel image
because it is #included first.$LK,"Kernel.PRJ",A="FF:::/Kernel/Kernel.PRJ,KStart16:1"$
This file is first in the Kernel image because it is #included first.$LK,"Kernel.PRJ",A="FF:::/Kernel/Kernel.PRJ,KStart16:1"$
*/
USE16
SYS_KERNEL:: //This must match $LK,"CKernel",A="MN:CKernel"$.
JMP I16 CORE0_16BIT_INIT
JMP I16 CORE0_16BIT_INIT
//************************************
// ASM Global vars required for 16-bit start-up
ALIGN 4,OC_NOP
SYS_BOOT_SRC:: DU32 BOOT_SRC_NULL;
SYS_BOOT_BLK:: DU32 0;
SYS_BOOT_PATCH_TABLE_BASE:: DU32 0;
SYS_RUN_LEVEL:: DU32 0;
#exe {StreamPrint("SYS_COMPILE_TIME:: DU64 0x%X;",Now);} //See $LK,"BootDVDProbe",A="MN:BootDVDProbe"$
#assert SYS_COMPILE_TIME+sizeof(CDate)+sizeof(CBinFile)<DVD_BLK_SIZE
ALIGN 4,OC_NOP
SYS_BOOT_SRC:: DU32 BOOT_SRC_NULL;
SYS_BOOT_BLK:: DU32 0;
SYS_BOOT_PATCH_TABLE_BASE:: DU32 0;
SYS_RUN_LEVEL:: DU32 0;
#exe
{StreamPrint(
"SYS_COMPILE_TIME:: DU64 0x%X;", Now);//See $LK,"BootDVDProbe",A="MN:BootDVDProbe"$
};
MEM_BOOT_BASE:: DU32 0; //Offset from start used by reboot
MEM_E801:: DU16 0,0;
MEM_E820:: DU8 MEM_E820_ENTRIES_NUM*sizeof(CMemE820) DUP (0);
MEM_PHYSICAL_SPACE:: DU64 0;
SYS_GDT_PTR:: DU16 sizeof(CGDT)-1;
DU64 0;
SYS_PCI_BUSES:: DU16 0;
#assert SYS_COMPILE_TIME + sizeof(CDate) + sizeof(CBinFile) < DVD_BLK_SIZE
ALIGN 16,OC_NOP
MEM_BOOT_BASE:: DU32 0; //Offset from start used by reboot
MEM_E801:: DU16 0, 0;
MEM_E820:: DU8 MEM_E820_ENTRIES_NUM*sizeof(CMemE820) DUP (0);
MEM_PHYSICAL_SPACE:: DU64 0;
SYS_GDT_PTR:: DU16 sizeof(CGDT)-1;
DU64 0;
SYS_PCI_BUSES:: DU16 0;
ALIGN 16,OC_NOP
SYS_GDT:: //See $LK,"CGDT",A="MN:CGDT"$
GDT_NULL: DU64 0,0;
GDT_BOOT_DS: DU64 0x00CF92000000FFFF,0; //Gets patched.
GDT_BOOT_CS: DU64 0x00CF9A000000FFFF,0; //Gets patched.
GDT_CS32: DU64 0x00CF9A000000FFFF,0;
GDT_CS64: DU64 0x00209A0000000000,0; //The $LK,"Charter",A="FI:::/Doc/Charter.DD"$ says just ring0.
GDT_CS64_RING3: DU64 0x0020FA0000000000,0; //$LK,"Ring3",A="FI:::/Demo/Lectures/Ring3.CC"$, so you can play with.
GDT_DS: DU64 0x00CF92000000FFFF,0;
GDT_DS_RING3: DU64 0x00CFF2000000FFFF,0;
GDT_TR: DU8 MP_PROCESSORS_NUM*16 DUP(0);
GDT_TR_RING3: DU8 MP_PROCESSORS_NUM*16 DUP(0);
#assert $$-SYS_GDT==sizeof(CGDT)
GDT_NULL: DU64 0,0;
GDT_BOOT_DS: DU64 0x00CF92000000FFFF,0; //Gets patched.
GDT_BOOT_CS: DU64 0x00CF9A000000FFFF,0; //Gets patched.
GDT_CS32: DU64 0x00CF9A000000FFFF,0;
GDT_CS64: DU64 0x00209A0000000000,0; //The $LK,"Charter",A="FI:::/Doc/Charter.DD"$ says just ring0.
GDT_CS64_RING3: DU64 0x0020FA0000000000,0; //$LK,"Ring3",A="FI:::/Demo/Lectures/Ring3.CC"$, so you can play with.
GDT_DS: DU64 0x00CF92000000FFFF,0;
GDT_DS_RING3: DU64 0x00CFF2000000FFFF,0;
GDT_TR: DU8 MP_PROCESSORS_NUM*16 DUP(0);
GDT_TR_RING3: DU8 MP_PROCESSORS_NUM*16 DUP(0);
#assert $$ - SYS_GDT == sizeof(CGDT)
SYS_VBE_INFO:: DU8 sizeof(CVBEInfo) DUP(0);
SYS_VBE_MODES:: DU8 sizeof(CVBEModeShort) * VBE_MODES_NUM DUP(0);
SYS_VBE_FINAL_MODE:: DU8 sizeof(CVBEMode) DUP(0);
SYS_VBE_FINAL:: DU16 0; //mode number of final mode set
#assert $$-SYS_KERNEL==sizeof(CKernel)-sizeof(CBinFile)
SYS_VBE_INFO:: DU8 sizeof(CVBEInfo) DUP(0);
SYS_VBE_MODES:: DU8 sizeof(CVBEModeShort) * VBE_MODES_NUM DUP(0);
SYS_VBE_FINAL_MODE:: DU8 sizeof(CVBEMode) DUP(0);
SYS_VBE_FINAL_MODE_NUM::DU16 0; //mode number of final mode set
#assert $$ - SYS_KERNEL == sizeof(CKernel) - sizeof(CBinFile)
TEMP_VBE_MODE: DU8 sizeof(CVBEMode) DUP(0);
MAX_VBE_MODE: DU8 sizeof(CVBEModeShort) DUP(0);
MAX_SCREEN_HEIGHT: DU16 0;
TEMP_VBE_MODE: DU8 sizeof(CVBEMode) DUP(0);
MAX_VBE_MODE: DU8 sizeof(CVBEModeShort) DUP(0);
MAX_SCREEN_HEIGHT: DU16 0;
#exe
{StreamPrint(
@ -68,42 +66,42 @@ kernel_config->screen_width, kernel_config->screen_height);
//************************************
CORE0_16BIT_INIT::
//EAX is $LK,"SYS_BOOT_SRC",A="FF:::/Kernel/KStart16.CC,[SYS_BOOT_SRC]"$. (Val passed from boot blk, $LK,"BootHD",A="FF:::/Zenith/Boot/BootHD.CC,BOOT_SRC_HARDDRIVE"$, $LK,"BootDVD",A="FF:::/Zenith/Boot/BootDVD.CC,BOOT_SRC_DVD"$, & $LK,"BootRAM",A="FF:::/Zenith/Boot/BootRAM.CC,BOOT_SRC_RAM"$.)
MOV ECX,EAX
MOV AX, (BOOT_RAM_LIMIT-BOOT_STACK_SIZE) / 16
MOV SS, AX
MOV SP, BOOT_STACK_SIZE
PUSH ECX //Will be $LK,"SYS_BOOT_SRC",A="FF:::/Kernel/KStart16.CC,[SYS_BOOT_SRC]"$. See $LK,"BootHD",A="FF:::/Zenith/Boot/BootHD.CC,BOOT_SRC_HARDDRIVE"$, $LK,"BootDVD",A="FF:::/Zenith/Boot/BootDVD.CC,BOOT_SRC_DVD"$ & $LK,"BootRAM",A="FF:::/Zenith/Boot/BootRAM.CC,BOOT_SRC_RAM"$.
PUSH EBX
CALL U16 GET_IP
GET_IP: POP BX
SUB BX,GET_IP
SHR BX,4
MOV AX,CS
ADD AX,BX
PUSH AX
PUSH U16 @@04
MOV ECX, EAX
MOV AX, (BOOT_RAM_LIMIT-BOOT_STACK_SIZE) / 16
MOV SS, AX
MOV SP, BOOT_STACK_SIZE
PUSH ECX //Will be $LK,"SYS_BOOT_SRC",A="FF:::/Kernel/KStart16.CC,[SYS_BOOT_SRC]"$. See $LK,"BootHD",A="FF:::/Zenith/Boot/BootHD.CC,BOOT_SRC_HARDDRIVE"$, $LK,"BootDVD",A="FF:::/Zenith/Boot/BootDVD.CC,BOOT_SRC_DVD"$ & $LK,"BootRAM",A="FF:::/Zenith/Boot/BootRAM.CC,BOOT_SRC_RAM"$.
PUSH EBX
CALL U16 GET_IP
GET_IP: POP BX
SUB BX, GET_IP
SHR BX, 4
MOV AX, CS
ADD AX, BX
PUSH AX
PUSH U16 @@04
RETF
@@04: STI
MOV AX,CS
MOV DS,AX
MOV U32 [SYS_RUN_LEVEL],RLF_16BIT
MOV AX, CS
MOV DS, AX
MOV U32 [SYS_RUN_LEVEL],RLF_16BIT
//Our variables are on the data segment, but VBE functions require ES.
//moving DS into ES, while preserving ES
PUSH ES
PUSH DS
POP ES
PUSH ES
PUSH DS
POP ES
//Get VBE implementation information
MOV AX, 0x4F00
MOV DI, SYS_VBE_INFO
MOV CVBEInfo.signature[DI], 'VBE2' //set to 'VBE2' to use VBE 2.0 functionality
INT 0x10
POP ES
CMP AX, 0x004F
JE @@05
JMP $$ //Freeze system if VBE not supported
MOV AX, 0x4F00
MOV DI, SYS_VBE_INFO
MOV CVBEInfo.signature[DI], 'VBE2' //set to 'VBE2' to use VBE 2.0 functionality
INT 0x10
POP ES
CMP AX, 0x004F
JE @@05
JMP $$ //Freeze system if VBE not supported
@@05:
@ -115,101 +113,103 @@ GET_IP: POP BX
SI <- Offset for video modes list
*/
//Obtain segment:offset of list of potential video modes
MOV AX, SYS_VBE_INFO
MOV SI, CVBEInfo.video_modes[AX]
MOV GS, CVBEInfo.video_modes+2[AX]
MOV DI, TEMP_VBE_MODE
MOV DX, SYS_VBE_MODES
MOV AX, SYS_VBE_INFO
MOV SI, CVBEInfo.video_modes[AX]
MOV GS, CVBEInfo.video_modes+2[AX]
MOV DI, TEMP_VBE_MODE
MOV DX, SYS_VBE_MODES
@@06: //Loop through all the mode numbers
MOV AX, GS:[SI]
CMP AX, 0xFFFF //FFFF signifies the end of the list
JE @@08
MOV AX, GS:[SI]
CMP AX, 0xFFFF //FFFF signifies the end of the list
JE @@08
ADD SI, 2 //Increment pointer to read next U16 mode
ADD SI, 2 //Increment pointer to read next U16 mode
MOV CX, AX
BTS CX, 14 //Set linear framebuffer bit in the mode number we are about to pass to the BIOS below
PUSH ES
PUSH DS
POP ES
MOV CX, AX
BTS CX, 14 //Set linear framebuffer bit in the mode number we are about to pass to the BIOS below
PUSH ES
PUSH DS
POP ES
//Get mode information for mode number
MOV AX, 0x4F01
INT 0x10
POP ES
CMP AX, 0x004F
JNE @@06 //if call to get mode information failed
MOV AX, 0x4F01
INT 0x10
POP ES
CMP AX, 0x004F
JNE @@06 //if call to get mode information failed
//filter everything but 32-bit color
MOV AL, CVBEMode.bpp[DI]
CMP AL, 32
JNE @@06
MOV AL, CVBEMode.bpp[DI]
CMP AL, 32
JNE @@06
//Check if the mode is actually supported
MOV AX, CVBEMode.attributes[DI]
AND AX, 0x91 //bit 0 = supported, bit 4 = graphics mode, bit 7 = linear framebuffer
CMP AX, 0x91
JNE @@06
MOV AX, CVBEMode.attributes[DI]
AND AX, 0x91 //bit 0 = supported, bit 4 = graphics mode, bit 7 = linear framebuffer
CMP AX, 0x91
JNE @@06
// MOV AX, CVBEMode.memory_model[DI]
// CMP AX, 4
// JNE @@06
// CMP AX, 6
// JNE @@06
//Only want memory model of packed pixel or direct color (RGB)
// MOV AX, CVBEMode.memory_model[DI]
// CMP AX, 4
// JNE @@06
// CMP AX, 6
// JNE @@06
//Copy information about this mode into an element of the mode array
MOV BX, CVBEMode.height[DI]
MOV CVBEModeShort.height[DX], BX
CMP BX, [MAX_SCREEN_HEIGHT]
JL @@07
MOV [MAX_SCREEN_HEIGHT], BX
MOV [MAX_VBE_MODE], CX
MOV BX, CVBEMode.height[DI]
MOV CVBEModeShort.height[DX], BX
CMP BX, [MAX_SCREEN_HEIGHT]
JL @@07
@@07: MOV AX, CVBEMode.width[DI]
MOV CVBEModeShort.width[DX], AX
// MOV EAX, CVBEMode.max_pixel_clock[DI]
// MOV CVBEModeShort.max_pixel_clock[DX], EAX
MOV [MAX_SCREEN_HEIGHT], BX
MOV [MAX_VBE_MODE], CX
MOV CVBEModeShort.mode_num[DX], CX
ADD DX, sizeof(CVBEModeShort) //next array element
@@07: MOV AX, CVBEMode.width[DI]
MOV CVBEModeShort.width[DX], AX
// MOV EAX, CVBEMode.max_pixel_clock[DI]
// MOV CVBEModeShort.max_pixel_clock[DX], EAX
MOV CVBEModeShort.mode_num[DX], CX
ADD DX, sizeof(CVBEModeShort) //next array element
//Check if width and height match
CMP AX, [SCREEN_WIDTH]
JNE @@06
CMP BX, [SCREEN_HEIGHT]
JNE @@06
CMP AX, [SCREEN_WIDTH]
JNE @@06
CMP BX, [SCREEN_HEIGHT]
JNE @@06
//If we've made it here we have our mode
MOV [SYS_VBE_FINAL], CX
JMP @@06
MOV [SYS_VBE_FINAL_MODE_NUM], CX
JMP @@06
@@08: //End of loop
//If there isn't a valid mode set by user through kernel config, set the mode with the biggest height.
MOV AX, [SYS_VBE_FINAL]
CMP AX, 0
JNE @@09
MOV CX, [MAX_VBE_MODE]
MOV [SYS_VBE_FINAL], CX
MOV AX, [SYS_VBE_FINAL_MODE_NUM]
CMP AX, 0
JNE @@09
MOV CX, [MAX_VBE_MODE]
MOV [SYS_VBE_FINAL_MODE_NUM], CX
@@09: PUSH ES
PUSH DS
POP ES
@@09: PUSH ES
PUSH DS
POP ES
//Get mode infomration for the mode we want
MOV DI, SYS_VBE_FINAL_MODE
MOV CX, [SYS_VBE_FINAL]
MOV AX, 0x4F01
INT 0x10
POP ES
CMP AX, 0x004F
JNE @@10 //if called failed
MOV DI, SYS_VBE_FINAL_MODE
MOV CX, [SYS_VBE_FINAL_MODE_NUM]
MOV AX, 0x4F01
INT 0x10
POP ES
CMP AX, 0x004F
JNE @@10 //if called failed
//Set the mode; call takes mode number in BX
MOV AX, 0x4F02
MOV BX, CX
INT 0x10
CMP AX, 0x004F
JNE @@10
MOV AX, 0x4F02
MOV BX, CX
INT 0x10
CMP AX, 0x004F
JNE @@10
BTS U32 [SYS_RUN_LEVEL],RLf_VESA
BTS U32 [SYS_RUN_LEVEL], RLf_VESA
@@10:
//Get mem maps.

View file

@ -288,7 +288,7 @@ $LK,"WIF_SELF_MS_WHEEL",A="FL:::/Kernel/KernelA.HH,1542"$
$LK,"PutFileLink",A="FL:::/Kernel/BlkDev/DiskDirA.CC,160",BI=55$
$LK,"BreakLock",A="FL:::/Kernel/KExcept.CC,131",BI=56$
$LK,"CORE0_32BIT_INIT",A="FL:::/Kernel/KStart32.CC,73"$
$LK,"CORE0_16BIT_INIT",A="FL:::/Kernel/KStart16.CC,70"$
$LK,"CORE0_16BIT_INIT",A="FL:::/Kernel/KStart16.CC,68"$
$LK,"CH_CTRLN",A="FL:::/Kernel/KernelA.HH,3624"$
$LK,"PCIR_REVISION_ID",A="FL:::/Kernel/KernelA.HH,2376"$
$LK,"CCF_KEEP_DOT",A="FL:::/Kernel/KernelA.HH,2264"$
@ -386,6 +386,7 @@ $LK,"CtrlAltT",A="FL:::/Kernel/KeyDev.CC,163",BI=74$
$LK,"IsSilent",A="FL:::/Kernel/KMisc.CC,220",BI=75$
$LK,"CBpt",A="FL:::/Kernel/KernelA.HH,3294"$
$LK,"CMOSR_DAY_OF_MONTH",A="FL:::/Kernel/KernelA.HH,191"$
$LK,"SYS_VBE_FINAL_MODE_NUM",A="FL:::/Kernel/KStart16.CC,53"$
$LK,"KBDC_DISABLE_MS",A="FL:::/Kernel/KernelA.HH,3136"$
$LK,"HTt_ASM_KEYWORD",A="FL:::/Kernel/KernelA.HH,782"$
$LK,"PCIWriteU32",A="FL:::/Kernel/PCIBIOS.CC,250",BI=76$
@ -440,7 +441,7 @@ $LK,"MEM_512GIG_NUM",A="FL:::/Kernel/KStart32.CC,12"$
$LK,"SCf_INS",A="FL:::/Kernel/KernelA.HH,3660"$
$LK,"LAPIC_LVT_ERR",A="FL:::/Kernel/KernelA.HH,643"$
$LK,"ServerTaskCont",A="FL:::/Kernel/KTask.CC,365",BI=89$
$LK,"Scale2Mem",A="FL:::/Kernel/Memory/MemPhysical.CC,169",BI=90$
$LK,"Scale2Mem",A="FL:::/Kernel/Memory/MemPhysical.CC,172",BI=90$
$LK,"RandU32",A="FL:::/Kernel/KMathB.CC,109",BI=91$
$LK,"RandU16",A="FL:::/Kernel/KMathB.CC,98",BI=92$
$LK,"PopCount",A="FL:::/Kernel/KernelB.HH,18"$
@ -620,7 +621,7 @@ $LK,"MESSAGE_CMD",A="FL:::/Kernel/KernelA.HH,3360"$
$LK,"SysGetI64",A="FL:::/Kernel/BlkDev/DiskAddDev.CC,179",BI=125$
$LK,"MemSetI64",A="FL:::/Kernel/KernelB.HH,158"$
$LK,"_R13",A="FL:::/Kernel/KernelA.HH,3568"$
$LK,"SYS_BOOT_PATCH_TABLE_BASE",A="FL:::/Kernel/KStart16.CC,25"$
$LK,"SYS_BOOT_PATCH_TABLE_BASE",A="FL:::/Kernel/KStart16.CC,19"$
$LK,"_R14",A="FL:::/Kernel/KernelA.HH,3569"$
$LK,"JOBf_FREE_ON_COMPLETE",A="FL:::/Kernel/KernelA.HH,3322"$
$LK,"CTRLT_WIN_VSCROLL",A="FL:::/Kernel/KernelA.HH,3225"$
@ -908,7 +909,7 @@ $LK,"DOCEF_QUIT",A="FL:::/Kernel/KernelA.HH,1120"$
$LK,"Tabs2Spaces",A="FL:::/Kernel/StrB.CC,1",BI=180$
$LK,"MaxI64",A="FL:::/Kernel/KernelB.HH,84"$
$LK,"DriveSerialNum",A="FL:::/Kernel/BlkDev/DiskDrive.CC,288",BI=181$
$LK,"SYS_GDT_PTR",A="FL:::/Kernel/KStart16.CC,34"$
$LK,"SYS_GDT_PTR",A="FL:::/Kernel/KStart16.CC,32"$
$LK,"_RSP",A="FL:::/Kernel/KernelA.HH,3561"$
$LK,"DOCT_INS_BIN_SIZE",A="FL:::/Kernel/KernelA.HH,1059"$
$LK,"WinDerivedValsUpdate",A="FL:::/Kernel/Display.CC,89",BI=182$
@ -981,7 +982,7 @@ $LK,"SCF_CTRL",A="FL:::/Kernel/KernelA.HH,3666"$
$LK,"SCf_CTRL",A="FL:::/Kernel/KernelA.HH,3651"$
$LK,"TK_ENDIF",A="FL:::/Kernel/KernelA.HH,2233"$
$LK,"RT_UF32",A="FL:::/Kernel/KernelA.HH,1694"$
$LK,"Seg2Linear",A="FL:::/Kernel/Memory/MemPhysical.CC,183",BI=207$
$LK,"Seg2Linear",A="FL:::/Kernel/Memory/MemPhysical.CC,186",BI=207$
$LK,"CCF_NO_REG_OPT",A="FL:::/Kernel/KernelA.HH,2270"$
$LK,"DOCEf_UNDERLINE",A="FL:::/Kernel/KernelA.HH,1170"$
$LK,"DOCEF_UNDERLINE",A="FL:::/Kernel/KernelA.HH,1164"$
@ -1110,7 +1111,7 @@ $LK,"SC_DELETE",A="FL:::/Kernel/KernelA.HH,3701"$
$LK,"MESSAGE_KEY_DOWN",A="FL:::/Kernel/KernelA.HH,3361"$
$LK,"CAOTHeapGlobalRef",A="FL:::/Kernel/KernelA.HH,2112"$
$LK,"CLine",A="FL:::/Kernel/EdLite.CC,1"$
$LK,"SYS_VBE_FINAL_MODE",A="FL:::/Kernel/KStart16.CC,54"$
$LK,"SYS_VBE_FINAL_MODE",A="FL:::/Kernel/KStart16.CC,52"$
$LK,"REGT_SEG",A="FL:::/Kernel/KernelA.HH,863"$
$LK,"CMass",A="FL:::/Kernel/KernelA.HH,228"$
$LK,"GetStr",A="FL:::/Kernel/SerialDev/Message.CC,193",BI=233$
@ -1362,7 +1363,7 @@ $LK,"CCF_HAS_RETURN",A="FL:::/Kernel/KernelA.HH,2274"$
$LK,"CAsmArg",A="FL:::/Kernel/KernelA.HH,1974"$
$LK,"CD3",A="FL:::/Kernel/KernelA.HH,157"$
$LK,"QueueRemove",A="FL:::/Kernel/KernelB.HH,57"$
$LK,"SYS_BOOT_BLK",A="FL:::/Kernel/KStart16.CC,24"$
$LK,"SYS_BOOT_BLK",A="FL:::/Kernel/KStart16.CC,18"$
$LK,"MEM_E820t_USABLE",A="FL:::/Kernel/KernelA.HH,389"$
$LK,"progress4_desc",A="FL:::/Kernel/KernelB.HH,210"$
$LK,"RFLAGf_ZERO",A="FL:::/Kernel/KernelA.HH,342"$
@ -1506,7 +1507,7 @@ $LK,"ARGT_UIMM8",A="FL:::/Kernel/KernelA.HH,2017"$
$LK,"WIf_SELF_MS_R",A="FL:::/Kernel/KernelA.HH,1569"$
$LK,"DOCF_NULL_GRAB_SCROLL",A="FL:::/Kernel/KernelA.HH,1405"$
$LK,"DOCEf_LEFT_MACRO",A="FL:::/Kernel/KernelA.HH,1179"$
$LK,"SYS_GDT",A="FL:::/Kernel/KStart16.CC,39"$
$LK,"SYS_GDT",A="FL:::/Kernel/KStart16.CC,37"$
$LK,"JOBf_WAKE_MASTER",A="FL:::/Kernel/KernelA.HH,3314"$
$LK,"CDate2Dos",A="FL:::/Kernel/BlkDev/FileSysFAT.CC,1",BI=315$
$LK,"SEMA_DEBUG",A="FL:::/Kernel/KernelA.HH,726"$
@ -1546,7 +1547,7 @@ $LK,"DOCEF_DEFAULT_LEN",A="FL:::/Kernel/KernelA.HH,1144"$
$LK,"OFF",A="FL:::/Kernel/KernelA.HH,23"$
$LK,"DOCF_DO_FULL_REFRESH",A="FL:::/Kernel/KernelA.HH,1407"$
$LK,"FifoI64Remove",A="FL:::/Kernel/KDataTypes.CC,275",BI=326$
$LK,"SYS_BOOT_SRC",A="FL:::/Kernel/KStart16.CC,23"$
$LK,"SYS_BOOT_SRC",A="FL:::/Kernel/KStart16.CC,17"$
$LK,"FUF_JUST_SRC",A="FL:::/Kernel/KernelA.HH,2757"$
$LK,"FUf_JUST_SRC",A="FL:::/Kernel/KernelA.HH,2729"$
$LK,"OC_CALL",A="FL:::/Kernel/KernelA.HH,1890"$
@ -1889,7 +1890,7 @@ $LK,"OC_NOP2",A="FL:::/Kernel/KernelA.HH,1892"$
$LK,"DOCT_RIGHT_MARGIN",A="FL:::/Kernel/KernelA.HH,1031"$
$LK,"FifoU8Count",A="FL:::/Kernel/KDataTypes.CC,227",BI=408$
$LK,"PUT_HEX_U64",A="FL:::/Kernel/StrA.CC,23"$
$LK,"SYS_KERNEL",A="FL:::/Kernel/KStart16.CC,17"$
$LK,"SYS_KERNEL",A="FL:::/Kernel/KStart16.CC,11"$
$LK,"RFLAGf_PARITY",A="FL:::/Kernel/KernelA.HH,340"$
$LK,"DriveEnable",A="FL:::/Kernel/BlkDev/DiskAddDev.CC,170",BI=409$
$LK,"SYS_PROGRESS4_MAX",A="FL:::/Kernel/KStart32.CC,55"$
@ -1928,7 +1929,7 @@ $LK,"DOCG_BL_IV_UL",A="FL:::/Kernel/KernelA.HH,1071"$
$LK,"HashSingleTableFind",A="FL:::/Kernel/KHashA.CC,257"$
$LK,"mem_heap_base",A="FL:::/Kernel/KernelB.HH,175"$
$LK,"sys_data_bp",A="FL:::/Kernel/KernelB.HH,172"$
$LK,"SYS_PCI_BUSES",A="FL:::/Kernel/KStart16.CC,36"$
$LK,"SYS_PCI_BUSES",A="FL:::/Kernel/KStart16.CC,34"$
$LK,"_CLAMP_I64",A="FL:::/Kernel/KUtils.CC,130"$
$LK,"BDf_READ_ONLY_OVERRIDE",A="FL:::/Kernel/KernelA.HH,2788"$
$LK,"Spaces2Tabs",A="FL:::/Kernel/StrA.CC,472",BI=415$
@ -2098,7 +2099,6 @@ $LK,"ISOInit",A="FL:::/Kernel/BlkDev/DiskCDDVD.CC,1",BI=455$
$LK,"DriveCheck",A="FL:::/Kernel/BlkDev/DiskDrive.CC,142",BI=456$
$LK,"sys_font_std",A="FL:::/Kernel/FontStd.CC,1"$
$LK,"MDF_NULL",A="FL:::/Kernel/KernelA.HH,1708"$
$LK,"SYS_VBE_FINAL",A="FL:::/Kernel/KStart16.CC,55"$
$LK,"char_bmp_alpha",A="FL:::/Kernel/StrA.CC,325"$
$LK,"fat_long_name_map",A="FL:::/Kernel/BlkDev/FileSysFAT.CC,171"$
$LK,"CCF_NO_ABSS",A="FL:::/Kernel/KernelA.HH,2291"$
@ -2139,11 +2139,11 @@ $LK,"TaskDerivedValsUpdate",A="FL:::/Kernel/KTask.CC,283",BI=462$
$LK,"MouseHardReset",A="FL:::/Kernel/SerialDev/Mouse.CC,114",BI=463$
$LK,"_HASH_ADD",A="FL:::/Kernel/KHashA.CC,170"$
$LK,"zenith_task",A="FL:::/Kernel/KGlobals.CC,8"$
$LK,"MEM_E801",A="FL:::/Kernel/KStart16.CC,31"$
$LK,"MEM_E801",A="FL:::/Kernel/KStart16.CC,29"$
$LK,"__TIME__",A="FL:::/Kernel/KernelA.HH,2154"$
$LK,"RLf_PATCHED",A="FL:::/Kernel/KernelA.HH,545"$
$LK,"MEM_E820_ENTRIES_NUM",A="FL:::/Kernel/KernelA.HH,388"$
$LK,"MEM_E820",A="FL:::/Kernel/KStart16.CC,32"$
$LK,"MEM_E820",A="FL:::/Kernel/KStart16.CC,30"$
$LK,"ACD_WORD_FILENAME",A="FL:::/Kernel/KernelA.HH,1628"$
$LK,"ATTRf_BLINK",A="FL:::/Kernel/KernelA.HH,1014"$
$LK,"ATTRF_BLINK",A="FL:::/Kernel/KernelA.HH,1009"$
@ -2197,7 +2197,7 @@ $LK,"OPTf_TRACE",A="FL:::/Kernel/KernelA.HH,1665"$
$LK,"HTG_FLAGS_MASK",A="FL:::/Kernel/KernelA.HH,830"$
$LK,"DirFilesSort",A="FL:::/Kernel/BlkDev/DiskDirA.CC,89",BI=473$
$LK,"SYS_PROGRESS1_T0",A="FL:::/Kernel/KStart32.CC,41"$
$LK,"SYS_RUN_LEVEL",A="FL:::/Kernel/KStart16.CC,26"$
$LK,"SYS_RUN_LEVEL",A="FL:::/Kernel/KStart16.CC,20"$
$LK,"SCF_SCROLL",A="FL:::/Kernel/KernelA.HH,3670"$
$LK,"SCf_SCROLL",A="FL:::/Kernel/KernelA.HH,3655"$
$LK,"ClusAlloc",A="FL:::/Kernel/BlkDev/DiskClus.CC,128",BI=474$
@ -2254,7 +2254,7 @@ $LK,"RS_ATTR_DIR",A="FL:::/Kernel/KernelA.HH,2677"$
$LK,"CCF_POSTDEC",A="FL:::/Kernel/KernelA.HH,2281"$
$LK,"MouseEnable",A="FL:::/Kernel/SerialDev/Mouse.CC,294",BI=478$
$LK,"FileExtRemove",A="FL:::/Kernel/BlkDev/DiskStrA.CC,10",BI=479$
$LK,"MEM_PHYSICAL_SPACE",A="FL:::/Kernel/KStart16.CC,33"$
$LK,"MEM_PHYSICAL_SPACE",A="FL:::/Kernel/KStart16.CC,31"$
$LK,"DirContextDel",A="FL:::/Kernel/BlkDev/DiskDirContext.CC,1",BI=480$
$LK,"StrPrintFlags",A="FL:::/Kernel/StrB.CC,177",BI=481$
$LK,"SYS_PROGRESS3_T0",A="FL:::/Kernel/KStart32.CC,51"$
@ -2470,7 +2470,7 @@ $LK,"FUf_DEL",A="FL:::/Kernel/KernelA.HH,2715"$
$LK,"RedSeaMkDir",A="FL:::/Kernel/BlkDev/FileSysRedSea.CC,602",BI=522$
$LK,"PutKey",A="FL:::/Kernel/KeyDev.CC,1",BI=523$
$LK,"_HASH_STR",A="FL:::/Kernel/KHashA.CC,120"$
$LK,"SYS_VBE_MODES",A="FL:::/Kernel/KStart16.CC,53"$
$LK,"SYS_VBE_MODES",A="FL:::/Kernel/KStart16.CC,51"$
$LK,"FUf_ALL",A="FL:::/Kernel/KernelA.HH,2717"$
$LK,"CAOTHeapGlobal",A="FL:::/Kernel/KernelA.HH,2118"$
$LK,"QueueVectU8New",A="FL:::/Kernel/KDataTypes.CC,87",BI=524$
@ -2517,7 +2517,7 @@ $LK,"Cd2DirEntry",A="FL:::/Kernel/BlkDev/DiskStrA.CC,221",BI=535$
$LK,"DefineCount",A="FL:::/Kernel/KDefine.CC,74",BI=536$
$LK,"IET_IMM_U0",A="FL:::/Kernel/KernelA.HH,433"$
$LK,"sys_clip_doc",A="FL:::/Kernel/KGlobals.CC,6"$
$LK,"SYS_VBE_INFO",A="FL:::/Kernel/KStart16.CC,52"$
$LK,"SYS_VBE_INFO",A="FL:::/Kernel/KStart16.CC,50"$
$LK,"ProgressBarsReset",A="FL:::/Kernel/KMisc.CC,267",BI=537$
$LK,"BlkDevAdd",A="FL:::/Kernel/BlkDev/DiskAddDev.CC,27",BI=538$
$LK,"MESSAGE_MS_L_DOWN_UP",A="FL:::/Kernel/KernelA.HH,3375"$
@ -2717,7 +2717,7 @@ $LK,"ScreenCast",A="FL:::/Kernel/KMisc.CC,151",BI=574$
$LK,"RedSeaInit",A="FL:::/Kernel/BlkDev/FileSysRedSea.CC,58",BI=575$
$LK,"SC_NUM",A="FL:::/Kernel/KernelA.HH,3690"$
$LK,"PCIR_STATUS",A="FL:::/Kernel/KernelA.HH,2375"$
$LK,"MEM_BOOT_BASE",A="FL:::/Kernel/KStart16.CC,30"$
$LK,"MEM_BOOT_BASE",A="FL:::/Kernel/KStart16.CC,28"$
$LK,"PCIR_INTERRUPT_LINE",A="FL:::/Kernel/KernelA.HH,2394"$
$LK,"IEF_DONT_SWITCH_MODES",A="FL:::/Kernel/KernelA.HH,1858"$
$LK,"I_TIMER",A="FL:::/Kernel/KernelA.HH,324"$
@ -2930,7 +2930,7 @@ ggg g&g1g5g7g7g;g+X
3 ޤޤ®¤פç¤4<đűęŤęŤţŤ ŽŽ5$glŔQŔQČQŃQŐQ×Q6$\a<00>Q<00>Q<00>QˇQ¦Q¨Q7  ÄËËěö-2?D`śˇ»ĐŇěŻ8$<00><00>Ó Ó Ü ę ˙ !9 áĺţöţö÷÷ ÷:,X]X]a]j]v]<00>]‰]Ž];8ňüŰnŰnűnoo o'o8o8o8oDo<8%„܌ܠܵܽÜŔÜÂÜĆÜ= 
>\ž†ýŹýŹýźý«ýŻýÇýÎýŃýÓýöý?4Š",<]rrrv@ rvđQđQôQůQűQA <00>vvzťˇB4ž"„"„,„.„@„G„g„h„m„C@:F=V=VMVZVaVvV}V„VŤVDXl~hhŁh¦h±h¶hĂhŐhŐhŢhňhühii'i.i8iE<00>:ZAgAg[gfgkgtg‡gźg§gŻgĽgĆgÍgÔgŘgÜgçgígögúgh h hhh*hF ť¦¦ŞżĂG0EMňÝňÝűÝŢŢ ŢH ž˘ĆĆĘŮÝITFW~~ˇ¨˛şľČČŇĺńôJ Ł§ŢŢâďóK ÜŕŢöŢöâöřöúöLHúŮ~Ů~ů~ 7=CPYZfMHëůI~I~i~v~{~‡~§~­~ł~Ŕ~É~Ę~Ö~N ¨¬ööú˙O ­±
Pd}+c+c3c7c7cFcectc}c†cťcŻc¸cżcăcěcóc˙cdQ´ŔPRPR[RlRŹRžR©R¸RĹRŢRőRůRýRS SS4S<SSSWS[S_SgSoSxSS©S˛SĂSĘSĘSŰSäSR ,P‰ď­ď­ďÂďĘďĎďĎďöďţďđđŚđŽđŽđ đ đ˛đąđąđËđĐđ×đS°Ď÷<00>ЎКСЪнĐ×ĐÝĐĺĐŃŃŃŃфѥѪѭѳѳѶŃËŃÓŃÖŃčŃT Ó×ůcůcdddU0$Ľ§Ľ§Ĺ§Ĺ§Ü§˙§˙§¨VdÇÜÓmÓmámćmöműm
nnnn&n+n-n<nGnKnQnW8 \5\5v5z5}5ˆ5¥5©5®5É5X YYY)Y8YYLm|£b£b¬b±b¸b¸b×búbccc$c&c(c(cZD©<00>j<00>jj²j¿j¿jÉjéjéjój[ mqØQØQÜQìQîQ\ bf¨Q¨Q¬Q¼Q¾Q]8üòãòãä
nnnn&n+n-n<nGnKnQnW8 \5\5v5z5}5ˆ5¥5©5®5É5X YYY)Y8YYLm|£b£b¬b±b¸b¸b×búbccc$c&c(c(cZD¬¹<00>j<00>jj²j¿j¿jÉjéjéjój[ mqØQØQÜQìQîQ\ bf¨Q¨Q¬Q¼Q¾Q]8üòãòãä
ää^x]wcscsys€sŽsŽsšsĄs×s×sÚsÜsÜsásásăsăsăsĺsĺsĺsîsńsôst_Y&.O^g{ž«ľÜĺňţ
 , 1 1 > H \ i   ¤ Á Ě Ô ď ú !-!9!B!G!d!m!z!‰!ž!¸!Ă!Ë!Ö!Ö!Ö!Ű!é!ô!ű!" ""` {“ň“ň­ňżňÉňaŚËęŰCŰCäCD:DeD´DÁDĂDčDčD7EDEFEkEkE{EE˘E§E±EŢEĺEçEěEďEb w{RRR R Rc$+0ÎŕÎŕ×ŕčŕúŕd¨Ci‚Ż‚ŻŠŻłŻĽŻÁŻĘŻÍŻŇŻŇŻęŻ˙Ż°° °°°‚°e<$/ę­ę­ř­®®®füłî»[»[Ď[Ţ[í[÷[\\\;\P\[\b\…\\ \®\Ľ\Ę\ę\ŕ\ö\]]%]7]>]E]R]Y]a]q]Š]š]¦]Đ]ć]÷]÷]˙]^^gŐöň…ň…-†?†I†Y†a†e†i†m†u†}†Ź†ť†§†¬†Ľ†ņÚ†ŕ†ä†ö†h@lxÄŞÄŞŃŞŮŞÜŞęŞîŞňŞőŞ«
««i\ę‡ę‡ý‡<03><0F><16><1B>%<25>6<>G<>[<5B>]<5D>x<>¨<>ż<>Ř<>ă<>ő<>4‰>‰W‰a‰z‰„‰Ź‰ť‰¤‰˛‰˛‰Ľ‰Ő‰ý‰ŠŠjDđđ‚đk,“9“9—9Ä9ë9:;:=:l<`k‰Ş‘Ş”Ş˘Ş¦ŞŞŞ¸ŞĽŞÁŞmL¨«š«šÇšÎšŐšášęš3BLLan8ó\ó\ ]](]B]P]Y]c]o KoŰćŰćďć˙ćç çˇç±çŔçŇçŮçčçúçč čpPYië<>ë<>ý<>#™)™,™1™<™B™L™q<00>&ŢŢďů)AVV_yž©°ÁËËÜäéđýrd®&&?BPPYdil|Ť<00>ĄsH/=<00>ú<00>ú…ú<00>ú<00>út4ČŃV V d r z ž Ł Ş ° u¬Ls
@ -2939,14 +2939,14 @@ nnnn&n+n-n<nGnKnQnW8
ŘŘ؉؍ةؼŘĎŘÔŘăŘđŘŮŮـْْ٥٧ٺټŮĎŮŃŮäŮäŮÚÚÚ|`ÝńSnSnjnxn<00>n…nŚnn¬n·nÂnÄnÉnËnĚnĚnÖn}(łą‹ü‹ü–üŞü»ü˝ü~»í»íĂíÎíŢíííůíîî–îžî î î˛î˛îÄîËîËîÝîâîéîDĂîőîőţőöööt†÷—÷ ÷±÷Ľ÷ż÷Á÷Ä÷Ć÷Ć÷Ć÷Ô÷<00>DJWYY Y®Y®Y¶YĚYĐYĐYÔYÜY¤6[<00>Š<00>Š˛ŠşŠľŠĆŠŇŠŮŠŕŠĺŠúŠ #(?BKQTV`e|<00><00>Ś‹š‹<00>81;019ł—ł—Ç—Ň—ä—ě—ď—÷—ĽKvjj/jPjbjijsjj‡jjšjĄj˛jÖjĺjějójkkkk$k3k:k=k?kEkKkcklklkpk‰k,ÄË<00>˙D V<00>]<00>]Ş]­]ł]ż]Á]Đ]×]Ý]^ ^:^A^E^]^i^†^Ź^Ź^Ź^ś^Ő^á^í^ú^ __,_?_L_]_t_z_Á_Ó_``&`-`8`T`T```b`b`n`p`p`€`<00>`<00>`Ź``´`Ŕ`É`Ô`ę`ř`ř`ř` a"a)a0a6a9a€a<00>P,<¸“¸“Ř“ë“÷“*”0”5”7”P”4#<00>O<00>OO¦O¦OłOČOČOÍOŠ żĂ˙˙85?©©ŚĽ
5h‰h‰†‰Š‰‘‰<00>Ą‰ł‰Ľ‰ż‰ʼnˉ҉ىۉĺ‰ę‰ô‰ŠŠŠ‘ŠŤ0;C^^lzĄľćŽÜ<00>´XpXp~p†pp§p§p˝pĹpŐpäpäpépq
qqq1q8qBqBqWqWqmq{q<00>q‰q”q˛qĽqżqÂqÇqŐqëqőqřqűqrr'r1r4r4r;r?rQrŹt@W@WTW[WcWkW‡W‡W•W—W—W§W©W©WąWÁWÁWĘWÖWóWóWXX X/X<00>X ggĄgągĘgŐgńgôghh hh7h;h@Š‰i“iiłiłiĽiĐiÖiŕiüij@!-ŁŁ±ąËŃÔÖÜL¬»‰áŹážá¤áłáąáČáÎáĐáŐá(âč y y!y=yOyUypyä{°<00><00>¦ŻŇÜîńůü#€0€6€C€N€S€Y€k€k€z€}€‡€Š€–€¨€µ€»€Č€Ó€Ř€Ţ€đ€đ€đ€đ€ű€ű€ <09>8ˇ«ňŕňŕüŕáá á Ńő#R#RBRDRURZRhR‰R—RĄR°RČRĎRŃRŃRăRéRďRńR÷RýRSSSS S&S&S&S-S>S<00>@%ę¤ę¤ţ¤ Ą ĄĄTx>>bess˘¨łłł·Ĺš$@EVV_msx`cw¦¦ĂÉ××ëöú%)))-9śHřęŃęŃŇ<00>ŇťD"/ŹŹžtąŇł7ł7»7Ě7đ7÷78,8:8H8Q8d8k8u8<00>8™8Ż8±8Ç8Ý8Ý8Ý8ß8źX{ŤSOSOlO|O”O O¬O¬OľOÄOÄOĐOÜOŢOŢOćO @ˇ,Úáxx©xĚx·xÜxâxy˘8{ŚË<00>˚˚ËĚŁ4MVřPřPQ QEQUQaQqQtQwQ¤8>H P P®P´P»PŃPŃPŘPňPřPĄ<x<00><00>»Š»Ž»‘»•»ś»Ŕ»Đ»¦`«ż˛„˛„¶„Í„˙„2…K…Z…i…n…t…v…§@ »˙»˙Ö˙ň˙ň˙˙˙˙˙  F¨d2Ç>>>)>0>N>_>n>{>Š>ž>¶>Î>á>÷>?,?G?d?‰?Ž?§?Ľ?Ü?ó?@@;@@c@a@±@Â@É@é@ţ@AA?A?A^AeAˇAŻABŕAŢA.B5B:BPBXBXB}BŤB®BôBÁBÉB´BCOCWCWCwCŚC­C·CÎCÖCÁC*D*D*D/D/D@D[DiD<00>DšDłDÎDćDüDE"E-E-E@EYEmEE E¤E˘EňEFFF6FQF\FtFŠFŠFáF˛F°FGGG9GQGgGiGłG„GGŇGŇGŰGäGůGůG
HH&H&H7H7H:H>H©,º‡º‡¾‡Ç݇â‡ä‡ª,sz88<AK[[†«T¨jjjj)jGjJjQjXjfjjjljvj~j¬4 ˆˆ¦ˆµˆºˆÈˆËˆÑˆÙˆ­, æøæøïøùù®ÈÉ÷#)#);)E)V)V)h)m)m))„)„))))­)²)²)Ä)É)É)É)É)Ð)Õ)Õ)ç)ì)ì)þ)***G*\*\*n*u*|*…*”*÷*¯a~¶â¶âºâÉâÉâØâØâçâçâöâãããã²ç°˜åF
HH&H&H7H7H:H>H©,º‡º‡¾‡Ç݇â‡ä‡ª,sz88<AK[[†«`«jjjj$j1j<jHjOjOjVjdjhjjjtj|j¬4 ˆˆ¦ˆµˆºˆÈˆËˆÑˆÙˆ­, æøæøïøùù®ÈÉ÷#)#);)E)V)V)h)m)m))„)„))))­)²)²)Ä)É)É)É)É)Ð)Õ)Õ)ç)ì)ì)þ)***G*\*\*n*u*|*…*”*÷*¯a~¶â¶âºâÉâÉâØâØâçâçâöâãããã²ç°˜åF
F
L
J
Z
۱Lt<00>Ú‚Ú‚î‚ű‚ţ‚<02><10><1B>$<24>C<>P<>Z<>^<5E>a<>s<>˛TĘŰ<00>ëŹë™ëźë©ë®ëĽëÂëĹëË볼žÉŚéŚé©éłéËéĎéçéëéęęę€ę‚ę<00>ę‘ę—ęĽężę×ęçęřęüęë ë ëëëë´"0{0{J{i{u{<00>{Ž{ź{§{«{·{Č{Ő{Ű{Ţ{á{ä{é{ë{ď{ű{ ||!|$|'|*|*|4|7|I|µH .<00>ĺ‹ĺ¨ĺ·ĺ˝ĺŔĺĚĺPYi–î–îźî­î­îĹîŰîęîďď·LĄ,†7†H†\†`†n†<00>•†ž†Ł†µ†Ë†¸<00>Sq»Z»ZŃZÖZâZâZîZöZţZ [[[[![%[4[?[G[O[P[P[Z[ąÜÎŰ Ű ă ç    ) ? R k    ® » Î ě ő '1AWmž˘¤©®·ÉĐĐâčş EIöńöńúńňň»,fm<><><>ź<>«<>·<>»<>Á<>Ľ,W^[N[NiNkN}N…NŠN<00>N˝H´Â:‡:‡C‡O‡b‡m‡…‡‡‡Ť‡<00>ś‡ ‡Ł‡ľdĂŘŞ‡Ş‡ł‡Ë‡Ö‡ň‡ô‡
<EFBFBD> <20>3<>I<>c<>g<>ż¬ŽµëOëOP P#P2P_PiPnPťP¤P¦P¦PµPżPĘPĎPŇPáPćPőPQQQ'Q3Q7QAQŔ-IĂXĂXßXîXóXůXYYYY$Y$Y-Y8YJYSY^YcYhYyYYYY<00>YYÁ ÷ű®÷®÷¸÷Ë÷Đ÷ÂŚ%D¨¨¨¨„¨Ś¨¶¨ş¨Ú¨Ü¨ä¨©©<00>©¬©Č©Ď©×©Ă bb
bbbļGržž¼ÃÍÒåð%*?IS][k£³½×û$+7>OV]nssÅøµïã£ã£¤¤ƒ¤“¤š¤©¤¼¤È¤ß¤á¤ù¤û¤þ¤¥¥¥¥¥¥¥¥Œ¥£¥ª¥°¥³¥É¥Æ4#,cXcXrX„XŽX¡X©X³XµXÂXÇŒ'F'ITey¦»ÄÉÉÙâèô .>>>QVWÈ(PV„ò‹ò“ò•ò›òÉ5ã•ã•#2FNThwƒ–<00>“–˜ª–¸¼–Æ–Ê–Ó–Ù–ì–Ê$).øOøOP P!P'PË,þÑþÑǪ̀+€’€’š’<00>µ’À’Ð’â’æ’ô’ý’%“%“1“<“J“T“\“`“`“`“c“e“i“i“n“|“Š“˜“<00>Ÿ“Ÿ“µ“ÍLÝì..JVp{ˆœ¢®Î üÖ÷Ö÷Ú÷ç÷é÷Ï··ùj%kÐXÂÔz…z…ƒ…“…“…”…™…™…£…¶…Æ…Ì…Û…à…ï…ñ…ñ…ÑTWWW3WBWTWYWoWvWˆWW®WÈWØWÝWÝWßWÒ`Huaucuku‡u<00>u£u²u·uÊuáuçuóuvvvcvÓ¬Gnëëëëóë÷ëììì…ì®ìÀìËìêìêìíííí<00>í”í”í¦í¶íÔ<00> )C:C:e:<00>:µ:Ý:ë:.;q;´;¶;Ä;Ò;à;à;<"<4<D<Y<r<„<”<©<Â<É<Ð<ì<==Õ |RRR;RERÖÀnšÃ<>Ã<>Û<>â<>ê<>ÿ<>#))3:EJThjuu„‘Œ‘—‘ ¤‘¯‘µ‘¸»‘À‘Ç‘Ñ‘á‘×@/;2—2—P—\—i—t—€—<00>“—–—™—«—Ø0'â™â™ð™šÙ<NYS?S?[?y?Š?š?«?º?Ô?ì?î?ð?Ú<00>jŠS™S™i™l™x™x™z™‡™•™š™<00>¨™«™°™Æ™Ø™ã™ï™ù™ü™þ™ššš šššÛ<<00>ŒHRHRVRdRiRoRRR…R¢R¨RÜ}ž
bbbļGržž¼ÃÍÒåð%*?IS][k£³½×û$+7>OV]nssÅøµïã£ã£¤¤ƒ¤“¤š¤©¤¼¤È¤ß¤á¤ù¤û¤þ¤¥¥¥¥¥¥¥¥Œ¥£¥ª¥°¥³¥É¥Æ4#,cXcXrX„XŽX¡X©X³XµXÂXÇŒ'F'ITey¦»ÄÉÉÙâèô .>>>QVWÈ(PV„ò‹ò“ò•ò›òÉ5ã•ã•#2FNThwƒ–<00>“–˜ª–¸¼–Æ–Ê–Ó–Ù–ì–Ê$).øOøOP P!P'PË,þÑþÑǪ̀+€’€’š’<00>µ’À’Ð’â’æ’ô’ý’%“%“1“<“J“T“\“`“`“`“c“e“i“i“n“|“Š“˜“<00>Ÿ“Ÿ“µ“ÍLÝì..JVp{ˆœ¢®Î üÖ÷Ö÷Ú÷ç÷é÷Ϻºùj%kÐXÂÔz…z…ƒ…“…“…”…™…™…£…¶…Æ…Ì…Û…à…ï…ñ…ñ…ÑTWWW3WBWTWYWoWvWˆWW®WÈWØWÝWÝWßWÒ`Huaucuku‡u<00>u£u²u·uÊuáuçuóuvvvcvÓ¬Gnëëëëóë÷ëììì…ì®ìÀìËìêìêìíííí<00>í”í”í¦í¶íÔ<00> )C:C:e:<00>:µ:Ý:ë:.;q;´;¶;Ä;Ò;à;à;<"<4<D<Y<r<„<”<©<Â<É<Ð<ì<==Õ |RRR;RERÖÀnšÃ<>Ã<>Û<>â<>ê<>ÿ<>#))3:EJThjuu„‘Œ‘—‘ ¤‘¯‘µ‘¸»‘À‘Ç‘Ñ‘á‘×@/;2—2—P—\—i—t—€—<00>“—–—™—«—Ø0'â™â™ð™šÙ<NYS?S?[?y?Š?š?«?º?Ô?ì?î?ð?Ú<00>jŠS™S™i™l™x™x™z™‡™•™š™<00>¨™«™°™Æ™Ø™ã™ï™ù™ü™þ™ššš šššÛ<<00>ŒHRHRVRdRiRoRRR…R¢R¨RÜ}ž
Ú
Ú‡ÚžÚžÚŁÚĄÚĄÚ©Ú«Ú«ÚŻÚ¶Ú¶Ú»ÚËÚÝÚßÚďÚÝLQ`şşşşŢ$“o“o­oÉoß î÷î÷ř÷ řřŕ ćęáÔ,]{{<00>˛ÁË×âđ˙,4@HPP[]xŞÜíú24FOOaaov<00><00>źâś$ÓKÓKŰKáKňKLL8L8LDLUL`LlLlLyLL<00>L·LľLĎLŮLŢLŢLŢLţLM8M=MBMăxv<00> * **)*/*;*K*N*R*[*k*n*w*z*Ś*˛*ş*Ă*Ă*É*ő*ú*+ +ä ëóEóEFFFF#F5F?FDFVFkF<00>F—F­FżFĆFĆFÜFéFéF˙FGGGG#G(G0Gĺ@jv<00>ď–ď§ď­ďŻďÄď÷ďýďýď đć0z™z™<00> ™Ó™Ů™Ű™Ű™á™çD<00>„š‘š”š¤ščĎë&.9DOXnźĆÜöţ&1IT[fk<00>éLÁĐŁQŁQ˝QĐQĺQëQńQRRRRRę<00>úű”ű”%•2•D•D•V•a•w•w•‡•‰•‰•‰•š•Ą•¬•°•¸•Ľ•Ä•Ę•Đ•Đ•Ó•á•ë|ĹĹ‚Ĺ’Ĺ»ĹËĹŘĹĆĆáĆě8 <00>¤—¤š¤Ł¤íH=KP”P”j”}”–”«”±”·”·”ż”Á”í”îL \ËoËoÓoŢođoöoţop+p+p=pJpWp_pmp¨p¶pîpópópqqq$q3qhqoq€q†qqqťqŞq·qĽqËq˙qrrrrr'r'r4rIrOrbr†r“rŁr¨r®r»rĆrĚr×r×rÝrćrńrss%s2s?sDsDsHsasď@Zfó?ó?@@@@)@0@2@7@D@đ, ĘŕĘŕÓŕßŕçŕěŕńŕń("XX)XEXJXVX\Xň<ě÷<00><00>ˇ·ŃÜíďó$;h;hDhMhShXhôdJ_¨<>¨<>¬<>˝<>Î<>í<>%™6™@™S™f™€™’™§™´™É™í™ď™ő$ôů۔۔ä”í”ó”ř”ö 
;Y;YDYQYbY÷XŤź = ==#=/=5=8===C=F=K=K=X=\=_=_=e=řDÄŃ<00>ö“ö™öůh-<00>Ă1Ă1ë1í1ö1

View file

@ -1592,8 +1592,8 @@ class CWinMgrTimingGlobals
I64 calc_idle_count;
};
#define WINMGR_FPS (60000.0/1001)
#define WINMGR_PERIOD (1001/60000.0)
#define WINMGR_FPS (30000.0/1001)
#define WINMGR_PERIOD (1001/30000.0)
public class CWinMgrGlobals
{

View file

@ -276,7 +276,7 @@ public _intern IC_RDTSC I64 GetTSC(); //Get time stamp counter.
#help_index "Graphics/VBE"
public _extern SYS_VBE_INFO CVBEInfo sys_vbe_info;
public _extern SYS_VBE_FINAL_MODE CVBEMode sys_vbe_mode;
_extern SYS_VBE_FINAL U16 sys_vbe_mode_num;
_extern SYS_VBE_FINAL_MODE_NUM U16 sys_vbe_mode_num;
_extern SYS_VBE_MODES CVBEModeShort sys_vbe_modes[VBE_MODES_NUM];
#help_index ""

View file

@ -149,26 +149,29 @@ U0 UncachedAliasAlloc() //Make uncached alias for 4 lowest Gig.
}
I64 BIOSTotalMem()
{
I64 r01,r20;
U16 *m01=MEM_E801;
CMemE820 *m20=MEM_E820;
{//Returns max of either E801 or E820 mem map.
I64 total01 = 0x100000, total20 = 0;
U16 *mem01 = MEM_E801;
CMemE820 *mem20 = MEM_E820;
r01=0x100000+m01[0]<<10+m01[1]<<16;
r20=0;
if (m20->type) {
while (m20->type) {
if (m20->type==MEM_E820t_USABLE)
r20+=m20->len;
m20++;
total01 += mem01[0] * 1024; //First U16 is mem between 1MiB and 16 MiB in KiB.
total01 += mem01[1] * 64 * 1024;//Second U16 is mem above 16MiB (until it encounters a hole) in 64KiB blocks.
if (mem20->type)
{
while(mem20->type)
{
if(mem20->type == MEM_E820t_USABLE)
total20 += mem20->len;
mem20++;
}
}
return MaxI64(r01,r20);
}
return MaxI64(total01, total20);
}
I64 Scale2Mem(I64 min,I64 max,I64 limit=2*1024*1024*1024)
{//Helps pick DiskCache and RAMDisk sizes.
//Can be used in $LK,"BootHDIns",A="MN:BootHDIns"$() config scripts.
//Can be used in $LK,"BootHDIns",A="MN:BootHDIns"$() config scripts.
I64 i;
if (sys_data_bp)
i=sys_data_bp->alloced_u8s;

Binary file not shown.