Added clock timer and connection functions, scalable gates.
[CS-101.git] / turing_tarpit.html
blobe09043455582728e2feb346d14e15005b6c85836
1 <html>
2 <title>Turing Tarpit Simulator</title>
3 <script>
5 /* internal values for simulated computer */
6 var ins_pointer = 0; /* instruction pointer */
7 var ins_pointer_changed = 0; /* bool set to 1 if ins pointer has changed in the last step */
8 var ins_pointer_last_address = 0; /* address of ins pointer in last step */
9 var dat_pointer = 0; /* data pointer */
10 var dat_pointer_changed = 0; /* bool set to 1 if data pointer has changed in the last step */
11 var dat_pointer_last_address = 0; /* address of data pointer in last step */
12 var ram_last_address = 0; /* address of RAM updated in last step */
13 var breakpoints = 1; /* bool set to 0 to ignore breakpoints */
14 var ram = new Array(); /* memory of virtual machine */
15 var jmp = new Array(); /* used as a stack to jump from one command to another */
16 var ins = null; /* current instruction from code */
17 var halt = false; /* halts program ASAP */
19 /* objects that display data to the user */
20 var disp_docs;
21 var disp_code;
22 var disp_ram;
23 var disp_ins_pointer;
24 var disp_dat_pointer;
25 var disp_pointer = "<div id=disp_pointer>&#8658;</div>"; /* data pointer displayed in memory block */
27 /* select all contents of this input for the convenience of the user */
28 function select_all(e)
30 document.getElementById(e).focus();
31 document.getElementById(e).select();
34 /* highlight current instruction running on machine */
35 function code_highlight(inputEl, selStart, selEnd)
37 if (inputEl.setSelectionRange) {
38 inputEl.focus();
39 inputEl.setSelectionRange(selStart, selEnd);
40 } else if (inputEl.createTextRange) {
41 var range = inputEl.createTextRange();
42 range.collapse(true);
43 range.moveEnd('character', selEnd);
44 range.moveStart('character', selStart);
45 range.select();
49 /* turns breakpoints on and off */
50 function debug_toggle_breakpoints()
52 var button = document.getElementById("dbg_status");
53 if(breakpoints) {
54 breakpoints=0;
55 button.innerHTML='<img src="http://opentextbook.info/icons/32x32/bug_delete.png">';
56 }else {
57 breakpoints=1;
58 button.innerHTML='<img src="http://opentextbook.info/icons/32x32/bug_add.png">';
62 /* removes all breakpoints in source code */
63 function debug_remove_breakpoints()
65 /* ask user for permission first */
66 var ans = confirm("Permanently remove all breakpoints from code?");
67 var code = document.getElementById("code");
68 if(ans) { code.value = code.value.replace( /\*/g , '' ); }
71 /* test current code character - return true if it is an instruction */
72 /* tried to use regex on this and could not get it to work :( */
73 function tst_inst()
75 if(ins == '+' || ins == '-' || ins == '>' || ins == '<' ||
76 ins == '*' || ins == '.' || ins == '[' || ins == ']' || ins == ',') {
77 return true;
79 return false;
82 /* find next instruction in code and move instruction pointer to it */
83 function fnd_nxt_inst()
85 do {
86 if(ins_pointer > disp_code.value.length) { break; } /* must stop at end of code */
87 update_ins_pointer(1);
88 ins = disp_code.value.substring(ins_pointer-1,ins_pointer); /* get data at ins_pointer location */
89 }while(!tst_inst());
90 if(ins_pointer > disp_code.value.length) {
91 alert("HALT: Program is Complete");
92 halt = true;
93 reset();
96 /* highlight code currently executing on screen */
97 code_highlight(disp_code, ins_pointer-1, ins_pointer);
100 /* find previous instruction in code and move instruction pointer to it */
101 function fnd_prv_inst()
103 ins_pointer--;
104 while(ins_pointer >= 0)
106 ins = disp_code.value.substring(ins_pointer-1, ins_pointer); /* get data at ins_pointer location */
107 if(tst_inst()) { return; }
108 ins_pointer--;
110 if(ins_pointer == 0) {
111 alert("SEGFAULT: Program could not find corresponding jump instruction");
112 halt = true;
113 reset();
117 /* execute next instruction from input */
118 function exe_nxt_inst()
120 var temp_count = 0;
121 fnd_nxt_inst();
122 switch(ins)
124 case '+':
125 ram_modify(dat_pointer, 1);
126 break;
127 case '-':
128 ram_modify(dat_pointer, -1);
129 break;
130 case '>':
131 dat_point_modify(1);
132 break;
133 case '<':
134 dat_point_modify(-1);
135 break;
136 case '*': /* these are comments - a break from the standard language */
137 if(breakpoints) { stop(); }
138 break;
139 case '.':
140 print_mem();
141 break;
142 case '[':
143 jump_fwd();
144 break;
145 case ']':
146 jump_bak();
147 break;
148 case ',':
149 get_byte();
150 break;
151 default:
152 /* must be a comment :) */
156 /* if byte at data pointer is = 0, jump forward to instruction after matching ']' command */
157 function jump_fwd()
159 if(ram[dat_pointer] != 0) { return; }
160 /* add this jump to stack */
161 jmp.push('[');
162 /* loop through code, pushing and popping stack until stack is empty */
163 while(jmp.length > 0) {
164 fnd_nxt_inst();
165 if(ins == ']') { jmp.pop();
166 } else if (ins == '[') { jmp.push(']'); }
170 /* if byte at data pointer is != 0, jump back to instruction after matching '[' command */
171 function jump_bak()
173 if(ram[dat_pointer] == 0) { return; }
174 /* add this jump to stack */
175 jmp.push(']');
176 /* loop through code, pushing and popping stack until stack is empty */
177 while(jmp.length > 0 && ins_pointer > 0) {
178 fnd_prv_inst();
179 if(ins == '[') { jmp.pop();
180 } else if (ins == ']') { jmp.push(']'); }
184 /* get single byte of input from the user */
185 function get_byte()
187 var b = prompt("Please Single Byte of Data","");
188 ram_set(dat_pointer, b.charCodeAt(b));
192 rewind code to beginning reset all memory locations
193 this simulates rebooting the computer
195 function reset()
197 update_ins_pointer(0);
198 dat_point_modify(0);
199 ram_reset();
200 ram_highlight_clear();
201 dat_point_highlight();
202 document.getElementById("output_disp").innerHTML = '';
203 document.getElementById("addr_0").innerHTML = "0" + disp_pointer;
204 disp_ins_pointer.style.backgroundColor = "#fff";
205 dat_point_highlight_clear();
206 code_highlight(disp_code, 0, 1);
209 /* stop stepping through code on timer if breakpoints enabled */
210 function stop()
212 halt = true;
215 /* run through program on timer, stopping at breakpoints if enabled */
216 function run()
218 var total_steps = document.getElementById("code").value.length;
219 halt = false; /* seems weird, but this is the only way to make the halt work */
220 while(ins_pointer <= total_steps && halt == false) { step_next(); }
223 /* step forward one instruction */
224 function step_next()
226 //update_ins_pointer(1);
227 exe_nxt_inst();
228 dat_point_highlight();
231 /* more back one instruction - undoes work of previous instruction */
232 function step_back()
234 update_ins_pointer(-1);
235 dat_point_highlight();
238 /* update instruction pointer
239 direction:
241 1 increment pointer by one
242 0 set pointer to 0
243 -1 decrement pointer by one
245 function update_ins_pointer(direction)
247 if(direction < 0 && ins_pointer != 0 ) { ins_pointer--; }
248 else if (direction == 0 ) { ins_pointer = 0; }
249 else { ins_pointer++; }
250 disp_ins_pointer.value = ins_pointer;
251 ins_pointer_changed = 1;
252 ins_point_highlight();
255 /* update instruction pointer and set to new value */
256 function ins_point_modify_by_address(val)
258 /* instruction pointer can never be less than 0 */
259 if(val < 0) {
260 alert("Instruction Pointer cannot be set less than Zero.");
261 disp_ins_pointer.value = ins_pointer; /* reset val to previous */
262 return;
264 if(val > disp_code.value.length) {
265 alert("Instruction Pointer cannot be set beyond end of code.\n Current length of code: " + disp_code.value.length);
266 disp_ins_pointer.value = ins_pointer; /* reset val to previous */
267 return;
269 ins_pointer = disp_ins_pointer.value;
270 if(ins_pointer_last_address != ins_pointer) { ins_pointer_changed = 1; }
271 ins_point_highlight();
274 /* turns on and off data pointer highlight if it has changed this step */
275 function ins_point_highlight()
277 if(ins_pointer_changed) {
278 disp_ins_pointer.style.backgroundColor = "#ff0";
279 ins_pointer_changed = 0;
280 } else {
281 disp_ins_pointer.style.backgroundColor = "#fff";
285 /* setup virtual machine - must be called on page load */
286 function init_form()
288 disp_code = document.getElementById("code");
289 disp_ins_pointer = document.getElementById("ins_pointer_disp");
290 disp_dat_pointer = document.getElementById("dat_pointer_disp");
291 disp_ram = document.getElementById("ram_disp");
292 ram_reset();
293 ram_init();
294 document.getElementById("addr_0").innerHTML = "0" + disp_pointer;
295 disp_docs = document.getElementById("docs");
297 /* put hello world into input window */
298 var randomnumber = Math.floor(Math.random()*11)
299 disp_code.innerHTML = document.getElementById("example_"+randomnumber).innerHTML;
302 /* reset all RAM to 0 */
303 function ram_reset()
305 var i;
306 for(i=0; i < 64; i++) { ram[i] = 0; }
309 /* update highlight of one memory address and release other highlight if needed */
310 function ram_highlight(address)
312 var disp_last_address = document.getElementById("ram_"+ram_last_address);
313 /* highlight background of current address */
314 document.getElementById("ram_"+address).style.backgroundColor = "#ff0";
316 /* remove highlight from last address modified */
317 if(ram_last_address != address){
318 if(ram_last_address%2==0) {
319 disp_last_address.style.backgroundColor = "#fff";
320 } else {
321 disp_last_address.style.backgroundColor = "#def";
326 /* remove highlight from all memory cells regardless of current status */
327 function ram_highlight_clear()
329 var i;
330 for(i=0; i < 64; i++)
332 if(i%2==0) {
333 document.getElementById("ram_"+i).style.backgroundColor = "#fff";
334 } else {
335 document.getElementById("ram_"+i).style.backgroundColor = "#def";
337 document.getElementById("ram_"+i).innerHTML = ram[i];
341 /* define RAM on screen */
342 function ram_init()
344 var i;
345 var table = "<table id=memory_table>\n";
346 for(i=0; i < 16; i++){
347 if(i%2==0) {
348 table += "\t<tr class=even>";
349 } else {
350 table += "\t<tr class=odd>";
352 table += "<td width='35' class=addr id=addr_"+i+">"+i+"</td><td width='35' class=ram id=ram_"+i+">"+ram[i]+"</td>";
353 table += "<td width='35' class=addr id=addr_"+(i+16)+">"+(i+16)+"</td><td class=ram id=ram_"+(i+16)+">"+ram[i+16]+"</td>\n";
354 table += "<td class=addr id=addr_"+(i+32)+">"+(i+32)+"</td><td width='35' class=ram id=ram_"+(i+32)+">"+ram[i+32]+"</td>\n";
355 table += "<td class=addr id=addr_"+(i+48)+">"+(i+48)+"</td><td width='35' class=ram id=ram_"+(i+48)+">"+ram[i+48]+"</td></tr>\n";
357 table += "</table>\n";
358 disp_ram.innerHTML = table;
362 modify the value at this address - reset RAM highlights for all addresses
363 1 increment RAM by one
364 0 set RAM to 0
365 -1 decrement RAM by one
367 function ram_modify(address, change)
369 if(address < 0 || address > 63) {
370 alert("SEGFAULT: Cannot Modify Data Outside of Memory Range");
371 halt = true;
372 reset();
373 return;
376 if (change > 0 ) {
377 ram[address]++;
378 } else if(change < 0 ) {
379 ram[address]--;
380 } else {
381 ram[address] = 0;
383 ram_highlight(address);
384 document.getElementById("ram_"+address).innerHTML = ram[address];
385 ram_last_address = address;
388 /* modify one byte of memory - set to address */
389 function ram_set(address, val)
391 if(address < 0 || address > 63) {
392 alert("SEGFAULT: Cannot Modify Data Outside of Memory Range");
393 halt = true;
394 reset();
395 return;
398 ram[address] = val;
399 ram_highlight(address);
400 document.getElementById("ram_"+address).innerHTML = ram[address];
401 ram_last_address = address;
405 modify state of data pointer
406 1 increment data pointer by one
407 0 set data pointer to 0
408 -1 decrement data pointer by one
411 function dat_point_modify(change)
413 dat_pointer_last_address = dat_pointer;
414 if (change > 0 ) {
415 dat_pointer++;
416 } else if(change < 0 ) {
417 /* could put SEGFAULT here, but C does not have a check for this, so neither will I ;) */
418 dat_pointer--;
419 } else {
420 dat_pointer = 0;
423 /* place '>' char next to memory address in table */
424 if(dat_pointer >= 0 && dat_pointer < 64) {
425 document.getElementById("addr_"+dat_pointer).innerHTML = dat_pointer + disp_pointer;
428 /* remove '>' char next to memory address in table */
429 if(dat_pointer_last_address >= 0 && dat_pointer_last_address < 64) {
430 document.getElementById("addr_"+dat_pointer_last_address).innerHTML = dat_pointer_last_address;
433 disp_dat_pointer.value = dat_pointer;
434 dat_pointer_changed = 1;
437 function dat_point_modify_by_address(val)
439 dat_pointer_last_address = dat_pointer;
440 dat_pointer = disp_dat_pointer.value;
441 /* place '>' char next to memory address in table */
442 if(dat_pointer >= 0 && dat_pointer < 64) {
443 document.getElementById("addr_"+dat_pointer).innerHTML = dat_pointer + disp_pointer;
446 /* remove '>' char next to memory address in table */
447 if(dat_pointer_last_address >= 0 && dat_pointer_last_address < 64) {
448 document.getElementById("addr_"+dat_pointer_last_address).innerHTML = dat_pointer_last_address;
450 dat_pointer_changed = 1;
451 dat_point_highlight();
454 /* turns on and off data pointer highlight if it has changed this step */
455 function dat_point_highlight()
457 if(dat_pointer_changed) {
458 disp_dat_pointer.style.backgroundColor = "#ff0";
459 dat_pointer_changed = 0;
460 } else {
461 disp_dat_pointer.style.backgroundColor = "#fff";
464 /* as a convenience to the user, set to red if pointer is out of memory range */
465 if(dat_pointer < 0 || dat_pointer > 63) {
466 disp_dat_pointer.style.backgroundColor = "#f00";
470 /* remove highlight from data pointer */
471 function dat_point_highlight_clear()
473 disp_dat_pointer.style.backgroundColor = "#fff";
476 /* print ASCII representation of memory at data pointer */
477 function print_mem()
479 var x = String.fromCharCode(ram[dat_pointer]);
480 document.getElementById("output_disp").innerHTML += x;
483 /* documentation stored inside invisible div. This shows its contents. */
484 function display_docs()
486 disp_docs.style.visibility = "visible";
487 docs_select("docs_main");
490 /* hide documentation from user */
491 function hide_docs()
493 disp_docs.style.visibility = "hidden";
496 function docs_select(page)
498 if(page == "basic") {
499 document.getElementById("docs_content").innerHTML = document.getElementById("docs_basic").innerHTML;
500 } else if(page == "features") {
501 document.getElementById("docs_content").innerHTML = document.getElementById("docs_features").innerHTML;
502 } else if(page == "examples") {
503 document.getElementById("docs_content").innerHTML = document.getElementById("docs_examples").innerHTML;
504 } else if(page == "examples2") {
505 document.getElementById("docs_content").innerHTML = document.getElementById("docs_examples2").innerHTML;
506 } else if(page == "ascii") {
507 document.getElementById("docs_content").innerHTML = document.getElementById("docs_ascii").innerHTML;
508 } else {
509 document.getElementById("docs_content").innerHTML = document.getElementById("docs_main").innerHTML;
515 allows user to kick off example from the help menu.
516 closes documentation menu, overwrites code with example.
517 prints error message if something goes wrong.
520 function docs_try(ex)
522 var ans = confirm("This will delete code currently loaded in machine.");
523 if(!ans) { return; }
524 hide_docs(); /* close documentation window */
525 reset(); /* reset computer */
526 if(ex == null) { alert("Example not setup correctly."); return; }
527 disp_code.innerHTML = document.getElementById(ex).innerHTML; /* write data out to code textarea */
530 </script>
532 <style type="text/css">
534 body {
535 font-family: Tahoma, Arial, Helvetica, sans-serif;
538 #disp_pointer {
539 float:right;
540 color: #f00;
543 #code_buttons {
544 position: absolute;
545 top: 570px;
546 left: 10px;
549 #input_banner {
550 position: absolute;
551 top: 120px;
552 left: 10px;
555 #da_banner {
556 position: absolute;
557 top: 360px;
558 left: 625px;
561 #ref_banner {
562 position: absolute;
563 top: 410px;
564 left: 625px;
567 #ip_banner {
568 position: absolute;
569 top: 315px;
570 left: 625px;
573 #output_banner {
574 position: absolute;
575 top: 120px;
576 left: 625px;
579 #memory_banner {
580 position: absolute;
581 top: 120px;
582 left: 315px;
585 #input {
586 position: absolute;
587 top: 140px;
588 left: 10px;
591 #ram_disp {
592 position: absolute;
593 top: 140px;
594 left: 315px;
597 #memory_table {
598 border:1px solid #000;
599 border-collapse: collapse;
602 .even td {
603 padding: 4px;
604 border-bottom:1px solid #000;
607 .odd td {
608 padding: 4px;
609 background-color: #def;
610 border-bottom: 1px solid #000;
613 .addr {
614 color: #00f;
617 .ram {
618 border-right:1px solid #000;
621 #output {
622 position: absolute;
623 top: 140px;
624 left: 625px;
627 #docs {
628 border:1px solid #000;
629 background-color: #fff;
630 position: absolute;
631 top: 10px;
632 left: 10px;
633 width: 950px;
634 height:750px;
635 visibility: hidden;
638 #docs_top_banner {
639 color: #000;
640 background-color: #7cf;
641 border-bottom:1px solid #000;
642 position: absolute;
643 top: 0px;
644 left: 0px;
645 height: 45px;
646 padding-top: 5px;
647 padding-left: 5px;
648 width: 945px;
651 #docs_close_btn {
652 position: absolute;
653 top: 0px;
654 right: 0px;
655 cursor: pointer;
656 padding: 6px;
659 #docs_mnu_btn {
660 position: absolute;
661 top: 0px;
662 left: 375px;
663 margin-top: 5px;
664 padding-left: 20px;
665 padding-right: 20px;
668 #docs_content {
669 position: absolute;
670 top: 55px;
671 padding: 10px;
674 #docs_link:hover {
675 background-color: #def;
676 cursor: pointer;
680 .docs_code_ex {
681 background-color: #def;
682 border: 1px solid #ddd;
683 padding: 5px;
686 .docs_hidden {
687 visibility: hidden;
690 #instruction {
691 position: absolute;
692 top: 335px;
693 left: 625px;
696 #data {
697 position: absolute;
698 top: 385px;
699 left: 625px;
702 #ascii {
703 border-collapse: collapse;
704 border: 1px solid #ddd;
707 #reference {
708 border-collapse: collapse;
709 border: 1px solid #ddd;
710 position: absolute;
711 top: 430px;
712 left: 625px;
713 width: 280px;
716 #ascii {
717 text-align: center;
720 #val_col {
721 border-right: 1px solid #ddd;
722 width: 10px;
723 padding-right: 15px;
726 #dat_col {
727 width: 100px;
730 .ref_even td {
731 border-bottom: 1px solid #ddd;
734 .ref_odd td {
735 border-bottom: 1px solid #ddd;
736 background-color: #def;
739 .ref_ins {
740 font-size: 18px;
741 font-weight:bold;
742 color: #00f;
745 </style>
746 <body onLoad="init_form();">
748 <center><h2>Turing Tarpit Simulator</h2></center>
750 <center>
751 <button onClick='reset();'><img src="http://opentextbook.info/icons/32x32/resultset_first.png" title="Restart" alt="Restart"></button>
752 &nbsp;&nbsp;
753 <button onClick='step_back();'><img src="http://opentextbook.info/icons/32x32/resultset_previous.png" title="Step Back" alt="Step Back"></button>
754 &nbsp;&nbsp;
755 <button onClick='step_next();'><img src="http://opentextbook.info/icons/32x32/resultset_next.png" title="Next Step" alt="Next Step"></button>
756 &nbsp;&nbsp;
757 <button onClick='run();'><img src="http://opentextbook.info/icons/32x32/resultset_last.png" title="Run" alt="Run"></button>
758 &nbsp;&nbsp;
759 <button onClick='halt();'><img src="http://opentextbook.info/icons/32x32/cancel.png" title="Halt Execution" alt="Halt Execution"></button>
760 &nbsp;&nbsp;
761 <button disabled><img src="http://opentextbook.info/icons/32x32/disk.png" title="Save Code" alt="Save Code"></button>
762 &nbsp;&nbsp;
763 <button onClick='display_docs();'><img src="http://opentextbook.info/icons/32x32/book_open.png" title="Open Documentation" alt="Open Documentation"></button>
764 </center>
766 <div id="code_buttons">
767 <button id="dbg_status" onClick='debug_toggle_breakpoints();' title="Enable/Disable Breakpoints" alt="Enable/Disable Breakpoints">
768 <img src="http://opentextbook.info/icons/32x32/bug_add.png">
769 </button>
770 &nbsp;&nbsp;
771 <button id="dbg_status" onClick='debug_remove_breakpoints();' title="Remove Breakpoints" alt="Remove Breakpoints">
772 <img src="http://opentextbook.info/icons/32x32/bin.png">
773 </button>
774 </div>
776 <div id="input_banner">INPUT</div>
777 <div id="input"><textarea id="code" rows="27" cols="38"></textarea></div>
779 <div id="ip_banner">INSTRUCTION POINTER</div>
780 <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>
782 <div id="da_banner">DATA POINTER</div>
783 <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>
785 <div id="ref_banner">INSTRUCTION REFERENCE</div>
786 <table id="reference">
787 <tr class="ref_even"><td class="ref_ins">+</td><td>increment byte at data pointer</td></tr>
788 <tr class="ref_odd" ><td class="ref_ins">-</td><td>decrement byte at data pointer</td></tr>
789 <tr class="ref_even"><td class="ref_ins">></td><td>increment data pointer</td></tr>
790 <tr class="ref_odd" ><td class="ref_ins"><</td><td>decrement data pointer</td></tr>
791 <tr class="ref_even"><td class="ref_ins">.</td><td>print byte at data pointer</td></tr>
792 <tr class="ref_odd" ><td class="ref_ins">,</td><td>accept one byte of input</td></tr>
793 <tr class="ref_even"><td class="ref_ins">*</td><td>set breakpoint</td></tr>
794 </table>
796 <div id="memory_banner">MEMORY</div>
797 <div id="ram_disp"></div>
798 <div id="output_banner">OUTPUT</div>
799 <div id="output">
800 <textarea name=code id=output_disp rows="10" cols="38" disabled ></textarea>
801 </div>
802 <div id="docs">
803 <div id="docs_top_banner">
804 Turing Tarpit Simulator Documentation&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
805 <button id="docs_mnu_btn" onClick="docs_select('main');"><img src="http://opentextbook.info/icons/32x32/house.png">Main Menu</button>
806 <div id="docs_close_btn" onClick="hide_docs();"><img src="http://opentextbook.info/icons/32x32/cross.png"></div></div>
808 <div id="docs_content"></div>
809 </div>
811 <div id="docs_main" class="docs_hidden">
812 <div id="docs_link" onClick="docs_select('basic');"><b>Basic Operation</b></div><br>
813 <div id="docs_link" onClick="docs_select('features');"><b>Features and Hints</b></div><br>
814 <div id="docs_link" onClick="docs_select('examples');"><b>Example Code 1</b></div><br>
815 <div id="docs_link" onClick="docs_select('examples2');"><b>Example Code 2</b></div><br>
816 <div id="docs_link" onClick="docs_select('ascii');"><b>ASCII Chart</b></div>
817 </div>
819 <div id="docs_basic" class="docs_hidden">
821 <b>Basic Operation</b>
823 <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:
825 <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.
827 <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.
829 <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.
831 <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.
833 <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>.
835 <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.
837 <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.
839 </div>
841 <div id="docs_features" class="docs_hidden">
843 <b>Features and Hints</b>
845 <p>All characters outside the Instruction Set are considered comments and will be skipped over during runtime.
847 <p>While program executes, the <b>INPUT</b> cursor is moved over the current instruction.
849 <p>User can change the address of the <b>DATA POINTER</b> and Instruction Pointer at any time.
850 <b>MEMORY</b> and pointers that have been modified are highlighted in yellow until the next step.
852 <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.
854 <p>The Instruction Pointer can point to a location range of 1 to the number of characters in the <b>INPUT</b>.
856 <p>Restarting the machine will reset all <b>MEMORY</b>, Data and Instruction Pointers to zero.
858 <p>The <b>OUTPUT</b> of the program cannot be edited.
860 <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.
862 <p>In this version the programs you type in are not saved to your computer. This must be done as a manual operation.
864 <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.
866 <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).
868 <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.
870 <p>No server interaction or outside service is needed for this program to operate.
871 </div>
877 <div id="docs_examples" class="docs_hidden">
878 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.
880 <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>
881 Sets value at current <b>DATA POINTER</b> to Zero.
882 <div class=docs_code_ex>
884 </div>
885 <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>
886 Sets value of all previous bytes including current byte to Zero.
887 <div class=docs_code_ex>
888 [[-]<]
889 </div>
890 <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>
891 Goes back to byte Zero.
892 <div class=docs_code_ex>
893 [<]>
894 </div>
895 <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>
896 Increments the <b>DATA POINTER</b> until a 0 is found then decrements it until the current byte is non-zero.
897 <div class=docs_code_ex>
898 [>]<
899 </div>
900 <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>
901 Accepts input from the user and echos it to the screen, similar to the UNIX cat program.
902 <div class=docs_code_ex>
903 ,[.,]
904 </div>
905 <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>
906 Accepts input from the user and saves all input in the memory for future use.
907 <div class=docs_code_ex>
908 >,[.>,]
909 </div>
910 </div>
916 <div id="docs_examples2" class="docs_hidden">
917 <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>
918 Adds current location to the next location and leaves behind a Zero for the first value.
919 <div class=docs_code_ex>
920 [->+<]
921 </div>
922 <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>
923 Accepts lower case input from the user and makes it uppercase. Stops when user clicks Cancel.
924 <div class=docs_code_ex>
925 ,----------[----------------------.,----------]
926 </div>
927 <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>
928 Copy value of byte Zero to byte One.
929 <div class=docs_code_ex>
930 >[-]>[-]<<[->+>+<<]>>[-<<+>>]<<
931 </div>
932 <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>
933 Move <b>DATA POINTER</b> forward until it lands on a byte with a value of 1, preserving all bytes it passes.
934 <div class=docs_code_ex>
935 -[+>-]+
936 </div>
937 <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>
938 Adds two single digit numbers and display result. Works on one-digit results only.
939 <div class=docs_code_ex>
940 ,>++++++[<-------->-],[<+>-]<.
941 </div>
942 <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>
943 Multiply two single digit numbers and display result. Works on one-digit results only.
944 <div class=docs_code_ex>
945 ,>,>++++++++[<------<------>>-]
946 <<[>[>+>+<<-]>>[<<+>>-]<<<-]
947 >>>++++++[<++++++++>-]<.>.
948 </div>
949 <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>
950 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.
951 <div class=docs_code_ex>
952 ,>,>++++++[-<--------<-------->>]<<[>[->+>+<<]>[-<<-[>]>>>[<[>>>-<<<[-]]>>]<<]>>>+<<[-<<+>>]<<<]>[-]>>>>[-<<<<<+>>>>>]<<<<++++++[-<++++++++>]<.
953 </div>
954 </div>
960 <div id="docs_example_clear_btye" class="docs_hidden">
962 This is an example of clearing a byte
964 Update first byte to higher number and break
966 ++++++*
968 Set this byte to zero regardless of current value
970 [-]*
972 Notice the Memory 0 location is now set to Zero
973 </div>
979 <div id="docs_example_clear_prev" class="docs_hidden">
981 This example clears the current and all previous bytes to Zero
983 Set a few bytes to Non Zero values
985 >+++++
986 >+++++
988 >++++
989 >++++++*
991 Set all bytes from current back to Zero
993 [[-]<]*
994 </div>
998 <div id="docs_example_rewind" class="docs_hidden">
1000 Often you need to return the Data Pointer to Zero
1002 Set a few bytes to Non Zero values and Move Data Pointer
1004 >+++++
1005 >+++++
1007 >++++
1008 >++++++*
1010 Find Data Pointer Zero
1012 [<]*
1013 </div>
1017 <div id="docs_example_fastforward" class="docs_hidden">
1019 Increments the Data Pointer until a 0 is found then decrements if until the current cell is non-zero
1021 Set a few bytes to Non Zero values and Move Data Pointer
1023 >+++++
1024 >+++++
1026 >++++
1027 >++++++*
1029 Move Data Pointer back to Zero
1031 <<<<*
1033 [>]<*
1034 </div>
1036 <div id="docs_example_cat" class="docs_hidden">
1038 Accepts input from the user and echos it to the screen
1040 Click "Cancel" to Exit Program
1042 ,[.,]
1043 </div>
1045 <div id="docs_example_data_save" class="docs_hidden">
1047 Accepts input from the user and saves in memory for future use
1049 >,[.>,]
1050 </div>
1052 <div id="docs_example_add" class="docs_hidden">
1053 Adds current location to the next location and leaves behind a Zero for the first value
1059 Plus Two
1061 >++*
1063 Move Data Pointer to first value
1067 Equals Four
1069 [->+<]*
1070 </div>
1073 <div id="docs_example_uc" class="docs_hidden">
1075 Accepts lower case input from the user and makes it uppercase
1077 Stops when user clicks Cancel
1079 ,----------[----------------------.,----------]
1080 </div>
1082 <div id="docs_example_copy_byte" class="docs_hidden">
1084 Set byte Zero
1086 +++*
1088 Set byte One
1090 >++*
1092 Move back to byte Zero
1096 Copy value of byte Zero to byte One
1098 >[-]>[-]<<[->+>+<<]>>[-<<+>>]<<*
1099 </div>
1102 <div id="docs_example_seek" class="docs_hidden">
1104 Set a few bytes to Non Zero values and Move Data Pointer
1107 >+++++
1108 >+++++
1110 >++++
1111 >++++++*
1113 Move DATA POINTER back to byte Zero
1115 <<<<<*
1117 Move DATA POINTER forward until it lands on a byte with a value of 1 preserving all bytes it passes
1119 -[+>-]+*
1120 </div>
1123 <div id="docs_example_add_two" class="docs_hidden">
1125 Adds two single digit numbers and display result
1127 Works on one digit results only
1129 ,>++++++[<-------->-],[<+>-]<.
1131 </div>
1134 <div id="docs_example_multiply" class="docs_hidden">
1136 Multiply two single digit numbers and display result
1138 Works on one digit results only
1140 ,>,>++++++++[<------<------>>-]
1141 <<[>[>+>+<<-]>>[<<+>>-]<<<-]
1142 >>>++++++[<++++++++>-]<.>.*
1143 </div>
1145 <div id="docs_example_divide" class="docs_hidden">
1147 Accepts two single digit numbers from the user divides them and displays the truncated quotient
1149 Dividend is stored in byte Zero and Divisor is stored in byte One
1151 ,>,>++++++[-<--------<-------->>]<<[>[->+>+<<]>[-<<-[>]>>>[<[>>>-<<<[-]]>>]<<]>>>+<<[-<<+>>]<<<]>[-]>>>>[-<<<<<+>>>>>]<<<<++++++[-<++++++++>]<.*
1152 </div>
1154 <div id="example_0" class="docs_hidden">
1155 ++++++++[>+>++>+++>++++>+++++>++++++>+++++++>++++++++>+++++++++>++++++++++>+++++++++++>++++++++++++>+++++++++++++>++++++++++++++>+++++++++++++++>++++++++++++++++<<<<<<<<<<<<<<<<-]>>>>>>>>>>+++.---<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<>>>>>>>>>>>>>>.<<<<<<<<<<<<<<>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>+++.---<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>+.-<<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>.<<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>+.-<<<<<<<<<<<<<<>>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>--.++<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>++.--<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>+.-<<<<<<<<<<<<<<<>>>>>>--.++<<<<<<>++.--<>++.--<>>>>>>>>>---.+++<<<<<<<<<>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>>>>>>>>>>-.+<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>-.+<<<<<<<<<<<>>>>>>--.++<<<<<<>>>>.<<<<>>>>>>>>>----.++++<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>++.--<<<<<<<<<<<<<>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>.<<<<.
1156 </div>
1158 <div id="example_1" class="docs_hidden">
1159 ++++++++[>+>++>+++>++++>+++++>++++++>+++++++>++++++++>+++++++++>++++++++++>+++++++++++>++++++++++++>+++++++++++++>++++++++++++++>+++++++++++++++>++++++++++++++++<<<<<<<<<<<<<<<<-]>>>>>>>>>>----.++++<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>-.+<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>.<<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>-.+<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>.<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>.<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>-.+<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>-.+<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>+++.---<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>--.++<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>.<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>-.+<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<<>>>>>>>>>>>>+++.---<<<<<<<<<<<<>>>>>>>>>>>>>.<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>+.-<<<<<<<<<<<<<<<>>>>>>>>>>>>>>.<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>.<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>.<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>-.+<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>.<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>>>+.-<<<<<<<<<<<<<<<>>>>>>--.++<<<<<<>++.--<>>>>>>>>>>>----.++++<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>--.++<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<.
1160 </div>
1162 <div id="example_2" class="docs_hidden">
1163 ++++++++[>+>++>+++>++++>+++++>++++++>+++++++>++++++++>+++++++++>++++++++++>+++++++++++>++++++++++++>+++++++++++++>++++++++++++++>+++++++++++++++>++++++++++++++++<<<<<<<<<<<<<<<<-]>>>>>>>>+.-<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>.<<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>-.+<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>-.+<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>-.+<<<<<<<<<<<<<>>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>-.+<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<<>>>>>>>>>>>>>.<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>.<<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>-.+<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>+.-<<<<<<<<<<<<<<>>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>.<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>--.++<<<<<<>++.--<>++.--<>>>>>>>>+.-<<<<<<<<>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>++.--<<<<<<<<<>>>>>>--.++<<<<<<>>>>.<<<<>>>>>>>>>>.<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<.
1164 </div>
1166 <div id="example_3" class="docs_hidden">
1167 ++++++++[>+>++>+++>++++>+++++>++++++>+++++++>++++++++>+++++++++>++++++++++>+++++++++++>++++++++++++>+++++++++++++>++++++++++++++>+++++++++++++++>++++++++++++++++<<<<<<<<<<<<<<<<-]>>>>>>>>>>>----.++++<<<<<<<<<<<>>>>>>>>>>>>>.<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>--.++<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>+++.---<<<<<<<<>>>>>>>>>>-.+<<<<<<<<<<>>>>>>>>++.--<<<<<<<<>>>>>>>>>>-.+<<<<<<<<<<>>>>>>>>>>----.++++<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>+++.---<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>.<<<<<<<<<<<<<<>>>>>>>>>>>>>>.<<<<<<<<<<<<<<>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>.<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<>>>>>>>+++.---<<<<<<<>>>>.<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>+++.---<<<<<<<<<<<<>>>>>>>>>>>>>.<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>-.+<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>>>>>>>>>>.<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<<>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>.<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>--.++<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>++.--<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>-.+<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>+++.---<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>--.++<<<<<<<<<<<<<>>>>>>>>>>>>>--.++<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>+++.---<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>--.++<<<<<<>++.--<>++.--<>>>>>>>>>---.+++<<<<<<<<<>>>>>>--.++<<<<<<>>>>>>>>>>>-.+<<<<<<<<<<<>>>>>>--.++<<<<<<>>>>.<<<<>>>>>>>>>----.++++<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>++.--<<<<<<<<<<<<<>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>.<<<<.
1168 </div>
1170 <div id="example_4" class="docs_hidden">
1171 ++++++++[>+>++>+++>++++>+++++>++++++>+++++++>++++++++>+++++++++>++++++++++>+++++++++++>++++++++++++>+++++++++++++>++++++++++++++>+++++++++++++++>++++++++++++++++<<<<<<<<<<<<<<<<-]>>>>>>>>>--.++<<<<<<<<<>>>>>>>>>>-.+<<<<<<<<<<>>>>>>>>>>++.--<<<<<<<<<<>>>>>>>>>>>----.++++<<<<<<<<<<<>>>>>>>>>>++.--<<<<<<<<<<>>>>>>>>+.-<<<<<<<<>>>>>>>>>>--.++<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>--.++<<<<<<<<<<<<<>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>++.--<<<<<<<<<<<<>>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>.<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<>>>>>>>>>>>>>>>+.-<<<<<<<<<<<<<<<>>>>>>----.++++<<<<<<>>>>.<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>+++.---<<<<<<<<<<<<>>>>>>>>>>>>+++.---<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<>>>>>>>>>>>>>>>+.-<<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>++.--<<<<<<<<<<<<>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>>>----.++++<<<<<<>>>>.<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>-.+<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>>>+.-<<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>+++.---<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<>>>>>>>>>>>>>>.<<<<<<<<<<<<<<>>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>--.++<<<<<<>++.--<>++.--<>>>>>>>>+.-<<<<<<<<>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>++.--<<<<<<<<<>>>>>>--.++<<<<<<>>>>.<<<<>>>>>>>>>>.<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>.<<<<.
1172 </div>
1174 <div id="example_5" class="docs_hidden">
1175 ++++++++[>+>++>+++>++++>+++++>++++++>+++++++>++++++++>+++++++++>++++++++++>+++++++++++>++++++++++++>+++++++++++++>++++++++++++++>+++++++++++++++>++++++++++++++++<<<<<<<<<<<<<<<<-]>>>>>>>>>-.+<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>-.+<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<>>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>--.++<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>.<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>+++.---<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>--.++<<<<<<>++.--<>++.--<>>>>>>>>>>>----.++++<<<<<<<<<<<>>>>>>>>>>>>>.<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>+++.---<<<<<<<<>>>>>>--.++<<<<<<>>>>.<<<<>>>>>>>>>-.+<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<.
1176 </div>
1178 <div id="example_6" class="docs_hidden">
1179 ++++++++[>+>++>+++>++++>+++++>++++++>+++++++>++++++++>+++++++++>++++++++++>+++++++++++>++++++++++++>+++++++++++++>++++++++++++++>+++++++++++++++>++++++++++++++++<<<<<<<<<<<<<<<<-]>>>>>>>>>>>----.++++<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>+++.---<<<<<<<<<<<<>>>>>>>>>>>>>.<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>.<<<<<<<<<<<<<<>>>>>>--.++<<<<<<>>>>.<<<<>>>>>>>>>>+++.---<<<<<<<<<<>>>>>>>>>>>>>.<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>.<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>+++.---<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>--.++<<<<<<>++.--<>++.--<>>>>>>>>>>----.++++<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>----.++++<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>.<<<<.
1180 </div>
1182 <div id="example_7" class="docs_hidden">
1183 ++++++++[>+>++>+++>++++>+++++>++++++>+++++++>++++++++>+++++++++>++++++++++>+++++++++++>++++++++++++>+++++++++++++>++++++++++++++>+++++++++++++++>++++++++++++++++<<<<<<<<<<<<<<<<-]>>>>>>>>+++.---<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>+.-<<<<<<<<<<<<<<>>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<>>>>>>>>>>>>>>>+.-<<<<<<<<<<<<<<<>>>>>>----.++++<<<<<<>>>>.<<<<>>>>>>>>>>>>>--.++<<<<<<<<<<<<<>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<>>>>>>----.++++<<<<<<>>>>.<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<<>>>>>>>>>>>>+++.---<<<<<<<<<<<<>>>>>>>>>>>>+++.---<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>>>--.++<<<<<<>++.--<>++.--<>>>>>>>>>----.++++<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>---.+++<<<<<<<<<<>>>>>>--.++<<<<<<>>>>.<<<<>>>>>>>>>>++.--<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>+++.---<<<<<<<<<<<<>>>>>>>>>>>>>.<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>.<<<<.
1184 </div>
1187 <div id="example_8" class="docs_hidden">
1188 ++++++++[>+>++>+++>++++>+++++>++++++>+++++++>++++++++>+++++++++>++++++++++>+++++++++++>++++++++++++>+++++++++++++>++++++++++++++>+++++++++++++++>++++++++++++++++<<<<<<<<<<<<<<<<-]>>>>>>>>+++.---<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<>>>>>>>>>>>>>>.<<<<<<<<<<<<<<>>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>>>>>>>>>+++.---<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>+++.---<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<>>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<<>>>>>>>>>>>>+++.---<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>+++.---<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>>>+.-<<<<<<<<<<<<<<<>>>>>>>>>>>>++.--<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<>>>>>>>>>>>>>>>+.-<<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>>.<<<<<<<<<<<<<<<>>>>>>>>>>>>>>.<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>.<<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>-.+<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>>>+.-<<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>.<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<<>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<>>>>>>>>>>>>>>>+.-<<<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>-.+<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>++.--<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>>>>>>>>>>.<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>.<<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>-.+<<<<<<<<<<<<<>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>+++.---<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>++.--<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<>>>>>>>>>>>>>>>+.-<<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>>.<<<<<<<<<<<<<<<>>>>>>>>>>>>>>.<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>.<<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>--.++<<<<<<>++.--<>++.--<>>>>>>>>>---.+++<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>+++.---<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>++.--<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>>+.-<<<<<<<<<<<<<<<>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<>>>>.<<<<.
1189 </div>
1192 <div id="example_9" class="docs_hidden">
1193 ++++++++[>+>++>+++>++++>+++++>++++++>+++++++>++++++++>+++++++++>++++++++++>+++++++++++>++++++++++++>+++++++++++++>++++++++++++++>+++++++++++++++>++++++++++++++++<<<<<<<<<<<<<<<<-]>>>>>>>>>----.++++<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>++.--<<<<<<<<<<<<>>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<<>>>>>>>>>>>>>-.+<<<<<<<<<<<<<>>>>>>>>>>>>>-.+<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>-.+<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>++.--<<<<<<<<<<<<>>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<<>>>>>>>>>>>>>-.+<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>>>--.++<<<<<<>>>>.<<<<>>>>>>>>>>>----.++++<<<<<<<<<<<>>>>>>>>>>>>>.<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>>+.-<<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<>>>>>>>>>>>>>>>+.-<<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>>>>>>>>>>.<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>.<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>--.++<<<<<<>++.--<>++.--<>>>>>>>>>>>---.+++<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>.<<<<.
1194 </div>
1196 <div id="example_10" class="docs_hidden">
1197 ++++++++[>+>++>+++>++++>+++++>++++++>+++++++>++++++++>+++++++++>++++++++++>+++++++++++>++++++++++++>+++++++++++++>++++++++++++++>+++++++++++++++>++++++++++++++++<<<<<<<<<<<<<<<<-]>>>>>>>>+++.---<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<>>>>>>>>>>>>>>.<<<<<<<<<<<<<<>>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>+++.---<<<<<<<<<<>>>>>>>>>>>>+++.---<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>+++.---<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>++.--<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>+++.---<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<>>>>>>>>>>>>>>.<<<<<<<<<<<<<<>>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>.<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<>>>>>>>>>>>>>>>+.-<<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>++.--<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>>>>>>>>>+++.---<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>.<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>>>--.++<<<<<<>++.--<>++.--<>>>>>>>>>---.+++<<<<<<<<<>>>>>>--.++<<<<<<>>>>.<<<<>>>>>>>>>>>-.+<<<<<<<<<<<>>>>>>--.++<<<<<<>>>>.<<<<>>>>>>>>>----.++++<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>++.--<<<<<<<<<<<<<>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>.<<<<.
1198 </div>
1200 <div id="docs_ascii" class="docs_hidden">
1202 <table id="ascii">
1203 <caption><b>ASCII Chart</b></caption>
1205 <tr class="ref_even">
1206 <td id="dat_col">0</td>
1207 <td class="ctrl" id="val_col">NUL</td>
1208 <td id="dat_col">16</td>
1209 <td class="ctrl" id="val_col">DLE</td>
1210 <td id="dat_col">32</td>
1211 <td class="ctrl" id="val_col">SP</td>
1212 <td id="dat_col">48</td>
1213 <td id="val_col">0</td>
1214 <td id="dat_col">64</td>
1215 <td id="val_col">@</td>
1216 <td id="dat_col">80</td>
1217 <td id="val_col">P</td>
1218 <td id="dat_col">96</td>
1219 <td id="val_col">`</td>
1220 <td id="dat_col">112</td>
1221 <td>p</td>
1222 </tr>
1224 <tr class="ref_odd">
1225 <td>1</td>
1226 <td class="ctrl" id="val_col">SOH</td>
1227 <td>17</td>
1228 <td class="ctrl" id="val_col">DC1</td>
1229 <td>33</td>
1230 <td id="val_col">!</td>
1231 <td>49</td>
1232 <td id="val_col">1</td>
1233 <td>65</td>
1234 <td id="val_col">A</td>
1235 <td>81</td>
1236 <td id="val_col">Q</td>
1237 <td>97</td>
1238 <td id="val_col">a</td>
1239 <td>113</td>
1240 <td>q</td>
1241 </tr>
1243 <tr class="ref_even">
1244 <td>2</td>
1245 <td class="ctrl" id="val_col">STX</td>
1246 <td>18</td>
1247 <td class="ctrl" id="val_col">DC2</td>
1248 <td>34</td>
1249 <td id="val_col">"</td>
1250 <td>50</td>
1251 <td id="val_col">2</td>
1252 <td>66</td>
1253 <td id="val_col">B</td>
1254 <td>82</td>
1255 <td id="val_col">R</td>
1256 <td>98</td>
1257 <td id="val_col">b</td>
1258 <td>114</td>
1259 <td>r</td>
1260 </tr>
1262 <tr class="ref_odd">
1263 <td>3</td>
1264 <td class="ctrl" id="val_col">ETX</td>
1265 <td>19</td>
1266 <td class="ctrl" id="val_col">DC3</td>
1267 <td>35</td>
1268 <td id="val_col">#</td>
1269 <td>51</td>
1270 <td id="val_col">3</td>
1271 <td>67</td>
1272 <td id="val_col">C</td>
1273 <td>83</td>
1274 <td id="val_col">S</td>
1275 <td>99</td>
1276 <td id="val_col">c</td>
1277 <td>115</td>
1278 <td>s</td>
1279 </tr>
1281 <tr class="ref_even">
1282 <td>4</td>
1283 <td class="ctrl" id="val_col">EOT</td>
1284 <td>20</td>
1285 <td class="ctrl" id="val_col">DC4</td>
1286 <td>36</td>
1287 <td id="val_col">$</td>
1288 <td>52</td>
1289 <td id="val_col">4</td>
1290 <td>68</td>
1291 <td id="val_col">D</td>
1292 <td>84</td>
1293 <td id="val_col">T</td>
1294 <td>100</td>
1295 <td id="val_col">d</td>
1296 <td>116</td>
1297 <td>t</td>
1298 </tr>
1300 <tr class="ref_odd">
1301 <td>5</td>
1302 <td class="ctrl" id="val_col">ENQ</td>
1303 <td>21</td>
1304 <td class="ctrl" id="val_col">NAK</td>
1305 <td>37</td>
1306 <td id="val_col">%</td>
1307 <td>53</td>
1308 <td id="val_col">5</td>
1309 <td>69</td>
1310 <td id="val_col">E</td>
1311 <td>85</td>
1312 <td id="val_col">U</td>
1313 <td>101</td>
1314 <td id="val_col">e</td>
1315 <td>117</td>
1316 <td>u</td>
1317 </tr>
1319 <tr class="ref_even">
1320 <td>6</td>
1321 <td class="ctrl" id="val_col">ACK</td>
1322 <td>22</td><td class="ctrl" id="val_col">SYN</td>
1323 <td>38</td>
1324 <td id="val_col">&amp;</td>
1325 <td>54</td>
1326 <td id="val_col">6</td>
1327 <td>70</td>
1328 <td id="val_col">F</td>
1329 <td>86</td>
1330 <td id="val_col">V</td>
1331 <td>102</td>
1332 <td id="val_col">f</td>
1333 <td>118</td>
1334 <td>v</td>
1335 </tr>
1337 <tr class="ref_odd">
1338 <td>7</td>
1339 <td class="ctrl" id="val_col">BEL</td>
1340 <td>23</td>
1341 <td class="ctrl" id="val_col">ETB</td>
1342 <td>39</td>
1343 <td id="val_col">'</td>
1344 <td>55</td>
1345 <td id="val_col">7</td>
1346 <td>71</td>
1347 <td id="val_col">G</td>
1348 <td>87</td>
1349 <td id="val_col">W</td>
1350 <td>103</td>
1351 <td id="val_col">g</td>
1352 <td>119</td>
1353 <td>w</td>
1354 </tr>
1356 <tr class="ref_even">
1357 <td>8</td>
1358 <td class="ctrl" id="val_col">BS</td>
1359 <td>24</td>
1360 <td class="ctrl" id="val_col">CAN</td>
1361 <td>40</td>
1362 <td id="val_col">(</td>
1363 <td>56</td>
1364 <td id="val_col">8</td>
1365 <td>72</td>
1366 <td id="val_col">H</td>
1367 <td>88</td>
1368 <td id="val_col">X</td>
1369 <td>104</td>
1370 <td id="val_col">h</td>
1371 <td>120</td>
1372 <td>x</td>
1373 </tr>
1375 <tr class="ref_odd">
1376 <td>9</td>
1377 <td class="ctrl" id="val_col">HT</td>
1378 <td>25</td>
1379 <td class="ctrl" id="val_col">EM</td>
1380 <td>41</td>
1381 <td id="val_col">)</td>
1382 <td>57</td>
1383 <td id="val_col">9</td>
1384 <td>73</td>
1385 <td id="val_col">I</td>
1386 <td>89</td>
1387 <td id="val_col">Y</td>
1388 <td>105</td>
1389 <td id="val_col">i</td>
1390 <td>121</td>
1391 <td>y</td>
1392 </tr>
1394 <tr class="ref_even">
1395 <td>10</td>
1396 <td class="ctrl" id="val_col">LF</td>
1397 <td>26</td>
1398 <td class="ctrl" id="val_col">SUB</td>
1399 <td>42</td>
1400 <td id="val_col">*</td>
1401 <td>58</td>
1402 <td id="val_col">:</td>
1403 <td>74</td>
1404 <td id="val_col">J</td>
1405 <td>90</td>
1406 <td id="val_col">Z</td>
1407 <td>106</td>
1408 <td id="val_col">j</td>
1409 <td>122</td>
1410 <td>z</td>
1411 </tr>
1413 <tr class="ref_odd">
1414 <td>11</td>
1415 <td class="ctrl" id="val_col">VT</td>
1416 <td>27</td>
1417 <td class="ctrl" id="val_col">ESC</td>
1418 <td>43</td>
1419 <td id="val_col">+</td>
1420 <td>59</td>
1421 <td id="val_col">;</td>
1422 <td>75</td>
1423 <td id="val_col">K</td>
1424 <td>91</td>
1425 <td id="val_col">[</td>
1426 <td>107</td>
1427 <td id="val_col">k</td>
1428 <td>123</td>
1429 <td>{</td>
1430 </tr>
1432 <tr class="ref_even">
1433 <td>12</td>
1434 <td class="ctrl" id="val_col">FF</td>
1435 <td>28</td>
1436 <td class="ctrl" id="val_col">FS</td>
1437 <td>44</td>
1438 <td id="val_col">,</td>
1439 <td>60</td>
1440 <td id="val_col">&lt;</td>
1441 <td>76</td>
1442 <td id="val_col">L</td>
1443 <td>92</td>
1444 <td id="val_col">\</td>
1445 <td>108</td>
1446 <td id="val_col">l</td>
1447 <td>124</td>
1448 <td>|</td>
1449 </tr>
1451 <tr class="ref_odd">
1452 <td>13</td>
1453 <td class="ctrl" id="val_col">CR</td>
1454 <td>29</td>
1455 <td class="ctrl" id="val_col">GS</td>
1456 <td>45</td>
1457 <td id="val_col">-</td>
1458 <td>61</td>
1459 <td id="val_col">=</td>
1460 <td>77</td>
1461 <td id="val_col">M</td>
1462 <td>93</td>
1463 <td id="val_col">]</td>
1464 <td>109</td>
1465 <td id="val_col">m</td>
1466 <td>125</td>
1467 <td>}</td>
1468 </tr>
1470 <tr class="ref_even">
1471 <td>14</td>
1472 <td class="ctrl" id="val_col">SO</td>
1473 <td>30</td>
1474 <td class="ctrl" id="val_col">RS</td>
1475 <td>46</td>
1476 <td id="val_col">.</td>
1477 <td>62</td>
1478 <td id="val_col">></td>
1479 <td>78</td>
1480 <td id="val_col">N</td>
1481 <td>94</td>
1482 <td id="val_col">^</td>
1483 <td>110</td>
1484 <td id="val_col">n</td>
1485 <td>126</td>
1486 <td>~</td>
1487 </tr>
1489 <tr class="ref_odd">
1490 <td>15</td>
1491 <td class="ctrl" id="val_col">SI</td>
1492 <td>31</td>
1493 <td class="ctrl" id="val_col">US</td>
1494 <td>47</td>
1495 <td id="val_col">/</td>
1496 <td>63</td>
1497 <td id="val_col">?</td>
1498 <td>79</td>
1499 <td id="val_col">O</td>
1500 <td>95</td>
1501 <td id="val_col">_</td>
1502 <td>111</td>
1503 <td id="val_col">o</td>
1504 <td>127</td>
1505 <td class="ctrl">DEL</td>
1506 </tr>
1507 </table>
1508 </div>
1510 </body>
1511 </html>