| |
PopMilo
Registered: Mar 2004 Posts: 146 |
How to properly setup $fffe interrupt ?
Good day to you all, I have a bit of a problem so... :
I found some old code of mine on an old tape and transfered it to PC and want to compile it using tass and try it on CCS64 or VICE. Im sure code worked 15 years ago, but now... :)
So why this happens...
"sei
...
lda #<irqsr
ldx #>irqsr
sta $fffe
stx $ffff
...
cli"
I watched this code in VICEs debbuger and imidiatelly when sta $fffe is done there is NO change in $fffe ?
same with $ffff
So when cli goes, my prg just goes to $ff48 and my interupt routine is never executed...?
So I would be very gratefull if someone can write just some small piece of code that makes my routine go off in regular timed intervals (5-20 times a second...).
I read some other posts but cant get it to work...
thanks... |
|
| |
Radiant
Registered: Sep 2004 Posts: 639 |
You need to swap out KERNAL by poking the appropriate value to $01 first. See Mapping the C64 or so. |
| |
Wanderer Account closed
Registered: Apr 2003 Posts: 478 |
SEI
LDA #$35
STA $01
etc.
If you plan to use Kernal routines, remember to copy $E000-$FFFF) into itself so that when you switch it out, you don't crash. |
| |
PopMilo
Registered: Mar 2004 Posts: 146 |
Tryed that out... still something is wrong. Must be something in the rest of code...
I dont need kernel. Just VIC in bank 0, turn off basic and kernel, dont even need charset, got my own.
Code is 18Kb so I need time to look it up.
If you could supply just that: How to set up timed interrupt every now and then :), what to put in $01, $dc0d, $dd0d, $dc00 ? ...
p.s. This game is something you have never seen on C64 :) I got to fix it... |
| |
Radiant
Registered: Sep 2004 Posts: 639 |
When using $fffe interrupts, you also have to preserve the registers yourself. So, do pha txa pha tya pha at the beginning of your interrupt routine, and you should be set. |
| |
Scout
Registered: Dec 2002 Posts: 1570 |
Here you go:
*=$0810
sei
lda #<irq
ldy #>irq
sta $fffe
sty $ffff
lda #<brkirq
ldy #>brkirq
sta $fffa
sty $fffb
lda #$7f
sta $dc0d
sta $dd0d
lda #$00
sta $d012
lda #$1b
sta $d011
lda #$01
sta $d019
sta $d01a
lda #$35
sta $1
cli
jmp *
irq:
pha
txa
pha
tya
pha
inc $d020
asl $d019
pla
tay
pla
tax
pla
brkirq:
rti
|
| |
PopMilo
Registered: Mar 2004 Posts: 146 |
YES!!! After three evenings starring in code finally got it!!!
Am little puzzled, what was wrong at first place but who cares it works!
Your code did it (and the fact that I realised what the main loop was acctually doing ... it was written 14 years ago)
Thank you guys...
p.s. will upload code for all of you to admire when the graphics is done (Its a game but I salvaged only code, and the graphics file is gone so have to do some drawing (4 sprites and 5 chars :)and then youll see what was all about) |
| |
Scout
Registered: Dec 2002 Posts: 1570 |
Quote: YES!!! After three evenings starring in code finally got it!!!
Am little puzzled, what was wrong at first place but who cares it works!
Your code did it (and the fact that I realised what the main loop was acctually doing ... it was written 14 years ago)
Thank you guys...
p.s. will upload code for all of you to admire when the graphics is done (Its a game but I salvaged only code, and the graphics file is gone so have to do some drawing (4 sprites and 5 chars :)and then youll see what was all about)
Yay!
But that's what we're here for, right?
---
-= Silicon Ltd. =-
http://forum.siliconlimited.com
Commodore 64 Scenemusic Podcast
http://8bitmayhem.blogspot.com/ |
| |
TDJ
Registered: Dec 2001 Posts: 1879 |
I think that HEMA should first-release this game |
| |
Graham Account closed
Registered: Dec 2002 Posts: 990 |
The code lacks an LDA $DC0D and LDA $DD0D to clear the timer irq flags. You might encounter occassional crashes due to that. |
| |
PopMilo
Registered: Mar 2004 Posts: 146 |
I did used
bit $dcod
bit $ddod
in previous attempts. No noticable difference though...
|
... 22 posts hidden. Click here to view all posts.... |
Previous - 1 | 2 | 3 | 4 - Next |