Just found a little 'bug' in the modem's ringing algorithm. When it starts ringing the virtual telephone line(acting like someone's calling us, while in actuality it's already accepted, but not acnowledged for the software transferring, except the buffers not working yet), it sets the ring indicator to value 3 and gives off the 'RING' message through the text input of the UART. But after 3 seconds of ringing, it switches said ring signal from 3 to 1(still waiting for a new ring, preparing to do another ring after 3 more seconds etc.). Basically the bit 0 is the current request bit(requesting a client for the server), while bit 1 is the current ringing signal itself.
Now, of course, when it clears bit 2 after each 3 second ring, it does it's usual stuff (increase a ring counter if possible, comparing said counter(register #1) against the ring autoanswer value(register #0) and if it's overflowing the autoanswer value, answers the call). Nothing wrong with that.
But when it autoanswers the call, it clears the ringing status to 0(thus not ringing anymore) and makes the rest of the modem aware of the connection(recording of the connection ID as active, marking the modem as being connected to some other computer(for the purposes of hanging up(ATH), online status(ATO) and software reset stuff(ATZ)). That will also have effect on the signal lines themselves.
Now there was a problem with the ring indicator line as specified by the Modem to the UART. As is known, it raises said line when it's supposed to be ringing(UART does nothing with that) and lowers it when it's finished ringing(also when autoanswering, which happens at that point). The UART has some simple bit toggle checking in it that (like the raising and lowering delta bits of the CTS, DSR and DCD) also checks the ring line(but only sets the 'delta' bit when the line goes from high(ringing) to low(not ringing anymore)). But the Modem only raises said line when it's ringing(having an incoming call, in other words bit 0 is set) and not ringing at the moment(it's in the delay between rings). So the modem was essentially doing the reverse of what the UART was doing, but on the actual ringing line itself. So, it starts out to ring(ring line lowered), then stops ringing(which might have raised the line), but never raises the ring line because it's auto-answering the call(and clearing the whole 2-bit value). So in that case, the ring line never gets raised and the software didn't even know that it was being called at some point(through the UART modem delta status and the current status).
Luckily, the fix is easy: instead of making the 2-bit value (val&1)&(~((val&2)>>1)), make it (val&1)&((val&2)>>1), thus giving the correct ring indicator(thus the software sees the ring line raised, then lowered together with the ring delta being set, the carrier going high(and it's delta too) and of course the modem being connected to the other side due to the autoanswer functionality).
Didn't notice that bug until I looked at the ring indicator line itself... Whoops! No idea if the software uses it for anything, though.