Welcome to our latest new user
maak
! (Registered 2024-04-18)
You are not logged in -
nap
CSDb User Forums
Forums
>
C64 Coding
>
TIL: The instruction after SEI can be executed before a pending IRQ is handled
2017-11-07
15:56
Krill
Registered: Apr 2002
Posts: 2825
TIL: The instruction after SEI can be executed before a pending IRQ is handled
As described here:
http://visual6502.org/wiki/index.php?title=6502_Timing_of_Inter..
I never knew this, after all those years, and thought i'd share this as a heads-up.
Thanks to
Bubis
for pointing it out to me!
... 96 posts hidden. Click
here
to view all posts....
2017-11-15
16:30
lft
Registered: Jul 2007
Posts: 369
Just some idle thoughts: When sprites 3-7 are enabled, the earliest start of a raster interrupt handler happens nine cycles later than if those sprites are disabled. Not ten, which would be expected if the CPU responded immediately. So the first cycle of interrupt latency is due to something that happens in parallel to what the cpu is doing, and is unaffected by whether it's halted or running. It could be latching the signal, for instance.
So even if the interrupt is triggered by writing to d01a, at least one more cycle (fetching the next opcode) should happen before the main program is interrupted. And then it seems reasonable that the fetched instruction is executed. But the recent discussion makes me uncertain.
This should be tested.
2017-11-15
21:44
MagerValp
Registered: Dec 2001
Posts: 1055
Good points, and easy enough to test:
pendingirq2.prg
, same sequence of SYS calls as in comment #91. The instruction immediately following the sta $d01a, dey, is executed before the IRQ triggers (verified that VICE matches my C64). So this means that immediately writing the register in the VICE monitor with > d01a 01 doesn't match the behavior of sta $d01a, but I suppose that isn't too surprising.
It makes sense too - at least on the 65c02 IRQs are evaluated during the last cycle of the previous instruction, and what happens is that the next opcode is replaced by $00, forcing a BRK. NMOS 6502 presumably works the same.
2017-11-17
22:07
Copyfault
Registered: Dec 2001
Posts: 466
So my assumption was correct :)
Thanks to everyone for clarification, esp. to MagerValp for quickly mocking up a test prg.
Previous
-
1
|
2
|
3
|
4
|
5
|
6
|
7
|
8
|
9
|
10
| 11 - Next
Refresh
Subscribe to this thread:
You need to be logged in to post in the forum.
Search the forum:
Search
All forums
C64 Coding
C64 Composing
C64 Pixeling
C64 Productions
CSDb Bug Reports
CSDb Discussions
CSDb Entries
CSDb Feedback
CSDb Info
CSDb moderators
CSDb Questions
CSDb V2 development
Messages to moderators
Requests
for
in
Writer & text
Text
Writer
All times are CET.
Search CSDb
All
Releases
Groups
Sceners
Events
BBS
SIDs
-------
Forum
Comments
Advanced
Users Online
Alakran_64
Linus/MSL
Johnny/Abandoneds
eryngi
Guests online: 112
Top Demos
1
Next Level
(9.8)
2
Mojo
(9.7)
3
Coma Light 13
(9.7)
4
Edge of Disgrace
(9.6)
5
Comaland 100%
(9.6)
6
No Bounds
(9.6)
7
Uncensored
(9.6)
8
Wonderland XIV
(9.6)
9
The Ghost
(9.6)
10
Bromance
(9.6)
Top onefile Demos
1
It's More Fun to Com..
(9.9)
2
Party Elk 2
(9.7)
3
Cubic Dream
(9.6)
4
Copper Booze
(9.5)
5
Rainbow Connection
(9.5)
6
TRSAC, Gabber & Pebe..
(9.5)
7
Onscreen 5k
(9.5)
8
Dawnfall V1.1
(9.5)
9
Quadrants
(9.5)
10
Daah, Those Acid Pil..
(9.5)
Top Groups
1
Oxyron
(9.3)
2
Nostalgia
(9.3)
3
Booze Design
(9.3)
4
Censor Design
(9.3)
5
Crest
(9.3)
Top Original Suppliers
1
Derbyshire Ram
(9.5)
2
Black Beard
(9.4)
3
hedning
(9.2)
4
Baracuda
(9.1)
5
Irata
(8.5)
Home
-
Disclaimer
Copyright © No Name 2001-2024
Page generated in: 0.032 sec.