Converted PC8080 to ES6
This commit is contained in:
parent
d930b31c53
commit
0f680839f7
27 changed files with 11054 additions and 10896 deletions
|
|
@ -138,16 +138,9 @@ class Component {
|
|||
/** @type {Object|null} controlPrint is the HTML control, if any, that we can print to */
|
||||
this.controlPrint = null;
|
||||
|
||||
/** @type {ComputerPDP11|null} */
|
||||
this.cmp = null;
|
||||
|
||||
/** @type {BusPDP11|null} */
|
||||
this.bus = null;
|
||||
|
||||
/** @type {CPUStatePDP11|null} */
|
||||
this.cpu = null;
|
||||
|
||||
/** @type {DebuggerPDP11|null} */
|
||||
this.dbg = null;
|
||||
|
||||
/*
|
||||
|
|
@ -969,6 +962,31 @@ class Component {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* printMessageIO(port, bOut, addrFrom, name, bIn, bitsMessage)
|
||||
*
|
||||
* If bitsMessage is not specified, the component's MESSAGE category is used.
|
||||
* If bitsMessage is true, the message is displayed as long as MESSAGE.PORT is enabled.
|
||||
*
|
||||
* @this {Component}
|
||||
* @param {number} port
|
||||
* @param {number|null} bOut if an output operation
|
||||
* @param {number|null} [addrFrom]
|
||||
* @param {string|null} [name] of the port, if any
|
||||
* @param {number|null} [bIn] is the input value, if known, on an input operation
|
||||
* @param {number|boolean} [bitsMessage] is zero or more MESSAGE_* category flag(s)
|
||||
*/
|
||||
printMessageIO(port, bOut, addrFrom, name, bIn, bitsMessage) {
|
||||
if (DEBUGGER && this.dbg) {
|
||||
if (bitsMessage === true) {
|
||||
bitsMessage = 0;
|
||||
} else if (bitsMessage == null) {
|
||||
bitsMessage = this.bitsMessage;
|
||||
}
|
||||
this.dbg.messageIO(this, port, bOut, addrFrom, name, bIn, bitsMessage);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -50,6 +50,31 @@ var Component = require("../../shared/es6/component");
|
|||
*/
|
||||
var DbgAddr;
|
||||
|
||||
/**
|
||||
* 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 Debugger extends Component {
|
||||
/**
|
||||
* Debugger(parmsDbg)
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ var Keys = {
|
|||
/*
|
||||
* Keys and/or key combinations that generate common ASCII codes.
|
||||
*
|
||||
* NOTE: If you're looking for a general-purpose ASCII code table, see str.ASCII in strlib.js;
|
||||
* NOTE: If you're looking for a general-purpose ASCII code table, see Str.ASCII in strlib.js;
|
||||
* if something's missing, that's probably the more appropriate table to add it to.
|
||||
*
|
||||
* TODO: The Closure Compiler doesn't inline all references to these values, at least those with
|
||||
|
|
|
|||
Loading…
Reference in a new issue