68 lines
1.7 KiB
JavaScript
68 lines
1.7 KiB
JavaScript
var table;
|
|
var selected;
|
|
|
|
function setupTable(){
|
|
table = document.getElementById('memtable');
|
|
for(var r=0;r<32;r++){
|
|
var row = document.createElement('tr');
|
|
table.appendChild(row);
|
|
var col = document.createElement('td');
|
|
col.appendChild(document.createTextNode(hexWord(r*16)+':'));
|
|
col.onmousedown = unselectCell;
|
|
row.appendChild(col);
|
|
for(var c=0;c<16;c++){
|
|
col = document.createElement('td');
|
|
col.addr = r*16+c;
|
|
col.val = 0;
|
|
col.onmousedown = function(e){handleCellClick(e);};
|
|
col.appendChild(document.createTextNode('00'));
|
|
row.appendChild(col);
|
|
}
|
|
}
|
|
}
|
|
|
|
function handleCellClick(e){
|
|
var c = e.target;
|
|
selectCell(c.addr);
|
|
}
|
|
|
|
function cellKeydown(e){
|
|
var c = e.keyCode;
|
|
if(c==13) unselectCell();
|
|
else if(c==32) selectCell((selected+1)%0x200);
|
|
else if(c==8) selectCell((selected+0x1ff)%0x200);
|
|
else if((c>=48)&&(c<58)) setCellValue(selected, getCellValue(selected)*16+c-48);
|
|
else if((c>=65)&&(c<71)) setCellValue(selected, getCellValue(selected)*16+c-55);
|
|
mWrite(selected, getCellValue(selected));
|
|
}
|
|
|
|
function setCellValue(n, val){
|
|
val%=256;
|
|
cellEl(n).val=val;
|
|
cellEl(n).innerHTML=hexByte(val);
|
|
}
|
|
|
|
function getCellValue(n){return cellEl(n).val;}
|
|
|
|
function selectCell(n){
|
|
unselectCell();
|
|
if(n>=0x200) return;
|
|
cellEl(n).style.background = '#ff8';
|
|
selected = n;
|
|
window.onkeydown = function(e){cellKeydown(e);};
|
|
}
|
|
|
|
function unselectCell(){
|
|
if(selected==undefined) return;
|
|
cellEl(selected).style.background = '#fff';
|
|
selected = undefined;
|
|
window.onkeydown = undefined;
|
|
}
|
|
|
|
function cellEl(n){
|
|
var r = n>>4;
|
|
var c = n%16;
|
|
var e = table.children[r].children[c+1];
|
|
return e;
|
|
}
|