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:
Jeff 2017-03-30 16:04:00 -07:00 committed by Jeff Parsons
commit 881da5b19c
8 changed files with 13273 additions and 15 deletions

View file

@ -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]

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View 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>

View 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 %}

View file

@ -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;

View file

@ -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;