Added ability to modify memory location at any time.
[CS-101.git] / turing_tarpit.html
blob8bbf93815bc1147857afe678b11912b756823a34
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 = "<div id=disp_pointer>&#8658;</div>"; /* 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();
99 /* highlight code currently executing on screen */
100 code_highlight(disp_code, ins_pointer-1, ins_pointer);
103 /* find previous instruction in code and move instruction pointer to it */
104 function fnd_prv_inst()
106 ins_pointer--;
107 while(ins_pointer >= 0)
109 ins = disp_code.value.substring(ins_pointer-1, ins_pointer); /* get data at ins_pointer location */
110 if(tst_inst()) { return; }
111 ins_pointer--;
113 if(ins_pointer == 0) {
114 alert("SEGFAULT: Program could not find corresponding jump instruction");
115 halt = true;
116 reset();
120 /* execute next instruction from input */
121 function exe_nxt_inst()
123 var temp_count = 0;
124 fnd_nxt_inst();
125 switch(ins)
127 case '+':
128 ram_modify(dat_pointer, 1);
129 break;
130 case '-':
131 ram_modify(dat_pointer, -1);
132 break;
133 case '>':
134 dat_point_modify(1);
135 break;
136 case '<':
137 dat_point_modify(-1);
138 break;
139 case '*': /* these are comments - a break from the standard language */
140 if(breakpoints) { stop(); }
141 break;
142 case '.':
143 print_mem();
144 break;
145 case '[':
146 jump_fwd();
147 break;
148 case ']':
149 jump_bak();
150 break;
151 case ',':
152 get_byte();
153 break;
154 default:
155 /* must be a comment :) */
159 /* if byte at data pointer is = 0, jump forward to instruction after matching ']' command */
160 function jump_fwd()
162 if(ram[dat_pointer] != 0) { return; }
163 /* add this jump to stack */
164 jmp.push('[');
165 /* loop through code, pushing and popping stack until stack is empty */
166 while(jmp.length > 0) {
167 fnd_nxt_inst();
168 if(ins == ']') { jmp.pop();
169 } else if (ins == '[') { jmp.push(']'); }
173 /* if byte at data pointer is != 0, jump back to instruction after matching '[' command */
174 function jump_bak()
176 if(ram[dat_pointer] == 0) { return; }
177 /* add this jump to stack */
178 jmp.push(']');
179 /* loop through code, pushing and popping stack until stack is empty */
180 while(jmp.length > 0 && ins_pointer > 0) {
181 fnd_prv_inst();
182 if(ins == '[') { jmp.pop();
183 } else if (ins == ']') { jmp.push(']'); }
187 /* get single byte of input from the user */
188 function get_byte()
190 var b = prompt("Please Single Byte of Data","");
191 ram_set(dat_pointer, b.charCodeAt(b));
195 rewind code to beginning reset all memory locations
196 this simulates rebooting the computer
198 function reset()
200 update_ins_pointer(0);
201 dat_point_modify(0);
202 ram_reset();
203 ram_highlight_clear();
204 dat_point_highlight();
205 document.getElementById("output_disp").innerHTML = '';
206 document.getElementById("addr_0").innerHTML = "0" + disp_pointer;
207 disp_ins_pointer.style.backgroundColor = "#fff";
208 dat_point_highlight_clear();
209 code_highlight(disp_code, 0, 1);
212 /* stop stepping through code on timer if breakpoints enabled */
213 function stop()
215 halt = true;
218 /* run through program on timer, stopping at breakpoints if enabled */
219 function run()
221 var total_steps = document.getElementById("code").value.length;
222 halt = false; /* seems weird, but this is the only way to make the halt work */
223 while(ins_pointer <= total_steps && halt == false) { step_next(); }
226 /* step forward one instruction */
227 function step_next()
229 //update_ins_pointer(1);
230 exe_nxt_inst();
231 dat_point_highlight();
234 /* more back one instruction - undoes work of previous instruction */
235 function step_back()
237 update_ins_pointer(-1);
238 dat_point_highlight();
241 /* update instruction pointer
242 direction:
244 1 increment pointer by one
245 0 set pointer to 0
246 -1 decrement pointer by one
248 function update_ins_pointer(direction)
250 if(direction < 0 && ins_pointer != 0 ) { ins_pointer--; }
251 else if (direction == 0 ) { ins_pointer = 0; }
252 else { ins_pointer++; }
253 disp_ins_pointer.value = ins_pointer;
254 ins_pointer_changed = 1;
255 ins_point_highlight();
258 /* update instruction pointer and set to new value */
259 function ins_point_modify_by_address(val)
261 /* instruction pointer can never be less than 0 */
262 if(val < 0) {
263 alert("Instruction Pointer cannot be set less than Zero.");
264 disp_ins_pointer.value = ins_pointer; /* reset val to previous */
265 return;
267 if(val > disp_code.value.length) {
268 alert("Instruction Pointer cannot be set beyond end of code.\n Current length of code: " + disp_code.value.length);
269 disp_ins_pointer.value = ins_pointer; /* reset val to previous */
270 return;
272 ins_pointer = disp_ins_pointer.value;
273 if(ins_pointer_last_address != ins_pointer) { ins_pointer_changed = 1; }
274 if(ins_pointer != val) {
275 ins_point_highlight();
279 /* turns on and off data pointer highlight if it has changed this step */
280 function ins_point_highlight()
282 if(ins_pointer_changed) {
283 disp_ins_pointer.style.backgroundColor = "#ff0";
284 ins_pointer_changed = 0;
285 } else {
286 disp_ins_pointer.style.backgroundColor = "#fff";
290 /* setup virtual machine - must be called on page load */
291 function init_form()
293 disp_code = document.getElementById("code");
294 disp_ins_pointer = document.getElementById("ins_pointer_disp");
295 disp_dat_pointer = document.getElementById("dat_pointer_disp");
296 disp_ram = document.getElementById("ram_disp");
297 ram_init();
298 ram_reset();
299 document.getElementById("addr_0").innerHTML = "0" + disp_pointer;
300 disp_docs = document.getElementById("docs");
302 /* put hello world into input window */
303 var randomnumber = Math.floor(Math.random()*11)
304 disp_code.innerHTML = document.getElementById("example_"+randomnumber).innerHTML;
307 /* reset all RAM to 0 */
308 function ram_reset()
310 var i;
311 for(i=0; i < 64; i++) {
312 ram[i] = 0;
313 document.getElementById("ram_"+i).value = ram[i];
317 /* update highlight of one memory address and release other highlight if needed */
318 function ram_highlight(address)
320 var disp_last_address = document.getElementById("ram_"+ram_last_address);
321 if(disp_last_address == 'undefined') { alert("Last address could not be found."); }
322 /* highlight background of current address */
323 document.getElementById("ram_"+address).style.backgroundColor = "#ff0";
325 /* remove highlight from last address modified */
326 if(ram_last_address != address){
327 if(ram_last_address%2==0) {
328 disp_last_address.style.backgroundColor = "#fff";
329 } else {
330 disp_last_address.style.backgroundColor = "#def";
335 /* remove highlight from all memory cells regardless of current status */
336 function ram_highlight_clear()
338 var i;
339 for(i=0; i < 64; i++)
341 if(i%2==0) {
342 document.getElementById("ram_"+i).style.backgroundColor = "#fff";
343 } else {
344 document.getElementById("ram_"+i).style.backgroundColor = "#def";
346 document.getElementById("ram_"+i).innerHTML = ram[i];
350 /* define RAM on screen */
351 function ram_init()
353 var i;
354 var table = "<table id=memory_table>\n";
355 for(i=0; i < 16; i++){
356 if(i%2==0) {
357 table += "\t<tr class=even>";
358 } else {
359 table += "\t<tr class=odd>";
361 table += "<td width='32' class=addr id=addr_"+i+">"+i+"</td>";
362 table += "<td><input onClick=\"select_all('ram_"+i+"');\" onBlur=\"ram_set("+i+", document.getElementById('ram_"+i+"').value);\" size='3' class=ram id=ram_"+i+" value="+ram[i]+"></td>";
364 table += "<td width='32' class=addr id=addr_"+(i+16)+">"+(i+16)+"</td>";
365 table += "<td><input onClick=\"select_all('ram_"+(i+16)+"');\" onBlur=\"ram_set("+(i+16)+", document.getElementById('ram_"+(i+16)+"').value);\" size='3' class=ram id=ram_"+(i+16)+" value="+ram[i+16]+"></td>\n";
367 table += "<td width='32' class=addr id=addr_"+(i+32)+">"+(i+32)+"</td>";
368 table += "<td><input onClick=\"select_all('ram_"+(i+32)+"');\" onBlur=\"ram_set("+(i+32)+", document.getElementById('ram_"+(i+32)+"').value);\" size='3' class=ram id=ram_"+(i+32)+" value="+ram[i+32]+"></td>\n";
370 table += "<td width='32' class=addr id=addr_"+(i+48)+">"+(i+48)+"</td>";
371 table += "<td><input onClick=\"select_all('ram_"+(i+48)+"');\" onBlur=\"ram_set("+(i+48)+", document.getElementById('ram_"+(i+48)+"').value);\" size='3' class=ram id=ram_"+(i+48)+" value="+ram[i+48]+"></td></tr>\n";
373 table += "</table>\n";
374 disp_ram.innerHTML = table;
378 modify the value at this address - reset RAM highlights for all addresses
379 1 increment RAM by one
380 0 set RAM to 0
381 -1 decrement RAM by one
383 function ram_modify(address, change)
385 if(address < 0 || address > 63) {
386 alert("SEGFAULT: Cannot Modify Data Outside of Memory Range");
387 halt = true;
388 reset();
389 return;
391 if (change > 0 ) {
392 ram[address]++;
393 } else if(change < 0 ) {
394 ram[address]--;
395 } else {
396 ram[address] = 0;
398 ram_highlight(address);
399 document.getElementById("ram_"+address).value = ram[address];
400 ram_last_address = address;
403 /* modify one byte of memory - set to address */
404 function ram_set(address, val)
406 var prev_value = ram[address];
407 if(address == 'undefined') { alert("Address not defined for ram_set."); return; }
408 if(address < 0 || address > 63) {
409 alert("SEGFAULT: Cannot Modify Data Outside of Memory Range");
410 halt = true;
411 reset();
412 return;
414 ram[address] = val;
415 if(prev_value != val) {
416 ram_highlight(address);
417 document.getElementById("ram_"+address).innerHTML = ram[address];
419 ram_last_address = address;
423 modify state of data pointer
424 1 increment data pointer by one
425 0 set data pointer to 0
426 -1 decrement data pointer by one
429 function dat_point_modify(change)
431 dat_pointer_last_address = dat_pointer;
432 if (change > 0 ) {
433 dat_pointer++;
434 } else if(change < 0 ) {
435 /* could put SEGFAULT here, but C does not have a check for this, so neither will I ;) */
436 dat_pointer--;
437 } else {
438 dat_pointer = 0;
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;
451 disp_dat_pointer.value = dat_pointer;
452 dat_pointer_changed = 1;
455 function dat_point_modify_by_address(val)
457 dat_pointer_last_address = dat_pointer;
458 dat_pointer = disp_dat_pointer.value;
459 /* place '>' char next to memory address in table */
460 if(dat_pointer >= 0 && dat_pointer < 64) {
461 document.getElementById("addr_"+dat_pointer).innerHTML = dat_pointer + disp_pointer;
464 /* remove '>' char next to memory address in table */
465 if(dat_pointer_last_address >= 0 && dat_pointer_last_address < 64) {
466 document.getElementById("addr_"+dat_pointer_last_address).innerHTML = dat_pointer_last_address;
468 dat_pointer_changed = 1;
469 if(dat_pointer_last_address != val) {
470 dat_point_highlight();
474 /* turns on and off data pointer highlight if it has changed this step */
475 function dat_point_highlight()
477 if(dat_pointer_changed) {
478 disp_dat_pointer.style.backgroundColor = "#ff0";
479 dat_pointer_changed = 0;
480 } else {
481 disp_dat_pointer.style.backgroundColor = "#fff";
484 /* as a convenience to the user, set to red if pointer is out of memory range */
485 if(dat_pointer < 0 || dat_pointer > 63) {
486 disp_dat_pointer.style.backgroundColor = "#f00";
490 /* remove highlight from data pointer */
491 function dat_point_highlight_clear()
493 disp_dat_pointer.style.backgroundColor = "#fff";
496 /* print ASCII representation of memory at data pointer */
497 function print_mem()
499 var x = String.fromCharCode(ram[dat_pointer]);
500 document.getElementById("output_disp").innerHTML += x;
503 /* documentation stored inside invisible div. This shows its contents. */
504 function display_docs()
506 disp_docs.style.visibility = "visible";
507 docs_select("docs_main");
510 /* hide documentation from user */
511 function hide_docs()
513 disp_docs.style.visibility = "hidden";
516 function docs_select(page)
518 if(page == "basic") {
519 document.getElementById("docs_content").innerHTML = document.getElementById("docs_basic").innerHTML;
520 } else if(page == "features") {
521 document.getElementById("docs_content").innerHTML = document.getElementById("docs_features").innerHTML;
522 } else if(page == "examples") {
523 document.getElementById("docs_content").innerHTML = document.getElementById("docs_examples").innerHTML;
524 } else if(page == "examples2") {
525 document.getElementById("docs_content").innerHTML = document.getElementById("docs_examples2").innerHTML;
526 } else if(page == "ascii") {
527 document.getElementById("docs_content").innerHTML = document.getElementById("docs_ascii").innerHTML;
528 } else {
529 document.getElementById("docs_content").innerHTML = document.getElementById("docs_main").innerHTML;
535 allows user to kick off example from the help menu.
536 closes documentation menu, overwrites code with example.
537 prints error message if something goes wrong.
540 function docs_try(ex)
542 var ans = confirm("This will delete code currently loaded in machine.");
543 if(!ans) { return; }
544 hide_docs(); /* close documentation window */
545 reset(); /* reset computer */
546 if(ex == null) { alert("Example not setup correctly."); return; }
547 disp_code.innerHTML = document.getElementById(ex).innerHTML; /* write data out to code textarea */
550 </script>
552 <style type="text/css">
554 body {
555 font-family: Tahoma, Arial, Helvetica, sans-serif;
558 #disp_pointer {
559 float:right;
560 color: #f00;
563 #code_buttons {
564 position: absolute;
565 top: 570px;
566 left: 10px;
569 #input_banner {
570 position: absolute;
571 top: 120px;
572 left: 10px;
575 #da_banner {
576 position: absolute;
577 top: 360px;
578 left: 625px;
581 #ref_banner {
582 position: absolute;
583 top: 410px;
584 left: 625px;
587 #ip_banner {
588 position: absolute;
589 top: 315px;
590 left: 625px;
593 #output_banner {
594 position: absolute;
595 top: 120px;
596 left: 625px;
599 #memory_banner {
600 position: absolute;
601 top: 120px;
602 left: 315px;
605 #input {
606 position: absolute;
607 top: 140px;
608 left: 10px;
611 #ram_disp {
612 position: absolute;
613 top: 140px;
614 left: 315px;
617 #memory_table {
618 border:1px solid #000;
619 border-collapse: collapse;
622 .even td {
623 padding: 4px;
624 border-bottom:1px solid #000;
627 .odd td {
628 padding: 4px;
629 background-color: #def;
630 border-bottom: 1px solid #000;
633 .addr {
634 color: #00f;
637 .ram {
638 border-right:1px solid #000;
641 #output {
642 position: absolute;
643 top: 140px;
644 left: 625px;
647 #docs {
648 border:1px solid #000;
649 background-color: #fff;
650 position: absolute;
651 top: 10px;
652 left: 10px;
653 width: 950px;
654 height:750px;
655 visibility: hidden;
658 #docs_top_banner {
659 color: #000;
660 background-color: #7cf;
661 border-bottom:1px solid #000;
662 position: absolute;
663 top: 0px;
664 left: 0px;
665 height: 45px;
666 padding-top: 5px;
667 padding-left: 5px;
668 width: 945px;
671 #docs_close_btn {
672 position: absolute;
673 top: 0px;
674 right: 0px;
675 cursor: pointer;
676 padding: 6px;
679 #docs_mnu_btn {
680 position: absolute;
681 top: 0px;
682 left: 375px;
683 margin-top: 5px;
684 padding-left: 20px;
685 padding-right: 20px;
688 #docs_content {
689 position: absolute;
690 top: 55px;
691 padding: 10px;
694 #docs_link:hover {
695 background-color: #def;
696 cursor: pointer;
700 .docs_code_ex {
701 background-color: #def;
702 border: 1px solid #ddd;
703 padding: 5px;
706 .docs_hidden {
707 visibility: hidden;
710 #instruction {
711 position: absolute;
712 top: 335px;
713 left: 625px;
716 #data {
717 position: absolute;
718 top: 385px;
719 left: 625px;
722 #ascii {
723 border-collapse: collapse;
724 border: 1px solid #ddd;
727 #reference {
728 border-collapse: collapse;
729 border: 1px solid #ddd;
730 position: absolute;
731 top: 430px;
732 left: 625px;
733 width: 280px;
736 #ascii {
737 text-align: center;
740 #val_col {
741 border-right: 1px solid #ddd;
742 width: 10px;
743 padding-right: 15px;
746 #dat_col {
747 width: 100px;
750 .ref_even td {
751 border-bottom: 1px solid #ddd;
754 .ref_odd td {
755 border-bottom: 1px solid #ddd;
756 background-color: #def;
759 .ref_ins {
760 font-size: 18px;
761 font-weight:bold;
762 color: #00f;
765 </style>
766 <body onLoad="init_form();">
768 <center><h2>Turing Tarpit Simulator</h2></center>
770 <center>
771 <button onClick='reset();'><img src="http://opentextbook.info/icons/32x32/resultset_first.png" title="Restart" alt="Restart"></button>
772 &nbsp;&nbsp;
773 <button onClick='step_back();'><img src="http://opentextbook.info/icons/32x32/resultset_previous.png" title="Step Back" alt="Step Back"></button>
774 &nbsp;&nbsp;
775 <button onClick='step_next();'><img src="http://opentextbook.info/icons/32x32/resultset_next.png" title="Next Step" alt="Next Step"></button>
776 &nbsp;&nbsp;
777 <button onClick='run();'><img src="http://opentextbook.info/icons/32x32/resultset_last.png" title="Run" alt="Run"></button>
778 &nbsp;&nbsp;
779 <button onClick='halt();'><img src="http://opentextbook.info/icons/32x32/cancel.png" title="Halt Execution" alt="Halt Execution"></button>
780 &nbsp;&nbsp;
781 <button disabled><img src="http://opentextbook.info/icons/32x32/disk.png" title="Save Code" alt="Save Code"></button>
782 &nbsp;&nbsp;
783 <button onClick='display_docs();'><img src="http://opentextbook.info/icons/32x32/book_open.png" title="Open Documentation" alt="Open Documentation"></button>
784 </center>
786 <div id="code_buttons">
787 <button id="dbg_status" onClick='debug_toggle_breakpoints();' title="Enable/Disable Breakpoints" alt="Enable/Disable Breakpoints">
788 <img src="http://opentextbook.info/icons/32x32/bug_add.png">
789 </button>
790 &nbsp;&nbsp;
791 <button id="dbg_status" onClick='debug_remove_breakpoints();' title="Remove Breakpoints" alt="Remove Breakpoints">
792 <img src="http://opentextbook.info/icons/32x32/bin.png">
793 </button>
794 </div>
796 <div id="input_banner">INPUT</div>
797 <div id="input"><textarea id="code" rows="27" cols="38"></textarea></div>
799 <div id="ip_banner">INSTRUCTION POINTER</div>
800 <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>
802 <div id="da_banner">DATA POINTER</div>
803 <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>
805 <div id="ref_banner">INSTRUCTION REFERENCE</div>
806 <table id="reference">
807 <tr class="ref_even"><td class="ref_ins">+</td><td>increment byte at data pointer</td></tr>
808 <tr class="ref_odd" ><td class="ref_ins">-</td><td>decrement byte at data pointer</td></tr>
809 <tr class="ref_even"><td class="ref_ins">></td><td>increment data pointer</td></tr>
810 <tr class="ref_odd" ><td class="ref_ins"><</td><td>decrement data pointer</td></tr>
811 <tr class="ref_even"><td class="ref_ins">.</td><td>print byte at data pointer</td></tr>
812 <tr class="ref_odd" ><td class="ref_ins">,</td><td>accept one byte of input</td></tr>
813 <tr class="ref_even"><td class="ref_ins">*</td><td>set breakpoint</td></tr>
814 </table>
816 <div id="memory_banner">MEMORY</div>
817 <div id="ram_disp"></div>
818 <div id="output_banner">OUTPUT</div>
819 <div id="output">
820 <textarea name=code id=output_disp rows="10" cols="38" disabled ></textarea>
821 </div>
822 <div id="docs">
823 <div id="docs_top_banner">
824 Turing Tarpit Simulator Documentation&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
825 <button id="docs_mnu_btn" onClick="docs_select('main');"><img src="http://opentextbook.info/icons/32x32/house.png">Main Menu</button>
826 <div id="docs_close_btn" onClick="hide_docs();"><img src="http://opentextbook.info/icons/32x32/cross.png"></div></div>
828 <div id="docs_content"></div>
829 </div>
831 <div id="docs_main" class="docs_hidden">
832 <div id="docs_link" onClick="docs_select('basic');"><b>Basic Operation</b></div><br>
833 <div id="docs_link" onClick="docs_select('features');"><b>Features and Hints</b></div><br>
834 <div id="docs_link" onClick="docs_select('examples');"><b>Example Code 1</b></div><br>
835 <div id="docs_link" onClick="docs_select('examples2');"><b>Example Code 2</b></div><br>
836 <div id="docs_link" onClick="docs_select('ascii');"><b>ASCII Chart</b></div>
837 </div>
839 <div id="docs_basic" class="docs_hidden">
841 <b>Basic Operation</b>
843 <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:
845 <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.
847 <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.
849 <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.
851 <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.
853 <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>.
855 <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.
857 <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.
859 </div>
861 <div id="docs_features" class="docs_hidden">
863 <b>Features and Hints</b>
865 <p>All characters outside the Instruction Set are considered comments and will be skipped over during runtime.
867 <p>While program executes, the <b>INPUT</b> cursor is moved over the current instruction.
869 <p>User can change the address of the <b>DATA POINTER</b> and Instruction Pointer at any time.
870 <b>MEMORY</b> and pointers that have been modified are highlighted in yellow until the next step.
872 <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.
874 <p>The Instruction Pointer can point to a location range of 1 to the number of characters in the <b>INPUT</b>.
876 <p>Restarting the machine will reset all <b>MEMORY</b>, Data and Instruction Pointers to zero.
878 <p>The <b>OUTPUT</b> of the program cannot be edited.
880 <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.
882 <p>In this version the programs you type in are not saved to your computer. This must be done as a manual operation.
884 <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.
886 <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).
888 <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.
890 <p>No server interaction or outside service is needed for this program to operate.
891 </div>
897 <div id="docs_examples" class="docs_hidden">
898 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.
900 <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>
901 Sets value at current <b>DATA POINTER</b> to Zero.
902 <div class=docs_code_ex>
904 </div>
905 <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>
906 Sets value of all previous bytes including current byte to Zero.
907 <div class=docs_code_ex>
908 [[-]<]
909 </div>
910 <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>
911 Goes back to byte Zero.
912 <div class=docs_code_ex>
913 [<]>
914 </div>
915 <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>
916 Increments the <b>DATA POINTER</b> until a 0 is found then decrements it until the current byte is non-zero.
917 <div class=docs_code_ex>
918 [>]<
919 </div>
920 <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>
921 Accepts input from the user and echos it to the screen, similar to the UNIX cat program.
922 <div class=docs_code_ex>
923 ,[.,]
924 </div>
925 <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>
926 Accepts input from the user and saves all input in the memory for future use.
927 <div class=docs_code_ex>
928 >,[.>,]
929 </div>
930 </div>
936 <div id="docs_examples2" class="docs_hidden">
937 <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>
938 Adds current location to the next location and leaves behind a Zero for the first value.
939 <div class=docs_code_ex>
940 [->+<]
941 </div>
942 <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>
943 Accepts lower case input from the user and makes it uppercase. Stops when user clicks Cancel.
944 <div class=docs_code_ex>
945 ,----------[----------------------.,----------]
946 </div>
947 <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>
948 Copy value of byte Zero to byte One.
949 <div class=docs_code_ex>
950 >[-]>[-]<<[->+>+<<]>>[-<<+>>]<<
951 </div>
952 <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>
953 Move <b>DATA POINTER</b> forward until it lands on a byte with a value of 1, preserving all bytes it passes.
954 <div class=docs_code_ex>
955 -[+>-]+
956 </div>
957 <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>
958 Adds two single digit numbers and display result. Works on one-digit results only.
959 <div class=docs_code_ex>
960 ,>++++++[<-------->-],[<+>-]<.
961 </div>
962 <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>
963 Multiply two single digit numbers and display result. Works on one-digit results only.
964 <div class=docs_code_ex>
965 ,>,>++++++++[<------<------>>-]
966 <<[>[>+>+<<-]>>[<<+>>-]<<<-]
967 >>>++++++[<++++++++>-]<.>.
968 </div>
969 <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>
970 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.
971 <div class=docs_code_ex>
972 ,>,>++++++[-<--------<-------->>]<<[>[->+>+<<]>[-<<-[>]>>>[<[>>>-<<<[-]]>>]<<]>>>+<<[-<<+>>]<<<]>[-]>>>>[-<<<<<+>>>>>]<<<<++++++[-<++++++++>]<.
973 </div>
974 </div>
980 <div id="docs_example_clear_btye" class="docs_hidden">
982 This is an example of clearing a byte
984 Update first byte to higher number and break
986 ++++++*
988 Set this byte to zero regardless of current value
990 [-]*
992 Notice the Memory 0 location is now set to Zero
993 </div>
999 <div id="docs_example_clear_prev" class="docs_hidden">
1001 This example clears the current and all previous bytes to Zero
1003 Set a few bytes to Non Zero values
1005 >+++++
1006 >+++++
1008 >++++
1009 >++++++*
1011 Set all bytes from current back to Zero
1013 [[-]<]*
1014 </div>
1018 <div id="docs_example_rewind" class="docs_hidden">
1020 Often you need to return the Data Pointer to Zero
1022 Set a few bytes to Non Zero values and Move Data Pointer
1024 >+++++
1025 >+++++
1027 >++++
1028 >++++++*
1030 Find Data Pointer Zero
1032 [<]*
1033 </div>
1037 <div id="docs_example_fastforward" class="docs_hidden">
1039 Increments the Data Pointer until a 0 is found then decrements if until the current cell is non-zero
1041 Set a few bytes to Non Zero values and Move Data Pointer
1043 >+++++
1044 >+++++
1046 >++++
1047 >++++++*
1049 Move Data Pointer back to Zero
1051 <<<<*
1053 [>]<*
1054 </div>
1056 <div id="docs_example_cat" class="docs_hidden">
1058 Accepts input from the user and echos it to the screen
1060 Click "Cancel" to Exit Program
1062 ,[.,]
1063 </div>
1065 <div id="docs_example_data_save" class="docs_hidden">
1067 Accepts input from the user and saves in memory for future use
1069 >,[.>,]
1070 </div>
1072 <div id="docs_example_add" class="docs_hidden">
1073 Adds current location to the next location and leaves behind a Zero for the first value
1079 Plus Two
1081 >++*
1083 Move Data Pointer to first value
1087 Equals Four
1089 [->+<]*
1090 </div>
1093 <div id="docs_example_uc" class="docs_hidden">
1095 Accepts lower case input from the user and makes it uppercase
1097 Stops when user clicks Cancel
1099 ,----------[----------------------.,----------]
1100 </div>
1102 <div id="docs_example_copy_byte" class="docs_hidden">
1104 Set byte Zero
1106 +++*
1108 Set byte One
1110 >++*
1112 Move back to byte Zero
1116 Copy value of byte Zero to byte One
1118 >[-]>[-]<<[->+>+<<]>>[-<<+>>]<<*
1119 </div>
1122 <div id="docs_example_seek" class="docs_hidden">
1124 Set a few bytes to Non Zero values and Move Data Pointer
1127 >+++++
1128 >+++++
1130 >++++
1131 >++++++*
1133 Move DATA POINTER back to byte Zero
1135 <<<<<*
1137 Move DATA POINTER forward until it lands on a byte with a value of 1 preserving all bytes it passes
1139 -[+>-]+*
1140 </div>
1143 <div id="docs_example_add_two" class="docs_hidden">
1145 Adds two single digit numbers and display result
1147 Works on one digit results only
1149 ,>++++++[<-------->-],[<+>-]<.
1151 </div>
1154 <div id="docs_example_multiply" class="docs_hidden">
1156 Multiply two single digit numbers and display result
1158 Works on one digit results only
1160 ,>,>++++++++[<------<------>>-]
1161 <<[>[>+>+<<-]>>[<<+>>-]<<<-]
1162 >>>++++++[<++++++++>-]<.>.*
1163 </div>
1165 <div id="docs_example_divide" class="docs_hidden">
1167 Accepts two single digit numbers from the user divides them and displays the truncated quotient
1169 Dividend is stored in byte Zero and Divisor is stored in byte One
1171 ,>,>++++++[-<--------<-------->>]<<[>[->+>+<<]>[-<<-[>]>>>[<[>>>-<<<[-]]>>]<<]>>>+<<[-<<+>>]<<<]>[-]>>>>[-<<<<<+>>>>>]<<<<++++++[-<++++++++>]<.*
1172 </div>
1174 <div id="example_0" class="docs_hidden">
1175 ++++++++[>+>++>+++>++++>+++++>++++++>+++++++>++++++++>+++++++++>++++++++++>+++++++++++>++++++++++++>+++++++++++++>++++++++++++++>+++++++++++++++>++++++++++++++++<<<<<<<<<<<<<<<<-]>>>>>>>>>>+++.---<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<>>>>>>>>>>>>>>.<<<<<<<<<<<<<<>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>+++.---<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>+.-<<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>.<<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>+.-<<<<<<<<<<<<<<>>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>--.++<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>++.--<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>+.-<<<<<<<<<<<<<<<>>>>>>--.++<<<<<<>++.--<>++.--<>>>>>>>>>---.+++<<<<<<<<<>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>>>>>>>>>>-.+<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>-.+<<<<<<<<<<<>>>>>>--.++<<<<<<>>>>.<<<<>>>>>>>>>----.++++<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>++.--<<<<<<<<<<<<<>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>.<<<<.
1176 </div>
1178 <div id="example_1" class="docs_hidden">
1179 ++++++++[>+>++>+++>++++>+++++>++++++>+++++++>++++++++>+++++++++>++++++++++>+++++++++++>++++++++++++>+++++++++++++>++++++++++++++>+++++++++++++++>++++++++++++++++<<<<<<<<<<<<<<<<-]>>>>>>>>>>----.++++<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>-.+<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>.<<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>-.+<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>.<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>.<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>-.+<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>-.+<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>+++.---<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>--.++<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>.<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>-.+<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<<>>>>>>>>>>>>+++.---<<<<<<<<<<<<>>>>>>>>>>>>>.<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>+.-<<<<<<<<<<<<<<<>>>>>>>>>>>>>>.<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>.<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>.<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>-.+<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>.<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>>>+.-<<<<<<<<<<<<<<<>>>>>>--.++<<<<<<>++.--<>>>>>>>>>>>----.++++<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>--.++<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<.
1180 </div>
1182 <div id="example_2" class="docs_hidden">
1183 ++++++++[>+>++>+++>++++>+++++>++++++>+++++++>++++++++>+++++++++>++++++++++>+++++++++++>++++++++++++>+++++++++++++>++++++++++++++>+++++++++++++++>++++++++++++++++<<<<<<<<<<<<<<<<-]>>>>>>>>+.-<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>.<<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>-.+<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>-.+<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>-.+<<<<<<<<<<<<<>>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>-.+<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<<>>>>>>>>>>>>>.<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>.<<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>-.+<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>+.-<<<<<<<<<<<<<<>>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>.<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>--.++<<<<<<>++.--<>++.--<>>>>>>>>+.-<<<<<<<<>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>++.--<<<<<<<<<>>>>>>--.++<<<<<<>>>>.<<<<>>>>>>>>>>.<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<.
1184 </div>
1186 <div id="example_3" class="docs_hidden">
1187 ++++++++[>+>++>+++>++++>+++++>++++++>+++++++>++++++++>+++++++++>++++++++++>+++++++++++>++++++++++++>+++++++++++++>++++++++++++++>+++++++++++++++>++++++++++++++++<<<<<<<<<<<<<<<<-]>>>>>>>>>>>----.++++<<<<<<<<<<<>>>>>>>>>>>>>.<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>--.++<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>+++.---<<<<<<<<>>>>>>>>>>-.+<<<<<<<<<<>>>>>>>>++.--<<<<<<<<>>>>>>>>>>-.+<<<<<<<<<<>>>>>>>>>>----.++++<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>+++.---<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>.<<<<<<<<<<<<<<>>>>>>>>>>>>>>.<<<<<<<<<<<<<<>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>.<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<>>>>>>>+++.---<<<<<<<>>>>.<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>+++.---<<<<<<<<<<<<>>>>>>>>>>>>>.<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>-.+<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>>>>>>>>>>.<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<<>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>.<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>--.++<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>++.--<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>-.+<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>+++.---<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>--.++<<<<<<<<<<<<<>>>>>>>>>>>>>--.++<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>+++.---<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>--.++<<<<<<>++.--<>++.--<>>>>>>>>>---.+++<<<<<<<<<>>>>>>--.++<<<<<<>>>>>>>>>>>-.+<<<<<<<<<<<>>>>>>--.++<<<<<<>>>>.<<<<>>>>>>>>>----.++++<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>++.--<<<<<<<<<<<<<>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>.<<<<.
1188 </div>
1190 <div id="example_4" class="docs_hidden">
1191 ++++++++[>+>++>+++>++++>+++++>++++++>+++++++>++++++++>+++++++++>++++++++++>+++++++++++>++++++++++++>+++++++++++++>++++++++++++++>+++++++++++++++>++++++++++++++++<<<<<<<<<<<<<<<<-]>>>>>>>>>--.++<<<<<<<<<>>>>>>>>>>-.+<<<<<<<<<<>>>>>>>>>>++.--<<<<<<<<<<>>>>>>>>>>>----.++++<<<<<<<<<<<>>>>>>>>>>++.--<<<<<<<<<<>>>>>>>>+.-<<<<<<<<>>>>>>>>>>--.++<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>--.++<<<<<<<<<<<<<>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>++.--<<<<<<<<<<<<>>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>.<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<>>>>>>>>>>>>>>>+.-<<<<<<<<<<<<<<<>>>>>>----.++++<<<<<<>>>>.<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>+++.---<<<<<<<<<<<<>>>>>>>>>>>>+++.---<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<>>>>>>>>>>>>>>>+.-<<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>++.--<<<<<<<<<<<<>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>>>----.++++<<<<<<>>>>.<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>-.+<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>>>+.-<<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>+++.---<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<>>>>>>>>>>>>>>.<<<<<<<<<<<<<<>>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>--.++<<<<<<>++.--<>++.--<>>>>>>>>+.-<<<<<<<<>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>++.--<<<<<<<<<>>>>>>--.++<<<<<<>>>>.<<<<>>>>>>>>>>.<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>.<<<<.
1192 </div>
1194 <div id="example_5" class="docs_hidden">
1195 ++++++++[>+>++>+++>++++>+++++>++++++>+++++++>++++++++>+++++++++>++++++++++>+++++++++++>++++++++++++>+++++++++++++>++++++++++++++>+++++++++++++++>++++++++++++++++<<<<<<<<<<<<<<<<-]>>>>>>>>>-.+<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>-.+<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<>>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>--.++<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>.<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>+++.---<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>--.++<<<<<<>++.--<>++.--<>>>>>>>>>>>----.++++<<<<<<<<<<<>>>>>>>>>>>>>.<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>+++.---<<<<<<<<>>>>>>--.++<<<<<<>>>>.<<<<>>>>>>>>>-.+<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<.
1196 </div>
1198 <div id="example_6" class="docs_hidden">
1199 ++++++++[>+>++>+++>++++>+++++>++++++>+++++++>++++++++>+++++++++>++++++++++>+++++++++++>++++++++++++>+++++++++++++>++++++++++++++>+++++++++++++++>++++++++++++++++<<<<<<<<<<<<<<<<-]>>>>>>>>>>>----.++++<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>+++.---<<<<<<<<<<<<>>>>>>>>>>>>>.<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>.<<<<<<<<<<<<<<>>>>>>--.++<<<<<<>>>>.<<<<>>>>>>>>>>+++.---<<<<<<<<<<>>>>>>>>>>>>>.<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>.<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>+++.---<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>--.++<<<<<<>++.--<>++.--<>>>>>>>>>>----.++++<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>----.++++<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>.<<<<.
1200 </div>
1202 <div id="example_7" class="docs_hidden">
1203 ++++++++[>+>++>+++>++++>+++++>++++++>+++++++>++++++++>+++++++++>++++++++++>+++++++++++>++++++++++++>+++++++++++++>++++++++++++++>+++++++++++++++>++++++++++++++++<<<<<<<<<<<<<<<<-]>>>>>>>>+++.---<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>+.-<<<<<<<<<<<<<<>>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<>>>>>>>>>>>>>>>+.-<<<<<<<<<<<<<<<>>>>>>----.++++<<<<<<>>>>.<<<<>>>>>>>>>>>>>--.++<<<<<<<<<<<<<>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<>>>>>>----.++++<<<<<<>>>>.<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<<>>>>>>>>>>>>+++.---<<<<<<<<<<<<>>>>>>>>>>>>+++.---<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>>>--.++<<<<<<>++.--<>++.--<>>>>>>>>>----.++++<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>---.+++<<<<<<<<<<>>>>>>--.++<<<<<<>>>>.<<<<>>>>>>>>>>++.--<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>+++.---<<<<<<<<<<<<>>>>>>>>>>>>>.<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>.<<<<.
1204 </div>
1207 <div id="example_8" class="docs_hidden">
1208 ++++++++[>+>++>+++>++++>+++++>++++++>+++++++>++++++++>+++++++++>++++++++++>+++++++++++>++++++++++++>+++++++++++++>++++++++++++++>+++++++++++++++>++++++++++++++++<<<<<<<<<<<<<<<<-]>>>>>>>>+++.---<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<>>>>>>>>>>>>>>.<<<<<<<<<<<<<<>>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>>>>>>>>>+++.---<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>+++.---<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<>>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<<>>>>>>>>>>>>+++.---<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>+++.---<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>>>+.-<<<<<<<<<<<<<<<>>>>>>>>>>>>++.--<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<>>>>>>>>>>>>>>>+.-<<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>>.<<<<<<<<<<<<<<<>>>>>>>>>>>>>>.<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>.<<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>-.+<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>>>+.-<<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>.<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<<>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<>>>>>>>>>>>>>>>+.-<<<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>-.+<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>++.--<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>>>>>>>>>>.<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>.<<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>-.+<<<<<<<<<<<<<>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>+++.---<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>++.--<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<>>>>>>>>>>>>>>>+.-<<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>>.<<<<<<<<<<<<<<<>>>>>>>>>>>>>>.<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>.<<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>--.++<<<<<<>++.--<>++.--<>>>>>>>>>---.+++<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>+++.---<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>++.--<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>>+.-<<<<<<<<<<<<<<<>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<>>>>.<<<<.
1209 </div>
1212 <div id="example_9" class="docs_hidden">
1213 ++++++++[>+>++>+++>++++>+++++>++++++>+++++++>++++++++>+++++++++>++++++++++>+++++++++++>++++++++++++>+++++++++++++>++++++++++++++>+++++++++++++++>++++++++++++++++<<<<<<<<<<<<<<<<-]>>>>>>>>>----.++++<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>++.--<<<<<<<<<<<<>>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<<>>>>>>>>>>>>>-.+<<<<<<<<<<<<<>>>>>>>>>>>>>-.+<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>-.+<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>++.--<<<<<<<<<<<<>>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<<>>>>>>>>>>>>>-.+<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>>>--.++<<<<<<>>>>.<<<<>>>>>>>>>>>----.++++<<<<<<<<<<<>>>>>>>>>>>>>.<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>>+.-<<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<>>>>>>>>>>>>>>>+.-<<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>>>>>>>>>>.<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>.<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>--.++<<<<<<>++.--<>++.--<>>>>>>>>>>>---.+++<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>.<<<<.
1214 </div>
1216 <div id="example_10" class="docs_hidden">
1217 ++++++++[>+>++>+++>++++>+++++>++++++>+++++++>++++++++>+++++++++>++++++++++>+++++++++++>++++++++++++>+++++++++++++>++++++++++++++>+++++++++++++++>++++++++++++++++<<<<<<<<<<<<<<<<-]>>>>>>>>+++.---<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<>>>>>>>>>>>>>>.<<<<<<<<<<<<<<>>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>+++.---<<<<<<<<<<>>>>>>>>>>>>+++.---<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>+++.---<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>++.--<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>+++.---<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<>>>>>>>>>>>>>>.<<<<<<<<<<<<<<>>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>.<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<>>>>>>>>>>>>>>>+.-<<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>++.--<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>>>>>>>>>+++.---<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>.<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>>>--.++<<<<<<>++.--<>++.--<>>>>>>>>>---.+++<<<<<<<<<>>>>>>--.++<<<<<<>>>>.<<<<>>>>>>>>>>>-.+<<<<<<<<<<<>>>>>>--.++<<<<<<>>>>.<<<<>>>>>>>>>----.++++<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>++.--<<<<<<<<<<<<<>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>.<<<<.
1218 </div>
1220 <div id="docs_ascii" class="docs_hidden">
1222 <table id="ascii">
1223 <caption><b>ASCII Chart</b></caption>
1225 <tr class="ref_even">
1226 <td id="dat_col">0</td>
1227 <td class="ctrl" id="val_col">NUL</td>
1228 <td id="dat_col">16</td>
1229 <td class="ctrl" id="val_col">DLE</td>
1230 <td id="dat_col">32</td>
1231 <td class="ctrl" id="val_col">SP</td>
1232 <td id="dat_col">48</td>
1233 <td id="val_col">0</td>
1234 <td id="dat_col">64</td>
1235 <td id="val_col">@</td>
1236 <td id="dat_col">80</td>
1237 <td id="val_col">P</td>
1238 <td id="dat_col">96</td>
1239 <td id="val_col">`</td>
1240 <td id="dat_col">112</td>
1241 <td>p</td>
1242 </tr>
1244 <tr class="ref_odd">
1245 <td>1</td>
1246 <td class="ctrl" id="val_col">SOH</td>
1247 <td>17</td>
1248 <td class="ctrl" id="val_col">DC1</td>
1249 <td>33</td>
1250 <td id="val_col">!</td>
1251 <td>49</td>
1252 <td id="val_col">1</td>
1253 <td>65</td>
1254 <td id="val_col">A</td>
1255 <td>81</td>
1256 <td id="val_col">Q</td>
1257 <td>97</td>
1258 <td id="val_col">a</td>
1259 <td>113</td>
1260 <td>q</td>
1261 </tr>
1263 <tr class="ref_even">
1264 <td>2</td>
1265 <td class="ctrl" id="val_col">STX</td>
1266 <td>18</td>
1267 <td class="ctrl" id="val_col">DC2</td>
1268 <td>34</td>
1269 <td id="val_col">"</td>
1270 <td>50</td>
1271 <td id="val_col">2</td>
1272 <td>66</td>
1273 <td id="val_col">B</td>
1274 <td>82</td>
1275 <td id="val_col">R</td>
1276 <td>98</td>
1277 <td id="val_col">b</td>
1278 <td>114</td>
1279 <td>r</td>
1280 </tr>
1282 <tr class="ref_odd">
1283 <td>3</td>
1284 <td class="ctrl" id="val_col">ETX</td>
1285 <td>19</td>
1286 <td class="ctrl" id="val_col">DC3</td>
1287 <td>35</td>
1288 <td id="val_col">#</td>
1289 <td>51</td>
1290 <td id="val_col">3</td>
1291 <td>67</td>
1292 <td id="val_col">C</td>
1293 <td>83</td>
1294 <td id="val_col">S</td>
1295 <td>99</td>
1296 <td id="val_col">c</td>
1297 <td>115</td>
1298 <td>s</td>
1299 </tr>
1301 <tr class="ref_even">
1302 <td>4</td>
1303 <td class="ctrl" id="val_col">EOT</td>
1304 <td>20</td>
1305 <td class="ctrl" id="val_col">DC4</td>
1306 <td>36</td>
1307 <td id="val_col">$</td>
1308 <td>52</td>
1309 <td id="val_col">4</td>
1310 <td>68</td>
1311 <td id="val_col">D</td>
1312 <td>84</td>
1313 <td id="val_col">T</td>
1314 <td>100</td>
1315 <td id="val_col">d</td>
1316 <td>116</td>
1317 <td>t</td>
1318 </tr>
1320 <tr class="ref_odd">
1321 <td>5</td>
1322 <td class="ctrl" id="val_col">ENQ</td>
1323 <td>21</td>
1324 <td class="ctrl" id="val_col">NAK</td>
1325 <td>37</td>
1326 <td id="val_col">%</td>
1327 <td>53</td>
1328 <td id="val_col">5</td>
1329 <td>69</td>
1330 <td id="val_col">E</td>
1331 <td>85</td>
1332 <td id="val_col">U</td>
1333 <td>101</td>
1334 <td id="val_col">e</td>
1335 <td>117</td>
1336 <td>u</td>
1337 </tr>
1339 <tr class="ref_even">
1340 <td>6</td>
1341 <td class="ctrl" id="val_col">ACK</td>
1342 <td>22</td><td class="ctrl" id="val_col">SYN</td>
1343 <td>38</td>
1344 <td id="val_col">&amp;</td>
1345 <td>54</td>
1346 <td id="val_col">6</td>
1347 <td>70</td>
1348 <td id="val_col">F</td>
1349 <td>86</td>
1350 <td id="val_col">V</td>
1351 <td>102</td>
1352 <td id="val_col">f</td>
1353 <td>118</td>
1354 <td>v</td>
1355 </tr>
1357 <tr class="ref_odd">
1358 <td>7</td>
1359 <td class="ctrl" id="val_col">BEL</td>
1360 <td>23</td>
1361 <td class="ctrl" id="val_col">ETB</td>
1362 <td>39</td>
1363 <td id="val_col">'</td>
1364 <td>55</td>
1365 <td id="val_col">7</td>
1366 <td>71</td>
1367 <td id="val_col">G</td>
1368 <td>87</td>
1369 <td id="val_col">W</td>
1370 <td>103</td>
1371 <td id="val_col">g</td>
1372 <td>119</td>
1373 <td>w</td>
1374 </tr>
1376 <tr class="ref_even">
1377 <td>8</td>
1378 <td class="ctrl" id="val_col">BS</td>
1379 <td>24</td>
1380 <td class="ctrl" id="val_col">CAN</td>
1381 <td>40</td>
1382 <td id="val_col">(</td>
1383 <td>56</td>
1384 <td id="val_col">8</td>
1385 <td>72</td>
1386 <td id="val_col">H</td>
1387 <td>88</td>
1388 <td id="val_col">X</td>
1389 <td>104</td>
1390 <td id="val_col">h</td>
1391 <td>120</td>
1392 <td>x</td>
1393 </tr>
1395 <tr class="ref_odd">
1396 <td>9</td>
1397 <td class="ctrl" id="val_col">HT</td>
1398 <td>25</td>
1399 <td class="ctrl" id="val_col">EM</td>
1400 <td>41</td>
1401 <td id="val_col">)</td>
1402 <td>57</td>
1403 <td id="val_col">9</td>
1404 <td>73</td>
1405 <td id="val_col">I</td>
1406 <td>89</td>
1407 <td id="val_col">Y</td>
1408 <td>105</td>
1409 <td id="val_col">i</td>
1410 <td>121</td>
1411 <td>y</td>
1412 </tr>
1414 <tr class="ref_even">
1415 <td>10</td>
1416 <td class="ctrl" id="val_col">LF</td>
1417 <td>26</td>
1418 <td class="ctrl" id="val_col">SUB</td>
1419 <td>42</td>
1420 <td id="val_col">*</td>
1421 <td>58</td>
1422 <td id="val_col">:</td>
1423 <td>74</td>
1424 <td id="val_col">J</td>
1425 <td>90</td>
1426 <td id="val_col">Z</td>
1427 <td>106</td>
1428 <td id="val_col">j</td>
1429 <td>122</td>
1430 <td>z</td>
1431 </tr>
1433 <tr class="ref_odd">
1434 <td>11</td>
1435 <td class="ctrl" id="val_col">VT</td>
1436 <td>27</td>
1437 <td class="ctrl" id="val_col">ESC</td>
1438 <td>43</td>
1439 <td id="val_col">+</td>
1440 <td>59</td>
1441 <td id="val_col">;</td>
1442 <td>75</td>
1443 <td id="val_col">K</td>
1444 <td>91</td>
1445 <td id="val_col">[</td>
1446 <td>107</td>
1447 <td id="val_col">k</td>
1448 <td>123</td>
1449 <td>{</td>
1450 </tr>
1452 <tr class="ref_even">
1453 <td>12</td>
1454 <td class="ctrl" id="val_col">FF</td>
1455 <td>28</td>
1456 <td class="ctrl" id="val_col">FS</td>
1457 <td>44</td>
1458 <td id="val_col">,</td>
1459 <td>60</td>
1460 <td id="val_col">&lt;</td>
1461 <td>76</td>
1462 <td id="val_col">L</td>
1463 <td>92</td>
1464 <td id="val_col">\</td>
1465 <td>108</td>
1466 <td id="val_col">l</td>
1467 <td>124</td>
1468 <td>|</td>
1469 </tr>
1471 <tr class="ref_odd">
1472 <td>13</td>
1473 <td class="ctrl" id="val_col">CR</td>
1474 <td>29</td>
1475 <td class="ctrl" id="val_col">GS</td>
1476 <td>45</td>
1477 <td id="val_col">-</td>
1478 <td>61</td>
1479 <td id="val_col">=</td>
1480 <td>77</td>
1481 <td id="val_col">M</td>
1482 <td>93</td>
1483 <td id="val_col">]</td>
1484 <td>109</td>
1485 <td id="val_col">m</td>
1486 <td>125</td>
1487 <td>}</td>
1488 </tr>
1490 <tr class="ref_even">
1491 <td>14</td>
1492 <td class="ctrl" id="val_col">SO</td>
1493 <td>30</td>
1494 <td class="ctrl" id="val_col">RS</td>
1495 <td>46</td>
1496 <td id="val_col">.</td>
1497 <td>62</td>
1498 <td id="val_col">></td>
1499 <td>78</td>
1500 <td id="val_col">N</td>
1501 <td>94</td>
1502 <td id="val_col">^</td>
1503 <td>110</td>
1504 <td id="val_col">n</td>
1505 <td>126</td>
1506 <td>~</td>
1507 </tr>
1509 <tr class="ref_odd">
1510 <td>15</td>
1511 <td class="ctrl" id="val_col">SI</td>
1512 <td>31</td>
1513 <td class="ctrl" id="val_col">US</td>
1514 <td>47</td>
1515 <td id="val_col">/</td>
1516 <td>63</td>
1517 <td id="val_col">?</td>
1518 <td>79</td>
1519 <td id="val_col">O</td>
1520 <td>95</td>
1521 <td id="val_col">_</td>
1522 <td>111</td>
1523 <td id="val_col">o</td>
1524 <td>127</td>
1525 <td class="ctrl">DEL</td>
1526 </tr>
1527 </table>
1528 </div>
1530 </body>
1531 </html>