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:
committed by
Mark Pizzolato
parent
ca848d92d7
commit
da83dab1fb
@@ -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 */
|
||||
|
||||
|
||||
Reference in New Issue
Block a user