From 0d6313c11e0e7891e85e32331cd10f60de80e6c3 Mon Sep 17 00:00:00 2001 From: Marek Materzok Date: Fri, 2 Nov 2018 15:52:42 +0100 Subject: [PATCH] Use 3vl memories. --- package-lock.json | 15 +++++++++++---- package.json | 4 ++-- src/cells/memory.js | 14 +++++++------- 3 files changed, 20 insertions(+), 13 deletions(-) diff --git a/package-lock.json b/package-lock.json index 592a6f6..41f0ee7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,13 +1,13 @@ { "name": "digitaljs", - "version": "0.2.0", + "version": "0.2.1", "lockfileVersion": 1, "requires": true, "dependencies": { "3vl": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/3vl/-/3vl-0.1.0.tgz", - "integrity": "sha512-bWnyJc8NILjKPmbRdYVlpyeVs+YCvpKIP1+0DpgCkmhWScn74xuifAGbLdL5iHGywGqm12QFfVyHxUOtpl6RSg==" + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/3vl/-/3vl-0.2.0.tgz", + "integrity": "sha512-thejJDM2ownBcnaMtGbS/kt3pn+C0qDvX0O+Ekk3x7Um7bujBp36ivetU8v1T7XvOhknatat6zXRnVAlKfVZPg==" }, "@babel/code-frame": { "version": "7.0.0", @@ -9048,6 +9048,13 @@ "integrity": "sha512-XWD5Dd26dtEBDFBe+O7svH9GMxff2IgI2mnWa6qxdgJPoUtApzezF4cEILRUlGHEePBQULu1Hh9+O5BBnorMmA==", "requires": { "3vl": "^0.1.0" + }, + "dependencies": { + "3vl": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/3vl/-/3vl-0.1.0.tgz", + "integrity": "sha512-bWnyJc8NILjKPmbRdYVlpyeVs+YCvpKIP1+0DpgCkmhWScn74xuifAGbLdL5iHGywGqm12QFfVyHxUOtpl6RSg==" + } } }, "webidl-conversions": { diff --git a/package.json b/package.json index e8f6d1e..36ba3d4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "digitaljs", - "version": "0.2.0", + "version": "0.2.1", "description": "Digital logic simulator", "main": "dist/main.js", "scripts": { @@ -31,7 +31,7 @@ "webpack-cli": "^3.1.0" }, "dependencies": { - "3vl": "^0.1.0", + "3vl": "^0.2.0", "babel-polyfill": "^6.26.0", "big-integer": "^1.6.34", "css-element-queries": "^1.0.5", diff --git a/src/cells/memory.js b/src/cells/memory.js index 7eb07b1..7ce3beb 100644 --- a/src/cells/memory.js +++ b/src/cells/memory.js @@ -3,7 +3,7 @@ import joint from 'jointjs'; import bigInt from 'big-integer'; import * as help from '@app/help.js'; -import { Vector3vl } from '3vl'; +import { Vector3vl, Mem3vl } from '3vl'; // Memory cell joint.shapes.digital.Box.define('digital.Memory', { @@ -25,11 +25,11 @@ joint.shapes.digital.Box.define('digital.Memory', { if (!args.words) args.words = 1 << args.abits; if (!args.offset) args.offset = 0; if (args.memdata) - this.memdata = args.memdata.map(x => Vector3vl.fromBin(x, args.bits)); + this.memdata = Mem3vl.fromJSON(args.bits, args.memdata); else - this.memdata = Array(args.words).fill(Vector3vl.xes(args.bits)); + this.memdata = new Mem3vl(args.bits, args.words); delete args.memdata; // performance hack - console.assert(this.memdata.length == args.words); + console.assert(this.memdata.words == args.words); this.last_clk = {}; const markup = []; const lblmarkup = []; @@ -104,7 +104,7 @@ joint.shapes.digital.Box.define('digital.Memory', { else { const addr = calc_addr(data[portname + 'addr']); if (valid_addr(addr)) - out[portname + 'data'] = this.memdata[addr]; + out[portname + 'data'] = this.memdata.get(addr); else out[portname + 'data'] = Vector3vl.xes(this.get('bits')); } @@ -114,7 +114,7 @@ joint.shapes.digital.Box.define('digital.Memory', { if (!data[portname + 'addr'].isFullyDefined) return; const addr = calc_addr(data[portname + 'addr']); if (valid_addr(addr)) - this.memdata[addr] = data[portname + 'data']; + this.memdata.set(addr, data[portname + 'data']); }; for (const [num, port] of this.get('rdports').entries()) if (!port.transparent) do_read('rd' + num, port); @@ -127,7 +127,7 @@ joint.shapes.digital.Box.define('digital.Memory', { getGateParams: function() { // hack to get memdata back const params = joint.shapes.digital.Box.prototype.getGateParams.apply(this, arguments); - params.memdata = this.memdata.map(x => x.toBin()); + params.memdata = this.memdata.toJSON(); return params; }, gateParams: joint.shapes.digital.Box.prototype.gateParams.concat(['bits', 'abits', 'rdports', 'wrports', 'words', 'offset'])