From dd21cff14694b8014912261e772699ba78298e58 Mon Sep 17 00:00:00 2001 From: TomAwezome Date: Fri, 28 Jan 2022 03:05:21 -0500 Subject: [PATCH] Change .BIN format to .ZXE (Zeal Executable). Remove .C suffix on non-executable binary files. --- .gitignore | 3 +- build/AUTO.ISO | Bin 5076992 -> 5081088 bytes src/Apps/Titanium/Titanium.ZC | 4 +- src/Compiler/Asm.ZC | 6 +-- src/Compiler/CHash.ZC | 8 ++-- src/Compiler/CMain.ZC | 36 ++++++++-------- src/Compiler/CompilerA.HH | 2 +- src/Compiler/OpCodes.DD | 2 +- src/Demo/AcctExample/PersonalMenu.DD | Bin 66513 -> 66509 bytes src/Demo/AcctExample/PersonalNotes.DD | 25 ----------- src/Demo/AcctExample/TOS/TOSConfig.ZC | 6 +-- src/Demo/AcctExample/TOS/TOSDistro.ZC | 34 +++++++-------- src/Demo/GlobalVars.ZC | 2 +- src/Demo/Graphics/GrDir.ZC | Bin 9413 -> 9409 bytes src/Doc/Asm.DD | 4 +- src/Doc/Boot.DD | Bin 5447 -> 5433 bytes src/Doc/ChangeLog.DD | 20 +++++++++ src/Doc/FAQ.DD | 8 ++-- src/Doc/Glossary.DD | 6 +-- src/Doc/GuideLines.DD | 4 +- src/Doc/Install.DD | 6 +-- src/Doc/Options.DD | 2 +- src/Home/DoDistro.ZC | 4 +- src/Home/HtmlGen.ZC | 4 +- src/Kernel/BlkDev/DiskATAId.ZC | 2 +- src/Kernel/KConfig.ZC | 2 +- src/Kernel/KGlobals.ZC | 2 +- src/Kernel/KLoad.ZC | 50 +++++++++++----------- src/Kernel/KMain.ZC | 4 +- src/Kernel/KStart16.ZC | 14 +++--- src/Kernel/KStart32.ZC | 2 +- src/Kernel/KernelA.HH | 10 ++--- src/Kernel/KernelC.HH | 2 +- src/Misc/Auto/AutoDistro.ZC | 4 +- src/Misc/Auto/AutoFullDistro2.ZC | 4 +- src/Misc/Auto/AutoInstall.ZC | 2 +- src/Misc/DoDistro.ZC | 6 +-- src/System/Boot/BootDVDIns.ZC | 6 +-- src/System/Boot/BootHDIns.ZC | 10 ++--- src/System/Boot/BootMHDIns.ZC | 16 +++---- src/System/Boot/BootRAM.ZC | 6 +-- src/System/Define.ZC | 10 ++--- src/System/Hash.ZC | 2 +- src/System/Utils/MakeUtils.ZC | 2 +- src/System/Utils/MemRep.ZC | 6 +-- src/System/Utils/{BinRep.ZC => ZXERep.ZC} | 28 ++++++------ 46 files changed, 186 insertions(+), 190 deletions(-) rename src/System/Utils/{BinRep.ZC => ZXERep.ZC} (77%) diff --git a/.gitignore b/.gitignore index 0663b4bd..d4faf943 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ -*.BIN* +*.BIN +*.ZXE *.MAP src/Boot/ docs/Boot/ diff --git a/build/AUTO.ISO b/build/AUTO.ISO index 0cbf5cef0fccfaa13edfd0fd208449048c05c7cc..ff4f1733f4bd4bcdab33c8b7073b47a51fec8765 100755 GIT binary patch delta 42694 zcmeIb33yaR_BY(Ovvw26+BXX%x#^^{kdPe+=`;|Mke!4qf}j(cq)A$mbnNc1s7-Km z5FIx}C>fm@#C6mWaLH99iVNzvBI70MGdtVMzpPsjuE8=c=q$J2@og#d<)%1vwxm+ICh{xsjxJ-|F{5_hj z+dc_P1y7jtBgHiW$e*L6FDkVXaRag;njxV|#I!G4mz^$s`KMd@-T%9F>ECU20dfyR zN?A||83E*8hB#Sz65CIiXv}y}CZR_2SM+ASY z4->wV1Lkoz90&?nTBX_=dLSn_>JtU@M8Jb#&%CrC^yVG-d;?9K8Nlc%OpMcVPEB-| zDp%EB^V=_ufBnnp)8{{}f_L$c(Oh?g`r=(;Xc~7v7bp~~vdFOnb)0zEzdx%CF>_dYHtS^V{8?oXP4)2C01 zxi@f;0YR@H*u|-~H*>M#@@?D)let}_^fqo?puMH3SscENiw=e_FZ_v{tA1b?(cZ(Q zsH+x{8TW9h_}+34*8wnmP9QJc!$oiw@;*YYT||8^1c7Q@a4(mw=JaC!pSjf#mH6(1 z+?Np{kUT!(E6;F;L)2uKxa%cuvX-k7_q@q{6$sw`_&2U4Os&z7jah+l;-ur;qXApE zSh6#M3lxw1gIgWKsl@v4xRgmDtiOnkU%0CS0yX+YjbeaW{im=16}08=HX>sK3w#ueX@(S`ArTqF%|| z;-e+%px}VKOLmD*&QcerYBhEXxi?oGPp)lI?^W;LB?6JG#TIz9O`SO{p#68d z#E%EmZ$t;=Jhe;Qf4Mq20%|IpwnH$vAl$kwEUOpgKd2!r;vDj^p_A2LY4TnUXJ z6v0Nkzt$-sH$t-*^j5nPGVKS*%%I=aDj^p_n;5htP6>@5w3R`x(-~H!qT@VqBXkpk z=CIn>ar?4KP=_M`-O8ZJHOdHG2tCW7OR6Qv-B2C&9T`FBa|V6s)5>myzGcvR7b_z) zJq}QQko2iMQ3<&an#Z6!%9PLuLcd~A_iakZjnEzjUE)){rY8V;lR>67WhfUyT(I=% z95!i76*YoT2!o1zs@IKB41-#3P)2Av0MM@(WVlKRxe&UYLC2Gn& z@`j%YzI{qyLsNOBc=zGpf@?DNJ#Z)OvBMA3-^K;)juntZ=IH4mOi93h@Q~N;nyMp7 z)~Uhb)D7?wyg1|%4T<<`!k2h3=n4-kqYU zU+)6$Y~$2Mh*+}c*6mSdK147 z(SB@ADHA1nx@eDwo+4#0_^T2}FVr4s6-uR)RL5`h_}i)UC!RW}%~?+FdS%{2LXuvJ z^V?L9UnOnji>Fd19jzBOuqfkVJh>ATQ3~RzzDY;hg}ND1SsBG*SyfOOa#>5nQ%_IY zT1%FuhcyZx2vW-LN;yEk`HCnZ<;h{k z$Y?>BT?2faMl=1Qbrx}5VOWbg09@qd;;^YP0Av|y``RteL3_Ud$neatDFMjNiIF8? z`C77Q*f>m11TOe&g7&EhBYqd_ny}uS#AOwN%`P;z)CsF#gb~dBU4m`UIWXuHkng;F zU)WodXvU?ilcb#R1oA_qb_!W}YnVWm=7j6SXCDiDUqe~Xdk%&r({dHe4~rgxV$7I( zLEnI267ttoEfBJW!kM##=|ZN%dXdGpDzgF$F3b=Lq4cR{hr?ob3S%Lm%p}y7bTpPP zg$kk(+AZL5jin1?#ag2u9oFuCGt`|0zCx@Wt+myQrkA(1w^VhUQ{Le5X0vyL2WQ`a z+2))v7v2~`EmPm8|+_PcHI-0p`0ep6}mjEkBQzGtX!;)el$;|c=VR{x6 zNs(bP>$$MBGlGN9g%#0C+WlNuC3XDpTv!Hm2+xPb@(^hbjg8X6Lc7J137^Eq=fhej z1OF9sp0HHvZmPojJzYdes6hK~gmK~IlM@Yx{1|aR3HxM+ztMj9KCbWdo#{bZ+j zYH0FNld$knsf#=%{h~Kz=iDfs8kv0bwv+{ITwvbOo3eAp!MI?aa>Sob{O2itb>e{V zqmzVR6-k+UbGD~iRw()}R7-gHnfh;5_$OOaew`>yOmC;k6O-e5V0GhWCDHdoLE`90 z_>te@7|Tnapk)2XvUtYWt>S2H#HYzhe4!HmtvG6pII=b6&1vH&#V6D6`A|ddh*J&Z z(_5?Kw?w==?dN={Y?})`Wy6Y(yBprc@9QH!PV}P*t&ydRhxWlj3_{YUTz0^3kf5SW z1af^iUEn+ZGM<>e!z=xU{6FIOATGaq-0%%?WZe)`#CHz;h>4&F{KY_w#{-xAuqj1# z%U(}`1;FHidp`5`4`9cjgQ~>Prvmscbw}40U=eWHNEXfIg2k2Tfxit2Sd^9~o|q9B zl?n@GF>rC<(~Co-NmL`gvMbQUsXKGYKe13@f%>djmU4xFNFmR6v}V@Oj{OLFCTDpm1_@5iC=M6M?ny!2)G6M4Kk4Z!(HB z#3OuAF&Bzi#6R-d^I?K$j0^gb3p5juCiH)&o+?%+1gWRuvbcU`&{YZQVm)bkEGS+) z(G+ykypSAW!0hbF60f^1=qf{i3&NDU19W1+!$Cc(P;7DY)Zj-#0&Bv>MzWiOPy?yK z(U*~JcLu)@G38B_O35dP=ie24+qCV0Q9)aS9xeKp#iDC}q%nx`(BKTFPDx0!CF1Mh z$0IKcNy#+Zy9pgZyRj3%BSmQXB{G}8f_h%88ly+S#OSjY*?0vDbSk~IvLG)oo;aY zlF#np;HY<^{UM3?sHiaF7;PvZ1A&b?^39|CmE^~*^+jaoKE9kZWkk&*o4!bIO)4pq zsiglpD2Ruu5^2e{JrTvI#3#3z-rRbfZm-jnH8$h6;ptKDR0%CxB-&)0EY4`nn5w*T z5>MHpYC5=Y$-XP1laS~(l5ci2L~n_x3Y`yc_z-hPh%V*0)EQLEyxB);^JE|9m{+58 zL1Alc_SM2#OK)$kAdvF(w6uU+t(JU{RG$#vW;gdcR@v-*xyvf_X}Q`~i$xlC$g!#< zJ{~`*Ds7#46?RLP)#=Esti(@R6}kP5sA4_M3;tUdA;EH>8!)vcS?fqZKubr>mR*!?RC1nPSYum2NyVf=_PM?H0s^FWNGkMEt1x) zV{08a@~mi>(G?}}a^w}!pCk(>Hc8DE_*>vW@&jRFpj)8%!Jc%5#q)8zE}1*fvA_D1A!+t);Uy5<^BvMzM8 zuIY8Uy-w3wj|Uexm9e7mU|sZwVdV7I`kXO6FZt{}PesZ%MNcEsHbwVFoOncHb0XM~ zLY}lvPA(JHT6=p1^Ptn#XLedU&Aq+r1!U%(g0sgW*v)GN=lTJQ;Iz^AHRj$yi?GUW z>%&*_)juN*=cX;J&M8dm?1i-gIMakaOW#V1J;Nb%Syoy5txl`0U$Cwc*4qY!UW<8+ zMXaj@o`PVsrFg{9>ZB zV~%8HEZ8T}I6vZ{@uSeaS;fiMb;({cP)d@P8bat`O`A zd$eaHRS;KCjEA_qPPf--vc`;|DBJJ_F&74s3tx}=!~fXmmPzxB{}f|_@8~A^Amsxw zK%@gP4H5Z?5--1wg(bqJF)`%%L(wg;1DAPiF&!m6;PHoJx+7Kdr;P~{d0dxBj%7WWB33U~BC6>XfONi!*~I-yeKfFETe*<KNHq!C9yiutriIl3Z;gSdDyR`-cNtHE|1 z35xme=Az}g(&;h9tIq4!=in%jBRE?@RN%}vk`t5TQpgp}5s^cU=5A|ev)O8QWESMp z2iDFi+;UQB)$prQ!+%;;_zfQVf&Ma9kA9_}rC<=i>mL>|7|S^R!4G^5I;{!_(2@gF z8)L|;uQmiRp)W}sn!MkSW!V+FqZ#QpCQ5>;IEiV-sV*Plk!LDK*kow@$!3qv(;K}` zx7TUf>+#_7I!C-tx7TTU!0XrR9Pv8cUZ?3nuV1fo#Ori>ou-Gpe!b2SuhZ>ynjZH0 z^*TqqPPf--8rJ!YGpJFS+6RvQ-0^c5H-_eaYKIk7G3?r{#(JlMIFzCi__~%V)ND9n0u4rPi8w1D@ z%MoEB^0$c+!+6k7I1K!lDJ(h?GrpsnW)x)>A@Bh?RaQ5icl3wL zA-ogr6d1VgxWav)}v|C5h>L_8Tn0 zs-8)Y(B2?tt%UW`%woon(pXd~ki9wVoy%vP55l~Q^VgAx=XK|bJqL8JsDrPbmT4%v zQ!IO0*A)=7?hi2BlEj{h8Cz$a3Kx$(t0U@&afxI21>HVwA;|bH)@s)6DxkSO#8O*g zb@s3cf0@PH+tez}2e5m>+nmuelF^2w!foN?O~R*Y?A@yN3o?M$?uo$tg&a$}04j9Uv4I%w22D{hc6nHTQPg>`)_p0xU%Y zYroUdZ3lL)zZ=BJUDkfHeZA0SUA4+$xAZ%$=3c>a;UK`aeuv-~v^vczLB@;$2OYqj z^$TmPT^5_rZSJ!;a?1rFa}jW4j!r9vU1jYQa5a>hB?z@nNY`PbnQ_?qED+bgfDOdO z7?oqa!)fVr2)0$^*u0wPM3^dUf&q8jluNOeFc01fhnCxv9vesj|w^J^-Aa zMW0h{(l;(DReVXK@k8ltYe3{|wX9Vvy1-k789RYdG`_Ce!v(?a9H^k2ctgi?^|_36 zRH^|+%jZH?Iw2+tRGr063kLi!5SAIZ(Ef`ob{i1WV80WE@twAQNY9Dcw+kfe^~yxx zfo8NOGXsB(i9e!KKO(NV5 z<5V*3Bi-d>XL$IWl!+v-AkF+pxBb861U}Op3GqjQ@Qv;d>cE}%7Th7;a#EMbWqI0w zIoKeAvRmc$%<+^hT+;UDXsxLI0mp|i!Ai(tfuB0m0(5M(v&u%Qle&jK4XaP9#X6mt z)($%pLhEW+<~Rfvpo`+uh5CNm+Fnanw*^}VhYk!;m{x(XFkrVqC+h3NUes&u?;bRF zTVUlbMcRs_USM}Z->Wg(yVjcR78WPs#c646OLO$=N@jJ;D%R)Jv^6%E^gT}J09hQT zi(g&d*EOp+wY;$sK$=ydxdKNmkS$uVE24AINvR~WY2_NLZP3xXK8JRkei+V#S;aGe z=%C+82}}J!{%RYru&$3?aCj8dFaDpO3i5^a%H~#E=W2_y&EgQlf6=|Hj=`$E`$}oj zSjrldd=jH8k5#EGSw;}kh!O+t0q-$D8kmyhLbSXM!hp=Eat8m zwpBCQtbNkdvT$K(X=xrVieSa>aKJqt1aurkZJs{xRCO;s?e!rcapHT zbT(Kx16o>WxAi;o%4;2Yt=7JQ zUQ2l`$P86&)5i%%E^X#xhR(6towZGiEKcfgsgF;25xZwniNxjIBds8>50lmD>f` z>ww8*IGw+CGU@CHX-zn@M3MYd#GfLQ<3YL-F_S+P0>yJwTbv|f7XMpLAUDtA%i-s} zS^R5(LSCLgcF*Q3NpA^XMqVu8^(1T#A5Rv~;ge(ZhMwu2AVRSAcLAT2BV?TC%n&!t z;qT(cg-C^wpCLtQH}XZ2>ns6w>ROu?$;I1O#@oiv*E|!yV|?T*6Q5rS5uAepQ>dfN3XHK5WS3R_PTqxO?(Bp^N#q4 za`2HOptt2%z3a};!W}{2#RocI)zE_!0T0t@@qC^!7c)ew&P9fH>f*_?;+SYMbbgGs zYD~`YwH9NZsBF-edaVv;2h9d4n9J*Q(AxI(kV^ZkV$6kL#lA+MXKkK|?fi`3J}=bNO?`S@ZZtPW*a4 z|BG6@u#$g@BS8&(^7ifXG-S;}-oXjtXAAjy4hXrphLZIYHT-&bE2-u4;ispTUjjc* z)bjJ;=X5O}2S2fOe0?abSS0)B>-ZbU;d=h6Nmx}2p;NY42FQvA{(>Q_WQ{~!bT2rw zvlA6dKKzVuN2a}s?kwlA9$RZj< zgIbIgPJ3^qrB})g3|;W(X^)^%eW3z)I48{y4t(A>QvP(Au4EOCF9nce7_*>B>1!dp zB0W!EIf$!Hqt*ojsyCo89VTLOX=GgVkSA))|KdT*prsb}3^H+|&NAXCf~!Or7Ok+( zRb+%NI{Pi_oI*M<=MLZv=&pl9(9$V>u9PXLHOPtLOCfwIC@d7eyfK+2n=qf_NN z!h$G^>h)OYug4s~S|tYO$=z^hR2cBS@7c*WSN+DV*3#k;jYH6ZMdzV1~CM zi)R|WkOyHEItG$j9qPKVytmiZ33A}VVyG2G_(Da@1wcHWL>)3xC=8i|8PHN=z=`87 zQp8;d?eC3SMljcN=FAxbjg5Io&i0t*gpt%6CB!7r7ZM{BkxjyMU{&}6B@Nn2*n#wl z?{vt5I3#*4HFUB51FrLiP|7|gBDrX10~bgMBx;4bQ?^dRP=)B3J#iZuE2KQvzyy<^ipxioz}@wIfc04PDdln^Z_UAF;1t| z0hxrls%WI+Mg!zXnBLb*Zr!GhCb>75CWX_{3}z_Ue{_PHGP&jkQ%Oj5M>*s#i#*X% z!4IWW^jJDqH#_Z_5LcFP$t8l%7mqR`Xf}4vn2RcjlpkYLFP0SOMT7I2H4hLCMrP&tpkrW^GK+$4_#}}5c&A}#T?|2Skig`SQjNf9 zp{xZ6;gcJWZ=XD8DRL;~QH~VTK0|hfun6!#pQII~alt$OL2XMJrt`1#iuEJ)F_@BR zEu5`QZ~}t~9H(yOCHXPRSVR}Osc*3U3&L-vOYj~1-y=mGM@8?X|Mc@8X z%~WE8?+Wjkwd9uJGQL^G7+)~J3t^?h z?U@(TLhDgca8_-!+F7LoYeK)uM2b}IrD9g50*HZ77dwZ39_B zM^kgvA}ljjfjIAe-S4=R3AYr*(MJBx0QCtq8FlM^rQCaN;itz$wu0!Kt{ydz`3l>> zdXnGE^Q7pPvPeM>B8(akz~_OeAg{sJjY>w?{Xnd-1Q)5)t2)alE?&i_apKe6{NX_H znNVKG`6I#Y<88sDw3lD*e~>}`NJz$n8i&%7oNycYI5BPm{}#uAq<)BBtnL;Bm)50K zss68&MHXB9e_qN$4*VRMIlii=S8I~EE(bYeJrg$44NoW_(+5S3$W{i~Sh*$Xq8mfC zF(@)y!X(J_8-Olg&_16~E`(MyXg_YQ!owoW1QpAE2BE44K4V0Y+c)!><7X94vn!NZ zrNFEZuFa5UBa65jBvtrGX^tSYh(T+7AU8ry47$JvGF=H!GlR@NkPD&3vkWn+i&78Y-MVWnNmfexU|_~ zci8&Py^WUsK^VtWxwva5i&Zx=f0-{zo53}2O26#0D)W_sJGNeUSxm5?I>*vkOkP`L zh}{w~sdvdi$w!y+yda$6ljBvS-%9r_^V*%(UPs^z#oX(=U?K zZ$F2nKPgViheT>;OTQ7+%=54enEbz_e>bKtx_9vJWea!yS<)Q3VRozJ%rt%LBv0c^nf?0ZLJGCIEFsGQx7)yke>z%OgvGM{-C+MrH z(gw_3X)Cr$+b{C&J4mzb77(wSg|&9`0PHvks|Nc!sj45U5W*f6l`t-pw{I8f(=xM= zd#AgnX&SoCwgD!s;ph45&$1OMH_XH;WH5^)k)&7n@S$GVNV-mHA2~Rc9XUD%`|(7Q zr7KI-fedDjr(R`$vbcW1AnXa^RBEQpugcsfDV`mbnokw?AbV$;W0?<0@2EKzk6WA| zj}B#iRdd(|el&S`Q*`PU&HTUv5FE%f&PN+LW^Qwg6iW{adDFwbsmKuqKq_i5V!{H8nmWBxb*GlO>iSZ0_fOSx&LZa)fBK1k zSPlG#^xPeQyxBtTq1bm4(w5XiAC{T7ujN z-6e-YZ7_Hw$dm%mgADq8suFS`bdW)9GnLQ?LPr@iTPHyU7yO9lK@j=}gHHOUr3dJr z4C-K^q-?klQq!#_mCB4H2oEb4LMaStR?afSjZguDqEVC06Uvkd&>RMhNeiJ$2Bk0p zSTyzcG%yu_P&I?@@yVeZp%w-`>0`galm^fW2A!*%hlmTIJ_ZG|P)m}oN3#S7UCf~G zSg76I zLeDekB1TbfygL&hQ#wGeGN_6j2x4g=^g4t1**<9@bb>*bW+)*yLV>7}2+y(@=~s%- zlmSpUgHB{BAs0ev43f_!v2r1l#h{;kitI*cCW8*K0f(iP36PONpE1P)RxX6<88q3K z4iUP5K^jKIQYbe<4hH?)uFSkCD>j?|1A|T~O(00@;+6>8_UW;iigee=S1i;1}*oYR8uxUKQPF^ep#g;^fUWp^{M3% zghCnBO!ny&ZiILS4KuAz)&MyGr820Sje#sJgt8fQnEgu72ttMI(^Wn#>PD!9LFf1q z)(n6u81$udkVhU&5o%=67e0My1fdoN-JYhbUN=G(2HoV74O1>as~ME!TP}ng3_9hT z7DDS7bd?V|x)IvUpl_85B*c^l(A5lTVv9OfhX~1&!#~QEnI8d&|AdA5@C>V$!q|7N zz_Y&!g?S`*4^xmVjy@XerhJ7sx}0PqmQMy%89BaOO`EOD44cWo(aQ>Q;#1S&VmUvoRwTxq z=`7gnIOi17^8r8qe}?I-j{Dt&iVWgU?QwVb-<0OK^J7{82-vv4tpp^tly>Q6N0&mhjD-xcydl2*vQ6*&+h^K)}nC@dqns&ON zhmD0kTNi4lf(|2kf-_lmbC(4OlN|VfpOn;W>ou>mpe7yYA9o9j&Vh4~T5X%Pv(4Pu zW+UYl(GBsVRaA8ebw9^4^xNW&7=(!|+lZ$gi@VGJW_&KL|9_J3-iiy>z!ug2cy*J# zAMgqPZT%jLJCd9tpD2xy7Weh{xlzb;sF!@V3tcGlI|;3|cI$PuRri zM(8UBJy|GagiY;F02IpBNw={)vS|q+4TEZY7^o41q8M}!9!?e)jZ%H18Ux`09?jbUAl1tdrnG11dz9^k9j$;#Vn+=a` zg8iEw8=M7&S)+dt&v!bgVg}3&t3Xj%=(Jm;;|69JNN~$RQlm#*=)yEfH`YEE6{K@W z$`_Hb{J6!C0a6+005fT__iNtX-gr2BG^w zBM!&2ew;;NhFk@sDa@^qrwUNLFoOuoIUJbq&P0d$bO|3v`*GkoE8%E#`b6iVrQDL! zNwHbuFZ|EecjhK!>oOQ+{_L|#8$oCRgF0B9FnUI)fy{SYcOF|#6X0Bc8>v;DRO^%!ZPRylsxD8 z`rVmbM!SO2@BHC)3Geu0T5D^<(Tu5Q*_jhhK9;c5PyzBJYP-l|x=7Guz_$$C@5HH9 zsPgC}YpF(%fI+ku15CxB@IrPROIR=RA11Vg1j4K4iVHtW5HI{}>h#}|_}PgEwnSVf z{J<=3ES>6^-36!sc}#%WeQ?@Qf6jS6IPIEfG;$(PvsO1eH?4YLOGKDbe1^k|hf{{5 zrLz-XS`q+xCYQdQm`r*zlC|Qq*Cm48mc_1sY2vgS6EBUR0=m6FCT346o>`!0_S?t+ zsgEIXSxHG(yn1`0`0DLRYkz&knv7&|O@?sQhg%{7hqWnZ6YuI-1D{2_D~^Vzyck9f zw#EHrBK1`9r^J+)6cRqU;&A*KkClj{^HN^qw;hbT!*Aw%Ny^bwff?&#M*DE;L!pe^ zILECY(xitM$8YBRVI^AikA?doH15>*>d<7(dOxzc zUjG!QF31;0F4kMrf&H*sAqKtF5W`KAmbFtItufB&B{*mM{#sW|A3DC=8NE^r+$~8#GiT(z5A?gJ?KQB(2G(EE za-7$u8>q@a2=e6X^K?epFd9|*p)adIn~uIYd+fHgnK)iHVs0|eREhGS#(sNP0P3OsQ!*n^l0wtvcnp+Mn@JL)3=ZL^w2SV(-hekthg|q z$Pe{P=lgz>&C7vO4Jdx08U?0Eqt3xFUR!T+iO8Qm)F&p&o;*5T3IlUlQ zC;CZT25d#O*QKH~SNAD(tJD`i59FyiQ(w0ku;^Ov1XB2tm|mY%$J zJoZ(;C6L`|N6z=dNaVq^$Oy9d>G&8iDJJ1DZUSp1Z>4?g@OKmR3D^W3|E31TCTN2p zTX#QOGW%)-jUe>GxDYi1_X~r5X6G4qPkkTEz?m8$l$y!VuTd^ghzlT|XV7J@NX#c) z*2rs@yzPq&nd4`NF0wqOk;2OR9E%{yJuEjn+1fqBbr_A(A@m@F&S#ncY>|b~!wj0w zB4mrKCV+++}Jy}XYv-rQz*NF7AS9FlA?z_$7l!yIz!m(|(1Eg_An1pnMm3!1vFDXL`tYO*)z5i* zxnxp9PHUZ?`NbuKoZmxZ^4l}yUzsC3aU=}?%5XcKe2CmoWL$-dm4^8qg^Q1gd2+3R z+_t{PfJ0DZ%CxDHXiCBP(v^;Ekq%Zm7Q;3zYy7=BJx}f%FgS_5w;_%k?P`c8+JS}& zazjQ>nrMMWmfya)OD+}KndoE7g< z<(G~NsVcxA%B(Taq~mERu`0)EIFhbv9-G)7@(p@kRcurlRR?m%1k`+=mJWUCk@_*; zS3F*-BiF^og_1*JtOk4>oifJ9AdM9hR0)fGvEg4E4yXh38;y60&s=Wk;>I5m&o(@5 zf^p#`*2f=b5>aWO8A0f;4BF1dQ8qjw^cI7z!JY*V8=kHJ=sgCV^oh`g&_@iK=L3x( z^f`lmi{egCgl>esU{JbGHcXoVI>DesAK|YHp_2?s@`-Q+p&uAz_8oQ+`jJ6DB58ZF zVY(8apBS{xCzJ~y-p!yaCOD+E;h8#yuQEIl7F-2q-GGz#yu6OphOCFkD*xFB=a+SkI4Sdsx@`cuq_}W zf4{Vw@Q9S4iew$-R}8;kAgp};sGPrMNDCoJF8(opJilWw1ZWq=WlPCkPYPy~b>JOW znGtu(-{h;R46$$C58N#2GKq>{94Vn@})#JGTIP-J`~x@1)|K7 z?ETQdi~JV`5KK@bp)5NpRRkki$+i#Kvn+M$5S(!6@9Z7yf=xUsJOthTRycsP)CTz|qK*-Mw_9P#}VhDVu?-Cc&w$QvY3wLWs0BiP?@IZQ^V#^h^F(e;uEh1knubr}evN4cM|8Q~? zSrHNzLLMD8d>)u1boP*MYK+n3y5+`D@$sJwf8q+@L?50ZX*Bl_f-D$zB+4O8YE4sU z9{>|FU6y%5W@BD?Rw+F>)MX<*FQ=u=XD0>0BoIhaG8!}R3>14Qr&1D>!@vhP@C+!F z;bLg}X4^pfK-20>NRcE3q$dze6`6 ziQVcpf!>@ZbMmSv349BdTnR){-JB?OHXWjy|Nkh-KfON#( z+0kWRlO=^41EXZ;jImTmHj%)}fgF|auW|W$BFld<#A_f)NG-cdFW&o$p)64ReL(t> zQ1Pi=gI-NcQ_^cmr_E3zeljJ!L_0~-)XHkyDAvWN$E!(D(A;qH!Fi?-a`fwYK}3j| z3^7bikLLVa<0htm@@jf1+~kE__NAL|$6u8FuGkJXJ?o^aJqD!xk*%j;wR48s=N^%5 zzPP?h&({5#tw4NNJ5(FAO4=TjY{5ZVRIhWZ3(gye;~~WKHNVI!}Q3@nKUS(=J8GEl|Lt!_2fxPXP2mDuaANxe!{F#vnF-OQA*(DmF+^ks$pt z4g;Yo23^aRO{?F!2`^Fl2A~=S-KbZFav`*gK^L$YS&DE3p)LkxFsA*_=Xat8AwugJ zl*6{K7&r4RKpPq4bDbY?A@pkoz3HR7IfBqt3_9YYZ)SomGTn9tE%)VSzJpM|W6(h# z9WWO{cQEL*PeqL&G|Zs8d@}DwXoNw7KDA*w3D9#40xp<7QjuK<9cGYYwh|ga=qm<= zumufkFM#;ebjf$6vNmKMX!rIX(lf`WZ_1x~x`z~pynOxvlDwRCis^dE!CDj{p3!%R zkA9vTp;QKa>{FGde*%=tpd-F&f(R8eD9J~UZ3G~`l0kzkhcp}VQuu3b(`fpp(Tq)_ znVUwlHjPf-G@89>G-uQ3j7_7tn@00CjplC}E!Z?#xM{R#(`fOg(V3e@XKfmty=k;$ zcyvyviGg>{QV#p_J;-2$&N1?Iwc(!s&4_iuJt{#7tjIJ-;FcexUjZhm| zVG0XM3yOs*FqSZA2i2ZV>l(2A=Y-Af9#GW*TYzweqYI4w^*hZ%*C6Pkbz1v!1h7p9 zo8Hy|2l$h}f^|GFi{|wumg~%)CySG#j4%14jyBtPCZ)&4#xEyNa7)70p+~aDpXSdtcCIkOy|Rq?}(L!}Ck=-gxm=mi;Klh?a5|Bj+ZgkE6~$E16#ccAF; zbq2{N8Cg%nQ13G6Ym`>Ob7N7a8fN*G0DZ(DdD(yMMTqQ|`RQt7!~(3Ooj*u+cyWZrXW#}&SU6S?$$>C4 zMe;)bSHS-(c2HsFkUX+yG8}kwv{?t1!J6&1PB0HG836m7Mvzcle$s8@|No4khjdX?IV!f$RcG0J&{Cyp2N0mBw_smG)$VF`oSGN@F

g{S=(1M`&@mf0X8dWEby2&$(i6mPu{m?TirxAub-+J2b7fLj7_gJ51sxg+dy7Bc^9;E2av zp`C41e-}o-@7WM{d!E$k+31JRWVWn(JyZ#~5sG5aEFXs7^fwqY6B%@c6v%hXv<<&! z^yiM3No9c=|N6VG%wPQ&aw@y*x<<^ zgPvsEgA~e?56~6{EzIyq3!yt0q%$d@5rm#$kk%)Z8=R#5n!(Cd2v9Uz6Uv(+EG>i*85D^pyy20c5rhgE zw5v)9xe;n-(2s0xXK57yw2DEoiUg-4c@2|1u`J?^jOl(o7R17h(FdnpWcJ)8aq`U&2WXzswR-xR@GaO3U!k z*U31GDl^6_bA>b#F{aFP(3COJC8BbEq{_X>RP-MvDV1lJDIu2Rott`3hJ4}88K-V3 zVN(A01lT*-XBx>u1~WKgqBBr(ex>w2Ha$6oyty#$2vt1IIE%Fcob-=}vqYuBo-{q1 znm&=&{8Q&w5h;f`bD#15)+i~+Idh+>%9!X5Jh>jQC`gNmV!=n=997CeBIb3akUt+^Sf9a^_WtFjyb|eH0b7I0El@b` zncrs|X4hldbLm|tDC0+YQruzbeN2!;^Zs2jmRj!kyq65g3SAiaXelK=vs43EB(R4y zW&U5{{qYKeWaj*X>jicTplYAzEEhFM9>=~%h^KCye;CXCPGC2U zt739I69G1R+(Xhk)ZiWE$CJ-2bA=03%Xf0Yr^8i$gwcBEbLDfQCeWpOr~H^=bUK?Y z6>{>k^0h0_Hz-4yz5(b}2K{Zm5^^DQftuGtcv^c(kHmhRjL*hIo7x^_O94f6{w>b z*HiJA0G1!sneITrj3$f8y%jq`@EA`@hJRCy3d6y?=d5@oFuDS+T2NeR4T=S-36ynY z*7htX$)pm|0*SE~RXpWCrzY{B*H%2;n!&CdRxvYB$S3T?){>7v%he_Y`LN=}iB}6y z?sPHzM8$(2WlVJ7U5*_ZB~46wy>hk@k6CUIDkG%RN-LxzgqW**&YPY3y)G z)o(Q9H#<@VNncLU?M&E^vYIPf)grk-RWGP|wSk@OdpYChe5tnCQUq(8G75JW((j%X zqZIV|s*!SK=f>&LlM0)eSSp9B+Fh8d6&Xn^39S?*Cb0s-#qG)+FNx-bBRiBy;7IRD zq8wh}p$jQ8FufvJoc8&`ky|r(>GD%muGH9=gaFgf(G*F*FLx-GwX3UhQoJJU^a<}6 zlhT}b0@%lKRYuM>F%l81y1rHLy_~p!i=HE!-gt!o@ zWY8TxQ{V_fwG8qx6iM6w@#iqe*M=pz@EyF^eE0STsx!y0G+NW1HjwfuD_%SRNgiW$ zw#278M-cj$L6p2b_2mYL|B^v3DTRizh-dfkL)A-z$kOnXlK)b@^3m!e6P>hwvHD|w zj(UGu{nwy>`)tCO)$x^?p9Vb}m8&7&;Zq#FtR^Z>3`?K?#u-kq z{=VkRFe9?1|6Amb{Qon-(SdAufDXO;V(57+HRsEV{Z3u}B%8Qp8xV`R1RHb_opl2BLqR)`yLg+6HniVdEk}^Mn&}$6( z+DE&}jnI1x`sfN}DAQ8_32YVdcz_aeA*5%}J!&O1f>0WR-tdu6y8#lWGiYO|A{375 zsD+GI>qusPHGCfP7{^Lk+P5?IJI|oBy{ry)D_^O(L*h&Qq4PItKAn74jrWggj{I99 zLXv%KUW}L-T6@2r3xBxWyY>@*R8LH`@9L<8)Q{8Xt+oH=eso9et05S<_jJ%12M647 zO{TlO(|T&lxWJ7&)whY~S!8M5>CQGPT~licC$o?68~iXu@cY^$e%I-Pwa@;Rnc( zsV18wf5~6{Z`=Ppw@x>a;SVx;aov2cp#&sBntabCbuAnZxkL5!v9x%|RX3YvO}nA) znxNS^g>#Ckzv$SZGeYs#%{ZOW~{`c(aA#~&}PyIC)8_#H)1Rsuj>M#e0%q^*GRL2JIy<^VEkc!FrG`!fh^a(GRFj zXa~Uf5*VO{E2R6WWkfK+)YRX*Ub>_jj0yB>!RS=i46t!wT{X0R##(B2%9DU2S6k}@ zdrn}w5R?z`N?f#qu?Dm@x@am6Es#H67YZtluy_UAQ`8U@{LnC+cDO4qS4)q`w96;_ z+o=_EI9%_rfPpKpv?y6@Tx)jJdlKo&)lSdTYE!!)^KheMMN>Q6E~d#}2RB3FBV94s z-D_KE219{($7Ex3dq38drK`5T69+=__~(;iN&n+fA?MQ2Mggw9!y_zGsO)TcC9Dib zZxF1gv#o^Njrs=q;3`V`3pZ}V})BbQzWyz|iqYQOV$YBJXIv?ITea+9=?p*o8tpY!YQ zpFFWG@747eM~Q2$uIS|a-kOU%To1CgjrCzVlG<9khi2aIoks`^JC@t)pPrpDk>LT> zYX}5^eVkY7U$!czu10`84Dk-I($sKdf;OveX!xZn;>8}ir-S@7KJ#Ca-aYz;0XmAK zbw1=u86!#k7R;nSs$OcVe(v*QqWW=cRFZEMsxC4HmwxGm{{=It>S9F1B~tRu%rE(& zxnXX#N|n#zlC!zuW#4ShS9`OG>I}+k7P4&KOS3ui_?W1KSA3&lDbs8+%?OoB1i{w2 zD3EGW((pq~ba`X-{~hQ4PaEep81nvqcw)S(aX0|vPN9o4?-2KQH-5=2>6NVH-NbrP zacMz;(A3utvnvWqtzhV|+v=dI`ki=@$Cez}`r9Hn23LalV5-O{SS|n!eg|v;!qy<1 r^MI|u0lQ6kHodp;a1d^#R&W{Y5VA_Kx<|giGnfTQJ@U?hy5Ro>%tZDZ delta 46942 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",BI=5$, $IB,"<4>",BI=4$, $IB,"<5>",BI=5$, $IB," -U8 *CIA_neeger_imgs[4] = {$IB,"<8>",BI=8$, $IB,"<7>",BI=7$, $IB,"<8>",BI=8$, $IB,"<9>",BI=9$}; +U8 *CIA_agent_imgs[4] = {$IB,"<8>",BI=8$, $IB,"<7>",BI=7$, $IB,"<8>",BI=8$, $IB,"<9>",BI=9$}; @@ -334,7 +334,7 @@ U0 MPMenDraw(CDC *dc2) if (tmpu->friendly) { if (tmpu->CIA && Blink) - _tmps = CIA_neeger_imgs; + _tmps = CIA_agent_imgs; else _tmps = friendly_imgs; } diff --git a/src/Compiler/Asm.ZC b/src/Compiler/Asm.ZC index af5d584d..6238ad92 100755 --- a/src/Compiler/Asm.ZC +++ b/src/Compiler/Asm.ZC @@ -1145,7 +1145,7 @@ U0 ParseAsmDefine(CCompCtrl *cc, I64 U8_count) Lex(cc); } -U0 ParseBinFile(CCompCtrl *cc) +U0 ParseBinLoad(CCompCtrl *cc) { I64 i, size; U8 *buf, *st; @@ -1259,8 +1259,8 @@ U0 ParseAsmBlk(CCompCtrl *cc, I64 comp_flags) ParseAsmDefine(cc, 8); break; - case AKW_BINFILE: - ParseBinFile(cc); + case AKW_BINLOAD: + ParseBinLoad(cc); break; case AKW_LIST: diff --git a/src/Compiler/CHash.ZC b/src/Compiler/CHash.ZC index f96a178a..98e037af 100755 --- a/src/Compiler/CHash.ZC +++ b/src/Compiler/CHash.ZC @@ -1,7 +1,7 @@ I64 HashEntrySize(CHashSrcSym *tmph) {//Logical size of a std system hash entry. CDebugInfo *debug_info; - CBinFile *bfh; + CZXE *zxe; switch (HashTypeNum(tmph)) { @@ -27,8 +27,8 @@ I64 HashEntrySize(CHashSrcSym *tmph) return MSize(tmph(CHashGeneric *)->user_data0); else { - bfh = mem_boot_base - sizeof(CBinFile); - return bfh->file_size; + zxe = mem_boot_base - sizeof(CZXE); + return zxe->file_size; } case HTt_WORD: @@ -59,7 +59,7 @@ I64 HashEntrySize2(CHashSrcSym *tmph) { res += MemberListSize(tmph); if (debug_info = tmph->debug_info) -//This should be $LK,"MSize",A="MN:MSize"$() but it would crash on AOT .BIN file functions. +//This should be $LK,"MSize",A="MN:MSize"$() but it would crash on AOT .ZXE file functions. res += debug_info->body[debug_info->max_line + 1 - debug_info->min_line] - debug_info->body[0]; } else if (tmph->type & HTT_DEFINE_STR) diff --git a/src/Compiler/CMain.ZC b/src/Compiler/CMain.ZC index ad8aa8cf..d56a45ee 100755 --- a/src/Compiler/CMain.ZC +++ b/src/Compiler/CMain.ZC @@ -492,11 +492,11 @@ U0 CompFixUpAOTAsm(CCompCtrl *cc, CAOT *tmpaot) } I64 Comp(U8 *filename, U8 *map_name=NULL, U8 *out_name=NULL, U8 mapfile_drive_let=0) -{//AOT Compile CC or PRJ file a and output BIN file. Returns err_count. +{//AOT Compile ZC or PRJ file and output ZXE file. Returns err_count. U8 *ptr, *fbuf = NULL, *fbuf2 = NULL, *fbuf3 = NULL, *patch_table = MAlloc(0x20000); CAOT *tmpaot; I64 i, count, size = 0, error_count = 0, warning_count = 0, aot_U8s = 0; - CBinFile *bfh; + CZXE *zxe; CAOTImportExport *tmpie, *tmpie1; CAOTAbsAddr *tmpa, *tmpa1; CAOTHeapGlobalRef *tmphgr, *tmphgr1; @@ -626,25 +626,25 @@ I64 Comp(U8 *filename, U8 *map_name=NULL, U8 *out_name=NULL, U8 mapfile_drive_le MemSet(ptr, 0, 16); i = ptr - patch_table; //Needs 16 ALIGN - size = (sizeof(CBinFile) + aot_U8s + i + 15) & -16; - bfh = MAlloc(size); - bfh->jmp = 0xEB + 256 * (sizeof(CBinFile) - 2); -#assert sizeof(CBinFile) - 2 <= I8_MAX - bfh->reserved = 0; - bfh->bin_signature = BIN_SIGNATURE_VAL; - bfh->org = tmpaot->org; - bfh->module_align_bits = tmpaot->max_align_bits; - bfh->patch_table_offset = sizeof(CBinFile)+aot_U8s; - bfh->file_size = size; - MemCopy(bfh(U8 *) + sizeof(CBinFile), tmpaot->buf, aot_U8s); - MemCopy(bfh(U8 *) + sizeof(CBinFile) + aot_U8s, patch_table, size - aot_U8s - sizeof(CBinFile)); + size = (sizeof(CZXE) + aot_U8s + i + 15) & -16; + zxe = MAlloc(size); + zxe->jmp = 0xEB + 256 * (sizeof(CZXE) - 2); +#assert sizeof(CZXE) - 2 <= I8_MAX + zxe->reserved = 0; + zxe->signature = ZXE_SIGNATURE_VAL; + zxe->org = tmpaot->org; + zxe->module_align_bits = tmpaot->max_align_bits; + zxe->patch_table_offset = sizeof(CZXE) + aot_U8s; + zxe->file_size = size; + MemCopy(zxe(U8 *) + sizeof(CZXE), tmpaot->buf, aot_U8s); + MemCopy(zxe(U8 *) + sizeof(CZXE) + aot_U8s, patch_table, size - aot_U8s - sizeof(CZXE)); Free(fbuf2); if (out_name) - fbuf2 = ExtDefault(out_name, "BIN"); + fbuf2 = ExtDefault(out_name, "ZXE"); else - fbuf2 = ExtChange(fbuf, "BIN"); - FileWrite(fbuf2, bfh, size); - Free(bfh); + fbuf2 = ExtChange(fbuf, "ZXE"); + FileWrite(fbuf2, zxe, size); + Free(zxe); Free(tmpaot->buf); QueueDel(tmpaot); Free(tmpaot); diff --git a/src/Compiler/CompilerA.HH b/src/Compiler/CompilerA.HH index cf9200f3..806b50ed 100755 --- a/src/Compiler/CompilerA.HH +++ b/src/Compiler/CompilerA.HH @@ -310,7 +310,7 @@ class CIntermediateStruct #define AKW_IMPORT 85 #define AKW_LIST 86 #define AKW_NOLIST 87 -#define AKW_BINFILE 88 +#define AKW_BINLOAD 88 #define KW_KWS_NUM 89 #define CMP_TEMPLATE_INC 0x00 diff --git a/src/Compiler/OpCodes.DD b/src/Compiler/OpCodes.DD index 9ea01687..6694bf8a 100755 --- a/src/Compiler/OpCodes.DD +++ b/src/Compiler/OpCodes.DD @@ -218,7 +218,7 @@ ASM_KEYWORD USE64 84; ASM_KEYWORD IMPORT 85; ASM_KEYWORD LIST 86; ASM_KEYWORD NOLIST 87; -ASM_KEYWORD BINFILE 88; +ASM_KEYWORD BINLOAD 88; OPCODE PUSH 0x0E, CS diff --git a/src/Demo/AcctExample/PersonalMenu.DD b/src/Demo/AcctExample/PersonalMenu.DD index 0758078fee41d8a133898f7b3af4097e561f25dc..f9ed45b995a7462bbe71064fb64744c0159aa502 100755 GIT binary patch delta 29 icmccE&T_V$WrHabb5w-uWGkkHAiDVh)AR>Sj2{7@01D6m delta 33 lcmX@x&T_GxWrHabtCOdnp7Uf2riBnz^Btz?cbFJI0sz053vd7c diff --git a/src/Demo/AcctExample/PersonalNotes.DD b/src/Demo/AcctExample/PersonalNotes.DD index 00c189c8..40e56af3 100755 --- a/src/Demo/AcctExample/PersonalNotes.DD +++ b/src/Demo/AcctExample/PersonalNotes.DD @@ -1,7 +1,5 @@ $WW,1$$FG,5$$TX+CX,"TODO"$$FG$ -* Get rid of niggerlicious name "binary". - * Change mouse Z to wheel. * 10/28/17 Editor froze when filter search 3, in bible, "hour". @@ -463,26 +461,3 @@ $TX,"Peter Gadwa",HTML="http://www.wired.com/magazine/2010/11/mf_ticketmaster/al $TX,"Ticketmaster",HTML="http://www.nytimes.com/1994/11/06/business/ticketmaster-s-mr-tough-guy.html?pagewanted=a"$ $TX,"Tom Foley",HTML="http://web.gccaz.edu/~tfoley/perspage.html"$ $TX,"Graphic Technologies",HTML="https://web.archive.org/web/20020811060541/http://www.graphic-technologies.com/"$ - - - - - - - - - - - - - - - $SP,"<1>",BI=1$ - - - - - - - -Òœÿÿÿ#ºÿÿÿ#A#œÿÿÿºÿÿÿA         \ No newline at end of file diff --git a/src/Demo/AcctExample/TOS/TOSConfig.ZC b/src/Demo/AcctExample/TOS/TOSConfig.ZC index c3cf30f8..52c3fa8e 100755 --- a/src/Demo/AcctExample/TOS/TOSConfig.ZC +++ b/src/Demo/AcctExample/TOS/TOSConfig.ZC @@ -4,13 +4,13 @@ U0 TOSDebugDistro1() { - CBinFile *bfh = mem_boot_base - sizeof(CBinFile); + CZXE *zxe = mem_boot_base - sizeof(CZXE); - bfh(I64) += bfh->file_size - 1; + zxe(I64) += zxe->file_size - 1; DefinePrint("TOS_DEBUG_DISTRO", "0x%X", CeilI64(SYS_KERNEL_END + SLOP, BLK_SIZE)); DefinePrint("TOS_DEBUG_DISTRO_END", "0x%X", FloorI64((BOOT_RAM_LIMIT - (BOOT_STACK_SIZE + DVD_BOOT_LOADER_SIZE)) >> 4 << 4 - - (bfh(I64) - SYS_KERNEL_END) - SLOP, BLK_SIZE)); + (zxe(I64) - SYS_KERNEL_END) - SLOP, BLK_SIZE)); DefinePrint("CONFIG_DEBUG_DISTRO_FILE", "\"/Tmp/DebugDistro.BIN\""); } TOSDebugDistro1; diff --git a/src/Demo/AcctExample/TOS/TOSDistro.ZC b/src/Demo/AcctExample/TOS/TOSDistro.ZC index 5a9c8f84..f0046e4c 100755 --- a/src/Demo/AcctExample/TOS/TOSDistro.ZC +++ b/src/Demo/AcctExample/TOS/TOSDistro.ZC @@ -103,7 +103,7 @@ U0 DebugDistroFilePrep() Format('A',, FALSE, FSt_REDSEA); DirMake("A:/Compiler"); - Copy("C:/Compiler/Compiler.BIN", "A:/Compiler"); + Copy("C:/Compiler/Compiler.ZXE", "A:/Compiler"); Copy("C:/Compiler/OpCodes.DD", "A:/Compiler"); Copy("C:/Compiler/CompilerA.HH", "A:/Compiler"); Copy("C:/Compiler/CompilerB.HH", "A:/Compiler"); @@ -138,14 +138,14 @@ U0 StdDistroPrep() CopyTree("C:/", TOS_DISTRO_DIR "/"); DelTree(TOS_DISTRO_DIR "/Home"); DirMake(TOS_DISTRO_DIR "/Home"); - Del(TOS_DISTRO_DIR "/" KERNEL_BIN_C); - Del(TOS_DISTRO_DIR BOOT_DIR "/OldMBR.BIN.C"); - Del(TOS_DISTRO_DIR BOOT_DIR "/BootMHD2.BIN.C"); + Del(TOS_DISTRO_DIR "/" KERNEL_ZXE); + Del(TOS_DISTRO_DIR BOOT_DIR "/OldMBR.BIN"); + Del(TOS_DISTRO_DIR BOOT_DIR "/BootMHD2.BIN"); } U0 MakeStdDistro() { StdDistroPrep; - RedSeaISO(TOS_ISO_NAME, TOS_DISTRO_DIR, TOS_DISTRO_DIR BOOT_DIR_KERNEL_BIN_C); + RedSeaISO(TOS_ISO_NAME, TOS_DISTRO_DIR, TOS_DISTRO_DIR BOOT_DIR_KERNEL_ZXE); DefinePrint("DD_TEMPLEOSCD_SIZE", "Download $TX,"ZealOS V1.01",D="DD_OS_NAME_VERSION"$ - Standard Distro (%0.1fMB)", 0.1 * (10 * Size(TOS_ISO_NAME, "+s") / 1024 / 1024)); Drive('C'); @@ -165,9 +165,9 @@ U0 LiteDistroPrep() DelTree(TOS_DISTRO_DIR "/Apps"); DelTree(TOS_DISTRO_DIR "/Demo"); Copy(TOS_DISTRO_DIR "/Demo/Games/Talons.ZC", TOS_DISTRO_DIR "/Home"); - Del(TOS_DISTRO_DIR "/" KERNEL_BIN_C); - Del(TOS_DISTRO_DIR BOOT_DIR "/OldMBR.BIN.C"); - Del(TOS_DISTRO_DIR BOOT_DIR "/BootMHD2.BIN.C"); + Del(TOS_DISTRO_DIR "/" KERNEL_ZXE); + Del(TOS_DISTRO_DIR BOOT_DIR "/OldMBR.BIN"); + Del(TOS_DISTRO_DIR BOOT_DIR "/BootMHD2.BIN"); Del(TOS_DISTRO_DIR "/System/AutoComplete/ACDefs.DATA"); Del(TOS_DISTRO_DIR "/System/AutoComplete/ACWords.DATA"); Del(TOS_DISTRO_DIR "/Misc/Bible.TXT"); @@ -175,7 +175,7 @@ U0 LiteDistroPrep() U0 MakeLiteDistro() { LiteDistroPrep; - RedSeaISO(TOS_ISO_NAME, TOS_DISTRO_DIR, TOS_DISTRO_DIR BOOT_DIR_KERNEL_BIN_C); + RedSeaISO(TOS_ISO_NAME, TOS_DISTRO_DIR, TOS_DISTRO_DIR BOOT_DIR_KERNEL_ZXE); DefinePrint("DD_TEMPLEOSCD_SIZE", "Download $TX,"ZealOS V1.01",D="DD_OS_NAME_VERSION"$ - Standard Distro (%0.1fMB)", 0.1 * (10 * Size(TOS_ISO_NAME, "+s") / 1024 / 1024)); Drive('C'); @@ -193,14 +193,14 @@ U0 DebugDistroPrep() CopyTree("C:/", TOS_DISTRO_DIR "/"); DelTree(TOS_DISTRO_DIR "/Home"); DirMake(TOS_DISTRO_DIR "/Home"); - Del(TOS_DISTRO_DIR "/" KERNEL_BIN_C); - Del(TOS_DISTRO_DIR BOOT_DIR "/OldMBR.BIN.C"); - Del(TOS_DISTRO_DIR BOOT_DIR "/BootMHD2.BIN.C"); + Del(TOS_DISTRO_DIR "/" KERNEL_ZXE); + Del(TOS_DISTRO_DIR BOOT_DIR "/OldMBR.BIN"); + Del(TOS_DISTRO_DIR BOOT_DIR "/BootMHD2.BIN"); } U0 MakeDebugDistro() { DebugDistroPrep; - RedSeaISO(TOS_ISO_NAME, TOS_DISTRO_DIR, TOS_DISTRO_DIR BOOT_DIR_KERNEL_BIN_C); + RedSeaISO(TOS_ISO_NAME, TOS_DISTRO_DIR, TOS_DISTRO_DIR BOOT_DIR_KERNEL_ZXE); DefinePrint("DD_TEMPLEOS_DEBUG_SIZE", "Download $TX,"ZealOS V1.01",D="DD_OS_NAME_VERSION"$ - Debug Distro (%0.1fMB)", 0.1 * (10 * Size(TOS_ISO_NAME, "+s") / 1024 / 1024)); Drive('C'); @@ -218,12 +218,12 @@ U0 StaffDistroPrep() DelTree(TOS_DISTRO_DIR "/Home/Sup1"); DelTree(TOS_DISTRO_DIR "/Home/Sup2"); DelTree(TOS_DISTRO_DIR "/Home/Sup3"); - Del(TOS_DISTRO_DIR "/" KERNEL_BIN_C); + Del(TOS_DISTRO_DIR "/" KERNEL_ZXE); } U0 MakeStaffDistro() { StaffDistroPrep; - RedSeaISO(TOS_ISO_NAME, TOS_DISTRO_DIR, TOS_DISTRO_DIR BOOT_DIR_KERNEL_BIN_C); + RedSeaISO(TOS_ISO_NAME, TOS_DISTRO_DIR, TOS_DISTRO_DIR BOOT_DIR_KERNEL_ZXE); DefinePrint("DD_TEMPLEOS_STAFF_SIZE", "Download $TX,"ZealOS V1.01",D="DD_OS_NAME_VERSION"$ - T.S. Company Internal Distro (%0.1fMB)", 0.1 * (10 * Size(TOS_ISO_NAME, "+s") / 1024 / 1024)); Drive('C'); @@ -383,6 +383,6 @@ public U0 TOSRegen() {//Generate distro ISO's TOSBootHDIns('C'); Once("PopUp(\"TOSRegen2;\");"); -// BootRAM("C:/Kernel/" KERNEL_BIN_C); //Boot to load $LK,"TOS_CONFIG",A="PF:::/Demo/AcctExample/TOS/TOSConfig.ZC,TOS_CONFIG"$. - BootRAM("::" BOOT_DIR_KERNEL_BIN_C); //Boot to load $LK,"TOS_CONFIG",A="PF:::/Demo/AcctExample/TOS/TOSConfig.ZC,TOS_CONFIG"$. +// BootRAM("C:/Kernel/" KERNEL_ZXE); //Boot to load $LK,"TOS_CONFIG",A="PF:::/Demo/AcctExample/TOS/TOSConfig.ZC,TOS_CONFIG"$. + BootRAM("::" BOOT_DIR_KERNEL_ZXE); //Boot to load $LK,"TOS_CONFIG",A="PF:::/Demo/AcctExample/TOS/TOSConfig.ZC,TOS_CONFIG"$. } diff --git a/src/Demo/GlobalVars.ZC b/src/Demo/GlobalVars.ZC index ec7520fc..69b78abb 100755 --- a/src/Demo/GlobalVars.ZC +++ b/src/Demo/GlobalVars.ZC @@ -42,7 +42,7 @@ point, but might res in odd differences, perhaps from the order things are evaluated. Data heap globals are good for AOT modules -because they don't take-up room in the .BIN file. +because they don't take-up room in the .ZXE file. */ #ifjit diff --git a/src/Demo/Graphics/GrDir.ZC b/src/Demo/Graphics/GrDir.ZC index ffc289ef9517e6028ecc03e7ecc158e8aa54ce52..7f97dce26f9deb222c91b310c22b1760a82ed1cd 100755 GIT binary patch delta 33 ncmX@=dC+siV@Bqv2-nRo7=wi-+lrWiIFt7YiEZu{u@V3P-|h?0 delta 34 pcmX@;dDL^mV@6gdPd`29&CeKvg_!i5CtHe`G6O|67m5T3007z}3ikj2 diff --git a/src/Doc/Asm.DD b/src/Doc/Asm.DD index 2f7f8cb6..ccfe05dd 100755 --- a/src/Doc/Asm.DD +++ b/src/Doc/Asm.DD @@ -40,8 +40,8 @@ $FG,2$ALIGN$FG$ $FG,4$num$FG$, $FG,4$fill_byte$FG$ Align to $FG,4$num$FG$ boundary and fill with $FG,4$fill_byte$FG$. $FG,2$ORG$FG$ $FG,4$num$FG$ - Set code address for JIT or set module $LK,"Load",A="MN:Load"$() address -- has 16-byte $LK,"CBinFile",A="MN:CBinFile"$ header and patch table trailing. + Set code address for JIT or set module $LK,"Load",A="MN:Load"$() address -- has 16-byte $LK,"CZXE",A="MN:CZXE"$ header and patch table trailing. -$FG,2$BINFILE$FG,4$ "FileName.BIN"$FG$; +$FG,2$BINLOAD$FG,4$ "FileName.BIN"$FG$; See $LK,"Assembly Language",A="FF:::/Doc/GuideLines.DD,Assembly Language"$, $LK,"::/Demo/Asm/AsmAndC1.ZC"$, $LK,"::/Demo/Asm/AsmAndC2.ZC"$ and $LK,"::/Demo/Asm/AsmAndC3.ZC"$. diff --git a/src/Doc/Boot.DD b/src/Doc/Boot.DD index 775a2481d6e6485b868f6cd8ea60b2eb09dae468..226a731732b961bd4638492f5faf668e38d168b9 100755 GIT binary patch delta 94 zcmX@EwNq=uA{OST2-nHy`Q;`bWmyJdZ_Z=g$OvYru=6l&Hsb7n@b+^Z0W&~qH!tI{ WfO94@@+pGVtMV;{C_T?#!3qG|kscuc delta 109 zcmdm~bzE!1A{JIBPd`29$p`u6CLd;5#th_b&SBli2oc__z|OS5_j@fUPZ7Ol6*^H8V>STumS);ups3C diff --git a/src/Doc/ChangeLog.DD b/src/Doc/ChangeLog.DD index 716a80b5..8b3e8874 100755 --- a/src/Doc/ChangeLog.DD +++ b/src/Doc/ChangeLog.DD @@ -1,4 +1,24 @@ $WW,1$$FG,5$$TX+CX,"ChangeLog"$$FG$ +$IV,1$----01/28/22 02:22:37----$IV,0$ +* Raised version number to 1.10. +* Removed .C suffix on non-executable binary files. + - $LK,"R",A="MN:R"$("BOOT_DIR_OLDMBR_BIN_C", "$LK+PU,"BOOT_DIR_OLDMBR_BIN",A="MN:BOOT_DIR_OLDMBR_BIN"$"); + - $LK,"R",A="MN:R"$("BOOT_DIR_BOOTMHD2_BIN_C", "$LK+PU,"BOOT_DIR_BOOTMHD2_BIN",A="MN:BOOT_DIR_BOOTMHD2_BIN"$"); + - $LK,"R",A="MN:R"$("\"CC\", "\"ZC\""); +* Renamed executable binary file format .BIN to .ZXE (Binary -> Zeal Executable). + - $LK,"R",A="MN:R"$("CBinFile", "$LK+PU,"CZXE",A="MN:CZXE"$"); + - $LK,"R",A="MN:R"$("BINFILE", "BINLOAD", "-i"); + - $LK,"R",A="MN:R"$("ParseBinFile", "$LK+PU,"ParseBinLoad",A="MN:ParseBinLoad"$"); + - $LK,"R",A="MN:R"$("\".BIN\", "\".ZXE\""); // carefully... + - $LK,"R",A="MN:R"$("\"BIN\", "\"ZXE\""); // carefully... + - $LK,"R",A="MN:R"$(".BIN", ".ZXE"); // carefully... + - $LK,"R",A="MN:R"$("KERNEL_BIN_C", "$LK+PU,"KERNEL_ZXE",A="MN:KERNEL_ZXE"$"); + - $LK,"R",A="MN:R"$("BOOT_DIR_KERNEL_BIN_C", "$LK+PU,"BOOT_DIR_KERNEL_ZXE",A="MN:BOOT_DIR_KERNEL_ZXE"$"); + - $LK,"R",A="MN:R"$("BOOT_DIR_DVD_KERNEL_BIN_C", "$LK+PU,"BOOT_DIR_DVD_KERNEL_ZXE",A="MN:BOOT_DIR_DVD_KERNEL_ZXE"$"); + - $LK,"R",A="MN:R"$("BIN_SIGNATURE_VAL", "$LK+PU,"ZXE_SIGNATURE_VAL",A="MN:ZXE_SIGNATURE_VAL"$"); + - $LK,"R",A="MN:R"$("BinRep", "$LK+PU,"ZXERep",A="MN:ZXERep"$"); + - $LK,"R",A="MN:R"$("ST_BIN_FILE_TYPES", "$LK+PU,"ST_ZXE_FILE_TYPES",A="MN:ST_ZXE_FILE_TYPES"$"); + $IV,1$----01/18/22 00:35:45----$IV,0$ * Raised version number to 1.09. * Integrated HolyMath into OS (from https://github.com/TempleProgramming/HolyMath). diff --git a/src/Doc/FAQ.DD b/src/Doc/FAQ.DD index c5cfb763..1791a2c5 100755 --- a/src/Doc/FAQ.DD +++ b/src/Doc/FAQ.DD @@ -29,7 +29,7 @@ $ID,2$The term $LK,"JIT Compile Mode",A="FF:::/Doc/Glossary.DD,JIT Compile Mode" $ID,-2$$TR,"Is it open source? How do I build it?"$ $ID,2$ZealOS is 100% open source. All the source code is included in the distro. Use $LK,"BootHDIns",A="MN:BootHDIns"$() to compile the kernel and compiler. The rest is $LK,"JIT Compiled",A="FF:::/Doc/Glossary.DD,JIT Compile Mode"$ during boot. See $LK,"::/StartOS.ZC"$. $ID,-2$$TR,"Where are object files? How do I link?"$ -$ID,2$ZealOS does not use object files or a linker. $LK,"AOT Compile Mode",A="FF:::/Doc/Glossary.DD,AOT Compile Mode"$ is used to directly create flat binary files, $LK,"::/Boot/Kernel.BIN.C",A="FI:::/Kernel/Kernel.PRJ"$ and $LK,"::/Compiler/Compiler.BIN",A="FI:::/Compiler/Compiler.PRJ"$ with no object files and linking.$FG$ $LK,"JIT Compile Mode",A="FF:::/Doc/Glossary.DD,JIT Compile Mode"$ place code in memory, ready to run, with no object files or linking. Linking is done when $FG,2$BIN$FG$ modules are $LK,"Load",A="MN:Load"$()ed. +$ID,2$ZealOS does not use object files or a linker. $LK,"AOT Compile Mode",A="FF:::/Doc/Glossary.DD,AOT Compile Mode"$ is used to directly create flat binary files, $LK,"::/Boot/Kernel.ZXE",A="FI:::/Kernel/Kernel.PRJ"$ and $LK,"::/Compiler/Compiler.ZXE",A="FI:::/Compiler/Compiler.PRJ"$ with no object files and linking.$FG$ $LK,"JIT Compile Mode",A="FF:::/Doc/Glossary.DD,JIT Compile Mode"$ place code in memory, ready to run, with no object files or linking. Linking is done when $FG,2$ZXE$FG$ modules are $LK,"Load",A="MN:Load"$()ed. $ID,-2$$TR,"What is the FPS refresh rate?"$ $ID,2$The refresh rate is $TX,"(60000.0 / 1001)",D="WINMGR_FPS"$ frames-per-second. That is how often ZealOS updates screen mem. It is not synchronized to the hardware. $ID,-2$$TR,"How does a task own the speaker?"$ @@ -52,7 +52,7 @@ $ID,-2$$TR,"How do I set the PATH?"$ $ID,2$There is no $FG,2$PATH$FG$. You do not enter filenames at the command-line and expect them to run. You enter C-like code. $LK,"Get Started Here",A="FI:::/Doc/CmdLineOverview.DD"$. $ID,-2$$TR,"How do I boot it with Grub?"$ $ID,2$If you use Grub, you $FG,2$chain-load$FG$ like Windows. See $LK,"Boot",A="FI:::/Doc/Boot.DD"$. You can use the ZealOS boot-loader. $LK,"Master-Boot-Loader-Stage1",A="FI:::/System/Boot/BootMHD.ZC"$, $LK,"Master-Boot-Loader-Stage2",A="FI:::/System/Boot/BootMHD2.ZC"$, $LK,"Partition-Boot-Loader",A="FI:::/System/Boot/BootHD.ZC"$, $LK,"CD-DVD-Boot-Loader",A="FI:::/System/Boot/BootDVD.ZC"$. -$ID,-2$$TR,"How do I get Kernel.BIN to boot?"$ +$ID,-2$$TR,"How do I get Kernel.ZXE to boot?"$ $ID,2$The boot-loaders must be patched by you running $LK,"BootHDIns",A="MN:BootHDIns"$() or $LK,"BootMHDIns",A="MN:BootMHDIns"$(). Those will write the block address into the boot-loader because the boot-loaders do not navigate file systems to find the $LK,"Stage2",A="FI:::/Kernel/KStart16.ZC"$ if you relocate it. $ID,-2$$TR,"Why is there some 16-Bit code?"$ $ID,2$ZealOS is 64-bit. Like all PC operating systems, the boot-loader starts in 16-bit real-mode. ZealOS calls a few $FG,2$BIOS$FG$ info routines, switches to VGA-640x480x4bit, switches to 32-bit, then, 64-bit mode. There is an odd thing called a $FG,2$$TX,"PCI BIOS",HTML="http://www.o3one.org/hwdocs/bios_doc/pci_bios_21.pdf"$$FG$ which is 32-bit used for $FG,2$PCI$FG$ config space access. If supported, ZealOS calls $LK,"that",A="FI:::/Kernel/PCIBIOS.ZC"$ a couple times, otherwise using Port I/O for PCI. It must temporarily drop-out-of 64-bit mode for that and stop multi-tasking. @@ -63,7 +63,7 @@ $ID,2$$FG,2$XOR EAX,EAX$FG$ : Operations on 32-bit registers clear the high 32-b $ID,-2$$TR,"How do you use the FS and GS segment registers."$ $ID,2$$FG,2$MOV RAX,FS:[RAX]$FG$ : FS can be set with a $FG,2$WRMSR$FG$, but displacement is RIP relative, so it's tricky to use. FS is used for the current $LK,"CTask",A="MN:CTask"$, GS for $LK,"CCPU",A="MN:CCPU"$. $ID,-2$$TR,"How do I set ORG for position of code?"$ -$ID,2$The compiler creates $FG,2$pos independent$FG$ code. Don't create code which is loaded at a fixed, specified location. Code in a BIN file is $FG,2$pos independent$FG$ by virtue of a table in the BIN file for patching absolute addresses. +$ID,2$The compiler creates $FG,2$pos independent$FG$ code. Don't create code which is loaded at a fixed, specified location. Code in a ZXE file is $FG,2$pos independent$FG$ by virtue of a table in the ZXE file for patching absolute addresses. $ID,-2$$TR,"How are symbols loaded?"$ $ID,2$Binary executable files have export symbols which are loaded into the symbol tables. The operating system $FG,2$Kernel$FG$ has such an export table. In addition, some map files are processed to provide more information on symbols -- src file links. This is how the $LK,"Man",A="MN:Man"$()/$FG,2$AutoComplete$FG$ feature can find src lines. $ID,-2$$TR,"Why doesn't assert work?"$ @@ -79,7 +79,7 @@ $ID,2$Binary sprite data is stored beyond the terminating $FG,2$NULL$FG$ in text $ID,-2$$TR,"Why are sprites so small?"$ $ID,2$Sprites can be stored as vector graphics so they might take shockingly little room. They can be converted to bitmaps. $ID,-2$$TR,"Why don't I need to recompile /System and /Home files?"$ -$ID,2$If you change code in the $FG,2$/System$FG$ or your $FG,2$/Home$FG$ directory, you don't need to recompile, you just need to reboot because those directories get recompiled when you boot. It uses $LK,"JIT Compile Mode",A="FF:::/Doc/Glossary.DD,JIT Compile Mode"$. There is no $FG,2$.BIN$FG$ file for $FG,2$JIT$FG$ compilation. See $LK,"::/StartOS.ZC"$. +$ID,2$If you change code in the $FG,2$/System$FG$ or your $FG,2$/Home$FG$ directory, you don't need to recompile, you just need to reboot because those directories get recompiled when you boot. It uses $LK,"JIT Compile Mode",A="FF:::/Doc/Glossary.DD,JIT Compile Mode"$. There is no $FG,2$.ZXE$FG$ file for $FG,2$JIT$FG$ compilation. See $LK,"::/StartOS.ZC"$. $ID,-2$$TR,"Why does it finds files that aren't there?"$ $ID,2$If a file is not found, the parent directories are searched for a file of the same name. $ID,-2$ diff --git a/src/Doc/Glossary.DD b/src/Doc/Glossary.DD index 021f2a12..f0c5e7be 100755 --- a/src/Doc/Glossary.DD +++ b/src/Doc/Glossary.DD @@ -159,9 +159,9 @@ $ID,2$$LK,"ZealC",A="FI:::/Doc/ZealC.DD"$ is more than $FG,2$C$FG$ and less than $ID,-2$$TR,"AOT Compile Mode"$ $ID,2$$FG,2$Ahead-of-Time$FG$ compiling is conventional compilation mode. Do not use $FG,2$AOT$FG$, use $FG,2$JIT$FG$ compiling. -In $FG,2$AOT$FG$ mode, $FG,2$.PRJ$FG$ files are compiled to $FG,2$.BIN$FG$ files, skipping $FG,2$.OBJ$FG$ files. After compiling, $FG,2$.BIN$FG$ files are $LK,"Load",A="MN:Load"$()ed. +In $FG,2$AOT$FG$ mode, $FG,2$.PRJ$FG$ files are compiled to $FG,2$.ZXE$FG$ files, skipping $FG,2$.OBJ$FG$ files. After compiling, $FG,2$.ZXE$FG$ files are $LK,"Load",A="MN:Load"$()ed. -There is no $FG,2$main()$FG$ routine. Instead, statements outside functions are automatically executed upon loading. There is no way to unload except by killing the task. To invoke $FG,2$AOT Compiled Mode$FG$, $LK,"Comp",A="MN:Comp"$() is used. The $FG,2$Kernel$FG$ module and compiler are made in $FG,2$AOT$FG$ compiled mode. See $LK,"BootHDIns",A="MN:BootHDIns"$() which calls $LK,"MakeAll",A="MN:MakeAll"$() where $LK,"::/Boot/Kernel.BIN.C",A="FI:::/Kernel/Kernel.PRJ"$ and $LK,"::/Compiler/Compiler.BIN",A="FI:::/Compiler/Compiler.PRJ"$ are created. +There is no $FG,2$main()$FG$ routine. Instead, statements outside functions are automatically executed upon loading. There is no way to unload except by killing the task. To invoke $FG,2$AOT Compiled Mode$FG$, $LK,"Comp",A="MN:Comp"$() is used. The $FG,2$Kernel$FG$ module and compiler are made in $FG,2$AOT$FG$ compiled mode. See $LK,"BootHDIns",A="MN:BootHDIns"$() which calls $LK,"MakeAll",A="MN:MakeAll"$() where $LK,"::/Boot/Kernel.ZXE",A="FI:::/Kernel/Kernel.PRJ"$ and $LK,"::/Compiler/Compiler.ZXE",A="FI:::/Compiler/Compiler.PRJ"$ are created. $ID,-2$$TR,"JIT Compile Mode"$ $ID,2$In $FG,2$just-in-time$FG$ mode, the compiler places code and data in memory alloced from the heap, incrementally, making them immediately ready for in-place execution. This mode is used during cmd line operations. When you $FG,2$#include$FG$ a file, it is compiled function by function and code ends-up all over in the memory, at least in the first 2Gig of memory. The $LK,"ExeFile",A="MN:ExeFile"$() routine is the same as $FG,2$#include$FG$ but can be used in programs. $LK,"ExePrint",A="MN:ExePrint"$() routine will compile and run a string. $ID,-2$$TR,"Compiler Intermediate Code"$ @@ -213,7 +213,7 @@ $FG,5$*.HH$FG$ ZealC src header files. $FG,5$*.MAP$FG$ Compiler "map" files -$FG,5$*.BIN;*.BIN.C$FG$ +$FG,5$*.ZXE;*.ZXE$FG$ Binary executable files, created by $LK,"Comp",A="MN:Comp"$() and read by $LK,"Load",A="MN:Load"$(). $FG,5$*.DATA$FG$ Data files diff --git a/src/Doc/GuideLines.DD b/src/Doc/GuideLines.DD index e2eaf11a..bc779faa 100755 --- a/src/Doc/GuideLines.DD +++ b/src/Doc/GuideLines.DD @@ -14,7 +14,7 @@ $FG,2$/Compiler$FG$ The compiler module src code is found here. The compiler is $FG,2$/System$FG$ The non-kernel part of the operating system is found here. It is $FG,2$JIT$FG$ compiled during boot. The $LK,"System Task",A="FF:::/Doc/Glossary.DD,System Task"$ is the most important task. It never dies. -$FG,2$/Boot$FG$ Boot files go here. Stage 2 of the ZealOS hard drive master boot loader, the old hard drive master boot record which is just block#0, and the HDD & CD/DVD $LK,"Kernel.BIN.C",A="FI:::/Kernel/Kernel.PRJ"$ file go here. +$FG,2$/Boot$FG$ Boot files go here. Stage 2 of the ZealOS hard drive master boot loader, the old hard drive master boot record which is just block#0, and the HDD & CD/DVD $LK,"Kernel.ZXE",A="FI:::/Kernel/Kernel.PRJ"$ file go here. @@ -78,7 +78,7 @@ $ID,-5$ * Avoid boolean expression assignments. Boolean assignments don't have short circuit logic and are not compiled efficiently. The $FG,2$Bool$FG$ type is just an alias for a 1 byte signed int -- nothing forces it to $FG,2$1$FG$ or $FG,2$0$FG$. There is a $LK,"ToBool",A="MN:ToBool"$() function that will for to $FG,2$1$FG$ ot $FG,2$0$FG$, however. -* Global variables in $FG,2$AOT$FG$ BIN modules are initialized to zero. They occupy space in BIN files. +* Global variables in $FG,2$AOT$FG$ ZXE modules are initialized to zero. They occupy space in ZXE files. * Bracketing code with $FG,2$PUSHFD CLI$FG$ and $FG,2$POPFD$FG$ will protect against simultaneous accesses from tasks on $UL,1$one$UL,0$ core. To protect against multiple cores, you need a locked semaphore. Semaphores might need to be in their own cache line. Lock bits are used in a lot of places not aligned. diff --git a/src/Doc/Install.DD b/src/Doc/Install.DD index 3de69f78..a4d14d70 100755 --- a/src/Doc/Install.DD +++ b/src/Doc/Install.DD @@ -26,7 +26,7 @@ $ID,-2$ $ID,-2$2) $LK,"Format",A="MN:Format"$($FG,2$'D'$FG$,$FG,2$ TRUE$FG$,$FG,2$ FALSE$FG$,$FG,2$ FSt_FAT32$FG$) $ID,2$This command formats a drive with $FG,2$FAT32$FG$ or the $LK,"RedSea",A="FI:::/Doc/RedSea.DD"$ file system type. Use the drive letter of the partition in place of $FG,2$'D'$FG$. -$BK,1$WARNING:$BK,0$ If you are upgrading, be sure not to lose the file, $FG,2$/Boot/OldMBR.BIN.C$FG$. +$BK,1$WARNING:$BK,0$ If you are upgrading, be sure not to lose the file, $FG,2$/Boot/OldMBR.BIN$FG$. $ID,-2$3) $LK,"CopyTree",A="MN:CopyTree"$($FG,2$"T:/"$FG$,$FG,2$ "D:/"$FG$) $ID,2$This command is used to copy files onto a hard drive partition from the CD/DVD. Use the drive letter of the partition in place of $FG,2$'D'$FG$. @@ -36,9 +36,9 @@ $ID,2$This command recompiles the source code on a drive and writes to the $UL,1 $ID,-2$5) Use Linux's Grub or ZealOS' $LK,"BootMHDIns",A="MN:BootMHDIns"$($FG,2$'D'$FG$) $ID,2$ -The $LK,"BootMHDIns",A="MN:BootMHDIns"$() command places a boot loader on a drive. It saves the old master boot record to $FG,2$/Boot/OldMBR.BIN.C$FG$ and replaces it. When you boot, you will have the option of booting the old master boot record. This command can be skipped if you already have a boot loader. Be sure not to lose the copy of the old boot record, like if you reformat the drive. +The $LK,"BootMHDIns",A="MN:BootMHDIns"$() command places a boot loader on a drive. It saves the old master boot record to $FG,2$/Boot/OldMBR.BIN$FG$ and replaces it. When you boot, you will have the option of booting the old master boot record. This command can be skipped if you already have a boot loader. Be sure not to lose the copy of the old boot record, like if you reformat the drive. -Delete $FG,2$/Boot/OldMBR.BIN.C$FG$ if you want to get a fresh copy of a mbr, like if installing from your own custom CD containing it's own $FG,2$/Boot/OldMBR.BIN.C$FG$ onto a system with a non-ZealOS boot loader. +Delete $FG,2$/Boot/OldMBR.BIN$FG$ if you want to get a fresh copy of a mbr, like if installing from your own custom CD containing it's own $FG,2$/Boot/OldMBR.BIN$FG$ onto a system with a non-ZealOS boot loader. If you have anti-virus software, it might object to having a different master boot record. $ID,-2$ diff --git a/src/Doc/Options.DD b/src/Doc/Options.DD index 49cdd28d..8fe11300 100755 --- a/src/Doc/Options.DD +++ b/src/Doc/Options.DD @@ -2,7 +2,7 @@ $WW,1$$FG,5$$TX+CX,"Compiler Options"$$FG$ Use $LK,"Option",A="MN:Option"$(). You might need to do $FG,2$#exe {Option();}$FG$. -$LK,"OPTf_GLOBALS_ON_DATA_HEAP",A="MN:OPTf_GLOBALS_ON_DATA_HEAP"$ without this option, global variables are placed in the code heap which is limited to 2Gig. In $FG,2$AOT$FG$ modules, global variables take-up room in the $FG,2$.BIN$FG$ file, so you might want to use this option, instead. You might wish to turn it on and off around specific variables. A disadvantage of data heap global variables in $FG,2$AOT$FG$ modules is they can't be initialized. +$LK,"OPTf_GLOBALS_ON_DATA_HEAP",A="MN:OPTf_GLOBALS_ON_DATA_HEAP"$ without this option, global variables are placed in the code heap which is limited to 2Gig. In $FG,2$AOT$FG$ modules, global variables take-up room in the $FG,2$.ZXE$FG$ file, so you might want to use this option, instead. You might wish to turn it on and off around specific variables. A disadvantage of data heap global variables in $FG,2$AOT$FG$ modules is they can't be initialized. $LK,"OPTf_EXTERNS_TO_IMPORTS",A="MN:OPTf_EXTERNS_TO_IMPORTS"$ and $LK,"OPTf_KEEP_PRIVATE",A="MN:OPTf_KEEP_PRIVATE"$ are strange options, you'll never need. They're to allow the same header file for $FG,2$Kernel$FG$ to act as $FG,2$extern$FG$s when compiling itself and $FG,2$import$FG$s when compiled by $FG,2$AOT$FG$ modules. diff --git a/src/Home/DoDistro.ZC b/src/Home/DoDistro.ZC index b8b4738c..6e286d93 100755 --- a/src/Home/DoDistro.ZC +++ b/src/Home/DoDistro.ZC @@ -38,7 +38,7 @@ U0 MakeMyISO(U8 *_out_iso_filename) Copy("/*", "/Distro"); progress1++; DirMake("/Distro" BOOT_DIR); - Move(BOOT_DIR_DVD_KERNEL_BIN_C, "/Distro" BOOT_DIR_KERNEL_BIN_C); + Move(BOOT_DIR_DVD_KERNEL_ZXE, "/Distro" BOOT_DIR_KERNEL_ZXE); progress1++; CopyTree("/Home", "/Distro/Home"); progress1++; @@ -66,7 +66,7 @@ U0 MakeMyISO(U8 *_out_iso_filename) DirMake("/Distro/Tmp/ScreenShots"); progress1++; StrCopy(progress1_desc, "Building ISO"); - RedSeaISO(out_iso_filename, "/Distro", "/Distro" BOOT_DIR_KERNEL_BIN_C); + RedSeaISO(out_iso_filename, "/Distro", "/Distro" BOOT_DIR_KERNEL_ZXE); progress1++; //If CD-ROM use MT_CD instead of MT_DVD. diff --git a/src/Home/HtmlGen.ZC b/src/Home/HtmlGen.ZC index 0453a0c6..5cae0f9d 100755 --- a/src/Home/HtmlGen.ZC +++ b/src/Home/HtmlGen.ZC @@ -85,8 +85,8 @@ I64 Dir2Html(U8 *src_files_find_mask, U8 *dst_files_find_mask) if (!(tmpde1->attr & RS_ATTR_DIR)) { - if (StrCompare(dest_ext, "BIN.C") && - StrCompare(dest_ext, "BIN") && + if (StrCompare(dest_ext, "ZXE") && + StrCompare(dest_ext, "ZXE") && StrCompare(dest_ext, "ISO.C") && StrCompare(dest_ext, "html") && StrCompare(dest_ext, "DATA") && diff --git a/src/Kernel/BlkDev/DiskATAId.ZC b/src/Kernel/BlkDev/DiskATAId.ZC index 6d505445..27b86762 100755 --- a/src/Kernel/BlkDev/DiskATAId.ZC +++ b/src/Kernel/BlkDev/DiskATAId.ZC @@ -18,7 +18,7 @@ CBlkDev *ATAMount(U8 first_drive_let, I64 type, I64 port_num) I64 MountAHCIAuto() {//Try to mount hard drives and CD/DVD drives automatically. (Kernel.Config option). //It uses 'C' and 'T' as first drive letters or whatever you set -//in config when compiling Kernel.BIN. +//in config when compiling Kernel.ZXE. CBlkDev *bd = Letter2BlkDev(':', FALSE); I64 res = 0, i, ata_port = -1, atapi_port = -1; CAHCIPort *port; diff --git a/src/Kernel/KConfig.ZC b/src/Kernel/KConfig.ZC index efab9cbd..1623536a 100755 --- a/src/Kernel/KConfig.ZC +++ b/src/Kernel/KConfig.ZC @@ -77,7 +77,7 @@ U0 KConfigOptions(CKConfig *c) "$$PURPLE$$HomeDir$$FG$$ Set home dir.\n" "$$PURPLE$$NoMP$$FG$$ No multicore.\n" "$$PURPLE$$MountAHCIAuto$$FG$$ Auto Mount AHCI drives to 'C' and 'T'.\n" - "$$PURPLE$$DebugDistro$$FG$$ Include RAM Drive in Kernel.BIN.\n" + "$$PURPLE$$DebugDistro$$FG$$ Include RAM Drive in Kernel.ZXE.\n" "\n"; else if (0 <= i < CONFIG_OPTIONS_NUM) diff --git a/src/Kernel/KGlobals.ZC b/src/Kernel/KGlobals.ZC index 71ba2678..18e7b0c4 100755 --- a/src/Kernel/KGlobals.ZC +++ b/src/Kernel/KGlobals.ZC @@ -13,7 +13,7 @@ CTask *sys_winmgr_task, U8 *rev_bits_table; //Table with U8 bits reversed CDate local_time_offset; F64 *pow10_I64, - sys_os_version = 1.09; + sys_os_version = 1.10; CAutoCompleteDictGlobals acd; CAutoCompleteGlobals ac; diff --git a/src/Kernel/KLoad.ZC b/src/Kernel/KLoad.ZC index b54094df..f9aca871 100755 --- a/src/Kernel/KLoad.ZC +++ b/src/Kernel/KLoad.ZC @@ -205,58 +205,58 @@ U0 LoadPass2(U8 *src, U8 *module_base, I64) } } -CBinFile *Load(U8 *filename, I64 ld_flags=0, CBinFile *bfh_addr=INVALID_PTR) -{//Load a .BIN file module into memory. -//bfh_addr==INVALID_PTR means don't care what load address. +CZXE *Load(U8 *filename, I64 ld_flags=0, CZXE *zxe_addr=INVALID_PTR) +{//Load a .ZXE file module into memory. +//zxe_addr==INVALID_PTR means don't care what load address. U8 *fbuf, *module_base, *absname; I64 size, module_align, misalignment; - CBinFile *bfh; + CZXE *zxe; - fbuf = ExtDefault(filename, "BIN"); - if (!(bfh = FileRead(fbuf, &size))) + fbuf = ExtDefault(filename, "ZXE"); + if (!(zxe = FileRead(fbuf, &size))) { Free(fbuf); return NULL; } //See $LK,"Patch Table Generation",A="FF:::/Compiler/CMain.ZC,IET_ABS_ADDR"$ - module_align = 1 << bfh->module_align_bits; - if (!module_align || bfh->bin_signature != BIN_SIGNATURE_VAL) + module_align = 1 << zxe->module_align_bits; + if (!module_align || zxe->signature != ZXE_SIGNATURE_VAL) { - Free(bfh); + Free(zxe); Free(fbuf); - throw('BinModul'); + throw('ZXEModul'); } - if (bfh_addr == INVALID_PTR) + if (zxe_addr == INVALID_PTR) { - if (bfh->org == INVALID_PTR) + if (zxe->org == INVALID_PTR) { - misalignment = module_align - sizeof(CBinFile); + misalignment = module_align - sizeof(CZXE); if (misalignment < 0) misalignment &= module_align - 1; if (Fs->code_heap != Fs->data_heap) { if (module_align < 16) module_align = 16; - bfh_addr = MAllocAligned(size, module_align, Fs->code_heap, misalignment); + zxe_addr = MAllocAligned(size, module_align, Fs->code_heap, misalignment); } else if (module_align > 8) - bfh_addr = MAllocAligned(size, module_align,, misalignment); + zxe_addr = MAllocAligned(size, module_align,, misalignment); else {//Less than 2Gig system memory - bfh_addr = bfh; + zxe_addr = zxe; goto lo_skip; //File is already in code heap area, don't copy. } } else - bfh_addr = bfh->org; + zxe_addr = zxe->org; } - MemCopy(bfh_addr, bfh, size); - Free(bfh); + MemCopy(zxe_addr, zxe, size); + Free(zxe); lo_skip: - module_base = bfh_addr(U8 *) + sizeof(CBinFile); + module_base = zxe_addr(U8 *) + sizeof(CZXE); absname = FileNameAbs(fbuf); Free(fbuf); @@ -264,21 +264,21 @@ CBinFile *Load(U8 *filename, I64 ld_flags=0, CBinFile *bfh_addr=INVALID_PTR) FileExtRemove(fbuf); if (fbuf[1] == ':' && StrLen(fbuf) > 2) - HashGenericAdd(fbuf + 2, HTT_MODULE | HTF_PUBLIC, bfh_addr); + HashGenericAdd(fbuf + 2, HTT_MODULE | HTF_PUBLIC, zxe_addr); - LoadPass1(bfh_addr(U8 *) + bfh_addr->patch_table_offset, module_base, ld_flags); + LoadPass1(zxe_addr(U8 *) + zxe_addr->patch_table_offset, module_base, ld_flags); if (!(ld_flags & LDF_JUST_LOAD)) - LoadPass2(bfh_addr(U8 *) + bfh_addr->patch_table_offset, module_base, ld_flags); + LoadPass2(zxe_addr(U8 *) + zxe_addr->patch_table_offset, module_base, ld_flags); Free(absname); Free(fbuf); - return bfh_addr; + return zxe_addr; } U0 LoadKernel() { - HashGenericAdd(KERNEL_MODULE_NAME, HTT_MODULE | HTF_PUBLIC, mem_boot_base - sizeof(CBinFile)); + HashGenericAdd(KERNEL_MODULE_NAME, HTT_MODULE | HTF_PUBLIC, mem_boot_base - sizeof(CZXE)); //Abs patches done here $LK,"CPatchTableAbsAddr",A="FF:::/Kernel/KStart32.ZC,CPatchTableAbsAddr"$. LoadPass1(sys_boot_patch_table_base, mem_boot_base, LDF_NO_ABSS | LDF_SILENT); diff --git a/src/Kernel/KMain.ZC b/src/Kernel/KMain.ZC index 55a4dc51..4ae9dc90 100755 --- a/src/Kernel/KMain.ZC +++ b/src/Kernel/KMain.ZC @@ -256,8 +256,8 @@ asm SYS_KERNEL_END:: #exe { if (kernel_config->opts[CONFIG_DEBUG_DISTRO]) - StreamPrint("DU8 0x%X - (SYS_KERNEL_END-SYS_KERNEL + BOOT_RAM_BASE + sizeof(CBinFile)) DUP (0);" - "BINFILE \"%s\";", + StreamPrint("DU8 0x%X - (SYS_KERNEL_END-SYS_KERNEL + BOOT_RAM_BASE + sizeof(CZXE)) DUP (0);" + "BINLOAD \"%s\";", kernel_config->debug_distro_start, kernel_config->debug_distro_file); }; diff --git a/src/Kernel/KStart16.ZC b/src/Kernel/KStart16.ZC index bb00b773..32b47e61 100755 --- a/src/Kernel/KStart16.ZC +++ b/src/Kernel/KStart16.ZC @@ -2,7 +2,7 @@ asm {/* See $LK,"::/Doc/Boot.DD"$. ZealOS starts in real, calls some BIOS routines, switches to 32 bit, and 64 bit mode and continues in $LK,"ZealC",A="FI:::/Doc/ZealC.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.ZC,16 ALIGN"$. +It actually jumps to the $LK,"CZXE",A="MN:CZXE"$ header which is placed just before this by $LK,"the compiler",A="FF:::/Compiler/CMain.ZC,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"$ @@ -25,7 +25,7 @@ SYS_RUN_LEVEL:: DU32 0; StreamPrint("SYS_COMPILE_TIME:: DU64 0x%X;", Now); //See $LK,"AHCIBootDVDProbeAll",A="MN:AHCIBootDVDProbeAll"$ }; -#assert SYS_COMPILE_TIME + sizeof(CDate) + sizeof(CBinFile) < DVD_BLK_SIZE +#assert SYS_COMPILE_TIME + sizeof(CDate) + sizeof(CZXE) < DVD_BLK_SIZE MEM_BOOT_BASE:: DU32 0; //Offset from start used by reboot MEM_E801:: DU16 0, 0; @@ -56,7 +56,7 @@ 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) +#assert $$ - SYS_KERNEL == sizeof(CKernel) - sizeof(CZXE) TEMP_VBE_MODE: DU8 sizeof(CVBEMode) DUP(0); MAX_VBE_MODE: DU8 sizeof(CVBEModeShort) DUP(0); @@ -320,13 +320,13 @@ GET_IP: POP BX MOV U32 [MEM_BOOT_BASE], EAX MOV DX, CS - SUB DX, sizeof(CBinFile) / 16 -#assert !(sizeof(CBinFile) & 0xF) + SUB DX, sizeof(CZXE) / 16 +#assert !(sizeof(CZXE) & 0xF) MOV GS, DX MOV EDX, EAX - ADD EDX, U32 GS:[CBinFile.patch_table_offset] - SUB EDX, sizeof(CBinFile) + ADD EDX, U32 GS:[CZXE.patch_table_offset] + SUB EDX, sizeof(CZXE) MOV U32 [SYS_BOOT_PATCH_TABLE_BASE], EDX ADD U32 [GDT_BOOT_DS+2], EAX diff --git a/src/Kernel/KStart32.ZC b/src/Kernel/KStart32.ZC index 61e2240f..53451831 100755 --- a/src/Kernel/KStart32.ZC +++ b/src/Kernel/KStart32.ZC @@ -72,7 +72,7 @@ SYS_MP_COUNT_LOCK:: DU64 1; ALIGN DEFAULT_CACHE_LINE_WIDTH, OC_NOP SYS_CACHE_LINE_WIDTH:: DU64 DEFAULT_CACHE_LINE_WIDTH; - DU8 DEFAULT_CACHE_LINE_WIDTH - sizeof(CBinFile) - 8 DUP(0); + DU8 DEFAULT_CACHE_LINE_WIDTH - sizeof(CZXE) - 8 DUP(0); SYS_SEMAS:: DU8 SEMA_SEMAS_NUM * DEFAULT_CACHE_LINE_WIDTH DUP(0); //************************************ ALIGN 16, OC_NOP diff --git a/src/Kernel/KernelA.HH b/src/Kernel/KernelA.HH index eca7a3c8..9472e761 100755 --- a/src/Kernel/KernelA.HH +++ b/src/Kernel/KernelA.HH @@ -448,13 +448,13 @@ class CMemE820 #define LDF_JUST_LOAD 2 #define LDF_SILENT 4 -#define BIN_SIGNATURE_VAL 'ZCCB' //Zeal ZealC Binary -class CBinFile -{//$LK,"Bin File Header Generation",A="FF:::/Compiler/CMain.ZC,16 ALIGN"$ by compiler. +#define ZXE_SIGNATURE_VAL 'ZXE' // Zeal Executable +class CZXE +{// $LK,"ZXE Header Generation",A="FF:::/Compiler/CMain.ZC,16 ALIGN"$ by compiler. U16 jmp; U8 module_align_bits, reserved; - U32 bin_signature; + U32 signature; I64 org, patch_table_offset, //$LK,"Patch Table Generation",A="FF:::/Compiler/CMain.ZC,IET_ABS_ADDR"$ file_size; @@ -547,7 +547,7 @@ class CVBEModeShort #help_index "Boot" class CKernel {//Must match $LK,"OSStartUp",A="FF:::/Kernel/KStart16.ZC,MEM_BOOT_BASE"$ - CBinFile h; + CZXE h; U32 jmp, boot_src, boot_blk, diff --git a/src/Kernel/KernelC.HH b/src/Kernel/KernelC.HH index b3ecdb56..0236f816 100755 --- a/src/Kernel/KernelC.HH +++ b/src/Kernel/KernelC.HH @@ -112,7 +112,7 @@ public extern CTextGlobals text; public extern U0 HashSrcFileSet(CCompCtrl *cc, CHashSrcSym *h, I64 line_num_offset=0); #help_index "Compiler;Cmd Line (Typically)" -extern U8 *Load(U8 *filename, I64 ld_flags=0, CBinFile *bfh_addr=INVALID_PTR); //INVALID_PTR=don't care what load address +extern U8 *Load(U8 *filename, I64 ld_flags=0, CZXE *zxe_addr=INVALID_PTR); //INVALID_PTR=don't care what load address #help_index "Data Types/Circular Queue" public extern I64 QueueCount(CQueue *head); diff --git a/src/Misc/Auto/AutoDistro.ZC b/src/Misc/Auto/AutoDistro.ZC index be0a04c5..b2a3e567 100755 --- a/src/Misc/Auto/AutoDistro.ZC +++ b/src/Misc/Auto/AutoDistro.ZC @@ -21,7 +21,7 @@ U0 MakeMyISO(U8 *_out_iso_filename) Copy("/*","/Distro"); DirMake("/Distro" BOOT_DIR); - Move(BOOT_DIR_DVD_KERNEL_BIN_C, "/Distro" BOOT_DIR_KERNEL_BIN_C); + Move(BOOT_DIR_DVD_KERNEL_ZXE, "/Distro" BOOT_DIR_KERNEL_ZXE); CopyTree("/Home", "/Distro/Home"); Del("/Distro/Home/Registry.ZC"); @@ -39,7 +39,7 @@ U0 MakeMyISO(U8 *_out_iso_filename) Del("/Distro/Misc/Bible.TXT"); Del("/Distro/Misc/Clementine.TXT"); - RedSeaISO(out_iso_filename, "/Distro", "/Distro" BOOT_DIR_KERNEL_BIN_C); + RedSeaISO(out_iso_filename, "/Distro", "/Distro" BOOT_DIR_KERNEL_ZXE); DelTree("/Distro"); Free(out_iso_filename); diff --git a/src/Misc/Auto/AutoFullDistro2.ZC b/src/Misc/Auto/AutoFullDistro2.ZC index 6ed4e235..82f4fd6c 100755 --- a/src/Misc/Auto/AutoFullDistro2.ZC +++ b/src/Misc/Auto/AutoFullDistro2.ZC @@ -32,7 +32,7 @@ U0 MakeMyISO() Copy("/*", "/Distro"); progress1++; DirMake("/Distro" BOOT_DIR); - Move(BOOT_DIR_DVD_KERNEL_BIN_C, "/Distro" BOOT_DIR_KERNEL_BIN_C); + Move(BOOT_DIR_DVD_KERNEL_ZXE, "/Distro" BOOT_DIR_KERNEL_ZXE); progress1++; CopyTree("/Home", "/Distro/Home"); progress1++; @@ -58,7 +58,7 @@ U0 MakeMyISO() DirMake("/Distro/Tmp/ScreenShots"); progress1++; StrCopy(progress1_desc, "Building ISO"); - RedSeaISO(out_iso_filename, "/Distro", "/Distro" BOOT_DIR_KERNEL_BIN_C); + RedSeaISO(out_iso_filename, "/Distro", "/Distro" BOOT_DIR_KERNEL_ZXE); progress1++; //If CD-ROM use MT_CD instead of MT_DVD. diff --git a/src/Misc/Auto/AutoInstall.ZC b/src/Misc/Auto/AutoInstall.ZC index 355ae251..7231e314 100755 --- a/src/Misc/Auto/AutoInstall.ZC +++ b/src/Misc/Auto/AutoInstall.ZC @@ -113,7 +113,7 @@ Bool DoInstall(Bool prompt_reboot) VMInstallWiz(); res = TRUE; OnceDrive('C', "PopUp(\"#include \\\"/Misc/Auto/AutoFullDistro0\\\";\");"); - BootRAM("C:" BOOT_DIR_KERNEL_BIN_C); + BootRAM("C:" BOOT_DIR_KERNEL_ZXE); return res; } diff --git a/src/Misc/DoDistro.ZC b/src/Misc/DoDistro.ZC index 3f877a9b..761f5dd3 100755 --- a/src/Misc/DoDistro.ZC +++ b/src/Misc/DoDistro.ZC @@ -19,9 +19,9 @@ U0 MakeMyISO(U8 *_out_iso_filename) BootDVDIns; Copy("/*","/Distro"); -// Del("/Distro/" KERNEL_BIN_C); +// Del("/Distro/" KERNEL_ZXE); DirMake("/Distro" BOOT_DIR); - Move(BOOT_DIR_DVD_KERNEL_BIN_C, "/Distro" BOOT_DIR_KERNEL_BIN_C); + Move(BOOT_DIR_DVD_KERNEL_ZXE, "/Distro" BOOT_DIR_KERNEL_ZXE); // CopyTree(BOOT_DIR, "/Distro" BOOT_DIR); CopyTree("/Home", "/Distro/Home"); @@ -39,7 +39,7 @@ U0 MakeMyISO(U8 *_out_iso_filename) CopyTree("/Downloads", "/Distro/Downloads"); //You can leave this out. DirMake("/Distro/Tmp"); DirMake("/Distro/Tmp/ScreenShots"); - RedSeaISO(out_iso_filename, "/Distro", "/Distro" BOOT_DIR_KERNEL_BIN_C); + RedSeaISO(out_iso_filename, "/Distro", "/Distro" BOOT_DIR_KERNEL_ZXE); //If CD-ROM use MT_CD instead of MT_DVD. //DVDImageWrite('T',out_iso_filename,MT_DVD); //Uncomment to burn. diff --git a/src/System/Boot/BootDVDIns.ZC b/src/System/Boot/BootDVDIns.ZC index e0016420..48f18e0d 100755 --- a/src/System/Boot/BootDVDIns.ZC +++ b/src/System/Boot/BootDVDIns.ZC @@ -6,9 +6,9 @@ #help_index "Install" -#define KERNEL_BIN_C "Kernel.BIN.C" +#define KERNEL_ZXE "Kernel.ZXE" #define BOOT_DIR "/Boot" -#define BOOT_DIR_DVD_KERNEL_BIN_C BOOT_DIR "/DVD" KERNEL_BIN_C +#define BOOT_DIR_DVD_KERNEL_ZXE BOOT_DIR "/DVD" KERNEL_ZXE U0 MakeAll() { @@ -25,7 +25,7 @@ public U0 BootDVDIns(U8 drv_let=0) if (!Drive(drv_let)) throw; MakeAll; - Move("/Kernel/Kernel.BIN", BOOT_DIR_DVD_KERNEL_BIN_C); + Move("/Kernel/Kernel.ZXE", BOOT_DIR_DVD_KERNEL_ZXE); } catch { diff --git a/src/System/Boot/BootHDIns.ZC b/src/System/Boot/BootHDIns.ZC index 67b19964..8a4bb96b 100755 --- a/src/System/Boot/BootHDIns.ZC +++ b/src/System/Boot/BootHDIns.ZC @@ -5,9 +5,9 @@ #help_index "Install" -#define KERNEL_BIN_C "Kernel.BIN.C" +#define KERNEL_ZXE "Kernel.ZXE" #define BOOT_DIR "/Boot" -#define BOOT_DIR_KERNEL_BIN_C BOOT_DIR "/" KERNEL_BIN_C +#define BOOT_DIR_KERNEL_ZXE BOOT_DIR "/" KERNEL_ZXE U0 CompComp() { @@ -41,10 +41,10 @@ public U0 BootHDIns(U8 drv_let=0) { case BDT_RAM: case BDT_ATA: - Move("/Kernel/Kernel.BIN", BOOT_DIR_KERNEL_BIN_C); + Move("/Kernel/Kernel.ZXE", BOOT_DIR_KERNEL_ZXE); - if (!FileFind(BOOT_DIR_KERNEL_BIN_C, &de, FUF_JUST_FILES)) - "No Kernel.BIN.C\n"; + if (!FileFind(BOOT_DIR_KERNEL_ZXE, &de, FUF_JUST_FILES)) + "No Kernel.ZXE\n"; else { Free(de.full_name); diff --git a/src/System/Boot/BootMHDIns.ZC b/src/System/Boot/BootMHDIns.ZC index 5720c7dd..d23cd40b 100755 --- a/src/System/Boot/BootMHDIns.ZC +++ b/src/System/Boot/BootMHDIns.ZC @@ -8,9 +8,9 @@ #define BOOT_DIR "/Boot" //Stage 2 of master boot loader -#define BOOT_DIR_BOOTMHD2_BIN_C BOOT_DIR "/BootMHD2.BIN.C" +#define BOOT_DIR_BOOTMHD2_BIN BOOT_DIR "/BootMHD2.BIN" //Old master boot record -#define BOOT_DIR_OLDMBR_BIN_C BOOT_DIR "/OldMBR.BIN.C" +#define BOOT_DIR_OLDMBR_BIN BOOT_DIR "/OldMBR.BIN" public U0 BootMHDOldRead(U8 src_drive, U8 dst_drive) {//Reads MBR from disk drive containing src partition. @@ -33,7 +33,7 @@ public U0 BootMHDOldRead(U8 src_drive, U8 dst_drive) Drive(dst_drive); DirMake(BOOT_DIR); - FileWrite(BOOT_DIR_OLDMBR_BIN_C, &mbr, BLK_SIZE); + FileWrite(BOOT_DIR_OLDMBR_BIN, &mbr, BLK_SIZE); } } @@ -45,7 +45,7 @@ public U0 BootMHDOldWrite(U8 src_drive, U8 dst_drive) Drive(src_drive); - if (mbr = FileRead(BOOT_DIR_OLDMBR_BIN_C)) + if (mbr = FileRead(BOOT_DIR_OLDMBR_BIN)) { //Bypass partition bounds-checking BlkDevLock(bd); @@ -108,7 +108,7 @@ public Bool BootMHDIns(U8 drv_let, U8 *drv_list=NULL) { bd = drive->bd; - if (!FileFind(BOOT_DIR_OLDMBR_BIN_C,, FUF_JUST_FILES)) + if (!FileFind(BOOT_DIR_OLDMBR_BIN,, FUF_JUST_FILES)) BootMHDOldRead(drv_let, drv_let); _q = BMHD2_BLK_ARRAY; @@ -117,7 +117,7 @@ public Bool BootMHDIns(U8 drv_let, U8 *drv_list=NULL) StrPrint(menu_ptr, "\n\r\n\rZealOS Boot Loader\n\r\n\r"); j = 0; - if (FileFind(BOOT_DIR_OLDMBR_BIN_C, &de, FUF_JUST_FILES)) + if (FileFind(BOOT_DIR_OLDMBR_BIN, &de, FUF_JUST_FILES)) { Free(de.full_name); *_q++ = Clus2Blk(drive, de.clus); @@ -139,9 +139,9 @@ public Bool BootMHDIns(U8 drv_let, U8 *drv_list=NULL) CatPrint(menu_ptr, "\n\rSelection:"); size = BMHD2_END - BMHD2_START; - FileWrite(BOOT_DIR_BOOTMHD2_BIN_C, BMHD2_START, size); + FileWrite(BOOT_DIR_BOOTMHD2_BIN, BMHD2_START, size); - if (!FileFind(BOOT_DIR_BOOTMHD2_BIN_C, &de, FUF_JUST_FILES)) + if (!FileFind(BOOT_DIR_BOOTMHD2_BIN, &de, FUF_JUST_FILES)) "No Boot Loader Image\n"; else { diff --git a/src/System/Boot/BootRAM.ZC b/src/System/Boot/BootRAM.ZC index a6af49aa..10c4fc43 100755 --- a/src/System/Boot/BootRAM.ZC +++ b/src/System/Boot/BootRAM.ZC @@ -30,10 +30,10 @@ _extern _HI_CALL I64 HiCall(U8 *machine_code); _extern _HI_MEMCOPY U8 *HiMemCopy(U8 *dst, U8 *src, I64 count); #help_index "Boot" -public U0 BootRAM(U8 *filename="::" BOOT_DIR_KERNEL_BIN_C) -{//Softboot Kernel.BIN file. No hardware reset. +public U0 BootRAM(U8 *filename="::" BOOT_DIR_KERNEL_ZXE) +{//Softboot Kernel.ZXE file. No hardware reset. I64 size; - CKernel *hi_image, *lo_image = mem_boot_base - sizeof(CBinFile), reg *sys_ram_reboot; + CKernel *hi_image, *lo_image = mem_boot_base - sizeof(CZXE), reg *sys_ram_reboot; do if (!(hi_image = FileRead(filename, &size))) return; diff --git a/src/System/Define.ZC b/src/System/Define.ZC index 61075f8f..e12ac8d9 100755 --- a/src/System/Define.ZC +++ b/src/System/Define.ZC @@ -2,21 +2,21 @@ U0 LoadDocDefines() { - CBinFile *bfh = mem_boot_base - sizeof(CBinFile); + CZXE *zxe = mem_boot_base - sizeof(CZXE); DefinePrint("DD_OS_NAME_VERSION", "ZealOS V%0.2f", sys_os_version); DefinePrint("DD_ZEALOS_AGE", "%0.1f", (Now - Str2Date("9/1/2019")) / ToF64(1 << 32) / CDATE_YEAR_DAYS); DefinePrint("DD_TEMPLEOS_AGE", "%0.1f", (Str2Date("8/11/2018") - Str2Date("8/1/2003")) / ToF64(1 << 32) / CDATE_YEAR_DAYS); - DefinePrint("DD_KERNEL", "%08X", bfh); - bfh(I64) += bfh->file_size - 1; - DefinePrint("DD_KERNEL_END", "%08X", bfh); + DefinePrint("DD_KERNEL", "%08X", zxe); + zxe(I64) += zxe->file_size - 1; + DefinePrint("DD_KERNEL_END", "%08X", zxe); //$LK,"DD_BOOT_HIGH_LOC_DVD",A="FF:::/System/Boot/BootDVD.ZC,DD_BOOT_HIGH_LOC_DVD"$ $TR,"LineRep"$ $ID,2$DefinePrint("DD_ZEALOS_LOC","97,294"); -$ID,-2$ +$ID,-2$ DefinePrint("DD_MP_VECT", "%08X", MP_VECT_ADDR); DefinePrint("DD_MP_VECT_END", "%08X", MP_VECT_ADDR + COREAP_16BIT_INIT_END - COREAP_16BIT_INIT - 1); diff --git a/src/System/Hash.ZC b/src/System/Hash.ZC index 17079f6f..ef0e0ef4 100755 --- a/src/System/Hash.ZC +++ b/src/System/Hash.ZC @@ -427,7 +427,7 @@ public U0 MapFileLoad(U8 *filename) FileExtRemove(absname); if (absname[1] == ':' && StrLen(absname) > 2 && (tmph = HashSingleTableFind(absname + 2, Fs->hash_table, HTT_MODULE))) - base = tmph(CHashGeneric *)->user_data0 + sizeof(CBinFile); + base = tmph(CHashGeneric *)->user_data0 + sizeof(CZXE); if (!doc) return; doc_e = doc->head.next; diff --git a/src/System/Utils/MakeUtils.ZC b/src/System/Utils/MakeUtils.ZC index 15b8d050..a8031893 100755 --- a/src/System/Utils/MakeUtils.ZC +++ b/src/System/Utils/MakeUtils.ZC @@ -1,6 +1,6 @@ Cd(__DIR__);; -#include "BinRep" +#include "ZXERep" #include "SysRep" #include "CPURep" #include "Diff" diff --git a/src/System/Utils/MemRep.ZC b/src/System/Utils/MemRep.ZC index 27e3abd7..e1e4e458 100755 --- a/src/System/Utils/MemRep.ZC +++ b/src/System/Utils/MemRep.ZC @@ -221,12 +221,12 @@ public U0 MemRep() I64 i; CTask *task; CCPU *c; - CBinFile *bfh = mem_boot_base - sizeof(CBinFile); + CZXE *zxe = mem_boot_base - sizeof(CZXE); - bfh(I64) += bfh->file_size - 1; + zxe(I64) += zxe->file_size - 1; "$$BLACK$$Low Memory\t:00100000$$FG$$\n$$ID,2$$"; - "Kernel\t:%08X-%08X\n", mem_boot_base - sizeof(CBinFile), bfh; + "Kernel\t:%08X-%08X\n", mem_boot_base - sizeof(CZXE), zxe; "$$ID,-2$$$$BLACK$$High Memory\t:00100000-%08X$$FG$$\n", mem_heap_limit; "$LK,"SYS_FIXED_AREA",A="MN:CSysFixedArea"$\t:%08X-%08X\n", SYS_FIXED_AREA, SYS_FIXED_AREA + sizeof(CSysFixedArea) - 1; diff --git a/src/System/Utils/BinRep.ZC b/src/System/Utils/ZXERep.ZC similarity index 77% rename from src/System/Utils/BinRep.ZC rename to src/System/Utils/ZXERep.ZC index 8956875f..c9bc7b62 100755 --- a/src/System/Utils/BinRep.ZC +++ b/src/System/Utils/ZXERep.ZC @@ -1,6 +1,6 @@ #help_index "Compiler" -DefineListLoad("ST_BIN_FILE_TYPES", "END\0" +DefineListLoad("ST_ZXE_FILE_TYPES", "END\0" " \0" "REL_I0\0" "IMM_U0\0" @@ -24,22 +24,22 @@ DefineListLoad("ST_BIN_FILE_TYPES", "END\0" "ZEROED_DATA_HEAP\0" "MAIN"); -public Bool BinRep(U8 *filename) -{//Reports imports, exports, etc for a .BIN file +public Bool ZXERep(U8 *filename) +{//Reports imports, exports, etc for a .ZXE file //See $LK,"Patch Table Generation",A="FF:::/Compiler/CMain.ZC,IET_ABS_ADDR"$ and $LK,"Load",A="MN:Load"$(). U8 *fbuf, *ptr, *sptr, *absname; I64 i, j, size, etype; Bool res = FALSE; - CBinFile *bf; + CZXE *zxe; CHashExport *saved_hash_ptr = NULL; - fbuf = ExtDefault(filename, "BIN"); + fbuf = ExtDefault(filename, "ZXE"); - if (!(bf = FileRead(fbuf, &size))) + if (!(zxe = FileRead(fbuf, &size))) goto br_done1; - if (bf->bin_signature != BIN_SIGNATURE_VAL) + if (zxe->signature != ZXE_SIGNATURE_VAL) { - "Not a ZealC Binary File.\n"; + "Not a ZealC Executable file.\n"; goto br_done2; } @@ -52,18 +52,18 @@ public Bool BinRep(U8 *filename) else "NO MODULE NAME\n"; - if (bf->org != INVALID_PTR) - " ORG:%X\n", bf->org; + if (zxe->org != INVALID_PTR) + " ORG:%X\n", zxe->org; - " MODULE_ALIGN:%X\n", 1 << bf->module_align_bits; + " MODULE_ALIGN:%X\n", 1 << zxe->module_align_bits; - ptr = bf(U8 *) + bf->patch_table_offset; + ptr = zxe(U8 *) + zxe->patch_table_offset; while (etype = *ptr++) { i = *ptr(U32 *)++; sptr = ptr; ptr += StrLen(sptr) + 1; - "$$LTCYAN$$%16Z:$$GREEN$$%s$$FG$$:%X ", etype, "ST_BIN_FILE_TYPES", sptr, i; + "$$LTCYAN$$%16Z:$$GREEN$$%s$$FG$$:%X ", etype, "ST_ZXE_FILE_TYPES", sptr, i; switch (etype) { case IET_REL_I0 ... IET_IMM_I64: @@ -98,7 +98,7 @@ public Bool BinRep(U8 *filename) res = TRUE; Free(absname); br_done2: - Free(bf); + Free(zxe); br_done1: Free(fbuf);