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>--> <!--<script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>-->
<!--</div>--> <!--</div>-->
<div id="pleaseWaitModal" class="modal fade"> <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-content">
<div class="modal-body"> <div class="modal-body">
Please wait... Please wait...
@ -257,7 +257,7 @@ if (window.location.host.endsWith('8bitworkshop.com')) {
</div> </div>
</div> </div>
<div id="videoPreviewModal" class="modal fade"> <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-content">
<div class="modal-header"> <div class="modal-header">
<h3 class="modal-title">Video Preview - Right-click to save</h3> <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>
</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 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-content">
<div class="modal-header"> <div class="modal-header">
<h3 class="modal-title">Import Project from GitHub</h3> <h3 class="modal-title">Import Project from GitHub</h3>
@ -313,7 +332,7 @@ if (window.location.host.endsWith('8bitworkshop.com')) {
</div> </div>
</div> </div>
<div id="publishGithubModal" class="modal fade"> <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-content">
<div class="modal-header"> <div class="modal-header">
<h3 class="modal-title">Publish Project on GitHub</h3> <h3 class="modal-title">Publish Project on GitHub</h3>
@ -344,7 +363,7 @@ if (window.location.host.endsWith('8bitworkshop.com')) {
</div> </div>
</div> </div>
<div id="pushGithubModal" class="modal fade"> <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-content">
<div class="modal-header"> <div class="modal-header">
<h3 class="modal-title">Push Project Changes to GitHub</h3> <h3 class="modal-title">Push Project Changes to GitHub</h3>

View File

@ -1070,15 +1070,36 @@ function resetAndDebug() {
} }
function _breakExpression() { function _breakExpression() {
console.log(platform.saveState()); var modal = $("#debugExprModal");
// TODO: better var btn = $("#debugExprSubmit");
var exprs = window.prompt("Enter break expression", lastBreakExpr); $("#debugExprInput").val(lastBreakExpr);
if (exprs) { $("#debugExprExamples").text(getDebugExprExamples());
var fn = new Function('c', 'return (' + exprs + ');').bind(platform); modal.modal('show');
setupBreakpoint(); btn.off('click').on('click', () => {
platform.runEval(fn as DebugEvalCondition); var exprs = $("#debugExprInput").val()+"";
lastBreakExpr = exprs; 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) { function getSymbolAtAddress(a : number) {