View Single Post
Old 20 August 2006, 17:01   #19
-Rob-
 
Posts: n/a
Quote:
Originally Posted by Galahad/FLT
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
Ok, sounds good. Would also be great if you could upload the fixed code to The Zone
 
 
Page generated in 0.04281 seconds with 11 queries