Fixed RL11 type errors
This commit is contained in:
parent
edf22928b9
commit
2c5d7c9066
2 changed files with 29 additions and 1 deletions
|
|
@ -32,3 +32,4 @@ we need to use an RL02 drive. A typical PDP-11 machine with a single RL11 disk
|
|||
up to four such drives, which we refer to as RL0 through RL3.
|
||||
|
||||
To select drive RL0, press {% include machine-command.html type='button' label='Select RL0' machine='test1170' component='RL11' command='selectDrive' value='RL0' %}
|
||||
|
||||
|
|
|
|||
|
|
@ -39,6 +39,31 @@ if (NODE) {
|
|||
var DiskPDP11 = require("./disk");
|
||||
}
|
||||
|
||||
/**
|
||||
* 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
|
||||
* Component class, 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 RL11 extends Component {
|
||||
/**
|
||||
* RL11(parms)
|
||||
|
|
@ -837,7 +862,9 @@ class RL11 extends Component {
|
|||
for (var i = 0; i < nDrives; i++) {
|
||||
if (controlDrives.options[i].innerHTML == sDrive) {
|
||||
var iDrive = Str.parseInt(controlDrives.options[i].value, 10);
|
||||
return this.displayDisk(iDrive, true);
|
||||
if (iDrive >= 0) {
|
||||
return this.displayDisk(iDrive, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue