From: Alan Grimes <agrimes@sp...> - 2012-02-25 04:44:03
It's been quite a while since I've had a working C++ IDE on my computer
much less access to useful Ktechlab sourcecode, so I've mostly forgotten
how it was put together.
Ktechlab, classically at least, was single-threaded. So there weren't
really any synchronization issues with the UI. IIRC, when you dragged a
component out of the parts library you would get an object of class
Component. It wouldn't have a circuit or a simulator so you had to be
careful that you didn't crash the thing by trying to start operation too
soon. When it was dropped into a Circuit Document, the circuit document
behaved like a set. It would figure out what was connected to what in
the analog domain and what was a logic output with only logic ins
connected (this was a shameless hack). It would then create logic
networks and Circuits, which were the class for analog. These do not
necessarily have any direct relationship with circuit documents because,
in principle you could link a sub-circuit to a master document... The
circuits and logic networks would register themselves with class
Simulator, as discussed in postings I wrote long ago, to receive CPU
time. I vaguely remember writing a posting on various ways to improve
class Simulator. =P
When you clicked on a GUI widget, the event would go directly to the
handler methods in the Component class and the state of any associated
circuit elements would be updated.
Switches were problematic because they would force the allocation of
circuit elements to circuits to change and an entirely new set of
simulation matrices would have to be generated.
I spent two years crawling over every line of that code with the port to
the new KDE in mind so I don't think it should be THAT hard... =P
The heavy lifting in the simulation of analog circuits was done through
class ElementSet. The models for many of the analog parts are deeply
problematic and need a massive overhaul. That said, the simulator should
be good enough for a proof-of-concept.
I should be getting my first paycheck in many moons Real Soon Now, I
plan to buy a bunch of books on VHDL and filter design. =P
E T F
N H E
D E D
Powers are not rights.