well, it's been a long time since i was actually working on these computers so my memories are quite faint ;-)
the biggest problem is that there were actually 4 versions (if we do not count rare prototype) - 1, 2, 2A, 3 which were not completely compatible so each "rom" works on either all or just some subset of those
besides that, programs were written either in
- assembly (that had to be loaded in MONITOR mode using MGLD <number> command) and they were either autorun (by overwriting return from load routine) or you have to know an address to JUMP to
- or BASIC G (LOAD <number> and RUN)
so to run anything, you need to know what version is it compatible with, how to load it and in the worst case, where to jump - and i'm not sure if that's possible to indicate using TNC (haven't read it though)
an example:
KAREL Autorun 1,2,2A,3 Karel Šuhajda / 2D Karel
KAREL2D RUN 1,2,2A Tomáš Bartovský / 2D Karel (Basic)
KAREL-2R JUMP 0000 1 Tomáš Bartovský / 2D Karel
KAREL3D0 JUMP 0000 1,2,2A,3 Marián Vittek / 3D Karel v0.0
KAREL3.2 JUMP 0000 1,2,2A,3 Marián Vittek / 3D Karel v2.0
KAREL3D2 JUMP 0000 1,2,2A,3 Marián Vittek / 3D Karel v3.2