diff --git a/_posts/2016-12-30-out-with-the-old-in-with-ecmascript-2015.md b/_posts/2016-12-30-out-with-the-old-in-with-ecmascript-2015.md index 3da568fab..ae546a781 100644 --- a/_posts/2016-12-30-out-with-the-old-in-with-ecmascript-2015.md +++ b/_posts/2016-12-30-out-with-the-old-in-with-ecmascript-2015.md @@ -84,10 +84,10 @@ apparently Google's Closure Compiler seized the ES6 opportunity to try to enforc the default is `@struct`. Needless to say, when it came time to convert the next machine (PC8080) to classes, I prefaced all my classes with `@unrestricted`. -One downside of switching to ES6 one machine at a time is that, for now, I've had to fork the shared modules into +One downside of switching to ES6 one machine at a time is that I had to temporarily fork the shared modules into separate ES5 and ES6 folders. For example, one of the shared modules, [Component](/modules/shared/lib/component.js), is the base class underlying most other machine components; ES5 objects *subclass* [Component](/modules/shared/lib/component.js), -whereas ES6 classes *extend* [Component](/modules/shared/es6/component.js). Not all the shared modules needed to be forked, +whereas ES6 classes *extend* [Component](/modules/shared/lib/component.js). Not all the shared modules needed to be forked, but creating a new shared folder was the simplest solution. Once all the machines have been converted to use ES6 classes, the new shared modules will become the default, and the old ones will fade away. diff --git a/docs/pcx86/examples/pcx86-dbg.js b/docs/pcx86/examples/pcx86-dbg.js index 8b97c527f..4ccd93d2e 100644 --- a/docs/pcx86/examples/pcx86-dbg.js +++ b/docs/pcx86/examples/pcx86-dbg.js @@ -1,20 +1,20 @@ (function(){/* - http://pcjs.org/modules/shared/es6/diskapi.js (C) Jeff Parsons 2012-2017 - http://pcjs.org/modules/shared/es6/dumpapi.js (C) Jeff Parsons 2012-2017 - http://pcjs.org/modules/shared/es6/reportapi.js (C) Jeff Parsons 2012-2017 - http://pcjs.org/modules/shared/es6/userapi.js (C) Jeff Parsons 2012-2017 - http://pcjs.org/modules/shared/es6/keys.js (C) Jeff Parsons 2012-2017 - http://pcjs.org/modules/shared/es6/strlib.js (C) Jeff Parsons 2012-2017 - http://pcjs.org/modules/shared/es6/weblib.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/diskapi.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/dumpapi.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/reportapi.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/userapi.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/keys.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/strlib.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/weblib.js (C) Jeff Parsons 2012-2017 http://pcjs.org/modules/pcx86/lib/x86.js (C) Jeff Parsons 2012-2017 http://pcjs.org/modules/pcx86/lib/interrupts.js (C) Jeff Parsons 2012-2017 http://pcjs.org/modules/pcx86/lib/messages.js (C) Jeff Parsons 2012-2017 http://pcjs.org/modules/pcx86/lib/debugger.js (C) Jeff Parsons 2012-2017 - http://pcjs.org/modules/shared/es6/state.js (C) Jeff Parsons 2012-2017 - http://pcjs.org/modules/shared/es6/embed.js (C) Jeff Parsons 2012-2017 - http://pcjs.org/modules/shared/es6/defines.js (C) Jeff Parsons 2012-2017 - http://pcjs.org/modules/shared/es6/usrlib.js (C) Jeff Parsons 2012-2017 - http://pcjs.org/modules/shared/es6/component.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/state.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/embed.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/defines.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/usrlib.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/component.js (C) Jeff Parsons 2012-2017 http://pcjs.org/modules/pcx86/lib/defines.js (C) Jeff Parsons 2012-2017 http://pcjs.org/modules/pcx86/lib/panel.js (C) Jeff Parsons 2012-2017 http://pcjs.org/modules/pcx86/lib/bus.js (C) Jeff Parsons 2012-2017 @@ -39,9 +39,9 @@ http://pcjs.org/modules/pcx86/lib/disk.js (C) Jeff Parsons 2012-2017 http://pcjs.org/modules/pcx86/lib/fdc.js (C) Jeff Parsons 2012-2017 http://pcjs.org/modules/pcx86/lib/hdc.js (C) Jeff Parsons 2012-2017 - http://pcjs.org/modules/shared/es6/debugger.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/debugger.js (C) Jeff Parsons 2012-2017 http://pcjs.org/modules/pcx86/lib/computer.js (C) Jeff Parsons 2012-2017 - http://pcjs.org/modules/shared/es6/save.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/save.js (C) Jeff Parsons 2012-2017 */ var l,aa;function ba(a,b){function c(){}c.prototype=b.prototype;a.prototype=new c;a.prototype.constructor=a;for(var d in b)if(Object.defineProperties){var e=Object.getOwnPropertyDescriptor(b,d);e&&Object.defineProperty(a,d,e)}else a[d]=b[d]} var da={163840:[40,1,8,,254],184320:[40,1,9,,252],327680:[40,2,8,,255],368640:[40,2,9,,253],737280:[80,2,9,,249],1228800:[80,2,15,,249],1474560:[80,2,18,,240],2949120:[80,2,36,,240],21368320:[615,4,17],2494464:[203,2,12,512],5242880:[256,2,40,256],10485760:[512,2,40,256]},n={jp:0,lp:1,mp:2,hl:3,np:4,op:5,pp:6,qp:7,rp:8,sp:9,tp:10,up:11,vp:12,wp:13,xp:14,yp:15,zp:16,Ap:17,Bp:18,Cp:19,Dp:20,Ep:21,Fp:22,Gp:23,Hp:24,Ip:25,Jp:26," ":32,"!":33,'"':34,"#":35,$:36,"%":37,"&":38,"'":39,"(":40,")":41,"*":42, diff --git a/docs/pcx86/examples/pcx86.js b/docs/pcx86/examples/pcx86.js index 5169e063c..762375ab7 100644 --- a/docs/pcx86/examples/pcx86.js +++ b/docs/pcx86/examples/pcx86.js @@ -1,20 +1,20 @@ (function(){/* - http://pcjs.org/modules/shared/es6/diskapi.js (C) Jeff Parsons 2012-2017 - http://pcjs.org/modules/shared/es6/dumpapi.js (C) Jeff Parsons 2012-2017 - http://pcjs.org/modules/shared/es6/reportapi.js (C) Jeff Parsons 2012-2017 - http://pcjs.org/modules/shared/es6/userapi.js (C) Jeff Parsons 2012-2017 - http://pcjs.org/modules/shared/es6/keys.js (C) Jeff Parsons 2012-2017 - http://pcjs.org/modules/shared/es6/strlib.js (C) Jeff Parsons 2012-2017 - http://pcjs.org/modules/shared/es6/weblib.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/diskapi.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/dumpapi.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/reportapi.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/userapi.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/keys.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/strlib.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/weblib.js (C) Jeff Parsons 2012-2017 http://pcjs.org/modules/pcx86/lib/x86.js (C) Jeff Parsons 2012-2017 http://pcjs.org/modules/pcx86/lib/interrupts.js (C) Jeff Parsons 2012-2017 http://pcjs.org/modules/pcx86/lib/messages.js (C) Jeff Parsons 2012-2017 http://pcjs.org/modules/pcx86/lib/debugger.js (C) Jeff Parsons 2012-2017 - http://pcjs.org/modules/shared/es6/state.js (C) Jeff Parsons 2012-2017 - http://pcjs.org/modules/shared/es6/embed.js (C) Jeff Parsons 2012-2017 - http://pcjs.org/modules/shared/es6/defines.js (C) Jeff Parsons 2012-2017 - http://pcjs.org/modules/shared/es6/usrlib.js (C) Jeff Parsons 2012-2017 - http://pcjs.org/modules/shared/es6/component.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/state.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/embed.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/defines.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/usrlib.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/component.js (C) Jeff Parsons 2012-2017 http://pcjs.org/modules/pcx86/lib/defines.js (C) Jeff Parsons 2012-2017 http://pcjs.org/modules/pcx86/lib/panel.js (C) Jeff Parsons 2012-2017 http://pcjs.org/modules/pcx86/lib/bus.js (C) Jeff Parsons 2012-2017 @@ -39,9 +39,9 @@ http://pcjs.org/modules/pcx86/lib/disk.js (C) Jeff Parsons 2012-2017 http://pcjs.org/modules/pcx86/lib/fdc.js (C) Jeff Parsons 2012-2017 http://pcjs.org/modules/pcx86/lib/hdc.js (C) Jeff Parsons 2012-2017 - http://pcjs.org/modules/shared/es6/debugger.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/debugger.js (C) Jeff Parsons 2012-2017 http://pcjs.org/modules/pcx86/lib/computer.js (C) Jeff Parsons 2012-2017 - http://pcjs.org/modules/shared/es6/save.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/save.js (C) Jeff Parsons 2012-2017 */ var k,aa;function ba(a,b){function c(){}c.prototype=b.prototype;a.prototype=new c;a.prototype.constructor=a;for(var d in b)if(Object.defineProperties){var e=Object.getOwnPropertyDescriptor(b,d);e&&Object.defineProperty(a,d,e)}else a[d]=b[d]} var da={163840:[40,1,8,,254],184320:[40,1,9,,252],327680:[40,2,8,,255],368640:[40,2,9,,253],737280:[80,2,9,,249],1228800:[80,2,15,,249],1474560:[80,2,18,,240],2949120:[80,2,36,,240],21368320:[615,4,17],2494464:[203,2,12,512],5242880:[256,2,40,256],10485760:[512,2,40,256]},n={Ln:0,Nn:1,On:2,Zj:3,Pn:4,Qn:5,Rn:6,Sn:7,Tn:8,Un:9,Vn:10,Wn:11,Xn:12,Yn:13,Zn:14,$n:15,ao:16,bo:17,co:18,eo:19,fo:20,ho:21,io:22,jo:23,ko:24,lo:25,mo:26," ":32,"!":33,'"':34,"#":35,$:36,"%":37,"&":38,"'":39,"(":40,")":41,"*":42, diff --git a/modules/c1pjs/lib/computer.js b/modules/c1pjs/lib/computer.js index af12cd651..cf569aadf 100644 --- a/modules/c1pjs/lib/computer.js +++ b/modules/c1pjs/lib/computer.js @@ -29,8 +29,8 @@ "use strict"; if (NODE) { - var Web = require("../../shared/es6/weblib"); - var Component = require("../../shared/es6/component"); + var Web = require("../../shared/lib/weblib"); + var Component = require("../../shared/lib/component"); } /** diff --git a/modules/c1pjs/lib/cpu.js b/modules/c1pjs/lib/cpu.js index 6af77a0db..a43b5ec6a 100644 --- a/modules/c1pjs/lib/cpu.js +++ b/modules/c1pjs/lib/cpu.js @@ -29,10 +29,10 @@ "use strict"; if (NODE) { - var Str = require("../../shared/es6/strlib"); - var Usr = require("../../shared/es6/usrlib"); - var Web = require("../../shared/es6/weblib"); - var Component = require("../../shared/es6/component"); + var Str = require("../../shared/lib/strlib"); + var Usr = require("../../shared/lib/usrlib"); + var Web = require("../../shared/lib/weblib"); + var Component = require("../../shared/lib/component"); } /** diff --git a/modules/c1pjs/lib/debugger.js b/modules/c1pjs/lib/debugger.js index a91024f5c..bcb1155a1 100644 --- a/modules/c1pjs/lib/debugger.js +++ b/modules/c1pjs/lib/debugger.js @@ -29,10 +29,10 @@ "use strict"; if (NODE) { - var Str = require("../../shared/es6/strlib"); - var Usr = require("../../shared/es6/usrlib"); - var Web = require("../../shared/es6/weblib"); - var Component = require("../../shared/es6/component"); + var Str = require("../../shared/lib/strlib"); + var Usr = require("../../shared/lib/usrlib"); + var Web = require("../../shared/lib/weblib"); + var Component = require("../../shared/lib/component"); } /** diff --git a/modules/c1pjs/lib/disk.js b/modules/c1pjs/lib/disk.js index 90f6d17c3..1072dd0f1 100644 --- a/modules/c1pjs/lib/disk.js +++ b/modules/c1pjs/lib/disk.js @@ -29,9 +29,9 @@ "use strict"; if (NODE) { - var Str = require("../../shared/es6/strlib"); - var Web = require("../../shared/es6/weblib"); - var Component = require("../../shared/es6/component"); + var Str = require("../../shared/lib/strlib"); + var Web = require("../../shared/lib/weblib"); + var Component = require("../../shared/lib/component"); } /** diff --git a/modules/c1pjs/lib/keyboard.js b/modules/c1pjs/lib/keyboard.js index 5441416e2..71c7f2916 100644 --- a/modules/c1pjs/lib/keyboard.js +++ b/modules/c1pjs/lib/keyboard.js @@ -29,9 +29,9 @@ "use strict"; if (NODE) { - var Str = require("../../shared/es6/strlib"); - var Web = require("../../shared/es6/weblib"); - var Component = require("../../shared/es6/component"); + var Str = require("../../shared/lib/strlib"); + var Web = require("../../shared/lib/weblib"); + var Component = require("../../shared/lib/component"); } /** diff --git a/modules/c1pjs/lib/panel.js b/modules/c1pjs/lib/panel.js index 5ea51bdec..bd4207db6 100644 --- a/modules/c1pjs/lib/panel.js +++ b/modules/c1pjs/lib/panel.js @@ -29,8 +29,8 @@ "use strict"; if (NODE) { - var Web = require("../../shared/es6/weblib"); - var Component = require("../../shared/es6/component"); + var Web = require("../../shared/lib/weblib"); + var Component = require("../../shared/lib/component"); } /** diff --git a/modules/c1pjs/lib/ram.js b/modules/c1pjs/lib/ram.js index fa8b6161e..0bea0b159 100644 --- a/modules/c1pjs/lib/ram.js +++ b/modules/c1pjs/lib/ram.js @@ -29,8 +29,8 @@ "use strict"; if (NODE) { - var Web = require("../../shared/es6/weblib"); - var Component = require("../../shared/es6/component"); + var Web = require("../../shared/lib/weblib"); + var Component = require("../../shared/lib/component"); } /** diff --git a/modules/c1pjs/lib/rom.js b/modules/c1pjs/lib/rom.js index a4513ff5e..422034d1d 100644 --- a/modules/c1pjs/lib/rom.js +++ b/modules/c1pjs/lib/rom.js @@ -29,10 +29,10 @@ "use strict"; if (NODE) { - var Str = require("../../shared/es6/strlib"); - var Web = require("../../shared/es6/weblib"); - var DumpAPI = require("../../shared/es6/dumpapi"); - var Component = require("../../shared/es6/component"); + var Str = require("../../shared/lib/strlib"); + var Web = require("../../shared/lib/weblib"); + var DumpAPI = require("../../shared/lib/dumpapi"); + var Component = require("../../shared/lib/component"); } /** diff --git a/modules/c1pjs/lib/serial.js b/modules/c1pjs/lib/serial.js index c86211c4f..d3a9106aa 100644 --- a/modules/c1pjs/lib/serial.js +++ b/modules/c1pjs/lib/serial.js @@ -29,9 +29,9 @@ "use strict"; if (NODE) { - var Str = require("../../shared/es6/strlib"); - var Web = require("../../shared/es6/weblib"); - var Component = require("../../shared/es6/component"); + var Str = require("../../shared/lib/strlib"); + var Web = require("../../shared/lib/weblib"); + var Component = require("../../shared/lib/component"); } /** diff --git a/modules/c1pjs/lib/video.js b/modules/c1pjs/lib/video.js index b09dc84b9..28c6e1b2d 100644 --- a/modules/c1pjs/lib/video.js +++ b/modules/c1pjs/lib/video.js @@ -29,8 +29,8 @@ "use strict"; if (NODE) { - var Web = require("../../shared/es6/weblib"); - var Component = require("../../shared/es6/component"); + var Web = require("../../shared/lib/weblib"); + var Component = require("../../shared/lib/component"); } /** diff --git a/modules/pc8080/lib/bus.js b/modules/pc8080/lib/bus.js index 15c93095b..fce3537e9 100644 --- a/modules/pc8080/lib/bus.js +++ b/modules/pc8080/lib/bus.js @@ -29,10 +29,10 @@ "use strict"; if (NODE) { - var Str = require("../../shared/es6/strlib"); - var Usr = require("../../shared/es6/usrlib"); - var Component = require("../../shared/es6/component"); - var State = require("../../shared/es6/state"); + var Str = require("../../shared/lib/strlib"); + var Usr = require("../../shared/lib/usrlib"); + var Component = require("../../shared/lib/component"); + var State = require("../../shared/lib/state"); var Memory8080 = require("./memory"); var Messages8080 = require("./messages"); } diff --git a/modules/pc8080/lib/chipset.js b/modules/pc8080/lib/chipset.js index 0c0f8924d..d04996987 100644 --- a/modules/pc8080/lib/chipset.js +++ b/modules/pc8080/lib/chipset.js @@ -29,11 +29,11 @@ "use strict"; if (NODE) { - var Str = require("../../shared/es6/strlib"); - var Usr = require("../../shared/es6/usrlib"); - var Web = require("../../shared/es6/weblib"); - var Component = require("../../shared/es6/component"); - var State = require("../../shared/es6/state"); + var Str = require("../../shared/lib/strlib"); + var Usr = require("../../shared/lib/usrlib"); + var Web = require("../../shared/lib/weblib"); + var Component = require("../../shared/lib/component"); + var State = require("../../shared/lib/state"); var PC8080 = require("./defines"); var CPUDef8080 = require("./cpudef"); var Messages8080 = require("./messages"); diff --git a/modules/pc8080/lib/computer.js b/modules/pc8080/lib/computer.js index 2b36a14a2..1b7667eb6 100644 --- a/modules/pc8080/lib/computer.js +++ b/modules/pc8080/lib/computer.js @@ -29,13 +29,13 @@ "use strict"; if (NODE) { - var Str = require("../../shared/es6/strlib"); - var Usr = require("../../shared/es6/usrlib"); - var Web = require("../../shared/es6/weblib"); - var UserAPI = require("../../shared/es6/userapi"); - var ReportAPI = require("../../shared/es6/reportapi"); - var Component = require("../../shared/es6/component"); - var State = require("../../shared/es6/state"); + var Str = require("../../shared/lib/strlib"); + var Usr = require("../../shared/lib/usrlib"); + var Web = require("../../shared/lib/weblib"); + var UserAPI = require("../../shared/lib/userapi"); + var ReportAPI = require("../../shared/lib/reportapi"); + var Component = require("../../shared/lib/component"); + var State = require("../../shared/lib/state"); var PC8080 = require("./defines"); var Bus8080 = require("./bus"); var Messages8080 = require("./messages"); diff --git a/modules/pc8080/lib/cpu.js b/modules/pc8080/lib/cpu.js index 95d4207be..3b85c2e38 100644 --- a/modules/pc8080/lib/cpu.js +++ b/modules/pc8080/lib/cpu.js @@ -29,8 +29,8 @@ "use strict"; if (NODE) { - var Str = require("../../shared/es6/strlib"); - var Component = require("../../shared/es6/component"); + var Str = require("../../shared/lib/strlib"); + var Component = require("../../shared/lib/component"); var Messages8080 = require("./messages"); } diff --git a/modules/pc8080/lib/cpustate.js b/modules/pc8080/lib/cpustate.js index ed9ef1789..61f9b4947 100644 --- a/modules/pc8080/lib/cpustate.js +++ b/modules/pc8080/lib/cpustate.js @@ -29,9 +29,9 @@ "use strict"; if (NODE) { - var Web = require("../../shared/es6/weblib"); - var Component = require("../../shared/es6/component"); - var State = require("../../shared/es6/state"); + var Web = require("../../shared/lib/weblib"); + var Component = require("../../shared/lib/component"); + var State = require("../../shared/lib/state"); var PC8080 = require("./defines"); var CPUDef8080 = require("./cpudef"); var CPU8080 = require("./cpu"); diff --git a/modules/pc8080/lib/debugger.js b/modules/pc8080/lib/debugger.js index 70b189591..009178bb8 100644 --- a/modules/pc8080/lib/debugger.js +++ b/modules/pc8080/lib/debugger.js @@ -29,13 +29,13 @@ "use strict"; if (NODE) { - var Str = require("../../shared/es6/strlib"); - var Usr = require("../../shared/es6/usrlib"); - var Web = require("../../shared/es6/weblib"); - var Component = require("../../shared/es6/component"); - var Debugger = require("../../shared/es6/debugger"); - var Keys = require("../../shared/es6/keys"); - var State = require("../../shared/es6/state"); + var Str = require("../../shared/lib/strlib"); + var Usr = require("../../shared/lib/usrlib"); + var Web = require("../../shared/lib/weblib"); + var Component = require("../../shared/lib/component"); + var Debugger = require("../../shared/lib/debugger"); + var Keys = require("../../shared/lib/keys"); + var State = require("../../shared/lib/state"); var PC8080 = require("./defines"); var CPUDef8080 = require("./cpudef"); var CPU8080 = require("./cpu"); diff --git a/modules/pc8080/lib/keyboard.js b/modules/pc8080/lib/keyboard.js index 0ecb353e9..3cea8d4a2 100644 --- a/modules/pc8080/lib/keyboard.js +++ b/modules/pc8080/lib/keyboard.js @@ -29,11 +29,11 @@ "use strict"; if (NODE) { - var Str = require("../../shared/es6/strlib"); - var Web = require("../../shared/es6/weblib"); - var Component = require("../../shared/es6/component"); - var Keys = require("../../shared/es6/keys"); - var State = require("../../shared/es6/state"); + var Str = require("../../shared/lib/strlib"); + var Web = require("../../shared/lib/weblib"); + var Component = require("../../shared/lib/component"); + var Keys = require("../../shared/lib/keys"); + var State = require("../../shared/lib/state"); var PC8080 = require("./defines"); var ChipSet8080 = require("./chipset"); var Messages8080 = require("./messages"); diff --git a/modules/pc8080/lib/memory.js b/modules/pc8080/lib/memory.js index 375f0606d..573e23a9e 100644 --- a/modules/pc8080/lib/memory.js +++ b/modules/pc8080/lib/memory.js @@ -29,8 +29,8 @@ "use strict"; if (NODE) { - var Str = require("../../shared/es6/strlib"); - var Component = require("../../shared/es6/component"); + var Str = require("../../shared/lib/strlib"); + var Component = require("../../shared/lib/component"); var CPUDef8080 = require("./cpudef"); var Messages8080 = require("./messages"); } diff --git a/modules/pc8080/lib/panel.js b/modules/pc8080/lib/panel.js index 3fa920e53..abdf9fb33 100644 --- a/modules/pc8080/lib/panel.js +++ b/modules/pc8080/lib/panel.js @@ -29,8 +29,8 @@ "use strict"; if (NODE) { - var Web = require("../../shared/es6/weblib"); - var Component = require("../../shared/es6/component"); + var Web = require("../../shared/lib/weblib"); + var Component = require("../../shared/lib/component"); var PC8080 = require("./defines"); var Bus8080 = require("./bus"); var CPUDef8080 = require("./cpudef"); diff --git a/modules/pc8080/lib/ram.js b/modules/pc8080/lib/ram.js index 7bbaa0b66..6c011c963 100644 --- a/modules/pc8080/lib/ram.js +++ b/modules/pc8080/lib/ram.js @@ -29,11 +29,11 @@ "use strict"; if (NODE) { - var Str = require("../../shared/es6/strlib"); - var Web = require("../../shared/es6/weblib"); - var DumpAPI = require("../../shared/es6/dumpapi"); - var Component = require("../../shared/es6/component"); - var State = require("../../shared/es6/state"); + var Str = require("../../shared/lib/strlib"); + var Web = require("../../shared/lib/weblib"); + var DumpAPI = require("../../shared/lib/dumpapi"); + var Component = require("../../shared/lib/component"); + var State = require("../../shared/lib/state"); var PC8080 = require("./defines"); var CPUDef8080 = require("./cpudef"); var Memory8080 = require("./memory"); diff --git a/modules/pc8080/lib/rom.js b/modules/pc8080/lib/rom.js index 56cf1146f..75254fa28 100644 --- a/modules/pc8080/lib/rom.js +++ b/modules/pc8080/lib/rom.js @@ -29,10 +29,10 @@ "use strict"; if (NODE) { - var Str = require("../../shared/es6/strlib"); - var Web = require("../../shared/es6/weblib"); - var DumpAPI = require("../../shared/es6/dumpapi"); - var Component = require("../../shared/es6/component"); + var Str = require("../../shared/lib/strlib"); + var Web = require("../../shared/lib/weblib"); + var DumpAPI = require("../../shared/lib/dumpapi"); + var Component = require("../../shared/lib/component"); var PC8080 = require("./defines"); var Memory8080 = require("./memory"); } diff --git a/modules/pc8080/lib/serial.js b/modules/pc8080/lib/serial.js index e57c1b678..f16a13466 100644 --- a/modules/pc8080/lib/serial.js +++ b/modules/pc8080/lib/serial.js @@ -29,10 +29,10 @@ "use strict"; if (NODE) { - var Str = require("../../shared/es6/strlib"); - var Web = require("../../shared/es6/weblib"); - var Component = require("../../shared/es6/component"); - var State = require("../../shared/es6/state"); + var Str = require("../../shared/lib/strlib"); + var Web = require("../../shared/lib/weblib"); + var Component = require("../../shared/lib/component"); + var State = require("../../shared/lib/state"); var PC8080 = require("./defines"); var Messages8080 = require("./messages"); } diff --git a/modules/pc8080/lib/video.js b/modules/pc8080/lib/video.js index 73684d6dd..06375f2a4 100644 --- a/modules/pc8080/lib/video.js +++ b/modules/pc8080/lib/video.js @@ -29,11 +29,11 @@ "use strict"; if (NODE) { - var Str = require("../../shared/es6/strlib"); - var Web = require("../../shared/es6/weblib"); - var DumpAPI = require("../../shared/es6/dumpapi"); - var Component = require("../../shared/es6/component"); - var State = require("../../shared/es6/state"); + var Str = require("../../shared/lib/strlib"); + var Web = require("../../shared/lib/weblib"); + var DumpAPI = require("../../shared/lib/dumpapi"); + var Component = require("../../shared/lib/component"); + var State = require("../../shared/lib/state"); var PC8080 = require("./defines"); var ChipSet8080 = require("./chipset"); var Memory8080 = require("./memory"); diff --git a/modules/pcx86/lib/bus.js b/modules/pcx86/lib/bus.js index 8ea4a5e8e..9025ac488 100644 --- a/modules/pcx86/lib/bus.js +++ b/modules/pcx86/lib/bus.js @@ -29,10 +29,10 @@ "use strict"; if (NODE) { - var Str = require("../../shared/es6/strlib"); - var Usr = require("../../shared/es6/usrlib"); - var Component = require("../../shared/es6/component"); - var State = require("../../shared/es6/state"); + var Str = require("../../shared/lib/strlib"); + var Usr = require("../../shared/lib/usrlib"); + var Component = require("../../shared/lib/component"); + var State = require("../../shared/lib/state"); var Memory = require("./memory"); var Messages = require("./messages"); } diff --git a/modules/pcx86/lib/chipset.js b/modules/pcx86/lib/chipset.js index 9f3aa55c8..d2ce8c68e 100644 --- a/modules/pcx86/lib/chipset.js +++ b/modules/pcx86/lib/chipset.js @@ -29,11 +29,11 @@ "use strict"; if (NODE) { - var Str = require("../../shared/es6/strlib"); - var Usr = require("../../shared/es6/usrlib"); - var Web = require("../../shared/es6/weblib"); - var Component = require("../../shared/es6/component"); - var State = require("../../shared/es6/state"); + var Str = require("../../shared/lib/strlib"); + var Usr = require("../../shared/lib/usrlib"); + var Web = require("../../shared/lib/weblib"); + var Component = require("../../shared/lib/component"); + var State = require("../../shared/lib/state"); var PCX86 = require("./defines"); var Interrupts = require("./interrupts"); var Messages = require("./messages"); diff --git a/modules/pcx86/lib/computer.js b/modules/pcx86/lib/computer.js index 199421dc6..f72de3478 100644 --- a/modules/pcx86/lib/computer.js +++ b/modules/pcx86/lib/computer.js @@ -58,13 +58,13 @@ "use strict"; if (NODE) { - var Str = require("../../shared/es6/strlib"); - var Usr = require("../../shared/es6/usrlib"); - var Web = require("../../shared/es6/weblib"); - var UserAPI = require("../../shared/es6/userapi"); - var ReportAPI = require("../../shared/es6/reportapi"); - var Component = require("../../shared/es6/component"); - var State = require("../../shared/es6/state"); + var Str = require("../../shared/lib/strlib"); + var Usr = require("../../shared/lib/usrlib"); + var Web = require("../../shared/lib/weblib"); + var UserAPI = require("../../shared/lib/userapi"); + var ReportAPI = require("../../shared/lib/reportapi"); + var Component = require("../../shared/lib/component"); + var State = require("../../shared/lib/state"); var PCX86 = require("./defines"); var Messages = require("./messages"); var Bus = require("./bus"); diff --git a/modules/pcx86/lib/cpu.js b/modules/pcx86/lib/cpu.js index c7478a68b..33a9792d7 100644 --- a/modules/pcx86/lib/cpu.js +++ b/modules/pcx86/lib/cpu.js @@ -29,9 +29,9 @@ "use strict"; if (NODE) { - var Str = require("../../shared/es6/strlib"); - var Usr = require("../../shared/es6/usrlib"); - var Component = require("../../shared/es6/component"); + var Str = require("../../shared/lib/strlib"); + var Usr = require("../../shared/lib/usrlib"); + var Component = require("../../shared/lib/component"); var Messages = require("./messages"); } diff --git a/modules/pcx86/lib/debugger.js b/modules/pcx86/lib/debugger.js index b90175001..3924ab1d3 100644 --- a/modules/pcx86/lib/debugger.js +++ b/modules/pcx86/lib/debugger.js @@ -30,13 +30,13 @@ if (DEBUGGER) { if (NODE) { - var Str = require("../../shared/es6/strlib"); - var Usr = require("../../shared/es6/usrlib"); - var Web = require("../../shared/es6/weblib"); - var Component = require("../../shared/es6/component"); - var Debugger = require("../../shared/es6/debugger"); - var Keys = require("../../shared/es6/keys"); - var State = require("../../shared/es6/state"); + var Str = require("../../shared/lib/strlib"); + var Usr = require("../../shared/lib/usrlib"); + var Web = require("../../shared/lib/weblib"); + var Component = require("../../shared/lib/component"); + var Debugger = require("../../shared/lib/debugger"); + var Keys = require("../../shared/lib/keys"); + var State = require("../../shared/lib/state"); var PCX86 = require("./defines"); var CPU = require("./cpu"); var X86 = require("./x86"); diff --git a/modules/pcx86/lib/disk.js b/modules/pcx86/lib/disk.js index a4035ef97..c0958c3e4 100644 --- a/modules/pcx86/lib/disk.js +++ b/modules/pcx86/lib/disk.js @@ -29,12 +29,12 @@ "use strict"; if (NODE) { - var Str = require("../../shared/es6/strlib"); - var Usr = require("../../shared/es6/usrlib"); - var Web = require("../../shared/es6/weblib"); - var DiskAPI = require("../../shared/es6/diskapi"); - var DumpAPI = require("../../shared/es6/dumpapi"); - var Component = require("../../shared/es6/component"); + var Str = require("../../shared/lib/strlib"); + var Usr = require("../../shared/lib/usrlib"); + var Web = require("../../shared/lib/weblib"); + var DiskAPI = require("../../shared/lib/diskapi"); + var DumpAPI = require("../../shared/lib/dumpapi"); + var Component = require("../../shared/lib/component"); var Messages = require("./messages"); } diff --git a/modules/pcx86/lib/fdc.js b/modules/pcx86/lib/fdc.js index 5fb3d62ff..a028aeba9 100644 --- a/modules/pcx86/lib/fdc.js +++ b/modules/pcx86/lib/fdc.js @@ -29,11 +29,11 @@ "use strict"; if (NODE) { - var Str = require("../../shared/es6/strlib"); - var Web = require("../../shared/es6/weblib"); - var DiskAPI = require("../../shared/es6/diskapi"); - var Component = require("../../shared/es6/component"); - var State = require("../../shared/es6/state"); + var Str = require("../../shared/lib/strlib"); + var Web = require("../../shared/lib/weblib"); + var DiskAPI = require("../../shared/lib/diskapi"); + var Component = require("../../shared/lib/component"); + var State = require("../../shared/lib/state"); var PCX86 = require("./defines"); var Messages = require("./messages"); var ChipSet = require("./chipset"); diff --git a/modules/pcx86/lib/hdc.js b/modules/pcx86/lib/hdc.js index b60180584..bf556cc7e 100644 --- a/modules/pcx86/lib/hdc.js +++ b/modules/pcx86/lib/hdc.js @@ -29,11 +29,11 @@ "use strict"; if (NODE) { - var Str = require("../../shared/es6/strlib"); - var Web = require("../../shared/es6/weblib"); - var DiskAPI = require("../../shared/es6/diskapi"); - var Component = require("../../shared/es6/component"); - var State = require("../../shared/es6/state"); + var Str = require("../../shared/lib/strlib"); + var Web = require("../../shared/lib/weblib"); + var DiskAPI = require("../../shared/lib/diskapi"); + var Component = require("../../shared/lib/component"); + var State = require("../../shared/lib/state"); var PCX86 = require("./defines"); var Interrupts = require("./interrupts"); var Messages = require("./messages"); diff --git a/modules/pcx86/lib/keyboard.js b/modules/pcx86/lib/keyboard.js index c0779097d..763cd7b79 100644 --- a/modules/pcx86/lib/keyboard.js +++ b/modules/pcx86/lib/keyboard.js @@ -29,11 +29,11 @@ "use strict"; if (NODE) { - var Str = require("../../shared/es6/strlib"); - var Web = require("../../shared/es6/weblib"); - var Component = require("../../shared/es6/component"); - var Keys = require("../../shared/es6/keys"); - var State = require("../../shared/es6/state"); + var Str = require("../../shared/lib/strlib"); + var Web = require("../../shared/lib/weblib"); + var Component = require("../../shared/lib/component"); + var Keys = require("../../shared/lib/keys"); + var State = require("../../shared/lib/state"); var PCX86 = require("./defines"); var Messages = require("./messages"); var ChipSet = require("./chipset"); diff --git a/modules/pcx86/lib/memory.js b/modules/pcx86/lib/memory.js index eb8b0046f..d4af19c4b 100644 --- a/modules/pcx86/lib/memory.js +++ b/modules/pcx86/lib/memory.js @@ -29,8 +29,8 @@ "use strict"; if (NODE) { - var Str = require("../../shared/es6/strlib"); - var Component = require("../../shared/es6/component"); + var Str = require("../../shared/lib/strlib"); + var Component = require("../../shared/lib/component"); var Messages = require("./messages"); var X86 = require("./x86"); } diff --git a/modules/pcx86/lib/mouse.js b/modules/pcx86/lib/mouse.js index deed08195..fdc43d6b1 100644 --- a/modules/pcx86/lib/mouse.js +++ b/modules/pcx86/lib/mouse.js @@ -29,10 +29,10 @@ "use strict"; if (NODE) { - var Str = require("../../shared/es6/strlib"); - var Web = require("../../shared/es6/weblib"); - var Component = require("../../shared/es6/component"); - var State = require("../../shared/es6/state"); + var Str = require("../../shared/lib/strlib"); + var Web = require("../../shared/lib/weblib"); + var Component = require("../../shared/lib/component"); + var State = require("../../shared/lib/state"); var PCX86 = require("./defines"); var Messages = require("./messages"); var SerialPort = require("./serial"); diff --git a/modules/pcx86/lib/panel.js b/modules/pcx86/lib/panel.js index 9c593cab7..b6ed3d406 100644 --- a/modules/pcx86/lib/panel.js +++ b/modules/pcx86/lib/panel.js @@ -29,10 +29,10 @@ "use strict"; if (NODE) { - var Str = require("../../shared/es6/strlib"); - var Usr = require("../../shared/es6/usrlib"); - var Web = require("../../shared/es6/weblib"); - var Component = require("../../shared/es6/component"); + var Str = require("../../shared/lib/strlib"); + var Usr = require("../../shared/lib/usrlib"); + var Web = require("../../shared/lib/weblib"); + var Component = require("../../shared/lib/component"); var PCX86 = require("./defines"); var Bus = require("./bus"); var Memory = require("./memory"); diff --git a/modules/pcx86/lib/parallel.js b/modules/pcx86/lib/parallel.js index d24d0f228..769fe57b1 100644 --- a/modules/pcx86/lib/parallel.js +++ b/modules/pcx86/lib/parallel.js @@ -29,10 +29,10 @@ "use strict"; if (NODE) { - var Str = require("../../shared/es6/strlib"); - var Web = require("../../shared/es6/weblib"); - var Component = require("../../shared/es6/component"); - var State = require("../../shared/es6/state"); + var Str = require("../../shared/lib/strlib"); + var Web = require("../../shared/lib/weblib"); + var Component = require("../../shared/lib/component"); + var State = require("../../shared/lib/state"); var PCX86 = require("./defines"); var Messages = require("./messages"); var ChipSet = require("./chipset"); diff --git a/modules/pcx86/lib/ram.js b/modules/pcx86/lib/ram.js index 031ff49e0..08e5cab0f 100644 --- a/modules/pcx86/lib/ram.js +++ b/modules/pcx86/lib/ram.js @@ -29,10 +29,10 @@ "use strict"; if (NODE) { - var Str = require("../../shared/es6/strlib"); - var Web = require("../../shared/es6/weblib"); - var Component = require("../../shared/es6/component"); - var State = require("../../shared/es6/state"); + var Str = require("../../shared/lib/strlib"); + var Web = require("../../shared/lib/weblib"); + var Component = require("../../shared/lib/component"); + var State = require("../../shared/lib/state"); var PCX86 = require("./defines"); var Memory = require("./memory"); var ROM = require("./rom"); diff --git a/modules/pcx86/lib/rom.js b/modules/pcx86/lib/rom.js index 7a058d63b..2d4bd8511 100644 --- a/modules/pcx86/lib/rom.js +++ b/modules/pcx86/lib/rom.js @@ -29,10 +29,10 @@ "use strict"; if (NODE) { - var Str = require("../../shared/es6/strlib"); - var Web = require("../../shared/es6/weblib"); - var DumpAPI = require("../../shared/es6/dumpapi"); - var Component = require("../../shared/es6/component"); + var Str = require("../../shared/lib/strlib"); + var Web = require("../../shared/lib/weblib"); + var DumpAPI = require("../../shared/lib/dumpapi"); + var Component = require("../../shared/lib/component"); var PCX86 = require("./defines"); var Memory = require("./memory"); } diff --git a/modules/pcx86/lib/serial.js b/modules/pcx86/lib/serial.js index 70381c778..e29394cad 100644 --- a/modules/pcx86/lib/serial.js +++ b/modules/pcx86/lib/serial.js @@ -29,10 +29,10 @@ "use strict"; if (NODE) { - var Str = require("../../shared/es6/strlib"); - var Web = require("../../shared/es6/weblib"); - var Component = require("../../shared/es6/component"); - var State = require("../../shared/es6/state"); + var Str = require("../../shared/lib/strlib"); + var Web = require("../../shared/lib/weblib"); + var Component = require("../../shared/lib/component"); + var State = require("../../shared/lib/state"); var PCX86 = require("./defines"); var Messages = require("./messages"); var ChipSet = require("./chipset"); diff --git a/modules/pcx86/lib/video.js b/modules/pcx86/lib/video.js index 2cfb7ff68..fe8263211 100644 --- a/modules/pcx86/lib/video.js +++ b/modules/pcx86/lib/video.js @@ -29,11 +29,11 @@ "use strict"; if (NODE) { - var Str = require("../../shared/es6/strlib"); - var Web = require("../../shared/es6/weblib"); - var DumpAPI = require("../../shared/es6/dumpapi"); - var Component = require("../../shared/es6/component"); - var State = require("../../shared/es6/state"); + var Str = require("../../shared/lib/strlib"); + var Web = require("../../shared/lib/weblib"); + var DumpAPI = require("../../shared/lib/dumpapi"); + var Component = require("../../shared/lib/component"); + var State = require("../../shared/lib/state"); var PCX86 = require("./defines"); var Memory = require("./memory"); var Messages = require("./messages"); diff --git a/modules/pcx86/lib/x86cpu.js b/modules/pcx86/lib/x86cpu.js index 81f21cbc9..fc2a9ea0c 100644 --- a/modules/pcx86/lib/x86cpu.js +++ b/modules/pcx86/lib/x86cpu.js @@ -29,10 +29,10 @@ "use strict"; if (NODE) { - var Str = require("../../shared/es6/strlib"); - var Web = require("../../shared/es6/weblib"); - var Component = require("../../shared/es6/component"); - var State = require("../../shared/es6/state"); + var Str = require("../../shared/lib/strlib"); + var Web = require("../../shared/lib/weblib"); + var Component = require("../../shared/lib/component"); + var State = require("../../shared/lib/state"); var PCX86 = require("./defines"); var Messages = require("./messages"); var Memory = require("./memory"); diff --git a/modules/pcx86/lib/x86fpu.js b/modules/pcx86/lib/x86fpu.js index e3df885d6..4d1fa6d3a 100644 --- a/modules/pcx86/lib/x86fpu.js +++ b/modules/pcx86/lib/x86fpu.js @@ -32,10 +32,10 @@ "use strict"; if (NODE) { - var Str = require("../../shared/es6/strlib"); - var Web = require("../../shared/es6/weblib"); - var Component = require("../../shared/es6/component"); - var State = require("../../shared/es6/state"); + var Str = require("../../shared/lib/strlib"); + var Web = require("../../shared/lib/weblib"); + var Component = require("../../shared/lib/component"); + var State = require("../../shared/lib/state"); var PCX86 = require("./defines"); var X86 = require("./x86"); } diff --git a/modules/pcx86/lib/x86help.js b/modules/pcx86/lib/x86help.js index d833a47de..6e2c4b173 100644 --- a/modules/pcx86/lib/x86help.js +++ b/modules/pcx86/lib/x86help.js @@ -29,7 +29,7 @@ "use strict"; if (NODE) { - var Str = require("../../shared/es6/strlib"); + var Str = require("../../shared/lib/strlib"); var Messages = require("./messages"); var X86 = require("./x86"); } diff --git a/modules/pcx86/lib/x86mods.js b/modules/pcx86/lib/x86mods.js index 4e48d9fd7..aef69c713 100644 --- a/modules/pcx86/lib/x86mods.js +++ b/modules/pcx86/lib/x86mods.js @@ -29,7 +29,7 @@ "use strict"; if (NODE) { - var Str = require("../../shared/es6/strlib"); + var Str = require("../../shared/lib/strlib"); var X86 = require("./x86"); } diff --git a/modules/pcx86/lib/x86ops.js b/modules/pcx86/lib/x86ops.js index 2ce44f105..9c3df0f9c 100644 --- a/modules/pcx86/lib/x86ops.js +++ b/modules/pcx86/lib/x86ops.js @@ -29,7 +29,7 @@ "use strict"; if (NODE) { - var Str = require("../../shared/es6/strlib"); + var Str = require("../../shared/lib/strlib"); var Messages = require("./messages"); var X86 = require("./x86"); } diff --git a/modules/pcx86/lib/x86seg.js b/modules/pcx86/lib/x86seg.js index 3d9c76b5e..4e8cd30c4 100644 --- a/modules/pcx86/lib/x86seg.js +++ b/modules/pcx86/lib/x86seg.js @@ -29,7 +29,7 @@ "use strict"; if (NODE) { - var Str = require("../../shared/es6/strlib"); + var Str = require("../../shared/lib/strlib"); var Messages = require("./messages"); var X86 = require("./x86"); } diff --git a/modules/pdp11/README.md b/modules/pdp11/README.md index 08c09c790..7e07d0acd 100644 --- a/modules/pdp11/README.md +++ b/modules/pdp11/README.md @@ -60,21 +60,6 @@ or generate both versions and use a loader that detects the browser's capabiliti Caveats ------- -### Shared modules - -All PCjs machines rely on shared modules that are normally stored in [/shared/lib](/shared/lib/). However, until -ALL the machines have been converted to use ES6 classes, shared code must now exist in two flavors: -[/shared/lib](/shared/lib/) and [/shared/es6](/shared/es6/). - -Once all the other machines have been converted to use ES6 classes, the shared ES6 code will be folded back into -[/shared/lib](/shared/lib/), and the temporary ES6 folder will go away. Obviously, there is incentive for me to do -this sooner rather than later, since in the interim, I must make any changes to shared code in both places. - -There's also a less obvious problem: if you load a web page that attempts to load two or more PCjs machines, one of -which uses [/shared/lib](/shared/lib/) and another of which uses [/shared/es6](/shared/es6/), at least one of them will -fail to start, because the two sets of shared code cannot coexist. Well, they *could* have coexisted if I had been -willing to change the names of all the shared global objects (like **Component**), but I wasn't. - ### *import* and *export* With regard to *import* and *export* statements, the main reason I use them is to inform my development environment diff --git a/modules/pdp11/lib/bus.js b/modules/pdp11/lib/bus.js index 04b8bb59d..b3141b9e6 100644 --- a/modules/pdp11/lib/bus.js +++ b/modules/pdp11/lib/bus.js @@ -33,10 +33,10 @@ "use strict"; if (NODE) { - var Str = require("../../shared/es6/strlib"); - var Usr = require("../../shared/es6/usrlib"); - var Component = require("../../shared/es6/component"); - var State = require("../../shared/es6/state"); + var Str = require("../../shared/lib/strlib"); + var Usr = require("../../shared/lib/usrlib"); + var Component = require("../../shared/lib/component"); + var State = require("../../shared/lib/state"); var PDP11 = require("./defines"); var MemoryPDP11 = require("./memory"); var MessagesPDP11 = require("./messages"); diff --git a/modules/pdp11/lib/computer.js b/modules/pdp11/lib/computer.js index c27c9300a..86af22cdc 100644 --- a/modules/pdp11/lib/computer.js +++ b/modules/pdp11/lib/computer.js @@ -29,13 +29,13 @@ "use strict"; if (NODE) { - var Str = require("../../shared/es6/strlib"); - var Usr = require("../../shared/es6/usrlib"); - var Web = require("../../shared/es6/weblib"); - var UserAPI = require("../../shared/es6/userapi"); - var ReportAPI = require("../../shared/es6/reportapi"); - var Component = require("../../shared/es6/component"); - var State = require("../../shared/es6/state"); + var Str = require("../../shared/lib/strlib"); + var Usr = require("../../shared/lib/usrlib"); + var Web = require("../../shared/lib/weblib"); + var UserAPI = require("../../shared/lib/userapi"); + var ReportAPI = require("../../shared/lib/reportapi"); + var Component = require("../../shared/lib/component"); + var State = require("../../shared/lib/state"); var PDP11 = require("./defines"); var BusPDP11 = require("./bus"); var MessagesPDP11 = require("./messages"); diff --git a/modules/pdp11/lib/cpu.js b/modules/pdp11/lib/cpu.js index 4ece95c03..b04efd044 100644 --- a/modules/pdp11/lib/cpu.js +++ b/modules/pdp11/lib/cpu.js @@ -29,8 +29,8 @@ "use strict"; if (NODE) { - var Str = require("../../shared/es6/strlib"); - var Component = require("../../shared/es6/component"); + var Str = require("../../shared/lib/strlib"); + var Component = require("../../shared/lib/component"); var MessagesPDP11 = require("./messages"); } diff --git a/modules/pdp11/lib/cpustate.js b/modules/pdp11/lib/cpustate.js index 2eb6e4599..c92e4eb81 100644 --- a/modules/pdp11/lib/cpustate.js +++ b/modules/pdp11/lib/cpustate.js @@ -33,10 +33,10 @@ "use strict"; if (NODE) { - var Str = require("../../shared/es6/strlib"); - var Web = require("../../shared/es6/weblib"); - var Component = require("../../shared/es6/component"); - var State = require("../../shared/es6/state"); + var Str = require("../../shared/lib/strlib"); + var Web = require("../../shared/lib/weblib"); + var Component = require("../../shared/lib/component"); + var State = require("../../shared/lib/state"); var PDP11 = require("./defines"); var BusPDP11 = require("./bus"); var CPUPDP11 = require("./cpu"); diff --git a/modules/pdp11/lib/debugger.js b/modules/pdp11/lib/debugger.js index 891cea6f6..9b1beda5d 100644 --- a/modules/pdp11/lib/debugger.js +++ b/modules/pdp11/lib/debugger.js @@ -29,13 +29,13 @@ "use strict"; if (NODE) { - var Str = require("../../shared/es6/strlib"); - var Usr = require("../../shared/es6/usrlib"); - var Web = require("../../shared/es6/weblib"); - var Component = require("../../shared/es6/component"); - var Debugger = require("../../shared/es6/debugger"); - var Keys = require("../../shared/es6/keys"); - var State = require("../../shared/es6/state"); + var Str = require("../../shared/lib/strlib"); + var Usr = require("../../shared/lib/usrlib"); + var Web = require("../../shared/lib/weblib"); + var Component = require("../../shared/lib/component"); + var Debugger = require("../../shared/lib/debugger"); + var Keys = require("../../shared/lib/keys"); + var State = require("../../shared/lib/state"); var PDP11 = require("./defines"); var BusPDP11 = require("./bus"); var MemoryPDP11 = require("./memory"); diff --git a/modules/pdp11/lib/device.js b/modules/pdp11/lib/device.js index 5307d8c86..3346f2603 100644 --- a/modules/pdp11/lib/device.js +++ b/modules/pdp11/lib/device.js @@ -33,10 +33,10 @@ "use strict"; if (NODE) { - var Str = require("../../shared/es6/strlib"); - var Web = require("../../shared/es6/weblib"); - var Component = require("../../shared/es6/component"); - var State = require("../../shared/es6/state"); + var Str = require("../../shared/lib/strlib"); + var Web = require("../../shared/lib/weblib"); + var Component = require("../../shared/lib/component"); + var State = require("../../shared/lib/state"); var PDP11 = require("./defines"); var BusPDP11 = require("./bus"); var MemoryPDP11 = require("./memory"); diff --git a/modules/pdp11/lib/disk.js b/modules/pdp11/lib/disk.js index 39724d101..265cf9a68 100644 --- a/modules/pdp11/lib/disk.js +++ b/modules/pdp11/lib/disk.js @@ -46,11 +46,11 @@ */ if (NODE) { - var Str = require("../../shared/es6/strlib"); - var Web = require("../../shared/es6/weblib"); - var DiskAPI = require("../../shared/es6/diskapi"); - var DumpAPI = require("../../shared/es6/dumpapi"); - var Component = require("../../shared/es6/component"); + var Str = require("../../shared/lib/strlib"); + var Web = require("../../shared/lib/weblib"); + var DiskAPI = require("../../shared/lib/diskapi"); + var DumpAPI = require("../../shared/lib/dumpapi"); + var Component = require("../../shared/lib/component"); var MessagesPDP11 = require("./messages"); } diff --git a/modules/pdp11/lib/drive.js b/modules/pdp11/lib/drive.js index fee5e1edc..2460868e2 100644 --- a/modules/pdp11/lib/drive.js +++ b/modules/pdp11/lib/drive.js @@ -29,11 +29,11 @@ "use strict"; if (NODE) { - var Str = require("../../shared/es6/strlib"); - var Web = require("../../shared/es6/weblib"); - var DiskAPI = require("../../shared/es6/diskapi"); - var Component = require("../../shared/es6/component"); - var State = require("../../shared/es6/state"); + var Str = require("../../shared/lib/strlib"); + var Web = require("../../shared/lib/weblib"); + var DiskAPI = require("../../shared/lib/diskapi"); + var Component = require("../../shared/lib/component"); + var State = require("../../shared/lib/state"); var PDP11 = require("./defines"); var MessagesPDP11 = require("./messages"); var DiskPDP11 = require("./disk"); diff --git a/modules/pdp11/lib/keyboard.js b/modules/pdp11/lib/keyboard.js index 26707d6ef..2a5e02b3d 100644 --- a/modules/pdp11/lib/keyboard.js +++ b/modules/pdp11/lib/keyboard.js @@ -29,8 +29,8 @@ "use strict"; if (NODE) { - var Web = require("../../shared/es6/weblib"); - var Component = require("../../shared/es6/component"); + var Web = require("../../shared/lib/weblib"); + var Component = require("../../shared/lib/component"); var PDP11 = require("./defines"); var MessagesPDP11 = require("./messages"); } diff --git a/modules/pdp11/lib/memory.js b/modules/pdp11/lib/memory.js index a2cd5a235..fb573f423 100644 --- a/modules/pdp11/lib/memory.js +++ b/modules/pdp11/lib/memory.js @@ -29,7 +29,7 @@ "use strict"; if (NODE) { - var Component = require("../../shared/es6/component"); + var Component = require("../../shared/lib/component"); var PDP11 = require("./defines"); var MessagesPDP11 = require("./messages"); } diff --git a/modules/pdp11/lib/panel.js b/modules/pdp11/lib/panel.js index 252024006..d8f5acb9c 100644 --- a/modules/pdp11/lib/panel.js +++ b/modules/pdp11/lib/panel.js @@ -33,10 +33,10 @@ "use strict"; if (NODE) { - var Str = require("../../shared/es6/strlib"); - var Web = require("../../shared/es6/weblib"); - var Component = require("../../shared/es6/component"); - var State = require("../../shared/es6/state"); + var Str = require("../../shared/lib/strlib"); + var Web = require("../../shared/lib/weblib"); + var Component = require("../../shared/lib/component"); + var State = require("../../shared/lib/state"); var PDP11 = require("./defines"); var BusPDP11 = require("./bus"); var MessagesPDP11 = require("./messages"); diff --git a/modules/pdp11/lib/pc11.js b/modules/pdp11/lib/pc11.js index bba5feeb9..fc3fbdbd1 100644 --- a/modules/pdp11/lib/pc11.js +++ b/modules/pdp11/lib/pc11.js @@ -29,11 +29,11 @@ "use strict"; if (NODE) { - var Str = require("../../shared/es6/strlib"); - var Web = require("../../shared/es6/weblib"); - var DumpAPI = require("../../shared/es6/dumpapi"); - var Component = require("../../shared/es6/component"); - var State = require("../../shared/es6/state"); + var Str = require("../../shared/lib/strlib"); + var Web = require("../../shared/lib/weblib"); + var DumpAPI = require("../../shared/lib/dumpapi"); + var Component = require("../../shared/lib/component"); + var State = require("../../shared/lib/state"); var PDP11 = require("./defines"); var MessagesPDP11 = require("./messages"); } diff --git a/modules/pdp11/lib/ram.js b/modules/pdp11/lib/ram.js index bf0d29c89..c57ef304b 100644 --- a/modules/pdp11/lib/ram.js +++ b/modules/pdp11/lib/ram.js @@ -29,10 +29,10 @@ "use strict"; if (NODE) { - var Str = require("../../shared/es6/strlib"); - var Web = require("../../shared/es6/weblib"); - var DumpAPI = require("../../shared/es6/dumpapi"); - var Component = require("../../shared/es6/component"); + var Str = require("../../shared/lib/strlib"); + var Web = require("../../shared/lib/weblib"); + var DumpAPI = require("../../shared/lib/dumpapi"); + var Component = require("../../shared/lib/component"); var PDP11 = require("./defines"); var MemoryPDP11 = require("./memory"); var MessagesPDP11 = require("./messages"); diff --git a/modules/pdp11/lib/rk11.js b/modules/pdp11/lib/rk11.js index dc91e6579..d582ae652 100644 --- a/modules/pdp11/lib/rk11.js +++ b/modules/pdp11/lib/rk11.js @@ -33,7 +33,7 @@ "use strict"; if (NODE) { - var Str = require("../../shared/es6/strlib"); + var Str = require("../../shared/lib/strlib"); var PDP11 = require("./defines"); var MessagesPDP11 = require("./messages"); var DriveController = require("./drive"); diff --git a/modules/pdp11/lib/rl11.js b/modules/pdp11/lib/rl11.js index e5a6fb853..a29536ee5 100644 --- a/modules/pdp11/lib/rl11.js +++ b/modules/pdp11/lib/rl11.js @@ -33,7 +33,7 @@ "use strict"; if (NODE) { - var Str = require("../../shared/es6/strlib"); + var Str = require("../../shared/lib/strlib"); var PDP11 = require("./defines"); var MessagesPDP11 = require("./messages"); var DriveController = require("./drive"); diff --git a/modules/pdp11/lib/rom.js b/modules/pdp11/lib/rom.js index 09dc55ca5..e01ff8548 100644 --- a/modules/pdp11/lib/rom.js +++ b/modules/pdp11/lib/rom.js @@ -29,10 +29,10 @@ "use strict"; if (NODE) { - var Str = require("../../shared/es6/strlib"); - var Web = require("../../shared/es6/weblib"); - var DumpAPI = require("../../shared/es6/dumpapi"); - var Component = require("../../shared/es6/component"); + var Str = require("../../shared/lib/strlib"); + var Web = require("../../shared/lib/weblib"); + var DumpAPI = require("../../shared/lib/dumpapi"); + var Component = require("../../shared/lib/component"); var PDP11 = require("./defines"); var BusPDP11 = require("./bus"); var MemoryPDP11 = require("./memory"); diff --git a/modules/pdp11/lib/serial.js b/modules/pdp11/lib/serial.js index 0db11f202..a753be61e 100644 --- a/modules/pdp11/lib/serial.js +++ b/modules/pdp11/lib/serial.js @@ -33,11 +33,11 @@ "use strict"; if (NODE) { - var Str = require("../../shared/es6/strlib"); - var Web = require("../../shared/es6/weblib"); - var Component = require("../../shared/es6/component"); - var Keys = require("../../shared/es6/keys"); - var State = require("../../shared/es6/state"); + var Str = require("../../shared/lib/strlib"); + var Web = require("../../shared/lib/weblib"); + var Component = require("../../shared/lib/component"); + var Keys = require("../../shared/lib/keys"); + var State = require("../../shared/lib/state"); var PDP11 = require("./defines"); var MessagesPDP11 = require("./messages"); } diff --git a/modules/shared/es6/README.md b/modules/shared/es6/README.md deleted file mode 100644 index c01780b84..000000000 --- a/modules/shared/es6/README.md +++ /dev/null @@ -1,28 +0,0 @@ -Shared (ES6) Sources -==================== - -This folder contains a mix of shared code, with some files used only by Node (server) modules, -some used only by Browser (client) modules, and others used by both. - -At the moment, only a few files are completely agnostic; eg: [strlib.js](strlib.js) and [usrlib.js](usrlib.js). -One give-away is that neither contain references to any globals (although references to each other -would be fine). - -[netlib.js](netlib.js) is appropriate only for Node modules, because it contains code that relies on Node's -global *Buffer* object, as indicated by: - - /* global Buffer: false */ - -[weblib.js](weblib.js) is appropriate only for client modules, because it contains code that relies on the -browser's global *window* object, as indicated by: - - /* global window: true */ - -We declare *window* modifiable (true) so that [defines.js](defines.js) can set *global.window* to *false* -when running within Node, allowing any other code to test the existence of *window* with a simple: - - if (window) {...} - -instead of: - - if (typeof window !== "undefined") {...} diff --git a/modules/shared/es6/component.js b/modules/shared/es6/component.js deleted file mode 100644 index 58bafd9ff..000000000 --- a/modules/shared/es6/component.js +++ /dev/null @@ -1,1126 +0,0 @@ -/** - * @fileoverview The Component class used by all PCjs components. - * @author Jeff Parsons - * @copyright © Jeff Parsons 2012-2017 - * - * This file is part of PCjs, a computer emulation software project at . - * - * PCjs is free software: you can redistribute it and/or modify it under the terms of the - * GNU General Public License as published by the Free Software Foundation, either version 3 - * of the License, or (at your option) any later version. - * - * PCjs is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without - * even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along with PCjs. If not, - * see . - * - * You are required to include the above copyright notice in every modified copy of this work - * and to display that copyright notice when the software starts running; see COPYRIGHT in - * . - * - * Some PCjs files also attempt to load external resource files, such as character-image files, - * ROM files, and disk image files. Those external resource files are not considered part of PCjs - * for purposes of the GNU General Public License, and the author does not claim any copyright - * as to their contents. - */ - -/* - * All PCjs components now use JSDoc types, primarily so that Google's Closure Compiler will compile - * everything with zero warnings when ADVANCED_OPTIMIZATIONS are enabled. For more information about - * the JSDoc types supported by the Closure Compiler: - * - * https://developers.google.com/closure/compiler/docs/js-for-compiler#types - * - * I also attempted to validate this code with JSLint, but it complained too much; eg, it didn't like - * "while (true)", a tried and "true" programming convention for decades, and it wanted me to replace - * all "++" and "--" operators with "+= 1" and "-= 1", use "(s || '')" instead of "(s? s : '')", etc. - * - * I prefer sticking with traditional C-style idioms, in part because they are more portable. That - * does NOT mean I'm trying to write "portable JavaScript," but some of this code was ported from C code - * I'd written long ago, so portability is good, and I'm not going to throw that away if there's no need. - * - * UPDATE: I've since switched from JSLint to JSHint, which seems to have more reasonable defaults. - * And for new code, I have adopted some popular JavaScript idioms, like "(s || '')", although the need - * for those kinds of expressions will be reduced as I also start adopting some ES6 features, like - * default parameters. - */ - -"use strict"; - -/** - * Since the Closure Compiler treats ES6 classes as @struct rather than @dict by default, - * it deters us from defining named properties on our components; eg: - * - * this['exports'] = {...} - * - * results in an error: - * - * Cannot do '[]' access on a struct - * - * So, in order to define 'exports', we must override the @struct assumption by annotating - * the class as @unrestricted (or @dict). Note that this must be done both here and in the - * subclass (eg, SerialPort), because otherwise the Compiler won't allow us to *reference* - * the named property either. - * - * TODO: Consider marking ALL our classes unrestricted, because otherwise it forces us to - * define every single property the class uses in its constructor, which results in a fair - * bit of redundant initialization, since many properties aren't (and don't need to be) fully - * initialized until the appropriate init(), reset(), restore(), etc. function is called. - * - * The upside, however, may be that since the structure of the class is completely defined by - * the constructor, JavaScript engines may be able to optimize and run more efficiently. - * - * @unrestricted - */ -class Component { - /** - * Component(type, parms, bitsMessage) - * - * A Component object requires: - * - * type: a user-defined type name (eg, "CPU") - * - * and accepts any or all of the following (parms) properties: - * - * id: component ID (default is "") - * name: component name (default is ""; if blank, toString() will use the type name only) - * comment: component comment string (default is undefined) - * - * Component subclasses will usually have additional (parms) properties. - * - * @param {string} type - * @param {Object} [parms] - * @param {number} [bitsMessage] selects message(s) that the component wants to enable (default is 0) - */ - constructor(type, parms, bitsMessage) - { - this.type = type; - - if (!parms) parms = {'id': "", 'name': ""}; - - this.id = parms['id'] || ""; - this.name = parms['name']; - this.comment = parms['comment']; - this.parms = parms; - - /* - * The following Component properties need to be accessible by other machines and/or command scripts; - * well, OK, or we could have exported some new functions to walk the contents of these properties, as we - * did with findMachineComponent(), but this works just as well. - * - * Also, while the double-assignment looks silly (ie, using both dot and bracket property notation), it - * resolves a complaint from the Closure Compiler, because if we use ONLY bracket notation here, then the - * Compiler wants us to change all the other references to bracket notation as well. - */ - this.exports = this['exports'] = {}; - this.bindings = this['bindings'] = {}; - - var i = this.id.indexOf('.'); - if (i < 0) { - this.idComponent = this.id; - } else { - this.idMachine = this.id.substr(0, i); - this.idComponent = this.id.substr(i + 1); - } - - /* - * Gather all the various component flags (booleans) into a single "flags" object, and encourage - * subclasses to do the same, to reduce the property clutter we have to wade through while debugging. - */ - this.flags = { - ready: false, - busy: false, - busyCancel: false, - powered: false, - error: false - }; - - this.fnReady = null; - this.clearError(); - this.bitsMessage = bitsMessage || 0; - - /** @type {Object|null} controlPrint is the HTML control, if any, that we can print to */ - this.controlPrint = null; - - this.cmp = null; - this.bus = null; - this.cpu = null; - this.dbg = null; - - /* - * TODO: Consider adding another parameter to the Component() constructor that allows components to tell - * us if they support single or multiple instances per machine. For example, there can be multiple SerialPort - * components per machine, but only one CPU component (some machines also support an FPU, but that component - * is considered separate from the CPU). - * - * It's not critical, but it would help catch machine configuration errors; for example, a machine that mistakenly - * includes two CPU components may, aside from wasting memory, end up with odd side-effects, like unresponsive - * CPU controls. - */ - Component.add(this); - } - - /** - * Component.add(component) - * - * @param {Component} component - */ - static add(component) - { - /* - * This just generates a lot of useless noise, handy in the early days, not so much these days.... - * - * if (DEBUG) Component.log("Component.add(" + component.type + "," + component.id + ")"); - */ - Component.components.push(component); - } - - /** - * Component.addMachine(idMachine) - * - * @param {string} idMachine - */ - static addMachine(idMachine) - { - Component.machines[idMachine] = {}; - } - - /** - * Component.addMachineResource(idMachine, sName, data) - * - * @param {string} idMachine - * @param {string|null} sName (name of the resource) - * @param {*} data - */ - static addMachineResource(idMachine, sName, data) - { - /* - * I used to assert(Component.machines[idMachine]), but when we're running as a Node app, embed.js is not used, - * so addMachine() is never called, so resources do not need to be recorded. - */ - if (Component.machines[idMachine] && sName) { - Component.machines[idMachine][sName] = data; - } - } - - /** - * Component.getMachineResources(idMachine) - * - * @param {string} idMachine - * @return {Object|undefined} - */ - static getMachineResources(idMachine) - { - return Component.machines[idMachine]; - } - - /** - * Component.getTime() - * - * @return {number} the current time, in milliseconds - */ - static getTime() - { - return Date.now() || +new Date(); - } - - /** - * Component.log(s, type) - * - * For diagnostic output only. - * - * @param {string} [s] is the message text - * @param {string} [type] is the message type - */ - static log(s, type) - { - if (!COMPILED) { - if (s) { - var sElapsed = "", sMsg = (type? (type + ": ") : "") + s; - if (typeof Usr != "undefined") { - if (Component.msStart === undefined) { - Component.msStart = Component.getTime(); - } - sElapsed = (Component.getTime() - Component.msStart) + "ms: "; - } - if (window && window.console) console.log(sElapsed + sMsg.replace(/\n/g, " ")); - } - } - } - - /** - * Component.assert(f, s) - * - * Verifies conditions that must be true (for DEBUG builds only). - * - * The Closure Compiler should automatically remove all references to Component.assert() in non-DEBUG builds. - * TODO: Add a task to the build process that "asserts" there are no instances of "assertion failure" in RELEASE builds. - * - * @param {boolean} f is the expression we are asserting to be true - * @param {string} [s] is description of the assertion on failure - */ - static assert(f, s) - { - if (DEBUG) { - if (!f) { - if (!s) s = "assertion failure"; - Component.log(s); - throw new Error(s); - } - } - } - - /** - * Component.println(s, type, id) - * - * For non-diagnostic messages, which components may override to control the destination/appearance of their output. - * - * Components that inherit from this class should use the instance method, this.println(), rather than Component.println(), - * because if a Control Panel is loaded, it will override only the instance method, not the class method (overriding the class - * method would improperly affect any other machines loaded on the same page). - * - * @param {string} [s] is the message text - * @param {string} [type] is the message type - * @param {string} [id] is the caller's ID, if any - */ - static println(s, type, id) - { - if (!COMPILED) { - Component.log((id? (id + ": ") : "") + (s? ("\"" + s + "\"") : ""), type); - } - } - - /** - * Component.notice(s, fPrintOnly, id) - * - * notice() is like println() but implies a need for user notification, so we alert() as well. - * - * @param {string} s is the message text - * @param {boolean} [fPrintOnly] - * @param {string} [id] is the caller's ID, if any - */ - static notice(s, fPrintOnly, id) - { - if (!COMPILED) { - Component.println(s, "notice", id); - } - if (!fPrintOnly) Component.alertUser((id? (id + ": ") : "") + s); - } - - /** - * Component.warning(s) - * - * @param {string} s describes the warning - */ - static warning(s) - { - if (!COMPILED) { - Component.println(s, "warning"); - } - Component.alertUser(s); - } - - /** - * Component.error(s) - * - * @param {string} s describes the error; an alert() is displayed as well - */ - static error(s) - { - if (!COMPILED) { - Component.println(s, "error"); - } - Component.alertUser(s); - } - - /** - * Component.alertUser(sMessage) - * - * @param {string} sMessage - */ - static alertUser(sMessage) - { - if (window) { - window.alert(sMessage); - } else { - Component.log(sMessage); - } - }; - - /** - * Component.confirmUser(sPrompt) - * - * @param {string} sPrompt - * @returns {boolean} true if the user clicked OK, false if Cancel/Close - */ - static confirmUser(sPrompt) - { - var fResponse = false; - if (window) { - fResponse = window.confirm(sPrompt); - } - return fResponse; - } - - /** - * Component.promptUser() - * - * @param {string} sPrompt - * @param {string} [sDefault] - * @returns {string|null} - */ - static promptUser(sPrompt, sDefault) - { - var sResponse = null; - if (window) { - sResponse = window.prompt(sPrompt, sDefault === undefined? "" : sDefault); - } - return sResponse; - } - - /** - * Component.getComponents(idRelated) - * - * We could store components as properties, using the component's ID, and change - * this linear lookup into a property lookup, but some components may have no ID. - * - * @param {string} [idRelated] of related component - * @return {Array} of components - */ - static getComponents(idRelated) - { - var i; - var aComponents = []; - /* - * getComponentByID(id, idRelated) - * - * If idRelated is provided, we check it for a machine prefix, and use any - * existing prefix to constrain matches to IDs with the same prefix, in order to - * avoid matching components belonging to other machines. - */ - if (idRelated) { - if ((i = idRelated.indexOf('.')) > 0) - idRelated = idRelated.substr(0, i + 1); - else - idRelated = ""; - } - for (i = 0; i < Component.components.length; i++) { - var component = Component.components[i]; - if (!idRelated || !component.id.indexOf(idRelated)) { - aComponents.push(component); - } - } - return aComponents; - } - - /** - * Component.getComponentByID(id, idRelated) - * - * We could store components as properties, using the component's ID, and change - * this linear lookup into a property lookup, but some components may have no ID. - * - * @param {string} id of the desired component - * @param {string} [idRelated] of related component - * @return {Component|null} - */ - static getComponentByID(id, idRelated) - { - if (id !== undefined) { - var i; - /* - * If idRelated is provided, we check it for a machine prefix, and use any - * existing prefix to constrain matches to IDs with the same prefix, in order to - * avoid matching components belonging to other machines. - */ - if (idRelated && (i = idRelated.indexOf('.')) > 0) { - id = idRelated.substr(0, i + 1) + id; - } - for (i = 0; i < Component.components.length; i++) { - if (Component.components[i].id === id) { - return Component.components[i]; - } - } - if (Component.components.length) { - Component.log("Component ID '" + id + "' not found", "warning"); - } - } - return null; - } - - /** - * Component.getComponentByType(sType, idRelated, componentPrev) - * - * @param {string} sType of the desired component - * @param {string} [idRelated] of related component - * @param {Component|null} [componentPrev] of previously returned component, if any - * @return {Component|null} - */ - static getComponentByType(sType, idRelated, componentPrev) - { - if (sType !== undefined) { - var i; - /* - * If idRelated is provided, we check it for a machine prefix, and use any - * existing prefix to constrain matches to IDs with the same prefix, in order to - * avoid matching components belonging to other machines. - */ - if (idRelated) { - if ((i = idRelated.indexOf('.')) > 0) { - idRelated = idRelated.substr(0, i + 1); - } else { - idRelated = ""; - } - } - for (i = 0; i < Component.components.length; i++) { - if (componentPrev) { - if (componentPrev == Component.components[i]) componentPrev = null; - continue; - } - if (sType == Component.components[i].type && (!idRelated || !Component.components[i].id.indexOf(idRelated))) { - return Component.components[i]; - } - } - Component.log("Component type '" + sType + "' not found", "warning"); - } - return null; - } - - /** - * Component.getComponentParms(element) - * - * @param {Object} element from the DOM - */ - static getComponentParms(element) - { - var parms = null; - var sParms = element.getAttribute("data-value"); - if (sParms) { - try { - parms = eval("(" + sParms + ")"); // jshint ignore:line - /* - * We can no longer invoke removeAttribute() because some components (eg, Panel) need - * to run their initXXX() code more than once, to avoid initialization-order dependencies. - * - * if (!DEBUG) { - * element.removeAttribute("data-value"); - * } - */ - } catch(e) { - Component.error(e.message + " (" + sParms + ")"); - } - } - return parms; - } - - /** - * Component.bindExternalControl(component, sControl, sBinding, sType) - * - * @param {Component} component - * @param {string} sControl - * @param {string} sBinding - * @param {string} [sType] is the external component type - */ - static bindExternalControl(component, sControl, sBinding, sType) - { - if (sControl) { - if (sType === undefined) sType = "Panel"; - var target = Component.getComponentByType(sType, component.id); - if (target) { - var eBinding = target.bindings[sControl]; - if (eBinding) { - component.setBinding(null, sBinding, eBinding); - } - } - } - } - - /** - * Component.bindComponentControls(component, element, sAppClass) - * - * @param {Component} component - * @param {Object} element from the DOM - * @param {string} sAppClass - */ - static bindComponentControls(component, element, sAppClass) - { - var aeControls = Component.getElementsByClass(element.parentNode, sAppClass + "-control"); - - for (var iControl = 0; iControl < aeControls.length; iControl++) { - - var aeChildNodes = aeControls[iControl].childNodes; - - for (var iNode = 0; iNode < aeChildNodes.length; iNode++) { - var control = aeChildNodes[iNode]; - if (control.nodeType !== 1 /* document.ELEMENT_NODE */) { - continue; - } - var sClass = control.getAttribute("class"); - if (!sClass) continue; - var aClasses = sClass.split(" "); - for (var iClass = 0; iClass < aClasses.length; iClass++) { - var parms; - sClass = aClasses[iClass]; - switch (sClass) { - case sAppClass + "-binding": - parms = Component.getComponentParms(control); - if (parms && parms['binding']) { - component.setBinding(parms['type'], parms['binding'], control, parms['value']); - } else if (!parms || parms['type'] != "description") { - Component.log("Component '" + component.toString() + "' missing binding" + (parms? " for " + parms['type'] : ""), "warning"); - } - iClass = aClasses.length; - break; - default: - // if (DEBUG) Component.log("Component.bindComponentControls(" + component.toString() + "): unrecognized control class \"" + sClass + "\"", "warning"); - break; - } - } - } - } - } - - /** - * Component.getElementsByClass(element, sClass, sObjClass) - * - * This is a cross-browser helper function, since not all browser's support getElementsByClassName() - * - * TODO: This should probably be moved into weblib.js at some point, along with the control binding functions above, - * to keep all the browser-related code together. - * - * @param {Object} element from the DOM - * @param {string} sClass - * @param {string} [sObjClass] - * @return {Array|NodeList} - */ - static getElementsByClass(element, sClass, sObjClass) - { - if (sObjClass) sClass += '-' + sObjClass + "-object"; - /* - * Use the browser's built-in getElementsByClassName() if it appears to be available - * (for example, it's not available in IE8, but it should be available in IE9 and up) - */ - if (element.getElementsByClassName) { - return element.getElementsByClassName(sClass); - } - var i, j, ae = []; - var aeAll = element.getElementsByTagName("*"); - var re = new RegExp('(^| )' + sClass + '( |$)'); - for (i = 0, j = aeAll.length; i < j; i++) { - if (re.test(aeAll[i].className)) { - ae.push(aeAll[i]); - } - } - if (!ae.length) { - Component.log('No elements of class "' + sClass + '" found'); - } - return ae; - } - - /** - * toString() - * - * @this {Component} - * @return {string} - */ - toString() { - return (this.name? this.name : (this.id || this.type)); - } - - /** - * getMachineNum() - * - * @this {Component} - * @return {number} unique machine number - */ - getMachineNum() { - var nMachine = 1; - if (this.idMachine) { - var aDigits = this.idMachine.match(/\d+/); - if (aDigits !== null) - nMachine = parseInt(aDigits[0], 10); - } - return nMachine; - } - - /** - * setBinding(sHTMLType, sBinding, control, sValue) - * - * Component's setBinding() method is intended to be overridden by subclasses. - * - * @this {Component} - * @param {string|null} sHTMLType is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea", "canvas") - * @param {string} sBinding is the value of the 'binding' parameter stored in the HTML control's "data-value" attribute (eg, "reset") - * @param {Object} control is the HTML control DOM object (eg, HTMLButtonElement) - * @param {string} [sValue] optional data value - * @return {boolean} true if binding was successful, false if unrecognized binding request - */ - setBinding(sHTMLType, sBinding, control, sValue) { - switch (sBinding) { - case "clear": - if (!this.bindings[sBinding]) { - this.bindings[sBinding] = control; - control.onclick = (function(component) { - return function clearPanel() { - if (component.bindings['print']) { - component.bindings['print'].value = ""; - } - }; - }(this)); - } - return true; - case "print": - if (!this.bindings[sBinding]) { - this.bindings[sBinding] = control; - /* - * HACK: Save this particular HTML element so that the Debugger can access it, too - */ - this.controlPrint = control; - /* - * This was added for Firefox (Safari automatically clears the