The operating system will be FreeBSD. There have to be some adjustments to the system to make it fast and reliable (in terms of timing) enough, and to make it fit onto the flash memory card used for storage.
More on this on the operating system page.
The main game control program will be written in C. It will be a multi-threaded program, and will control the overall game flow, query and evaluate the switches, drive the solenoids that need to be activated by the control computer (most coils will be activated directly by the respective sensors under the playfield), lighten the playfield lamps, and control the backbox display.
A more detailed description can be found at on a dedicated page.
Taking into account the high power used for moving parts in the game, and the unforseen events all the mechanics and player interactions can cause, the software must be designed with a bunch of possible faults in mind.
Causes of such faults can be:
A mechanics reset function (MRF) should be included that moves all the mechanical parts on the playfields in a way that trapped balls would be ejected.
Some helper programs are needed on the control PC for various functions. Some, for example the sshd, will run only when required, others such as the iocd have to run all the time.