Лучше всего перед _каждым_ вызовом TR DOS обнулять системные переменные ошибок как в TR DOS, так и в основной системе. Я традиционно использую такую конструкцию (она входит во все мои программы, работающие с TR DOS):

TRDOS DI
LD (IY+0),#FF
PUSH HL
LD HL,0
LD (23823),HL
POP HL
CALL #3D13
[ DI,EI ]
RET

Как обычно, на входе в C код операции, в парах, если надо, параметры.
Просто вместо вызова сразу CALL #3D13 вызываете CALL TRDOS.