nicer break expression dialog

This commit is contained in:
Steven Hugg 2019-05-14 09:38:11 -04:00
parent 070a67a917
commit 5f61521c6f
2 changed files with 54 additions and 14 deletions

View File

@ -244,7 +244,7 @@ if (window.location.host.endsWith('8bitworkshop.com')) {
<!--<script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>-->
<!--</div>-->
<div id="pleaseWaitModal" class="modal fade">
<div class="modal-dialog modal-lg" role="document">
<div class="modal-dialog modal-md" role="document">
<div class="modal-content">
<div class="modal-body">
Please wait...
@ -257,7 +257,7 @@ if (window.location.host.endsWith('8bitworkshop.com')) {
</div>
</div>
<div id="videoPreviewModal" class="modal fade">
<div class="modal-dialog modal-lg" role="document">
<div class="modal-dialog modal-md" role="document">
<div class="modal-content">
<div class="modal-header">
<h3 class="modal-title">Video Preview - Right-click to save</h3>
@ -294,8 +294,27 @@ if (window.location.host.endsWith('8bitworkshop.com')) {
</div>
</div>
</div>
<div id="debugExprModal" class="modal fade">
<div class="modal-dialog modal-md" role="document">
<div class="modal-content">
<div class="modal-header">
<h3 class="modal-title">Break Expression</h3>
</div>
<div class="modal-body">
<p>Enter a break expression:</p>
<p><input id="debugExprInput" size="60"></input></p>
<p>Examples:</p>
<pre id="debugExprExamples"></pre>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-primary" id="debugExprSubmit">Debug</button>
<button type="button" class="btn btn-secondary" data-dismiss="modal">Cancel</button>
</div>
</div>
</div>
</div>
<div id="importGithubModal" class="modal fade">
<div class="modal-dialog modal-lg" role="document">
<div class="modal-dialog modal-md" role="document">
<div class="modal-content">
<div class="modal-header">
<h3 class="modal-title">Import Project from GitHub</h3>
@ -313,7 +332,7 @@ if (window.location.host.endsWith('8bitworkshop.com')) {
</div>
</div>
<div id="publishGithubModal" class="modal fade">
<div class="modal-dialog modal-lg" role="document">
<div class="modal-dialog modal-md" role="document">
<div class="modal-content">
<div class="modal-header">
<h3 class="modal-title">Publish Project on GitHub</h3>
@ -344,7 +363,7 @@ if (window.location.host.endsWith('8bitworkshop.com')) {
</div>
</div>
<div id="pushGithubModal" class="modal fade">
<div class="modal-dialog modal-lg" role="document">
<div class="modal-dialog modal-md" role="document">
<div class="modal-content">
<div class="modal-header">
<h3 class="modal-title">Push Project Changes to GitHub</h3>

View File

@ -1070,15 +1070,36 @@ function resetAndDebug() {
}
function _breakExpression() {
console.log(platform.saveState());
// TODO: better
var exprs = window.prompt("Enter break expression", lastBreakExpr);
if (exprs) {
var fn = new Function('c', 'return (' + exprs + ');').bind(platform);
setupBreakpoint();
platform.runEval(fn as DebugEvalCondition);
lastBreakExpr = exprs;
}
var modal = $("#debugExprModal");
var btn = $("#debugExprSubmit");
$("#debugExprInput").val(lastBreakExpr);
$("#debugExprExamples").text(getDebugExprExamples());
modal.modal('show');
btn.off('click').on('click', () => {
var exprs = $("#debugExprInput").val()+"";
modal.modal('hide');
breakExpression(exprs);
});
}
function getDebugExprExamples() : string {
var state = platform.saveState && platform.saveState();
var cpu = platform.getCPUState && platform.getCPUState();
console.log(cpu, state);
var s = '';
if (cpu.PC) s += "c.PC == 0x" + hex(cpu.PC) + "\n";
if (cpu.SP) s += "c.SP < 0x" + hex(cpu.SP) + "\n";
if (platform.readAddress) s += "this.readAddress(0x1234) == 0x0\n";
if (platform.readVRAMAddress) s += "this.readVRAMAddress(0x1234) != 0x80\n";
if (platform.getRasterPosition) s += "this.getRasterPosition().y > 222\n";
return s;
}
function breakExpression(exprs : string) {
var fn = new Function('c', 'return (' + exprs + ');').bind(platform);
setupBreakpoint();
platform.runEval(fn as DebugEvalCondition);
lastBreakExpr = exprs;
}
function getSymbolAtAddress(a : number) {