De code met commentaar die je ziet is door mijzelf, met wat hulp van de Monitor-disassembly, het adresboekje en wat puzzelwerk gemaakt.
Zoals uit mijn vraag blijkt: ook ik ben bezig met het reverse-engineeren van de cassetteroutines, leuk dat ik niet alleen sta 
Ik vind de in M2000 gekozen oplossing, waarbij een illegal opcode wordt afgevangen en vervolgens de hele cassette (en print) afhandeling gebeurt in de emulator code (C), wel slim, maar ik wil graag weten hoe het allemaal precies werkt.
En, vanmorgen in de auto had ik een Eureka moment!
Ik ben namelijk door het commentaar in de originele monitor disassembly (monitor.pdf) op het verkeerde been gezet!

Er staat "schrijf een byte naar tape'
Wat wordt bedoeld is: schrijf een byte naar de printer TIJDENS een cassette IO operatie. (!)
Daarom moet in E de huidige cassette operatie meekomen zodat bij het sturen van de printerbits de cassettestatus niet wordt veranderd.
Dat printen gebeurt alleen als BIT 2 van stacas is gezet, en sluit aan bij het commentaar in 'adresboekje.pdf':

En dan valt alles op zijn plaats...
Ik was ook al aan mijn timingberekeningen gaan twijfelen... ik kwam in de put byte routine op een bit-delay van ca 1040 T-states.
Dat is vrijwel exact 2400 Baud!!
(NB die timing is hardcoded, dus als je een 300baud printer had aangesloten: pech gehad!)
Ook had ik in mijn commentaar bij de disassembly uitgerekend dat het schrijven van 40 blokken naar tape zeker 175 seconden zou kosten met deze snelheid, terwijl dat veel sneller gaat... (ca 90 seconden).
Tot slot: bij het disassembleren van de laad van tape code kwam ik ook al geen logica voor start- en stopbits tegen, en in de Technical Manual werd daar ook al met geen woord over gerept...
Zo zie je maar, rubber-ducken helpt echt.
Ik weet zeker dat ik in de save naar tape code wel IO ga zien over het juiste bitje in poort 10h.
Ferenc