Skip to content

Commit

Permalink
PDP11: 11/70 read-only registers must not return NXM on write
Browse files Browse the repository at this point in the history
17 777 740 - 17 777 742, read-only error address registers,
and 17 777 764, a read-only System ID register,

and are not handled in the CPU70_wr() routine, which means for these
addresses the routine returns NXM, which then translates to "bus timeout"
(no response to address), and then, as a result, trap to vector 4.

That is incorrect, IMO.

These locations are read-only yet the address gets decoded, and even
though writing does not have any effect, the write routine for these
addresses should return SCPE_OK.
  • Loading branch information
al20878 committed Oct 10, 2023
1 parent 25b7933 commit aebd2bf
Showing 1 changed file with 6 additions and 0 deletions.
6 changes: 6 additions & 0 deletions PDP11/pdp11_cpumod.c
Original file line number Diff line number Diff line change
Expand Up @@ -685,6 +685,9 @@ return SCPE_NXM; /* unimplemented */
t_stat CPU70_wr (int32 data, int32 pa, int32 access)
{
switch ((pa >> 1) & 017) { /* decode pa<4:1> */
case 000:
case 001:
return SCPE_OK; /* error addr */

case 002: /* MEMERR */
ODD_SHF (data);
Expand All @@ -708,6 +711,9 @@ switch ((pa >> 1) & 017) { /* decode pa<4:1> */
case 011: /* high size */
return SCPE_OK;

case 012: /* system ID */
return SCPE_OK;

case 013: /* CPUERR */
CPUERR = 0;
return SCPE_OK;
Expand Down

0 comments on commit aebd2bf

Please sign in to comment.