How does dual monitor word on X1000

AmigaOne X1000 platform specific issues.
User avatar
amigasociety
Posts: 306
Joined: Thu Feb 02, 2012 7:09 pm
Location: Northern California
Contact:

Re: How does dual monitor word on X1000

Post by amigasociety »

Severin, would be nice to see a video of this in action, your new apps that make screen switching easier.

;)

TJ
Happy owner of several Amiga systems including:

AmigaOne X5000
Amiga A1222 Tabor
User avatar
Severin
Beta Tester
Beta Tester
Posts: 189
Joined: Mon Dec 20, 2010 1:41 pm

Re: How does dual monitor word on X1000

Post by Severin »

@ssolie

They're not written as commodities yet, I just call them from fkey.

@amigasociety

I don't have the equipment or the bandwidth to do that but I can send you the beta versions although I haven't found a bug yet that occasionally locks the system. Probably due to changes in OS4 as I'm compiling OS3 68k exe's or maybe the ancient 3rd party library calls I've used... have to remove those and see what happens.

Anyway heres the code if anyone is interested:

SwapMonitor:

Code: Select all

#MODEID_FILTER = $FF000000 & #MONITOR_ID_MASK

*toFrontScreen.Screen = 0

lock.l = LockIBase_ (0)
*myIntuitionBase.IntuitionBase = IntuitionBase
*myScreen.Screen = *myIntuitionBase\FirstScreen

If *myScreen
  firstModeID.l = GetVPModeID_(*myScreen\ViewPort) & #MODEID_FILTER
  *myScreen = *myScreen\NextScreen
EndIf

While *myScreen
  toFrontModeID.l = GetVPModeID_(*myScreen\ViewPort) & #MODEID_FILTER
  If (toFrontModeID><firstModeID)
    *toFrontScreen = *myScreen
    *myScreen = 0
  Else
    *myScreen = *myScreen\NextScreen
  End If
Wend

UnlockIBase_ lock

If *toFrontScreen><0 Then ScreenToFront_ *toFrontScreen
End
SwapScreen:

Code: Select all

#MODEID_FILTER = $FF000000 & #MONITOR_ID_MASK

*toFrontScreen.Screen = 0
*toBackScreen.Screen  = 0
count.b=0

lock.l = LockIBase_ (0)
*myIntuitionBase.IntuitionBase = IntuitionBase
*myScreen.Screen = *myIntuitionBase\FirstScreen
*toBackScreen = *myScreen

If *myScreen
  firstModeID.l = GetVPModeID_(*myScreen\ViewPort) & #MODEID_FILTER
  *myScreen = *myScreen\NextScreen
EndIf

While *myScreen
  count + 1
  toFrontModeID.l = GetVPModeID_(*myScreen\ViewPort) & #MODEID_FILTER
  If (toFrontModeID=firstModeID) AND (*toFrontScreen=0)
    *toFrontScreen = *myScreen
    ;*myScreen = 0
  Else
    *myScreen = *myScreen\NextScreen
  End If
Wend

UnlockIBase_ lock

If *toFrontScreen><0
  ScreenToFront_ *toFrontScreen
  For i.b=1 To count
    ScreenToBack_ *toBackScreen
  Next
EndIf
End
Post Reply