-
Notifications
You must be signed in to change notification settings - Fork 16
/
Copy pathspl-spec.html
548 lines (456 loc) · 24.5 KB
/
spl-spec.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
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
<!DOCTYPE html>
<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7" lang="en"> <![endif]-->
<!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8" lang="en"> <![endif]-->
<!--[if IE 8]> <html class="no-js lt-ie9" lang="en"> <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en"> <!--<![endif]-->
<head>
<meta charset="UTF-8">
<!-- Remove this line if you use the .htaccess -->
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width">
<meta name="description" content="Build a simple opearting system">
<title>SPL // Documentation // eXperimental Operating System</title>
<link rel="shortcut icon" type="image/x-icon" href="favicon.ico">
<link rel="shortcut icon" type="image/png" href="favicon.png">
<link rel="stylesheet" href="css/style.css">
<!--[if lt IE 9]>
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
</head>
<body>
<!-- Prompt IE 7 users to install Chrome Frame -->
<!--[if lt IE 8]><p class=chromeframe>Your browser is <em>ancient!</em> <a href="http://browsehappy.com/">Upgrade to a different browser</a> or <a href="http://www.google.com/chromeframe/?redirect=true">install Google Chrome Frame</a> to experience this site.</p><![endif]-->
<div class="container">
<header id="navtop">
<a href="index.html" class="logo fleft">
<img src="img/logo.png" alt="Designa Studio">
</a>
<nav class="fright">
<ul><li><a href="index.html" >Home</a></li>
<li><a href="about.html">About</a></li>
<li><a href="documentation.html" class="navactive">Documentation</a></li>
<li><a href="downloads.html">Downloads</a></li>
<li><a href="roadmap.html">Roadmap</a></li></ul>
</ul>
</nav>
</header>
<div class="services-page main grid-wrap">
<header class="grid col-full">
<hr>
<p class="fleft">System Programmer’s Language (SPL)</p>
<br/><br/>
<a href="https://github.com/xosnitc/xosdoc/blob/master/spl/spl.pdf?raw=true" class="button"> Download as PDF </a>
</header>
<aside class="grid col-one-quarter mq2-col-full">
<menu>
<ul>
<li><a href="#navintro" class="sec" >Introduction</a></li>
<li><a href="#navlex" class="sec" >Lexical Elements</a></li>
<li><a href="#navlex" class="subsec" >Comments and White Spaces</a></li>
<li><a href="#navkeywords" class="subsec" >Keywords</a></li>
<li><a href="#navoperators" class="subsec" >Operators and Delimiters</a></li>
<li><a href="#navregisters" class="subsec" >Registers</a></li>
<li><a href="#navidentifiers" class="subsec" >Identifiers</a></li>
<li><a href="#navliterals" class="subsec" >Literals</a></li>
<li><a href="#navregset" class="sec" >Register Set</a></li>
<li><a href="#navalias" class="subsec" >Aliasing</a></li>
<li><a href="#navconst" class="sec" >Constants</a></li>
<li><a href="#navpreconst" class="subsec" >Predefined Constants</a></li>
<li><a href="#navexpressions" class="sec" >Expressions</a></li>
<li><a href="#navarithexp" class="subsec" >Arithmetic Expressions</a></li>
<li><a href="#navlogicexp" class="subsec" >Logical Expressions</a></li>
<li><a href="#navaddrexp" class="subsec" >Addressing Expressions</a></li>
<li><a href="#navstatements" class="sec" >Statements</a></li>
<li><a href="#navdefinestmt" class="subsec" >Define Statement</a></li>
<li><a href="#navaliasstmt" class="subsec" >Alias Statement</a></li>
<li><a href="#navassignstmt" class="subsec" >Assignment Statement</a></li>
<li><a href="#navifstmt" class="subsec" >If Statement</a></li>
<li><a href="#navwhilestmt" class="subsec" >While Statement</a></li>
<li><a href="#navbreakstmt" class="subsec" >Break Statement</a></li>
<li><a href="#navcontinuestmt" class="subsec" >Continue Statement</a></li>
<li><a href="#naviretstmt" class="subsec" >ireturn Statement</a></li>
<li><a href="#navreadprintstmt" class="subsec" >Read/Print Statements</a></li>
<li><a href="#navlsstmt" class="subsec" >Load/Store Statement</a></li>
<li><a href="#navbreakpointstmt" class="subsec" >Breakpoint Statement</a></li>
<li><a href="#navhaltstmt" class="subsec" >Halt Statement</a></li>
<li><a href="#navinlinestmt" class="subsec" >Inline Statement</a></li>
</ul>
</menu>
</aside>
<section class="grid col-three-quarters mq2-col-full">
<div class="grid-wrap">
<article id="navintro" class="grid col-full">
<h2>Introduction</h2>
<p> <b>SPL</b> or <i>System Programmer’s Language</i> is an untyped programming language designed for implementation of an operating system on <b>XSM</b>
<i>(eXperimental String Machine)</i> architecture. The language is minimalistic and consists only of basic constructs required for the implementation.
Programming using SPL requires a basic understanding of the underlying XSM architecture and operating system concepts.</p>
</article>
<div class="up grid col-one-third" style="float:right">
<a href="#navtop" title="Go back up"> top ↑</a>
</div>
<article id="navlex" class="grid col-full">
<h2>Lexical Elements</h2>
<h4>Comments and White Spaces</h4>
<p> SPL allows only single line comments. Comments start with the character sequence // and stop at the end of the line.
White spaces in the program including tabs, newline and horizontal spaces are ignored.</p>
</article>
<div class="up grid col-one-third" style="float:right">
<a href="#navtop" title="Go back up"> top ↑</a>
</div>
<article id="navkeywords" class="grid col-full">
<h4>Keywords</h4>
<p> The following are the reserved words in SPL and it cannot be used as identifiers.
<tt>
<table style="text-align:center; width:50%">
<tr><td>alias </td> <td>else</td> <td>if</td> <td>store</td> <td>while</td></tr>
<tr><td>define</td> <td>endif </td> <td>ireturn</td> <td>break</td> <td>continue</td></tr>
<tr><td>do</td> <td>endwhile</td> <td>load</td> <td>then</td> <td>read</td></tr>
<tr> <td>print</td> <td>breakpoint</td> <td>halt</td> <td>inline</td></tr>
</table>
</tt></p>
</article>
<div class="up grid col-one-third" style="float:right">
<a href="#navtop" title="Go back up"> top ↑</a>
</div>
<article id="navoperators" class="grid col-full">
<h4>Operators and Delimiters</h4>
<p> The following are the operators and delimiters in SPL
<table style="text-align:center; width:50%">
<tr> <td>(</td> <td>)</td> <td>;</td> <td>[</td> <td>]</td> <td>/</td> <td>*</td> <td>+</td> <td>-</td> <td>%</td> </tr>
<tr> <td>></td> <td><</td> <td>>=</td> <td><=</td> <td>!=</td> <td>==</td> <td>=</td> <td>&&</td> <td>||</td> <td>!</td> </tr>
</table>
</p>
</article>
<div class="up grid col-one-third" style="float:right">
<a href="#navtop" title="Go back up"> top ↑</a>
</div>
<article id="navregisters" class="grid col-full">
<h4>Registers</h4>
<p> SPL allows the use of 30 registers for various operations. (<tt>R0-R7, S0 - S15, BP, SP, IP, PTBR, PTLR, EFR</tt>)</p>
</article>
<div class="up grid col-one-third" style="float:right">
<a href="#navtop" title="Go back up"> top ↑</a>
</div>
<article id="navidentifiers" class="grid col-full">
<h4>Identifiers</h4>
<p> Identifiers are used as symbolic names for constants and aliases for registers.
Identifiers should start with an alphabet but may contain alphabets, digits and/or underscore ( _ ).
No other special characters are allowed in identifiers.</p>
<p> Examples: <tt>var1</tt>, <tt>new_page</tt> </br>
Invalid identifiers include <tt> 9blocks </tt>, <tt>$n</tt> etc.
</article>
<div class="up grid col-one-third" style="float:right">
<a href="#navtop" title="Go back up"> top ↑</a>
</div>
<article id="navliterals" class="grid col-full">
<h4>Literals</h4>
<p> Integer and String literals are permitted in SPL. An integer literal is a sequence of digits representing an integer.
Negative integers are represented with a negative sign preceding the sequence of digits. <br/>
A string literal is a sequence of characters which are enclosed within double quotes (" ").
e.g. <tt> "alice"</tt>
</p>
</article>
<div class="up grid col-one-third" style="float:right">
<a href="#navtop" title="Go back up"> top ↑</a>
</div>
<article id="navregset" class="grid col-full">
<h2>Register Set</h2>
<p> SPL doesn’t allow the use of declared variables. Instead a fixed set of registers is provided.
The register set in SPL contains 30 registers. There is a direct mapping between these registers and the machine registers in XSM.
<table class="doctable">
<tbody><tr> <th>Name</th> <th>Register</th> </tr>
<tr> <td>Program Registers</td> <td>R0 - R7</td> </tr>
<tr> <td>Kernel Registers</td> <td>S0 - S15</td> </tr>
<tr> <td>Base Pointer</td> <td>BP </td> </tr>
<tr> <td>Stack Pointer</td> <td>SP</td> </tr>
<tr> <td>Instruction Pointer</td> <td>IP </td> </tr>
<tr> <td>Page Table Base Register</td> <td>PTBR </td> </tr>
<tr> <td>Page Table Length Register</td> <td>PTLR </td> </tr>
<tr> <td>Exception Flag Register</td> <td>EFR </td> </tr>
</tbody></table>
</article>
</p><br/>
<div class="up grid col-one-third" style="float:right">
<a href="#navtop" title="Go back up"> top ↑</a>
</div>
<article id="navalias" class="grid col-full">
<h4>Aliasing</h4>
<p> Any register can be referred to by using a different name. A name is assigned to a particular register using the <b>alias</b> keyword.
Each register can be assigned to only one alias at any particular point of time. However, a register can be reassigned to a different alias at a later point.
Aliasing can also be done inside the <b>if</b> and <b>while</b> block. However, an alias defined within the <b>if</b> and <b>while</b> blocks will only be valid within the block. No two registers can have the same alias name simultaneously.</p>
</article>
<div class="up grid col-one-third" style="float:right">
<a href="#navtop" title="Go back up"> top ↑</a>
</div>
<article id="navconst" class="grid col-full">
<h2>Constants</h2>
<p> Symbolic names can be assigned to values using the <b>define</b> keyword.
Unlike aliasing, two or more names can be assigned to the same value.
A constant can only be defined once in a program.</p>
</article>
<div class="up grid col-one-third" style="float:right">
<a href="#navtop" title="Go back up"> top ↑</a>
</div>
<article id="navpreconst" class="grid col-full">
<h4>Predefined Constants</h4>
<p> SPL provides a set of predefined constants.
These predefined constants can be assigned to different values explicitly by the user using <b>define</b> keyword.
These constants are mostly starting addresses of various OS components in the memory.
The predefined set of constants provided in SPL are</p>
<table class="doctable">
<tr> <th>Name</th> <th>Default Value</th> </tr>
<tr> <td>SCRATCHPAD</td> <td>512</td> </tr>
<tr> <td>PAGE_TABLE</td> <td>1024</td> </tr>
<tr> <td>MEM_LIST</td> <td>1280</td> </tr>
<tr> <td>FILE_TABLE</td> <td>1344 </td> </tr>
<tr> <td>READY_LIST</td> <td>1536</td> </tr>
<tr> <td>FAT</td> <td>2560 </td> </tr>
<tr> <td>DISK_LIST</td> <td>3072 </td> </tr>
<tr> <td>EX_HANDLER</td> <td>3584 </td> </tr>
<tr> <td>T_INTERRUPT</td> <td>4608 </td> </tr>
<tr> <td>INTERRUPT</td> <td>5632 </td> </tr>
<tr> <td>USER_PROG</td> <td>12800 </td> </tr>
</table>
</article>
<div class="up grid col-one-third" style="float:right">
<a href="#navtop" title="Go back up"> top ↑</a>
</div>
<article id="navexpressions" class="grid col-full">
<h2>Expressions</h2>
<p> An expression specifies the computation of a value by applying operators to operands. SPL supports arithmetic and logical expressions.</p>
</article>
<div class="up grid col-one-third" style="float:right">
<a href="#navtop" title="Go back up"> top ↑</a>
</div>
<article id="navarithexp" class="grid col-full">
<h4>Arithmetic Expressions</h4>
<p> Registers, constants, and 2 or more arithmetic expressions connected using arithmetic operators are categorized as arithmetic expressions.
SPL provides five arithmetic operators, viz., +, -, *, / (Integer Division) and % (Modulo operator) through which arithmetic expressions may be combined.
Expression syntax and semantics are similar to standard practice in programming languages and normal rules of precedence, associativity and paranthesization hold.</p>
<p> Examples: <br/><tt>(5*x) + 3</tt> <br/> <tt>10 % 4</tt>
</article>
<div class="up grid col-one-third" style="float:right">
<a href="#navtop" title="Go back up"> top ↑</a>
</div>
<article id="navlogicexp" class="grid col-full">
<h4>Logical Expressions</h4>
<p> Logical expressions may be formed by combining arithmetic expressions using relational operators.
The relational operators supported by SPL are<br/>
<tt>
>, <, >=, <=, !=, ==
</tt><br/>
Standard meanings apply to these operators. A relational operator will take in two arguments and return 1 if the relation is valid and 0 otherwise. <br/>
The relational operators can also be applied to strings. <tt> <, >, <=, >= </tt> compares two strings lexicographically. <tt>!= </tt> and <tt>==</tt> checks for equality in the case of strings. e.g.:<br/>
<tt> "adam" < "apple" // This returns 1 </tt> <br/>
<tt> "hansel" == "gretel" // This returns 0 </tt><br/>
Logical expressions themselves may be combined using logical operators, && (logical and) , || (logical or) and ! (not).</p>
</article>
<div class="up grid col-one-third" style="float:right">
<a href="#navtop" title="Go back up"> top ↑</a>
</div>
<article id="navaddrexp" class="grid col-full">
<h4>Addressing Expressions</h4>
<p> Memory of the machine can be directly accessed in an SPL program.
A word in the memory is accessed by specifying the addressing element, i.e. memory location within [ ].
This corresponds to the value stored in the given address. An arithmetic expression or an addressing expression can be used to specify the address.<br/>
Examples of addressing expressions:<br/>
<tt>[1024], [S3], [S5+[S7]+128], [FAT + S2] </tt>etc.</p>
</article>
<div class="up grid col-one-third" style="float:right">
<a href="#navtop" title="Go back up"> top ↑</a>
</div>
<article id="navstatements" class="grid col-full">
<h2>Statements</h2>
<p> Statements control the execution of the program. All statements in SPL are terminated with a semicolon ;</p>
</article>
<div class="up grid col-one-third" style="float:right">
<a href="#navtop" title="Go back up"> top ↑</a>
</div>
<article id="navdefinestmt" class="grid col-full">
<h4>Define Statement</h4>
<p> Define statement is used to define a symbolic name for a value. Define statements should be used <b>before any other statement</b> in an SPL program.
The keyword <b>define</b> is used to associate a literal to a symbolic name.<br/>
<tt> <b>define</b> constant name value;</tt></p>
<div class="syntax">
define DISK_BLOCK 437;
</div>
</article>
<div class="up grid col-one-third" style="float:right">
<a href="#navtop" title="Go back up"> top ↑</a>
</div>
<article id="navaliasstmt" class="grid col-full">
<h4>Alias Statement</h4>
<p> An <b>alias</b> statement is used to associate a register with a name. Alias statements can be used anywhere in the program.<br/>
<tt> <b>alias</b> alias_name register_name ;</tt></p>
<div class="syntax">
alias counter S0;
</div>
</article>
<div class="up grid col-one-third" style="float:right">
<a href="#navtop" title="Go back up"> top ↑</a>
</div>
<article id="navbreakpointstmt" class="grid col-full">
<h4>Breakpoint Statement</h4>
<p> The <b>Breakpoint</b> statement is used to debug the program. The program when run in debug mode pauses the execution at this instruction.<br/>
<tt> <b>breakpoint</b>;</tt>
</br> This instruction translates to BRKP machine instruction.</p>
</article>
<div class="up grid col-one-third" style="float:right">
<a href="#navtop" title="Go back up"> top ↑</a>
</div>
<article id="navassignstmt" class="grid col-full">
<h4>Assignment Statement</h4>
<p> The SPL assignment statement assigns the value of an expression or value stored in a memory address to a register or a memory address.
= is the assignment operator used in SPL. The operand on the right hand side of the operator is assigned to the left hand side.
The general syntax is as follows<br/>
<tt> Register / Alias / [Address] = Register / Number / String / Expression / [Address] ;</tt></p>
<div class="syntax">
S0 = S2 * 10 + 5; <br/>
counter = counter + 1; <br/>
[PTBR + 3] = [1024] + 10; <br/>
S1 = "hello world"; <br/>
</div>
</article>
<div class="up grid col-one-third" style="float:right">
<a href="#navtop" title="Go back up"> top ↑</a>
</div>
<article id="navifstmt" class="grid col-full">
<h4>If Statment</h4>
<p> <b>If</b> statements specify the conditional execution of two branches according to the value of a logical expression.
If the expression evaluates to 1, the <b>if</b> branch is executed, otherwise the <b>else</b> branch is executed. The <b>else</b> part is optional.
The general syntax is as follows<br/>
<tt>
<b>if</b> (logical expression) <b>then</b><br/>
statements;<br/>
<b> else</b><br/>
statements;<br/>
<b> endif</b>;</tt></p>
</article>
<div class="up grid col-one-third" style="float:right">
<a href="#navtop" title="Go back up"> top ↑</a>
</div>
<article id="navwhilestmt" class="grid col-full">
<h4>While Statement</h4>
<p> <b>While</b> statement iteratively executes a set of statements based on a condition.
The condition is defined using a logical expression.
The statements are iteratively executed as long as the condition is true.<br/>
<tt>
<b>while</b> (logical expression) <b>do</b><br/>
statements;<br/>
<b> endwhile</b>;</tt></p>
</article>
<div class="up grid col-one-third" style="float:right">
<a href="#navtop" title="Go back up"> top ↑</a>
</div>
<article id="navbreakstmt" class="grid col-full">
<h4>Break Statement</h4>
<p> <b>Break</b> statement is a statement which is used in a while loop block.
This statement stops the execution of the loop in which it is used and passes the control of execution to the next statement after the loop.
This statement cannot be used anywhere else other than while loop. The syntax is as follows<br/>
<tt> <b>break</b> ;</tt></p>
</article>
<div class="up grid col-one-third" style="float:right">
<a href="#navtop" title="Go back up"> top ↑</a>
</div>
<article id="navcontinuestmt" class="grid col-full">
<h4>Continue Statement</h4>
<p> <b>Continue statement</b> is a statement which is also used only in a while loop block.
This statement skips the current iteration of the loop and passes the control to the next iteration after checking the loop condition.
The syntax is as follows<br/>
<tt> <b>continue</b> ;</tt></p>
</article>
<div class="up grid col-one-third" style="float:right">
<a href="#navtop" title="Go back up"> top ↑</a>
</div>
<article id="naviretstmt" class="grid col-full">
<h4>ireturn Statement</h4>
<p> <b>ireturn</b> statement or the Interrupt Return statement is used to pass control from kernel mode to user mode.
<tt> <b>ireturn</b>;</tt>
The <b>ireturn</b> is generally used at the end of an interrupt code.<br/>
</br> This instruction translates to IRET machine instruction.</p>
</article>
<div class="up grid col-one-third" style="float:right">
<a href="#navtop" title="Go back up"> top ↑</a>
</div>
<article id="navreadprintstmt" class="grid col-full">
<h4>Read/Print Statements</h4>
<p> The <b>read</b> and <b>print</b> statements are used as standard input and output statements. The <b>read</b> statement reads a value from the standard input device and stores it in a register.
<p><b>NOTE:</b> String read or printed must not exceed 10 characters </p>
<br/>
The <b>print</b> statement outputs value of a register or an integer/string literal or value of a memory location.<br/>
<tt> <b>read</b> Register;</tt> <br/>
<tt> <b>print</b> Register / Number / String / Expression / [Address];</tt></p>
</article>
<div class="up grid col-one-third" style="float:right">
<a href="#navtop" title="Go back up"> top ↑</a>
</div>
<article id="navlsstmt" class="grid col-full">
<h4>Load/Store Statement</h4>
<p> Loading and storing between filesystem and memory is accomplished using <b>load</b> and <b>store</b> statements in SPL.
<b>load</b> statement loads the block specified by <i>block_number</i> from the disk to the the page specified by the <i>page_number</i> in the memory.
<b>store</b> statement stores the page specified by <i>page_number</i> in the memory to the the block specified by the <i>block_number</i> in the disk.
The <i>page_number</i> and <i>block_number</i> can be specified using arithmetic expressions.<br/>
<tt>
<b>load</b> (page_number, block_number);<br/>
<b>store</b> (page_number, block_number);</tt></p>
</article>
<div class="up grid col-one-third" style="float:right">
<a href="#navtop" title="Go back up"> top ↑</a>
</div>
<article id="navhaltstmt" class="grid col-full">
<h4>Halt Statement</h4>
<p>The <b>Halt</b> statement is used to halt the machine.<br/>
<tt> <b>halt</b>;</tt>
</br> This instruction translates to HALT machine instruction.</p>
</article>
<div class="up grid col-one-third" style="float:right">
<a href="#navtop" title="Go back up"> top ↑</a>
</div>
<article id="navinlinestmt" class="grid col-full">
<h4>Inline Statement</h4>
<p>The <b>inline</b> statement is used give XSM machine instructions directly within an SPL program.<br/></p>
<tt> <b>inline</b> "<i>MACHINE INSTRUCTION</i>";</tt>
<br/><br/>
<p>e.g. <tt>inline "JMP 11776";</tt></p>
</article>
<div class="up grid col-one-third" style="float:right">
<a href="#navtop" title="Go back up"> top ↑</a>
</div>
</div> <!-- 100%articles-->
</section>
</div> <!--main-->
<div class="divide-top">
<footer class="grid-wrap">
<ul class="grid col-one-third social">
<li><a href="http://github.com/xosnitc">Github</a></li>
</ul>
<div class="up grid col-one-third ">
<a href="#navtop" title="Go back up">↑</a>
</div>
<nav class="grid col-one-third ">
<ul><li><a href="index.html" >Home</a></li>
<li><a href="about.html">About</a></li>
<li><a href="documentation.html">Documentation</a></li>
<li><a href="downloads.html">Downloads</a></li>
<li><a href="roadmap.html">Roadmap</a></li></ul>
</ul>
</nav>
</footer>
</div>
</div>
<!-- Javascript - jQuery
<script src="http://code.jquery.com/jquery.min.js"></script>-->
<script>window.jQuery || document.write('<script src="js/jquery-1.7.2.min.js"><\/script>')</script>
<!--[if (gte IE 6)&(lte IE 8)]>
<script src="js/selectivizr.js"></script>
<![endif]-->
<script src="js/scripts.js"></script>
<!-- Asynchronous Google Analytics snippet. Change UA-XXXXX-X to be your site's ID. -->
<script>
var _gaq=[['_setAccount','UA-XXXXX-X'],['_trackPageview']];
(function(d,t){var g=d.createElement(t),s=d.getElementsByTagName(t)[0];
g.src=('https:'==location.protocol?'//ssl':'//www')+'.google-analytics.com/ga.js';
s.parentNode.insertBefore(g,s)}(document,'script'));
</script>
</body>
</html>