VideoRep function, RLf_VGA -> RLf_VESA

This commit is contained in:
xmm15 2020-02-19 01:11:54 -06:00
parent 008ab45596
commit da13d6d300
18 changed files with 77 additions and 47 deletions

Binary file not shown.

Binary file not shown.

View file

@ -1,10 +0,0 @@
public I64 VideoRep()
{//List available VBE modes as indicated by the BIOS. Show current mode;
I64 i, mode_count = 0;
"\nVBE Version %X.%X\n\n", sys_vbe_info.version.u8[1], sys_vbe_info.version.u8[0];
 return mode_count;
}
VideoRep;

Binary file not shown.

View file

@ -42,7 +42,7 @@ See also $LK,"GrUpdateScreen",A="MN:GrUpdateScreen"$().
} else if (Bt(char_bmp_displayable,ch)) {
row=text.raw_col/text.cols%text.rows;
col=text.raw_col%text.cols;
if (!Bt(&sys_run_level,RLf_VGA)) { //if text mode
if (!Bt(&sys_run_level,RLf_VESA)) { //if text mode
if (text.raw_flags&RWF_SCROLL && text.raw_col && !row && !col) {
MemCopy(text.vga_text_alias,text.vga_text_alias+text.cols*2,
text.cols*(text.rows-1)*2);

View file

@ -18,21 +18,20 @@ U0 SysGlobalsInit()
kernel_config->mount_ide_auto_hd_let='C';
if (!kernel_config->mount_ide_auto_cd_let)
kernel_config->mount_ide_auto_cd_let='T';
StreamPrint("blkdev.first_hd_drive_let=%d;",
kernel_config->mount_ide_auto_hd_let);
StreamPrint("blkdev.first_dvd_drive_let=%d;",
kernel_config->mount_ide_auto_cd_let);
StreamPrint("blkdev.first_hd_drive_let=%d;", kernel_config->mount_ide_auto_hd_let);
StreamPrint("blkdev.first_dvd_drive_let=%d;", kernel_config->mount_ide_auto_cd_let);
}
DebugMode(ON);
rev_bits_table=CAlloc(256);
for (i=0;i<256;i++)
for (j=0;j<8;j++) {
if (Bt(&i,7-j)) LBts(rev_bits_table+i,j);
}
ext=CAlloc(EXT_EXTS_NUM*sizeof(U8 *));
fp_getstr2=&SysGetStr2;
ext = CAlloc(EXT_EXTS_NUM*sizeof(U8 *));
fp_getstr2 = &SysGetStr2;
KeyDevInit;
#exe {
@ -56,7 +55,14 @@ U0 SysGlobalsInit()
QueueInit(&dev.pci_head);
dev.mem64_ptr=mem_mapped_space;
//framebuffer pointer is already linear
Seg2Linear(&sys_vbe_info.video_modes);
Seg2Linear(&sys_vbe_info.oem);
Seg2Linear(&sys_vbe_info.vendor);
Seg2Linear(&sys_vbe_info.product_name);
Seg2Linear(&sys_vbe_info.product_revision);
Seg2Linear(SYS_FONT_PTR);
sys_vbe_info.software_revision = Bcd2Binary(sys_vbe_info.software_revision);
debug.fun_seg_cache=CAlloc(FUN_SEG_CACHE_SIZE*sizeof(CFunSegCache));
debug.int_fault_code=IntFaultHandlersNew;
@ -80,8 +86,8 @@ U0 SysGrInit()
text.border_chars[2] (I64)='ÄͳºÚÉ¿»';
text.border_chars[10](U32)='ÀÈÙ¼';
text.vga_alias =dev.uncached_alias+VGAM_GRAPHICS;
text.vga_text_alias =dev.uncached_alias+VGAM_TEXT;
if (!Bt(&sys_run_level,RLf_VGA)) { //if text mode
 text.vga_text_alias =dev.uncached_alias+VGAM_TEXT;
if (!Bt(&sys_run_level,RLf_VESA)) { //if text mode
text.cols=80;
text.rows=25;
MemSet(text.vga_text_alias,0,text.rows*text.cols<<1);

View file

@ -65,7 +65,7 @@ SCREEN_HEIGHT: DU16 768;
SYS_FONT_PTR:: DU32 0;
//************************************
CORE0_16BIT_INIT::
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
@ -222,7 +222,7 @@ GET_IP: POP BX
};
CMP AX,0x004F
JNE @@10 //Jmp if fail
BTS U32 [SYS_RUN_LEVEL],RLf_VGA
BTS U32 [SYS_RUN_LEVEL],RLf_VESA
@@10:
//Get pointer to 8x8 VGA ROM font.

View file

@ -575,7 +575,7 @@ $LK,"_LOG10",A="FL:::/Kernel/KMathA.CC,592"$
$LK,"DOC_COLOR_GLBL_VAR",A="FL:::/Kernel/KernelA.HH,1196"$
$LK,"I32_MAX",A="FL:::/Kernel/KernelA.HH,34"$
$LK,"I16_MAX",A="FL:::/Kernel/KernelA.HH,30"$
$LK,"TimerInit",A="FL:::/Kernel/KMain.CC,98",BI=119$
$LK,"TimerInit",A="FL:::/Kernel/KMain.CC,104",BI=119$
$LK,"DCF_PALETTE",A="FL:::/Kernel/KernelA.HH,3680"$
$LK,"rev_bits_table",A="FL:::/Kernel/KGlobals.CC,12"$
$LK,"KBD_CTRL",A="FL:::/Kernel/KernelA.HH,3062"$
@ -1143,7 +1143,6 @@ $LK,"DOCT_INVERT",A="FL:::/Kernel/KernelA.HH,971"$
$LK,"PIC2_DATA",A="FL:::/Kernel/KernelA.HH,543"$
$LK,"RLf_ONCE_ZENITH",A="FL:::/Kernel/KernelA.HH,490"$
$LK,"CMT_HASH_ENTRY",A="FL:::/Kernel/KernelA.HH,1751"$
$LK,"RLf_VGA",A="FL:::/Kernel/KernelA.HH,472"$
$LK,"BDT_TYPES_NUM",A="FL:::/Kernel/KernelA.HH,2712"$
$LK,"LAPIC_LVT_PERF",A="FL:::/Kernel/KernelA.HH,569"$
$LK,"IRQMouseHard",A="FL:::/Kernel/SerialDev/Mouse.CC,90",BI=239$
@ -1168,7 +1167,7 @@ $LK,"WIF_FOCUS_TASK_MENU",A="FL:::/Kernel/KernelA.HH,1478"$
$LK,"RedSeaCd",A="FL:::/Kernel/BlkDev/FileSysRedSea.CC,236",BI=242$
$LK,"JobDel",A="FL:::/Kernel/Job.CC,1",BI=243$
$LK,"SC_F6",A="FL:::/Kernel/KernelA.HH,3636"$
$LK,"SysGrInit",A="FL:::/Kernel/KMain.CC,65",BI=244$
$LK,"SysGrInit",A="FL:::/Kernel/KMain.CC,71",BI=244$
$LK,"ArcCtrlDel",A="FL:::/Kernel/Compress.CC,244",BI=245$
$LK,"SysBadMAlloc",A="FL:::/Kernel/Memory/MemPag.CC,6",BI=246$
$LK,"SC_F7",A="FL:::/Kernel/KernelA.HH,3637"$
@ -1417,7 +1416,7 @@ $LK,"BDf_READ_ONLY",A="FL:::/Kernel/KernelA.HH,2716"$
$LK,"ISOT_BOOT_RECORD",A="FL:::/Kernel/KernelA.HH,2567"$
$LK,"DCF_JUST_MIRROR",A="FL:::/Kernel/KernelA.HH,3690"$
$LK,"FSt_UNKNOWN",A="FL:::/Kernel/KernelA.HH,2768"$
$LK,"KMain",A="FL:::/Kernel/KMain.CC,125",BI=296$
$LK,"KMain",A="FL:::/Kernel/KMain.CC,131",BI=296$
$LK,"sys_cache_line_width",A="FL:::/Kernel/KernelB.HH,263"$
$LK,"XchgI64",A="FL:::/Kernel/KernelB.HH,254"$
$LK,"SC_CURSOR_DOWN",A="FL:::/Kernel/KernelA.HH,3622"$
@ -1434,7 +1433,7 @@ $LK,"ATAReadNativeMax",A="FL:::/Kernel/BlkDev/DiskATA.CC,194",BI=298$
$LK,"CR4F_PAE",A="FL:::/Kernel/KernelA.HH,527"$
$LK,"BOOT_SRC_ROM",A="FL:::/Kernel/KernelA.HH,3955"$
$LK,"MEM_FREE_PAG_HASH_SIZE",A="FL:::/Kernel/KernelA.HH,2940"$
$LK,"SYS_KERNEL_END",A="FL:::/Kernel/KMain.CC,221"$
$LK,"SYS_KERNEL_END",A="FL:::/Kernel/KMain.CC,227"$
$LK,"TakeExcept",A="FL:::/Kernel/KExcept.CC,42"$
$LK,"_MALLOC",A="FL:::/Kernel/Memory/MAllocFree.CC,5"$
$LK,"CHashDefineStr",A="FL:::/Kernel/KernelA.HH,873"$
@ -1980,7 +1979,7 @@ $LK,"REG_RBX",A="FL:::/Kernel/KernelA.HH,1834"$
$LK,"DiskCacheHash",A="FL:::/Kernel/BlkDev/DiskCache.CC,40",BI=427$
$LK,"MDG_MASK",A="FL:::/Kernel/KernelA.HH,1644"$
$LK,"ACD_EXTRA_CHAR",A="FL:::/Kernel/KernelA.HH,1577"$
$LK,"Reboot",A="FL:::/Kernel/KMain.CC,105",BI=428$
$LK,"Reboot",A="FL:::/Kernel/KMain.CC,111",BI=428$
$LK,"acd",A="FL:::/Kernel/KGlobals.CC,17"$
$LK,"CSoundData",A="FL:::/Kernel/KernelA.HH,3896"$
$LK,"REG_RCX",A="FL:::/Kernel/KernelA.HH,1832"$
@ -2470,6 +2469,8 @@ $LK,"mon_start_days2",A="FL:::/Kernel/KDate.CC,5"$
$LK,"FONT_HEIGHT",A="FL:::/Kernel/KernelA.HH,3666"$
$LK,"HTf_GOTO_LABEL",A="FL:::/Kernel/KernelA.HH,725"$
$LK,"ATAR0_LCYL",A="FL:::/Kernel/KernelA.HH,2397"$
$LK,"RLF_VESA",A="FL:::/Kernel/KernelA.HH,494"$
$LK,"RLf_VESA",A="FL:::/Kernel/KernelA.HH,472"$
$LK,"ATAPIWritePacketWord",A="FL:::/Kernel/BlkDev/DiskATA.CC,106",BI=518$
$LK,"CMOSRegRead",A="FL:::/Kernel/KDate.CC,123",BI=519$
$LK,"ICf_DONT_PUSH_FLOAT0",A="FL:::/Kernel/KernelA.HH,1670"$
@ -2573,7 +2574,6 @@ $LK,"DOCf_MORE",A="FL:::/Kernel/KernelA.HH,1369"$
$LK,"DOCF_MORE",A="FL:::/Kernel/KernelA.HH,1332"$
$LK,"REGG_SAVED",A="FL:::/Kernel/KernelA.HH,1849"$
$LK,"SF_ARG1",A="FL:::/Kernel/KernelA.HH,624"$
$LK,"RLF_VGA",A="FL:::/Kernel/KernelA.HH,494"$
$LK,"C:/Doc/D3.DD",A="FL:::/Kernel/KernelB.HH,130"$
$LK,"COLOR_MONO",A="FL:::/Kernel/KernelA.HH,3038"$
$LK,"ACD_END_CHAR",A="FL:::/Kernel/KernelA.HH,1572"$
@ -2932,7 +2932,7 @@ $LK,"FILEMASK_SRC",A="FL:::/Kernel/KernelA.HH,2407"$
O ­±)-PdS[S[[[_[_[n[Ť[ś[Ą[®[Ĺ[×[ŕ[ç[ \\\'\)\Q´ŔxJxJ<00>J”J·JĆJŃJŕJíJKK!K%K-K5K>K\KdK{KK<00>K‡KŹK—K KľKŃKÚKëKňKňKL LR ,P<00>çŽçžç­çąçÝçÝçňçúç˙ç˙ç<00>č”čśčˇčĽčľčľčĐčĐčâčéčéčűčééS°Ď÷ŠČŠČ¤Č±ČľČĘČŃČÚČíČÉ ÉɇɥɨɨɨɴÉŐÉÚÉÝÉăÉăÉćÉűÉĘĘĘT Ó×ácácďcýcdU0&¤ź¤ź­ź­źÄźçźçźěźVdÇÜűeűe fff#f2f7f9f?fNfSfUfdfofsfyfW8 \5\5v5z5}5<00>5Ą5©5®5É5X űXűXYY YYLpËZËZÔZŮZŕZŕZ˙Z"[)[8[G[L[N[P[P[ZD©ijij<00>jšj§j§j±jŃjŃjŰj[ mqŔQŔQÄQÔQÖQ\ bf<00>Q<00>Q”Q¤Q¦Q]8ü^x]wkkˇk¨k¶k¶kÂkÍk˙k˙klll l l l l l l l llll)l_Y;;CNVwŹŁłĆÓć &27TYYfpŞąĚéôü"7UajoŚ˘±Ćŕëóţţţ#.3:` {ĂęĂęÝęďęůęaŚËęÓ;Ó;Ü;<2<]<¬<ą<»<Ó<Ó<"=/=1=I=I=Y=y=€=…=Ź=Ľ=Ă=Ĺ=Ę=Í=b w{čQčQěQńQóQc$+0¶Ř¶ŘżŘĐŘâŘŮd¨Ci<00>§<00>§’§ś§¦§˛§˛§ş§ă§ě§ń§ú§ý§¨¨¨<00>¨<00>¨ލލ“¨“¨˘¨˛¨e<$/¦¦Ť¦ʦ•¦füńóSóSTT%T/T>TMTMTsT<00>T“TšT˝TĘTŘTćTôTU"UU.U@UKU]UoUvU}UŠUU™U©U±UÁUÍU÷U VVV&V)V7VgŐö"~"~L~]~o~y~‰~~•~™~ť~Ą~­~ż~Í~×~Ü~ě~ő~
&h@nz¬˘¬˘ą˘Á˘Ä˘Ň˘Ö˘Ú˘Ý˘ë˘ň˘÷˘i\-€3€?€F€K€U€f€w€‹€Ť€¨€Ř€ď€<08><13>%<25>I<>K<>d<>n<><><>Ş<>´<>ż<>Í<>Ô<>â<>â<>ě<>-8OTV`|…‚Ť‚«‚jD–č–čźč´čŔčËčÔčâčíčőčúčk,Ł1Ł1§1Ô1ű1(2K2M2l<bmŠ˘Ž˘’˘ ˘¤˘©˘mLš©“’“’Ż’¶’˝’É’Ň’ě’÷’ü’*“4“4“I“n8Ű\Ű\ń\ţ\]*]8]A]K]o Ko ß ß߇ßŃ߬ߑßáßđßŕ ŕŕpPZjÓ<>Ó<>ĺ<>ě<>ő<> $*4q<00>3îî˙ !9Qffo<00>ˇ®ąŔŃŰŰěôů !,rd¦»Ś˙—˙ť˙ ˙Ł˙Ą˙©˙µ˙sH<J–ň–ň¦ň¬ň·ňŔňĂňĐňŮňŮňÝňŕňčňt4ŐŢfftŠ®łşŔu¬Ls:y:yLy[yayuy<00>yźy˛yÉyÜyóy
z!z<z@zGzMzQzcz|z‰zŹzŞz®zµz»zżzŃzęz÷zýz{
{vcXgXg{ggŒgg•g¨gÉgÓgÓgégõgüghhh+hLhVhVhjhjhmh{hw(bhPPTZagix(Ã`Ã`Ì`Ö`á`é`î`y0lt~~Œ¦¬®®´z<KV°u°u¹uÃuÓuÕuvvvvv{4ŠÓ†Ï†ÏžÏ¦Ï´Ï¿ÏÃÏÉÏÏÏÝÏòÏ÷ÏýÏÐÐБФзмÐËÐØÐèÐ÷ÐÑÑÑ<00>Ñ<00>ѢѤѷѹÑÌÑÌÑèÑÿÑÒ ÒÒ|`Ýñ{f{ff f«f­f´f¾fÔfßfêfìfñfófôfôfþf}(³¹»ô»ôÆôÚôëôíô~ëåëåóåþåææ<00>æ®æÆæÎæÐæÐæâæâæôæûæûæ çççD°½‹î—îžî­î¹î¹î¿ît•ï•ï—ï—ï—ï«ï­ï­ï­ï¶ïÇïÐïáïìïïïñïôïöïöïöïð<00>DMZÃQÃQØQæQæQîQRRR RR¤6[À‚À‚Ú‚â‚æ‚î‚ú‚ƒƒ ƒˆƒ<00>ƒ¤ƒ§ƒ©ƒ°ƒ´ƒƒƒ81;ÙÙ02:<><>¯<>º<>Ì<>Ô<>×<>ß<>¼Kv;b;bWbxbŠbbb§b¯bºbÂbÍbÚbþb ccc,c.c6cAcLc[cbcecgcmcscc”c”c˜c±c,ÑØŽ÷Ž÷œ÷¨÷¿÷Ã÷Å÷Ù÷D V¸U¸UÒUÕUÛUçUéUøUÿUV.V5VbViVmV…VV®V·V·V·VÄVýV WW"W5WCWTWgWtW…WœW¢WéWûW(X/XNXUX`X|X|XˆXŠXŠXX˜X˜X¨X«X«X·XÃXÜXèXñXüXY Y Y Y1YJYQYXY^YaY¨YˆP,<à‹à‹ŒŒŒ4#pOpOyOŽOŽOO°O°OµOŠ ÌÐ…÷‹÷85?‚¡†¡Š¡Ž¡š¡¢¡Œ¼
{vcXgXg{ggŒgg•g¨gÉgÓgÓgégõgüghhh+hLhVhVhjhjhmh{hw(hn°’°’´º’Á’Ç’Éx(Ã`Ã`Ì`Ö`á`é`î`y0lt~~Œ¦¬®®´z<KV°u°u¹uÃuÓuÕuvvvvv{4ŠÓ†Ï†ÏžÏ¦Ï´Ï¿ÏÃÏÉÏÏÏÝÏòÏ÷ÏýÏÐÐБФзмÐËÐØÐèÐ÷ÐÑÑÑ<00>Ñ<00>ѢѤѷѹÑÌÑÌÑèÑÿÑÒ ÒÒ|`Ýñ{f{ff f«f­f´f¾fÔfßfêfìfñfófôfôfþf}(³¹»ô»ôÆôÚôëôíô~ëåëåóåþåææ<00>æ®æÆæÎæÐæÐæâæâæôæûæûæ çççD°½‹î—îžî­î¹î¹î¿ît•ï•ï—ï—ï—ï«ï­ï­ï­ï¶ïÇïÐïáïìïïïñïôïöïöïöïð<00>DMZÃQÃQØQæQæQîQRRR RR¤6[À‚À‚Ú‚â‚æ‚î‚ú‚ƒƒ ƒˆƒ<00>ƒ¤ƒ§ƒ©ƒ°ƒ´ƒƒƒ81;ÙÙ02:<><>¯<>º<>Ì<>Ô<>×<>ß<>¼Kv;b;bWbxbŠbbb§b¯bºbÂbÍbÚbþb ccc,c.c6cAcLc[cbcecgcmcscc”c”c˜c±c,ÑØŽ÷Ž÷œ÷¨÷¿÷Ã÷Å÷Ù÷D V¸U¸UÒUÕUÛUçUéUøUÿUV.V5VbViVmV…VV®V·V·V·VÄVýV WW"W5WCWTWgWtW…WœW¢WéWûW(X/XNXUX`X|X|XˆXŠXŠXX˜X˜X¨X«X«X·XÃXÜXèXñXüXY Y Y Y1YJYQYXY^YaY¨YˆP,<à‹à‹ŒŒŒ4#pOpOyOŽOŽOO°O°OµOŠ ÌÐ…÷‹÷85?‚¡†¡Š¡Ž¡š¡¢¡Œ¼
5<00><><00><>®<>˛<>ą<>Ŕ<>Í<>Ű<>ä<>ç<>í<>ó<>ú<> *0?KNQY^t€‚<00>†‚†‚†‚†‚‰‚™‚ §‚ą‚Ť0HPŠü’üµüÎüöüŽÜ<00>´€h€h¦h®hşhĎhĎhĺhíhýh i ii/i2i7iEiYi`ijijiii•iŁi©i±iĽiÚiäiçięiďiýijj j#j+j9jOjYj\j\jcjgjyjŹthOhO|O<00>OO“OŻOŻO˝OżOżOĎOŃOŃOáOéOéOňOţOPP-P-P1PWP<00>X"Ă_Ă_Í_á_ň_ý_``*`0`3`D`_`c`@Šqi{i<00>iii¤i¸iľiČiäiči@!-ËřËřŮřŢřářóřůřüřţřůL¬»‚قٌٕ٤٪ٹٿŮÎŮÔŮăŮéŮřŮţŮÚÚ(âč3q3qIqeqwq}q<00>qä{°pwpwŽw—wşwÄwÖwŮwáwäwęwíwůw xxx+x6x;xAxSxSxbxexoxrx~x<00>xťxŁx°x»xŔxĆxŘxŘxŘxŘxăxăxńx8ˇ« ŃőëIëI
J JJ"J0JQJ_JmJxJ<00>J—J™J™J«J±J·JąJżJĹJČJÎJĐJŮJčJîJîJîJőJK<00>@%ťť‹ťŽť–ťT<00>ţ<00>ţ—ţ§ţ˛ţ¸ţĂţĂţĂţÇţŐţš$@Effo}<00><00>`p¶ý¶ýÓýŮýçýçýűýţ
ţţţţśHřĘʀʄʙʣʣʥʳʝD"/!‡!‡2‡7‡7‡=‡žtąŇĂ/Ă/Ë/Ü/000<0J0X0a0t0{0…0“0©0ż0Á0×0í0í0í0ď0źX{ŤGG4GDG\GhGtGtG†GŚGŚG<00>G¤G¦G¦G®G @‡ÔŹÔ—ÔśÔ˘Ô¤Ô¤ÔŞÔˇ,ÚáĂpĂpŃpôpßpq
@ -2963,7 +2963,7 @@ OO!O+O{O
55Ő |řQřQüQ#R-RÖŔnš«<>«<>Ă<>Ę<>Ň<>ç<>đ<>đ<> "‰-‰2‰<‰P‰R‰]‰]‰l‰t‰‰<00><00>ډ—‰ť‰ ‰Ł‰¨‰Ż‰ą‰É‰×@/;€ŹŚŹ™Ź¤Ź°Ź˝ŹĂŹĆŹÉŹŰŹŘ0' 8kqssyŮ<NYK7K7S7q777Ł7˛7Ě7ä7ć7č7Ú<00>k;;QT``bo}…‘<00>“‘<00>®‘Ŕ‘Ë‘×á‘ä‘ć‘é‘ë‘î‘ó‘ř‘ü‘
Ű<<00>Ś0R0R>RLRQRWRgRgRmRŠR<00>RÜ}ž…ŇŽŇ<00>ҜҠҧҮҷŇÎŇÎŇÓŇŐŇŐŇŮŇŰŇŰŇßŇćŇćŇëŇűŇ ÓÓÓÝLQ`B˛B˛K˛K˛Z˛i˛z˛~˛ޞĄ˛©˛©˛®˛Ţ$»g»gŐgńgß ű˙<00>đ<00>đŕ ŕäžďžď˘ďŻď±ďáÔ,]Ł Ł « ł Á Ú é ó ˙ 
 ' 8 T \ h p x x <00>    ¬ ľ Ň   " = Z \ n w w ž ° ° ľ ľ Ă Ç âś$CCŁC©CşCÉCçCDD DD(D4D4DADSDXDD†D—DˇD¦D¦D¦DĆDćDEE
Eãxv<00>3"3"G"Q"W"c"s"v"z"ƒ"“""Ÿ"¢"´"Ú"â"ë"ë"ñ"#"#(#5#ä ëÓ=Ó=á=æ=î=ö=>>>$>6>K>a>w><00>>Ÿ>¦>¦>¼>É>É>ß>î>î>õ>ü>???å@nzæçæçèèè<00>èæ0ª‘ª‘¸Б   çDŒ 7EPTX\`ly|Œ’èÏëCCNValwª³Çî&BNYq|ƒŽ©éLÁÐkIkI…I˜I­I³I¹IÈIÖIÖIÙIäIêˆúãŒãŒùŒ <0A><1A>,<2C>,<2C>><3E>I<>_<>_<>o<>q<>q<>q<><><00><><>˜<> <>¤<>¬<>²<>¸<>¸<>»<>É<>ë|<00>½²½½ë½û½¾Œ¾<00>¾”¾”¾¤¾ª¾­¾¿ì8 ƒœŽœ±œÇœÊœÓœíH=K’Œ¥Œ¾ŒÓŒÙŒߌߌçŒéŒ<15>îL \ógógûghhh&h0hShShehrhh‡h•hÐhÞhiii-i:iGiLi[i<00>i—i¨i®i³i³iÅiÒißiäiói'j.j?jEjGjGjOjOj\jqjwjŠj®j»jËjÐjÖjãjîjôjÿjÿjkkk)k.kMkZkgklklkpk‰kï@Zfë7ë7ù788 8!8(8*8/8<8ð, úØúØÙÙÙÙñ(%SPSPaP}PPŽP”Pò<ì÷««½Éßù   F ó$c`c`l`u`{`€`ô<00>Aap<>p<>z<><00><>¦<>±<>¹<>ü<>3Lk|†‘Ÿ‘¸Á‘Ì‘×ú‘ü‘$7JJNõ$ôùÌÌ̌ՌیàŒö 
Eãxv<00>3"3"G"Q"W"c"s"v"z"ƒ"“""Ÿ"¢"´"Ú"â"ë"ë"ñ"#"#(#5#ä ëÓ=Ó=á=æ=î=ö=>>>$>6>K>a>w><00>>Ÿ>¦>¦>¼>É>É>ß>î>î>õ>ü>???å@nzæçæçèèè<00>èæ0ª‘ª‘¸Б   çDŒ 7EPTX\`ly|Œ’èÏëCCNValwª³Çî&BNYq|ƒŽ©éLÁÐkIkI…I˜I­I³I¹IÈIÖIÖIÙIäIêˆúãŒãŒùŒ <0A><1A>,<2C>,<2C>><3E>I<>_<>_<>o<>q<>q<>q<><><00><><>˜<> <>¤<>¬<>²<>¸<>¸<>»<>É<>ë|<00>½²½½ë½û½¾Œ¾<00>¾”¾”¾¤¾ª¾­¾¿ì8 ƒœŽœ±œÇœÊœÓœíH=K’Œ¥Œ¾ŒÓŒÙŒߌߌçŒéŒ<15>îL \ógógûghhh&h0hShShehrhh‡h•hÐhÞhiii-i:iGiLi[i<00>i—i¨i®i³i³iÅiÒißiäiói'j.j?jEjGjGjOjOj\jqjwjŠj®j»jËjÐjÖjãjîjôjÿjÿjkkk)k.kMkZkgklklkpk‰kï@Zfë7ë7ù788 8!8(8*8/8<8ð, úØúØÙÙÙÙñ(%SPSPaP}PPŽP”Pò<ì÷««½Éßù   F ó$c`c`l`u`{`€`ô<00>GgÐ<>Ð<>Ú<>í<>\ct“‘¬‘ˑܑæ‘ÿ‘!,7Z\gr{„’—’ª’ª’®õ$ôùÌÌ̌ՌیàŒö 
#Y#Y,Y9YJY÷XŤź = ==#=/=5=8===C=F=K=K=X=\=_=_=e=řDľËĆîĆîŐîÚîăîôîőîď ďďůh-<00>Ó)Ó)ű)ý)***"*&*E*Y*\*n*v*}*ś*Ą*§*Ć*Ď*Ď*Ď*Ô*
+++(+2+9+E+Q+[+[+[+|+|+…+‡+‡+<00>++++ť+ť+˘+¤+¤+©+©+©+­+Č+Ţ+é+, ,,,$,0,<,O,f,x,|,‡,ť,­,Ď,ě,
-
@ -2976,7 +2976,7 @@ E
+o@ úÓúÓÔ ÔÔ0-5óó÷_8Ŕ <00>¤Ć3e3eKeZehexe~e~e‰e”e—eśe¦e´e»eĽeČeÎeÔe×eŕeáeáeíeďeűe
X7‰Í<00>Í<00>ͥ͞ͻÍÉÍÍÍŇÍŘÍćÍéÍîÍńÍńÍÎÎ΄ΆΦΫβλÎÁÎÇÎÎÎŃÎŃÎáÎňÎôÎĎ†Ď <00> K K+K5K8K@KPKPKdKnK„KŽK<00>KŻK´KĹKÓKŢKďKýKLLLL $nłłRłR»RËRÚRßRóRS)SFSNSmS€SśSęSěSđS @¨´Ă\Ă\Ů\ţ\] ]]+]1]4]E]0<00>řŠř<00>ř<00>ř•ř,;B§§ä6„ˇˊ˞˦˭ËÁËÄËĆËéËéËěËüËţËţËĚĚĚĚ̴̤̏̕ĚČĚŘĚÚĚěĚüĚÍÍ Í ÍÍÍÍ´<00>Á¤Ł¤Ł´Ł·ŁÁŁÎŁŇŁŇŁÜŁâŁćŁđŁú٤¤¤<00>¤<00>¤“¤ž¤©¤´¤ż¤Ę¤Ę¤Ň¤LWfvv!v1v1vOvUvevkvqv<00>v<00>v<00>v<00>vŞvhÝóŚŚŚŽŚšŚĄŚ«Ś¶ŚąŚÁŚD<I–٤ٴٶٸŮĂŮÇŮÇŮĎŮ`*>55;5L5S5d5k5k5<00>5<00>5Ź5—5Ą5­5­5Ř56.6;6H6T6°2Z“í“íží˘íĆíŃíŕíěíîî“î•î•îąî»î»îÍîÍîŐîŐîáîőîýîýîďďďPŞ{Ş{ą{Â{Ě{Ń{ă{ă{ă{ĺ{÷{ţ{/|K|L|R|0Ťmmm,m>mDmGmOm<al||<00>|ˇ|©|­|ą|ľ|Â|Č|8gqC8C8L8\8d8q8s8€8€8<00>8\ÉÜNNRexŞ»Ý˙5PkˇĽxXٵtt!t.t3t?t_tetrtt†tŹt“tźt,ĆĘĆĘÚĘěĘńĘä6ó•ó• -47R\ahmm~pŚ–Ł–Ż–Ă–Ě–Ô–ĺ–ĺ–ĺ–î–ő–5—E—M—_—h—y—<00>“—–—–—–—–—˘—ĺ—  Hřcřcd'd3d>dId]dpd{d‡d<00>dťd©d®d˛d»dÔdŕdŕdűd e e.eCeIemeueue<00>e…e‰eˇeŻeÚeµeéeôe fffff2f8fWf\f\fhfnftfvf†f L<00>̵̷̷̜̤̪̯̽Ě!<nyB<>B<>P<>i<>t<>{<7B>Ą<><00><>ł<>" GKyyy.y4y#lŞ"•"•6•R•b•b•v•€•„•<00>••¦•¨•Ľ•ŕɕؕë•ń•ř•
JVbjt“–¦–ł–Ä–×Ý–$—6—D—Z—i—t—Š—<00><00>¤—Č—Ô—ß—ć—ě—ó—ü—˙—&<26>$ ŻÔCÔCîCôCôCDDDDD&D/D/D5D9D<DFDQDQD`DiDiDtDyD|DDD…DŚDŚDŚDŚDŚDšD% ĚĐďďď&¤ŹôPzPzfzrzzzzŹzŁzµzĂzŐzÚzŕzĺzüz{{-{-{:{H{T{d{v{v{z{€{<00>{{{{š{©{ą{˝{â{â{ń{ó{ů{||(|2|A|F|F|R|R|`|i|i|x|¦|Ş|­|±|¸|Ă|Ů|î|ý| }}}},}2}9}F}L}L}S}l}q}y}<00>}Š}}š} ~',ŰŽŰŽäŽ˙ŽŹŹ
<EFBFBD>(}Ú-“2“7“<“A“F“K“c“„“•“¯“¼“œʓϓԓò“Ý“-”-”2”B”H”R”W”`”e”j”z”¨”Ý”â”ì”ù”.•.•U•Z•_•d•…•ƒ•“•Ÿ•¶•¿•ƕҕޕ#$-2í–)(éïqqµqÇqÓqÙqáq*‹¬®¬¶¬¾¬ɬάä¬ñ¬ú¬ÿ¬.­5­=­K­R­x­x­<00>­˜­§­È­Эã­ó­®®Œ®›®¼®Ç®Ö®æ®ö®¯ ¯ ¯ ¯+4ž§k\k\o\€\<00>\¡\ª\¯\¿\,p !ww¥w²w·wÃwÉwÐwìw"x+x4x@x-ĉĕĕĤīīijÄÅÄÎÄîÄóÄ ÅÅŜŨžÅÔÅÖÅâÅøÅÆ„ƉƕƫÆÁÆÁÆÉÆÓÆ߯õÆ ÇÇ.8uÄÓÝîöøøþ/80:š¦š¦£¦˦î¦ú¦§§§0,µ¼K]K]T]]]p]v]{]10 P<>P<>^<5E>h<>|<7C><><>Š<>2,8?"4ESY_3@-9íUíUýUV VVVV$V4,ØcØcácìcîcîcóc5\mÊ|Ê|ì|ð|ü| }}"}A}M}V}\}`}n}6QeQeaehe{e‡e®e¸eÂeÊeÒeÚeæeøe
<EFBFBD>(ƒà`“`“h“€“<00>’“—“œ“¡“¦“«“Óä“õ“%”*”/”4”R”=”b”g”o”<00><00>’”¢”¨”²”·”À”Ŕʔڔ=•B•L•Y•c•q••ޕޕµ•º•¿•Ä•å•ã•ó•ÿ•&2>``gnszƒ–„–<00>M—)(éïqqµqÇqÓqÙqáq*‹¬®¬¶¬¾¬ɬάä¬ñ¬ú¬ÿ¬.­5­=­K­R­x­x­<00>­˜­§­È­Эã­ó­®®Œ®›®¼®Ç®Ö®æ®ö®¯ ¯ ¯ ¯+4ž§k\k\o\€\<00>\¡\ª\¯\¿\,p !ww¥w²w·wÃwÉwÐwìw"x+x4x@x-ĉĕĕĤīīijÄÅÄÎÄîÄóÄ ÅÅŜŨžÅÔÅÖÅâÅøÅÆ„ƉƕƫÆÁÆÁÆÉÆÓÆ߯õÆ ÇÇ.8uÄÓÝîöøøþ/80:š¦š¦£¦˦î¦ú¦§§§0,µ¼K]K]T]]]p]v]{]10 P<>P<>^<5E>h<>|<7C><><>Š<>2,8?"4ESY_3@-9íUíUýUV VVVV$V4,ØcØcácìcîcîcóc5\mÊ|Ê|ì|ð|ü| }}"}A}M}V}\}`}n}6QeQeaehe{e‡e®e¸eÂeÊeÒeÚeæeøe
f$f0f9fGfMfSfVf]fef7¬F†â•âˇâŞâżâčâúâă ăŚăŽăŽăŽă¦ă¦ă¸ăŔăŰăŰăŰăíăôăôăä ää8$Ś9X˝{]{]‡]<00>]™]ź]«]·]ż]Ĺ]Ë]Ó]á]ě]ô] ^^,^5^5^:^?^M^T^Y^Y^_^f^k^w^^<00>^<00>^<00>^ź^Ł^°^˝^Â^Ě^Ě^Ő^Ü^č^ó^_____%_,_3_:_A_H_O_V_\_e_k_~_Ź_«_ş_˝_Ă_:|Kfîňîň óó<00>ó<00>óŤó›ó˘ó˘ó˘ó°ó;,ĂĂŰć 08<ŕČüłÂĚŐćö )GP]iuuڞĹä÷÷$YEjo<00>ŤŤ¦´»ĆÔÔŮĺ=D&ó`ó`ü`
a
a aaaa,a-a2a>LRa ˘ ˘˘?(ÄĘ“;“;ś;Ł;Ă;Ę;Í;@8GQġġѡ١ܡęˇîˇüˇ˘˘A0    + / 1 6 B<±Ľ{n{nn¤n¸nÁnŰnânřnţno8oCTct××(×:×D×N×i×o×q×|חף׾×Ä×Ä×Ä×Ä×Ę×DPáńóöóöýö÷ß÷E(MScckyFH!˛†˛†Ŕ†Ě†Ń†Ń†â†ô†ů†ů†˙†Gś'J3a3aMana€a‡aaťaĄa°a»aČa×aŕaçaëaëańa÷abbb'b,b,b,b0b:bHXÓĺó0ó0˙011&12191P1R1i1i1k1n1t1IOp0b0bVbYbgbb<00>bťb˝b˝bÜbŢbŢbýb˙b˙bcc3c:cCcNcRcjclccšcˇcÔcJHíűÂŰÂŰÓŰßŰăŰďŰ÷ŰÜ ÜÜÜÜK<#šĄšĄ¨Ą°Ą¸ĄČĄÔĄŢĄ ¦¦¦L4§°űműmn!n*nDnKnangnznM4YbşÖşÖĂÖËÖ×ÖčÖóÖűÖ××NZżżŤż¬żËż׿ëżďżőżŔŔ ŔŔŔŔ…Ŕ‰ŔŹŔťŔˇŔ§ŔąŔąŔąŔąŔĽŔÁŔĆŔĚŔŕŔäŔęŔőŔůŔ˙Ŕ
@ -2984,7 +2984,7 @@ a aaaa,a-a2a>LRa
Á
ÁÁÁ†ÁO¬Đ÷”·™·˘·˘·®·˝·Ę·ηŘ·î·î·ţ·
¸¸¸(¸3¸;¸@¸R¸R¸R¸Z¸h¸v¸€¸<00>¸<00>¸•¸˘¸˘¸´¸P<00>? E EMEPE^EgEgE~EŹE¦E«EľEËEĐEÔEĺEFFF F(F:FIFLF<00>FQ`ąÍ˓˓ç“ę“ď“ő“ţ“#”'”/”;”=”=”@”L”R<00>6<00>řPřPQQQ<Q`QgQrQ<00>QQˇQ©QŻQĽQĚQŕQĺQôQR'R1R'RBRDRNRDR_RaRaRqRqRR<00>R•RÁRčRčRđRóRS!S'S4SDSXS]SlSS˘S®SÁSáSďSáSüSTTTT!T!T1T1TDTUTZT†T<00>T­T­TµT¸TĆTËTŢTéTřTřTU{US0 ›ë›ë©ëłëąëÂëÉëÍëÓëT(Źş}ş}Ć}Ě}Ň}ë}ö}U çëqdqdzdŚdV0ÔÜĄš¬š˛šĘšÍšŮšW¨7]čč .€3€8€H€M€h€h€v€}€<00>Š€’€ €¦€¨€¸€¸€ż€Ĺ€Ě€Ô€â€č€ę€ę€ú€P<>X<<00>Žđ-đ-..$.>.I.Z.\.Š.Y@+ççZĽEŚş´ş׺ćş»»»€»<00>»›»Ć»Ö»Ű»ă»ĽĽ[$0uKKScsť«ąŔË×ěú$9F[ezُĆĆÔŕě ' 6 E S _ k |  ¦ · Á Ó ĺ ÷  !<!J!_!„!!¤!ł!Î!ĺ!î!ů!" """."\@nzËFËFÓFôFřF GGGG]8AKŇ<>Ň<>â<>ĺ<>ç<>ě<>ď<>ň<>÷<>˙<>^ bH)H)S)W)_)€)Ť)ž)©)˛)Č)Ű)ô)**,*<*O*W*x*Ť*<00>*˘*Ç*Ě*Ö*č*+++2+*+M+e+i+n+n++++¤+·+Í+Ď+Ď+â+ę+ę+ę+ü+ü+,,,,0,6,d,_@.: ů ůůů` W[`Q`QdQsQuQačÎč<>č<>&‰6‰H‰L‰O‰X‰[‰l‰l‰l‰s‰€‰<00><00>…‰â‰ů‰ü‰ţ‰ŠŠŠ†Š‹Š‹Š‹Š‘ŠĄŠbD ŠąŠąžąĆąéąöąşşc ŹN N \ k d4
R€R€`€e€h€n€q€s€y€e8îøŠ›Š›˜ž›§›­³›¼›¿›Å›fhRhqq=q?qTqtqzqtqq“q™q“q°q²q²qÂqÂqÊqùqg0PP$P6PDPHPLPLPQPht/»»ÆÕäò 0St¨»ÌÕâù)00EFJiŒ&ºÊºÊÄÊÆÊÞÊìÊÿÊˈË<00>˱˴˶˽ËßËâËâËåËðË÷ËþËj @ŽŽŽŽ£ŽªŽ½ŽÏŽ׎øŽûŽ<03><13>$<24>K<>^<5E>p<>¥<>§<>¸<>Ä<>Ð<>å<>ì<>ý<> <0B><1B>.<2E>:<3A>j<EFBFBD>kØ&Xš<>š<>°<>¿<>Ê<>Ü<>ó<>ó<>žž…ž‡ž¤ž±ž±ž±žžîžõžþžŸ ŸŸŸŸ Ÿl@8Db‡b‡p‡r‡”‡¡‡¡‡«‡mt)B–é–éŸé¯éÒéäéùéûéênüf¡(Z(ZGZIZXZdZpZ…ZŠZ“ZšZ¨Z¶ZÌZÌZÏZÔZÞZÞZèZëZ[[['[,[J[c[l[o[r[w[[<00>[¹[³[å[å[ù[ \\\\"\2\9\<\]o Vz<00>é¥é¥éºéÂéÇéÇéÔéêéüéê êê‰ê‰ê›ê¢ê¢ê´ê¹êÀêpDNˆ^ˆ^œ^ž^®^¼^Æ^ê^__(_6_A_R_W_m_u_z_“_³_³_Ô_Ö_Ö_÷_ù_ù_ ` ````/`7`<`U`x`„`§`§`È`Ê`Ê`ë`ð`ð`aa aaa.a:aZaZafajava„a<00>a¡aµa¼aÃaÆa.bq`AU33;QYYap| §¬½Îàäéërðå8&8&V&Y&\&f&t&&—&Ÿ&©&Ï&Ü&ç&ù&''*'W'\'b'Œ''œ'Ÿ'¬'·'É'Þ'ò'ú' (%(+(N(S(g(((­(È(Þ(ð(ð()2)5)G)s0 øNøNüNOO$O(O,OtH_m[F[F{F‰F<00>F£F©F®F¶F¹FÅFu\Qd¢<>¢<>²<>´<>¿<>Ä<>×<>à<>å<>ê<>ú<> vŒch,h,s,{,†,,œ,¥,»,Ï,Ø,ì,-)-C-K-a-i-‡-“-ž-¶-Á-È-Ó-Ø-í-wxŸ„û‡û”ûšû<00>û¥û®û½ûÅûÅûÐûÐûØûÚûÚûáûäûðûx0 (2IOQWyLZi<><>˜<>š<>¤<>Í<>Û<>Ý<>ò<>ý<>ŽŽzx5XPXPnPPPžP­P³P·PÌPÚPâPèPëPõP{.o;X;XUXcX|X‡XžX«X½XÒXâXéXúXYYY;Y;Y?YJYVYXYXYXY^Y^YaYkYkY†Y“Y“Y˜Y¨Y»YÁYÊYÔYäYøY Z1Z<Z<ZNZNZNZdZtZZ”ZšZªZ®Z®Z³Z³ZÉZ|,07B‡B‡K‡U‡V‡[‡}¢Ã]](]*]8]D]]]n]w]<00>]•]«]§]·]×]×]î]ð]ð]^ ^ ^^^ ^ ^(^<00>^~¬
R€R€`€e€h€n€q€s€y€e8îøŠ›Š›˜ž›§›­³›¼›¿›Å›fhRhqq=q?qTqtqzqtqq“q™q“q°q²q²qÂqÂqÊqùqg0PP$P6PDPHPLPLPQPht/»»ÆÕäò 0St¨»ÌÕâù)00EFJiŒ&ºÊºÊÄÊÆÊÞÊìÊÿÊˈË<00>˱˴˶˽ËßËâËâËåËðË÷ËþËj$FŽŽŽŽ£ŽªŽ½ŽÏŽ׎øŽûŽ<03><13>$<24>K<>^<5E>p<>¥<>§<>¸<>Ä<>Ð<>å<>ì<>ý<> <0B><1B>+<2B>;<3B>K<>[<5B>k<><00><><> <>Ð<EFBFBD>kØ&Xš<>š<>°<>¿<>Ê<>Ü<>ó<>ó<>žž…ž‡ž¤ž±ž±ž±žžîžõžþžŸ ŸŸŸŸ Ÿl@8Db‡b‡p‡r‡”‡¡‡¡‡«‡mt)B–é–éŸé¯éÒéäéùéûéênüf¡(Z(ZGZIZXZdZpZ…ZŠZ“ZšZ¨Z¶ZÌZÌZÏZÔZÞZÞZèZëZ[[['[,[J[c[l[o[r[w[[<00>[¹[³[å[å[ù[ \\\\"\2\9\<\]o Vz<00>é¥é¥éºéÂéÇéÇéÔéêéüéê êê‰ê‰ê›ê¢ê¢ê´ê¹êÀêpDNˆ^ˆ^œ^ž^®^¼^Æ^ê^__(_6_A_R_W_m_u_z_“_³_³_Ô_Ö_Ö_÷_ù_ù_ ` ````/`7`<`U`x`„`§`§`È`Ê`Ê`ë`ð`ð`aa aaa.a:aZaZafajava„a<00>a¡aµa¼aÃaÆa.bq`AU33;QYYap| §¬½Îàäéërðå8&8&V&Y&\&f&t&&—&Ÿ&©&Ï&Ü&ç&ù&''*'W'\'b'Œ''œ'Ÿ'¬'·'É'Þ'ò'ú' (%(+(N(S(g(((­(È(Þ(ð(ð()2)5)G)s0 øNøNüNOO$O(O,OtH_m[F[F{F‰F<00>F£F©F®F¶F¹FÅFu\Qd¢<>¢<>²<>´<>¿<>Ä<>×<>à<>å<>ê<>ú<> vŒch,h,s,{,†,,œ,¥,»,Ï,Ø,ì,-)-C-K-a-i-‡-“-ž-¶-Á-È-Ó-Ø-í-wxŸ„û‡û”ûšû<00>û¥û®û½ûÅûÅûÐûÐûØûÚûÚûáûäûðûx0 (2IOQWyLZi<><>˜<>š<>¤<>Í<>Û<>Ý<>ò<>ý<>ŽŽzx5XPXPnPPPžP­P³P·PÌPÚPâPèPëPõP{.o;X;XUXcX|X‡XžX«X½XÒXâXéXúXYYY;Y;Y?YJYVYXYXYXY^Y^YaYkYkY†Y“Y“Y˜Y¨Y»YÁYÊYÔYäYøY Z1Z<Z<ZNZNZNZdZtZZ”ZšZªZ®Z®Z³Z³ZÉZ|,07B‡B‡K‡U‡V‡[‡}¢Ã]](]*]8]D]]]n]w]<00>]•]«]§]·]×]×]î]ð]ð]^ ^ ^^^ ^ ^(^<00>^~¬
1ÓëÓëŢëâëěě ěźěźěŔěÂěÂěăěĺěĺě÷ě÷ě˙ě˙ě ííŹí$HM–ę–ęšę§ęÝęéę<7Bë—ë—˙—˙—<1B>#<23>3<>:<3A><<3C>D<><00>,POPOTOhOlOlOpO,ćí{1{11<00>1ź1ˇ1<00><??3?C?H?n?”?ş?Á?Č?Í?Ů?Dusswťź°·ĽÁČÚÚÜ,
0O0O4OHOLOLOPOh@<00>F<00>F“FžF®F¶F×FćF÷FGG,G<GOG_GgG<00>GťG¨G˛G×GÜGćGóGHH-H-HTHcHmHŠH•HťH¸HĂHŘHáHűH
III$IAINITImIiI<00>IŽIIˇIˇIˇI¬I¬I˝I˝IĐIâIőIţIţIJ!J)J)J)J7JBJIJTJUJiJmJtJhš»-»-Ă-á-ň-. .-.>.Q.X.i.<00>.<00>.<00>..§.ż.Á.Á.Ă.<00>puŤĘ×Ę×ä×ü×ŘŘŘ<00>؞؞؞ثŘ<00>ŁÁ‹«®«ą«Č«Ř«ä«ć«ó«
@ -3007,7 +3007,7 @@ ooo#o;oJobouo~o
Ţ
ě
ű
' 4 8 E W W e l ~ ~ Œ Œ <00> £ ªhaw²²²²Ô²Ú²ã²ã²ì²û²³г«$(-Ú Ú è ð ¡¡¬\i|ppzˆš’£’µ’µ’µ’¶’Å’Î’Ô’Ø’Ü’ò’÷’ü’­<@K¢¡¢¡¸¡¡Æ¡Ë¡סÜ¡à¡ä¡î¡®<ðû³<>³<>È<>·<>×<>ÿ<>¯ ¼<00>µ‰µœµ®µ¹µĵÚµæµüµ‘¶‘¶¨¶ȶ϶ñ¶°˜IkCACASA]AbAgAgAvA{A”A<00>A¨AªA«A«A·AÂAÄAÓAÕAáAëAùAþA BBBBBB±žßžß§ßªßÁßÁߨßìß
' 4 8 E W W e l ~ ~ Œ Œ <00> £ ªhaw²²²²Ô²Ú²ã²ã²ì²û²³г«$(-Ú Ú è ð ¡¡¬\oÐ’Ð’Ú’ß’è’ú’%“.“4“8“<“R“W“\“­<@K¢¡¢¡¸¡¡Æ¡Ë¡סÜ¡à¡ä¡î¡®<ðû³<>³<>È<>·<>×<>ÿ<>¯ ¼<00>µ‰µœµ®µ¹µĵÚµæµüµ‘¶‘¶¨¶ȶ϶ñ¶°˜IkCACASA]AbAgAgAvA{A”A<00>A¨AªA«A«A·AÂAÄAÓAÕAáAëAùAþA BBBBBB±žßžß§ßªßÁßÁߨßìß
ŕ ŕ<00>ŕ•ŕłŕµŕÍŕŕŕŕŕăŕ˛8ˇ b bb(b2b=bFbIbSbłl 7LL9L<LDLXLXLmLwLŽL<00>LšLąLľLĎLÝLčLůLMMMM´47@lAlA€AśAžA©A«A«AłAµ<00>7U#M#MIMMMPM`MyMyMŚM•MŞMłMşMżMÉMŇMÜMßMâMçM˙M NN8NFNVNVNhNhqÇÔ©Ô©ň©Ş ŞŞŞ‚Ş„Ş„ŞŤŞŹŞŹŞ<00>ŞšŞšŞŁŞĄŞĄŞ®Ş°Ş°ŞąŞ»Ş»ŞÄŞĆŞĆŞĎŞŃŞŃŞÚŞÚŞÝŞâŞâŞâŞĺŞčŞńŞ ««<00>«<00>«<00>«‘«Ą«¨«­«­«¶«¶«Ä«Č«Ł¬·4€€ЀҀ׀ڀ݀â€č€¸ ˘¦YbYbbbobtbą0[cRR$R2R8RIRKRKRPRş(±a±aĹaĐaŮaÜaäa»p‹Ü—ܥܱܽÜÉÜÉÜŰÜáÜáÜîÜúÜÝĽ ţţ˝DddĄd·dľdÂdĹdĐdŘdědďd÷dľ<00>áźá±áĆáĚáŃá×áÚáčáôá÷áúáâ âââ âżh˛Č..PgqżŮŮď,,??KŔ\(ţčţčé
éé€é„éÁ\r¸„¸„΄Ő„ä„ë„ô„ô„!…5…>…D…O…O…m…Â0ËÓ™™Ö™ššĂlXo<00>ý„ýŚý‘ý‘ý–ý™ý›ýźýŻýÄ<¤ŻĹ4şĂó:ó:ý:ý:-;C;;Ť;;Ć<00>;YăŹăŹěŹöŹöŹ<06><13><1C>%<25>.<2E>7<>K<>K<>V<>\<5C>^<5E>m<>u<><>Ť<><><><>¸<>Č<>Î<>Ó<>Ç @rrrr<rPrTrcror}rŚrŃrŃrýrs$s3s1s`s`s†s†ss<00>s<00>sźsÄsßsíst'tBtKtatetgtgtytyt{t{ttťtťtˇt¦tŻtÁtČtÖtĺtu&u8u8u>u™wČ8Ž<00>˛Ř˛ŘÁŘĎŘćŘęŘęŘďŘďŘőŘÉ<5@j<>j<><><><00><>ť<>¨<>˝<>Ŕ<>Ĺ<>Ń<>Ę´^ÇË Ë Ö ÷ ţ  '6JZp}<00>±ŔÍÖÖď3fkµŔŕéńú >SfŻ»ÍŇäö*==p{ ´ŔĚĚŃáď29>^eŠŠ­Ľćččí(==NUjj{{~˨'„ź’źžźŞźłźľźÉźÔźŮźçźőź " - 4 H d p x <00> …  ˇ ¨ ¶ Ĺ Ç Đ Ú Ěh
 †ů†ů”ůŻů»ůÇůÓůÜůĺůîů÷ůú úúúÍ0˝Ĺ;o;oYouoŚo<00>ožo¤oĂoÎL-ËWËWÚWčWčWňWüWX$X-X3X4X:XĎ,rą<00>8<00>88Ź88ť8¨8°8·8·8Ć8Ë8×8ă8ó8 99!9)909A9[9o9v9‡9<00>9«9°9Â9Ç9ę9î9÷9˙9:':.:?:@:D:f:w:Ś:—:¤:¤:«:Í:Ţ:ä:î:Đ8Š  + 4 ; B E M ŃD<00>Žr}r}v}|}}<00>}Ž}”}š} }¦}¬}˛}´}ŇhČh@h@s@@ś@«@µ@ľ@Ď@ç@˙@A"A*AKA`AvA€AĄAŞA´AĹA×AîAîAB0B:B:BYBlBtBtB“BŁBÁBCÔBÜBÇB'C@CHCHCbCwC•CźC˛CşCĄCDDD;D;DLDLD_DqDyDŚD¤D·DżDżDÍDÖDáDďDöDEEEE EÓ<˛˝ńbńbcc2cIcSc]c`cpcÔ8§±ybybťbˇbşbŃbŰbŢbîbŐLú ůů„ůÖ źŁ˘|˘|¦|ż|Á|×`L`ňˇňˇ˘˘…˘<00>˘<00>˘ś˘Ř #G‚úŚúšúšú˘ú»úŢúŕú˙úű„űŽűśű´űĚűŐűŐűîűřűüüŮĽY<00>ú–ú™ú¬ú¬úŔúÂúÂúÖúÖúŮúÜúęúîúű

View file

@ -469,7 +469,7 @@ class CKernel
//Run-Levels
#define RLf_16BIT 0
#define RLf_VGA 1
#define RLf_VESA 1
#define RLf_32BIT 2
#define RLf_PATCHED 3
#define RLf_16MEG_SYS_CODE_BP 4
@ -491,7 +491,7 @@ class CKernel
#define RLf_ONCE_USER 20
#define RLF_16BIT (1<<RLf_16BIT)
#define RLF_VGA (1<<RLf_VGA)
#define RLF_VESA (1<<RLf_VESA)
#define RLF_32BIT (1<<RLf_32BIT)
#define RLF_PATCHED (1<<RLf_PATCHED)
#define RLF_16MEG_SYS_CODE_BP (1<<RLf_16MEG_SYS_CODE_BP)
@ -4009,7 +4009,7 @@ class CVBEInfo
capabilities,
video_modes;
U16 video_memory,
U16 total_memory,
software_revision;
U32 vendor,

Binary file not shown.

View file

@ -46,7 +46,7 @@ public U0 BootRAM(U8 *filename=NULL)
hi_image->boot_src=BOOT_SRC_RAM;
hi_image->boot_blk=0;
hi_image->boot_patch_table_base=lo_image(U8 *)+hi_image->h.patch_table_offset;
hi_image->sys_run_level =lo_image->sys_run_level&(RLF_VGA|RLF_16BIT);
hi_image->sys_run_level =lo_image->sys_run_level&(RLF_VESA|RLF_16BIT);
MemCopy(&hi_image->start,&lo_image->start,
sizeof(CKernel)-offset(CKernel.start));

View file

@ -42,7 +42,7 @@ public class CGrGlobals
hide_row,hide_col;
} gr;
//See $LK,"RLf_VGA",A="FF:::/Kernel/KStart16.CC,RLf_VGA"$
//See $LK,"RLf_VESA",A="FF:::/Kernel/KStart16.CC,RLf_VESA"$
//See $LK,"SysGrInit",A="MN:SysGrInit"$()
//Allows consts to be used instead of vars.
HashPublic("GR_WIDTH",HTT_DEFINE_STR);;

View file

@ -67,7 +67,7 @@ U0 GrSetUpTables()
if (((x-1)^(y-1))&1 && SqrI64(y*2-k)+SqrI64(x*2-k)<rr)
GrPlot0(dc,x-1,y-1);
}
if (!Bt(&sys_run_level,RLf_VGA)) { //if text mode
if (!Bt(&sys_run_level,RLf_VESA)) { //if text mode
MemSet(text.vga_text_alias,0,TEXT_ROWS*TEXT_COLS*sizeof(U16));
MemSet(gr.vga_text_cache,0,TEXT_ROWS*TEXT_COLS*sizeof(U16));
} else {

View file

@ -10,7 +10,7 @@ U0 GrPaletteIndicesSet()
// Set 16-colors to use first 16 DAC BGR entries, so we
// never need to worry about indexes, just DAC palette settings.
I64 i;
if (!Bt(&sys_run_level,RLf_VGA)) return;
if (!Bt(&sys_run_level,RLf_VESA)) return;
PUSHFD
CLI
while (LBts(&sys_semas[SEMA_VGA],0))
@ -29,7 +29,7 @@ U0 GrPaletteIndicesSet()
public U0 GrPaletteColorSet(I64 color_num,CBGR48 bgr48)
{//VGA has 6-bits for blue, for green, and for red.
if (!Bt(&sys_run_level,RLf_VGA)) return;
if (!Bt(&sys_run_level,RLf_VESA)) return;
PUSHFD
CLI
while (LBts(&sys_semas[SEMA_VGA],0))
@ -46,7 +46,7 @@ public U0 GrPaletteColorSet(I64 color_num,CBGR48 bgr48)
public CBGR48 GrPaletteColorGet(I64 color_num)
{//VGA has 6-bits for blue, for green, and for red.
CBGR48 res=0;
if (!Bt(&sys_run_level,RLf_VGA)) return 0;
if (!Bt(&sys_run_level,RLf_VESA)) return 0;
PUSHFD
CLI
while (LBts(&sys_semas[SEMA_VGA],0))
@ -100,5 +100,5 @@ public U0 PaletteSetStd()
public U0 PaletteSetPastel()
{//Activate std palette.
GrPaletteSet(gr_palette_pastel);
fp_set_std_palette=&PaletteSetPastel;
fp_set_std_palette=&PaletteSetPastel;
}

View file

@ -398,7 +398,7 @@ U0 GrUpdateVGAGraphics()
U0 GrUpdateScreen()
{//Called by the Window Manager $LK,"HERE",A="FF:::/Zenith/WinMgr.CC,GrUpdateScreen"$, 30 times a second.
CDC *dc;
if (!Bt(&sys_run_level,RLf_VGA)) //if text mode
if (!Bt(&sys_run_level,RLf_VESA)) //if text mode
GrUpdateTasks;
else {
GrUpdateTextBG;
@ -413,7 +413,7 @@ U0 GrUpdateScreen()
(*gr.fp_final_screen_update)(dc);
DCDel(dc);
if (!Bt(&sys_run_level,RLf_VGA)) //if text mode
if (!Bt(&sys_run_level,RLf_VESA)) //if text mode
GrUpdateTextModeText;
else {
DCBlotColor4(gr.dc1->body,gr.dc2->body,gr.dc_cache->body,

View file

@ -1,5 +1,5 @@
Cd(__DIR__);;
#include "BinRep"
#include "BinRep"
#include "CPURep"
#include "Diff"
#include "Find"
@ -14,4 +14,5 @@ Cd(__DIR__);;
#include "TaskRep"
#include "ToDolDoc"
#include "ToTXT"
#include "VideoRep"
Cd("..");;

33
src/Zenith/Utils/VideoRep.CC Executable file
View file

@ -0,0 +1,33 @@
public I64 VideoRep(Bool full=TRUE)
{//List available VBE modes as indicated by the BIOS. Show current mode;
I64 i, mode_count = 0;
CVBEModeShort *mode;
if(full)
{
"\nVBE Version %X.%X\n\n", sys_vbe_info.version.u8[1], sys_vbe_info.version.u8[0];
"Manufacturer : $$BLACK$$%s$$FG$$\n", sys_vbe_info.oem;
"Vendor name : $$BLACK$$%s$$FG$$\n", sys_vbe_info.vendor;
"Product name : $$BLACK$$%s$$FG$$\n", sys_vbe_info.product_name;
"Product revision : $$BLACK$$%s$$FG$$\n", sys_vbe_info.product_revision;
"Software revision : $$BLACK$$%X.%X$$FG$$\n", sys_vbe_info.software_revision.u8[1], sys_vbe_info.software_revision.u8[0];
"Hardware memory : $$BLACK$$%d MiB$$FG$$\n", sys_vbe_info.total_memory * 64 / 1024;
"\n\nAll modes shown are 32-bit color.\n\n";
}
"$$CYAN$$ # W x H Mode$$FG$$\n\n";
for (i = 0; i < VBE_MODES_NUM; i++)
{
mode = &sys_vbe_modes[i];
if (mode->height)
{
"$$PURPLE$$ $$BT+X,\"%d\",LM=\"%d\\n\"$$$$FG$$$$LM,4$$", i+1, i+1;
if (sys_vbe_mode_num == mode->mode_num)
"$$RED$$%4d x %4d 0x%X (Current mode)$$FG$$$$LM,0$$", mode->width, mode->height, mode->mode_num;
else
"$$BLACK$$%4d x %4d $$FG$$0x%X$$LM,0$$", mode->width, mode->height, mode->mode_num;
"\n\n\n";
mode_count++;
}
}
return mode_count;
}

View file

@ -180,7 +180,7 @@ U0 DrawMouse(CDC *dc)
y=mouse.pos.y;
POPFD
if (mouse.show && mouse_hard.installed) {
if (!Bt(&sys_run_level,RLf_VGA)) //if text mode
if (!Bt(&sys_run_level,RLf_VESA)) //if text mode
gr.text_base[mouse.pos_text.x+mouse.pos_text.y*TEXT_COLS]^=0x7F00;
else {
if (gr.fp_draw_mouse) {