Log inRegister an accountBrowse CSDbHelp & documentationFacts & StatisticsThe forumsAvailable RSS-feeds on CSDbSupport CSDb Commodore 64 Scene Database
You are not logged in - nap
CSDb User Forums


Forums > C64 Coding > Simple interrupt question.
2008-11-19 22:41
oleoleo2
Account closed

Registered: Oct 2008
Posts: 21
Simple interrupt question.

HI Guys.

I am new to programming in assembler/machinecode on the c64. I have a simple question about the registers $DC0D and $DD0D. I can see in a lot of small programming-examples that they're set to the value $#7F (= 01111111), but none with deep explanations. I found this:

DC0D
CIA Interrupt Control Register (Read IRQs/Write Mask)
7   IRQ Flag (1 = IRQ Occurred) / Set-Clear Flag
4   FLAG1 IRQ (Cassette Read / Serial Bus SRQ Input)
3   Serial Port Interrupt
2   Time-of-Day Clock Alarm Interrupt
1   Timer B Interrupt
0   Timer A Interrupt

'Masking' would say that you define what the computer should look at what to not to look at right? The example where I have seen $DC0D is set to $#7F is where the raster-interrupt routine is used. Does the = 1 mean that bit 0-4 is not used and if that is so, then why is the bits 'inverted'? I guess the bit 0-4 is what we not wan't when using raster-interrupt?
 
... 10 posts hidden. Click here to view all posts....
 
2008-11-20 13:21
oleoleo2
Account closed

Registered: Oct 2008
Posts: 21
Quote: If the IRQ mask was designed without set/clear bit, you would have to do something like this to set/clear an IRQ:

LDA $DC0D
ORA #??
STA $DC0D

or

LDA $DC0D
AND #??
STA $DC0D

This has two disadvantages: You need to read the IRQ mask (which is not directly possible on the CIA because reading accesses the flags not the mask) and the setting/clearing is no atomic operation so it's not IRQ save.


Yes but it should be possible anyway with mutual exclusion, and to enable/disable interrupts at the right moments. It would complexify the programs a little bit though.
2008-11-20 14:24
JackAsser

Registered: Jun 2002
Posts: 2014
Quote: Yes but it should be possible anyway with mutual exclusion, and to enable/disable interrupts at the right moments. It would complexify the programs a little bit though.

Mind you, that it would be possible for IRQs using SEI/CLI ($dcxx), but not for NMIs ($ddxx).
2008-11-20 22:59
Graham
Account closed

Registered: Dec 2002
Posts: 990
Also there are applications where the added possible IRQ latency is no option. And ofcourse the CIA had to be good enough for those too.
2008-11-21 09:39
oleoleo2
Account closed

Registered: Oct 2008
Posts: 21
Yeah, but if the IRQ mask was designed in a different way, the processor was probably too, and the applications would have been made to fit the system (I think though this should be in under another topic don't you? :)..
Previous - 1 | 2 - Next
RefreshSubscribe to this thread:

You need to be logged in to post in the forum.

Search the forum:
Search   for   in  
All times are CET.
Search CSDb
Advanced
Users Online
Weetibix
Guests online: 124
Top Demos
1 Next Level  (9.7)
2 13:37  (9.7)
3 Mojo  (9.7)
4 Coma Light 13  (9.6)
5 Edge of Disgrace  (9.6)
6 What Is The Matrix 2  (9.6)
7 The Demo Coder  (9.6)
8 Uncensored  (9.6)
9 Comaland 100%  (9.6)
10 Wonderland XIV  (9.6)
Top onefile Demos
1 No Listen  (9.6)
2 Layers  (9.6)
3 Cubic Dream  (9.6)
4 Party Elk 2  (9.6)
5 Copper Booze  (9.6)
6 X-Mas Demo 2024  (9.5)
7 Dawnfall V1.1  (9.5)
8 Rainbow Connection  (9.5)
9 Onscreen 5k  (9.5)
10 Morph  (9.5)
Top Groups
1 Performers  (9.3)
2 Booze Design  (9.3)
3 Oxyron  (9.3)
4 Censor Design  (9.3)
5 Triad  (9.3)
Top Logo Graphicians
1 t0m3000  (10)
2 Sander  (9.8)
3 Mermaid  (9.5)
4 Facet  (9.4)
5 Shine  (9.4)

Home - Disclaimer
Copyright © No Name 2001-2024
Page generated in: 0.068 sec.