mirror of
https://github.com/Zeal-Operating-System/ZealOS.git
synced 2024-12-29 16:56:30 +00:00
dbf8647d59
Added top & right borders to RawDr. Improved spacing in some debug and compiler reporting. Fixed RawPutChar and EdLite tab width. Fixed Ui missing '0x' prefix syntax highlighter bug. Added 32BitPaint demo.
114 lines
12 KiB
HTML
Executable file
114 lines
12 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.08">
|
|
<style type="text/css">
|
|
body {background-color:#000000;}
|
|
.cF0{color:#ffffff;background-color:#000000;}
|
|
.cF1{color:#3465a4;background-color:#000000;}
|
|
.cF2{color:#4e9a06;background-color:#000000;}
|
|
.cF3{color:#06989a;background-color:#000000;}
|
|
.cF4{color:#a24444;background-color:#000000;}
|
|
.cF5{color:#75507b;background-color:#000000;}
|
|
.cF6{color:#ce982f;background-color:#000000;}
|
|
.cF7{color:#bcc0b9;background-color:#000000;}
|
|
.cF8{color:#555753;background-color:#000000;}
|
|
.cF9{color:#729fcf;background-color:#000000;}
|
|
.cFA{color:#82bc49;background-color:#000000;}
|
|
.cFB{color:#34e2e2;background-color:#000000;}
|
|
.cFC{color:#ac3535;background-color:#000000;}
|
|
.cFD{color:#ad7fa8;background-color:#000000;}
|
|
.cFE{color:#fce94f;background-color:#000000;}
|
|
.cFF{color:#000000;background-color:#000000;}
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<pre style="font-family:monospace;font-size:12pt">
|
|
<a name="l1"></a><span class=cF2>/*Asm labels can only be defined once</span><span class=cF0>
|
|
<a name="l2"></a></span><span class=cF2>in a task. <F5> will spawn a new task</span><span class=cF0>
|
|
<a name="l3"></a></span><span class=cF2>each time, so you don't get redefine</span><span class=cF0>
|
|
<a name="l4"></a></span><span class=cF2>error, like when repeatedly #including</span><span class=cF0>
|
|
<a name="l5"></a></span><span class=cF2>it from the cmd line.</span><span class=cF0>
|
|
<a name="l6"></a></span><span class=cF2>*/</span><span class=cF0>
|
|
<a name="l7"></a>
|
|
<a name="l8"></a></span><span class=cF2>//This is to demo global var access.</span><span class=cF0>
|
|
<a name="l9"></a></span><span class=cF2>//Glbs defined elsewhere can accessed too, like counts.jiffies.</span><span class=cF0>
|
|
<a name="l10"></a></span><span class=cF9>I64</span><span class=cF0> global_ona = </span><span class=cF5>Freq2Ona</span><span class=cF0>(</span><span class=cFE>400</span><span class=cF0>), global_ona_step = </span><span class=cFE>10</span><span class=cF0>, global_ona_base = </span><span class=cF5>Freq2Ona</span><span class=cF0>(</span><span class=cFE>100</span><span class=cF0>);
|
|
<a name="l11"></a>
|
|
<a name="l12"></a></span><span class=cF1>asm</span><span class=cF0> {
|
|
<a name="l13"></a></span><span class=cF2>//Opcodes are slightly different to make writing the x86_64 assembler easier.</span><span class=cF0>
|
|
<a name="l14"></a></span><span class=cF2>//See </span><a href="https://tomawezome.github.io/ZealOS/Compiler/OpCodes.DD.html#l1"><span class=cF4>::/Compiler/OpCodes.DD</span></a><span class=cF2>.</span><span class=cF0>
|
|
<a name="l15"></a>
|
|
<a name="l16"></a>JIFFIES_MESSAGE: </span><span class=cF1>DU8</span><span class=cF0> </span><span class=cF6>"Jiffies:"</span><span class=cF0>, </span><span class=cFE>0</span><span class=cF0>;
|
|
<a name="l17"></a>
|
|
<a name="l18"></a></span><span class=cF2>//See </span><a href="https://tomawezome.github.io/ZealOS/Kernel/StrA.CC.html#l1"><span class=cF4>::/Kernel/StrA.CC</span></a><span class=cF2> and </span><a href="https://tomawezome.github.io/ZealOS/Kernel/KUtils.CC.html#l1"><span class=cF4>::/Kernel/KUtils.CC</span></a><span class=cF2>.</span><span class=cF0>
|
|
<a name="l19"></a>
|
|
<a name="l20"></a>_BEEPS2::
|
|
<a name="l21"></a></span><span class=cF2>//You can clobber RAX,RBX,RCX,RDX,R8,R9.</span><span class=cF0> </span><span class=cF2>The compiler expects that.</span><span class=cF0>
|
|
<a name="l22"></a></span><span class=cF2>//See </span><a href="https://tomawezome.github.io/ZealOS/Kernel/KernelA.HH.html#l1936"><span class=cF4>REGG_CLOBBERED</span></a><span class=cF2> and </span><a href="https://tomawezome.github.io/ZealOS/Kernel/KernelA.HH.html#l1938"><span class=cF4>REGG_STACK_TMP</span></a><span class=cF2>.</span><span class=cF0>
|
|
<a name="l23"></a> </span><span class=cF1>PUSH</span><span class=cF0> </span><span class=cFC>RBP</span><span class=cF0>
|
|
<a name="l24"></a> </span><span class=cF1>MOV</span><span class=cF0> </span><span class=cFC>RBP</span><span class=cF0>, </span><span class=cFC>RSP</span><span class=cF0>
|
|
<a name="l25"></a> </span><span class=cF1>MOV</span><span class=cF0> </span><span class=cFC>RCX</span><span class=cF0>, </span><span class=cF9>U64</span><span class=cF0> </span><span class=cF3>SF_ARG1</span><span class=cF0>[</span><span class=cFC>RBP</span><span class=cF0>] </span><span class=cF2>//</span><a href="https://tomawezome.github.io/ZealOS/Kernel/KernelA.HH.html#l715"><span class=cF4>SF_ARG1</span></a><span class=cF0>
|
|
<a name="l26"></a>
|
|
<a name="l27"></a> </span><span class=cF1>PUSH</span><span class=cF0> </span><span class=cF9>U64</span><span class=cF0> [&</span><span class=cFB>counts</span><span class=cF0>.jiffies]
|
|
<a name="l28"></a>
|
|
<a name="l29"></a>@@05: </span><span class=cF1>PUSH</span><span class=cF0> </span><span class=cFC>RCX</span><span class=cF0>
|
|
<a name="l30"></a></span><span class=cF2>//U0 </span><a href="https://tomawezome.github.io/ZealOS/Kernel/KMisc.CC.html#l200"><span class=cF4>Beep</span></a><span class=cF2>(I8 ona=62, Bool busy=FALSE)</span><span class=cF0>
|
|
<a name="l31"></a> </span><span class=cF1>PUSH</span><span class=cF0> </span><span class=cF3>FALSE</span><span class=cF0> </span><span class=cF2>//Do not busy (spin) wait</span><span class=cF0>
|
|
<a name="l32"></a> </span><span class=cF1>PUSH</span><span class=cF0> </span><span class=cF9>U64</span><span class=cF0> [&global_ona] </span><span class=cF2>//evaluated at run time</span><span class=cF0>
|
|
<a name="l33"></a> </span><span class=cF1>CALL</span><span class=cF0> &</span><span class=cF5>Beep</span><span class=cF0>
|
|
<a name="l34"></a> </span><span class=cF1>POP</span><span class=cF0> </span><span class=cFC>RCX</span><span class=cF0>
|
|
<a name="l35"></a> </span><span class=cF1>LOOP</span><span class=cF0> @@05
|
|
<a name="l36"></a>
|
|
<a name="l37"></a> </span><span class=cF1>PUSH</span><span class=cF0> </span><span class=cFC>RSI</span><span class=cF0> </span><span class=cF2>//See </span><a href="https://tomawezome.github.io/ZealOS/Kernel/KernelA.HH.html#l1939"><span class=cF4>REGG_LOCAL_VARS</span></a><span class=cF2> & </span><a href="https://tomawezome.github.io/ZealOS/Kernel/KernelA.HH.html#l1940"><span class=cF4>REGG_LOCAL_NON_PTR_VARS</span></a><span class=cF0>
|
|
<a name="l38"></a> </span><span class=cF1>MOV</span><span class=cF0> </span><span class=cFC>RSI</span><span class=cF0>, JIFFIES_MESSAGE
|
|
<a name="l39"></a> </span><span class=cF1>CALL</span><span class=cF0> </span><span class=cFD>PUT_STR</span><span class=cF0>
|
|
<a name="l40"></a> </span><span class=cF1>POP</span><span class=cF0> </span><span class=cFC>RSI</span><span class=cF0>
|
|
<a name="l41"></a>
|
|
<a name="l42"></a> </span><span class=cF1>POP</span><span class=cF0> </span><span class=cFC>RAX</span><span class=cF0>
|
|
<a name="l43"></a> </span><span class=cF1>SUB</span><span class=cF0> </span><span class=cFC>RAX</span><span class=cF0>, </span><span class=cF9>U64</span><span class=cF0> [&</span><span class=cFB>counts</span><span class=cF0>.jiffies]
|
|
<a name="l44"></a> </span><span class=cF1>NEG</span><span class=cF0> </span><span class=cFC>RAX</span><span class=cF0>
|
|
<a name="l45"></a> </span><span class=cF1>CALL</span><span class=cF0> </span><span class=cFD>PUT_HEX_U64</span><span class=cF0>
|
|
<a name="l46"></a> </span><span class=cF1>MOV</span><span class=cF0> </span><span class=cFC>RAX</span><span class=cF0>, </span><span class=cF6>'\n'</span><span class=cF0>
|
|
<a name="l47"></a> </span><span class=cF1>CALL</span><span class=cF0> </span><span class=cFD>PUT_CHARS</span><span class=cF0>
|
|
<a name="l48"></a>
|
|
<a name="l49"></a> </span><span class=cF1>POP</span><span class=cF0> </span><span class=cFC>RBP</span><span class=cF0>
|
|
<a name="l50"></a> </span><span class=cF1>RET1</span><span class=cF0> </span><span class=cFE>8</span><span class=cF0>
|
|
<a name="l51"></a>}
|
|
<a name="l52"></a>
|
|
<a name="l53"></a></span><span class=cF2>//The convention is to put an underscore</span><span class=cF0>
|
|
<a name="l54"></a></span><span class=cF2>//on C callable asm routines.</span><span class=cF0>
|
|
<a name="l55"></a></span><span class=cF1>_extern</span><span class=cF0> _BEEPS2 </span><span class=cF1>U0</span><span class=cF0> Beeps2(</span><span class=cF9>I64</span><span class=cF0> count);
|
|
<a name="l56"></a>
|
|
<a name="l57"></a></span><span class=cF1>U0</span><span class=cF0> AsmAndC2()
|
|
<a name="l58"></a>{
|
|
<a name="l59"></a> </span><span class=cF9>I64</span><span class=cF0> </span><span class=cF1>reg</span><span class=cF0> </span><span class=cFC>R15</span><span class=cF0> i;
|
|
<a name="l60"></a>
|
|
<a name="l61"></a> i = </span><span class=cF5>I64Get</span><span class=cF0>(</span><span class=cF6>"$PURPLE$\n\nNum of beeps 1-5 (%d):$FG$"</span><span class=cF0>, </span><span class=cFE>3</span><span class=cF0>, </span><span class=cFE>1</span><span class=cF0>, </span><span class=cFE>5</span><span class=cF0>);
|
|
<a name="l62"></a> Beeps2(i);
|
|
<a name="l63"></a>
|
|
<a name="l64"></a> </span><span class=cF1>asm</span><span class=cF0> </span><span class=cF7>{</span><span class=cF0>
|
|
<a name="l65"></a> </span><span class=cF1>LIST</span><span class=cF0>
|
|
<a name="l66"></a></span><span class=cF2>//You can clobber RAX,RBX,RCX,RDX, but preserve the rest.</span><span class=cF0>
|
|
<a name="l67"></a> </span><span class=cF1>MOV</span><span class=cF0> </span><span class=cFC>RCX</span><span class=cF0>, </span><span class=cFC>R15</span><span class=cF0> </span><span class=cF2>//You can clobber RAX,RBX,RCX,RDX. Preserve the rest.</span><span class=cF0>
|
|
<a name="l68"></a> @@05: </span><span class=cF1>PUSH</span><span class=cF0> </span><span class=cFC>RCX</span><span class=cF0>
|
|
<a name="l69"></a>
|
|
<a name="l70"></a></span><span class=cF2>//U0 </span><a href="https://tomawezome.github.io/ZealOS/Kernel/KMisc.CC.html#l129"><span class=cF4>Sound</span></a><span class=cF2>(I8 ona);</span><span class=cF0>
|
|
<a name="l71"></a> </span><span class=cF1>MOV</span><span class=cF0> </span><span class=cFC>RAX</span><span class=cF0>, </span><span class=cFC>RCX</span><span class=cF0> </span><span class=cF2>//ona=loop*10+100.0Hz</span><span class=cF0>
|
|
<a name="l72"></a> </span><span class=cF1>IMUL2</span><span class=cF0> </span><span class=cFC>RAX</span><span class=cF0>, global_ona_step </span><span class=cF2>//Intentionally evaluated at compile time</span><span class=cF0>
|
|
<a name="l73"></a> </span><span class=cF1>ADD</span><span class=cF0> </span><span class=cFC>RAX</span><span class=cF0>, </span><span class=cF9>U64</span><span class=cF0> [&global_ona_base] </span><span class=cF2>//Intentionally evaluated at run time</span><span class=cF0>
|
|
<a name="l74"></a> </span><span class=cF1>PUSH</span><span class=cF0> </span><span class=cFC>RAX</span><span class=cF0>
|
|
<a name="l75"></a> </span><span class=cF1>CALL</span><span class=cF0> &</span><span class=cF5>Sound</span><span class=cF0> </span><span class=cF2>//We can skip IMPORT with & if JIT compiling.</span><span class=cF0>
|
|
<a name="l76"></a> </span><span class=cF1>MOV</span><span class=cF0> </span><span class=cFC>RCX</span><span class=cF0>, </span><span class=cFB>counts</span><span class=cF0>.time_stamp_freq >> </span><span class=cFE>3</span><span class=cF0> </span><span class=cF2>//JIT Const.</span><span class=cF0> </span><span class=cF2>Simple delay loop.</span><span class=cF0>
|
|
<a name="l77"></a>@@10: </span><span class=cF1>LOOP</span><span class=cF0> @@10
|
|
<a name="l78"></a>
|
|
<a name="l79"></a> </span><span class=cF1>POP</span><span class=cF0> </span><span class=cFC>RCX</span><span class=cF0>
|
|
<a name="l80"></a> </span><span class=cF1>LOOP</span><span class=cF0> @@05
|
|
<a name="l81"></a> </span><span class=cF7>}</span><span class=cF0>
|
|
<a name="l82"></a> </span><span class=cF5>Sound</span><span class=cF0>;
|
|
<a name="l83"></a>}
|
|
<a name="l84"></a>
|
|
<a name="l85"></a>AsmAndC2;
|
|
</span></pre></body>
|
|
</html>
|