[Coco] Nitros9 high speed mode
darccml at hotmail.com
Mon Jul 30 18:17:01 EDT 2007
>From: "Paul Fitch"
>In that case, is the high speed mode turned on "automatically"? And how
>would I be able to tell?
>Or if not turned on automatically, what command or system call is used to
>tell Nitros to use the high speed mode? And what command or system call is
>used to confirm that it has been done?
I dont know if Nitros9 has any built-in facility for this, but when I want
to test whether my code is running in fast mode or standard mode I use the
MODETST PSHS A,DP,X,Y,U ; PRESERVE REGISTERS
TFR W,Y ; Y = W (6309) / Y = #$FFFF (6809)
CLRA ; SET CC.Z (ASSUME FAST-MODE)
BSR L2 ; PUSH FAST-MODE RTI ADDRESS
BNE L1 ; BRANCH IF NOT IN FAST-MODE
TFR X,W ; RESTORE ORIGINAL VALUE OF W (6309)
L1 PULS A,DP,X,Y,U,PC ; RESTORE REGISTERS AND RETURN
L2 BSR L3 ; PUSH STANDARD-MODE RTI ADDRESS
INCA ; CLEAR CC.Z CAUSE WE AINT IN FAST-MODE
RTS ; POP STANDARD-MODE RTI ADDRESS
L3 PSHS CC,A,B,DP,X,Y,U ; STACK REGISTERS FOR STANDARD-MODE RTI
ORCC #$80 ; SET [E]NTIRE FLAG FOR RTI
RTI ; RETURN TO MODE-SPECIFIC LOCATION
This subroutine can be executed on both 6809 and 6309 processors. It returns
with the Z flag cleared when running in standard mode (or on a 6809). It
returns with the Z flag set when running in fast mode (6309 only). All
registers (including E and F) are preserved.
Don't get caught with egg on your face. Play Chicktionary!
More information about the Coco