I've done some experiments, but I'm not sure I've learned much. If you write a simple MAD 'external subroutine', i.e. a library rather than an executable, there's still nothing in the 'symbol table' at the end of the code when loaded into memory, it's just two words of zeros. There are a few references to symbol tables in the documentation, but they don't seem super relevant to anything going on here. I think the next steps are going to be to write some test programs in FAP and see if I can get those working.
As an aside, I've taken a look at the BSS executable format. It's fairly well documented, but in terms of pysical card layouts, and I haven't yet quite got my head around how binary card images are represented on disk. From looking at a few examples, individual cards seem to be represented as 28 words, which is 1,008 bits, so more than can fit on a 12x80 punched card. The last four words of each card always seem to be the same though, so I guess not all of those 28 words represent the data on the card. In any case, I think I've figured out the header which corresponds to the card being data to be loaded into memory, and it all seems to be a bit chaotic - the segments are much shorter than could fit on a card, but they also don't correspond to lines of source code, and they appear in what looks like a random order in the deck.
#retrocomputing #IBM7094 #CTSS