Simultaneity will exceed that of the original hardware, but should be compatible with any existing software. Also, the degree of simultaneity of specific peripherals is not clear from the documentation available, so best-guesses are made. For example, the magnetic tape drives seem to be completely independent of the control, and so full simultaneity is achieved by using a separate RWC for each drive. However, the disk drives seem to be dependent on resources in the control (unit selection, address register) and thus only one PDT may be active on that control at a time, providing no drive simultaneity. The original hardware may have provided simultaneity for head movement operations (e.g. seek cylinder), but those operations are instantaneous in this implementation.
RWCs are implemented as independent threads. This means a PDT instruction will actually complete before the I/O operation completes, just like original hardware. In addition, the I/O operation, running in the "background" thread, no longer has a guaranteed program context (address mode, relocation, etc). This is why the CLC and SLC registers contain physical addresses. In nearly all cases it is required the issue a PCB instruction to wait for completion, although it is up to the programmer whether that wait is done immediately after the PDT or before the next PDT on the same channel (or in some polling fashion).
The association between channel and perihperal is established when the PDT instruction is executed, and dissolved once the peripheral operation completes (RWC thread terminates). It is not known how a programmer, in a multiprogramming environment, ensures that a RWC does not get re-used between the time an operation completes and the program queries the status with PCB.
Currently, peripheral insterrupts are not implemented, except for the Interval Timer "timeout" and the front panel INTERRUPT button.
For many peripherals, it is possible to return less input data than requested. A program can query the CLC register to determine this, however since these registers contain physical addresses it will normally be necessary to subtract SLC from CLC to yield the length of transfer for comparison.
In the case that a request buffer (RM in memory) was not large enough to contain the peripheral record (typically for Console, Mag Tape, and Disk), the CLC will be pointing to one character past the RM character. To summarize: