4 <meta http-equiv="X-UA-Compatible" content="IE=9">
6 <title>ELCC-IDE</title>
7 <style type="text/css">
12 font-family: Consolas, 'Courier New', Courier, Monaco, monospace;
17 border: 2px dashed #bbb;
24 <script type="text/javascript" src="./header.js" charset="UTF-8"></script>
25 <script type="text/javascript">
28 var mainCompiler = null;
29 var codeTextArea = null;
30 var debugMessageTextArea = null;
31 var maxDebugMessageLength = 0x1000;
35 debugMessageTextArea = document.getElementById('debugMessageText');
36 mainCPU = new WebCPU();
37 mainCompiler = new ELCHNOSCompiler(messageOut);
39 mainCPU.setMainWindowCanvasDOMObject("mainWindowCanvas");
42 // Setup the dnd listeners.
43 var dropZone = document.getElementById('fileDropZone');
44 dropZone.addEventListener('dragover', handleDragOver, false);
45 dropZone.addEventListener('drop', handleFileSelect, false);
47 //Enable Tab key in textarea
48 codeTextArea = document.getElementById('codeText');
49 //http://d.hatena.ne.jp/hokaccha/20111028/1319814792
50 codeTextArea.addEventListener("keydown", function(e) {
51 if (e.keyCode === 9) {
55 var pos = elem.selectionStart;
56 elem.value = val.substr(0, pos) + '\t' + val.substr(pos, val.length);
57 elem.setSelectionRange(pos + 1, pos + 1);
63 function messageOut(s){
64 var str = debugMessageTextArea.value + s;
65 if(str.length > maxDebugMessageLength){
66 str = str.slice(str.length - (maxDebugMessageLength >> 1));
68 debugMessageTextArea.value = str;
69 debugMessageTextArea.scrollTop = debugMessageTextArea.scrollHeight;
73 debugMessageTextArea.value += "****Compile Started****\n";
74 if(mainCompiler.compile(codeTextArea.value) == null){
75 messageOut("*\n****Compile Succeeded!****\n*\n");
76 binStr = mainCompiler.bin.stringAsHexByte()
78 messageOut("*\n****Compile Failed...****\n*\n");
85 mainCPU.loadBinaryText(binStr);
90 function enableDebugMode(){
91 mainCPU.setDebugMessageDOMObject("debugMessageText");
92 mainCPU.message("****Debug mode enabled.\n");
95 function disableDebugMode(){
96 mainCPU.message("****Debug mode disabled.\n");
97 mainCPU.setDebugMessageDOMObject(null);
100 // http://www.html5rocks.com/ja/tutorials/file/dndfiles/
101 function handleFileSelect(evt){
102 evt.stopPropagation();
103 evt.preventDefault();
105 var files = evt.dataTransfer.files; // FileList object.
107 // files is a FileList of File objects. List some properties.
109 for(var i = 0, f; f = files[i]; i++){
110 output.push('<li><strong>', escape(f.name), '</strong> ', f.size, ' bytes, last modified: ', f.lastModifiedDate.toLocaleDateString(), '</li>');
111 var r = new FileReader();
112 r.onload = (function(file){
115 codeTextArea.value = a;
118 r.readAsArrayBuffer(f);
122 function handleDragOver(evt){
123 evt.stopPropagation();
124 evt.preventDefault();
125 evt.dataTransfer.dropEffect = 'copy'; // Explicitly show this is a copy.
131 <div style="float:left;">
133 <canvas id="mainWindowCanvas" width="640" height="480" style="border:1px solid #000000;"></canvas>
134 <h2>Internal Information</h2>
135 <input type="checkbox" onchange="">message</input><br />
136 <textarea id="debugMessageText" cols="66" rows="16"></textarea>
137 <form onsubmit="return false;">
138 <button onclick="compile();">Compile</button>
139 <button onclick="run();">Run</button>
140 <button onclick="mainCPU.stopFlag = true;">Break</button><br />
141 <button onclick="enableDebugMode();">EnableDebugMode</button>
142 <button onclick="disableDebugMode();">DisableDebugMode</button>
145 <div style="float:left;">
147 <textarea id="codeText" cols="80" rows="48" wrap="off">
148 unsigned char table[32] = {
149 196, 100, 187, 61, 164, 29, 129, 9,
150 90, 5, 53, 17, 23, 44, 7, 81,
151 7, 119, 23, 156, 53, 183, 90, 195,
152 129, 191, 164, 171, 187, 139, 196, 100,
155 procedure inline drawLine(int mode, x0, y0, x1, y1, col){
157 REMARK 05 0100000003;
172 int x0, y0, x1, y1, col, i, j;
173 unsigned char *p, *q;
176 for (i = 0; i != 15; i++) {
183 for (j = -8; j != 8; j++) {
193 drawLine(1 + 4, x0, y0, x1, y1, col);
199 <div id="fileDropZone">Drop SourceCode.elc here</div>
200 <div id="fileList"></div>