1
0
mirror of https://github.com/simh/simh.git synced 2026-02-05 07:55:37 +00:00

IBM1130: Fix address computation overflow

In sim_instr(), the effective address is computed; for the case of TAG
(index register addressing), the contents of the specified index register
is added to the effective address, but the result is not masked to 16
bits as per the hardware functionality.

Adding a a 16 bit mask operation fixes the issue.
This commit is contained in:
Charles Anthony
2024-06-08 13:53:17 -07:00
committed by Mark Pizzolato
parent ca848d92d7
commit da83dab1fb

View File

@@ -655,7 +655,7 @@ t_stat sim_instr (void)
eaddr = word2; /* assume standard addressing & compute effective address */
if (TAG) /* if indexed */
eaddr += ReadIndex(TAG); /* add index register value */
eaddr = (eaddr + ReadIndex(TAG)) & 0xFFFF; /* add index register value */
if (INDIR) /* if indirect addressing */
eaddr = ReadW(eaddr); /* pick up referenced address */