feat: favicon & multisyntax, modal for uninmplemented menus

This commit is contained in:
root 2022-08-16 19:11:46 +02:00
parent 50c6e37098
commit fdca504d20
2 changed files with 89 additions and 21 deletions

BIN
favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 549 B

110
main.html
View File

@ -39,13 +39,13 @@
</a> </a>
</li> </li>
<li> <li>
<a href="javascript:openfile()"> <a href="javascript:showmodal()">
<span class="red-168-text">O</span>pen <span class="red-168-text">O</span>pen
<span class="tui-shortcut">F5</span> <span class="tui-shortcut">F5</span>
</a> </a>
</li> </li>
<li> <li>
<a href="javascript:savefile()"> <a href="javascript:showmodal()">
<span class="red-168-text">S</span>ave <span class="red-168-text">S</span>ave
<span class="tui-shortcut">F6</span> <span class="tui-shortcut">F6</span>
</a> </a>
@ -76,48 +76,48 @@
<div class="tui-dropdown-content"> <div class="tui-dropdown-content">
<ul> <ul>
<li> <li>
<a href="javascript:"> <a href="javascript:showmodal();">
<span class="red-168-text">C</span>ut <span class="red-168-text">C</span>ut
<span class="tui-shortcut">Ctrl+X</span> <span class="tui-shortcut">Ctrl+X</span>
</a> </a>
</li> </li>
<li> <li>
<a href="javascript:"> <a href="javascript:showmodal()">
C<span class="red-168-text">o</span>py C<span class="red-168-text">o</span>py
<span class="tui-shortcut">Ctrl+C</span> <span class="tui-shortcut">Ctrl+C</span>
</a> </a>
</li> </li>
<li> <li>
<a href="javascript:"> <a href="javascript:showmodal()">
<span class="red-168-text">P</span>aste <span class="red-168-text">P</span>aste
<span class="tui-shortcut">Ctrl+P</span> <span class="tui-shortcut">Ctrl+P</span>
</a> </a>
</li> </li>
<li> <li>
<a href="javascript:"> <a href="javascript:showmodal()">
<span class="red-168-text">S</span>elect all <span class="red-168-text">S</span>elect all
</a> </a>
</li> </li>
<li> <li>
<a href="javascript:"> <a href="javascript:showmodal()">
<span class="red-168-text">D</span>elete <span class="red-168-text">D</span>elete
</a> </a>
</li> </li>
<div class="tui-black-divider"></div> <div class="tui-black-divider"></div>
<li> <li>
<a href="/index.html"> <a href="javascript:showmodal()">
<span class="red-168-text">F</span>ind <span class="red-168-text">F</span>ind
<span class="tui-shortcut">F3</span> <span class="tui-shortcut">F3</span>
</a> </a>
</li> </li>
<li> <li>
<a href="/index.html"> <a href="javascript:showmodal()">
<span class="red-168-text">R</span>eplace <span class="red-168-text">R</span>eplace
<span class="tui-shortcut">Alt+F3</span> <span class="tui-shortcut">Alt+F3</span>
</a> </a>
</li> </li>
<li> <li>
<a href="/index.html"> <a href="javascript:showmodal()">
<span class="red-168-text">G</span>oto <span class="red-168-text">G</span>oto
<span class="tui-shortcut">Ctrl+G</span> <span class="tui-shortcut">Ctrl+G</span>
</a> </a>
@ -159,12 +159,27 @@
<div class="tui-dropdown-content"> <div class="tui-dropdown-content">
<ul> <ul>
<li> <li>
<a href="javascript:toSyntax('intel')"> <a href="javascript:toSyntax('nasm')">
<span id="intel"></span> <span class="red-168-text">I</span>ntel <span id="nasm"></span> <span class="red-168-text">N</span>asm
</a> </a>
</li> </li>
<li> <li>
<a href="javascript:toSyntax('att')"> <a href="javascript:toSyntax('intel')">
<span id="intel">&nbsp;</span> <span class="red-168-text">I</span>ntel
</a>
</li>
<li>
<a href="javascript:toSyntax('masm')">
<span id="masm">&nbsp;</span> <span class="red-168-text">M</span>asm
</a>
</li>
<li>
<a href="javascript:toSyntax('gas')">
<span id="gas">&nbsp;</span> <span class="red-168-text">G</span>as
</a>
</li>
<li>
<a href="javascript:toSyntax('att')">
<span id="att">&nbsp;</span> <span class="red-168-text">A</span>T&T <span id="att">&nbsp;</span> <span class="red-168-text">A</span>T&T
</a> </a>
</li> </li>
@ -198,10 +213,28 @@
</li> </li>
<li class="tui-dropdown"> <li class="tui-dropdown">
<span class="red-168-text">H</span>elp <span class="red-168-text">H</span>elp
<div class="tui-dropdown-content">
<ul>
<li>
<a href="javascript:showmodal()">
<span class="red-168-text">I</span>nterface
</a>
</li>
</ul>
</div>
</li> </li>
</ul> </ul>
</nav> </nav>
<div id="modal" class="tui-window red-168 left-align" style="left: 40%; margin: 0px auto; top: 50%; z-index: 10; position: fixed; visibility:hidden">
<fieldset class="tui-fieldset">
<legend class="red-255 yellow-255-text">Alert</legend>
Function not implemented<br><br>
<div class="tui-divider"></div><br>
<button class="tui-button cyan-168 white-255-text tui-modal-close-button right" data-modal="modal" onclick="javascript:closemodal()">close</button>
</fieldset>
</div>
<!-- Edit panel --> <!-- Edit panel -->
<div class="tui-window full-width tui-no-shadow" style="margin-top: 23px;height:60%"> <div class="tui-window full-width tui-no-shadow" style="margin-top: 23px;height:60%">
<fieldset class="tui-fieldset" style="height:100%"> <fieldset class="tui-fieldset" style="height:100%">
@ -211,7 +244,7 @@
<span class="tui-fieldset-text right" style="margin-bottom: -5px;" id="syntax">&nbsp;Syntax:Intel&nbsp;</span> <span class="tui-fieldset-text right" style="margin-bottom: -5px;" id="syntax">&nbsp;Syntax:Intel&nbsp;</span>
<textarea id="editor" class="tui-textarea full-width" style="overflow: scroll;height:100%;width:100%"></textarea></div> <textarea id="editor" class="tui-textarea full-width" style="overflow: scroll;height:100%;width:100%"></textarea></div>
<div class="tui-window tui-no-shadow" style="height:20%;width:1000px"> <div class="tui-window tui-no-shadow" style="height:20%;width:940px">
<fieldset class="tui-fieldset" style="height:100%"> <fieldset class="tui-fieldset" style="height:100%">
<legend class="center">Results</legend> <legend class="center">Results</legend>
<div class="" style="overflow: scroll;height:100%;width:100%"><pre id="result" style="margin-top: -5px;"></pre></div> <div class="" style="overflow: scroll;height:100%;width:100%"><pre id="result" style="margin-top: -5px;"></pre></div>
@ -233,7 +266,7 @@
</div> </div>
<!-- Status bar --> <!-- Status bar -->
<div class="tui-statusbar absolute"> <div class="tui-statusbar relative">
<ul> <ul>
<li><a href="#!"><span class="red-168-text">F1</span> Help</a></li> <li><a href="#!"><span class="red-168-text">F1</span> Help</a></li>
<li><a href="javascript:exportfile()"><span class="red-168-text">F2</span> Save</a></li> <li><a href="javascript:exportfile()"><span class="red-168-text">F2</span> Save</a></li>
@ -249,12 +282,22 @@
</body> </body>
<script> <script>
var type='binary'; var type='binary';
var syntax='intel'; var syntax='nasm';
var filename=''; var filename='';
var zones = []; var zones = [];
newfile(); newfile();
function closemodal()
{
$("#modal").css("visibility","hidden");
}
function showmodal()
{
$("#modal").css("visibility","visible");
}
function setFilename(name){ function setFilename(name){
$("#filename").html(name); $("#filename").html(name);
filename=name; filename=name;
@ -264,15 +307,33 @@ function toSyntax(atype)
{ {
$("#att").html("&nbsp;"); $("#att").html("&nbsp;");
$("#intel").html("&nbsp;"); $("#intel").html("&nbsp;");
$("#nasm").html("&nbsp;");
$("#masm").html("&nbsp;");
$("#gas").html("&nbsp;");
if (atype=="att") if (atype=="att")
{ {
$("#att").html("√"); $("#att").html("√");
$("#syntax").html("&nbsp;Syntax:AT&T&nbsp;"); $("#syntax").html("&nbsp;Syntax:AT&T&nbsp;");
} }
else else if (atype=="intel")
{ {
$("#intel").html("√"); $("#intel").html("√");
$("#syntax").html("&nbsp;Syntax:Intel&nbsp;"); $("#syntax").html("&nbsp;Syntax:Intel&nbsp;");
}
else if (atype=="masm")
{
$("#masm").html("√");
$("#syntax").html("&nbsp;Syntax:Masm&nbsp;");
}
else if (atype=="gas")
{
$("#gas").html("√");
$("#syntax").html("&nbsp;Syntax:Gas&nbsp;");
}
else
{
$("#nasm").html("√");
$("#syntax").html("&nbsp;Syntax:Nasm&nbsp;");
} }
syntax=atype; syntax=atype;
} }
@ -378,13 +439,13 @@ function makebin(allzones)
function dumpall(allzones) function dumpall(allzones)
{ {
if (type=="binary") if (type=="binary")
var output = '<table class="">'; var output = '<table class="tui-table striped-purple"><thead><tr><th>Address</th><th>Hexadecimal</th><th>Ascii</th></thhead><tbody>';
else else
var output = ''; var output = '';
for (const zone of allzones) for (const zone of allzones)
output+=dump(zone); output+=dump(zone);
if (type=="binary") if (type=="binary")
output += '</table>'; output += '</tbody></table>';
showresult(output); showresult(output);
} }
@ -398,7 +459,7 @@ function dump(zone) {
case 'binary': case 'binary':
var address=zone.offset; var address=zone.offset;
for (var offset = 0; offset < mcLen; offset += 16) { for (var offset = 0; offset < mcLen; offset += 16) {
output += "<td>"+toHex(address,zone.code)+"</td><td>&nbsp;|&nbsp;</td><td>"; output += "<td>"+toHex(address,zone.code)+"</td><td>";
var ascii=''; var ascii='';
for (var i = offset; i < offset + 16 && i < mcLen; i++) { for (var i = offset; i < offset + 16 && i < mcLen; i++) {
if (zone.asm[i]>31) if (zone.asm[i]>31)
@ -407,7 +468,7 @@ function dump(zone) {
ascii += '.'; ascii += '.';
output += hexByte(zone.asm[i]) + " "; output += hexByte(zone.asm[i]) + " ";
} }
output += "</td><td>&nbsp;|&nbsp;</td><td>"+ascii+"</td></tr>"; output += "</td><td>"+ascii+"</td></tr>";
address+=16; address+=16;
} }
break; break;
@ -456,6 +517,7 @@ function make()
var org=0; var org=0;
var type=32; var type=32;
var status=true; var status=true;
zones=[];
showresult(''); showresult('');
while (assembly.length!=0) while (assembly.length!=0)
{ {
@ -553,6 +615,12 @@ function assemble(zone)
a = new ks.Keystone(ks.ARCH_X86, realtype); a = new ks.Keystone(ks.ARCH_X86, realtype);
if (syntax=="att") if (syntax=="att")
a.option(ks.OPT_SYNTAX, ks.OPT_SYNTAX_ATT); a.option(ks.OPT_SYNTAX, ks.OPT_SYNTAX_ATT);
else if (syntax=="masm")
a.option(ks.OPT_SYNTAX, ks.OPT_SYNTAX_MASM);
else if (syntax=="intel")
a.option(ks.OPT_SYNTAX, ks.OPT_SYNTAX_INTEL);
else if (syntax=="gas")
a.option(ks.OPT_SYNTAX, ks.OPT_SYNTAX_GAS);
else else
a.option(ks.OPT_SYNTAX, ks.OPT_SYNTAX_NASM); a.option(ks.OPT_SYNTAX, ks.OPT_SYNTAX_NASM);
try try