So I decided I wanted to play around with the CP/M port of TDL-BASIC 2.1. As distributed it has issues... instead of using the BDOS "get console status" call it does IN 7... Almost right for the Teletek SysteMaster but not quite! It came with the assembly source for the customization patch but it was in a weird assembler. Nothing I had set up would touch it.
Well it finally dawned on me that it almost had to be in TDL Assembly. I downloaded the tdl assembler from s100computers.com
and it indeed assembled the patch and created a .hex file.
Thought I knew what to do from there, load the .com into ddt, read in the patch .hex and good to go. Wrong. Turns out the ".hex" file was some weird tdl binary format.
Ok I assumed that meant I had to involve the tdl linker. After all the archive comes with tdlbas.rel so just link that and the patch together! Except that the assembler's archive did not include any docs on the linker!
Google (and z80eu.com
) to the rescue! And wow why are these old linkers always so painful to use? But maybe I'm being unfair just because I fought with the thing for hours to no avail.
Got so frustrated I started over from the tdlbasic archive. And guess what? The .hex of the patch file from the archive is indeed an Intel hex file!
So then I fought the linker some more, trying to get it to simply convert the weird binary file into a real HEX file. Finally gave up on that. Went back to the assembler's docs. Buried in a half- hidden appendix a very brief single page describes the CP/M usage.(This assembler predates CP/M and tdl apparently felt cheated out of their rightful Software Dynasty.) Anyway one of the options controls, you guessed it, rather it produces a binary "hex file" or a real HEX file. Almost there! It still stuck a line at the head of the HEX file talking about relocation stuff, but a third cli option made that go away.
So finally, success! Loaded the binary into ddt, dropped the patch file into it and save the ram image. And it worked!
So the customization patch inserts code to make an mc-term1 (apparently some European graphics terminal - all google can find for me on it is a german program manual for one of the CPC machines) download some additional code (mc-term1 seems to have its own z80) to make it do a graphical screen dump to an mx-80 printer.
Interestingly, the printer is hooked to the computer, not the terminal. The routine then loops, reading the serial port directly and writing to the LST: device. I thought it was interesting that there's no other special support for the mc-term1. Apparently everything else it could do could be controlled with PRINT.
This is sort of annoying because that code space could instead have routines to save and load ASCII source. There's pretty much no way of recreating the ASCII routines without full source for the interpreter which of course we don't have. About the only way to get that functionality is if someone finds a copy of tdlbasic version 3, which was apparently a fully done CP/M port instead of this unfortunately specific port of 2.1.