New stuff today:
All process are now self-clocked to run independently. Each process is made sensitive to a unique signal which is precessed within the process itself (usually at the end). While this isn't at core synthesizable (each process becomes a testbench |->), it shouldn't be much work later on to precess each process' clock signal off a master clock of some type, thus solving that problem. I just don't want to have to fiddle with synchronizing that many signals right now, when I have a lot of general code I need to get working... at least I don't have to run any more infinite loops anywhere in the whole codebase to get process to progress in general, and I am free to write "real" (i.e. orthogonal) VHDL code as I need to.
A lot of networking fixes went in today. A couple of initialization bugs were fixed, and the network_port's send_message and receive_message signals are now properly sending and receiving data through native sockets on the appropriate TCP ports. In principle, I now have a functioning bus through which the controls, when instantiated, can boot up into the Controlix environment, start interacting with other controls, and offering and using services in general.
The directory structure in the repository has been reworked again. There are only four subdirectories under src/ now: boot (non-control-based setup code), lib (non-control-based general library code), controls(the actual controls for simulation) and native (the native C support code). Much more logical, regular and Controlix-ish in layout.
A lot of stuff is working now that was giving me headaches before. In particular, it is a time for joy indeed that I can reliably and correctly get to the damn native sockets |->. I can now move ahead with some more basic enhancements to the whole system: client/server shell and command interaction, a signals server for generic shared variables/signals, a network server for DHCP-style routing and gateways and subnetting, and a memory server to wrap around a native malloc().
Stay tuned....