diff --git a/doc/notes.txt b/doc/notes.txt index e8a4dec4..761af872 100644 --- a/doc/notes.txt +++ b/doc/notes.txt @@ -197,7 +197,6 @@ TODO: - Debug Browser - more stuff like 7800 display lists - don't include start/end line on platforms w/o raster timing -- memory map shows subroutine symbol even after RTS - BIOS symbols - show current tool for file diff --git a/src/ide/views.ts b/src/ide/views.ts index 49153612..1a7bc191 100644 --- a/src/ide/views.ts +++ b/src/ide/views.ts @@ -1003,8 +1003,8 @@ abstract class ProbeViewBaseBase { case ProbeFlags.VRAM_WRITE: s = "VRAM Write"; break; case ProbeFlags.INTERRUPT: s = "Interrupt"; break; case ProbeFlags.ILLEGAL: s = "Error"; break; - case ProbeFlags.SP_PUSH: s = "Stack Dec"; break; - case ProbeFlags.SP_POP: s = "Stack Inc"; break; + case ProbeFlags.SP_PUSH: s = "Stack Push"; break; + case ProbeFlags.SP_POP: s = "Stack Pop"; break; default: return ""; } if (typeof addr == 'number') s += " " + this.addr2str(addr); @@ -1104,10 +1104,19 @@ abstract class ProbeBitmapViewBase extends ProbeViewBase { y = y|0; var s = ""; var lastroutine = null; + var symstack = []; var lastcol = -1; this.redraw( (op,addr,col,row,clk,value) => { - if (op == ProbeFlags.EXECUTE) { - lastroutine = this.addr2symbol(addr) || lastroutine; + switch (op) { + case ProbeFlags.EXECUTE: + lastroutine = this.addr2symbol(addr) || lastroutine; + break; + case ProbeFlags.SP_PUSH: + symstack.push(lastroutine); + break; + case ProbeFlags.SP_POP: + lastroutine = symstack.pop(); + break; } if (row == y && col <= x) { if (col != lastcol) { @@ -1165,10 +1174,19 @@ export class AddressHeatMapView extends ProbeBitmapViewBase implements ProjectVi var pc = -1; var already = {}; var lastroutine = null; + var symstack = []; this.redraw( (op,addr,col,row,clk,value) => { - if (op == ProbeFlags.EXECUTE) { - pc = addr; - lastroutine = this.addr2symbol(addr) || lastroutine; + switch (op) { + case ProbeFlags.EXECUTE: + pc = addr; + lastroutine = this.addr2symbol(addr) || lastroutine; + break; + case ProbeFlags.SP_PUSH: + symstack.push(lastroutine); + break; + case ProbeFlags.SP_POP: + lastroutine = symstack.pop(); + break; } var key = op|pc; if (addr == a && !already[key]) {