There are dual CF adapters, I don't know if there are ide-sata adapters with two ports (I haven't seen any)
Years ago I reported that when you played a sound or ann mp3 and switched screens quickly the sound went bonkers and It started playing like "Andy and the chipmunks", perhaps something related to interrupt handling? I also noticed that in the first MorphOS versions the devices disconnected and you had to unplug and plug them back again and that in the next ones It crashed. I did a small program to test It.
#include <stdio.h>
#include <stdlib.h>
#include <proto/asl.h>
#include <libraries/asl.h>
#include <proto/intuition.h>
#ifdef __MORPHOS__
#include <ppcinline/intuition.h>
#endif
#include <intuition/screens.h>
#include <graphics/gfxmacros.h>
#include <graphics/displayinfo.h>
#include <graphics/gfxmacros.h>
#include <graphics/displayinfo.h>
struct Library *AslBase=NULL;
struct IntuitionBase *IntuitionBase=NULL;
struct ScreenModeRequester *modo1 = NULL,*modo2 = NULL;
struct Screen *pantalla1 = NULL,*pantalla2 = NULL;
struct TagItem pantallatags1[] =
{
ASLSM_TitleText, (ULONG)"Make Alvin happy",
ASLSM_DoOverscanType, FALSE,
ASLSM_DoWidth, TRUE,
ASLSM_DoHeight, TRUE,
ASLSM_DoAutoScroll, TRUE,
ASLSM_InitialAutoScroll,TRUE,
ASLSM_MinWidth, 639,
ASLSM_MinHeight, 400,
ASLSM_MinDepth, 8,
ASLSM_InitialDisplayWidth,640,
ASLSM_InitialDisplayHeight,480,
ASLSM_InitialDisplayDepth,8,
ASLSM_InitialOverscanType, 0,
TAG_DONE
};
struct TagItem pantallatags2[] =
{
ASLSM_TitleText, (ULONG)"and the chipmunks too!",
ASLSM_DoOverscanType, FALSE,
ASLSM_DoWidth, TRUE,
ASLSM_DoHeight, TRUE,
ASLSM_DoAutoScroll, TRUE,
ASLSM_InitialAutoScroll,TRUE,
ASLSM_MinWidth, 799,
ASLSM_MinHeight, 599,
ASLSM_MinDepth, 8,
ASLSM_InitialDisplayWidth,800,
ASLSM_InitialDisplayHeight,600,
ASLSM_InitialDisplayDepth,8,
ASLSM_InitialOverscanType, 0,
TAG_DONE
};
int main(int argc, char **argv){
BOOL kaka=FALSE;
int i=0;
printf("Invoking Alvin and the chipmunks! (leave a mp3 player playing and later launch this, choose 2 different resolutions. Check out if Alvin appearsn");
if (!(IntuitionBase=OpenLibrary("intuition.library",34)))
{
printf("Damn! Alvin can't find asl.library!n");
goto end;
}
if (!(AslBase=OpenLibrary("asl.library",38)))
{
printf("Damn! Alvin can't find asl.library!n");
goto end;
}
if ((modo1=AllocAslRequest(ASL_ScreenModeRequest,NULL))==NULL)
{
printf("Error: Alvin can't open the f*cking screenrequestern");
}
else
{
kaka=AslRequest(modo1,pantallatags1);
pantalla1=OpenScreenTags(NULL,
SA_ShowTitle, FALSE,
SA_Title,"Alvin...",
SA_DisplayID,modo1->sm_DisplayID,
SA_Depth,modo1->sm_DisplayDepth,
SA_Width,modo1->sm_DisplayWidth,
SA_Height,modo1->sm_DisplayHeight,
SA_Overscan,modo1->sm_OverscanType,
SA_AutoScroll,FALSE,
TAG_DONE);
}
if ((modo2=AllocAslRequest(ASL_ScreenModeRequest,NULL))==NULL)
{
printf("Error: Alvin can't open the f*cking screenrequestern");
}
else
{
kaka=AslRequest(modo2,pantallatags2);
pantalla2=OpenScreenTags(NULL,
SA_ShowTitle, FALSE,
SA_Title," ...and the Chipmunks",
SA_DisplayID,modo2->sm_DisplayID,
SA_Depth,modo2->sm_DisplayDepth,
SA_Width,modo2->sm_DisplayWidth,
SA_Height,modo2->sm_DisplayHeight,
SA_Overscan,modo2->sm_OverscanType,
SA_AutoScroll,FALSE,
TAG_DONE);
}
for(i=0;i<50;i++){
ScreenToFront(pantalla1);
printf(".");
ScreenToFront(pantalla2);
printf(".");
}
end:
if (pantalla1) CloseScreen(pantalla1);
if (pantalla2) CloseScreen(pantalla2);
if (AslBase) CloseLibrary(AslBase);
if (IntuitionBase) CloseLibrary(IntuitionBase);
}