From fcd1560d881894ee4491726bf8710b9f7adfde15 Mon Sep 17 00:00:00 2001 From: xmm15 Date: Wed, 19 Feb 2020 18:34:27 -0600 Subject: [PATCH] Zenith 1.0. FastReboot with Shift+Alt+Del MemBIOSRep improvements Added gruvbox light palette --- src/0000Boot/0000Kernel.BIN.C | Bin 190032 -> 190032 bytes src/Compiler/Compiler.BIN | Bin 194240 -> 194240 bytes src/Demo/Graphics/PoleZeros.CC | 4 +- src/Doc/StandBy.DD | 10 +- src/Home/MakeHome.CC | 13 - src/HomeSys.CC | 2 +- src/Kernel.BIN.C | Bin 189952 -> 189952 bytes src/Kernel/KGlobals.CC | 4 +- src/Kernel/Kernel.MAP | 3342 +++++++++++++++--------------- src/Kernel/KernelA.HH | 9 +- src/Kernel/Memory/BlkPool.CC | 2 +- src/Kernel/Memory/MemPhysical.CC | 2 +- src/Once.CC | 20 +- src/Tmp/Zenith-Latest.iso | Bin 38942720 -> 38944768 bytes src/Zenith/DevInfo.CC | 54 +- src/Zenith/Gr/GrInitB.CC | 2 +- src/Zenith/Gr/GrPalette.CC | 17 +- 17 files changed, 1760 insertions(+), 1721 deletions(-) delete mode 100755 src/Home/MakeHome.CC diff --git a/src/0000Boot/0000Kernel.BIN.C b/src/0000Boot/0000Kernel.BIN.C index 3ab3ff9fb24ffa5abd134a5dcae22a0fae26052b..6735f54a5fe13153d86be2ccaed9bce31dc76490 100755 GIT binary patch delta 389 zcmca`hWo-9?g=LBjgfbb>N#<5UdVEhc{2}7j^o4tHl`2u8yyvxH!tv*EzM$X!Jsq! zU>>8y=J1ry%#6;Py)*vvvTmoh;wx!(N(Nn(CQX zyt$}NkrAqbap&eI?M4c0xdlb3#l_Q_nM5}mu23^#UC9kH-f*h;r{*mf;bMj>vdSIXP%92onU87;P-b!Pm}0}?nFz^EqId@9V? zu>DCj<0)&F)ReUN=?Aiyq_&^g&ZsWTSh@YnDaLws=BkfVr~At?if`||#OR^MXtw>@ h5607BOn;5GFZO3@vSiLltepO!oJnlET_=-JEC9Hql#2iW delta 391 zcmca`hWo-9?g=LB+AQt+^qjaiFJ!sMyqSk3$B|?9Oc2;!Oc=lI~iHyRHiX9OupDJ zHu+t1@N}mi28pagEJ9%rX9}D;Usf^PdfJOu5eb^yJGHfnt zQ)GmyV0^pzNxPB4^j}R((whxes2Q=|>3{sv|ZYiQIVTTN@cs917jaEW6t)o&W!(gKmz9i81=+KjDP8jPlXw`Y=2VCc*+{+ zk_R2)+mCH$)D>o2xBbg0#(H+J02DllkpKVy diff --git a/src/Compiler/Compiler.BIN b/src/Compiler/Compiler.BIN index 25c721c789ececeaf52bd4428a175fb40fe11e41..e851b2eb73a84e30b199504db11df75e1242f43a 100755 GIT binary patch delta 236 zcmX@`mixe4?hS10^@jr(7?>D54H&?HnIY65lK~_KVnM`M7(Fc@Vjvbw%qc%VhXJUL zl`#}33j!b(kOGRaF?kxAfd$!_LP0E`7zc}|u@P8|lO+_y0*Y~Qcq*HjfCafZLP0E` zARmVtR1C}l8n}4{`>IAp!Og*)d;D2IHceiALwU2=%`4mx9^ccMOz-$NuY8)H$+&yF Vq(5UmBjeik&H%>kodHbd%K+=gFpdBK delta 237 zcmX@`mixe4?hS10^$bA3#NcVbz;HN#fq|JJ)F2Zi1ZF|RSQtGmAYvdEOw1`iKL@0a zl`#|~3)Bl@fkYS>*qA&G%`!n^>`b8`77%c-cp4jl#W-0)K`bEP;_y^3GXV>7bA*Ce zK)}c01{DLdCVylR-n@f-RwJX(=HSjf{w$uQ7WR`@-%#FccJm51i>_T_%4EK$Gnp8K eHm`h|pUL=kyQDv3J|pA3_Ravt?VSNk=F0$jt249! diff --git a/src/Demo/Graphics/PoleZeros.CC b/src/Demo/Graphics/PoleZeros.CC index b14d2e05..20c20835 100755 --- a/src/Demo/Graphics/PoleZeros.CC +++ b/src/Demo/Graphics/PoleZeros.CC @@ -105,9 +105,9 @@ U0 PoleZeros() SettingsPush; //See $LK,"SettingsPush",A="MN:SettingsPush"$ Fs->win_inhibit=WIG_TASK_DEFAULT-WIF_SELF_FOCUS-WIF_SELF_BORDER; GrPaletteSet(gr_palette_gray); - GrPaletteColorSet(15,0xFFFF00000000); //White is red + gr_palette[WHITE] = 0xFF0000; //White is red - AutoComplete; + AutoComplete; WinBorder; WinMax; DocClear; diff --git a/src/Doc/StandBy.DD b/src/Doc/StandBy.DD index a5d03c49..d6ab122a 100755 --- a/src/Doc/StandBy.DD +++ b/src/Doc/StandBy.DD @@ -16,11 +16,11 @@ $FG,2$ $FG$ Max Window $FG,2$ $FG$ Horz Tile $FG,2$ $FG$ Vert Tile $FG,2$ $FG$ Text Menu -$FG,2$$FG$ Close AC +$FG,2$$FG$ Close AC $FG,4$$TX+CX+L+PU+UL,"Tongues",A="::/Zenith/God/HSNotes.DD"$$FG$ $FG,4$$TX+CX,"(Works Everywhere)"$$FG$ -$FG,2$ $FG$God Word -$FG,2$ $FG$God Passage -$FG,2$ $FG$God Song -$FG,2$ $FG$God Doodle \ No newline at end of file +$FG,2$ $FG$God Word +$FG,2$ $FG$ God Passage +$FG,2$ $FG$ God Song +$FG,2$ $FG$ God Doodle \ No newline at end of file diff --git a/src/Home/MakeHome.CC b/src/Home/MakeHome.CC deleted file mode 100755 index 742a91fa..00000000 --- a/src/Home/MakeHome.CC +++ /dev/null @@ -1,13 +0,0 @@ -Cd(__DIR__);; - -//If these are not present in /Home, it uses the version in the root dir. You -//can make your own, modified, version of these files in your /Home directory. -#include "~/HomeLocalize" -#include "/Zenith/Boot/MakeBoot" -#include "/Zenith/Utils/MakeUtils" -#include "~/HomeWrappers" -MapFileLoad("::/Kernel/Kernel"); -MapFileLoad("::/Compiler/Compiler"); -#include "~/HomeKeyPlugIns" -#include "~/HomeSys" -Cd("..");; diff --git a/src/HomeSys.CC b/src/HomeSys.CC index 3ef7e243..526b96e2 100755 --- a/src/HomeSys.CC +++ b/src/HomeSys.CC @@ -33,4 +33,4 @@ U0 StartUpTasks() StartUpTasks; -"\nZenithOS V%5.3f\t%D %T\n\n",sys_os_version,sys_compile_time,sys_compile_time; +"\nZenithOS V %5.3f\t%D %T\n\n",sys_os_version,sys_compile_time,sys_compile_time; diff --git a/src/Kernel.BIN.C b/src/Kernel.BIN.C index f365d1f5126b8120ca8c8c1f5e9eccd8e910bc51..0209f5d345b35fdcd524513eb4b620ad15dceb4a 100755 GIT binary patch delta 497 zcmZoT!`*O(dx8o3iGZ6&^_;jjFJ!sMyqSk3$8ll+8`B5-jgAV;n-_SzmShy!+>^AP zk;TG{L1+5GJVuGl;VGY)nN*B6`(*s%WefI<)d~0998flgol$-B+uHTa%+^yGCo?)o zPTtWN$XL3WtLY>o>twa5j0}@6_KQt^*Bs1PI+?3YZE{A-XQmZjCdamhF*7Aio4l>n zmu1bDDU8z{fObrlZ}VX<&ekhR%Sqf^)TYP?Q^GXEV)N7XOnFA@$^Ofav*|fIE2-#h zmRVtK#9Ac)vcqty_~hbSv23ZS@tG+Vo3GtE!^@IeU}(E}*^3}HM)k=*-?;-x$M+H} zK`yRAlVjhzu||4r2UEXI#j^QsS1GH~HTw`R#`a7!|ph;?1`|t!8W&VG)Lek@)uZ35+>b zOp(Uhzn)^OV`skiZOU|iSw`{Yy_Xo(7|pl${a{?fH$7g5NqT!IJCm+Dqu};tJ*I04 jOm~g9NBc9q)M6<~j8EC_QN=WskJ(5gYx{!^CWTl4TUfgF delta 499 zcmZoT!`*O(dx8mj(eLJcdQRM%7qVPr-ps?2!-nTgGCvroo9UbdiM&-f6>%>iX|*cnwezpY)*%xpE4aWbQW zx397_(m1^vT;= zeOab|n!-5U0cgi$`8FT+#NuqdqRfKLMQw_VFeOY?=9{0kXUa2LPWE4ZoGrdMvnthg zv&;%>Bi3X-kR66o#U~fvie-zphm1wg|*lgXv*Y&@5CnWd2hm~Kl$T(dmw4}L4uKCv)6~ujEoAK?LIx>VblZq zN_ex`{~9J{J)qX~AldDg7#WxGFq%$o{4TkD5+CC#L#7Iq?RE}~eauWhjkce2X8gwk z5;+&Zs3#6${7YwC$T9iRN#*T_3K$i+nH>BBBBORb$,,:?DJ 6???@@@+@@@F@L@R@q@v@~@~@@@@@@@@@@@@@AAAAAA.A2AFAIALANA]A`AlA Fdü˼ѼԼ%(+2:@MMc hrr{äӤ!BDSbr dav¢¢Ң  (4PS^^f 4CC]k44=PPPP^PzPzP}PPPP(-3#=EZ\fH v v)v6v;vGvgvmvsvvvvv(Z`nn$RR[cin89i9iGiNiYi^i`iwiwiiiP[k1h1h?hFhQhVh_hnhth{h}hhhh[z3EWm}}:.ʅʅ%2?SfÆdž (9?EQ`x|Çʇчч؇  #+5@LZpÈÈʈԈ  6X]]`ĉȉ؉ۉ 3QTVVipx̊ϊ diff --git a/src/Kernel/KernelA.HH b/src/Kernel/KernelA.HH index 8f30b2c3..b701059e 100755 --- a/src/Kernel/KernelA.HH +++ b/src/Kernel/KernelA.HH @@ -386,7 +386,14 @@ class CSysLimitBase #help_index "Memory/Info" #define MEM_E820_ENTRIES_NUM 48 -class CMemE820 +#define MEM_E820t_USABLE 1 +#define MEM_E820t_RESERVED 2 +#define MEM_E820t_ACPI 3 +#define MEM_E820t_ACPI_NVS 4 +#define MEM_E820t_BAD_MEM 5 +#define MEM_E820t_PERM_MEM 7 + +class CMemE820 { U8 *base; I64 len; diff --git a/src/Kernel/Memory/BlkPool.CC b/src/Kernel/Memory/BlkPool.CC index 4542f205..5a90390d 100755 --- a/src/Kernel/Memory/BlkPool.CC +++ b/src/Kernel/Memory/BlkPool.CC @@ -47,7 +47,7 @@ U0 BlkPoolsInit() if (code_heap_limittype) { - if (m20->type==1) { + if (m20->type==MEM_E820t_USABLE) { lo=m20->base; hi=m20->base+m20->len; if (lotype) { while (m20->type) { - if (m20->type==1) + if (m20->type==MEM_E820t_USABLE) r20+=m20->len; m20++; } diff --git a/src/Once.CC b/src/Once.CC index 7dff791c..c896f642 100755 --- a/src/Once.CC +++ b/src/Once.CC @@ -39,17 +39,17 @@ U0 Tmp() case BOOT_SRC_HARDDRIVE: "$$PURPLE$$$$TX+CX,\"Tip of the Day\"$$$$FG$$\n"; TipOfDay; -// Type("::/Doc/Customize.DD"); -// if (FileFind("::/Misc/Tour")) { -// "\nTake Tour"; -// if (YorN) { -// DocBottom; -// Cd("::/Misc/Tour"); -// InFile("Tour"); -// } -// } + Type("::/Doc/Customize.DD"); + if (FileFind("::/Misc/Tour")) { + "\nTake Tour"; + if (YorN) { + DocBottom; + Cd("::/Misc/Tour"); + InFile("Tour"); + } + } break; } } -PaletteSetPastel; Tmp; + \ No newline at end of file diff --git a/src/Tmp/Zenith-Latest.iso b/src/Tmp/Zenith-Latest.iso index fc217de838ce0429f62cec38546f6e8b9f828e75..347512b02b95c28fa4e7968792f859e54be92c80 100755 GIT binary patch delta 26363 zcmaid2Ut``_qV$grHWz;HbhiV#NCB0D1r!xM!7Q}_JXLWD1ssy3yP+h*o~1BE1DQ1 zc8$6g6npF~_HJUsUX$3r-?>npXZzz=H8h(bLO-udmZ~|U-_|P_m^KS$ChdN zX({~swB>Y-_pigpo-ODSz4jpnH4*SBk`)S+_ce5y|O zIQrdLi+w-et9xdIo(;8SvWheL#hKT|nb32^?-Xb9i!-l_Goj}LD$Md>qVUhvmZ%+M zoe#Coxrv_gi!-l_Gocp(G!ti}TnN{EKO^r#c*Pt)jau=P)>ePbx%PVkXS})4K=Z>4 z|BK<8*)viuhF6?Z^j5aL?XCD9=i;rc7aM5i&nU!O3upLW3fEMhk#gzi$3wgvYCo>i z#XY~~UmmV0&AC8k&2hV5U9YD`O!siqJ_=u>@wT%r@YBqxYHzlb3ZNZ|wu-ewl;)|O zCeqrvrRJTRqq9?+l(Yd>*Xxi&uRU9q)+cKe`xg&pYN#1{;dk1U9-2HfxmDT_ zYepYUElu%DnoZX0eKiJe$AN<~l7|e*>19{Zs{ck)*Wi%n!rkeIYAVx^&6;kGz5JUv zk9M}6-mE#~W*-@m(aXAcpXQaLgE#*5qPIstR{l{S^ znt2uMVxzpRmv3rJfwV40Tgh6#qPDz?_D*eUn74L{oyKB4TwD9jl?#sOw1Jg5^EO6% z!&5WXdcBMGKok4q-hC2j`=@qZ)j?WroZ_OIyke~O_18bI-V}9aCg_JeY(Kb+P{z%6xyQ0TqiVDYPjd8SQjVYb) z^ie%));Fc|TpI6f<|j5RCJDgT#`9#Gb4r($|eJC)FLzPK>! zyi@*;kLp;n<~rxQ{HJh9<{}cDj^OT*f(DnZ2f!#a70-;8Yjgo`a?xp7KA=Awij=ww2zb7M9kw z;~dJ$*tZHYsAW#}?Kp=r=Q6Eon}XFsmon`*heG!^PE*d>_O465 zP%RNHYwTLvYHH$o(#7_-dyMNW?Srz`ycpN?6#Ff%IU3Sy}h0&RO&8Rw)s&`bCe&XVtF)_{5r3-z$GWkyMq`$jb4`Z~C9YlV17N|5NzHD?jC< zLdxn|wOG2lR?RA=tWQzl_^duv0o4H20W|uzz^ULs1IlW z2(V`LX_!CyqrRT1@7@tCSl5GNh69Wr!{;;6F6=(dF0qPvIn8{;2;HmeJ?y|5Mml zUt*cwPf?UU-|eF}$7jXs0R})2AlRA}Z_K~+(M#4WohiT8e+uJG`5_+_j?bE80+<07 zKnS2Qpa~!p&=e46&6*URZ?mT*2FRKS0%#k&lcss=I&lZ`3tl;Q?3c1BmS{WO$?CU6>pZr$4i2S0+io-T~ z%}?GHKPigL)F+|F=m1S9r5K~bHLWR+lXxoRq$l~CkPM_0PR39kCqGajCqI(E8OcgY z;bar#adL(VIk`^$79{s51xdxfeQo3v7EMvlD{J-y(pF1!1I-I6 z<#F_n;rW8)fQXVIjsF0Ito$5EvA9yFcnUV3D+DY|LI6>PzonEDGy1-2SwFl%Gs(N&Hf72-b_cezpeh?#TZL_ z#74&^Mq3QJ%*1wWBbv8~wkFPsxuBu74qih;Ef?MQz0PPke*Ks!kJj$}acssqQ_CSu z9>|fmir8MN)aw(|i;Qa;Yl@%Aru?@{TVKwJv5)(2^Y8A(9Msm**&u5Rfgb-;+5S&f&CF^UpeZ#ouVuLAlbMCUUgWPq;x|4;)6$xvX?5oz zB|L7`(ZN9tK+lQljmjE?w#BxB`w+eWA-@d zo&WnNKDupmeEaAqC&T}E7!fI3IXMOWA5RjM_HCVl|MRdxW@7V*s6_PcWc<&=%tRR- zAFDnzJ3Bj!pE13Sb;k7A5uKWDRXTaJ*}1puKdT3S-NPd-BGfbZ{3s`3m$DC4Ib5nrcroYGw(`X3dRd>|jg8u<4K`57BBc?fzL3t8u}JAnN6$)U>(xa{ zd5ycl=;Q0`+opAZPn3v^CCwYf*IplNHjv+9rIFTRqE1LPX8Lxq(o`E{pnZ##?lgX} z;zmKgDD^1utl~_)e^LCj<{+B#i}I43^Q9|&zeLf|u_x&7$P&emS|5?lIeB==7)15+ zl%-DQ;!f$>sy0>V^?JpVu3i-tsrpjo48Qf)QYBeyFi^K;=r&kKbC)RwO$Z%brZmwS zbmY2R`I(NsM*CZqD|)TPNDr1P7JCbtrQ>g!c~a9AN>#kyX@wF1;=f*Dduh`OkagvR zbfPCKK>S1_8mPSzxo#(sOF&K=97Lm6Dk(hj+bb0_DtoU|Ow@FSaHbxsl#W`9fi|yF z3|eC_JwQtD4xl;z)k*+!pu=j#NHt?nGIO<3Ut^)|s}+N5NbzV}MYf=Dcj-s2SHU*j z8l{n42%?^zYm`3dX#W}|gu8&;D>F2eIQEN8Q#kI;Qw7T|J zj3>xMH-1%8P*JQ?7GSWC)+xc1KM;flt_Qcwl!U}3SZ6Bko_1_(;Yn-OE4g?Ww?VNm zD<^JHLQr|n24xtMP%BD8_3Kt=t{ zN)VFnn?d^duY|LGYI=GG?Pwq>k#}v>F4(LzA>E(gN%AtKT<*Imv06u(@|&zqvEx8R z)D}!xh=B%fQPR=Lr7cRZdr*l)MpiOSWoUZaj15>vt^?5e7Y*QL)LxSnfHb};l3Ig+A zpw4zeff9_te_O!3Fw!=pwE3jsLaz&yp4t!-_1LaFqtPpbQ*Q3QNNr^@uTpB#yJcv5 z-VUWc9o+@7IKD$kW08;8sWhP2d3ZK#r!vVsq+}YSd$&oUkh{2|n0w_?^Bf+%}8rZnJB;cOS5kVvvjTrE43C4{c+#)O&4 zV~=8{Hl@*C+#aQqDwZquC`LT_bB_|NHJa#?y^4imyI@i}?^Q->^*TDe7gKAomibL- zsmakmTs!Ym0?2D78kx3FX$WGr?NdVRf+6BB_d!xE)O)|u$i);~ERgY3&_Gn7vE76l z-Sq<>YpsDb_;#?YZfAz9*dI_vXbr)XeL%6G^2P(o=URiFLJum#+)8vRUdZO8+a+t; z=}aMX;~=aSh}CbAm8sz&NQWhe+8j)GL^Y+&frHQlYeG4AT+Ek_XN0l1RW<&8{Xz*sXVxMF5bB-#Z zAo%Q2a6U*+<&HtIFYUni+8$H#wMHG4I}S;+Q1o#q1*UGraYe`JmE+1A%HE6@Z=6s% z(z5DkE9Q4)HYoYycO`@^O!bqBiO1CLq&hhhPr|Stm?hn5-$})n-p#_Go}Ywj>h)CZ z6ebRW6n{zy!XyOIH>Z?2RB!?E79%K-`E=zH zgz?oGh`QcD_0O`}>L}@~l1!go!INWW(ckK?LE+o8Y(ejXiH*)F4awtzbfc7Wiocyf zr>B|cP!T;HI;RY#i&r3)EzUD}(Ao1)FAL2-uUH&{Sh(p}8?PD^P+nBA(+34ng$v4Z z(*1!N`!6T~b|#&Xc3e;@kn2Uo8-MAj(M2?EG*F+5m~*HvT~t=Ge8gOWI%80yE@_6pSVO)kc`?h1qoLV4*5THWG=N|mm%-!M}6Rn-()M_g4ZYuIFdcMTfjwh<%v z{hHE1Ycl5ifjZL)(QL>csAGod{{!}IyAd2)iV~8p!i6sWq3VwFpYXJ~cTjuqpGqKA z8;;KN{#3exXO7pE25!OnV##ZnK9E+s!({e|7w**ax^kNdY;yzr4WZFDlw&mI9{TKX zQ>ja_n?dpTo60oW+7AuZx&;vp(NX7HY|?b}?Jd=OZ@dM|)#Eq>@!2h<8~gpXw_yeE zJxAs5Zo_C=XzWE8pkuco1gTq4`t~+FASNTA5b;Ieel$J15Dp(2wYyMh3=Y04RK2PB z4&>LQr}R6RG(25!2R&ttL<^VhC^_uXknTTJYSG;R(t~O|QtD8RROv#>BjpG>uKpNuXn-QMc?=IC zMuEg{9<$~eY4c;HF+1qL9xJ`rV03w+q*7~^x#Lfi`gTD&ADaF|sYsqrm0GSGrl=uT zVpI?<)QQUEy#{0^Jyk-P0l81%y)7)HUUcs%1kz|Ek7vv-IE806bsGLm3AD373G$vP z-?JYMf36G$iEEzYxh2SY`?->*q1X2yJ+uE-t}>gl{!zW#>VIGrpaVDmfnZyx{0nG& z2(^Bp{7PX$6ML3HV*(i2@Yd!-Cx`P%pjBte7=U%}~x zP>t70e`-??teyT^A-w1RMh)4zzEP6U&o=(cOpo8d3CW3QHQ=rC%*|LL!x0Hdq`3|C z*6qT>*6)--csu_cV$Tq|_fDA$nVC631kuAY(q;WV5vuvXjkKW0nW8osw4$5VWT5F< zp<`a{(h80|o@>QX9{*lD0rzjBS9XHKEfv}iz;FT=>bEiLL%o68UhT^UiEW59N0M3Ox`97LdufN=?;!ZL!VubLC6 zfW=gt#8nKXk+U$;!9cL*>-5&;XpFPy3WGowk>Y8Hi?BGq55?(tolh&!R2LD?UHs`H z(#Uza;%wJ4A%Uj33SSEO2_AE*D~K8R6WF!gRrpcYZfN|mtH|YEzjFhxHizQbQ8y7l z4-ey+y}L+sFtQV)xN%-y^kNWvZ^$NuQH$M0PnKTivSJ>jDwvj*6)Us`1pgjrW>p{r zJ;y@?GI#cRh!9#;1I?8wCj#m17kE}{SWB$3{Y6cVnm#KBHo#yk<`kNBs+=&>hNy>vPiqK0E9YoVVfj|q5G$y97mTTIO_U(8nOzfdG&UG+ z{%lQA7g~|yEqcDUDA@C-a#}dHsoo-)Tsq^uH{PNXJ=9^0NwoxQw2r3M5+)Xs-)ga< z1k;OJ0udf~D!GhYE?VWLI8qCMu|6-wOsuczt1DmCcfL5N-7I-)+cX@ID|?T8^U zbgd37;h-0aD=C3!_)s0u$EhUDqgsD{`Ux2;i7L6%hDTr#kWp7Oq}X+^Sb24!s0HjW zZq*e!T74g7wd$eihR@MVyLzIt)~u&B^#qnsI=Wp?@bc#yKLLYkq)mRRw%$X+WA^qJ zS=7)O^%naJKSWJNI_@vbylil;FG4t+h^`MNxD-H~#?}}0G2~_S#gCX{rGePR?|BBG zMTFe}5NtDz31D6uX+waRhSHdZ;8GAJeJLx_cMZij4&^EaiuG&@4h5nk7!Zd>m=@T4 zb0g6URpvB;_|8>8(rM(JOPt4_^!S>nL5*}`CX32mow!V4S7Gp1=t1DEsR#w`>oH4{ z&LHGZjEJXk$6#I`^+rQY4Z`%EwYd>qZ6NG9vt>;VpVk^guB)LWtZg1o(+)$RbVD%h z-v)_9n%xSyr$J%{J-Q2~PYV`3oK3o7pGNmQVyn=SHA;1Ry$Ku*GK$8u1vJoSM)56q z4L}uV6O0K)-q<9pt|28|#YWNP5l{>Z1(-1%5UL(#!Ey4n-(jhio1sIXFT;X~L zbQIkLy#?!OgqrGTMHBRjl@b35$*CABg6&xlsaAA&CHm}d#gi87R2(TQRD|(XIM~P(M9QLxu|KptVB@f>-N*C5VA;<`R=4+hN`p%Stph5A9EFCpyyDvdBGZC;HQJ z&Y@3NN^dXPxxAOsNE-VLE~Li`Y*syKFS<}}T@0y12Ub=+P3<5WbHsD716*8vGwict zM@TG8r>P@+arjQfS(8Lb$E7E2?}iqRbi^d+jil=Yfr9z()k*xs{e!pGxgaoJg9CLIPu*5upx`1!^_dE0g&&kE^t?{%1^q8#Z?h77R89~_bYkd5xa}3 z(_&vayQ|niI$n1tcN2A~p*z$vryB=320GYHV57`HWx9(Wz_W$jVHn@_#1JoZ7oTw~ zjp(v69deF!p;7lmP3jVbXTSd~%hBpY_;I{&JQ4icejLToJnSPCpWhVIf|Bx8Jo`y=K!bPCZzd~{4gVmuxHS*ht_F$EP*4P8q|1g04vu9OWf znXeW}LsK)^$rWuexTXqhVwh-rDjcKHWL=jk%4q1(-x&Gcf#3yv!<&Jk535OX8tjgl zW^rPn!)chai_G@Y>7o~PM|@$;OczP4y*fHONQAnUSiiQ|Sd1GCnF{xX*^eL0v8jPR z8_Yf~n3fEN@M4W{cCZ*hHCRQvWPsOm=V6gED+3V=WOG-B>aJd82-64372l>0EwqF6 ze^j8jXa><>mpD&aT>uw7VF;WR?98qqs))ZBB8Jl?cWB$lOju3$qm`M$toqN}nPMJB z_4QEJ4Fhc&Dn@<~_qR*{vxbT~c4ipTe#5}=)-%z{f?*hZP1q2-=BWc{$`er|=O4wM z-VGB&oZs(+QH|}bDpBBO>5UVeUq6Gzv(RlMynd-M9MMbq42WLm;bIXUyc>=&>#ksd zZ5bg>(t?(xl@<=h17sBmEK|TY9fmh#;f)l-HALmAUM`0b% zWh=;gIZBP+{Il@VgPkbon|uj9ZhE%HCjw& zH|9J>GzL}CV?+eA>zgs6ITZEa7+4@|^VnspL4+wAG|&GI^rdCPT370V*%x$qSx8gYGvuVLe$b;G`fFkyFT@z-bo z+IRMAHL7t8XnE&zLh{4?M%WuH5O}8-(jlacgzkY)m z%J`P;r-@E}t4e;E2{0_xUMtSls0qSV!?PJbQDn1WX|@vE98;IYI?}_5!W-mzOk%Op zQ>2<=<9d=Hnl=l~SDB3FAB@Gw;wB57yS_wiBXPrx%I#9B)AGq8g~wKTiXb~Z7WQkV zKzLw2Z%q+NyruN%RCv>1SgolDF>9=Xsi->*($F79f!a+I>nQ&X$~>ow4%E3n%&z4jXwDowIW|+QB>xT*OJ&F9>W98d{cT#-0fHc=ZAlPQp7mE5b_ z+i2~n>}vRm%eO#WjUV7xEM)ybT)=Q<%!2NP(7svfiu>g(v4Ho7=gt-To}0!67!%SX6uA`qPvFX{-LVawx@phDfo;LRp%^ zSBh{nn7vYjK@PU9gz_OQf3^}X1xG`x#P@huuu2S~MtY3OvKlLVoE5DWI8rMyuB|MT z6C%_>vqIuVb~rmllrOezr0IqNZkN!!35%X-nz-Sls6*7^%8vHZ%A zw+rjR$0L3q*K-3lUYd>-?%K$KH29jVMT0hoR*oS$bq8j9c0@&LxnKFjE*Jv*Xai&b zD*-<%rtrc`2wOj^YKe!AIcFOpVCal%ffxs( zrxd_CBXW9C01{v}0=A2z)Y%#FuEP#-hPGs*>zg~U2?CjM-zjFfytjw#Xq*?8f_ERm zrv0*0?BiH;@Gdccz2xOxFsoQwy6wi)K3s!cz0Y^EKI>@tZmey><1vm|dqjOVL&+Ss zOo*ZBp0bvm1xDl99yl^^r0-tUS^FA6%KR z-7BDl2~fTu^cc5K45b?Wkg8+*VE*AJH2Zn|qa)pZwhAyqoWcVkUT@4X-NpT45W5NG z0CW=Xk30Z(;XWBHY&syi*_NrA0kM_ohbN)}VkQT=YQTWn9uy;)Pe%``;hMuCHED7P zvmHX2htLN&wEPf;a-=5Ox_w9-U<;@2K_59Ryg77#bQtPyp@v7Wp_keh%uhSQmdr@M z9}yONUXhW0PjgTD=MZiOO#21;Z90ktGHmFuqlmylsOm9D1!4|)Of+SKG4+@@Mq{;@ z(3In%L)rI%bz(w%JB8vBWEGtKVhHz+i*Q<24P6>fz{JnK0unzv0imm&hO)&cMC$u9 z_7?3B3jdA;#8pR3Z9H<2=MldPz3Sjs*fM(FQkabgStp?oV6*k42vm=lZlB~$Lp^mr zC9cxTXXvQqX~<{eEtufZr+LQ>Zsat!p1SL$i?&r74W5e_=iO=11q1AI29k>KVageV zhi2>6Goq~q-5SaBoS1^$*UEF1W%fAeAAFu1nDi=ycV0%p5oqQ(IbFhs$Z#91EBKbNrX z#!Mt$hOdR#Ouo#4j-Ga1Ms$a@8FniR% z`fydYaG?8Fgs;1$WX;pIQ(J6|u2L$|u^{PCv_aSGDm-5ocAQ^a6?{$M{#7h<%szB{ z1ngMqH8dUi5@VTpjU6q_%{39B39**@LsZq!LyoIVe~JOLZ8bK&W20Ko8k`%_#B12h zijC@H`ztXK(_i+wEz&YxS1o4pb#aL{qJbwj)%_eY8ceREUz zft)orMFtJveYJ+S)b(uAZs|!+Z()uRrdGWzEUv*NC%yvxZ-R{?7C~7~Bz$L>>obzK;=2&U=6viT@#{D)s0IcJd-n8*HZIk6{fGx5HDEdmaF1iwa>&xTEXgh?nE?o0c^(6_191o7>ep|)OB*ZH=;jyw*8H0LbLo3Bb9jzAvp3B4TQdh-@khso@dBg zkxH*ak-LMZc)ij)2=st3YuS#f5J zTn_s?^SQ*(B>|vJQ!T2sUbzmW^m0Ub1#5Evq4h4YCd`Bg^wL^BX4+jbL}Hlk7=j zZbD4_oF%Rv=tw$C>;da&tg}Sa7epJJ>5DdSThs5@ko;q?0 z`#IG^>PQR+6ApOD`tJ{r$ip9ZlzL2urqnGbhckT(%5fEg^-MWgTEip0T3()1j|MzJ z%If6`t_gWce>)>0RKE&x2Z+5>L55;QVD+mgztNEHsdU!Hs>h^7_e{=Jf(Sr*D^-?y z+sSv*a4%2lURmyTH|a{Y&7y~61LCCcvBp=CG3;e#e;x|N z^OD#J52m?ZG7zU~L3G#)Z(?VrOjRB?j+v`UJ==_os&YODQ{}6HdHs6`7yIU^SXC#r z#^Ko8bOfdYs>ujC)DZfxz8cy@M`+}MSKGHOV{R3fLP+LCZ zSTV;}@(m=o3{U#QS1x7hr_=%U(4QT3B%)S>)m&G$&~R9jT@R8CnO{{;Vt*1Q!%t>0 z1LpWi92}j)NY41lUQ}HN=0y6-@5s9f26e?Bob2)d=C@LPIp>3|>Q)q(Eo;-2`qBgv zDm9R!-OME+bnBkI>G6G8iFC`AO4dUS@D4WJOytl|Hsrp88}fuAjBF@-s=INA8_H#B z+!!c>u{6WESRnenun$xfBFBUMq!H#CYX{j#&Zf6%py+8MOc+*n*kL`v(y!jG+H?zx zYIq-=9xAYmZ}z0<4%V3fhsh`s7eql9BJ(GH_+RL}8*4>uZ^$hfSgN zW()$AZy-Z}1&L2B+*u8fn5hBBBGjBKl5F+O~tI?Ty-ixcG zZ9J*(7*W&1T(Z>~8QCH+K7yt%hi$4d3i`dYu?(QCt6=@EHU|B)?FPuG6^fY%p^l-j zC`VE-z2nA2c+%FUaQYzXZKym)_kKn3wWc;}=oBXBLNOPI$)=d(>tRyopx%w3`BCAO zNf$0#Q&X^=BfgD5$KMzdrriBfIP4VOxrujb(ksygbLQ<5XMO2#q=<$a(gBEs+*1ZSG4467arjeX#OD0%irh zRcj~t6wN?!?cnyHITPAJK33oYD(z?|yOSH=HS}vQd+^H>+C$F{Zb8X!?PWS#metZh z;`#!XPaS11-s`>G5f*GVhxA^ZFpn$$K`yS7tV?(2!nA(gNq)m89Il<&_nWC^7rb+y z@1V5r0zHKUPU<3OJC{ga5)Hlpcj1wMSS7bRUhC2ovu2@5YGU2mRsN)<+$dPdltg)o zS1HYUK*20Dya$2`3}!_SiOZfwy4*t!W+979l4IbtG5&K&80P4$XtP{Txq!}Zfz0Oj zluKyaE<8=^CF@bcZ;|s3z%k9DdrEnl=7Vt`=_UJua8qx&fLA2gY_3Xs-^!ZgJ_$`# zOU5K%@}raGEZ$nWnk@CMmJ(CU?r$=d2u=D(zN1~Puf$b7Yg%8~QbSX(niHN7G++X36i?AGQzi*QEZ?8^jp}C`WLuqiO@-xBC8! z9jhJ#Bp-)P7y#Y0(53;B&#dncfMtY*u9XS_MfjBpPQl=8O-1;X6^<_b2Fjf@kx!_f z4FowDPR%q(q~Ja49%-N)!%vr&!B%UfLDEOVg3)*|D>H6v4o0{E2e))EteQwdjanIU zE?q8<+;15&rL108!j1T(&!Q-93jF2#=6Kw72x1(01-XSo&@HU`p&>Sz&}Pc3^mQs0 z1CKHhP;N=ZJ2i*O{w(ejhoVEQV)qS|e5LBuP{f`K`h#}UFc=T)pL83h`sJKq>~V1i zVwmiTZ7!?tXVRV}(0@2A%8MyzyU%c_alllxJ%h`R4MQV`hD(3SeTA}j!*M77B46>> zkC4e=BaM(Z(czepthBh)J`%=_FMO+M5LFw+p*XZ^l;nl&mQk22Z2a6ACBsn5Ka1IA zqOMt>3biL?L0Lm69|^7GOSR)yLgM4^3LlM$>Wqf>a1Dq0+Rtj=p8 z3(Xjfrm$S!I~sHJur#VUkAYIfI>XjAA0y|{1il+oI7aI1*+G$a`R3IqBpY4^>d-D* zVl$oN${E=h-_$*DQG2ox<rGR!ZrA5h#?5E)5g!`LOPZN*V*R_$=fT(`~ZhEG#^~2057h#$O{0yH_U8 z$)QzzTTE?`Oc=kIjME zJ3a%oTk~x?^{Pah@8uDW|EkTD4KXI%B%TR_0KE^$kwZ9MUzj5&@ycAiL(p=I^yP3k zm0)=w?F$IuU}Gy7!2Yl;JwAkGzx0Lac|({k9?cK(?FYA)c{e9K89Ur2>NQLDqYKkP z$jMo-j7B5wBn@X;N6zMj4x+f(5#19Cgl;E>X43JcIRC%}A_toPBY1|%I`N|{x?!|Duvsl?@Dmgm`!8V8bRdHh~5$!!$KqjQIM=Qkj7slb2y1z)W+N zsebM#{-SrIAysb6C11j`EC(CVQ$M8CdKw5{uw1TZ>(F6^oCsHHy}m-aF`-XZs-e06 zDw)A1Vcsga6yYw;dRNOY(a_P=m=jn}yEXDIb=nC>`(_PDnZ&33fom~FgkOnkijFTFFOcSjQLgOvc%S0hpLzeiIi3!fQWyy4l|09 zf^{s*!SrOEZK>UGy$t?fFT6z`tfJ`ZC(ts4BsuFPF6J62dIOrd$jUo<10)Zz(b^5_ zmO-Xfr3jZktYG-;9r0KF==85<3tMQoOr z?Sph!7GjCVdXu(A&fyIKmwXvUqiVoIb;^g=9K9P;IVm5U#}RNoc8n}^FCWY3Irl+P zgRR&+Fu-nf-3pn)UfUEDfU{e-g0tZGPy;F8$t!lpu?r2gSc(j~dYE-p-mkg{_ zvgUh#u!K8UwC0GYfz5S2J=`S+G3&8$jJ?5Nn!OuJ^X?j0b9y(J)ZGmtQ)Ukw9yURZ zd(cDGpD_s;D4{`_@c2viAmHgS32&X=qYAg{UX@Wz_R0WtWc~MoH6c3dti7@#i|(r5 z5CC0$3zppf4f24Yc>5C4=?~}f$uBVmzFwU_PFwPtMWPr!}-R!n4 za33^=2G7Dk%n;+|`{DS(+3ow)j&anupOwQ%y$*n5(AJy-unHF1djJl0N&@;Qb5PF0 z3CE8Ir6UJgd54%#1D!o253@7)c4l zjcLJRnAeKucykLOVCH$yfvLD~9{i}WO>t5^(BliRO=1AdWZVULfGtDyi>f<|yU5&x zY+S_FVF)>0l7q0s#QlIvARhx=eF?61#g`DA+LtBHz`umzw!e%`Kr^kr45NT>|JG&j z846nSiqyNm-#UqvEwOU@2NB;OCrD!U6&cN(+pFx0?5KSM(}8X~-2hwg#`YT=n;6J=Q*Hzq4{l;ULrhk`Thc{C)7-$@rnlv4s?i(c z{OdM!+(O=kvOiUA2Wgm5i0~n84qkG+1Ga(7#ygM$2z1&VSXUUxpYF&-)c-tU>G-?q z=HnN4F`Z^w_zC>|;kyX4;8^ZT{8kyiJ-i2{f%5deCx^0UzHm?SEr+W2F@~kMVPPK` zmEMbXJd}0p^#+)R@%QBkayg3Ldp(c?(dh99@-z0ypFV_>{j?fRK4RKa4<~4K2w1o7 zA%{^xbmt)iVar_MoLg&Tb8Q6*dnB`IMJC3#_YpRgQ2)Ur$#-XlHsRo3vY%~rQf^!Xt|$DB5Xwv` ze{;NnP0_zq%X08cx_URFclY>j@2Nr4+eWcteHAs4>FBDfiweYe**8G(;CzlIeH z;ih_ZK^1F%uGFNnfD&xR;zVsD*S~D}2}i7~je@7~8G4 zAfm?~I0g542ZqBQig$7jI=cG~UbM~USaNlICtYVYi<@4y#K)*DMUloSuBMyLSaQoB z_x8&+ls;6T#bHEaO&sptnW(=ej<=(KLc*chB~2VJFcB_>(!#32^I6;Ic=QJRqPOI+iuOI+hS)|>9JY(sFo#nJXzKmNFk?VBBq<83)>e&cw2 z%E|VPn6RS4@mXQw)KsP{lKq83~6i!GH|F5I`niC}0@iGr(}b2*60dC_olqG++!M8!#3y z4)8hP3&59vuK-^I#sj_qd<&QWmf4!StYsrlHBXKIRO>s*R_4drj(=Y>nCapq49W9qh8UIqK^fsPqOf&;`pK` zf7P(nx$fh-8{ch-pVL4?R2V-eTr;2i+ag&&DV!{)JWhV4LQb}le*%)?6@Zn1Re;riHGs8%Ujgd? z>j4`8R=`HUCctLE7C=5=D_|R-0I(gf1F#dY3$Poo2e23L8(<$`Ki~l1Am9+-FyIK_ zDBu|2IN$`}cfd)&DZpvK8NgYR zg@8MNyMTLu`+x_4hk!?b$ABk*r+{aG=YYQee*^vjya2oeyaK!iyaBugyqlQSQ8N|5 zNXy8Mkv$^^Mvjb1Gb+Q#iIFoS7e=m(+!(ntD$B@&Q8`BC8F@0Qz^EdlN{lKqs>0|K zMqZ4nGOEU?I-?qlYBKU>REv=hquPvo8P#D_mr*@NevJGX)o0XzQ2?Wci~<=oVx(iF zXJlX$#3-1Nk&%g!nURH22&2Y~nlK7w)Ra*eqi{ye7)3B@&M1;m6r*THEf~cxYRRY- zqfZ&NX4HmJEF*=HU?dsEF^Xr@mQezuc8uCH>cB{yw@#ev%%}^au8g`d>dq*UQ4dB* zjCwNa#i%!y@8M&B`-!RUKNGa2PDB1S(jn#E`~qdAP`GMdL|KBHVl3m7eA^dqC67%gJ-Go!_f zeqpqPQ68hEjFvH4&S(Xrm5f#~TFqz;qqU5FWwegbdPW-0e7+ZpX(w3E>;M!Om9VYHXgZ;bXa+Rx|!ql1hNF*?lX2&1EnjxjpU=mewR8J%Qw ziqUCCXBeGjbdJ$^Mi&@eWORwqWky#RU1fBQ(I1TdWOSX;4MsN^-C}f`Q6Zx{jP5eJ z$LKzz2aFyvdc^24qbH1>GJ3}7IitTA{mtkfMlTq>Wb}&BYesJvy=C-H1M{avM#D(U z$c~XcBL_x~j7l>q!^nw|Gb0y9u8iCmxic!u$b(TiM&%iKGOEC+BBM%-Dl@9W=o3a> zjH)uK#;7`@8jNZ(@@7i@VN{n;TK^m@UoSUbnvAKn6+Ar6?JePl#o1&&8 za`V)5Om3l?=H~i)^7C!EDQfyWH&0DNa|_kB z8AFHlOdsARrEkB?CJqITLt1HD+Zi97x;b5q?E+VR$7#pYMSnjkRmuf_7sY+*ux1{$ zjjkL`Ug}so?1wY9SNqvYON}kATGUigaVZU&axVS@X(ZtLqqJ>O>G~e~&e_`NSoEAS zYh*>LpF1yA>g>Opzx`43vZ(t~Ma_Rm>GwsHMyizhb*)-_O;U1&K*cDualaa>-F=tiPLaf%A8g|n|QUS%IVuh+Q6Ky znES5Qr`mE;>mF#O1^SdxYi&W@18ub0LI1~Mq*%jqvl_=jlNRRYA;otna|_jUd9HsG z{(Ea~ikj}t%~R8JxrJ(aJ=Z^!pWn$%QPT&xd20GFw@^)A<@z_pb8V@5x&4s|(>Uhl zae<~>ZlRib=K6>6-xYIH)U;|r9@6Yr|9gcL`T@BL$n^%f3Tm4`E~nujm(xBVm(#u= zm(vW8%V~Cjf2g9Jb~78oX4`Yu>6<`AB4d*W@+U2w>JK#NN}d^X#n0lC()uPl)z2I_ zXkbPYXH@X<^_A`7Wt(VU-?o`aX}yy&dV5Fo?# zB*59Jk;&c-y;WZMbWM9d_#lIK^OQ{QsN`WOz3}PF zC%FTvhnIi@z2l%v08#*MpcUN6} zL~K``tvR3E>b^od(D{9Dxf4*}<@zB@a#wH>f8iOYWcUZd2kP`)blto|L%sF7VxpaV z)TfMW@9Drty-B6ToAf`#RPZdSskhZMaZS?y5#wpXEU{t2q<=W_=B-3q9&mcb2=Dmh zLFpNp-g;wW79tyYx!vo4uxz!Wt-2~T@zGJfzCJ8h{BOu-DVe?cb%D^?_|VO}QKPi< zo_w%h^eoVOSTcGTnwFX}AUSn}x7zJM7Bjq&J}^16UrJhE@1cYEJIVa7xGVgJ1xZ7a zy)ExgmTVtuZCvyozYD>LiI0v}e0|#uN$Q!J+?Wed%+!(oO!c48scw$qN(~89q4N;~0G3BZ2msQ*fu0ujfYg?9j`_A^S$Yqy`z;~hpCo%tN3RNPCs&VphQ*!*jn~F-wP+)q{RK<^*3Ij!9 zH12DCg_=(qt3C<7D2?4uaih20Y&}i!6WS?$Qaj%-PCK=XcO7G3P@k?2lv?kT=Gn~@ zTj20WlmresZsO&;Y_43z)LoEBFo=D@c4aoPf>+#Nx22pw($`{tfD#A(y%*c4}b$Ap1{ onm9YG(R9{$cKlu?wA3_PK)?aQ)O*G_ZSFl|ytcyP`eW_?9|Zj_?EnA( delta 24223 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 Y^6$t_eb_KjYk$}type,tmpmr->base,tmpmr->base+tmpmr->size-1; + "%z:%08X-%08X\n", + tmpmr->type,"Unused\0RAM\0Device",tmpmr->base,tmpmr->base+tmpmr->size-1; tmpmr=tmpmr->next; } LBtr(&sys_semas[SEMA_DEV_MEM],0); - "\nBIOS Memory Report 15:E801\n" - "01:0000000000000000-%016X\n",0x100000+m01[0]<<10-1; - "01:0000000001000000-%016X\n",SYS_16MEG_AREA_LIMIT+m01[1]<<16-1; + "\n$$PURPLE$$BIOS Memory Report 15:E801$$FG$$\n" + "0000000000000000-%016X\n", 0x100000 + m01[0] << 10 - 1; + "0000000001000000-%016X\n", SYS_16MEG_AREA_LIMIT + m01[1] << 16 - 1; - if (m20->type) { - '\n'; - "BIOS Memory Report 15:E820\n"; - while (m20->type) { - "%02X:%016X-%016X\n",m20->type,m20->base,m20->base+m20->len-1; + if (m20->type) + { + "\n$$PURPLE$$BIOS Memory Report 15:E820$$FG$$\n"; + while (m20->type) + { + "$$RED$$"; + switch[m20->type] //nobound switch. very unlikely BIOS messed something up. + { + case MEM_E820t_USABLE: + "$$GREEN$$Usable: "; + break; + case MEM_E820t_RESERVED: + "Reserved: "; + break; + case MEM_E820t_ACPI: + case MEM_E820t_ACPI_NVS: + "ACPI: "; + break; + case MEM_E820t_BAD_MEM: + "Bad memory: "; + break; + case MEM_E820t_PERM_MEM: + "Perm memory: "; + } + "$$FG$$%016X-%016X\n", m20->base, m20->base + m20->len - 1; m20++; } } diff --git a/src/Zenith/Gr/GrInitB.CC b/src/Zenith/Gr/GrInitB.CC index 037f9c34..12284737 100755 --- a/src/Zenith/Gr/GrInitB.CC +++ b/src/Zenith/Gr/GrInitB.CC @@ -168,7 +168,7 @@ U0 GrInit2() HashDefineListAdd("ST_SPRITE_ELEM_CODES",SPHT_ELEM_CODE,gr.sprite_hash); gr.screen_zoom=1; - PaletteSetPastel; + PaletteSetGruvboxLight; gr.to_8_bits =MAlloc(256*sizeof(I64)); gr.to_8_colors=MAlloc(256*sizeof(I64)); diff --git a/src/Zenith/Gr/GrPalette.CC b/src/Zenith/Gr/GrPalette.CC index 2c5da52f..2528c7ff 100755 --- a/src/Zenith/Gr/GrPalette.CC +++ b/src/Zenith/Gr/GrPalette.CC @@ -9,6 +9,11 @@ public CBGR48 gr_palette_std[COLORS_NUM]={ 0x555555555555,0x55555555FFFF,0x5555FFFF5555,0x5555FFFFFFFF, 0xFFFF55555555,0xFFFF5555FFFF,0xFFFFFFFF5555,0xFFFFFFFFFFFF}; +public CBGR24 gr_palette_gruvbox_light[COLORS_NUM] = { + 0x3C3836, 0x076678, 0x79740E, 0x427B58, 0x9D0006, 0x8F3F71, 0xB57614, 0x928374, + 0x7C6F64, 0x458588, 0x98971A, 0x689D6A, 0xCC241D, 0xB16286, 0xD79921, 0xFBF1C7 +}; + public CBGR24 gr_palette_pastel[COLORS_NUM]={ 0xE8E8D3, 0x8197BF, 0x19CB00, 0x668799, 0xCF6A4C, 0x8787AF, 0xFAD07A, 0x525252, 0x888888, 0xACCAFF, 0x23FD00, 0x80BFAF, 0xFF9D80, 0xC4C4FF, 0xFFEFBF, 0x151515 @@ -36,6 +41,17 @@ public U0 PaletteSetGray(Bool persistent=TRUE) if (persistent) fp_set_std_palette = &PaletteSetGray; } + + +public U0 PaletteSetGruvboxLight(Bool persistent=TRUE) +{//Activate std palette. + GrPaletteSet(gr_palette_gruvbox_light); + VGAFlush; + if (persistent) + fp_set_std_palette = &PaletteSetGruvboxLight; +} + + public U0 PaletteSetPastel(Bool persistent=TRUE) {//Activate std palette. GrPaletteSet(gr_palette_pastel); @@ -44,4 +60,3 @@ public U0 PaletteSetPastel(Bool persistent=TRUE) fp_set_std_palette = &PaletteSetPastel; } - \ No newline at end of file