OpenCores

Program Memory bank can be switched during interrupt

Back to bugtracker overview.

Information:
Type :: BUG
Status :: CLOSED
Assigned to :: Arnim, Laeuger

Description:
Affected releases: 0.1 BETA, 0.2 BETA

During an interrupt service routine (i.e. after vectoring to location 3 or 7 of the Program Memory and befor executing the RETR instruction) the Program Memory bank can be switched by executing a JMP or CALL instruction. These instructions honour the current state of the Program Memory Bank Flag and thus switch the Program Memory bank upon execution.

This violates the MCS-48 User's Manual Section 3.1.2 "Extended Program Memory Addressing" which states that the Memory Bank Flag is not taken into account for JMP and CALL during interrupt. Instead, bit 11 of the Program Counter is always held to '0'.

Fixed in:
int.vhd 1.2
decoder.vhd 1.14
Updated regression test:
black_box/mb/int
Fix will be included in next release.

Comments:

Laeuger, Arnim Jul 3, 2004
The i8039 emulator has been fixed as well. It contained an error related to the handling of MB after return from the interrupt service routine with RETR.

Fixed in i8039.c 1.6

Post a comment:
Login to post comments!

Back to bugtracker overview.

© copyright 1999-2012 OpenCores.org, equivalent to ORSoC AB, all rights reserved. OpenCores®, registered trademark.