Socket
Socket
Sign inDemoInstall

hdl-js

Package Overview
Dependencies
Maintainers
1
Versions
72
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

hdl-js - npm Package Compare versions

Comparing version 0.0.65 to 0.0.66

116

dist/bin/hdl-js-cli.js

@@ -295,2 +295,62 @@ /**

function execScript(script) {
var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
_ref$verbose = _ref.verbose,
verbose = _ref$verbose === undefined ? false : _ref$verbose;
try {
new ScriptInterpreter({
file: script,
workingDirectory: path.dirname(script)
}).exec();
if (verbose) {
console.info(colors.green('\n\u2713 Script executed successfully!\n'));
} else {
console.info(colors.green('[PASS]'), path.basename(script));
}
} catch (e) {
if (!verbose) {
console.info(colors.red('[FAIL]'), path.basename(script));
return;
}
if (!e.errorData) {
console.info('Script error:', e);
return;
}
var _e$errorData = e.errorData,
header = _e$errorData.header,
actual = _e$errorData.actual,
expected = _e$errorData.expected,
line = _e$errorData.line,
compareTo = _e$errorData.compareTo;
console.info(colors.red('\nError executing the script:\n'));
var pad2 = ' ';
var pad4 = ' ';
var firstColumnLength = header.slice(1).indexOf('|');
var firstLinePad = '1'.padStart(line.toString().length, ' ');
var maxLinePad = ' '.repeat(line.toString().length);
console.info(pad2, colors.bold('Expected'), 'on line', colors.bold(line), 'of', colors.bold(compareTo) + ':\n');
console.info(pad4, firstLinePad, colors.green(header));
if (line != 2) {
console.info(pad4, maxLinePad + ' |' + centerString('...', firstColumnLength));
}
console.info(pad4, line, colors.green(expected), '\n');
console.info(pad2, colors.bold('Received:\n'));
console.info(pad4, firstLinePad, colors.red(header));
if (line != 2) {
console.info(pad4, maxLinePad + ' |' + centerString('...', firstColumnLength));
}
console.info(pad4, line, colors.red(actual), '\n');
}
}
function main() {

@@ -312,39 +372,13 @@ var clockRate = options.clockRate,

if (script) {
try {
new ScriptInterpreter({
file: script,
workingDirectory: path.dirname(script)
}).exec();
console.info(colors.green('\n\u2713 Script executed successfully!\n'));
} catch (e) {
var _e$errorData = e.errorData,
header = _e$errorData.header,
actual = _e$errorData.actual,
expected = _e$errorData.expected,
line = _e$errorData.line,
compareTo = _e$errorData.compareTo;
console.info(colors.red('\nError executing the script:\n'));
var pad2 = ' ';
var pad4 = ' ';
var firstColumnLength = header.slice(1).indexOf('|');
var firstLinePad = '1'.padStart(line.toString().length, ' ');
var maxLinePad = ' '.repeat(line.toString().length);
console.info(pad2, colors.bold('Expected'), 'on line', colors.bold(line), 'of', colors.bold(compareTo) + ':\n');
console.info(pad4, firstLinePad, colors.green(header));
if (line != 2) {
console.info(pad4, maxLinePad + ' |' + centerString('...', firstColumnLength));
}
console.info(pad4, line, colors.green(expected), '\n');
console.info(pad2, colors.bold('Received:\n'));
console.info(pad4, firstLinePad, colors.red(header));
if (line != 2) {
console.info(pad4, maxLinePad + ' |' + centerString('...', firstColumnLength));
}
console.info(pad4, line, colors.red(actual), '\n');
if (fs.lstatSync(script).isDirectory()) {
// Run the whole directory:
fs.readdirSync(script).forEach(function (file) {
if (path.extname(file) !== '.tst') {
return;
}
execScript(script + '/' + file, { verbose: false });
});
} else {
// Single script in the verbose mode:
execScript(script, { verbose: true });
}

@@ -422,9 +456,9 @@ }

var _expected = (data[row][column] >>> 0).toString(formatRadix).padStart(formatRadix !== 10 ? pinInfo.size : 0, '0').toUpperCase();
var expected = (data[row][column] >>> 0).toString(formatRadix).padStart(formatRadix !== 10 ? pinInfo.size : 0, '0').toUpperCase();
if (_expected.length > formatStringLengh) {
_expected = _expected.slice(-formatStringLengh);
if (expected.length > formatStringLengh) {
expected = expected.slice(-formatStringLengh);
}
return colors.red(_expected) + ' / ' + colors.green(value);
return colors.red(expected) + ' / ' + colors.green(value);
}

@@ -431,0 +465,0 @@ return value;

@@ -21,3 +21,3 @@ /**

*/
var TRUTH_TABLE = [{ in: 0, sel: 0, out1: 0, out2: 0 }, { in: 0, sel: 1, out1: 0, out2: 0 }, { in: 1, sel: 0, out1: 1, out2: 0 }, { in: 1, sel: 1, out1: 0, out2: 1 }];
var TRUTH_TABLE = [{ in: 0, sel: 0, a: 0, b: 0 }, { in: 0, sel: 1, a: 0, b: 0 }, { in: 1, sel: 0, a: 1, b: 0 }, { in: 1, sel: 1, a: 0, b: 1 }];

@@ -60,6 +60,6 @@ /**

description: ['Implements 1-bit demultiplexer (DMux) gate.', '', '{out1 = in, out2 = 0 }, when sel = 0', '{out1 = 0, out2 = in}, when sel = 1'].join('\n'),
description: ['Implements 1-bit demultiplexer (DMux) gate.', '', '{a = in, b = 0 }, when sel = 0', '{a = 0, b = in}, when sel = 1'].join('\n'),
inputPins: ['in', 'sel'],
outputPins: ['out1', 'out2'],
outputPins: ['a', 'b'],

@@ -66,0 +66,0 @@ truthTable: TRUTH_TABLE

@@ -27,3 +27,45 @@ /**

var TRUTH_TABLE = int16Table([{ $clock: -0, in: 0, load: 0, address: 0, out: 0 }, { $clock: +0, in: 21, load: 1, address: 0, out: 0 }, { $clock: -1, in: 1, load: 0, address: 0, out: 21 }, { $clock: +1, in: 21, load: 0, address: 0, out: 21 }, { $clock: -2, in: 21, load: 0, address: 0, out: 21 }, { $clock: +2, in: 53781, load: 1, address: 2, out: 21 }, { $clock: -3, in: 53781, load: 0, address: 2, out: 53781 }]);
var TRUTH_TABLE = int16Table([{
$clock: -0,
in: 0,
load: 0,
address: 0,
out: 0
}, {
$clock: +0,
in: 21,
load: 1,
address: 0,
out: 0
}, {
$clock: -1,
in: 1,
load: 0,
address: 0,
out: 21
}, {
$clock: +1,
in: 21,
load: 0,
address: 0,
out: 21
}, {
$clock: -2,
in: 21,
load: 0,
address: 0,
out: 21
}, {
$clock: +2,
in: 53781,
load: 1,
address: 2,
out: 0
}, {
$clock: -3,
in: 53781,
load: 0,
address: 2,
out: 53781
}]);

@@ -124,2 +166,12 @@ /**

/**
* Update output for address.
*/
}, {
key: 'eval',
value: function _eval() {
this._updateOutput();
}
/**
* On rising edge RAM updates the value by the address if the

@@ -150,2 +202,12 @@ * `load` is set, otherwise -- preserves the value.

value: function clockDown() {
this._updateOutput();
}
/**
* Updates the output on address change, and on clock down.
*/
}, {
key: '_updateOutput',
value: function _updateOutput() {
var address = this.getInputPins()[2].getValue();

@@ -152,0 +214,0 @@ this.getOutputPins()[0].setValue(this._storage[address]);

@@ -25,3 +25,69 @@ /**

var TRUTH_TABLE = int16Table([{ $clock: -0, in: 0, load: 0, address: 0, out: 0 }, { $clock: +0, in: 21, load: 1, address: 0, out: 0 }, { $clock: -1, in: 1, load: 0, address: 0, out: 21 }, { $clock: +1, in: 21, load: 0, address: 0, out: 21 }, { $clock: -2, in: 21, load: 0, address: 0, out: 21 }, { $clock: +2, in: 53781, load: 1, address: 2, out: 21 }, { $clock: -3, in: 53781, load: 0, address: 2, out: 53781 }, { $clock: +3, in: 65535, load: 1, address: 16383, out: 53781 }, { $clock: -4, in: 0, load: 1, address: 16383, out: 65535 }, { $clock: +4, in: 0, load: 1, address: 16383, out: 65535 }, { $clock: -5, in: 0, load: 0, address: 16383, out: 0 }]);
var TRUTH_TABLE = int16Table([{
$clock: -0,
in: 0,
load: 0,
address: 0,
out: 0
}, {
$clock: +0,
in: 21,
load: 1,
address: 0,
out: 0
}, {
$clock: -1,
in: 1,
load: 0,
address: 0,
out: 21
}, {
$clock: +1,
in: 21,
load: 0,
address: 0,
out: 21
}, {
$clock: -2,
in: 21,
load: 0,
address: 0,
out: 21
}, {
$clock: +2,
in: 53781,
load: 1,
address: 2,
out: 0
}, {
$clock: -3,
in: 53781,
load: 0,
address: 2,
out: 53781
}, {
$clock: +3,
in: 65535,
load: 1,
address: 16383,
out: 0
}, {
$clock: -4,
in: 0,
load: 1,
address: 16383,
out: 65535
}, {
$clock: +4,
in: 0,
load: 1,
address: 16383,
out: 65535
}, {
$clock: -5,
in: 0,
load: 0,
address: 16383,
out: 0
}]);

@@ -28,0 +94,0 @@ /**

@@ -25,3 +25,69 @@ /**

var TRUTH_TABLE = int16Table([{ $clock: -0, in: 0, load: 0, address: 0, out: 0 }, { $clock: +0, in: 21, load: 1, address: 0, out: 0 }, { $clock: -1, in: 1, load: 0, address: 0, out: 21 }, { $clock: +1, in: 21, load: 0, address: 0, out: 21 }, { $clock: -2, in: 21, load: 0, address: 0, out: 21 }, { $clock: +2, in: 53781, load: 1, address: 2, out: 21 }, { $clock: -3, in: 53781, load: 0, address: 2, out: 53781 }, { $clock: +3, in: 65535, load: 1, address: 4095, out: 53781 }, { $clock: -4, in: 0, load: 1, address: 4095, out: 65535 }, { $clock: +4, in: 0, load: 1, address: 4095, out: 65535 }, { $clock: -5, in: 0, load: 0, address: 4095, out: 0 }]);
var TRUTH_TABLE = int16Table([{
$clock: -0,
in: 0,
load: 0,
address: 0,
out: 0
}, {
$clock: +0,
in: 21,
load: 1,
address: 0,
out: 0
}, {
$clock: -1,
in: 1,
load: 0,
address: 0,
out: 21
}, {
$clock: +1,
in: 21,
load: 0,
address: 0,
out: 21
}, {
$clock: -2,
in: 21,
load: 0,
address: 0,
out: 21
}, {
$clock: +2,
in: 53781,
load: 1,
address: 2,
out: 0
}, {
$clock: -3,
in: 53781,
load: 0,
address: 2,
out: 53781
}, {
$clock: +3,
in: 65535,
load: 1,
address: 4095,
out: 0
}, {
$clock: -4,
in: 0,
load: 1,
address: 4095,
out: 65535
}, {
$clock: +4,
in: 0,
load: 1,
address: 4095,
out: 65535
}, {
$clock: -5,
in: 0,
load: 0,
address: 4095,
out: 0
}]);

@@ -28,0 +94,0 @@ /**

@@ -25,3 +25,69 @@ /**

var TRUTH_TABLE = int16Table([{ $clock: -0, in: 0, load: 0, address: 0, out: 0 }, { $clock: +0, in: 21, load: 1, address: 0, out: 0 }, { $clock: -1, in: 1, load: 0, address: 0, out: 21 }, { $clock: +1, in: 21, load: 0, address: 0, out: 21 }, { $clock: -2, in: 21, load: 0, address: 0, out: 21 }, { $clock: +2, in: 53781, load: 1, address: 2, out: 21 }, { $clock: -3, in: 53781, load: 0, address: 2, out: 53781 }, { $clock: +3, in: 65535, load: 1, address: 511, out: 53781 }, { $clock: -4, in: 0, load: 1, address: 511, out: 65535 }, { $clock: +4, in: 0, load: 1, address: 511, out: 65535 }, { $clock: -5, in: 0, load: 0, address: 511, out: 0 }]);
var TRUTH_TABLE = int16Table([{
$clock: -0,
in: 0,
load: 0,
address: 0,
out: 0
}, {
$clock: +0,
in: 21,
load: 1,
address: 0,
out: 0
}, {
$clock: -1,
in: 1,
load: 0,
address: 0,
out: 21
}, {
$clock: +1,
in: 21,
load: 0,
address: 0,
out: 21
}, {
$clock: -2,
in: 21,
load: 0,
address: 0,
out: 21
}, {
$clock: +2,
in: 53781,
load: 1,
address: 2,
out: 0
}, {
$clock: -3,
in: 53781,
load: 0,
address: 2,
out: 53781
}, {
$clock: +3,
in: 65535,
load: 1,
address: 511,
out: 0
}, {
$clock: -4,
in: 0,
load: 1,
address: 511,
out: 65535
}, {
$clock: +4,
in: 0,
load: 1,
address: 511,
out: 65535
}, {
$clock: -5,
in: 0,
load: 0,
address: 511,
out: 0
}]);

@@ -28,0 +94,0 @@ /**

@@ -25,3 +25,69 @@ /**

var TRUTH_TABLE = int16Table([{ $clock: -0, in: 0, load: 0, address: 0, out: 0 }, { $clock: +0, in: 21, load: 1, address: 0, out: 0 }, { $clock: -1, in: 1, load: 0, address: 0, out: 21 }, { $clock: +1, in: 21, load: 0, address: 0, out: 21 }, { $clock: -2, in: 21, load: 0, address: 0, out: 21 }, { $clock: +2, in: 53781, load: 1, address: 2, out: 21 }, { $clock: -3, in: 53781, load: 0, address: 2, out: 53781 }, { $clock: +3, in: 65535, load: 1, address: 63, out: 53781 }, { $clock: -4, in: 0, load: 1, address: 63, out: 65535 }, { $clock: +4, in: 0, load: 1, address: 63, out: 65535 }, { $clock: -5, in: 0, load: 0, address: 63, out: 0 }]);
var TRUTH_TABLE = int16Table([{
$clock: -0,
in: 0,
load: 0,
address: 0,
out: 0
}, {
$clock: +0,
in: 21,
load: 1,
address: 0,
out: 0
}, {
$clock: -1,
in: 1,
load: 0,
address: 0,
out: 21
}, {
$clock: +1,
in: 21,
load: 0,
address: 0,
out: 21
}, {
$clock: -2,
in: 21,
load: 0,
address: 0,
out: 21
}, {
$clock: +2,
in: 53781,
load: 1,
address: 2,
out: 0
}, {
$clock: -3,
in: 53781,
load: 0,
address: 2,
out: 53781
}, {
$clock: +3,
in: 65535,
load: 1,
address: 63,
out: 0
}, {
$clock: -4,
in: 0,
load: 1,
address: 63,
out: 65535
}, {
$clock: +4,
in: 0,
load: 1,
address: 63,
out: 65535
}, {
$clock: -5,
in: 0,
load: 0,
address: 63,
out: 0
}]);

@@ -28,0 +94,0 @@ /**

@@ -25,3 +25,69 @@ /**

var TRUTH_TABLE = int16Table([{ $clock: -0, in: 0, load: 0, address: 0, out: 0 }, { $clock: +0, in: 21, load: 1, address: 0, out: 0 }, { $clock: -1, in: 1, load: 0, address: 0, out: 21 }, { $clock: +1, in: 21, load: 0, address: 0, out: 21 }, { $clock: -2, in: 21, load: 0, address: 0, out: 21 }, { $clock: +2, in: 53781, load: 1, address: 2, out: 21 }, { $clock: -3, in: 53781, load: 0, address: 2, out: 53781 }, { $clock: +3, in: 65535, load: 1, address: 3, out: 53781 }, { $clock: -4, in: 0, load: 1, address: 3, out: 65535 }, { $clock: +4, in: 0, load: 1, address: 3, out: 65535 }, { $clock: -5, in: 0, load: 0, address: 3, out: 0 }]);
var TRUTH_TABLE = int16Table([{
$clock: -0,
in: 0,
load: 0,
address: 0,
out: 0
}, {
$clock: +0,
in: 21,
load: 1,
address: 0,
out: 0
}, {
$clock: -1,
in: 1,
load: 0,
address: 0,
out: 21
}, {
$clock: +1,
in: 21,
load: 0,
address: 0,
out: 21
}, {
$clock: -2,
in: 21,
load: 0,
address: 0,
out: 21
}, {
$clock: +2,
in: 53781,
load: 1,
address: 2,
out: 0
}, {
$clock: -3,
in: 53781,
load: 0,
address: 2,
out: 53781
}, {
$clock: +3,
in: 65535,
load: 1,
address: 3,
out: 0
}, {
$clock: -4,
in: 0,
load: 1,
address: 3,
out: 65535
}, {
$clock: +4,
in: 0,
load: 1,
address: 3,
out: 65535
}, {
$clock: -5,
in: 0,
load: 0,
address: 3,
out: 0
}]);

@@ -28,0 +94,0 @@ /**

@@ -44,3 +44,5 @@ /**

_ref$ast = _ref.ast,
ast = _ref$ast === undefined ? null : _ref$ast;
ast = _ref$ast === undefined ? null : _ref$ast,
_ref$manualClock = _ref.manualClock,
manualClock = _ref$manualClock === undefined ? false : _ref$manualClock;

@@ -52,3 +54,4 @@ _classCallCheck(this, CompositeGate);

inputPins: inputPins,
outputPins: outputPins
outputPins: outputPins,
manualClock: manualClock
}));

@@ -147,5 +150,3 @@

if (part.getClass().isClocked()) {
part.tick();
}
part.tick();
}

@@ -188,5 +189,3 @@ } catch (err) {

if (part.getClass().isClocked()) {
part.tock();
}
part.tock();
}

@@ -193,0 +192,0 @@ } catch (err) {

@@ -45,24 +45,15 @@ /**

*/
function Gate() {
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
function Gate(_ref) {
var _ref$name = _ref.name,
name = _ref$name === undefined ? null : _ref$name,
inputPins = _ref.inputPins,
outputPins = _ref.outputPins,
_ref$manualClock = _ref.manualClock,
manualClock = _ref$manualClock === undefined ? false : _ref$manualClock;
_classCallCheck(this, Gate);
// Infer name from the class if not passed explicitly.
var _this = _possibleConstructorReturn(this, (Gate.__proto__ || Object.getPrototypeOf(Gate)).call(this));
if (!options) {
var _ret;
return _ret = _this.getClass().defaultFromSpec(), _possibleConstructorReturn(_this, _ret);
}
var _options$name = options.name,
name = _options$name === undefined ? null : _options$name,
_options$inputPins = options.inputPins,
inputPins = _options$inputPins === undefined ? [] : _options$inputPins,
_options$outputPins = options.outputPins,
outputPins = _options$outputPins === undefined ? [] : _options$outputPins;
// Infer name from the class if not passed explicitly.
if (!name) {

@@ -85,4 +76,5 @@ name = _this.getClass().Spec.name;

// Subscribe to the clock events for clocked gates.
if (_this.getClass().isClocked()) {
// Subscribe to the clock events for clocked gates, unless
// `manualClock` is set (for part gates used in composite gates).
if (_this.getClass().isClocked() && !manualClock) {
SystemClock.on('tick', function () {

@@ -279,5 +271,5 @@ return _this.tick();

value: function generateTruthTable() {
var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
_ref$enforceRandom = _ref.enforceRandom,
enforceRandom = _ref$enforceRandom === undefined ? false : _ref$enforceRandom;
var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
_ref2$enforceRandom = _ref2.enforceRandom,
enforceRandom = _ref2$enforceRandom === undefined ? false : _ref2$enforceRandom;

@@ -491,3 +483,3 @@ var GateClass = this.getClass();

this.eval();
this.clockUp(this.getPin(Pin.CLOCK).getValue());
this.clockUp();
return this;

@@ -506,3 +498,3 @@ }

value: function tock() {
this.clockDown(this.getPin(Pin.CLOCK).getValue());
this.clockDown();
this.eval();

@@ -525,2 +517,4 @@ return this;

value: function defaultFromSpec() {
var extraOptions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var _validateSpec = this.validateSpec(this.Spec),

@@ -534,6 +528,6 @@ inputPins = _validateSpec.inputPins,

return new this({
return new this(Object.assign({
inputPins: inputPins.map(toPin),
outputPins: outputPins.map(toPin)
});
}, extraOptions));
}

@@ -606,14 +600,14 @@ }, {

key: 'printTruthTable',
value: function printTruthTable(_ref2) {
value: function printTruthTable(_ref3) {
var _this5 = this;
var table = _ref2.table,
_ref2$columns = _ref2.columns,
columns = _ref2$columns === undefined ? [] : _ref2$columns,
_ref2$formatRadix = _ref2.formatRadix,
formatRadix = _ref2$formatRadix === undefined ? 2 : _ref2$formatRadix,
_ref2$formatStringLen = _ref2.formatStringLengh,
formatStringLengh = _ref2$formatStringLen === undefined ? 16 : _ref2$formatStringLen,
_ref2$transformValue = _ref2.transformValue,
transformValue = _ref2$transformValue === undefined ? null : _ref2$transformValue;
var table = _ref3.table,
_ref3$columns = _ref3.columns,
columns = _ref3$columns === undefined ? [] : _ref3$columns,
_ref3$formatRadix = _ref3.formatRadix,
formatRadix = _ref3$formatRadix === undefined ? 2 : _ref3$formatRadix,
_ref3$formatStringLen = _ref3.formatStringLengh,
formatStringLengh = _ref3$formatStringLen === undefined ? 16 : _ref3$formatStringLen,
_ref3$transformValue = _ref3.transformValue,
transformValue = _ref3$transformValue === undefined ? null : _ref3$transformValue;

@@ -620,0 +614,0 @@ var spec = this.validateSpec(this.Spec);

@@ -333,3 +333,7 @@ /**

// Instance.
var partGateInstance = PartGateClass.defaultFromSpec();
var partGateInstance = PartGateClass.defaultFromSpec({
// Part pins are manually updated for `tick/tock` events
// from the main parent gate.
manualClock: true
});

@@ -336,0 +340,0 @@ // Handle arguments.

@@ -474,3 +474,3 @@ /**

// a[1]
if (node.index) {
if (node.hasOwnProperty('index')) {
return pin.getValueAt(node.index);

@@ -488,3 +488,3 @@ }

// a[1]
if (node.index) {
if (node.hasOwnProperty('index')) {
return pin.setValueAt(node.index, value.value);

@@ -491,0 +491,0 @@ }

{
"name": "hdl-js",
"version": "0.0.65",
"version": "0.0.66",
"license": "MIT",

@@ -5,0 +5,0 @@ "description": "Hardware definition language (HDL) and Hardware simulator",

@@ -912,3 +912,3 @@ # hdl-js

All gates known their own specification, so we can omit passing explicit pins info, and use a constructor without parameters, or create gates via the `defaultFromSpec` method:
All gates known their own specification, so we can omit passing explicit pins info, and use `defaultFromSpec` method:

@@ -923,19 +923,9 @@ ```js

const and1 = new And();
const and = And.defaultFromSpec();
and1
.setPinValues({a: 1, b: 1})
.eval();
console.log(and1.getPin('out').getValue()); // 1
// The same as:
const and2 = And.defaultFromSpec();
and2
and
.setPinValues({a: 1, b: 0})
.eval();
console.log(and2.getPin('out').getValue()); // 0
console.log(and.getPin('out').getValue()); // 0
```

@@ -1201,2 +1191,21 @@

It is also possible to test the whole directory, passing the directory name instead of an individual `.tst` file. In this case, the directory is scanned for all `.tst` files, which are executed in sequence:
```
hdl-js --script src/emulator/hardware/scripting/examples/n2t/03/
```
Result:
```
[PASS] Bit.tst
[PASS] PC.tst
[PASS] RAM16K.tst
[PASS] RAM4K.tst
[PASS] RAM512.tst
[PASS] RAM64.tst
[PASS] RAM8.tst
[PASS] Register.tst
```
#### Script controller commands

@@ -1203,0 +1212,0 @@

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc