On 20 Sep 2010, at 21:06, Marcel Kilgus wrote:

> gdgqler wrote:
>>> From the SMS reference manual: "The linkage block [...] must be
>>> allocated in the common heap so that SMS.ZTHG, or SMS.RTHG called from
>>> another program, can de-allocate the linkage block correctly."
>> 
>> I cannot find this quote in my copy of the manual. My manual says
>> "The linkage block must be in the common heap so that it may be
>> discarded correctly when the Thing is removed." This is on page
>> Section 17 1 dated 18/03/96.
> 
> Section 13, page 13 from 28/10/98. Should probably be in your copy,
> too, if not you can download it from here:
> http://www.kilgus.net/smsqe/development.html
> 

Different date, but exactly the same information as in my copy.

>> None of this makes it clear to an idiot like me that the linkage
>> block must be the first, or only, item in allocated space.
> 
> Well, "things" have always been one of the bigger mysteries of SMSQ/E
> for me and the documentation didn't really help me much,
> either...basically all information I give here is stuff I've just
> looked up for this thread.
> 
>> I assume then that the placing of a linkage block's address 12 bytes
>> before the start of the block is intended to be a marker in the
>> allocated space's header so that general programs which return it to
>> the heap are alerted to the fact that this particular item is a
>> Thing linkage block which must be unlinked before being thrown away.
> 
> The address 12 bytes before is chp_drlk, which the *OS* (not the
> program!) uses during the SMS.RMJB call to determine if it should call
> a cleanup routine before the block is returned to the heap.

I agree with this. I used the term general programs to mean routines in the 
operating system.

However complicated Things are they are still very useful.

George
_______________________________________________
QL-Users Mailing List
http://www.q-v-d.demon.co.uk/smsqe.htm

Reply via email to