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:
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user