The major change is the implementation of deferred IO - a more accurate implementation of the 1620's "stop in its tracks" IO model. When a device uses deferred IO, instruction execution is suspended until the IO completes successfully. Operator interruptions, errors, and so on do not return to instruction execution; this only occurs if the IO completes successfully or the command SET CPU RELEASE is given (equivalent of pressing the RELEASE button). Otherwise, the current IO operation continues to execute. Only the console typewriter and paper tape reader/punch currently implement deferred IO; there are operational issues with those devices that require more accurate modeling. The card reader/punch, line printer, and disk still execute IO "instantaneously". It's not all that hard to convert an instantaneous device to deferred operation, but there's no point in doing so (and possibly introducing new bugs) unless there's an actual operational issue. The 1620 doesn't have overlapped IO, so programs can't tell the difference, by and large. A number of other issues have been addressed as well, including the bizarre "treat RM as 0 in the Q field" required by MI-015; the treatment of non-existent indicators as always off; and various other tweaks. I've run CU01 (again), which at least gives typewriter and paper-tape IO a basic workout; and it works. I leave more detailed testing to people who know the machine better than I do. The documentation has been updated to include Tom's detailed breakdown of IO handling for all IO operations on the typewriter, paper-tape reader/punch, card reader/punch, and line printer.
158 KiB
158 KiB