CompuServe Messages

#Workbench hints and tips

    24-Mar-89 22:57:00
Fm: Scott Ballantyne 70066,603
To: Betty Clay/SYSOP 76702,337
You can't read about it, it happens in the bcpl startup code which is at the beginning of all the bcpl startup programs. I discovered it by examining the startup code. It doesn't fragment memory any more than any other middling allocation, my point was that it is not needed. Without looking at my disassembly, it goes something like this: The startup code finds the highest global vector it needs from the tail end of it's bcpl segments, and allocates enough memory for that. The gvtable has a 'negative' portion, which corresponds to the dos.library callouts for the most part, and a positive portion. This is used partially to store startup segments entry points from the program, and partly to store global data (the cli structure is copied to the private vector, for example), and the rest are entrypoints into the private dos stuff. There are calls in this private dos stuff to copy vectors to the new table. I learned about it when I made the arp process stuff support bcpl programs, can't imagine why any one else would want to know it.