ZealOS/docs/Kernel/KernelA.HH.html
TomAwezome eb2de4f057 Add try-catch to SATARep and AHCIBootDVDProbeAll.
Add CAtapiCloseCmd to clean up AHCIAtapiClose.
Improve comments at AHCIAtapiModeWriteSelect.
2021-08-16 00:52:03 -04:00

4552 lines
595 KiB
HTML
Executable file

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=US-ASCII">
<meta name="generator" content="ZealOS V0.16">
<style type="text/css">
body {background-color:#fef1f0;}
.cF0{color:#000000;background-color:#fef1f0;}
.cF1{color:#0148a4;background-color:#fef1f0;}
.cF2{color:#3b7901;background-color:#fef1f0;}
.cF3{color:#057c7e;background-color:#fef1f0;}
.cF4{color:#bb2020;background-color:#fef1f0;}
.cF5{color:#9e42ae;background-color:#fef1f0;}
.cF6{color:#b57901;background-color:#fef1f0;}
.cF7{color:#b2b6af;background-color:#fef1f0;}
.cF8{color:#555753;background-color:#fef1f0;}
.cF9{color:#678fbb;background-color:#fef1f0;}
.cFA{color:#82bc49;background-color:#fef1f0;}
.cFB{color:#0097a2;background-color:#fef1f0;}
.cFC{color:#e26a6a;background-color:#fef1f0;}
.cFD{color:#c671bc;background-color:#fef1f0;}
.cFE{color:#c7ab00;background-color:#fef1f0;}
.cFF{color:#fef1f0;background-color:#fef1f0;}
</style>
</head>
<body>
<pre style="font-family:monospace;font-size:12pt">
<a name="l1"></a><span class=cF2>// Main ZealOS header</span><span class=cF0>
<a name="l2"></a>
<a name="l3"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>&quot;&quot;</span><span class=cF0>
<a name="l4"></a></span><span class=cF1>extern</span><span class=cF0> </span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CAOT</span><span class=cF0>;
<a name="l5"></a></span><span class=cF1>extern</span><span class=cF0> </span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CAOTHeapGlobal</span><span class=cF0>;
<a name="l6"></a></span><span class=cF1>extern</span><span class=cF0> </span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CAOTImportExport</span><span class=cF0>;
<a name="l7"></a></span><span class=cF1>extern</span><span class=cF0> </span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CCPU</span><span class=cF0>;
<a name="l8"></a></span><span class=cF1>extern</span><span class=cF0> </span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CDC</span><span class=cF0>;
<a name="l9"></a></span><span class=cF1>extern</span><span class=cF0> </span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CDirContext</span><span class=cF0>;
<a name="l10"></a></span><span class=cF1>extern</span><span class=cF0> </span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CDoc</span><span class=cF0>;
<a name="l11"></a></span><span class=cF1>extern</span><span class=cF0> </span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CFile</span><span class=cF0>;
<a name="l12"></a></span><span class=cF1>extern</span><span class=cF0> </span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CHashClass</span><span class=cF0>;
<a name="l13"></a></span><span class=cF1>extern</span><span class=cF0> </span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CHashFun</span><span class=cF0>;
<a name="l14"></a></span><span class=cF1>extern</span><span class=cF0> </span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CHeapCtrl</span><span class=cF0>;
<a name="l15"></a></span><span class=cF1>extern</span><span class=cF0> </span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CIntermediateCode</span><span class=cF0>;
<a name="l16"></a></span><span class=cF1>extern</span><span class=cF0> </span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CJobCtrl</span><span class=cF0>;
<a name="l17"></a></span><span class=cF1>extern</span><span class=cF0> </span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CTask</span><span class=cF0>;
<a name="l18"></a>
<a name="l19"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>NULL</span><span class=cF0> </span><span class=cFE>0</span><span class=cF0>
<a name="l20"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>TRUE</span><span class=cF0> </span><span class=cFE>1</span><span class=cF0>
<a name="l21"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>FALSE</span><span class=cF0> </span><span class=cFE>0</span><span class=cF0>
<a name="l22"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ON</span><span class=cF0> </span><span class=cFE>1</span><span class=cF0>
<a name="l23"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>OFF</span><span class=cF0> </span><span class=cFE>0</span><span class=cF0>
<a name="l24"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>NONE</span><span class=cF0> </span><span class=cFE>0</span><span class=cF0> </span><span class=cF2>//for use in default arguments</span><span class=cF0>
<a name="l25"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>I8_MIN</span><span class=cF0> (-</span><span class=cFE>0x80</span><span class=cF0>)
<a name="l26"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>I8_MAX</span><span class=cF0> </span><span class=cFE>0x7F</span><span class=cF0>
<a name="l27"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>U8_MIN</span><span class=cF0> </span><span class=cFE>0</span><span class=cF0>
<a name="l28"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>U8_MAX</span><span class=cF0> </span><span class=cFE>0xFF</span><span class=cF0>
<a name="l29"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>I16_MIN</span><span class=cF0> (-</span><span class=cFE>0x8000</span><span class=cF0>)
<a name="l30"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>I16_MAX</span><span class=cF0> </span><span class=cFE>0x7FFF</span><span class=cF0>
<a name="l31"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>U16_MIN</span><span class=cF0> </span><span class=cFE>0</span><span class=cF0>
<a name="l32"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>U16_MAX</span><span class=cF0> </span><span class=cFE>0xFFFF</span><span class=cF0>
<a name="l33"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>I32_MIN</span><span class=cF0> (-</span><span class=cFE>0x80000000</span><span class=cF0>)
<a name="l34"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>I32_MAX</span><span class=cF0> </span><span class=cFE>0x7FFFFFFF</span><span class=cF0>
<a name="l35"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>U32_MIN</span><span class=cF0> </span><span class=cFE>0</span><span class=cF0>
<a name="l36"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>U32_MAX</span><span class=cF0> </span><span class=cFE>0xFFFFFFFF</span><span class=cF0>
<a name="l37"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>I64_MIN</span><span class=cF0> (-</span><span class=cFE>0x8000000000000000</span><span class=cF0>)
<a name="l38"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>I64_MAX</span><span class=cF0> </span><span class=cFE>0x7FFFFFFFFFFFFFFF</span><span class=cF0>
<a name="l39"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>U64_MIN</span><span class=cF0> </span><span class=cFE>0</span><span class=cF0>
<a name="l40"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>U64_MAX</span><span class=cF0> </span><span class=cFE>0xFFFFFFFFFFFFFFFF</span><span class=cF0>
<a name="l41"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>INVALID_PTR</span><span class=cF0> </span><span class=cF3>I64_MAX</span><span class=cF0>
<a name="l42"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>STR_LEN</span><span class=cF0> </span><span class=cFE>144</span><span class=cF0>
<a name="l43"></a>
<a name="l44"></a></span><span class=cF2>//(Int to F64 conversion is signed)</span><span class=cF0>
<a name="l45"></a></span><span class=cF2>//Turn off 80-bit float constants with </span><a href="https://zeal-operating-system.github.io/ZealOS/Kernel/KernelA.HH.html#l1687"><span class=cF4>OPTf_NO_BUILTIN_CONST</span></a><span class=cF2>.</span><span class=cF0>
<a name="l46"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>U64_F64_MAX</span><span class=cF0> (</span><span class=cFE>0x43F0000000000000</span><span class=cF7>(</span><span class=cF1>F64</span><span class=cF7>)</span><span class=cF0>)
<a name="l47"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>F64_MAX</span><span class=cF0> (</span><span class=cFE>0x7FEFFFFFFFFFFFFF</span><span class=cF7>(</span><span class=cF1>F64</span><span class=cF7>)</span><span class=cF0>)
<a name="l48"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>F64_MIN</span><span class=cF0> (</span><span class=cFE>0xFFEFFFFFFFFFFFFF</span><span class=cF7>(</span><span class=cF1>F64</span><span class=cF7>)</span><span class=cF0>)
<a name="l49"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>inf</span><span class=cF0> (</span><span class=cFE>0x7FF0000000000000</span><span class=cF7>(</span><span class=cF1>F64</span><span class=cF7>)</span><span class=cF0>)
<a name="l50"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>inf</span><span class=cF0> (</span><span class=cFE>0x7FF0000000000000</span><span class=cF7>(</span><span class=cF1>F64</span><span class=cF7>)</span><span class=cF0>)
<a name="l51"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>pi</span><span class=cF0> (</span><span class=cFE>0x400921FB54442D18</span><span class=cF7>(</span><span class=cF1>F64</span><span class=cF7>)</span><span class=cF0>)
<a name="l52"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>pi</span><span class=cF0> (</span><span class=cFE>0x400921FB54442D18</span><span class=cF7>(</span><span class=cF1>F64</span><span class=cF7>)</span><span class=cF0>)
<a name="l53"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>exp_1</span><span class=cF0> (</span><span class=cFE>0x4005BF0A8B145769</span><span class=cF7>(</span><span class=cF1>F64</span><span class=cF7>)</span><span class=cF0>) </span><span class=cF2>//The number &quot;e&quot;</span><span class=cF0>
<a name="l54"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>log2_10</span><span class=cF0> (</span><span class=cFE>0x400A934F0979A371</span><span class=cF7>(</span><span class=cF1>F64</span><span class=cF7>)</span><span class=cF0>)
<a name="l55"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>log2_e</span><span class=cF0> (</span><span class=cFE>0x3FF71547652B82FE</span><span class=cF7>(</span><span class=cF1>F64</span><span class=cF7>)</span><span class=cF0>)
<a name="l56"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>log10_2</span><span class=cF0> (</span><span class=cFE>0x3FD34413509F79FF</span><span class=cF7>(</span><span class=cF1>F64</span><span class=cF7>)</span><span class=cF0>)
<a name="l57"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>loge_2</span><span class=cF0> (</span><span class=cFE>0x3FE62E42FEFA39EF</span><span class=cF7>(</span><span class=cF1>F64</span><span class=cF7>)</span><span class=cF0>)
<a name="l58"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>sqrt2</span><span class=cF0> (</span><span class=cFE>0x3FF6A09E667F3BCD</span><span class=cF7>(</span><span class=cF1>F64</span><span class=cF7>)</span><span class=cF0>)
<a name="l59"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>eps</span><span class=cF0> (</span><span class=cFE>0x3CB0000000000000</span><span class=cF7>(</span><span class=cF1>F64</span><span class=cF7>)</span><span class=cF0>)
<a name="l60"></a>
<a name="l61"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>&quot;Data Types/Simple&quot;</span><span class=cF0>
<a name="l62"></a></span><span class=cF2>//CosmiC union structure is treated as a whole if no member is specified, similar to bit fields.</span><span class=cF0>
<a name="l63"></a></span><span class=cF2>//See </span><a href="https://zeal-operating-system.github.io/ZealOS/Demo/SubIntAccess.CC.html#l1"><span class=cF4>::/Demo/SubIntAccess.CC</span></a><span class=cF2>.</span><span class=cF0>
<a name="l64"></a>
<a name="l65"></a></span><span class=cF1>U16i</span><span class=cF0> </span><span class=cF1>union</span><span class=cF0> </span><span class=cF9>U16</span><span class=cF0>
<a name="l66"></a>{
<a name="l67"></a> </span><span class=cF1>I8i</span><span class=cF0> i8[</span><span class=cFE>2</span><span class=cF0>];
<a name="l68"></a> </span><span class=cF1>U8i</span><span class=cF0> u8[</span><span class=cFE>2</span><span class=cF0>];
<a name="l69"></a>};
<a name="l70"></a>
<a name="l71"></a></span><span class=cF1>I16i</span><span class=cF0> </span><span class=cF1>union</span><span class=cF0> </span><span class=cF9>I16</span><span class=cF0>
<a name="l72"></a>{
<a name="l73"></a> </span><span class=cF1>I8i</span><span class=cF0> i8[</span><span class=cFE>2</span><span class=cF0>];
<a name="l74"></a> </span><span class=cF1>U8i</span><span class=cF0> u8[</span><span class=cFE>2</span><span class=cF0>];
<a name="l75"></a>};
<a name="l76"></a>
<a name="l77"></a></span><span class=cF1>U32i</span><span class=cF0> </span><span class=cF1>union</span><span class=cF0> </span><span class=cF9>U32</span><span class=cF0>
<a name="l78"></a>{
<a name="l79"></a> </span><span class=cF1>I8i</span><span class=cF0> i8[</span><span class=cFE>4</span><span class=cF0>];
<a name="l80"></a> </span><span class=cF1>U8i</span><span class=cF0> u8[</span><span class=cFE>4</span><span class=cF0>];
<a name="l81"></a> </span><span class=cF9>I16</span><span class=cF0> i16[</span><span class=cFE>2</span><span class=cF0>];
<a name="l82"></a> </span><span class=cF9>U16</span><span class=cF0> u16[</span><span class=cFE>2</span><span class=cF0>];
<a name="l83"></a>};
<a name="l84"></a>
<a name="l85"></a></span><span class=cF1>I32i</span><span class=cF0> </span><span class=cF1>union</span><span class=cF0> </span><span class=cF9>I32</span><span class=cF0>
<a name="l86"></a>{
<a name="l87"></a> </span><span class=cF1>I8i</span><span class=cF0> i8[</span><span class=cFE>4</span><span class=cF0>];
<a name="l88"></a> </span><span class=cF1>U8i</span><span class=cF0> u8[</span><span class=cFE>4</span><span class=cF0>];
<a name="l89"></a> </span><span class=cF9>I16</span><span class=cF0> i16[</span><span class=cFE>2</span><span class=cF0>];
<a name="l90"></a> </span><span class=cF9>U16</span><span class=cF0> u16[</span><span class=cFE>2</span><span class=cF0>];
<a name="l91"></a>};
<a name="l92"></a>
<a name="l93"></a></span><span class=cF1>U64i</span><span class=cF0> </span><span class=cF1>union</span><span class=cF0> </span><span class=cF9>U64</span><span class=cF0>
<a name="l94"></a>{
<a name="l95"></a> </span><span class=cF1>I8i</span><span class=cF0> i8[</span><span class=cFE>8</span><span class=cF0>];
<a name="l96"></a> </span><span class=cF1>U8i</span><span class=cF0> u8[</span><span class=cFE>8</span><span class=cF0>];
<a name="l97"></a> </span><span class=cF9>I16</span><span class=cF0> i16[</span><span class=cFE>4</span><span class=cF0>];
<a name="l98"></a> </span><span class=cF9>U16</span><span class=cF0> u16[</span><span class=cFE>4</span><span class=cF0>];
<a name="l99"></a> </span><span class=cF9>I32</span><span class=cF0> i32[</span><span class=cFE>2</span><span class=cF0>];
<a name="l100"></a> </span><span class=cF9>U32</span><span class=cF0> u32[</span><span class=cFE>2</span><span class=cF0>];
<a name="l101"></a>};
<a name="l102"></a>
<a name="l103"></a></span><span class=cF1>I64i</span><span class=cF0> </span><span class=cF1>union</span><span class=cF0> </span><span class=cF9>I64</span><span class=cF0>
<a name="l104"></a>{
<a name="l105"></a> </span><span class=cF1>I8i</span><span class=cF0> i8[</span><span class=cFE>8</span><span class=cF0>];
<a name="l106"></a> </span><span class=cF1>U8i</span><span class=cF0> u8[</span><span class=cFE>8</span><span class=cF0>];
<a name="l107"></a> </span><span class=cF9>I16</span><span class=cF0> i16[</span><span class=cFE>4</span><span class=cF0>];
<a name="l108"></a> </span><span class=cF9>U16</span><span class=cF0> u16[</span><span class=cFE>4</span><span class=cF0>];
<a name="l109"></a> </span><span class=cF9>I32</span><span class=cF0> i32[</span><span class=cFE>2</span><span class=cF0>];
<a name="l110"></a> </span><span class=cF9>U32</span><span class=cF0> u32[</span><span class=cFE>2</span><span class=cF0>];
<a name="l111"></a>};
<a name="l112"></a>
<a name="l113"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>&quot;Math/Complex;Data Types/Complex&quot;</span><span class=cF0>
<a name="l114"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>Complex</span><span class=cF0>
<a name="l115"></a>{
<a name="l116"></a> </span><span class=cF1>F64</span><span class=cF0> x, y;
<a name="l117"></a>};
<a name="l118"></a>
<a name="l119"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>&quot;Data Types/Circular Queue&quot;</span><span class=cF0>
<a name="l120"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CQueue</span><span class=cF0>
<a name="l121"></a>{
<a name="l122"></a> </span><span class=cF9>CQueue</span><span class=cF0> *next, *last;
<a name="l123"></a>};
<a name="l124"></a>
<a name="l125"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>&quot;Graphics/Data Types/D3I32;Math/Data Types/D3I32;Data Types/D3I32&quot;</span><span class=cF0>
<a name="l126"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CD3I32</span><span class=cF0> </span><span class=cF2>//Three dimensional I32 pt</span><span class=cF0>
<a name="l127"></a>{
<a name="l128"></a> </span><span class=cF9>I32</span><span class=cF0> x, y, z;
<a name="l129"></a>};
<a name="l130"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CQueueD3I32</span><span class=cF0> </span><span class=cF2>//Queue of three dimensional I32 pts</span><span class=cF0>
<a name="l131"></a>{
<a name="l132"></a> </span><span class=cF9>CQueueD3I32</span><span class=cF0> *next, *last;
<a name="l133"></a> </span><span class=cF9>CD3I32</span><span class=cF0> p;
<a name="l134"></a>};
<a name="l135"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>&quot;Math/Data Types;Data Types&quot;</span><span class=cF0>
<a name="l136"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CD2I32</span><span class=cF0> </span><span class=cF2>//Two dimensional I32 pt</span><span class=cF0>
<a name="l137"></a>{
<a name="l138"></a> </span><span class=cF9>I32</span><span class=cF0> x, y;
<a name="l139"></a>};
<a name="l140"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CD2I64</span><span class=cF0> </span><span class=cF2>//Two dimensional I64 pt</span><span class=cF0>
<a name="l141"></a>{
<a name="l142"></a> </span><span class=cF9>I64</span><span class=cF0> x, y;
<a name="l143"></a>};
<a name="l144"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CD3I64</span><span class=cF0> </span><span class=cF2>//Three dimensional I64 pt</span><span class=cF0>
<a name="l145"></a>{
<a name="l146"></a> </span><span class=cF9>I64</span><span class=cF0> x, y, z;
<a name="l147"></a>};
<a name="l148"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CD2</span><span class=cF0> </span><span class=cF2>//Two dimensional F64 pt</span><span class=cF0>
<a name="l149"></a>{
<a name="l150"></a> </span><span class=cF1>F64</span><span class=cF0> x, y;
<a name="l151"></a>};
<a name="l152"></a>
<a name="l153"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>&quot;Math/CD3;Data Types/CD3&quot;</span><span class=cF0>
<a name="l154"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CD3</span><span class=cF0> </span><span class=cF2>//Three dimensional F64 pt</span><span class=cF0>
<a name="l155"></a>{
<a name="l156"></a> </span><span class=cF1>F64</span><span class=cF0> x, y, z;
<a name="l157"></a>};
<a name="l158"></a>
<a name="l159"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>&quot;Data Types/Queue Vector&quot;</span><span class=cF0>
<a name="l160"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>QUE_VECT_U8_COUNT</span><span class=cF0> </span><span class=cFE>512</span><span class=cF0>
<a name="l161"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CQueueVectU8</span><span class=cF0>
<a name="l162"></a>{
<a name="l163"></a> </span><span class=cF9>CQueueVectU8</span><span class=cF0> *next,
<a name="l164"></a> *last;
<a name="l165"></a> </span><span class=cF9>I64</span><span class=cF0> total_count,
<a name="l166"></a> node_count,
<a name="l167"></a> min_idx;
<a name="l168"></a> </span><span class=cF1>U8</span><span class=cF0> body[</span><span class=cF3>QUE_VECT_U8_COUNT</span><span class=cF0>];
<a name="l169"></a>};
<a name="l170"></a>
<a name="l171"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>&quot;Data Types/Fifo&quot;</span><span class=cF0>
<a name="l172"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CFifoU8</span><span class=cF0>
<a name="l173"></a>{
<a name="l174"></a> </span><span class=cF1>U8</span><span class=cF0> *buf;
<a name="l175"></a> </span><span class=cF9>I64</span><span class=cF0> mask,
<a name="l176"></a> in_ptr,
<a name="l177"></a> out_ptr;
<a name="l178"></a>};
<a name="l179"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CFifoI64</span><span class=cF0>
<a name="l180"></a>{
<a name="l181"></a> </span><span class=cF9>I64</span><span class=cF0> *buf,
<a name="l182"></a> mask,
<a name="l183"></a> in_ptr,
<a name="l184"></a> out_ptr;
<a name="l185"></a>};
<a name="l186"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>&quot;Date/CMOS&quot;</span><span class=cF0>
<a name="l187"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CMOS_SEL</span><span class=cF0> </span><span class=cFE>0x70</span><span class=cF0> </span><span class=cF2>//select which reg to access using this port</span><span class=cF0>
<a name="l188"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CMOS_DATA</span><span class=cF0> </span><span class=cFE>0x71</span><span class=cF0> </span><span class=cF2>//read from or write to reg using this port</span><span class=cF0>
<a name="l189"></a>
<a name="l190"></a></span><span class=cF2>//CMOS registers</span><span class=cF0>
<a name="l191"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CMOSR_SEC</span><span class=cF0> </span><span class=cFE>0x0</span><span class=cF0>
<a name="l192"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CMOSR_MIN</span><span class=cF0> </span><span class=cFE>0x2</span><span class=cF0>
<a name="l193"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CMOSR_HOUR</span><span class=cF0> </span><span class=cFE>0x4</span><span class=cF0>
<a name="l194"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CMOSR_DAY_OF_WEEK</span><span class=cF0> </span><span class=cFE>0x6</span><span class=cF0>
<a name="l195"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CMOSR_DAY_OF_MONTH</span><span class=cF0> </span><span class=cFE>0x7</span><span class=cF0>
<a name="l196"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CMOSR_MONTH</span><span class=cF0> </span><span class=cFE>0x8</span><span class=cF0>
<a name="l197"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CMOSR_YEAR</span><span class=cF0> </span><span class=cFE>0x9</span><span class=cF0>
<a name="l198"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CMOSR_STATUS_A</span><span class=cF0> </span><span class=cFE>0xA</span><span class=cF0>
<a name="l199"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CMOSR_STATUS_B</span><span class=cF0> </span><span class=cFE>0xB</span><span class=cF0>
<a name="l200"></a>
<a name="l201"></a></span><span class=cF2>//CMOS status flags</span><span class=cF0>
<a name="l202"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CMOSF_BINARY</span><span class=cF0> (</span><span class=cFE>1</span><span class=cF0> &lt;&lt; </span><span class=cFE>2</span><span class=cF0>)
<a name="l203"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CMOSF_UPDATING</span><span class=cF0> (</span><span class=cFE>1</span><span class=cF0> &lt;&lt; </span><span class=cFE>7</span><span class=cF0>)
<a name="l204"></a>
<a name="l205"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>&quot;Date/CDate&quot;</span><span class=cF0>
<a name="l206"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CDATE_YEAR_DAYS</span><span class=cF0> </span><span class=cFE>365</span><span class=cF0>.</span><span class=cFE>24225</span><span class=cF0>
<a name="l207"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CDATE_YEAR_DAYS_INT</span><span class=cF0> </span><span class=cFE>36524225</span><span class=cF0>
<a name="l208"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CDATE_BASE_DAY_OF_WEEK</span><span class=cF0> </span><span class=cFE>0</span><span class=cF0>
<a name="l209"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF9>I64</span><span class=cF0> </span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CDate</span><span class=cF0>
<a name="l210"></a>{
<a name="l211"></a> </span><span class=cF9>U32</span><span class=cF0> time;
<a name="l212"></a> </span><span class=cF9>I32</span><span class=cF0> date;
<a name="l213"></a>};
<a name="l214"></a>
<a name="l215"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>&quot;Date;Date/CDate&quot;</span><span class=cF0>
<a name="l216"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CDateStruct</span><span class=cF0>
<a name="l217"></a>{
<a name="l218"></a> </span><span class=cF1>U8</span><span class=cF0> sec10000,
<a name="l219"></a> sec100,
<a name="l220"></a> sec,
<a name="l221"></a> min,
<a name="l222"></a> hour,
<a name="l223"></a> day_of_week,
<a name="l224"></a> day_of_mon,
<a name="l225"></a> mon;
<a name="l226"></a> </span><span class=cF9>I32</span><span class=cF0> year;
<a name="l227"></a>};
<a name="l228"></a>
<a name="l229"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>&quot;Math/ODE&quot;</span><span class=cF0>
<a name="l230"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>COrder2D3</span><span class=cF0>
<a name="l231"></a>{
<a name="l232"></a> </span><span class=cF1>F64</span><span class=cF0> x, y, z,
<a name="l233"></a> DxDt, DyDt, DzDt;
<a name="l234"></a>};
<a name="l235"></a>
<a name="l236"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>MSF_INACTIVE</span><span class=cF0> </span><span class=cFE>1</span><span class=cF0>
<a name="l237"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>MSF_FIXED</span><span class=cF0> </span><span class=cFE>2</span><span class=cF0>
<a name="l238"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CMass</span><span class=cF0>
<a name="l239"></a>{
<a name="l240"></a> </span><span class=cF9>CMass</span><span class=cF0> *next, *last;
<a name="l241"></a> </span><span class=cF9>COrder2D3</span><span class=cF0> *state, </span><span class=cF2>//Point to entries in </span><a href="https://zeal-operating-system.github.io/ZealOS/Kernel/KernelA.HH.html#l281"><span class=cF4>CMathODE</span></a><span class=cF2>.state[]</span><span class=cF0>
<a name="l242"></a> *DstateDt; </span><span class=cF2>//Point to entries in </span><a href="https://zeal-operating-system.github.io/ZealOS/Kernel/KernelA.HH.html#l281"><span class=cF4>CMathODE</span></a><span class=cF2>.DstateDt[]</span><span class=cF0>
<a name="l243"></a>
<a name="l244"></a> </span><span class=cF1>U0</span><span class=cF0> </span><span class=cF1>start</span><span class=cF0>;
<a name="l245"></a> </span><span class=cF9>U32</span><span class=cF0> flags,
<a name="l246"></a> num;
<a name="l247"></a> </span><span class=cF1>F64</span><span class=cF0> mass,
<a name="l248"></a> drag_profile_factor;
<a name="l249"></a> </span><span class=cF1>U0</span><span class=cF0> saved_state;
<a name="l250"></a> </span><span class=cF1>F64</span><span class=cF0> x, y, z,
<a name="l251"></a> DxDt, DyDt, DzDt;
<a name="l252"></a> </span><span class=cF1>U0</span><span class=cF0> </span><span class=cF1>end</span><span class=cF0>;
<a name="l253"></a>};
<a name="l254"></a>
<a name="l255"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SSF_INACTIVE</span><span class=cF0> </span><span class=cFE>1</span><span class=cF0>
<a name="l256"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SSF_NO_COMPRESSION</span><span class=cF0> </span><span class=cFE>2</span><span class=cF0>
<a name="l257"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SSF_NO_TENSION</span><span class=cF0> </span><span class=cFE>4</span><span class=cF0>
<a name="l258"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CSpring</span><span class=cF0>
<a name="l259"></a>{
<a name="l260"></a> </span><span class=cF9>CSpring</span><span class=cF0> *next, *last;
<a name="l261"></a> </span><span class=cF9>CMass</span><span class=cF0> *end1, *end2;
<a name="l262"></a> </span><span class=cF1>F64</span><span class=cF0> f, displacement; </span><span class=cF2>//set for you to check</span><span class=cF0>
<a name="l263"></a>
<a name="l264"></a> </span><span class=cF1>U0</span><span class=cF0> </span><span class=cF1>start</span><span class=cF0>;
<a name="l265"></a> </span><span class=cF9>U32</span><span class=cF0> flags, num, end1_num, end2_num;
<a name="l266"></a> </span><span class=cF1>F64</span><span class=cF0> const, rest_len;
<a name="l267"></a> </span><span class=cF1>U0</span><span class=cF0> </span><span class=cF1>end</span><span class=cF0>;
<a name="l268"></a>};
<a name="l269"></a>
<a name="l270"></a></span><span class=cF2>//Ordinary Differential Equations</span><span class=cF0>
<a name="l271"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ODEF_HAS_MASSES</span><span class=cF0> </span><span class=cFE>1</span><span class=cF0>
<a name="l272"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ODEF_PAUSED</span><span class=cF0> </span><span class=cFE>2</span><span class=cF0>
<a name="l273"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ODEF_STARTED</span><span class=cF0> </span><span class=cFE>4</span><span class=cF0>
<a name="l274"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ODEF_BUSY</span><span class=cF0> </span><span class=cFE>8</span><span class=cF0>
<a name="l275"></a>
<a name="l276"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ODEf_HAS_MASSES</span><span class=cF0> </span><span class=cFE>0</span><span class=cF0>
<a name="l277"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ODEf_PAUSED</span><span class=cF0> </span><span class=cFE>1</span><span class=cF0>
<a name="l278"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ODEf_STARTED</span><span class=cF0> </span><span class=cFE>2</span><span class=cF0>
<a name="l279"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ODEf_BUSY</span><span class=cF0> </span><span class=cFE>3</span><span class=cF0>
<a name="l280"></a>
<a name="l281"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CMathODE</span><span class=cF0>
<a name="l282"></a>{
<a name="l283"></a> </span><span class=cF9>CMathODE</span><span class=cF0> *next, *last;
<a name="l284"></a> </span><span class=cF9>I64</span><span class=cF0> flags, n, n_internal;
<a name="l285"></a> </span><span class=cF9>CMass</span><span class=cF0> *next_mass, *last_mass;
<a name="l286"></a> </span><span class=cF9>CSpring</span><span class=cF0> *next_spring, *last_spring;
<a name="l287"></a> </span><span class=cF1>F64</span><span class=cF0> drag_v, </span><span class=cF2>//drag proportional to velocity</span><span class=cF0>
<a name="l288"></a> drag_v2, </span><span class=cF2>//drag proportional to velocity squared</span><span class=cF0>
<a name="l289"></a> drag_v3, </span><span class=cF2>//drag proportional to velocity cubed</span><span class=cF0>
<a name="l290"></a> acceleration_limit, </span><span class=cF2>//This clips acceleration</span><span class=cF0>
<a name="l291"></a> base_t,
<a name="l292"></a> t, t_scale,
<a name="l293"></a> h, h_min, h_max;
<a name="l294"></a>
<a name="l295"></a> </span><span class=cF2>//This is not precise, just a ballpark.</span><span class=cF0>
<a name="l296"></a> </span><span class=cF2>//ZealOS CMathODE's are for video games</span><span class=cF0>
<a name="l297"></a> </span><span class=cF2>//not science.</span><span class=cF0> </span><span class=cF2>It bails if it takes</span><span class=cF0>
<a name="l298"></a> </span><span class=cF2>//too long.</span><span class=cF0>
<a name="l299"></a> </span><span class=cF1>F64</span><span class=cF0> min_tolerance, max_tolerance;
<a name="l300"></a>
<a name="l301"></a> </span><span class=cF1>F64</span><span class=cF0> tolerance_internal,
<a name="l302"></a> *array_base,
<a name="l303"></a> *state,
<a name="l304"></a> *state_internal,
<a name="l305"></a> *DstateDt,
<a name="l306"></a> *state_scale,
<a name="l307"></a> *initial_state,
<a name="l308"></a> *tmp0, *tmp1, *tmp2, *tmp3, *tmp4, *tmp5, *tmp6, *tmp7;
<a name="l309"></a> </span><span class=cF9>CTask</span><span class=cF0> *mem_task, *win_task;
<a name="l310"></a> </span><span class=cF1>U0</span><span class=cF0> (*derive)( </span><span class=cF9>CMathODE</span><span class=cF0> *o, </span><span class=cF1>F64</span><span class=cF0> t, </span><span class=cF1>F64</span><span class=cF0> *state, </span><span class=cF1>F64</span><span class=cF0> *DstateDt);
<a name="l311"></a> </span><span class=cF1>U0</span><span class=cF0> (*mp_derive)(</span><span class=cF9>CMathODE</span><span class=cF0> *o, </span><span class=cF1>F64</span><span class=cF0> t, </span><span class=cF9>I64</span><span class=cF0> cpu_num, </span><span class=cF1>F64</span><span class=cF0> *state, </span><span class=cF1>F64</span><span class=cF0> *DstateDt); </span><span class=cF2>//If break into parallel pieces.</span><span class=cF0>
<a name="l312"></a> </span><span class=cF9>CTask</span><span class=cF0> **slave_tasks;
<a name="l313"></a> </span><span class=cF9>I64</span><span class=cF0> mp_not_done_flags;
<a name="l314"></a> </span><span class=cF1>F64</span><span class=cF0> mp_t, *mp_state, *mp_DstateDt;
<a name="l315"></a>
<a name="l316"></a> </span><span class=cF9>I64</span><span class=cF0> user_data;
<a name="l317"></a>};
<a name="l318"></a>
<a name="l319"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>&quot;Processor&quot;</span><span class=cF0>
<a name="l320"></a></span><span class=cF2>//IDT entry types</span><span class=cF0>
<a name="l321"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>IDTET_TASK</span><span class=cF0> </span><span class=cFE>0x05</span><span class=cF0>
<a name="l322"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>IDTET_IRQ</span><span class=cF0> </span><span class=cFE>0x0E</span><span class=cF0>
<a name="l323"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>IDTET_TRAP</span><span class=cF0> </span><span class=cFE>0x0F</span><span class=cF0> </span><span class=cF2>//Same as IRQ but doesnt do CLI.</span><span class=cF0>
<a name="l324"></a>
<a name="l325"></a></span><span class=cF2>//Interrupts</span><span class=cF0>
<a name="l326"></a></span><span class=cF2>//0x00-0x1F are reserved by Intel</span><span class=cF0>
<a name="l327"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>I_DIV_ZERO</span><span class=cF0> </span><span class=cFE>0x00</span><span class=cF0>
<a name="l328"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>I_SINGLE_STEP</span><span class=cF0> </span><span class=cFE>0x01</span><span class=cF0>
<a name="l329"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>I_NMI</span><span class=cF0> </span><span class=cFE>0x02</span><span class=cF0>
<a name="l330"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>I_BPT</span><span class=cF0> </span><span class=cFE>0x03</span><span class=cF0>
<a name="l331"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>I_PAGE_FAULT</span><span class=cF0> </span><span class=cFE>0x0E</span><span class=cF0>
<a name="l332"></a></span><span class=cF2>//0x20-0x2F are used for hardware</span><span class=cF0>
<a name="l333"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>I_TIMER</span><span class=cF0> </span><span class=cFE>0x20</span><span class=cF0>
<a name="l334"></a></span><span class=cF2>//Software Interrupts</span><span class=cF0>
<a name="l335"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>I_MP_CRASH</span><span class=cF0> </span><span class=cFE>0x30</span><span class=cF0>
<a name="l336"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>I_WAKE</span><span class=cF0> </span><span class=cFE>0x31</span><span class=cF0>
<a name="l337"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>I_DEBUG</span><span class=cF0> </span><span class=cFE>0x32</span><span class=cF0>
<a name="l338"></a></span><span class=cF2>//See </span><a href="https://zeal-operating-system.github.io/ZealOS/Kernel/KDefine.CC.html#l273"><span class=cF4>ST_INT_NAMES</span></a><span class=cF0>
<a name="l339"></a>
<a name="l340"></a></span><span class=cF2>//You might want to start backward from</span><span class=cF0>
<a name="l341"></a></span><span class=cF2>//0xFF for your own interrupts.</span><span class=cF0>
<a name="l342"></a></span><span class=cF2>//See </span><a href="https://zeal-operating-system.github.io/ZealOS/Kernel/KInterrupts.CC.html#l133"><span class=cF4>IntEntryAlloc</span></a><span class=cF2>.</span><span class=cF0>
<a name="l343"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>I_USER</span><span class=cF0> </span><span class=cFE>0x40</span><span class=cF0>
<a name="l344"></a>
<a name="l345"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>MP_PROCESSORS_NUM</span><span class=cF0> </span><span class=cFE>128</span><span class=cF0>
<a name="l346"></a>
<a name="l347"></a></span><span class=cF2>//Control register flag bits</span><span class=cF0>
<a name="l348"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CR0f_PE</span><span class=cF0> </span><span class=cFE>0</span><span class=cF0> </span><span class=cF2>//Protection Enable (Protected mode)</span><span class=cF0>
<a name="l349"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CR0f_MP</span><span class=cF0> </span><span class=cFE>1</span><span class=cF0> </span><span class=cF2>//Monitor coprocessor</span><span class=cF0>
<a name="l350"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CR0f_EM</span><span class=cF0> </span><span class=cFE>2</span><span class=cF0> </span><span class=cF2>//Emulation of coprocessor</span><span class=cF0>
<a name="l351"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CR0f_TS</span><span class=cF0> </span><span class=cFE>3</span><span class=cF0> </span><span class=cF2>//Task switched, some irrelevant x87 task management stuff</span><span class=cF0>
<a name="l352"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CR0f_NE</span><span class=cF0> </span><span class=cFE>5</span><span class=cF0> </span><span class=cF2>//Numeric error</span><span class=cF0>
<a name="l353"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CR0f_PG</span><span class=cF0> </span><span class=cFE>31</span><span class=cF2>//Enable paging</span><span class=cF0>
<a name="l354"></a>
<a name="l355"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CR0F_PE</span><span class=cF0> (</span><span class=cFE>1</span><span class=cF0> &lt;&lt; </span><span class=cF3>CR0f_PE</span><span class=cF0>)
<a name="l356"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CR0F_NE</span><span class=cF0> (</span><span class=cFE>1</span><span class=cF0> &lt;&lt; </span><span class=cF3>CR0f_NE</span><span class=cF0>)
<a name="l357"></a>
<a name="l358"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CR4f_PAE</span><span class=cF0> </span><span class=cFE>5</span><span class=cF0> </span><span class=cF2>//Physical Address Extension, required by long mode</span><span class=cF0>
<a name="l359"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CR4f_PGE</span><span class=cF0> </span><span class=cFE>7</span><span class=cF0> </span><span class=cF2>//Page-Global Enable</span><span class=cF0>
<a name="l360"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CR4f_OSFXSR</span><span class=cF0> </span><span class=cFE>9</span><span class=cF0> </span><span class=cF2>//FXSAVE/FXRSTOR support enabled</span><span class=cF0>
<a name="l361"></a>
<a name="l362"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CR4F_PAE</span><span class=cF0> (</span><span class=cFE>1</span><span class=cF0> &lt;&lt; </span><span class=cF3>CR4f_PAE</span><span class=cF0>)
<a name="l363"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CR4F_PGE</span><span class=cF0> (</span><span class=cFE>1</span><span class=cF0> &lt;&lt; </span><span class=cF3>CR4f_PGE</span><span class=cF0>)
<a name="l364"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CR4F_OSFXSR</span><span class=cF0> (</span><span class=cFE>1</span><span class=cF0> &lt;&lt; </span><span class=cF3>CR4f_OSFXSR</span><span class=cF0>)
<a name="l365"></a>
<a name="l366"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SYS_START_CR0</span><span class=cF0> (</span><span class=cF3>CR0F_PE</span><span class=cF0> | </span><span class=cF3>CR0F_NE</span><span class=cF0>)
<a name="l367"></a>
<a name="l368"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RFLAGf_CARRY</span><span class=cF0> </span><span class=cFE>0</span><span class=cF0>
<a name="l369"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RFLAGf_PARITY</span><span class=cF0> </span><span class=cFE>2</span><span class=cF0>
<a name="l370"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RFLAGf_AUX_CARRY</span><span class=cF0> </span><span class=cFE>4</span><span class=cF0>
<a name="l371"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RFLAGf_ZERO</span><span class=cF0> </span><span class=cFE>6</span><span class=cF0>
<a name="l372"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RFLAGf_SIGN</span><span class=cF0> </span><span class=cFE>7</span><span class=cF0>
<a name="l373"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RFLAGf_TRAP</span><span class=cF0> </span><span class=cFE>8</span><span class=cF0> </span><span class=cF2>//Single Step</span><span class=cF0>
<a name="l374"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RFLAGf_INT</span><span class=cF0> </span><span class=cFE>9</span><span class=cF0>
<a name="l375"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RFLAGf_DIR</span><span class=cF0> </span><span class=cFE>10</span><span class=cF0>
<a name="l376"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RFLAGf_OVERFLOW</span><span class=cF0> </span><span class=cFE>11</span><span class=cF0>
<a name="l377"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RFLAGf_IOPL0</span><span class=cF0> </span><span class=cFE>12</span><span class=cF0> </span><span class=cF2>// I/O Privilege Level</span><span class=cF0>
<a name="l378"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RFLAGf_IOPL1</span><span class=cF0> </span><span class=cFE>13</span><span class=cF0>
<a name="l379"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RFLAGf_NESTED_TASK</span><span class=cF0> </span><span class=cFE>14</span><span class=cF0>
<a name="l380"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RFLAGf_RESUME</span><span class=cF0> </span><span class=cFE>16</span><span class=cF0>
<a name="l381"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RFLAGf_V8086</span><span class=cF0> </span><span class=cFE>17</span><span class=cF0>
<a name="l382"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RFLAGf_ALIGN_CHECK</span><span class=cF0> </span><span class=cFE>18</span><span class=cF0>
<a name="l383"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RFLAGf_VINT</span><span class=cF0> </span><span class=cFE>19</span><span class=cF0> </span><span class=cF2>//Virtual Interrupt</span><span class=cF0>
<a name="l384"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RFLAGf_VINT_PENDING</span><span class=cF0> </span><span class=cFE>20</span><span class=cF0>
<a name="l385"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RFLAGf_ID</span><span class=cF0> </span><span class=cFE>21</span><span class=cF0>
<a name="l386"></a>
<a name="l387"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RFLAGG_START</span><span class=cF0> </span><span class=cFE>0x0000</span><span class=cF0>
<a name="l388"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RFLAGG_NORMAL</span><span class=cF0> (</span><span class=cFE>1</span><span class=cF0> &lt;&lt; </span><span class=cF3>RFLAGf_INT</span><span class=cF0>)
<a name="l389"></a>
<a name="l390"></a></span><span class=cF2>//Global Descriptor Table</span><span class=cF0>
<a name="l391"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CGDTEntry</span><span class=cF0>
<a name="l392"></a>{
<a name="l393"></a> </span><span class=cF9>U64</span><span class=cF0> lo, hi;
<a name="l394"></a>};
<a name="l395"></a>
<a name="l396"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CGDT</span><span class=cF0>
<a name="l397"></a>{
<a name="l398"></a> </span><span class=cF9>CGDTEntry</span><span class=cF0> null,
<a name="l399"></a> boot_ds,
<a name="l400"></a> boot_cs,
<a name="l401"></a> cs32,
<a name="l402"></a> cs64, </span><span class=cF2>//The </span><a href="https://zeal-operating-system.github.io/ZealOS/Doc/Charter.DD.html#l1"><span class=cF4>Charter</span></a><span class=cF2> says just ring-0.</span><span class=cF0>
<a name="l403"></a> cs64_ring3, </span><span class=cF2>//</span><a href="https://zeal-operating-system.github.io/ZealOS/Demo/Lectures/Ring3.CC.html#l1"><span class=cF4>Ring3</span></a><span class=cF2>, in case you want to play around.</span><span class=cF0>
<a name="l404"></a> ds,
<a name="l405"></a> ds_ring3,
<a name="l406"></a> tr[</span><span class=cF3>MP_PROCESSORS_NUM</span><span class=cF0>],
<a name="l407"></a> tr_ring3[</span><span class=cF3>MP_PROCESSORS_NUM</span><span class=cF0>];
<a name="l408"></a>};
<a name="l409"></a>
<a name="l410"></a></span><span class=cF2>//Interrupt Descriptor Table</span><span class=cF0>
<a name="l411"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CIDTEntry</span><span class=cF0>
<a name="l412"></a>{
<a name="l413"></a> </span><span class=cF9>U16</span><span class=cF0> offset_low,
<a name="l414"></a> seg_select;
<a name="l415"></a> </span><span class=cF1>U8</span><span class=cF0> ist,
<a name="l416"></a> type_attr;
<a name="l417"></a> </span><span class=cF9>U16</span><span class=cF0> offset_mid;
<a name="l418"></a> </span><span class=cF9>U32</span><span class=cF0> offset_hi,
<a name="l419"></a> zero;
<a name="l420"></a>};
<a name="l421"></a>#</span><span class=cF1>assert</span><span class=cF0> </span><span class=cF1>sizeof</span><span class=cF0>(</span><span class=cF9>CIDTEntry</span><span class=cF0>) == </span><span class=cFE>16</span><span class=cF0>
<a name="l422"></a>
<a name="l423"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CSysLimitBase</span><span class=cF0>
<a name="l424"></a>{
<a name="l425"></a> </span><span class=cF9>U16</span><span class=cF0> limit; </span><span class=cF2>//Offset of last byte, not size.</span><span class=cF0>
<a name="l426"></a> </span><span class=cF1>U8</span><span class=cF0> *base; </span><span class=cF2>//&amp;GDT or &amp;IDT</span><span class=cF0>
<a name="l427"></a>};
<a name="l428"></a>
<a name="l429"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>&quot;Memory/Info&quot;</span><span class=cF0>
<a name="l430"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>MEM_E820_ENTRIES_NUM</span><span class=cF0> </span><span class=cFE>48</span><span class=cF0>
<a name="l431"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>MEM_E820t_USABLE</span><span class=cF0> </span><span class=cFE>1</span><span class=cF0>
<a name="l432"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>MEM_E820t_RESERVED</span><span class=cF0> </span><span class=cFE>2</span><span class=cF0>
<a name="l433"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>MEM_E820t_ACPI</span><span class=cF0> </span><span class=cFE>3</span><span class=cF0>
<a name="l434"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>MEM_E820t_ACPI_NVS</span><span class=cF0> </span><span class=cFE>4</span><span class=cF0>
<a name="l435"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>MEM_E820t_BAD_MEM</span><span class=cF0> </span><span class=cFE>5</span><span class=cF0>
<a name="l436"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>MEM_E820t_PERM_MEM</span><span class=cF0> </span><span class=cFE>7</span><span class=cF0>
<a name="l437"></a>
<a name="l438"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CMemE820</span><span class=cF0>
<a name="l439"></a>{
<a name="l440"></a> </span><span class=cF1>U8</span><span class=cF0> *base;
<a name="l441"></a> </span><span class=cF9>I64</span><span class=cF0> len;
<a name="l442"></a> </span><span class=cF1>U8</span><span class=cF0> type, pad[</span><span class=cFE>3</span><span class=cF0>];
<a name="l443"></a>};
<a name="l444"></a>
<a name="l445"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>&quot;Compiler/Internal&quot;</span><span class=cF0>
<a name="l446"></a></span><span class=cF2>//Loader flags</span><span class=cF0>
<a name="l447"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>LDF_NO_ABSS</span><span class=cF0> </span><span class=cFE>1</span><span class=cF0>
<a name="l448"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>LDF_JUST_LOAD</span><span class=cF0> </span><span class=cFE>2</span><span class=cF0>
<a name="l449"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>LDF_SILENT</span><span class=cF0> </span><span class=cFE>4</span><span class=cF0>
<a name="l450"></a>
<a name="l451"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>BIN_SIGNATURE_VAL</span><span class=cF0> </span><span class=cF6>'ZCCB'</span><span class=cF0> </span><span class=cF2>//Zeal CosmiC Binary</span><span class=cF0>
<a name="l452"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CBinFile</span><span class=cF0>
<a name="l453"></a>{</span><span class=cF2>//</span><a href="https://zeal-operating-system.github.io/ZealOS/Compiler/CMain.CC.html#l628"><span class=cF4>Bin File Header Generation</span></a><span class=cF2> by compiler.</span><span class=cF0>
<a name="l454"></a> </span><span class=cF9>U16</span><span class=cF0> jmp;
<a name="l455"></a> </span><span class=cF1>U8</span><span class=cF0> module_align_bits,
<a name="l456"></a> reserved;
<a name="l457"></a> </span><span class=cF9>U32</span><span class=cF0> bin_signature;
<a name="l458"></a> </span><span class=cF9>I64</span><span class=cF0> org,
<a name="l459"></a> patch_table_offset, </span><span class=cF2>//</span><a href="https://zeal-operating-system.github.io/ZealOS/Compiler/CMain.CC.html#l525"><span class=cF4>Patch Table Generation</span></a><span class=cF0>
<a name="l460"></a> file_size;
<a name="l461"></a>};
<a name="l462"></a>
<a name="l463"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CPatchTableAbsAddr</span><span class=cF0>
<a name="l464"></a>{
<a name="l465"></a> </span><span class=cF1>U8</span><span class=cF0> eit_abs_addr; </span><span class=cF2>//</span><a href="https://zeal-operating-system.github.io/ZealOS/Kernel/KernelA.HH.html#l490"><span class=cF4>IET_ABS_ADDR</span></a><span class=cF0>
<a name="l466"></a> </span><span class=cF9>U32</span><span class=cF0> abs_addres_count;
<a name="l467"></a> </span><span class=cF1>U8</span><span class=cF0> zero;
<a name="l468"></a> </span><span class=cF9>U32</span><span class=cF0> abs_addres[</span><span class=cFE>1</span><span class=cF0>];
<a name="l469"></a>};
<a name="l470"></a>
<a name="l471"></a></span><span class=cF2>//</span><a href="https://zeal-operating-system.github.io/ZealOS/Kernel/KernelA.HH.html#l2104"><span class=cF4>CAOTImportExport</span></a><span class=cF2> Types. Used in PatchTable.</span><span class=cF0>
<a name="l472"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>IET_END</span><span class=cF0> </span><span class=cFE>0</span><span class=cF0>
<a name="l473"></a></span><span class=cF2>//reserved</span><span class=cF0>
<a name="l474"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>IET_REL_I0</span><span class=cF0> </span><span class=cFE>2</span><span class=cF0> </span><span class=cF2>//Fictitious</span><span class=cF0>
<a name="l475"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>IET_IMM_U0</span><span class=cF0> </span><span class=cFE>3</span><span class=cF0> </span><span class=cF2>//Fictitious</span><span class=cF0>
<a name="l476"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>IET_REL_I8</span><span class=cF0> </span><span class=cFE>4</span><span class=cF0>
<a name="l477"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>IET_IMM_U8</span><span class=cF0> </span><span class=cFE>5</span><span class=cF0>
<a name="l478"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>IET_REL_I16</span><span class=cF0> </span><span class=cFE>6</span><span class=cF0>
<a name="l479"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>IET_IMM_U16</span><span class=cF0> </span><span class=cFE>7</span><span class=cF0>
<a name="l480"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>IET_REL_I32</span><span class=cF0> </span><span class=cFE>8</span><span class=cF0>
<a name="l481"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>IET_IMM_U32</span><span class=cF0> </span><span class=cFE>9</span><span class=cF0>
<a name="l482"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>IET_REL_I64</span><span class=cF0> </span><span class=cFE>10</span><span class=cF0>
<a name="l483"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>IET_IMM_I64</span><span class=cF0> </span><span class=cFE>11</span><span class=cF0>
<a name="l484"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>IEF_IMM_NOT_REL</span><span class=cF0> </span><span class=cFE>1</span><span class=cF0>
<a name="l485"></a></span><span class=cF2>//reserved</span><span class=cF0>
<a name="l486"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>IET_REL32_EXPORT</span><span class=cF0> </span><span class=cFE>16</span><span class=cF0>
<a name="l487"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>IET_IMM32_EXPORT</span><span class=cF0> </span><span class=cFE>17</span><span class=cF0>
<a name="l488"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>IET_REL64_EXPORT</span><span class=cF0> </span><span class=cFE>18</span><span class=cF0> </span><span class=cF2>//Not implemented</span><span class=cF0>
<a name="l489"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>IET_IMM64_EXPORT</span><span class=cF0> </span><span class=cFE>19</span><span class=cF0> </span><span class=cF2>//Not implemented</span><span class=cF0>
<a name="l490"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>IET_ABS_ADDR</span><span class=cF0> </span><span class=cFE>20</span><span class=cF0>
<a name="l491"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>IET_CODE_HEAP</span><span class=cF0> </span><span class=cFE>21</span><span class=cF0> </span><span class=cF2>//Not really used</span><span class=cF0>
<a name="l492"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>IET_ZEROED_CODE_HEAP</span><span class=cF0> </span><span class=cFE>22</span><span class=cF0> </span><span class=cF2>//Not really used</span><span class=cF0>
<a name="l493"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>IET_DATA_HEAP</span><span class=cF0> </span><span class=cFE>23</span><span class=cF0>
<a name="l494"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>IET_ZEROED_DATA_HEAP</span><span class=cF0> </span><span class=cFE>24</span><span class=cF0> </span><span class=cF2>//Not really used</span><span class=cF0>
<a name="l495"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>IET_MAIN</span><span class=cF0> </span><span class=cFE>25</span><span class=cF0>
<a name="l496"></a>
<a name="l497"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>&quot;Graphics/VBE&quot;</span><span class=cF0>
<a name="l498"></a>
<a name="l499"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>BLACK32</span><span class=cF0> </span><span class=cFE>0x000000</span><span class=cF0>
<a name="l500"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>WHITE32</span><span class=cF0> </span><span class=cFE>0xFFFFFF</span><span class=cF0>
<a name="l501"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>VBE_MODES_NUM</span><span class=cF0> </span><span class=cFE>32</span><span class=cF0>
<a name="l502"></a>
<a name="l503"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CVBEInfo</span><span class=cF0>
<a name="l504"></a>{
<a name="l505"></a> </span><span class=cF1>U8</span><span class=cF0> signature[</span><span class=cFE>4</span><span class=cF0>];
<a name="l506"></a> </span><span class=cF9>U16</span><span class=cF0> version;
<a name="l507"></a> </span><span class=cF9>U32</span><span class=cF0> oem,
<a name="l508"></a> capabilities,
<a name="l509"></a> video_modes;
<a name="l510"></a> </span><span class=cF9>U16</span><span class=cF0> total_memory,
<a name="l511"></a> software_revision;
<a name="l512"></a> </span><span class=cF9>U32</span><span class=cF0> vendor,
<a name="l513"></a> product_name,
<a name="l514"></a> product_revision;
<a name="l515"></a> </span><span class=cF1>U8</span><span class=cF0> reserved[</span><span class=cFE>222</span><span class=cF0>],
<a name="l516"></a> oem_data[</span><span class=cFE>256</span><span class=cF0>];
<a name="l517"></a>};
<a name="l518"></a>#</span><span class=cF1>assert</span><span class=cF0> </span><span class=cF1>sizeof</span><span class=cF0>(</span><span class=cF9>CVBEInfo</span><span class=cF0>) == </span><span class=cFE>512</span><span class=cF0>
<a name="l519"></a>
<a name="l520"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CVBEMode</span><span class=cF0>
<a name="l521"></a>{
<a name="l522"></a> </span><span class=cF9>U16</span><span class=cF0> attributes,
<a name="l523"></a> pad[</span><span class=cFE>7</span><span class=cF0>],
<a name="l524"></a> pitch,
<a name="l525"></a> width,
<a name="l526"></a> height;
<a name="l527"></a> </span><span class=cF1>U8</span><span class=cF0> pad[</span><span class=cFE>3</span><span class=cF0>],
<a name="l528"></a> bpp,
<a name="l529"></a> pad,
<a name="l530"></a> memory_model,
<a name="l531"></a> pad[</span><span class=cFE>12</span><span class=cF0>];
<a name="l532"></a> </span><span class=cF9>U32</span><span class=cF0> framebuffer;
<a name="l533"></a> </span><span class=cF9>U16</span><span class=cF0> pad[</span><span class=cFE>9</span><span class=cF0>];
<a name="l534"></a> </span><span class=cF9>U32</span><span class=cF0> max_pixel_clock;
<a name="l535"></a> </span><span class=cF1>U8</span><span class=cF0> reserved[</span><span class=cFE>190</span><span class=cF0>];
<a name="l536"></a>};
<a name="l537"></a>#</span><span class=cF1>assert</span><span class=cF0> </span><span class=cF1>sizeof</span><span class=cF0>(</span><span class=cF9>CVBEMode</span><span class=cF0>) == </span><span class=cFE>256</span><span class=cF0>
<a name="l538"></a>
<a name="l539"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CVBEModeShort</span><span class=cF0>
<a name="l540"></a>{
<a name="l541"></a> </span><span class=cF9>U16</span><span class=cF0> width,
<a name="l542"></a> height,
<a name="l543"></a> mode_num;
<a name="l544"></a> </span><span class=cF9>U32</span><span class=cF0> max_pixel_clock; </span><span class=cF2>//TODO refresh rates.</span><span class=cF0>
<a name="l545"></a>};
<a name="l546"></a>
<a name="l547"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>&quot;Boot&quot;</span><span class=cF0>
<a name="l548"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CKernel</span><span class=cF0>
<a name="l549"></a>{</span><span class=cF2>//Must match </span><a href="https://zeal-operating-system.github.io/ZealOS/Kernel/KStart16.CC.html#l30"><span class=cF4>OSStartUp</span></a><span class=cF0>
<a name="l550"></a> </span><span class=cF9>CBinFile</span><span class=cF0> h;
<a name="l551"></a> </span><span class=cF9>U32</span><span class=cF0> jmp,
<a name="l552"></a> boot_src,
<a name="l553"></a> boot_blk,
<a name="l554"></a> boot_patch_table_base,
<a name="l555"></a> </span><span class=cFB>sys_run_level</span><span class=cF0>;
<a name="l556"></a> </span><span class=cF9>CDate</span><span class=cF0> compile_time;
<a name="l557"></a>
<a name="l558"></a> </span><span class=cF1>U0</span><span class=cF0> </span><span class=cF1>start</span><span class=cF0>;
<a name="l559"></a> </span><span class=cF9>U32</span><span class=cF0> boot_base;
<a name="l560"></a> </span><span class=cF9>U16</span><span class=cF0> mem_E801[</span><span class=cFE>2</span><span class=cF0>];
<a name="l561"></a> </span><span class=cF9>CMemE820</span><span class=cF0> mem_E820[</span><span class=cF3>MEM_E820_ENTRIES_NUM</span><span class=cF0>];
<a name="l562"></a> </span><span class=cF9>U64</span><span class=cF0> </span><span class=cFB>mem_physical_space</span><span class=cF0>;
<a name="l563"></a> </span><span class=cF9>CSysLimitBase</span><span class=cF0> sys_gdt_ptr;
<a name="l564"></a> </span><span class=cF9>U16</span><span class=cF0> </span><span class=cFB>sys_pci_buses</span><span class=cF0>;
<a name="l565"></a> ;$ = ($ + </span><span class=cFE>15</span><span class=cF0>) &amp; -</span><span class=cFE>16</span><span class=cF0>;
<a name="l566"></a> </span><span class=cF9>CGDT</span><span class=cF0> </span><span class=cFB>sys_gdt</span><span class=cF0>;
<a name="l567"></a> </span><span class=cF9>U32</span><span class=cF0> sys_font_ptr;
<a name="l568"></a> </span><span class=cF9>CVBEInfo</span><span class=cF0> </span><span class=cFB>sys_vbe_info</span><span class=cF0>;
<a name="l569"></a> </span><span class=cF9>CVBEModeShort</span><span class=cF0> </span><span class=cFB>sys_vbe_modes</span><span class=cF0>[</span><span class=cF3>VBE_MODES_NUM</span><span class=cF0>];
<a name="l570"></a> </span><span class=cF9>CVBEMode</span><span class=cF0> </span><span class=cFB>sys_vbe_mode</span><span class=cF0>;
<a name="l571"></a> </span><span class=cF9>U16</span><span class=cF0> </span><span class=cFB>sys_vbe_mode_num</span><span class=cF0>;
<a name="l572"></a>};
<a name="l573"></a>
<a name="l574"></a></span><span class=cF2>//Run-Levels</span><span class=cF0>
<a name="l575"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RLf_16BIT</span><span class=cF0> </span><span class=cFE>0</span><span class=cF0>
<a name="l576"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RLf_VESA</span><span class=cF0> </span><span class=cFE>1</span><span class=cF0>
<a name="l577"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RLf_32BIT</span><span class=cF0> </span><span class=cFE>2</span><span class=cF0>
<a name="l578"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RLf_PATCHED</span><span class=cF0> </span><span class=cFE>3</span><span class=cF0>
<a name="l579"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RLf_16MEG_SYS_CODE_BP</span><span class=cF0> </span><span class=cFE>4</span><span class=cF0>
<a name="l580"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RLf_64BIT</span><span class=cF0> </span><span class=cFE>5</span><span class=cF0>
<a name="l581"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RLf_16MEG_SYSTEM_HEAP_CTRL</span><span class=cF0> </span><span class=cFE>6</span><span class=cF0>
<a name="l582"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RLf_FULL_HEAPS</span><span class=cF0> </span><span class=cFE>7</span><span class=cF0>
<a name="l583"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RLf_RAW</span><span class=cF0> </span><span class=cFE>8</span><span class=cF0>
<a name="l584"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RLf_INTERRUPTS</span><span class=cF0> </span><span class=cFE>9</span><span class=cF0>
<a name="l585"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RLf_BLKDEV</span><span class=cF0> </span><span class=cFE>10</span><span class=cF0>
<a name="l586"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RLf_MP</span><span class=cF0> </span><span class=cFE>11</span><span class=cF0>
<a name="l587"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RLf_COMPILER</span><span class=cF0> </span><span class=cFE>12</span><span class=cF0>
<a name="l588"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RLf_DOC</span><span class=cF0> </span><span class=cFE>13</span><span class=cF0>
<a name="l589"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RLf_WINMGR</span><span class=cF0> </span><span class=cFE>14</span><span class=cF0>
<a name="l590"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RLf_REGISTRY</span><span class=cF0> </span><span class=cFE>15</span><span class=cF0>
<a name="l591"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RLf_HOME</span><span class=cF0> </span><span class=cFE>16</span><span class=cF0>
<a name="l592"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RLf_AUTOCOMPLETE</span><span class=cF0> </span><span class=cFE>17</span><span class=cF0>
<a name="l593"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RLf_SYSTEM_SERVER</span><span class=cF0> </span><span class=cFE>18</span><span class=cF0>
<a name="l594"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RLf_ONCE_SYSTEM</span><span class=cF0> </span><span class=cFE>19</span><span class=cF0>
<a name="l595"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RLf_ONCE_USER</span><span class=cF0> </span><span class=cFE>20</span><span class=cF0>
<a name="l596"></a>
<a name="l597"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RLF_16BIT</span><span class=cF0> (</span><span class=cFE>1</span><span class=cF0> &lt;&lt; </span><span class=cF3>RLf_16BIT</span><span class=cF0>)
<a name="l598"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RLF_VESA</span><span class=cF0> (</span><span class=cFE>1</span><span class=cF0> &lt;&lt; </span><span class=cF3>RLf_VESA</span><span class=cF0>)
<a name="l599"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RLF_32BIT</span><span class=cF0> (</span><span class=cFE>1</span><span class=cF0> &lt;&lt; </span><span class=cF3>RLf_32BIT</span><span class=cF0>)
<a name="l600"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RLF_PATCHED</span><span class=cF0> (</span><span class=cFE>1</span><span class=cF0> &lt;&lt; </span><span class=cF3>RLf_PATCHED</span><span class=cF0>)
<a name="l601"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RLF_16MEG_SYS_CODE_BP</span><span class=cF0> (</span><span class=cFE>1</span><span class=cF0> &lt;&lt; </span><span class=cF3>RLf_16MEG_SYS_CODE_BP</span><span class=cF0>)
<a name="l602"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RLF_64BIT</span><span class=cF0> (</span><span class=cFE>1</span><span class=cF0> &lt;&lt; </span><span class=cF3>RLf_64BIT</span><span class=cF0>)
<a name="l603"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RLF_16MEG_SYSTEM_HEAP_CTRL</span><span class=cF0> (</span><span class=cFE>1</span><span class=cF0> &lt;&lt; </span><span class=cF3>RLf_16MEG_SYSTEM_HEAP_CTRL</span><span class=cF0>)
<a name="l604"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RLF_FULL_HEAPS</span><span class=cF0> (</span><span class=cFE>1</span><span class=cF0> &lt;&lt; </span><span class=cF3>RLf_FULL_HEAPS</span><span class=cF0>)
<a name="l605"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RLF_RAW</span><span class=cF0> (</span><span class=cFE>1</span><span class=cF0> &lt;&lt; </span><span class=cF3>RLf_RAW</span><span class=cF0>)
<a name="l606"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RLF_INTERRUPTS</span><span class=cF0> (</span><span class=cFE>1</span><span class=cF0> &lt;&lt; </span><span class=cF3>RLf_INTERRUPTS</span><span class=cF0>)
<a name="l607"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RLF_BLKDEV</span><span class=cF0> (</span><span class=cFE>1</span><span class=cF0> &lt;&lt; </span><span class=cF3>RLf_BLKDEV</span><span class=cF0>)
<a name="l608"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RLF_MP</span><span class=cF0> (</span><span class=cFE>1</span><span class=cF0> &lt;&lt; </span><span class=cF3>RLf_MP</span><span class=cF0>)
<a name="l609"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RLF_COMPILER</span><span class=cF0> (</span><span class=cFE>1</span><span class=cF0> &lt;&lt; </span><span class=cF3>RLf_COMPILER</span><span class=cF0>)
<a name="l610"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RLF_DOC</span><span class=cF0> (</span><span class=cFE>1</span><span class=cF0> &lt;&lt; </span><span class=cF3>RLf_DOC</span><span class=cF0>)
<a name="l611"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RLF_WINMGR</span><span class=cF0> (</span><span class=cFE>1</span><span class=cF0> &lt;&lt; </span><span class=cF3>RLf_WINMGR</span><span class=cF0>)
<a name="l612"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RLF_REGISTRY</span><span class=cF0> (</span><span class=cFE>1</span><span class=cF0> &lt;&lt; </span><span class=cF3>RLf_REGISTRY</span><span class=cF0>)
<a name="l613"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RLF_HOME</span><span class=cF0> (</span><span class=cFE>1</span><span class=cF0> &lt;&lt; </span><span class=cF3>RLf_HOME</span><span class=cF0>)
<a name="l614"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RLF_AUTOCOMPLETE</span><span class=cF0> (</span><span class=cFE>1</span><span class=cF0> &lt;&lt; </span><span class=cF3>RLf_AUTOCOMPLETE</span><span class=cF0>)
<a name="l615"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RLF_SYSTEM_SERVER</span><span class=cF0> (</span><span class=cFE>1</span><span class=cF0> &lt;&lt; </span><span class=cF3>RLf_SYSTEM_SERVER</span><span class=cF0>)
<a name="l616"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RLF_ONCE_SYSTEM</span><span class=cF0> (</span><span class=cFE>1</span><span class=cF0> &lt;&lt; </span><span class=cF3>RLf_ONCE_SYSTEM</span><span class=cF0>)
<a name="l617"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RLF_ONCE_USER</span><span class=cF0> (</span><span class=cFE>1</span><span class=cF0> &lt;&lt; </span><span class=cF3>RLf_ONCE_USER</span><span class=cF0>)
<a name="l618"></a>
<a name="l619"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>&quot;Processor&quot;</span><span class=cF0>
<a name="l620"></a>
<a name="l621"></a></span><span class=cF2>//Model specific regs.</span><span class=cF0>
<a name="l622"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>IA32F_SCE</span><span class=cF0> </span><span class=cFE>0x001</span><span class=cF0>
<a name="l623"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>IA32F_LME</span><span class=cF0> </span><span class=cFE>0x100</span><span class=cF0>
<a name="l624"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>IA32_LAPIC_BASE</span><span class=cF0> </span><span class=cFE>0x01B</span><span class=cF0>
<a name="l625"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>IA32_EFER</span><span class=cF0> </span><span class=cFE>0xC0000080</span><span class=cF0>
<a name="l626"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>IA32_FS_BASE</span><span class=cF0> </span><span class=cFE>0xC0000100</span><span class=cF0>
<a name="l627"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>IA32_GS_BASE</span><span class=cF0> </span><span class=cFE>0xC0000101</span><span class=cF0>
<a name="l628"></a>
<a name="l629"></a></span><span class=cF2>//Programmable Interrupt Controller</span><span class=cF0>
<a name="l630"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>PIC_1</span><span class=cF0> </span><span class=cFE>0x20</span><span class=cF0>
<a name="l631"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>PIC_1_DATA</span><span class=cF0> </span><span class=cFE>0x21</span><span class=cF0>
<a name="l632"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>PIC_2</span><span class=cF0> </span><span class=cFE>0xA0</span><span class=cF0>
<a name="l633"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>PIC_2_DATA</span><span class=cF0> </span><span class=cFE>0xA1</span><span class=cF0>
<a name="l634"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>PIC_INIT</span><span class=cF0> </span><span class=cFE>0x11</span><span class=cF0>
<a name="l635"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>PIC_EOI</span><span class=cF0> </span><span class=cFE>0x20</span><span class=cF0> </span><span class=cF2>//End of interrupt</span><span class=cF0>
<a name="l636"></a>
<a name="l637"></a></span><span class=cF2>//Local Advanced Programmable Interrupt Controller</span><span class=cF0>
<a name="l638"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>LAPIC_BASE</span><span class=cF0> </span><span class=cFE>0xFEE00000</span><span class=cF0>
<a name="l639"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>LAPIC_APIC_ID</span><span class=cF0> (</span><span class=cF3>LAPIC_BASE</span><span class=cF0> + </span><span class=cFE>0x020</span><span class=cF0>)
<a name="l640"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>LAPIC_APIC_VERSION</span><span class=cF0> (</span><span class=cF3>LAPIC_BASE</span><span class=cF0> + </span><span class=cFE>0x030</span><span class=cF0>)
<a name="l641"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>LAPIC_TASK_PRIORITY</span><span class=cF0> (</span><span class=cF3>LAPIC_BASE</span><span class=cF0> + </span><span class=cFE>0x080</span><span class=cF0>)
<a name="l642"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>LAPIC_ARBITRATION_PRIORITY</span><span class=cF0> (</span><span class=cF3>LAPIC_BASE</span><span class=cF0> + </span><span class=cFE>0x090</span><span class=cF0>)
<a name="l643"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>LAPIC_PROCESSOR_PRIORITY</span><span class=cF0> (</span><span class=cF3>LAPIC_BASE</span><span class=cF0> + </span><span class=cFE>0x0A0</span><span class=cF0>)
<a name="l644"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>LAPIC_EOI</span><span class=cF0> (</span><span class=cF3>LAPIC_BASE</span><span class=cF0> + </span><span class=cFE>0x0B0</span><span class=cF0>)
<a name="l645"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>LAPIC_LOG_DST</span><span class=cF0> (</span><span class=cF3>LAPIC_BASE</span><span class=cF0> + </span><span class=cFE>0x0D0</span><span class=cF0>)
<a name="l646"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>LAPIC_DFR</span><span class=cF0> (</span><span class=cF3>LAPIC_BASE</span><span class=cF0> + </span><span class=cFE>0x0E0</span><span class=cF0>)
<a name="l647"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>LAPIC_LDR</span><span class=cF0> (</span><span class=cF3>LAPIC_BASE</span><span class=cF0> + </span><span class=cFE>0x0D0</span><span class=cF0>)
<a name="l648"></a>
<a name="l649"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>LAPICF_APIC_ENABLED</span><span class=cF0> </span><span class=cFE>0x100</span><span class=cF0>
<a name="l650"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>LAPIC_SVR</span><span class=cF0> (</span><span class=cF3>LAPIC_BASE</span><span class=cF0> + </span><span class=cFE>0x0F0</span><span class=cF0>)
<a name="l651"></a>
<a name="l652"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>LAPIC_ISR</span><span class=cF0> (</span><span class=cF3>LAPIC_BASE</span><span class=cF0> + </span><span class=cFE>0x100</span><span class=cF0>)
<a name="l653"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>LAPIC_TMR</span><span class=cF0> (</span><span class=cF3>LAPIC_BASE</span><span class=cF0> + </span><span class=cFE>0x180</span><span class=cF0>)
<a name="l654"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>LAPIC_IRR</span><span class=cF0> (</span><span class=cF3>LAPIC_BASE</span><span class=cF0> + </span><span class=cFE>0x200</span><span class=cF0>)
<a name="l655"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>LAPIC_ICR_LOW</span><span class=cF0> (</span><span class=cF3>LAPIC_BASE</span><span class=cF0> + </span><span class=cFE>0x300</span><span class=cF0>)
<a name="l656"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>LAPIC_ICR_HIGH</span><span class=cF0> (</span><span class=cF3>LAPIC_BASE</span><span class=cF0> + </span><span class=cFE>0x310</span><span class=cF0>)
<a name="l657"></a>
<a name="l658"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>LAPIC_LVT_TIMER</span><span class=cF0> (</span><span class=cF3>LAPIC_BASE</span><span class=cF0> + </span><span class=cFE>0x320</span><span class=cF0>)
<a name="l659"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>LAPIC_LVT_THERMAL</span><span class=cF0> (</span><span class=cF3>LAPIC_BASE</span><span class=cF0> + </span><span class=cFE>0x330</span><span class=cF0>)
<a name="l660"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>LAPIC_LVT_PERF</span><span class=cF0> (</span><span class=cF3>LAPIC_BASE</span><span class=cF0> + </span><span class=cFE>0x340</span><span class=cF0>)
<a name="l661"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>LAPIC_LVT_LINT0</span><span class=cF0> (</span><span class=cF3>LAPIC_BASE</span><span class=cF0> + </span><span class=cFE>0x350</span><span class=cF0>)
<a name="l662"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>LAPIC_LVT_LINT1</span><span class=cF0> (</span><span class=cF3>LAPIC_BASE</span><span class=cF0> + </span><span class=cFE>0x360</span><span class=cF0>)
<a name="l663"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>LAPIC_LVT_ERR</span><span class=cF0> (</span><span class=cF3>LAPIC_BASE</span><span class=cF0> + </span><span class=cFE>0x370</span><span class=cF0>)
<a name="l664"></a>
<a name="l665"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>MPN_VECT</span><span class=cF0> </span><span class=cFE>0x97</span><span class=cF0>
<a name="l666"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>MP_VECT_ADDR</span><span class=cF0> (</span><span class=cF3>MPN_VECT</span><span class=cF0> * </span><span class=cFE>0x1000</span><span class=cF0>)
<a name="l667"></a>
<a name="l668"></a></span><span class=cF2>//I/O APIC Memory mapped window</span><span class=cF0>
<a name="l669"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>IOAPIC_REG</span><span class=cF0> </span><span class=cFE>0xFEC00000</span><span class=cF0> </span><span class=cF2>//U8</span><span class=cF0>
<a name="l670"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>IOAPIC_DATA</span><span class=cF0> </span><span class=cFE>0xFEC00010</span><span class=cF0> </span><span class=cF2>//U32</span><span class=cF0>
<a name="l671"></a></span><span class=cF2>//I/O APIC Regs</span><span class=cF0>
<a name="l672"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>IOAPICID</span><span class=cF0> </span><span class=cFE>0x00</span><span class=cF0>
<a name="l673"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>IOAPICVER</span><span class=cF0> </span><span class=cFE>0x01</span><span class=cF0>
<a name="l674"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>IOAPICARB</span><span class=cF0> </span><span class=cFE>0x02</span><span class=cF0>
<a name="l675"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>IOREDTAB</span><span class=cF0> </span><span class=cFE>0x10</span><span class=cF0>
<a name="l676"></a>
<a name="l677"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CAP16BitInit</span><span class=cF0>
<a name="l678"></a>{</span><span class=cF2>//AP Multicore</span><span class=cF0>
<a name="l679"></a> </span><span class=cF9>U32</span><span class=cF0> jmp;
<a name="l680"></a> </span><span class=cF9>CSysLimitBase</span><span class=cF0> ap_gdt_ptr;
<a name="l681"></a>};
<a name="l682"></a>
<a name="l683"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>&quot;Time/PIT&quot;</span><span class=cF0>
<a name="l684"></a>#</span><span class=cF1>help_file</span><span class=cF0> </span><span class=cF6>&quot;::/Doc/PIT.DD&quot;</span><span class=cF0>
<a name="l685"></a></span><span class=cF2>//Programmable Interval Timer</span><span class=cF0>
<a name="l686"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>PIT_0</span><span class=cF0> </span><span class=cFE>0x40</span><span class=cF0>
<a name="l687"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>PIT_2</span><span class=cF0> </span><span class=cFE>0x42</span><span class=cF0>
<a name="l688"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>PIT_CMD</span><span class=cF0> </span><span class=cFE>0x43</span><span class=cF0>
<a name="l689"></a>
<a name="l690"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>PIT_CMDF_OPMODE_RATE_GEN</span><span class=cF0> </span><span class=cFE>0x04</span><span class=cF0>
<a name="l691"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>PIT_CMDF_OPMODE_SQUARE_WAVE</span><span class=cF0> </span><span class=cFE>0x06</span><span class=cF0>
<a name="l692"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>PIT_CMDF_ACCESS_WORD</span><span class=cF0> </span><span class=cFE>0x30</span><span class=cF0>
<a name="l693"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>PIT_CMDF_CHANNEL0</span><span class=cF0> </span><span class=cFE>0x00</span><span class=cF0>
<a name="l694"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>PIT_CMDF_CHANNEL2</span><span class=cF0> </span><span class=cFE>0x80</span><span class=cF0>
<a name="l695"></a>
<a name="l696"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CCountsGlobals</span><span class=cF0>
<a name="l697"></a>{
<a name="l698"></a> </span><span class=cF9>I64</span><span class=cF0> jiffies, </span><span class=cF2>//</span><a href="https://zeal-operating-system.github.io/ZealOS/Kernel/KernelA.HH.html#l706"><span class=cF4>JIFFY_FREQ</span></a><span class=cF0>
<a name="l699"></a> timer, </span><span class=cF2>//</span><a href="https://zeal-operating-system.github.io/ZealOS/Kernel/KernelA.HH.html#l708"><span class=cF4>SYS_TIMER_FREQ</span></a><span class=cF2>. Use </span><a href="https://zeal-operating-system.github.io/ZealOS/Kernel/KMisc.CC.html#l22"><span class=cF4>SysTimerRead</span></a><span class=cF2>().</span><span class=cF0>
<a name="l700"></a> time_stamp_freq,
<a name="l701"></a> time_stamp_kHz_freq,
<a name="l702"></a> time_stamp_freq_initial; </span><span class=cF2>//Initial freq, sampled once at boot time.</span><span class=cF0>
<a name="l703"></a> </span><span class=cF1>Bool</span><span class=cF0> time_stamp_calibrated;
<a name="l704"></a>};
<a name="l705"></a>
<a name="l706"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>JIFFY_FREQ</span><span class=cF0> </span><span class=cFE>1000</span><span class=cF0> </span><span class=cF2>// Hz</span><span class=cF0>
<a name="l707"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CDATE_FREQ</span><span class=cF0> </span><span class=cFE>49710</span><span class=cF0> </span><span class=cF2>// Hz</span><span class=cF0>
<a name="l708"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SYS_TIMER_FREQ</span><span class=cF0> (</span><span class=cFE>18333</span><span class=cF0> * </span><span class=cFE>65536</span><span class=cF0> / </span><span class=cFE>1000</span><span class=cF0>) </span><span class=cF2>//Hz</span><span class=cF0>
<a name="l709"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SYS_TIMER0_PERIOD</span><span class=cF0> (</span><span class=cFE>65536</span><span class=cF0> * </span><span class=cFE>182</span><span class=cF0> / </span><span class=cFE>10</span><span class=cF0> / </span><span class=cF3>JIFFY_FREQ</span><span class=cF0>)
<a name="l710"></a>
<a name="l711"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>&quot;Call&quot;</span><span class=cF0>
<a name="l712"></a></span><span class=cF2>//Function Stack Frame</span><span class=cF0>
<a name="l713"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SF_RBP</span><span class=cF0> </span><span class=cFE>0x00</span><span class=cF0>
<a name="l714"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SF_RIP</span><span class=cF0> </span><span class=cFE>0x08</span><span class=cF0>
<a name="l715"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SF_ARG1</span><span class=cF0> </span><span class=cFE>0x10</span><span class=cF0>
<a name="l716"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SF_ARG2</span><span class=cF0> </span><span class=cFE>0x18</span><span class=cF0>
<a name="l717"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SF_ARG3</span><span class=cF0> </span><span class=cFE>0x20</span><span class=cF0>
<a name="l718"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SF_ARG4</span><span class=cF0> </span><span class=cFE>0x28</span><span class=cF0>
<a name="l719"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SF_ARG5</span><span class=cF0> </span><span class=cFE>0x30</span><span class=cF0>
<a name="l720"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SF_ARG6</span><span class=cF0> </span><span class=cFE>0x38</span><span class=cF0>
<a name="l721"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SF_ARG7</span><span class=cF0> </span><span class=cFE>0x40</span><span class=cF0>
<a name="l722"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SF_ARG8</span><span class=cF0> </span><span class=cFE>0x48</span><span class=cF0>
<a name="l723"></a>
<a name="l724"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CRAXRBXRCXRDX</span><span class=cF0>
<a name="l725"></a>{
<a name="l726"></a> </span><span class=cF9>I64</span><span class=cF0> rax, rbx, rcx, rdx;
<a name="l727"></a>};
<a name="l728"></a>
<a name="l729"></a></span><span class=cF2>//Asm callable function pointers.</span><span class=cF0>
<a name="l730"></a></span><span class=cF2>//They work with </span><a href="https://zeal-operating-system.github.io/ZealOS/Kernel/KernelB.HH.html#l39"><span class=cF4>CallExtNum</span></a><span class=cF2>() when calling from CosmiC.</span><span class=cF0>
<a name="l731"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>EXT_WIN_TO_TOP</span><span class=cF0> </span><span class=cFE>0</span><span class=cF0>
<a name="l732"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>EXT_WIN_FOCUS</span><span class=cF0> </span><span class=cFE>1</span><span class=cF0>
<a name="l733"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>EXT_HEAPLOG_MALLOC</span><span class=cF0> </span><span class=cFE>2</span><span class=cF0>
<a name="l734"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>EXT_HEAPLOG_FREE</span><span class=cF0> </span><span class=cFE>3</span><span class=cF0>
<a name="l735"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>EXT_DEBUG_RESUME</span><span class=cF0> </span><span class=cFE>4</span><span class=cF0>
<a name="l736"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>EXT_EXTS_NUM</span><span class=cF0> </span><span class=cFE>5</span><span class=cF0>
<a name="l737"></a>
<a name="l738"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>&quot;Processor&quot;</span><span class=cF0>
<a name="l739"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DEFAULT_CACHE_LINE_WIDTH</span><span class=cF0> </span><span class=cFE>128</span><span class=cF0>
<a name="l740"></a>
<a name="l741"></a></span><span class=cF2>//Semaphores</span><span class=cF0>
<a name="l742"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CSema</span><span class=cF0>
<a name="l743"></a>{
<a name="l744"></a> </span><span class=cF1>Bool</span><span class=cF0> val, pad[</span><span class=cF3>DEFAULT_CACHE_LINE_WIDTH</span><span class=cF0> - </span><span class=cFE>1</span><span class=cF0>];
<a name="l745"></a>};
<a name="l746"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SEMA_DEBUG</span><span class=cF0> </span><span class=cFE>0</span><span class=cF0>
<a name="l747"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SEMA_RECORD_MACRO</span><span class=cF0> </span><span class=cFE>1</span><span class=cF0>
<a name="l748"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SEMA_SYS_TIMER</span><span class=cF0> </span><span class=cFE>2</span><span class=cF0>
<a name="l749"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SEMA_SYS_DATE</span><span class=cF0> </span><span class=cFE>3</span><span class=cF0>
<a name="l750"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SEMA_DEBUG_MODE</span><span class=cF0> </span><span class=cFE>4</span><span class=cF0>
<a name="l751"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SEMA_SOUND</span><span class=cF0> </span><span class=cFE>5</span><span class=cF0>
<a name="l752"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SEMA_HEAPLOG_ACTIVE</span><span class=cF0> </span><span class=cFE>6</span><span class=cF0>
<a name="l753"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SEMA_HEAPLOG_LOCK</span><span class=cF0> </span><span class=cFE>7</span><span class=cF0>
<a name="l754"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SEMA_REFRESH_IN_PROGRESS</span><span class=cF0> </span><span class=cFE>8</span><span class=cF0>
<a name="l755"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SEMA_FLUSH_VBE_IMAGE</span><span class=cF0> </span><span class=cFE>9</span><span class=cF0>
<a name="l756"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SEMA_SINGLE_USER</span><span class=cF0> </span><span class=cFE>10</span><span class=cF0>
<a name="l757"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SEMA_DISK_CACHE</span><span class=cF0> </span><span class=cFE>11</span><span class=cF0>
<a name="l758"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SEMA_FAR_CALL32</span><span class=cF0> </span><span class=cFE>12</span><span class=cF0>
<a name="l759"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SEMA_DEV_MEM</span><span class=cF0> </span><span class=cFE>13</span><span class=cF0>
<a name="l760"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SEMA_VGA</span><span class=cF0> </span><span class=cFE>14</span><span class=cF0>
<a name="l761"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SEMA_UPDATE_WIN_Z_BUF</span><span class=cF0> </span><span class=cFE>15</span><span class=cF0>
<a name="l762"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SEMA_TT</span><span class=cF0> </span><span class=cFE>16</span><span class=cF0>
<a name="l763"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SEMA_MUTE</span><span class=cF0> </span><span class=cFE>17</span><span class=cF0>
<a name="l764"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SEMA_JUST_PUMP_MESSAGES</span><span class=cF0> </span><span class=cFE>18</span><span class=cF0>
<a name="l765"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SEMA_TMBEAT</span><span class=cF0> </span><span class=cFE>19</span><span class=cF0>
<a name="l766"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SEMA_FIX</span><span class=cF0> </span><span class=cFE>20</span><span class=cF0>
<a name="l767"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SEMA_SEMAS_NUM</span><span class=cF0> </span><span class=cFE>21</span><span class=cF0>
<a name="l768"></a>
<a name="l769"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CTRL_ALT_DEL</span><span class=cF0> </span><span class=cFE>0</span><span class=cF0>
<a name="l770"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CTRL_ALT_C</span><span class=cF0> </span><span class=cFE>1</span><span class=cF0>
<a name="l771"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CTRL_ALT_X</span><span class=cF0> </span><span class=cFE>2</span><span class=cF0>
<a name="l772"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CTRL_ALT_TAB</span><span class=cF0> </span><span class=cFE>3</span><span class=cF0>
<a name="l773"></a>
<a name="l774"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>&quot;Hash&quot;</span><span class=cF0>
<a name="l775"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CHash</span><span class=cF0>
<a name="l776"></a>{</span><span class=cF2>//See </span><span class=cF4><u>Hash</span><span class=cF0>
<a name="l777"></a></u> </span><span class=cF9>CHash</span><span class=cF0> *next;
<a name="l778"></a> </span><span class=cF1>U8</span><span class=cF0> *str;
<a name="l779"></a> </span><span class=cF9>U32</span><span class=cF0> type,
<a name="l780"></a> use_count; </span><span class=cF2>// inc'ed every time search found, never dec'ed.</span><span class=cF0>
<a name="l781"></a>};
<a name="l782"></a>
<a name="l783"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CHashTable</span><span class=cF0>
<a name="l784"></a>{
<a name="l785"></a> </span><span class=cF9>CHashTable</span><span class=cF0> *next;
<a name="l786"></a> </span><span class=cF9>I64</span><span class=cF0> mask, locked_flags;
<a name="l787"></a> </span><span class=cF9>CHash</span><span class=cF0> **body;
<a name="l788"></a>};
<a name="l789"></a>
<a name="l790"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>&quot;Hash/System&quot;</span><span class=cF0>
<a name="l791"></a></span><span class=cF2>//Hash table types: </span><a href="https://zeal-operating-system.github.io/ZealOS/Kernel/KDefine.CC.html#l121"><span class=cF4>ST_HTT_TYPES</span></a><span class=cF0>
<a name="l792"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>HTt_EXPORT_SYS_SYM</span><span class=cF0> </span><span class=cFE>0</span><span class=cF0>
<a name="l793"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>HTt_IMPORT_SYS_SYM</span><span class=cF0> </span><span class=cFE>1</span><span class=cF0>
<a name="l794"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>HTt_DEFINE_STR</span><span class=cF0> </span><span class=cFE>2</span><span class=cF0>
<a name="l795"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>HTt_GLOBAL_VAR</span><span class=cF0> </span><span class=cFE>3</span><span class=cF0>
<a name="l796"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>HTt_CLASS</span><span class=cF0> </span><span class=cFE>4</span><span class=cF0>
<a name="l797"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>HTt_INTERNAL_TYPE</span><span class=cF0> </span><span class=cFE>5</span><span class=cF0>
<a name="l798"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>HTt_FUN</span><span class=cF0> </span><span class=cFE>6</span><span class=cF0>
<a name="l799"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>HTt_WORD</span><span class=cF0> </span><span class=cFE>7</span><span class=cF0>
<a name="l800"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>HTt_DICT_WORD</span><span class=cF0> </span><span class=cFE>8</span><span class=cF0>
<a name="l801"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>HTt_KEYWORD</span><span class=cF0> </span><span class=cFE>9</span><span class=cF0>
<a name="l802"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>HTt_ASM_KEYWORD</span><span class=cF0> </span><span class=cFE>10</span><span class=cF0>
<a name="l803"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>HTt_OPCODE</span><span class=cF0> </span><span class=cFE>11</span><span class=cF0>
<a name="l804"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>HTt_REG</span><span class=cF0> </span><span class=cFE>12</span><span class=cF0>
<a name="l805"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>HTt_FILE</span><span class=cF0> </span><span class=cFE>13</span><span class=cF0>
<a name="l806"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>HTt_MODULE</span><span class=cF0> </span><span class=cFE>14</span><span class=cF0>
<a name="l807"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>HTt_HELP_FILE</span><span class=cF0> </span><span class=cFE>15</span><span class=cF0>
<a name="l808"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>HTt_FRAME_PTR</span><span class=cF0> </span><span class=cFE>16</span><span class=cF0>
<a name="l809"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>HTt_TYPES_NUM</span><span class=cF0> </span><span class=cFE>17</span><span class=cF0>
<a name="l810"></a>
<a name="l811"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>HTf_PRIVATE</span><span class=cF0> </span><span class=cFE>23</span><span class=cF0>
<a name="l812"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>HTf_PUBLIC</span><span class=cF0> </span><span class=cFE>24</span><span class=cF0>
<a name="l813"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>HTf_EXPORT</span><span class=cF0> </span><span class=cFE>25</span><span class=cF0>
<a name="l814"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>HTf_IMPORT</span><span class=cF0> </span><span class=cFE>26</span><span class=cF0>
<a name="l815"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>HTf_IMM</span><span class=cF0> </span><span class=cFE>27</span><span class=cF0>
<a name="l816"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>HTf_GOTO_LABEL</span><span class=cF0> </span><span class=cFE>28</span><span class=cF0>
<a name="l817"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>HTf_RESOLVED</span><span class=cF0> </span><span class=cFE>29</span><span class=cF0>
<a name="l818"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>HTf_UNRESOLVED</span><span class=cF0> </span><span class=cFE>30</span><span class=cF0>
<a name="l819"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>HTf_LOCAL</span><span class=cF0> </span><span class=cFE>31</span><span class=cF0>
<a name="l820"></a>
<a name="l821"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>HTT_INVALID</span><span class=cF0> </span><span class=cFE>0</span><span class=cF0>
<a name="l822"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>HTT_EXPORT_SYS_SYM</span><span class=cF0> </span><span class=cFE>0x00001</span><span class=cF0> </span><span class=cF2>//CHashExport</span><span class=cF0>
<a name="l823"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>HTT_IMPORT_SYS_SYM</span><span class=cF0> </span><span class=cFE>0x00002</span><span class=cF0> </span><span class=cF2>//CHashImport</span><span class=cF0>
<a name="l824"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>HTT_DEFINE_STR</span><span class=cF0> </span><span class=cFE>0x00004</span><span class=cF0> </span><span class=cF2>//CHashDefineStr</span><span class=cF0>
<a name="l825"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>HTT_GLOBAL_VAR</span><span class=cF0> </span><span class=cFE>0x00008</span><span class=cF0> </span><span class=cF2>//CHashGlobalVar</span><span class=cF0>
<a name="l826"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>HTT_CLASS</span><span class=cF0> </span><span class=cFE>0x00010</span><span class=cF0> </span><span class=cF2>//CHashClass</span><span class=cF0>
<a name="l827"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>HTT_INTERNAL_TYPE</span><span class=cF0> </span><span class=cFE>0x00020</span><span class=cF0> </span><span class=cF2>//CHashClass</span><span class=cF0>
<a name="l828"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>HTT_FUN</span><span class=cF0> </span><span class=cFE>0x00040</span><span class=cF0> </span><span class=cF2>//CHashFun</span><span class=cF0>
<a name="l829"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>HTT_WORD</span><span class=cF0> </span><span class=cFE>0x00080</span><span class=cF0> </span><span class=cF2>//CHashAC only in AutoComplete table</span><span class=cF0>
<a name="l830"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>HTT_DICT_WORD</span><span class=cF0> </span><span class=cFE>0x00100</span><span class=cF0> </span><span class=cF2>//CHashGeneric only in AutoComplete tbl</span><span class=cF0>
<a name="l831"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>HTT_KEYWORD</span><span class=cF0> </span><span class=cFE>0x00200</span><span class=cF0> </span><span class=cF2>//CHashGeneric </span><a href="https://zeal-operating-system.github.io/ZealOS/Compiler/OpCodes.DD.html#l147"><span class=cF4>KEYWORD</span></a><span class=cF0>
<a name="l832"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>HTT_ASM_KEYWORD</span><span class=cF0> </span><span class=cFE>0x00400</span><span class=cF0> </span><span class=cF2>//CHashGeneric </span><a href="https://zeal-operating-system.github.io/ZealOS/Compiler/OpCodes.DD.html#l196"><span class=cF4>ASM_KEYWORD</span></a><span class=cF0>
<a name="l833"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>HTT_OPCODE</span><span class=cF0> </span><span class=cFE>0x00800</span><span class=cF0> </span><span class=cF2>//CHashOpcode</span><span class=cF0>
<a name="l834"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>HTT_REG</span><span class=cF0> </span><span class=cFE>0x01000</span><span class=cF0> </span><span class=cF2>//CHashReg</span><span class=cF0>
<a name="l835"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>HTT_FILE</span><span class=cF0> </span><span class=cFE>0x02000</span><span class=cF0> </span><span class=cF2>//CHashGeneric</span><span class=cF0>
<a name="l836"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>HTT_MODULE</span><span class=cF0> </span><span class=cFE>0x04000</span><span class=cF0> </span><span class=cF2>//CHashGeneric</span><span class=cF0>
<a name="l837"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>HTT_HELP_FILE</span><span class=cF0> </span><span class=cFE>0x08000</span><span class=cF0> </span><span class=cF2>//CHashSrcSym</span><span class=cF0>
<a name="l838"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>HTT_FRAME_PTR</span><span class=cF0> </span><span class=cFE>0x10000</span><span class=cF0> </span><span class=cF2>//CHashGeneric</span><span class=cF0>
<a name="l839"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>HTG_TYPE_MASK</span><span class=cF0> </span><span class=cFE>0x1FFFF</span><span class=cF0>
<a name="l840"></a>
<a name="l841"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>HTF_PRIVATE</span><span class=cF0> </span><span class=cFE>0x00800000</span><span class=cF0>
<a name="l842"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>HTF_PUBLIC</span><span class=cF0> </span><span class=cFE>0x01000000</span><span class=cF0>
<a name="l843"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>HTF_EXPORT</span><span class=cF0> </span><span class=cFE>0x02000000</span><span class=cF0>
<a name="l844"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>HTF_IMPORT</span><span class=cF0> </span><span class=cFE>0x04000000</span><span class=cF0>
<a name="l845"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>HTF_IMM</span><span class=cF0> </span><span class=cFE>0x08000000</span><span class=cF0>
<a name="l846"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>HTF_GOTO_LABEL</span><span class=cF0> </span><span class=cFE>0x10000000</span><span class=cF0>
<a name="l847"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>HTF_RESOLVE</span><span class=cF0> </span><span class=cFE>0x20000000</span><span class=cF0>
<a name="l848"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>HTF_UNRESOLVED</span><span class=cF0> </span><span class=cFE>0x40000000</span><span class=cF0>
<a name="l849"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>HTF_LOCAL</span><span class=cF0> </span><span class=cFE>0x80000000</span><span class=cF0>
<a name="l850"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>HTG_FLAGS_MASK</span><span class=cF0> </span><span class=cFE>0xFF000000</span><span class=cF0>
<a name="l851"></a>
<a name="l852"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>HTG_SRC_SYM</span><span class=cF0> (</span><span class=cF3>HTT_DEFINE_STR</span><span class=cF0> | </span><span class=cF3>HTT_GLOBAL_VAR</span><span class=cF0> | </span><span class=cF3>HTT_FUN</span><span class=cF0> | </span><span class=cF3>HTT_CLASS</span><span class=cF0> | </span><span class=cF3>HTT_EXPORT_SYS_SYM</span><span class=cF0> | </span><span class=cF3>HTT_HELP_FILE</span><span class=cF0>)
<a name="l853"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>HTG_ALL</span><span class=cF0> -</span><span class=cFE>1</span><span class=cF0>
<a name="l854"></a>
<a name="l855"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>KERNEL_MODULE_NAME</span><span class=cF0> </span><span class=cF6>&quot;/Kernel/Kernel&quot;</span><span class=cF0>
<a name="l856"></a>
<a name="l857"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CDebugInfo</span><span class=cF0>
<a name="l858"></a>{
<a name="l859"></a> </span><span class=cF9>U32</span><span class=cF0> min_line, max_line;
<a name="l860"></a> </span><span class=cF9>U32</span><span class=cF0> body[</span><span class=cFE>1</span><span class=cF0>]; </span><span class=cF2>//Code heap is 32-bit value</span><span class=cF0>
<a name="l861"></a>};
<a name="l862"></a>
<a name="l863"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CHashSrcSym</span><span class=cF0>:</span><span class=cF9>CHash</span><span class=cF0>
<a name="l864"></a>{
<a name="l865"></a> </span><span class=cF1>U8</span><span class=cF0> *src_link,
<a name="l866"></a> *idx;
<a name="l867"></a> </span><span class=cF9>CDebugInfo</span><span class=cF0> *debug_info;
<a name="l868"></a> </span><span class=cF1>U8</span><span class=cF0> *import_name;
<a name="l869"></a> </span><span class=cF9>CAOTImportExport</span><span class=cF0> *ie_list;
<a name="l870"></a>};
<a name="l871"></a>
<a name="l872"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CHashGeneric</span><span class=cF0>:</span><span class=cF9>CHash</span><span class=cF0>
<a name="l873"></a>{
<a name="l874"></a> </span><span class=cF9>I64</span><span class=cF0> user_data0, user_data1, user_data2;
<a name="l875"></a>};
<a name="l876"></a>
<a name="l877"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>REGT_NONE</span><span class=cF0> </span><span class=cFE>0</span><span class=cF0>
<a name="l878"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>REGT_R8</span><span class=cF0> </span><span class=cFE>1</span><span class=cF0>
<a name="l879"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>REGT_R16</span><span class=cF0> </span><span class=cFE>2</span><span class=cF0>
<a name="l880"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>REGT_R32</span><span class=cF0> </span><span class=cFE>3</span><span class=cF0>
<a name="l881"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>REGT_R64</span><span class=cF0> </span><span class=cFE>4</span><span class=cF0>
<a name="l882"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>REGT_SEG</span><span class=cF0> </span><span class=cFE>5</span><span class=cF0>
<a name="l883"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>REGT_FSTACK</span><span class=cF0> </span><span class=cFE>6</span><span class=cF0>
<a name="l884"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>REGT_MM</span><span class=cF0> </span><span class=cFE>7</span><span class=cF0>
<a name="l885"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>REGT_XMM</span><span class=cF0> </span><span class=cFE>8</span><span class=cF0>
<a name="l886"></a>
<a name="l887"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CHashReg</span><span class=cF0>:</span><span class=cF9>CHash</span><span class=cF0>
<a name="l888"></a>{
<a name="l889"></a> </span><span class=cF1>U8</span><span class=cF0> reg_num, reg_type;
<a name="l890"></a>};
<a name="l891"></a>
<a name="l892"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CHashAC</span><span class=cF0>:</span><span class=cF9>CHash</span><span class=cF0>
<a name="l893"></a>{
<a name="l894"></a> </span><span class=cF9>I32</span><span class=cF0> num;
<a name="l895"></a> </span><span class=cF9>U32</span><span class=cF0> hits;
<a name="l896"></a>};
<a name="l897"></a>
<a name="l898"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CHashExport</span><span class=cF0>:</span><span class=cF9>CHashSrcSym</span><span class=cF0>
<a name="l899"></a>{
<a name="l900"></a> </span><span class=cF9>I64</span><span class=cF0> val;
<a name="l901"></a>};
<a name="l902"></a>
<a name="l903"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CHashImport</span><span class=cF0>:</span><span class=cF9>CHashSrcSym</span><span class=cF0>
<a name="l904"></a>{
<a name="l905"></a> </span><span class=cF1>U8</span><span class=cF0> *module_base,
<a name="l906"></a> *module_header_entry;
<a name="l907"></a>};
<a name="l908"></a>
<a name="l909"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>&quot;Compiler/Internal&quot;</span><span class=cF0>
<a name="l910"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>PTR_STARS_NUM</span><span class=cF0> </span><span class=cFE>4</span><span class=cF0>
<a name="l911"></a>
<a name="l912"></a></span><span class=cF2>//Member List Flags</span><span class=cF0>
<a name="l913"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>MLF_DEFAULT_AVAILABLE</span><span class=cF0> </span><span class=cFE>1</span><span class=cF0>
<a name="l914"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>MLF_LASTCLASS</span><span class=cF0> </span><span class=cFE>2</span><span class=cF0>
<a name="l915"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>MLF_STR_DEFAULT_AVAILABLE</span><span class=cF0> </span><span class=cFE>4</span><span class=cF0>
<a name="l916"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>MLF_FUN</span><span class=cF0> </span><span class=cFE>8</span><span class=cF0>
<a name="l917"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>MLF_DOT_DOT_DOT</span><span class=cF0> </span><span class=cFE>16</span><span class=cF0>
<a name="l918"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>MLF_NO_UNUSED_WARN</span><span class=cF0> </span><span class=cFE>32</span><span class=cF0>
<a name="l919"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>MLF_STATIC</span><span class=cF0> </span><span class=cFE>64</span><span class=cF0>
<a name="l920"></a>
<a name="l921"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CArrayDim</span><span class=cF0>
<a name="l922"></a>{
<a name="l923"></a> </span><span class=cF9>CArrayDim</span><span class=cF0> *next;
<a name="l924"></a> </span><span class=cF9>I64</span><span class=cF0> count, total_count;
<a name="l925"></a>};
<a name="l926"></a>
<a name="l927"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>MLMF_IS_STR</span><span class=cF0> </span><span class=cFE>1</span><span class=cF0>
<a name="l928"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CMemberListMeta</span><span class=cF0>
<a name="l929"></a>{
<a name="l930"></a> </span><span class=cF9>CMemberListMeta</span><span class=cF0> *next;
<a name="l931"></a> </span><span class=cF1>U8</span><span class=cF0> *str;
<a name="l932"></a> </span><span class=cF9>I64</span><span class=cF0> flags,
<a name="l933"></a> user_data;
<a name="l934"></a>};
<a name="l935"></a>
<a name="l936"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CMemberList</span><span class=cF0>
<a name="l937"></a>{
<a name="l938"></a> </span><span class=cF9>CMemberList</span><span class=cF0> *next, *left, *right,
<a name="l939"></a> *left_class_base, *right_class_base; </span><span class=cF2>//For finding dup class local vars.</span><span class=cF0>
<a name="l940"></a> </span><span class=cF1>U8</span><span class=cF0> *str;
<a name="l941"></a> </span><span class=cF9>CHashClass</span><span class=cF0> *member_class, *member_class_base;
<a name="l942"></a> </span><span class=cF9>CMemberListMeta</span><span class=cF0> *meta;
<a name="l943"></a> </span><span class=cF9>U32</span><span class=cF0> use_count;
<a name="l944"></a> </span><span class=cF9>U16</span><span class=cF0> flags;
<a name="l945"></a> </span><span class=cF1>I8</span><span class=cF0> </span><span class=cF1>reg</span><span class=cF0>, pad;
<a name="l946"></a> </span><span class=cF9>I64</span><span class=cF0> </span><span class=cF1>offset</span><span class=cF0>, size;
<a name="l947"></a> </span><span class=cF9>CArrayDim</span><span class=cF0> dim;
<a name="l948"></a> </span><span class=cF1>U8</span><span class=cF0> *static_data;
<a name="l949"></a> </span><span class=cF1>union</span><span class=cF0>
<a name="l950"></a> </span><span class=cF7>{</span><span class=cF0>
<a name="l951"></a> </span><span class=cF9>I64</span><span class=cF0> static_data_rip;
<a name="l952"></a> </span><span class=cF9>I64</span><span class=cF0> default_val;
<a name="l953"></a> </span><span class=cF7>}</span><span class=cF0>
<a name="l954"></a> </span><span class=cF9>CHashFun</span><span class=cF0> *fun_ptr;
<a name="l955"></a>};
<a name="l956"></a>
<a name="l957"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CExternUsage</span><span class=cF0>
<a name="l958"></a>{
<a name="l959"></a> </span><span class=cF9>CExternUsage</span><span class=cF0> *next;
<a name="l960"></a> </span><span class=cF9>I64</span><span class=cF0> rip;
<a name="l961"></a>};
<a name="l962"></a>
<a name="l963"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>&quot;Hash/System;Compiler/Internal&quot;</span><span class=cF0>
<a name="l964"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CHashDefineStr</span><span class=cF0>:</span><span class=cF9>CHashSrcSym</span><span class=cF0>
<a name="l965"></a>{
<a name="l966"></a> </span><span class=cF1>U8</span><span class=cF0> *data, **sub_idx;
<a name="l967"></a> </span><span class=cF9>I64</span><span class=cF0> count;
<a name="l968"></a>};
<a name="l969"></a>
<a name="l970"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>Cf_EXTERN</span><span class=cF0> </span><span class=cFE>0</span><span class=cF0>
<a name="l971"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>Cf_INTERNAL_TYPE</span><span class=cF0> </span><span class=cFE>1</span><span class=cF0>
<a name="l972"></a>
<a name="l973"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CHashClass</span><span class=cF0>:</span><span class=cF9>CHashSrcSym</span><span class=cF0>
<a name="l974"></a>{</span><span class=cF2>//See </span><a href="https://zeal-operating-system.github.io/ZealOS/Compiler/ParseLib.CC.html#l43"><span class=cF4>ParseClassNew</span></a><span class=cF2>(). base_class of </span><a href="https://zeal-operating-system.github.io/ZealOS/Kernel/KernelA.HH.html#l996"><span class=cF4>CHashFun</span></a><span class=cF0>
<a name="l975"></a> </span><span class=cF9>I64</span><span class=cF0> size, neg_offset;
<a name="l976"></a> </span><span class=cF9>U32</span><span class=cF0> member_count;
<a name="l977"></a> </span><span class=cF1>U8</span><span class=cF0> ptr_stars_count, raw_type;
<a name="l978"></a> </span><span class=cF9>U16</span><span class=cF0> flags;
<a name="l979"></a> </span><span class=cF9>CMemberList</span><span class=cF0> *member_list_and_root, </span><span class=cF2>//Head of linked list and head of tree.</span><span class=cF0>
<a name="l980"></a> *member_class_base_root, </span><span class=cF2>//For finding dup class local vars.</span><span class=cF0>
<a name="l981"></a> *last_in_member_list;
<a name="l982"></a> </span><span class=cF9>CHashClass</span><span class=cF0> *base_class,
<a name="l983"></a> *fwd_class;
<a name="l984"></a>};
<a name="l985"></a>
<a name="l986"></a></span><span class=cF2>//Function flags</span><span class=cF0>
<a name="l987"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>Ff_INTERRUPT</span><span class=cF0> </span><span class=cFE>8</span><span class=cF0>
<a name="l988"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>Ff_HASERRCODE</span><span class=cF0> </span><span class=cFE>9</span><span class=cF0>
<a name="l989"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>Ff_ARGPOP</span><span class=cF0> </span><span class=cFE>10</span><span class=cF0>
<a name="l990"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>Ff_NOARGPOP</span><span class=cF0> </span><span class=cFE>11</span><span class=cF0>
<a name="l991"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>Ff_INTERNAL</span><span class=cF0> </span><span class=cFE>12</span><span class=cF0>
<a name="l992"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>Ff__EXTERN</span><span class=cF0> </span><span class=cFE>13</span><span class=cF0>
<a name="l993"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>Ff_DOT_DOT_DOT</span><span class=cF0> </span><span class=cFE>14</span><span class=cF0>
<a name="l994"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>Ff_RET1</span><span class=cF0> </span><span class=cFE>15</span><span class=cF0>
<a name="l995"></a>
<a name="l996"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CHashFun</span><span class=cF0>:</span><span class=cF9>CHashClass</span><span class=cF0>
<a name="l997"></a>{</span><span class=cF2>//See </span><a href="https://zeal-operating-system.github.io/ZealOS/Compiler/ParseLib.CC.html#l67"><span class=cF4>ParseFunNew</span></a><span class=cF2>().</span><span class=cF0>
<a name="l998"></a> </span><span class=cF9>CHashClass</span><span class=cF0> *return_class;
<a name="l999"></a> </span><span class=cF9>U32</span><span class=cF0> arg_count, pad,
<a name="l1000"></a> used_reg_mask, clobbered_reg_mask;
<a name="l1001"></a> </span><span class=cF1>U8</span><span class=cF0> *exe_addr;
<a name="l1002"></a> </span><span class=cF9>CExternUsage</span><span class=cF0> *ext_list;
<a name="l1003"></a>};
<a name="l1004"></a>
<a name="l1005"></a></span><span class=cF2>//Global Var Flags</span><span class=cF0>
<a name="l1006"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>GVF_FUN</span><span class=cF0> </span><span class=cFE>1</span><span class=cF0>
<a name="l1007"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>GVF_IMPORT</span><span class=cF0> </span><span class=cFE>2</span><span class=cF0>
<a name="l1008"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>GVF_EXTERN</span><span class=cF0> </span><span class=cFE>4</span><span class=cF0>
<a name="l1009"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>GVF_DATA_HEAP</span><span class=cF0> </span><span class=cFE>8</span><span class=cF0>
<a name="l1010"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>GVF_ALIAS</span><span class=cF0> </span><span class=cFE>16</span><span class=cF0>
<a name="l1011"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>GVF_ARRAY</span><span class=cF0> </span><span class=cFE>32</span><span class=cF0>
<a name="l1012"></a>
<a name="l1013"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CHashGlobalVar</span><span class=cF0>:</span><span class=cF9>CHashSrcSym</span><span class=cF0>
<a name="l1014"></a>{
<a name="l1015"></a> </span><span class=cF9>I64</span><span class=cF0> size, flags;
<a name="l1016"></a> </span><span class=cF9>CHashClass</span><span class=cF0> *var_class;
<a name="l1017"></a> </span><span class=cF9>CHashFun</span><span class=cF0> *fun_ptr;
<a name="l1018"></a> </span><span class=cF9>CArrayDim</span><span class=cF0> dim;
<a name="l1019"></a> </span><span class=cF1>U8</span><span class=cF0> *data_addr;
<a name="l1020"></a> </span><span class=cF1>union</span><span class=cF0>
<a name="l1021"></a> </span><span class=cF7>{</span><span class=cF0>
<a name="l1022"></a> </span><span class=cF9>I64</span><span class=cF0> data_addr_rip;
<a name="l1023"></a> </span><span class=cF9>CAOTHeapGlobal</span><span class=cF0> *heap_global;
<a name="l1024"></a> </span><span class=cF7>}</span><span class=cF0>
<a name="l1025"></a>};
<a name="l1026"></a>#</span><span class=cF1>assert</span><span class=cF0> </span><span class=cF1>offset</span><span class=cF0>(</span><span class=cF9>CHashClass</span><span class=cF0>.size) == </span><span class=cF1>offset</span><span class=cF0>(</span><span class=cF9>CHashGlobalVar</span><span class=cF0>.size)
<a name="l1027"></a>
<a name="l1028"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>&quot;DolDoc&quot;</span><span class=cF0>
<a name="l1029"></a></span><span class=cF2>//See </span><span class=cF4><u>TextBase Layer</u></span><span class=cF2>.</span><span class=cF0>
<a name="l1030"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ATTRF_BLINK</span><span class=cF0> </span><span class=cFE>0x10000000</span><span class=cF0>
<a name="l1031"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ATTRF_INVERT</span><span class=cF0> </span><span class=cFE>0x20000000</span><span class=cF0>
<a name="l1032"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ATTRF_SEL</span><span class=cF0> </span><span class=cFE>0x40000000</span><span class=cF0>
<a name="l1033"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ATTRF_UNDERLINE</span><span class=cF0> </span><span class=cFE>0x80000000</span><span class=cF0>
<a name="l1034"></a>
<a name="l1035"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ATTRf_BLINK</span><span class=cF0> </span><span class=cFE>28</span><span class=cF0>
<a name="l1036"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ATTRf_INVERT</span><span class=cF0> </span><span class=cFE>29</span><span class=cF0>
<a name="l1037"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ATTRf_SEL</span><span class=cF0> </span><span class=cFE>30</span><span class=cF0>
<a name="l1038"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ATTRf_UNDERLINE</span><span class=cF0> </span><span class=cFE>31</span><span class=cF0>
<a name="l1039"></a>
<a name="l1040"></a></span><span class=cF2>//CDocEntry.type codes (Low 8 bits)</span><span class=cF0>
<a name="l1041"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCT_TEXT</span><span class=cF0> </span><span class=cFE>0</span><span class=cF0>
<a name="l1042"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCT_NEW_LINE</span><span class=cF0> </span><span class=cFE>1</span><span class=cF0>
<a name="l1043"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCT_SOFT_NEW_LINE</span><span class=cF0> </span><span class=cFE>2</span><span class=cF0>
<a name="l1044"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCT_TAB</span><span class=cF0> </span><span class=cFE>3</span><span class=cF0>
<a name="l1045"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCT_PAGE_BREAK</span><span class=cF0> </span><span class=cFE>4</span><span class=cF0>
<a name="l1046"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCT_CURSOR</span><span class=cF0> </span><span class=cFE>5</span><span class=cF0>
<a name="l1047"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCT_MARKER</span><span class=cF0> </span><span class=cFE>6</span><span class=cF0>
<a name="l1048"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCT_PROMPT</span><span class=cF0> </span><span class=cFE>7</span><span class=cF0>
<a name="l1049"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCT_CLEAR</span><span class=cF0> </span><span class=cFE>8</span><span class=cF0>
<a name="l1050"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCT_PAGE_LEN</span><span class=cF0> </span><span class=cFE>9</span><span class=cF0>
<a name="l1051"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCT_LEFT_MARGIN</span><span class=cF0> </span><span class=cFE>10</span><span class=cF0>
<a name="l1052"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCT_RIGHT_MARGIN</span><span class=cF0> </span><span class=cFE>11</span><span class=cF0>
<a name="l1053"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCT_HEADER</span><span class=cF0> </span><span class=cFE>12</span><span class=cF0>
<a name="l1054"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCT_FOOTER</span><span class=cF0> </span><span class=cFE>13</span><span class=cF0>
<a name="l1055"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCT_INDENT</span><span class=cF0> </span><span class=cFE>14</span><span class=cF0>
<a name="l1056"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCT_FOREGROUND</span><span class=cF0> </span><span class=cFE>15</span><span class=cF0>
<a name="l1057"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCT_BACKGROUND</span><span class=cF0> </span><span class=cFE>16</span><span class=cF0>
<a name="l1058"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCT_DEFAULT_FOREGROUND</span><span class=cF0> </span><span class=cFE>17</span><span class=cF0>
<a name="l1059"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCT_DEFAULT_BACKGROUND</span><span class=cF0> </span><span class=cFE>18</span><span class=cF0>
<a name="l1060"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCT_WORD_WRAP</span><span class=cF0> </span><span class=cFE>19</span><span class=cF0>
<a name="l1061"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCT_HIGHLIGHT</span><span class=cF0> </span><span class=cFE>20</span><span class=cF0>
<a name="l1062"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCT_BLINK</span><span class=cF0> </span><span class=cFE>21</span><span class=cF0>
<a name="l1063"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCT_INVERT</span><span class=cF0> </span><span class=cFE>22</span><span class=cF0>
<a name="l1064"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCT_UNDERLINE</span><span class=cF0> </span><span class=cFE>23</span><span class=cF0>
<a name="l1065"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCT_SHIFTED_X</span><span class=cF0> </span><span class=cFE>24</span><span class=cF0>
<a name="l1066"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCT_SHIFTED_Y</span><span class=cF0> </span><span class=cFE>25</span><span class=cF0>
<a name="l1067"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCT_CURSOR_MOVEMENT</span><span class=cF0> </span><span class=cFE>26</span><span class=cF0>
<a name="l1068"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCT_ANCHOR</span><span class=cF0> </span><span class=cFE>27</span><span class=cF0>
<a name="l1069"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCT_LINK</span><span class=cF0> </span><span class=cFE>28</span><span class=cF0>
<a name="l1070"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCT_BTTN</span><span class=cF0> </span><span class=cFE>29</span><span class=cF0>
<a name="l1071"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCT_DATA</span><span class=cF0> </span><span class=cFE>30</span><span class=cF0>
<a name="l1072"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCT_CHECK_BOX</span><span class=cF0> </span><span class=cFE>31</span><span class=cF0>
<a name="l1073"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCT_LIST</span><span class=cF0> </span><span class=cFE>32</span><span class=cF0>
<a name="l1074"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCT_MACRO</span><span class=cF0> </span><span class=cFE>33</span><span class=cF0>
<a name="l1075"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCT_MENU_VAL</span><span class=cF0> </span><span class=cFE>34</span><span class=cF0>
<a name="l1076"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCT_HEX_ED</span><span class=cF0> </span><span class=cFE>35</span><span class=cF0>
<a name="l1077"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCT_TREE</span><span class=cF0> </span><span class=cFE>36</span><span class=cF0>
<a name="l1078"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCT_SPRITE</span><span class=cF0> </span><span class=cFE>37</span><span class=cF0>
<a name="l1079"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCT_INS_BIN</span><span class=cF0> </span><span class=cFE>38</span><span class=cF0>
<a name="l1080"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCT_INS_BIN_SIZE</span><span class=cF0> </span><span class=cFE>39</span><span class=cF0>
<a name="l1081"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCT_SONG</span><span class=cF0> </span><span class=cFE>40</span><span class=cF0>
<a name="l1082"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCT_HTML_CODE</span><span class=cF0> </span><span class=cFE>41</span><span class=cF0>
<a name="l1083"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCT_ERROR</span><span class=cF0> </span><span class=cFE>42</span><span class=cF0>
<a name="l1084"></a>
<a name="l1085"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCT_TYPES_NUM</span><span class=cF0> </span><span class=cFE>43</span><span class=cF0>
<a name="l1086"></a>
<a name="l1087"></a></span><span class=cF2>//CDocEntry.type flags upper bits</span><span class=cF0>
<a name="l1088"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCET_BLINK</span><span class=cF0> </span><span class=cF3>ATTRF_BLINK</span><span class=cF0>
<a name="l1089"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCET_INVERT</span><span class=cF0> </span><span class=cF3>ATTRF_INVERT</span><span class=cF0>
<a name="l1090"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCET_SEL</span><span class=cF0> </span><span class=cF3>ATTRF_SEL</span><span class=cF0>
<a name="l1091"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCET_UNDERLINE</span><span class=cF0> </span><span class=cF3>ATTRF_UNDERLINE</span><span class=cF0>
<a name="l1092"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCG_BL_IV_UL</span><span class=cF0> </span><span class=cFE>0xB0000000</span><span class=cF0>
<a name="l1093"></a>
<a name="l1094"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEt_BLINK</span><span class=cF0> </span><span class=cF3>ATTRf_BLINK</span><span class=cF0>
<a name="l1095"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEt_INVERT</span><span class=cF0> </span><span class=cF3>ATTRf_INVERT</span><span class=cF0>
<a name="l1096"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEt_SEL</span><span class=cF0> </span><span class=cF3>ATTRf_SEL</span><span class=cF0>
<a name="l1097"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEt_UNDERLINE</span><span class=cF0> </span><span class=cF3>ATTRf_UNDERLINE</span><span class=cF0>
<a name="l1098"></a>
<a name="l1099"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCG_DBL_BUF_FLAGS</span><span class=cF0> (</span><span class=cF3>DOCF_OVERSTRIKE</span><span class=cF0> | </span><span class=cF3>DOCF_PLAIN_TEXT</span><span class=cF0> | </span><span class=cF3>DOCF_PLAIN_TEXT_TABS</span><span class=cF0> | </span><span class=cF3>DOCF_SIZE_MIN</span><span class=cF0> | </span><span class=cF3>DOCF_NO_CURSOR</span><span class=cF0> | \
<a name="l1100"></a> </span><span class=cF3>DOCF_FORM</span><span class=cF0> | </span><span class=cF3>DOCF_DBL_DOLLARS</span><span class=cF0> | </span><span class=cF3>DOCF_DONT_SWAP_OUT</span><span class=cF0> | </span><span class=cF3>DOCF_DO_FULL_REFRESH</span><span class=cF0> | </span><span class=cF3>DOCF_BORDER_DOC</span><span class=cF0> | \
<a name="l1101"></a> </span><span class=cF3>DOCF_HIDE_CURSOR</span><span class=cF0> | </span><span class=cF3>DOCF_DONT_HIGHLIGHT_CURSOR</span><span class=cF0> | </span><span class=cF3>DOCF_CARRIAGE_RETURN</span><span class=cF0>)
<a name="l1102"></a>
<a name="l1103"></a></span><span class=cF2>//CDocEntry.de_flags. These first 16 are arg=</span><span class=cF0>
<a name="l1104"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEF_TAG</span><span class=cF0> </span><span class=cFE>1</span><span class=cF0>
<a name="l1105"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEF_LEN</span><span class=cF0> </span><span class=cFE>2</span><span class=cF0>
<a name="l1106"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEF_AUX_STR</span><span class=cF0> </span><span class=cFE>4</span><span class=cF0>
<a name="l1107"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEF_DEFINE</span><span class=cF0> </span><span class=cFE>8</span><span class=cF0>
<a name="l1108"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEF_HTML_LINK</span><span class=cF0> </span><span class=cFE>0x10</span><span class=cF0>
<a name="l1109"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEF_LEFT_EXP</span><span class=cF0> </span><span class=cFE>0x20</span><span class=cF0>
<a name="l1110"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEF_LEFT_MACRO</span><span class=cF0> </span><span class=cFE>0x40</span><span class=cF0>
<a name="l1111"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEF_RIGHT_EXP</span><span class=cF0> </span><span class=cFE>0x80</span><span class=cF0>
<a name="l1112"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEF_RIGHT_MACRO</span><span class=cF0> </span><span class=cFE>0x100</span><span class=cF0>
<a name="l1113"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEF_HAS_BIN</span><span class=cF0> </span><span class=cFE>0x200</span><span class=cF0>
<a name="l1114"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEF_BIN_PTR_LINK</span><span class=cF0> </span><span class=cFE>0x400</span><span class=cF0>
<a name="l1115"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEF_RAW_TYPE</span><span class=cF0> </span><span class=cFE>0x800</span><span class=cF0>
<a name="l1116"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEF_SHIFTED_X</span><span class=cF0> </span><span class=cFE>0x1000</span><span class=cF0>
<a name="l1117"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEF_SHIFTED_Y</span><span class=cF0> </span><span class=cFE>0x2000</span><span class=cF0>
<a name="l1118"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEF_SCROLLING_X</span><span class=cF0> </span><span class=cFE>0x4000</span><span class=cF0>
<a name="l1119"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEF_USER_DATA</span><span class=cF0> </span><span class=cFE>0x8000</span><span class=cF0>
<a name="l1120"></a>
<a name="l1121"></a></span><span class=cF2>//CDocEntry.de_flags. These are +/- flags</span><span class=cF0>
<a name="l1122"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEF_LEFT_CB</span><span class=cF0> </span><span class=cFE>0x10000</span><span class=cF0>
<a name="l1123"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEF_LEFT_IN_STR</span><span class=cF0> </span><span class=cFE>0x20000</span><span class=cF0>
<a name="l1124"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEF_RIGHT_CB</span><span class=cF0> </span><span class=cFE>0x40000</span><span class=cF0>
<a name="l1125"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEF_RIGHT_IN_STR</span><span class=cF0> </span><span class=cFE>0x80000</span><span class=cF0>
<a name="l1126"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEF_LEFT_X</span><span class=cF0> </span><span class=cFE>0x100000</span><span class=cF0>
<a name="l1127"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEF_CENTER_X</span><span class=cF0> </span><span class=cFE>0x200000</span><span class=cF0>
<a name="l1128"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEF_RIGHT_X</span><span class=cF0> </span><span class=cFE>0x400000</span><span class=cF0>
<a name="l1129"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEF_TOP_Y</span><span class=cF0> </span><span class=cFE>0x800000</span><span class=cF0>
<a name="l1130"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEF_CENTER_Y</span><span class=cF0> </span><span class=cFE>0x1000000</span><span class=cF0>
<a name="l1131"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEF_BOTTOM_Y</span><span class=cF0> </span><span class=cFE>0x2000000</span><span class=cF0>
<a name="l1132"></a></span><span class=cF2>//HL...UL</span><span class=cF0>
<a name="l1133"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEF_TAG_CB</span><span class=cF0> </span><span class=cFE>0x100000000</span><span class=cF0>
<a name="l1134"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEF_PAGE_REL_Y</span><span class=cF0> </span><span class=cFE>0x200000000</span><span class=cF0>
<a name="l1135"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEF_MARGIN_REL_X</span><span class=cF0> </span><span class=cFE>0x400000000</span><span class=cF0>
<a name="l1136"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEF_WIN_REL</span><span class=cF0> </span><span class=cFE>0x800000000</span><span class=cF0>
<a name="l1137"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEF_LINK</span><span class=cF0> </span><span class=cFE>0x1000000000</span><span class=cF0>
<a name="l1138"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEF_ESC</span><span class=cF0> </span><span class=cFE>0x2000000000</span><span class=cF0> </span><span class=cF2>//Send &lt;ESC&gt; (Exit and Save)</span><span class=cF0>
<a name="l1139"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEF_QUIT</span><span class=cF0> </span><span class=cFE>0x4000000000</span><span class=cF0> </span><span class=cF2>//Send &lt;SHIFT-ESC&gt; (Abort)</span><span class=cF0>
<a name="l1140"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEF_FROM_START</span><span class=cF0> </span><span class=cFE>0x8000000000</span><span class=cF0>
<a name="l1141"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEF_HAS_BORDER</span><span class=cF0> </span><span class=cFE>0x10000000000</span><span class=cF0>
<a name="l1142"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEF_SOLID_BORDER</span><span class=cF0> </span><span class=cFE>0x20000000000</span><span class=cF0>
<a name="l1143"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEF_BORDER_PLOT</span><span class=cF0> </span><span class=cFE>0x40000000000</span><span class=cF0>
<a name="l1144"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEF_CHECKED_COLLAPSED</span><span class=cF0> </span><span class=cFE>0x80000000000</span><span class=cF0> </span><span class=cF2>//Checked or Collapsed</span><span class=cF0>
<a name="l1145"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEF_CHECK_COLLAPSABLE</span><span class=cF0> </span><span class=cFE>0x100000000000</span><span class=cF0>
<a name="l1146"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEF_REFRESH_DATA</span><span class=cF0> </span><span class=cFE>0x200000000000</span><span class=cF0>
<a name="l1147"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEF_UPDATE_DATA</span><span class=cF0> </span><span class=cFE>0x400000000000</span><span class=cF0>
<a name="l1148"></a></span><span class=cF2>//</span><a href="https://zeal-operating-system.github.io/ZealOS/Kernel/KernelA.HH.html#l1150"><span class=cF4>DOCEF_DEREF_DATA</span></a><span class=cF2> is confusing. </span><a href="https://zeal-operating-system.github.io/ZealOS/System/DolDoc/DocForm.CC.html#l263"><span class=cF4>DocForm</span></a><span class=cF2>() makes doc_e-&gt;data point to members</span><span class=cF0>
<a name="l1149"></a></span><span class=cF2>//of class. For ints, it derefs doc_e-&gt;data as a ptr. For strings, it doesn't.</span><span class=cF0>
<a name="l1150"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEF_DEREF_DATA</span><span class=cF0> </span><span class=cFE>0x800000000000</span><span class=cF0>
<a name="l1151"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEF_REMALLOC_DATA</span><span class=cF0> </span><span class=cFE>0x1000000000000</span><span class=cF0>
<a name="l1152"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEF_HAS_TERMINATOR</span><span class=cF0> </span><span class=cFE>0x2000000000000</span><span class=cF0>
<a name="l1153"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEF_ZERO_BASED</span><span class=cF0> </span><span class=cFE>0x4000000000000</span><span class=cF0>
<a name="l1154"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEF_HOLD</span><span class=cF0> </span><span class=cFE>0x8000000000000</span><span class=cF0>
<a name="l1155"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEF_TREE</span><span class=cF0> </span><span class=cFE>0x10000000000000</span><span class=cF0>
<a name="l1156"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEF_LIST</span><span class=cF0> </span><span class=cFE>0x20000000000000</span><span class=cF0>
<a name="l1157"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEF_SKIP</span><span class=cF0> </span><span class=cFE>0x40000000000000</span><span class=cF0>
<a name="l1158"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEF_POPUP</span><span class=cF0> </span><span class=cFE>0x80000000000000</span><span class=cF0>
<a name="l1159"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEF_SKIP_IN_FORM</span><span class=cF0> </span><span class=cFE>0x100000000000000</span><span class=cF0>
<a name="l1160"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEF_FILTER_SKIP</span><span class=cF0> </span><span class=cFE>0x200000000000000</span><span class=cF0>
<a name="l1161"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEF_NO_CLICK_ON</span><span class=cF0> </span><span class=cFE>0x400000000000000</span><span class=cF0>
<a name="l1162"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEF_DONT_DRAW</span><span class=cF0> </span><span class=cFE>0x800000000000000</span><span class=cF0> </span><span class=cF2>//only works on sprites</span><span class=cF0>
<a name="l1163"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEF_DEFAULT_LEN</span><span class=cF0> </span><span class=cFE>0x1000000000000000</span><span class=cF0>
<a name="l1164"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEF_DEFAULT_RAW_TYPE</span><span class=cF0> </span><span class=cFE>0x2000000000000000</span><span class=cF0>
<a name="l1165"></a>
<a name="l1166"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEG_HAS_ALLOC</span><span class=cF0> (</span><span class=cF3>DOCEF_TAG</span><span class=cF0> | </span><span class=cF3>DOCEF_AUX_STR</span><span class=cF0> | </span><span class=cF3>DOCEF_DEFINE</span><span class=cF0> | </span><span class=cF3>DOCEF_HTML_LINK</span><span class=cF0> | \
<a name="l1167"></a> </span><span class=cF3>DOCEF_LEFT_MACRO</span><span class=cF0> | </span><span class=cF3>DOCEF_RIGHT_MACRO</span><span class=cF0> | </span><span class=cF3>DOCEF_BIN_PTR_LINK</span><span class=cF0> | </span><span class=cF3>DOCEF_REMALLOC_DATA</span><span class=cF0>)
<a name="l1168"></a>
<a name="l1169"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEG_HAS_ARG</span><span class=cF0> (</span><span class=cF7>(</span><span class=cF3>DOCEG_HAS_ALLOC</span><span class=cF0> &amp; ~</span><span class=cF3>DOCEF_REMALLOC_DATA</span><span class=cF7>)</span><span class=cF0> | \
<a name="l1170"></a> </span><span class=cF3>DOCEF_LEN</span><span class=cF0> | </span><span class=cF3>DOCEF_LEFT_EXP</span><span class=cF0> | </span><span class=cF3>DOCEF_RIGHT_EXP</span><span class=cF0> | </span><span class=cF3>DOCEF_HAS_BIN</span><span class=cF0> | </span><span class=cF3>DOCEF_RAW_TYPE</span><span class=cF0> | \
<a name="l1171"></a> </span><span class=cF3>DOCEF_SHIFTED_X</span><span class=cF0> | </span><span class=cF3>DOCEF_SHIFTED_Y</span><span class=cF0> | </span><span class=cF3>DOCEF_SCROLLING_X</span><span class=cF0> | </span><span class=cF3>DOCEF_USER_DATA</span><span class=cF0>)
<a name="l1172"></a>
<a name="l1173"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEG_DONT_EDIT</span><span class=cF0> (</span><span class=cF3>DOCEF_DEFINE</span><span class=cF0> | </span><span class=cF3>DOCEF_HTML_LINK</span><span class=cF0> | </span><span class=cF3>DOCEF_AUX_STR</span><span class=cF0> | </span><span class=cF3>DOCEF_BIN_PTR_LINK</span><span class=cF0> | \
<a name="l1174"></a> </span><span class=cF3>DOCEF_SCROLLING_X</span><span class=cF0> | </span><span class=cF3>DOCEF_TAG_CB</span><span class=cF0>)
<a name="l1175"></a>
<a name="l1176"></a></span><span class=cF2>//These are ident to Doc flags</span><span class=cF0>
<a name="l1177"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEF_HIGHLIGHT</span><span class=cF0> </span><span class=cFE>0x4000000</span><span class=cF0>
<a name="l1178"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEF_WORD_WRAP</span><span class=cF0> </span><span class=cFE>0x8000000</span><span class=cF0>
<a name="l1179"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEF_BLINK</span><span class=cF0> </span><span class=cF3>ATTRF_BLINK</span><span class=cF0>
<a name="l1180"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEF_INVERT</span><span class=cF0> </span><span class=cF3>ATTRF_INVERT</span><span class=cF0>
<a name="l1181"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEF_SEL</span><span class=cF0> </span><span class=cF3>ATTRF_SEL</span><span class=cF0>
<a name="l1182"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEF_UNDERLINE</span><span class=cF0> </span><span class=cF3>ATTRF_UNDERLINE</span><span class=cF0>
<a name="l1183"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEf_HIGHLIGHT</span><span class=cF0> </span><span class=cFE>26</span><span class=cF0>
<a name="l1184"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEf_WORD_WRAP</span><span class=cF0> </span><span class=cFE>27</span><span class=cF0>
<a name="l1185"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEf_BLINK</span><span class=cF0> </span><span class=cF3>ATTRf_BLINK</span><span class=cF0>
<a name="l1186"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEf_INVERT</span><span class=cF0> </span><span class=cF3>ATTRf_INVERT</span><span class=cF0>
<a name="l1187"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEf_SEL</span><span class=cF0> </span><span class=cF3>ATTRf_SEL</span><span class=cF0>
<a name="l1188"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEf_UNDERLINE</span><span class=cF0> </span><span class=cF3>ATTRf_UNDERLINE</span><span class=cF0>
<a name="l1189"></a>
<a name="l1190"></a></span><span class=cF2>//CDocEntry.de_flags. These first 16 are arg=</span><span class=cF0>
<a name="l1191"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEf_TAG</span><span class=cF0> </span><span class=cFE>0</span><span class=cF0>
<a name="l1192"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEf_LEN</span><span class=cF0> </span><span class=cFE>1</span><span class=cF0>
<a name="l1193"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEf_AUX_STR</span><span class=cF0> </span><span class=cFE>2</span><span class=cF0>
<a name="l1194"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEf_DEFINE</span><span class=cF0> </span><span class=cFE>3</span><span class=cF0>
<a name="l1195"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEf_HTML_LINK</span><span class=cF0> </span><span class=cFE>4</span><span class=cF0>
<a name="l1196"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEf_LEFT_EXP</span><span class=cF0> </span><span class=cFE>5</span><span class=cF0>
<a name="l1197"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEf_LEFT_MACRO</span><span class=cF0> </span><span class=cFE>6</span><span class=cF0>
<a name="l1198"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEf_RIGHT_EXP</span><span class=cF0> </span><span class=cFE>7</span><span class=cF0>
<a name="l1199"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEf_RIGHT_MACRO</span><span class=cF0> </span><span class=cFE>8</span><span class=cF0>
<a name="l1200"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEf_HAS_BIN</span><span class=cF0> </span><span class=cFE>9</span><span class=cF0>
<a name="l1201"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEf_BIN_PTR_LINK</span><span class=cF0> </span><span class=cFE>10</span><span class=cF0>
<a name="l1202"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEf_RAW_TYPE</span><span class=cF0> </span><span class=cFE>11</span><span class=cF0>
<a name="l1203"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEf_SHIFTED_X</span><span class=cF0> </span><span class=cFE>12</span><span class=cF0>
<a name="l1204"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEf_SHIFTED_Y</span><span class=cF0> </span><span class=cFE>13</span><span class=cF0>
<a name="l1205"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEf_SCROLLING_X</span><span class=cF0> </span><span class=cFE>14</span><span class=cF0>
<a name="l1206"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEf_USER_DATA</span><span class=cF0> </span><span class=cFE>15</span><span class=cF0>
<a name="l1207"></a>
<a name="l1208"></a></span><span class=cF2>//CDocEntry.de_flags. These are +/- flags</span><span class=cF0>
<a name="l1209"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEf_LEFT_CB</span><span class=cF0> </span><span class=cFE>16</span><span class=cF0>
<a name="l1210"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEf_LEFT_IN_STR</span><span class=cF0> </span><span class=cFE>17</span><span class=cF0>
<a name="l1211"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEf_RIGHT_CB</span><span class=cF0> </span><span class=cFE>18</span><span class=cF0>
<a name="l1212"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEf_RIGHT_IN_STR</span><span class=cF0> </span><span class=cFE>19</span><span class=cF0>
<a name="l1213"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEf_LEFT_X</span><span class=cF0> </span><span class=cFE>20</span><span class=cF0>
<a name="l1214"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEf_CENTER_X</span><span class=cF0> </span><span class=cFE>21</span><span class=cF0>
<a name="l1215"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEf_RIGHT_X</span><span class=cF0> </span><span class=cFE>22</span><span class=cF0>
<a name="l1216"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEf_TOP_Y</span><span class=cF0> </span><span class=cFE>23</span><span class=cF0>
<a name="l1217"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEf_CENTER_Y</span><span class=cF0> </span><span class=cFE>24</span><span class=cF0>
<a name="l1218"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEf_BOTTOM_Y</span><span class=cF0> </span><span class=cFE>25</span><span class=cF0>
<a name="l1219"></a></span><span class=cF2>//HL...UL</span><span class=cF0>
<a name="l1220"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEf_TAG_CB</span><span class=cF0> </span><span class=cFE>32</span><span class=cF0>
<a name="l1221"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEf_PAGE_REL_Y</span><span class=cF0> </span><span class=cFE>33</span><span class=cF0>
<a name="l1222"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEf_MARGIN_REL_X</span><span class=cF0> </span><span class=cFE>34</span><span class=cF0>
<a name="l1223"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEf_WIN_REL</span><span class=cF0> </span><span class=cFE>35</span><span class=cF0>
<a name="l1224"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEf_LINK</span><span class=cF0> </span><span class=cFE>36</span><span class=cF0>
<a name="l1225"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEf_ESC</span><span class=cF0> </span><span class=cFE>37</span><span class=cF0> </span><span class=cF2>//Send &lt;ESC&gt; (Exit and Save)</span><span class=cF0>
<a name="l1226"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEf_QUIT</span><span class=cF0> </span><span class=cFE>38</span><span class=cF0> </span><span class=cF2>//Send &lt;SHIFT-ESC&gt; (Abort)</span><span class=cF0>
<a name="l1227"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEf_FROM_START</span><span class=cF0> </span><span class=cFE>39</span><span class=cF0>
<a name="l1228"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEf_HAS_BORDER</span><span class=cF0> </span><span class=cFE>40</span><span class=cF0>
<a name="l1229"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEf_SOLID_BORDER</span><span class=cF0> </span><span class=cFE>41</span><span class=cF0>
<a name="l1230"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEf_BORDER_PLOT</span><span class=cF0> </span><span class=cFE>42</span><span class=cF0>
<a name="l1231"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEf_CHECKED_COLLAPSED</span><span class=cF0> </span><span class=cFE>43</span><span class=cF0> </span><span class=cF2>//Checked or Collapsed</span><span class=cF0>
<a name="l1232"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEf_CHECK_COLLAPSABLE</span><span class=cF0> </span><span class=cFE>44</span><span class=cF0>
<a name="l1233"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEf_REFRESH_DATA</span><span class=cF0> </span><span class=cFE>45</span><span class=cF0>
<a name="l1234"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEf_UPDATE_DATA</span><span class=cF0> </span><span class=cFE>46</span><span class=cF0>
<a name="l1235"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEf_DEREF_DATA</span><span class=cF0> </span><span class=cFE>47</span><span class=cF0>
<a name="l1236"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEf_REMALLOC_DATA</span><span class=cF0> </span><span class=cFE>48</span><span class=cF0>
<a name="l1237"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEf_HAS_TERMINATOR</span><span class=cF0> </span><span class=cFE>49</span><span class=cF0>
<a name="l1238"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEf_ZERO_BASED</span><span class=cF0> </span><span class=cFE>50</span><span class=cF0>
<a name="l1239"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEf_HOLD</span><span class=cF0> </span><span class=cFE>51</span><span class=cF0>
<a name="l1240"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEf_TREE</span><span class=cF0> </span><span class=cFE>52</span><span class=cF0>
<a name="l1241"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEf_LIST</span><span class=cF0> </span><span class=cFE>53</span><span class=cF0>
<a name="l1242"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEf_SKIP</span><span class=cF0> </span><span class=cFE>54</span><span class=cF0>
<a name="l1243"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEf_POPUP</span><span class=cF0> </span><span class=cFE>55</span><span class=cF0>
<a name="l1244"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEf_SKIP_IN_FORM</span><span class=cF0> </span><span class=cFE>56</span><span class=cF0>
<a name="l1245"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEf_FILTER_SKIP</span><span class=cF0> </span><span class=cFE>57</span><span class=cF0>
<a name="l1246"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEf_NO_CLICK_ON</span><span class=cF0> </span><span class=cFE>58</span><span class=cF0>
<a name="l1247"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEf_DONT_DRAW</span><span class=cF0> </span><span class=cFE>59</span><span class=cF0> </span><span class=cF2>//only works on sprites</span><span class=cF0>
<a name="l1248"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEf_DEFAULT_LEN</span><span class=cF0> </span><span class=cFE>60</span><span class=cF0>
<a name="l1249"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEf_DEFAULT_RAW_TYPE</span><span class=cF0> </span><span class=cFE>61</span><span class=cF0>
<a name="l1250"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCEf_FLAGS_NUM</span><span class=cF0> </span><span class=cFE>62</span><span class=cF0>
<a name="l1251"></a>
<a name="l1252"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CDocBin</span><span class=cF0>
<a name="l1253"></a>{
<a name="l1254"></a> </span><span class=cF9>CDocBin</span><span class=cF0> *next, *last;
<a name="l1255"></a> </span><span class=cF9>I32</span><span class=cF0> tmp_use_count, renum_num;
<a name="l1256"></a> </span><span class=cF1>U8</span><span class=cF0> *tag;
<a name="l1257"></a> </span><span class=cF1>U0</span><span class=cF0> </span><span class=cF1>start</span><span class=cF0>;
<a name="l1258"></a> </span><span class=cF9>U32</span><span class=cF0> num, flags, size, use_count;
<a name="l1259"></a> </span><span class=cF1>U0</span><span class=cF0> </span><span class=cF1>end</span><span class=cF0>;
<a name="l1260"></a> </span><span class=cF1>U8</span><span class=cF0> *data;
<a name="l1261"></a>#</span><span class=cF1>assert</span><span class=cF0> !($ &amp; </span><span class=cFE>7</span><span class=cF0>)
<a name="l1262"></a>};
<a name="l1263"></a>
<a name="l1264"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOC_SCROLL_SPEED</span><span class=cF0> </span><span class=cFE>8</span><span class=cF0>
<a name="l1265"></a>
<a name="l1266"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCSS_NORMAL</span><span class=cF0> </span><span class=cFE>0</span><span class=cF0>
<a name="l1267"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCSS_SINGLE_QUOTE</span><span class=cF0> </span><span class=cFE>1</span><span class=cF0>
<a name="l1268"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCSS_DBL_QUOTE</span><span class=cF0> </span><span class=cFE>2</span><span class=cF0>
<a name="l1269"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCSS_COMMENT</span><span class=cF0> </span><span class=cFE>3</span><span class=cF0>
<a name="l1270"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCSS_CPP_Z_COMMENT</span><span class=cF0> </span><span class=cFE>4</span><span class=cF0>
<a name="l1271"></a>
<a name="l1272"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOC_ATTR_DEFAULT_TEXT</span><span class=cF0> </span><span class=cF3>WHITE</span><span class=cF0> &lt;&lt; </span><span class=cFE>4</span><span class=cF0> + </span><span class=cF3>BLACK</span><span class=cF0>
<a name="l1273"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOC_COLOR_ALT_TEXT</span><span class=cF0> </span><span class=cF3>LTGRAY</span><span class=cF0>
<a name="l1274"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOC_COLOR_LINK</span><span class=cF0> </span><span class=cF3>RED</span><span class=cF0>
<a name="l1275"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOC_COLOR_MACRO</span><span class=cF0> </span><span class=cF3>LTBLUE</span><span class=cF0>
<a name="l1276"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOC_COLOR_ANCHOR</span><span class=cF0> </span><span class=cF3>DKGRAY</span><span class=cF0>
<a name="l1277"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOC_COLOR_TREE</span><span class=cF0> </span><span class=cF3>PURPLE</span><span class=cF0>
<a name="l1278"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOC_COLOR_PROMPT</span><span class=cF0> </span><span class=cF3>GREEN</span><span class=cF0>
<a name="l1279"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOC_COLOR_COMMENT</span><span class=cF0> </span><span class=cF3>GREEN</span><span class=cF0>
<a name="l1280"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOC_COLOR_BIN</span><span class=cF0> </span><span class=cF3>LTGREEN</span><span class=cF0>
<a name="l1281"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOC_COLOR_STR</span><span class=cF0> </span><span class=cF3>BROWN</span><span class=cF0>
<a name="l1282"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOC_COLOR_CHAR_CONST</span><span class=cF0> </span><span class=cF3>BROWN</span><span class=cF0>
<a name="l1283"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOC_COLOR_EXPORT_SYS_SYM</span><span class=cF0> </span><span class=cF3>LTPURPLE</span><span class=cF0>
<a name="l1284"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOC_COLOR_DEFINE_STR</span><span class=cF0> </span><span class=cF3>CYAN</span><span class=cF0>
<a name="l1285"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOC_COLOR_GLOBAL_VAR</span><span class=cF0> </span><span class=cF3>LTCYAN</span><span class=cF0>
<a name="l1286"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOC_COLOR_CLASS</span><span class=cF0> </span><span class=cF3>LTBLUE</span><span class=cF0>
<a name="l1287"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOC_COLOR_FUN</span><span class=cF0> </span><span class=cF3>PURPLE</span><span class=cF0>
<a name="l1288"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOC_COLOR_KEYWORD</span><span class=cF0> </span><span class=cF3>BLUE</span><span class=cF0>
<a name="l1289"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOC_COLOR_REG</span><span class=cF0> </span><span class=cF3>LTRED</span><span class=cF0>
<a name="l1290"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOC_COLOR_NUMBER</span><span class=cF0> </span><span class=cF3>YELLOW</span><span class=cF0>
<a name="l1291"></a>
<a name="l1292"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CDocSettings</span><span class=cF0>
<a name="l1293"></a>{
<a name="l1294"></a> </span><span class=cF9>U32</span><span class=cF0> final_u32_attr;
<a name="l1295"></a> </span><span class=cF9>I16</span><span class=cF0> left_margin, right_margin, indent;
<a name="l1296"></a> </span><span class=cF9>U16</span><span class=cF0> page_len, header, footer;
<a name="l1297"></a> </span><span class=cF1>I8</span><span class=cF0> shifted_x, shifted_y;
<a name="l1298"></a> </span><span class=cF1>U8</span><span class=cF0> state, comment_depth, paren_depth, brace_depth, cur_text_attr, default_text_attr;
<a name="l1299"></a>};
<a name="l1300"></a>
<a name="l1301"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOC_DEFAULT</span><span class=cF0> </span><span class=cF3>I32_MIN</span><span class=cF0>
<a name="l1302"></a>
<a name="l1303"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CDocEntryBase</span><span class=cF0>
<a name="l1304"></a>{
<a name="l1305"></a></span><span class=cF2>//This is a shortened structure for</span><span class=cF0>
<a name="l1306"></a> </span><span class=cF2>//cmds like the text cmd which</span><span class=cF0>
<a name="l1307"></a> </span><span class=cF2>//don't require the full CDocEntry structure.</span><span class=cF0>
<a name="l1308"></a> </span><span class=cF9>CDocEntryBase</span><span class=cF0> *next, *last;
<a name="l1309"></a> </span><span class=cF1>U8</span><span class=cF0> *tag;
<a name="l1310"></a> </span><span class=cF1>union</span><span class=cF0>
<a name="l1311"></a> </span><span class=cF7>{</span><span class=cF0>
<a name="l1312"></a> </span><span class=cF1>U8</span><span class=cF0> type_u8; </span><span class=cF2>//this stores the code</span><span class=cF0>
<a name="l1313"></a> </span><span class=cF9>U32</span><span class=cF0> type; </span><span class=cF2>//these store attr flags</span><span class=cF0>
<a name="l1314"></a> </span><span class=cF7>}</span><span class=cF0>;
<a name="l1315"></a> </span><span class=cF9>I32</span><span class=cF0> page_line_num;
<a name="l1316"></a> </span><span class=cF9>I64</span><span class=cF0> de_flags;
<a name="l1317"></a> </span><span class=cF9>I32</span><span class=cF0> x, y;
<a name="l1318"></a> </span><span class=cF9>U32</span><span class=cF0> min_col, max_col;
<a name="l1319"></a> </span><span class=cF9>CDocSettings</span><span class=cF0> settings;
<a name="l1320"></a> </span><span class=cF9>I64</span><span class=cF0> user_data;
<a name="l1321"></a>#</span><span class=cF1>assert</span><span class=cF0> !($&amp;</span><span class=cFE>7</span><span class=cF0>)
<a name="l1322"></a>};
<a name="l1323"></a>
<a name="l1324"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCE_LEN_DEFAULT</span><span class=cF0> </span><span class=cFE>64</span><span class=cF0>
<a name="l1325"></a>
<a name="l1326"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CDocEntry</span><span class=cF0>:</span><span class=cF9>CDocEntryBase</span><span class=cF0>
<a name="l1327"></a>{
<a name="l1328"></a> </span><span class=cF1>union</span><span class=cF0>
<a name="l1329"></a> </span><span class=cF7>{</span><span class=cF0>
<a name="l1330"></a> </span><span class=cF9>I64</span><span class=cF0> attr;
<a name="l1331"></a> </span><span class=cF9>I64</span><span class=cF0> cursor_x_offset;
<a name="l1332"></a> </span><span class=cF9>I64</span><span class=cF0> (*left_cb)(</span><span class=cF9>CDoc</span><span class=cF0> *doc, </span><span class=cF9>CDocEntry</span><span class=cF0> *doc_e);
<a name="l1333"></a> </span><span class=cF9>I64</span><span class=cF0> left_exp;
<a name="l1334"></a> </span><span class=cF7>}</span><span class=cF0>;
<a name="l1335"></a> </span><span class=cF1>U8</span><span class=cF0> *left_macro;
<a name="l1336"></a>
<a name="l1337"></a> </span><span class=cF1>union</span><span class=cF0>
<a name="l1338"></a> </span><span class=cF7>{</span><span class=cF0>
<a name="l1339"></a> </span><span class=cF9>I64</span><span class=cF0> cursor_y_offset;
<a name="l1340"></a> </span><span class=cF9>I64</span><span class=cF0> (*right_cb)(</span><span class=cF9>CDoc</span><span class=cF0> *doc, </span><span class=cF9>CDocEntry</span><span class=cF0> *doc_e);
<a name="l1341"></a> </span><span class=cF9>I64</span><span class=cF0> right_exp;
<a name="l1342"></a> </span><span class=cF7>}</span><span class=cF0>;
<a name="l1343"></a> </span><span class=cF1>U8</span><span class=cF0> *right_macro;
<a name="l1344"></a>
<a name="l1345"></a> </span><span class=cF1>U8</span><span class=cF0> *(*tag_cb)(</span><span class=cF9>CDoc</span><span class=cF0> *doc, </span><span class=cF9>CDocEntry</span><span class=cF0> *doc_e, </span><span class=cF9>CTask</span><span class=cF0> *mem_task);
<a name="l1346"></a> </span><span class=cF1>U8</span><span class=cF0> *define_str,
<a name="l1347"></a> *aux_str,
<a name="l1348"></a> *bin_ptr_link,
<a name="l1349"></a> *html_link,
<a name="l1350"></a> *my_format_data;
<a name="l1351"></a> </span><span class=cF9>I64</span><span class=cF0> hex_ed_width;
<a name="l1352"></a> </span><span class=cF9>I32</span><span class=cF0> scroll_len,
<a name="l1353"></a> len, </span><span class=cF2>//</span><a href="https://zeal-operating-system.github.io/ZealOS/Kernel/KernelA.HH.html#l1324"><span class=cF4>DOCE_LEN_DEFAULT</span></a><span class=cF0>
<a name="l1354"></a> bin_num;
<a name="l1355"></a> </span><span class=cF1>U8</span><span class=cF0> raw_type, pad[</span><span class=cFE>3</span><span class=cF0>];
<a name="l1356"></a> </span><span class=cF9>CDocBin</span><span class=cF0> *bin_data;
<a name="l1357"></a> </span><span class=cF1>U8</span><span class=cF0> *data;
<a name="l1358"></a>#</span><span class=cF1>assert</span><span class=cF0> !($ &amp; </span><span class=cFE>7</span><span class=cF0>)
<a name="l1359"></a>};
<a name="l1360"></a>
<a name="l1361"></a></span><span class=cF2>//</span><a href="https://zeal-operating-system.github.io/ZealOS/System/DolDoc/DocForm.CC.html#l263"><span class=cF4>DocForm</span></a><span class=cF2>() </span><a href="https://zeal-operating-system.github.io/ZealOS/System/DolDoc/DocForm.CC.html#l363"><span class=cF4>DocMenu</span></a><span class=cF2>() </span><a href="https://zeal-operating-system.github.io/ZealOS/System/DolDoc/DocEd.CC.html#l97"><span class=cF4>DocEd</span></a><span class=cF2>() </span><a href="https://zeal-operating-system.github.io/ZealOS/System/DolDoc/DocForm.CC.html#l411"><span class=cF4>PopUpMenu</span></a><span class=cF2>()</span><span class=cF0>
<a name="l1362"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOF_SIZE_MIN</span><span class=cF0> </span><span class=cFE>0x01</span><span class=cF0>
<a name="l1363"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOF_INTERCEPT_TASK_END</span><span class=cF0> </span><span class=cFE>0x02</span><span class=cF0>
<a name="l1364"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOF_DONT_HOME</span><span class=cF0> </span><span class=cFE>0x04</span><span class=cF0>
<a name="l1365"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOF_WIN_MAX</span><span class=cF0> </span><span class=cFE>0x08</span><span class=cF0>
<a name="l1366"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOF_DONT_TEXT_ATTR</span><span class=cF0> </span><span class=cFE>0x10</span><span class=cF0>
<a name="l1367"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOF_DONT_WINMGR_SYNC</span><span class=cF0> </span><span class=cFE>0x20</span><span class=cF0>
<a name="l1368"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOF_DONT_SHOW</span><span class=cF0> </span><span class=cFE>0x40</span><span class=cF0>
<a name="l1369"></a></span><span class=cF2>//Combines with </span><a href="https://zeal-operating-system.github.io/ZealOS/Kernel/KernelA.HH.html#l1392"><span class=cF4>Editor Flags</span></a><span class=cF0>
<a name="l1370"></a>
<a name="l1371"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CEdFindText</span><span class=cF0>
<a name="l1372"></a>{
<a name="l1373"></a> </span><span class=cF1>U8</span><span class=cF0> find_text[</span><span class=cF3>STR_LEN</span><span class=cF0>] format </span><span class=cF6>&quot;$DA-P,A=\&quot;Find :%s\&quot;$\n&quot;</span><span class=cF0>,
<a name="l1374"></a> replace_text[</span><span class=cF3>STR_LEN</span><span class=cF0>] format </span><span class=cF6>&quot;$DA-P,A=\&quot;Replace :%s\&quot;$\n&quot;</span><span class=cF0>;
<a name="l1375"></a> </span><span class=cF1>Bool</span><span class=cF0> replace format </span><span class=cF6>&quot;$CB,\&quot;Replace\&quot;$\n&quot;</span><span class=cF0>,
<a name="l1376"></a> scan_fwd format </span><span class=cF6>&quot;$CB,\&quot;Fwd\&quot;$\n&quot;</span><span class=cF0>,
<a name="l1377"></a> scan_sel_text format </span><span class=cF6>&quot;$CB,\&quot;Selection\&quot;$\n&quot;</span><span class=cF0>,
<a name="l1378"></a> match_case format </span><span class=cF6>&quot;$CB,\&quot;Match Case\&quot;$\n&quot;</span><span class=cF0>,
<a name="l1379"></a> whole_labels format </span><span class=cF6>&quot;$CB,\&quot;Whole Labels\&quot;$\n&quot;</span><span class=cF0>,
<a name="l1380"></a> local_var format </span><span class=cF6>&quot;$CB,\&quot;Rename Local Var\&quot;$\n&quot;</span><span class=cF0>,
<a name="l1381"></a> prompt, pad;
<a name="l1382"></a> </span><span class=cF9>I64</span><span class=cF0> filter_lines format </span><span class=cF6>&quot;$DA,A=\&quot;Filter Lines:%d\&quot;$\n&quot;</span><span class=cF0>;
<a name="l1383"></a>};
<a name="l1384"></a>
<a name="l1385"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CEdFileName</span><span class=cF0>
<a name="l1386"></a>{
<a name="l1387"></a> </span><span class=cF9>CDirContext</span><span class=cF0> *dirc;
<a name="l1388"></a> </span><span class=cF1>U8</span><span class=cF0> name[</span><span class=cFE>256</span><span class=cF0>] format </span><span class=cF6>&quot;$DA-P,LEN=255,A=\&quot;FileName:%s\&quot;$&quot;</span><span class=cF0>;
<a name="l1389"></a>};
<a name="l1390"></a>
<a name="l1391"></a></span><span class=cF2>//</span><a href="https://zeal-operating-system.github.io/ZealOS/System/DolDoc/DocEd.CC.html#l228"><span class=cF4>Ed</span></a><span class=cF2>()</span><span class=cF0>
<a name="l1392"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>EDF_BAIL</span><span class=cF0> </span><span class=cFE>0x100</span><span class=cF0>
<a name="l1393"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>EDF_COLLAPSE</span><span class=cF0> </span><span class=cFE>0x200</span><span class=cF0>
<a name="l1394"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>EDF_UNCOLLAPSE</span><span class=cF0> </span><span class=cFE>0x400</span><span class=cF0>
<a name="l1395"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>EDF_WAS_WRITE</span><span class=cF0> </span><span class=cFE>0x800</span><span class=cF0> </span><span class=cF2>//Was exit ESC or SHIFT_ESC?</span><span class=cF0>
<a name="l1396"></a></span><span class=cF2>//Combines with </span><a href="https://zeal-operating-system.github.io/ZealOS/Kernel/KernelA.HH.html#l1362"><span class=cF4>Document Flags</span></a><span class=cF0>
<a name="l1397"></a>
<a name="l1398"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>EDf_BAIL</span><span class=cF0> </span><span class=cFE>8</span><span class=cF0>
<a name="l1399"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>EDf_COLLAPSE</span><span class=cF0> </span><span class=cFE>9</span><span class=cF0>
<a name="l1400"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>EDf_UNCOLLAPSE</span><span class=cF0> </span><span class=cFE>10</span><span class=cF0>
<a name="l1401"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>EDf_WAS_WRITE</span><span class=cF0> </span><span class=cFE>11</span><span class=cF0>
<a name="l1402"></a>
<a name="l1403"></a></span><span class=cF2>// DOC header flags</span><span class=cF0>
<a name="l1404"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCF_PLAIN_TEXT</span><span class=cF0> </span><span class=cFE>0x1</span><span class=cF0>
<a name="l1405"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCF_PLAIN_TEXT_TABS</span><span class=cF0> </span><span class=cFE>0x2</span><span class=cF0> </span><span class=cF2>//has '\t', not DOCT_TAB</span><span class=cF0>
<a name="l1406"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCF_AUTO_SAVE</span><span class=cF0> </span><span class=cFE>0x4</span><span class=cF0>
<a name="l1407"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCF_NO_CURSOR</span><span class=cF0> </span><span class=cFE>0x8</span><span class=cF0>
<a name="l1408"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCF_CARRIAGE_RETURN</span><span class=cF0> </span><span class=cFE>0x10</span><span class=cF0>
<a name="l1409"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCF_DBL_DOLLARS</span><span class=cF0> </span><span class=cFE>0x20</span><span class=cF0>
<a name="l1410"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCF_COLOR_NAMES</span><span class=cF0> </span><span class=cFE>0x40</span><span class=cF0>
<a name="l1411"></a></span><span class=cF2>//Reserved x1</span><span class=cF0>
<a name="l1412"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCF_BORDER_DOC</span><span class=cF0> </span><span class=cFE>0x100</span><span class=cF0>
<a name="l1413"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCF_FORM</span><span class=cF0> </span><span class=cFE>0x200</span><span class=cF0>
<a name="l1414"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCF_SIZE_MIN</span><span class=cF0> </span><span class=cFE>0x400</span><span class=cF0>
<a name="l1415"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCF_HIDE_CURSOR</span><span class=cF0> </span><span class=cFE>0x800</span><span class=cF0> </span><span class=cF2>//use </span><a href="https://zeal-operating-system.github.io/ZealOS/System/DolDoc/DocRecalcLib.CC.html#l160"><span class=cF4>DocCursor</span></a><span class=cF0>
<a name="l1416"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCF_DONT_HIGHLIGHT_CURSOR</span><span class=cF0> </span><span class=cFE>0x1000</span><span class=cF0> </span><span class=cF2>//use </span><a href="https://zeal-operating-system.github.io/ZealOS/System/DolDoc/DocRecalcLib.CC.html#l167"><span class=cF4>DocHighlightCursor</span></a><span class=cF0>
<a name="l1417"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCF_NO_SCROLL_BARS</span><span class=cF0> </span><span class=cFE>0x2000</span><span class=cF0> </span><span class=cF2>//use </span><a href="https://zeal-operating-system.github.io/ZealOS/System/DolDoc/DocRecalcLib.CC.html#l174"><span class=cF4>DocScroll</span></a><span class=cF0>
<a name="l1418"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCF_ALLOW_UNDO</span><span class=cF0> </span><span class=cFE>0x4000</span><span class=cF0>
<a name="l1419"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCF_DONT_SHOW</span><span class=cF0> </span><span class=cFE>0x8000</span><span class=cF0>
<a name="l1420"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCF_HAS_SONG</span><span class=cF0> </span><span class=cFE>0x10000</span><span class=cF0>
<a name="l1421"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCF_MORE</span><span class=cF0> </span><span class=cFE>0x20000</span><span class=cF0>
<a name="l1422"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCF_BWD_MOVEMENT</span><span class=cF0> </span><span class=cFE>0x40000</span><span class=cF0>
<a name="l1423"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCF_NULL_GRAB_SCROLL</span><span class=cF0> </span><span class=cFE>0x80000</span><span class=cF0>
<a name="l1424"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCF_DONT_SWAP_OUT</span><span class=cF0> </span><span class=cFE>0x100000</span><span class=cF0>
<a name="l1425"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCF_DO_FULL_REFRESH</span><span class=cF0> </span><span class=cFE>0x200000</span><span class=cF0>
<a name="l1426"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCF_BREAK_UNLOCKED</span><span class=cF0> </span><span class=cFE>0x400000</span><span class=cF0>
<a name="l1427"></a></span><span class=cF2>//Reserved x1</span><span class=cF0>
<a name="l1428"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCF_HIGHLIGHT</span><span class=cF0> </span><span class=cF3>DOCEF_HIGHLIGHT</span><span class=cF0>
<a name="l1429"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCF_WORD_WRAP</span><span class=cF0> </span><span class=cF3>DOCEF_WORD_WRAP</span><span class=cF0>
<a name="l1430"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCF_BLINK</span><span class=cF0> </span><span class=cF3>DOCEF_BLINK</span><span class=cF0>
<a name="l1431"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCF_INVERT</span><span class=cF0> </span><span class=cF3>DOCEF_INVERT</span><span class=cF0>
<a name="l1432"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCF_SEL</span><span class=cF0> </span><span class=cF3>DOCEF_SEL</span><span class=cF0>
<a name="l1433"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCF_UNDERLINE</span><span class=cF0> </span><span class=cF3>DOCEF_UNDERLINE</span><span class=cF0>
<a name="l1434"></a>
<a name="l1435"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCF_OVERSTRIKE</span><span class=cF0> </span><span class=cFE>0x100000000</span><span class=cF0>
<a name="l1436"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCF_IN_DOLLAR</span><span class=cF0> </span><span class=cFE>0x200000000</span><span class=cF0>
<a name="l1437"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCF_SUPERSCRIPT_MODE</span><span class=cF0> </span><span class=cFE>0x400000000</span><span class=cF0>
<a name="l1438"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCF_SUBSCRIPT_MODE</span><span class=cF0> </span><span class=cFE>0x800000000</span><span class=cF0>
<a name="l1439"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCF_UNDO_DIRTY</span><span class=cF0> </span><span class=cFE>0x1000000000</span><span class=cF0>
<a name="l1440"></a>
<a name="l1441"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCf_PLAIN_TEXT</span><span class=cF0> </span><span class=cFE>0</span><span class=cF0>
<a name="l1442"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCf_PLAIN_TEXT_TABS</span><span class=cF0> </span><span class=cFE>1</span><span class=cF0> </span><span class=cF2>//has '\t', not DOCT_TAB</span><span class=cF0>
<a name="l1443"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCf_AUTO_SAVE</span><span class=cF0> </span><span class=cFE>2</span><span class=cF0>
<a name="l1444"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCf_NO_CURSOR</span><span class=cF0> </span><span class=cFE>3</span><span class=cF0>
<a name="l1445"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCf_CARRIAGE_RETURN</span><span class=cF0> </span><span class=cFE>4</span><span class=cF0>
<a name="l1446"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCf_DBL_DOLLARS</span><span class=cF0> </span><span class=cFE>5</span><span class=cF0>
<a name="l1447"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCf_COLOR_NAMES</span><span class=cF0> </span><span class=cFE>6</span><span class=cF0>
<a name="l1448"></a></span><span class=cF2>//Reserved x1</span><span class=cF0>
<a name="l1449"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCf_BORDER_DOC</span><span class=cF0> </span><span class=cFE>8</span><span class=cF0>
<a name="l1450"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCf_FORM</span><span class=cF0> </span><span class=cFE>9</span><span class=cF0>
<a name="l1451"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCf_SIZE_MIN</span><span class=cF0> </span><span class=cFE>10</span><span class=cF0>
<a name="l1452"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCf_HIDE_CURSOR</span><span class=cF0> </span><span class=cFE>11</span><span class=cF0> </span><span class=cF2>//use </span><a href="https://zeal-operating-system.github.io/ZealOS/System/DolDoc/DocRecalcLib.CC.html#l160"><span class=cF4>DocCursor</span></a><span class=cF0>
<a name="l1453"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCf_DONT_HIGHLIGHT_CURSOR</span><span class=cF0> </span><span class=cFE>12</span><span class=cF0> </span><span class=cF2>//use </span><a href="https://zeal-operating-system.github.io/ZealOS/System/DolDoc/DocRecalcLib.CC.html#l167"><span class=cF4>DocHighlightCursor</span></a><span class=cF0>
<a name="l1454"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCf_NO_SCROLL_BARS</span><span class=cF0> </span><span class=cFE>13</span><span class=cF0> </span><span class=cF2>//use </span><a href="https://zeal-operating-system.github.io/ZealOS/System/DolDoc/DocRecalcLib.CC.html#l174"><span class=cF4>DocScroll</span></a><span class=cF0>
<a name="l1455"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCf_ALLOW_UNDO</span><span class=cF0> </span><span class=cFE>14</span><span class=cF0>
<a name="l1456"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCf_DONT_SHOW</span><span class=cF0> </span><span class=cFE>15</span><span class=cF0>
<a name="l1457"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCf_HAS_SONG</span><span class=cF0> </span><span class=cFE>16</span><span class=cF0>
<a name="l1458"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCf_MORE</span><span class=cF0> </span><span class=cFE>17</span><span class=cF0>
<a name="l1459"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCf_BWD_MOVEMENT</span><span class=cF0> </span><span class=cFE>18</span><span class=cF0>
<a name="l1460"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCf_NULL_GRAB_SCROLL</span><span class=cF0> </span><span class=cFE>19</span><span class=cF0>
<a name="l1461"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCf_DONT_SWAP_OUT</span><span class=cF0> </span><span class=cFE>20</span><span class=cF0>
<a name="l1462"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCf_DO_FULL_REFRESH</span><span class=cF0> </span><span class=cFE>21</span><span class=cF0>
<a name="l1463"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCf_BREAK_UNLOCKED</span><span class=cF0> </span><span class=cFE>22</span><span class=cF0>
<a name="l1464"></a></span><span class=cF2>//Reserved x1</span><span class=cF0>
<a name="l1465"></a>
<a name="l1466"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCf_HIGHLIGHT</span><span class=cF0> </span><span class=cF3>DOCEf_HIGHLIGHT</span><span class=cF0>
<a name="l1467"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCf_WORD_WRAP</span><span class=cF0> </span><span class=cF3>DOCEf_WORD_WRAP</span><span class=cF0>
<a name="l1468"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCf_BLINK</span><span class=cF0> </span><span class=cF3>DOCEf_BLINK</span><span class=cF0>
<a name="l1469"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCf_INVERT</span><span class=cF0> </span><span class=cF3>DOCEf_INVERT</span><span class=cF0>
<a name="l1470"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCf_SEL</span><span class=cF0> </span><span class=cF3>DOCEf_SEL</span><span class=cF0>
<a name="l1471"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCf_UNDERLINE</span><span class=cF0> </span><span class=cF3>DOCEf_UNDERLINE</span><span class=cF0>
<a name="l1472"></a>
<a name="l1473"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCf_OVERSTRIKE</span><span class=cF0> </span><span class=cFE>32</span><span class=cF0>
<a name="l1474"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCf_IN_DOLLAR</span><span class=cF0> </span><span class=cFE>33</span><span class=cF0>
<a name="l1475"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCf_SUPERSCRIPT_MODE</span><span class=cF0> </span><span class=cFE>34</span><span class=cF0>
<a name="l1476"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCf_SUBSCRIPT_MODE</span><span class=cF0> </span><span class=cFE>35</span><span class=cF0>
<a name="l1477"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCf_UNDO_DIRTY</span><span class=cF0> </span><span class=cFE>36</span><span class=cF0>
<a name="l1478"></a>
<a name="l1479"></a></span><span class=cF2>//locked flags</span><span class=cF0>
<a name="l1480"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOClf_LOCKED</span><span class=cF0> </span><span class=cFE>0</span><span class=cF0>
<a name="l1481"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CDocUndo</span><span class=cF0>
<a name="l1482"></a>{
<a name="l1483"></a> </span><span class=cF9>CDocUndo</span><span class=cF0> *next, *last;
<a name="l1484"></a> </span><span class=cF9>I64</span><span class=cF0> size, doc_flags, time_stamp;
<a name="l1485"></a> </span><span class=cF1>U8</span><span class=cF0> *body;
<a name="l1486"></a>};
<a name="l1487"></a>
<a name="l1488"></a></span><span class=cF2>//See </span><a href="https://zeal-operating-system.github.io/ZealOS/System/DolDoc/DocForm.CC.html#l363"><span class=cF4>DocMenu</span></a><span class=cF2>()</span><span class=cF0>
<a name="l1489"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOCM_CANCEL</span><span class=cF0> (-</span><span class=cFE>1</span><span class=cF0>)
<a name="l1490"></a>
<a name="l1491"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DOC_SIGNATURE_VAL</span><span class=cF0> </span><span class=cF6>'DocS'</span><span class=cF0>
<a name="l1492"></a>
<a name="l1493"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RECALCt_NORMAL</span><span class=cF0> </span><span class=cFE>0x00</span><span class=cF0>
<a name="l1494"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RECALCt_FIND_CURSOR</span><span class=cF0> </span><span class=cFE>0x01</span><span class=cF0>
<a name="l1495"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RECALCt_TO_SCREEN</span><span class=cF0> </span><span class=cFE>0x02</span><span class=cF0>
<a name="l1496"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RECALCG_MASK</span><span class=cF0> </span><span class=cFE>0xFF</span><span class=cF0>
<a name="l1497"></a>
<a name="l1498"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RECALCF_HAS_CURSOR</span><span class=cF0> </span><span class=cFE>0x100</span><span class=cF0>
<a name="l1499"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RECALCF_ADD_CURSOR</span><span class=cF0> </span><span class=cFE>0x200</span><span class=cF0>
<a name="l1500"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RECALCF_TO_HTML</span><span class=cF0> </span><span class=cFE>0x400</span><span class=cF0>
<a name="l1501"></a>
<a name="l1502"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CDoc</span><span class=cF0> </span><span class=cF2>//Linked Text File header</span><span class=cF0>
<a name="l1503"></a>{</span><span class=cF2>//See </span><span class=cF4><u>Doc</u></span><span class=cF2> for documentation.</span><span class=cF0>
<a name="l1504"></a> </span><span class=cF9>CDocEntryBase</span><span class=cF0> head;
<a name="l1505"></a> </span><span class=cF9>I64</span><span class=cF0> flags, locked_flags;
<a name="l1506"></a> </span><span class=cF9>CDocEntry</span><span class=cF0> *cur_entry, *old_cur_entry;
<a name="l1507"></a> </span><span class=cF9>I32</span><span class=cF0> cur_col, old_cur_col, line_start_col, top_line_num, dollar_buf_size, dollar_buf_ptr;
<a name="l1508"></a> </span><span class=cF1>U8</span><span class=cF0> *dollar_buf; </span><span class=cF2>//When entering $ cmds, it buffers them until the end $.</span><span class=cF0>
<a name="l1509"></a>
<a name="l1510"></a> </span><span class=cF9>CTask</span><span class=cF0> *win_task, *mem_task, *owning_task;
<a name="l1511"></a> </span><span class=cF9>I32</span><span class=cF0> page_line_num, undo_count,
<a name="l1512"></a> x, y, min_x, max_x, min_y, max_y;
<a name="l1513"></a> </span><span class=cF9>I64</span><span class=cF0> line, col, best_d,
<a name="l1514"></a> old_win_top, old_win_bottom, old_win_left, old_win_right,
<a name="l1515"></a> cmd_U8;
<a name="l1516"></a> </span><span class=cF9>U32</span><span class=cF0> doc_signature, cur_bin_num;
<a name="l1517"></a> </span><span class=cF9>I64</span><span class=cF0> max_entries, updates_count;
<a name="l1518"></a> </span><span class=cF9>CEdFindText</span><span class=cF0> *find_replace;
<a name="l1519"></a>
<a name="l1520"></a> </span><span class=cF9>CEdFileName</span><span class=cF0> filename;
<a name="l1521"></a> </span><span class=cF9>I64</span><span class=cF0> file_attr;
<a name="l1522"></a> </span><span class=cF9>I64</span><span class=cF0> (*left_click_link)(</span><span class=cF9>CDoc</span><span class=cF0> *doc, </span><span class=cF9>CDocEntry</span><span class=cF0> *doc_e);
<a name="l1523"></a> </span><span class=cF9>I64</span><span class=cF0> (*right_click_link)(</span><span class=cF9>CDoc</span><span class=cF0> *doc, </span><span class=cF9>CDocEntry</span><span class=cF0> *doc_e);
<a name="l1524"></a>
<a name="l1525"></a> </span><span class=cF2>//See </span><a href="https://zeal-operating-system.github.io/ZealOS/Apps/Psalmody/JukeBox.CC.html#l1"><span class=cF4>::/Apps/Psalmody/JukeBox.CC</span></a><span class=cF0>
<a name="l1526"></a> </span><span class=cF1>U8</span><span class=cF0> *user_put_data; </span><span class=cF2>//Passed to user_put_key() and user_put_s()</span><span class=cF0>
<a name="l1527"></a> </span><span class=cF1>Bool</span><span class=cF0> (*user_put_key)(</span><span class=cF9>CDoc</span><span class=cF0> *doc, </span><span class=cF1>U8</span><span class=cF0> *data, </span><span class=cF9>I64</span><span class=cF0> ch, </span><span class=cF9>I64</span><span class=cF0> sc);
<a name="l1528"></a> </span><span class=cF1>Bool</span><span class=cF0> (*user_put_s)(</span><span class=cF9>CDoc</span><span class=cF0> *doc, </span><span class=cF1>U8</span><span class=cF0> *data, </span><span class=cF1>U8</span><span class=cF0> *st);
<a name="l1529"></a>
<a name="l1530"></a> </span><span class=cF9>CDoc</span><span class=cF0> *parent_doc; </span><span class=cF2>//(When browsing deeper, opening deeper docs.)</span><span class=cF0>
<a name="l1531"></a> </span><span class=cF9>U64</span><span class=cF0> desc; </span><span class=cF2>//8 characters. See </span><a href="https://zeal-operating-system.github.io/ZealOS/System/DolDoc/DocRecalcLib.CC.html#l51"><span class=cF4>DocBorderListDraw</span></a><span class=cF2>().</span><span class=cF0>
<a name="l1532"></a>
<a name="l1533"></a> </span><span class=cF9>CDocBin</span><span class=cF0> bin_head;
<a name="l1534"></a> </span><span class=cF9>CDocSettings</span><span class=cF0> settings_head;
<a name="l1535"></a> </span><span class=cF9>CDocUndo</span><span class=cF0> undo_head;
<a name="l1536"></a>
<a name="l1537"></a> </span><span class=cF9>I64</span><span class=cF0> user_data;
<a name="l1538"></a>#</span><span class=cF1>assert</span><span class=cF0> !($&amp;</span><span class=cFE>7</span><span class=cF0>)
<a name="l1539"></a>};
<a name="l1540"></a>
<a name="l1541"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>&quot;Windows&quot;</span><span class=cF0>
<a name="l1542"></a></span><span class=cF2>/*</span><span class=cF0>
<a name="l1543"></a></span><span class=cF2>Fs-&gt;win_inhibit mask</span><span class=cF0>
<a name="l1544"></a>
<a name="l1545"></a></span><span class=cF2>Some inhibit actions on the task itself.</span><span class=cF0>
<a name="l1546"></a></span><span class=cF2>Some inhibit actions if the focus task</span><span class=cF0>
<a name="l1547"></a></span><span class=cF2>tries to do something.</span><span class=cF0>
<a name="l1548"></a></span><span class=cF2>*/</span><span class=cF0>
<a name="l1549"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>WIF_SELF_FOCUS</span><span class=cF0> </span><span class=cFE>0x0001</span><span class=cF0> </span><span class=cF2>//If active this task cannot have focus</span><span class=cF0>
<a name="l1550"></a></span><span class=cF2>//MENU</span><span class=cF0> </span><span class=cF2>0x0002</span><span class=cF0>
<a name="l1551"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>WIF_SELF_CTRLS</span><span class=cF0> </span><span class=cFE>0x0004</span><span class=cF0>
<a name="l1552"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>WIF_SELF_MS_L</span><span class=cF0> </span><span class=cFE>0x0008</span><span class=cF0>
<a name="l1553"></a></span><span class=cF2>//MS_L_D</span><span class=cF0> </span><span class=cF2>0x0010</span><span class=cF0>
<a name="l1554"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>WIF_SELF_MS_R</span><span class=cF0> </span><span class=cFE>0x0020</span><span class=cF0>
<a name="l1555"></a></span><span class=cF2>//MS_R_D</span><span class=cF0> </span><span class=cF2>0x0040</span><span class=cF0>
<a name="l1556"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>WIF_SELF_MS_WHEEL</span><span class=cF0> </span><span class=cFE>0x0080</span><span class=cF0> </span><span class=cF2>//Does nothing, yet</span><span class=cF0>
<a name="l1557"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>WIF_SELF_BORDER</span><span class=cF0> </span><span class=cFE>0x0100</span><span class=cF0>
<a name="l1558"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>WIF_SELF_GRAB_SCROLL</span><span class=cF0> </span><span class=cFE>0x0200</span><span class=cF0>
<a name="l1559"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>WIF_SELF_DOC</span><span class=cF0> </span><span class=cFE>0x0400</span><span class=cF0>
<a name="l1560"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>WIF_SELF_ODE</span><span class=cF0> </span><span class=cFE>0x0800</span><span class=cF0>
<a name="l1561"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>WIF_SELF_KEY_DESC</span><span class=cF0> </span><span class=cFE>0x1000</span><span class=cF0>
<a name="l1562"></a></span><span class=cF2>//FOCUS </span><span class=cF0> </span><span class=cF2>0x00010000</span><span class=cF0>
<a name="l1563"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>WIF_FOCUS_TASK_MENU</span><span class=cF0> </span><span class=cFE>0x00020000</span><span class=cF0>
<a name="l1564"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>WIF_FOCUS_TASK_CTRLS</span><span class=cF0> </span><span class=cFE>0x00040000</span><span class=cF0>
<a name="l1565"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>WIF_FOCUS_TASK_MS_L</span><span class=cF0> </span><span class=cFE>0x00080000</span><span class=cF0>
<a name="l1566"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>WIF_FOCUS_TASK_MS_L_D</span><span class=cF0> </span><span class=cFE>0x00100000</span><span class=cF0>
<a name="l1567"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>WIF_FOCUS_TASK_MS_R</span><span class=cF0> </span><span class=cFE>0x00200000</span><span class=cF0>
<a name="l1568"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>WIF_FOCUS_TASK_MS_R_D</span><span class=cF0> </span><span class=cFE>0x00400000</span><span class=cF0>
<a name="l1569"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>WIF_FOCUS_TASK_MS_WHEEL</span><span class=cF0> </span><span class=cFE>0x00800000</span><span class=cF0> </span><span class=cF2>//Does nothing, yet</span><span class=cF0>
<a name="l1570"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>WIF_FOCUS_TASK_BORDER</span><span class=cF0> </span><span class=cFE>0x01000000</span><span class=cF0>
<a name="l1571"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>WIF_FOCUS_TASK_GRAB_SCROLL</span><span class=cF0> </span><span class=cFE>0x02000000</span><span class=cF0>
<a name="l1572"></a>
<a name="l1573"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>WIG_DBL_CLICK</span><span class=cF0> (</span><span class=cF3>WIF_FOCUS_TASK_MS_L_D</span><span class=cF0> | </span><span class=cF3>WIF_FOCUS_TASK_MS_R_D</span><span class=cF0>)
<a name="l1574"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>WIG_TASK_DEFAULT</span><span class=cF0> (</span><span class=cF3>WIF_FOCUS_TASK_MENU</span><span class=cF0> | </span><span class=cF3>WIG_DBL_CLICK</span><span class=cF0> | </span><span class=cFE>0xFFFF</span><span class=cF0> - </span><span class=cF3>WIF_SELF_DOC</span><span class=cF0> - </span><span class=cF3>WIF_SELF_ODE</span><span class=cF0>)
<a name="l1575"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>WIG_NO_FOCUS_TASK_DEFAULT</span><span class=cF0> (</span><span class=cF3>WIG_TASK_DEFAULT</span><span class=cF0> - </span><span class=cF3>WIF_SELF_BORDER</span><span class=cF0> - </span><span class=cF3>WIF_SELF_MS_L</span><span class=cF0> - </span><span class=cF3>WIF_SELF_MS_R</span><span class=cF0> - </span><span class=cF3>WIG_DBL_CLICK</span><span class=cF0>)
<a name="l1576"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>WIG_USER_TASK_DEFAULT</span><span class=cF0> </span><span class=cF3>WIF_SELF_KEY_DESC</span><span class=cF0>
<a name="l1577"></a>
<a name="l1578"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>WIf_SELF_FOCUS</span><span class=cF0> </span><span class=cFE>0</span><span class=cF0>
<a name="l1579"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>WIf_SELF_CTRLS</span><span class=cF0> </span><span class=cFE>2</span><span class=cF0>
<a name="l1580"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>WIf_SELF_MS_L</span><span class=cF0> </span><span class=cFE>3</span><span class=cF0>
<a name="l1581"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>WIf_SELF_MS_R</span><span class=cF0> </span><span class=cFE>5</span><span class=cF0>
<a name="l1582"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>WIf_SELF_MS_WHEEL</span><span class=cF0> </span><span class=cFE>7</span><span class=cF0>
<a name="l1583"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>WIf_SELF_BORDER</span><span class=cF0> </span><span class=cFE>8</span><span class=cF0>
<a name="l1584"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>WIf_SELF_GRAB_SCROLL</span><span class=cF0> </span><span class=cFE>9</span><span class=cF0>
<a name="l1585"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>WIf_SELF_DOC</span><span class=cF0> </span><span class=cFE>10</span><span class=cF0>
<a name="l1586"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>WIf_SELF_ODE</span><span class=cF0> </span><span class=cFE>11</span><span class=cF0>
<a name="l1587"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>WIf_SELF_KEY_DESC</span><span class=cF0> </span><span class=cFE>12</span><span class=cF0>
<a name="l1588"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>WIf_FOCUS_TASK_MENU</span><span class=cF0> </span><span class=cFE>17</span><span class=cF0>
<a name="l1589"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>WIf_FOCUS_TASK_CTRLS</span><span class=cF0> </span><span class=cFE>18</span><span class=cF0>
<a name="l1590"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>WIf_FOCUS_TASK_MS_L</span><span class=cF0> </span><span class=cFE>19</span><span class=cF0>
<a name="l1591"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>WIf_FOCUS_TASK_MS_L_D</span><span class=cF0> </span><span class=cFE>20</span><span class=cF0>
<a name="l1592"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>WIf_FOCUS_TASK_MS_R</span><span class=cF0> </span><span class=cFE>21</span><span class=cF0>
<a name="l1593"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>WIf_FOCUS_TASK_MS_R_D</span><span class=cF0> </span><span class=cFE>22</span><span class=cF0>
<a name="l1594"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>WIf_FOCUS_TASK_MS_WHEEL</span><span class=cF0> </span><span class=cFE>23</span><span class=cF0>
<a name="l1595"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>WIf_FOCUS_TASK_BORDER</span><span class=cF0> </span><span class=cFE>24</span><span class=cF0>
<a name="l1596"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>WIf_FOCUS_TASK_GRAB_SCROLL</span><span class=cF0> </span><span class=cFE>25</span><span class=cF0>
<a name="l1597"></a>
<a name="l1598"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CWinMgrTimingGlobals</span><span class=cF0>
<a name="l1599"></a>{
<a name="l1600"></a> </span><span class=cF9>I64</span><span class=cF0> last_total_jiffies,
<a name="l1601"></a> last_idle_pt_hits[</span><span class=cF3>MP_PROCESSORS_NUM</span><span class=cF0>],
<a name="l1602"></a> last_swap_counter[</span><span class=cF3>MP_PROCESSORS_NUM</span><span class=cF0>];
<a name="l1603"></a> </span><span class=cF1>F64</span><span class=cF0> last_calc_idle_time, calc_idle_delta_time;
<a name="l1604"></a> </span><span class=cF9>I64</span><span class=cF0> calc_idle_count;
<a name="l1605"></a>};
<a name="l1606"></a>
<a name="l1607"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>WINMGR_FPS</span><span class=cF0> (</span><span class=cFE>60000</span><span class=cF0>.</span><span class=cFE>0</span><span class=cF0> / </span><span class=cFE>1001</span><span class=cF0>)
<a name="l1608"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>WINMGR_PERIOD</span><span class=cF0> (</span><span class=cFE>1001</span><span class=cF0> / </span><span class=cFE>60000</span><span class=cF0>.</span><span class=cFE>0</span><span class=cF0>)
<a name="l1609"></a>
<a name="l1610"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CWinMgrGlobals</span><span class=cF0>
<a name="l1611"></a>{
<a name="l1612"></a> </span><span class=cF9>I64</span><span class=cF0> updates;
<a name="l1613"></a> </span><span class=cF1>F64</span><span class=cF0> ode_time,
<a name="l1614"></a> last_ode_time,
<a name="l1615"></a> fps, </span><span class=cF2>//You can read but not write this. You have no control.</span><span class=cF0>
<a name="l1616"></a> ideal_refresh_tS,
<a name="l1617"></a> last_refresh_tS;
<a name="l1618"></a> </span><span class=cF9>CWinMgrTimingGlobals</span><span class=cF0> *t;
<a name="l1619"></a> </span><span class=cF1>Bool</span><span class=cF0> show_menu, grab_scroll, grab_scroll_closed;
<a name="l1620"></a>};
<a name="l1621"></a>
<a name="l1622"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>&quot;AutoComplete&quot;</span><span class=cF0>
<a name="l1623"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ACf_INIT_IN_PROGRESS</span><span class=cF0> </span><span class=cFE>0</span><span class=cF0>
<a name="l1624"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ACf_LAST_WAS_KEYMAP</span><span class=cF0> </span><span class=cFE>1</span><span class=cF0>
<a name="l1625"></a>
<a name="l1626"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>AC_FILLINS_NUM</span><span class=cF0> </span><span class=cFE>12</span><span class=cF0>
<a name="l1627"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CAutoCompleteGlobals</span><span class=cF0>
<a name="l1628"></a>{
<a name="l1629"></a> </span><span class=cF9>I64</span><span class=cF0> col, row, old_col, old_row, num_words;
<a name="l1630"></a> </span><span class=cF9>CHashTable</span><span class=cF0> *hash_table;
<a name="l1631"></a> </span><span class=cF1>U8</span><span class=cF0> *cur_word;
<a name="l1632"></a> </span><span class=cF9>I64</span><span class=cF0> flags;
<a name="l1633"></a> </span><span class=cF9>CTask</span><span class=cF0> *task;
<a name="l1634"></a> </span><span class=cF9>I64</span><span class=cF0> partial_len, num_fillins,
<a name="l1635"></a> fillin_hits [</span><span class=cF3>AC_FILLINS_NUM</span><span class=cF0> + </span><span class=cFE>1</span><span class=cF0>];
<a name="l1636"></a> </span><span class=cF9>CHashAC</span><span class=cF0> *fillin_matches[</span><span class=cF3>AC_FILLINS_NUM</span><span class=cF0> + </span><span class=cFE>1</span><span class=cF0>];
<a name="l1637"></a>};
<a name="l1638"></a>
<a name="l1639"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>&quot;AutoComplete/Dictionary&quot;</span><span class=cF0>
<a name="l1640"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ACD_WORD_FILENAME</span><span class=cF0> </span><span class=cF6>&quot;/System/AutoComplete/ACWords.DATA&quot;</span><span class=cF0>
<a name="l1641"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ACD_DEF_FILENAME</span><span class=cF0> </span><span class=cF6>&quot;/System/AutoComplete/ACDefs.DATA&quot;</span><span class=cF0>
<a name="l1642"></a>
<a name="l1643"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ACD_H1</span><span class=cF0> </span><span class=cFE>0</span><span class=cF0>
<a name="l1644"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ACD_H1_END</span><span class=cF0> </span><span class=cFE>1</span><span class=cF0>
<a name="l1645"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ACD_DEF</span><span class=cF0> </span><span class=cFE>2</span><span class=cF0>
<a name="l1646"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ACD_DEF_END</span><span class=cF0> </span><span class=cFE>3</span><span class=cF0>
<a name="l1647"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ACD_PRONUNCIATION</span><span class=cF0> </span><span class=cFE>4</span><span class=cF0>
<a name="l1648"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ACD_PRONUNCIATION_END</span><span class=cF0> </span><span class=cFE>5</span><span class=cF0>
<a name="l1649"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ACD_POS</span><span class=cF0> </span><span class=cFE>6</span><span class=cF0>
<a name="l1650"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ACD_POS_END</span><span class=cF0> </span><span class=cFE>7</span><span class=cF0>
<a name="l1651"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ACD_EXTRA</span><span class=cF0> </span><span class=cFE>8</span><span class=cF0>
<a name="l1652"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ACD_EXTRA_END</span><span class=cF0> </span><span class=cFE>9</span><span class=cF0>
<a name="l1653"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ACD_BLK_SIZE</span><span class=cF0> </span><span class=cFE>0x4000</span><span class=cF0>
<a name="l1654"></a>
<a name="l1655"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ACD_END_CHAR</span><span class=cF0> </span><span class=cFE>0x00</span><span class=cF0>
<a name="l1656"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ACD_WORD_CHAR</span><span class=cF0> </span><span class=cFE>0x01</span><span class=cF0>
<a name="l1657"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ACD_DEF_CHAR</span><span class=cF0> </span><span class=cFE>0x02</span><span class=cF0>
<a name="l1658"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ACD_PRONUNCIATION_CHAR</span><span class=cF0> </span><span class=cFE>0x03</span><span class=cF0>
<a name="l1659"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ACD_POS_CHAR</span><span class=cF0> </span><span class=cFE>0x04</span><span class=cF0>
<a name="l1660"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ACD_EXTRA_CHAR</span><span class=cF0> </span><span class=cFE>0x05</span><span class=cF0>
<a name="l1661"></a>
<a name="l1662"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ACD_FILLINS_NUM</span><span class=cF0> </span><span class=cFE>10</span><span class=cF0>
<a name="l1663"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CAutoCompleteDictGlobals</span><span class=cF0>
<a name="l1664"></a>{
<a name="l1665"></a> </span><span class=cF1>U8</span><span class=cF0> *word_list;
<a name="l1666"></a> </span><span class=cF9>I64</span><span class=cF0> word_list_size, num_words, num_fillins;
<a name="l1667"></a> </span><span class=cF1>U8</span><span class=cF0> *fillins[</span><span class=cF3>ACD_FILLINS_NUM</span><span class=cF0>];
<a name="l1668"></a> </span><span class=cF1>Bool</span><span class=cF0> has_words, has_defs;
<a name="l1669"></a>};
<a name="l1670"></a>
<a name="l1671"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>&quot;Compiler/Directive&quot;</span><span class=cF0>
<a name="l1672"></a></span><span class=cF2>//Compiler </span><a href="https://zeal-operating-system.github.io/ZealOS/Compiler/CMisc.CC.html#l1"><span class=cF4>Option</span></a><span class=cF2>()s</span><span class=cF0>
<a name="l1673"></a></span><span class=cF2>//You might need to do #exe {Option();}</span><span class=cF0>
<a name="l1674"></a></span><span class=cF2>//Note: The #exe stmt is lexed-ahead,</span><span class=cF0>
<a name="l1675"></a></span><span class=cF2>//so it takes effect earlier than you might expect.</span><span class=cF0>
<a name="l1676"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>OPTf_ECHO</span><span class=cF0> </span><span class=cFE>0</span><span class=cF0>
<a name="l1677"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>OPTf_TRACE</span><span class=cF0> </span><span class=cFE>1</span><span class=cF0>
<a name="l1678"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>OPTf_WARN_UNUSED_VAR</span><span class=cF0> </span><span class=cFE>2</span><span class=cF0> </span><span class=cF2>//Applied to funs, not statements</span><span class=cF0>
<a name="l1679"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>OPTf_WARN_PAREN</span><span class=cF0> </span><span class=cFE>3</span><span class=cF0> </span><span class=cF2>//Warn unnecessary parens</span><span class=cF0>
<a name="l1680"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>OPTf_WARN_DUP_TYPES</span><span class=cF0> </span><span class=cFE>4</span><span class=cF0> </span><span class=cF2>//Warn dup local var type statements</span><span class=cF0>
<a name="l1681"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>OPTf_WARN_HEADER_MISMATCH</span><span class=cF0> </span><span class=cFE>5</span><span class=cF0>
<a name="l1682"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>OPTf_EXTERNS_TO_IMPORTS</span><span class=cF0> </span><span class=cFE>6</span><span class=cF0>
<a name="l1683"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>OPTf_KEEP_PRIVATE</span><span class=cF0> </span><span class=cFE>7</span><span class=cF0>
<a name="l1684"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>OPTf_NO_REG_VAR</span><span class=cF0> </span><span class=cFE>8</span><span class=cF0> </span><span class=cF2>//Applied to funs, not statements</span><span class=cF0>
<a name="l1685"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>OPTf_GLOBALS_ON_DATA_HEAP</span><span class=cF0> </span><span class=cFE>9</span><span class=cF0>
<a name="l1686"></a></span><span class=cF2>//Disable 10-byte float consts for pi,log2_10,log10_2,loge_2</span><span class=cF0>
<a name="l1687"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>OPTf_NO_BUILTIN_CONST</span><span class=cF0> </span><span class=cFE>10</span><span class=cF0> </span><span class=cF2>//Applied to funs, not statements</span><span class=cF0>
<a name="l1688"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>OPTf_USE_IMM64</span><span class=cF0> </span><span class=cFE>11</span><span class=cF0> </span><span class=cF2>//Not completely implemented</span><span class=cF0>
<a name="l1689"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>OPTf_DECIMAL_ONLY</span><span class=cF0> </span><span class=cFE>12</span><span class=cF0> </span><span class=cF2>//Only allow decimal numbers (no 0x or 0b prefixed numbers)</span><span class=cF0>
<a name="l1690"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>OPTf_NO_FLOATS</span><span class=cF0> </span><span class=cFE>13</span><span class=cF0> </span><span class=cF2>//No floating point numbers allowed</span><span class=cF0>
<a name="l1691"></a>
<a name="l1692"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>OPTF_ECHO</span><span class=cF0> (</span><span class=cFE>1</span><span class=cF0> &lt;&lt; </span><span class=cF3>OPTf_ECHO</span><span class=cF0>)
<a name="l1693"></a>
<a name="l1694"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>&quot;Compiler/Intermediate Code&quot;</span><span class=cF0>
<a name="l1695"></a></span><span class=cF2>//See </span><a href="https://zeal-operating-system.github.io/ZealOS/Compiler/CInit.CC.html#l235"><span class=cF4>ST_RAW_TYPES</span></a><span class=cF0>
<a name="l1696"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RT_I0</span><span class=cF0> </span><span class=cFE>2</span><span class=cF0>
<a name="l1697"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RT_U0</span><span class=cF0> </span><span class=cFE>3</span><span class=cF0>
<a name="l1698"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RT_I8</span><span class=cF0> </span><span class=cFE>4</span><span class=cF0>
<a name="l1699"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RT_U8</span><span class=cF0> </span><span class=cFE>5</span><span class=cF0>
<a name="l1700"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RT_I16</span><span class=cF0> </span><span class=cFE>6</span><span class=cF0>
<a name="l1701"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RT_U16</span><span class=cF0> </span><span class=cFE>7</span><span class=cF0>
<a name="l1702"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RT_I32</span><span class=cF0> </span><span class=cFE>8</span><span class=cF0>
<a name="l1703"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RT_U32</span><span class=cF0> </span><span class=cFE>9</span><span class=cF0>
<a name="l1704"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RT_I64</span><span class=cF0> </span><span class=cFE>10</span><span class=cF0>
<a name="l1705"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RT_PTR</span><span class=cF0> </span><span class=cFE>10</span><span class=cF0> </span><span class=cF2>//Signed to allow negative error codes. </span><a href="https://zeal-operating-system.github.io/ZealOS/Kernel/KernelA.HH.html#l1489"><span class=cF4>DOCM_CANCEL</span></a><span class=cF0>
<a name="l1706"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RT_U64</span><span class=cF0> </span><span class=cFE>11</span><span class=cF0>
<a name="l1707"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RT_F32</span><span class=cF0> </span><span class=cFE>12</span><span class=cF0> </span><span class=cF2>//Not implemented</span><span class=cF0>
<a name="l1708"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RT_UF32</span><span class=cF0> </span><span class=cFE>13</span><span class=cF0> </span><span class=cF2>//Not implemented, Fictitious</span><span class=cF0>
<a name="l1709"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RT_F64</span><span class=cF0> </span><span class=cFE>14</span><span class=cF0>
<a name="l1710"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RT_UF64</span><span class=cF0> </span><span class=cFE>15</span><span class=cF0> </span><span class=cF2>//Fictitious</span><span class=cF0>
<a name="l1711"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RT_RTS_NUM</span><span class=cF0> </span><span class=cFE>16</span><span class=cF0>
<a name="l1712"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RTF_UNSIGNED</span><span class=cF0> </span><span class=cFE>1</span><span class=cF0>
<a name="l1713"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RTG_MASK</span><span class=cF0> </span><span class=cFE>0xFF</span><span class=cF0>
<a name="l1714"></a>
<a name="l1715"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>MDf_STACK</span><span class=cF0> </span><span class=cFE>8</span><span class=cF0>
<a name="l1716"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>MDf_IMM</span><span class=cF0> </span><span class=cFE>9</span><span class=cF0>
<a name="l1717"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>MDf_REG</span><span class=cF0> </span><span class=cFE>10</span><span class=cF0>
<a name="l1718"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>MDf_DISP</span><span class=cF0> </span><span class=cFE>11</span><span class=cF0>
<a name="l1719"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>MDf_SIB</span><span class=cF0> </span><span class=cFE>12</span><span class=cF0>
<a name="l1720"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>MDf_RIP_DISP32</span><span class=cF0> </span><span class=cFE>13</span><span class=cF0>
<a name="l1721"></a>
<a name="l1722"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>MDF_NULL</span><span class=cF0> </span><span class=cFE>0x0000</span><span class=cF0>
<a name="l1723"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>MDF_STACK</span><span class=cF0> </span><span class=cFE>0x0100</span><span class=cF0>
<a name="l1724"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>MDF_IMM</span><span class=cF0> </span><span class=cFE>0x0200</span><span class=cF0>
<a name="l1725"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>MDF_REG</span><span class=cF0> </span><span class=cFE>0x0400</span><span class=cF0>
<a name="l1726"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>MDF_DISP</span><span class=cF0> </span><span class=cFE>0x0800</span><span class=cF0>
<a name="l1727"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>MDF_SIB</span><span class=cF0> </span><span class=cFE>0x1000</span><span class=cF0>
<a name="l1728"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>MDF_RIP_DISP32</span><span class=cF0> </span><span class=cFE>0x2000</span><span class=cF0>
<a name="l1729"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>MDG_MASK</span><span class=cF0> </span><span class=cFE>0xFF00</span><span class=cF0>
<a name="l1730"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>MDG_REG_DISP_SIB</span><span class=cF0> (</span><span class=cF3>MDF_REG</span><span class=cF0> | </span><span class=cF3>MDF_DISP</span><span class=cF0> | </span><span class=cF3>MDF_SIB</span><span class=cF0>)
<a name="l1731"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>MDG_DISP_SIB_RIP</span><span class=cF0> (</span><span class=cF3>MDF_DISP</span><span class=cF0> | </span><span class=cF3>MDF_SIB</span><span class=cF0> | </span><span class=cF3>MDF_RIP_DISP32</span><span class=cF0>)
<a name="l1732"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>MDG_REG_DISP_SIB_RIP</span><span class=cF0> (</span><span class=cF3>MDF_REG</span><span class=cF0> | </span><span class=cF3>MDG_DISP_SIB_RIP</span><span class=cF0>)
<a name="l1733"></a>
<a name="l1734"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ICF_RES_TO_F64</span><span class=cF0> </span><span class=cFE>0x000000001</span><span class=cF0>
<a name="l1735"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ICF_RES_TO_INT</span><span class=cF0> </span><span class=cFE>0x000000002</span><span class=cF0>
<a name="l1736"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ICF_ARG1_TO_F64</span><span class=cF0> </span><span class=cFE>0x000000004</span><span class=cF0>
<a name="l1737"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ICF_ARG1_TO_INT</span><span class=cF0> </span><span class=cFE>0x000000008</span><span class=cF0>
<a name="l1738"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ICF_ARG2_TO_F64</span><span class=cF0> </span><span class=cFE>0x000000010</span><span class=cF0>
<a name="l1739"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ICF_ARG2_TO_INT</span><span class=cF0> </span><span class=cFE>0x000000020</span><span class=cF0>
<a name="l1740"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ICF_USE_F64</span><span class=cF0> </span><span class=cFE>0x000000040</span><span class=cF0>
<a name="l1741"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ICF_USE_UNSIGNED</span><span class=cF0> </span><span class=cFE>0x000000080</span><span class=cF0>
<a name="l1742"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ICF_USE_INT</span><span class=cF0> </span><span class=cFE>0x000000100</span><span class=cF0> </span><span class=cF2>//highest priority</span><span class=cF0>
<a name="l1743"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ICF_RES_NOT_USED</span><span class=cF0> </span><span class=cFE>0x000000200</span><span class=cF0>
<a name="l1744"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ICF_CODE_FINAL</span><span class=cF0> </span><span class=cFE>0x000000400</span><span class=cF0>
<a name="l1745"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ICF_BY_VAL</span><span class=cF0> </span><span class=cFE>0x000000800</span><span class=cF0> </span><span class=cF2>//By value, not ref.</span><span class=cF0>
<a name="l1746"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ICF_SHORT_JMP</span><span class=cF0> </span><span class=cFE>0x000001000</span><span class=cF0>
<a name="l1747"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ICF_PUSH_RES</span><span class=cF0> </span><span class=cFE>0x000002000</span><span class=cF0>
<a name="l1748"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ICF_PASS_TRACE</span><span class=cF0> </span><span class=cFE>0x000004000</span><span class=cF0>
<a name="l1749"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ICF_RES_WAS_STACK</span><span class=cF0> </span><span class=cFE>0x000008000</span><span class=cF0>
<a name="l1750"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ICF_ARG1_WAS_STACK</span><span class=cF0> </span><span class=cFE>0x000010000</span><span class=cF0>
<a name="l1751"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ICF_ARG2_WAS_STACK</span><span class=cF0> </span><span class=cFE>0x000020000</span><span class=cF0>
<a name="l1752"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ICF_PUSH_CMP</span><span class=cF0> </span><span class=cFE>0x000040000</span><span class=cF0> </span><span class=cF2>//for 50&lt;i&lt;j&lt;=100 exps</span><span class=cF0>
<a name="l1753"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ICF_POP_CMP</span><span class=cF0> </span><span class=cFE>0x000080000</span><span class=cF0> </span><span class=cF2>//for 50&lt;i&lt;j&lt;=100 exps</span><span class=cF0>
<a name="l1754"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ICF_SWAP</span><span class=cF0> </span><span class=cFE>0x000100000</span><span class=cF0>
<a name="l1755"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ICf_DONT_PUSH_FLOAT0</span><span class=cF0> </span><span class=cFE>21</span><span class=cF0> </span><span class=cF2>// 3bits</span><span class=cF0>
<a name="l1756"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ICf_DONT_POP_FLOAT0</span><span class=cF0> </span><span class=cFE>24</span><span class=cF0> </span><span class=cF2>// 3bits</span><span class=cF0>
<a name="l1757"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ICF_ALT_TEMPLATE</span><span class=cF0> </span><span class=cFE>0x008000000</span><span class=cF0>
<a name="l1758"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ICF_LOCK</span><span class=cF0> </span><span class=cFE>0x010000000</span><span class=cF0>
<a name="l1759"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ICf_LOCK</span><span class=cF0> </span><span class=cFE>28</span><span class=cF0>
<a name="l1760"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ICF_NO_RIP</span><span class=cF0> </span><span class=cFE>0x020000000</span><span class=cF0>
<a name="l1761"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ICF_DEL_PREV_INS</span><span class=cF0> </span><span class=cFE>0x040000000</span><span class=cF0>
<a name="l1762"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ICF_PREV_DELETED</span><span class=cF0> </span><span class=cFE>0x080000000</span><span class=cF0>
<a name="l1763"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ICF_DONT_RESTORE</span><span class=cF0> </span><span class=cFE>0x100000000</span><span class=cF0>
<a name="l1764"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ICG_NO_CONVERT_MASK</span><span class=cF0> </span><span class=cFE>0x1FFFFFF00</span><span class=cF0>
<a name="l1765"></a>
<a name="l1766"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>IC_BODY_SIZE</span><span class=cF0> </span><span class=cFE>0x83</span><span class=cF0>
<a name="l1767"></a>
<a name="l1768"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ECF_HAS_PUSH_CMP</span><span class=cF0> </span><span class=cFE>0x01</span><span class=cF0> </span><span class=cF2>//for 50&lt;i&lt;j&lt;=100 exps</span><span class=cF0>
<a name="l1769"></a>
<a name="l1770"></a></span><span class=cF9>U16</span><span class=cF0> </span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CICType</span><span class=cF0>
<a name="l1771"></a>{
<a name="l1772"></a> </span><span class=cF1>U8</span><span class=cF0> raw_type, mode;
<a name="l1773"></a>};
<a name="l1774"></a>
<a name="l1775"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CICArg</span><span class=cF0>
<a name="l1776"></a>{
<a name="l1777"></a> </span><span class=cF9>CICType</span><span class=cF0> type;
<a name="l1778"></a> </span><span class=cF9>U16</span><span class=cF0> </span><span class=cF1>reg</span><span class=cF0>; </span><span class=cF2>//low is reg, high is index_reg+scale&lt;&lt;6</span><span class=cF0>
<a name="l1779"></a> </span><span class=cF9>I64</span><span class=cF0> disp;
<a name="l1780"></a>};
<a name="l1781"></a>
<a name="l1782"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CICTreeLinks</span><span class=cF0>
<a name="l1783"></a>{
<a name="l1784"></a> </span><span class=cF9>CHashClass</span><span class=cF0> *arg1_class, *arg2_class;
<a name="l1785"></a> </span><span class=cF9>CIntermediateCode</span><span class=cF0> *arg1_tree, *arg2_tree;
<a name="l1786"></a> </span><span class=cF9>CHashClass</span><span class=cF0> *class2;
<a name="l1787"></a>};
<a name="l1788"></a>
<a name="l1789"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CIntermediateCodeBase</span><span class=cF0>
<a name="l1790"></a>{
<a name="l1791"></a> </span><span class=cF9>CIntermediateCode</span><span class=cF0> *next, *last;
<a name="l1792"></a> </span><span class=cF9>U16</span><span class=cF0> ic_code,
<a name="l1793"></a> ic_precedence;
<a name="l1794"></a> </span><span class=cF9>I16</span><span class=cF0> ic_count,
<a name="l1795"></a> ic_last_start;
<a name="l1796"></a>};
<a name="l1797"></a>
<a name="l1798"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CIntermediateCode</span><span class=cF0>:</span><span class=cF9>CIntermediateCodeBase</span><span class=cF0>
<a name="l1799"></a>{
<a name="l1800"></a> </span><span class=cF9>I64</span><span class=cF0> ic_flags,
<a name="l1801"></a> ic_data,
<a name="l1802"></a> ic_line;
<a name="l1803"></a> </span><span class=cF9>CHashClass</span><span class=cF0> *ic_class, *ic_class2;
<a name="l1804"></a> </span><span class=cF9>CICArg</span><span class=cF0> arg1, arg2, res;
<a name="l1805"></a> </span><span class=cF1>U8</span><span class=cF0> arg1_type_pointed_to; </span><span class=cF2>//Used for </span><a href="https://zeal-operating-system.github.io/ZealOS/Compiler/CompilerA.HH.html#l10"><span class=cF4>IST_ASSIGN</span></a><span class=cF2> and </span><a href="https://zeal-operating-system.github.io/ZealOS/Compiler/CompilerA.HH.html#l9"><span class=cF4>IST_DEREF</span></a><span class=cF2> </span><a href="https://zeal-operating-system.github.io/ZealOS/Compiler/CInit.CC.html#l26"><span class=cF4>ic_codes</span></a><span class=cF2>.</span><span class=cF0>
<a name="l1806"></a> </span><span class=cF1>union</span><span class=cF0>
<a name="l1807"></a> </span><span class=cF7>{</span><span class=cF0>
<a name="l1808"></a> </span><span class=cF1>U8</span><span class=cF0> ic_body[</span><span class=cF3>IC_BODY_SIZE</span><span class=cF0>];
<a name="l1809"></a> </span><span class=cF2>//Tree Links are created in OptPass012. An ADD opcode, for example,</span><span class=cF0>
<a name="l1810"></a> </span><span class=cF2>//points back to its two earlier arg CIntermediateCode's.</span><span class=cF0>
<a name="l1811"></a>
<a name="l1812"></a> </span><span class=cF2>//Tree links get destroyed during Pass789A when they get overwrites</span><span class=cF0>
<a name="l1813"></a> </span><span class=cF2>//by machine code.</span><span class=cF0> </span><span class=cF2>(Saves room to union the output machine code buffer</span><span class=cF0>
<a name="l1814"></a> </span><span class=cF2>//with these links, since they are not needed after pass4.</span><span class=cF0>
<a name="l1815"></a>
<a name="l1816"></a> </span><span class=cF2>//Tree links are used during passes 012 and 3 for determining types.</span><span class=cF0>
<a name="l1817"></a> </span><span class=cF9>CICTreeLinks</span><span class=cF0> t;
<a name="l1818"></a> </span><span class=cF7>}</span><span class=cF0>;
<a name="l1819"></a>#</span><span class=cF1>assert</span><span class=cF0> !($ &amp; </span><span class=cFE>7</span><span class=cF0>)
<a name="l1820"></a>};
<a name="l1821"></a>
<a name="l1822"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CParseStack</span><span class=cF0>
<a name="l1823"></a>{
<a name="l1824"></a> </span><span class=cF9>I64</span><span class=cF0> ptr,
<a name="l1825"></a> stack[</span><span class=cFE>255</span><span class=cF0>],
<a name="l1826"></a> ptr2,
<a name="l1827"></a> stack2[</span><span class=cFE>255</span><span class=cF0>];
<a name="l1828"></a>};
<a name="l1829"></a>
<a name="l1830"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CMT_LABEL</span><span class=cF0> </span><span class=cFE>0</span><span class=cF0>
<a name="l1831"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CMT_ASM_LABEL</span><span class=cF0> </span><span class=cFE>1</span><span class=cF0>
<a name="l1832"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CMT_GOTO_LABEL</span><span class=cF0> </span><span class=cFE>2</span><span class=cF0>
<a name="l1833"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CMT_STR_CONST</span><span class=cF0> </span><span class=cFE>3</span><span class=cF0>
<a name="l1834"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CMT_JMP_TABLE</span><span class=cF0> </span><span class=cFE>4</span><span class=cF0>
<a name="l1835"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CMT_FLOAT_CONSTS</span><span class=cF0> </span><span class=cFE>5</span><span class=cF0>
<a name="l1836"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CMT_ARRAY_DIM</span><span class=cF0> </span><span class=cFE>6</span><span class=cF0>
<a name="l1837"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CMT_HASH_ENTRY</span><span class=cF0> </span><span class=cFE>7</span><span class=cF0>
<a name="l1838"></a>
<a name="l1839"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CMF_POP_CMP</span><span class=cF0> </span><span class=cFE>0x01</span><span class=cF0>
<a name="l1840"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CMF_DEFINED</span><span class=cF0> </span><span class=cFE>0x02</span><span class=cF0>
<a name="l1841"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CMF_I8_JMP_TABLE</span><span class=cF0> </span><span class=cFE>0x04</span><span class=cF0>
<a name="l1842"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CMF_U8_JMP_TABLE</span><span class=cF0> </span><span class=cFE>0x08</span><span class=cF0>
<a name="l1843"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CMF_I16_JMP_TABLE</span><span class=cF0> </span><span class=cFE>0x10</span><span class=cF0>
<a name="l1844"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CMF_U16_JMP_TABLE</span><span class=cF0> </span><span class=cFE>0x20</span><span class=cF0>
<a name="l1845"></a>
<a name="l1846"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CM_CONSTS_NUM</span><span class=cF0> </span><span class=cFE>16</span><span class=cF0>
<a name="l1847"></a>
<a name="l1848"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CCodeMisc</span><span class=cF0>
<a name="l1849"></a>{
<a name="l1850"></a> </span><span class=cF9>CCodeMisc</span><span class=cF0> *next, *last, *forward, *</span><span class=cF1>default</span><span class=cF0>, *begin;
<a name="l1851"></a> </span><span class=cF1>U8</span><span class=cF0> *str;
<a name="l1852"></a> </span><span class=cF9>U32</span><span class=cF0> type, flags;
<a name="l1853"></a> </span><span class=cF9>I64</span><span class=cF0> use_count;
<a name="l1854"></a> </span><span class=cF1>U8</span><span class=cF0> *addr;
<a name="l1855"></a> </span><span class=cF1>union</span><span class=cF0>
<a name="l1856"></a> </span><span class=cF7>{</span><span class=cF0>
<a name="l1857"></a> </span><span class=cF9>I64</span><span class=cF0> st_len; </span><span class=cF2>//STR_CONST</span><span class=cF0>
<a name="l1858"></a> </span><span class=cF9>I64</span><span class=cF0> num_consts; </span><span class=cF2>//FLOAT_CONSTS</span><span class=cF0>
<a name="l1859"></a> </span><span class=cF9>I64</span><span class=cF0> range;
<a name="l1860"></a> </span><span class=cF9>I64</span><span class=cF0> rip; </span><span class=cF2>//ASM_LABEL</span><span class=cF0>
<a name="l1861"></a> </span><span class=cF7>}</span><span class=cF0>
<a name="l1862"></a> </span><span class=cF1>union</span><span class=cF0>
<a name="l1863"></a> </span><span class=cF7>{</span><span class=cF0>
<a name="l1864"></a> </span><span class=cF9>CCodeMisc</span><span class=cF0> **jmp_table;
<a name="l1865"></a> </span><span class=cF1>F64</span><span class=cF0> *float_consts;
<a name="l1866"></a> </span><span class=cF9>CArrayDim</span><span class=cF0> *dim;
<a name="l1867"></a> </span><span class=cF9>CHash</span><span class=cF0> *h;
<a name="l1868"></a> </span><span class=cF7>}</span><span class=cF0>;
<a name="l1869"></a>};
<a name="l1870"></a>
<a name="l1871"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>&quot;Compiler/Assembler&quot;</span><span class=cF0>
<a name="l1872"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>IEF_OP_SIZE16</span><span class=cF0> </span><span class=cFE>0x001</span><span class=cF0>
<a name="l1873"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>IEF_OP_SIZE32</span><span class=cF0> </span><span class=cFE>0x002</span><span class=cF0>
<a name="l1874"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>IEF_PLUS_OPCODE</span><span class=cF0> </span><span class=cFE>0x004</span><span class=cF0>
<a name="l1875"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>IEF_DONT_SWITCH_MODES</span><span class=cF0> </span><span class=cFE>0x008</span><span class=cF0>
<a name="l1876"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>IEF_DEFAULT</span><span class=cF0> </span><span class=cFE>0x010</span><span class=cF0>
<a name="l1877"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>IEF_NOT_IN_64_BIT</span><span class=cF0> </span><span class=cFE>0x020</span><span class=cF0>
<a name="l1878"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>IEF_48_REX</span><span class=cF0> </span><span class=cFE>0x040</span><span class=cF0>
<a name="l1879"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>IEF_REX_ONLY_R8_R15</span><span class=cF0> </span><span class=cFE>0x080</span><span class=cF0>
<a name="l1880"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>IEF_REX_XOR_LIKE</span><span class=cF0> </span><span class=cFE>0x100</span><span class=cF0>
<a name="l1881"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>IEF_STI_LIKE</span><span class=cF0> </span><span class=cFE>0x200</span><span class=cF0>
<a name="l1882"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>IEF_ENDING_ZERO</span><span class=cF0> </span><span class=cFE>0x400</span><span class=cF0>
<a name="l1883"></a>
<a name="l1884"></a></span><span class=cF2>//Slash value</span><span class=cF0>
<a name="l1885"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SV_R_REG</span><span class=cF0> </span><span class=cFE>8</span><span class=cF0>
<a name="l1886"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SV_I_REG</span><span class=cF0> </span><span class=cFE>9</span><span class=cF0>
<a name="l1887"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SV_STI_LIKE</span><span class=cF0> </span><span class=cFE>10</span><span class=cF0> </span><span class=cF2>//</span><a href="https://zeal-operating-system.github.io/ZealOS/Compiler/AsmInit.CC.html#l136"><span class=cF4>uasm_slash_val</span></a><span class=cF2> only.</span><span class=cF0>
<a name="l1888"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SV_NONE</span><span class=cF0> </span><span class=cFE>11</span><span class=cF0>
<a name="l1889"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CInst</span><span class=cF0>
<a name="l1890"></a>{
<a name="l1891"></a> </span><span class=cF1>U8</span><span class=cF0> ins_entry_num, </span><span class=cF2>//This entry num in opcode hash entry</span><span class=cF0>
<a name="l1892"></a> opcode_count,
<a name="l1893"></a> opcode[</span><span class=cFE>4</span><span class=cF0>];
<a name="l1894"></a> </span><span class=cF9>U16</span><span class=cF0> flags;
<a name="l1895"></a> </span><span class=cF1>U8</span><span class=cF0> slash_val, uasm_slash_val, opcode_modifier,
<a name="l1896"></a> arg1, arg2,
<a name="l1897"></a> size1, size2,</span><span class=cF2>//Size in bits</span><span class=cF0>
<a name="l1898"></a> pad;
<a name="l1899"></a>};
<a name="l1900"></a>
<a name="l1901"></a></span><span class=cF2>//x86 opcodes</span><span class=cF0>
<a name="l1902"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>OC_OP_SIZE_PREFIX</span><span class=cF0> </span><span class=cFE>0x66</span><span class=cF0>
<a name="l1903"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>OC_ADDR_SIZE_PREFIX</span><span class=cF0> </span><span class=cFE>0x67</span><span class=cF0>
<a name="l1904"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>OC_LOCK_PREFIX</span><span class=cF0> </span><span class=cFE>0xF0</span><span class=cF0>
<a name="l1905"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>OC_NOP</span><span class=cF0> </span><span class=cFE>0x90</span><span class=cF0>
<a name="l1906"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>OC_BPT</span><span class=cF0> </span><span class=cFE>0xCC</span><span class=cF0>
<a name="l1907"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>OC_CALL</span><span class=cF0> </span><span class=cFE>0xE8</span><span class=cF0>
<a name="l1908"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>OC_JMP_REL8</span><span class=cF0> </span><span class=cFE>0xEB</span><span class=cF0>
<a name="l1909"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>OC_NOP2</span><span class=cF0> (</span><span class=cF3>OC_NOP</span><span class=cF0> &lt;&lt; </span><span class=cFE>8</span><span class=cF0> + </span><span class=cF3>OC_OP_SIZE_PREFIX</span><span class=cF0>)
<a name="l1910"></a>
<a name="l1911"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>PUSH_C_REGS</span><span class=cF0> </span><span class=cF1>PUSH</span><span class=cF0> </span><span class=cFC>RAX</span><span class=cF0> </span><span class=cF1>PUSH</span><span class=cF0> </span><span class=cFC>RCX</span><span class=cF0> </span><span class=cF1>PUSH</span><span class=cF0> </span><span class=cFC>RDX</span><span class=cF0> </span><span class=cF1>PUSH</span><span class=cF0> </span><span class=cFC>RBX</span><span class=cF0> </span><span class=cF1>PUSH</span><span class=cF0> </span><span class=cFC>R8</span><span class=cF0> </span><span class=cF1>PUSH</span><span class=cF0> </span><span class=cFC>R9</span><span class=cF0>
<a name="l1912"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>POP_C_REGS</span><span class=cF0> </span><span class=cF1>POP</span><span class=cF0> </span><span class=cFC>R9</span><span class=cF0> </span><span class=cF1>POP</span><span class=cF0> </span><span class=cFC>R8</span><span class=cF0> </span><span class=cF1>POP</span><span class=cF0> </span><span class=cFC>RBX</span><span class=cF0> </span><span class=cF1>POP</span><span class=cF0> </span><span class=cFC>RDX</span><span class=cF0> </span><span class=cF1>POP</span><span class=cF0> </span><span class=cFC>RCX</span><span class=cF0> </span><span class=cF1>POP</span><span class=cF0> </span><span class=cFC>RAX</span><span class=cF0>
<a name="l1913"></a>
<a name="l1914"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>PUSH_REGS</span><span class=cF0> </span><span class=cF1>PUSH</span><span class=cF0> </span><span class=cFC>RAX</span><span class=cF0> </span><span class=cF1>PUSH</span><span class=cF0> </span><span class=cFC>RCX</span><span class=cF0> </span><span class=cF1>PUSH</span><span class=cF0> </span><span class=cFC>RDX</span><span class=cF0> </span><span class=cF1>PUSH</span><span class=cF0> </span><span class=cFC>RBX</span><span class=cF0> </span><span class=cF1>PUSH</span><span class=cF0> </span><span class=cFC>RBP</span><span class=cF0> </span><span class=cF1>PUSH</span><span class=cF0> </span><span class=cFC>RSI</span><span class=cF0> \
<a name="l1915"></a> </span><span class=cF1>PUSH</span><span class=cF0> </span><span class=cFC>RDI</span><span class=cF0> </span><span class=cF1>PUSH</span><span class=cF0> </span><span class=cFC>R8</span><span class=cF0> </span><span class=cF1>PUSH</span><span class=cF0> </span><span class=cFC>R9</span><span class=cF0> </span><span class=cF1>PUSH</span><span class=cF0> </span><span class=cFC>R10</span><span class=cF0> </span><span class=cF1>PUSH</span><span class=cF0> </span><span class=cFC>R11</span><span class=cF0> </span><span class=cF1>PUSH</span><span class=cF0> </span><span class=cFC>R12</span><span class=cF0> </span><span class=cF1>PUSH</span><span class=cF0> </span><span class=cFC>R13</span><span class=cF0> </span><span class=cF1>PUSH</span><span class=cF0> </span><span class=cFC>R14</span><span class=cF0> </span><span class=cF1>PUSH</span><span class=cF0> </span><span class=cFC>R15</span><span class=cF0>
<a name="l1916"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>POP_REGS</span><span class=cF0> </span><span class=cF1>POP</span><span class=cF0> </span><span class=cFC>R15</span><span class=cF0> </span><span class=cF1>POP</span><span class=cF0> </span><span class=cFC>R14</span><span class=cF0> </span><span class=cF1>POP</span><span class=cF0> </span><span class=cFC>R13</span><span class=cF0> </span><span class=cF1>POP</span><span class=cF0> </span><span class=cFC>R12</span><span class=cF0> </span><span class=cF1>POP</span><span class=cF0> </span><span class=cFC>R11</span><span class=cF0> </span><span class=cF1>POP</span><span class=cF0> </span><span class=cFC>R10</span><span class=cF0> </span><span class=cF1>POP</span><span class=cF0> </span><span class=cFC>R9</span><span class=cF0> \
<a name="l1917"></a> </span><span class=cF1>POP</span><span class=cF0> </span><span class=cFC>R8</span><span class=cF0> </span><span class=cF1>POP</span><span class=cF0> </span><span class=cFC>RDI</span><span class=cF0> </span><span class=cF1>POP</span><span class=cF0> </span><span class=cFC>RSI</span><span class=cF0> </span><span class=cF1>POP</span><span class=cF0> </span><span class=cFC>RBP</span><span class=cF0> </span><span class=cF1>POP</span><span class=cF0> </span><span class=cFC>RBX</span><span class=cF0> </span><span class=cF1>POP</span><span class=cF0> </span><span class=cFC>RDX</span><span class=cF0> </span><span class=cF1>POP</span><span class=cF0> </span><span class=cFC>RCX</span><span class=cF0> </span><span class=cF1>POP</span><span class=cF0> </span><span class=cFC>RAX</span><span class=cF0>
<a name="l1918"></a>
<a name="l1919"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>REG_RAX</span><span class=cF0> </span><span class=cFE>0</span><span class=cF0>
<a name="l1920"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>REG_RCX</span><span class=cF0> </span><span class=cFE>1</span><span class=cF0>
<a name="l1921"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>REG_RDX</span><span class=cF0> </span><span class=cFE>2</span><span class=cF0>
<a name="l1922"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>REG_RBX</span><span class=cF0> </span><span class=cFE>3</span><span class=cF0>
<a name="l1923"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>REG_RSP</span><span class=cF0> </span><span class=cFE>4</span><span class=cF0>
<a name="l1924"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>REG_RBP</span><span class=cF0> </span><span class=cFE>5</span><span class=cF0>
<a name="l1925"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>REG_RSI</span><span class=cF0> </span><span class=cFE>6</span><span class=cF0>
<a name="l1926"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>REG_RDI</span><span class=cF0> </span><span class=cFE>7</span><span class=cF0>
<a name="l1927"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>REG_R8</span><span class=cF0> </span><span class=cFE>8</span><span class=cF0>
<a name="l1928"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>REG_REGS_NUM</span><span class=cF0> </span><span class=cFE>16</span><span class=cF0>
<a name="l1929"></a>
<a name="l1930"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>REG_RIP</span><span class=cF0> </span><span class=cFE>16</span><span class=cF0> </span><span class=cF2>//Used by compiler, not really it's num</span><span class=cF0>
<a name="l1931"></a></span><span class=cF2>//Be careful: RBPu8, RSPu8, RSIu8, RDIu8 are 20-24</span><span class=cF0>
<a name="l1932"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>REG_NONE</span><span class=cF0> </span><span class=cFE>32</span><span class=cF0> </span><span class=cF2>//noreg flag sets it to this</span><span class=cF0>
<a name="l1933"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>REG_ALLOC</span><span class=cF0> </span><span class=cFE>33</span><span class=cF0> </span><span class=cF2>//reg flag sets it to this</span><span class=cF0>
<a name="l1934"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>REG_UNDEF</span><span class=cF0> </span><span class=cF3>I8_MIN</span><span class=cF0>
<a name="l1935"></a>
<a name="l1936"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>REGG_CLOBBERED</span><span class=cF0> </span><span class=cFE>0x013F</span><span class=cF0> </span><span class=cF2>//RAX,RCX,RDX,RBX,R8</span><span class=cF0>
<a name="l1937"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>REGG_SAVED</span><span class=cF0> </span><span class=cFE>0x0030</span><span class=cF0> </span><span class=cF2>//RBP,RSP</span><span class=cF0>
<a name="l1938"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>REGG_STACK_TMP</span><span class=cF0> </span><span class=cFE>0x0200</span><span class=cF0> </span><span class=cF2>//R9</span><span class=cF0>
<a name="l1939"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>REGG_LOCAL_VARS</span><span class=cF0> </span><span class=cFE>0xCCC0</span><span class=cF0> </span><span class=cF2>//RSI,RDI,R10,R11,R14,R15</span><span class=cF0>
<a name="l1940"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>REGG_LOCAL_NON_PTR_VARS</span><span class=cF0> </span><span class=cFE>0x3000</span><span class=cF0> </span><span class=cF2>//R12,R13</span><span class=cF0>
<a name="l1941"></a>
<a name="l1942"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>AOT_BIN_BLK_BITS</span><span class=cF0> </span><span class=cFE>16</span><span class=cF0>
<a name="l1943"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>AOT_BIN_BLK_SIZE</span><span class=cF0> (</span><span class=cFE>1</span><span class=cF0> &lt;&lt; </span><span class=cF3>AOT_BIN_BLK_BITS</span><span class=cF0>)
<a name="l1944"></a>
<a name="l1945"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CAOTBinBlk</span><span class=cF0>
<a name="l1946"></a>{
<a name="l1947"></a> </span><span class=cF9>CAOTBinBlk</span><span class=cF0> *next;
<a name="l1948"></a> </span><span class=cF1>U8</span><span class=cF0> body[</span><span class=cF3>AOT_BIN_BLK_SIZE</span><span class=cF0>];
<a name="l1949"></a>};
<a name="l1950"></a>
<a name="l1951"></a></span><span class=cF9>I64</span><span class=cF0> </span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CAbsCountsI64</span><span class=cF0>
<a name="l1952"></a>{
<a name="l1953"></a> </span><span class=cF9>U16</span><span class=cF0> abs_addres, </span><span class=cF2>//Only odd/even matters. Count of absolute addres in an exp.</span><span class=cF0>
<a name="l1954"></a> c_addres; </span><span class=cF2>//Only odd/even matters. Count of C addres in an exp.</span><span class=cF0>
<a name="l1955"></a> </span><span class=cF9>U32</span><span class=cF0> externs; </span><span class=cF2>//Only nonzero matters. Some regions have externs banned.</span><span class=cF0>
<a name="l1956"></a>};
<a name="l1957"></a>
<a name="l1958"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CAsmUndefHash</span><span class=cF0>
<a name="l1959"></a>{</span><span class=cF2>//Only place created is </span><a href="https://zeal-operating-system.github.io/ZealOS/Compiler/ParseExp.CC.html#l972"><span class=cF4>Exp Parser</span></a><span class=cF2> when an undef is found in an ASM exp.</span><span class=cF0>
<a name="l1960"></a> </span><span class=cF9>CAsmUndefHash</span><span class=cF0> *next;
<a name="l1961"></a> </span><span class=cF9>CHashExport</span><span class=cF0> *hash;
<a name="l1962"></a>};
<a name="l1963"></a>
<a name="l1964"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CAsmNum</span><span class=cF0>
<a name="l1965"></a>{
<a name="l1966"></a> </span><span class=cF9>I64</span><span class=cF0> i;
<a name="l1967"></a> </span><span class=cF1>U8</span><span class=cF0> *machine_code;
<a name="l1968"></a> </span><span class=cF9>CAsmUndefHash</span><span class=cF0> *local_asm_undef_hash, *global_asm_undef_hash;
<a name="l1969"></a> </span><span class=cF9>CAbsCountsI64</span><span class=cF0> abs_counts;
<a name="l1970"></a>};
<a name="l1971"></a>
<a name="l1972"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CAsmNum2</span><span class=cF0>
<a name="l1973"></a>{
<a name="l1974"></a> </span><span class=cF9>CAsmNum</span><span class=cF0> num;
<a name="l1975"></a> </span><span class=cF9>I64</span><span class=cF0> U8_count, rel;
<a name="l1976"></a> </span><span class=cF1>Bool</span><span class=cF0> imm_flag;
<a name="l1977"></a>};
<a name="l1978"></a>
<a name="l1979"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CAsmIns</span><span class=cF0>
<a name="l1980"></a>{
<a name="l1981"></a> </span><span class=cF9>CInst</span><span class=cF0> *tmpins;
<a name="l1982"></a> </span><span class=cF9>CAsmNum2</span><span class=cF0> imm, disp;
<a name="l1983"></a> </span><span class=cF9>I64</span><span class=cF0> U8_count, last_opcode_U8,
<a name="l1984"></a> </span><span class=cF1>REX</span><span class=cF0>, ModrM, SIB;
<a name="l1985"></a> </span><span class=cF1>Bool</span><span class=cF0> has_REX, has_ModrM, has_SIB,
<a name="l1986"></a> has_addr_prefix,
<a name="l1987"></a> has_operand_prefix,
<a name="l1988"></a> is_default, pad[</span><span class=cFE>2</span><span class=cF0>];
<a name="l1989"></a>};
<a name="l1990"></a>
<a name="l1991"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CAsmArg</span><span class=cF0>
<a name="l1992"></a>{
<a name="l1993"></a> </span><span class=cF9>CAsmNum</span><span class=cF0> num;
<a name="l1994"></a> </span><span class=cF9>I64</span><span class=cF0> seg, size, </span><span class=cF2>//Size in bytes</span><span class=cF0>
<a name="l1995"></a> reg1, reg2,
<a name="l1996"></a> reg1_type, reg2_type,
<a name="l1997"></a> scale;
<a name="l1998"></a> </span><span class=cF1>Bool</span><span class=cF0> indirect, imm_or_off_present, just_seg, pad[</span><span class=cFE>5</span><span class=cF0>];
<a name="l1999"></a>};
<a name="l2000"></a>
<a name="l2001"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CAsmUnresolvedRef</span><span class=cF0>
<a name="l2002"></a>{
<a name="l2003"></a> </span><span class=cF9>CAsmUnresolvedRef</span><span class=cF0> *next;
<a name="l2004"></a> </span><span class=cF9>I64</span><span class=cF0> type, line_num;
<a name="l2005"></a> </span><span class=cF1>U8</span><span class=cF0> *machine_code;
<a name="l2006"></a> </span><span class=cF9>I64</span><span class=cF0> rip, rel_rip;
<a name="l2007"></a> </span><span class=cF9>CAOT</span><span class=cF0> *aot;
<a name="l2008"></a> </span><span class=cF1>U8</span><span class=cF0> *str; </span><span class=cF2>//Only for import globals</span><span class=cF0>
<a name="l2009"></a> </span><span class=cF9>CAsmUndefHash</span><span class=cF0> *asm_undef_hash;
<a name="l2010"></a> </span><span class=cF1>Bool</span><span class=cF0> U8_avail,
<a name="l2011"></a> imm_flag;</span><span class=cF2>//Only for import globals</span><span class=cF0>
<a name="l2012"></a>};
<a name="l2013"></a>
<a name="l2014"></a></span><span class=cF2>//Opcode Modifier</span><span class=cF0>
<a name="l2015"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>OM_NO</span><span class=cF0> </span><span class=cFE>0</span><span class=cF0>
<a name="l2016"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>OM_CB</span><span class=cF0> </span><span class=cFE>1</span><span class=cF0>
<a name="l2017"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>OM_CW</span><span class=cF0> </span><span class=cFE>2</span><span class=cF0>
<a name="l2018"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>OM_CD</span><span class=cF0> </span><span class=cFE>3</span><span class=cF0>
<a name="l2019"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>OM_CP</span><span class=cF0> </span><span class=cFE>4</span><span class=cF0>
<a name="l2020"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>OM_IB</span><span class=cF0> </span><span class=cFE>5</span><span class=cF0>
<a name="l2021"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>OM_IW</span><span class=cF0> </span><span class=cFE>6</span><span class=cF0>
<a name="l2022"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>OM_ID</span><span class=cF0> </span><span class=cFE>7</span><span class=cF0>
<a name="l2023"></a>
<a name="l2024"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ARGT_NONE</span><span class=cF0> </span><span class=cFE>0</span><span class=cF0>
<a name="l2025"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ARGT_REL8</span><span class=cF0> </span><span class=cFE>1</span><span class=cF0>
<a name="l2026"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ARGT_REL16</span><span class=cF0> </span><span class=cFE>2</span><span class=cF0>
<a name="l2027"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ARGT_REL32</span><span class=cF0> </span><span class=cFE>3</span><span class=cF0>
<a name="l2028"></a>
<a name="l2029"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ARGT_IMM8</span><span class=cF0> </span><span class=cFE>4</span><span class=cF0>
<a name="l2030"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ARGT_IMM16</span><span class=cF0> </span><span class=cFE>5</span><span class=cF0>
<a name="l2031"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ARGT_IMM32</span><span class=cF0> </span><span class=cFE>6</span><span class=cF0>
<a name="l2032"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ARGT_IMM64</span><span class=cF0> </span><span class=cFE>7</span><span class=cF0>
<a name="l2033"></a>
<a name="l2034"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ARGT_UIMM8</span><span class=cF0> </span><span class=cFE>8</span><span class=cF0>
<a name="l2035"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ARGT_UIMM16</span><span class=cF0> </span><span class=cFE>9</span><span class=cF0>
<a name="l2036"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ARGT_UIMM32</span><span class=cF0> </span><span class=cFE>10</span><span class=cF0>
<a name="l2037"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ARGT_UIMM64</span><span class=cF0> </span><span class=cFE>11</span><span class=cF0>
<a name="l2038"></a>
<a name="l2039"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ARGT_R8</span><span class=cF0> </span><span class=cFE>12</span><span class=cF0>
<a name="l2040"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ARGT_R16</span><span class=cF0> </span><span class=cFE>13</span><span class=cF0>
<a name="l2041"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ARGT_R32</span><span class=cF0> </span><span class=cFE>14</span><span class=cF0>
<a name="l2042"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ARGT_R64</span><span class=cF0> </span><span class=cFE>15</span><span class=cF0>
<a name="l2043"></a>
<a name="l2044"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ARGT_RM8</span><span class=cF0> </span><span class=cFE>16</span><span class=cF0>
<a name="l2045"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ARGT_RM16</span><span class=cF0> </span><span class=cFE>17</span><span class=cF0>
<a name="l2046"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ARGT_RM32</span><span class=cF0> </span><span class=cFE>18</span><span class=cF0>
<a name="l2047"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ARGT_RM64</span><span class=cF0> </span><span class=cFE>19</span><span class=cF0>
<a name="l2048"></a>
<a name="l2049"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ARGT_M8</span><span class=cF0> </span><span class=cFE>20</span><span class=cF0>
<a name="l2050"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ARGT_M16</span><span class=cF0> </span><span class=cFE>21</span><span class=cF0>
<a name="l2051"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ARGT_M32</span><span class=cF0> </span><span class=cFE>22</span><span class=cF0>
<a name="l2052"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ARGT_M64</span><span class=cF0> </span><span class=cFE>23</span><span class=cF0>
<a name="l2053"></a>
<a name="l2054"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ARGT_M1632</span><span class=cF0> </span><span class=cFE>24</span><span class=cF0> </span><span class=cF2>// Not implemented</span><span class=cF0>
<a name="l2055"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ARGT_M16N32</span><span class=cF0> </span><span class=cFE>25</span><span class=cF0> </span><span class=cF2>// Not implemented</span><span class=cF0>
<a name="l2056"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ARGT_M16N16</span><span class=cF0> </span><span class=cFE>26</span><span class=cF0> </span><span class=cF2>// Not implemented</span><span class=cF0>
<a name="l2057"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ARGT_M32N32</span><span class=cF0> </span><span class=cFE>27</span><span class=cF0> </span><span class=cF2>// Not implemented</span><span class=cF0>
<a name="l2058"></a>
<a name="l2059"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ARGT_MOFFS8</span><span class=cF0> </span><span class=cFE>28</span><span class=cF0>
<a name="l2060"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ARGT_MOFFS16</span><span class=cF0> </span><span class=cFE>29</span><span class=cF0>
<a name="l2061"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ARGT_MOFFS32</span><span class=cF0> </span><span class=cFE>30</span><span class=cF0>
<a name="l2062"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ARGT_MOFFS64</span><span class=cF0> </span><span class=cFE>31</span><span class=cF0>
<a name="l2063"></a>
<a name="l2064"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ARGT_AL</span><span class=cF0> </span><span class=cFE>32</span><span class=cF0>
<a name="l2065"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ARGT_AX</span><span class=cF0> </span><span class=cFE>33</span><span class=cF0>
<a name="l2066"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ARGT_EAX</span><span class=cF0> </span><span class=cFE>34</span><span class=cF0>
<a name="l2067"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ARGT_RAX</span><span class=cF0> </span><span class=cFE>35</span><span class=cF0>
<a name="l2068"></a>
<a name="l2069"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ARGT_CL</span><span class=cF0> </span><span class=cFE>36</span><span class=cF0>
<a name="l2070"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ARGT_DX</span><span class=cF0> </span><span class=cFE>37</span><span class=cF0>
<a name="l2071"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ARGT_SREG</span><span class=cF0> </span><span class=cFE>39</span><span class=cF0>
<a name="l2072"></a>
<a name="l2073"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ARGT_SS</span><span class=cF0> </span><span class=cFE>40</span><span class=cF0>
<a name="l2074"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ARGT_DS</span><span class=cF0> </span><span class=cFE>41</span><span class=cF0>
<a name="l2075"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ARGT_ES</span><span class=cF0> </span><span class=cFE>42</span><span class=cF0>
<a name="l2076"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ARGT_FS</span><span class=cF0> </span><span class=cFE>43</span><span class=cF0>
<a name="l2077"></a>
<a name="l2078"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ARGT_GS</span><span class=cF0> </span><span class=cFE>44</span><span class=cF0>
<a name="l2079"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ARGT_CS</span><span class=cF0> </span><span class=cFE>45</span><span class=cF0>
<a name="l2080"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ARGT_ST0</span><span class=cF0> </span><span class=cFE>46</span><span class=cF0>
<a name="l2081"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ARGT_STI</span><span class=cF0> </span><span class=cFE>47</span><span class=cF0>
<a name="l2082"></a>
<a name="l2083"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ARGT_MM</span><span class=cF0> </span><span class=cFE>48</span><span class=cF0> </span><span class=cF2>// Not implemented</span><span class=cF0>
<a name="l2084"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ARGT_MM32</span><span class=cF0> </span><span class=cFE>49</span><span class=cF0> </span><span class=cF2>// Not implemented</span><span class=cF0>
<a name="l2085"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ARGT_MM64</span><span class=cF0> </span><span class=cFE>50</span><span class=cF0> </span><span class=cF2>// Not implemented</span><span class=cF0>
<a name="l2086"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ARGT_XMM</span><span class=cF0> </span><span class=cFE>51</span><span class=cF0> </span><span class=cF2>// Not implemented</span><span class=cF0>
<a name="l2087"></a>
<a name="l2088"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ARGT_XMM32</span><span class=cF0> </span><span class=cFE>52</span><span class=cF0> </span><span class=cF2>// Not implemented</span><span class=cF0>
<a name="l2089"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ARGT_XMM64</span><span class=cF0> </span><span class=cFE>53</span><span class=cF0> </span><span class=cF2>// Not implemented</span><span class=cF0>
<a name="l2090"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ARGT_XMM128</span><span class=cF0> </span><span class=cFE>54</span><span class=cF0> </span><span class=cF2>// Not implemented</span><span class=cF0>
<a name="l2091"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ARGT_XMM0</span><span class=cF0> </span><span class=cFE>55</span><span class=cF0> </span><span class=cF2>// Not implemented</span><span class=cF0>
<a name="l2092"></a>
<a name="l2093"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>&quot;Compiler/Internal;Hash/System&quot;</span><span class=cF0>
<a name="l2094"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>OCF_ALIAS</span><span class=cF0> </span><span class=cFE>1</span><span class=cF0>
<a name="l2095"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CHashOpcode</span><span class=cF0>:</span><span class=cF9>CHash</span><span class=cF0>
<a name="l2096"></a>{
<a name="l2097"></a> </span><span class=cF9>U16</span><span class=cF0> inst_entry_count,
<a name="l2098"></a> oc_flags, pad[</span><span class=cFE>2</span><span class=cF0>];
<a name="l2099"></a> </span><span class=cF9>CInst</span><span class=cF0> ins[</span><span class=cFE>1</span><span class=cF0>];
<a name="l2100"></a>};
<a name="l2101"></a>
<a name="l2102"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>&quot;Compiler/Intermediate Code&quot;</span><span class=cF0>
<a name="l2103"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>IEF_GOTO_LABEL</span><span class=cF0> </span><span class=cFE>1</span><span class=cF0>
<a name="l2104"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CAOTImportExport</span><span class=cF0>
<a name="l2105"></a>{
<a name="l2106"></a> </span><span class=cF9>CAOTImportExport</span><span class=cF0> *next, *last;
<a name="l2107"></a> </span><span class=cF9>I64</span><span class=cF0> rip, flags;
<a name="l2108"></a> </span><span class=cF9>CAOT</span><span class=cF0> *aot;
<a name="l2109"></a> </span><span class=cF1>U8</span><span class=cF0> *str,
<a name="l2110"></a> *src_link,
<a name="l2111"></a> type, pad[</span><span class=cFE>7</span><span class=cF0>];
<a name="l2112"></a>};
<a name="l2113"></a>
<a name="l2114"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>AAT_ADD_U8</span><span class=cF0> </span><span class=cFE>0</span><span class=cF0>
<a name="l2115"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>AAT_SUB_U8</span><span class=cF0> </span><span class=cFE>1</span><span class=cF0>
<a name="l2116"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>AAT_ADD_U16</span><span class=cF0> </span><span class=cFE>2</span><span class=cF0>
<a name="l2117"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>AAT_SUB_U16</span><span class=cF0> </span><span class=cFE>3</span><span class=cF0>
<a name="l2118"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>AAT_ADD_U32</span><span class=cF0> </span><span class=cFE>4</span><span class=cF0>
<a name="l2119"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>AAT_SUB_U32</span><span class=cF0> </span><span class=cFE>5</span><span class=cF0>
<a name="l2120"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>AAT_ADD_U64</span><span class=cF0> </span><span class=cFE>6</span><span class=cF0>
<a name="l2121"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>AAT_SUB_U64</span><span class=cF0> </span><span class=cFE>7</span><span class=cF0>
<a name="l2122"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CAOTAbsAddr</span><span class=cF0>
<a name="l2123"></a>{
<a name="l2124"></a> </span><span class=cF9>CAOTAbsAddr</span><span class=cF0> *next;
<a name="l2125"></a> </span><span class=cF9>I64</span><span class=cF0> rip;
<a name="l2126"></a> </span><span class=cF1>U8</span><span class=cF0> type, pad[</span><span class=cFE>7</span><span class=cF0>];
<a name="l2127"></a>};
<a name="l2128"></a>
<a name="l2129"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CAOTHeapGlobalRef</span><span class=cF0>
<a name="l2130"></a>{
<a name="l2131"></a> </span><span class=cF9>CAOTHeapGlobalRef</span><span class=cF0> *next;
<a name="l2132"></a> </span><span class=cF9>I64</span><span class=cF0> rip;
<a name="l2133"></a>};
<a name="l2134"></a>
<a name="l2135"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CAOTHeapGlobal</span><span class=cF0>
<a name="l2136"></a>{
<a name="l2137"></a> </span><span class=cF9>CAOTHeapGlobal</span><span class=cF0> *next;
<a name="l2138"></a> </span><span class=cF1>U8</span><span class=cF0> *str;
<a name="l2139"></a> </span><span class=cF9>I64</span><span class=cF0> size;
<a name="l2140"></a> </span><span class=cF9>CAOTHeapGlobalRef</span><span class=cF0> *references;
<a name="l2141"></a>};
<a name="l2142"></a>
<a name="l2143"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CAOT</span><span class=cF0>
<a name="l2144"></a>{
<a name="l2145"></a> </span><span class=cF9>CAOT</span><span class=cF0> *next, *last;
<a name="l2146"></a> </span><span class=cF1>U8</span><span class=cF0> *buf;
<a name="l2147"></a> </span><span class=cF9>I64</span><span class=cF0> rip, rip2,
<a name="l2148"></a> aot_U8s,
<a name="l2149"></a> max_align_bits, org;
<a name="l2150"></a> </span><span class=cF9>CAOT</span><span class=cF0> *parent_aot;
<a name="l2151"></a> </span><span class=cF9>CAOTImportExport</span><span class=cF0> *next_ie, *last_ie;
<a name="l2152"></a> </span><span class=cF9>CAOTAbsAddr</span><span class=cF0> *abss;
<a name="l2153"></a> </span><span class=cF9>CAOTHeapGlobal</span><span class=cF0> *heap_globals;
<a name="l2154"></a>};
<a name="l2155"></a>
<a name="l2156"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CStreamBlk</span><span class=cF0>
<a name="l2157"></a>{
<a name="l2158"></a> </span><span class=cF9>CStreamBlk</span><span class=cF0> *next, *last;
<a name="l2159"></a> </span><span class=cF1>U8</span><span class=cF0> *body;
<a name="l2160"></a>};
<a name="l2161"></a>
<a name="l2162"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CCodeCtrl</span><span class=cF0>
<a name="l2163"></a>{
<a name="l2164"></a> </span><span class=cF9>CCodeCtrl</span><span class=cF0> *coc_next;
<a name="l2165"></a> </span><span class=cF9>CCodeMisc</span><span class=cF0> *coc_next_misc, *coc_last_misc;
<a name="l2166"></a> </span><span class=cF9>CIntermediateCodeBase</span><span class=cF0> coc_head;
<a name="l2167"></a>};
<a name="l2168"></a>
<a name="l2169"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>&quot;Compiler/Lex&quot;</span><span class=cF0>
<a name="l2170"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>__DATE__</span><span class=cF0> #</span><span class=cF1>exe</span><span class=cF0>{</span><span class=cF5>StreamPrint</span><span class=cF0>(</span><span class=cF6>&quot;\&quot;%D\&quot;&quot;</span><span class=cF0>, </span><span class=cF5>Now</span><span class=cF0>);}
<a name="l2171"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>__TIME__</span><span class=cF0> #</span><span class=cF1>exe</span><span class=cF0>{</span><span class=cF5>StreamPrint</span><span class=cF0>(</span><span class=cF6>&quot;\&quot;%T\&quot;&quot;</span><span class=cF0>, </span><span class=cF5>Now</span><span class=cF0>);}
<a name="l2172"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>__LINE__</span><span class=cF0> #</span><span class=cF1>exe</span><span class=cF0>{</span><span class=cF5>StreamPrint</span><span class=cF0>(</span><span class=cF6>&quot;%d&quot;</span><span class=cF0>, </span><span class=cF5>Fs</span><span class=cF0>-&gt;last_cc-&gt;lex_include_stack-&gt;line_num);}
<a name="l2173"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>__CMD_LINE__</span><span class=cF0> #</span><span class=cF1>exe</span><span class=cF0>{</span><span class=cF5>StreamPrint</span><span class=cF0>(</span><span class=cF6>&quot;%d&quot;</span><span class=cF0>, </span><span class=cF5>Fs</span><span class=cF0>-&gt;last_cc-&gt;flags &amp; </span><span class=cF3>CCF_CMD_LINE</span><span class=cF0> &amp;&amp; </span><span class=cF5>Fs</span><span class=cF0>-&gt;last_cc-&gt;lex_include_stack-&gt;depth &lt; </span><span class=cFE>1</span><span class=cF0>);}
<a name="l2174"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>__FILE__</span><span class=cF0> #</span><span class=cF1>exe</span><span class=cF0>{</span><span class=cF5>StreamPrint</span><span class=cF0>(</span><span class=cF6>&quot;\&quot;%s\&quot;&quot;</span><span class=cF0>, </span><span class=cF5>Fs</span><span class=cF0>-&gt;last_cc-&gt;lex_include_stack-&gt;full_name);}
<a name="l2175"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>__DIR__</span><span class=cF0> #</span><span class=cF1>exe</span><span class=cF0>{</span><span class=cF5>StreamDir</span><span class=cF0>;}
<a name="l2176"></a>
<a name="l2177"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>LFSF_DOC</span><span class=cF0> </span><span class=cFE>1</span><span class=cF0>
<a name="l2178"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>LFSF_DEFINE</span><span class=cF0> </span><span class=cFE>2</span><span class=cF0>
<a name="l2179"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CLexFile</span><span class=cF0>
<a name="l2180"></a>{
<a name="l2181"></a> </span><span class=cF9>CLexFile</span><span class=cF0> *next;
<a name="l2182"></a> </span><span class=cF1>U8</span><span class=cF0> *buf,
<a name="l2183"></a> *buf_ptr;
<a name="l2184"></a> </span><span class=cF9>I64</span><span class=cF0> line_num, flags;
<a name="l2185"></a> </span><span class=cF1>U8</span><span class=cF0> *full_name,
<a name="l2186"></a> *line_start;
<a name="l2187"></a> </span><span class=cF9>CDoc</span><span class=cF0> *doc;
<a name="l2188"></a> </span><span class=cF9>CDocEntry</span><span class=cF0> *cur_entry;
<a name="l2189"></a> </span><span class=cF9>I32</span><span class=cF0> depth;
<a name="l2190"></a> </span><span class=cF1>U8</span><span class=cF0> last_U16, pad[</span><span class=cFE>3</span><span class=cF0>];
<a name="l2191"></a>};
<a name="l2192"></a>
<a name="l2193"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CAOTCtrl</span><span class=cF0>
<a name="l2194"></a>{
<a name="l2195"></a> </span><span class=cF9>I64</span><span class=cF0> rip; </span><span class=cF2>//Inst ptr</span><span class=cF0>
<a name="l2196"></a> </span><span class=cF9>CAsmArg</span><span class=cF0> arg1, arg2;
<a name="l2197"></a> </span><span class=cF9>CAOTBinBlk</span><span class=cF0> *bin;
<a name="l2198"></a> </span><span class=cF9>I64</span><span class=cF0> num_bin_U8s,
<a name="l2199"></a> max_align_bits, org;
<a name="l2200"></a> </span><span class=cF9>CAsmUnresolvedRef</span><span class=cF0> *local_unresolved, *global_unresolved;
<a name="l2201"></a> </span><span class=cF9>CAOTAbsAddr</span><span class=cF0> *abss;
<a name="l2202"></a> </span><span class=cF9>CAOTHeapGlobal</span><span class=cF0> *heap_globals;
<a name="l2203"></a> </span><span class=cF9>I64</span><span class=cF0> list_col, list_last_rip;
<a name="l2204"></a> </span><span class=cF1>U8</span><span class=cF0> *last_label, *list_last_line;
<a name="l2205"></a> </span><span class=cF9>CLexFile</span><span class=cF0> *list_last_lfn;
<a name="l2206"></a> </span><span class=cF9>I64</span><span class=cF0> seg_size;
<a name="l2207"></a> </span><span class=cF1>Bool</span><span class=cF0> list;
<a name="l2208"></a>};
<a name="l2209"></a>
<a name="l2210"></a></span><span class=cF2>//Tokens</span><span class=cF0>
<a name="l2211"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>TK_EOF</span><span class=cF0> </span><span class=cFE>0</span><span class=cF0>
<a name="l2212"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>TK_SUPERSCRIPT</span><span class=cF0> </span><span class=cFE>0x001</span><span class=cF0>
<a name="l2213"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>TK_SUBSCRIPT</span><span class=cF0> </span><span class=cFE>0x002</span><span class=cF0>
<a name="l2214"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>TK_NORMALSCRIPT</span><span class=cF0> </span><span class=cFE>0x003</span><span class=cF0>
<a name="l2215"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>TK_IDENT</span><span class=cF0> </span><span class=cFE>0x100</span><span class=cF0>
<a name="l2216"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>TK_STR</span><span class=cF0> </span><span class=cFE>0x101</span><span class=cF0>
<a name="l2217"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>TK_I64</span><span class=cF0> </span><span class=cFE>0x102</span><span class=cF0>
<a name="l2218"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>TK_CHAR_CONST</span><span class=cF0> </span><span class=cFE>0x103</span><span class=cF0>
<a name="l2219"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>TK_F64</span><span class=cF0> </span><span class=cFE>0x104</span><span class=cF0>
<a name="l2220"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>TK_PLUS_PLUS</span><span class=cF0> </span><span class=cFE>0x105</span><span class=cF0>
<a name="l2221"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>TK_MINUS_MINUS</span><span class=cF0> </span><span class=cFE>0x106</span><span class=cF0>
<a name="l2222"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>TK_DEREFERENCE</span><span class=cF0> </span><span class=cFE>0x107</span><span class=cF0>
<a name="l2223"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>TK_DBL_COLON</span><span class=cF0> </span><span class=cFE>0x108</span><span class=cF0>
<a name="l2224"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>TK_SHL</span><span class=cF0> </span><span class=cFE>0x109</span><span class=cF0>
<a name="l2225"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>TK_SHR</span><span class=cF0> </span><span class=cFE>0x10A</span><span class=cF0>
<a name="l2226"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>TK_EQU_EQU</span><span class=cF0> </span><span class=cFE>0x10B</span><span class=cF0>
<a name="l2227"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>TK_NOT_EQU</span><span class=cF0> </span><span class=cFE>0x10C</span><span class=cF0>
<a name="l2228"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>TK_LESS_EQU</span><span class=cF0> </span><span class=cFE>0x10D</span><span class=cF0>
<a name="l2229"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>TK_GREATER_EQU</span><span class=cF0> </span><span class=cFE>0x10E</span><span class=cF0>
<a name="l2230"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>TK_AND_AND</span><span class=cF0> </span><span class=cFE>0x10F</span><span class=cF0>
<a name="l2231"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>TK_OR_OR</span><span class=cF0> </span><span class=cFE>0x110</span><span class=cF0>
<a name="l2232"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>TK_XOR_XOR</span><span class=cF0> </span><span class=cFE>0x111</span><span class=cF0>
<a name="l2233"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>TK_SHL_EQU</span><span class=cF0> </span><span class=cFE>0x112</span><span class=cF0>
<a name="l2234"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>TK_SHR_EQU</span><span class=cF0> </span><span class=cFE>0x113</span><span class=cF0>
<a name="l2235"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>TK_MUL_EQU</span><span class=cF0> </span><span class=cFE>0x114</span><span class=cF0>
<a name="l2236"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>TK_DIV_EQU</span><span class=cF0> </span><span class=cFE>0x115</span><span class=cF0>
<a name="l2237"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>TK_AND_EQU</span><span class=cF0> </span><span class=cFE>0x116</span><span class=cF0>
<a name="l2238"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>TK_OR_EQU</span><span class=cF0> </span><span class=cFE>0x117</span><span class=cF0>
<a name="l2239"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>TK_XOR_EQU</span><span class=cF0> </span><span class=cFE>0x118</span><span class=cF0>
<a name="l2240"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>TK_ADD_EQU</span><span class=cF0> </span><span class=cFE>0x119</span><span class=cF0>
<a name="l2241"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>TK_SUB_EQU</span><span class=cF0> </span><span class=cFE>0x11A</span><span class=cF0>
<a name="l2242"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>TK_IF</span><span class=cF0> </span><span class=cFE>0x11B</span><span class=cF0>
<a name="l2243"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>TK_IFDEF</span><span class=cF0> </span><span class=cFE>0x11C</span><span class=cF0>
<a name="l2244"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>TK_IFNDEF</span><span class=cF0> </span><span class=cFE>0x11D</span><span class=cF0>
<a name="l2245"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>TK_IFAOT</span><span class=cF0> </span><span class=cFE>0x11E</span><span class=cF0>
<a name="l2246"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>TK_IFJIT</span><span class=cF0> </span><span class=cFE>0x11F</span><span class=cF0>
<a name="l2247"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>TK_ENDIF</span><span class=cF0> </span><span class=cFE>0x120</span><span class=cF0>
<a name="l2248"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>TK_ELSE</span><span class=cF0> </span><span class=cFE>0x121</span><span class=cF0>
<a name="l2249"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>TK_MOD_EQU</span><span class=cF0> </span><span class=cFE>0x122</span><span class=cF0>
<a name="l2250"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>TK_DOT_DOT</span><span class=cF0> </span><span class=cFE>0x123</span><span class=cF0>
<a name="l2251"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>TK_ELLIPSIS</span><span class=cF0> </span><span class=cFE>0x124</span><span class=cF0>
<a name="l2252"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>TK_INS_BIN</span><span class=cF0> </span><span class=cFE>0x125</span><span class=cF0>
<a name="l2253"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>TK_INS_BIN_SIZE</span><span class=cF0> </span><span class=cFE>0x126</span><span class=cF0>
<a name="l2254"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>TK_TKS_NUM</span><span class=cF0> </span><span class=cFE>0x127</span><span class=cF0>
<a name="l2255"></a>
<a name="l2256"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CLexHashTableContext</span><span class=cF0>
<a name="l2257"></a>{
<a name="l2258"></a> </span><span class=cF9>CLexHashTableContext</span><span class=cF0> *next;
<a name="l2259"></a> </span><span class=cF9>I64</span><span class=cF0> old_flags, hash_mask;
<a name="l2260"></a> </span><span class=cF9>CHashFun</span><span class=cF0> *local_var_list,
<a name="l2261"></a> *fun;
<a name="l2262"></a> </span><span class=cF9>CHashTable</span><span class=cF0> *hash_table_list,
<a name="l2263"></a> *define_hash_table,
<a name="l2264"></a> *local_hash_table,
<a name="l2265"></a> *global_hash_table;
<a name="l2266"></a>};
<a name="l2267"></a>
<a name="l2268"></a></span><span class=cF2>//CompCtrl flags</span><span class=cF0>
<a name="l2269"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CCF_CMD_LINE</span><span class=cF0> </span><span class=cFE>0x001</span><span class=cF0>
<a name="l2270"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CCF_PROMPT</span><span class=cF0> </span><span class=cFE>0x002</span><span class=cF0>
<a name="l2271"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CCf_PROMPT</span><span class=cF0> </span><span class=cFE>1</span><span class=cF0>
<a name="l2272"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CCF_QUESTION_HELP</span><span class=cF0> </span><span class=cFE>0x004</span><span class=cF0>
<a name="l2273"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CCF_DONT_FREE_BUF</span><span class=cF0> </span><span class=cFE>0x008</span><span class=cF0>
<a name="l2274"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CCF_NO_DEFINES</span><span class=cF0> </span><span class=cFE>0x010</span><span class=cF0>
<a name="l2275"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CCF_IN_IF</span><span class=cF0> </span><span class=cFE>0x020</span><span class=cF0>
<a name="l2276"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CCF_JUST_LOAD</span><span class=cF0> </span><span class=cFE>0x040</span><span class=cF0>
<a name="l2277"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CCF_KEEP_NEW_LINES</span><span class=cF0> </span><span class=cFE>0x080</span><span class=cF0>
<a name="l2278"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CCF_KEEP_DOT</span><span class=cF0> </span><span class=cFE>0x100</span><span class=cF0>
<a name="l2279"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CCF_KEEP_SIGN_NUM</span><span class=cF0> </span><span class=cFE>0x200</span><span class=cF0>
<a name="l2280"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CCF_KEEP_AT_SIGN</span><span class=cF0> </span><span class=cFE>0x400</span><span class=cF0>
<a name="l2281"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CCF_NO_CHAR_CONST</span><span class=cF0> </span><span class=cFE>0x800</span><span class=cF0>
<a name="l2282"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CCf_PASS_TRACE_PRESENT</span><span class=cF0> </span><span class=cFE>12</span><span class=cF0>
<a name="l2283"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CCF_NOT_CONST</span><span class=cF0> </span><span class=cFE>0x0000020000</span><span class=cF0>
<a name="l2284"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CCF_NO_REG_OPT</span><span class=cF0> </span><span class=cFE>0x0000040000</span><span class=cF0>
<a name="l2285"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CCF_IN_QUOTES</span><span class=cF0> </span><span class=cFE>0x0000080000</span><span class=cF0>
<a name="l2286"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CCF_EXE_BLK</span><span class=cF0> </span><span class=cFE>0x0000100000</span><span class=cF0>
<a name="l2287"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CCF_HAS_MISC_DATA</span><span class=cF0> </span><span class=cFE>0x0000200000</span><span class=cF0>
<a name="l2288"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CCF_HAS_RETURN</span><span class=cF0> </span><span class=cFE>0x0000400000</span><span class=cF0>
<a name="l2289"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CCF_ASM_EXPRESSIONS</span><span class=cF0> </span><span class=cFE>0x0000800000</span><span class=cF0>
<a name="l2290"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CCF_UNRESOLVED</span><span class=cF0> </span><span class=cFE>0x0001000000</span><span class=cF0>
<a name="l2291"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CCF_LOCAL</span><span class=cF0> </span><span class=cFE>0x0002000000</span><span class=cF0>
<a name="l2292"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CCF_FUN_EXP</span><span class=cF0> </span><span class=cFE>0x0004000000</span><span class=cF0>
<a name="l2293"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CCf_FUN_EXP</span><span class=cF0> </span><span class=cFE>26</span><span class=cF0>
<a name="l2294"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CCF_POSTINC</span><span class=cF0> </span><span class=cFE>0x0008000000</span><span class=cF0>
<a name="l2295"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CCF_POSTDEC</span><span class=cF0> </span><span class=cFE>0x0010000000</span><span class=cF0>
<a name="l2296"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CCF_PREINC</span><span class=cF0> </span><span class=cFE>0x0020000000</span><span class=cF0>
<a name="l2297"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CCF_PREDEC</span><span class=cF0> </span><span class=cFE>0x0040000000</span><span class=cF0>
<a name="l2298"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CCF_ARRAY</span><span class=cF0> </span><span class=cFE>0x0080000000</span><span class=cF0>
<a name="l2299"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CCF_RAX</span><span class=cF0> </span><span class=cFE>0x0100000000</span><span class=cF0>
<a name="l2300"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CCF_USE_LAST_U16</span><span class=cF0> </span><span class=cFE>0x0200000000</span><span class=cF0>
<a name="l2301"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CCf_USE_LAST_U16</span><span class=cF0> </span><span class=cFE>33</span><span class=cF0>
<a name="l2302"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CCF_LAST_WAS_DOT</span><span class=cF0> </span><span class=cFE>0x0400000000</span><span class=cF0>
<a name="l2303"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CCF_AOT_COMPILE</span><span class=cF0> </span><span class=cFE>0x0800000000</span><span class=cF0>
<a name="l2304"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CCf_AOT_COMPILE</span><span class=cF0> </span><span class=cFE>35</span><span class=cF0>
<a name="l2305"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CCF_NO_ABSS</span><span class=cF0> </span><span class=cFE>0x1000000000</span><span class=cF0>
<a name="l2306"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CCF_PAREN</span><span class=cF0> </span><span class=cFE>0x2000000000</span><span class=cF0>
<a name="l2307"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CCf_PAREN</span><span class=cF0> </span><span class=cFE>37</span><span class=cF0>
<a name="l2308"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CCF_CLASS_DOL_OFFSET</span><span class=cF0> </span><span class=cFE>0x4000000000</span><span class=cF0>
<a name="l2309"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CCF_DONT_MAKE_RES</span><span class=cF0> </span><span class=cFE>0x8000000000</span><span class=cF0>
<a name="l2310"></a>
<a name="l2311"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CCompCtrl</span><span class=cF0>
<a name="l2312"></a>{
<a name="l2313"></a> </span><span class=cF9>CCompCtrl</span><span class=cF0> *next, *last;
<a name="l2314"></a> </span><span class=cF9>I64</span><span class=cF0> token, flags,
<a name="l2315"></a> cur_i64;
<a name="l2316"></a> </span><span class=cF1>F64</span><span class=cF0> cur_f64;
<a name="l2317"></a> </span><span class=cF1>U8</span><span class=cF0> *cur_str;
<a name="l2318"></a> </span><span class=cF9>I64</span><span class=cF0> cur_str_len,
<a name="l2319"></a> class_dol_offset;
<a name="l2320"></a> </span><span class=cF1>U8</span><span class=cF0> *dollar_buf;
<a name="l2321"></a> </span><span class=cF9>I64</span><span class=cF0> dollar_count;
<a name="l2322"></a> </span><span class=cF1>U8</span><span class=cF0> *cur_help_idx;
<a name="l2323"></a> </span><span class=cF9>I64</span><span class=cF0> last_U16,
<a name="l2324"></a> min_line, max_line, last_line_num,
<a name="l2325"></a> lock_count;
<a name="l2326"></a> </span><span class=cF9>U32</span><span class=cF0> *</span><span class=cFB>char_bmp_alpha_numeric</span><span class=cF0>;
<a name="l2327"></a> </span><span class=cF9>CLexHashTableContext</span><span class=cF0> htc;
<a name="l2328"></a> </span><span class=cF9>CHashGeneric</span><span class=cF0> *hash_entry;
<a name="l2329"></a> </span><span class=cF9>CAbsCountsI64</span><span class=cF0> abs_counts;
<a name="l2330"></a> </span><span class=cF9>CAsmUndefHash</span><span class=cF0> *asm_undef_hash;
<a name="l2331"></a> </span><span class=cF9>CMemberList</span><span class=cF0> *local_var_entry;
<a name="l2332"></a> </span><span class=cF9>CCodeMisc</span><span class=cF0> *lb_leave;
<a name="l2333"></a> </span><span class=cF1>U8</span><span class=cF0> *cur_buf_ptr;
<a name="l2334"></a> </span><span class=cF9>CLexFile</span><span class=cF0> *lex_include_stack,
<a name="l2335"></a> *lex_parse_stack,
<a name="l2336"></a> *fun_lex_file;
<a name="l2337"></a> </span><span class=cF9>CStreamBlk</span><span class=cF0> *next_stream_blk, *last_stream_blk;
<a name="l2338"></a> </span><span class=cF9>CAOT</span><span class=cF0> *aot;
<a name="l2339"></a>
<a name="l2340"></a> </span><span class=cF9>I64</span><span class=cF0> pass, opts, pass_trace, saved_pass_trace, error_count, warning_count;
<a name="l2341"></a>
<a name="l2342"></a> </span><span class=cF2>//For intermediate codes with multiple float ops (int&lt;-&gt;float conversions)</span><span class=cF0>
<a name="l2343"></a> </span><span class=cF9>I64</span><span class=cF0> cur_ic_float_op_num, last_ic_float_op_num;
<a name="l2344"></a> </span><span class=cF9>CIntermediateCode</span><span class=cF0> *last_float_op_ic;
<a name="l2345"></a> </span><span class=cF1>Bool</span><span class=cF0> last_dont_pushable, last_dont_popable, last_float_op_pos, dont_push_float, pad[</span><span class=cFE>4</span><span class=cF0>];
<a name="l2346"></a>
<a name="l2347"></a> </span><span class=cF9>CCodeCtrl</span><span class=cF0> coc;
<a name="l2348"></a> </span><span class=cF9>CParseStack</span><span class=cF0> *ps;
<a name="l2349"></a> </span><span class=cF9>CAOTCtrl</span><span class=cF0> *aotc;
<a name="l2350"></a> </span><span class=cF9>I64</span><span class=cF0> aot_depth, prompt_line;
<a name="l2351"></a>#</span><span class=cF1>assert</span><span class=cF0> !($ &amp; </span><span class=cFE>7</span><span class=cF0>)
<a name="l2352"></a>};
<a name="l2353"></a>
<a name="l2354"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>&quot;Compiler&quot;</span><span class=cF0>
<a name="l2355"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CCompGlobals</span><span class=cF0>
<a name="l2356"></a>{
<a name="l2357"></a> </span><span class=cF9>CHashTable</span><span class=cF0> *asm_hash;
<a name="l2358"></a> </span><span class=cF9>CHashClass</span><span class=cF0> *internal_types[</span><span class=cF3>RT_RTS_NUM</span><span class=cF0>];
<a name="l2359"></a> </span><span class=cF9>CIntermediateCode</span><span class=cF0> ic_nop;
<a name="l2360"></a> </span><span class=cF9>U32</span><span class=cF0> *dual_U16_tokens1, *dual_U16_tokens2, *dual_U16_tokens3,
<a name="l2361"></a> *binary_ops;
<a name="l2362"></a> </span><span class=cF9>I64</span><span class=cF0> num_reg_vars, num_non_ptr_vars,
<a name="l2363"></a> stack_tmps_mask, reg_vars_mask, non_ptr_vars_mask;
<a name="l2364"></a> </span><span class=cF1>U8</span><span class=cF0> *to_reg_vars_map, *non_ptr_vars_map;
<a name="l2365"></a> </span><span class=cF9>I64</span><span class=cF0> size_arg_mask[</span><span class=cFE>9</span><span class=cF0>],
<a name="l2366"></a> compiled_lines;
<a name="l2367"></a>};
<a name="l2368"></a>
<a name="l2369"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>&quot;Debugging/Unassemble&quot;</span><span class=cF0>
<a name="l2370"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CUAsmGlobals</span><span class=cF0>
<a name="l2371"></a>{
<a name="l2372"></a> </span><span class=cF9>CInst</span><span class=cF0> **table_16_32,
<a name="l2373"></a> **table_64;
<a name="l2374"></a> </span><span class=cF9>I64</span><span class=cF0> table_16_32_entries,
<a name="l2375"></a> table_64_entries,
<a name="l2376"></a> ins64_arg_mask,
<a name="l2377"></a> signed_arg_mask,
<a name="l2378"></a> mem_arg_mask;
<a name="l2379"></a>};
<a name="l2380"></a>
<a name="l2381"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>&quot;Devices/SMBIOS&quot;</span><span class=cF0>
<a name="l2382"></a></span><span class=cF2>//SMBIOS parsing based on SMBIOS specification 3.3.0 (document &quot;DSP0134&quot;)</span><span class=cF0>
<a name="l2383"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SMBIOSt_BIOS</span><span class=cF0> </span><span class=cFE>0</span><span class=cF0>
<a name="l2384"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SMBIOSt_SYSTEM</span><span class=cF0> </span><span class=cFE>1</span><span class=cF0>
<a name="l2385"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SMBIOSt_BASEBOARD</span><span class=cF0> </span><span class=cFE>2</span><span class=cF0>
<a name="l2386"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SMBIOSt_ENCLOSURE</span><span class=cF0> </span><span class=cFE>3</span><span class=cF0>
<a name="l2387"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SMBIOSt_PROCESSOR</span><span class=cF0> </span><span class=cFE>4</span><span class=cF0>
<a name="l2388"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SMBIOSt_CACHE</span><span class=cF0> </span><span class=cFE>7</span><span class=cF0>
<a name="l2389"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SMBIOSt_CONNECTOR</span><span class=cF0> </span><span class=cFE>8</span><span class=cF0>
<a name="l2390"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SMBIOSt_SLOT</span><span class=cF0> </span><span class=cFE>9</span><span class=cF0>
<a name="l2391"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SMBIOSt_OEM_STRINGS</span><span class=cF0> </span><span class=cFE>11</span><span class=cF0>
<a name="l2392"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SMBIOSt_SYS_CONFIG_OPTIONS</span><span class=cF0> </span><span class=cFE>12</span><span class=cF0>
<a name="l2393"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SMBIOSt_PHYMEM</span><span class=cF0> </span><span class=cFE>16</span><span class=cF0>
<a name="l2394"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SMBIOSt_MEM_DEVICE</span><span class=cF0> </span><span class=cFE>17</span><span class=cF0>
<a name="l2395"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SMBIOSt_MAPPED_ADDR</span><span class=cF0> </span><span class=cFE>19</span><span class=cF0>
<a name="l2396"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SMBIOSt_BATTERY</span><span class=cF0> </span><span class=cFE>22</span><span class=cF0>
<a name="l2397"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SMBIOSt_BOOT_INFO</span><span class=cF0> </span><span class=cFE>32</span><span class=cF0>
<a name="l2398"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SMBIOSt_ALL</span><span class=cF0> </span><span class=cFE>0xFF</span><span class=cF0> </span><span class=cF2>//Non-existent placeholder type</span><span class=cF0>
<a name="l2399"></a>
<a name="l2400"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CSMBIOSHeader</span><span class=cF0>
<a name="l2401"></a>{</span><span class=cF2>//Section 6.1.2 line 885</span><span class=cF0>
<a name="l2402"></a> </span><span class=cF1>U8</span><span class=cF0> type, </span><span class=cF2>//SMBIOSt_*</span><span class=cF0>
<a name="l2403"></a> length;
<a name="l2404"></a> </span><span class=cF9>U16</span><span class=cF0> handle; </span><span class=cF2>//identifier for this structure.</span><span class=cF0>
<a name="l2405"></a>};
<a name="l2406"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CSMBIOSEntryPoint</span><span class=cF0>
<a name="l2407"></a>{</span><span class=cF2>//Section 5.2.1 line 812</span><span class=cF0>
<a name="l2408"></a> </span><span class=cF1>U8</span><span class=cF0> anchor_str[</span><span class=cFE>4</span><span class=cF0>], </span><span class=cF2>// '_SM_'</span><span class=cF0>
<a name="l2409"></a> checksum,
<a name="l2410"></a> length,
<a name="l2411"></a> major_version,
<a name="l2412"></a> minor_version;
<a name="l2413"></a> </span><span class=cF9>U16</span><span class=cF0> max_structure_size;
<a name="l2414"></a> </span><span class=cF1>U8</span><span class=cF0> entry_point_revision,
<a name="l2415"></a> formatted_area[</span><span class=cFE>5</span><span class=cF0>],
<a name="l2416"></a> anchor_str2[</span><span class=cFE>5</span><span class=cF0>], </span><span class=cF2>// '_DMI_'</span><span class=cF0>
<a name="l2417"></a> checksum2;
<a name="l2418"></a> </span><span class=cF9>U16</span><span class=cF0> table_length;
<a name="l2419"></a> </span><span class=cF9>U32</span><span class=cF0> table_address;
<a name="l2420"></a> </span><span class=cF9>U16</span><span class=cF0> structure_count;
<a name="l2421"></a> </span><span class=cF1>U8</span><span class=cF0> bcd_revision;
<a name="l2422"></a>};
<a name="l2423"></a>
<a name="l2424"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CSMBIOSBIOSInfo</span><span class=cF0>
<a name="l2425"></a>{</span><span class=cF2>//Section 7.1 line 922</span><span class=cF0>
<a name="l2426"></a> </span><span class=cF9>CSMBIOSHeader</span><span class=cF0> header;
<a name="l2427"></a> </span><span class=cF1>U8</span><span class=cF0> vendor,
<a name="l2428"></a> version;
<a name="l2429"></a> </span><span class=cF9>U16</span><span class=cF0> start_address_segment;
<a name="l2430"></a> </span><span class=cF1>U8</span><span class=cF0> release_date,
<a name="l2431"></a> rom_size;
<a name="l2432"></a> </span><span class=cF9>U64</span><span class=cF0> flags;
<a name="l2433"></a> </span><span class=cF1>U8</span><span class=cF0> extended_flags[</span><span class=cFE>2</span><span class=cF0>];
<a name="l2434"></a> </span><span class=cF1>U8</span><span class=cF0> major_release,
<a name="l2435"></a> minor_release,
<a name="l2436"></a> embedded_controller_firmware_major_release,
<a name="l2437"></a> embedded_controller_firmware_minor_release;
<a name="l2438"></a> </span><span class=cF9>U16</span><span class=cF0> extended_rom_size;
<a name="l2439"></a>};
<a name="l2440"></a>
<a name="l2441"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CSMBIOSSystemInfo</span><span class=cF0>
<a name="l2442"></a>{</span><span class=cF2>//Section 7.2 line 936</span><span class=cF0>
<a name="l2443"></a> </span><span class=cF9>CSMBIOSHeader</span><span class=cF0> header;
<a name="l2444"></a> </span><span class=cF1>U8</span><span class=cF0> manufacturer,
<a name="l2445"></a> product_name,
<a name="l2446"></a> version,
<a name="l2447"></a> serial_number,
<a name="l2448"></a> uuid[</span><span class=cFE>16</span><span class=cF0>],
<a name="l2449"></a> wakeup_type,
<a name="l2450"></a> sku_number,
<a name="l2451"></a> family;
<a name="l2452"></a>};
<a name="l2453"></a>
<a name="l2454"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CSMBIOSBaseboardInfo</span><span class=cF0>
<a name="l2455"></a>{</span><span class=cF2>//Section 7.3 line 968</span><span class=cF0>
<a name="l2456"></a> </span><span class=cF9>CSMBIOSHeader</span><span class=cF0> header;
<a name="l2457"></a> </span><span class=cF1>U8</span><span class=cF0> manufacturer,
<a name="l2458"></a> product,
<a name="l2459"></a> version,
<a name="l2460"></a> serial_number,
<a name="l2461"></a> asset_tag,
<a name="l2462"></a> feature_flags,
<a name="l2463"></a> chassis_location;
<a name="l2464"></a> </span><span class=cF9>U16</span><span class=cF0> chassis_handle;
<a name="l2465"></a> </span><span class=cF1>U8</span><span class=cF0> board_type,
<a name="l2466"></a> contained_object_handles_num;
<a name="l2467"></a> </span><span class=cF9>U16</span><span class=cF0> contained_object_handles[</span><span class=cFE>1</span><span class=cF0>]; </span><span class=cF2>//Variable length, member above gives length</span><span class=cF0>
<a name="l2468"></a>};
<a name="l2469"></a>
<a name="l2470"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CSMBIOSEnclosureInfo</span><span class=cF0>
<a name="l2471"></a>{</span><span class=cF2>//Section 7.4 line 984</span><span class=cF0>
<a name="l2472"></a> </span><span class=cF9>CSMBIOSHeader</span><span class=cF0> header;
<a name="l2473"></a> </span><span class=cF1>U8</span><span class=cF0> manufacturer,
<a name="l2474"></a> type,
<a name="l2475"></a> version,
<a name="l2476"></a> serial_number,
<a name="l2477"></a> asset_tag,
<a name="l2478"></a> bootup_state,
<a name="l2479"></a> power_supply_state,
<a name="l2480"></a> thermal_state,
<a name="l2481"></a> security_status;
<a name="l2482"></a> </span><span class=cF9>U32</span><span class=cF0> oem_defined;
<a name="l2483"></a> </span><span class=cF1>U8</span><span class=cF0> height,
<a name="l2484"></a> power_cord_count,
<a name="l2485"></a> contained_element_count,
<a name="l2486"></a> contained_element_record_length,
<a name="l2487"></a> contained_elements[</span><span class=cFE>1</span><span class=cF0>]; </span><span class=cF2>//array length == count * record_length;</span><span class=cF0>
<a name="l2488"></a>};
<a name="l2489"></a>
<a name="l2490"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CSMBIOSEnclosureContainedElement</span><span class=cF0>
<a name="l2491"></a>{</span><span class=cF2>//Section 7.4.4 line 999</span><span class=cF0>
<a name="l2492"></a> </span><span class=cF1>U8</span><span class=cF0> contained_element_type,
<a name="l2493"></a> contained_element_minimum,
<a name="l2494"></a> contained_element_maximum;
<a name="l2495"></a>};
<a name="l2496"></a>
<a name="l2497"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CSMBIOSProcessorInfo</span><span class=cF0>
<a name="l2498"></a>{</span><span class=cF2>//Section 7.5 line 1010</span><span class=cF0>
<a name="l2499"></a> </span><span class=cF9>CSMBIOSHeader</span><span class=cF0> header;
<a name="l2500"></a> </span><span class=cF1>U8</span><span class=cF0> name,
<a name="l2501"></a> type,
<a name="l2502"></a> family,
<a name="l2503"></a> manufacturer;
<a name="l2504"></a> </span><span class=cF9>U64</span><span class=cF0> id;
<a name="l2505"></a> </span><span class=cF1>U8</span><span class=cF0> version,
<a name="l2506"></a> voltage;
<a name="l2507"></a> </span><span class=cF9>U16</span><span class=cF0> external_clock,
<a name="l2508"></a> max_speed,
<a name="l2509"></a> current_speed;
<a name="l2510"></a> </span><span class=cF1>U8</span><span class=cF0> status,
<a name="l2511"></a> upgrade;
<a name="l2512"></a> </span><span class=cF9>U16</span><span class=cF0> l1_cache_handle,
<a name="l2513"></a> l2_cache_handle,
<a name="l2514"></a> l3_cache_handle;
<a name="l2515"></a> </span><span class=cF1>U8</span><span class=cF0> serial_number,
<a name="l2516"></a> asset_tag,
<a name="l2517"></a> part_number,
<a name="l2518"></a> core_count,
<a name="l2519"></a> cores_enabled,
<a name="l2520"></a> thread_count;
<a name="l2521"></a> </span><span class=cF9>U16</span><span class=cF0> characteristics;
<a name="l2522"></a>};
<a name="l2523"></a>
<a name="l2524"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CSMBIOSCacheInfo</span><span class=cF0>
<a name="l2525"></a>{</span><span class=cF2>//Section 7.8 line 1168</span><span class=cF0>
<a name="l2526"></a> </span><span class=cF9>CSMBIOSHeader</span><span class=cF0> header;
<a name="l2527"></a> </span><span class=cF1>U8</span><span class=cF0> name;
<a name="l2528"></a> </span><span class=cF9>U16</span><span class=cF0> config,
<a name="l2529"></a> max_size,
<a name="l2530"></a> installed_size,
<a name="l2531"></a> supported_sram_type,
<a name="l2532"></a> installed_sram_type;
<a name="l2533"></a> </span><span class=cF1>U8</span><span class=cF0> cache_speed,
<a name="l2534"></a> error_correction_type,
<a name="l2535"></a> cache_type,
<a name="l2536"></a> associativity;
<a name="l2537"></a>};
<a name="l2538"></a>
<a name="l2539"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CSMBIOSConnectorInfo</span><span class=cF0>
<a name="l2540"></a>{</span><span class=cF2>//Section 7.9 line 1198</span><span class=cF0>
<a name="l2541"></a> </span><span class=cF9>CSMBIOSHeader</span><span class=cF0> header;
<a name="l2542"></a> </span><span class=cF1>U8</span><span class=cF0> internal_name,
<a name="l2543"></a> internal_type,
<a name="l2544"></a> external_name,
<a name="l2545"></a> external_type,
<a name="l2546"></a> port_type;
<a name="l2547"></a>};
<a name="l2548"></a>
<a name="l2549"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CSMBIOSSlotInfo</span><span class=cF0>
<a name="l2550"></a>{</span><span class=cF2>//Section 7.10 line 1226</span><span class=cF0>
<a name="l2551"></a> </span><span class=cF9>CSMBIOSHeader</span><span class=cF0> header;
<a name="l2552"></a> </span><span class=cF1>U8</span><span class=cF0> name,
<a name="l2553"></a> type,
<a name="l2554"></a> data_bus_width,
<a name="l2555"></a> current_usage,
<a name="l2556"></a> length;
<a name="l2557"></a> </span><span class=cF9>U16</span><span class=cF0> id;
<a name="l2558"></a> </span><span class=cF1>U8</span><span class=cF0> flags1,
<a name="l2559"></a> flags2;
<a name="l2560"></a> </span><span class=cF9>U16</span><span class=cF0> segment_group_number;
<a name="l2561"></a> </span><span class=cF1>U8</span><span class=cF0> bus_number,
<a name="l2562"></a> device_function_number;
<a name="l2563"></a>};
<a name="l2564"></a>
<a name="l2565"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CSMBIOSMemArrayInfo</span><span class=cF0>
<a name="l2566"></a>{</span><span class=cF2>//Section 7.17 line 1519</span><span class=cF0>
<a name="l2567"></a> </span><span class=cF9>CSMBIOSHeader</span><span class=cF0> header;
<a name="l2568"></a> </span><span class=cF1>U8</span><span class=cF0> location,
<a name="l2569"></a> use,
<a name="l2570"></a> memory_error_correction;
<a name="l2571"></a> </span><span class=cF9>U32</span><span class=cF0> max_capacity;
<a name="l2572"></a> </span><span class=cF9>U16</span><span class=cF0> memory_error_info_handle,
<a name="l2573"></a> mem_device_count;
<a name="l2574"></a> </span><span class=cF9>U64</span><span class=cF0> extended_max_capacity;
<a name="l2575"></a>};
<a name="l2576"></a>
<a name="l2577"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CSMBIOSMemDeviceInfo</span><span class=cF0>
<a name="l2578"></a>{</span><span class=cF2>//Section 7.18 line 1538</span><span class=cF0>
<a name="l2579"></a> </span><span class=cF9>CSMBIOSHeader</span><span class=cF0> header;
<a name="l2580"></a> </span><span class=cF9>U16</span><span class=cF0> memory_array_handle,
<a name="l2581"></a> memory_error_info_handle,
<a name="l2582"></a> total_width,
<a name="l2583"></a> data_width,
<a name="l2584"></a> size;
<a name="l2585"></a> </span><span class=cF1>U8</span><span class=cF0> form_factor,
<a name="l2586"></a> device_set,
<a name="l2587"></a> device_locator,
<a name="l2588"></a> bank_locator,
<a name="l2589"></a> type;
<a name="l2590"></a> </span><span class=cF9>U16</span><span class=cF0> type_detail,
<a name="l2591"></a> speed;
<a name="l2592"></a> </span><span class=cF1>U8</span><span class=cF0> manufacturer,
<a name="l2593"></a> serial_number,
<a name="l2594"></a> asset_tag,
<a name="l2595"></a> part_number,
<a name="l2596"></a> attributes;
<a name="l2597"></a> </span><span class=cF9>U32</span><span class=cF0> extended_size;
<a name="l2598"></a> </span><span class=cF9>U16</span><span class=cF0> configured_speed,
<a name="l2599"></a> min_voltage,
<a name="l2600"></a> max_voltage,
<a name="l2601"></a> configured_voltage;
<a name="l2602"></a>};
<a name="l2603"></a>
<a name="l2604"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CSMBIOSBatteryInfo</span><span class=cF0>
<a name="l2605"></a>{</span><span class=cF2>//Section 7.23 line 1723</span><span class=cF0>
<a name="l2606"></a> </span><span class=cF9>CSMBIOSHeader</span><span class=cF0> header;
<a name="l2607"></a> </span><span class=cF1>U8</span><span class=cF0> location,
<a name="l2608"></a> manufacturer,
<a name="l2609"></a> manufacture_date,
<a name="l2610"></a> serial_number,
<a name="l2611"></a> name,
<a name="l2612"></a> chemistry,
<a name="l2613"></a> capacity,
<a name="l2614"></a> voltage,
<a name="l2615"></a> sbds_version_number,
<a name="l2616"></a> max_battery_data_error,
<a name="l2617"></a> sbds_serial_number,
<a name="l2618"></a> sbds_manufacture_date,
<a name="l2619"></a> sbds_chemistry,
<a name="l2620"></a> capacity_multiplier;
<a name="l2621"></a> </span><span class=cF9>U32</span><span class=cF0> oem;
<a name="l2622"></a>};
<a name="l2623"></a>
<a name="l2624"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>&quot;Devices;PCI&quot;</span><span class=cF0>
<a name="l2625"></a>
<a name="l2626"></a></span><span class=cF2>//PCI Registers, used with </span><a href="https://zeal-operating-system.github.io/ZealOS/Kernel/PCI.CC.html#l38"><span class=cF4>PCIRead</span></a><span class=cF2> functions.</span><span class=cF0>
<a name="l2627"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>PCIR_VENDOR_ID</span><span class=cF0> </span><span class=cFE>0x00</span><span class=cF0>
<a name="l2628"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>PCIR_DEVICE_ID</span><span class=cF0> </span><span class=cFE>0x02</span><span class=cF0>
<a name="l2629"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>PCIR_COMMAND</span><span class=cF0> </span><span class=cFE>0x04</span><span class=cF0>
<a name="l2630"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>PCIR_STATUS</span><span class=cF0> </span><span class=cFE>0x06</span><span class=cF0>
<a name="l2631"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>PCIR_REVISION_ID</span><span class=cF0> </span><span class=cFE>0x08</span><span class=cF0>
<a name="l2632"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>PCIR_PROG_IF</span><span class=cF0> </span><span class=cFE>0x09</span><span class=cF0>
<a name="l2633"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>PCIR_SUB_CODE</span><span class=cF0> </span><span class=cFE>0x0A</span><span class=cF0>
<a name="l2634"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>PCIR_CLASS_CODE</span><span class=cF0> </span><span class=cFE>0x0B</span><span class=cF0>
<a name="l2635"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>PCIR_CACHE_LINE_SIZE</span><span class=cF0> </span><span class=cFE>0x0C</span><span class=cF0>
<a name="l2636"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>PCIR_LATENCY_TIMER</span><span class=cF0> </span><span class=cFE>0x0D</span><span class=cF0>
<a name="l2637"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>PCIR_HEADER_TYPE</span><span class=cF0> </span><span class=cFE>0x0E</span><span class=cF0>
<a name="l2638"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>PCIR_BIST</span><span class=cF0> </span><span class=cFE>0x0F</span><span class=cF0>
<a name="l2639"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>PCIR_BASE0</span><span class=cF0> </span><span class=cFE>0x10</span><span class=cF0>
<a name="l2640"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>PCIR_BASE1</span><span class=cF0> </span><span class=cFE>0x14</span><span class=cF0>
<a name="l2641"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>PCIR_BASE2</span><span class=cF0> </span><span class=cFE>0x18</span><span class=cF0>
<a name="l2642"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>PCIR_BASE3</span><span class=cF0> </span><span class=cFE>0x1C</span><span class=cF0>
<a name="l2643"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>PCIR_BASE4</span><span class=cF0> </span><span class=cFE>0x20</span><span class=cF0>
<a name="l2644"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>PCIR_BASE5</span><span class=cF0> </span><span class=cFE>0x24</span><span class=cF0>
<a name="l2645"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>PCIR_SUBSYS_VENDOR_ID</span><span class=cF0> </span><span class=cFE>0x2C</span><span class=cF0>
<a name="l2646"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>PCIR_SUBSYS_ID</span><span class=cF0> </span><span class=cFE>0x2E</span><span class=cF0>
<a name="l2647"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>PCIR_EXPANSION_ROM</span><span class=cF0> </span><span class=cFE>0x30</span><span class=cF0>
<a name="l2648"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>PCIR_CAPABILITIES</span><span class=cF0> </span><span class=cFE>0x34</span><span class=cF0>
<a name="l2649"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>PCIR_INTERRUPT_LINE</span><span class=cF0> </span><span class=cFE>0x3C</span><span class=cF0>
<a name="l2650"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>PCIR_INTERRUPT_PIN</span><span class=cF0> </span><span class=cFE>0x3D</span><span class=cF0>
<a name="l2651"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>PCIR_MIN_GRANT</span><span class=cF0> </span><span class=cFE>0x3E</span><span class=cF0>
<a name="l2652"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>PCIR_MAX_LATENCY</span><span class=cF0> </span><span class=cFE>0x3F</span><span class=cF0>
<a name="l2653"></a>
<a name="l2654"></a></span><span class=cF2>//PCI class codes</span><span class=cF0>
<a name="l2655"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>PCIC_STORAGE</span><span class=cF0> </span><span class=cFE>0x1</span><span class=cF0>
<a name="l2656"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>PCIC_NETWORK</span><span class=cF0> </span><span class=cFE>0x2</span><span class=cF0>
<a name="l2657"></a>
<a name="l2658"></a></span><span class=cF2>//PCI subclass codes</span><span class=cF0>
<a name="l2659"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>PCISC_ETHERNET</span><span class=cF0> </span><span class=cFE>0x0</span><span class=cF0>
<a name="l2660"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>PCISC_AHCI</span><span class=cF0> </span><span class=cFE>0x6</span><span class=cF0>
<a name="l2661"></a>
<a name="l2662"></a></span><span class=cF2>//PCI I/O ports</span><span class=cF0>
<a name="l2663"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>PCI_ADDR</span><span class=cF0> </span><span class=cFE>0xCF8</span><span class=cF0>
<a name="l2664"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>PCI_DATA</span><span class=cF0> </span><span class=cFE>0xCFC</span><span class=cF0>
<a name="l2665"></a>
<a name="l2666"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CPCIDev</span><span class=cF0>
<a name="l2667"></a>{
<a name="l2668"></a> </span><span class=cF9>CPCIDev</span><span class=cF0> *next, *last;
<a name="l2669"></a> </span><span class=cF1>U8</span><span class=cF0> bus, </span><span class=cFB>dev</span><span class=cF0>, fun,
<a name="l2670"></a> *vendor_str,
<a name="l2671"></a> *dev_id_str,
<a name="l2672"></a> class_code,
<a name="l2673"></a> sub_code,
<a name="l2674"></a> prog_if,
<a name="l2675"></a> revision_id,
<a name="l2676"></a> bist,
<a name="l2677"></a> header_type,
<a name="l2678"></a> latency_timer,
<a name="l2679"></a> cache_line_size,
<a name="l2680"></a> capabilities,
<a name="l2681"></a> interrupt_line,
<a name="l2682"></a> interrupt_pin,
<a name="l2683"></a> min_grant,
<a name="l2684"></a> max_latency;
<a name="l2685"></a> </span><span class=cF9>U16</span><span class=cF0> vendor_id,
<a name="l2686"></a> device_id,
<a name="l2687"></a> subsys_id,
<a name="l2688"></a> subsys_vendor_id;
<a name="l2689"></a> </span><span class=cF9>U32</span><span class=cF0> base[</span><span class=cFE>6</span><span class=cF0>],
<a name="l2690"></a> erom;
<a name="l2691"></a>};
<a name="l2692"></a>
<a name="l2693"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>&quot;Devices;Disk/AHCI&quot;</span><span class=cF0>
<a name="l2694"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>AHCI_MAX_PORTS</span><span class=cF0> </span><span class=cFE>32</span><span class=cF0>
<a name="l2695"></a>
<a name="l2696"></a></span><span class=cF2>//Physical Region Descriptor Table</span><span class=cF0>
<a name="l2697"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>AHCI_PRD_MAX_BYTES</span><span class=cF0> (</span><span class=cFE>4</span><span class=cF0> * </span><span class=cFE>1024</span><span class=cF0> * </span><span class=cFE>1024</span><span class=cF0>) </span><span class=cF2>//Max bytes that can go in one PRD entry (4 MiB). Section 4.2.3.3 Fig. 17 (DBC) </span><span class=cF0>
<a name="l2698"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>AHCI_PRDT_MAX_BLOCKS</span><span class=cF0> (</span><span class=cF3>U16_MAX</span><span class=cF0> + </span><span class=cFE>1</span><span class=cF0>) </span><span class=cF2>//Max blocks you can transfer in one command. </span><span class=cF0>
<a name="l2699"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>AHCI_PRDT_MAX_LEN</span><span class=cF0> </span><span class=cFE>8</span><span class=cF0> </span><span class=cF2>//Max PRD entries in one command. This is equal to (MAX_BLOCKS * BLK_SIZE) . MAX_BYTES.</span><span class=cF0>
<a name="l2700"></a>
<a name="l2701"></a></span><span class=cF2>//Global Host Control (Controller) flags</span><span class=cF0>
<a name="l2702"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>AHCI_GHCf_HBA_RESET</span><span class=cF0> </span><span class=cFE>0</span><span class=cF0>
<a name="l2703"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>AHCI_GHCf_INTERRUPT_ENABLE</span><span class=cF0> </span><span class=cFE>1</span><span class=cF0>
<a name="l2704"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>AHCI_GHCf_AHCI_ENABLE</span><span class=cF0> </span><span class=cFE>31</span><span class=cF0>
<a name="l2705"></a>
<a name="l2706"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>AHCI_CAPSf_S64A</span><span class=cF0> </span><span class=cFE>31</span><span class=cF0> </span><span class=cF2>//Supports 64-bit Addressing</span><span class=cF0>
<a name="l2707"></a>
<a name="l2708"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>AHCI_CAPSEXTf_BOH</span><span class=cF0> </span><span class=cFE>0</span><span class=cF0> </span><span class=cF2>//Supports BIOS/OS Handoff</span><span class=cF0>
<a name="l2709"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>AHCI_CAPSEXTf_NVMP</span><span class=cF0> </span><span class=cFE>1</span><span class=cF0> </span><span class=cF2>//NVMHCI Supported &amp; Present</span><span class=cF0>
<a name="l2710"></a>
<a name="l2711"></a></span><span class=cF2>//BIOS/OS Handoff Control</span><span class=cF0>
<a name="l2712"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>AHCI_BOHCf_BOS</span><span class=cF0> </span><span class=cFE>0</span><span class=cF0> </span><span class=cF2>//BIOS-Owned Semaphore (BIOS owns controller)</span><span class=cF0>
<a name="l2713"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>AHCI_BOHCf_OOS</span><span class=cF0> </span><span class=cFE>1</span><span class=cF0> </span><span class=cF2>//OS-Owned Semaphore (OS owns controller)</span><span class=cF0>
<a name="l2714"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>AHCI_BOHCf_BB</span><span class=cF0> </span><span class=cFE>4</span><span class=cF0> </span><span class=cF2>//BIOS Busy (polling bit while BIOS cleans up things after ownership transfer)</span><span class=cF0>
<a name="l2715"></a>
<a name="l2716"></a></span><span class=cF2>//Command Header flags</span><span class=cF0>
<a name="l2717"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>AHCI_CH_DESCf_A</span><span class=cF0> </span><span class=cFE>5</span><span class=cF0> </span><span class=cF2>//'ATAPI' bit. Set when ATAPI command is being sent.</span><span class=cF0>
<a name="l2718"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>AHCI_CH_DESCF_A</span><span class=cF0> (</span><span class=cFE>1</span><span class=cF0> &lt;&lt; </span><span class=cF3>AHCI_CH_DESCf_A</span><span class=cF0>)
<a name="l2719"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>AHCI_CH_DESCf_W</span><span class=cF0> </span><span class=cFE>6</span><span class=cF0> </span><span class=cF2>//'Write' bit. Set when data is being written.</span><span class=cF0>
<a name="l2720"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>AHCI_CH_DESCF_W</span><span class=cF0> (</span><span class=cFE>1</span><span class=cF0> &lt;&lt; </span><span class=cF3>AHCI_CH_DESCf_W</span><span class=cF0>)
<a name="l2721"></a>
<a name="l2722"></a></span><span class=cF2>//Command FIS flags</span><span class=cF0>
<a name="l2723"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>AHCI_CF_DESCf_C</span><span class=cF0> </span><span class=cFE>7</span><span class=cF0> </span><span class=cF2>//'Command' bit. Set when FIS is an ATA command.</span><span class=cF0>
<a name="l2724"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>AHCI_CF_DESCF_C</span><span class=cF0> (</span><span class=cFE>1</span><span class=cF0> &lt;&lt; </span><span class=cF3>AHCI_CF_DESCF_C</span><span class=cF0>)
<a name="l2725"></a>
<a name="l2726"></a></span><span class=cF2>//Port register flags</span><span class=cF0>
<a name="l2727"></a></span><span class=cF2>//Command and Status register flags</span><span class=cF0>
<a name="l2728"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>AHCI_PxCMDf_ST</span><span class=cF0> </span><span class=cFE>0</span><span class=cF0> </span><span class=cF2>//'Start'. Start processing commmand list. FRE must be set before.</span><span class=cF0>
<a name="l2729"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>AHCI_PxCMDf_SUD</span><span class=cF0> </span><span class=cFE>1</span><span class=cF0> </span><span class=cF2>//'Spin-Up Device'. For devices that support Staggered Spin-up. We attempt to set it for all ports.</span><span class=cF0>
<a name="l2730"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>AHCI_PxCMDf_POD</span><span class=cF0> </span><span class=cFE>2</span><span class=cF0> </span><span class=cF2>//'Power-On Device'. For devices that support Cold Presence. We attempt to set it for all ports.</span><span class=cF0>
<a name="l2731"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>AHCI_PxCMDf_FRE</span><span class=cF0> </span><span class=cFE>4</span><span class=cF0> </span><span class=cF2>//'FIS Receive Enable'. Allows the processing of FISes.</span><span class=cF0>
<a name="l2732"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>AHCI_PxCMDf_FR</span><span class=cF0> </span><span class=cFE>14</span><span class=cF0> </span><span class=cF2>//'FIS receive Running'. Status indicator for FRE.</span><span class=cF0>
<a name="l2733"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>AHCI_PxCMDf_CR</span><span class=cF0> </span><span class=cFE>15</span><span class=cF0> </span><span class=cF2>//'Command list Running'. Status indicator for ST.</span><span class=cF0>
<a name="l2734"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>AHCI_PxCMDf_ATAPI</span><span class=cF0> </span><span class=cFE>24</span><span class=cF0> </span><span class=cF2>//'Device is ATAPI'. When set, HBA turns on desktop LED when device is in use. For ATAPI devices.</span><span class=cF0>
<a name="l2735"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>AHCI_PxCMDF_ST</span><span class=cF0> (</span><span class=cFE>1</span><span class=cF0> &lt;&lt; </span><span class=cF3>AHCI_PxCMDf_ST</span><span class=cF0>)
<a name="l2736"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>AHCI_PxCMDF_SUD</span><span class=cF0> (</span><span class=cFE>1</span><span class=cF0> &lt;&lt; </span><span class=cF3>AHCI_PxCMDf_SUD</span><span class=cF0>)
<a name="l2737"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>AHCI_PxCMDF_POD</span><span class=cF0> (</span><span class=cFE>1</span><span class=cF0> &lt;&lt; </span><span class=cF3>AHCI_PxCMDf_POD</span><span class=cF0>)
<a name="l2738"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>AHCI_PxCMDF_FRE</span><span class=cF0> (</span><span class=cFE>1</span><span class=cF0> &lt;&lt; </span><span class=cF3>AHCI_PxCMDf_FRE</span><span class=cF0>)
<a name="l2739"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>AHCI_PxCMDF_FR</span><span class=cF0> (</span><span class=cFE>1</span><span class=cF0> &lt;&lt; </span><span class=cF3>AHCI_PxCMDf_FR</span><span class=cF0>)
<a name="l2740"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>AHCI_PxCMDF_CR</span><span class=cF0> (</span><span class=cFE>1</span><span class=cF0> &lt;&lt; </span><span class=cF3>AHCI_PxCMDf_CR</span><span class=cF0>)
<a name="l2741"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>AHCI_PxCMDF_ATAPI</span><span class=cF0> (</span><span class=cFE>1</span><span class=cF0> &lt;&lt; </span><span class=cF3>AHCI_PxCMDf_ATAPI</span><span class=cF0>)
<a name="l2742"></a>
<a name="l2743"></a></span><span class=cF2>//Task File Data register flags</span><span class=cF0>
<a name="l2744"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>AHCI_PxTFDf_STS_ERR</span><span class=cF0> </span><span class=cFE>0</span><span class=cF0> </span><span class=cF2>// Error Bit of Status register</span><span class=cF0>
<a name="l2745"></a>
<a name="l2746"></a></span><span class=cF2>//Signature types</span><span class=cF0>
<a name="l2747"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>AHCI_PxSIG_ATA</span><span class=cF0> </span><span class=cFE>0x00000101</span><span class=cF0>
<a name="l2748"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>AHCI_PxSIG_ATAPI</span><span class=cF0> </span><span class=cFE>0xEB140101</span><span class=cF0>
<a name="l2749"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>AHCI_PxSIG_SEMB</span><span class=cF0> </span><span class=cFE>0xC33C0101</span><span class=cF0> </span><span class=cF2>//Enclosure Management Bridge... rare to encounter in wild.</span><span class=cF0>
<a name="l2750"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>AHCI_PxSIG_PM</span><span class=cF0> </span><span class=cFE>0x96690101</span><span class=cF0> </span><span class=cF2>//Port multiplier... not relevant to PC-type systems.</span><span class=cF0>
<a name="l2751"></a>
<a name="l2752"></a></span><span class=cF2>//Interrupt flags (same in PxIE and PxIS)</span><span class=cF0>
<a name="l2753"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>AHCI_PxIf_OFS</span><span class=cF0> </span><span class=cFE>24</span><span class=cF0> </span><span class=cF2>//Overflow Status</span><span class=cF0>
<a name="l2754"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>AHCI_PxIf_INFS</span><span class=cF0> </span><span class=cFE>26</span><span class=cF0> </span><span class=cF2>//SATA Interface Non-Fatal Error</span><span class=cF0>
<a name="l2755"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>AHCI_PxIf_IFS</span><span class=cF0> </span><span class=cFE>27</span><span class=cF0> </span><span class=cF2>//SATA Interface Fatal Error</span><span class=cF0>
<a name="l2756"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>AHCI_PxIf_HBDS</span><span class=cF0> </span><span class=cFE>28</span><span class=cF0> </span><span class=cF2>//Host Bus Data Error</span><span class=cF0>
<a name="l2757"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>AHCI_PxIf_HBFS</span><span class=cF0> </span><span class=cFE>29</span><span class=cF0> </span><span class=cF2>//Host Bus Fatal Error</span><span class=cF0>
<a name="l2758"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>AHCI_PxIf_TFE</span><span class=cF0> </span><span class=cFE>30</span><span class=cF0> </span><span class=cF2>//Task File Error, see </span><a href="https://zeal-operating-system.github.io/ZealOS/Kernel/KernelA.HH.html#l2995"><span class=cF4>ATAS_ERR</span></a><span class=cF2>.</span><span class=cF0>
<a name="l2759"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>AHCI_PxIf_CPDS</span><span class=cF0> </span><span class=cFE>31</span><span class=cF0> </span><span class=cF2>//Cold Port Detect Status</span><span class=cF0>
<a name="l2760"></a>
<a name="l2761"></a></span><span class=cF2>//COMRESET flags</span><span class=cF0>
<a name="l2762"></a></span><span class=cF2>//SATA Control register flags</span><span class=cF0>
<a name="l2763"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>AHCI_PxSCTLf_DET_INIT</span><span class=cF0> </span><span class=cFE>1</span><span class=cF0>
<a name="l2764"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>AHCI_PxSCTLF_DET_INIT</span><span class=cF0> (</span><span class=cFE>1</span><span class=cF0> &lt;&lt; </span><span class=cF3>AHCI_PxSCTLf_DET_INIT</span><span class=cF0>)
<a name="l2765"></a></span><span class=cF2>//SATA Status register flags</span><span class=cF0>
<a name="l2766"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>AHCI_PxSSTSF_DET_PRESENT</span><span class=cF0> </span><span class=cFE>3</span><span class=cF0>
<a name="l2767"></a>
<a name="l2768"></a></span><span class=cF2>//SATA Error register flags</span><span class=cF0>
<a name="l2769"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>AHCI_PxSERR_ERR_I</span><span class=cF0> </span><span class=cFE>0</span><span class=cF0> </span><span class=cF2>// Recovered Data Integrity Error</span><span class=cF0>
<a name="l2770"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>AHCI_PxSERR_ERR_M</span><span class=cF0> </span><span class=cFE>1</span><span class=cF0> </span><span class=cF2>// Recovered Communication Error</span><span class=cF0>
<a name="l2771"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>AHCI_PxSERR_ERR_T</span><span class=cF0> </span><span class=cFE>8</span><span class=cF0> </span><span class=cF2>// Transient Data Integrity Error</span><span class=cF0>
<a name="l2772"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>AHCI_PxSERR_ERR_C</span><span class=cF0> </span><span class=cFE>9</span><span class=cF0> </span><span class=cF2>// Persistent Communication Error</span><span class=cF0>
<a name="l2773"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>AHCI_PxSERR_ERR_P</span><span class=cF0> </span><span class=cFE>10</span><span class=cF0> </span><span class=cF2>// SATA Protocol Error</span><span class=cF0>
<a name="l2774"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>AHCI_PxSERR_ERR_E</span><span class=cF0> </span><span class=cFE>11</span><span class=cF0> </span><span class=cF2>// Internal Error</span><span class=cF0>
<a name="l2775"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>AHCI_PxSERR_DIAG_I</span><span class=cF0> </span><span class=cFE>17</span><span class=cF0> </span><span class=cF2>// Phy Internal Error</span><span class=cF0>
<a name="l2776"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>AHCI_PxSERR_DIAG_C</span><span class=cF0> </span><span class=cFE>21</span><span class=cF0> </span><span class=cF2>// Link Layer CRC Error</span><span class=cF0>
<a name="l2777"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>AHCI_PxSERR_DIAG_H</span><span class=cF0> </span><span class=cFE>22</span><span class=cF0> </span><span class=cF2>// Handshake Error</span><span class=cF0>
<a name="l2778"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>AHCI_PxSERR_DIAG_S</span><span class=cF0> </span><span class=cFE>23</span><span class=cF0> </span><span class=cF2>// Link Sequence Error</span><span class=cF0>
<a name="l2779"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>AHCI_PxSERR_DIAG_T</span><span class=cF0> </span><span class=cFE>24</span><span class=cF0> </span><span class=cF2>// Transport State Transition Error</span><span class=cF0>
<a name="l2780"></a>
<a name="l2781"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CAHCIPort</span><span class=cF0>
<a name="l2782"></a>{</span><span class=cF2>//Port register layout</span><span class=cF0>
<a name="l2783"></a> </span><span class=cF9>U32</span><span class=cF0> cmd_list_base,
<a name="l2784"></a> cmd_list_base_upper,
<a name="l2785"></a> fis_base,
<a name="l2786"></a> fis_base_upper,
<a name="l2787"></a> interrupt_status,
<a name="l2788"></a> interrupt_enable,
<a name="l2789"></a> command,
<a name="l2790"></a> reserved,
<a name="l2791"></a> task_file_data,
<a name="l2792"></a> signature,
<a name="l2793"></a> sata_status,
<a name="l2794"></a> sata_ctrl,
<a name="l2795"></a> sata_error,
<a name="l2796"></a> sata_active,
<a name="l2797"></a> cmd_issue,
<a name="l2798"></a> sata_notif,
<a name="l2799"></a> fis_switch_ctrl,
<a name="l2800"></a> device_sleep;
<a name="l2801"></a> </span><span class=cF1>U8</span><span class=cF0> reserved[</span><span class=cFE>40</span><span class=cF0>],
<a name="l2802"></a> vendor[</span><span class=cFE>16</span><span class=cF0>];
<a name="l2803"></a>};
<a name="l2804"></a>
<a name="l2805"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CAHCIHba</span><span class=cF0>
<a name="l2806"></a>{</span><span class=cF2>//HBA register layout</span><span class=cF0>
<a name="l2807"></a> </span><span class=cF9>U32</span><span class=cF0> caps,
<a name="l2808"></a> ghc, </span><span class=cF2>//Global Host Control</span><span class=cF0>
<a name="l2809"></a> interrupt_status,
<a name="l2810"></a> ports_implemented,
<a name="l2811"></a> version,
<a name="l2812"></a> ccc_ctrl, </span><span class=cF2>//Command Completion Coalescing</span><span class=cF0>
<a name="l2813"></a> ccc_ports,
<a name="l2814"></a> em_location,</span><span class=cF2>//Enclosure Management</span><span class=cF0>
<a name="l2815"></a> em_ctrl,
<a name="l2816"></a> caps_ext,
<a name="l2817"></a> bohc;
<a name="l2818"></a> </span><span class=cF1>U8</span><span class=cF0> reserved[</span><span class=cFE>116</span><span class=cF0>],
<a name="l2819"></a> vendor[</span><span class=cFE>96</span><span class=cF0>];
<a name="l2820"></a> </span><span class=cF9>CAHCIPort</span><span class=cF0> ports[</span><span class=cFE>32</span><span class=cF0>];
<a name="l2821"></a>};
<a name="l2822"></a>
<a name="l2823"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>FISt_H2D</span><span class=cF0> </span><span class=cFE>0x27</span><span class=cF0>
<a name="l2824"></a>
<a name="l2825"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CFisH2D</span><span class=cF0>
<a name="l2826"></a>{</span><span class=cF2>//Host To Device</span><span class=cF0>
<a name="l2827"></a> </span><span class=cF1>U8</span><span class=cF0> type,
<a name="l2828"></a> desc, </span><span class=cF2>//We are concerned with bit #7 (</span><a href="https://zeal-operating-system.github.io/ZealOS/Kernel/KernelA.HH.html#l2723"><span class=cF4>AHCI_CF_DESCf_C</span></a><span class=cF2>) 1=command, 0=control.</span><span class=cF0>
<a name="l2829"></a> command,
<a name="l2830"></a> feature_low,
<a name="l2831"></a> lba0,
<a name="l2832"></a> lba1,
<a name="l2833"></a> lba2,
<a name="l2834"></a> device,
<a name="l2835"></a> lba3,
<a name="l2836"></a> lba4,
<a name="l2837"></a> lba5,
<a name="l2838"></a> feature_high;
<a name="l2839"></a> </span><span class=cF9>U16</span><span class=cF0> count;
<a name="l2840"></a> </span><span class=cF1>U8</span><span class=cF0> icc,
<a name="l2841"></a> ctrl;
<a name="l2842"></a> </span><span class=cF9>U32</span><span class=cF0> reserved;
<a name="l2843"></a>};
<a name="l2844"></a>
<a name="l2845"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CFisReceived</span><span class=cF0>
<a name="l2846"></a>{
<a name="l2847"></a> </span><span class=cF1>U8</span><span class=cF0> dma_fis[</span><span class=cFE>28</span><span class=cF0>],
<a name="l2848"></a> reserved[</span><span class=cFE>4</span><span class=cF0>],
<a name="l2849"></a> pio_fis[</span><span class=cFE>20</span><span class=cF0>],
<a name="l2850"></a> reserved[</span><span class=cFE>12</span><span class=cF0>],
<a name="l2851"></a> r_fis[</span><span class=cFE>20</span><span class=cF0>],
<a name="l2852"></a> reserved[</span><span class=cFE>4</span><span class=cF0>],
<a name="l2853"></a> devbits_fis[</span><span class=cFE>8</span><span class=cF0>],
<a name="l2854"></a> unknown_fis[</span><span class=cFE>64</span><span class=cF0>],
<a name="l2855"></a> reserved[</span><span class=cFE>96</span><span class=cF0>];
<a name="l2856"></a>};
<a name="l2857"></a>
<a name="l2858"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CPrdtEntry</span><span class=cF0>
<a name="l2859"></a>{
<a name="l2860"></a> </span><span class=cF9>U32</span><span class=cF0> data_base,
<a name="l2861"></a> data_base_upper,
<a name="l2862"></a> reserved,
<a name="l2863"></a> data_byte_count; </span><span class=cF2>//bit 31 is &quot;Interrupt on Completion&quot;. bits 21:0 are the actual count.</span><span class=cF0>
<a name="l2864"></a>};
<a name="l2865"></a>
<a name="l2866"></a></span><span class=cF2>/*</span><span class=cF0>
<a name="l2867"></a></span><span class=cF2>Bits of first U32:</span><span class=cF0>
<a name="l2868"></a> </span><span class=cF2>4:0 - Command FIS Length, in U32s</span><span class=cF0>
<a name="l2869"></a> </span><span class=cF2> 5 - ATAPI bit (A) for ATAPI command</span><span class=cF0>
<a name="l2870"></a> </span><span class=cF2> 6 - Write bit (W) for write commands </span><a href="https://zeal-operating-system.github.io/ZealOS/Kernel/KernelA.HH.html#l2719"><span class=cF4>AHCI_CH_DESCf_W</span></a><span class=cF2> 1=write 0=read</span><span class=cF0>
<a name="l2871"></a> </span><span class=cF2> 7 - Prefetchable (P)</span><span class=cF0>
<a name="l2872"></a> </span><span class=cF2> 8 - Reset (R)</span><span class=cF0>
<a name="l2873"></a> </span><span class=cF2> 9 - Built-in Self Test (BIST)</span><span class=cF0>
<a name="l2874"></a> </span><span class=cF2> 10 - Clear busy upon R_OK</span><span class=cF0>
<a name="l2875"></a> </span><span class=cF2> 11 - Reserved</span><span class=cF0>
<a name="l2876"></a></span><span class=cF2> 15:12 - Port Multiplier Port (PMP)</span><span class=cF0>
<a name="l2877"></a></span><span class=cF2> 31:16 - Physical Region Descriptor Table Length (PRDTL)</span><span class=cF0>
<a name="l2878"></a></span><span class=cF2>*/</span><span class=cF0>
<a name="l2879"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CPortCmdHeader</span><span class=cF0>
<a name="l2880"></a>{</span><span class=cF2>//What the CAHCIPort.cmd_list consists of.</span><span class=cF0>
<a name="l2881"></a> </span><span class=cF9>U16</span><span class=cF0> desc,
<a name="l2882"></a> prdt_len;
<a name="l2883"></a> </span><span class=cF9>U32</span><span class=cF0> prd_byte_count,
<a name="l2884"></a> cmd_table_base,
<a name="l2885"></a> cmd_table_base_upper,
<a name="l2886"></a> reserved[</span><span class=cFE>4</span><span class=cF0>];
<a name="l2887"></a>};
<a name="l2888"></a>
<a name="l2889"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CPortCmdTable</span><span class=cF0>
<a name="l2890"></a>{
<a name="l2891"></a> </span><span class=cF1>U8</span><span class=cF0> cmd_fis[</span><span class=cFE>64</span><span class=cF0>],
<a name="l2892"></a> acmd[</span><span class=cFE>16</span><span class=cF0>],
<a name="l2893"></a> reserved[</span><span class=cFE>48</span><span class=cF0>];
<a name="l2894"></a> </span><span class=cF9>CPrdtEntry</span><span class=cF0> prdt[</span><span class=cFE>8</span><span class=cF0>];
<a name="l2895"></a>};
<a name="l2896"></a>
<a name="l2897"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CAtapiReadCmd</span><span class=cF0>
<a name="l2898"></a>{
<a name="l2899"></a> </span><span class=cF1>U8</span><span class=cF0> command,
<a name="l2900"></a> reserved;
<a name="l2901"></a> </span><span class=cF9>U32</span><span class=cF0> lba,
<a name="l2902"></a> count;
<a name="l2903"></a> </span><span class=cF1>U8</span><span class=cF0> reserved,
<a name="l2904"></a> ctrl,
<a name="l2905"></a> zero[</span><span class=cFE>4</span><span class=cF0>];
<a name="l2906"></a>};
<a name="l2907"></a>
<a name="l2908"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CAtapiWriteCmd</span><span class=cF0>
<a name="l2909"></a>{
<a name="l2910"></a> </span><span class=cF1>U8</span><span class=cF0> command,
<a name="l2911"></a> reserved;
<a name="l2912"></a> </span><span class=cF9>U32</span><span class=cF0> lba;
<a name="l2913"></a> </span><span class=cF1>U8</span><span class=cF0> reserved;
<a name="l2914"></a> </span><span class=cF9>U16</span><span class=cF0> count;
<a name="l2915"></a>};
<a name="l2916"></a>
<a name="l2917"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CAtapiCloseCmd</span><span class=cF0>
<a name="l2918"></a>{
<a name="l2919"></a> </span><span class=cF1>U8</span><span class=cF0> command,
<a name="l2920"></a> reserved,
<a name="l2921"></a> code,
<a name="l2922"></a> reserved;
<a name="l2923"></a> </span><span class=cF9>U16</span><span class=cF0> track_num;
<a name="l2924"></a>};
<a name="l2925"></a>
<a name="l2926"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CAtapiModeHeader</span><span class=cF0>
<a name="l2927"></a>{
<a name="l2928"></a> </span><span class=cF9>U16</span><span class=cF0> data_length;
<a name="l2929"></a> </span><span class=cF1>U8</span><span class=cF0> reserved[</span><span class=cFE>4</span><span class=cF0>];
<a name="l2930"></a> </span><span class=cF9>U16</span><span class=cF0> block_desc_len;
<a name="l2931"></a>};
<a name="l2932"></a>
<a name="l2933"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CAtapiModeWritePage</span><span class=cF0>
<a name="l2934"></a>{
<a name="l2935"></a> </span><span class=cF1>U8</span><span class=cF0> code, </span><span class=cF2>//0</span><span class=cF0>
<a name="l2936"></a> length,
<a name="l2937"></a> type,
<a name="l2938"></a> mode,
<a name="l2939"></a> block_type,
<a name="l2940"></a> link_size,
<a name="l2941"></a> reserved,
<a name="l2942"></a> host_app_code,
<a name="l2943"></a> session_format,
<a name="l2944"></a> reserved; </span><span class=cF2>// 9</span><span class=cF0>
<a name="l2945"></a> </span><span class=cF9>U32</span><span class=cF0> packet_size; </span><span class=cF2>// 10-13</span><span class=cF0>
<a name="l2946"></a> </span><span class=cF9>U16</span><span class=cF0> audio_pause_length;</span><span class=cF2>// 14-15</span><span class=cF0>
<a name="l2947"></a> </span><span class=cF1>U8</span><span class=cF0> media_catalog_num[</span><span class=cFE>16</span><span class=cF0>],</span><span class=cF2>//16-31</span><span class=cF0>
<a name="l2948"></a> recording_code[</span><span class=cFE>16</span><span class=cF0>],</span><span class=cF2>//32-47</span><span class=cF0>
<a name="l2949"></a> sub_0,
<a name="l2950"></a> sub_1,
<a name="l2951"></a> sub_2,
<a name="l2952"></a> sub_3;
<a name="l2953"></a>};
<a name="l2954"></a>
<a name="l2955"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CAtapiModeWriteList</span><span class=cF0>
<a name="l2956"></a>{
<a name="l2957"></a> </span><span class=cF9>CAtapiModeHeader</span><span class=cF0> header;
<a name="l2958"></a> </span><span class=cF9>CAtapiModeWritePage</span><span class=cF0> page;
<a name="l2959"></a>};
<a name="l2960"></a>
<a name="l2961"></a></span><span class=cF2>//ATA_IDENTIFY command array indexes (array of U16s)</span><span class=cF0>
<a name="l2962"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ATA_IDENT_SERIAL_NUM</span><span class=cF0> </span><span class=cFE>10</span><span class=cF0>
<a name="l2963"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ATA_IDENT_MODEL_NUM</span><span class=cF0> </span><span class=cFE>27</span><span class=cF0>
<a name="l2964"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ATA_IDENT_LBA48_CAPACITY</span><span class=cF0> </span><span class=cFE>100</span><span class=cF0>
<a name="l2965"></a>
<a name="l2966"></a></span><span class=cF2>//See </span><a href="https://zeal-operating-system.github.io/ZealOS/Doc/Credits.DD.html#l1"><span class=cF4>::/Doc/Credits.DD</span></a><span class=cF2>.</span><span class=cF0>
<a name="l2967"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ATA_NOP</span><span class=cF0> </span><span class=cFE>0x00</span><span class=cF0>
<a name="l2968"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ATA_DEV_RST</span><span class=cF0> </span><span class=cFE>0x08</span><span class=cF0>
<a name="l2969"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ATA_PACKET</span><span class=cF0> </span><span class=cFE>0xA0</span><span class=cF0>
<a name="l2970"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ATA_READ_NATIVE_MAX</span><span class=cF0> </span><span class=cFE>0xF8</span><span class=cF0>
<a name="l2971"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ATA_READ_NATIVE_MAX_EXT</span><span class=cF0> </span><span class=cFE>0x27</span><span class=cF0>
<a name="l2972"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ATA_SET_MAX</span><span class=cF0> </span><span class=cFE>0xF9</span><span class=cF0>
<a name="l2973"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ATA_SET_MAX_EXT</span><span class=cF0> </span><span class=cFE>0x37</span><span class=cF0>
<a name="l2974"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ATA_READ_MULTI</span><span class=cF0> </span><span class=cFE>0xC4</span><span class=cF0>
<a name="l2975"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ATA_READ_MULTI_EXT</span><span class=cF0> </span><span class=cFE>0x29</span><span class=cF0>
<a name="l2976"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ATA_READ_DMA_EXT</span><span class=cF0> </span><span class=cFE>0x25</span><span class=cF0>
<a name="l2977"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ATA_WRITE_MULTI</span><span class=cF0> </span><span class=cFE>0xC5</span><span class=cF0>
<a name="l2978"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ATA_WRITE_MULTI_EXT</span><span class=cF0> </span><span class=cFE>0x39</span><span class=cF0>
<a name="l2979"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ATA_WRITE_DMA_EXT</span><span class=cF0> </span><span class=cFE>0x35</span><span class=cF0>
<a name="l2980"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ATA_IDENTIFY</span><span class=cF0> </span><span class=cFE>0xEC</span><span class=cF0>
<a name="l2981"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ATA_IDENTIFY_PACKET</span><span class=cF0> </span><span class=cFE>0xA1</span><span class=cF0> </span><span class=cF2>// IDENTIFY PACKET DEVICE, mirror of ATA_IDENTIFY for ATAPI</span><span class=cF0>
<a name="l2982"></a>
<a name="l2983"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ATAPI_FORMAT_UNIT</span><span class=cF0> </span><span class=cFE>0x0400</span><span class=cF0>
<a name="l2984"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ATAPI_START_STOP_UNIT</span><span class=cF0> </span><span class=cFE>0x1B00</span><span class=cF0>
<a name="l2985"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ATAPI_READ_CAPACITY</span><span class=cF0> </span><span class=cFE>0x2500</span><span class=cF0>
<a name="l2986"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ATAPI_SEEK</span><span class=cF0> </span><span class=cFE>0x2B00</span><span class=cF0>
<a name="l2987"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ATAPI_SYNC_CACHE</span><span class=cF0> </span><span class=cFE>0x3500</span><span class=cF0>
<a name="l2988"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ATAPI_MODE_SELECT</span><span class=cF0> </span><span class=cFE>0x5500</span><span class=cF0>
<a name="l2989"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ATAPI_CLOSE_TRACK_SESSION</span><span class=cF0> </span><span class=cFE>0x5B00</span><span class=cF0>
<a name="l2990"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ATAPI_BLANK</span><span class=cF0> </span><span class=cFE>0xA100</span><span class=cF0>
<a name="l2991"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ATAPI_READ</span><span class=cF0> </span><span class=cFE>0xA800</span><span class=cF0>
<a name="l2992"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ATAPI_WRITE</span><span class=cF0> </span><span class=cFE>0x2A00</span><span class=cF0>
<a name="l2993"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ATAPI_SET_CD_SPEED</span><span class=cF0> </span><span class=cFE>0xBB00</span><span class=cF0>
<a name="l2994"></a>
<a name="l2995"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ATAS_ERR</span><span class=cF0> </span><span class=cFE>0x01</span><span class=cF0>
<a name="l2996"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ATAS_DRQ</span><span class=cF0> </span><span class=cFE>0x08</span><span class=cF0>
<a name="l2997"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ATAS_DF</span><span class=cF0> </span><span class=cFE>0x20</span><span class=cF0>
<a name="l2998"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ATAS_DRDY</span><span class=cF0> </span><span class=cFE>0x40</span><span class=cF0>
<a name="l2999"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ATAS_BSY</span><span class=cF0> </span><span class=cFE>0x80</span><span class=cF0>
<a name="l3000"></a>
<a name="l3001"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ATAR0_DATA</span><span class=cF0> </span><span class=cFE>0</span><span class=cF0>
<a name="l3002"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ATAR0_FEAT</span><span class=cF0> </span><span class=cFE>1</span><span class=cF0>
<a name="l3003"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ATAR0_NSECT</span><span class=cF0> </span><span class=cFE>2</span><span class=cF0>
<a name="l3004"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ATAR0_SECT</span><span class=cF0> </span><span class=cFE>3</span><span class=cF0>
<a name="l3005"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ATAR0_LCYL</span><span class=cF0> </span><span class=cFE>4</span><span class=cF0>
<a name="l3006"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ATAR0_HCYL</span><span class=cF0> </span><span class=cFE>5</span><span class=cF0>
<a name="l3007"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ATAR0_SEL</span><span class=cF0> </span><span class=cFE>6</span><span class=cF0>
<a name="l3008"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ATAR0_STAT</span><span class=cF0> </span><span class=cFE>7</span><span class=cF0>
<a name="l3009"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ATAR0_CMD</span><span class=cF0> </span><span class=cFE>7</span><span class=cF0>
<a name="l3010"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ATAR1_CTRL</span><span class=cF0> </span><span class=cFE>2</span><span class=cF0>
<a name="l3011"></a>
<a name="l3012"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>&quot;File/FileNames&quot;</span><span class=cF0>
<a name="l3013"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>FILEMASK_JIT</span><span class=cF0> </span><span class=cF6>&quot;*.CC*;*.HH*&quot;</span><span class=cF0>
<a name="l3014"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>FILEMASK_AOT</span><span class=cF0> </span><span class=cF6>&quot;*.CC*;*.HH*;*.PRJ*&quot;</span><span class=cF0>
<a name="l3015"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>FILEMASK_SRC</span><span class=cF0> </span><span class=cF6>&quot;*.CC*;*.HH*;*.IN*;*.PRJ*&quot;</span><span class=cF0>
<a name="l3016"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>FILEMASK_DD</span><span class=cF0> </span><span class=cF3>FILEMASK_SRC</span><span class=cF0> </span><span class=cF6>&quot;;*.DD*&quot;</span><span class=cF0>
<a name="l3017"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>FILEMASK_TXT</span><span class=cF0> </span><span class=cF3>FILEMASK_DD</span><span class=cF0> </span><span class=cF6>&quot;;*.TXT*&quot;</span><span class=cF0>
<a name="l3018"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>FILEMASK_GR</span><span class=cF0> </span><span class=cF6>&quot;*.GR*&quot;</span><span class=cF0>
<a name="l3019"></a>
<a name="l3020"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>&quot;File/Low Level&quot;</span><span class=cF0>
<a name="l3021"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>BLK_SIZE_BITS</span><span class=cF0> </span><span class=cFE>9</span><span class=cF0>
<a name="l3022"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>BLK_SIZE</span><span class=cF0> (</span><span class=cFE>1</span><span class=cF0> &lt;&lt; </span><span class=cF3>BLK_SIZE_BITS</span><span class=cF0>)
<a name="l3023"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DVD_BLK_SIZE</span><span class=cF0> (</span><span class=cFE>4</span><span class=cF0> * </span><span class=cF3>BLK_SIZE</span><span class=cF0>)
<a name="l3024"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DVD_BOOT_LOADER_SIZE</span><span class=cF0> </span><span class=cF3>DVD_BLK_SIZE</span><span class=cF0> * </span><span class=cFE>1</span><span class=cF0>
<a name="l3025"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>INVALID_CLUS</span><span class=cF0> (-</span><span class=cFE>1</span><span class=cF0>)
<a name="l3026"></a>
<a name="l3027"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CMBRPart</span><span class=cF0>
<a name="l3028"></a>{
<a name="l3029"></a> </span><span class=cF1>U8</span><span class=cF0> active, </span><span class=cF2>//0x80=active 0x00=inactive</span><span class=cF0>
<a name="l3030"></a> start_head;
<a name="l3031"></a> </span><span class=cF9>U16</span><span class=cF0> start_cyl;
<a name="l3032"></a> </span><span class=cF1>U8</span><span class=cF0> type,
<a name="l3033"></a> end_head;
<a name="l3034"></a> </span><span class=cF9>U16</span><span class=cF0> end_cyl;
<a name="l3035"></a> </span><span class=cF9>U32</span><span class=cF0> </span><span class=cF1>offset</span><span class=cF0>, </span><span class=cF2>//Sects between MBR and first sect</span><span class=cF0>
<a name="l3036"></a> size; </span><span class=cF2>//Sects in drv</span><span class=cF0>
<a name="l3037"></a>};
<a name="l3038"></a>
<a name="l3039"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CMasterBoot</span><span class=cF0>
<a name="l3040"></a>{
<a name="l3041"></a> </span><span class=cF1>U8</span><span class=cF0> code[</span><span class=cFE>440</span><span class=cF0>];
<a name="l3042"></a> </span><span class=cF9>U32</span><span class=cF0> media_id;
<a name="l3043"></a> </span><span class=cF9>U16</span><span class=cF0> zero;
<a name="l3044"></a> </span><span class=cF9>CMBRPart</span><span class=cF0> p[</span><span class=cFE>4</span><span class=cF0>];
<a name="l3045"></a> </span><span class=cF9>U16</span><span class=cF0> signature; </span><span class=cF2>//AA55</span><span class=cF0>
<a name="l3046"></a>};
<a name="l3047"></a>
<a name="l3048"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CRedSeaBoot</span><span class=cF0>
<a name="l3049"></a>{
<a name="l3050"></a> </span><span class=cF1>U8</span><span class=cF0> jump_and_nop[</span><span class=cFE>3</span><span class=cF0>],
<a name="l3051"></a> signature, reserved[</span><span class=cFE>4</span><span class=cF0>]; </span><span class=cF2>//MBR_PT_REDSEA=0x88. Distinguish from real FAT32</span><span class=cF0>
<a name="l3052"></a> </span><span class=cF9>I64</span><span class=cF0> drv_offset, </span><span class=cF2>//For CD/DVD image copy.</span><span class=cF0>
<a name="l3053"></a> sects,
<a name="l3054"></a> root_clus,
<a name="l3055"></a> bitmap_sects,
<a name="l3056"></a> unique_id;
<a name="l3057"></a> </span><span class=cF1>U8</span><span class=cF0> code[</span><span class=cFE>462</span><span class=cF0>];
<a name="l3058"></a> </span><span class=cF9>U16</span><span class=cF0> signature2; </span><span class=cF2>//0xAA55</span><span class=cF0>
<a name="l3059"></a>};
<a name="l3060"></a>
<a name="l3061"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CFAT32Boot</span><span class=cF0>
<a name="l3062"></a>{
<a name="l3063"></a> </span><span class=cF1>U8</span><span class=cF0> jump_and_nop[</span><span class=cFE>3</span><span class=cF0>],
<a name="l3064"></a> oem_name[</span><span class=cFE>8</span><span class=cF0>];
<a name="l3065"></a> </span><span class=cF9>U16</span><span class=cF0> bytes_per_sect;
<a name="l3066"></a> </span><span class=cF1>U8</span><span class=cF0> sects_per_clus;
<a name="l3067"></a> </span><span class=cF9>U16</span><span class=cF0> reserved_sects;
<a name="l3068"></a> </span><span class=cF1>U8</span><span class=cF0> copies_of_fat;
<a name="l3069"></a> </span><span class=cF9>U16</span><span class=cF0> max_root_dir_entries, </span><span class=cF2>//Not used</span><span class=cF0>
<a name="l3070"></a> old_sects_in_drive; </span><span class=cF2>//Not used</span><span class=cF0>
<a name="l3071"></a> </span><span class=cF1>U8</span><span class=cF0> media_desc; </span><span class=cF2>//F64 for hard disk</span><span class=cF0>
<a name="l3072"></a> </span><span class=cF9>U16</span><span class=cF0> old_sects_per_fat, </span><span class=cF2>//Not used</span><span class=cF0>
<a name="l3073"></a> sects_per_track,
<a name="l3074"></a> num_heads;
<a name="l3075"></a> </span><span class=cF9>U32</span><span class=cF0> hidden_sects,
<a name="l3076"></a> sects,
<a name="l3077"></a> sects_per_fat;
<a name="l3078"></a> </span><span class=cF9>U16</span><span class=cF0> flags,
<a name="l3079"></a> version;
<a name="l3080"></a> </span><span class=cF9>U32</span><span class=cF0> root_clus;
<a name="l3081"></a> </span><span class=cF9>U16</span><span class=cF0> file_system_info_sect,
<a name="l3082"></a> backup_boot_sect;
<a name="l3083"></a> </span><span class=cF1>U8</span><span class=cF0> reserved[</span><span class=cFE>12</span><span class=cF0>],
<a name="l3084"></a> log_drive_num,
<a name="l3085"></a> unused,
<a name="l3086"></a> ext_signature; </span><span class=cF2>//0x29</span><span class=cF0>
<a name="l3087"></a> </span><span class=cF9>U32</span><span class=cF0> serial_num;
<a name="l3088"></a> </span><span class=cF1>U8</span><span class=cF0> vol_name[</span><span class=cFE>11</span><span class=cF0>],
<a name="l3089"></a> fat_name[</span><span class=cFE>8</span><span class=cF0>],
<a name="l3090"></a> code[</span><span class=cFE>420</span><span class=cF0>];
<a name="l3091"></a> </span><span class=cF9>U16</span><span class=cF0> signature;
<a name="l3092"></a>};
<a name="l3093"></a>
<a name="l3094"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CFAT32FileInfoSect</span><span class=cF0>
<a name="l3095"></a>{
<a name="l3096"></a> </span><span class=cF9>U32</span><span class=cF0> signature1;
<a name="l3097"></a> </span><span class=cF1>U8</span><span class=cF0> unknown[</span><span class=cFE>480</span><span class=cF0>];
<a name="l3098"></a> </span><span class=cF9>U32</span><span class=cF0> signature2,
<a name="l3099"></a> free_clus,
<a name="l3100"></a> most_recently_alloced;
<a name="l3101"></a> </span><span class=cF1>U8</span><span class=cF0> reserved[</span><span class=cFE>12</span><span class=cF0>];
<a name="l3102"></a> </span><span class=cF9>U32</span><span class=cF0> signature3;
<a name="l3103"></a>};
<a name="l3104"></a>
<a name="l3105"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CFAT32DirEntry</span><span class=cF0>
<a name="l3106"></a>{
<a name="l3107"></a> </span><span class=cF1>U8</span><span class=cF0> name[</span><span class=cFE>11</span><span class=cF0>],
<a name="l3108"></a> attr,
<a name="l3109"></a> NTres,
<a name="l3110"></a> CrtTimeTenth;
<a name="l3111"></a> </span><span class=cF9>U16</span><span class=cF0> CrtTime,
<a name="l3112"></a> CrtDate,
<a name="l3113"></a> ListAccDate,
<a name="l3114"></a> clus_hi,
<a name="l3115"></a> WrtTime,
<a name="l3116"></a> WrtDate,
<a name="l3117"></a> clus_lo;
<a name="l3118"></a> </span><span class=cF9>U32</span><span class=cF0> size;
<a name="l3119"></a>};
<a name="l3120"></a>
<a name="l3121"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CFAT32DirEntryLong</span><span class=cF0>
<a name="l3122"></a>{
<a name="l3123"></a> </span><span class=cF1>U8</span><span class=cF0> ord;
<a name="l3124"></a> </span><span class=cF9>U16</span><span class=cF0> name1[</span><span class=cFE>5</span><span class=cF0>];
<a name="l3125"></a> </span><span class=cF1>U8</span><span class=cF0> attr,
<a name="l3126"></a> type,
<a name="l3127"></a> xsum;
<a name="l3128"></a> </span><span class=cF9>U16</span><span class=cF0> name2[</span><span class=cFE>6</span><span class=cF0>],
<a name="l3129"></a> zero,
<a name="l3130"></a> name3[</span><span class=cFE>2</span><span class=cF0>];
<a name="l3131"></a>};
<a name="l3132"></a>
<a name="l3133"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>FAT32_ENTRIES_PER_BLK</span><span class=cF0> (</span><span class=cF3>BLK_SIZE</span><span class=cF0> / </span><span class=cF1>sizeof</span><span class=cF7>(</span><span class=cF9>CFAT32DirEntry</span><span class=cF7>)</span><span class=cF0>)
<a name="l3134"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>FAT32_ENTRIES_BITS</span><span class=cF0> </span><span class=cF5>Bsf</span><span class=cF0>(</span><span class=cF3>FAT32_ENTRIES_PER_BLK</span><span class=cF0>)
<a name="l3135"></a>
<a name="l3136"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CPalindromeU16</span><span class=cF0>
<a name="l3137"></a>{
<a name="l3138"></a> </span><span class=cF9>U16</span><span class=cF0> little, big;
<a name="l3139"></a>};
<a name="l3140"></a>
<a name="l3141"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CPalindromeU32</span><span class=cF0>
<a name="l3142"></a>{
<a name="l3143"></a> </span><span class=cF9>U32</span><span class=cF0> little, big;
<a name="l3144"></a>};
<a name="l3145"></a>
<a name="l3146"></a></span><span class=cF2>//ISO9660</span><span class=cF0>
<a name="l3147"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ISOT_BOOT_RECORD</span><span class=cF0> </span><span class=cFE>0</span><span class=cF0>
<a name="l3148"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ISOT_PRI_VOL_DESC</span><span class=cF0> </span><span class=cFE>1</span><span class=cF0>
<a name="l3149"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ISOT_SUPPLEMENTARY_DESC</span><span class=cF0> </span><span class=cFE>2</span><span class=cF0>
<a name="l3150"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ISOT_VOL_DRIVE_DESC</span><span class=cF0> </span><span class=cFE>3</span><span class=cF0>
<a name="l3151"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ISOT_TERMINATOR</span><span class=cF0> </span><span class=cFE>255</span><span class=cF0>
<a name="l3152"></a>
<a name="l3153"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CISODirEntry</span><span class=cF0>
<a name="l3154"></a>{
<a name="l3155"></a> </span><span class=cF1>U8</span><span class=cF0> pad[</span><span class=cFE>2</span><span class=cF0>];
<a name="l3156"></a> </span><span class=cF9>CPalindromeU32</span><span class=cF0> loc;
<a name="l3157"></a> </span><span class=cF1>U8</span><span class=cF0> pad[</span><span class=cFE>24</span><span class=cF0>];
<a name="l3158"></a>};
<a name="l3159"></a>
<a name="l3160"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CISOPriDesc</span><span class=cF0>
<a name="l3161"></a>{
<a name="l3162"></a> </span><span class=cF1>U8</span><span class=cF0> type,
<a name="l3163"></a> id[</span><span class=cFE>5</span><span class=cF0>],
<a name="l3164"></a> version,
<a name="l3165"></a> pad[</span><span class=cFE>73</span><span class=cF0>];
<a name="l3166"></a> </span><span class=cF9>CPalindromeU32</span><span class=cF0> vol_space_size;
<a name="l3167"></a> </span><span class=cF1>U8</span><span class=cF0> pad[</span><span class=cFE>32</span><span class=cF0>];
<a name="l3168"></a> </span><span class=cF9>CPalindromeU16</span><span class=cF0> vol_set_size;
<a name="l3169"></a> </span><span class=cF9>CPalindromeU16</span><span class=cF0> vol_seq_num;
<a name="l3170"></a> </span><span class=cF9>CPalindromeU16</span><span class=cF0> log_block_size;
<a name="l3171"></a> </span><span class=cF1>U8</span><span class=cF0> pad[</span><span class=cFE>24</span><span class=cF0>];
<a name="l3172"></a> </span><span class=cF9>CISODirEntry</span><span class=cF0> root_dir_record;
<a name="l3173"></a> </span><span class=cF1>U8</span><span class=cF0> pad[</span><span class=cFE>128</span><span class=cF0>],
<a name="l3174"></a> publisher_id[</span><span class=cFE>128</span><span class=cF0>],
<a name="l3175"></a> preparer_id[</span><span class=cFE>128</span><span class=cF0>],
<a name="l3176"></a> pad[</span><span class=cFE>307</span><span class=cF0>],
<a name="l3177"></a> file_structure_version,
<a name="l3178"></a> pad[</span><span class=cFE>1166</span><span class=cF0>];
<a name="l3179"></a>};
<a name="l3180"></a>
<a name="l3181"></a></span><span class=cF2>//Red Sea Attributes</span><span class=cF0>
<a name="l3182"></a></span><span class=cF2>//See </span><a href="https://zeal-operating-system.github.io/ZealOS/Kernel/KDefine.CC.html#l187"><span class=cF4>ST_FILE_ATTRS</span></a><span class=cF0>
<a name="l3183"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RS_ATTR_READ_ONLY</span><span class=cF0> </span><span class=cFE>0x01</span><span class=cF0> </span><span class=cF2>//R</span><span class=cF0>
<a name="l3184"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RS_ATTR_HIDDEN</span><span class=cF0> </span><span class=cFE>0x02</span><span class=cF0> </span><span class=cF2>//H</span><span class=cF0>
<a name="l3185"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RS_ATTR_SYSTEM</span><span class=cF0> </span><span class=cFE>0x04</span><span class=cF0> </span><span class=cF2>//S</span><span class=cF0>
<a name="l3186"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RS_ATTR_VOL_ID</span><span class=cF0> </span><span class=cFE>0x08</span><span class=cF0> </span><span class=cF2>//V</span><span class=cF0>
<a name="l3187"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RS_ATTR_DIR</span><span class=cF0> </span><span class=cFE>0x10</span><span class=cF0> </span><span class=cF2>//D</span><span class=cF0>
<a name="l3188"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RS_ATTR_ARCHIVE</span><span class=cF0> </span><span class=cFE>0x20</span><span class=cF0> </span><span class=cF2>//A</span><span class=cF0>
<a name="l3189"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RS_ATTR_LONG_NAME</span><span class=cF0> (</span><span class=cF3>RS_ATTR_READ_ONLY</span><span class=cF0> | </span><span class=cF3>RS_ATTR_HIDDEN</span><span class=cF0> | </span><span class=cF3>RS_ATTR_SYSTEM</span><span class=cF0> | </span><span class=cF3>RS_ATTR_VOL_ID</span><span class=cF0>)
<a name="l3190"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RS_ATTR_LONG_NAME_MASK</span><span class=cF0> (</span><span class=cF3>RS_ATTR_LONG_NAME</span><span class=cF0> | </span><span class=cF3>RS_ATTR_DIR</span><span class=cF0> | </span><span class=cF3>RS_ATTR_ARCHIVE</span><span class=cF0>)
<a name="l3191"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RS_ATTR_DELETED</span><span class=cF0> </span><span class=cFE>0x100</span><span class=cF0> </span><span class=cF2>//X</span><span class=cF0>
<a name="l3192"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RS_ATTR_RESIDENT</span><span class=cF0> </span><span class=cFE>0x200</span><span class=cF0> </span><span class=cF2>//T</span><span class=cF0>
<a name="l3193"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RS_ATTR_CONTIGUOUS</span><span class=cF0> </span><span class=cFE>0x400</span><span class=cF0> </span><span class=cF2>//C</span><span class=cF0>
<a name="l3194"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RS_ATTR_FIXED</span><span class=cF0> </span><span class=cFE>0x800</span><span class=cF0> </span><span class=cF2>//F</span><span class=cF0>
<a name="l3195"></a>
<a name="l3196"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>&quot;File/CD DVD&quot;</span><span class=cF0>
<a name="l3197"></a></span><span class=cF2>//Media types for </span><a href="https://zeal-operating-system.github.io/ZealOS/Kernel/BlkDev/DiskCDDVD.CC.html#l164"><span class=cF4>DVDImageWrite</span></a><span class=cF2>()</span><span class=cF0>
<a name="l3198"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>MT_CD</span><span class=cF0> </span><span class=cFE>1</span><span class=cF0>
<a name="l3199"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>MT_DVD</span><span class=cF0> </span><span class=cFE>2</span><span class=cF0>
<a name="l3200"></a>
<a name="l3201"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>&quot;File/Low Level;File/Program Routines&quot;</span><span class=cF0>
<a name="l3202"></a></span><span class=cF2>//CDirEntry flags (Used by </span><a href="https://zeal-operating-system.github.io/ZealOS/System/BlkDev/FileMgr.CC.html#l678"><span class=cF4>FileMgr</span></a><span class=cF2>())</span><span class=cF0>
<a name="l3203"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CDIR_FILENAME_LEN</span><span class=cF0> </span><span class=cFE>38</span><span class=cF0> </span><span class=cF2>//Must include terminator zero</span><span class=cF0>
<a name="l3204"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CDirEntry</span><span class=cF0>
<a name="l3205"></a>{
<a name="l3206"></a> </span><span class=cF9>CDirEntry</span><span class=cF0> *next, *parent, *sub;
<a name="l3207"></a> </span><span class=cF1>U8</span><span class=cF0> *full_name;
<a name="l3208"></a> </span><span class=cF9>I64</span><span class=cF0> user_data, user_data2;
<a name="l3209"></a>
<a name="l3210"></a> </span><span class=cF1>U0</span><span class=cF0> </span><span class=cF1>start</span><span class=cF0>;
<a name="l3211"></a> </span><span class=cF9>U16</span><span class=cF0> attr;
<a name="l3212"></a> </span><span class=cF1>U8</span><span class=cF0> name[</span><span class=cF3>CDIR_FILENAME_LEN</span><span class=cF0>];
<a name="l3213"></a> </span><span class=cF9>I64</span><span class=cF0> clus, size;
<a name="l3214"></a> </span><span class=cF9>CDate</span><span class=cF0> datetime;
<a name="l3215"></a>};
<a name="l3216"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CDIR_SIZE</span><span class=cF0> (</span><span class=cF1>sizeof</span><span class=cF7>(</span><span class=cF9>CDirEntry</span><span class=cF7>)</span><span class=cF0> - </span><span class=cF1>offset</span><span class=cF7>(</span><span class=cF9>CDirEntry</span><span class=cF0>.</span><span class=cF1>start</span><span class=cF7>)</span><span class=cF0>)
<a name="l3217"></a>
<a name="l3218"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>&quot;File/Program Routines&quot;</span><span class=cF0>
<a name="l3219"></a></span><span class=cF2>//File Util Flags</span><span class=cF0>
<a name="l3220"></a></span><span class=cF2>//See </span><a href="https://zeal-operating-system.github.io/ZealOS/Kernel/KDefine.CC.html#l212"><span class=cF4>ST_FILE_UTIL_FLAGS</span></a><span class=cF0>
<a name="l3221"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>FUf_RECURSE</span><span class=cF0> </span><span class=cFE>0</span><span class=cF0> </span><span class=cF2>// r</span><span class=cF0>
<a name="l3222"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>FUf_DIFF</span><span class=cF0> </span><span class=cFE>1</span><span class=cF0> </span><span class=cF2>// d</span><span class=cF0>
<a name="l3223"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>FUf_DEL</span><span class=cF0> </span><span class=cFE>1</span><span class=cF0> </span><span class=cF2>// d</span><span class=cF0>
<a name="l3224"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>FUf_IGNORE</span><span class=cF0> </span><span class=cFE>2</span><span class=cF0> </span><span class=cF2>// i</span><span class=cF0>
<a name="l3225"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>FUf_ALL</span><span class=cF0> </span><span class=cFE>3</span><span class=cF0> </span><span class=cF2>// a</span><span class=cF0>
<a name="l3226"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>FUf_CANCEL</span><span class=cF0> </span><span class=cFE>4</span><span class=cF0> </span><span class=cF2>// c</span><span class=cF0>
<a name="l3227"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>FUf_REPLACE</span><span class=cF0> </span><span class=cFE>5</span><span class=cF0> </span><span class=cF2>// R</span><span class=cF0>
<a name="l3228"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>FUf_PUBLIC</span><span class=cF0> </span><span class=cFE>6</span><span class=cF0> </span><span class=cF2>// p</span><span class=cF0>
<a name="l3229"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>FUf_MAP</span><span class=cF0> </span><span class=cFE>7</span><span class=cF0> </span><span class=cF2>// m</span><span class=cF0>
<a name="l3230"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>FUf_SINGLE</span><span class=cF0> </span><span class=cFE>8</span><span class=cF0> </span><span class=cF2>// s</span><span class=cF0>
<a name="l3231"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>FUf_JUST_DIRS</span><span class=cF0> </span><span class=cFE>9</span><span class=cF0> </span><span class=cF2>// D</span><span class=cF0>
<a name="l3232"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>FUf_JUST_FILES</span><span class=cF0> </span><span class=cFE>10</span><span class=cF0> </span><span class=cF2>// F</span><span class=cF0>
<a name="l3233"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>FUf_JUST_TXT</span><span class=cF0> </span><span class=cFE>11</span><span class=cF0> </span><span class=cF2>// T</span><span class=cF0>
<a name="l3234"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>FUf_JUST_DD</span><span class=cF0> </span><span class=cFE>12</span><span class=cF0> </span><span class=cF2>// $</span><span class=cF0>
<a name="l3235"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>FUf_JUST_SRC</span><span class=cF0> </span><span class=cFE>13</span><span class=cF0> </span><span class=cF2>// S</span><span class=cF0>
<a name="l3236"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>FUf_JUST_AOT</span><span class=cF0> </span><span class=cFE>14</span><span class=cF0> </span><span class=cF2>// A</span><span class=cF0>
<a name="l3237"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>FUf_JUST_JIT</span><span class=cF0> </span><span class=cFE>15</span><span class=cF0> </span><span class=cF2>// J</span><span class=cF0>
<a name="l3238"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>FUf_JUST_GR</span><span class=cF0> </span><span class=cFE>16</span><span class=cF0> </span><span class=cF2>// G</span><span class=cF0>
<a name="l3239"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>FUf_CLUS_ORDER</span><span class=cF0> </span><span class=cFE>17</span><span class=cF0> </span><span class=cF2>// O (Move disk head one direction)</span><span class=cF0>
<a name="l3240"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>FUf_SCAN_PARENTS</span><span class=cF0> </span><span class=cFE>18</span><span class=cF0> </span><span class=cF2>// P</span><span class=cF0>
<a name="l3241"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>FUf_FLATTEN_TREE</span><span class=cF0> </span><span class=cFE>19</span><span class=cF0> </span><span class=cF2>// f</span><span class=cF0>
<a name="l3242"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>FUf_WHOLE_LABELS</span><span class=cF0> </span><span class=cFE>20</span><span class=cF0> </span><span class=cF2>// l</span><span class=cF0>
<a name="l3243"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>FUf_WHOLE_LABELS_BEFORE</span><span class=cF0> </span><span class=cFE>21</span><span class=cF0> </span><span class=cF2>// lb</span><span class=cF0>
<a name="l3244"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>FUf_WHOLE_LABELS_AFTER</span><span class=cF0> </span><span class=cFE>22</span><span class=cF0> </span><span class=cF2>// la</span><span class=cF0>
<a name="l3245"></a>
<a name="l3246"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>FUF_RECURSE</span><span class=cF0> (</span><span class=cFE>1</span><span class=cF0> &lt;&lt; </span><span class=cF3>FUf_RECURSE</span><span class=cF0>)
<a name="l3247"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>FUF_DIFF</span><span class=cF0> (</span><span class=cFE>1</span><span class=cF0> &lt;&lt; </span><span class=cF3>FUf_DIFF</span><span class=cF0>)
<a name="l3248"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>FUF_DEL</span><span class=cF0> (</span><span class=cFE>1</span><span class=cF0> &lt;&lt; </span><span class=cF3>FUf_DEL</span><span class=cF0>)
<a name="l3249"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>FUF_IGNORE</span><span class=cF0> (</span><span class=cFE>1</span><span class=cF0> &lt;&lt; </span><span class=cF3>FUf_IGNORE</span><span class=cF0>)
<a name="l3250"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>FUF_ALL</span><span class=cF0> (</span><span class=cFE>1</span><span class=cF0> &lt;&lt; </span><span class=cF3>FUf_ALL</span><span class=cF0>)
<a name="l3251"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>FUF_CANCEL</span><span class=cF0> (</span><span class=cFE>1</span><span class=cF0> &lt;&lt; </span><span class=cF3>FUf_CANCEL</span><span class=cF0>)
<a name="l3252"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>FUF_REPLACE</span><span class=cF0> (</span><span class=cFE>1</span><span class=cF0> &lt;&lt; </span><span class=cF3>FUf_REPLACE</span><span class=cF0>)
<a name="l3253"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>FUF_PUBLIC</span><span class=cF0> (</span><span class=cFE>1</span><span class=cF0> &lt;&lt; </span><span class=cF3>FUf_PUBLIC</span><span class=cF0>)
<a name="l3254"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>FUF_MAP</span><span class=cF0> (</span><span class=cFE>1</span><span class=cF0> &lt;&lt; </span><span class=cF3>FUf_MAP</span><span class=cF0>)
<a name="l3255"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>FUF_SINGLE</span><span class=cF0> (</span><span class=cFE>1</span><span class=cF0> &lt;&lt; </span><span class=cF3>FUf_SINGLE</span><span class=cF0>)
<a name="l3256"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>FUF_JUST_DIRS</span><span class=cF0> (</span><span class=cFE>1</span><span class=cF0> &lt;&lt; </span><span class=cF3>FUf_JUST_DIRS</span><span class=cF0>)
<a name="l3257"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>FUF_JUST_FILES</span><span class=cF0> (</span><span class=cFE>1</span><span class=cF0> &lt;&lt; </span><span class=cF3>FUf_JUST_FILES</span><span class=cF0>)
<a name="l3258"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>FUF_JUST_TXT</span><span class=cF0> (</span><span class=cFE>1</span><span class=cF0> &lt;&lt; </span><span class=cF3>FUf_JUST_TXT</span><span class=cF0>)
<a name="l3259"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>FUF_JUST_DD</span><span class=cF0> (</span><span class=cFE>1</span><span class=cF0> &lt;&lt; </span><span class=cF3>FUf_JUST_DD</span><span class=cF0>)
<a name="l3260"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>FUF_JUST_SRC</span><span class=cF0> (</span><span class=cFE>1</span><span class=cF0> &lt;&lt; </span><span class=cF3>FUf_JUST_SRC</span><span class=cF0>)
<a name="l3261"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>FUF_JUST_AOT</span><span class=cF0> (</span><span class=cFE>1</span><span class=cF0> &lt;&lt; </span><span class=cF3>FUf_JUST_AOT</span><span class=cF0>)
<a name="l3262"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>FUF_JUST_JIT</span><span class=cF0> (</span><span class=cFE>1</span><span class=cF0> &lt;&lt; </span><span class=cF3>FUf_JUST_JIT</span><span class=cF0>)
<a name="l3263"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>FUF_JUST_GR</span><span class=cF0> (</span><span class=cFE>1</span><span class=cF0> &lt;&lt; </span><span class=cF3>FUf_JUST_GR</span><span class=cF0>)
<a name="l3264"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>FUF_CLUS_ORDER</span><span class=cF0> (</span><span class=cFE>1</span><span class=cF0> &lt;&lt; </span><span class=cF3>FUf_CLUS_ORDER</span><span class=cF0>)
<a name="l3265"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>FUF_SCAN_PARENTS</span><span class=cF0> (</span><span class=cFE>1</span><span class=cF0> &lt;&lt; </span><span class=cF3>FUf_SCAN_PARENTS</span><span class=cF0>)
<a name="l3266"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>FUF_FLATTEN_TREE</span><span class=cF0> (</span><span class=cFE>1</span><span class=cF0> &lt;&lt; </span><span class=cF3>FUf_FLATTEN_TREE</span><span class=cF0>)
<a name="l3267"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>FUF_WHOLE_LABELS</span><span class=cF0> (</span><span class=cFE>1</span><span class=cF0> &lt;&lt; </span><span class=cF3>FUf_WHOLE_LABELS</span><span class=cF0>)
<a name="l3268"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>FUF_WHOLE_LABELS_BEFORE</span><span class=cF0> (</span><span class=cFE>1</span><span class=cF0> &lt;&lt; </span><span class=cF3>FUf_WHOLE_LABELS_BEFORE</span><span class=cF0>)
<a name="l3269"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>FUF_WHOLE_LABELS_AFTER</span><span class=cF0> (</span><span class=cFE>1</span><span class=cF0> &lt;&lt; </span><span class=cF3>FUf_WHOLE_LABELS_AFTER</span><span class=cF0>)
<a name="l3270"></a>
<a name="l3271"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>FUG_FILES_FIND</span><span class=cF0> (</span><span class=cF3>FUF_RECURSE</span><span class=cF0> | </span><span class=cF3>FUF_SINGLE</span><span class=cF0> | </span><span class=cF3>FUF_CLUS_ORDER</span><span class=cF0> | </span><span class=cF3>FUF_JUST_DIRS</span><span class=cF0> | </span><span class=cF3>FUF_JUST_FILES</span><span class=cF0> | </span><span class=cF3>FUF_JUST_TXT</span><span class=cF0> | \
<a name="l3272"></a> </span><span class=cF3>FUF_JUST_DD</span><span class=cF0> | </span><span class=cF3>FUF_JUST_SRC</span><span class=cF0> | </span><span class=cF3>FUF_JUST_AOT</span><span class=cF0> | </span><span class=cF3>FUF_JUST_JIT</span><span class=cF0> | </span><span class=cF3>FUF_JUST_GR</span><span class=cF0> | </span><span class=cF3>FUF_FLATTEN_TREE</span><span class=cF0>)
<a name="l3273"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>FUG_FILE_FIND</span><span class=cF0> (</span><span class=cF3>FUF_JUST_DIRS</span><span class=cF0> | </span><span class=cF3>FUF_JUST_FILES</span><span class=cF0> | </span><span class=cF3>FUF_SCAN_PARENTS</span><span class=cF0>)
<a name="l3274"></a>
<a name="l3275"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>&quot;File/Low Level&quot;</span><span class=cF0>
<a name="l3276"></a></span><span class=cF2>//See </span><a href="https://zeal-operating-system.github.io/ZealOS/Kernel/KDefine.CC.html#l220"><span class=cF4>ST_BLKDEV_TYPES</span></a><span class=cF0>
<a name="l3277"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>BDT_NULL</span><span class=cF0> </span><span class=cFE>0</span><span class=cF0>
<a name="l3278"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>BDT_RAM</span><span class=cF0> </span><span class=cFE>1</span><span class=cF0>
<a name="l3279"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>BDT_ATA</span><span class=cF0> </span><span class=cFE>2</span><span class=cF0>
<a name="l3280"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>BDT_ISO_FILE_READ</span><span class=cF0> </span><span class=cFE>3</span><span class=cF0>
<a name="l3281"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>BDT_ISO_FILE_WRITE</span><span class=cF0> </span><span class=cFE>4</span><span class=cF0>
<a name="l3282"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>BDT_ATAPI</span><span class=cF0> </span><span class=cFE>5</span><span class=cF0>
<a name="l3283"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>BDT_TYPES_NUM</span><span class=cF0> </span><span class=cFE>6</span><span class=cF0>
<a name="l3284"></a>
<a name="l3285"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>BDf_REMOVABLE</span><span class=cF0> </span><span class=cFE>0</span><span class=cF0>
<a name="l3286"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>BDf_INITIALIZED</span><span class=cF0> </span><span class=cFE>1</span><span class=cF0>
<a name="l3287"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>BDf_READ_ONLY</span><span class=cF0> </span><span class=cFE>2</span><span class=cF0>
<a name="l3288"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>BDf_READ_ONLY_OVERRIDE</span><span class=cF0> </span><span class=cFE>3</span><span class=cF0>
<a name="l3289"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>BDf_LAST_WAS_WRITE</span><span class=cF0> </span><span class=cFE>4</span><span class=cF0>
<a name="l3290"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>BDf_READ_CACHE</span><span class=cF0> </span><span class=cFE>5</span><span class=cF0>
<a name="l3291"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>BDf_FORMAT</span><span class=cF0> </span><span class=cFE>6</span><span class=cF0>
<a name="l3292"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>BDf_INIT_IN_PROGRESS</span><span class=cF0> </span><span class=cFE>7</span><span class=cF0>
<a name="l3293"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>BDf_EXT_SIZE</span><span class=cF0> </span><span class=cFE>8</span><span class=cF0>
<a name="l3294"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>BDf_INTERNAL_BUF</span><span class=cF0> </span><span class=cFE>9</span><span class=cF0>
<a name="l3295"></a>
<a name="l3296"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>BDF_REMOVABLE</span><span class=cF0> (</span><span class=cFE>1</span><span class=cF0> &lt;&lt; </span><span class=cF3>BDf_REMOVABLE</span><span class=cF0>)
<a name="l3297"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>BDF_INITIALIZED</span><span class=cF0> (</span><span class=cFE>1</span><span class=cF0> &lt;&lt; </span><span class=cF3>BDf_INITIALIZED</span><span class=cF0>)
<a name="l3298"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>BDF_READ_ONLY</span><span class=cF0> (</span><span class=cFE>1</span><span class=cF0> &lt;&lt; </span><span class=cF3>BDf_READ_ONLY</span><span class=cF0>)
<a name="l3299"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>BDF_READ_ONLY_OVERRIDE</span><span class=cF0> (</span><span class=cFE>1</span><span class=cF0> &lt;&lt; </span><span class=cF3>BDf_READ_ONLY_OVERRIDE</span><span class=cF0>)
<a name="l3300"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>BDF_LAST_WAS_WRITE</span><span class=cF0> (</span><span class=cFE>1</span><span class=cF0> &lt;&lt; </span><span class=cF3>BDf_LAST_WAS_WRITE</span><span class=cF0>)
<a name="l3301"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>BDF_READ_CACHE</span><span class=cF0> (</span><span class=cFE>1</span><span class=cF0> &lt;&lt; </span><span class=cF3>BDf_READ_CACHE</span><span class=cF0>)
<a name="l3302"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>BDF_FORMAT</span><span class=cF0> (</span><span class=cFE>1</span><span class=cF0> &lt;&lt; </span><span class=cF3>BDf_FORMAT</span><span class=cF0>)
<a name="l3303"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>BDF_INIT_IN_PROGRESS</span><span class=cF0> (</span><span class=cFE>1</span><span class=cF0> &lt;&lt; </span><span class=cF3>BDf_INIT_IN_PROGRESS</span><span class=cF0>)
<a name="l3304"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>BDF_EXT_SIZE</span><span class=cF0> (</span><span class=cFE>1</span><span class=cF0> &lt;&lt; </span><span class=cF3>BDf_EXT_SIZE</span><span class=cF0>)
<a name="l3305"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>BDF_INTERNAL_BUF</span><span class=cF0> (</span><span class=cFE>1</span><span class=cF0> &lt;&lt; </span><span class=cF3>BDf_INTERNAL_BUF</span><span class=cF0>)
<a name="l3306"></a>
<a name="l3307"></a></span><span class=cF2>//locked flags</span><span class=cF0>
<a name="l3308"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>BDlf_LOCKED</span><span class=cF0> </span><span class=cFE>0</span><span class=cF0>
<a name="l3309"></a>
<a name="l3310"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>BLKDEVS_NUM</span><span class=cF0> </span><span class=cFE>26</span><span class=cF0>
<a name="l3311"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>BD_SIGNATURE_VAL</span><span class=cF0> </span><span class=cF6>'BDSV'</span><span class=cF0>
<a name="l3312"></a>
<a name="l3313"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CBlkDev</span><span class=cF0>
<a name="l3314"></a>{
<a name="l3315"></a> </span><span class=cF9>CBlkDev</span><span class=cF0> *lock_fwding; </span><span class=cF2>//If two blkdevs on same controller, use just one lock</span><span class=cF0>
<a name="l3316"></a> </span><span class=cF9>CTask</span><span class=cF0> *owning_task;
<a name="l3317"></a> </span><span class=cF9>CAHCIPort</span><span class=cF0> *ahci_port;
<a name="l3318"></a> </span><span class=cF1>U8</span><span class=cF0> *prd_buf,
<a name="l3319"></a> first_drive_let,
<a name="l3320"></a> unit,
<a name="l3321"></a> pad[</span><span class=cFE>2</span><span class=cF0>],
<a name="l3322"></a> *RAM_disk,
<a name="l3323"></a> *file_disk_name;
<a name="l3324"></a> </span><span class=cF9>CFile</span><span class=cF0> *file_disk;
<a name="l3325"></a> </span><span class=cF9>U32</span><span class=cF0> bd_signature,
<a name="l3326"></a> type,
<a name="l3327"></a> flags,
<a name="l3328"></a> base0,
<a name="l3329"></a> base1,
<a name="l3330"></a> blk_size,
<a name="l3331"></a> max_reads,
<a name="l3332"></a> max_writes;
<a name="l3333"></a> </span><span class=cF9>I64</span><span class=cF0> drv_offset,
<a name="l3334"></a> init_root_dir_blks,
<a name="l3335"></a> max_blk,
<a name="l3336"></a> locked_flags,
<a name="l3337"></a> port_num;
<a name="l3338"></a> </span><span class=cF9>U16</span><span class=cF0> *dev_id_record;
<a name="l3339"></a> </span><span class=cF1>F64</span><span class=cF0> last_time;
<a name="l3340"></a>};
<a name="l3341"></a>
<a name="l3342"></a></span><span class=cF2>//Drive locked_flags</span><span class=cF0>
<a name="l3343"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DVlf_LOCKED</span><span class=cF0> </span><span class=cFE>0</span><span class=cF0>
<a name="l3344"></a>
<a name="l3345"></a></span><span class=cF2>//See </span><a href="https://zeal-operating-system.github.io/ZealOS/Kernel/KDefine.CC.html#l228"><span class=cF4>ST_DRIVE_TYPES</span></a><span class=cF0>
<a name="l3346"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>FSt_NULL</span><span class=cF0> </span><span class=cFE>0</span><span class=cF0>
<a name="l3347"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>FSt_REDSEA</span><span class=cF0> </span><span class=cFE>1</span><span class=cF0> </span><span class=cF2>//Supported</span><span class=cF0>
<a name="l3348"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>FSt_FAT32</span><span class=cF0> </span><span class=cFE>2</span><span class=cF0> </span><span class=cF2>//Supported except for short names, to some degree</span><span class=cF0>
<a name="l3349"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>FSt_ISO9660</span><span class=cF0> </span><span class=cFE>3</span><span class=cF0> </span><span class=cF2>//Not Supported</span><span class=cF0>
<a name="l3350"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>FSt_NTFS</span><span class=cF0> </span><span class=cFE>4</span><span class=cF0> </span><span class=cF2>//Not Supported</span><span class=cF0>
<a name="l3351"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>FSt_UNKNOWN</span><span class=cF0> </span><span class=cFE>5</span><span class=cF0>
<a name="l3352"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>FSt_TYPES_NUM</span><span class=cF0> </span><span class=cFE>6</span><span class=cF0>
<a name="l3353"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>FSG_TYPE_MASK</span><span class=cF0> </span><span class=cFE>0x7FFF</span><span class=cF0>
<a name="l3354"></a></span><span class=cF2>//File system type flags</span><span class=cF0>
<a name="l3355"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>FStf_DISABLE</span><span class=cF0> </span><span class=cFE>15</span><span class=cF0>
<a name="l3356"></a>
<a name="l3357"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>MBR_PT_FAT12</span><span class=cF0> </span><span class=cFE>0x01</span><span class=cF0>
<a name="l3358"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>MBR_PT_FAT32a</span><span class=cF0> </span><span class=cFE>0x0B</span><span class=cF0>
<a name="l3359"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>MBR_PT_FAT32b</span><span class=cF0> </span><span class=cFE>0x0C</span><span class=cF0>
<a name="l3360"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>MBR_PT_FAT32c</span><span class=cF0> </span><span class=cFE>0x1B</span><span class=cF0>
<a name="l3361"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>MBR_PT_FAT32d</span><span class=cF0> </span><span class=cFE>0x1C</span><span class=cF0>
<a name="l3362"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>MBR_PT_FAT32e</span><span class=cF0> </span><span class=cFE>0x8B</span><span class=cF0>
<a name="l3363"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>MBR_PT_FAT32f</span><span class=cF0> </span><span class=cFE>0x8C</span><span class=cF0>
<a name="l3364"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>MBR_PT_NTFS</span><span class=cF0> </span><span class=cFE>0x07</span><span class=cF0>
<a name="l3365"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>MBR_PT_REDSEA</span><span class=cF0> </span><span class=cFE>0x88</span><span class=cF0>
<a name="l3366"></a>
<a name="l3367"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CFreeList</span><span class=cF0>
<a name="l3368"></a>{
<a name="l3369"></a> </span><span class=cF9>CFreeList</span><span class=cF0> *next, *last;
<a name="l3370"></a> </span><span class=cF9>I64</span><span class=cF0> </span><span class=cF1>start</span><span class=cF0>, size;
<a name="l3371"></a>};
<a name="l3372"></a>
<a name="l3373"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DRIVES_NUM</span><span class=cF0> </span><span class=cFE>26</span><span class=cF0>
<a name="l3374"></a>
<a name="l3375"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DRIVE_SIGNATURE_VAL</span><span class=cF0> </span><span class=cF6>'DVSV'</span><span class=cF0>
<a name="l3376"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CDrive</span><span class=cF0>
<a name="l3377"></a>{
<a name="l3378"></a></span><span class=cF2>//Don't access -&gt;drv_let directly in case a drive has been remapped.</span><span class=cF0>
<a name="l3379"></a> </span><span class=cF2>//Use </span><a href="https://zeal-operating-system.github.io/ZealOS/Kernel/BlkDev/DiskDrive.CC.html#l173"><span class=cF4>Drive2Letter</span></a><span class=cF2>().</span><span class=cF0>
<a name="l3380"></a> </span><span class=cF9>I64</span><span class=cF0> locked_flags;
<a name="l3381"></a> </span><span class=cF9>U32</span><span class=cF0> drive_signature;
<a name="l3382"></a> </span><span class=cF1>U8</span><span class=cF0> drv_let, pad;
<a name="l3383"></a> </span><span class=cF9>U16</span><span class=cF0> fs_type;
<a name="l3384"></a> </span><span class=cF9>I64</span><span class=cF0> drv_offset,
<a name="l3385"></a> size,
<a name="l3386"></a> prt_num,
<a name="l3387"></a> file_system_info_sect,
<a name="l3388"></a> fat1, fat2,
<a name="l3389"></a> root_clus,
<a name="l3390"></a> data_area,
<a name="l3391"></a> spc; </span><span class=cF2>//sectors per clus</span><span class=cF0>
<a name="l3392"></a> </span><span class=cF9>CDate</span><span class=cF0> fat32_local_time_offset;
<a name="l3393"></a> </span><span class=cF9>CTask</span><span class=cF0> *owning_task;
<a name="l3394"></a> </span><span class=cF9>CBlkDev</span><span class=cF0> *bd;
<a name="l3395"></a>
<a name="l3396"></a> </span><span class=cF9>CFAT32FileInfoSect</span><span class=cF0> *fis;
<a name="l3397"></a> </span><span class=cF9>I64</span><span class=cF0> fat_blk_dirty,
<a name="l3398"></a> cur_fat_blk_num;
<a name="l3399"></a> </span><span class=cF9>U32</span><span class=cF0> *cur_fat_blk;
<a name="l3400"></a> </span><span class=cF9>CFreeList</span><span class=cF0> *next_free, *last_free;
<a name="l3401"></a>};
<a name="l3402"></a>
<a name="l3403"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DISK_CACHE_HASH_SIZE</span><span class=cF0> </span><span class=cFE>0x2000</span><span class=cF0>
<a name="l3404"></a>
<a name="l3405"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CCacheBlk</span><span class=cF0>
<a name="l3406"></a>{
<a name="l3407"></a> </span><span class=cF9>CCacheBlk</span><span class=cF0> *next_lru, *last_lru;
<a name="l3408"></a> </span><span class=cF9>CCacheBlk</span><span class=cF0> *next_hash, *last_hash;
<a name="l3409"></a> </span><span class=cF9>CDrive</span><span class=cF0> *drive;
<a name="l3410"></a> </span><span class=cF9>I64</span><span class=cF0> blk;
<a name="l3411"></a> </span><span class=cF1>U8</span><span class=cF0> body[</span><span class=cF3>BLK_SIZE</span><span class=cF0>];
<a name="l3412"></a>};
<a name="l3413"></a>
<a name="l3414"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>&quot;File/System&quot;</span><span class=cF0>
<a name="l3415"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DEFAULT_ISO_FILENAME</span><span class=cF0> </span><span class=cF6>&quot;::/Tmp/CDDVD.ISO&quot;</span><span class=cF0>
<a name="l3416"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DEFAULT_ISO_C_FILENAME</span><span class=cF0> </span><span class=cF6>&quot;::/Tmp/CDDVD.ISO.C&quot;</span><span class=cF0>
<a name="l3417"></a>
<a name="l3418"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CBlkDevGlobals</span><span class=cF0>
<a name="l3419"></a>{
<a name="l3420"></a> </span><span class=cF9>CBlkDev</span><span class=cF0> *blkdevs;
<a name="l3421"></a> </span><span class=cF9>CDrive</span><span class=cF0> *drvs,
<a name="l3422"></a> *let_to_drive[</span><span class=cFE>32</span><span class=cF0>];
<a name="l3423"></a> </span><span class=cF9>CAHCIHba</span><span class=cF0> *ahci_hba;
<a name="l3424"></a> </span><span class=cF1>U8</span><span class=cF0> *default_iso_filename, </span><span class=cF2>//&quot;::/Tmp/CDDVD.ISO&quot;</span><span class=cF0>
<a name="l3425"></a> *default_iso_c_filename, </span><span class=cF2>//&quot;::/Tmp/CDDVD.ISO.C&quot;</span><span class=cF0>
<a name="l3426"></a> *tmp_filename,
<a name="l3427"></a> *home_dir,
<a name="l3428"></a> boot_drive_let,
<a name="l3429"></a> first_hd_drive_let,
<a name="l3430"></a> first_dvd_drive_let;
<a name="l3431"></a> </span><span class=cF9>CCacheBlk</span><span class=cF0> *cache_base,
<a name="l3432"></a> *cache_ctrl,
<a name="l3433"></a> **cache_hash_table;
<a name="l3434"></a> </span><span class=cF9>I64</span><span class=cF0> cache_size,
<a name="l3435"></a> read_count,
<a name="l3436"></a> write_count,
<a name="l3437"></a> mount_ide_auto_count,
<a name="l3438"></a> cmd_slot_count,
<a name="l3439"></a> ins_base0,
<a name="l3440"></a> ins_base1; </span><span class=cF2>//Install cd/dvd controller.</span><span class=cF0>
<a name="l3441"></a> </span><span class=cF1>Bool</span><span class=cF0> dvd_boot_is_good,
<a name="l3442"></a> ahci64,
<a name="l3443"></a> ins_unit,
<a name="l3444"></a> pad[</span><span class=cFE>2</span><span class=cF0>];
<a name="l3445"></a>};
<a name="l3446"></a>
<a name="l3447"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>&quot;File/Internal&quot;</span><span class=cF0>
<a name="l3448"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CDirContext</span><span class=cF0>
<a name="l3449"></a>{
<a name="l3450"></a> </span><span class=cF9>CDrive</span><span class=cF0> *old_dv, *drive;
<a name="l3451"></a> </span><span class=cF1>U8</span><span class=cF0> *old_dir, *mask;
<a name="l3452"></a>};
<a name="l3453"></a>
<a name="l3454"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>&quot;File/CFile&quot;</span><span class=cF0>
<a name="l3455"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>FFB_NEXT_BLK</span><span class=cF0> </span><span class=cF3>I64_MAX</span><span class=cF0>
<a name="l3456"></a>
<a name="l3457"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>FF_WRITE</span><span class=cF0> </span><span class=cFE>1</span><span class=cF0>
<a name="l3458"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>FF_NEW_FILE</span><span class=cF0> </span><span class=cFE>2</span><span class=cF0>
<a name="l3459"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>FF_BUF_DIRTY</span><span class=cF0> </span><span class=cFE>4</span><span class=cF0>
<a name="l3460"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>FF_NEEDS_WRITE</span><span class=cF0> </span><span class=cFE>8</span><span class=cF0>
<a name="l3461"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>FF_CONTIGUOUS</span><span class=cF0> </span><span class=cFE>16</span><span class=cF0>
<a name="l3462"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>FF_USE_OLD_DATETIME</span><span class=cF0> </span><span class=cFE>32</span><span class=cF0>
<a name="l3463"></a>
<a name="l3464"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CFile</span><span class=cF0> </span><span class=cF2>//See </span><a href="https://zeal-operating-system.github.io/ZealOS/Demo/Disk/DataBase.CC.html#l1"><span class=cF4>::/Demo/Disk/DataBase.CC</span></a><span class=cF2>.</span><span class=cF0>
<a name="l3465"></a>{
<a name="l3466"></a> </span><span class=cF9>I64</span><span class=cF0> flags;
<a name="l3467"></a> </span><span class=cF9>CDirEntry</span><span class=cF0> de;
<a name="l3468"></a> </span><span class=cF9>CDrive</span><span class=cF0> *drive;
<a name="l3469"></a> </span><span class=cF9>I64</span><span class=cF0> fblk_num, clus, file_clus_num, max_blk;
<a name="l3470"></a> </span><span class=cF1>U8</span><span class=cF0> *clus_buf;
<a name="l3471"></a>};
<a name="l3472"></a>
<a name="l3473"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>&quot;Memory/Heap&quot;</span><span class=cF0>
<a name="l3474"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>_CONFIG_HEAP_DEBUG</span><span class=cF0> </span><span class=cF3>FALSE</span><span class=cF0>
<a name="l3475"></a>
<a name="l3476"></a>#</span><span class=cF1>if</span><span class=cF0> </span><span class=cF3>_CONFIG_HEAP_DEBUG</span><span class=cF0>
<a name="l3477"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CMemUnused</span><span class=cF0>
<a name="l3478"></a>{
<a name="l3479"></a> </span><span class=cF9>CHeapCtrl</span><span class=cF0> *hc;
<a name="l3480"></a> </span><span class=cF1>U8</span><span class=cF0> *caller1, *caller2;
<a name="l3481"></a> </span><span class=cF9>CMemUnused</span><span class=cF0> *next;
<a name="l3482"></a> </span><span class=cF9>I64</span><span class=cF0> size;
<a name="l3483"></a>};
<a name="l3484"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CMemUsed</span><span class=cF0>
<a name="l3485"></a>{
<a name="l3486"></a> </span><span class=cF9>CHeapCtrl</span><span class=cF0> *hc;
<a name="l3487"></a> </span><span class=cF1>U8</span><span class=cF0> *caller1, *caller2;
<a name="l3488"></a> </span><span class=cF9>CMemUsed</span><span class=cF0> *next, *last;
<a name="l3489"></a> </span><span class=cF9>I64</span><span class=cF0> size;
<a name="l3490"></a> </span><span class=cF1>U0</span><span class=cF0> </span><span class=cF1>start</span><span class=cF0>;
<a name="l3491"></a>};
<a name="l3492"></a>#</span><span class=cF1>else</span><span class=cF0>
<a name="l3493"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CMemUnused</span><span class=cF0>
<a name="l3494"></a>{
<a name="l3495"></a> </span><span class=cF1>U0</span><span class=cF0> hc;
<a name="l3496"></a> </span><span class=cF1>U0</span><span class=cF0> caller1, caller2;
<a name="l3497"></a> </span><span class=cF9>CMemUnused</span><span class=cF0> *next;
<a name="l3498"></a> </span><span class=cF9>I64</span><span class=cF0> size;
<a name="l3499"></a>};
<a name="l3500"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CMemUsed</span><span class=cF0>
<a name="l3501"></a>{
<a name="l3502"></a> </span><span class=cF9>CHeapCtrl</span><span class=cF0> *hc;
<a name="l3503"></a> </span><span class=cF1>U0</span><span class=cF0> caller1, caller2;
<a name="l3504"></a> </span><span class=cF1>U0</span><span class=cF0> next, last;
<a name="l3505"></a> </span><span class=cF9>I64</span><span class=cF0> size;
<a name="l3506"></a> </span><span class=cF1>U0</span><span class=cF0> </span><span class=cF1>start</span><span class=cF0>;
<a name="l3507"></a>};
<a name="l3508"></a>#</span><span class=cF1>endif</span><span class=cF0>
<a name="l3509"></a>
<a name="l3510"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>&quot;Memory/BlkPool&quot;</span><span class=cF0>
<a name="l3511"></a>#</span><span class=cF1>help_file</span><span class=cF0> </span><span class=cF6>&quot;::/Doc/Pags&quot;</span><span class=cF0>
<a name="l3512"></a>
<a name="l3513"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>MBS_USED_SIGNATURE_VAL</span><span class=cF0> </span><span class=cF6>'MBUs'</span><span class=cF0>
<a name="l3514"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>MBS_UNUSED_SIGNATURE_VAL</span><span class=cF0> </span><span class=cF6>'MBUn'</span><span class=cF0>
<a name="l3515"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CMemBlk</span><span class=cF0>
<a name="l3516"></a>{
<a name="l3517"></a> </span><span class=cF9>CMemBlk</span><span class=cF0> *next, *last;
<a name="l3518"></a> </span><span class=cF9>U32</span><span class=cF0> mb_signature, pags;
<a name="l3519"></a>};
<a name="l3520"></a>
<a name="l3521"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>MRT_UNUSED</span><span class=cF0> </span><span class=cFE>0</span><span class=cF0>
<a name="l3522"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>MRT_RAM</span><span class=cF0> </span><span class=cFE>1</span><span class=cF0>
<a name="l3523"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>MRT_DEV</span><span class=cF0> </span><span class=cFE>2</span><span class=cF0>
<a name="l3524"></a>
<a name="l3525"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CMemRange</span><span class=cF0>
<a name="l3526"></a>{
<a name="l3527"></a> </span><span class=cF9>CMemRange</span><span class=cF0> *next, *last;
<a name="l3528"></a> </span><span class=cF9>U32</span><span class=cF0> type, flags;
<a name="l3529"></a> </span><span class=cF1>U8</span><span class=cF0> *base;
<a name="l3530"></a> </span><span class=cF9>I64</span><span class=cF0> size;
<a name="l3531"></a>};
<a name="l3532"></a>
<a name="l3533"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>MEM_PAG_BITS</span><span class=cF0> </span><span class=cFE>9</span><span class=cF0>
<a name="l3534"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>MEM_PAG_SIZE</span><span class=cF0> (</span><span class=cFE>1</span><span class=cF0> &lt;&lt; </span><span class=cF3>MEM_PAG_BITS</span><span class=cF0>)
<a name="l3535"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>MEM_HEAP_HASH_SIZE</span><span class=cF0> </span><span class=cFE>1024</span><span class=cF0>
<a name="l3536"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>MEM_FREE_PAG_HASH_SIZE</span><span class=cF0> </span><span class=cFE>0x100</span><span class=cF0>
<a name="l3537"></a></span><span class=cF2>//It is common to </span><a href="https://zeal-operating-system.github.io/ZealOS/Kernel/Memory/MAllocFree.CC.html#l391"><span class=cF4>MAlloc</span></a><span class=cF2>() exact powers of two.</span><span class=cF0> </span><span class=cF2>There is some overhead.</span><span class=cF0>
<a name="l3538"></a></span><span class=cF2>//We add 2 pags, so a request is not rounded-up to next power of two.</span><span class=cF0>
<a name="l3539"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>MEM_EXTRA_HASH2_PAGS</span><span class=cF0> </span><span class=cFE>2</span><span class=cF0>
<a name="l3540"></a>
<a name="l3541"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>MEM_SYSTEM_STACK</span><span class=cF0> (</span><span class=cF3>MEM_PAG_SIZE</span><span class=cF0> * </span><span class=cFE>512</span><span class=cF0>) </span><span class=cF2>//Like 16384*MEM_PAG_SIZE</span><span class=cF0>
<a name="l3542"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>MEM_EXECUTIVE_STACK</span><span class=cF0> (</span><span class=cF3>MEM_PAG_SIZE</span><span class=cF0> * </span><span class=cFE>512</span><span class=cF0>)
<a name="l3543"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>MEM_INTERRUPT_STACK</span><span class=cF0> (</span><span class=cF3>MEM_PAG_SIZE</span><span class=cF0> * </span><span class=cFE>512</span><span class=cF0>)
<a name="l3544"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>MEM_DEFAULT_STACK</span><span class=cF0> (</span><span class=cF3>MEM_PAG_SIZE</span><span class=cF0> * </span><span class=cFE>512</span><span class=cF0>)
<a name="l3545"></a>
<a name="l3546"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>TASK_HASH_TABLE_SIZE</span><span class=cF0> (</span><span class=cFE>1</span><span class=cF0> &lt;&lt; </span><span class=cFE>10</span><span class=cF0>)
<a name="l3547"></a>
<a name="l3548"></a></span><span class=cF2>//locked flags</span><span class=cF0>
<a name="l3549"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>BPlf_LOCKED</span><span class=cF0> </span><span class=cFE>0</span><span class=cF0>
<a name="l3550"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CBlkPool</span><span class=cF0>
<a name="l3551"></a>{
<a name="l3552"></a> </span><span class=cF9>I64</span><span class=cF0> locked_flags, alloced_u8s, used_u8s;
<a name="l3553"></a> </span><span class=cF9>CMemBlk</span><span class=cF0> *mem_free_list,
<a name="l3554"></a> *mem_free_2meg_list, </span><span class=cF2>//This is for Sup1CodeScraps/Mem/Mem2Meg.CC.</span><span class=cF0>
<a name="l3555"></a> *free_pag_hash[</span><span class=cF3>MEM_FREE_PAG_HASH_SIZE</span><span class=cF0>],
<a name="l3556"></a> *free_pag_hash2[</span><span class=cFE>64</span><span class=cF0> - </span><span class=cF3>MEM_PAG_BITS</span><span class=cF0>];
<a name="l3557"></a>};
<a name="l3558"></a>
<a name="l3559"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>&quot;Memory/HeapCtrl&quot;</span><span class=cF0>
<a name="l3560"></a></span><span class=cF2>//locked flags</span><span class=cF0>
<a name="l3561"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>HClf_LOCKED</span><span class=cF0> </span><span class=cFE>0</span><span class=cF0>
<a name="l3562"></a>
<a name="l3563"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>HEAP_CTRL_SIGNATURE_VAL</span><span class=cF0> </span><span class=cF6>'HcSV'</span><span class=cF0>
<a name="l3564"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CHeapCtrl</span><span class=cF0>
<a name="l3565"></a>{
<a name="l3566"></a> </span><span class=cF9>CBlkPool</span><span class=cF0> *bp;
<a name="l3567"></a> </span><span class=cF9>U32</span><span class=cF0> hc_signature, pad;
<a name="l3568"></a> </span><span class=cF9>I64</span><span class=cF0> locked_flags, alloced_u8s, used_u8s;
<a name="l3569"></a> </span><span class=cF9>CTask</span><span class=cF0> *mem_task;
<a name="l3570"></a> </span><span class=cF9>CMemBlk</span><span class=cF0> *next_mem_blk, *last_mem_blk;
<a name="l3571"></a> </span><span class=cF9>CMemBlk</span><span class=cF0> *last_mergable;
<a name="l3572"></a> </span><span class=cF9>CMemUnused</span><span class=cF0> *malloc_free_list;
<a name="l3573"></a> </span><span class=cF9>CMemUsed</span><span class=cF0> *next_um, *last_um;
<a name="l3574"></a> </span><span class=cF9>CMemUnused</span><span class=cF0> *heap_hash[</span><span class=cF3>MEM_HEAP_HASH_SIZE</span><span class=cF0> / </span><span class=cF1>sizeof</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> *)];
<a name="l3575"></a>};
<a name="l3576"></a>
<a name="l3577"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>&quot;Devices;Memory/Page Tables&quot;</span><span class=cF0>
<a name="l3578"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CDevGlobals</span><span class=cF0>
<a name="l3579"></a>{
<a name="l3580"></a> </span><span class=cF9>CIDTEntry</span><span class=cF0> *idt;
<a name="l3581"></a> </span><span class=cF1>U8</span><span class=cF0> *mem64_ptr;
<a name="l3582"></a> </span><span class=cF1>U8</span><span class=cF0> *uncached_alias; </span><span class=cF2>//Alias of lowest 4Gig.</span><span class=cF0>
<a name="l3583"></a> </span><span class=cF1>U8</span><span class=cF0> mp_apic_ids[</span><span class=cF3>MP_PROCESSORS_NUM</span><span class=cF0>];
<a name="l3584"></a> </span><span class=cF9>CMemRange</span><span class=cF0> mem32_head;
<a name="l3585"></a> </span><span class=cF9>CPCIDev</span><span class=cF0> pci_head;
<a name="l3586"></a> </span><span class=cF9>U64</span><span class=cF0> user_int_bitmap;
<a name="l3587"></a>};
<a name="l3588"></a>
<a name="l3589"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>&quot;Graphics/Color;Graphics/Device Contexts&quot;</span><span class=cF0>
<a name="l3590"></a></span><span class=cF2>//Raster operations</span><span class=cF0>
<a name="l3591"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ROPB_EQU</span><span class=cF0> </span><span class=cFE>0x00</span><span class=cF0>
<a name="l3592"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ROPB_XOR</span><span class=cF0> </span><span class=cFE>0x01</span><span class=cF0>
<a name="l3593"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ROPB_COLLISION</span><span class=cF0> </span><span class=cFE>0x02</span><span class=cF0>
<a name="l3594"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ROPB_MONO</span><span class=cF0> </span><span class=cFE>0x03</span><span class=cF0>
<a name="l3595"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ROPBF_HALF_RANGE_COLOR</span><span class=cF0> </span><span class=cFE>0x10</span><span class=cF0>
<a name="l3596"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ROPBF_TWO_SIDED</span><span class=cF0> </span><span class=cFE>0x20</span><span class=cF0>
<a name="l3597"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ROPBF_DITHER</span><span class=cF0> </span><span class=cFE>0x40</span><span class=cF0>
<a name="l3598"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ROPBF_PROBABILITY_DITHER</span><span class=cF0> </span><span class=cFE>0x80</span><span class=cF0>
<a name="l3599"></a>
<a name="l3600"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ROP_EQU</span><span class=cF0> (</span><span class=cF3>ROPB_EQU</span><span class=cF0> &lt;&lt; </span><span class=cFE>8</span><span class=cF0>)
<a name="l3601"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ROP_XOR</span><span class=cF0> (</span><span class=cF3>ROPB_XOR</span><span class=cF0> &lt;&lt; </span><span class=cFE>8</span><span class=cF0>)
<a name="l3602"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ROP_COLLISION</span><span class=cF0> (</span><span class=cF3>ROPB_COLLISION</span><span class=cF0> &lt;&lt; </span><span class=cFE>8</span><span class=cF0>)
<a name="l3603"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ROP_MONO</span><span class=cF0> (</span><span class=cF3>ROPB_MONO</span><span class=cF0> &lt;&lt; </span><span class=cFE>8</span><span class=cF0>)
<a name="l3604"></a>
<a name="l3605"></a></span><span class=cF2>//These are just for </span><a href="https://zeal-operating-system.github.io/ZealOS/Kernel/KernelA.HH.html#l3612"><span class=cF4>ROPF_PROBABILITY_DITHER</span></a><span class=cF0>
<a name="l3606"></a></span><span class=cF2>//See </span><a href="https://zeal-operating-system.github.io/ZealOS/System/Gr/GrDC.CC.html#l62"><span class=cF4>DCLighting</span></a><span class=cF2>().</span><span class=cF0>
<a name="l3607"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ROPF_HALF_RANGE_COLOR</span><span class=cF0> </span><span class=cFE>0x1000</span><span class=cF0>
<a name="l3608"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ROPF_TWO_SIDED</span><span class=cF0> </span><span class=cFE>0x2000</span><span class=cF0>
<a name="l3609"></a>
<a name="l3610"></a></span><span class=cF2>//These always go in the c1.rop of a CColorROPU32</span><span class=cF0>
<a name="l3611"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ROPF_DITHER</span><span class=cF0> </span><span class=cFE>0x40000000</span><span class=cF0>
<a name="l3612"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ROPF_PROBABILITY_DITHER</span><span class=cF0> </span><span class=cFE>0x80000000</span><span class=cF0>
<a name="l3613"></a>
<a name="l3614"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>&quot;Graphics/Color&quot;</span><span class=cF0>
<a name="l3615"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>TRANSPARENT</span><span class=cF0> </span><span class=cFE>0xFF</span><span class=cF0>
<a name="l3616"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>BLACK</span><span class=cF0> </span><span class=cFE>0</span><span class=cF0>
<a name="l3617"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>BLUE</span><span class=cF0> </span><span class=cFE>1</span><span class=cF0>
<a name="l3618"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>GREEN</span><span class=cF0> </span><span class=cFE>2</span><span class=cF0>
<a name="l3619"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CYAN</span><span class=cF0> </span><span class=cFE>3</span><span class=cF0>
<a name="l3620"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RED</span><span class=cF0> </span><span class=cFE>4</span><span class=cF0>
<a name="l3621"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>PURPLE</span><span class=cF0> </span><span class=cFE>5</span><span class=cF0>
<a name="l3622"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>BROWN</span><span class=cF0> </span><span class=cFE>6</span><span class=cF0>
<a name="l3623"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>LTGRAY</span><span class=cF0> </span><span class=cFE>7</span><span class=cF0>
<a name="l3624"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DKGRAY</span><span class=cF0> </span><span class=cFE>8</span><span class=cF0>
<a name="l3625"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>LTBLUE</span><span class=cF0> </span><span class=cFE>9</span><span class=cF0>
<a name="l3626"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>LTGREEN</span><span class=cF0> </span><span class=cFE>10</span><span class=cF0>
<a name="l3627"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>LTCYAN</span><span class=cF0> </span><span class=cFE>11</span><span class=cF0>
<a name="l3628"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>LTRED</span><span class=cF0> </span><span class=cFE>12</span><span class=cF0>
<a name="l3629"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>LTPURPLE</span><span class=cF0> </span><span class=cFE>13</span><span class=cF0>
<a name="l3630"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>YELLOW</span><span class=cF0> </span><span class=cFE>14</span><span class=cF0>
<a name="l3631"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>WHITE</span><span class=cF0> </span><span class=cFE>15</span><span class=cF0>
<a name="l3632"></a>
<a name="l3633"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>COLORS_NUM</span><span class=cF0> </span><span class=cFE>16</span><span class=cF0>
<a name="l3634"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>COLOR_INVALID</span><span class=cF0> </span><span class=cFE>16</span><span class=cF0>
<a name="l3635"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>COLOR_MONO</span><span class=cF0> </span><span class=cFE>0xFF</span><span class=cF0>
<a name="l3636"></a>
<a name="l3637"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF9>U16</span><span class=cF0> </span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CColorROPU16</span><span class=cF0> </span><span class=cF2>//Don't use this, use CColorROPU32</span><span class=cF0>
<a name="l3638"></a>{
<a name="l3639"></a> </span><span class=cF1>U8</span><span class=cF0> color, rop;
<a name="l3640"></a>};
<a name="l3641"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF9>U32</span><span class=cF0> </span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CColorROPU32</span><span class=cF0>
<a name="l3642"></a>{
<a name="l3643"></a> </span><span class=cF9>CColorROPU16</span><span class=cF0> c0, c1;
<a name="l3644"></a>};
<a name="l3645"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>COLORROP_COLORS_MASK</span><span class=cF0> </span><span class=cFE>0x00FF00FF</span><span class=cF0>
<a name="l3646"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>COLORROP_NO_ROP0_MASK</span><span class=cF0> </span><span class=cFE>0xFFFF00FF</span><span class=cF0>
<a name="l3647"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>COLORROP_BITS</span><span class=cF0> </span><span class=cFE>16</span><span class=cF0>
<a name="l3648"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF9>U32</span><span class=cF0> </span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CBGR24</span><span class=cF0>
<a name="l3649"></a>{
<a name="l3650"></a> </span><span class=cF1>U8</span><span class=cF0> b, g, r, pad;
<a name="l3651"></a>};
<a name="l3652"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF9>I64</span><span class=cF0> </span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CBGR48</span><span class=cF0>
<a name="l3653"></a>{
<a name="l3654"></a> </span><span class=cF9>U16</span><span class=cF0> b, g, r, pad;
<a name="l3655"></a>};
<a name="l3656"></a>
<a name="l3657"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>&quot;Keyboard Devices;Char/Input;StdIn&quot;</span><span class=cF0>
<a name="l3658"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>KBD_PORT</span><span class=cF0> </span><span class=cFE>0x60</span><span class=cF0>
<a name="l3659"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>KBD_CTRL</span><span class=cF0> </span><span class=cFE>0x64</span><span class=cF0>
<a name="l3660"></a>
<a name="l3661"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>KBDC_LED</span><span class=cF0> </span><span class=cFE>0xED</span><span class=cF0>
<a name="l3662"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>KBDC_DISABLE_MS</span><span class=cF0> </span><span class=cFE>0xA7</span><span class=cF0>
<a name="l3663"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>KBDC_ENABLE_MS</span><span class=cF0> </span><span class=cFE>0xA8</span><span class=cF0>
<a name="l3664"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>KBDC_ENABLE_KBD</span><span class=cF0> </span><span class=cFE>0xAE</span><span class=cF0>
<a name="l3665"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>KBDC_TYPEMATIC</span><span class=cF0> </span><span class=cFE>0xF3</span><span class=cF0>
<a name="l3666"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>KBDC_SCAN_CODES</span><span class=cF0> </span><span class=cFE>0xF0</span><span class=cF0>
<a name="l3667"></a>
<a name="l3668"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CKbdStateGlobals</span><span class=cF0>
<a name="l3669"></a>{
<a name="l3670"></a> </span><span class=cF9>I64</span><span class=cF0> scan_code, </span><span class=cF2>//See </span><a href="https://zeal-operating-system.github.io/ZealOS/Doc/CharOverview.DD.html#l1"><span class=cF4>scan codes</span></a><span class=cF0>
<a name="l3671"></a> last_down_scan_code,
<a name="l3672"></a> count, </span><span class=cF2>//Count of keys pressed since boot.</span><span class=cF0>
<a name="l3673"></a> timestamp, </span><span class=cF2>//Output: TSCGet when event.</span><span class=cF0>
<a name="l3674"></a> new_key_timestamp; </span><span class=cF2>//Output: TSCGet when new key event.</span><span class=cF0>
<a name="l3675"></a> </span><span class=cF9>CFifoU8</span><span class=cF0> *fifo, *fifo2; </span><span class=cF2>//Private</span><span class=cF0>
<a name="l3676"></a> </span><span class=cF9>CFifoI64</span><span class=cF0> *scan_code_fifo;
<a name="l3677"></a> </span><span class=cF9>U32</span><span class=cF0> down_bitmap[</span><span class=cFE>8</span><span class=cF0>], </span><span class=cF2>//BitTest, </span><a href="https://zeal-operating-system.github.io/ZealOS/Kernel/KernelB.HH.html#l11"><span class=cF4>Bt</span></a><span class=cF2>(), with a merged scan code. (Left and right shift merged, for example.)</span><span class=cF0>
<a name="l3678"></a> down_bitmap2[</span><span class=cFE>8</span><span class=cF0>]; </span><span class=cF2>//BitTest, </span><a href="https://zeal-operating-system.github.io/ZealOS/Kernel/KernelB.HH.html#l11"><span class=cF4>Bt</span></a><span class=cF2>(), with an unmerged scan code.</span><span class=cF0>
<a name="l3679"></a> </span><span class=cF1>Bool</span><span class=cF0> reset, </span><span class=cF2>//Private: Reset KbdMouse</span><span class=cF0>
<a name="l3680"></a> irqs_working; </span><span class=cF2>//Private</span><span class=cF0>
<a name="l3681"></a>};
<a name="l3682"></a>
<a name="l3683"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>&quot;Mouse&quot;</span><span class=cF0>
<a name="l3684"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CMouseHardStateGlobals</span><span class=cF0>
<a name="l3685"></a>{
<a name="l3686"></a> </span><span class=cF9>CD3I64</span><span class=cF0> pos, </span><span class=cF2>//Position in pixels</span><span class=cF0>
<a name="l3687"></a> prescale;
<a name="l3688"></a> </span><span class=cF9>CD3</span><span class=cF0> scale;
<a name="l3689"></a> </span><span class=cF1>F64</span><span class=cF0> speed; </span><span class=cF2>//Output: How fast the user is moving it.</span><span class=cF0>
<a name="l3690"></a> </span><span class=cF9>I64</span><span class=cF0> timestamp, </span><span class=cF2>//Output: TSCGet when event.</span><span class=cF0>
<a name="l3691"></a> install_attempts, </span><span class=cF2>//Private</span><span class=cF0>
<a name="l3692"></a> pkt_size; </span><span class=cF2>//Private</span><span class=cF0>
<a name="l3693"></a> </span><span class=cF9>CFifoU8</span><span class=cF0> *fifo, *fifo2; </span><span class=cF2>//Private</span><span class=cF0>
<a name="l3694"></a> </span><span class=cF1>Bool</span><span class=cF0> bttns[</span><span class=cFE>5</span><span class=cF0>],
<a name="l3695"></a> has_wheel,
<a name="l3696"></a> has_ext_bttns,
<a name="l3697"></a> enabled,
<a name="l3698"></a> event, </span><span class=cF2>//Private</span><span class=cF0>
<a name="l3699"></a> installed, </span><span class=cF2>//Private</span><span class=cF0>
<a name="l3700"></a> install_in_progress, </span><span class=cF2>//Private</span><span class=cF0>
<a name="l3701"></a> irqs_working; </span><span class=cF2>//Private</span><span class=cF0>
<a name="l3702"></a>};
<a name="l3703"></a>
<a name="l3704"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CMouseStateGlobals</span><span class=cF0>
<a name="l3705"></a>{
<a name="l3706"></a> </span><span class=cF9>CD3I64</span><span class=cF0> pos, </span><span class=cF2>//Position in pixels</span><span class=cF0>
<a name="l3707"></a> pos_text, </span><span class=cF2>//Position in text rows,cols</span><span class=cF0>
<a name="l3708"></a> presnap,
<a name="l3709"></a> </span><span class=cF1>offset</span><span class=cF0>;
<a name="l3710"></a> </span><span class=cF9>CD3</span><span class=cF0> scale;
<a name="l3711"></a> </span><span class=cF1>F64</span><span class=cF0> speed; </span><span class=cF2>//Output: How fast the user is moving it.</span><span class=cF0>
<a name="l3712"></a> </span><span class=cF9>I64</span><span class=cF0> timestamp; </span><span class=cF2>//Output: TSCGet when event.</span><span class=cF0>
<a name="l3713"></a> </span><span class=cF1>F64</span><span class=cF0> dbl_time, </span><span class=cF2>//Input: Time threshold for calling it a double click.</span><span class=cF0>
<a name="l3714"></a> left_dbl_time, </span><span class=cF2>//Private</span><span class=cF0>
<a name="l3715"></a> right_dbl_time; </span><span class=cF2>//Private</span><span class=cF0>
<a name="l3716"></a> </span><span class=cF1>Bool</span><span class=cF0> lb, </span><span class=cF2>//Left Bttn</span><span class=cF0>
<a name="l3717"></a> rb, </span><span class=cF2>//Right Bttn</span><span class=cF0>
<a name="l3718"></a> show,
<a name="l3719"></a> has_wheel,
<a name="l3720"></a> left_dbl, </span><span class=cF2>//Private</span><span class=cF0>
<a name="l3721"></a> left_down_sent, </span><span class=cF2>//Private</span><span class=cF0>
<a name="l3722"></a> right_dbl, </span><span class=cF2>//Private</span><span class=cF0>
<a name="l3723"></a> right_down_sent; </span><span class=cF2>//Private</span><span class=cF0>
<a name="l3724"></a>};
<a name="l3725"></a>
<a name="l3726"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CGridGlobals</span><span class=cF0>
<a name="l3727"></a>{
<a name="l3728"></a> </span><span class=cF1>Bool</span><span class=cF0> snap format </span><span class=cF6>&quot;$CB,\&quot;Snap Grid\&quot;$\n&quot;</span><span class=cF0>,
<a name="l3729"></a> show format </span><span class=cF6>&quot;$CB,\&quot;Show Grid\&quot;$\n&quot;</span><span class=cF0>,
<a name="l3730"></a> coord format </span><span class=cF6>&quot;$CB,\&quot;Show Coordinates\&quot;$\n&quot;</span><span class=cF0>;
<a name="l3731"></a> </span><span class=cF1>U8</span><span class=cF0> pad[</span><span class=cFE>5</span><span class=cF0>];
<a name="l3732"></a> </span><span class=cF1>F64</span><span class=cF0> x format </span><span class=cF6>&quot;$DA-TRM,A=\&quot;X Spacing:%6.3f\&quot;$\n&quot;</span><span class=cF0>,
<a name="l3733"></a> y format </span><span class=cF6>&quot;$DA-TRM,A=\&quot;Y Spacing:%6.3f\&quot;$\n&quot;</span><span class=cF0>,
<a name="l3734"></a> z format </span><span class=cF6>&quot;$DA-TRM,A=\&quot;Z Spacing:%6.3f\&quot;$\n&quot;</span><span class=cF0>,
<a name="l3735"></a> x_offset format </span><span class=cF6>&quot;$DA-TRM,A=\&quot;X Offset :%6.3f\&quot;$\n&quot;</span><span class=cF0>,
<a name="l3736"></a> y_offset format </span><span class=cF6>&quot;$DA-TRM,A=\&quot;Y Offset :%6.3f\&quot;$\n&quot;</span><span class=cF0>,
<a name="l3737"></a> z_offset format </span><span class=cF6>&quot;$DA-TRM,A=\&quot;Z Offset :%6.3f\&quot;$\n&quot;</span><span class=cF0>,
<a name="l3738"></a> x_speed format </span><span class=cF6>&quot;$DA-TRM,A=\&quot;X Speed :%6.3f\&quot;$\n&quot;</span><span class=cF0>,
<a name="l3739"></a> y_speed format </span><span class=cF6>&quot;$DA-TRM,A=\&quot;Y Speed :%6.3f\&quot;$\n&quot;</span><span class=cF0>,
<a name="l3740"></a> z_speed format </span><span class=cF6>&quot;$DA-TRM,A=\&quot;Z Speed :%6.3f\&quot;$\n&quot;</span><span class=cF0>;
<a name="l3741"></a>};
<a name="l3742"></a>
<a name="l3743"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>&quot;Ctrls&quot;</span><span class=cF0>
<a name="l3744"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CTRLT_GENERIC</span><span class=cF0> </span><span class=cFE>0</span><span class=cF0>
<a name="l3745"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CTRLT_WIN_HSCROLL</span><span class=cF0> </span><span class=cFE>1</span><span class=cF0> </span><span class=cF2>//unique</span><span class=cF0>
<a name="l3746"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CTRLT_WIN_VSCROLL</span><span class=cF0> </span><span class=cFE>2</span><span class=cF0> </span><span class=cF2>//unique</span><span class=cF0>
<a name="l3747"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CTRLT_VIEWING_ANGLES</span><span class=cF0> </span><span class=cFE>3</span><span class=cF0> </span><span class=cF2>//unique</span><span class=cF0>
<a name="l3748"></a>
<a name="l3749"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CTRLF_SHOW</span><span class=cF0> </span><span class=cFE>1</span><span class=cF0>
<a name="l3750"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CTRLF_BORDER</span><span class=cF0> </span><span class=cFE>2</span><span class=cF0>
<a name="l3751"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CTRLF_CAPTURE_LEFT_MS</span><span class=cF0> </span><span class=cFE>4</span><span class=cF0>
<a name="l3752"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CTRLF_CAPTURE_RIGHT_MS</span><span class=cF0> </span><span class=cFE>8</span><span class=cF0>
<a name="l3753"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CTRLF_CLICKED</span><span class=cF0> </span><span class=cFE>16</span><span class=cF0>
<a name="l3754"></a>
<a name="l3755"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>WSSf_SET_TO_POS</span><span class=cF0> </span><span class=cFE>0</span><span class=cF0>
<a name="l3756"></a>
<a name="l3757"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CWinScroll</span><span class=cF0>
<a name="l3758"></a>{
<a name="l3759"></a> </span><span class=cF9>I64</span><span class=cF0> min, pos, max;
<a name="l3760"></a> </span><span class=cF9>U32</span><span class=cF0> flags;
<a name="l3761"></a> </span><span class=cF1>U8</span><span class=cF0> color, pad[</span><span class=cFE>3</span><span class=cF0>];
<a name="l3762"></a>};
<a name="l3763"></a>
<a name="l3764"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CViewAngles</span><span class=cF0>
<a name="l3765"></a>{
<a name="l3766"></a> </span><span class=cF9>I64</span><span class=cF0> sx, sy, sz;
<a name="l3767"></a> </span><span class=cF1>F64</span><span class=cF0> ax, ay, az;
<a name="l3768"></a> </span><span class=cF9>CColorROPU32</span><span class=cF0> cx, cy, cz, cbd, cbg, config;
<a name="l3769"></a>};
<a name="l3770"></a>
<a name="l3771"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CCtrl</span><span class=cF0>
<a name="l3772"></a>{
<a name="l3773"></a> </span><span class=cF9>CCtrl</span><span class=cF0> *next, *last;
<a name="l3774"></a> </span><span class=cF9>CTask</span><span class=cF0> *win_task;
<a name="l3775"></a> </span><span class=cF9>I64</span><span class=cF0> type, flags;
<a name="l3776"></a>
<a name="l3777"></a> </span><span class=cF2>//win pix coordinates</span><span class=cF0>
<a name="l3778"></a> </span><span class=cF9>I64</span><span class=cF0> left, right, top, bottom;
<a name="l3779"></a>
<a name="l3780"></a> </span><span class=cF2>//screen pix coordinates (derived)</span><span class=cF0>
<a name="l3781"></a> </span><span class=cF9>I64</span><span class=cF0> screen_left, screen_right, screen_top, screen_bottom;
<a name="l3782"></a>
<a name="l3783"></a> </span><span class=cF1>U8</span><span class=cF0> *state;
<a name="l3784"></a>
<a name="l3785"></a> </span><span class=cF2>//called on resize</span><span class=cF0>
<a name="l3786"></a> </span><span class=cF1>U0</span><span class=cF0> (*update_derived_vals)(</span><span class=cF9>CCtrl</span><span class=cF0> *c);
<a name="l3787"></a> </span><span class=cF1>U0</span><span class=cF0> (*draw_it)(</span><span class=cF9>CDC</span><span class=cF0> *dc, </span><span class=cF9>CCtrl</span><span class=cF0> *c);
<a name="l3788"></a>
<a name="l3789"></a> </span><span class=cF1>Bool</span><span class=cF0> (*inside_ctrl)(</span><span class=cF9>CCtrl</span><span class=cF0> *c, </span><span class=cF9>I64</span><span class=cF0> x, </span><span class=cF9>I64</span><span class=cF0> y); </span><span class=cF2>//For nonbox shapes</span><span class=cF0>
<a name="l3790"></a> </span><span class=cF1>U0</span><span class=cF0> (*left_click)( </span><span class=cF9>CCtrl</span><span class=cF0> *c, </span><span class=cF9>I64</span><span class=cF0> x, </span><span class=cF9>I64</span><span class=cF0> y, </span><span class=cF1>Bool</span><span class=cF0> down);
<a name="l3791"></a> </span><span class=cF1>U0</span><span class=cF0> (*right_click)(</span><span class=cF9>CCtrl</span><span class=cF0> *c, </span><span class=cF9>I64</span><span class=cF0> x, </span><span class=cF9>I64</span><span class=cF0> y, </span><span class=cF1>Bool</span><span class=cF0> down);
<a name="l3792"></a> </span><span class=cF1>U0</span><span class=cF0> (*wheel_chg)( </span><span class=cF9>CCtrl</span><span class=cF0> *c, </span><span class=cF9>I64</span><span class=cF0> delta);
<a name="l3793"></a>};
<a name="l3794"></a>
<a name="l3795"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>&quot;Menus&quot;</span><span class=cF0>
<a name="l3796"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CMenuEntry</span><span class=cF0>
<a name="l3797"></a>{
<a name="l3798"></a> </span><span class=cF9>CMenuEntry</span><span class=cF0> *next;
<a name="l3799"></a> </span><span class=cF9>CMenuEntry</span><span class=cF0> *sub;
<a name="l3800"></a> </span><span class=cF1>U8</span><span class=cF0> name[</span><span class=cFE>32</span><span class=cF0>];
<a name="l3801"></a> </span><span class=cF9>I64</span><span class=cF0> message_code, arg1, arg2;
<a name="l3802"></a> </span><span class=cF1>Bool</span><span class=cF0> checked, dir, pad[</span><span class=cFE>6</span><span class=cF0>];
<a name="l3803"></a>};
<a name="l3804"></a>
<a name="l3805"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CMenu</span><span class=cF0>
<a name="l3806"></a>{
<a name="l3807"></a> </span><span class=cF9>CMenu</span><span class=cF0> *next;
<a name="l3808"></a> </span><span class=cF9>CMenuEntry</span><span class=cF0> *sub;
<a name="l3809"></a> </span><span class=cF9>CTask</span><span class=cF0> *task;
<a name="l3810"></a> </span><span class=cF9>I64</span><span class=cF0> flags;
<a name="l3811"></a> </span><span class=cF1>U8</span><span class=cF0> attr, pad[</span><span class=cFE>7</span><span class=cF0>];
<a name="l3812"></a>};
<a name="l3813"></a>
<a name="l3814"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>&quot;Task&quot;</span><span class=cF0>
<a name="l3815"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CBpt</span><span class=cF0>
<a name="l3816"></a>{
<a name="l3817"></a> </span><span class=cF9>CBpt</span><span class=cF0> *next;
<a name="l3818"></a> </span><span class=cF1>U8</span><span class=cF0> *addr,
<a name="l3819"></a> val, pad[</span><span class=cFE>7</span><span class=cF0>];
<a name="l3820"></a>};
<a name="l3821"></a>
<a name="l3822"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CExcept</span><span class=cF0>
<a name="l3823"></a>{
<a name="l3824"></a> </span><span class=cF9>CExcept</span><span class=cF0> *next, *last;
<a name="l3825"></a> </span><span class=cF9>I64</span><span class=cF0> handler_catch, handler_untry,
<a name="l3826"></a> rsp, rbp, rflags, rsi, rdi, r10, r11, r12, r13, r14, r15;
<a name="l3827"></a>};
<a name="l3828"></a>
<a name="l3829"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CFPU</span><span class=cF0>
<a name="l3830"></a>{
<a name="l3831"></a> </span><span class=cF1>U8</span><span class=cF0> body[</span><span class=cFE>512</span><span class=cF0>];
<a name="l3832"></a>};
<a name="l3833"></a>
<a name="l3834"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>&quot;Job/Exe;Task/Job/Exe&quot;</span><span class=cF0>
<a name="l3835"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>JOBf_WAKE_MASTER</span><span class=cF0> </span><span class=cFE>0</span><span class=cF0>
<a name="l3836"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>JOBf_FOCUS_MASTER</span><span class=cF0> </span><span class=cFE>1</span><span class=cF0>
<a name="l3837"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>JOBf_EXIT_ON_COMPLETE</span><span class=cF0> </span><span class=cFE>2</span><span class=cF0>
<a name="l3838"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>JOBf_DONT_FILTER</span><span class=cF0> </span><span class=cFE>3</span><span class=cF0>
<a name="l3839"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>JOBf_HIGHEST_PRIORITY</span><span class=cF0> </span><span class=cFE>4</span><span class=cF0>
<a name="l3840"></a></span><span class=cF2>//MP flags</span><span class=cF0>
<a name="l3841"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>JOBf_DONE</span><span class=cF0> </span><span class=cFE>5</span><span class=cF0>
<a name="l3842"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>JOBf_DISPATCHED</span><span class=cF0> </span><span class=cFE>6</span><span class=cF0>
<a name="l3843"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>JOBf_FREE_ON_COMPLETE</span><span class=cF0> </span><span class=cFE>7</span><span class=cF0>
<a name="l3844"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>JOBf_ADD_TO_QUE</span><span class=cF0> </span><span class=cFE>8</span><span class=cF0>
<a name="l3845"></a>
<a name="l3846"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>JOBT_TEXT_INPUT</span><span class=cF0> </span><span class=cFE>0</span><span class=cF0> </span><span class=cF2>//</span><a href="https://zeal-operating-system.github.io/ZealOS/Kernel/Job.CC.html#l88"><span class=cF4>TaskText</span></a><span class=cF2>() </span><span class=cF0> </span><span class=cF2>Feed StdIn</span><span class=cF0>
<a name="l3847"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>JOBT_MESSAGE</span><span class=cF0> </span><span class=cFE>1</span><span class=cF0> </span><span class=cF2>//</span><a href="https://zeal-operating-system.github.io/ZealOS/Kernel/Job.CC.html#l143"><span class=cF4>TaskMessage</span></a><span class=cF2>() </span><span class=cF0> </span><span class=cF2>Post message</span><span class=cF0>
<a name="l3848"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>JOBT_EXE_STR</span><span class=cF0> </span><span class=cFE>2</span><span class=cF0> </span><span class=cF2>//</span><a href="https://zeal-operating-system.github.io/ZealOS/Kernel/Job.CC.html#l45"><span class=cF4>TaskExe</span></a><span class=cF2>() </span><span class=cF0> </span><span class=cF2>Compile &amp; execute src code text</span><span class=cF0>
<a name="l3849"></a></span><span class=cF2>//MP cmds</span><span class=cF0>
<a name="l3850"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>JOBT_CALL</span><span class=cF0> </span><span class=cFE>3</span><span class=cF0> </span><span class=cF2>//</span><a href="https://zeal-operating-system.github.io/ZealOS/Kernel/MultiProc.CC.html#l224"><span class=cF4>JobQueue</span></a><span class=cF2>() </span><span class=cF0> </span><span class=cF2>Tell MP to call function</span><span class=cF0>
<a name="l3851"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>JOBT_SPAWN_TASK</span><span class=cF0> </span><span class=cFE>4</span><span class=cF0> </span><span class=cF2>//</span><a href="https://zeal-operating-system.github.io/ZealOS/Kernel/KTask.CC.html#l264"><span class=cF4>Spawn</span></a><span class=cF2>() Tell MP to spawn task</span><span class=cF0>
<a name="l3852"></a>
<a name="l3853"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CJob</span><span class=cF0>
<a name="l3854"></a>{
<a name="l3855"></a> </span><span class=cF9>CJob</span><span class=cF0> *next, *last;
<a name="l3856"></a> </span><span class=cF9>CJobCtrl</span><span class=cF0> *ctrl;
<a name="l3857"></a> </span><span class=cF9>I64</span><span class=cF0> job_code, flags, message_code;
<a name="l3858"></a>
<a name="l3859"></a> </span><span class=cF9>I64</span><span class=cF0> (*addr)(</span><span class=cF1>U8</span><span class=cF0> *fun_arg);
<a name="l3860"></a> </span><span class=cF1>U8</span><span class=cF0> *fun_arg;
<a name="l3861"></a>
<a name="l3862"></a> </span><span class=cF1>U8</span><span class=cF0> *aux_str;
<a name="l3863"></a> </span><span class=cF9>I64</span><span class=cF0> aux1, aux2, </span><span class=cF2>//Sometimes called arg1 and arg2. (Windows message param1 param2)</span><span class=cF0>
<a name="l3864"></a> res;
<a name="l3865"></a>
<a name="l3866"></a> </span><span class=cF9>CTask</span><span class=cF0> *spawned_task,
<a name="l3867"></a> *master_task;
<a name="l3868"></a>};
<a name="l3869"></a>
<a name="l3870"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>JOBCf_LOCKED</span><span class=cF0> </span><span class=cFE>0</span><span class=cF0>
<a name="l3871"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CJobCtrl</span><span class=cF0>
<a name="l3872"></a>{
<a name="l3873"></a> </span><span class=cF9>CJob</span><span class=cF0> *next_waiting, *last_waiting;
<a name="l3874"></a> </span><span class=cF9>CJob</span><span class=cF0> *next_done, *last_done;
<a name="l3875"></a> </span><span class=cF9>I64</span><span class=cF0> flags;
<a name="l3876"></a>};
<a name="l3877"></a>
<a name="l3878"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>&quot;Messages&quot;</span><span class=cF0>
<a name="l3879"></a></span><span class=cF2>//See </span><a href="https://zeal-operating-system.github.io/ZealOS/Demo/MessageLoop.CC.html#l1"><span class=cF4>::/Demo/MessageLoop.CC</span></a><span class=cF0>
<a name="l3880"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>MESSAGE_NULL</span><span class=cF0> </span><span class=cFE>0</span><span class=cF0>
<a name="l3881"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>MESSAGE_CMD</span><span class=cF0> </span><span class=cFE>1</span><span class=cF0>
<a name="l3882"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>MESSAGE_KEY_DOWN</span><span class=cF0> </span><span class=cFE>2</span><span class=cF0> </span><span class=cF2>//(</span><a href="https://zeal-operating-system.github.io/ZealOS/Kernel/KernelA.HH.html#l4131"><span class=cF4>ASCII</span></a><span class=cF2>,</span><a href="https://zeal-operating-system.github.io/ZealOS/Doc/CharOverview.DD.html#l1"><span class=cF4>scan code</span></a><span class=cF2>) Press &lt;CTRL-SHIFT-L&gt;</span><span class=cF0>
<a name="l3883"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>MESSAGE_KEY_UP</span><span class=cF0> </span><span class=cFE>3</span><span class=cF0> </span><span class=cF2>//(</span><a href="https://zeal-operating-system.github.io/ZealOS/Kernel/KernelA.HH.html#l4131"><span class=cF4>ASCII</span></a><span class=cF2>,</span><a href="https://zeal-operating-system.github.io/ZealOS/Doc/CharOverview.DD.html#l1"><span class=cF4>scan code</span></a><span class=cF2>) Press &lt;CTRL-SHIFT-L&gt;</span><span class=cF0>
<a name="l3884"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>MESSAGE_MS_MOVE</span><span class=cF0> </span><span class=cFE>4</span><span class=cF0> </span><span class=cF2>//(x,y)</span><span class=cF0>
<a name="l3885"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>MESSAGE_MS_L_DOWN</span><span class=cF0> </span><span class=cFE>5</span><span class=cF0> </span><span class=cF2>//(x,y)</span><span class=cF0>
<a name="l3886"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>MESSAGE_MS_L_UP</span><span class=cF0> </span><span class=cFE>6</span><span class=cF0> </span><span class=cF2>//(x,y)</span><span class=cF0>
<a name="l3887"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>MESSAGE_MS_L_D_DOWN</span><span class=cF0> </span><span class=cFE>7</span><span class=cF0> </span><span class=cF2>//(x,y)</span><span class=cF0>
<a name="l3888"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>MESSAGE_MS_L_D_UP</span><span class=cF0> </span><span class=cFE>8</span><span class=cF0> </span><span class=cF2>//(x,y)</span><span class=cF0>
<a name="l3889"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>MESSAGE_MS_R_DOWN</span><span class=cF0> </span><span class=cFE>9</span><span class=cF0> </span><span class=cF2>//(x,y)</span><span class=cF0>
<a name="l3890"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>MESSAGE_MS_R_UP</span><span class=cF0> </span><span class=cFE>10</span><span class=cF0> </span><span class=cF2>//(x,y)</span><span class=cF0>
<a name="l3891"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>MESSAGE_MS_R_D_DOWN</span><span class=cF0> </span><span class=cFE>11</span><span class=cF0> </span><span class=cF2>//(x,y)</span><span class=cF0>
<a name="l3892"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>MESSAGE_MS_R_D_UP</span><span class=cF0> </span><span class=cFE>12</span><span class=cF0> </span><span class=cF2>//(x,y)</span><span class=cF0>
<a name="l3893"></a>
<a name="l3894"></a></span><span class=cF2>//Fake messages used to send both an up and down.</span><span class=cF0>
<a name="l3895"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>MESSAGE_KEY_DOWN_UP</span><span class=cF0> -</span><span class=cFE>2</span><span class=cF0> </span><span class=cF2>//Down &amp; UP</span><span class=cF0>
<a name="l3896"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>MESSAGE_MS_L_DOWN_UP</span><span class=cF0> -</span><span class=cFE>5</span><span class=cF0> </span><span class=cF2>//Down &amp; Up</span><span class=cF0>
<a name="l3897"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>MESSAGE_MS_L_D_DOWN_UP</span><span class=cF0> -</span><span class=cFE>7</span><span class=cF0> </span><span class=cF2>//Down &amp; Up</span><span class=cF0>
<a name="l3898"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>MESSAGE_MS_R_DOWN_UP</span><span class=cF0> -</span><span class=cFE>9</span><span class=cF0> </span><span class=cF2>//Down &amp; Up</span><span class=cF0>
<a name="l3899"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>MESSAGE_MS_R_D_DOWN_UP</span><span class=cF0> -</span><span class=cFE>11</span><span class=cF0> </span><span class=cF2>//Down &amp; Up</span><span class=cF0>
<a name="l3900"></a>
<a name="l3901"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>&quot;Task/Settings&quot;</span><span class=cF0>
<a name="l3902"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>TSF_SAME_SONG</span><span class=cF0> </span><span class=cFE>1</span><span class=cF0>
<a name="l3903"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CTaskSettings</span><span class=cF0>
<a name="l3904"></a>{
<a name="l3905"></a> </span><span class=cF9>CTaskSettings</span><span class=cF0> *next;
<a name="l3906"></a> </span><span class=cF1>U8</span><span class=cF0> *cur_dir;
<a name="l3907"></a> </span><span class=cF9>I64</span><span class=cF0> left, right, top, bottom;
<a name="l3908"></a> </span><span class=cF1>U0</span><span class=cF0> (*draw_it)(</span><span class=cF9>CTask</span><span class=cF0> *task, </span><span class=cF9>CDC</span><span class=cF0> *dc);
<a name="l3909"></a> </span><span class=cF1>U0</span><span class=cF0> (*task_end_cb)();
<a name="l3910"></a> </span><span class=cF9>CTask</span><span class=cF0> *song_task, *animate_task;
<a name="l3911"></a> </span><span class=cF9>I64</span><span class=cF0> scroll_x, scroll_y, scroll_z;
<a name="l3912"></a> </span><span class=cF9>CBGR24</span><span class=cF0> palette[</span><span class=cF3>COLORS_NUM</span><span class=cF0>];
<a name="l3913"></a> </span><span class=cF9>U32</span><span class=cF0> win_inhibit;
<a name="l3914"></a> </span><span class=cF1>U8</span><span class=cF0> text_attr, title_src,
<a name="l3915"></a> border_attr, border_src,
<a name="l3916"></a> task_title[</span><span class=cF3>STR_LEN</span><span class=cF0>];
<a name="l3917"></a> </span><span class=cF1>Bool</span><span class=cF0> border, hide_cursor, highlight_cursor, scroll, autocomplete, pad[</span><span class=cFE>3</span><span class=cF0>];
<a name="l3918"></a>#</span><span class=cF1>assert</span><span class=cF0> !($ &amp; </span><span class=cFE>7</span><span class=cF0>)
<a name="l3919"></a>};
<a name="l3920"></a>
<a name="l3921"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>&quot;Task&quot;</span><span class=cF0>
<a name="l3922"></a></span><span class=cF2>//CTask.border_src</span><span class=cF0>
<a name="l3923"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>BDS_CONST</span><span class=cF0> </span><span class=cFE>0</span><span class=cF0>
<a name="l3924"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>BDS_CUR_DRIVE</span><span class=cF0> </span><span class=cFE>1</span><span class=cF0>
<a name="l3925"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>BDS_ED_FILENAME_DRIVE</span><span class=cF0> </span><span class=cFE>2</span><span class=cF0>
<a name="l3926"></a>
<a name="l3927"></a></span><span class=cF2>//CTask.title_src</span><span class=cF0>
<a name="l3928"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>TTS_CONST</span><span class=cF0> </span><span class=cFE>0</span><span class=cF0>
<a name="l3929"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>TTS_LOCKED_CONST</span><span class=cF0> </span><span class=cFE>1</span><span class=cF0> </span><span class=cF2>//This is not strictly enforced</span><span class=cF0>
<a name="l3930"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>TTS_TASK_NAME</span><span class=cF0> </span><span class=cFE>2</span><span class=cF0>
<a name="l3931"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>TTS_ED_FILENAME</span><span class=cF0> </span><span class=cFE>3</span><span class=cF0>
<a name="l3932"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>TTS_CUR_LEX</span><span class=cF0> </span><span class=cFE>4</span><span class=cF0>
<a name="l3933"></a>
<a name="l3934"></a></span><span class=cF2>//CTask.task_flags</span><span class=cF0>
<a name="l3935"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>TASKf_TASK_LOCK</span><span class=cF0> </span><span class=cFE>0</span><span class=cF0>
<a name="l3936"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>TASKf_KILL_TASK</span><span class=cF0> </span><span class=cFE>1</span><span class=cF0>
<a name="l3937"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>TASKf_SUSPENDED</span><span class=cF0> </span><span class=cFE>2</span><span class=cF0>
<a name="l3938"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>TASKf_IDLE</span><span class=cF0> </span><span class=cFE>3</span><span class=cF0>
<a name="l3939"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>TASKf_CMD_LINE_PROMPT</span><span class=cF0> </span><span class=cFE>4</span><span class=cF0>
<a name="l3940"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>TASKf_INPUT_FILTER_TASK</span><span class=cF0> </span><span class=cFE>5</span><span class=cF0>
<a name="l3941"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>TASKf_FILTER_INPUT</span><span class=cF0> </span><span class=cFE>6</span><span class=cF0>
<a name="l3942"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>TASKf_HAS_SONG</span><span class=cF0> </span><span class=cFE>7</span><span class=cF0>
<a name="l3943"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>TASKf_DISABLE_BPTS</span><span class=cF0> </span><span class=cFE>8</span><span class=cF0>
<a name="l3944"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>TASKf_AWAITING_MESSAGE</span><span class=cF0> </span><span class=cFE>9</span><span class=cF0>
<a name="l3945"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>TASKf_BREAK_LOCKED</span><span class=cF0> </span><span class=cFE>10</span><span class=cF0>
<a name="l3946"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>TASKf_PENDING_BREAK</span><span class=cF0> </span><span class=cFE>11</span><span class=cF0>
<a name="l3947"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>TASKf_BREAK_TO_SHIFT_ESC</span><span class=cF0> </span><span class=cFE>12</span><span class=cF0>
<a name="l3948"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>TASKf_KILL_AFTER_DEBUG</span><span class=cF0> </span><span class=cFE>13</span><span class=cF0>
<a name="l3949"></a>
<a name="l3950"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>TASKf_NONTIMER_RAND</span><span class=cF0> </span><span class=cFE>14</span><span class=cF0>
<a name="l3951"></a>
<a name="l3952"></a></span><span class=cF2>//CTask.display_flags</span><span class=cF0>
<a name="l3953"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DISPLAYf_SHOW</span><span class=cF0> </span><span class=cFE>0</span><span class=cF0>
<a name="l3954"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DISPLAYf_NOT_RAW</span><span class=cF0> </span><span class=cFE>1</span><span class=cF0>
<a name="l3955"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DISPLAYf_SILENT</span><span class=cF0> </span><span class=cFE>2</span><span class=cF0>
<a name="l3956"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DISPLAYf_NO_BORDER</span><span class=cF0> </span><span class=cFE>3</span><span class=cF0>
<a name="l3957"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DISPLAYf_WIN_ON_TOP</span><span class=cF0> </span><span class=cFE>4</span><span class=cF0>
<a name="l3958"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DISPLAYf_CHILDREN_NOT_ON_TOP</span><span class=cF0> </span><span class=cFE>5</span><span class=cF0>
<a name="l3959"></a>
<a name="l3960"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>TASK_SIGNATURE_VAL</span><span class=cF0> </span><span class=cF6>'TskS'</span><span class=cF0>
<a name="l3961"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>TASK_NAME_LEN</span><span class=cF0> </span><span class=cFE>32</span><span class=cF0>
<a name="l3962"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>TASK_EXCEPT_CALLERS</span><span class=cF0> </span><span class=cFE>8</span><span class=cF0>
<a name="l3963"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CTaskStack</span><span class=cF0>
<a name="l3964"></a>{
<a name="l3965"></a> </span><span class=cF9>CTaskStack</span><span class=cF0> *next_stack;
<a name="l3966"></a> </span><span class=cF9>I64</span><span class=cF0> stack_size, stack_ptr;
<a name="l3967"></a> </span><span class=cF1>U0</span><span class=cF0> stack_base;
<a name="l3968"></a>};
<a name="l3969"></a>
<a name="l3970"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DYING_JIFFIES</span><span class=cF0> </span><span class=cF5>ToI64</span><span class=cF0>(</span><span class=cF3>JIFFY_FREQ</span><span class=cF0> / </span><span class=cFE>5</span><span class=cF0>)
<a name="l3971"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CTaskDying</span><span class=cF0>
<a name="l3972"></a>{
<a name="l3973"></a> </span><span class=cF9>CTask</span><span class=cF0> *next, *last;
<a name="l3974"></a> </span><span class=cF9>I64</span><span class=cF0> wake_jiffy;
<a name="l3975"></a>};
<a name="l3976"></a>
<a name="l3977"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CTask</span><span class=cF0> </span><span class=cF2>//The Fs segment reg points to current CTask.</span><span class=cF0>
<a name="l3978"></a>{
<a name="l3979"></a> </span><span class=cF9>CTask</span><span class=cF0> *addr; </span><span class=cF2>//Self-addressed ptr</span><span class=cF0>
<a name="l3980"></a> </span><span class=cF9>U32</span><span class=cF0> task_signature, win_inhibit;
<a name="l3981"></a>#</span><span class=cF1>assert</span><span class=cF0> $ == </span><span class=cF1>offset</span><span class=cF0>(</span><span class=cF9>CTaskDying</span><span class=cF0>.wake_jiffy)
<a name="l3982"></a> </span><span class=cF9>I64</span><span class=cF0> wake_jiffy;
<a name="l3983"></a> </span><span class=cF9>U32</span><span class=cF0> task_flags, display_flags;
<a name="l3984"></a>
<a name="l3985"></a> </span><span class=cF9>CHeapCtrl</span><span class=cF0> *code_heap, *data_heap;
<a name="l3986"></a>
<a name="l3987"></a> </span><span class=cF9>CDoc</span><span class=cF0> *put_doc, *display_doc, </span><span class=cF2>//When double buffering, these two differ.</span><span class=cF0>
<a name="l3988"></a> *border_doc;
<a name="l3989"></a> </span><span class=cF9>I64</span><span class=cF0> win_left, win_right, win_top, win_bottom;
<a name="l3990"></a>
<a name="l3991"></a> </span><span class=cF9>CDrive</span><span class=cF0> *cur_dv;
<a name="l3992"></a> </span><span class=cF1>U8</span><span class=cF0> *cur_dir;
<a name="l3993"></a>
<a name="l3994"></a> </span><span class=cF9>CTask</span><span class=cF0> *parent_task,
<a name="l3995"></a> *next_task, *last_task,
<a name="l3996"></a> *next_input_filter_task, *last_input_filter_task,
<a name="l3997"></a> *next_sibling_task, *last_sibling_task,
<a name="l3998"></a> *next_child_task, *last_child_task;
<a name="l3999"></a>
<a name="l4000"></a> </span><span class=cF2>//These are derived from left,top,right,bottom</span><span class=cF0>
<a name="l4001"></a> </span><span class=cF9>I64</span><span class=cF0> win_width, win_height,
<a name="l4002"></a> pix_left, pix_right, pix_width, </span><span class=cF2>//These are in pixs, not characters</span><span class=cF0>
<a name="l4003"></a> pix_top, pix_bottom, pix_height,
<a name="l4004"></a> scroll_x, scroll_y, scroll_z;
<a name="l4005"></a>
<a name="l4006"></a> </span><span class=cF2>//These must be in this order</span><span class=cF0>
<a name="l4007"></a> </span><span class=cF2>//for </span><a href="https://zeal-operating-system.github.io/ZealOS/Kernel/Sched.CC.html#l60"><span class=cF4>TASK_CONTEXT_SAVE</span></a><span class=cF2> and </span><a href="https://zeal-operating-system.github.io/ZealOS/Kernel/Sched.CC.html#l105"><span class=cF4>_TASK_CONTEXT_RESTORE</span></a><span class=cF0>
<a name="l4008"></a> </span><span class=cF9>I64</span><span class=cF0> rip, rflags, rsp, rsi, rax, rcx, rdx, rbx, rbp, rdi, r8, r9, r10, r11, r12, r13, r14, r15;
<a name="l4009"></a> </span><span class=cF9>CCPU</span><span class=cF0> *gs;
<a name="l4010"></a> </span><span class=cF9>CFPU</span><span class=cF0> *fpu_mmx;
<a name="l4011"></a> </span><span class=cF9>I64</span><span class=cF0> swap_counter;
<a name="l4012"></a>
<a name="l4013"></a> </span><span class=cF1>U0</span><span class=cF0> (*draw_it)(</span><span class=cF9>CTask</span><span class=cF0> *task, </span><span class=cF9>CDC</span><span class=cF0> *dc);
<a name="l4014"></a>
<a name="l4015"></a> </span><span class=cF1>U8</span><span class=cF0> task_title[</span><span class=cF3>STR_LEN</span><span class=cF0>],
<a name="l4016"></a> task_name[</span><span class=cF3>TASK_NAME_LEN</span><span class=cF0>],
<a name="l4017"></a> wallpaper_data[</span><span class=cF3>STR_LEN</span><span class=cF0>],
<a name="l4018"></a>
<a name="l4019"></a> title_src, border_src,
<a name="l4020"></a> text_attr, border_attr;
<a name="l4021"></a> </span><span class=cF9>U16</span><span class=cF0> win_z_num, pad;
<a name="l4022"></a>
<a name="l4023"></a> </span><span class=cF9>CTaskStack</span><span class=cF0> *stack;
<a name="l4024"></a>
<a name="l4025"></a> </span><span class=cF9>CExcept</span><span class=cF0> *next_except, *last_except;
<a name="l4026"></a> </span><span class=cF9>I64</span><span class=cF0> except_rbp, </span><span class=cF2>//throw routine's RBP</span><span class=cF0>
<a name="l4027"></a> except_ch; </span><span class=cF2>//throw(ch)</span><span class=cF0>
<a name="l4028"></a> </span><span class=cF1>U8</span><span class=cF0> *except_callers[</span><span class=cF3>TASK_EXCEPT_CALLERS</span><span class=cF0>];
<a name="l4029"></a>
<a name="l4030"></a> </span><span class=cF1>Bool</span><span class=cF0> catch_except;
<a name="l4031"></a> </span><span class=cF1>Bool</span><span class=cF0> new_answer;
<a name="l4032"></a> </span><span class=cF1>U8</span><span class=cF0> answer_type, pad[</span><span class=cFE>5</span><span class=cF0>];
<a name="l4033"></a> </span><span class=cF9>I64</span><span class=cF0> answer;
<a name="l4034"></a> </span><span class=cF1>F64</span><span class=cF0> answer_time;
<a name="l4035"></a> </span><span class=cF9>CBpt</span><span class=cF0> *bpt_list;
<a name="l4036"></a> </span><span class=cF9>CCtrl</span><span class=cF0> *next_ctrl, *last_ctrl;
<a name="l4037"></a> </span><span class=cF9>CMenu</span><span class=cF0> *cur_menu;
<a name="l4038"></a> </span><span class=cF9>CTaskSettings</span><span class=cF0> *next_settings;
<a name="l4039"></a> </span><span class=cF9>CMathODE</span><span class=cF0> *next_ode, *last_ode;
<a name="l4040"></a> </span><span class=cF1>F64</span><span class=cF0> last_ode_time;
<a name="l4041"></a> </span><span class=cF9>CHashTable</span><span class=cF0> *hash_table;
<a name="l4042"></a>
<a name="l4043"></a> </span><span class=cF9>CJobCtrl</span><span class=cF0> server_ctrl;
<a name="l4044"></a> </span><span class=cF9>CCompCtrl</span><span class=cF0> *next_cc, *last_cc;
<a name="l4045"></a> </span><span class=cF9>CHashFun</span><span class=cF0> *last_fun;
<a name="l4046"></a>
<a name="l4047"></a> </span><span class=cF1>U0</span><span class=cF0> (*task_end_cb)();
<a name="l4048"></a> </span><span class=cF9>CTask</span><span class=cF0> *song_task, *animate_task;
<a name="l4049"></a> </span><span class=cF9>I64</span><span class=cF0> rand_seed,
<a name="l4050"></a> task_num,
<a name="l4051"></a> fault_num, fault_err_code;
<a name="l4052"></a> </span><span class=cF9>CTask</span><span class=cF0> *popup_task,
<a name="l4053"></a> *debug_task;
<a name="l4054"></a> </span><span class=cF9>CWinScroll</span><span class=cF0> horz_scroll, vert_scroll;
<a name="l4055"></a>
<a name="l4056"></a> </span><span class=cF9>I64</span><span class=cF0> user_data;
<a name="l4057"></a>#</span><span class=cF1>assert</span><span class=cF0> !($ &amp; </span><span class=cFE>7</span><span class=cF0>)
<a name="l4058"></a>};
<a name="l4059"></a>
<a name="l4060"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CTSS</span><span class=cF0>
<a name="l4061"></a>{
<a name="l4062"></a> </span><span class=cF9>U32</span><span class=cF0> res1;
<a name="l4063"></a> </span><span class=cF9>I64</span><span class=cF0> rsp0, rsp1, rsp2, res2,
<a name="l4064"></a> ist1, ist2, ist3, ist4, ist5, ist6, ist7, res3;
<a name="l4065"></a> </span><span class=cF9>U16</span><span class=cF0> res4, io_map_offset;
<a name="l4066"></a> </span><span class=cF1>U8</span><span class=cF0> io_map[</span><span class=cFE>0x10000</span><span class=cF0>/</span><span class=cFE>8</span><span class=cF0>];
<a name="l4067"></a> </span><span class=cF9>I64</span><span class=cF0> *st0, *st1, *st2;
<a name="l4068"></a> </span><span class=cF9>U16</span><span class=cF0> tr, tr_ring3;
<a name="l4069"></a>};
<a name="l4070"></a>
<a name="l4071"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ans</span><span class=cF0> (</span><span class=cF5>Fs</span><span class=cF0>-&gt;answer)
<a name="l4072"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ansf</span><span class=cF0> (</span><span class=cF5>Fs</span><span class=cF0>-&gt;answer</span><span class=cF7>(</span><span class=cF1>F64</span><span class=cF7>)</span><span class=cF0>)
<a name="l4073"></a>
<a name="l4074"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>_RAX</span><span class=cF0> </span><span class=cF5>Fs</span><span class=cF0>-&gt;rax
<a name="l4075"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>_RBX</span><span class=cF0> </span><span class=cF5>Fs</span><span class=cF0>-&gt;rbx
<a name="l4076"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>_RCX</span><span class=cF0> </span><span class=cF5>Fs</span><span class=cF0>-&gt;rcx
<a name="l4077"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>_RDX</span><span class=cF0> </span><span class=cF5>Fs</span><span class=cF0>-&gt;rdx
<a name="l4078"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>_RSI</span><span class=cF0> </span><span class=cF5>Fs</span><span class=cF0>-&gt;rsi
<a name="l4079"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>_RDI</span><span class=cF0> </span><span class=cF5>Fs</span><span class=cF0>-&gt;rdi
<a name="l4080"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>_RBP</span><span class=cF0> </span><span class=cF5>Fs</span><span class=cF0>-&gt;rbp
<a name="l4081"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>_RSP</span><span class=cF0> </span><span class=cF5>Fs</span><span class=cF0>-&gt;rsp
<a name="l4082"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>_RIP</span><span class=cF0> </span><span class=cF5>Fs</span><span class=cF0>-&gt;rip
<a name="l4083"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>_R8</span><span class=cF0> </span><span class=cF5>Fs</span><span class=cF0>-&gt;r8
<a name="l4084"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>_R9</span><span class=cF0> </span><span class=cF5>Fs</span><span class=cF0>-&gt;r9
<a name="l4085"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>_R10</span><span class=cF0> </span><span class=cF5>Fs</span><span class=cF0>-&gt;r10
<a name="l4086"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>_R11</span><span class=cF0> </span><span class=cF5>Fs</span><span class=cF0>-&gt;r11
<a name="l4087"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>_R12</span><span class=cF0> </span><span class=cF5>Fs</span><span class=cF0>-&gt;r12
<a name="l4088"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>_R13</span><span class=cF0> </span><span class=cF5>Fs</span><span class=cF0>-&gt;r13
<a name="l4089"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>_R14</span><span class=cF0> </span><span class=cF5>Fs</span><span class=cF0>-&gt;r14
<a name="l4090"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>_R15</span><span class=cF0> </span><span class=cF5>Fs</span><span class=cF0>-&gt;r15
<a name="l4091"></a>
<a name="l4092"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>&quot;MultiCore&quot;</span><span class=cF0>
<a name="l4093"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CPUf_RAN_A_TASK</span><span class=cF0> </span><span class=cFE>0</span><span class=cF0>
<a name="l4094"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CPUf_DYING_TASK_QUE</span><span class=cF0> </span><span class=cFE>1</span><span class=cF0>
<a name="l4095"></a>
<a name="l4096"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CCPU</span><span class=cF0> </span><span class=cF2>//The Gs segment reg points to current CCPU.</span><span class=cF0>
<a name="l4097"></a>{
<a name="l4098"></a> </span><span class=cF9>CCPU</span><span class=cF0> *addr; </span><span class=cF2>//Self-addressed ptr</span><span class=cF0>
<a name="l4099"></a> </span><span class=cF9>I64</span><span class=cF0> num, cpu_flags,
<a name="l4100"></a> startup_rip,
<a name="l4101"></a> idle_pt_hits;
<a name="l4102"></a> </span><span class=cF1>F64</span><span class=cF0> idle_factor;
<a name="l4103"></a> </span><span class=cF9>I64</span><span class=cF0> total_jiffies;
<a name="l4104"></a> </span><span class=cF9>CTask</span><span class=cF0> *executive_task, *idle_task;
<a name="l4105"></a> </span><span class=cF9>I64</span><span class=cF0> tr, </span><span class=cF2>//task reg</span><span class=cF0>
<a name="l4106"></a> swap_counter;
<a name="l4107"></a> </span><span class=cF1>U0</span><span class=cF0> (*profiler_timer_irq)(</span><span class=cF9>CTask</span><span class=cF0> *task);
<a name="l4108"></a> </span><span class=cF9>CTaskDying</span><span class=cF0> *next_dying, *last_dying;
<a name="l4109"></a> </span><span class=cF9>I64</span><span class=cF0> kill_jiffy;
<a name="l4110"></a> </span><span class=cF9>CTSS</span><span class=cF0> *tss;
<a name="l4111"></a> </span><span class=cF9>I64</span><span class=cF0> start_stack[</span><span class=cFE>16</span><span class=cF0>];
<a name="l4112"></a>#</span><span class=cF1>assert</span><span class=cF0> !($ &amp; </span><span class=cFE>7</span><span class=cF0>)
<a name="l4113"></a>};
<a name="l4114"></a>
<a name="l4115"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>&quot;Memory/Page Tables&quot;</span><span class=cF0>
<a name="l4116"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>MEM_MIN_MEG</span><span class=cF0> </span><span class=cFE>256</span><span class=cF0> </span><span class=cF2>//256 Meg minimum.</span><span class=cF0>
<a name="l4117"></a>
<a name="l4118"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SYS_FIXED_AREA</span><span class=cF0> </span><span class=cFE>0x100000</span><span class=cF0>
<a name="l4119"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SYS_16MEG_AREA_LIMIT</span><span class=cF0> </span><span class=cFE>0x1000000</span><span class=cF0>
<a name="l4120"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CSysFixedArea</span><span class=cF0>
<a name="l4121"></a>{
<a name="l4122"></a> </span><span class=cF9>CFPU</span><span class=cF0> init_fpu_mmx;
<a name="l4123"></a> </span><span class=cF9>CCPU</span><span class=cF0> boot_cpu;
<a name="l4124"></a> </span><span class=cF9>CTask</span><span class=cF0> system;
<a name="l4125"></a> </span><span class=cF9>CBlkPool</span><span class=cF0> </span><span class=cFB>sys_code_bp</span><span class=cF0>;
<a name="l4126"></a> </span><span class=cF9>CHeapCtrl</span><span class=cF0> system_hc;
<a name="l4127"></a> $ = ($ + </span><span class=cFE>0x1000</span><span class=cF0> - </span><span class=cFE>1</span><span class=cF0>) &amp; -</span><span class=cFE>0x1000</span><span class=cF0>;
<a name="l4128"></a>};
<a name="l4129"></a>
<a name="l4130"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>&quot;Char&quot;</span><span class=cF0>
<a name="l4131"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CH_CTRLA</span><span class=cF0> </span><span class=cFE>0x01</span><span class=cF0>
<a name="l4132"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CH_CTRLB</span><span class=cF0> </span><span class=cFE>0x02</span><span class=cF0>
<a name="l4133"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CH_CTRLC</span><span class=cF0> </span><span class=cFE>0x03</span><span class=cF0>
<a name="l4134"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CH_CTRLD</span><span class=cF0> </span><span class=cFE>0x04</span><span class=cF0>
<a name="l4135"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CH_CTRLE</span><span class=cF0> </span><span class=cFE>0x05</span><span class=cF0>
<a name="l4136"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CH_CTRLF</span><span class=cF0> </span><span class=cFE>0x06</span><span class=cF0>
<a name="l4137"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CH_CTRLG</span><span class=cF0> </span><span class=cFE>0x07</span><span class=cF0>
<a name="l4138"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CH_CTRLH</span><span class=cF0> </span><span class=cFE>0x08</span><span class=cF0>
<a name="l4139"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CH_CTRLI</span><span class=cF0> </span><span class=cFE>0x09</span><span class=cF0>
<a name="l4140"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CH_CTRLJ</span><span class=cF0> </span><span class=cFE>0x0A</span><span class=cF0>
<a name="l4141"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CH_CTRLK</span><span class=cF0> </span><span class=cFE>0x0B</span><span class=cF0>
<a name="l4142"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CH_CTRLL</span><span class=cF0> </span><span class=cFE>0x0C</span><span class=cF0>
<a name="l4143"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CH_CTRLM</span><span class=cF0> </span><span class=cFE>0x0D</span><span class=cF0>
<a name="l4144"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CH_CTRLN</span><span class=cF0> </span><span class=cFE>0x0E</span><span class=cF0>
<a name="l4145"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CH_CTRLO</span><span class=cF0> </span><span class=cFE>0x0F</span><span class=cF0>
<a name="l4146"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CH_CTRLP</span><span class=cF0> </span><span class=cFE>0x10</span><span class=cF0>
<a name="l4147"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CH_CTRLQ</span><span class=cF0> </span><span class=cFE>0x11</span><span class=cF0>
<a name="l4148"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CH_CTRLR</span><span class=cF0> </span><span class=cFE>0x12</span><span class=cF0>
<a name="l4149"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CH_CTRLS</span><span class=cF0> </span><span class=cFE>0x13</span><span class=cF0>
<a name="l4150"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CH_CTRLT</span><span class=cF0> </span><span class=cFE>0x14</span><span class=cF0>
<a name="l4151"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CH_CTRLU</span><span class=cF0> </span><span class=cFE>0x15</span><span class=cF0>
<a name="l4152"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CH_CTRLV</span><span class=cF0> </span><span class=cFE>0x16</span><span class=cF0>
<a name="l4153"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CH_CTRLW</span><span class=cF0> </span><span class=cFE>0x17</span><span class=cF0>
<a name="l4154"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CH_CTRLX</span><span class=cF0> </span><span class=cFE>0x18</span><span class=cF0>
<a name="l4155"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CH_CTRLY</span><span class=cF0> </span><span class=cFE>0x19</span><span class=cF0>
<a name="l4156"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CH_CTRLZ</span><span class=cF0> </span><span class=cFE>0x1A</span><span class=cF0>
<a name="l4157"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CH_CURSOR</span><span class=cF0> </span><span class=cFE>0x05</span><span class=cF0>
<a name="l4158"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CH_BACKSPACE</span><span class=cF0> </span><span class=cFE>0x08</span><span class=cF0>
<a name="l4159"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CH_ESC</span><span class=cF0> </span><span class=cFE>0x1B</span><span class=cF0>
<a name="l4160"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CH_SHIFT_ESC</span><span class=cF0> </span><span class=cFE>0x1C</span><span class=cF0>
<a name="l4161"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CH_SPACE</span><span class=cF0> </span><span class=cFE>0x20</span><span class=cF0>
<a name="l4162"></a>
<a name="l4163"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ST_ERR_ST</span><span class=cF0> </span><span class=cF6>&quot;$RED$$BK,1$ERROR:$FG$$BK,0$ &quot;</span><span class=cF0>
<a name="l4164"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ST_WARN_ST</span><span class=cF0> </span><span class=cF6>&quot;$LTRED$$BK,1$WARNING:$FG$$BK,0$ &quot;</span><span class=cF0>
<a name="l4165"></a>
<a name="l4166"></a></span><span class=cF2>//Scan code flags</span><span class=cF0>
<a name="l4167"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SCf_E0_PREFIX</span><span class=cF0> </span><span class=cFE>7</span><span class=cF0>
<a name="l4168"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SCf_KEY_UP</span><span class=cF0> </span><span class=cFE>8</span><span class=cF0>
<a name="l4169"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SCf_SHIFT</span><span class=cF0> </span><span class=cFE>9</span><span class=cF0>
<a name="l4170"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SCf_CTRL</span><span class=cF0> </span><span class=cFE>10</span><span class=cF0>
<a name="l4171"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SCf_ALT</span><span class=cF0> </span><span class=cFE>11</span><span class=cF0>
<a name="l4172"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SCf_CAPS</span><span class=cF0> </span><span class=cFE>12</span><span class=cF0>
<a name="l4173"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SCf_NUM</span><span class=cF0> </span><span class=cFE>13</span><span class=cF0>
<a name="l4174"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SCf_SCROLL</span><span class=cF0> </span><span class=cFE>14</span><span class=cF0>
<a name="l4175"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SCf_NEW_KEY</span><span class=cF0> </span><span class=cFE>15</span><span class=cF0>
<a name="l4176"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SCf_MS_L_DOWN</span><span class=cF0> </span><span class=cFE>16</span><span class=cF0>
<a name="l4177"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SCf_MS_R_DOWN</span><span class=cF0> </span><span class=cFE>17</span><span class=cF0>
<a name="l4178"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SCf_DELETE</span><span class=cF0> </span><span class=cFE>18</span><span class=cF0>
<a name="l4179"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SCf_INS</span><span class=cF0> </span><span class=cFE>19</span><span class=cF0>
<a name="l4180"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SCf_NO_SHIFT</span><span class=cF0> </span><span class=cFE>30</span><span class=cF0>
<a name="l4181"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SCf_KEY_DESC</span><span class=cF0> </span><span class=cFE>31</span><span class=cF0>
<a name="l4182"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SCF_E0_PREFIX</span><span class=cF0> (</span><span class=cFE>1</span><span class=cF0> &lt;&lt; </span><span class=cF3>SCf_E0_PREFIX</span><span class=cF0>)
<a name="l4183"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SCF_KEY_UP</span><span class=cF0> (</span><span class=cFE>1</span><span class=cF0> &lt;&lt; </span><span class=cF3>SCf_KEY_UP</span><span class=cF0>)
<a name="l4184"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SCF_SHIFT</span><span class=cF0> (</span><span class=cFE>1</span><span class=cF0> &lt;&lt; </span><span class=cF3>SCf_SHIFT</span><span class=cF0>)
<a name="l4185"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SCF_CTRL</span><span class=cF0> (</span><span class=cFE>1</span><span class=cF0> &lt;&lt; </span><span class=cF3>SCf_CTRL</span><span class=cF0>)
<a name="l4186"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SCF_ALT</span><span class=cF0> (</span><span class=cFE>1</span><span class=cF0> &lt;&lt; </span><span class=cF3>SCf_ALT</span><span class=cF0>)
<a name="l4187"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SCF_CAPS</span><span class=cF0> (</span><span class=cFE>1</span><span class=cF0> &lt;&lt; </span><span class=cF3>SCf_CAPS</span><span class=cF0>)
<a name="l4188"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SCF_NUM</span><span class=cF0> (</span><span class=cFE>1</span><span class=cF0> &lt;&lt; </span><span class=cF3>SCf_NUM</span><span class=cF0>)
<a name="l4189"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SCF_SCROLL</span><span class=cF0> (</span><span class=cFE>1</span><span class=cF0> &lt;&lt; </span><span class=cF3>SCf_SCROLL</span><span class=cF0>)
<a name="l4190"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SCF_NEW_KEY</span><span class=cF0> (</span><span class=cFE>1</span><span class=cF0> &lt;&lt; </span><span class=cF3>SCf_NEW_KEY</span><span class=cF0>)
<a name="l4191"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SCF_MS_L_DOWN</span><span class=cF0> (</span><span class=cFE>1</span><span class=cF0> &lt;&lt; </span><span class=cF3>SCf_MS_L_DOWN</span><span class=cF0>)
<a name="l4192"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SCF_MS_R_DOWN</span><span class=cF0> (</span><span class=cFE>1</span><span class=cF0> &lt;&lt; </span><span class=cF3>SCf_MS_R_DOWN</span><span class=cF0>)
<a name="l4193"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SCF_DELETE</span><span class=cF0> (</span><span class=cFE>1</span><span class=cF0> &lt;&lt; </span><span class=cF3>SCf_DELETE</span><span class=cF0>)
<a name="l4194"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SCF_INS</span><span class=cF0> (</span><span class=cFE>1</span><span class=cF0> &lt;&lt; </span><span class=cF3>SCf_INS</span><span class=cF0>)
<a name="l4195"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SCF_NO_SHIFT</span><span class=cF0> (</span><span class=cFE>1</span><span class=cF0> &lt;&lt; </span><span class=cF3>SCf_NO_SHIFT</span><span class=cF0>)
<a name="l4196"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SCF_KEY_DESC</span><span class=cF0> (</span><span class=cFE>1</span><span class=cF0> &lt;&lt; </span><span class=cF3>SCf_KEY_DESC</span><span class=cF0>)
<a name="l4197"></a>
<a name="l4198"></a></span><span class=cF2>//ZealOS places a 1 in bit 7 for</span><span class=cF0>
<a name="l4199"></a></span><span class=cF2>//keys with an E0 prefix.</span><span class=cF0>
<a name="l4200"></a></span><span class=cF2>//See </span><a href="https://zeal-operating-system.github.io/ZealOS/Doc/CharOverview.DD.html#l1"><span class=cF4>::/Doc/CharOverview.DD</span></a><span class=cF2> and </span><a href="https://zeal-operating-system.github.io/ZealOS/Kernel/SerialDev/Keyboard.CC.html#l511"><span class=cF4>KbdHandler</span></a><span class=cF2>().</span><span class=cF0>
<a name="l4201"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SC_ESC</span><span class=cF0> </span><span class=cFE>0x01</span><span class=cF0>
<a name="l4202"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SC_BACKSPACE</span><span class=cF0> </span><span class=cFE>0x0E</span><span class=cF0>
<a name="l4203"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SC_TAB</span><span class=cF0> </span><span class=cFE>0x0F</span><span class=cF0>
<a name="l4204"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SC_ENTER</span><span class=cF0> </span><span class=cFE>0x1C</span><span class=cF0>
<a name="l4205"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SC_SHIFT</span><span class=cF0> </span><span class=cFE>0x2A</span><span class=cF0>
<a name="l4206"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SC_CTRL</span><span class=cF0> </span><span class=cFE>0x1D</span><span class=cF0>
<a name="l4207"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SC_ALT</span><span class=cF0> </span><span class=cFE>0x38</span><span class=cF0>
<a name="l4208"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SC_CAPS</span><span class=cF0> </span><span class=cFE>0x3A</span><span class=cF0>
<a name="l4209"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SC_NUM</span><span class=cF0> </span><span class=cFE>0x45</span><span class=cF0>
<a name="l4210"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SC_SCROLL</span><span class=cF0> </span><span class=cFE>0x46</span><span class=cF0>
<a name="l4211"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SC_CURSOR_UP</span><span class=cF0> </span><span class=cFE>0x48</span><span class=cF0>
<a name="l4212"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SC_CURSOR_DOWN</span><span class=cF0> </span><span class=cFE>0x50</span><span class=cF0>
<a name="l4213"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SC_CURSOR_LEFT</span><span class=cF0> </span><span class=cFE>0x4B</span><span class=cF0>
<a name="l4214"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SC_CURSOR_RIGHT</span><span class=cF0> </span><span class=cFE>0x4D</span><span class=cF0>
<a name="l4215"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SC_PAGE_UP</span><span class=cF0> </span><span class=cFE>0x49</span><span class=cF0>
<a name="l4216"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SC_PAGE_DOWN</span><span class=cF0> </span><span class=cFE>0x51</span><span class=cF0>
<a name="l4217"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SC_HOME</span><span class=cF0> </span><span class=cFE>0x47</span><span class=cF0>
<a name="l4218"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SC_END</span><span class=cF0> </span><span class=cFE>0x4F</span><span class=cF0>
<a name="l4219"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SC_INS</span><span class=cF0> </span><span class=cFE>0x52</span><span class=cF0>
<a name="l4220"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SC_DELETE</span><span class=cF0> </span><span class=cFE>0x53</span><span class=cF0>
<a name="l4221"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SC_F1</span><span class=cF0> </span><span class=cFE>0x3B</span><span class=cF0>
<a name="l4222"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SC_F2</span><span class=cF0> </span><span class=cFE>0x3C</span><span class=cF0>
<a name="l4223"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SC_F3</span><span class=cF0> </span><span class=cFE>0x3D</span><span class=cF0>
<a name="l4224"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SC_F4</span><span class=cF0> </span><span class=cFE>0x3E</span><span class=cF0>
<a name="l4225"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SC_F5</span><span class=cF0> </span><span class=cFE>0x3F</span><span class=cF0>
<a name="l4226"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SC_F6</span><span class=cF0> </span><span class=cFE>0x40</span><span class=cF0>
<a name="l4227"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SC_F7</span><span class=cF0> </span><span class=cFE>0x41</span><span class=cF0>
<a name="l4228"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SC_F8</span><span class=cF0> </span><span class=cFE>0x42</span><span class=cF0>
<a name="l4229"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SC_F9</span><span class=cF0> </span><span class=cFE>0x43</span><span class=cF0>
<a name="l4230"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SC_F10</span><span class=cF0> </span><span class=cFE>0x44</span><span class=cF0>
<a name="l4231"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SC_F11</span><span class=cF0> </span><span class=cFE>0x57</span><span class=cF0>
<a name="l4232"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SC_F12</span><span class=cF0> </span><span class=cFE>0x58</span><span class=cF0>
<a name="l4233"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SC_PAUSE</span><span class=cF0> </span><span class=cFE>0x61</span><span class=cF0>
<a name="l4234"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SC_GUI</span><span class=cF0> </span><span class=cFE>0xDB</span><span class=cF0>
<a name="l4235"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SC_PRINTSCREEN1</span><span class=cF0> </span><span class=cFE>0xAA</span><span class=cF0>
<a name="l4236"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SC_PRINTSCREEN2</span><span class=cF0> </span><span class=cFE>0xB7</span><span class=cF0>
<a name="l4237"></a>
<a name="l4238"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>&quot;Char;Debugging/Raw Output;TextBase Layer/Char&quot;</span><span class=cF0>
<a name="l4239"></a></span><span class=cF2>//text.raw_flags</span><span class=cF0>
<a name="l4240"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RAWF_IN_DOLLAR</span><span class=cF0> </span><span class=cFE>1</span><span class=cF0>
<a name="l4241"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RAWF_LAST_DOLLAR</span><span class=cF0> </span><span class=cFE>2</span><span class=cF0>
<a name="l4242"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RAWF_SHOW_DOLLAR</span><span class=cF0> </span><span class=cFE>4</span><span class=cF0>
<a name="l4243"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RAWF_SCROLL</span><span class=cF0> </span><span class=cFE>8</span><span class=cF0>
<a name="l4244"></a>
<a name="l4245"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CTextGlobals</span><span class=cF0>
<a name="l4246"></a>{
<a name="l4247"></a> </span><span class=cF9>I64</span><span class=cF0> raw_col, raw_flags;
<a name="l4248"></a> </span><span class=cF9>U32</span><span class=cF0> *raw_screen, *fb_alias;
<a name="l4249"></a> </span><span class=cF9>I64</span><span class=cF0> rows, cols; </span><span class=cF2>//Use TEXT_ROWS,TEXT_COLS</span><span class=cF0>
<a name="l4250"></a> </span><span class=cF9>U64</span><span class=cF0> *font, *aux_font, screen_size, buffer_size;
<a name="l4251"></a> </span><span class=cF1>U8</span><span class=cF0> *vga_alias;
<a name="l4252"></a> </span><span class=cF1>U8</span><span class=cF0> border_chars[</span><span class=cFE>16</span><span class=cF0>];
<a name="l4253"></a> </span><span class=cF1>Bool</span><span class=cF0> is_fb_busy;
<a name="l4254"></a>};
<a name="l4255"></a>
<a name="l4256"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>FONT_WIDTH</span><span class=cF0> </span><span class=cFE>8</span><span class=cF0>
<a name="l4257"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>FONT_HEIGHT</span><span class=cF0> </span><span class=cFE>8</span><span class=cF0>
<a name="l4258"></a>
<a name="l4259"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>&quot;Graphics&quot;</span><span class=cF0>
<a name="l4260"></a></span><span class=cF2>//z-vals less than zero are in front of screen and not drawn.</span><span class=cF0>
<a name="l4261"></a></span><span class=cF2>//we want to shift all Z-vals into a drawable range.</span><span class=cF0>
<a name="l4262"></a></span><span class=cF2>//GR_Z_ALL is set to half of the Z-range which is an I32.</span><span class=cF0>
<a name="l4263"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>GR_Z_ALL</span><span class=cF0> (</span><span class=cF3>I32_MAX</span><span class=cF0>/</span><span class=cFE>2</span><span class=cF0>)
<a name="l4264"></a>
<a name="l4265"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>&quot;Graphics/Device Contexts&quot;</span><span class=cF0>
<a name="l4266"></a></span><span class=cF2>//Low 8 bits reserved for flags that go into saved bitmaps</span><span class=cF0>
<a name="l4267"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DCF_PALETTE</span><span class=cF0> </span><span class=cFE>1</span><span class=cF0>
<a name="l4268"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DCF_NO_TRANSPARENTS</span><span class=cF0> </span><span class=cFE>2</span><span class=cF0> </span><span class=cF2>//Can be used to optimized </span><a href="https://zeal-operating-system.github.io/ZealOS/System/Gr/GrBitMap.CC.html#l93"><span class=cF4>GrBlot</span></a><span class=cF2>().</span><span class=cF0>
<a name="l4269"></a>
<a name="l4270"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DCF_TRANSFORMATION</span><span class=cF0> </span><span class=cFE>0x100</span><span class=cF0>
<a name="l4271"></a>
<a name="l4272"></a></span><span class=cF2>//See </span><a href="https://zeal-operating-system.github.io/ZealOS/System/Gr/GrMath.CC.html#l236"><span class=cF4>DCSymmetrySet</span></a><span class=cF2>() or </span><a href="https://zeal-operating-system.github.io/ZealOS/System/Gr/GrMath.CC.html#l259"><span class=cF4>DCSymmetry3Set</span></a><span class=cF2>()</span><span class=cF0>
<a name="l4273"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DCF_SYMMETRY</span><span class=cF0> </span><span class=cFE>0x200</span><span class=cF0>
<a name="l4274"></a>
<a name="l4275"></a></span><span class=cF2>//Must be used with DCF_SYMMETRY set also.</span><span class=cF0>
<a name="l4276"></a></span><span class=cF2>//See </span><a href="https://zeal-operating-system.github.io/ZealOS/Demo/Games/BigGuns.CC.html#l1"><span class=cF4>::/Demo/Games/BigGuns.CC</span></a><span class=cF0>
<a name="l4277"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DCF_JUST_MIRROR</span><span class=cF0> </span><span class=cFE>0x400</span><span class=cF0>
<a name="l4278"></a>
<a name="l4279"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DCF_LOCATE_NEAREST</span><span class=cF0> </span><span class=cFE>0x800</span><span class=cF0>
<a name="l4280"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DCF_DONT_DRAW</span><span class=cF0> </span><span class=cFE>0x1000</span><span class=cF0>
<a name="l4281"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DCF_ALIAS</span><span class=cF0> </span><span class=cFE>0x2000</span><span class=cF0>
<a name="l4282"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DCF_SCREEN_BITMAP</span><span class=cF0> </span><span class=cFE>0x4000</span><span class=cF0>
<a name="l4283"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DCF_FILL_NOT_COLOR</span><span class=cF0> </span><span class=cFE>0x8000</span><span class=cF0>
<a name="l4284"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DCF_RECORD_EXTENTS</span><span class=cF0> </span><span class=cFE>0x10000</span><span class=cF0>
<a name="l4285"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DCF_ON_TOP</span><span class=cF0> </span><span class=cFE>0x20000</span><span class=cF0>
<a name="l4286"></a>
<a name="l4287"></a></span><span class=cF2>//</span><a href="https://zeal-operating-system.github.io/ZealOS/System/Gr/GrDC.CC.html#l318"><span class=cF4>DCSave</span></a><span class=cF2>() flags.</span><span class=cF0>
<a name="l4288"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DCSF_PALETTE_GET</span><span class=cF0> </span><span class=cFE>1</span><span class=cF0>
<a name="l4289"></a>
<a name="l4290"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DCS_SIGNATURE_VAL</span><span class=cF0> </span><span class=cF6>'DvCS'</span><span class=cF0>
<a name="l4291"></a>
<a name="l4292"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CGrSym</span><span class=cF0>
<a name="l4293"></a>{
<a name="l4294"></a> </span><span class=cF9>I32</span><span class=cF0> sx, sy, sz, pad;
<a name="l4295"></a></span><span class=cF2>//Normal of symmetry plane</span><span class=cF0>
<a name="l4296"></a> </span><span class=cF9>I64</span><span class=cF0> snx, sny, snz;
<a name="l4297"></a>};
<a name="l4298"></a>
<a name="l4299"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CDC</span><span class=cF0>
<a name="l4300"></a>{
<a name="l4301"></a> </span><span class=cF1>U0</span><span class=cF0> </span><span class=cF1>start</span><span class=cF0>;
<a name="l4302"></a> </span><span class=cF9>CDate</span><span class=cF0> cdt;
<a name="l4303"></a> </span><span class=cF9>I32</span><span class=cF0> x0, y0,
<a name="l4304"></a> width, width_internal,
<a name="l4305"></a> height,
<a name="l4306"></a> flags;
<a name="l4307"></a> </span><span class=cF1>U0</span><span class=cF0> </span><span class=cF1>end</span><span class=cF0>;
<a name="l4308"></a> </span><span class=cF9>CBGR24</span><span class=cF0> palette[</span><span class=cF3>COLORS_NUM</span><span class=cF0>];
<a name="l4309"></a>
<a name="l4310"></a> </span><span class=cF2>//public (Change directly)</span><span class=cF0>
<a name="l4311"></a> </span><span class=cF9>CColorROPU32</span><span class=cF0> color,
<a name="l4312"></a> bkcolor, </span><span class=cF2>//Set for use with </span><a href="https://zeal-operating-system.github.io/ZealOS/Kernel/KernelA.HH.html#l3602"><span class=cF4>ROP_COLLISION</span></a><span class=cF0>
<a name="l4313"></a> color2; </span><span class=cF2>//Internally used for </span><a href="https://zeal-operating-system.github.io/ZealOS/System/Gr/GrPrimatives.CC.html#l279"><span class=cF4>GrFloodFill</span></a><span class=cF2>()</span><span class=cF0>
<a name="l4314"></a> </span><span class=cF9>CD3I32</span><span class=cF0> ls; </span><span class=cF2>//Light source (should be normalized to 65536).</span><span class=cF0>
<a name="l4315"></a>
<a name="l4316"></a> </span><span class=cF2>//dither_probability_u16 is basically a U16.</span><span class=cF0>
<a name="l4317"></a> </span><span class=cF2>//It is activated by </span><a href="https://zeal-operating-system.github.io/ZealOS/Kernel/KernelA.HH.html#l3612"><span class=cF4>ROPF_PROBABILITY_DITHER</span></a><span class=cF2>.</span><span class=cF0>
<a name="l4318"></a> </span><span class=cF2>//0x0000 =100% color.c0</span><span class=cF0>
<a name="l4319"></a> </span><span class=cF2>//0x8000 =50% color.c0 </span><span class=cF0> </span><span class=cF2>50% color.c1</span><span class=cF0>
<a name="l4320"></a> </span><span class=cF2>//0x10000=100% color.c1</span><span class=cF0>
<a name="l4321"></a> </span><span class=cF2>//See </span><a href="https://zeal-operating-system.github.io/ZealOS/Demo/Graphics/SunMoon.CC.html#l1"><span class=cF4>::/Demo/Graphics/SunMoon.CC</span></a><span class=cF2> and</span><span class=cF0> </span><a href="https://zeal-operating-system.github.io/ZealOS/Demo/Graphics/Shading.CC.html#l1"><span class=cF4>::/Demo/Graphics/Shading.CC</span></a><span class=cF2>.</span><span class=cF0>
<a name="l4322"></a> </span><span class=cF9>U64</span><span class=cF0> dither_probability_u16;
<a name="l4323"></a>
<a name="l4324"></a> </span><span class=cF9>CDC</span><span class=cF0> *brush;
<a name="l4325"></a>
<a name="l4326"></a> </span><span class=cF2>//Set with </span><a href="https://zeal-operating-system.github.io/ZealOS/System/Gr/GrDC.CC.html#l51"><span class=cF4>DCMat4x4Set</span></a><span class=cF2>(). </span><a href="https://zeal-operating-system.github.io/ZealOS/Kernel/Memory/MAllocFree.CC.html#l387"><span class=cF4>Free</span></a><span class=cF2>() before setting.</span><span class=cF0>
<a name="l4327"></a> </span><span class=cF9>I64</span><span class=cF0> *r, </span><span class=cF2>//rotation matrix of quads decimal in lo</span><span class=cF0>
<a name="l4328"></a> r_norm; </span><span class=cF2>//shifted 32 bits.</span><span class=cF0> </span><span class=cF2>Used for scaling thick</span><span class=cF0>
<a name="l4329"></a>
<a name="l4330"></a> </span><span class=cF2>//public (Change directly)</span><span class=cF0>
<a name="l4331"></a> </span><span class=cF9>I32</span><span class=cF0> x, y, z,
<a name="l4332"></a> thick;
<a name="l4333"></a>
<a name="l4334"></a> </span><span class=cF2>//Can be changed from the default </span><a href="https://zeal-operating-system.github.io/ZealOS/System/Gr/GrDC.CC.html#l18"><span class=cF4>DCTransform</span></a><span class=cF2>()</span><span class=cF0>
<a name="l4335"></a> </span><span class=cF1>U0</span><span class=cF0> (*transform)(</span><span class=cF9>CDC</span><span class=cF0> *dc, </span><span class=cF9>I64</span><span class=cF0> *x, </span><span class=cF9>I64</span><span class=cF0> *y, </span><span class=cF9>I64</span><span class=cF0> *z);
<a name="l4336"></a>
<a name="l4337"></a> </span><span class=cF2>//Can be changed from the default </span><a href="https://zeal-operating-system.github.io/ZealOS/System/Gr/GrDC.CC.html#l62"><span class=cF4>DCLighting</span></a><span class=cF2>()</span><span class=cF0>
<a name="l4338"></a> </span><span class=cF1>U0</span><span class=cF0> (*lighting)(</span><span class=cF9>CDC</span><span class=cF0> *dc, </span><span class=cF9>CD3I32</span><span class=cF0> *p1, </span><span class=cF9>CD3I32</span><span class=cF0> *p2, </span><span class=cF9>CD3I32</span><span class=cF0> *p3, </span><span class=cF9>CColorROPU32</span><span class=cF0> color);
<a name="l4339"></a>
<a name="l4340"></a> </span><span class=cF2>//Set by </span><a href="https://zeal-operating-system.github.io/ZealOS/System/Gr/GrMath.CC.html#l236"><span class=cF4>DCSymmetrySet</span></a><span class=cF2>() or </span><a href="https://zeal-operating-system.github.io/ZealOS/System/Gr/GrMath.CC.html#l259"><span class=cF4>DCSymmetry3Set</span></a><span class=cF2>()</span><span class=cF0>
<a name="l4341"></a> </span><span class=cF9>CGrSym</span><span class=cF0> sym;
<a name="l4342"></a>
<a name="l4343"></a> </span><span class=cF9>I32</span><span class=cF0> cur_x, cur_y, cur_z, pad;
<a name="l4344"></a> </span><span class=cF9>I64</span><span class=cF0> collision_count;
<a name="l4345"></a>
<a name="l4346"></a> </span><span class=cF9>I64</span><span class=cF0> nearest_dist,
<a name="l4347"></a> min_x, max_x, min_y, max_y; </span><span class=cF2>//Set by </span><a href="https://zeal-operating-system.github.io/ZealOS/Kernel/KernelA.HH.html#l4284"><span class=cF4>DCF_RECORD_EXTENTS</span></a><span class=cF2> (screen coordinates)</span><span class=cF0>
<a name="l4348"></a>
<a name="l4349"></a> </span><span class=cF9>U32</span><span class=cF0> dc_signature, pad;
<a name="l4350"></a> </span><span class=cF9>CTask</span><span class=cF0> *mem_task, *win_task;
<a name="l4351"></a> </span><span class=cF9>CDC</span><span class=cF0> *alias;
<a name="l4352"></a> </span><span class=cF1>U8</span><span class=cF0> *body;
<a name="l4353"></a>
<a name="l4354"></a> </span><span class=cF2>//Set by </span><a href="https://zeal-operating-system.github.io/ZealOS/System/Gr/GrDC.CC.html#l260"><span class=cF4>DCDepthBufAlloc</span></a><span class=cF2>()</span><span class=cF0>
<a name="l4355"></a> </span><span class=cF9>I32</span><span class=cF0> *depth_buf;
<a name="l4356"></a> </span><span class=cF9>I64</span><span class=cF0> db_z; </span><span class=cF2>//private</span><span class=cF0>
<a name="l4357"></a>#</span><span class=cF1>assert</span><span class=cF0> !($ &amp; </span><span class=cFE>7</span><span class=cF0>)
<a name="l4358"></a>};
<a name="l4359"></a>
<a name="l4360"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>&quot;Devices&quot;</span><span class=cF0>
<a name="l4361"></a></span><span class=cF2>//VGA Memory</span><span class=cF0>
<a name="l4362"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>VGAM_GRAPHICS</span><span class=cF0> </span><span class=cFE>0xA0000</span><span class=cF0>
<a name="l4363"></a>
<a name="l4364"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF6>&quot;Char/Input;StdIn&quot;</span><span class=cF0>
<a name="l4365"></a></span><span class=cF2>//StrGet flags</span><span class=cF0>
<a name="l4366"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SGF_SHIFT_ESC_EXIT</span><span class=cF0> </span><span class=cFE>1</span><span class=cF0> </span><span class=cF2>//This kills task on &lt;SHIFT-ESC&gt;</span><span class=cF0>
<a name="l4367"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SGF_WITH_NEW_LINE</span><span class=cF0> </span><span class=cFE>2</span><span class=cF0>
<a name="l4368"></a>
<a name="l4369"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF6>&quot;Char/Operations&quot;</span><span class=cF0>
<a name="l4370"></a></span><span class=cF2>//Flags for StrUtil and MStrUtil</span><span class=cF0>
<a name="l4371"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SUF_REM_CTRL_CHARS</span><span class=cF0> </span><span class=cFE>0x001</span><span class=cF0>
<a name="l4372"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SUF_REM_LEADING</span><span class=cF0> </span><span class=cFE>0x002</span><span class=cF0>
<a name="l4373"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SUF_REM_TRAILING</span><span class=cF0> </span><span class=cFE>0x004</span><span class=cF0>
<a name="l4374"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SUF_REM_SPACES</span><span class=cF0> </span><span class=cFE>0x008</span><span class=cF0>
<a name="l4375"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SUF_SINGLE_SPACE</span><span class=cF0> </span><span class=cFE>0x010</span><span class=cF0>
<a name="l4376"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SUF_TO_UPPER</span><span class=cF0> </span><span class=cFE>0x020</span><span class=cF0>
<a name="l4377"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SUF_TO_LOWER</span><span class=cF0> </span><span class=cFE>0x040</span><span class=cF0>
<a name="l4378"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SUF_S2T</span><span class=cF0> </span><span class=cFE>0x080</span><span class=cF0>
<a name="l4379"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SUF_T2S</span><span class=cF0> </span><span class=cFE>0x100</span><span class=cF0> </span><span class=cF2>// Only works with MStrUtil</span><span class=cF0>
<a name="l4380"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SUF_SCALE_INDENT</span><span class=cF0> </span><span class=cFE>0x200</span><span class=cF0>
<a name="l4381"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SUF_SAFE_DOLLAR</span><span class=cF0> </span><span class=cFE>0x400</span><span class=cF0>
<a name="l4382"></a>
<a name="l4383"></a></span><span class=cF2>//Flags for StrFind</span><span class=cF0>
<a name="l4384"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SFF_IGNORE_CASE</span><span class=cF0> </span><span class=cFE>1</span><span class=cF0>
<a name="l4385"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SFF_WHOLE_LABELS_BEFORE</span><span class=cF0> </span><span class=cFE>2</span><span class=cF0>
<a name="l4386"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SFF_WHOLE_LABELS_AFTER</span><span class=cF0> </span><span class=cFE>4</span><span class=cF0>
<a name="l4387"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SFG_WHOLE_LABELS</span><span class=cF0> (</span><span class=cF3>SFF_WHOLE_LABELS_BEFORE</span><span class=cF0> | </span><span class=cF3>SFF_WHOLE_LABELS_AFTER</span><span class=cF0>)
<a name="l4388"></a>
<a name="l4389"></a></span><span class=cF2>//Flags for ListMatch</span><span class=cF0>
<a name="l4390"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>LMF_IGNORE_CASE</span><span class=cF0> </span><span class=cFE>1</span><span class=cF0>
<a name="l4391"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>LMF_EXACT</span><span class=cF0> </span><span class=cFE>2</span><span class=cF0>
<a name="l4392"></a>
<a name="l4393"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>&quot;Keyboard Devices/System&quot;</span><span class=cF0>
<a name="l4394"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>KDF_HAS_DESCS</span><span class=cF0> </span><span class=cFE>1</span><span class=cF0>
<a name="l4395"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CKeyDevEntry</span><span class=cF0>
<a name="l4396"></a>{
<a name="l4397"></a> </span><span class=cF9>CKeyDevEntry</span><span class=cF0> *next, *last;
<a name="l4398"></a> </span><span class=cF9>I64</span><span class=cF0> priority, flags;
<a name="l4399"></a> </span><span class=cF1>Bool</span><span class=cF0> (*put_key)(</span><span class=cF9>I64</span><span class=cF0> ch, </span><span class=cF9>I64</span><span class=cF0> sc);
<a name="l4400"></a> </span><span class=cF1>Bool</span><span class=cF0> (*put_s)(</span><span class=cF1>U8</span><span class=cF0> *st);
<a name="l4401"></a>};
<a name="l4402"></a>
<a name="l4403"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CKeyDevGlobals</span><span class=cF0>
<a name="l4404"></a>{
<a name="l4405"></a> </span><span class=cF9>CKeyDevEntry</span><span class=cF0> put_key_head;
<a name="l4406"></a> </span><span class=cF1>U0</span><span class=cF0> (**fp_ctrl_alt_cbs)(</span><span class=cF9>I64</span><span class=cF0> sc);
<a name="l4407"></a> </span><span class=cF9>I64</span><span class=cF0> ctrl_alt_in_irq_flags,
<a name="l4408"></a> **ctrl_alt_ret_addr; </span><span class=cF2>//addr of ret addr on stack in kbd irq</span><span class=cF0>
<a name="l4409"></a> </span><span class=cF1>U8</span><span class=cF0> **ctrl_alt_no_shift_descs, **ctrl_alt_shift_descs,
<a name="l4410"></a> desc[</span><span class=cF3>STR_LEN</span><span class=cF0>],
<a name="l4411"></a> *handler;
<a name="l4412"></a>};
<a name="l4413"></a>
<a name="l4414"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>&quot;Sound&quot;</span><span class=cF0>
<a name="l4415"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>PCSPKR</span><span class=cF0> </span><span class=cFE>0x61</span><span class=cF0>
<a name="l4416"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>&quot;ScreenCast;Sound/AU Files&quot;</span><span class=cF0>
<a name="l4417"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CAUData</span><span class=cF0>
<a name="l4418"></a>{</span><span class=cF2>//Format of AU files</span><span class=cF0>
<a name="l4419"></a> </span><span class=cF9>CDate</span><span class=cF0> cdt;
<a name="l4420"></a> </span><span class=cF1>I8</span><span class=cF0> ona;
<a name="l4421"></a>};
<a name="l4422"></a>
<a name="l4423"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CSoundData</span><span class=cF0>
<a name="l4424"></a>{</span><span class=cF2>//Format recorded in mem</span><span class=cF0>
<a name="l4425"></a> </span><span class=cF9>CSoundData</span><span class=cF0> *next, *last;
<a name="l4426"></a> </span><span class=cF1>F64</span><span class=cF0> </span><span class=cF5>tS</span><span class=cF0>;
<a name="l4427"></a> </span><span class=cF1>I8</span><span class=cF0> ona;
<a name="l4428"></a>};
<a name="l4429"></a>
<a name="l4430"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CScreenCastGlobals</span><span class=cF0>
<a name="l4431"></a>{
<a name="l4432"></a> </span><span class=cF9>CSoundData</span><span class=cF0> sound_head;
<a name="l4433"></a> </span><span class=cF9>CDate</span><span class=cF0> t0_now;
<a name="l4434"></a> </span><span class=cF1>F64</span><span class=cF0> t0_tS;
<a name="l4435"></a> </span><span class=cF1>U8</span><span class=cF0> *print_format;
<a name="l4436"></a> </span><span class=cF9>CDC</span><span class=cF0> *dc, *dc2_alias;
<a name="l4437"></a> </span><span class=cF1>Bool</span><span class=cF0> record, just_audio;
<a name="l4438"></a> </span><span class=cF1>I8</span><span class=cF0> ona;
<a name="l4439"></a>};
<a name="l4440"></a>
<a name="l4441"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>&quot;Debugging/FunSeg&quot;</span><span class=cF0>
<a name="l4442"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>FUN_SEG_CACHE_SIZE</span><span class=cF0> </span><span class=cFE>256</span><span class=cF0>
<a name="l4443"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CFunSegCache</span><span class=cF0>
<a name="l4444"></a>{
<a name="l4445"></a> </span><span class=cF9>I64</span><span class=cF0> base, limit;
<a name="l4446"></a> </span><span class=cF1>F64</span><span class=cF0> time_stamp;
<a name="l4447"></a> </span><span class=cF1>U8</span><span class=cF0> str[</span><span class=cFE>1</span><span class=cF0>]; </span><span class=cF2>//FUN_SEG_CACHE_STR_LEN</span><span class=cF0>
<a name="l4448"></a>$ = </span><span class=cFE>64</span><span class=cF0>;
<a name="l4449"></a>};
<a name="l4450"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>FUN_SEG_CACHE_STR_LEN</span><span class=cF0> (</span><span class=cF1>sizeof</span><span class=cF7>(</span><span class=cF9>CFunSegCache</span><span class=cF7>)</span><span class=cF0> - </span><span class=cF1>offset</span><span class=cF7>(</span><span class=cF9>CFunSegCache</span><span class=cF0>.str</span><span class=cF7>)</span><span class=cF0>)
<a name="l4451"></a>
<a name="l4452"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>&quot;Debugging&quot;</span><span class=cF0>
<a name="l4453"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CMPCrash</span><span class=cF0>
<a name="l4454"></a>{
<a name="l4455"></a> </span><span class=cF9>I64</span><span class=cF0> cpu_num;
<a name="l4456"></a> </span><span class=cF9>CTask</span><span class=cF0> *task;
<a name="l4457"></a> </span><span class=cF9>I64</span><span class=cF0> rip;
<a name="l4458"></a> </span><span class=cF1>U8</span><span class=cF0> *message;
<a name="l4459"></a> </span><span class=cF9>I64</span><span class=cF0> message_num;
<a name="l4460"></a>};
<a name="l4461"></a>
<a name="l4462"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CDebugGlobals</span><span class=cF0>
<a name="l4463"></a>{
<a name="l4464"></a> </span><span class=cF9>CTask</span><span class=cF0> *focus_task;
<a name="l4465"></a> </span><span class=cF1>U8</span><span class=cF0> *message;
<a name="l4466"></a> </span><span class=cF9>I64</span><span class=cF0> message_num;
<a name="l4467"></a> </span><span class=cF9>CMPCrash</span><span class=cF0> *mp_crash;
<a name="l4468"></a> </span><span class=cF1>U8</span><span class=cF0> *int_fault_code,
<a name="l4469"></a> *fix_file_line;
<a name="l4470"></a> </span><span class=cF9>CFunSegCache</span><span class=cF0> *fun_seg_cache;
<a name="l4471"></a> </span><span class=cF9>I64</span><span class=cF0> fun_seg_cache_index;
<a name="l4472"></a> </span><span class=cF1>Bool</span><span class=cF0> panic;
<a name="l4473"></a>};
<a name="l4474"></a>
<a name="l4475"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>&quot;Boot&quot;</span><span class=cF0>
<a name="l4476"></a></span><span class=cF2>//Boot related</span><span class=cF0>
<a name="l4477"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>BOOT_RAM_BASE</span><span class=cF0> </span><span class=cFE>0x07C00</span><span class=cF0>
<a name="l4478"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>BOOT_RAM_LIMIT</span><span class=cF0> </span><span class=cFE>0x97000</span><span class=cF0>
<a name="l4479"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>BOOT_STACK_SIZE</span><span class=cF0> </span><span class=cF3>BLK_SIZE</span><span class=cF0>
<a name="l4480"></a>
<a name="l4481"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>BOOT_SRC_NULL</span><span class=cF0> </span><span class=cFE>0</span><span class=cF0>
<a name="l4482"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>BOOT_SRC_ROM</span><span class=cF0> </span><span class=cFE>1</span><span class=cF0>
<a name="l4483"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>BOOT_SRC_RAM</span><span class=cF0> </span><span class=cFE>2</span><span class=cF0>
<a name="l4484"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>BOOT_SRC_HARDDRIVE</span><span class=cF0> </span><span class=cFE>3</span><span class=cF0>
<a name="l4485"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>BOOT_SRC_DVD</span><span class=cF0> </span><span class=cFE>4</span><span class=cF0>
<a name="l4486"></a>
<a name="l4487"></a></span><span class=cF2>// </span><a href="https://zeal-operating-system.github.io/ZealOS/Kernel/Job.CC.html#l580"><span class=cF4>In</span></a><span class=cF2>(&quot;&quot;) StdIn for call to </span><a href="https://zeal-operating-system.github.io/ZealOS/System/Boot/BootHDIns.CC.html#l25"><span class=cF4>BootHDIns</span></a><span class=cF2>().</span><span class=cF0>
<a name="l4488"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>STD_DISTRO_DVD_CONFIG</span><span class=cF0> </span><span class=cF6>&quot;TB\nScale2Mem(2048,0x40000)\nT \n\n\n\n&quot;</span><span class=cF0>
<a name="l4489"></a>
<a name="l4490"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>&quot;Registry&quot;</span><span class=cF0>
<a name="l4491"></a></span><span class=cF2>//Registry sys_message_flags. </span><a href="https://zeal-operating-system.github.io/ZealOS/System/Registry.CC.html#l123"><span class=cF4>RegOneTimePopUp</span></a><span class=cF2>()</span><span class=cF0>
<a name="l4492"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ARf_FLOODFILL</span><span class=cF0> </span><span class=cFE>0</span><span class=cF0>
<a name="l4493"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ARf_CSPRITE_INS_CLIP</span><span class=cF0> </span><span class=cFE>1</span><span class=cF0>
<a name="l4494"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ARf_PLANAR_SYMMETRY</span><span class=cF0> </span><span class=cFE>2</span><span class=cF0>
<a name="l4495"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ARf_PSALMODY_JUKEBOX</span><span class=cF0> </span><span class=cFE>3</span><span class=cF0>
<a name="l4496"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ARf_MESH_ED</span><span class=cF0> </span><span class=cFE>4</span><span class=cF0>
<a name="l4497"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ARf_CSPRITE_PTS_RECTANGLES</span><span class=cF0> </span><span class=cFE>5</span><span class=cF0>
<a name="l4498"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ARf_MANAGE_SLIDER</span><span class=cF0> </span><span class=cFE>6</span><span class=cF0>
<a name="l4499"></a>
<a name="l4500"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>&quot;Misc/Progress Bars&quot;</span><span class=cF0>
<a name="l4501"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>PROGRESS_BARS_NUM</span><span class=cF0> </span><span class=cFE>4</span><span class=cF0>
<a name="l4502"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>PROGRESS_DESC_LEN</span><span class=cF0> (</span><span class=cFE>64</span><span class=cF0> - </span><span class=cFE>8</span><span class=cF0> - </span><span class=cFE>8</span><span class=cF0>)
<a name="l4503"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CProgress</span><span class=cF0>
<a name="l4504"></a>{
<a name="l4505"></a> </span><span class=cF9>I64</span><span class=cF0> val, max;
<a name="l4506"></a> </span><span class=cF1>F64</span><span class=cF0> t0, tf;
<a name="l4507"></a> </span><span class=cF1>U8</span><span class=cF0> desc[</span><span class=cF3>PROGRESS_DESC_LEN</span><span class=cF0>];
<a name="l4508"></a>};
<a name="l4509"></a>
<a name="l4510"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>&quot;Char/Operations&quot;</span><span class=cF0>
<a name="l4511"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>PRINTF_PAD_ZERO</span><span class=cF0> </span><span class=cFE>0x001</span><span class=cF0>
<a name="l4512"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>PRINTF_LEFT_JUSTIFY</span><span class=cF0> </span><span class=cFE>0x002</span><span class=cF0>
<a name="l4513"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>PRINTF_TRUNCATE</span><span class=cF0> </span><span class=cFE>0x004</span><span class=cF0>
<a name="l4514"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>PRINTF_COMMA</span><span class=cF0> </span><span class=cFE>0x008</span><span class=cF0>
<a name="l4515"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>PRINTF_DOLLAR</span><span class=cF0> </span><span class=cFE>0x010</span><span class=cF0>
<a name="l4516"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>PRINTF_SLASH</span><span class=cF0> </span><span class=cFE>0x020</span><span class=cF0>
<a name="l4517"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>PRINTF_QUESTION</span><span class=cF0> </span><span class=cFE>0x040</span><span class=cF0>
<a name="l4518"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>PRINTF_AUX_FORMAT_NUM</span><span class=cF0> </span><span class=cFE>0x080</span><span class=cF0>
<a name="l4519"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>PRINTF_DECIMAL</span><span class=cF0> </span><span class=cFE>0x100</span><span class=cF0>
<a name="l4520"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>PRINTF_NEG</span><span class=cF0> </span><span class=cFE>0x200</span><span class=cF0>
<a name="l4521"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>PRINTF_NEG_E</span><span class=cF0> </span><span class=cFE>0x400</span><span class=cF0>
<a name="l4522"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>PRINTF_NEG_AUX_FORMAT_NUM</span><span class=cF0> </span><span class=cFE>0x800</span><span class=cF0>
<a name="l4523"></a>
<a name="l4524"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>&quot;&quot;</span></pre></body>
</html>