Many thanks for the nice welcome and I'm very happy about your support in troubleshooting the tracker. Thanks a lot!
The $G- switch is set (avoid 80286 instructions). Besides that I have the possibility to choose 8087/80287 or emulation for numeric processing. So far the setting is emulation. Maybe I should change it for Matze's NEC V20, since he has an 8087 installed?
But he can start the tracker, enter notes, save and load songs... just not play them. So there should be nothing basic about the code for his CPU that doesn't fit. My guess is also more on the timing side.
I implemented the timing by hooking interrupt 1Ch.
The tempo (ticks per second) is set by setting the PIT to the corresponding frequency and firing 1Ch at each tick int. My int 1Ch calls the original routine every 18 ticks to prevent the clock from going completely wrong and plays a row according to the current speed (ticks per row) of the song. In the ticks in between effects are updated.
That is all, no unusual procedure as I think...
In DOSBOX the timing is much less accurate at low cycles. If I increase the cycles, it gets faster and more accurate.... But on real hardware I could see absolutely no difference between a Pentium 166 and a 486 100. Also turning off the cache on the 486 doesn't really affect the playback speed of the tracker (but it does affect the screen buildup etc.).
In DOSBOX (I use the SVN-daum buid) there is another problem: When a note is played, it stops suddenly after about half a pattern. On the real hardware the note sounds further, so it's not on my code.
Yes! The tracker will be open source soon. I will make the source code freely available at GitHub under MIT license within the next days. But before I publish it, I still have to clean up the code a bit, translate some germans comments and adapt the encoding (since I wrote a lot under real DOS, Windows sometimes messes with that).
Mod Master XT looks like a very interesting project. I urgently need to have a look at it further.
I thought a lot about instruments and came to the conclusion that they are not absolutely necessary due to the possibilities of effects. But tremolo and vibrato are really missing.
My considerations for further features have been more in the direction of supporting more sound devices.CMS (direct and via Dreamblasters CMSLPT) would be a hot candidate. Maybe with the option to set an output device for each channel. Tandy-3-voice together with CMS Stereo paning and maybe an OPL-2 drumtrack would be cool, wouldn't it? *g*
My file format is no secret. I have already described it in a text file. Have a look at the format.txt, which is already in the ZIP with the tracker.
To intercept ports I recommend to use the function of EMM386 if possible. This is simple and very stable. For the Tandy-Ports 0Ch etc. I had to solve it differently and switch to V86 mode myself. And to program this is hell. I used code from the TEMU Tandy emulator, but still... There are always some unhandled exceptions and so on.
But this is not part of the topic here 😀