mirror of
https://github.com/Zeal-Operating-System/ZealOS.git
synced 2025-01-01 02:06:32 +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.
407 lines
64 KiB
HTML
Executable file
407 lines
64 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=cF0>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>"TextBase Layer;Char/TextBase Layer"</span><span class=cF0>
|
|
<a name="l2"></a>#</span><span class=cF1>help_file</span><span class=cF0> </span><span class=cF6>"::/Doc/TextBase"</span><span class=cF0>
|
|
<a name="l3"></a>
|
|
<a name="l4"></a></span><span class=cF1>asm</span><span class=cF0> {
|
|
<a name="l5"></a></span><span class=cF2>//************************************</span><span class=cF0>
|
|
<a name="l6"></a></span><span class=cFD>_TEXT_CHAR</span><span class=cF0>::
|
|
<a name="l7"></a></span><span class=cF2>//Bool TextChar(CTask *task,Bool allow_border=FALSE,I64 x,I64 y,I64 d);</span><span class=cF0>
|
|
<a name="l8"></a></span><span class=cF2>//Must be called 60fps in Fs->draw_it() callback.</span><span class=cF0>
|
|
<a name="l9"></a> </span><span class=cF1>PUSH</span><span class=cF0> </span><span class=cFC>RBP</span><span class=cF0>
|
|
<a name="l10"></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="l11"></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>]
|
|
<a name="l12"></a> </span><span class=cF1>MOV</span><span class=cF0> </span><span class=cFC>RBX</span><span class=cF0>, </span><span class=cF9>U64</span><span class=cF0> </span><span class=cF9>CTask</span><span class=cF0>.scroll_x[</span><span class=cFC>RCX</span><span class=cF0>]
|
|
<a name="l13"></a> </span><span class=cF1>SAR</span><span class=cF0> </span><span class=cFC>RBX</span><span class=cF0>, </span><span class=cFE>3</span><span class=cF0>
|
|
<a name="l14"></a> </span><span class=cF1>ADD</span><span class=cF0> </span><span class=cFC>RBX</span><span class=cF0>, </span><span class=cF9>U64</span><span class=cF0> </span><span class=cF3>SF_ARG3</span><span class=cF0>[</span><span class=cFC>RBP</span><span class=cF0>]
|
|
<a name="l15"></a> </span><span class=cF1>MOV</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=cF9>CTask</span><span class=cF0>.scroll_y[</span><span class=cFC>RCX</span><span class=cF0>]
|
|
<a name="l16"></a> </span><span class=cF1>SAR</span><span class=cF0> </span><span class=cFC>RAX</span><span class=cF0>, </span><span class=cFE>3</span><span class=cF0>
|
|
<a name="l17"></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> </span><span class=cF3>SF_ARG4</span><span class=cF0>[</span><span class=cFC>RBP</span><span class=cF0>]
|
|
<a name="l18"></a>
|
|
<a name="l19"></a> </span><span class=cF1>TEST</span><span class=cF0> </span><span class=cF1>U8</span><span class=cF0> </span><span class=cF3>SF_ARG2</span><span class=cF0>[</span><span class=cFC>RBP</span><span class=cF0>], </span><span class=cFE>0xFF</span><span class=cF0>
|
|
<a name="l20"></a> </span><span class=cF1>JNZ</span><span class=cF0> @@10
|
|
<a name="l21"></a>
|
|
<a name="l22"></a></span><span class=cF2>//Border not allowed</span><span class=cF0>
|
|
<a name="l23"></a> </span><span class=cF1>TEST</span><span class=cF0> </span><span class=cFC>RBX</span><span class=cF0>, </span><span class=cFC>RBX</span><span class=cF0> </span><span class=cF2>//Check X</span><span class=cF0>
|
|
<a name="l24"></a> </span><span class=cF1>JS</span><span class=cF0> @@05
|
|
<a name="l25"></a> </span><span class=cF1>ADD</span><span class=cF0> </span><span class=cFC>RBX</span><span class=cF0>, </span><span class=cF9>U64</span><span class=cF0> </span><span class=cF9>CTask</span><span class=cF0>.win_left[</span><span class=cFC>RCX</span><span class=cF0>]
|
|
<a name="l26"></a> </span><span class=cF1>CMP</span><span class=cF0> </span><span class=cFC>RBX</span><span class=cF0>, </span><span class=cF9>U64</span><span class=cF0> </span><span class=cF9>CTask</span><span class=cF0>.win_right[</span><span class=cFC>RCX</span><span class=cF0>]
|
|
<a name="l27"></a> </span><span class=cF1>JG</span><span class=cF0> @@05
|
|
<a name="l28"></a> </span><span class=cF1>TEST</span><span class=cF0> </span><span class=cFC>RBX</span><span class=cF0>, </span><span class=cFC>RBX</span><span class=cF0>
|
|
<a name="l29"></a> </span><span class=cF1>JS</span><span class=cF0> @@05
|
|
<a name="l30"></a> </span><span class=cF1>CMP</span><span class=cF0> </span><span class=cFC>RBX</span><span class=cF0>, </span><span class=cF3>TEXT_COLS</span><span class=cF0>
|
|
<a name="l31"></a> </span><span class=cF1>JGE</span><span class=cF0> @@05
|
|
<a name="l32"></a> </span><span class=cF1>TEST</span><span class=cF0> </span><span class=cFC>RAX</span><span class=cF0>, </span><span class=cFC>RAX</span><span class=cF0> </span><span class=cF2>//Check Y</span><span class=cF0>
|
|
<a name="l33"></a> </span><span class=cF1>JS</span><span class=cF0> @@05
|
|
<a name="l34"></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> </span><span class=cF9>CTask</span><span class=cF0>.win_top[</span><span class=cFC>RCX</span><span class=cF0>]
|
|
<a name="l35"></a> </span><span class=cF1>CMP</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=cF9>CTask</span><span class=cF0>.win_bottom[</span><span class=cFC>RCX</span><span class=cF0>]
|
|
<a name="l36"></a> </span><span class=cF1>JG</span><span class=cF0> @@05
|
|
<a name="l37"></a> </span><span class=cF1>TEST</span><span class=cF0> </span><span class=cFC>RAX</span><span class=cF0>, </span><span class=cFC>RAX</span><span class=cF0>
|
|
<a name="l38"></a> </span><span class=cF1>JS</span><span class=cF0> @@05
|
|
<a name="l39"></a> </span><span class=cF1>CMP</span><span class=cF0> </span><span class=cFC>RAX</span><span class=cF0>, </span><span class=cF3>TEXT_ROWS</span><span class=cF0>
|
|
<a name="l40"></a> </span><span class=cF1>JGE</span><span class=cF0> @@05
|
|
<a name="l41"></a> </span><span class=cF1>JMP</span><span class=cF0> @@15
|
|
<a name="l42"></a>
|
|
<a name="l43"></a>@@05: </span><span class=cF1>XOR</span><span class=cF0> </span><span class=cFC>RAX</span><span class=cF0>, </span><span class=cFC>RAX</span><span class=cF0> </span><span class=cF2>//return FALSE</span><span class=cF0>
|
|
<a name="l44"></a> </span><span class=cF1>POP</span><span class=cF0> </span><span class=cFC>RBP</span><span class=cF0>
|
|
<a name="l45"></a> </span><span class=cF1>RET1</span><span class=cF0> </span><span class=cFE>40</span><span class=cF0>
|
|
<a name="l46"></a>
|
|
<a name="l47"></a></span><span class=cF2>//Border allowed</span><span class=cF0>
|
|
<a name="l48"></a>@@10: </span><span class=cF1>MOV</span><span class=cF0> </span><span class=cFC>RDX</span><span class=cF0>, -</span><span class=cFE>1</span><span class=cF0> </span><span class=cF2>//Check X</span><span class=cF0>
|
|
<a name="l49"></a> </span><span class=cF1>CMP</span><span class=cF0> </span><span class=cFC>RBX</span><span class=cF0>, </span><span class=cFC>RDX</span><span class=cF0>
|
|
<a name="l50"></a> </span><span class=cF1>JL</span><span class=cF0> @@05
|
|
<a name="l51"></a> </span><span class=cF1>ADD</span><span class=cF0> </span><span class=cFC>RBX</span><span class=cF0>, </span><span class=cF9>U64</span><span class=cF0> </span><span class=cF9>CTask</span><span class=cF0>.win_left[</span><span class=cFC>RCX</span><span class=cF0>]
|
|
<a name="l52"></a> </span><span class=cF1>MOV</span><span class=cF0> </span><span class=cFC>RDX</span><span class=cF0>, </span><span class=cF9>U64</span><span class=cF0> </span><span class=cF9>CTask</span><span class=cF0>.win_right[</span><span class=cFC>RCX</span><span class=cF0>]
|
|
<a name="l53"></a> </span><span class=cF1>INC</span><span class=cF0> </span><span class=cFC>RDX</span><span class=cF0>
|
|
<a name="l54"></a> </span><span class=cF1>CMP</span><span class=cF0> </span><span class=cFC>RBX</span><span class=cF0>, </span><span class=cFC>RDX</span><span class=cF0>
|
|
<a name="l55"></a> </span><span class=cF1>JG</span><span class=cF0> @@05
|
|
<a name="l56"></a> </span><span class=cF1>TEST</span><span class=cF0> </span><span class=cFC>RBX</span><span class=cF0>, </span><span class=cFC>RBX</span><span class=cF0>
|
|
<a name="l57"></a> </span><span class=cF1>JS</span><span class=cF0> @@05
|
|
<a name="l58"></a> </span><span class=cF1>CMP</span><span class=cF0> </span><span class=cFC>RBX</span><span class=cF0>, </span><span class=cF3>TEXT_COLS</span><span class=cF0>
|
|
<a name="l59"></a> </span><span class=cF1>JGE</span><span class=cF0> @@05
|
|
<a name="l60"></a> </span><span class=cF1>MOV</span><span class=cF0> </span><span class=cFC>RDX</span><span class=cF0>, -</span><span class=cFE>1</span><span class=cF0> </span><span class=cF2>//Check Y</span><span class=cF0>
|
|
<a name="l61"></a> </span><span class=cF1>CMP</span><span class=cF0> </span><span class=cFC>RAX</span><span class=cF0>, </span><span class=cFC>RDX</span><span class=cF0>
|
|
<a name="l62"></a> </span><span class=cF1>JL</span><span class=cF0> @@05
|
|
<a name="l63"></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> </span><span class=cF9>CTask</span><span class=cF0>.win_top[</span><span class=cFC>RCX</span><span class=cF0>]
|
|
<a name="l64"></a> </span><span class=cF1>MOV</span><span class=cF0> </span><span class=cFC>RDX</span><span class=cF0>, </span><span class=cF9>U64</span><span class=cF0> </span><span class=cF9>CTask</span><span class=cF0>.win_bottom[</span><span class=cFC>RCX</span><span class=cF0>]
|
|
<a name="l65"></a> </span><span class=cF1>INC</span><span class=cF0> </span><span class=cFC>RDX</span><span class=cF0>
|
|
<a name="l66"></a> </span><span class=cF1>CMP</span><span class=cF0> </span><span class=cFC>RAX</span><span class=cF0>, </span><span class=cFC>RDX</span><span class=cF0>
|
|
<a name="l67"></a> </span><span class=cF1>JG</span><span class=cF0> @@05
|
|
<a name="l68"></a> </span><span class=cF1>TEST</span><span class=cF0> </span><span class=cFC>RAX</span><span class=cF0>, </span><span class=cFC>RAX</span><span class=cF0>
|
|
<a name="l69"></a> </span><span class=cF1>JS</span><span class=cF0> @@05
|
|
<a name="l70"></a> </span><span class=cF1>CMP</span><span class=cF0> </span><span class=cFC>RAX</span><span class=cF0>, </span><span class=cF3>TEXT_ROWS</span><span class=cF0>
|
|
<a name="l71"></a> </span><span class=cF1>JGE</span><span class=cF0> @@05
|
|
<a name="l72"></a>
|
|
<a name="l73"></a>@@15: </span><span class=cF1>IMUL2</span><span class=cF0> </span><span class=cFC>RAX</span><span class=cF0>, </span><span class=cF3>TEXT_COLS</span><span class=cF0>
|
|
<a name="l74"></a> </span><span class=cF1>ADD</span><span class=cF0> </span><span class=cFC>RBX</span><span class=cF0>, </span><span class=cFC>RAX</span><span class=cF0>
|
|
<a name="l75"></a> </span><span class=cF1>SHL</span><span class=cF0> </span><span class=cFC>RBX</span><span class=cF0>, </span><span class=cFE>2</span><span class=cF0>
|
|
<a name="l76"></a> </span><span class=cF1>ADD</span><span class=cF0> </span><span class=cFC>RBX</span><span class=cF0>, </span><span class=cF9>U64</span><span class=cF0> [&</span><span class=cFB>gr</span><span class=cF0>.text_base]
|
|
<a name="l77"></a> </span><span class=cF1>MOV</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=cF3>SF_ARG5</span><span class=cF0>[</span><span class=cFC>RBP</span><span class=cF0>]
|
|
<a name="l78"></a> </span><span class=cF1>MOV</span><span class=cF0> </span><span class=cF9>U32</span><span class=cF0> [</span><span class=cFC>RBX</span><span class=cF0>], </span><span class=cFC>EAX</span><span class=cF0>
|
|
<a name="l79"></a>
|
|
<a name="l80"></a> </span><span class=cF1>MOV</span><span class=cF0> </span><span class=cFC>RAX</span><span class=cF0>, </span><span class=cF3>TRUE</span><span class=cF0>
|
|
<a name="l81"></a> </span><span class=cF1>POP</span><span class=cF0> </span><span class=cFC>RBP</span><span class=cF0>
|
|
<a name="l82"></a> </span><span class=cF1>RET1</span><span class=cF0> </span><span class=cFE>40</span><span class=cF0>
|
|
<a name="l83"></a></span><span class=cF2>//************************************</span><span class=cF0>
|
|
<a name="l84"></a></span><span class=cFD>_TEXT_LEN_STR</span><span class=cF0>::
|
|
<a name="l85"></a></span><span class=cF2>//Bool TextLenStr(CTask *task,I64 x,I64 y,I64 len,I64 attr,U8 *s)</span><span class=cF0>
|
|
<a name="l86"></a></span><span class=cF2>//Must be called 60fps in Fs->draw_it() callback.</span><span class=cF0>
|
|
<a name="l87"></a> </span><span class=cF1>PUSH</span><span class=cF0> </span><span class=cFC>RBP</span><span class=cF0>
|
|
<a name="l88"></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="l89"></a> </span><span class=cF1>PUSH</span><span class=cF0> </span><span class=cFC>RSI</span><span class=cF0>
|
|
<a name="l90"></a> </span><span class=cF1>PUSH</span><span class=cF0> </span><span class=cFC>RDI</span><span class=cF0>
|
|
<a name="l91"></a> </span><span class=cF1>MOV</span><span class=cF0> </span><span class=cFC>RBX</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="l92"></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_ARG6</span><span class=cF0>[</span><span class=cFC>RBP</span><span class=cF0>]
|
|
<a name="l93"></a> </span><span class=cF1>MOV</span><span class=cF0> </span><span class=cFC>RDI</span><span class=cF0>, </span><span class=cF9>U64</span><span class=cF0> </span><span class=cF9>CTask</span><span class=cF0>.scroll_x[</span><span class=cFC>RBX</span><span class=cF0>]
|
|
<a name="l94"></a> </span><span class=cF1>SAR</span><span class=cF0> </span><span class=cFC>RDI</span><span class=cF0>, </span><span class=cFE>3</span><span class=cF0>
|
|
<a name="l95"></a> </span><span class=cF1>ADD</span><span class=cF0> </span><span class=cFC>RDI</span><span class=cF0>, </span><span class=cF9>U64</span><span class=cF0> </span><span class=cF3>SF_ARG2</span><span class=cF0>[</span><span class=cFC>RBP</span><span class=cF0>]
|
|
<a name="l96"></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_ARG4</span><span class=cF0>[</span><span class=cFC>RBP</span><span class=cF0>]
|
|
<a name="l97"></a>
|
|
<a name="l98"></a> </span><span class=cF1>TEST</span><span class=cF0> </span><span class=cFC>RDI</span><span class=cF0>, </span><span class=cFC>RDI</span><span class=cF0>
|
|
<a name="l99"></a> </span><span class=cF1>JNS</span><span class=cF0> @@05
|
|
<a name="l100"></a> </span><span class=cF1>ADD</span><span class=cF0> </span><span class=cFC>RCX</span><span class=cF0>, </span><span class=cFC>RDI</span><span class=cF0>
|
|
<a name="l101"></a> </span><span class=cF1>SUB</span><span class=cF0> </span><span class=cFC>RSI</span><span class=cF0>, </span><span class=cFC>RDI</span><span class=cF0>
|
|
<a name="l102"></a> </span><span class=cF1>XOR</span><span class=cF0> </span><span class=cFC>RDI</span><span class=cF0>, </span><span class=cFC>RDI</span><span class=cF0>
|
|
<a name="l103"></a>@@05: </span><span class=cF1>ADD</span><span class=cF0> </span><span class=cFC>RDI</span><span class=cF0>, </span><span class=cF9>U64</span><span class=cF0> </span><span class=cF9>CTask</span><span class=cF0>.win_left[</span><span class=cFC>RBX</span><span class=cF0>]
|
|
<a name="l104"></a> </span><span class=cF1>MOV</span><span class=cF0> </span><span class=cFC>RDX</span><span class=cF0>, </span><span class=cFC>RCX</span><span class=cF0>
|
|
<a name="l105"></a> </span><span class=cF1>ADD</span><span class=cF0> </span><span class=cFC>RDX</span><span class=cF0>, </span><span class=cFC>RDI</span><span class=cF0>
|
|
<a name="l106"></a> </span><span class=cF1>DEC</span><span class=cF0> </span><span class=cFC>RDX</span><span class=cF0>
|
|
<a name="l107"></a> </span><span class=cF1>CMP</span><span class=cF0> </span><span class=cFC>RDX</span><span class=cF0>, </span><span class=cF9>U64</span><span class=cF0> </span><span class=cF9>CTask</span><span class=cF0>.win_right[</span><span class=cFC>RBX</span><span class=cF0>]
|
|
<a name="l108"></a> </span><span class=cF1>JLE</span><span class=cF0> @@10
|
|
<a name="l109"></a> </span><span class=cF1>MOV</span><span class=cF0> </span><span class=cFC>RAX</span><span class=cF0>, </span><span class=cFC>RDX</span><span class=cF0>
|
|
<a name="l110"></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=cF9>CTask</span><span class=cF0>.win_right[</span><span class=cFC>RBX</span><span class=cF0>]
|
|
<a name="l111"></a> </span><span class=cF1>SUB</span><span class=cF0> </span><span class=cFC>RDX</span><span class=cF0>, </span><span class=cFC>RAX</span><span class=cF0>
|
|
<a name="l112"></a> </span><span class=cF1>SUB</span><span class=cF0> </span><span class=cFC>RCX</span><span class=cF0>, </span><span class=cFC>RAX</span><span class=cF0>
|
|
<a name="l113"></a>@@10: </span><span class=cF1>TEST</span><span class=cF0> </span><span class=cFC>RDI</span><span class=cF0>, </span><span class=cFC>RDI</span><span class=cF0>
|
|
<a name="l114"></a> </span><span class=cF1>JNS</span><span class=cF0> @@15
|
|
<a name="l115"></a> </span><span class=cF1>ADD</span><span class=cF0> </span><span class=cFC>RCX</span><span class=cF0>, </span><span class=cFC>RDI</span><span class=cF0>
|
|
<a name="l116"></a> </span><span class=cF1>SUB</span><span class=cF0> </span><span class=cFC>RSI</span><span class=cF0>, </span><span class=cFC>RDI</span><span class=cF0>
|
|
<a name="l117"></a> </span><span class=cF1>XOR</span><span class=cF0> </span><span class=cFC>RDI</span><span class=cF0>, </span><span class=cFC>RDI</span><span class=cF0>
|
|
<a name="l118"></a>@@15: </span><span class=cF1>INC</span><span class=cF0> </span><span class=cFC>RDX</span><span class=cF0>
|
|
<a name="l119"></a> </span><span class=cF1>SUB</span><span class=cF0> </span><span class=cFC>RDX</span><span class=cF0>, </span><span class=cF3>TEXT_COLS</span><span class=cF0>
|
|
<a name="l120"></a> </span><span class=cF1>JLE</span><span class=cF0> @@20
|
|
<a name="l121"></a> </span><span class=cF1>SUB</span><span class=cF0> </span><span class=cFC>RCX</span><span class=cF0>, </span><span class=cFC>RDX</span><span class=cF0>
|
|
<a name="l122"></a>@@20: </span><span class=cF1>CMP</span><span class=cF0> </span><span class=cFC>RCX</span><span class=cF0>, </span><span class=cFE>1</span><span class=cF0>
|
|
<a name="l123"></a> </span><span class=cF1>JL</span><span class=cF0> @@30
|
|
<a name="l124"></a>
|
|
<a name="l125"></a> </span><span class=cF1>MOV</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=cF9>CTask</span><span class=cF0>.scroll_y[</span><span class=cFC>RBX</span><span class=cF0>]
|
|
<a name="l126"></a> </span><span class=cF1>SAR</span><span class=cF0> </span><span class=cFC>RAX</span><span class=cF0>, </span><span class=cFE>3</span><span class=cF0>
|
|
<a name="l127"></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> </span><span class=cF3>SF_ARG3</span><span class=cF0>[</span><span class=cFC>RBP</span><span class=cF0>]
|
|
<a name="l128"></a> </span><span class=cF1>TEST</span><span class=cF0> </span><span class=cFC>RAX</span><span class=cF0>, </span><span class=cFC>RAX</span><span class=cF0>
|
|
<a name="l129"></a> </span><span class=cF1>JS</span><span class=cF0> @@30
|
|
<a name="l130"></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> </span><span class=cF9>CTask</span><span class=cF0>.win_top[</span><span class=cFC>RBX</span><span class=cF0>]
|
|
<a name="l131"></a> </span><span class=cF1>CMP</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=cF9>CTask</span><span class=cF0>.win_bottom[</span><span class=cFC>RBX</span><span class=cF0>]
|
|
<a name="l132"></a> </span><span class=cF1>JG</span><span class=cF0> @@30
|
|
<a name="l133"></a> </span><span class=cF1>TEST</span><span class=cF0> </span><span class=cFC>RAX</span><span class=cF0>, </span><span class=cFC>RAX</span><span class=cF0>
|
|
<a name="l134"></a> </span><span class=cF1>JS</span><span class=cF0> @@30
|
|
<a name="l135"></a> </span><span class=cF1>CMP</span><span class=cF0> </span><span class=cFC>RAX</span><span class=cF0>, </span><span class=cF3>TEXT_ROWS</span><span class=cF0>
|
|
<a name="l136"></a> </span><span class=cF1>JGE</span><span class=cF0> @@30
|
|
<a name="l137"></a>
|
|
<a name="l138"></a> </span><span class=cF1>IMUL2</span><span class=cF0> </span><span class=cFC>RAX</span><span class=cF0>, </span><span class=cF3>TEXT_COLS</span><span class=cF0>
|
|
<a name="l139"></a> </span><span class=cF1>ADD</span><span class=cF0> </span><span class=cFC>RDI</span><span class=cF0>, </span><span class=cFC>RAX</span><span class=cF0>
|
|
<a name="l140"></a> </span><span class=cF1>SHL</span><span class=cF0> </span><span class=cFC>RDI</span><span class=cF0>, </span><span class=cFE>2</span><span class=cF0>
|
|
<a name="l141"></a> </span><span class=cF1>ADD</span><span class=cF0> </span><span class=cFC>RDI</span><span class=cF0>, </span><span class=cF9>U64</span><span class=cF0> [&</span><span class=cFB>gr</span><span class=cF0>.text_base]
|
|
<a name="l142"></a> </span><span class=cF1>MOV</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=cF3>SF_ARG5</span><span class=cF0>[</span><span class=cFC>RBP</span><span class=cF0>]
|
|
<a name="l143"></a>@@25: </span><span class=cF1>LODSB</span><span class=cF0>
|
|
<a name="l144"></a> </span><span class=cF1>STOSD</span><span class=cF0>
|
|
<a name="l145"></a> </span><span class=cF1>DEC</span><span class=cF0> </span><span class=cFC>RCX</span><span class=cF0>
|
|
<a name="l146"></a> </span><span class=cF1>JNZ</span><span class=cF0> @@25
|
|
<a name="l147"></a>
|
|
<a name="l148"></a> </span><span class=cF1>POP</span><span class=cF0> </span><span class=cFC>RDI</span><span class=cF0>
|
|
<a name="l149"></a> </span><span class=cF1>POP</span><span class=cF0> </span><span class=cFC>RSI</span><span class=cF0>
|
|
<a name="l150"></a> </span><span class=cF1>MOV</span><span class=cF0> </span><span class=cFC>RAX</span><span class=cF0>, </span><span class=cF3>TRUE</span><span class=cF0>
|
|
<a name="l151"></a> </span><span class=cF1>POP</span><span class=cF0> </span><span class=cFC>RBP</span><span class=cF0>
|
|
<a name="l152"></a> </span><span class=cF1>RET1</span><span class=cF0> </span><span class=cFE>48</span><span class=cF0>
|
|
<a name="l153"></a>
|
|
<a name="l154"></a>@@30: </span><span class=cF1>POP</span><span class=cF0> </span><span class=cFC>RDI</span><span class=cF0>
|
|
<a name="l155"></a> </span><span class=cF1>POP</span><span class=cF0> </span><span class=cFC>RSI</span><span class=cF0>
|
|
<a name="l156"></a> </span><span class=cF1>XOR</span><span class=cF0> </span><span class=cFC>RAX</span><span class=cF0>, </span><span class=cFC>RAX</span><span class=cF0>
|
|
<a name="l157"></a> </span><span class=cF1>POP</span><span class=cF0> </span><span class=cFC>RBP</span><span class=cF0>
|
|
<a name="l158"></a> </span><span class=cF1>RET1</span><span class=cF0> </span><span class=cFE>48</span><span class=cF0>
|
|
<a name="l159"></a></span><span class=cF2>//************************************</span><span class=cF0>
|
|
<a name="l160"></a></span><span class=cFD>_TEXT_LEN_ATTR_STR</span><span class=cF0>::
|
|
<a name="l161"></a></span><span class=cF2>//Bool TextLenAttrStr(CTask *task,I64 x,I64 y,I64 len,U32 *_attr)</span><span class=cF0>
|
|
<a name="l162"></a></span><span class=cF2>//Must be called 60fps in Fs->draw_it() callback.</span><span class=cF0>
|
|
<a name="l163"></a> </span><span class=cF1>PUSH</span><span class=cF0> </span><span class=cFC>RBP</span><span class=cF0>
|
|
<a name="l164"></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="l165"></a> </span><span class=cF1>PUSH</span><span class=cF0> </span><span class=cFC>RSI</span><span class=cF0>
|
|
<a name="l166"></a> </span><span class=cF1>PUSH</span><span class=cF0> </span><span class=cFC>RDI</span><span class=cF0>
|
|
<a name="l167"></a> </span><span class=cF1>MOV</span><span class=cF0> </span><span class=cFC>RBX</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="l168"></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_ARG5</span><span class=cF0>[</span><span class=cFC>RBP</span><span class=cF0>]
|
|
<a name="l169"></a> </span><span class=cF1>MOV</span><span class=cF0> </span><span class=cFC>RDI</span><span class=cF0>, </span><span class=cF9>U64</span><span class=cF0> </span><span class=cF9>CTask</span><span class=cF0>.scroll_x[</span><span class=cFC>RBX</span><span class=cF0>]
|
|
<a name="l170"></a> </span><span class=cF1>SAR</span><span class=cF0> </span><span class=cFC>RDI</span><span class=cF0>, </span><span class=cFE>3</span><span class=cF0>
|
|
<a name="l171"></a> </span><span class=cF1>ADD</span><span class=cF0> </span><span class=cFC>RDI</span><span class=cF0>, </span><span class=cF9>U64</span><span class=cF0> </span><span class=cF3>SF_ARG2</span><span class=cF0>[</span><span class=cFC>RBP</span><span class=cF0>]
|
|
<a name="l172"></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_ARG4</span><span class=cF0>[</span><span class=cFC>RBP</span><span class=cF0>]
|
|
<a name="l173"></a>
|
|
<a name="l174"></a> </span><span class=cF1>TEST</span><span class=cF0> </span><span class=cFC>RDI</span><span class=cF0>, </span><span class=cFC>RDI</span><span class=cF0>
|
|
<a name="l175"></a> </span><span class=cF1>JNS</span><span class=cF0> @@05
|
|
<a name="l176"></a> </span><span class=cF1>ADD</span><span class=cF0> </span><span class=cFC>RCX</span><span class=cF0>, </span><span class=cFC>RDI</span><span class=cF0>
|
|
<a name="l177"></a> </span><span class=cF1>SHL</span><span class=cF0> </span><span class=cFC>RDI</span><span class=cF0>, </span><span class=cFE>2</span><span class=cF0>
|
|
<a name="l178"></a> </span><span class=cF1>SUB</span><span class=cF0> </span><span class=cFC>RSI</span><span class=cF0>, </span><span class=cFC>RDI</span><span class=cF0>
|
|
<a name="l179"></a> </span><span class=cF1>XOR</span><span class=cF0> </span><span class=cFC>RDI</span><span class=cF0>, </span><span class=cFC>RDI</span><span class=cF0>
|
|
<a name="l180"></a>@@05: </span><span class=cF1>ADD</span><span class=cF0> </span><span class=cFC>RDI</span><span class=cF0>, </span><span class=cF9>U64</span><span class=cF0> </span><span class=cF9>CTask</span><span class=cF0>.win_left[</span><span class=cFC>RBX</span><span class=cF0>]
|
|
<a name="l181"></a> </span><span class=cF1>MOV</span><span class=cF0> </span><span class=cFC>RDX</span><span class=cF0>, </span><span class=cFC>RCX</span><span class=cF0>
|
|
<a name="l182"></a> </span><span class=cF1>ADD</span><span class=cF0> </span><span class=cFC>RDX</span><span class=cF0>, </span><span class=cFC>RDI</span><span class=cF0>
|
|
<a name="l183"></a> </span><span class=cF1>DEC</span><span class=cF0> </span><span class=cFC>RDX</span><span class=cF0>
|
|
<a name="l184"></a> </span><span class=cF1>CMP</span><span class=cF0> </span><span class=cFC>RDX</span><span class=cF0>, </span><span class=cF9>U64</span><span class=cF0> </span><span class=cF9>CTask</span><span class=cF0>.win_right[</span><span class=cFC>RBX</span><span class=cF0>]
|
|
<a name="l185"></a> </span><span class=cF1>JLE</span><span class=cF0> @@10
|
|
<a name="l186"></a> </span><span class=cF1>MOV</span><span class=cF0> </span><span class=cFC>RAX</span><span class=cF0>, </span><span class=cFC>RDX</span><span class=cF0>
|
|
<a name="l187"></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=cF9>CTask</span><span class=cF0>.win_right[</span><span class=cFC>RBX</span><span class=cF0>]
|
|
<a name="l188"></a> </span><span class=cF1>SUB</span><span class=cF0> </span><span class=cFC>RDX</span><span class=cF0>, </span><span class=cFC>RAX</span><span class=cF0>
|
|
<a name="l189"></a> </span><span class=cF1>SUB</span><span class=cF0> </span><span class=cFC>RCX</span><span class=cF0>, </span><span class=cFC>RAX</span><span class=cF0>
|
|
<a name="l190"></a>@@10: </span><span class=cF1>TEST</span><span class=cF0> </span><span class=cFC>RDI</span><span class=cF0>, </span><span class=cFC>RDI</span><span class=cF0>
|
|
<a name="l191"></a> </span><span class=cF1>JNS</span><span class=cF0> @@15
|
|
<a name="l192"></a> </span><span class=cF1>ADD</span><span class=cF0> </span><span class=cFC>RCX</span><span class=cF0>, </span><span class=cFC>RDI</span><span class=cF0>
|
|
<a name="l193"></a> </span><span class=cF1>SHL</span><span class=cF0> </span><span class=cFC>RDI</span><span class=cF0>, </span><span class=cFE>2</span><span class=cF0>
|
|
<a name="l194"></a> </span><span class=cF1>SUB</span><span class=cF0> </span><span class=cFC>RSI</span><span class=cF0>, </span><span class=cFC>RDI</span><span class=cF0>
|
|
<a name="l195"></a> </span><span class=cF1>XOR</span><span class=cF0> </span><span class=cFC>RDI</span><span class=cF0>, </span><span class=cFC>RDI</span><span class=cF0>
|
|
<a name="l196"></a>@@15: </span><span class=cF1>INC</span><span class=cF0> </span><span class=cFC>RDX</span><span class=cF0>
|
|
<a name="l197"></a> </span><span class=cF1>SUB</span><span class=cF0> </span><span class=cFC>RDX</span><span class=cF0>, </span><span class=cF3>TEXT_COLS</span><span class=cF0>
|
|
<a name="l198"></a> </span><span class=cF1>JLE</span><span class=cF0> @@20
|
|
<a name="l199"></a> </span><span class=cF1>SUB</span><span class=cF0> </span><span class=cFC>RCX</span><span class=cF0>, </span><span class=cFC>RDX</span><span class=cF0>
|
|
<a name="l200"></a>@@20: </span><span class=cF1>CMP</span><span class=cF0> </span><span class=cFC>RCX</span><span class=cF0>, </span><span class=cFE>1</span><span class=cF0>
|
|
<a name="l201"></a> </span><span class=cF1>JL</span><span class=cF0> @@30
|
|
<a name="l202"></a>
|
|
<a name="l203"></a> </span><span class=cF1>MOV</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=cF9>CTask</span><span class=cF0>.scroll_y[</span><span class=cFC>RBX</span><span class=cF0>]
|
|
<a name="l204"></a> </span><span class=cF1>SAR</span><span class=cF0> </span><span class=cFC>RAX</span><span class=cF0>, </span><span class=cFE>3</span><span class=cF0>
|
|
<a name="l205"></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> </span><span class=cF3>SF_ARG3</span><span class=cF0>[</span><span class=cFC>RBP</span><span class=cF0>]
|
|
<a name="l206"></a> </span><span class=cF1>TEST</span><span class=cF0> </span><span class=cFC>RAX</span><span class=cF0>, </span><span class=cFC>RAX</span><span class=cF0>
|
|
<a name="l207"></a> </span><span class=cF1>JS</span><span class=cF0> @@30
|
|
<a name="l208"></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> </span><span class=cF9>CTask</span><span class=cF0>.win_top[</span><span class=cFC>RBX</span><span class=cF0>]
|
|
<a name="l209"></a> </span><span class=cF1>CMP</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=cF9>CTask</span><span class=cF0>.win_bottom[</span><span class=cFC>RBX</span><span class=cF0>]
|
|
<a name="l210"></a> </span><span class=cF1>JG</span><span class=cF0> @@30
|
|
<a name="l211"></a> </span><span class=cF1>TEST</span><span class=cF0> </span><span class=cFC>RAX</span><span class=cF0>, </span><span class=cFC>RAX</span><span class=cF0>
|
|
<a name="l212"></a> </span><span class=cF1>JS</span><span class=cF0> @@30
|
|
<a name="l213"></a> </span><span class=cF1>CMP</span><span class=cF0> </span><span class=cFC>RAX</span><span class=cF0>, </span><span class=cF3>TEXT_ROWS</span><span class=cF0>
|
|
<a name="l214"></a> </span><span class=cF1>JGE</span><span class=cF0> @@30
|
|
<a name="l215"></a>
|
|
<a name="l216"></a> </span><span class=cF1>IMUL2</span><span class=cF0> </span><span class=cFC>RAX</span><span class=cF0>, </span><span class=cF3>TEXT_COLS</span><span class=cF0>
|
|
<a name="l217"></a> </span><span class=cF1>ADD</span><span class=cF0> </span><span class=cFC>RDI</span><span class=cF0>, </span><span class=cFC>RAX</span><span class=cF0>
|
|
<a name="l218"></a> </span><span class=cF1>SHL</span><span class=cF0> </span><span class=cFC>RDI</span><span class=cF0>, </span><span class=cFE>2</span><span class=cF0>
|
|
<a name="l219"></a> </span><span class=cF1>ADD</span><span class=cF0> </span><span class=cFC>RDI</span><span class=cF0>, </span><span class=cF9>U64</span><span class=cF0> [&</span><span class=cFB>gr</span><span class=cF0>.text_base]
|
|
<a name="l220"></a>@@25: </span><span class=cF1>MOVSD</span><span class=cF0>
|
|
<a name="l221"></a> </span><span class=cF1>DEC</span><span class=cF0> </span><span class=cFC>RCX</span><span class=cF0>
|
|
<a name="l222"></a> </span><span class=cF1>JNZ</span><span class=cF0> @@25
|
|
<a name="l223"></a>
|
|
<a name="l224"></a> </span><span class=cF1>POP</span><span class=cF0> </span><span class=cFC>RDI</span><span class=cF0>
|
|
<a name="l225"></a> </span><span class=cF1>POP</span><span class=cF0> </span><span class=cFC>RSI</span><span class=cF0>
|
|
<a name="l226"></a> </span><span class=cF1>MOV</span><span class=cF0> </span><span class=cFC>RAX</span><span class=cF0>, </span><span class=cF3>TRUE</span><span class=cF0>
|
|
<a name="l227"></a> </span><span class=cF1>POP</span><span class=cF0> </span><span class=cFC>RBP</span><span class=cF0>
|
|
<a name="l228"></a> </span><span class=cF1>RET1</span><span class=cF0> </span><span class=cFE>40</span><span class=cF0>
|
|
<a name="l229"></a>
|
|
<a name="l230"></a>@@30: </span><span class=cF1>POP</span><span class=cF0> </span><span class=cFC>RDI</span><span class=cF0>
|
|
<a name="l231"></a> </span><span class=cF1>POP</span><span class=cF0> </span><span class=cFC>RSI</span><span class=cF0>
|
|
<a name="l232"></a> </span><span class=cF1>XOR</span><span class=cF0> </span><span class=cFC>RAX</span><span class=cF0>, </span><span class=cFC>RAX</span><span class=cF0>
|
|
<a name="l233"></a> </span><span class=cF1>POP</span><span class=cF0> </span><span class=cFC>RBP</span><span class=cF0>
|
|
<a name="l234"></a> </span><span class=cF1>RET1</span><span class=cF0> </span><span class=cFE>40</span><span class=cF0>
|
|
<a name="l235"></a></span><span class=cF2>//************************************</span><span class=cF0>
|
|
<a name="l236"></a></span><span class=cFD>_TEXT_LEN_ATTR</span><span class=cF0>::</span><span class=cF2>//Bool TextLenAttr(CTask *task,I64 x,I64 y,I64 len,I64 attr)</span><span class=cF0>
|
|
<a name="l237"></a></span><span class=cF2>//Must be called 60fps in Fs->draw_it() callback.</span><span class=cF0>
|
|
<a name="l238"></a> </span><span class=cF1>PUSH</span><span class=cF0> </span><span class=cFC>RBP</span><span class=cF0>
|
|
<a name="l239"></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="l240"></a> </span><span class=cF1>PUSH</span><span class=cF0> </span><span class=cFC>RSI</span><span class=cF0>
|
|
<a name="l241"></a> </span><span class=cF1>PUSH</span><span class=cF0> </span><span class=cFC>RDI</span><span class=cF0>
|
|
<a name="l242"></a> </span><span class=cF1>MOV</span><span class=cF0> </span><span class=cFC>RBX</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="l243"></a> </span><span class=cF1>MOV</span><span class=cF0> </span><span class=cFC>RDI</span><span class=cF0>, </span><span class=cF9>U64</span><span class=cF0> </span><span class=cF9>CTask</span><span class=cF0>.scroll_x[</span><span class=cFC>RBX</span><span class=cF0>]
|
|
<a name="l244"></a> </span><span class=cF1>SAR</span><span class=cF0> </span><span class=cFC>RDI</span><span class=cF0>, </span><span class=cFE>3</span><span class=cF0>
|
|
<a name="l245"></a> </span><span class=cF1>ADD</span><span class=cF0> </span><span class=cFC>RDI</span><span class=cF0>, </span><span class=cF9>U64</span><span class=cF0> </span><span class=cF3>SF_ARG2</span><span class=cF0>[</span><span class=cFC>RBP</span><span class=cF0>]
|
|
<a name="l246"></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_ARG4</span><span class=cF0>[</span><span class=cFC>RBP</span><span class=cF0>]
|
|
<a name="l247"></a>
|
|
<a name="l248"></a> </span><span class=cF1>TEST</span><span class=cF0> </span><span class=cFC>RDI</span><span class=cF0>, </span><span class=cFC>RDI</span><span class=cF0>
|
|
<a name="l249"></a> </span><span class=cF1>JNS</span><span class=cF0> @@05
|
|
<a name="l250"></a> </span><span class=cF1>ADD</span><span class=cF0> </span><span class=cFC>RCX</span><span class=cF0>, </span><span class=cFC>RDI</span><span class=cF0>
|
|
<a name="l251"></a> </span><span class=cF1>XOR</span><span class=cF0> </span><span class=cFC>RDI</span><span class=cF0>, </span><span class=cFC>RDI</span><span class=cF0>
|
|
<a name="l252"></a>@@05: </span><span class=cF1>ADD</span><span class=cF0> </span><span class=cFC>RDI</span><span class=cF0>, </span><span class=cF9>U64</span><span class=cF0> </span><span class=cF9>CTask</span><span class=cF0>.win_left[</span><span class=cFC>RBX</span><span class=cF0>]
|
|
<a name="l253"></a> </span><span class=cF1>MOV</span><span class=cF0> </span><span class=cFC>RDX</span><span class=cF0>, </span><span class=cFC>RCX</span><span class=cF0>
|
|
<a name="l254"></a> </span><span class=cF1>ADD</span><span class=cF0> </span><span class=cFC>RDX</span><span class=cF0>, </span><span class=cFC>RDI</span><span class=cF0>
|
|
<a name="l255"></a> </span><span class=cF1>DEC</span><span class=cF0> </span><span class=cFC>RDX</span><span class=cF0>
|
|
<a name="l256"></a> </span><span class=cF1>CMP</span><span class=cF0> </span><span class=cFC>RDX</span><span class=cF0>, </span><span class=cF9>U64</span><span class=cF0> </span><span class=cF9>CTask</span><span class=cF0>.win_right[</span><span class=cFC>RBX</span><span class=cF0>]
|
|
<a name="l257"></a> </span><span class=cF1>JLE</span><span class=cF0> @@10
|
|
<a name="l258"></a> </span><span class=cF1>MOV</span><span class=cF0> </span><span class=cFC>RAX</span><span class=cF0>, </span><span class=cFC>RDX</span><span class=cF0>
|
|
<a name="l259"></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=cF9>CTask</span><span class=cF0>.win_right[</span><span class=cFC>RBX</span><span class=cF0>]
|
|
<a name="l260"></a> </span><span class=cF1>SUB</span><span class=cF0> </span><span class=cFC>RDX</span><span class=cF0>, </span><span class=cFC>RAX</span><span class=cF0>
|
|
<a name="l261"></a> </span><span class=cF1>SUB</span><span class=cF0> </span><span class=cFC>RCX</span><span class=cF0>, </span><span class=cFC>RAX</span><span class=cF0>
|
|
<a name="l262"></a>@@10: </span><span class=cF1>TEST</span><span class=cF0> </span><span class=cFC>RDI</span><span class=cF0>, </span><span class=cFC>RDI</span><span class=cF0>
|
|
<a name="l263"></a> </span><span class=cF1>JNS</span><span class=cF0> @@15
|
|
<a name="l264"></a> </span><span class=cF1>ADD</span><span class=cF0> </span><span class=cFC>RCX</span><span class=cF0>, </span><span class=cFC>RDI</span><span class=cF0>
|
|
<a name="l265"></a> </span><span class=cF1>XOR</span><span class=cF0> </span><span class=cFC>RDI</span><span class=cF0>, </span><span class=cFC>RDI</span><span class=cF0>
|
|
<a name="l266"></a>@@15: </span><span class=cF1>INC</span><span class=cF0> </span><span class=cFC>RDX</span><span class=cF0>
|
|
<a name="l267"></a> </span><span class=cF1>SUB</span><span class=cF0> </span><span class=cFC>RDX</span><span class=cF0>, </span><span class=cF3>TEXT_COLS</span><span class=cF0>
|
|
<a name="l268"></a> </span><span class=cF1>JLE</span><span class=cF0> @@20
|
|
<a name="l269"></a> </span><span class=cF1>SUB</span><span class=cF0> </span><span class=cFC>RCX</span><span class=cF0>, </span><span class=cFC>RDX</span><span class=cF0>
|
|
<a name="l270"></a>@@20: </span><span class=cF1>CMP</span><span class=cF0> </span><span class=cFC>RCX</span><span class=cF0>, </span><span class=cFE>1</span><span class=cF0>
|
|
<a name="l271"></a> </span><span class=cF1>JL</span><span class=cF0> @@35
|
|
<a name="l272"></a>
|
|
<a name="l273"></a> </span><span class=cF1>MOV</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=cF9>CTask</span><span class=cF0>.scroll_y[</span><span class=cFC>RBX</span><span class=cF0>]
|
|
<a name="l274"></a> </span><span class=cF1>SAR</span><span class=cF0> </span><span class=cFC>RAX</span><span class=cF0>, </span><span class=cFE>3</span><span class=cF0>
|
|
<a name="l275"></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> </span><span class=cF3>SF_ARG3</span><span class=cF0>[</span><span class=cFC>RBP</span><span class=cF0>]
|
|
<a name="l276"></a> </span><span class=cF1>TEST</span><span class=cF0> </span><span class=cFC>RAX</span><span class=cF0>, </span><span class=cFC>RAX</span><span class=cF0>
|
|
<a name="l277"></a> </span><span class=cF1>JS</span><span class=cF0> @@35
|
|
<a name="l278"></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> </span><span class=cF9>CTask</span><span class=cF0>.win_top[</span><span class=cFC>RBX</span><span class=cF0>]
|
|
<a name="l279"></a> </span><span class=cF1>CMP</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=cF9>CTask</span><span class=cF0>.win_bottom[</span><span class=cFC>RBX</span><span class=cF0>]
|
|
<a name="l280"></a> </span><span class=cF1>JG</span><span class=cF0> @@35
|
|
<a name="l281"></a> </span><span class=cF1>TEST</span><span class=cF0> </span><span class=cFC>RAX</span><span class=cF0>, </span><span class=cFC>RAX</span><span class=cF0>
|
|
<a name="l282"></a> </span><span class=cF1>JS</span><span class=cF0> @@35
|
|
<a name="l283"></a> </span><span class=cF1>CMP</span><span class=cF0> </span><span class=cFC>RAX</span><span class=cF0>, </span><span class=cF3>TEXT_ROWS</span><span class=cF0>
|
|
<a name="l284"></a> </span><span class=cF1>JGE</span><span class=cF0> @@35
|
|
<a name="l285"></a>
|
|
<a name="l286"></a> </span><span class=cF1>IMUL2</span><span class=cF0> </span><span class=cFC>RAX</span><span class=cF0>, </span><span class=cF3>TEXT_COLS</span><span class=cF0>
|
|
<a name="l287"></a> </span><span class=cF1>ADD</span><span class=cF0> </span><span class=cFC>RDI</span><span class=cF0>, </span><span class=cFC>RAX</span><span class=cF0>
|
|
<a name="l288"></a> </span><span class=cF1>SHL</span><span class=cF0> </span><span class=cFC>RDI</span><span class=cF0>, </span><span class=cFE>2</span><span class=cF0>
|
|
<a name="l289"></a> </span><span class=cF1>ADD</span><span class=cF0> </span><span class=cFC>RDI</span><span class=cF0>, </span><span class=cF9>U64</span><span class=cF0> [&</span><span class=cFB>gr</span><span class=cF0>.text_base]
|
|
<a name="l290"></a> </span><span class=cF1>MOV</span><span class=cF0> </span><span class=cFC>RBX</span><span class=cF0>, </span><span class=cF9>U64</span><span class=cF0> </span><span class=cF3>SF_ARG5</span><span class=cF0>[</span><span class=cFC>RBP</span><span class=cF0>]
|
|
<a name="l291"></a> </span><span class=cF1>MOV</span><span class=cF0> </span><span class=cFC>RSI</span><span class=cF0>, </span><span class=cFC>RDI</span><span class=cF0>
|
|
<a name="l292"></a>@@25: </span><span class=cF1>LODSD</span><span class=cF0>
|
|
<a name="l293"></a> </span><span class=cF1>TEST</span><span class=cF0> </span><span class=cFC>AL</span><span class=cF0>, </span><span class=cFC>AL</span><span class=cF0>
|
|
<a name="l294"></a> </span><span class=cF1>JNZ</span><span class=cF0> @@30
|
|
<a name="l295"></a> </span><span class=cF1>MOV</span><span class=cF0> </span><span class=cFC>RAX</span><span class=cF0>, </span><span class=cFC>RBX</span><span class=cF0>
|
|
<a name="l296"></a> </span><span class=cF1>STOSD</span><span class=cF0>
|
|
<a name="l297"></a> </span><span class=cF1>DEC</span><span class=cF0> </span><span class=cFC>RCX</span><span class=cF0>
|
|
<a name="l298"></a> </span><span class=cF1>JNZ</span><span class=cF0> @@25
|
|
<a name="l299"></a>
|
|
<a name="l300"></a>@@30: </span><span class=cF1>POP</span><span class=cF0> </span><span class=cFC>RDI</span><span class=cF0>
|
|
<a name="l301"></a> </span><span class=cF1>POP</span><span class=cF0> </span><span class=cFC>RSI</span><span class=cF0>
|
|
<a name="l302"></a> </span><span class=cF1>MOV</span><span class=cF0> </span><span class=cFC>RAX</span><span class=cF0>, </span><span class=cF3>TRUE</span><span class=cF0>
|
|
<a name="l303"></a> </span><span class=cF1>POP</span><span class=cF0> </span><span class=cFC>RBP</span><span class=cF0>
|
|
<a name="l304"></a> </span><span class=cF1>RET1</span><span class=cF0> </span><span class=cFE>40</span><span class=cF0>
|
|
<a name="l305"></a>
|
|
<a name="l306"></a>@@35: </span><span class=cF1>POP</span><span class=cF0> </span><span class=cFC>RDI</span><span class=cF0>
|
|
<a name="l307"></a> </span><span class=cF1>POP</span><span class=cF0> </span><span class=cFC>RSI</span><span class=cF0>
|
|
<a name="l308"></a> </span><span class=cF1>XOR</span><span class=cF0> </span><span class=cFC>RAX</span><span class=cF0>, </span><span class=cFC>RAX</span><span class=cF0>
|
|
<a name="l309"></a> </span><span class=cF1>POP</span><span class=cF0> </span><span class=cFC>RBP</span><span class=cF0>
|
|
<a name="l310"></a> </span><span class=cF1>RET1</span><span class=cF0> </span><span class=cFE>40</span><span class=cF0>
|
|
<a name="l311"></a>}
|
|
<a name="l312"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>_extern</span><span class=cF0> </span><span class=cFD>_TEXT_CHAR</span><span class=cF0> </span><span class=cF1>Bool</span><span class=cF0> </span><span class=cF5>TextChar</span><span class=cF0>(</span><span class=cF9>CTask</span><span class=cF0> *task, </span><span class=cF1>Bool</span><span class=cF0> allow_border=</span><span class=cF3>FALSE</span><span class=cF0>, </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> d);
|
|
<a name="l313"></a></span><span class=cF2>//Plot char. 60fps in Fs->draw_it() callback.</span><span class=cF0>
|
|
<a name="l314"></a>
|
|
<a name="l315"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>_extern</span><span class=cF0> </span><span class=cFD>_TEXT_LEN_STR</span><span class=cF0> </span><span class=cF1>Bool</span><span class=cF0> </span><span class=cF5>TextLenStr</span><span class=cF0>(</span><span class=cF9>CTask</span><span class=cF0> *task, </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> len, </span><span class=cF9>I64</span><span class=cF0> attr, </span><span class=cF1>U8</span><span class=cF0> *s);
|
|
<a name="l316"></a></span><span class=cF2>//Plot str with len. 60fps in Fs->draw_it() callback.</span><span class=cF0>
|
|
<a name="l317"></a>
|
|
<a name="l318"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>_extern</span><span class=cF0> </span><span class=cFD>_TEXT_LEN_ATTR_STR</span><span class=cF0> </span><span class=cF1>Bool</span><span class=cF0> </span><span class=cF5>TextLenAttrStr</span><span class=cF0>(</span><span class=cF9>CTask</span><span class=cF0> *task, </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> len, </span><span class=cF9>U32</span><span class=cF0> *_attr);
|
|
<a name="l319"></a></span><span class=cF2>//Plot attr str with len.</span><span class=cF0> </span><span class=cF2>60fps in Fs->draw_it() callback.</span><span class=cF0>
|
|
<a name="l320"></a>
|
|
<a name="l321"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>_extern</span><span class=cF0> </span><span class=cFD>_TEXT_LEN_ATTR</span><span class=cF0> </span><span class=cF1>Bool</span><span class=cF0> </span><span class=cF5>TextLenAttr</span><span class=cF0>(</span><span class=cF9>CTask</span><span class=cF0> *task, </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> len, </span><span class=cF9>I64</span><span class=cF0> attr);
|
|
<a name="l322"></a></span><span class=cF2>//Plot attrs with len. 60fps in Fs->draw_it() callback.</span><span class=cF0>
|
|
<a name="l323"></a>
|
|
<a name="l324"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>TextPrint</span><span class=cF0>(</span><span class=cF9>CTask</span><span class=cF0> *task, </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> attr, </span><span class=cF1>U8</span><span class=cF0> *format, ...)
|
|
<a name="l325"></a>{</span><span class=cF2>//Plot chars. 60fps in Fs->draw_it() callback.</span><span class=cF0>
|
|
<a name="l326"></a></span><span class=cF2>//You probably want </span><a href="https://zeal-operating-system.github.io/ZealOS/System/Gr/GrBitMap.CC.html#l1194"><span class=cF4>GrPrint</span></a><span class=cF2>() or just </span><a href="https://zeal-operating-system.github.io/ZealOS/Kernel/StrPrint.CC.html#l1110"><span class=cF4>Print</span></a><span class=cF2>().</span><span class=cF0>
|
|
<a name="l327"></a> </span><span class=cF1>U8</span><span class=cF0> *buf = </span><span class=cF5>StrPrintJoin</span><span class=cF0>(</span><span class=cF3>NULL</span><span class=cF0>, format, argc, argv);
|
|
<a name="l328"></a>
|
|
<a name="l329"></a> </span><span class=cF5>TextLenStr</span><span class=cF0>(task, x, y, </span><span class=cF5>StrLen</span><span class=cF7>(</span><span class=cF0>buf</span><span class=cF7>)</span><span class=cF0>, attr<<</span><span class=cFE>8</span><span class=cF0>, buf);
|
|
<a name="l330"></a> </span><span class=cF5>Free</span><span class=cF0>(buf);
|
|
<a name="l331"></a>}
|
|
<a name="l332"></a>
|
|
<a name="l333"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>TextBorder</span><span class=cF0>(</span><span class=cF9>CTask</span><span class=cF0> *task=</span><span class=cF3>NULL</span><span class=cF0>, </span><span class=cF9>I64</span><span class=cF0> l, </span><span class=cF9>I64</span><span class=cF0> r, </span><span class=cF9>I64</span><span class=cF0> t, </span><span class=cF9>I64</span><span class=cF0> b, </span><span class=cF9>I64</span><span class=cF0> attr, </span><span class=cF1>Bool</span><span class=cF0> solid)
|
|
<a name="l334"></a>{</span><span class=cF2>//Plot border square. 60fps in Fs->draw_it() callback.</span><span class=cF0>
|
|
<a name="l335"></a></span><span class=cF2>//Draws window borders or DolDoc text bttn borders.</span><span class=cF0>
|
|
<a name="l336"></a> </span><span class=cF2>//Set task=sys_winmgr_task for no clipping.</span><span class=cF0>
|
|
<a name="l337"></a> </span><span class=cF9>I64</span><span class=cF0> i;
|
|
<a name="l338"></a>
|
|
<a name="l339"></a> </span><span class=cF1>if</span><span class=cF0> (!task)
|
|
<a name="l340"></a> task = </span><span class=cF5>Fs</span><span class=cF0>;
|
|
<a name="l341"></a>
|
|
<a name="l342"></a> attr <<= </span><span class=cFE>8</span><span class=cF0>;
|
|
<a name="l343"></a> </span><span class=cF5>TextChar</span><span class=cF0>(task,, l - </span><span class=cFE>1</span><span class=cF0>, t - </span><span class=cFE>1</span><span class=cF0>, </span><span class=cFB>text</span><span class=cF0>.border_chars[</span><span class=cFE>6</span><span class=cF0> + solid] + attr);
|
|
<a name="l344"></a> </span><span class=cF5>TextChar</span><span class=cF0>(task,, r + </span><span class=cFE>1</span><span class=cF0>, t - </span><span class=cFE>1</span><span class=cF0>, </span><span class=cFB>text</span><span class=cF0>.border_chars[</span><span class=cFE>8</span><span class=cF0> + solid] + attr);
|
|
<a name="l345"></a> </span><span class=cF5>TextChar</span><span class=cF0>(task,, l - </span><span class=cFE>1</span><span class=cF0>, b + </span><span class=cFE>1</span><span class=cF0>, </span><span class=cFB>text</span><span class=cF0>.border_chars[</span><span class=cFE>10</span><span class=cF0> + solid] + attr);
|
|
<a name="l346"></a> </span><span class=cF5>TextChar</span><span class=cF0>(task,, r + </span><span class=cFE>1</span><span class=cF0>, b + </span><span class=cFE>1</span><span class=cF0>, </span><span class=cFB>text</span><span class=cF0>.border_chars[</span><span class=cFE>12</span><span class=cF0> + solid] + attr);
|
|
<a name="l347"></a> </span><span class=cF1>for</span><span class=cF0> (i = l; i <= r; i++)
|
|
<a name="l348"></a> </span><span class=cF7>{</span><span class=cF0>
|
|
<a name="l349"></a> </span><span class=cF5>TextChar</span><span class=cF0>(task,, i, t - </span><span class=cFE>1</span><span class=cF0>, </span><span class=cFB>text</span><span class=cF0>.border_chars[</span><span class=cFE>2</span><span class=cF0> + solid] + attr);
|
|
<a name="l350"></a> </span><span class=cF5>TextChar</span><span class=cF0>(task,, i, b + </span><span class=cFE>1</span><span class=cF0>, </span><span class=cFB>text</span><span class=cF0>.border_chars[</span><span class=cFE>2</span><span class=cF0> + solid] + attr);
|
|
<a name="l351"></a> </span><span class=cF7>}</span><span class=cF0>
|
|
<a name="l352"></a> </span><span class=cF1>for</span><span class=cF0> (i = t; i <= b; i++)
|
|
<a name="l353"></a> </span><span class=cF7>{</span><span class=cF0>
|
|
<a name="l354"></a> </span><span class=cF5>TextChar</span><span class=cF0>(task,, l - </span><span class=cFE>1</span><span class=cF0>, i, </span><span class=cFB>text</span><span class=cF0>.border_chars[</span><span class=cFE>4</span><span class=cF0> + solid] + attr);
|
|
<a name="l355"></a> </span><span class=cF5>TextChar</span><span class=cF0>(task,, r + </span><span class=cFE>1</span><span class=cF0>, i, </span><span class=cFB>text</span><span class=cF0>.border_chars[</span><span class=cFE>4</span><span class=cF0> + solid] + attr);
|
|
<a name="l356"></a> </span><span class=cF7>}</span><span class=cF0>
|
|
<a name="l357"></a>}
|
|
<a name="l358"></a>
|
|
<a name="l359"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>TextRect</span><span class=cF0>(</span><span class=cF9>I64</span><span class=cF0> l, </span><span class=cF9>I64</span><span class=cF0> r, </span><span class=cF9>I64</span><span class=cF0> t, </span><span class=cF9>I64</span><span class=cF0> b, </span><span class=cF9>I64</span><span class=cF0> d)
|
|
<a name="l360"></a>{</span><span class=cF2>//Fill text rect. 60fps in Fs->draw_it() callback.</span><span class=cF0>
|
|
<a name="l361"></a> </span><span class=cF9>I64</span><span class=cF0> y, w;
|
|
<a name="l362"></a>
|
|
<a name="l363"></a> </span><span class=cF1>if</span><span class=cF0> (l > r || t > b)
|
|
<a name="l364"></a> </span><span class=cF1>return</span><span class=cF0>;
|
|
<a name="l365"></a> </span><span class=cF1>if</span><span class=cF0> (t < </span><span class=cFE>0</span><span class=cF0>)
|
|
<a name="l366"></a> t = </span><span class=cFE>0</span><span class=cF0>;
|
|
<a name="l367"></a> </span><span class=cF1>if</span><span class=cF0> (b >= </span><span class=cF3>TEXT_ROWS</span><span class=cF0>)
|
|
<a name="l368"></a> b = </span><span class=cF3>TEXT_ROWS</span><span class=cF0> - </span><span class=cFE>1</span><span class=cF0>;
|
|
<a name="l369"></a> </span><span class=cF1>if</span><span class=cF0> (l < </span><span class=cFE>0</span><span class=cF0>)
|
|
<a name="l370"></a> l = </span><span class=cFE>0</span><span class=cF0>;
|
|
<a name="l371"></a> </span><span class=cF1>if</span><span class=cF0> (r >= </span><span class=cF3>TEXT_COLS</span><span class=cF0>)
|
|
<a name="l372"></a> r = </span><span class=cF3>TEXT_COLS</span><span class=cF0> - </span><span class=cFE>1</span><span class=cF0>;
|
|
<a name="l373"></a>
|
|
<a name="l374"></a> </span><span class=cF1>if</span><span class=cF0> (w = r - l + </span><span class=cFE>1</span><span class=cF0>)
|
|
<a name="l375"></a> </span><span class=cF1>for</span><span class=cF0> (y = t; y <= b; y++)
|
|
<a name="l376"></a> </span><span class=cF5>MemSetU32</span><span class=cF0>(</span><span class=cFB>gr</span><span class=cF0>.text_base</span><span class=cF7>(</span><span class=cF1>U8</span><span class=cF0> *</span><span class=cF7>)</span><span class=cF0> + </span><span class=cF7>(</span><span class=cF0>y * </span><span class=cF3>TEXT_COLS</span><span class=cF0> + l</span><span class=cF7>)</span><span class=cF0> * </span><span class=cF1>sizeof</span><span class=cF7>(</span><span class=cF9>U32</span><span class=cF7>)</span><span class=cF0>, d, w);
|
|
<a name="l377"></a>}
|
|
<a name="l378"></a>
|
|
</span></pre></body>
|
|
</html>
|