View Single Post
Old 20 August 2006, 16:46   #18
Galahad/FLT
Going nowhere

Galahad/FLT's Avatar
 
Join Date: Oct 2001
Location: United Kingdom
Age: 48
Posts: 8,151
Right...

Firstly, I've only had a quick scan, but so far you have the following problems.

At the start of your Init routine you are doing:

MOVE.W #$4000,$DFF09A
MOVE.W $DFF01C,INTENA
MOVE.W $DFF002,DMACRAP
MOVE.W $DFF010,ADKCON
MOVE.W #%7fff,$DFF096
MOVE.W #%7fff,$DFF09A
MOVE.W #%7fff,$dff09c
MOVE.W #%83c0,$dff096
; MOVE.W #%c030,$DFF09A
MOVE.L 4.W,A6 ; INTERRUPT VOM SYSTEM ANFORDERN.
JSR -132(A6) ; FORBID ()

I've ditched the binary references because they are confusing and converted them to hexidecimal.

move.w #$4000,$dff09a is unecessary

Forbid multitasking should come before you halt the interrupts

your move.w #$83c0,$dff096 should come after you have installed the copperlist not before. I would change that value to $87e0 instead.

Before I install the copperlist, I always to a vertical blank wait first.

Afterwards I also clr.w $dff088

Your permit multitasking should come at the end of your restore routine, not at the start of it. (jsr -138(a6) )

In your closedown routine, you have reinstalled the system copperlist before your kill interrupts code (move.w #$7fff,$dff0x0 etc)

There is no vertical blank wait before you reinstall the copperlist

In your closedown routine you have incorrectly used ori.w #$c000,d0 to restore $dff09a, it should be $8000 in all cases.

As an extra, in your preserve routine at the start, store the contents of $dff010 for restoration later in $dff09e, again ori.w #$8000 to the value before moving.

Thats what I can spot so far, give that a whirl and see if that improves things
Galahad/FLT is online now  
 
Page generated in 0.04732 seconds with 11 queries