Added another PDP-10 diagnostic (DAKAJ), which in turn required some more MACRO-10 support (eg, macro parameters with backslashes)
This commit is contained in:
parent
3f06667597
commit
881da5b19c
8 changed files with 13273 additions and 15 deletions
|
|
@ -135,8 +135,8 @@ E'T'00: MOVE AC,[XWD D1A,D1B] ;INITIALIZE AC
|
|||
ER4 AC+1,T'01 ;RESULT IN AC+1 IS INCORRECT
|
||||
JUMPL AC+2,E'T'00 ;LOOP ON ERROR SWITCH>
|
||||
|
||||
;EXIT: DROPDV ;CLOSE LOGICAL OUTPUT FILE
|
||||
; EXIT
|
||||
EXIT: ;DROPDV ;CLOSE LOGICAL OUTPUT FILE
|
||||
;EXIT
|
||||
|
||||
PGMNAM: ASCIZ/
|
||||
PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC #9 SHIFT-ROTATE [DAKAI]
|
||||
|
|
|
|||
9412
apps/pdp10/diags/klad/dakaj/DAKAJ.LST.txt
Normal file
9412
apps/pdp10/diags/klad/dakaj/DAKAJ.LST.txt
Normal file
File diff suppressed because it is too large
Load diff
1869
apps/pdp10/diags/klad/dakaj/DAKAJ.MAC.txt
Normal file
1869
apps/pdp10/diags/klad/dakaj/DAKAJ.MAC.txt
Normal file
File diff suppressed because it is too large
Load diff
1727
apps/pdp10/diags/klad/dakaj/DAKAJM.MAC.txt
Normal file
1727
apps/pdp10/diags/klad/dakaj/DAKAJM.MAC.txt
Normal file
File diff suppressed because it is too large
Load diff
135
apps/pdp10/diags/klad/dakaj/DAKAJT.MAC.txt
Normal file
135
apps/pdp10/diags/klad/dakaj/DAKAJT.MAC.txt
Normal file
|
|
@ -0,0 +1,135 @@
|
|||
;DAKAJ
|
||||
|
||||
|
||||
MCNVER==0
|
||||
DECVER==2
|
||||
|
||||
XLIST
|
||||
DEFINE NAME (MCNVER,DECVER)<
|
||||
|
||||
TITLE DAKAJ PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (10) MCNVER,DECVER
|
||||
>
|
||||
LIST
|
||||
LALL
|
||||
|
||||
NAME \MCNVER,\DECVER
|
||||
|
||||
;(LOGICAL SHIFT, ROTATE, ARITHMETIC SHIFT; SINGLE AND COMBINED)
|
||||
|
||||
;COPYRIGHT 1975,1977
|
||||
;DIGITAL EQUIPMENT CORPORATION
|
||||
;MARLBORO, MASS. 01752
|
||||
|
||||
;JOHN R. KIRCHOFF
|
||||
|
||||
LOC 137
|
||||
MCNVER,,DECVER
|
||||
|
||||
NOSYM
|
||||
SUBTTL DIAGNOSTIC PARAMETERS
|
||||
|
||||
;OPERATOR DEFINITIONS
|
||||
|
||||
OPDEF ER1 [1B8]
|
||||
OPDEF ER2 [2B8]
|
||||
OPDEF ER3 [3B8]
|
||||
OPDEF ER4 [4B8]
|
||||
OPDEF ER5 [5B8]
|
||||
OPDEF ER6 [6B8]
|
||||
OPDEF ER7 [7B8]
|
||||
OPDEF ER10 [10B8]
|
||||
OPDEF ER11 [11B8]
|
||||
OPDEF ER12 [12B8]
|
||||
OPDEF ER13 [13B8]
|
||||
|
||||
LUUO1=ERRMES
|
||||
LUUO2=ERRMES
|
||||
LUUO3=ERRMES
|
||||
LUUO4=ERRMES
|
||||
LUUO5=ERRMES
|
||||
LUUO6=ERRMES
|
||||
LUUO7=ERRMES
|
||||
LUUO10=ERRMES
|
||||
LUUO11=ERRMES
|
||||
LUUO12=ERRMES
|
||||
LUUO13=ERRMES
|
||||
;SUBROUTINE ASSEMBLY DEFINITIONS
|
||||
|
||||
DEBUG=40
|
||||
EXCASB=1
|
||||
USRASB=1
|
||||
KA10=1
|
||||
KL10=1
|
||||
KL10P0=1
|
||||
PGMEND=1
|
||||
ERDIAG=1
|
||||
|
||||
;SPECIAL FEATURE PARAMETERS
|
||||
|
||||
SADR1=START
|
||||
SADR2=START
|
||||
SADR3=START
|
||||
SADR4=START
|
||||
SADR5=JRST START
|
||||
SADR6=JRST START
|
||||
SADR7=JRST START
|
||||
SADR8=JRST START
|
||||
SADR9=JRST START
|
||||
SADR10=JRST START
|
||||
SADR11=JRST START
|
||||
|
||||
PAREA0=0
|
||||
PAREA1=0
|
||||
PAREA2=0
|
||||
PAREA3=SIXBIT/DAKAJ/
|
||||
PAREA4=SIXBIT/TMP/
|
||||
PAREA5=0
|
||||
PAREA6=0
|
||||
ITERAT==1000
|
||||
|
||||
;MACROS
|
||||
|
||||
DEFINE SAVEAC (A,B)<
|
||||
MOVEI AC+2,. ;SETUP TESTPC
|
||||
MOVEM AC+2,TESTPC
|
||||
MOVEI AC+2,<AC+2>&17 ;INFORM ERROR ROUTINE WHICH
|
||||
MOVEM AC+2,ERRLOP# ;AC IS USED FOR ITERATION>
|
||||
|
||||
DEFINE SETACS (WW,XX)<
|
||||
MOVEI AC-1,WW ;SETUP AC-1
|
||||
HRLI AC-1,WW ;FOR COMPARISION
|
||||
MOVE AC-2,<AC-1>&17 ;SETUP AC-2 FOR COMPARISON
|
||||
MOVEI AC,XX ;SETUP AC RIGHT
|
||||
HRLI AC,XX ;SETUP AC LEFT
|
||||
MOVEM AC,<AC+1>&17 ;SETUP AC2>
|
||||
;USER DEFINED MACROS
|
||||
|
||||
DEFINE SR1 (T,D1A,D1B,R1A,R1B,OP,S)<
|
||||
;THIS MACRO SHIFTS/ROTATES THE DATA SPECIFIED IN [XWD D1A,D1B] S BIT
|
||||
;POSITIONS AND COMPARES THE RESULT IN THE AC TO THE DATA SPECIFIED IN [XWD R1A,R1B]
|
||||
;IT ALSO CHECKS THAT C(AC+1) WAS NOT MODIFIED
|
||||
|
||||
E'T'00: MOVE AC,[XWD D1A,D1B] ;INITIALIZE AC
|
||||
MOVE AC+1,[XWD 741703,607417];INITIALIZE AC+1
|
||||
OP AC,S ;*SHIFT/ROTATE S BIT POSITIONS
|
||||
CAME AC,[XWD R1A,R1B] ;IS RESULT IN AC CORRECT?
|
||||
ER3 AC,T'01 ;RESULT IN AC IS INCORRECT
|
||||
CAME AC+1,[XWD 741703,607417]
|
||||
ER4 AC+1,T'01 ;C(AC+1) WAS MODIFIED INCORRECTLY
|
||||
JUMPL AC+2,E'T'00 ;LOOP ON ERROR SWITCH>
|
||||
|
||||
|
||||
DEFINE SR2 (T,D1A,D1B,D2A,D2B,R1A,R1B,R2A,R2B,OP,S)<
|
||||
;THIS MACRO PERFORMS A COMBINED SHIFT/ROTATE OPERATION ON THE
|
||||
;DATA SPECIFIED IN [XWD D1A,D1B] AND [XWD D2A,D2B] S BIT POSITIONS AND
|
||||
;COMPARES THE RESULT IN AC AND AC+1 TO THE DATA SPECIFIED IN [XWD R1A,R1B] AND
|
||||
;[XWD R2A,R2B]
|
||||
|
||||
E'T'00: MOVE AC,[XWD D1A,D1B] ;INITIALIZE AC
|
||||
MOVE AC+1,[XWD D2A,D2B] ;INITIALIZE AC+1
|
||||
OP AC,S ;*SHIFT/ROTATE COMBINED S PLACES
|
||||
CAME AC,[XWD R1A,R1B] ;IS RESULT IN AC CORRECT?
|
||||
ER3 AC,T'01 ;RESULT IN AC IS INCORRECT
|
||||
CAME AC+1,[XWD R2A,R2B] ;IS RESULT IN AC+1 CORRECT?
|
||||
ER4 AC+1,T'01 ;RESULT IN AC+1 IS INCORRECT
|
||||
JUMPL AC+2,E'T'00 ;LOOP ON ERROR SWITCH>
|
||||
60
apps/pdp10/diags/klad/dakaj/README.md
Normal file
60
apps/pdp10/diags/klad/dakaj/README.md
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
---
|
||||
layout: page
|
||||
title: PDP-10 KA10 Basic Instruction Diagnostic #10
|
||||
permalink: /apps/pdp10/diags/klad/dakaj/
|
||||
machines:
|
||||
- id: testka10
|
||||
type: pdp10
|
||||
config: /devices/pdp10/machine/ka10/test/debugger/machine.xml
|
||||
debugger: true
|
||||
commands: a DAKAJ.MAC
|
||||
---
|
||||
|
||||
PDP-10 KA10 Basic Instruction Diagnostic #10
|
||||
--------------------------------------------
|
||||
|
||||
The *PDP-10 KA10 Basic Instruction Diagnostic #10* (MAINDEC-10-DAKAJ) test code has been extracted from
|
||||
[DAKAJM.MAC](DAKAJM.MAC.txt) [[original](http://pdp-10.trailing-edge.com/klad_sources/01/klad.sources/dakajm.mac.html)] and
|
||||
[DAKAJT.MAC](DAKAJT.MAC.txt) [[original](http://pdp-10.trailing-edge.com/klad_sources/01/klad.sources/dakajt.mac.html)]
|
||||
for use with the [PDP-10 Test Machine with Debugger](/devices/pdp10/machine/ka10/test/debugger/) below.
|
||||
|
||||
Resources for this test include:
|
||||
|
||||
- [Instructions](#dakajtxt)
|
||||
- [History](#dakajhst)
|
||||
- [Source Code](#dakajmac)
|
||||
- [MACRO-10 Listing](DAKAJ.LST.txt)
|
||||
- [Additional Information](http://archive.pcjs.org/apps/pdp10/diags/klad/dakaj/DAKAJ.SEQ.txt)
|
||||
|
||||
{% include machine.html id="testka10" %}
|
||||
|
||||
The Debugger's assemble ("a") command can be used to test the new built-in
|
||||
[MACRO-10 Mini-Assembler](/modules/pdp10/lib/macro10.js), which supports a subset
|
||||
of the [MACRO-10](http://archive.pcjs.org/pubs/dec/pdp10/tops10/02_1973AsmRef_macro.pdf) assembly language.
|
||||
This command:
|
||||
|
||||
a DAKAJ.MAC
|
||||
|
||||
will automatically read the [DAKAJ.MAC](DAKAJ.MAC.txt) source file (a slightly modified copy of [DAKAJM.MAC](DAKAJM.MAC.txt)),
|
||||
assemble it, and then load the binary image at the location specified in the file.
|
||||
|
||||
---
|
||||
|
||||
DAKAJ.TXT
|
||||
---------
|
||||
|
||||
```
|
||||
```
|
||||
|
||||
DAKAJ.HST
|
||||
---------
|
||||
|
||||
|
||||
DAKAJ.MAC
|
||||
---------
|
||||
|
||||
[[Download](DAKAJ.MAC.txt)]
|
||||
|
||||
{% highlight text %}
|
||||
{% include_relative DAKAJ.MAC.txt %}
|
||||
{% endhighlight %}
|
||||
|
|
@ -1132,6 +1132,48 @@ class Macro10 {
|
|||
return sReserved;
|
||||
}
|
||||
|
||||
/**
|
||||
* getString(sValue, nConversion)
|
||||
*
|
||||
* Converts the given expression string (sValue) to one of the following, based on the conversion code (nConversion):
|
||||
*
|
||||
* 0: numeric string (default)
|
||||
* 1: SIXBIT string
|
||||
* 2: ASCII string
|
||||
*
|
||||
* If the expression cannot be evaluated, or if the requested conversion isn't recognized, the original value is returned.
|
||||
*
|
||||
* @this {Macro10}
|
||||
* @param {string} sValue
|
||||
* @param {number} [nConversion]
|
||||
* @return {string}
|
||||
*/
|
||||
getString(sValue, nConversion = 0)
|
||||
{
|
||||
var c, s;
|
||||
var value = this.parseExpression(sValue);
|
||||
if (value !== undefined) {
|
||||
var cchMax = 5;
|
||||
switch(nConversion) {
|
||||
case 0:
|
||||
sValue = this.dbg.toStrBase(value, -1);
|
||||
break;
|
||||
case 6:
|
||||
cchMax++;
|
||||
/* falls through */
|
||||
case 7:
|
||||
s = "";
|
||||
while (value && cchMax--) {
|
||||
c = value & (Math.pow(2, nConversion) - 1);
|
||||
s = String.fromCharCode(c + (nConversion == 6? 0x20 : 0)) + s;
|
||||
value = Math.trunc(value / Math.pow(2, nConversion));
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
return sValue;
|
||||
}
|
||||
|
||||
/**
|
||||
* getSymbol(sOperands)
|
||||
*
|
||||
|
|
@ -1163,7 +1205,20 @@ class Macro10 {
|
|||
sOperands = sOperands.trim();
|
||||
var sOperand = this.getExpression(sOperands);
|
||||
if (!sOperand) break;
|
||||
aValues.push(sOperand);
|
||||
var sValue = sOperand;
|
||||
if (sOperand[0] == '\\') {
|
||||
var cchPrefix = 1;
|
||||
var nConversion = 0;
|
||||
if (sOperand[1] == "'") {
|
||||
cchPrefix++;
|
||||
nConversion = 6;
|
||||
} else if (sOperand[1] == '"') {
|
||||
cchPrefix++;
|
||||
nConversion = 7;
|
||||
}
|
||||
sValue = this.getString(sOperand.substr(cchPrefix), nConversion);
|
||||
}
|
||||
aValues.push(sValue);
|
||||
sOperands = sOperands.substr(sOperand.length + 1);
|
||||
}
|
||||
return aValues;
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ function ka(a,b){function c(){}c.prototype=b.prototype;a.prototype=new c;a.proto
|
|||
la("Math.trunc",function(a){return a?a:function(a){a=Number(a);if(isNaN(a)||Infinity===a||-Infinity===a||!a)return a;var b=Math.floor(Math.abs(a));return 0>a?-b:b}});la("Math.log2",function(a){return a?a:function(a){return Math.log(a)/Math.LN2}});
|
||||
var ma={sc:0,Lb:1,uc:2,vc:3,wc:4,xc:5,yc:6,zc:7,xb:8,Ac:9,Mb:10,Bc:11,Cc:12,Nb:13,Dc:14,Ec:15,Fc:16,Gc:17,Hc:18,Ic:19,Jc:20,Kc:21,Lc:22,Mc:23,Nc:24,Oc:25,Pc:26," ":32,"!":33,'"':34,"#":35,$:36,"%":37,"&":38,"'":39,"(":40,")":41,"*":42,"+":43,",":44,"-":45,".":46,"/":47,0:48,1:49,2:50,3:51,4:52,5:53,6:54,7:55,8:56,9:57,":":58,";":59,"<":60,"=":61,">":62,"?":63,"@":64,wb:65,rc:66,tc:67,Qc:68,E:69,Rc:70,Sc:71,Tc:72,Uc:73,Vc:74,Wc:75,Xc:76,Yc:77,Zc:78,$c:79,ad:80,Q:81,bd:82,cd:83,dd:84,ed:85,fd:86,gd:87,
|
||||
hd:88,jd:89,Pb:90,"[":91,"\\":92,"]":93,"^":94,_:95,"`":96,kd:97,ld:98,md:99,d:100,e:101,nd:102,od:103,pd:104,qd:105,rd:106,k:107,sd:108,td:109,n:110,ud:111,p:112,q:113,r:114,vd:115,t:116,xd:117,yd:118,zd:119,x:120,y:121,z:122,"{":123,"|":124,"}":125,"~":126,Ob:127};
|
||||
function sa(a,b){var c;if(a){b||(b=10);var d,e,f=0<a.indexOf(",");f&&(a=a.replace(/,/g,""));d=e=a.charAt(0);"#"==e?(b=8,e=""):"$"==e&&(b=16,e="");d!=e?a=a.substr(1):(d=e=a.substr(0,2),"0b"==e&&f||"^B"==e?(b=2,e=""):"0o"==e||"^O"==e?(b=8,e=""):"^D"==e?(b=10,e=""):"0x"==e&&(b=16,e=""),d!=e&&(a=a.substr(2)));d=e=a.slice(-1);"Y"==e||"y"==e?(b=2,e=""):"."==e?(b=10,e=""):"H"==e||"h"==e?(b=16,e=""):"K"==e?e="000":"M"==e?e="000000":"G"==e&&(e="000000000");d!=e&&(a=a.slice(0,-1)+e);var g;d=0;if(e=a.match(/(-?[0-9]+)B([0-9]*)/))a=
|
||||
function na(a,b){var c;if(a){b||(b=10);var d,e,f=0<a.indexOf(",");f&&(a=a.replace(/,/g,""));d=e=a.charAt(0);"#"==e?(b=8,e=""):"$"==e&&(b=16,e="");d!=e?a=a.substr(1):(d=e=a.substr(0,2),"0b"==e&&f||"^B"==e?(b=2,e=""):"0o"==e||"^O"==e?(b=8,e=""):"^D"==e?(b=10,e=""):"0x"==e&&(b=16,e=""),d!=e&&(a=a.substr(2)));d=e=a.slice(-1);"Y"==e||"y"==e?(b=2,e=""):"."==e?(b=10,e=""):"H"==e||"h"==e?(b=16,e=""):"K"==e?e="000":"M"==e?e="000000":"G"==e&&(e="000000000");d!=e&&(a=a.slice(0,-1)+e);var g;d=0;if(e=a.match(/(-?[0-9]+)B([0-9]*)/))a=
|
||||
e[1],d=35-((e[2]||35)&255);e=a;((f=b)&&10!=f?16==f?e.match(/^-?[0-9a-f]+$/i):8==f?e.match(/^-?[0-7]+$/):2==f&&e.match(/^-?[01]+$/):e.match(/^-?[0-9]+$/))&&!isNaN(g=parseInt(a,b))&&(d&&(0>g&&(g+=Math.pow(2,36)),g=0<d?g*Math.pow(2,d):Math.trunc(g/Math.pow(2,-d))),c=g)}return c}
|
||||
function ta(a,b,c,d,e){e=void 0===e?0:e;var f="";isNaN(a)?a=null:null!=a&&(0>a&&-1<a&&(a=-1),0>a&&(a+=Math.pow(b,c)),a>=Math.pow(b,c)&&(c=Math.ceil(Math.log(a)/Math.log(b))));for(var g=e||-1;0<c--;){g||(f=","+f,g=e);if(null==a)f="?"+f;else{var h=a%b,h=h+(0<=h&&9>=h?48:55),f=String.fromCharCode(h)+f;a=Math.trunc(a/b)}g--}return(void 0===d?"":d)+f}function ua(a,b,c){b?12<b&&(b=12):(b=Math.abs(a),b=262143>=b?6:16777215>=b?8:12);return ta(a,8,b,c?"0o":"")}
|
||||
function va(a,b){b?11<b&&(b=11):b=99999>=Math.abs(a)?5:11;return ta(a,10,b)}function n(a,b,c){b?9<b&&(b=9):(b=Math.abs(a),b=65535>=b?4:4294967295>=b?8:9);return ta(a,16,b,c?"0x":"")}function wa(a){var b=a,c=a.lastIndexOf("/");0<=c&&(b=a.substr(c+1));c=b.indexOf("&");0<c&&(b=b.substr(0,c));return b}function xa(a){var b="",c=a.lastIndexOf(".");0<=c&&(b=a.substr(c+1).toLowerCase());return b}function ya(a,b){return-1!==a.indexOf(b,a.length-b.length)}
|
||||
|
|
@ -69,7 +69,7 @@ set:this.lc};Mb(this)}ka(bc,r);m=bc.prototype;m.reset=function(a){this.stop();a&
|
|||
m.ta=function(a,b,c,d){if(this.H&&this.H.ta(a,b,c,d)||this.v&&this.v.ta(a,b,c,d)||this.D&&this.D.ta(a,b,c,d))return!0;switch(b){case "PC":return this.J[b]=c,this.L++,!0;default:return"led"==a||"rled"==a?(this.J[b]=c,this.C[b]=d?1:0,this.L++,!0):"switch"==a?(void 0===this.b[b]&&(this.b[b]=[d?1:0,d?1:0]),this.J[b]=c,a=c.parentElement||c,a=a.parentElement||a,a.onmousedown=function(a,b){return function(){ec(a,b)}}(this,b),a.onmouseup=a.onmouseout=function(a,b){return function(){fc(a,b)}}(this,b),a.ontouchstart=
|
||||
function(a,b){return function(c){ec(a,b);c.preventDefault()}}(this,b),a.ontouchend=function(a,b){return function(){fc(a,b)}}(this,b),!0):r.prototype.ta.call(this,a,b,c,d)}};m.La=function(a,b,c,d){this.H=a;this.G=b;this.v=c;this.D=d;gc(this);hc(this)};m.Ba=function(a,b){if(!b)if(this.V&&ic(),!a)this.reset(!0);else if(!this.restore(a))return!1;return!0};m.sa=function(a){return a?this.save():!0};m.save=function(){var a=new F(this);a.set(0,[this.i,this.w,this.j]);return a.data()};
|
||||
m.restore=function(a){if(a=a[0])jc(this,this.i=a[0]),dc(this,this.w=a[1]),kc(this,a[2]);return!0};m.ic=function(){for(var a in this.b){var b=this.b[a];b[1]=b[0]}hc(this);return!0};function lc(a,b,c){if(a=a.J[b])a.style.backgroundColor=c?"#ff0000":"#000000"}function gc(a,b){for(var c in a.C)lc(a,c,null!=b?b:a.C[c])}function mc(a,b,c){if(a=a.J[b])a.style.marginTop=c?"0px":"20px",a.style.backgroundColor=c?"#00ff00":"#228B22"}function hc(a){for(var b in a.b)mc(a,b,a.b[b][1])}
|
||||
m.Tb=function(a,b,c){if(ec(this,b)){if(c){var d=this;setTimeout(function(){fc(d,b);a&&a()},+c);return!1}fc(this,b)}return!0};m.lc=function(a,b){if("SR"==a)return kc(this,sa(b,8));var c=this.b[a];return c?(c[1]=+b?1:0,mc(this,a,c[1]),!0):!1};m.mc=function(a){return ec(this,a)?(fc(this,a),!0):!1};function ec(a,b){var c=a.b[b];return c?(mc(a,b,c[1]=1-c[1]),c[3]=!0,c[4]&&c[4].call(a,c[1],c[5]),b!=nc&&(a.P=b==oc,a.S=b==pc),!0):!1}
|
||||
m.Tb=function(a,b,c){if(ec(this,b)){if(c){var d=this;setTimeout(function(){fc(d,b);a&&a()},+c);return!1}fc(this,b)}return!0};m.lc=function(a,b){if("SR"==a)return kc(this,na(b,8));var c=this.b[a];return c?(c[1]=+b?1:0,mc(this,a,c[1]),!0):!1};m.mc=function(a){return ec(this,a)?(fc(this,a),!0):!1};function ec(a,b){var c=a.b[b];return c?(mc(a,b,c[1]=1-c[1]),c[3]=!0,c[4]&&c[4].call(a,c[1],c[5]),b!=nc&&(a.P=b==oc,a.S=b==pc),!0):!1}
|
||||
function fc(a,b){var c=a.b[b];c&&(c[2]&&c[3]&&(mc(a,b,c[1]=c[0]),c[4]&&c[4].call(a,c[1],c[5])),c[3]=!1)}m.cc=function(a){a||this.v.A.O||(G(this.v,this.i),this.b[qc]&&this.b[qc][1]&&rc(this.v))};m.dc=function(){};m.Yb=function(a){a||this.v.W()};
|
||||
m.Wb=function(a){if(!a&&!this.v.A.O)if(this.b[qc]&&this.b[qc][1])rc(this.v);else{if((a=this.D)&&!Nb(a,!0))Ob(a,!0),sc(a,0,null),Ob(a,!1);else try{var b=this.v.$a(1);0<b&&(tc(this.v,b),uc(this.v,b,!0),vc(this.v,b))}catch(c){"number"!=typeof c&&yb(this.v,c.stack||c.message)}this.stop();this.H&&J(this.H)}};m.Xb=function(a){a&&!this.v.A.O&&(this.P&&wc(this),a=dc(this,this.w=this.j),this.U==cc?xc(this.G,this.i,a):this.v.g(this.i,a))};
|
||||
m.Zb=function(a){if(!a&&!this.v.A.O){var b;this.S&&wc(this);this.U==cc?b=yc(this.G,this.i):b=this.v.f(this.i);dc(this,this.w=b)}};m.ac=function(a){a||this.v.A.O||jc(this,this.j)};m.$b=function(a){a?(this.F=!0,gc(this,!0)):(this.F=!1,gc(this),kc(this,0))};m.bc=function(a,b){this.j=a?this.j|1<<b:this.j&~(1<<b)};function wc(a){var b=1,c=a.G.j;a.b[nc]&&a.b[nc][1]||(b=-b);jc(a,a.i&~c|a.i+b&c)}
|
||||
|
|
@ -176,7 +176,7 @@ function Oe(a,b,c,d,e,f){var g,h,k,l=!1,p=0,u=[],D=[],H=a.T;for(a.T=e;c<d;){h=b[
|
|||
k){p=p<<2|3;continue}}l=!0;break}if(void 0===p)if(null==a.ka&&f)a.ka=h,p=0;else{l=!0;f=!f;break}u.push(Y(a,p));if(" "==k)if(c<b.length-1&&!b[c])c++,k=b[c++];else{l=!0;break}if(!k)break;p="<"==a.U[0]?Qe:Re;if(!p[k]){l=!0;break}D.length&&p[k]<=p[D[D.length-1]]&&Ne(a,u,D,1);D.push(k);a.T="^_"==k?10:e;p=0}if(l||!Ne(a,u,D)||1!=u.length)l=!0;l?!1===f&&a.u("parse error ("+(h||k)+")"):g=u.pop();a.T=H;return g}
|
||||
function Se(a,b,c,d,e,f){for(var g;0<=(g=b.indexOf(c));){for(var h=0,k=g+1,l=e;k<b.length;){var p=b[k++];if(p==c){l=-1;break}if(!l)break;l--;p=p.charCodeAt(0);7==d?p&=127:p=p-32&63;h=Y(a,h*Math.pow(2,d)+p,d*e,!0)}if(0<=l){!1===f&&a.u("parse error ("+b+")");break}else b=b.substr(0,g)+K(a,h,-1)+b.substr(k)}return b}
|
||||
function Te(a,b,c){var d=void 0;a.ka=null;if(b){"{"!=a.U[0]&&(b=b.split(a.U[0]).join("{").split(a.U[1]).join("}"));b=Se(a,b,'"',7,5,c);if(!b)return d;b=Se(a,b,"'",6,6,c);if(!b)return d;b=b.replace(/(^|[^A-Z0-9$%.])([0-9]+)B/,"$1$2^_").replace(/\s+/g," ");b=b.split(/({|}|\|\||&&|\||\^!|\^B|\^O|\^D|\^L|\^-|~|\^_|_|&|!=|!|==|>=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*| )/);d=Oe(a,b,0,b.length,a.T,c);void 0!==d&&!1===c&&Ue(a,null,d)}return d}
|
||||
function Pe(a,b,c,d,e){e=void 0===e?0:e;var f;if(null!=b)if(f=a.sb(b),0<=f?f=a.tb(f):(f=a.I[b],null==f&&(f=sa(b,1<b.length?a.T:10))),null!=f){for(;e;){switch(e&3){case 1:f=-Y(a,f);break;case 2:f=Me(a,f,-1);break;case 3:for(b=35;0<=b&&!Ke(a,f,Math.pow(2,b));)b--;f=35-b}e>>>=2}f=Y(a,f)}else d||a.u("invalid "+(c?c:"value")+": "+b);else d||a.u("missing "+(c||"value"));return f}
|
||||
function Pe(a,b,c,d,e){e=void 0===e?0:e;var f;if(null!=b)if(f=a.sb(b),0<=f?f=a.tb(f):(f=a.I[b],null==f&&(f=na(b,1<b.length?a.T:10))),null!=f){for(;e;){switch(e&3){case 1:f=-Y(a,f);break;case 2:f=Me(a,f,-1);break;case 3:for(b=35;0<=b&&!Ke(a,f,Math.pow(2,b));)b--;f=35-b}e>>>=2}f=Y(a,f)}else d||a.u("invalid "+(c?c:"value")+": "+b);else d||a.u("missing "+(c||"value"));return f}
|
||||
function Ue(a,b,c){var d,e=!1;void 0!==c&&(e=!0,d=8==a.T?K(a,c,a.L,8,1)+" "+c+".":K(a,c,a.L,16,1)+" "+K(a,c,a.L,8,1)+" "+K(a,c,a.L,2,32>=a.L?8:6)+" "+c+".",32<=c&&127>c&&(d+=" '"+String.fromCharCode(c)+"'"));a.u((null!=b?b+": ":"")+d);return e}function Ve(a){var b=a.I;a.I={};return b}function We(a,b){if(b)return Ue(a,b,a.I[b]);var c=0;for(b in a.I)Ue(a,b,a.I[b]),c++;return 0<c}
|
||||
function K(a,b,c,d,e){c=void 0===c?0:c;e=void 0===e?0:e;switch((void 0===d?0:d)||a.T){case 2:(a=0<c?c:0)?36<a&&(a=36):(a=Math.abs(b),a=255>=a?8:262143>=a?18:36);b=ta(b,2,a,"",e);break;case 8:b=ua(b,0<c?(c+2)/3|0:0,!!e);break;case 10:b=va(b,0<c?Math.ceil(.3*c):0);break;default:b=n(b,0<c?c+3>>2:0,!!e)}0>c?c=b.replace(/^0+([0-9A-F]+)$/i,"$1"):c=b;return c}
|
||||
var Re={"||":5,"&&":6,"!":7,"|":7,"^!":8,"&":9,"!=":10,"==":10,">=":11,">":11,"<=":11,"<":11,">>>":12,">>":12,"<<":12,"-":13,"+":13,"%":14,"/":14,"*":14,_:19,"^_":19,"{":20,"}":20},Qe={"||":5,"&&":6,"!=":10,"==":10,">=":11,">":11,"<=":11,"<":11,">>>":12,">>":12,"<<":12,"-":13,"+":13,"%":14,"/":14,"*":14,"!":15,"|":15,"^!":15,"&":15,_:19,"^_":19,"{":20,"}":20},Le=Math.pow(2,32);
|
||||
|
|
@ -218,16 +218,16 @@ function xg(a,b,c){if("?"==c)a.u("trace commands:"),a.u("\tt [#]\ttrace # instr
|
|||
function zf(a,b,c,d){b=ff(a,b,a.M);void 0===d&&(d=1);var e=256;if(void 0!==c)if("l"==c.charAt(0))c=Pe(a,c.substr(1)),null!=c&&(d=c);else{d=ff(a,c);if(d.B<b.B)return;e=d.B-b.B;if(256<e){a.u("range too large");return}d=-1}for(c=0;0<e&&d--;){var f=Nb(a,!1)||a.P?a.C:null,g=null!=f?"cycles":null,h=pg(a,b),k=b.B;if(h[0]&&d&&(!c&&d||0>h[0].indexOf("+"))){var l=h[0]+":";h[2]&&(l+=" "+h[2]);a.u(l)}h[3]&&(g=h[3],f=null);h=a.ja;l=b;h.B=l.B;h.eb=l.eb;h.ra=l.ra;h.T=l.T;a.u(Bf(a,b,g,f));e-=b.B-k;c++}}
|
||||
function ng(a,b,c){var d=!0;try{b.length&&"end"!=b?c||a.u(xf+b):(a.V&&(a.u("ended assemble at "+K(a,a.ja.B,18)),a.V=!1),b="");var e=b.charAt(0);if('"'==e||"'"==e)return!0;a.ba=null;if(Lb(a)&&0<b.length){a.V&&(b="a "+K(a,a.ja.B,18)+" "+b);var f=!1,g=b.replace(/ +/g," ").split(" ");g[0]=g[0].toLowerCase();if(g&&g.length)for(var h=g[0],k=h.charAt(0),l=1;l<h.length;l++){var p=h.charAt(l);if("?"==k||"r"==k||"a">p||"z"<p){g[0]=h.substr(l);g.unshift(h.substr(0,l));break}}switch(g[0].charAt(0)){case "a":d=
|
||||
sg(a,g);break;case "b":var u=g[0],D=g[1],H=b;if("?"==D)a.u("breakpoint commands:"),a.u("\tbp #\tset exec breakpoint"),a.u("\tbr #\tset read breakpoint"),a.u("\tbw #\tset write breakpoint"),a.u("\tbc #\tclear breakpoint (* to clear all)"),a.u("\tbl\tlist all breakpoints"),a.u("\tbn [#]\tbreak after # instruction(s)");else{var P=u.charAt(1);if("l"==P){var eb;eb=0+lg(a,a.b);eb+=lg(a,a.N);(eb+=lg(a,a.K))||a.u("no breakpoints")}else if("n"==P){var zb=+D||0;D&&(a.qa=zb);a.u("break after "+zb+" instruction(s)")}else if(void 0===
|
||||
D)a.u("missing breakpoint address");else{var I="*"==D?Z():ff(a,D,a.M);"c"==P?null==I.B?(Ye(a),a.u("all breakpoints cleared")):Kf(a,a.b,I)||Kf(a,a.N,I)||Kf(a,a.K,I)||a.u("breakpoint missing: "+K(a,I.B,18)):null!=I.B&&(hf(a,I,H),"p"==P?a.Ra(a.b,I):"r"==P?a.Ra(a.N,I):"w"==P?a.Ra(a.K,I):a.u("unknown breakpoint command: "+P))}}break;case "c":a.za&&(a.za.value="");break;case "d":a:{var fb,gb=g[0],na=g[1],Da=g[2],Eh=g[3];if("?"==na){var hb="";for(fb in ac)a.xa[fb]&&(hb&&(hb+=","),hb+=fb);hb+=",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");hb.length&&a.u("dump extension commands:\n\t"+hb)}else if("state"==na){var Kd=yg(a.H,!0);"console"==Da?console.log(Kd):(a.za&&(a.za.value=""),Kd&&a.u(Kd))}else if("symbols"==na)for(var Ld=0;Ld<a.F.length;Ld++){var Md=a.F[Ld],ib;for(ib in Md.Y)if("."!=ib.charAt(0)){var Mf=Md.Y[ib].o;if(void 0!==Mf){var Nf=
|
||||
Md.Y[ib].l;Nf&&(ib=Nf);a.u(K(a,Mf,18)+" "+ib)}}}else{if("d"==gb){for(fb in ac)if(g[1]==fb){var Of=a.xa[fb];Of?(g.shift(),g.shift(),Of(g)):a.u("no dump registered for "+na);break a}na||(gb=a.Oa||"dw")}else a.Oa=gb;if("dh"==gb){var Pf=na,Qf=Da,Rf="",Sf=0,ja=a.X,oa=a.i;if(oa.length){var ea=+Pf||a.Ea,Bb=+Qf||10;isNaN(ea)?ea=Bb:Rf="more ";ea>oa.length&&(a.u("note: only "+oa.length+" available"),ea=oa.length);ja-=ea;0>ja&&(null==oa[oa.length-1].B?(ea=ja+ea,ja=0):ja+=oa.length);var Nd=[];"call"==Qf&&(Bb=
|
||||
1E5,Nd=["CALL"]);for(void 0!==Pf&&a.u(ea+" instructions earlier:");0<Bb&&ja!=a.X;){var Tf=oa[ja++];if(null==Tf.B)break;var Cb=Z(Tf.B),Fh=ea--,Uf=Bf(a,Cb,"history",Fh);(!Nd.length||0<=Uf.indexOf(Nd[0]))&&a.u(Uf);Cb.qb&&(ja+=Cb.qb,Bb-=Cb.qb,ea-=Cb.qb);ja>=oa.length&&(ja=0);a.Ea=ea;Sf++;Bb--}}Sf||(a.u("no "+Rf+"history available"),a.Ea=void 0)}else{var Ma=0,Vf="ds"==gb,Db=ff(a,na,a.pa);Da&&("l"==Da.charAt(0)?(Da=Da.substr(1)||Eh,Ma=Pe(a,Da)):Ma=ff(a,Da).B-Db.B,0>Ma&&(Ma=0),65536<Ma&&(Ma=65536));var Gh=
|
||||
a.T;Db.T&&(a.T=Db.T);for(var Wf="db"==gb?1:2,Od=Ma||32,Pd=1==Wf?1:4,Hh=(Od+Pd-1)/Pd|0||1,Na="";Hh--&&0<Od;){for(var pa="",Qd="",na=K(a,Db.B,18),Xf=Pd;0<Xf--&&0<Od--;){var Rd=a.Ma(Db,1);Vf?(pa&&(pa+=","),pa+=Rd):(pa+=jf(a,Rd),pa+=" ");for(var Hc=29,Ih=0;1==Wf&&0<=Hc;Ih++)var Eb=Rd/Math.pow(2,Hc)%Math.pow(2,7),pa=pa+(K(a,Eb,7)+" "),Eb=Eb+0,Qd=Qd+(32>Eb?".":String.fromCharCode(Eb)),Hc=Hc-7}Na&&(Na+="\n");Na=Vf?Na+(pa+","):Na+(na+": "+pa+(0>Xf?" "+Qd:""))}Na&&a.u(Na);a.T=Gh}}}break;case "e":if("else"==
|
||||
D)a.u("missing breakpoint address");else{var I="*"==D?Z():ff(a,D,a.M);"c"==P?null==I.B?(Ye(a),a.u("all breakpoints cleared")):Kf(a,a.b,I)||Kf(a,a.N,I)||Kf(a,a.K,I)||a.u("breakpoint missing: "+K(a,I.B,18)):null!=I.B&&(hf(a,I,H),"p"==P?a.Ra(a.b,I):"r"==P?a.Ra(a.N,I):"w"==P?a.Ra(a.K,I):a.u("unknown breakpoint command: "+P))}}break;case "c":a.za&&(a.za.value="");break;case "d":a:{var fb,gb=g[0],oa=g[1],Da=g[2],Eh=g[3];if("?"==oa){var hb="";for(fb in ac)a.xa[fb]&&(hb&&(hb+=","),hb+=fb);hb+=",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");hb.length&&a.u("dump extension commands:\n\t"+hb)}else if("state"==oa){var Kd=yg(a.H,!0);"console"==Da?console.log(Kd):(a.za&&(a.za.value=""),Kd&&a.u(Kd))}else if("symbols"==oa)for(var Ld=0;Ld<a.F.length;Ld++){var Md=a.F[Ld],ib;for(ib in Md.Y)if("."!=ib.charAt(0)){var Mf=Md.Y[ib].o;if(void 0!==Mf){var Nf=
|
||||
Md.Y[ib].l;Nf&&(ib=Nf);a.u(K(a,Mf,18)+" "+ib)}}}else{if("d"==gb){for(fb in ac)if(g[1]==fb){var Of=a.xa[fb];Of?(g.shift(),g.shift(),Of(g)):a.u("no dump registered for "+oa);break a}oa||(gb=a.Oa||"dw")}else a.Oa=gb;if("dh"==gb){var Pf=oa,Qf=Da,Rf="",Sf=0,ja=a.X,pa=a.i;if(pa.length){var ea=+Pf||a.Ea,Bb=+Qf||10;isNaN(ea)?ea=Bb:Rf="more ";ea>pa.length&&(a.u("note: only "+pa.length+" available"),ea=pa.length);ja-=ea;0>ja&&(null==pa[pa.length-1].B?(ea=ja+ea,ja=0):ja+=pa.length);var Nd=[];"call"==Qf&&(Bb=
|
||||
1E5,Nd=["CALL"]);for(void 0!==Pf&&a.u(ea+" instructions earlier:");0<Bb&&ja!=a.X;){var Tf=pa[ja++];if(null==Tf.B)break;var Cb=Z(Tf.B),Fh=ea--,Uf=Bf(a,Cb,"history",Fh);(!Nd.length||0<=Uf.indexOf(Nd[0]))&&a.u(Uf);Cb.qb&&(ja+=Cb.qb,Bb-=Cb.qb,ea-=Cb.qb);ja>=pa.length&&(ja=0);a.Ea=ea;Sf++;Bb--}}Sf||(a.u("no "+Rf+"history available"),a.Ea=void 0)}else{var Ma=0,Vf="ds"==gb,Db=ff(a,oa,a.pa);Da&&("l"==Da.charAt(0)?(Da=Da.substr(1)||Eh,Ma=Pe(a,Da)):Ma=ff(a,Da).B-Db.B,0>Ma&&(Ma=0),65536<Ma&&(Ma=65536));var Gh=
|
||||
a.T;Db.T&&(a.T=Db.T);for(var Wf="db"==gb?1:2,Od=Ma||32,Pd=1==Wf?1:4,Hh=(Od+Pd-1)/Pd|0||1,Na="";Hh--&&0<Od;){for(var qa="",Qd="",oa=K(a,Db.B,18),Xf=Pd;0<Xf--&&0<Od--;){var Rd=a.Ma(Db,1);Vf?(qa&&(qa+=","),qa+=Rd):(qa+=jf(a,Rd),qa+=" ");for(var Hc=29,Ih=0;1==Wf&&0<=Hc;Ih++)var Eb=Rd/Math.pow(2,Hc)%Math.pow(2,7),qa=qa+(K(a,Eb,7)+" "),Eb=Eb+0,Qd=Qd+(32>Eb?".":String.fromCharCode(Eb)),Hc=Hc-7}Na&&(Na+="\n");Na=Vf?Na+(qa+","):Na+(oa+": "+qa+(0>Xf?" "+Qd:""))}Na&&a.u(Na);a.T=Gh}}}break;case "e":if("else"==
|
||||
g[0])break;var Yf,Zf,$f=g[0],Sd=g[1];"e"==$f||"ew"==$f?(Yf=a.Ma,Zf=a.yb):Sd=null;if(null==Sd)a.u("edit memory commands:"),a.u("\tew [a] [...] edit words at address a");else for(var Td=ff(a,Sd,a.pa),Ud=2;Ud<g.length;Ud++){var Fb=Te(a,g[Ud]);if(void 0===Fb)break;Fb=gf(Fb);a.u("changing "+K(a,Td.B,18)+" from "+jf(a,Yf.call(a,Td))+" to "+jf(a,Fb));Zf.call(a,Td,Fb,1)}break;case "g":var ag=g[1],Jh=b;if(void 0!==ag){var bg=ff(a,ag);hf(a,bg,Jh);a.Ra(a.b,bg,!0)}vf(a,!0,c);break;case "h":a.A.O?(c||a.u("halting"),
|
||||
a.W()):Nb(a,!0)||c||a.u("already halted");break;case "i":if("if"==g[0]){var Vd;var Gb=b.substr(2),Gb=Ca(Gb);Te(a,Gb)?(c||a.u("true: "+Gb),Vd=!0):(c||a.u("false: "+Gb),Vd=!1);Vd||(d=!1);break}f=!0;break;case "k":var Kh=g[0];if("?"==g[1])a.u("stack trace commands:"),a.u("\tk\tshow frame addresses"),a.u("\tks\tshow symbol information");else{var Wd=0,Xd=Z(),Hb=Z();for(a.u("stack trace for "+K(a,Hb.B,18));10>Wd;){for(var Oa=null,Lh=256;65536>Hb.B>>>0;){Xd.B=a.Ma(Hb,2);if(null==Hb.B||!Lh--)break;if(!(Xd.B&
|
||||
1)){for(var Mh=a,Ic=Xd,cg=null,Ib=Ic.B,dg=Ib,Yd=1;6>=Yd&&Ib;Yd++){if(2<Yd){Ic.B=Ib;var Jc=Bf(Mh,Ic);if(0<=Jc.indexOf("JSR")){var eg=Jc.indexOf(" ");if(Ib+(Jc.indexOf(" ",eg+1)-eg-1)/2==dg){cg=Jc;break}}}Ib-=2}Ic.B=dg;if(Oa=cg)break}}if(!Oa||null==Oa)break;var fg=null;if("ks"==Kh){var gg=Oa.match(/[0-9A-F]+$/);gg&&(fg=vg(a,gg[0]))}Oa=Ba(Oa,50)+" ;"+(fg||"stack="+K(a,Hb.B,18));a.u(Oa);Wd++}Wd||a.u("no return addresses found")}break;case "l":if("ln"==g[0]){vg(a,g[1],!0);break}f=!0;break;case "m":a:{var qa,
|
||||
ra=null,M=g[1];"?"==M&&(M=void 0);if(void 0!==M){var Ea=0;if("all"==M)Ea=1879046143,M=null;else if("on"==M)ra=!0,M=null;else if("off"==M)ra=!1,M=null;else{"keys"==M&&(M="key");"kbd"==M&&(M="keyboard");for(qa in ac)if(M==qa){Ea=ac[qa];ra=!!(a.ca&Ea);break}if(!Ea){a.u("unknown message category: "+M);break a}}if(Ea)if("on"==g[2])a.ca|=Ea,ra=!0;else if("off"==g[2]&&(a.ca&=~Ea,ra=!1,1073741824==Ea)){for(var hg=1E3<=a.S.length?a.S.length-1E3:0;hg<a.S.length;)a.u(a.S[hg++]);a.S=[]}}var Nh=0,Jb="";for(qa in ac)if(!M||
|
||||
M==qa){var Oh=!!(a.ca&ac[qa]);if(null===ra||ra==Oh)Jb&&(Jb+=","),++Nh%10||(Jb+="\n\t"),"key"==qa&&(qa="keys"),Jb+=qa}void 0===M&&a.u("message commands:\n\tm [category] [on|off]\tturn categories on/off");a.u((null!==ra?ra?"messages on: ":"messages off: ":"message categories:\n\t")+(Jb||"none"));Ze(a)}break;case "p":if("print"==g[0]){wg(a,b.substr(5));break}var ig=g[0],jg="p"==ig?0:"pr"==ig?1:-1;if("?"==g[1]||0>jg)a.u("step commands:"),a.u("\tp\tstep over instruction"),a.u("\tpr\tstep over instruction with register update");
|
||||
1)){for(var Mh=a,Ic=Xd,cg=null,Ib=Ic.B,dg=Ib,Yd=1;6>=Yd&&Ib;Yd++){if(2<Yd){Ic.B=Ib;var Jc=Bf(Mh,Ic);if(0<=Jc.indexOf("JSR")){var eg=Jc.indexOf(" ");if(Ib+(Jc.indexOf(" ",eg+1)-eg-1)/2==dg){cg=Jc;break}}}Ib-=2}Ic.B=dg;if(Oa=cg)break}}if(!Oa||null==Oa)break;var fg=null;if("ks"==Kh){var gg=Oa.match(/[0-9A-F]+$/);gg&&(fg=vg(a,gg[0]))}Oa=Ba(Oa,50)+" ;"+(fg||"stack="+K(a,Hb.B,18));a.u(Oa);Wd++}Wd||a.u("no return addresses found")}break;case "l":if("ln"==g[0]){vg(a,g[1],!0);break}f=!0;break;case "m":a:{var ra,
|
||||
sa=null,M=g[1];"?"==M&&(M=void 0);if(void 0!==M){var Ea=0;if("all"==M)Ea=1879046143,M=null;else if("on"==M)sa=!0,M=null;else if("off"==M)sa=!1,M=null;else{"keys"==M&&(M="key");"kbd"==M&&(M="keyboard");for(ra in ac)if(M==ra){Ea=ac[ra];sa=!!(a.ca&Ea);break}if(!Ea){a.u("unknown message category: "+M);break a}}if(Ea)if("on"==g[2])a.ca|=Ea,sa=!0;else if("off"==g[2]&&(a.ca&=~Ea,sa=!1,1073741824==Ea)){for(var hg=1E3<=a.S.length?a.S.length-1E3:0;hg<a.S.length;)a.u(a.S[hg++]);a.S=[]}}var Nh=0,Jb="";for(ra in ac)if(!M||
|
||||
M==ra){var Oh=!!(a.ca&ac[ra]);if(null===sa||sa==Oh)Jb&&(Jb+=","),++Nh%10||(Jb+="\n\t"),"key"==ra&&(ra="keys"),Jb+=ra}void 0===M&&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")+(Jb||"none"));Ze(a)}break;case "p":if("print"==g[0]){wg(a,b.substr(5));break}var ig=g[0],jg="p"==ig?0:"pr"==ig?1:-1;if("?"==g[1]||0>jg)a.u("step commands:"),a.u("\tp\tstep over instruction"),a.u("\tpr\tstep over instruction with register update");
|
||||
else if(a.P)a.u("step in progress");else{var kg=Z(a.v.i);a.Ma(kg);a.P?(a.Ra(a.b,kg,!0),vf(a)||(a.H&&id(a.H),a.P=0)):xg(a,jg?"tr":"t")}break;case "r":if("reset"==b){a.H&&a.H.reset();break}yf(a,g);break;case "s":a:switch(g[1]){case "base":if(g[2]){var jb=+g[2];if(2==jb||8==jb||10==jb||16==jb)a.T=jb;else{a.u("invalid base: "+jb);break}}a.u("default base: "+a.T);break;case "cs":var Kb;void 0!==g[3]&&(Kb=+g[3]);switch(g[2]){case "int":a.v.oa=Kb;break;case "start":a.v.Ha=Kb;break;case "stop":a.v.qa=Kb;
|
||||
break;default:a.u("unknown cs option");break a}void 0!==Kb&&ad(a.v);a.u("checksums "+(a.v.A.Va?"enabled":"disabled"));break;case "sp":void 0!==g[2]&&(fd(a.v,+g[2])||a.u("warning: using 1x multiplier, previous target not reached"));a.u("target speed: "+(a.v.ia.toFixed(2)+"Mhz")+" ("+a.v.ja+"x)");break;default:if(g[1]){a.u("unknown option: "+g[1]);break}case "?":a.u("debugger options:"),a.u("\tbase #\t\tset default base to #"),a.u("\tcs int #\tset checksum cycle interval to #"),a.u("\tcs start #\tset checksum cycle start count to #"),
|
||||
a.u("\tcs stop #\tset checksum cycle stop count to #"),a.u("\tsp #\t\tset speed multiplier to #")}break;case "t":xg(a,g[0],g[1]);break;case "u":zf(a,g[1],g[2],8);break;case "v":if("var"==g[0]){ug(a,b.substr(3))||(d=!1);break}if("ver"==g[0]){a.u((Rb||"PDP10")+" version 1.34.3 ("+a.v.Db+",RELEASE)");a.u(window?window.navigator.userAgent:"");break}f=!0;break;case "?":if(g[1]){wg(a,b.substr(1));break}var Zd="commands:",$d;for($d in zg)Zd+="\n"+Ba($d,9)+zg[$d];sd(a)||(Zd+="\nnote: history disabled if no exec breakpoints");
|
||||
|
|
@ -251,7 +251,7 @@ function th(a){if(a.w.length){var b=a.w[a.w.length-1].name;b&&a.M.push({name:b,R
|
|||
function vh(a,b){var c;c=void 0===c?",":c;for(var d=0,e=!1,f=null,g=0;d<b.length;){var h=b[d++];if('"'==h)e=!e;else if(!e){if(!g&&0<=c.indexOf(h)){d--;break}if("<"==h)g++;else if(">"==h&&0>--g){a.error("missing bracket(s): "+b);break}}}g?0<g&&a.error("extra bracket(s): "+b):f=b.substr(0,d);return f}
|
||||
function Jg(a,b,c,d){var e,f=b.match(/^([^,]*),,([^,]*)$/);f?(b=f[1]?Jg(a,f[1],c,d):0,void 0!==b&&(c=f[2]?Jg(a,f[2],c,d):0,void 0!==c&&(e=Y(a.b,b,18,!0)*Math.pow(2,18)+Y(a.b,c,18,!0)))):(void 0===d&&(d=0<=a.wa?a.wa:a.Z),b=b.replace(/SIXBIT\s*(\S)(.*?)\1/g,"'$2'").replace(/ASCII\s*(\S)(.*?)\1/g,'"$2"'),e=Te(a.b,b.replace(/\.([^0-9]|$)/g,K(a.b,d,-1)+"$1"),c),void 0===e&&a.error("error parsing expression: "+b));return e}
|
||||
function Rg(a,b){for(var c=0,d="",e=0,f=-1,g=b.length;e<b.length;){var h=b[e];if(";"==h)break;"["==h&&(c++||(f=e));e++;if("]"==h&&0>=--c){g=e;break}}0>c&&a.error("missing bracket(s): "+b);0<=f&&(d=b.substr(f,g-f));return d}function Ug(a,b){var c=null;if(b=b.match(/([A-Z$%.][0-9A-Z$%.]*)#/i)){c=b[0];b=b[1];var d="?"+b;if(!a.j[d]){var e,f,g;e=f=g=[];a.j[d]={name:d,Sa:wh,Ua:e,Ab:f,Qa:g,ma:b+": 0",da:a.da};a.L.push(d)}}return c}
|
||||
function uh(a,b,c){var d=[];for(c&&(b=b.replace(/^\(?(.*?)\)?$/,"$1"));b;){b=b.trim();c=vh(a,b);if(!c)break;d.push(c);b=b.substr(c.length+1)}return d}
|
||||
function uh(a,b,c){var d=[];for(c&&(b=b.replace(/^\(?(.*?)\)?$/,"$1"));b;){b=b.trim();c=vh(a,b);if(!c)break;var e=c;if("\\"==c[0]){var f=1,g=0;"'"==c[1]?(f++,g=6):'"'==c[1]&&(f++,g=7);var e=a,f=c.substr(f),g=void 0===g?0:g,h=Jg(e,f);if(void 0!==h){var k=5;switch(g){case 0:f=K(e.b,h,-1);break;case 6:k++;case 7:for(;h&&k--;)h=Math.trunc(h/Math.pow(2,g))}}e=f}d.push(e);b=b.substr(c.length+1)}return d}
|
||||
function Mg(a,b){var c=b;null==a.D&&(a.D=a.C="",b&&(a.D=b[0],c=b=b.substr(1)));if(a.D){var d=b.indexOf(a.D);0>d?c="":(c=b.substr(d+1),b=b.substr(0,d),a.D=null);a.C+=b}if(null==a.D){var d=b=0,e,f,g=a.C.length;a.K==Xg&&g++;for(var h=0;h<g;h++){b||(d=0,f=29,e=7,a.K==Yg&&(e--,f++));var k=a.C.charCodeAt(h)&127;6==e&&(97<=k&&122>=k&&(k-=32),k=k+32&63);d+=k*Math.pow(2,f);f-=e;b++;0>f&&(Hg(a,d),b=0)}b&&Hg(a,d)}return c}
|
||||
function Sg(a,b,c){var d,e,f,g,h,k;a.J="<";a.F=">";g=h=k=[];if(b==dh){e=c.match(/([A-Z$%.][0-9A-Z$%.]*)\s*(\([^)]*\)|)\s*,?\s*(<|)([\s\S]*)/i);if(!e)return a.error("unrecognized "+b+": "+c),c;f=e[1];if(e[2]&&","!=e[2]){h=g=uh(a,e[2],!0);b=[];for(c=0;c<h.length;c++)if(d=h[c].indexOf("<"),0<=d){var l=h[c].lastIndexOf(">");0>l&&(l=h[c].length);b[c]=h[c].substr(d,l-d);h[c]=h[c].substr(0,d)}h=b}b=xh;c=3}else if(b==ih){a.J="[";a.F="]";e=c.match(/([A-Z$%.][0-9A-Z$%.]*)\s*(\[)([\s\S]*)/i);if(!e)return a.error("unrecognized "+
|
||||
b+": "+c),c;f=e[1];b=rh;c=2}else if(b==Tg)a.J="[",a.F="]",f="?"+va(++a.V,5),a.j[f]&&a.error("literal symbol redefined: "+f),e=[c[0],c.substr(1)],b=yh,c=0;else if(b==Ng||b==Og){a.v||a.error(b+" outside of macro");e=c.match(/([A-Z$%.][0-9A-Z$%.]*)\s*,\s*(<|)([\s\S]*)/i);if(!e)return a.error("unrecognized "+b+": "+c),c;for(d=0;d<a.v.Ua.length&&e[1]!=a.v.Ua[d];d++);if(d==a.v.Ua.length)return a.error("invalid "+b+" parameter: "+e[1]),c;f="?"+b;g=[e[1]];b==Og?k=a.v.Qa[d].split(""):k=uh(a,a.v.Qa[d]);b=k.length;
|
||||
|
|
|
|||
Loading…
Reference in a new issue