Skip to content

Commit

Permalink
Z80: override chipsim getNodeValue() to better model charge sharing
Browse files Browse the repository at this point in the history
  • Loading branch information
hoglet67 committed Oct 8, 2018
1 parent 5005774 commit f360557
Showing 1 changed file with 31 additions and 0 deletions.
31 changes: 31 additions & 0 deletions chip-z80/support.js
Expand Up @@ -24,6 +24,37 @@ presetLogLists=[
['_int','_nmi', nodenamereset],
];

// Override ChipSim getNodeValue() function to allow an estimate of capacitance
// (number of connections) to be used when joining floating segments.

function getNodeValue(){
// 1. deal with power connections first
if(arrayContains(group, ngnd)) return false;
if(arrayContains(group, npwr)) return true;
// 2. deal with pullup/pulldowns next
for(var i in group){
var nn = group[i];
var n = nodes[nn];
if(n.pullup) return true;
if(n.pulldown) return false;
}
// 3. resolve connected set of floating nodes
// based on state of largest (by #connections) node
// (previously this was any node with state true wins)
var max_state = false;
var max_connections = 0;
for(var i in group){
var nn = group[i];
var n = nodes[nn];
var connections = n.gates.length + n.c1c2s.length;
if (connections > max_connections) {
max_connections = connections;
max_state = n.state;
}
}
return max_state;
}

function setupTransistors(){
for(i in transdefs){
var tdef = transdefs[i];
Expand Down

0 comments on commit f360557

Please sign in to comment.