Try changing this line: https://github.com/rickparrish/RMDoor/blob/13da2f3165342b6cf03fa7030c80bbb523d9a3f1/door.pas#L1204 From Write(AText) to Write(StdOut, AText) That seems to bypass the virtual screen buffer handling code, so Write won't auto-linefeed when it (thinks) it's at the edge of the screen.
I'd say it's definitely FPC's fault. The test door appends the music sequences that are played to musicdoor.log, so I wrote a shell script that just does a cat musicdoor.log and that plays perfectly. Then I modified the test door to also read the log file and Write() that, and it also played it perfectly. But the log has each sequence on a separate line, and as mentioned in my first message when the sequences are output with WriteLn instead of Write they work, so then I tried removing the newlines...
Forgot to mention in the previous message that running the door under Mystic exhibits the same behaviour (3 notes display instead of play), so probably not a bug in Synchronet (unless Mystic followed Synchronet's lead on how to run externals and implemented the same bug...) And also forgot to mention that socket mode works perfect on that un-merged branch, but that only helps Synchronet because AFAIK Mystic doesn't support socket doors (but maybe it does and I'm messing up the setup). I'm going to...
Thanks!
RLogin bug?