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)

AL39_Figure_4-9.png (141.7 KB ) - added by Gary Dixon 5 years ago.
Format of RPD Instruction Word

Download all attachments as: .zip

Change History (6)

by Gary Dixon, 5 years ago

Attachment: AL39_Figure_4-9.png added

Format of RPD Instruction Word

comment:1 by Gary Dixon, 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 Gary Dixon, 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 Gary Dixon, 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 Eric Swenson, 5 years ago

Resolution: fixed
Status: newclosed

Fixed with 2021-11-07,MR12.8-1007.

Note: See TracTickets for help on using tickets.