Exactly this is so (3 cases):
1) The original BoxSoft has no timeout at all (no watchdog, unless it have a monostable multivibrator with time less than 20 ms, triggered by the first change of RTS - I don't know). Always after four nibbles resets the counter.
2) In the extended MSX protocol (NYYRIKKI) after fourth nibble starts the timer with time of 3000 μs. If at this time there is no change RTS, the counter of nibbles is reset.
3) In EnterMice always after each change of the RTS is started timer/watchdog with time of 1500 μs. If during this time there will be no change on the RTS line (change on this line means the request to read the next nibble), the nibbles counter is reset.
Thanks. So besides of watchdog, what happens after all nibbles (for the given mode/protocol) is read? As far as I can see, in case of BoxSoft, the counter automatically warps around, so reading the last nibble then RTS change causes that again the first nibble is read. This is confusing, as - if I remember correctly - gflorez told, that trying to read another nibble with even original BoxSoft reads a nibble which is always zero ... Even EnterMice wiki says: "If the device only supports the BoxSoft protocol, the fifth nibble is always equal to 0000". Ok, but here then there is a conflict, that it reads zero or again the first nibble (because of - as you said - "Always after four nibbles resets the counter"). So I'm lost again
Of course the same question for extended MSX and Entermice as well ... The key question of mine is still: is it true that after reading the last nibble (for a given portocol) zero nibble can be read even if you tries million times, and the only method to start again is to leave RTS line alone for the watchdog expiration, so it can reset the nibble counter? Well, it seems it's not true for boxsoft as you said, or I don't know now, hmmm.
Here is a draft on mouse emulation modes in the emulator, of course it does not work yet this way, so it's only a plan (some of the mouse modes are meaningless maybe):
https://github.com/lgblgblgb/xep128/wiki/mouse-emulation#emulated-mouse-modesPlease note, that there is a possible confusing fact here. When I say "emulation in Xep128" I always think about the point of view of Enterprise-128 itself, what it can read/send in I/O ports. I am not so interested in Entermice internals or its communication with the given mouse, as for Xep128, it should emulate the behaviour of I/O ports only, used by software which would like to utilize mouse.
Currently, I extended the SDL event loop with extra buttons and mouse wheel, which is passed to the mouse emulation layer, so I will support that too. All of these plans, changes and even that wiki page of Xep128 is currently not found in the "released" version of Xep128 (neither in the github source repository) so it can't be tested now
Sorry, I really feel stupid. You and gflorez nicely wants to help, but it seems whatever both of you tell, I am not helped to much, and I simple can't understand this topic
Even gflorez's mentioned mouse_draft.zip couldn't help. Maybe this topic simply isn't compatible with my brain at all. Please tell, if I am already to boring with this topic again and again. I just would like to have good mouse support in an Enterprise-128 emulator
Thanks for all!