mirror of
https://github.com/Zeal-Operating-System/ZealOS.git
synced 2024-12-28 00:06:35 +00:00
1b75d91002
Add arg to SATARep to specify drive types to show. Add checks in AHCIPortInit to verify port signatures, add helper method to get signatures from port.
128 lines
9.6 KiB
HTML
Executable file
128 lines
9.6 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.13">
|
|
<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>//Press F5 in the editor to compile and run.</span><span class=cF0>
|
|
<a name="l2"></a>
|
|
<a name="l3"></a>--------Hello.CC---------
|
|
<a name="l4"></a></span><span class=cF6>"Hello World\n"</span><span class=cF0>;
|
|
<a name="l5"></a>
|
|
<a name="l6"></a>
|
|
<a name="l7"></a>--------Hello.CC---------
|
|
<a name="l8"></a></span><span class=cF1>U0</span><span class=cF0> Main()
|
|
<a name="l9"></a>{
|
|
<a name="l10"></a> </span><span class=cF6>"Hello World\n"</span><span class=cF0>;
|
|
<a name="l11"></a>}
|
|
<a name="l12"></a>Main;
|
|
<a name="l13"></a>
|
|
<a name="l14"></a>
|
|
<a name="l15"></a>--------Hello.CC---------
|
|
<a name="l16"></a></span><span class=cF1>U0</span><span class=cF0> MyPrint(</span><span class=cF1>U8</span><span class=cF0> *st)
|
|
<a name="l17"></a>{
|
|
<a name="l18"></a> </span><span class=cF6>"%s"</span><span class=cF0>, st;
|
|
<a name="l19"></a>}
|
|
<a name="l20"></a>MyPrint(</span><span class=cF6>"Hello World\n"</span><span class=cF0>);
|
|
<a name="l21"></a>
|
|
<a name="l22"></a>
|
|
<a name="l23"></a>--------Hello.CC---------
|
|
<a name="l24"></a></span><span class=cF1>U0</span><span class=cF0> MyPrint2(</span><span class=cF1>U8</span><span class=cF0> *st1, </span><span class=cF1>U8</span><span class=cF0> *st2) </span><span class=cF2>//Any number of args.</span><span class=cF0>
|
|
<a name="l25"></a>{
|
|
<a name="l26"></a> </span><span class=cF6>"%s %s\n"</span><span class=cF0>, st1, st2; </span><span class=cF2>//Any number of args.</span><span class=cF0>
|
|
<a name="l27"></a>}
|
|
<a name="l28"></a>MyPrint2(</span><span class=cF6>"Hello"</span><span class=cF0>, </span><span class=cF6>"World"</span><span class=cF0>);
|
|
<a name="l29"></a>
|
|
<a name="l30"></a>
|
|
<a name="l31"></a>--------Hello.CC---------
|
|
<a name="l32"></a></span><span class=cF1>U0</span><span class=cF0> MyPrint(</span><span class=cF1>U8</span><span class=cF0> *st)
|
|
<a name="l33"></a>{
|
|
<a name="l34"></a> </span><span class=cF6>""</span><span class=cF0> st; </span><span class=cF2>//Empty with no comma means first is format str.</span><span class=cF0>
|
|
<a name="l35"></a>}
|
|
<a name="l36"></a>MyPrint(</span><span class=cF6>"Hello World\n"</span><span class=cF0>);
|
|
<a name="l37"></a>
|
|
<a name="l38"></a>
|
|
<a name="l39"></a>--------Hello.CC---------
|
|
<a name="l40"></a></span><span class=cF1>asm</span><span class=cF0> {
|
|
<a name="l41"></a>MESSAGE: </span><span class=cF1>DU8</span><span class=cF0> </span><span class=cF6>"Hello World\n"</span><span class=cF0>, </span><span class=cFE>0</span><span class=cF0>;
|
|
<a name="l42"></a>
|
|
<a name="l43"></a></span><span class=cF2>//The convention is underscore on C callable.</span><span class=cF0>
|
|
<a name="l44"></a></span><span class=cF2>//Two colons means exported symbol.</span><span class=cF0>
|
|
<a name="l45"></a>_HELLO_WORLD::
|
|
<a name="l46"></a></span><span class=cF2>//You can only clobber RAX,RBX,RCX,RDX</span><span class=cF0>
|
|
<a name="l47"></a> </span><span class=cF1>PUSH</span><span class=cF0> </span><span class=cFC>RSI</span><span class=cF0>
|
|
<a name="l48"></a> </span><span class=cF1>MOV</span><span class=cF0> </span><span class=cFC>RSI</span><span class=cF0>, MESSAGE
|
|
<a name="l49"></a> </span><span class=cF1>CALL</span><span class=cF0> </span><span class=cFD>PUT_STR</span><span class=cF0>
|
|
<a name="l50"></a> </span><span class=cF1>POP</span><span class=cF0> </span><span class=cFC>RSI</span><span class=cF0>
|
|
<a name="l51"></a> </span><span class=cF1>RET</span><span class=cF0>
|
|
<a name="l52"></a>}
|
|
<a name="l53"></a></span><span class=cF5>Call</span><span class=cF0>(_HELLO_WORLD);
|
|
<a name="l54"></a>
|
|
<a name="l55"></a>
|
|
<a name="l56"></a>--------Hello.CC---------
|
|
<a name="l57"></a></span><span class=cF1>asm</span><span class=cF0> {
|
|
<a name="l58"></a>_HELLO_WORLD::
|
|
<a name="l59"></a></span><span class=cF2>//You can only clobber RAX,RBX,RCX,RDX</span><span class=cF0>
|
|
<a name="l60"></a> </span><span class=cF1>MOV</span><span class=cF0> </span><span class=cFC>RAX</span><span class=cF0>, </span><span class=cF6>'Hello '</span><span class=cF0>
|
|
<a name="l61"></a> </span><span class=cF1>CALL</span><span class=cF0> </span><span class=cFD>PUT_CHARS</span><span class=cF0> </span><span class=cF2>//Up to 8 chars packed into one 64-bit int.</span><span class=cF0>
|
|
<a name="l62"></a> </span><span class=cF1>MOV</span><span class=cF0> </span><span class=cFC>RAX</span><span class=cF0>, </span><span class=cF6>'World\n'</span><span class=cF0>
|
|
<a name="l63"></a> </span><span class=cF1>CALL</span><span class=cF0> </span><span class=cFD>PUT_CHARS</span><span class=cF0>
|
|
<a name="l64"></a> </span><span class=cF1>RET</span><span class=cF0>
|
|
<a name="l65"></a>}
|
|
<a name="l66"></a></span><span class=cF5>Call</span><span class=cF0>(_HELLO_WORLD);
|
|
<a name="l67"></a>
|
|
<a name="l68"></a>
|
|
<a name="l69"></a>--------Hello.CC---------
|
|
<a name="l70"></a></span><span class=cF1>asm</span><span class=cF0> {
|
|
<a name="l71"></a>_MY_PRINT::
|
|
<a name="l72"></a></span><span class=cF2>//You can only clobber RAX,RBX,RCX,RDX</span><span class=cF0>
|
|
<a name="l73"></a> </span><span class=cF1>PUSH</span><span class=cF0> </span><span class=cFC>RBP</span><span class=cF0>
|
|
<a name="l74"></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="l75"></a> </span><span class=cF1>PUSH</span><span class=cF0> </span><span class=cFC>RSI</span><span class=cF0>
|
|
<a name="l76"></a> </span><span class=cF1>MOV</span><span class=cF0> </span><span class=cFC>RSI</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>]
|
|
<a name="l77"></a> </span><span class=cF1>CALL</span><span class=cF0> </span><span class=cFD>PUT_STR</span><span class=cF0>
|
|
<a name="l78"></a> </span><span class=cF1>POP</span><span class=cF0> </span><span class=cFC>RSI</span><span class=cF0>
|
|
<a name="l79"></a> </span><span class=cF1>POP</span><span class=cF0> </span><span class=cFC>RBP</span><span class=cF0>
|
|
<a name="l80"></a> </span><span class=cF1>RET1</span><span class=cF0> </span><span class=cFE>8</span><span class=cF0> </span><span class=cF2>//Callee pops the stack to clear args.</span><span class=cF0>
|
|
<a name="l81"></a>}
|
|
<a name="l82"></a></span><span class=cF1>_extern</span><span class=cF0> _MY_PRINT </span><span class=cF1>U0</span><span class=cF0> MyPrint(</span><span class=cF1>U8</span><span class=cF0> *st);
|
|
<a name="l83"></a>MyPrint(</span><span class=cF6>"Hello World\n"</span><span class=cF0>);
|
|
<a name="l84"></a>
|
|
<a name="l85"></a>
|
|
<a name="l86"></a>--------Hello.CC---------
|
|
<a name="l87"></a></span><span class=cF1>asm</span><span class=cF0> {
|
|
<a name="l88"></a>_MY_PRINT::
|
|
<a name="l89"></a></span><span class=cF2>//You can only clobber RAX,RBX,RCX,RDX</span><span class=cF0>
|
|
<a name="l90"></a> </span><span class=cF1>PUSH</span><span class=cF0> </span><span class=cFC>RBP</span><span class=cF0>
|
|
<a name="l91"></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="l92"></a> </span><span class=cF1>PUSH</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>]
|
|
<a name="l93"></a> </span><span class=cF1>CALL</span><span class=cF0> &</span><span class=cF5>PutS</span><span class=cF0> </span><span class=cF2>//Callee pops the stack to clear args.</span><span class=cF0>
|
|
<a name="l94"></a> </span><span class=cF1>POP</span><span class=cF0> </span><span class=cFC>RBP</span><span class=cF0>
|
|
<a name="l95"></a> </span><span class=cF1>RET1</span><span class=cF0> </span><span class=cFE>8</span><span class=cF0>
|
|
<a name="l96"></a>}
|
|
<a name="l97"></a></span><span class=cF1>_extern</span><span class=cF0> _MY_PRINT </span><span class=cF1>U0</span><span class=cF0> MyPrint(</span><span class=cF1>U8</span><span class=cF0> *st);
|
|
<a name="l98"></a>MyPrint(</span><span class=cF6>"Hello World\n"</span><span class=cF0>);
|
|
<a name="l99"></a>
|
|
</span></pre></body>
|
|
</html>
|