Bill,
Thanks. Overall it looks great, just some relatively minor feedback for you to consider:
*) In section The Problem: "There is a range of change rates that would blur together into a soft constant glow on a real PDP-8/I but which a human would perceive as flickery on a PiDP-8/I with the original lamp driving code. The result is that programs running on a real PDP-8/I that give a nice soft glowing effect would appear flickery when run on a PiDP-8/I." -- The two sentences are essentially saying the same thing. One sentence would probably be better.
*) In section Schofield's Incandescent Lamp Simulator: "Incidentally, the two functions above are actually the same function. The falling function can also be written b = b + (0 - b) × 0.01, showing that the only thing varying is the target value: 0 for falling, 32 for rising." -- I'm not understanding this. Shouldn't you just generalize the equation and show it as b = b + ( t - b ) x 0.01 where t is the target value of 0 for falling and 32 for rising? That would make a whole lot more sense to me.
*) In section Problems with Schofield's ILS and elsewhere: "The human PoV limit means ..." -- The acronym PoV is never defined.
*) In section Non-Linear PWM Brightness Ramp and elsewhere -- the acronym PWM is never defined. Pulse Width Modulation, I assume, but best to be explicit.
*) In section Auto-Calibration: "If the per-iteration factor is f and the cycle period is T, the rate of brightness change per unit real time is (1 − f)^(1/T)." -- Minor inconsistency that the variables f and T are italicized differently in the words than in the formula. Should the formula in your text be written as "(1 − f)^(1/T)"?
*) In section Further Refinements (2025): "Accurate Fetch/Execute lamp behavior." -- Technically, it's more than just Fetch and Execute. It's also Defer. IIRC, the Defer lamp either never came on or it was a completely artificially synthesized value. The three instruction execution Major States are Fetch, Defer, and Execute (in that order in the maximum case). Might be best to refer to it as either the Cycle Realistic or the Cycle Accurate modification in that sub-header and say something more like "Prior to 2021 the SIMH emulation of all PDP-8s was at the whole instruction level. In any real PDP-8, instructions are executed as a series of memory cycles, Major States, that vary by the type of instruction. Specifically, the PDP-8 Major States are named, Fetch, Defer, and Execute. Lamps on a real PDP-8 front panel reflect the status of the CPU as it progresses through these Major States. As well, the Sing Step switch on a real PDP-8/I front panel puts that real -8/I into a mode where it executes one Major State at a time each time the Cont switch is pressed. In a desire to make the PiDP-8/I more realistic, the SIMH code was modified to support emulation at the Major State level rather than the whole instruction level. With the Cycle Realistic / Cycle Accurate modification, not only do the Fetch, Defer, and Execute lamps on the PiDP-8/I front panel display realistic status, the Sing Step switch can also be used together with the Cont switch to execute machine code at the Major State level exactly as on real PDP-8/I hardware." in the description.
*) In section Tuning the ILS: "PIDP8I_ILS_TWEAK=rising,*falling*" -- The word rising is italicized and nothing else is.
*) In section Acknowledgements: "Steve Tockey rewrote the GPIO display side of the ILS: the non-linear brightness ramp, the auto-calibration mechanism, and the supporting infrastructure in gpio-common.c" -- No, actually I didn't. I can't remember who did that. All I did was the Cycle Realistic / Cycle Accurate code. I didn't do anything on the driving the PiDP-8/I lamps side of the house. Also, you bold names in this sentence, but not Oscar and Ian in the sentence immediately above. I would suggest their names be bolded also.
*) In Footnote 1: "(Realize that the "rows" I'm talking about here are logical rows in this electrical matrix. They only have a loose mapping to the rows and columns of the LEDs and switches as they're arranged on the PCB.)" -- It could be worth adding that you can see where those logical rows and columns appear on the front panel when you use the pidp8i-test utility, assuming it still runs these days.
Thanks,
-- steve