/
cl-6502.html
187 lines (186 loc) · 8.3 KB
/
cl-6502.html
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
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>API for CL-6502</title>
<style type="text/css" media="all">
body {margin: 0 2em .5em 2em;font-family: Verdana,Arial,sans-serif;}
.package {background: #efefef;
padding: 1.5em 0 1em 0;
text-align: center;
font-size: x-large;}
.definition {background: #efefef; padding: .3em 1em;}
a.symbolname, a:visited.symbolname {font-weight: bold;}
.initargs {font-size: small;}
.slots {font-size: small;}
div.label {border-bottom: 1px solid #efefef; margin-bottom: .5em}
.symboldecl, .footer {margin: 0 2em 2em 2em;}
.symbolname {font-weight: bold; color: gray;}
.symboltype {font-style: italic;margin-left: 1.5em; font-size: smaller;}
.documentation {color: gray; font-family: Fixed,monospace;margin: 0 0 1.5em 0.5em;}
.packagedocumentation {color: gray;
font-family: Fixed,monospace;
margin: 0 0 1.5em 0;
border: 1px solid #efefef;
padding-left: 1.5em;}
.symbolcomments span {font-weight: bold;}
.footer {font-size: x-small; text-align: right; margin-top: 2em; padding-top: 1em; border-top: 1px solid gray;}
.undocumented {color: red; font-weight: bold;}
a, a:visited {font-weight: bold; color: gray; text-decoration: none; font-weight: normal;}
a:hover {border-bottom: 1px solid gray; }
.label {font-weight: bold; font-style: italic;color: gray;}
.labeltitle {font-weight: bold; font-style: italic;color: gray; border: 1px solid #efefef; padding: .25em;margin-bottom: .5em}
.frame {marin-top: 1.5em}
.expander {border: 2px solid #efefef; color: gray;
font-weight: bold;
font-family: Fixed,monospace;
margin-right: .25em; padding: 0 .25em;cursor: pointer;}
</style>
<script type="text/javascript">
function expand (expander, id) {
var text = expander.innerHTML;
if (text == '-')
{
expander.innerHTML = '+';
document.getElementById(id).style.display = 'none';
}
else
{
expander.innerHTML = '-';
document.getElementById(id).style.display = '';
}
}</script></head>
<body>
<div class="package">
<div class="definition">API for package:
<a class="symbolname" name="cl-6502_package" href="#cl-6502_package">cl-6502</a></div></div>
<div class="packagedocumentation">
<pre>Homepage: <a href="http://github.com/redline6561/cl-6502">Github</a></pre></div>
<div class="frame">
<div class="labeltitle">
<span class="expander" onclick="expand(this, 'vars');">-</span>Variables</div>
<div id="vars">
<div class="symboldecl">
<div class="definition">
<a class="symbolname" name="*cpu*_vars" href="#*cpu*_vars">*cpu*</a>:
<span class="value">#S(|6502|:CPU :PC 65532 :SP 253 :SR 36 :XR 0 :YR 0 :AR 0 :CC 0)</span>
<span class="symboltype">variable</span></div>
<div class="documentation">
<pre>The 6502 instance used by opcodes in the package.</pre></div></div></div></div>
<div class="frame">
<div class="labeltitle">
<span class="expander" onclick="expand(this, 'conditions');">-</span>Conditions</div>
<div id="conditions">
<div class="symboldecl">
<div class="definition">
<a class="symbolname" name="cpu_class" href="#cpu_class">cpu</a>
<span class="lambdalist">(structure-object)</span>
<span class="symboltype">class</span></div>
<div class="documentation">
<pre>A 6502 CPU with an extra slot for tracking the cycle count/clock ticks.</pre></div></div></div></div>
<div class="frame">
<div class="labeltitle">
<span class="expander" onclick="expand(this, 'functions');">-</span>Functions</div>
<div id="functions">
<div class="symboldecl">
<div class="definition">
<a class="symbolname" name="6502-step_func" href="#6502-step_func">6502-step</a>
<span class="lambdalist">cpu opcode</span>
<span class="symboltype">standard-generic-function</span></div>
<div class="documentation">
<pre>Step the CPU through the next instruction, returning the CPU
or :done.</pre></div></div>
<div class="symboldecl">
<div class="definition">
<a class="symbolname" name="asm_func" href="#asm_func">asm</a>
<span class="lambdalist">source</span>
<span class="symboltype">standard-generic-function</span></div>
<div class="documentation">
<pre>Assemble SOURCE into a bytevector and return it.</pre></div></div>
<div class="symboldecl">
<div class="definition">
<a class="symbolname" name="disasm_func" href="#disasm_func">disasm</a>
<span class="lambdalist">start end</span>
<span class="symboltype">function</span></div>
<div class="documentation">
<pre>Disassemble memory from START to END.</pre></div></div>
<div class="symboldecl">
<div class="definition">
<a class="symbolname" name="disasm-to-list_func" href="#disasm-to-list_func">disasm-to-list</a>
<span class="lambdalist">start end</span>
<span class="symboltype">function</span></div>
<div class="documentation">
<pre>Disassemble a given region of memory into a SEXP-based format.</pre></div></div>
<div class="symboldecl">
<div class="definition">
<a class="symbolname" name="disasm-to-str_func" href="#disasm-to-str_func">disasm-to-str</a>
<span class="lambdalist">start end</span>
<span class="symboltype">function</span></div>
<div class="documentation">
<pre>Call DISASM with the provided args and return its output as a string.</pre></div></div>
<div class="symboldecl">
<div class="definition">
<a class="symbolname" name="execute_func" href="#execute_func">execute</a>
<span class="lambdalist">cpu &optional program</span>
<span class="symboltype">standard-generic-function</span></div>
<div class="documentation">
<pre>Step the CPU until a BRK. If a PROGRAM bytevector is supplied,
it will be placed at the beginning of *ram* and the PC will be set to 0.</pre></div></div>
<div class="symboldecl">
<div class="definition">
<a class="symbolname" name="get-byte_func" href="#get-byte_func">get-byte</a>
<span class="lambdalist">address</span>
<span class="symboltype">function</span></div>
<div class="documentation">
<pre>Get a byte from RAM at the given address.</pre></div></div>
<div class="symboldecl">
<div class="definition">
<a class="symbolname" name="(setf get-byte)_func" href="#(setf get-byte)_func">(setf get-byte)</a>
<span class="lambdalist">new-val address</span>
<span class="symboltype">function</span></div>
<div class="documentation">
<pre>Set ADDRESS in *ram* to NEW-VAL.</pre></div></div>
<div class="symboldecl">
<div class="definition">
<a class="symbolname" name="get-range_func" href="#get-range_func">get-range</a>
<span class="lambdalist">start &optional end</span>
<span class="symboltype">function</span></div>
<div class="documentation">
<pre>Get a range of bytes from RAM, starting from START and stopping at END if
provided.</pre></div></div>
<div class="symboldecl">
<div class="definition">
<a class="symbolname" name="(setf get-range)_func" href="#(setf get-range)_func">(setf get-range)</a>
<span class="lambdalist">bytevector start</span>
<span class="symboltype">function</span></div>
<div class="documentation">
<pre>Replace the contents of RAM, starting from START with BYTEVECTOR.</pre></div></div>
<div class="symboldecl">
<div class="definition">
<a class="symbolname" name="get-word_func" href="#get-word_func">get-word</a>
<span class="lambdalist">address &optional wrap-p</span>
<span class="symboltype">function</span></div>
<div class="documentation">
<pre>Get a word from RAM starting at the given address.</pre></div></div>
<div class="symboldecl">
<div class="definition">
<a class="symbolname" name="(setf get-word)_func" href="#(setf get-word)_func">(setf get-word)</a>
<span class="lambdalist">new-val address</span>
<span class="symboltype">function</span></div>
<div class="documentation">
<pre>Set ADDRESS and (1+ ADDRESS) in *ram* to NEW-VAL, little endian ordering.</pre></div></div>
<div class="symboldecl">
<div class="definition">
<a class="symbolname" name="nmi_func" href="#nmi_func">nmi</a>
<span class="lambdalist">obj</span>
<span class="symboltype">standard-generic-function</span></div>
<div class="documentation">
<pre>Generate a non-maskable interrupt. Used for vblanking in NES.</pre></div></div>
<div class="symboldecl">
<div class="definition">
<a class="symbolname" name="reset_func" href="#reset_func">reset</a>
<span class="lambdalist">obj</span>
<span class="symboltype">standard-generic-function</span></div>
<div class="documentation">
<pre>Reset the OBJ to an initial state.</pre></div></div></div></div>
<div class="footer">Generated by:
<a href="http://common-lisp.net/project/cl-api">CL-API</a></div></body></html>