When running the Digital 7-60-M Type 34 display maintenance tape, the light-pen test triggers an infinite interrupt-loop due to the PDP-7 emulator defaulting to the wrong interface for the line-printer.
This is due to the maintenance-tape interrupt handler clearing flags from various standard peripherals, and it's using the following instructions to clear the flags from the line printer:
According to the PDP-7 user handbook (https://bitsavers.org/pdf/dec/pdp7/F-75_PDP-7userHbk_Jun65.pdf page 199), these should be clear the Spacing and Done flag, respectively, and this meaning is in line with the context of the subroutine this code is located in.
However, it seems like the emulator uses the same line-printer interface as the PDP-9 emulator, where these two instructions have different meanings (see https://bitsavers.org/pdf/dec/pdp9/PDP-9_UsersManual.pdf page 4-18). Namely clear Done flag and Initialize cleaning-cycle respectively. As the cleaning-cycle immediately triggers a new interrupt, the end result is an infinite loop in this case.
Judging from this case, and the difference behaviour described in the two user handbooks, should the PDP-7 emulator really share the same line-printer interface as the PDP-9 one by default? I won't deny some PDP-7's might have had the later type printer interface fitted, and it's not unreasonable to have it as an option, but I would argue that it should be an active choice the user have to take. Having it enabled by default, at least, caused me a lot of headache debugging what actually went wrong when running the mentioned maintenance tape.
When running the Digital 7-60-M Type 34 display maintenance tape, the light-pen test triggers an infinite interrupt-loop due to the PDP-7 emulator defaulting to the wrong interface for the line-printer.
This is due to the maintenance-tape interrupt handler clearing flags from various standard peripherals, and it's using the following instructions to clear the flags from the line printer:
According to the PDP-7 user handbook (https://bitsavers.org/pdf/dec/pdp7/F-75_PDP-7userHbk_Jun65.pdf page 199), these should be clear the Spacing and Done flag, respectively, and this meaning is in line with the context of the subroutine this code is located in.
However, it seems like the emulator uses the same line-printer interface as the PDP-9 emulator, where these two instructions have different meanings (see https://bitsavers.org/pdf/dec/pdp9/PDP-9_UsersManual.pdf page 4-18). Namely clear Done flag and Initialize cleaning-cycle respectively. As the cleaning-cycle immediately triggers a new interrupt, the end result is an infinite loop in this case.
Judging from this case, and the difference behaviour described in the two user handbooks, should the PDP-7 emulator really share the same line-printer interface as the PDP-9 one by default? I won't deny some PDP-7's might have had the later type printer interface fitted, and it's not unreasonable to have it as an option, but I would argue that it should be an active choice the user have to take. Having it enabled by default, at least, caused me a lot of headache debugging what actually went wrong when running the mentioned maintenance tape.