about summary refs log tree commit diff stats
path: root/400.mu
blob: 9baad9778e7b8e34e0d1a9fa3d1d742c34f8e574 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
# screen
sig pixel-on-real-screen x: int, y: int, color: int
sig draw-code-point-on-real-screen c: code-point, x: int, y: int, color: int, background-color: int -> _/eax: int
sig overlay-code-point-on-real-screen c: code-point, x: int, y: int, color: int, background-color: int -> _/eax: int
sig draw-code-point-on-screen-array screen-data: (addr array byte), c: code-point, pre { line-height: 125%; }
td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
.highlight .hll { background-color: #ffffcc }
.highlight .c { color: #888888 } /* Comment */
.highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */
.highlight .k { color: #008800; font-weight: bold } /* Keyword */
.highlight .ch { color: #888888 } /* Comment.Hashbang */
.highlight .cm { color: #888888 } /* Comment.Multiline */
.highlight .cp { color: #cc0000; font-weight: bold } /* Comment.Preproc */
.highlight .cpf { color: #888888 } /* Comment.PreprocFile */
.highlight .c1 { color: #888888 } /* Comment.Single */
.highlight .cs { color: #cc0000; font-weight: bold; background-color: #fff0f0 } /* Comment.Special */
.highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */
.highlight .ge { font-style: italic } /* Generic.Emph */
.highlight .ges { font-weight: bold; font-style: italic } /* Generic.EmphStrong */
.highlight .gr { color: #aa0000 } /* Generic.Error */
.highlight .gh { color: #333333 } /* Generic.Heading */
.highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */
.highlight .go { color: #888888 } /* Generic.Output */
.highlight .gp { color: #555555 } /* Generic.Prompt */
.highlight .gs { font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #666666 } /* Generic.Subheading */
.highlight .gt { color: #aa0000 } /* Generic.Traceback */
.highlight .kc { color: #008800; font-weight: bold } /* Keyword.Constant */
.highlight .kd { color: #008800; font-weight: bold } /* Keyword.Declaration */
.highlight .kn { color: #008800; font-weight: bold } /* Keyword.Namespace */
.highlight .kp { color: #008800 } /* Keyword.Pseudo */
.highlight .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */
.highlight .kt { color: #888888; font-weight: bold } /* Keyword.Type */
.highlight .m { color: #0000DD; font-weight: bold } /* Literal.Number */
.highlight .s { color: #dd2200; background-color: #fff0f0 } /* Literal.String */
.highlight .na { color: #336699 } /* Name.Attribute */
.highlight .nb { color: #003388 } /* Name.Builtin */
.highlight .nc { color: #bb0066; font-weight: bold } /* Name.Class */
.highlight .no { color: #003366; font-weight: bold } /* Name.Constant */
.highlight .nd { color: #555555 } /* Name.Decorator */
.highlight .ne { color: #bb0066; font-weight: bold } /* Name.Exception */
.highlight .nf { color: #0066bb; font-weight: bold } /* Name.Function */
.highlight .nl { color: #336699; font-style: italic } /* Name.Label */
.highlight .nn { color: #bb0066; font-weight: bold } /* Name.Namespace */
.highlight .py { color: #336699; font-weight: bold } /* Name.Property */
.highlight .nt { color: #bb0066; font-weight: bold } /* Name.Tag */
.highlight .nv { color: #336699 } /* Name.Variable */
.highlight .ow { color: #008800 } /* Operator.Word */
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
.highlight .mb { color: #0000DD; font-weight: bold } /* Literal.Number.Bin */
.highlight .mf { color: #0000DD; font-weight: bold } /* Literal.Number.Float */
.highlight .mh { color: #0000DD; font-weight: bold } /* Literal.Number.Hex */
.highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */
.highlight .mo { color: #0000DD; font-weight: bold } /* Literal.Number.Oct */
.highlight .sa { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Affix */
.highlight .sb { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Backtick */
.highlight .sc { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Char */
.highlight .dl { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Delimiter */
.highlight .sd { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Doc */
.highlight .s2 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Double */
.highlight .se { color: #0044dd; background-color: #fff0f0 } /* Literal.String.Escape */
.highlight .sh { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Heredoc */
.highlight .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */
.highlight .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */
.highlight .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */
.highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */
.highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */
.highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */
.highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */
.highlight .vc { color: #336699 } /* Name.Variable.Class */
.highlight .vg { color: #dd7700 } /* Name.Variable.Global */
.highlight .vi { color: #3333bb } /* Name.Variable.Instance */
.highlight .vm { color: #336699 } /* Name.Variable.Magic */
.highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */
<!DOCTYPE html>
<html dir="ltr" lang="en">
    <head>
	<meta charset='utf-8'>
	<title>Development</title>
    </head>
    <body>

	<a href="../index.html">Documentation Index</a>
	<h1>Development</h1>

	<p>Tools for development and debugging</p>

        <dl>
            <dt><a href="git/index.html">Git</a></dt>
            <dd>Git is a distributed version control system, for example this document is meant to be distributed using git.</dd>
            <dt><a href="c/index.html">C &amp; GDB</a></dt>
            <dd>C is compiled language created by Dennis Ritchie. BSD, Linux and Minix kernels use this language as primary language.</dd>

            <dt><a href="shell/index.html">Shell scriptiong</a></dt>
	    <dd>Script files that start with "#!/bin/sh" use dash (in crux), /bin/sh is a link to dash, while files that start with "#!/bin/bash" use bash;</dd>
            <dt><a href="python/index.html">Python</a></dt>

            <dd>Python is an interpreted, interactive, object-oriented programming language.</dd>

            <dt><a href="perl/index.html">Perl</a></dt>
            <dd>Perl is a family of two high-level, general-purpose, interpreted, dynamic programming languages. "Perl" usually refers to Perl 5, but it may also refer to its redesigned "sister language", Perl 6.</dd>

            <dt><a href="javascript/index.html">JavaScript</a></dt>
            <dd>JavaScript is a high-level, interpreted programming language that conforms to the ECMAScript specification. JavaScript has curly-bracket syntax, dynamic typing, prototype-based object-orientation, and first-class functions.</dd>

            <dt><a href="php/index.html">PHP</a></dt>

            <dd>PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used open source general-purpose scripting language that is especially suited for web development and can be embedded into HTML.</dd>
        </dl>
	<a href="../index.html">Documentation Index</a>
	<p>
	This is part of the LeetIO System Documentation.
	Copyright (C) 2021
	LeetIO Team.
	See the file <a href="../fdl-1.3-standalone.html">Gnu Free Documentation License</a>
	for copying conditions.</p>
    </body>

</html>
-stack sig show-stack-state sig debug-print x: (addr array byte), fg: int, bg: int sig debug-print? -> _/eax: boolean sig turn-on-debug-print sig turn-off-debug-print sig abort e: (addr array byte) sig dump-call-stack sig heap-bound -> _/eax: int sig count-event sig count-of-events -> _/eax: int # streams sig clear-stream f: (addr stream _) sig rewind-stream f: (addr stream _) sig stream-data-equal? f: (addr stream byte), s: (addr array byte) -> _/eax: boolean sig streams-data-equal? a: (addr stream byte), b: (addr stream byte) -> _/eax: boolean sig check-stream-equal f: (addr stream byte), s: (addr array byte), msg: (addr array byte) sig check-streams-data-equal s: (addr stream _), expected: (addr stream _), msg: (addr array byte) sig next-stream-line-equal? f: (addr stream byte), s: (addr array byte) -> _/eax: boolean sig check-next-stream-line-equal f: (addr stream byte), s: (addr array byte), msg: (addr array byte) sig write f: (addr stream byte), s: (addr array byte) sig try-write f: (addr stream byte), s: (addr array byte) -> _/eax: boolean # probably a bad idea; I definitely want to discourage its use for streams of non-bytes sig stream-size f: (addr stream byte) -> _/eax: int sig space-remaining-in-stream f: (addr stream byte) -> _/eax: int sig write-stream f: (addr stream byte), s: (addr stream byte) sig write-stream-immutable f: (addr stream byte), s: (addr stream byte) sig read-byte s: (addr stream byte) -> _/eax: byte sig peek-byte s: (addr stream byte) -> _/eax: byte sig append-byte f: (addr stream byte), n: int # really just a byte, but I want to pass in literal numbers sig undo-append-byte f: (addr stream byte) # take most recent append back out #sig to-hex-char in/eax: int -> out/eax: int sig append-byte-hex f: (addr stream byte), n: int # really just a byte, but I want to pass in literal numbers sig write-int32-hex f: (addr stream byte), n: int sig write-int32-hex-bits f: (addr stream byte), n: int, bits: int sig hex-int? in: (addr slice) -> _/eax: boolean sig parse-hex-int in: (addr array byte) -> _/eax: int sig parse-hex-int-from-slice in: (addr slice) -> _/eax: int #sig parse-hex-int-helper start: (addr byte), end: (addr byte) -> _/eax: int sig hex-digit? c: byte -> _/eax: boolean #sig from-hex-char in/eax: byte -> out/eax: nibble sig parse-decimal-int in: (addr array byte) -> _/eax: int sig parse-decimal-int-from-slice in: (addr slice) -> _/eax: int sig parse-decimal-int-from-stream in: (addr stream byte) -> _/eax: int #sig parse-decimal-int-helper start: (addr byte), end: (addr byte) -> _/eax: int sig decimal-size n: int -> _/eax: int #sig allocate ad: (addr allocation-descriptor), n: int, out: (addr handle _) #sig allocate-raw ad: (addr allocation-descriptor), n: int, out: (addr handle _) sig lookup h: (handle _T) -> _/eax: (addr _T) sig handle-equal? a: (handle _T), b: (handle _T) -> _/eax: boolean sig copy-handle src: (handle _T), dest: (addr handle _T) #sig allocate-region ad: (addr allocation-descriptor), n: int, out: (addr handle allocation-descriptor) #sig allocate-array ad: (addr allocation-descriptor), n: int, out: (addr handle _) sig copy-array ad: (addr allocation-descriptor), src: (addr array _T), out: (addr handle array _T) #sig zero-out start: (addr byte), size: int sig slice-empty? s: (addr slice) -> _/eax: boolean sig slice-equal? s: (addr slice), p: (addr array byte) -> _/eax: boolean sig slice-starts-with? s: (addr slice), head: (addr array byte) -> _/eax: boolean sig write-slice out: (addr stream byte), s: (addr slice) # bad name alert sig slice-to-string ad: (addr allocation-descriptor), in: (addr slice), out: (addr handle array byte) sig write-int32-decimal out: (addr stream byte), n: int sig decimal-digit? c: grapheme -> _/eax: boolean sig to-decimal-digit in: grapheme -> _/eax: int # bad name alert # next-word really tokenizes # next-raw-word really reads whitespace-separated words sig next-word line: (addr stream byte), out: (addr slice) # merges '#' comments into a single word sig next-raw-word line: (addr stream byte), out: (addr slice) # does not merge '#' comments sig skip-chars-matching in: (addr stream byte), delimiter: byte sig skip-chars-matching-whitespace in: (addr stream byte) sig skip-chars-not-matching in: (addr stream byte), delimiter: byte sig skip-chars-not-matching-whitespace in: (addr stream byte) sig stream-empty? s: (addr stream _) -> _/eax: boolean sig stream-full? s: (addr stream _) -> _/eax: boolean sig stream-to-array in: (addr stream _), out: (addr handle array _) sig unquote-stream-to-array in: (addr stream _), out: (addr handle array _) sig stream-first s: (addr stream byte) -> _/eax: byte sig stream-final s: (addr stream byte) -> _/eax: byte #sig copy-bytes src: (addr byte), dest: (addr byte), n: int sig copy-array-object src: (addr array _), dest-ah: (addr handle array _) sig array-equal? a: (addr array int), b: (addr array int) -> _/eax: boolean sig parse-array-of-ints s: (addr array byte), out: (addr handle array int) sig parse-array-of-decimal-ints s: (addr array byte), out: (addr handle array int) sig check-array-equal a: (addr array int), expected: (addr array byte), msg: (addr array byte) sig integer-divide a: int, b: int -> _/eax: int, _/edx: int