Opened 5 years ago
Closed 5 years ago
#231 closed defect (fixed)
AL39-01 erratum: incomplete descriptions for RPD, RPL, and RPT instructions
| Reported by: | Gary Dixon | Owned by: | Eric Swenson |
|---|---|---|---|
| Priority: | major | Milestone: | MR12.8 |
| Component: | Documentation | Version: | |
| Keywords: | Cc: |
Description
The DPS/Level 86 & DPS 8M Multics Processor Manual (AL39-01C) have incomplete descriptions of the RPD, RPL, and RPT instructions. The missing details may be found in the [DPS 8 and DPS 88 Assembly Instructions (DH03-01) | http://www.bitsavers.org/pdf/honeywell/series60level66/DH02-01_dps8asm_Jun84.pdf] manual.
The missing information describes how ALM instructions set the various fields in these instructions. The more-complete GCOS manual provides these details. I have verified that these specification details are supported by the equivalent ALM instructions.
The remaining discussion focuses on information missing from the RPD instruction description. Similar information should be provided (based upon descriptions in DH03-01) for the RPL and RPT instructions.
Pertinent missing information for RPD refers to a diagram for the RPD instruction word:
Figure 4-9. Repeat Double (rpd) Instruction Word Format in AL39-01.
Attachments (1)
Change History (6)
by , 5 years ago
| Attachment: | AL39_Figure_4-9.png added |
|---|
comment:1 by , 5 years ago
The following items should be added to the description of the RPD instruction. This information comes from DH03-01.
From page 7-344 of DH03:
Coding Format:
From DH03-01 page 733 and following:
RPD N, I, k1, k2, •.• , k7. (A=B=C=1.)
The command generated by the assembler from this format will cause the two instructions immediately following the RPD instruction to be iterated N times and the effective addresses of those two instructions to be incremented by the value I for each of N iterations.
The meaning of k1, k2, ... , k7 is the same as for the RPT instruction. [See item below.] Since the repeat double must fall in an odd
location, precede this instruction with the odd pseudo-op.
RPDX ,I. (A=B=C=0.}
This instruction operates just as the RPD instruction with the exception that A ,B ,N and the conditions for termination are loaded by the user into index register X0 as an octal value.
RPDA N, I, k1, k2,..., k7. (A=C=1. B=0.)
This instruction operates just as the RPD instruction with the exception that only the effective address of the first instruction following
the RPDA instruction will be incremented by the value of I for each of N iterations.
RPDB N ,I, k1, k2,..., k7. (A=0. B=C=1.)
This instruction operates just as the RPD instruction with the exception that only the effective address of the second instruction following the RPDB instruction will be incremented by the value I for each of N iterations.
The following information from page 7-344 discussion of RPT also applies to RPD and RPL instructions. It explains how the k1, k2,..., k7 bits of the Term Cond. field can be specified in those instructions.
RPT N, I, k1, k2,..., k7. (Bit C=1.)
The command generated by the assembler from this format will cause the instruction immediately following the RPT instruction to be iterated N times and that instruction's effective address to be incremented by the value I for each of N iterations. The range for N is 0-255. If N = 0, the instruction will be iterated 256 times. If N is greater than 256, the instruction will cause an error flag (A) to be printed on the assembly listing.
The fields k1, k2, ... k7 may or may not be present. They represent conditions for termination which, when needed, are declared by the conditional transfer instructions TMI, TNC, TNZ, TOV, TPL, TRC, and TZE. These instructions affect the termination condition bits in positions 11-17 of the Repeat instruction.
It is also possible to use an octal number rather than the transfer instructions to denote termination conditions. Thus, if the field for k1, k2,..., k7 is found to be numeric, it will be interpreted as octal and the low-order 7 bits will be ORed into bit positions 11-17 of the Repeat instruction. The variable-field scan will be terminated with the octal field.
comment:2 by , 5 years ago
I verified that these various instruction add-on formats work in alm as shown below. I only verified one of the Term Cond. formats, but I
presume that they all work as specified above. I did not test use of an octal value to specify setting the Term Cond. via 3rd operand to
RPD or RPT.
The AL39 format for RPD instruction format is shown below for comparison purposes.
The RPD instruction format, as documented in AL39:
000007 aa 015600 5602 00 14 rpd 6,0
The RPDX instruction format:
000007 aa 014000 5602 00 14 rpdx 6,0
The RPDA instruction format:
000007 aa 015200 5602 00 14 rpda 6,0
The RPDB instruction format:
000007 aa 014600 5602 00 14 rpdb 6,0
The RPD instruction format with a k1,k2,…,k7 Term Cond. field specified as an
instruction:
000007 aa 015640 5602 00 14 rpd 6,0,tnz
While AL39 writeup for both RPD and RPT instructions specifies meanings of the Term Cond. bits, neither specifies how to use an equivalent test instruction mnemonic to set a particular Term Cond. bit (the TMI, TNC, TNZ, TOV, TPL, TRC, and TZE mnemonics).
comment:3 by , 5 years ago
Note that some of the coding examples for DH03-01 might be appropriate additions to the description of RPD, RPL, and RPT instructions. These are all complex instructions with few good examples in Multics of their use. When they are encountered, they are often not understood due to the missing documentation (see above), and lack of explanations about common usage cases.
comment:5 by , 5 years ago
| Resolution: | → fixed |
|---|---|
| Status: | new → closed |
Fixed with 2021-11-07,MR12.8-1007.

Format of RPD Instruction Word