aboutsummaryrefslogtreecommitdiffstats
path: root/misc/yosys.html
blob: c82bc187105360ecb4f77689049c7a0d5bb9e099 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<html>
  <head>
    <title>yosys.js example application</title>
  </head>
  <body onload="document.getElementById('command').focus()">
    <h1>yosys.js example application</h1>
    <div><textarea id="output" style="width: 100%" rows="30" cols="100">Loading...</textarea></div>
    <div><form onsubmit="return run_command()"><tt><span id="prompt"><br/>yosys&gt; </span></tt><input id="command" type="text" size="100"></form></div>
    <script type='text/javascript'>
      var got_log_messages = false;
      var Module = {
        print: (function() {
          var element = document.getElementById('output');
          if (element) element.value = ''; // clear browser cache
          return function(text) {
	    got_log_messages = true;
            if (element && typeof(text) != "number") {
              element.value += text + "\n";
              element.scrollTop = element.scrollHeight; // focus on bottom
            }
          };
	})(),
        printErr: (function() {
          var element = document.getElementById('output');
          if (element) element.value = ''; // clear browser cache
          return function(text) {
            if (element && typeof(text) != "number") {
	      console.log(text);
	      if (got_log_messages) {
                element.value += text + "\n";
                element.scrollTop = element.scrollHeight; // focus on bottom
	      }
            }
          };
	})(),
	command: (function(cmd) {
	  Module.ccall('run', '', ['string'], [cmd])
	}),
	prompt: (function(cmd) {
	  return Module.ccall('prompt', 'string', [], [])
	})
      };
      function run_command() {
        var cmd = document.getElementById('command').value;
	document.getElementById('command').value = '';
        Module.print(Module.prompt() + cmd);
	try {
		Module.command(cmd);
	} catch (e) {
		Module.print('Caught JavaScript exception. (see JavaScript console for details.)');
		console.log(e);
	}
	document.getElementById('command').focus();
	document.getElementById('prompt').innerText = Module.prompt();
	return false;
      }
    </script>
    <script async type="text/javascript" src="yosys.js"></script>
  </body>
</html>