Sergio Baldoví - 2023-08-28

I think it's related to this change in sound_beeper():
https://sourceforge.net/p/fuse-emulator/fuse/ci/d6c9fa6a81f9b189fac249f50efb972b9fdf71ba/tree/sound.c?diff=0e7de75994ee1a9bfff4ea09168f2f8d03fa1fe5

  if( tape_is_playing() ) {
    /* Timex machines have no loading noise */
    if( !settings_current.sound_load || machine_current->timex ) on = on & 0x02;
  } else {
    /* ULA book says that MIC only isn't enough to drive the speaker as output
       voltage is below the 1.4v threshold */
    if( on == 1 ) on = 0;
  }

We mute MIC only except for tape loading. A possible fix is adding tape saving as an exception too.

I also think there is an error when checking the the value of MIC bit in ula_write()

  sound_beeper( tstates,
                (!!(b & 0x10) << 1) + ( (!(b & 0x8)) | tape_microphone ) );

IMO it should be !!(b & 0x8) as the EAR bit. Previous change:
https://sourceforge.net/p/fuse-emulator/fuse/ci/e88313a4060fa6dbaf6f0136cd039019d9f8b4d2/tree/ula.c?diff=add3ea148141e74eededda64bc4f2daebddb3bf6

Patch attached.