Re: [hatari-devel] DSP patch suggestion

[ Thread Index | Date Index | More lists.tuxfamily.org/hatari-devel Archives ]


> Am 03.12.2023 um 12:09 schrieb Nicolas Pomarède <npomarede@xxxxxxxxxxxx>:
> 
> Le 03/12/2023 à 11:09, Andreas Grabher a écrit :
>> Hello all,
>> I created a new patch that will cleanly merge with Hatari. It contains these changes:
>> Changes without (noticeable) effect:
>>  * dsp.c: Changing "P ram" to "P rom“ in spaces[2][1]. This element of
>>    the array is unused by Hatari and the change therefore has zero
>>    effect but makes things future proof in case one wants to add the
>>    bootstrap ROM later.
>>  * dsp.c: Moving the check for program space above the check for
>>    internal RAM. This change has no functional effect but makes things
>>    future proof in case one wants to add the bootstrap ROM later. Very
>>    minor side effect is that one additional condition is checked in
>>    case of X and Y internal RAM access. Effect on performance is not
>>    noticeable (if one wants to optimise for performance many other
>>    things could be improved). No other accesses are affected.
>>  * dsp_core.c: Removing duplicate HSR initialisation. This has zero effect.
>>  * dsp_core.c: Moving dsp_host_interrupt initialisation to a different
>>    place inside the function. This is just cleaning and has zero effect.
>>  * dsp_core.h: Adding rom[2] (P ROM). This change has no functional
>>    effect but makes things future proof in case one wants to add the
>>    bootstrap ROM later.
>>  * dsp_cpu.c: Moving check for program space above check for internal
>>    RAM. See comments in point 2.
>> Changes with effect:
>>  * dsp_core.c: Adding host interface initialisation. This function of
>>    the DSP was not simulated previously but is required for some DSP
>>    code on the NeXT. I don’t know if any Hatari program makes use of
>>    this function but I think it should be included anyway to match real
>>    DSP more closely. I highly recommend this addition.
>>  * dsp_core.c: Adding early abort of the hacked bootstrap loader. The
>>    real bootstrap loader permanently checks HF0. If HF0 is set, it
>>    exits early even if a limited amount of bytes have been transferred.
>>    NeXT makes heavy use of this feature. This is required to accurately
>>    simulate the function of the bootstrap loader programmed to the real
>>    DSP. This addition is highly recommended and has zero negative side
>>    effects.
>>  * dsp_core.c: The real bootstrap loader sets R0 to the amount of bytes
>>    copied and OMR to 2. This needs to be added to accurately simulate
>>    the bootstrap program and match real DSP. This change is highly
>>    recommended and has zero negative side effects.
>>  * dsp_core.c: Adding host received data interrupt. This is missing
>>    from the current Hatari code. It must be a mistake. This is highly
>>    recommended to match real DSP.
>> Changes not included:
>>  * DMA interface: Atari obviously does not use the DMA interface of the
>>    DSP host port. Therefore I didn’t include my implementation of it.
>>  * Bootstrap ROM: This feature is not necessary. It is more a question
>>    of wanting to avoid using hacks (dsp_core.running et al). I did not
>>    include this in my patch because it requires extra CPU power without
>>    functional benefits.
>>  * Starting with different modes: The DSP has 4 different modes. Hatari
>>    is hard coded to always use mode 2 (normal expanded mode). Real
>>    simulation of the modes would be required for using bootstrap ROM.
>>    Although in theory there could be other programs making use of this,
>>    there seem to be none on the NeXT and probably also none on Atari.
>>    Therefore I did not include this.
>> There seem to be a few white space issues, because tabs are used between code and comments and because changing from SDL types to normal fixed length types messed things a bit. If you want me to fix this, I can provide a patch (replacing tabs with spaces).
>> Feel free to ask any questions.
> 
> Hi
> 
> thanks for your patch.
> since it implies several changes, could it be possible for you to split it at least in two ? one patch for not noticeable effect and one for possible effects ?
> 
> I understand these work under Previous, but just in case it breaks sthg in Hatari for some games/demos, it would make bisescting easier if we don't commit one single whole patch.
> 
> If not possible, the single patch can be applied anyway as there's no one really working on dsp in hatari at the moment, any improvement/fix should be merged.
> 
> Nicolas
> 
Yes, of course! I have split it into three patches. And yes, the functional changes (patch „improving“) have been part of Previous for a long time and have not caused any regressions. On the contrary, they were necessary to solve problems. Before making changes I always checked the data sheet of the 56001 to confirm that my changes match the specifications.

Regards
Andreas

Attachment: dsp_patch_improving.diff
Description: Binary data

Attachment: dsp_patch_cleaning.diff
Description: Binary data

Attachment: dsp_patch_futureproofing.diff
Description: Binary data







Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/