Notice: Trying to access array offset on value of type bool in /mnt/cpcwiki-httpdocs/includes/libs/IPSet.php on line 243

Notice: Trying to access array offset on value of type bool in /mnt/cpcwiki-httpdocs/includes/libs/IPSet.php on line 246

Notice: Trying to access array offset on value of type bool in /mnt/cpcwiki-httpdocs/includes/libs/IPSet.php on line 243

Notice: Trying to access array offset on value of type bool in /mnt/cpcwiki-httpdocs/includes/libs/IPSet.php on line 246

Notice: Trying to access array offset on value of type null in /mnt/cpcwiki-httpdocs/includes/profiler/SectionProfiler.php on line 104

Notice: Trying to access array offset on value of type null in /mnt/cpcwiki-httpdocs/includes/profiler/SectionProfiler.php on line 104

Notice: Trying to access array offset on value of type null in /mnt/cpcwiki-httpdocs/includes/profiler/SectionProfiler.php on line 105

Notice: Trying to access array offset on value of type null in /mnt/cpcwiki-httpdocs/includes/profiler/SectionProfiler.php on line 105

Notice: Trying to access array offset on value of type null in /mnt/cpcwiki-httpdocs/includes/profiler/SectionProfiler.php on line 106

Notice: Trying to access array offset on value of type null in /mnt/cpcwiki-httpdocs/includes/profiler/SectionProfiler.php on line 106
Plus Vectored Interrupt Bug - CPCWiki
Last modified on 30 July 2017, at 12:48

Plus Vectored Interrupt Bug

Revision as of 12:48, 30 July 2017 by Arnoldemu (Talk | contribs)

NOTE: Vectored interrupts are bugged.

Following discussions on cpcwiki involving roudoudou, Longshot, gerald, arnoldemu and dragon, it has been found that if the instruction which is being interrupted is located in a memory region where A13=1 (i.e. &2000-&3fff, &6000-&7fff, &a000-&cfff, &e000-&ffff) then the bug will not occur.

When the instruction is in a memory region where A13=0 then the vector will be seen to change between 6 and 4. This is related to if the CPU is performing a memory read/write.

The bug is independent of the value of I register, the location of the interrupt service routine, the location of the vector table which has the interrupt service routine addresses.

The exact triggers are being investigated.

Advice, either point all interrupt vectors to the same interrupt handler and manually acknowledge the dma interrupts OR locate your code where A13=1.


http://www.cpcwiki.eu/index.php/File:IM2_Plus_Ack_Bug.png