AY emulator version 26.0

A new version were made because of serious performance problems of version 25.0

Version 26.0 is the same as 24.7 with fixed noise generator (used from version 25.0)

 

Also a new version of firmware for TurboSound were made.

4 thoughts to “AY emulator version 26.0”

  1. I think I’ve found a bug. The masking of the SRAM registers appears broken from V24.3 onwards. The read-back value contains all 8 bits of the value written.

    1. This patch fixes it:

      @@ -154,12 +154,12 @@
      in SREGSave,SREG ; save SREG // 1 cycle
      and BusOut1,CC0 // 1 cycle
      or BusData,BusOut1 ; construct register value from 2 ports // 1 cycle
      – mov BusOut1,BusData // 1 cycle
      – com BusOut1 ; invert register value // 1 cycle
      – std Z+0x20,BusOut1 ; put inverted register value to SRAM for read mode // 2 cycle

      ld BusOut2,Z ; Load register mask from SRAM // 2 cycle
      and BusData,BusOut2 ; apply register mask // 1 cycle
      + mov BusOut1,BusData // 1 cycle
      + com BusOut1 ; invert register value // 1 cycle
      + std Z+0x20,BusOut1 ; put inverted register value to SRAM for read mode // 2 cycle

      mov BusOut2,BusOut1 // 1 cycle
      and BusOut2,CC0 // 1 cycle

      1. Thanks! But it is not a bug, the value should be the same as it was written to the register. The bug was in previous versions. The mask is applied only for internal logic but not for register values.

        1. Thanks for the reply. My reason for thinking it’s a bug is the detection utility at https://www.bytedelight.com/?p=6327. It writes the value 31 to register 1 and reads it back. If the value has changed to 15 then it reports an AY-3-8912. Without masking it reads 31 and reports the AVR-AY as a YM2149. Unfortunately I am still waiting to get a real AY-3-8912 to test this fully!

Leave a Reply

Your email address will not be published. Required fields are marked *