Updated control panel functions.
[CS-101.git] / turing_tarpit.html
blobb9e301bbbf5970e76f03029310acaa3070540ab4
1 <html>
2 <title>Turing Tarpit Simulator</title>
3 <noscript>
4 <b>Your browser does not support JavaScript or JavaScript is disabled.</b>
5 </noscript>
6 <script>
8 /* internal values for simulated computer */
9 var ins_pointer = 0; /* instruction pointer */
10 var ins_pointer_changed = 0; /* bool set to 1 if ins pointer has changed in the last step */
11 var ins_pointer_last_address = 0; /* address of ins pointer in last step */
12 var dat_pointer = 0; /* data pointer */
13 var dat_pointer_changed = 0; /* bool set to 1 if data pointer has changed in the last step */
14 var dat_pointer_last_address = 0; /* address of data pointer in last step */
15 var ram_last_address = 0; /* address of RAM updated in last step */
16 var breakpoints = 1; /* bool set to 0 to ignore breakpoints */
17 var ram = new Array(); /* memory of virtual machine */
18 var jmp = new Array(); /* used as a stack to jump from one command to another */
19 var ins = null; /* current instruction from code */
20 var halt = false; /* halts program ASAP */
22 /* objects that display data to the user */
23 var disp_docs;
24 var disp_code;
25 var disp_ram;
26 var disp_ins_pointer;
27 var disp_dat_pointer;
28 var disp_pointer = "&#8658;"; /* data pointer displayed in memory block */
30 /* select all contents of this input for the convenience of the user */
31 function select_all(e)
33 document.getElementById(e).focus();
34 document.getElementById(e).select();
37 /* highlight current instruction running on machine */
38 function code_highlight(inputEl, selStart, selEnd)
40 if (inputEl.setSelectionRange) {
41 inputEl.focus();
42 inputEl.setSelectionRange(selStart, selEnd);
43 } else if (inputEl.createTextRange) {
44 var range = inputEl.createTextRange();
45 range.collapse(true);
46 range.moveEnd('character', selEnd);
47 range.moveStart('character', selStart);
48 range.select();
52 /* turns breakpoints on and off */
53 function debug_toggle_breakpoints()
55 var button = document.getElementById("dbg_status");
56 if(breakpoints) {
57 breakpoints=0;
58 button.innerHTML='<img src="http://opentextbook.info/icons/32x32/bug_delete.png">';
59 }else {
60 breakpoints=1;
61 button.innerHTML='<img src="http://opentextbook.info/icons/32x32/bug_add.png">';
65 /* removes all breakpoints in source code */
66 function debug_remove_breakpoints()
68 /* ask user for permission first */
69 var ans = confirm("Permanently remove all breakpoints from code?");
70 var code = document.getElementById("code");
71 if(ans) { code.value = code.value.replace( /\*/g , '' ); }
74 /* test current code character - return true if it is an instruction */
75 /* tried to use regex on this and could not get it to work :( */
76 function tst_inst()
78 if(ins == '+' || ins == '-' || ins == '>' || ins == '<' ||
79 ins == '*' || ins == '.' || ins == '[' || ins == ']' || ins == ',') {
80 return true;
82 return false;
85 /* find next instruction in code and move instruction pointer to it */
86 function fnd_nxt_inst()
88 do {
89 if(ins_pointer > disp_code.value.length) { break; } /* must stop at end of code */
90 update_ins_pointer(1);
91 ins = disp_code.value.substring(ins_pointer-1,ins_pointer); /* get data at ins_pointer location */
92 }while(!tst_inst());
93 if(ins_pointer > disp_code.value.length) {
94 alert("HALT: Program is Complete");
95 halt = true;
96 reset();
98 /* highlight code currently executing on screen */
99 code_highlight(disp_code, ins_pointer-1, ins_pointer);
102 /* find previous instruction in code and move instruction pointer to it */
103 function fnd_prv_inst()
105 ins_pointer--;
106 while(ins_pointer >= 0)
108 ins = disp_code.value.substring(ins_pointer-1, ins_pointer); /* get data at ins_pointer location */
109 if(tst_inst()) { return; }
110 ins_pointer--;
112 if(ins_pointer == 0) {
113 alert("SEGFAULT: Program could not find corresponding jump instruction");
114 halt = true;
115 reset();
119 /* execute next instruction from input */
120 function exe_nxt_inst()
122 var temp_count = 0;
123 fnd_nxt_inst();
124 switch(ins)
126 case '+':
127 ram_modify(dat_pointer, 1);
128 break;
129 case '-':
130 ram_modify(dat_pointer, -1);
131 break;
132 case '>':
133 dat_point_modify(1);
134 break;
135 case '<':
136 dat_point_modify(-1);
137 break;
138 case '*': /* these are comments - a break from the standard language */
139 if(breakpoints) { stop(); }
140 break;
141 case '.':
142 print_mem();
143 break;
144 case '[':
145 jump_fwd();
146 break;
147 case ']':
148 jump_bak();
149 break;
150 case ',':
151 get_byte();
152 break;
153 default:
154 /* must be a comment :) */
158 /* if byte at data pointer is = 0, jump forward to instruction after matching ']' command */
159 function jump_fwd()
161 if(ram[dat_pointer] != 0) { return; }
162 /* add this jump to stack */
163 jmp.push('[');
164 /* loop through code, pushing and popping stack until stack is empty */
165 while(jmp.length > 0) {
166 fnd_nxt_inst();
167 if(ins == ']') { jmp.pop();
168 } else if (ins == '[') { jmp.push(']'); }
172 /* if byte at data pointer is != 0, jump back to instruction after matching '[' command */
173 function jump_bak()
175 if(ram[dat_pointer] == 0) { return; }
176 /* add this jump to stack */
177 jmp.push(']');
178 /* loop through code, pushing and popping stack until stack is empty */
179 while(jmp.length > 0 && ins_pointer > 0) {
180 fnd_prv_inst();
181 if(ins == '[') { jmp.pop();
182 } else if (ins == ']') { jmp.push(']'); }
186 /* get single byte of input from the user */
187 function get_byte()
189 var b = prompt("Please Single Byte of Data","");
190 ram_set(dat_pointer, b.charCodeAt(b));
194 rewind code to beginning reset all memory locations
195 this simulates rebooting the computer
197 function reset()
199 update_ins_pointer(0);
200 dat_point_modify(0);
201 ram_reset();
202 ram_highlight_clear();
203 dat_point_highlight();
204 document.getElementById("output_disp").innerHTML = '';
205 document.getElementById("addr_0").innerHTML = disp_pointer;
206 disp_ins_pointer.style.backgroundColor = "#fff";
207 dat_point_highlight_clear();
208 code_highlight(disp_code, 0, 1);
211 /* stop stepping through code on timer if breakpoints enabled */
212 function stop()
214 halt = true;
217 /* run through program on timer, stopping at breakpoints if enabled */
218 function run()
220 var total_steps = document.getElementById("code").value.length;
221 halt = false; /* seems weird, but this is the only way to make the halt work */
222 while(ins_pointer <= total_steps && halt == false) { step_next(); }
225 /* step forward one instruction */
226 function step_next()
228 //update_ins_pointer(1);
229 exe_nxt_inst();
230 dat_point_highlight();
233 /* more back one instruction - undoes work of previous instruction */
234 function step_back()
236 update_ins_pointer(-1);
237 dat_point_highlight();
240 /* update instruction pointer
241 direction:
243 1 increment pointer by one
244 0 set pointer to 0
245 -1 decrement pointer by one
247 function update_ins_pointer(direction)
249 if(direction < 0 && ins_pointer != 0 ) { ins_pointer--; }
250 else if (direction == 0 ) { ins_pointer = 0; }
251 else { ins_pointer++; }
252 disp_ins_pointer.value = ins_pointer;
253 ins_pointer_changed = 1;
254 ins_point_highlight();
257 /* update instruction pointer and set to new value */
258 function ins_point_modify_by_address(val)
260 /* instruction pointer can never be less than 0 */
261 if(val < 0) {
262 alert("Instruction Pointer cannot be set less than Zero.");
263 disp_ins_pointer.value = ins_pointer; /* reset val to previous */
264 return;
266 if(val > disp_code.value.length) {
267 alert("Instruction Pointer cannot be set beyond end of code.\n Current length of code: " + disp_code.value.length);
268 disp_ins_pointer.value = ins_pointer; /* reset val to previous */
269 return;
271 ins_pointer = disp_ins_pointer.value;
272 if(ins_pointer_last_address != ins_pointer) { ins_pointer_changed = 1; }
273 if(ins_pointer != val) {
274 ins_point_highlight();
278 /* turns on and off data pointer highlight if it has changed this step */
279 function ins_point_highlight()
281 if(ins_pointer_changed) {
282 disp_ins_pointer.style.backgroundColor = "#ff0";
283 ins_pointer_changed = 0;
284 } else {
285 disp_ins_pointer.style.backgroundColor = "#fff";
289 /* setup virtual machine - must be called on page load */
290 function init_form()
292 disp_code = document.getElementById("code");
293 disp_ins_pointer = document.getElementById("ins_pointer_disp");
294 disp_dat_pointer = document.getElementById("dat_pointer_disp");
295 disp_ram = document.getElementById("ram_disp");
296 ram_init();
297 ram_reset();
298 document.getElementById("addr_0").innerHTML = disp_pointer;
299 disp_docs = document.getElementById("docs");
301 /* put hello world into input window */
302 var randomnumber = Math.floor(Math.random()*11)
303 disp_code.innerHTML = document.getElementById("example_"+randomnumber).innerHTML;
306 /* reset all RAM to 0 */
307 function ram_reset()
309 var i;
310 for(i=0; i < 64; i++) {
311 ram[i] = 0;
312 document.getElementById("ram_"+i).value = ram[i];
316 /* update highlight of one memory address and release other highlight if needed */
317 function ram_highlight(address)
319 var disp_last_address = document.getElementById("ram_"+ram_last_address);
320 if(disp_last_address == 'undefined') { alert("Last address could not be found."); }
321 /* highlight background of current address */
322 document.getElementById("ram_"+address).style.backgroundColor = "#ff0";
324 /* remove highlight from last address modified */
325 if(ram_last_address != address){
326 if(ram_last_address%2==0) {
327 disp_last_address.style.backgroundColor = "#fff";
328 } else {
329 disp_last_address.style.backgroundColor = "#def";
334 /* remove highlight from all memory cells regardless of current status */
335 function ram_highlight_clear()
337 var i;
338 for(i=0; i < 64; i++)
340 if(i%2==0) {
341 document.getElementById("ram_"+i).style.backgroundColor = "#fff";
342 } else {
343 document.getElementById("ram_"+i).style.backgroundColor = "#def";
345 document.getElementById("ram_"+i).innerHTML = ram[i];
349 /* define RAM on screen */
350 function ram_init()
352 var i;
353 var table = "<table id=memory_table>\n";
354 for(i=0; i < 16; i++){
355 if(i%2==0) {
356 table += "\t<tr class=even>";
357 } else {
358 table += "\t<tr class=odd>";
360 table += "<td>"+i+"</td>";
361 table += "<td class=addr id=addr_"+i+">"+disp_pointer+"</td>";
362 table += "<td><input onClick=\"select_all('ram_"+i+"');\" onBlur=\"ram_set("+i+", document.getElementById('ram_"+i+"').value);\" size='2' class=ram id=ram_"+i+" value="+ram[i]+"></td>";
364 table += "<td>"+(i+16)+"</td>";
365 table += "<td class=addr id=addr_"+(i+16)+">"+disp_pointer+"</td>";
366 table += "<td><input onClick=\"select_all('ram_"+(i+16)+"');\" onBlur=\"ram_set("+(i+16)+", document.getElementById('ram_"+(i+16)+"').value);\" size='2' class=ram id=ram_"+(i+16)+" value="+ram[i+16]+"></td>\n";
368 table += "<td>"+(i+32)+"</td>";
369 table += "<td width='35' class=addr id=addr_"+(i+32)+">"+disp_pointer+"</td>";
370 table += "<td><input onClick=\"select_all('ram_"+(i+32)+"');\" onBlur=\"ram_set("+(i+32)+", document.getElementById('ram_"+(i+32)+"').value);\" size='2' class=ram id=ram_"+(i+32)+" value="+ram[i+32]+"></td>\n";
372 table += "<td>"+(i+48)+"</td>";
373 table += "<td width='35' class=addr id=addr_"+(i+48)+">"+disp_pointer+"</td>";
374 table += "<td><input onClick=\"select_all('ram_"+(i+48)+"');\" onBlur=\"ram_set("+(i+48)+", document.getElementById('ram_"+(i+48)+"').value);\" size='2' class=ram id=ram_"+(i+48)+" value="+ram[i+48]+"></td></tr>\n";
376 table += "</table>\n";
377 disp_ram.innerHTML = table;
381 modify the value at this address - reset RAM highlights for all addresses
382 1 increment RAM by one
383 0 set RAM to 0
384 -1 decrement RAM by one
386 function ram_modify(address, change)
388 if(address < 0 || address > 63) {
389 alert("SEGFAULT: Cannot Modify Data Outside of Memory Range");
390 halt = true;
391 reset();
392 return;
394 if (change > 0 ) {
395 ram[address]++;
396 } else if(change < 0 ) {
397 ram[address]--;
398 } else {
399 ram[address] = 0;
401 ram_highlight(address);
402 document.getElementById("ram_"+address).value = ram[address];
403 ram_last_address = address;
406 /* modify one byte of memory - set to address */
407 function ram_set(address, val)
409 var prev_value = ram[address];
410 if(address == 'undefined') { alert("Address not defined for ram_set."); return; }
411 if(address < 0 || address > 63) {
412 alert("SEGFAULT: Cannot Modify Data Outside of Memory Range");
413 halt = true;
414 reset();
415 return;
417 ram[address] = val;
418 if(prev_value != val) {
419 ram_highlight(address);
420 document.getElementById("ram_"+address).innerHTML = ram[address];
422 ram_last_address = address;
426 modify state of data pointer
427 1 increment data pointer by one
428 0 set data pointer to 0
429 -1 decrement data pointer by one
432 function dat_point_modify(change)
434 dat_pointer_last_address = dat_pointer;
435 if (change > 0 ) {
436 dat_pointer++;
437 } else if(change < 0 ) {
438 /* could put SEGFAULT here, but C does not have a check for this, so neither will I ;) */
439 dat_pointer--;
440 } else {
441 dat_pointer = 0;
444 /* place '>' char next to memory address in table */
445 if(dat_pointer >= 0 && dat_pointer < 64) {
446 document.getElementById("addr_"+dat_pointer).style.color = "#f00";
449 /* remove '>' char next to memory address in table */
450 if(dat_pointer_last_address >= 0 && dat_pointer_last_address < 64) {
451 document.getElementById("addr_"+dat_pointer_last_address).style.color = "#fff";
454 disp_dat_pointer.value = dat_pointer;
455 dat_pointer_changed = 1;
458 function dat_point_modify_by_address(val)
460 dat_pointer_last_address = dat_pointer;
461 dat_pointer = disp_dat_pointer.value;
462 /* place '>' char next to memory address in table */
463 if(dat_pointer >= 0 && dat_pointer < 64) {
464 document.getElementById("addr_"+dat_pointer).style.color = "#f00";
467 /* remove '>' char next to memory address in table */
468 if(dat_pointer_last_address >= 0 && dat_pointer_last_address < 64) {
469 document.getElementById("addr_"+dat_pointer_last_address).style.color = "#fff";
471 dat_pointer_changed = 1;
472 if(dat_pointer_last_address != val) {
473 dat_point_highlight();
477 /* turns on and off data pointer highlight if it has changed this step */
478 function dat_point_highlight()
480 if(dat_pointer_changed) {
481 disp_dat_pointer.style.backgroundColor = "#ff0";
482 dat_pointer_changed = 0;
483 } else {
484 disp_dat_pointer.style.backgroundColor = "#fff";
487 /* as a convenience to the user, set to red if pointer is out of memory range */
488 if(dat_pointer < 0 || dat_pointer > 63) {
489 disp_dat_pointer.style.backgroundColor = "#f00";
493 /* remove highlight from data pointer */
494 function dat_point_highlight_clear()
496 disp_dat_pointer.style.backgroundColor = "#fff";
499 /* print ASCII representation of memory at data pointer */
500 function print_mem()
502 var x = String.fromCharCode(ram[dat_pointer]);
503 document.getElementById("output_disp").innerHTML += x;
506 /* documentation stored inside invisible div. This shows its contents. */
507 function display_docs()
509 disp_docs.style.visibility = "visible";
510 docs_select("docs_main");
513 /* hide documentation from user */
514 function hide_docs()
516 disp_docs.style.visibility = "hidden";
519 function docs_select(page)
521 if(page == "basic") {
522 document.getElementById("docs_content").innerHTML = document.getElementById("docs_basic").innerHTML;
523 } else if(page == "features") {
524 document.getElementById("docs_content").innerHTML = document.getElementById("docs_features").innerHTML;
525 } else if(page == "examples") {
526 document.getElementById("docs_content").innerHTML = document.getElementById("docs_examples").innerHTML;
527 } else if(page == "examples2") {
528 document.getElementById("docs_content").innerHTML = document.getElementById("docs_examples2").innerHTML;
529 } else if(page == "ascii") {
530 document.getElementById("docs_content").innerHTML = document.getElementById("docs_ascii").innerHTML;
531 } else {
532 document.getElementById("docs_content").innerHTML = document.getElementById("docs_main").innerHTML;
538 allows user to kick off example from the help menu.
539 closes documentation menu, overwrites code with example.
540 prints error message if something goes wrong.
543 function docs_try(ex)
545 var ans = confirm("This will delete code currently loaded in machine.");
546 if(!ans) { return; }
547 hide_docs(); /* close documentation window */
548 reset(); /* reset computer */
549 if(ex == null) { alert("Example not setup correctly."); return; }
550 disp_code.innerHTML = document.getElementById(ex).innerHTML; /* write data out to code textarea */
553 </script>
555 <style type="text/css">
557 #topsection {
558 height: 70px; /* height of top section */
561 #topsection h1 {
562 margin: 0;
563 padding-top: 15px;
566 #contentwrapper {
567 float: left;
568 width: 100%;
569 margin-left: -30%; /* Set left margin to -(RightColumnWidth) */
572 #contentcolumn {
573 margin: 0 450px 0 30% /* Set margin to 0 (LeftColumnWidth) 0 (RightColumnWidth) */
576 #leftcolumn {
577 float: left;
578 width: 450px; /* Width of left column in pixels */
579 margin-left: -450px; /* Set left margin to -(LeftColumnWidth) */
582 #rightcolumn {
583 float: left;
584 width: 30%; /*Width of right column in percentage*/
587 #footer {
588 clear: left;
589 width: 100%;
590 text-align: center;
591 padding: 4px 0;
594 #footer a {
595 color: #FFFF80;
598 body {
599 margin: 0;
600 padding: 0;
601 line-height: 1.5em;
602 font-family: Tahoma, Arial, Helvetica, sans-serif;
605 .addr {
606 color: #fff;
609 #disp_pointer {
610 float: right;
611 color: #f00;
614 #memory_table {
615 border:1px solid #000;
616 border-collapse: collapse;
617 width: 200px;
620 .even td {
621 padding: 4px;
622 height:33px;
623 border-bottom:1px solid #000;
626 .odd td {
627 padding: 4px;
628 height:33px;
629 background-color: #def;
630 border-bottom: 1px solid #000;
633 #docs {
634 border:1px solid #000;
635 background-color: #fff;
636 position: absolute;
637 top: 10px;
638 left: 10px;
639 width: 950px;
640 height:750px;
641 visibility: hidden;
644 #docs_top_banner {
645 color: #000;
646 background-color: #7cf;
647 border-bottom:1px solid #000;
648 position: absolute;
649 top: 0px;
650 left: 0px;
651 height: 45px;
652 padding-top: 5px;
653 padding-left: 5px;
654 width: 945px;
657 #docs_close_btn {
658 position: absolute;
659 top: 0px;
660 right: 0px;
661 cursor: pointer;
662 padding: 6px;
665 #docs_mnu_btn {
666 position: absolute;
667 top: 0px;
668 left: 375px;
669 margin-top: 5px;
670 padding-left: 20px;
671 padding-right: 20px;
674 #docs_content {
675 position: absolute;
676 top: 55px;
677 padding: 10px;
680 #docs_link:hover {
681 background-color: #def;
682 cursor: pointer;
686 .docs_code_ex {
687 background-color: #def;
688 border: 1px solid #ddd;
689 padding: 5px;
692 .docs_hidden {
693 visibility: hidden;
696 #ascii {
697 border-collapse: collapse;
698 border: 1px solid #ddd;
701 #reference {
702 border-collapse: collapse;
703 border: 1px solid #ddd;
706 #ascii {
707 text-align: center;
710 #val_col {
711 border-right: 1px solid #ddd;
712 width: 10px;
713 padding-right: 15px;
716 #dat_col {
717 width: 100px;
720 .ref_even td {
721 border-bottom: 1px solid #ddd;
724 .ref_odd td {
725 border-bottom: 1px solid #ddd;
726 background-color: #def;
729 .ref_ins {
730 font-size: 18px;
731 font-weight:bold;
732 color: #00f;
735 </style>
737 <body onLoad="init_form();">
739 <div id="maincontainer">
741 <div id="topsection">
742 <br>
743 <center>
744 <button onClick='reset();'><img src="http://opentextbook.info/icons/32x32/resultset_first.png" title="Restart" alt="Restart"></button>
745 &nbsp;&nbsp;
746 <button onClick='step_back();'><img src="http://opentextbook.info/icons/32x32/resultset_previous.png" title="Step Back" alt="Step Back"></button>
747 &nbsp;&nbsp;
748 <button onClick='step_next();'><img src="http://opentextbook.info/icons/32x32/resultset_next.png" title="Next Step" alt="Next Step"></button>
749 &nbsp;&nbsp;
750 <button onClick='run();'><img src="http://opentextbook.info/icons/32x32/resultset_last.png" title="Run" alt="Run"></button>
751 &nbsp;&nbsp;
752 <button onClick='halt();'><img src="http://opentextbook.info/icons/32x32/cancel.png" title="Halt Execution" alt="Halt Execution"></button>
753 &nbsp;&nbsp;
754 <button disabled><img src="http://opentextbook.info/icons/32x32/disk.png" title="Save Code" alt="Save Code"></button>
755 &nbsp;&nbsp;
756 <button onClick='display_docs();'><img src="http://opentextbook.info/icons/32x32/book_open.png" title="Open Documentation" alt="Open Documentation"></button>
757 </center>
759 </div>
761 <div id="contentwrapper">
762 <div id="contentcolumn">
763 <div id="input_banner">INPUT</div>
764 <div id="input"><textarea id="code" rows="27" style="width: 95%"></textarea></div>
765 <br>
766 <center>
767 <div id="code_buttons">
768 <button id="dbg_status" onClick='debug_toggle_breakpoints();' title="Enable/Disable Breakpoints" alt="Enable/Disable Breakpoints">
769 <img src="http://opentextbook.info/icons/32x32/bug_add.png">
770 </button>
771 &nbsp;&nbsp;
772 <button id="dbg_status" onClick='debug_remove_breakpoints();' title="Remove Breakpoints" alt="Remove Breakpoints">
773 <img src="http://opentextbook.info/icons/32x32/bin.png">
774 </button>
775 </center>
777 </div>
779 </div>
781 </div>
782 </div>
784 <div id="leftcolumn">
785 <div id="memory_banner">MEMORY</div>
786 <div id="ram_disp"></div>
788 </div>
790 <div id="rightcolumn">
791 <div id="output_banner">OUTPUT</div>
792 <div id="output">
793 <textarea name=code id=output_disp rows="10" style="width: 95%" disabled ></textarea>
794 </div>
796 <div id="ip_banner">INSTRUCTION POINTER</div>
797 <div id="instruction"><input onClick="select_all('ins_pointer_disp');" onBlur="ins_point_modify_by_address(disp_ins_pointer.value);" id="ins_pointer_disp" type="text" diabled value=0></div>
799 <div id="da_banner">DATA POINTER</div>
800 <div id="data"><input onClick="select_all('dat_pointer_disp');" onBlur="dat_point_modify_by_address(disp_dat_pointer.value);" id="dat_pointer_disp" type="text" diabled value=0></div>
802 <div id="ref_banner">INSTRUCTION REFERENCE</div>
803 <table id="reference">
804 <tr class="ref_even"><td class="ref_ins">+</td><td>increment byte at data pointer</td></tr>
805 <tr class="ref_odd" ><td class="ref_ins">-</td><td>decrement byte at data pointer</td></tr>
806 <tr class="ref_even"><td class="ref_ins">></td><td>increment data pointer</td></tr>
807 <tr class="ref_odd" ><td class="ref_ins"><</td><td>decrement data pointer</td></tr>
808 <tr class="ref_even"><td class="ref_ins">.</td><td>print byte at data pointer</td></tr>
809 <tr class="ref_odd" ><td class="ref_ins">,</td><td>accept one byte of input</td></tr>
810 <tr class="ref_even"><td class="ref_ins">[</td><td>jump forward if data pointer nonzero</td></tr>
811 <tr class="ref_odd"><td class="ref_ins">]</td><td>jump back if data pointer nonzero</td></tr>
812 <tr class="ref_even"><td class="ref_ins">*</td><td>set breakpoint</td></tr>
813 </table>
814 </div>
815 <!--
816 <div id="footer">Footer</div>
818 </div>
820 <div id="docs">
821 <div id="docs_top_banner">
822 Turing Tarpit Simulator Documentation&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
823 <button id="docs_mnu_btn" onClick="docs_select('main');"><img src="http://opentextbook.info/icons/32x32/house.png">Main Menu</button>
824 <div id="docs_close_btn" onClick="hide_docs();"><img src="http://opentextbook.info/icons/32x32/cross.png"></div></div>
826 <div id="docs_content"></div>
827 </div>
829 <div id="docs_main" class="docs_hidden">
830 <div id="docs_link" onClick="docs_select('basic');"><b>Basic Operation</b></div><br>
831 <div id="docs_link" onClick="docs_select('features');"><b>Features and Hints</b></div><br>
832 <div id="docs_link" onClick="docs_select('examples');"><b>Example Code 1</b></div><br>
833 <div id="docs_link" onClick="docs_select('examples2');"><b>Example Code 2</b></div><br>
834 <div id="docs_link" onClick="docs_select('ascii');"><b>ASCII Chart</b></div>
835 </div>
837 <div id="docs_basic" class="docs_hidden">
839 <b>Basic Operation</b>
841 <p>This Turing Tarpit is an abstract machine or a theoretical model of computer hardware. The machine has 64 bytes of <b>MEMORY</b> (RAM) and an almost unlimited amount of program storage (ROM). The instruction set is very simple. A user can program the tool by performing one of seven operations:
843 <p>The <b>'>'</b> and <b>'<'</b> symbols modify the <b>DATA POINTER</b> to point to a new location in the <b>MEMORY</b>. It is possible to set the <b>DATA POINTER</b> to a byte outside the machine's <b>MEMORY</b>. This does not cause an error. If you attempt to modify the <b>MEMORY</b> at this location, the computer will crash and reboot with a <b>SEGFAULT</b> error.
845 <p>The <b>'+'</b> and <b>'-'</b> symbols allow the user to increment and decrement the <b>MEMORY</b> at the <b>DATA POINTER</b>. Only one byte of <b>MEMORY</b> can be modified at any time. The byte of <b>MEMORY</b> has a minimum and maximum value. When you exceed this value, the byte wraps around to zero.
847 <p>Another instruction <b>'.'</b> prints the contents of the byte at the <b>DATA POINTER</b>. These numerical values listed in the <b>MEMORY</b> are converted into ASCII and printed as characters in the <b>OUTPUT</b>. A small chart of common ASCII values can be found in this documentation.
849 <p>The computer can interactively request data from the user with the <b>','</b> instruction. This opens up a dialog to request one byte of data from the user.
851 <p>An additional instruction <b>'*'</b> halts the execution of the program to allow the user to examine the machine at that point. This is known as a <b>BREAKPOINT</b>. These breakpoints can be toggled on and off as well as automatically deleted from the code with the user interface below the <b>INPUT</b>.
853 <p>You can execute the program one step at a time or run the program at full speed until it needs user input or halts. Both methods are useful during development.
855 <p>More documentation is included in this manual. One section is dedicated to Features and Hints that will aid you in getting the most of this tool. Another section is devoted to working code examples that provide a tutorial on how to best make use of the language.
857 </div>
859 <div id="docs_features" class="docs_hidden">
861 <b>Features and Hints</b>
863 <p>All characters outside the Instruction Set are considered comments and will be skipped over during runtime.
865 <p>While program executes, the <b>INPUT</b> cursor is moved over the current instruction.
867 <p>User can change the address of the <b>DATA POINTER</b> and Instruction Pointer at any time.
868 <b>MEMORY</b> and pointers that have been modified are highlighted in yellow until the next step.
870 <p>The <b>DATA POINTER</b> can point to any location. If you de-reference a pointer out of <b>MEMORY</b> range, a <b>SEGFAULT</b> error will occur. This causes the computer to reboot without warning.
872 <p>The Instruction Pointer can point to a location range of 1 to the number of characters in the <b>INPUT</b>.
874 <p>Restarting the machine will reset all <b>MEMORY</b>, Data and Instruction Pointers to zero.
876 <p>The <b>OUTPUT</b> of the program cannot be edited.
878 <p>A user can add a break instruction in the code using an asterisk <b>'*'</b>. This will cause the machine to pause when in Run Mode. Breaks can be disabled and enabled with the debug button, and can be permanently deleted with the delete button.
880 <p>In this version the programs you type in are not saved to your computer. This must be done as a manual operation.
882 <p>As this program is reliant on the speed and efficiency of your browser's JavaScript implementation some computers will be able to execute programs faster than others.
884 <p>This program is completely self contained in one HTML document. You are free do use it how you wish, subject to the terms and conditions of the GNU GPL license (version 3).
886 <p>Although it has not been tested in all browsers, it should work well under most any modern web browser that supports Dynamic HTML and JavaScript. You must have JavaScript enabled for this application to work properly.
888 <p>No server interaction or outside service is needed for this program to operate.
889 </div>
895 <div id="docs_examples" class="docs_hidden">
896 These are some examples of programs and snippets to get you started. Click the "Load" button to apply these to the <b>INPUT</b> of the simulator. (Please Note: You will erase the current program stored there.) Many of these examples can be found at Wikipedia.
898 <p><button id="docs_try" onClick="docs_try('docs_example_clear_btye');"><img src="http://opentextbook.info/icons/16x16/bricks.png">Try</button><b>Clear Byte:</b>
899 Sets value at current <b>DATA POINTER</b> to Zero.
900 <div class=docs_code_ex>
902 </div>
903 <p><button id="docs_try" onClick="docs_try('docs_example_clear_prev');"><img src="http://opentextbook.info/icons/16x16/bricks.png">Try</button><b>Clear Previous Cells:</b>
904 Sets value of all previous bytes including current byte to Zero.
905 <div class=docs_code_ex>
906 [[-]<]
907 </div>
908 <p><button id="docs_try" onClick="docs_try('docs_example_rewind');"><img src="http://opentextbook.info/icons/16x16/bricks.png">Try</button><b>Rewind:</b>
909 Goes back to byte Zero.
910 <div class=docs_code_ex>
911 [<]>
912 </div>
913 <p><button id="docs_try" onClick="docs_try('docs_example_fastforward');"><img src="http://opentextbook.info/icons/16x16/bricks.png">Try</button><b>Fast-forward:</b>
914 Increments the <b>DATA POINTER</b> until a 0 is found then decrements it until the current byte is non-zero.
915 <div class=docs_code_ex>
916 [>]<
917 </div>
918 <p><button id="docs_try" onClick="docs_try('docs_example_cat');"><img src="http://opentextbook.info/icons/16x16/bricks.png">Try</button><b>Simple Loop:</b>
919 Accepts input from the user and echos it to the screen, similar to the UNIX cat program.
920 <div class=docs_code_ex>
921 ,[.,]
922 </div>
923 <p><button id="docs_try" onClick="docs_try('docs_example_data_save');"><img src="http://opentextbook.info/icons/16x16/bricks.png">Try</button><b>Moving the <b>DATA POINTER</b>:</b>
924 Accepts input from the user and saves all input in the memory for future use.
925 <div class=docs_code_ex>
926 >,[.>,]
927 </div>
928 </div>
934 <div id="docs_examples2" class="docs_hidden">
935 <p><button id="docs_try" onClick="docs_try('docs_example_add');"><img src="http://opentextbook.info/icons/16x16/bricks.png">Try</button><b>Add Two Bytes:</b>
936 Adds current location to the next location and leaves behind a Zero for the first value.
937 <div class=docs_code_ex>
938 [->+<]
939 </div>
940 <p><button id="docs_try" onClick="docs_try('docs_example_uc');"><img src="http://opentextbook.info/icons/16x16/bricks.png">Try</button><b>Lower To Upper:</b>
941 Accepts lower case input from the user and makes it uppercase. Stops when user clicks Cancel.
942 <div class=docs_code_ex>
943 ,----------[----------------------.,----------]
944 </div>
945 <p><button id="docs_try" onClick="docs_try('docs_example_copy_byte');"><img src="http://opentextbook.info/icons/16x16/bricks.png">Try</button><b>Copy Value:</b>
946 Copy value of byte Zero to byte One.
947 <div class=docs_code_ex>
948 >[-]>[-]<<[->+>+<<]>>[-<<+>>]<<
949 </div>
950 <p><button id="docs_try" onClick="docs_try('docs_example_seek');"><img src="http://opentextbook.info/icons/16x16/bricks.png">Try</button><b>Seek:</b>
951 Move <b>DATA POINTER</b> forward until it lands on a byte with a value of 1, preserving all bytes it passes.
952 <div class=docs_code_ex>
953 -[+>-]+
954 </div>
955 <p><button id="docs_try" onClick="docs_try('docs_example_add_two');"><img src="http://opentextbook.info/icons/16x16/bricks.png">Try</button><b>Single Digit Add:</b>
956 Adds two single digit numbers and display result. Works on one-digit results only.
957 <div class=docs_code_ex>
958 ,>++++++[<-------->-],[<+>-]<.
959 </div>
960 <p><button id="docs_try" onClick="docs_try('docs_example_multiply');"><img src="http://opentextbook.info/icons/16x16/bricks.png">Try</button><b>Single Digit Multiplication:</b>
961 Multiply two single digit numbers and display result. Works on one-digit results only.
962 <div class=docs_code_ex>
963 ,>,>++++++++[<------<------>>-]
964 <<[>[>+>+<<-]>>[<<+>>-]<<<-]
965 >>>++++++[<++++++++>-]<.>.
966 </div>
967 <p><button id="docs_try" onClick="docs_try('docs_example_divide');"><img src="http://opentextbook.info/icons/16x16/bricks.png">Try</button><b>Single Digit Division:</b>
968 Accepts two single-digit numbers from the user, divides them and displays the truncated quotient. Dividend is stored in byte Zero and Divisor is stored in byte One.
969 <div class=docs_code_ex>
970 ,>,>++++++[-<--------<-------->>]<<[>[->+>+<<]>[-<<-[>]>>>[<[>>>-<<<[-]]>>]<<]>>>+<<[-<<+>>]<<<]>[-]>>>>[-<<<<<+>>>>>]<<<<++++++[-<++++++++>]<.
971 </div>
972 </div>
978 <div id="docs_example_clear_btye" class="docs_hidden">
980 This is an example of clearing a byte
982 Update first byte to higher number and break
984 ++++++*
986 Set this byte to zero regardless of current value
988 [-]*
990 Notice the Memory 0 location is now set to Zero
991 </div>
997 <div id="docs_example_clear_prev" class="docs_hidden">
999 This example clears the current and all previous bytes to Zero
1001 Set a few bytes to Non Zero values
1003 >+++++
1004 >+++++
1006 >++++
1007 >++++++*
1009 Set all bytes from current back to Zero
1011 [[-]<]*
1012 </div>
1016 <div id="docs_example_rewind" class="docs_hidden">
1018 Often you need to return the Data Pointer to Zero
1020 Set a few bytes to Non Zero values and Move Data Pointer
1022 >+++++
1023 >+++++
1025 >++++
1026 >++++++*
1028 Find Data Pointer Zero
1030 [<]*
1031 </div>
1035 <div id="docs_example_fastforward" class="docs_hidden">
1037 Increments the Data Pointer until a 0 is found then decrements if until the current cell is non-zero
1039 Set a few bytes to Non Zero values and Move Data Pointer
1041 >+++++
1042 >+++++
1044 >++++
1045 >++++++*
1047 Move Data Pointer back to Zero
1049 <<<<*
1051 [>]<*
1052 </div>
1054 <div id="docs_example_cat" class="docs_hidden">
1056 Accepts input from the user and echos it to the screen
1058 Click "Cancel" to Exit Program
1060 ,[.,]
1061 </div>
1063 <div id="docs_example_data_save" class="docs_hidden">
1065 Accepts input from the user and saves in memory for future use
1067 >,[.>,]
1068 </div>
1070 <div id="docs_example_add" class="docs_hidden">
1071 Adds current location to the next location and leaves behind a Zero for the first value
1077 Plus Two
1079 >++*
1081 Move Data Pointer to first value
1085 Equals Four
1087 [->+<]*
1088 </div>
1091 <div id="docs_example_uc" class="docs_hidden">
1093 Accepts lower case input from the user and makes it uppercase
1095 Stops when user clicks Cancel
1097 ,----------[----------------------.,----------]
1098 </div>
1100 <div id="docs_example_copy_byte" class="docs_hidden">
1102 Set byte Zero
1104 +++*
1106 Set byte One
1108 >++*
1110 Move back to byte Zero
1114 Copy value of byte Zero to byte One
1116 >[-]>[-]<<[->+>+<<]>>[-<<+>>]<<*
1117 </div>
1120 <div id="docs_example_seek" class="docs_hidden">
1122 Set a few bytes to Non Zero values and Move Data Pointer
1125 >+++++
1126 >+++++
1128 >++++
1129 >++++++*
1131 Move DATA POINTER back to byte Zero
1133 <<<<<*
1135 Move DATA POINTER forward until it lands on a byte with a value of 1 preserving all bytes it passes
1137 -[+>-]+*
1138 </div>
1141 <div id="docs_example_add_two" class="docs_hidden">
1143 Adds two single digit numbers and display result
1145 Works on one digit results only
1147 ,>++++++[<-------->-],[<+>-]<.
1149 </div>
1152 <div id="docs_example_multiply" class="docs_hidden">
1154 Multiply two single digit numbers and display result
1156 Works on one digit results only
1158 ,>,>++++++++[<------<------>>-]
1159 <<[>[>+>+<<-]>>[<<+>>-]<<<-]
1160 >>>++++++[<++++++++>-]<.>.*
1161 </div>
1163 <div id="docs_example_divide" class="docs_hidden">
1165 Accepts two single digit numbers from the user divides them and displays the truncated quotient
1167 Dividend is stored in byte Zero and Divisor is stored in byte One
1169 ,>,>++++++[-<--------<-------->>]<<[>[->+>+<<]>[-<<-[>]>>>[<[>>>-<<<[-]]>>]<<]>>>+<<[-<<+>>]<<<]>[-]>>>>[-<<<<<+>>>>>]<<<<++++++[-<++++++++>]<.*
1170 </div>
1172 <div id="example_0" class="docs_hidden">
1173 ++++++++[>+>++>+++>++++>+++++>++++++>+++++++>++++++++>+++++++++>++++++++++>+++++++++++>++++++++++++>+++++++++++++>++++++++++++++>+++++++++++++++>++++++++++++++++<<<<<<<<<<<<<<<<-]>>>>>>>>>>+++.---<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<>>>>>>>>>>>>>>.<<<<<<<<<<<<<<>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>+++.---<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>+.-<<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>.<<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>+.-<<<<<<<<<<<<<<>>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>--.++<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>++.--<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>+.-<<<<<<<<<<<<<<<>>>>>>--.++<<<<<<>++.--<>++.--<>>>>>>>>>---.+++<<<<<<<<<>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>>>>>>>>>>-.+<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>-.+<<<<<<<<<<<>>>>>>--.++<<<<<<>>>>.<<<<>>>>>>>>>----.++++<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>++.--<<<<<<<<<<<<<>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>.<<<<.
1174 </div>
1176 <div id="example_1" class="docs_hidden">
1177 ++++++++[>+>++>+++>++++>+++++>++++++>+++++++>++++++++>+++++++++>++++++++++>+++++++++++>++++++++++++>+++++++++++++>++++++++++++++>+++++++++++++++>++++++++++++++++<<<<<<<<<<<<<<<<-]>>>>>>>>>>----.++++<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>-.+<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>.<<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>-.+<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>.<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>.<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>-.+<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>-.+<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>+++.---<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>--.++<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>.<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>-.+<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<<>>>>>>>>>>>>+++.---<<<<<<<<<<<<>>>>>>>>>>>>>.<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>+.-<<<<<<<<<<<<<<<>>>>>>>>>>>>>>.<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>.<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>.<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>-.+<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>.<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>>>+.-<<<<<<<<<<<<<<<>>>>>>--.++<<<<<<>++.--<>>>>>>>>>>>----.++++<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>--.++<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<.
1178 </div>
1180 <div id="example_2" class="docs_hidden">
1181 ++++++++[>+>++>+++>++++>+++++>++++++>+++++++>++++++++>+++++++++>++++++++++>+++++++++++>++++++++++++>+++++++++++++>++++++++++++++>+++++++++++++++>++++++++++++++++<<<<<<<<<<<<<<<<-]>>>>>>>>+.-<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>.<<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>-.+<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>-.+<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>-.+<<<<<<<<<<<<<>>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>-.+<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<<>>>>>>>>>>>>>.<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>.<<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>-.+<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>+.-<<<<<<<<<<<<<<>>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>.<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>--.++<<<<<<>++.--<>++.--<>>>>>>>>+.-<<<<<<<<>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>++.--<<<<<<<<<>>>>>>--.++<<<<<<>>>>.<<<<>>>>>>>>>>.<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<.
1182 </div>
1184 <div id="example_3" class="docs_hidden">
1185 ++++++++[>+>++>+++>++++>+++++>++++++>+++++++>++++++++>+++++++++>++++++++++>+++++++++++>++++++++++++>+++++++++++++>++++++++++++++>+++++++++++++++>++++++++++++++++<<<<<<<<<<<<<<<<-]>>>>>>>>>>>----.++++<<<<<<<<<<<>>>>>>>>>>>>>.<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>--.++<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>+++.---<<<<<<<<>>>>>>>>>>-.+<<<<<<<<<<>>>>>>>>++.--<<<<<<<<>>>>>>>>>>-.+<<<<<<<<<<>>>>>>>>>>----.++++<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>+++.---<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>.<<<<<<<<<<<<<<>>>>>>>>>>>>>>.<<<<<<<<<<<<<<>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>.<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<>>>>>>>+++.---<<<<<<<>>>>.<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>+++.---<<<<<<<<<<<<>>>>>>>>>>>>>.<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>-.+<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>>>>>>>>>>.<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<<>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>.<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>--.++<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>++.--<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>-.+<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>+++.---<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>--.++<<<<<<<<<<<<<>>>>>>>>>>>>>--.++<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>+++.---<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>--.++<<<<<<>++.--<>++.--<>>>>>>>>>---.+++<<<<<<<<<>>>>>>--.++<<<<<<>>>>>>>>>>>-.+<<<<<<<<<<<>>>>>>--.++<<<<<<>>>>.<<<<>>>>>>>>>----.++++<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>++.--<<<<<<<<<<<<<>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>.<<<<.
1186 </div>
1188 <div id="example_4" class="docs_hidden">
1189 ++++++++[>+>++>+++>++++>+++++>++++++>+++++++>++++++++>+++++++++>++++++++++>+++++++++++>++++++++++++>+++++++++++++>++++++++++++++>+++++++++++++++>++++++++++++++++<<<<<<<<<<<<<<<<-]>>>>>>>>>--.++<<<<<<<<<>>>>>>>>>>-.+<<<<<<<<<<>>>>>>>>>>++.--<<<<<<<<<<>>>>>>>>>>>----.++++<<<<<<<<<<<>>>>>>>>>>++.--<<<<<<<<<<>>>>>>>>+.-<<<<<<<<>>>>>>>>>>--.++<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>--.++<<<<<<<<<<<<<>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>++.--<<<<<<<<<<<<>>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>.<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<>>>>>>>>>>>>>>>+.-<<<<<<<<<<<<<<<>>>>>>----.++++<<<<<<>>>>.<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>+++.---<<<<<<<<<<<<>>>>>>>>>>>>+++.---<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<>>>>>>>>>>>>>>>+.-<<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>++.--<<<<<<<<<<<<>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>>>----.++++<<<<<<>>>>.<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>-.+<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>>>+.-<<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>+++.---<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<>>>>>>>>>>>>>>.<<<<<<<<<<<<<<>>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>--.++<<<<<<>++.--<>++.--<>>>>>>>>+.-<<<<<<<<>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>++.--<<<<<<<<<>>>>>>--.++<<<<<<>>>>.<<<<>>>>>>>>>>.<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>.<<<<.
1190 </div>
1192 <div id="example_5" class="docs_hidden">
1193 ++++++++[>+>++>+++>++++>+++++>++++++>+++++++>++++++++>+++++++++>++++++++++>+++++++++++>++++++++++++>+++++++++++++>++++++++++++++>+++++++++++++++>++++++++++++++++<<<<<<<<<<<<<<<<-]>>>>>>>>>-.+<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>-.+<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<>>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>--.++<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>.<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>+++.---<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>--.++<<<<<<>++.--<>++.--<>>>>>>>>>>>----.++++<<<<<<<<<<<>>>>>>>>>>>>>.<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>+++.---<<<<<<<<>>>>>>--.++<<<<<<>>>>.<<<<>>>>>>>>>-.+<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<.
1194 </div>
1196 <div id="example_6" class="docs_hidden">
1197 ++++++++[>+>++>+++>++++>+++++>++++++>+++++++>++++++++>+++++++++>++++++++++>+++++++++++>++++++++++++>+++++++++++++>++++++++++++++>+++++++++++++++>++++++++++++++++<<<<<<<<<<<<<<<<-]>>>>>>>>>>>----.++++<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>+++.---<<<<<<<<<<<<>>>>>>>>>>>>>.<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>.<<<<<<<<<<<<<<>>>>>>--.++<<<<<<>>>>.<<<<>>>>>>>>>>+++.---<<<<<<<<<<>>>>>>>>>>>>>.<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>.<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>+++.---<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>--.++<<<<<<>++.--<>++.--<>>>>>>>>>>----.++++<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>----.++++<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>.<<<<.
1198 </div>
1200 <div id="example_7" class="docs_hidden">
1201 ++++++++[>+>++>+++>++++>+++++>++++++>+++++++>++++++++>+++++++++>++++++++++>+++++++++++>++++++++++++>+++++++++++++>++++++++++++++>+++++++++++++++>++++++++++++++++<<<<<<<<<<<<<<<<-]>>>>>>>>+++.---<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>+.-<<<<<<<<<<<<<<>>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<>>>>>>>>>>>>>>>+.-<<<<<<<<<<<<<<<>>>>>>----.++++<<<<<<>>>>.<<<<>>>>>>>>>>>>>--.++<<<<<<<<<<<<<>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<>>>>>>----.++++<<<<<<>>>>.<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<<>>>>>>>>>>>>+++.---<<<<<<<<<<<<>>>>>>>>>>>>+++.---<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>>>--.++<<<<<<>++.--<>++.--<>>>>>>>>>----.++++<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>---.+++<<<<<<<<<<>>>>>>--.++<<<<<<>>>>.<<<<>>>>>>>>>>++.--<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>+++.---<<<<<<<<<<<<>>>>>>>>>>>>>.<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>.<<<<.
1202 </div>
1205 <div id="example_8" class="docs_hidden">
1206 ++++++++[>+>++>+++>++++>+++++>++++++>+++++++>++++++++>+++++++++>++++++++++>+++++++++++>++++++++++++>+++++++++++++>++++++++++++++>+++++++++++++++>++++++++++++++++<<<<<<<<<<<<<<<<-]>>>>>>>>+++.---<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<>>>>>>>>>>>>>>.<<<<<<<<<<<<<<>>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>>>>>>>>>+++.---<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>+++.---<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<>>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<<>>>>>>>>>>>>+++.---<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>+++.---<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>>>+.-<<<<<<<<<<<<<<<>>>>>>>>>>>>++.--<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<>>>>>>>>>>>>>>>+.-<<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>>.<<<<<<<<<<<<<<<>>>>>>>>>>>>>>.<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>.<<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>-.+<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>>>+.-<<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>.<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<<>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<>>>>>>>>>>>>>>>+.-<<<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>-.+<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>++.--<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>>>>>>>>>>.<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>.<<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>-.+<<<<<<<<<<<<<>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>+++.---<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>++.--<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<>>>>>>>>>>>>>>>+.-<<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>>.<<<<<<<<<<<<<<<>>>>>>>>>>>>>>.<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>.<<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>--.++<<<<<<>++.--<>++.--<>>>>>>>>>---.+++<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>+++.---<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>++.--<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>>+.-<<<<<<<<<<<<<<<>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<>>>>.<<<<.
1207 </div>
1210 <div id="example_9" class="docs_hidden">
1211 ++++++++[>+>++>+++>++++>+++++>++++++>+++++++>++++++++>+++++++++>++++++++++>+++++++++++>++++++++++++>+++++++++++++>++++++++++++++>+++++++++++++++>++++++++++++++++<<<<<<<<<<<<<<<<-]>>>>>>>>>----.++++<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>++.--<<<<<<<<<<<<>>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<<>>>>>>>>>>>>>-.+<<<<<<<<<<<<<>>>>>>>>>>>>>-.+<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>-.+<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>++.--<<<<<<<<<<<<>>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<<>>>>>>>>>>>>>-.+<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>>>--.++<<<<<<>>>>.<<<<>>>>>>>>>>>----.++++<<<<<<<<<<<>>>>>>>>>>>>>.<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>>+.-<<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<>>>>>>>>>>>>>>>+.-<<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>>>>>>>>>>.<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>.<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>--.++<<<<<<>++.--<>++.--<>>>>>>>>>>>---.+++<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>.<<<<.
1212 </div>
1214 <div id="example_10" class="docs_hidden">
1215 ++++++++[>+>++>+++>++++>+++++>++++++>+++++++>++++++++>+++++++++>++++++++++>+++++++++++>++++++++++++>+++++++++++++>++++++++++++++>+++++++++++++++>++++++++++++++++<<<<<<<<<<<<<<<<-]>>>>>>>>+++.---<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<>>>>>>>>>>>>>>.<<<<<<<<<<<<<<>>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>+++.---<<<<<<<<<<>>>>>>>>>>>>+++.---<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>+++.---<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>++.--<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>+++.---<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<>>>>>>>>>>>>>>.<<<<<<<<<<<<<<>>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>.<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<>>>>>>>>>>>>>>>+.-<<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>++.--<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>>>>>>>>>+++.---<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>.<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>>>--.++<<<<<<>++.--<>++.--<>>>>>>>>>---.+++<<<<<<<<<>>>>>>--.++<<<<<<>>>>.<<<<>>>>>>>>>>>-.+<<<<<<<<<<<>>>>>>--.++<<<<<<>>>>.<<<<>>>>>>>>>----.++++<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>++.--<<<<<<<<<<<<<>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>.<<<<.
1216 </div>
1218 <div id="docs_ascii" class="docs_hidden">
1220 <table id="ascii">
1221 <caption><b>ASCII Chart</b></caption>
1223 <tr class="ref_even">
1224 <td id="dat_col">0</td>
1225 <td class="ctrl" id="val_col">NUL</td>
1226 <td id="dat_col">16</td>
1227 <td class="ctrl" id="val_col">DLE</td>
1228 <td id="dat_col">32</td>
1229 <td class="ctrl" id="val_col">SP</td>
1230 <td id="dat_col">48</td>
1231 <td id="val_col">0</td>
1232 <td id="dat_col">64</td>
1233 <td id="val_col">@</td>
1234 <td id="dat_col">80</td>
1235 <td id="val_col">P</td>
1236 <td id="dat_col">96</td>
1237 <td id="val_col">`</td>
1238 <td id="dat_col">112</td>
1239 <td>p</td>
1240 </tr>
1242 <tr class="ref_odd">
1243 <td>1</td>
1244 <td class="ctrl" id="val_col">SOH</td>
1245 <td>17</td>
1246 <td class="ctrl" id="val_col">DC1</td>
1247 <td>33</td>
1248 <td id="val_col">!</td>
1249 <td>49</td>
1250 <td id="val_col">1</td>
1251 <td>65</td>
1252 <td id="val_col">A</td>
1253 <td>81</td>
1254 <td id="val_col">Q</td>
1255 <td>97</td>
1256 <td id="val_col">a</td>
1257 <td>113</td>
1258 <td>q</td>
1259 </tr>
1261 <tr class="ref_even">
1262 <td>2</td>
1263 <td class="ctrl" id="val_col">STX</td>
1264 <td>18</td>
1265 <td class="ctrl" id="val_col">DC2</td>
1266 <td>34</td>
1267 <td id="val_col">"</td>
1268 <td>50</td>
1269 <td id="val_col">2</td>
1270 <td>66</td>
1271 <td id="val_col">B</td>
1272 <td>82</td>
1273 <td id="val_col">R</td>
1274 <td>98</td>
1275 <td id="val_col">b</td>
1276 <td>114</td>
1277 <td>r</td>
1278 </tr>
1280 <tr class="ref_odd">
1281 <td>3</td>
1282 <td class="ctrl" id="val_col">ETX</td>
1283 <td>19</td>
1284 <td class="ctrl" id="val_col">DC3</td>
1285 <td>35</td>
1286 <td id="val_col">#</td>
1287 <td>51</td>
1288 <td id="val_col">3</td>
1289 <td>67</td>
1290 <td id="val_col">C</td>
1291 <td>83</td>
1292 <td id="val_col">S</td>
1293 <td>99</td>
1294 <td id="val_col">c</td>
1295 <td>115</td>
1296 <td>s</td>
1297 </tr>
1299 <tr class="ref_even">
1300 <td>4</td>
1301 <td class="ctrl" id="val_col">EOT</td>
1302 <td>20</td>
1303 <td class="ctrl" id="val_col">DC4</td>
1304 <td>36</td>
1305 <td id="val_col">$</td>
1306 <td>52</td>
1307 <td id="val_col">4</td>
1308 <td>68</td>
1309 <td id="val_col">D</td>
1310 <td>84</td>
1311 <td id="val_col">T</td>
1312 <td>100</td>
1313 <td id="val_col">d</td>
1314 <td>116</td>
1315 <td>t</td>
1316 </tr>
1318 <tr class="ref_odd">
1319 <td>5</td>
1320 <td class="ctrl" id="val_col">ENQ</td>
1321 <td>21</td>
1322 <td class="ctrl" id="val_col">NAK</td>
1323 <td>37</td>
1324 <td id="val_col">%</td>
1325 <td>53</td>
1326 <td id="val_col">5</td>
1327 <td>69</td>
1328 <td id="val_col">E</td>
1329 <td>85</td>
1330 <td id="val_col">U</td>
1331 <td>101</td>
1332 <td id="val_col">e</td>
1333 <td>117</td>
1334 <td>u</td>
1335 </tr>
1337 <tr class="ref_even">
1338 <td>6</td>
1339 <td class="ctrl" id="val_col">ACK</td>
1340 <td>22</td><td class="ctrl" id="val_col">SYN</td>
1341 <td>38</td>
1342 <td id="val_col">&amp;</td>
1343 <td>54</td>
1344 <td id="val_col">6</td>
1345 <td>70</td>
1346 <td id="val_col">F</td>
1347 <td>86</td>
1348 <td id="val_col">V</td>
1349 <td>102</td>
1350 <td id="val_col">f</td>
1351 <td>118</td>
1352 <td>v</td>
1353 </tr>
1355 <tr class="ref_odd">
1356 <td>7</td>
1357 <td class="ctrl" id="val_col">BEL</td>
1358 <td>23</td>
1359 <td class="ctrl" id="val_col">ETB</td>
1360 <td>39</td>
1361 <td id="val_col">'</td>
1362 <td>55</td>
1363 <td id="val_col">7</td>
1364 <td>71</td>
1365 <td id="val_col">G</td>
1366 <td>87</td>
1367 <td id="val_col">W</td>
1368 <td>103</td>
1369 <td id="val_col">g</td>
1370 <td>119</td>
1371 <td>w</td>
1372 </tr>
1374 <tr class="ref_even">
1375 <td>8</td>
1376 <td class="ctrl" id="val_col">BS</td>
1377 <td>24</td>
1378 <td class="ctrl" id="val_col">CAN</td>
1379 <td>40</td>
1380 <td id="val_col">(</td>
1381 <td>56</td>
1382 <td id="val_col">8</td>
1383 <td>72</td>
1384 <td id="val_col">H</td>
1385 <td>88</td>
1386 <td id="val_col">X</td>
1387 <td>104</td>
1388 <td id="val_col">h</td>
1389 <td>120</td>
1390 <td>x</td>
1391 </tr>
1393 <tr class="ref_odd">
1394 <td>9</td>
1395 <td class="ctrl" id="val_col">HT</td>
1396 <td>25</td>
1397 <td class="ctrl" id="val_col">EM</td>
1398 <td>41</td>
1399 <td id="val_col">)</td>
1400 <td>57</td>
1401 <td id="val_col">9</td>
1402 <td>73</td>
1403 <td id="val_col">I</td>
1404 <td>89</td>
1405 <td id="val_col">Y</td>
1406 <td>105</td>
1407 <td id="val_col">i</td>
1408 <td>121</td>
1409 <td>y</td>
1410 </tr>
1412 <tr class="ref_even">
1413 <td>10</td>
1414 <td class="ctrl" id="val_col">LF</td>
1415 <td>26</td>
1416 <td class="ctrl" id="val_col">SUB</td>
1417 <td>42</td>
1418 <td id="val_col">*</td>
1419 <td>58</td>
1420 <td id="val_col">:</td>
1421 <td>74</td>
1422 <td id="val_col">J</td>
1423 <td>90</td>
1424 <td id="val_col">Z</td>
1425 <td>106</td>
1426 <td id="val_col">j</td>
1427 <td>122</td>
1428 <td>z</td>
1429 </tr>
1431 <tr class="ref_odd">
1432 <td>11</td>
1433 <td class="ctrl" id="val_col">VT</td>
1434 <td>27</td>
1435 <td class="ctrl" id="val_col">ESC</td>
1436 <td>43</td>
1437 <td id="val_col">+</td>
1438 <td>59</td>
1439 <td id="val_col">;</td>
1440 <td>75</td>
1441 <td id="val_col">K</td>
1442 <td>91</td>
1443 <td id="val_col">[</td>
1444 <td>107</td>
1445 <td id="val_col">k</td>
1446 <td>123</td>
1447 <td>{</td>
1448 </tr>
1450 <tr class="ref_even">
1451 <td>12</td>
1452 <td class="ctrl" id="val_col">FF</td>
1453 <td>28</td>
1454 <td class="ctrl" id="val_col">FS</td>
1455 <td>44</td>
1456 <td id="val_col">,</td>
1457 <td>60</td>
1458 <td id="val_col">&lt;</td>
1459 <td>76</td>
1460 <td id="val_col">L</td>
1461 <td>92</td>
1462 <td id="val_col">\</td>
1463 <td>108</td>
1464 <td id="val_col">l</td>
1465 <td>124</td>
1466 <td>|</td>
1467 </tr>
1469 <tr class="ref_odd">
1470 <td>13</td>
1471 <td class="ctrl" id="val_col">CR</td>
1472 <td>29</td>
1473 <td class="ctrl" id="val_col">GS</td>
1474 <td>45</td>
1475 <td id="val_col">-</td>
1476 <td>61</td>
1477 <td id="val_col">=</td>
1478 <td>77</td>
1479 <td id="val_col">M</td>
1480 <td>93</td>
1481 <td id="val_col">]</td>
1482 <td>109</td>
1483 <td id="val_col">m</td>
1484 <td>125</td>
1485 <td>}</td>
1486 </tr>
1488 <tr class="ref_even">
1489 <td>14</td>
1490 <td class="ctrl" id="val_col">SO</td>
1491 <td>30</td>
1492 <td class="ctrl" id="val_col">RS</td>
1493 <td>46</td>
1494 <td id="val_col">.</td>
1495 <td>62</td>
1496 <td id="val_col">></td>
1497 <td>78</td>
1498 <td id="val_col">N</td>
1499 <td>94</td>
1500 <td id="val_col">^</td>
1501 <td>110</td>
1502 <td id="val_col">n</td>
1503 <td>126</td>
1504 <td>~</td>
1505 </tr>
1507 <tr class="ref_odd">
1508 <td>15</td>
1509 <td class="ctrl" id="val_col">SI</td>
1510 <td>31</td>
1511 <td class="ctrl" id="val_col">US</td>
1512 <td>47</td>
1513 <td id="val_col">/</td>
1514 <td>63</td>
1515 <td id="val_col">?</td>
1516 <td>79</td>
1517 <td id="val_col">O</td>
1518 <td>95</td>
1519 <td id="val_col">_</td>
1520 <td>111</td>
1521 <td id="val_col">o</td>
1522 <td>127</td>
1523 <td class="ctrl">DEL</td>
1524 </tr>
1525 </table>
1526 </div>
1528 </body>
1529 </html>