Fixed PDP-10 debugger dump output when using the "db" command
This commit is contained in:
parent
0c88f362e2
commit
822d400f27
1 changed files with 4 additions and 4 deletions
|
|
@ -218,10 +218,10 @@ C)a.u("missing breakpoint address");else{var D=Z();if("*"!=C&&(D=ef(a,C,a.L),!D)
|
|||
fb+=",state,symbols";a.u("dump memory commands:");a.u("\tdw [a] [n] dump n words at address a");a.u("\tds [a] [n] dump n words at address a as JSON");a.u("\tdh [p] [n] dump n instructions from history position p");fb.length&&a.u("dump extension commands:\n\t"+fb)}else if("state"==oa){var Jd=wg(a.H,!0);"console"==Ca?console.log(Jd):(a.va&&(a.va.value=""),Jd&&a.u(Jd))}else if("symbols"==oa)for(var Kd=0;Kd<a.F.length;Kd++){var Ld=a.F[Kd],gb;for(gb in Ld.W)if("."!=gb.charAt(0)){var Kf=Ld.W[gb].o;
|
||||
if(void 0!==Kf){var Lf=Ld.W[gb].l;Lf&&(gb=Lf);a.u(K(a,Kf)+" "+gb)}}}else{if("d"==eb){for(db in bc)if(g[1]==db){var Mf=a.xa[db];Mf?(g.shift(),g.shift(),Mf(g)):a.u("no dump registered for "+oa);break a}oa||(eb=a.Ja||"dw")}else a.Ja=eb;if("dh"==eb){var Nf=oa,Of=Ca,Pf="",Qf=0,ka=a.S,pa=a.i;if(pa.length){var fa=+Nf||a.za,Db=+Of||10;isNaN(fa)?fa=Db:Pf="more ";fa>pa.length&&(a.u("note: only "+pa.length+" available"),fa=pa.length);ka-=fa;0>ka&&(null==pa[pa.length-1].B?(fa=ka+fa,ka=0):ka+=pa.length);var Md=
|
||||
[];"call"==Of&&(Db=1E5,Md=["CALL"]);for(void 0!==Nf&&a.u(fa+" instructions earlier:");0<Db&&ka!=a.S;){var Rf=pa[ka++];if(null==Rf.B)break;var Eb=Z(Rf.B),wh=fa--,Sf=zf(a,Eb,"history",wh);(!Md.length||0<=Sf.indexOf(Md[0]))&&a.u(Sf);Eb.lb&&(ka+=Eb.lb,Db-=Eb.lb,fa-=Eb.lb);ka>=pa.length&&(ka=0);a.za=fa;Qf++;Db--}}Qf||(a.u("no "+Pf+"history available"),a.za=void 0)}else{var hb=ef(a,oa,a.ia);if(hb){var La=0,Tf="ds"==eb;if(Ca){if("l"==Ca.charAt(0))Ca=Ca.substr(1)||vh,La=Pe(a,Ca);else{var Uf=ef(a,Ca);Uf&&
|
||||
(La=Uf.B-hb.B)}0>La&&(La=0);65536<La&&(La=65536)}var xh=a.U;hb.U&&(a.U=hb.U);for(var Vf="db"==eb?1:2,Nd=La||32,Od=1==Vf?1:4,yh=(Nd+Od-1)/Od|0||1,Ma="";yh--&&0<Nd;){for(var qa="",Pd="",oa=K(a,hb.B),Wf=Od;0<Wf--&&0<Nd--;){var Qd=a.Ia(hb,1);Tf?(qa&&(qa+=","),qa+=Qd):(qa+=hf(Qd),qa+=" ");for(var Ec=29,zh=0;1==Vf&&0<=Ec;zh++)var Fb=Qd/Math.pow(2,Ec)%Math.pow(2,7),qa=qa+K(a,Fb,7),Fb=Fb+0,Pd=Pd+(32>Fb?".":String.fromCharCode(Fb)),Ec=Ec-7}Ma&&(Ma+="\n");Ma=Tf?Ma+(qa+","):Ma+(oa+": "+qa+(0>Wf?" "+Pd:""))}Ma&&
|
||||
a.u(Ma);a.U=xh}}}}break;case "e":if("else"==g[0])break;var Xf,Yf,Zf=g[0],Rd=g[1];"e"==Zf||"ew"==Zf?(Xf=a.Ia,Yf=a.tb):Rd=null;if(null==Rd)a.u("edit memory commands:"),a.u("\tew [a] [...] edit words at address a");else{var Fc=ef(a,Rd,a.ia);if(Fc)for(var Sd=2;Sd<g.length;Sd++){var Gb=Se(a,g[Sd]);if(void 0===Gb)break;Gb=ff(Gb);a.u("changing "+K(a,Fc.B)+" from "+hf(Xf.call(a,Fc))+" to "+hf(Gb));Yf.call(a,Fc,Gb,1)}}break;case "g":a:{var $f=g[1],Ah=b;if(void 0!==$f){var Td=ef(a,$f);if(!Td)break a;gf(a,
|
||||
Td,Ah);a.Ma(a.b,Td,!0)}tf(a,!0,c)}break;case "h":a.A.N?(c||a.u("halting"),a.V()):Ob(a,!0)||c||a.u("already halted");break;case "i":if("if"==g[0]){var Ud;var Hb=b.substr(2),Hb=Ea(Hb);Se(a,Hb)?(c||a.u("true: "+Hb),Ud=!0):(c||a.u("false: "+Hb),Ud=!1);Ud||(d=!1);break}f=!0;break;case "k":var Bh=g[0];if("?"==g[1])a.u("stack trace commands:"),a.u("\tk\tshow frame addresses"),a.u("\tks\tshow symbol information");else{var Vd=0,Wd=Z(),Ib=Z();for(a.u("stack trace for "+K(a,Ib.B));10>Vd;){for(var Na=null,Ch=
|
||||
256;65536>Ib.B>>>0;){Wd.B=a.Ia(Ib,2);if(null==Ib.B||!Ch--)break;if(!(Wd.B&1)){for(var Dh=a,Gc=Wd,ag=null,Jb=Gc.B,bg=Jb,Xd=1;6>=Xd&&Jb;Xd++){if(2<Xd){Gc.B=Jb;var Hc=zf(Dh,Gc);if(0<=Hc.indexOf("JSR")){var cg=Hc.indexOf(" ");if(Jb+(Hc.indexOf(" ",cg+1)-cg-1)/2==bg){ag=Hc;break}}}Jb-=2}Gc.B=bg;if(Na=ag)break}}if(!Na||null==Na)break;var dg=null;if("ks"==Bh){var eg=Na.match(/[0-9A-F]+$/);eg&&(dg=tg(a,eg[0]))}Na=Ba(Na,50)+" ;"+(dg||"stack="+K(a,Ib.B));a.u(Na);Vd++}Vd||a.u("no return addresses found")}break;
|
||||
(La=Uf.B-hb.B)}0>La&&(La=0);65536<La&&(La=65536)}var xh=a.U;hb.U&&(a.U=hb.U);for(var Vf="db"==eb?1:2,Nd=La||32,Od=1==Vf?1:4,yh=(Nd+Od-1)/Od|0||1,Ma="";yh--&&0<Nd;){for(var qa="",Pd="",oa=K(a,hb.B),Wf=Od;0<Wf--&&0<Nd--;){var Qd=a.Ia(hb,1);Tf?(qa&&(qa+=","),qa+=Qd):(qa+=hf(Qd),qa+=" ");for(var Ec=29,zh=0;1==Vf&&0<=Ec;zh++)var Fb=Qd/Math.pow(2,Ec)%Math.pow(2,7),qa=qa+(K(a,Fb,7)+" "),Fb=Fb+0,Pd=Pd+(32>Fb?".":String.fromCharCode(Fb)),Ec=Ec-7}Ma&&(Ma+="\n");Ma=Tf?Ma+(qa+","):Ma+(oa+": "+qa+(0>Wf?" "+Pd:
|
||||
""))}Ma&&a.u(Ma);a.U=xh}}}}break;case "e":if("else"==g[0])break;var Xf,Yf,Zf=g[0],Rd=g[1];"e"==Zf||"ew"==Zf?(Xf=a.Ia,Yf=a.tb):Rd=null;if(null==Rd)a.u("edit memory commands:"),a.u("\tew [a] [...] edit words at address a");else{var Fc=ef(a,Rd,a.ia);if(Fc)for(var Sd=2;Sd<g.length;Sd++){var Gb=Se(a,g[Sd]);if(void 0===Gb)break;Gb=ff(Gb);a.u("changing "+K(a,Fc.B)+" from "+hf(Xf.call(a,Fc))+" to "+hf(Gb));Yf.call(a,Fc,Gb,1)}}break;case "g":a:{var $f=g[1],Ah=b;if(void 0!==$f){var Td=ef(a,$f);if(!Td)break a;
|
||||
gf(a,Td,Ah);a.Ma(a.b,Td,!0)}tf(a,!0,c)}break;case "h":a.A.N?(c||a.u("halting"),a.V()):Ob(a,!0)||c||a.u("already halted");break;case "i":if("if"==g[0]){var Ud;var Hb=b.substr(2),Hb=Ea(Hb);Se(a,Hb)?(c||a.u("true: "+Hb),Ud=!0):(c||a.u("false: "+Hb),Ud=!1);Ud||(d=!1);break}f=!0;break;case "k":var Bh=g[0];if("?"==g[1])a.u("stack trace commands:"),a.u("\tk\tshow frame addresses"),a.u("\tks\tshow symbol information");else{var Vd=0,Wd=Z(),Ib=Z();for(a.u("stack trace for "+K(a,Ib.B));10>Vd;){for(var Na=null,
|
||||
Ch=256;65536>Ib.B>>>0;){Wd.B=a.Ia(Ib,2);if(null==Ib.B||!Ch--)break;if(!(Wd.B&1)){for(var Dh=a,Gc=Wd,ag=null,Jb=Gc.B,bg=Jb,Xd=1;6>=Xd&&Jb;Xd++){if(2<Xd){Gc.B=Jb;var Hc=zf(Dh,Gc);if(0<=Hc.indexOf("JSR")){var cg=Hc.indexOf(" ");if(Jb+(Hc.indexOf(" ",cg+1)-cg-1)/2==bg){ag=Hc;break}}}Jb-=2}Gc.B=bg;if(Na=ag)break}}if(!Na||null==Na)break;var dg=null;if("ks"==Bh){var eg=Na.match(/[0-9A-F]+$/);eg&&(dg=tg(a,eg[0]))}Na=Ba(Na,50)+" ;"+(dg||"stack="+K(a,Ib.B));a.u(Na);Vd++}Vd||a.u("no return addresses found")}break;
|
||||
case "l":if("ln"==g[0]){tg(a,g[1],!0);break}f=!0;break;case "m":a:{var ra,sa=null,N=g[1];"?"==N&&(N=void 0);if(void 0!==N){var Da=0;if("all"==N)Da=1879046143,N=null;else if("on"==N)sa=!0,N=null;else if("off"==N)sa=!1,N=null;else{"keys"==N&&(N="key");"kbd"==N&&(N="keyboard");for(ra in bc)if(N==ra){Da=bc[ra];sa=!!(a.aa&Da);break}if(!Da){a.u("unknown message category: "+N);break a}}if(Da)if("on"==g[2])a.aa|=Da,sa=!0;else if("off"==g[2]&&(a.aa&=~Da,sa=!1,1073741824==Da)){for(var fg=1E3<=a.P.length?a.P.length-
|
||||
1E3:0;fg<a.P.length;)a.u(a.P[fg++]);a.P=[]}}var Eh=0,Kb="";for(ra in bc)if(!N||N==ra){var Fh=!!(a.aa&bc[ra]);if(null===sa||sa==Fh)Kb&&(Kb+=","),++Eh%10||(Kb+="\n\t"),"key"==ra&&(ra="keys"),Kb+=ra}void 0===N&&a.u("message commands:\n\tm [category] [on|off]\tturn categories on/off");a.u((null!==sa?sa?"messages on: ":"messages off: ":"message categories:\n\t")+(Kb||"none"));Ye(a)}break;case "p":if("print"==g[0]){ug(a,b.substr(5));break}var gg=g[0],hg="p"==gg?0:"pr"==gg?1:-1;if("?"==g[1]||0>hg)a.u("step commands:"),
|
||||
a.u("\tp\tstep over instruction"),a.u("\tpr\tstep over instruction with register update");else if(a.O)a.u("step in progress");else{var ig=Z(a.v.i);a.Ia(ig);a.O?(a.Ma(a.b,ig,!0),tf(a)||(a.H&&kd(a.H),a.O=0)):vg(a,hg?"tr":"t")}break;case "r":if("reset"==b){a.H&&a.H.reset();break}wf(a,g);break;case "s":a:switch(g[1]){case "base":if(g[2]){var ib=+g[2];if(2==ib||8==ib||10==ib||16==ib)a.U=ib;else{a.u("invalid base: "+ib);break}}a.u("default base: "+a.U);break;case "cs":var Lb;void 0!==g[3]&&(Lb=+g[3]);switch(g[2]){case "int":a.v.oa=
|
||||
|
|
|
|||
Loading…
Reference in a new issue