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.
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.
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.
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
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.
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!