This has some minor tweaks, basically reducing iterations over the shared mem array and allowing rescheduling in the same loop. It dramatically reduces load, from ~180% to ~65%. I think the lights look slightly better, but that's subjective. It does vastly improve the CHM test case, not quite sure why. If you want to try it, go to /opt/pidp1/src/blincolnlights/panel_pidp1. Copy the existing panel_pidp1 to panel_pidp1.sav if you care. You can always rebuild the original. Drop this one in and run setpri.sh to fix up the real-time thread priority. It does a sudo, you might get prompted for your password. Then either restart the emulator via pdp1control (easy way) or, manually, do a ps -ea | grep panel, kill panel_pidp1. Then nohup panel1_pidp1 >/dev/null 2>&1 & to get the new one running. I've had it running continuously since yesterday, no issues.
Bill
PS - do run setpri.sh or it won't look very nice. Looking into not needing the real-time thread soon, but it might be unavoidable or might need some significant rework.