Re: [hatari-devel] add support for TT ram -> problem with HD emulation and DTA |
[ Thread Index |
Date Index
| More lists.tuxfamily.org/hatari-devel Archives
]
- To: hatari-devel@xxxxxxxxxxxxxxxxxxx
- Subject: Re: [hatari-devel] add support for TT ram -> problem with HD emulation and DTA
- From: Uwe Seimet <Uwe.Seimet@xxxxxxxxx>
- Date: Wed, 17 Dec 2014 14:05:28 +0100
- Dkim-signature: v=1; a=rsa-sha1; c=relaxed/relaxed; t=1418821528; l=1749; s=domk; d=seimet.de; h=In-Reply-To:Content-Transfer-Encoding:Content-Disposition: Content-Type:MIME-Version:References:Subject:To:From:Date; bh=2AZSQ0NtOoig+n1sBi0NS/dPN7c=; b=sACxb0INhHzwdmeqofe9IqVd326ez1uwoTSXYlrMOMUZOl/czk67XoOziw4l0b1tR/A apdOIasPniR+ta6HUtKLq4DmthoLn01I4LcGr7pNBBjFYgJckJosdZnMZ2vP7J6fjbLlS n2Zrm2frSpl2QcJjpLUa71wQN+Ubjs6CeOw=
Hi,
By the way, remember that one cannot transfer data from/to TT RAM using
ACSI/DMA. So for full compatibility it should be ensured that such a
transfer does not work.
Take care
Uwe
> Le 17/12/2014 00:53, Nicolas Pomarède a écrit :
>
> Some updates, I found an issue between TT ram and HD gemdos emulation.
>
> If you boot TOS 3.06 with HD gemdos emulation, you will get some messages :
>
> GEMDOS Fsfirst() failed due to invalid DTA address 0x121c00e0
>
> And you can't access c: or whatever letter your HD has been assigned.
>
> After tracing various calls, the problem is in gemdos.c where basically all
> code that does HD interception expect the DTA to be in standard RAM, not in
> valid TT RAM :(
>
> In GemDOS_SFirst() :
>
> nDTA = STMemory_ReadLong(STMemory_ReadLong(act_pd)+32);
>
> act_pd = $771e, and the content of $771e is $0100000e.
>
> But STMemory_ReadLong only handles RAM, so this reads at $0000000e instead
> of 0100000e, and everything goes wrong after that :(
>
> I will update the STMemory_Read/_Write functions to work with any kind of
> memory, and hopefully this sould fix this issue.
>
> There's also another problem when saving/restoring snapshot :
>
> Addr = ((Uint8 *)pDTA - STRam);
> MemorySnapShot_Store(&Addr,sizeof(Addr));
>
> This also assumes pDTA is in RAM, which is not the case when TT RAM is
> enabled.
> To fix this, instead of using pDTA which points to the host's memory where
> DTA is, I will store the DTA value (in Atari's memory) and dereference it
> only when needed with STMemory_STAddrToPointer()
>
>
> So, only solution for now to have extra TT RAM and HD is to use a direct HD
> image, not the HD gemdos emulation.
>
> Nicolas
>
>
>
>