Initial commit
diff --git a/index.html b/index.html
new file mode 100644
index 0000000..4f8a689
--- /dev/null
+++ b/index.html
@@ -0,0 +1,108 @@
+<!DOCTYPE html>
+
+<div class="wrapper">
+<input type="text" id="searchbox" placeholder="Search RISC-V Instructions"></input>
+</div>
+
+<div id="ilist">
+</div>
+
+<hr>
+
+<p class="cite">
+	These listings are generated from documentation written
+	by <a href="https://hg.sr.ht/~icefox/riscv-reference">~icefox</a>
+	on sourcehut. Website created by <a href="https://swisschili.sh">swissChili</a>.
+</p>
+<p class="cite">
+	This documentation is incomplete for now. Check the ~icefox link
+	for what is currently implemented.
+</p>
+
+<style>
+ body {
+	 font-family: sans-serif;
+	 max-width: 50em;
+	 margin: auto;
+	 padding: 10px;
+ }
+
+ dt {
+	 font-weight: bold;
+ }
+
+ dd div,
+ #searchbox {
+	 background: #fcfaf2;
+	 padding: 4px;
+	 border-radius: 4px;
+	 border: 1px solid #f4f2e8;
+ }
+
+ #searchbox {
+	 font-size: 14pt;
+	 padding: 12px 20px;
+	 width: min-content;
+ }
+
+ .wrapper {
+	 width: 100%;
+	 display: flex;
+	 justify-content: center;
+	 margin-bottom: 4em;
+	 margin-top: 2em;
+ }
+
+ .cite {
+	 font-style: italic;
+	 text-align: center;
+ }
+
+ hr {
+	 border-color: #CCC;
+ }
+</style>
+
+<script>
+ function setup(instructions)
+ {
+	 console.log(instructions);
+
+	 function handler()
+	 {
+		 let html = "";
+
+		 console.log("searched");
+
+		 let q = searchbox.value.toLowerCase();
+
+		 console.log({q});
+
+		 for (let item of instructions)
+		 {
+			 if (!item.mnemonic.toLowerCase().includes(q) &&
+				 !item.name.toLowerCase().includes(q))
+				 continue;
+
+			 let desc = item.long_description.replace("\n\n", "</p><p>");
+
+			 html += `
+			 <dt>${item.mnemonic} - ${item.name}</dt>
+			 <dd>
+				 <div>encoding: ${item.encoding}, extension: ${item.extension}, opcode: ${item.opcode}</div>
+				 <p>${desc}</p>
+			 </dd>
+			 `;
+		 }
+
+		 ilist.innerHTML = html;
+	 };
+
+	 searchbox.addEventListener("input", handler);
+	 handler();
+ }
+ 
+ fetch("instructions.json")
+	 .then(res => res.json())
+	 .then(setup);
+</script>