This book was produced entirely by black-box reverse engineering; that is, the formats were determined by changing the input to the official HTML Help compiler and observing the output produced. Stricly no dissasembly was involved.
The motive for writing this spec was the total lack of public documentation of the formats involved in CHM. There would of course be the specs Microsoft released to the W3C in an effort to make CHM a standard, but these were never made public AFAIK and CHM was rejected as a standard.
It was also hoped that the knowledge gained could be used to create CHM compilers for other platforms such as Linux, BSD and MacOS, so users of those platforms would not have to use Windows to create Windows documentation when writing programs and their documentation for Windows. Also native viewers could be created for other platforms, so people don't have to own a PC and non-free software to view CHM files.
The non-public version of this book was written in HTML & CSS and offered to anyone who emailed me (Pabs), & several people took up this offer. This DocBook version was converted from the HTML version using HTML Tidy and a slightly customised version of the Html2DocBook XSL stylesheet (written by Jeff Beal) found on the DocBook Wiki. The raw output was then edited (using SciTE and occasionally emacs/psgml) to look nice, change the bridgeheads into proper sections and add some DocBook markup. The old HTML versions are also available for anyone wanting to see the early history of this project.
If this book is ever printed it is hoped that it is printed on either recycled paper or hemp, in safe inks and using a non-patented lay-flat binding.