public void doStep() {
        int i;
        for (i = 0; i != getPostCount(); i++) {
            Pin p = pins[i];
            if (p.output && pins[9].value) {
                p.value = volts[i] > 2.5;
            }
            if (!p.output) {
                p.value = volts[i] > 2.5;
            }
        }
        execute();
        for (i = 0; i != getPostCount(); i++) {
            Pin p = pins[i];
            if (p.output && !pins[9].value) {
                sim.updateVoltageSource(0, nodes[i], p.voltSource, p.value ? 5 : 0);
            }
        }
    }