# HG changeset patch # User lost@l-w.ca # Date 1312935401 21600 # Node ID 8e2523061ce92922d32d633c1ea27601e5602e80 # Parent 7b07162642512e005390629f8f62008933b6a91b Document the new autobranchlength pragma diff -r 7b0716264251 -r 8e2523061ce9 docs/manual.docbook.sgml --- a/docs/manual.docbook.sgml Tue Aug 09 18:08:55 2011 -0600 +++ b/docs/manual.docbook.sgml Tue Aug 09 18:16:41 2011 -0600 @@ -1605,6 +1605,37 @@ + +autobranchlength + + +One of the perennial annoyances for 6809 programmers is that the +mneumonics for the short and long branch instructions are different (bxx vs. +lbxx), which is at odds with the rest of the instruction set. This pragma +is a solution to those annoying byte overflow errors that short branch +instructions tend to aquire. + +When this pragma is in effect, which is not the default, whenever any +relative branch instruction is used, its size will be automatically +determined based on the actual distance to the destination. In other words, +one can write code with long or short branches everywhere and the assembler +will choose a size for the branch. + +Also, while this pragma is in effect, the > and < symbols can be used +to force the branch size, analogous to their use for other instructions with +< forcing 8 bit offsets and > forcing 16 bit offets. + +Because this pragma leads to source that is incompatible with other +assemblers, it is strongly recommended that it be invoked using the PRAGMA +directive within the source code rather than on the command line or via the +*PRAGMA directive. This way, an error will be raised if someone tries to +* assemble the code under a different assembler. + + + + + + As a convenience, each input file has a pragma state stack. This