The good news is I got schematics and all the parts. The bad news is that they weren't for the same laser. The head and caps/PFN/charger were old ruby, the controller was old YAG, and the schematics were for a newer ruby. They were Really Close, and they reused a lot of sub-assemblies so the schematics were definitely good to have.
To charge the capacitors, the controller closes a 48VAC (on this laser) interlock which closes a Big Relay and applies power to some SCRs. The controller then applies a "charge now" signal to the SCRs through some pulse transformers (for isolation, the SCRs are at 240V). That feeds the power to a big transformer which is then rectified and applied to the capacitor. The capacitor is then monitored with a big voltage divider (approximate ratio is divide by 1000) and compared to a set point voltage from a variable resistor (or on my version, a DAC). When the set is reached an op-amp in comparator mode turns off the "charge now" and the SCRs stop conducting on the next AC cycle.
There is a completely independent Over Voltage card in the charger which has a fail-safe set point. If the charge on the capacitor exceeds that separate set point, it breaks the interlock and everything gets dumped. I can not express how good of an idea that is. To reset the Over Voltage card, the laser must be unplugged from 240VAC.
The controller then applies a 15V pulse to the trigger card, which generates a larger pulse to an inductor in the pulse forming network and the lamps are series triggered.
There are separate capacitors and energy control circuits for the oscillator and amplifier.
My version has an MSP430 micro-controller doing a lot of supervisory stuff, but the voltage comparator stuff is nearly the same. The set points are derived from DACs, and measured with some ADCs but the actual regulation is still an op-amp.
My triggering is completely different. The original controller had a horde of analog delay chips. I'm using the MSP430's capture-compare to generate the trigger pulses. I put timestamps (For an 8 MHz clock) into a bunch of registers and the timer hardware does the real-time stuff with a resolution of 125 nanoseconds.
For the q-switch, a separate MSP430 in the head observes the actual lamp flashes with photo-diodes (using the same capture-compare timer) and if everything is close enough together triggers the q-switch, based on when the lamp flash actually happened.
The signal trigger card takes is 15 volts active high, with lots of current. My implementation uses a 4403 transistor (I consider this to be a bug), but the original was a BC132, rated for 3A. When the 15V is applied to the trigger card, it charges a 0.1uf cap. When the voltage on that cap exceeds 6.8V (possibly + 0.7 more) the cap is discharged through an SCR to generate a pulse to feed to the gate of a larger SCR, which in turn dumps a 0.47uf cap charged to 600VDC into the transformer.
This is still a work in progress. Some assembly required, all parts user serviceable (it is open-source...), and will unfortunately need it. You will need to know how to solder, program in C, not kill yourself, etc.
You will also need version 2 of my qswitch controler.
The source-code and hardware design are released under the terms of the GPL.