Skip to content

Commit

Permalink
ability to edit memory when paused
Browse files Browse the repository at this point in the history
  • Loading branch information
btzy committed Aug 23, 2017
1 parent ae31180 commit d0c6fe2
Show file tree
Hide file tree
Showing 3 changed files with 126 additions and 19 deletions.
23 changes: 23 additions & 0 deletions bf.css
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,9 @@ red (30%): rgb(153,0,0)
grey (25%): rgb(64,64,64)
yellow (90%): rgb(255,255,204)
green (75%): rgb(128,255,128)
green (50%): rgb(0,255,0);
*/

html, body{
Expand Down Expand Up @@ -323,6 +326,7 @@ body>.wrapper>*{
-moz-user-select: initial;
-ms-user-select: initial;
user-select: initial;
overflow:hidden;
}

#memoryview .memory-cells .cellwrapper{
Expand All @@ -339,6 +343,7 @@ body>.wrapper>*{
#memoryview .memory-cells .cellwrapper .cell{
flex:1 1 2px;
border:1px solid black;
overflow:hidden;
}

#memoryview .memory-cells .cellwrapper .cell:not(:first-child){
Expand All @@ -356,6 +361,23 @@ body>.wrapper>*{
border-left-color:red;
}

#memoryview .memory-cells .cellwrapper .cell input{
width:100%;
height:100%;
font-family:inherit;
font-size:inherit;
text-align:center;
box-sizing:border-box;
outline:none;
border:none;
background-color:rgb(128,255,128);
}

#memoryview .memory-cells .cellwrapper .cell input::selection{
background-color:rgb(0,128,0);
color:white;
}

#memoryview .memory-cells .labelwrapper{
height:14px;
display:flex;
Expand All @@ -370,6 +392,7 @@ body>.wrapper>*{
#memoryview .memory-cells .labelwrapper .label{
flex:1 1 0px;
border:1px solid transparent;
overflow:hidden;
}

#memoryview .memory-cells .labelwrapper .label:not(:first-child){
Expand Down
71 changes: 54 additions & 17 deletions bf.js
Original file line number Diff line number Diff line change
Expand Up @@ -371,28 +371,32 @@ window.addEventListener("load",function(){


continuebutton.addEventListener("click",function(){
if(execution_is_paused){
if(continuehandler&&globalPauseBuffer){
// turn off the global pauser
if(runTerminator){ // check if code is currently running
if(execution_is_paused){
if(continuehandler&&globalPauseBuffer){
// turn off the global pauser
var arr=new Uint8Array(globalPauseBuffer);
Atomics.store(arr,0,0);
undraw_execution_paused();
continuehandler();
}
}
else{
// turn on the global pauser
var arr=new Uint8Array(globalPauseBuffer);
Atomics.store(arr,0,0);
undraw_execution_paused();
continuehandler();
Atomics.store(arr,0,1);
}
}
else{
// turn on the global pauser
var arr=new Uint8Array(globalPauseBuffer);
Atomics.store(arr,0,1);
}
});
stepbutton.addEventListener("click",function(){
if(execution_is_paused){
if(continuehandler&&globalPauseBuffer){
// turn off the global pauser
var arr=new Uint8Array(globalPauseBuffer);
Atomics.store(arr,0,1);
continuehandler();
if(runTerminator){ // check if code is currently running
if(execution_is_paused){
if(continuehandler&&globalPauseBuffer){
// turn off the global pauser
var arr=new Uint8Array(globalPauseBuffer);
Atomics.store(arr,0,1);
continuehandler();
}
}
}
});
Expand Down Expand Up @@ -507,6 +511,39 @@ window.addEventListener("load",function(){
};



// memoryview buttons/functions
var cast_int_range=function(str,minval,maxval){
var k=parseInt(str);
if(k.toString()!==str)return undefined;
if(k<minval||k>maxval)return undefined;
return k;
};
memoryview.getElementsByClassName("left-arrow")[0].addEventListener("click",function(){
if(memoryviewmanager)memoryviewmanager.goSmaller();
});
memoryview.getElementsByClassName("right-arrow")[0].addEventListener("click",function(){
if(memoryviewmanager)memoryviewmanager.goLarger();
});
Array.prototype.forEach.call(memoryview.getElementsByClassName("goto"),function(el){
var el_input=el.getElementsByTagName("input")[0];
el_input.addEventListener("keyup",function(e){
if(memoryviewmanager&&e.key==="Enter"){
var str=el_input.value;
var target=cast_int_range(str,memoryviewmanager.minIndex,memoryviewmanager.maxIndex);
if(target!==undefined){
memoryviewmanager.goToIndex(target);
}
else{
alert("Cannot interpret \""+str+"\" as cell index!");
}
el_input.value="";
}
});
});



// options
var radio_interactive_yes=document.getElementById("radio-interactive-yes");
var radio_interactive_no=document.getElementById("radio-interactive-no");
Expand Down
51 changes: 49 additions & 2 deletions jelly-memoryview.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ MemoryView.prototype.refresh=function(){
for(var i=0;i<this.viewLength;++i){
labels[i].firstChild.nodeValue=(this.currentIndex+i).toString();
cells[i].firstChild.nodeValue=Atomics.load(this.data,this.currentIndex+i).toString();
cells[i].dataset.index=(this.currentIndex+i).toString();
if(this.currentIndex+i===this.ptr){
cells[i].classList.add("memory-ptr");
labels[i].classList.add("memory-ptr");
Expand All @@ -43,10 +44,56 @@ MemoryView.prototype.redraw=function(){
cellwrapper.classList.add("cellwrapper");
var labelwrapper=document.createElement("div");
labelwrapper.classList.add("labelwrapper");
var that=this;
for(var i=0;i<this.viewLength;++i){
var tdiv=document.createElement("div");
tdiv.classList.add("cell");
tdiv.appendChild(document.createTextNode(""));
var edit_handler=function(e){
var this_cell_el=e.currentTarget;
if(this_cell_el.dataset.isEditing){
return;
}
this_cell_el.dataset.isEditing="true";
var inp=document.createElement("input");
inp.type="text";
var val2=this_cell_el.firstChild.nodeValue;
inp.value=val2;
while(this_cell_el.firstChild)this_cell_el.removeChild(this_cell_el.firstChild);
this_cell_el.appendChild(inp);
var process_done_editing=function(){
inp.removeEventListener("blur",process_done_editing);
inp.removeEventListener("keyup",_proc);
var str=inp.value;
var k=parseInt(str);
if(k.toString()===str&&k>=0&&k<=255){
Atomics.store(that.data,parseInt(this_cell_el.dataset.index),k);
}
else{
alert("\""+str+"\" is not a valid value!");
str=val2;
}
while(this_cell_el.firstChild)this_cell_el.removeChild(this_cell_el.firstChild);
this_cell_el.appendChild(document.createTextNode(str));
delete this_cell_el.dataset.isEditing;
};
inp.addEventListener("blur",process_done_editing);
var _proc=function(e){
if(e.key==="Enter")process_done_editing();
};
inp.addEventListener("keyup",_proc);
inp.select();
};
tdiv.addEventListener("dblclick",edit_handler);
tdiv.addEventListener("mousedown",function(e){
if(e.button===2){
e.preventDefault();
edit_handler(e);
}
});
tdiv.addEventListener("contextmenu",function(e){
e.preventDefault();return false;
});
cellwrapper.appendChild(tdiv);
var tdiv=document.createElement("div");
tdiv.classList.add("label");
Expand Down Expand Up @@ -82,14 +129,14 @@ MemoryView.prototype.goToIndex=function(index){
};

MemoryView.prototype.goSmaller=function(){
if(this.currenIndex<=this.minIndex)return false;
if(this.currentIndex<=this.minIndex)return false;
--this.currentIndex;
this.refresh();
return true;
}

MemoryView.prototype.goLarger=function(){
if(this.currenIndex+this.viewLength>this.maxIndex)return false;
if(this.currentIndex+this.viewLength>this.maxIndex)return false;
++this.currentIndex;
this.refresh();
return true;
Expand Down

0 comments on commit d0c6fe2

Please sign in to comment.