Comments
Loading Dream Comments...
You must be logged in to write a comment - Log In
ArtistA train with the following consist : First a locomotive labelled "$EB", then a tender with a flag on it, then a single Pullman coach, then four passenger coaches, and finally a caboose labelled "$00".
This describes the structure of a ::SHE+ILA:: Buf (data buffer) within a Segment. First we have a $EB tag byte, followed by a flag byte (indicating near/far address format, presence/absence of a symbol table, an "untidy" flag indicating the need of garbage collection, etc), then a dope-vector-length-word, then a max-buffer-length word, then that number of dope-vector entries (which are each either 16bits or 32bits depending on the near/far flag), then an $ED tag byte, and then a collection of data elements (which are pointed to by the dope-vector entries), and finally a $00 terminator byte.
Each segment usually has at least one Buf, which itself may contain other Bufs, procedures, arrays, to any depth (hence the term "hierarchical"). If the Segment can all fit in one page, then the Near/Far bit indicates that the dope-vector pointers are Near (16 bits each), whereas if it is a multi-page segment then the Near/Far bit indicates the dope-vector pointers are Far (32 bits each), as they must be able to point to other pages in the Segment.