1
0
mirror of https://github.com/open-simh/simh.git synced 2026-05-03 14:49:02 +00:00

PDP11: Document CIS register-form instructions

Only the string instructions document the registers used by the
register-form instructions. Also document the BCD register-form
instructions. Although, the operands have already been loaded into the
special-purpose instructions before the op switch, I think this
documentation is useful.
This commit is contained in:
Thalia Archibald
2025-04-25 10:28:28 -07:00
parent 319f07fef3
commit 29d390024f

View File

@@ -470,11 +470,11 @@ switch (op) { /* case on opcode */
/* MOVRC, MOVRCI /* MOVRC, MOVRCI
Operands (MOVC, MOVTC): Operands (MOVRC):
R0, R1 = source string descriptor R0, R1 = source string descriptor
R2, R3 = dest string descriptor R2, R3 = dest string descriptor
R4<7:0> = fill character R4<7:0> = fill character
Operands (MOVCI, MOVTCI): Operands (MOVRCI):
A1LNT, A1ADR = source string descriptor A1LNT, A1ADR = source string descriptor
A2LNT, A2ADR = dest string descriptor A2LNT, A2ADR = dest string descriptor
A3LNT<7:0> = fill character A3LNT<7:0> = fill character
@@ -754,8 +754,8 @@ switch (op) { /* case on opcode */
R0, R1 = source string descriptor R0, R1 = source string descriptor
R2, R3 = substring descriptor R2, R3 = substring descriptor
Operands (MATCI): Operands (MATCI):
A1LNT, A1ADR = source1 string descriptor A1LNT, A1ADR = source string descriptor
A2LNT, A2ADR = source2 string descriptor A2LNT, A2ADR = substring string descriptor
Condition codes: Condition codes:
NZ = set from R0 NZ = set from R0
@@ -818,7 +818,11 @@ switch (op) { /* case on opcode */
/* ADDN, SUBN, ADDP, SUBP, ADDNI, SUBNI, ADDPI, SUBPI /* ADDN, SUBN, ADDP, SUBP, ADDNI, SUBNI, ADDPI, SUBPI
Operands: Operands (ADDN, SUBN, ADDP, SUBP):
R0, R1 = source1 string descriptor
R2, R3 = source2 string descriptor
R4, R5 = destination string descriptor
Operands (ADDNI, SUBNI, ADDPI, SUBPI):
A1LNT, A1ADR = source1 string descriptor A1LNT, A1ADR = source1 string descriptor
A2LNT, A2ADR = source2 string descriptor A2LNT, A2ADR = source2 string descriptor
A3LNT, A3ADR = destination string descriptor A3LNT, A3ADR = destination string descriptor
@@ -860,7 +864,11 @@ switch (op) { /* case on opcode */
/* MULP, MULPI /* MULP, MULPI
Operands: Operands (MULP):
R0, R1 = source1 string descriptor
R2, R3 = source2 string descriptor
R4, R5 = destination string descriptor
Operands (MULPI):
A1LNT, A1ADR = source1 string descriptor A1LNT, A1ADR = source1 string descriptor
A2LNT, A2ADR = source2 string descriptor A2LNT, A2ADR = source2 string descriptor
A3LNT, A3ADR = destination string descriptor A3LNT, A3ADR = destination string descriptor
@@ -898,7 +906,11 @@ switch (op) { /* case on opcode */
/* DIVP, DIVPI /* DIVP, DIVPI
Operands: Operands (DIVP):
R0, R1 = divisor string descriptor
R2, R3 = dividend string descriptor
R4, R5 = destination string descriptor
Operands (DIVPI):
A1LNT, A1ADR = divisor string descriptor A1LNT, A1ADR = divisor string descriptor
A2LNT, A2ADR = dividend string descriptor A2LNT, A2ADR = dividend string descriptor
A3LNT, A3ADR = destination string descriptor A3LNT, A3ADR = destination string descriptor
@@ -948,7 +960,10 @@ switch (op) { /* case on opcode */
/* CMPN, CMPP, CMPNI, CMPPI /* CMPN, CMPP, CMPNI, CMPPI
Operands: Operands (CMPN, CMPP):
R0, R1 = source1 string descriptor
R2, R3 = source2 string descriptor
Operands (CMPNI, CMPPI):
A1LNT, A1ADR = source1 string descriptor A1LNT, A1ADR = source1 string descriptor
A2LNT, A2ADR = source2 string descriptor A2LNT, A2ADR = source2 string descriptor
@@ -979,7 +994,12 @@ switch (op) { /* case on opcode */
/* ASHN, ASHP, ASHNI, ASHPI /* ASHN, ASHP, ASHNI, ASHPI
Operands: Operands (ASHN, ASHP):
R0, R1 = source string descriptor
R2, R3 = destination string descriptor
R4<11:8> = rounding digit
R4<7:0> = shift count
Operands (ASHNI, ASHPI):
A1LNT, A1ADR = source string descriptor A1LNT, A1ADR = source string descriptor
A2LNT, A2ADR = destination string descriptor A2LNT, A2ADR = destination string descriptor
A3LNT<11:8> = rounding digit A3LNT<11:8> = rounding digit
@@ -1019,7 +1039,10 @@ switch (op) { /* case on opcode */
/* CVTPN, CVTPNI /* CVTPN, CVTPNI
Operands: Operands (CVTPN):
R0, R1 = source string descriptor
R2, R3 = destination string descriptor
Operands (CVTPNI):
A1LNT, A1ADR = source string descriptor A1LNT, A1ADR = source string descriptor
A2LNT, A2ADR = destination string descriptor A2LNT, A2ADR = destination string descriptor
@@ -1041,7 +1064,10 @@ switch (op) { /* case on opcode */
/* CVTNP, CVTNPI /* CVTNP, CVTNPI
Operands: Operands (CVTNP):
R0, R1 = source string descriptor
R2, R3 = destination string descriptor
Operands (CVTNPI):
A1LNT, A1ADR = source string descriptor A1LNT, A1ADR = source string descriptor
A2LNT, A2ADR = destination string descriptor A2LNT, A2ADR = destination string descriptor
@@ -1063,9 +1089,11 @@ switch (op) { /* case on opcode */
/* CVTNL, CVTPL, CVTNLI, CVTPLI /* CVTNL, CVTPL, CVTNLI, CVTPLI
Operands: Operands (CVTNL, CVTPL):
R0, R1 = source string descriptor
Operands (CVTNLI, CVTPLI):
A1LNT, A1ADR = source string descriptor A1LNT, A1ADR = source string descriptor
A2LNT = destination address (inline only) A2LNT = destination address
Condition codes: Condition codes:
NZV = set from result NZV = set from result
@@ -1109,10 +1137,12 @@ switch (op) { /* case on opcode */
/* CVTLN, CVTLP, CVTLNI, CVTLPI /* CVTLN, CVTLP, CVTLNI, CVTLPI
Operands: Operands (CVTLN, CVTLP):
R0, R1 = destination string descriptor
R2:R3 = source long - EIS format
Operands (CVTLNI, CVTLPI):
A1LNT, A1ADR = destination string descriptor A1LNT, A1ADR = destination string descriptor
A2LNT, A2ADR = source long (CVTLNI, CVTLPI) - VAX format A2LNT, A2ADR = source long - VAX format
R2:R3 = source long (CVTLN, CVTLP) - EIS format
Condition codes: Condition codes:
NZV = set from result NZV = set from result