doc/sdccman.lyx: Documented --acall-ajmp and described new features in sdcclib.
[fw/sdcc] / doc / sdccman.lyx
index 12c56e8d9be51ea0effafd2b43463bb9fd9808ab..66a4ae743cca9fb77edad044bf4577ef8d7cc8c8 100644 (file)
@@ -1,4 +1,4 @@
-#LyX 1.4.4 created this file. For more info see http://www.lyx.org/
+#LyX 1.5.0 created this file. For more info see http://www.lyx.org/
 \lyxformat 245
 \begin_document
 \begin_header
@@ -45,7 +45,9 @@
 \papersides 1
 \paperpagestyle fancy
 \tracking_changes false
-\output_changes true
+\output_changes false
+\author ""
+\author ""
 \end_header
 
 \begin_body
@@ -104,7 +106,7 @@ SDCC Compiler User Guide
 \begin_layout Date
 
 \size normal
-SDCC 2.6.5
+SDCC 2.7.3
 \size footnotesize
 
 \newline
@@ -689,10 +691,7 @@ The latest SDCC version can be downloaded from
 \end_inset
 
 .
-
-\series bold
  
-\series default
 \emph on
 Please note: the compiler will probably always be some steps ahead of this
  documentation
@@ -730,7 +729,7 @@ open source
 freeware
 \emph default
 ; source code for all the sub-packages (pre-processor, assemblers, linkers
- etc) is distributed with the package.
+ etc.) is distributed with the package.
  This documentation is maintained using a free open source word processor
  (LyX).
 \newline
@@ -836,8 +835,20 @@ It would be fine to add to each item, in which version was it changed.
 \begin_layout Itemize
 short is now equivalent to int (16 bits), it used to be equivalent to char
  (8 bits) which is not ANSI compliant.
- To maintain compatibility, old programs may be compiled using the --short-is-8b
-its commandline option (see 
+ To maintain compatibility, old programs may be compiled using the -
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+/
+\end_layout
+
+\end_inset
+
+-short-is-8bits commandline option (see 
 \begin_inset LatexCommand \vref{lyx:--short-is-8bits}
 
 \end_inset
@@ -852,7 +863,7 @@ the default directory for gcc-builds where include, library and documentation
 
 \begin_layout Itemize
 char type parameters to vararg
-\begin_inset LatexCommand \index{vararg, va\_arg}
+\begin_inset LatexCommand \index{vararg, va\\_arg}
 
 \end_inset
 
@@ -951,7 +962,7 @@ bit
 \end_inset
 
 
-\begin_inset LatexCommand \index{\_\_sbit}
+\begin_inset LatexCommand \index{\\_\\_sbit}
 
 \end_inset
 
@@ -984,7 +995,7 @@ bit b;
 \InsetSpace ~
 \InsetSpace ~
 b = ~
-\begin_inset LatexCommand \index{\~\/ Operator}
+\begin_inset LatexCommand \index{\\~\\/ Operator}
 
 \end_inset
 
@@ -1404,7 +1415,25 @@ status collapsed
 
 \end_inset
 
--disable-pic-port Excludes the PIC port
+-disable-pic-port Excludes the PIC14 port
+\end_layout
+
+\begin_layout List
+\labelwidthstring 00.00.0000
+-
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+/
+\end_layout
+
+\end_inset
+
+-disable-pic16-port Excludes the PIC16 port
 \end_layout
 
 \begin_layout List
@@ -1534,14 +1563,14 @@ status collapsed
 
 \end_inset
 
--help` and the man/info pages of `configure` for details.
+-help' and the man/info pages of `configure' for details.
 \newline
 
 \newline
 The names of the
  standard libraries STD_LIB, STD_INT_LIB, STD_LONG_LIB, STD_FP_LIB, STD_DS390_LI
 B, STD_XA51_LIB and the environment variables SDCC_DIR_NAME, SDCC_INCLUDE_NAME,
- SDCC_LIB_NAME are defined by `configure` too.
+ SDCC_LIB_NAME are defined by `configure' too.
  At the moment it's not possible to change the default settings (it was
  simply never required).
 \newline
@@ -2811,7 +2840,7 @@ model
 
 \begin_layout Standard
 \noindent
-The install paths can still be changed during `make install` with e.g.:
+The install paths can still be changed during `make install' with e.g.:
 \end_layout
 
 \begin_layout LyX-Code
@@ -3846,7 +3875,9 @@ Bring up a command line terminal, such as xterm.
 \begin_layout Enumerate
 
 \series medium
-Unpack the file using a command like: 
+Unpack the file using a command like:
+\series default
 \family sans
 \series bold
 "tar -xvzf sdcc-src-yyyymmdd-rrrr.tar.bz2
@@ -3871,7 +3902,9 @@ Change directory into the main SDCC directory, for example type:
 \begin_layout Enumerate
 
 \series medium
-Type 
+Type
+\series default
 \family sans
 \series bold
 "./configure
@@ -3884,7 +3917,9 @@ Type
 \begin_layout Enumerate
 
 \series medium
-Type 
+Type
+\series default
 \family sans
 \series bold
 "make
@@ -3901,7 +3936,9 @@ Type
 \begin_layout Enumerate
 
 \series medium
-Type 
+Type
+\series default
 \family sans
 \series bold
 "make install"
@@ -4611,8 +4648,8 @@ This is not only usefull for building different binaries, e.g.
  generated files are not scattered between the source files.
  And the best thing is: if you want to change a file you can leave the original
  file untouched in the source directory.
- Simply copy it to the build directory, edit it, enter `make clean`, `rm
- Makefile.dep` and `make`.
+ Simply copy it to the build directory, edit it, enter `make clean', `rm
+ Makefile.dep' and `make'.
  
 \series bold
 make
@@ -4866,9 +4903,9 @@ If it doesn't run, or gives a message about not finding sdcc program, then
  Make sure that the sdcc bin directory is in your executable search path
  defined by the PATH environment setting (
 \series medium
-see 
+see
 \series default
-section 
+ section 
 \begin_inset LatexCommand \ref{sub:Install-Trouble-shooting}
 
 \end_inset
@@ -4886,9 +4923,9 @@ Install trouble-shooting for suggestions
 \newline
 
 \series medium
-SDCC 
+SDCC
 \series default
-is commonly installed as described in section 
+ is commonly installed as described in section 
 \begin_inset Quotes sld
 \end_inset
 
@@ -4903,9 +4940,9 @@ Install and search paths
 
 \series medium
 Make sure the compiler works on a very simple example.
- Type in the following test.c program using your favorite 
+ Type in the following test.c program using your favorite
 \series default
-ASCII 
+ ASCII 
 \series medium
 editor:
 \end_layout
@@ -4931,7 +4968,9 @@ test=0;
 \begin_layout Standard
 
 \series medium
-Compile this using the following command: 
+Compile this using the following command:
+\series default
 \family sans
 \series bold
 "sdcc -c test.c".
@@ -4952,7 +4991,9 @@ If all goes well, the compiler will generate a test.asm and test.rel file.
 
 \series medium
 The next step is to try it with the linker.
- Type in 
+ Type in
+\series default
 \family sans
 \series bold
 "sdcc test.c
@@ -4968,21 +5009,21 @@ The next step is to try it with the linker.
  
 \series medium
 (no test.ihx, and the linker generates warnings), then the problem is most
- likely that 
+ likely that
 \series default
-SDCC
+ SDCC 
 \series medium
- cannot find the 
+cannot find the
 \series default
-/
+ /
 \series medium
 usr/local/share/sdcc/lib directory
 \series default
  
 \series medium
-(see 
+(see
 \series default
-section 
+ section 
 \begin_inset LatexCommand \ref{sub:Install-Trouble-shooting}
 
 \end_inset
@@ -4998,15 +5039,15 @@ Install trouble-shooting for suggestions).
 \newline
 
 \series medium
-The final test is to ensure 
+The final test is to ensure
 \series default
-SDCC
+ SDCC 
 \series medium
- can use the 
+can use the
 \series default
-standard
+ standard 
 \series medium
- header files and libraries.
+header files and libraries.
  Edit test.c and change it to the following:
 \end_layout
 
@@ -5033,7 +5074,9 @@ strcpy(str1, "testing");
 \begin_layout Standard
 
 \series medium
-Compile this by typing 
+Compile this by typing
+\series default
 \family sans
 \series bold
 "sdcc test.c"
@@ -5042,17 +5085,17 @@ Compile this by typing
 .
  This should generate a test.ihx output file, and it should give no warnings
  such as not finding the string.h file.
- If it cannot find the string.h file, then the problem is that 
+ If it cannot find the string.h file, then the problem is that
 \series default
-SDCC
+ SDCC 
 \series medium
- cannot find the /usr/local/share/sdcc/include directory
+cannot find the /usr/local/share/sdcc/include directory
 \series default
  
 \series medium
-(see the 
+(see the
 \series default
-section 
+ section 
 \begin_inset LatexCommand \ref{sub:Install-Trouble-shooting}
 
 \end_inset
@@ -5081,7 +5124,7 @@ status collapsed
 -print-search-dirs
 \series default
 
-\begin_inset LatexCommand \index{-\/-print-search-dirs}
+\begin_inset LatexCommand \index{-\\/-print-search-dirs}
 
 \end_inset
 
@@ -5259,9 +5302,9 @@ asx8051 - The assembler for 8051 type processors.
 \begin_layout Itemize
 as-z80
 \series bold
-, 
+,
 \series default
-as-gbz80 - The Z80 and GameBoy Z80 assemblers.
+ as-gbz80 - The Z80 and GameBoy Z80 assemblers.
 \end_layout
 
 \begin_layout Itemize
@@ -5271,9 +5314,9 @@ aslink -The linker for 8051 type processors.
 \begin_layout Itemize
 link-z80
 \series bold
-, 
+,
 \series default
-link-gbz80 - The Z80 and GameBoy Z80 linkers.
+ link-gbz80 - The Z80 and GameBoy Z80 linkers.
 \end_layout
 
 \begin_layout Itemize
@@ -5571,7 +5614,7 @@ status collapsed
 \end_inset
 
 -out-fmt-s19
-\begin_inset LatexCommand \index{-\/-out-fmt-s19}
+\begin_inset LatexCommand \index{-\\/-out-fmt-s19}
 
 \end_inset
 
@@ -5587,10 +5630,10 @@ objdump
 
 \end_inset
 
- or
+ or 
 \family sans
 \shape italic
- srecord
+srecord
 \family default
 \shape default
 
@@ -5643,7 +5686,7 @@ status collapsed
 \end_inset
 
 -debug
-\begin_inset LatexCommand \index{-\/-debug}
+\begin_inset LatexCommand \index{-\\/-debug}
 
 \end_inset
 
@@ -5704,9 +5747,9 @@ status collapsed
 \end_inset
 
 -debug).
- The (Intel)
+ The (Intel) 
 \emph on
- a
+a
 \emph default
 bsolute 
 \emph on
@@ -5807,19 +5850,19 @@ packihx
 \newline
 
 \newline
-
 \family sans
 \series bold
- packihx sourcefile.ihx >sourcefile.hex
+packihx sourcefile.ihx >sourcefile.hex
 \family default
 \series default
 
 \newline
 
 \newline
-The separately available
+The separately available 
 \emph on
- srecord
+srecord
 \emph default
 
 \begin_inset LatexCommand \index{srecord (bin, hex, ... tool)}
@@ -5999,9 +6042,9 @@ foo2.rel
 \newline
 Alternatively, 
 \emph on
-foomain.c 
+foomain.c
 \emph default
-can be separately compiled as well: 
+ can be separately compiled as well: 
 \family sans
 \series bold
 
@@ -6023,10 +6066,7 @@ The file containing the
 \emph on
 main()
 \emph default
- function
-\emph on
-\emph default
+ function 
 \noun on
 must
 \noun default
@@ -6075,9 +6115,9 @@ Some reusable routines may be compiled into a library, see the documentation
 \emph on
 foomain.c
 \emph default
- and a library
+ and a library 
 \emph on
- foolib.lib
+foolib.lib
 \emph default
  in the directory 
 \emph on
@@ -6097,9 +6137,9 @@ sdcc foomain.c foolib.lib -L mylib
 
 \family default
 \series default
-Note here that
+Note here that 
 \emph on
- mylib
+mylib
 \emph default
  must be an absolute path name.
 \newline
@@ -6255,9 +6295,159 @@ sdcclib libint.lib _mulint.rel
 
 \end_layout
 
+\begin_layout Standard
+Or, if you preffer:
+\newline
+
+\end_layout
+
+\begin_layout Standard
+
+\family sans
+\series bold
+sdcclib libint.lib _divsint.rel _divuint.rel _modsint.rel _moduint.rel _mulint.rel
+\newline
+
+\end_layout
+
 \begin_layout Standard
 If the file already exists in the library, it will be replaced.
- To see what modules and symbols are included in the library, options -s
+ If a list of .rel files is available, you can tell sdcclib to add those
+ files to a library.
+ For example, if the file 'myliblist.txt' contains
+\newline
+
+\end_layout
+
+\begin_layout Standard
+
+\family sans
+\series bold
+_divsint.rel
+\end_layout
+
+\begin_layout Standard
+
+\family sans
+\series bold
+_divuint.rel
+\end_layout
+
+\begin_layout Standard
+
+\family sans
+\series bold
+_modsint.rel
+\end_layout
+
+\begin_layout Standard
+
+\family sans
+\series bold
+_moduint.rel
+\end_layout
+
+\begin_layout Standard
+
+\family sans
+\series bold
+_mulint.rel
+\series default
+
+\newline
+
+\end_layout
+
+\begin_layout Standard
+Use 
+\newline
+
+\end_layout
+
+\begin_layout Standard
+
+\family sans
+\series bold
+sdcclib -l libint.lib myliblist.txt
+\newline
+
+\end_layout
+
+\begin_layout Standard
+Additionally, you can instruct sdcclib to compile the files before adding
+ them to the library by setting environment variables SDCCLIB_CC
+\begin_inset LatexCommand \index{SDCCLIB_CC}
+
+\end_inset
+
+ and/or SDCCLIB_AS
+\begin_inset LatexCommand \index{SDCCLIB_AS}
+
+\end_inset
+
+.
+ For example:
+\newline
+
+\end_layout
+
+\begin_layout Standard
+
+\family sans
+\series bold
+set SDCCLIB_CC
+\begin_inset LatexCommand \index{SDCCLIB_CC}
+
+\end_inset
+
+=sdcc -
+\family default
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+/
+\end_layout
+
+\end_inset
+
+
+\family sans
+-use-stdout -
+\family default
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+/
+\end_layout
+
+\end_inset
+
+
+\family sans
+-model-small -c
+\end_layout
+
+\begin_layout Standard
+
+\family sans
+\series bold
+sdcclib -l libint.lib myliblist.txt
+\newline
+
+\end_layout
+
+\begin_layout Standard
+To see what modules and symbols are included in the library, options -s
  and -m are available.
  For example:
 \newline
@@ -6411,7 +6601,7 @@ status collapsed
 \end_inset
 
 -debug
-\begin_inset LatexCommand \index{-\/-debug}
+\begin_inset LatexCommand \index{-\\/-debug}
 
 \end_inset
 
@@ -6824,12 +7014,10 @@ Preprocessor Options
 \end_inset
 
 
+\series default
 \size large
-\bar under
  
-\series default
 \size default
-\bar default
 Like `-M' but the output mentions only the user header files included with
  `#include 
 \begin_inset Quotes eld
@@ -6913,12 +7101,10 @@ file"'.
 \end_inset
 
 
+\series default
 \size large
-\bar under
  
-\series default
 \size default
-\bar default
 Like `-dD' except that the macro arguments and contents are omitted.
  Only `#define name' is included in the output.
 \end_layout
@@ -6945,10 +7131,11 @@ Like `-dD' except that the macro arguments and contents are omitted.
 
 \end_inset
 
+
 \series default
-\size default
 \bar default
+\size default
 Pedantic parse numbers so that situations like 0xfe-LO_B(3) are parsed properly
  and the macro LO_B(3) gets expanded.
  See also #pragma pedantic_parse_number 
@@ -7063,12 +7250,12 @@ status collapsed
 
 \series bold
 -lib-path
-\begin_inset LatexCommand \index{-\/-lib-path <path>}
+\begin_inset LatexCommand \index{-\\/-lib-path <path>}
 
 \end_inset
 
 
-\begin_inset LatexCommand \index{-L -\/-lib-path}
+\begin_inset LatexCommand \index{-L -\\/-lib-path}
 
 \end_inset
 
@@ -7107,7 +7294,7 @@ status collapsed
 -xram-loc
 \series default
 
-\begin_inset LatexCommand \index{-\/-xram-loc <Value>}
+\begin_inset LatexCommand \index{-\\/-xram-loc <Value>}
 
 \end_inset
 
@@ -7167,7 +7354,7 @@ status collapsed
 -code-loc
 \series default
 
-\begin_inset LatexCommand \index{-\/-code-loc <Value>}
+\begin_inset LatexCommand \index{-\\/-code-loc <Value>}
 
 \end_inset
 
@@ -7233,7 +7420,7 @@ status collapsed
 -stack-loc
 \series default
 
-\begin_inset LatexCommand \index{-\/-stack-loc <Value>}
+\begin_inset LatexCommand \index{-\\/-stack-loc <Value>}
 
 \end_inset
 
@@ -7298,7 +7485,7 @@ status collapsed
 \series default
 \InsetSpace ~
 
-\begin_inset LatexCommand \index{-\/-pack-iram}
+\begin_inset LatexCommand \index{-\\/-pack-iram}
 
 \end_inset
 
@@ -7322,7 +7509,7 @@ status collapsed
 \series default
 \InsetSpace ~
 
-\begin_inset LatexCommand \index{-\/-no-pack-iram}
+\begin_inset LatexCommand \index{-\\/-no-pack-iram}
 
 \end_inset
 
@@ -7349,7 +7536,7 @@ status collapsed
 -xstack-loc
 \series default
 
-\begin_inset LatexCommand \index{-\/-xstack-loc <Value>}
+\begin_inset LatexCommand \index{-\\/-xstack-loc <Value>}
 
 \end_inset
 
@@ -7419,7 +7606,7 @@ status collapsed
 -data-loc
 \series default
 
-\begin_inset LatexCommand \index{-\/-data-loc <Value>}
+\begin_inset LatexCommand \index{-\\/-data-loc <Value>}
 
 \end_inset
 
@@ -7498,7 +7685,7 @@ status collapsed
 -idata-loc
 \series default
 
-\begin_inset LatexCommand \index{-\/-idata-loc <Value>}
+\begin_inset LatexCommand \index{-\\/-idata-loc <Value>}
 
 \end_inset
 
@@ -7592,15 +7779,12 @@ status collapsed
 \end_inset
 
 -out-fmt-ihx
-\begin_inset LatexCommand \index{-\/-out-fmt-ihx}
+\begin_inset LatexCommand \index{-\\/-out-fmt-ihx}
 
 \end_inset
 
-
-\bar under
  
 \series default
-\bar default
 The linker output (final object code) is in Intel Hex format.
 \begin_inset LatexCommand \index{Intel hex format}
 
@@ -7633,15 +7817,12 @@ status collapsed
 \end_inset
 
 -out-fmt-s19
-\begin_inset LatexCommand \index{-\/-out-fmt-s19}
+\begin_inset LatexCommand \index{-\\/-out-fmt-s19}
 
 \end_inset
 
-
-\bar under
  
 \series default
-\bar default
 The linker output (final object code) is in Motorola S19 format
 \begin_inset LatexCommand \index{Motorola S19 format}
 
@@ -7669,20 +7850,17 @@ status collapsed
 \end_inset
 
 -out-fmt-elf
-\begin_inset LatexCommand \index{-\/-out-fmt-s19}
+\begin_inset LatexCommand \index{-\\/-out-fmt-s19}
 
 \end_inset
 
 
-\begin_inset LatexCommand \index{HC08!Options!-\/-out-fmt-elf}
+\begin_inset LatexCommand \index{HC08!Options!-\\/-out-fmt-elf}
 
 \end_inset
 
-
-\bar under
  
 \series default
-\bar default
 The linker output (final object code) is in ELF format
 \begin_inset LatexCommand \index{ELF format}
 
@@ -7769,17 +7947,15 @@ status collapsed
 \end_inset
 
 -model-small
-\begin_inset LatexCommand \index{-\/-model-small}
+\begin_inset LatexCommand \index{-\\/-model-small}
 
 \end_inset
 
 
 \series default
 \size large
-\emph on
  
 \size default
-\emph default
 Generate code for Small Model programs, see section Memory Models for more
  details.
  This is the default model.
@@ -7803,7 +7979,7 @@ status collapsed
 \end_inset
 
 -model-medium
-\begin_inset LatexCommand \index{-\/-model-medium}
+\begin_inset LatexCommand \index{-\\/-model-medium}
 
 \end_inset
 
@@ -7834,7 +8010,7 @@ status collapsed
 \end_inset
 
 -model-large
-\begin_inset LatexCommand \index{-\/-model-large}
+\begin_inset LatexCommand \index{-\\/-model-large}
 
 \end_inset
 
@@ -7865,7 +8041,7 @@ status collapsed
 \end_inset
 
 -xstack
-\begin_inset LatexCommand \index{-\/-xstack}
+\begin_inset LatexCommand \index{-\\/-xstack}
 
 \end_inset
 
@@ -7908,7 +8084,7 @@ status collapsed
 \series default
 \InsetSpace ~
 <Value>
-\begin_inset LatexCommand \index{-\/-iram-size <Value>}
+\begin_inset LatexCommand \index{-\\/-iram-size <Value>}
 
 \end_inset
 
@@ -7937,7 +8113,7 @@ status collapsed
 \series default
 \InsetSpace ~
 <Value>
-\begin_inset LatexCommand \index{-\/-xram-size <Value>}
+\begin_inset LatexCommand \index{-\\/-xram-size <Value>}
 
 \end_inset
 
@@ -7966,7 +8142,7 @@ status collapsed
 \series default
 \InsetSpace ~
 <Value>
-\begin_inset LatexCommand \index{-\/-code-size <Value>}
+\begin_inset LatexCommand \index{-\\/-code-size <Value>}
 
 \end_inset
 
@@ -7995,7 +8171,7 @@ status collapsed
 \series default
 \InsetSpace ~
 <Value>
-\begin_inset LatexCommand \index{-\/-stack-size <Value>}
+\begin_inset LatexCommand \index{-\\/-stack-size <Value>}
 
 \end_inset
 
@@ -8023,7 +8199,7 @@ status collapsed
 \series default
 \InsetSpace ~
 
-\begin_inset LatexCommand \index{-\/-pack-iram}
+\begin_inset LatexCommand \index{-\\/-pack-iram}
 
 \end_inset
 
@@ -8053,13 +8229,45 @@ status collapsed
 \series default
 \InsetSpace ~
 
-\begin_inset LatexCommand \index{-\/-no-pack-iram}
+\begin_inset LatexCommand \index{-\\/-no-pack-iram}
 
 \end_inset
 
  Causes the linker to use old style for allocating memory areas.
 \end_layout
 
+\begin_layout List
+\labelwidthstring 00.00.0000
+
+\series bold
+-
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+/
+\end_layout
+
+\end_inset
+
+-acall-ajmp
+\series default
+\InsetSpace ~
+
+\begin_inset LatexCommand \index{-\\/-acall-ajmp}
+
+\end_inset
+
+ Replaces the three byte instructions lcall/ljmp with the two byte instructions
+ acall/ajmp.
+ Only use this option if your code is in the same 2k block of memory.
+ You may need to use this option for some 8051 derivatives which lack the
+ lcall/ljmp instructions.
+\end_layout
+
 \begin_layout Standard
 \begin_inset VSpace bigskip
 \end_inset
@@ -8101,16 +8309,14 @@ status collapsed
 -model-flat24
 \series default
 
-\begin_inset LatexCommand \index{DS390!Options!-\/-model-flat24}
+\begin_inset LatexCommand \index{DS390!Options!-\\/-model-flat24}
 
 \end_inset
 
 
 \size large
-\emph on
  
 \size default
-\emph default
 Generate 24-bit flat mode code.
  This is the one and only that the ds390 code generator supports right now
  and is default when using 
@@ -8139,7 +8345,7 @@ status collapsed
 \end_inset
 
 -protect-sp-update
-\begin_inset LatexCommand \index{DS390!Options!-\/-protect-sp-update}
+\begin_inset LatexCommand \index{DS390!Options!-\\/-protect-sp-update}
 
 \end_inset
 
@@ -8168,7 +8374,7 @@ status collapsed
 -stack-10bit
 \series default
 
-\begin_inset LatexCommand \index{DS390!Options!-\/-stack-10bit}
+\begin_inset LatexCommand \index{DS390!Options!-\\/-stack-10bit}
 
 \end_inset
 
@@ -8207,7 +8413,7 @@ status collapsed
 \end_inset
 
 -stack-auto
-\begin_inset LatexCommand \index{-\/-stack-auto}
+\begin_inset LatexCommand \index{-\\/-stack-auto}
 
 \end_inset
 
@@ -8230,7 +8436,7 @@ status collapsed
 \end_inset
 
 -xstack
-\begin_inset LatexCommand \index{-\/-xstack}
+\begin_inset LatexCommand \index{-\\/-xstack}
 
 \end_inset
 
@@ -8265,7 +8471,20 @@ status collapsed
 \labelwidthstring 00.00.0000
 
 \series bold
---stack-8-bit - switches off the 10-bit mode
+-
+\begin_inset ERT
+status open
+
+\begin_layout Standard
+
+
+\backslash
+/
+\end_layout
+
+\end_inset
+
+-stack-8-bit - switches off the 10-bit mode
 \end_layout
 
 \end_inset
@@ -8291,7 +8510,7 @@ status collapsed
 \end_inset
 
 -stack-probe
-\begin_inset LatexCommand \index{DS390!Options!-\/-stack-probe}
+\begin_inset LatexCommand \index{DS390!Options!-\\/-stack-probe}
 
 \end_inset
 
@@ -8318,7 +8537,7 @@ status collapsed
 \end_inset
 
 -tini-libid
-\begin_inset LatexCommand \index{DS390!Options!-\/-tini-libid}
+\begin_inset LatexCommand \index{DS390!Options!-\\/-tini-libid}
 
 \end_inset
 
@@ -8346,7 +8565,7 @@ status collapsed
 \end_inset
 
 -use-accelerator
-\begin_inset LatexCommand \index{DS390!Options!-\/-use-accelerator}
+\begin_inset LatexCommand \index{DS390!Options!-\\/-use-accelerator}
 
 \end_inset
 
@@ -8397,16 +8616,14 @@ status collapsed
 -callee-saves-bc
 \series default
 
-\begin_inset LatexCommand \index{Z80!Options!-\/-callee-saves-bc}
+\begin_inset LatexCommand \index{Z80!Options!-\\/-callee-saves-bc}
 
 \end_inset
 
 
 \size large
-\emph on
  
 \size default
-\emph default
 Force a called function to always save BC.
 \end_layout
 
@@ -8430,13 +8647,261 @@ status collapsed
 -no-std-crt0
 \series default
 
-\begin_inset LatexCommand \index{Z80!Options!-\/-no-std-crt0}
+\begin_inset LatexCommand \index{Z80!Options!-\\/-no-std-crt0}
 
 \end_inset
 
  When linking, skip the standard crt0.o object file.
  You must provide your own crt0.o for your system when linking.
+\end_layout
+
+\begin_layout List
+\labelwidthstring 00.00.0000
+
+\series bold
+-
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+/
+\end_layout
+
+\end_inset
+
+-portmode=
+\series default
+<Value>
+\begin_inset LatexCommand \index{Z80!Options!-\\/-portmode=<Value>}
+
+\end_inset
+
+ Determinate PORT I/O mode (<Value> is z80 or z180).
+\end_layout
+
+\begin_layout List
+\labelwidthstring 00.00.0000
+
+\series bold
+-
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+/
+\end_layout
+
+\end_inset
+
+-asm=
+\series default
+<Value>
+\begin_inset LatexCommand \index{Z80!Options!-\\/-asm=<Value>}
+
+\end_inset
+
+ Define assembler name (<Value> is rgbds, asxxxx, isas or z80asm).
+\end_layout
+
+\begin_layout List
+\labelwidthstring 00.00.0000
+
+\series bold
+-
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+/
+\end_layout
+
+\end_inset
+
+-codeseg
+\series default
+\InsetSpace ~
+<Value>
+\begin_inset LatexCommand \index{Z80!Options!-\\/-codeseg <Value>}
+
+\end_inset
+
+ Use <Value> for the code segment name.
+\end_layout
+
+\begin_layout List
+\labelwidthstring 00.00.0000
+
+\series bold
+-
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+/
+\end_layout
+
+\end_inset
+
+-constseg
+\series default
+\InsetSpace ~
+<Value>
+\begin_inset LatexCommand \index{Z80!Options!-\\/-constseg <Value>}
+
+\end_inset
+
+ Use <Value> for the const segment name.
+\end_layout
+
+\begin_layout List
+\labelwidthstring 00.00.0000
+\begin_inset VSpace bigskip
+\end_inset
+
+
+\end_layout
+
+\begin_layout Subsection
+GBZ80 Options
+\begin_inset LatexCommand \index{Options GBZ80}
+
+\end_inset
+
+
+\begin_inset LatexCommand \index{GBZ80}
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout List
+\labelwidthstring 00.00.0000
+
+\series bold
+-
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+/
+\end_layout
+
+\end_inset
+
+-callee-saves-bc
+\series default
+
+\begin_inset LatexCommand \index{GBZ80!Options!-\\/-callee-saves-bc}
+
+\end_inset
+
+
+\size large
  
+\size default
+Force a called function to always save BC.
+\end_layout
+
+\begin_layout List
+\labelwidthstring 00.00.0000
+
+\series bold
+-bo
+\series default
+\InsetSpace ~
+<Num>
+\begin_inset LatexCommand \index{GBZ80!Options!-bo <Num>}
+
+\end_inset
+
+ Use code bank <Num>.
+\end_layout
+
+\begin_layout List
+\labelwidthstring 00.00.0000
+
+\series bold
+-ba
+\series default
+\InsetSpace ~
+<Num>
+\begin_inset LatexCommand \index{GBZ80!Options!-ba <Num>}
+
+\end_inset
+
+ Use data bank <Num>.
+\end_layout
+
+\begin_layout List
+\labelwidthstring 00.00.0000
+
+\series bold
+-
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+/
+\end_layout
+
+\end_inset
+
+-codeseg
+\series default
+\InsetSpace ~
+<Value>
+\begin_inset LatexCommand \index{GBZ80!Options!-\\/-codeseg <Value>}
+
+\end_inset
+
+ Use <Value> for the code segment name.
+\end_layout
+
+\begin_layout List
+\labelwidthstring 00.00.0000
+
+\series bold
+-
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+/
+\end_layout
+
+\end_inset
+
+-constseg
+\series default
+\InsetSpace ~
+<Value>
+\begin_inset LatexCommand \index{GBZ80!Options!-\\/-constseg <Value>}
+
+\end_inset
+
+ Use <Value> for the const segment name.
 \end_layout
 
 \begin_layout Standard
@@ -8478,7 +8943,7 @@ status collapsed
 \end_inset
 
 -nogcse
-\begin_inset LatexCommand \index{-\/-nogcse}
+\begin_inset LatexCommand \index{-\\/-nogcse}
 
 \end_inset
 
@@ -8504,7 +8969,7 @@ ations, sloc
  will indicate the number of extra bytes it allocated.
  It is recommended that this option NOT be used, #pragma\InsetSpace ~
 nogcse
-\begin_inset LatexCommand \index{\#pragma nogcse}
+\begin_inset LatexCommand \index{\\#pragma nogcse}
 
 \end_inset
 
@@ -8534,7 +8999,7 @@ status collapsed
 \end_inset
 
 -noinvariant
-\begin_inset LatexCommand \index{-\/-noinvariant}
+\begin_inset LatexCommand \index{-\\/-noinvariant}
 
 \end_inset
 
@@ -8551,7 +9016,7 @@ status collapsed
 .
  It is recommended that this option NOT be used, #pragma\InsetSpace ~
 noinvariant
-\begin_inset LatexCommand \index{\#pragma noinvariant}
+\begin_inset LatexCommand \index{\\#pragma noinvariant}
 
 \end_inset
 
@@ -8576,7 +9041,7 @@ status collapsed
 \end_inset
 
 -noinduction
-\begin_inset LatexCommand \index{-\/-noinduction}
+\begin_inset LatexCommand \index{-\\/-noinduction}
 
 \end_inset
 
@@ -8586,7 +9051,7 @@ status collapsed
  for more details.
  It is recommended that this option is NOT used, #pragma\InsetSpace ~
 noinduction
-\begin_inset LatexCommand \index{\#pragma noinduction}
+\begin_inset LatexCommand \index{\\#pragma noinduction}
 
 \end_inset
 
@@ -8611,17 +9076,15 @@ status collapsed
 \end_inset
 
 -nojtbound
-\begin_inset LatexCommand \index{-\/-nojtbound}
+\begin_inset LatexCommand \index{-\\/-nojtbound}
 
 \end_inset
 
 
 \size large
-\bar under
  
 \series default
 \size default
-\bar default
  Will not generate boundary condition check when switch statements
 \begin_inset LatexCommand \index{switch statement}
 
@@ -8637,7 +9100,7 @@ status collapsed
 Switch Statements for more details.
  It is recommended that this option is NOT used, #pragma\InsetSpace ~
 nojtbound
-\begin_inset LatexCommand \index{\#pragma nojtbound}
+\begin_inset LatexCommand \index{\\#pragma nojtbound}
 
 \end_inset
 
@@ -8663,7 +9126,7 @@ status collapsed
 \end_inset
 
 -noloopreverse
-\begin_inset LatexCommand \index{-\/-noloopreverse}
+\begin_inset LatexCommand \index{-\\/-noloopreverse}
 
 \end_inset
 
@@ -8700,7 +9163,7 @@ status collapsed
 nolabelopt
 \series default
  
-\begin_inset LatexCommand \index{-\/-nolabelopt }
+\begin_inset LatexCommand \index{-\\/-nolabelopt }
 
 \end_inset
 
@@ -8725,7 +9188,7 @@ status collapsed
 \end_inset
 
 -no-xinit-opt
-\begin_inset LatexCommand \index{-\/-no-xinit-opt}
+\begin_inset LatexCommand \index{-\\/-no-xinit-opt}
 
 \end_inset
 
@@ -8758,7 +9221,7 @@ status collapsed
 \end_inset
 
 -nooverlay
-\begin_inset LatexCommand \index{-\/-nooverlay}
+\begin_inset LatexCommand \index{-\\/-nooverlay}
 
 \end_inset
 
@@ -8786,7 +9249,7 @@ status collapsed
 \end_inset
 
 -no-peep
-\begin_inset LatexCommand \index{-\/-no-peep}
+\begin_inset LatexCommand \index{-\\/-no-peep}
 
 \end_inset
 
@@ -8815,7 +9278,7 @@ status collapsed
 -peep-file
 \series default
 
-\begin_inset LatexCommand \index{-\/-peep-file}
+\begin_inset LatexCommand \index{-\\/-peep-file}
 
 \end_inset
 
@@ -8849,7 +9312,7 @@ status collapsed
 \end_inset
 
 -peep-asm
-\begin_inset LatexCommand \index{-\/-peep-asm}
+\begin_inset LatexCommand \index{-\\/-peep-asm}
 
 \end_inset
 
@@ -8884,7 +9347,7 @@ status collapsed
 \end_inset
 
 -opt-code-speed
-\begin_inset LatexCommand \index{-\/-opt-code-speed}
+\begin_inset LatexCommand \index{-\\/-opt-code-speed}
 
 \end_inset
 
@@ -8912,7 +9375,7 @@ status collapsed
 \end_inset
 
 -opt-code-size
-\begin_inset LatexCommand \index{-\/-opt-code-size}
+\begin_inset LatexCommand \index{-\\/-opt-code-size}
 
 \end_inset
 
@@ -8957,12 +9420,12 @@ status collapsed
 \end_inset
 
 -compile-only
-\begin_inset LatexCommand \index{-\/-compile-only}
+\begin_inset LatexCommand \index{-\\/-compile-only}
 
 \end_inset
 
 
-\begin_inset LatexCommand \index{-c -\/-compile-only}
+\begin_inset LatexCommand \index{-c -\\/-compile-only}
 
 \end_inset
 
@@ -8993,7 +9456,7 @@ status collapsed
 
 \series bold
 -c1mode
-\begin_inset LatexCommand \index{-\/-c1mode}
+\begin_inset LatexCommand \index{-\\/-c1mode}
 
 \end_inset
 
@@ -9029,17 +9492,13 @@ status collapsed
 
 \end_inset
 
+
 \series default
-The output path where everything will be placed or the file name used for
+ The output path where everything will be placed or the file name used for
  all generated output files.
  If the parameter is a path, it must have a trailing slash (or backslash
  for the Windows binaries) to be recognized as a path.
-
-\emph on
-\emph default
-Note for Windows users: if the path contains spaces, it should be surrounded
+ Note for Windows users: if the path contains spaces, it should be surrounded
  by quotes.
  The trailing backslash should be doubled in order to prevent escaping the
  final quote, for example: 
@@ -9119,17 +9578,15 @@ status collapsed
 \end_inset
 
 -stack-auto
-\begin_inset LatexCommand \index{-\/-stack-auto}
+\begin_inset LatexCommand \index{-\\/-stack-auto}
 
 \end_inset
 
 
 \series default
 \size large
-\emph on
  
 \size default
-\emph default
 All functions in the source file will be compiled as 
 \emph on
 reentrant
@@ -9154,7 +9611,41 @@ reentrant
  Parameters and Local Variables for more details.
  If this option is used all source files in the project should be compiled
  with this option.
- It automatically implies --int-long-reent and --float-reent.
+ It automatically implies -
+\series bold
+
+\begin_inset ERT
+status open
+
+\begin_layout Standard
+
+
+\backslash
+/
+\end_layout
+
+\end_inset
+
+
+\series default
+-int-long-reent and -
+\series bold
+
+\begin_inset ERT
+status open
+
+\begin_layout Standard
+
+
+\backslash
+/
+\end_layout
+
+\end_inset
+
+
+\series default
+-float-reent.
  
 \end_layout
 
@@ -9176,7 +9667,7 @@ status collapsed
 \end_inset
 
 -callee-saves
-\begin_inset LatexCommand \index{-\/-callee-saves}
+\begin_inset LatexCommand \index{-\\/-callee-saves}
 
 \end_inset
 
@@ -9237,7 +9728,7 @@ status collapsed
 -callee-saves option string.
  Also see #pragma\InsetSpace ~
 callee_saves 
-\begin_inset LatexCommand \index{\#pragma callee\_saves}
+\begin_inset LatexCommand \index{\\#pragma callee\\_saves}
 
 \end_inset
 
@@ -9267,17 +9758,13 @@ status collapsed
 \end_inset
 
 -all-callee-saves
-\begin_inset LatexCommand \index{-\/-all-callee-saves}
+\begin_inset LatexCommand \index{-\\/-all-callee-saves}
 
 \end_inset
 
-\series default
-Function of
-\series bold
+
 \series default
--
+ Function of -
 \begin_inset ERT
 status collapsed
 
@@ -9311,15 +9798,12 @@ status collapsed
 \end_inset
 
 -debug
-\begin_inset LatexCommand \index{-\/-debug}
+\begin_inset LatexCommand \index{-\\/-debug}
 
 \end_inset
 
-
-\bar under
  
 \series default
-\bar default
 When this option is used the compiler will generate debug information.
  The debug information collected in a file with .cdb extension can be used
  with the SDCDB.
@@ -9342,12 +9826,10 @@ When this option is used the compiler will generate debug information.
 \end_inset
 
 
+\series default
 \size large
-\bar under
  
-\series default
 \size default
-\bar default
 Stop after the stage of compilation proper; do not assemble.
  The output is an assembler code file for the input file specified.
 \end_layout
@@ -9370,7 +9852,7 @@ status collapsed
 \end_inset
 
 -int-long-reent
-\begin_inset LatexCommand \index{-\/-int-long-reent}
+\begin_inset LatexCommand \index{-\\/-int-long-reent}
 
 \end_inset
 
@@ -9399,15 +9881,12 @@ status collapsed
 \end_inset
 
 -cyclomatic
-\begin_inset LatexCommand \index{-\/-cyclomatic}
+\begin_inset LatexCommand \index{-\\/-cyclomatic}
 
 \end_inset
 
-
-\bar under
  
 \series default
-\bar default
 This option will cause the compiler to generate an information message for
  each function in the source file.
  The message contains some 
@@ -9446,7 +9925,7 @@ status collapsed
 \end_inset
 
 -float-reent
-\begin_inset LatexCommand \index{-\/-float-reent}
+\begin_inset LatexCommand \index{-\\/-float-reent}
 
 \end_inset
 
@@ -9479,27 +9958,44 @@ status collapsed
 \end_inset
 
 -funsigned-char
-\begin_inset LatexCommand \index{-\/-funsigned-char}
+\begin_inset LatexCommand \index{-\\/-funsigned-char}
 
 \end_inset
 
 
 \series default
- The default signedness for every type is
+ The default signedness for every type is 
 \family typewriter
- signed
+signed
 \family default
 .
- In some embedded environments the default signedness of
+ In some embedded environments the default signedness of 
 \family typewriter
- char
+char
 \family default
- is
+ is 
 \family typewriter
- unsigned
+unsigned
 \family default
 .
- To set the signess for characters to unsigned, use the option --funsigned-char.
+ To set the signess for characters to unsigned, use the option -
+\series bold
+
+\begin_inset ERT
+status open
+
+\begin_layout Standard
+
+
+\backslash
+/
+\end_layout
+
+\end_inset
+
+
+\series default
+-funsigned-char.
  If this option is set and no signedness keyword (unsigned/signed) is given,
  a char will be signed.
  All other types are unaffected.
@@ -9523,7 +10019,7 @@ status collapsed
 \end_inset
 
 -main-return
-\begin_inset LatexCommand \index{-\/-main-return}
+\begin_inset LatexCommand \index{-\\/-main-return}
 
 \end_inset
 
@@ -9565,7 +10061,7 @@ status collapsed
 \end_inset
 
 -nostdinc
-\begin_inset LatexCommand \index{-\/-nostdinc}
+\begin_inset LatexCommand \index{-\\/-nostdinc}
 
 \end_inset
 
@@ -9593,7 +10089,7 @@ status collapsed
 \end_inset
 
 -nostdlib
-\begin_inset LatexCommand \index{-\/-nostdlib}
+\begin_inset LatexCommand \index{-\\/-nostdlib}
 
 \end_inset
 
@@ -9625,7 +10121,7 @@ status collapsed
 \end_inset
 
 -verbose
-\begin_inset LatexCommand \index{-\/-verbose}
+\begin_inset LatexCommand \index{-\\/-verbose}
 
 \end_inset
 
@@ -9666,7 +10162,7 @@ status collapsed
 \end_inset
 
 -no-c-code-in-asm
-\begin_inset LatexCommand \index{-\/-no-c-code-in-asm}
+\begin_inset LatexCommand \index{-\\/-no-c-code-in-asm}
 
 \end_inset
 
@@ -9694,7 +10190,7 @@ status collapsed
 \end_inset
 
 -fverbose-asm
-\begin_inset LatexCommand \index{-\/-no-gen-comments}
+\begin_inset LatexCommand \index{-\\/-no-gen-comments}
 
 \end_inset
 
@@ -9721,14 +10217,30 @@ status collapsed
 \end_inset
 
 -no-peep-comments
-\begin_inset LatexCommand \index{-\/-no-peep-comments}
+\begin_inset LatexCommand \index{-\\/-no-peep-comments}
 
 \end_inset
 
 
 \series default
- Don't include peep-hole comments in the generated asm files even if --fverbose-
-asm option is specified.
+ Don't include peep-hole comments in the generated asm files even if -
+\series bold
+
+\begin_inset ERT
+status open
+
+\begin_layout Standard
+
+
+\backslash
+/
+\end_layout
+
+\end_inset
+
+
+\series default
+-fverbose-asm option is specified.
 \end_layout
 
 \begin_layout List
@@ -9749,7 +10261,7 @@ status collapsed
 \end_inset
 
 -i-code-in-asm
-\begin_inset LatexCommand \index{-\/-i-code-in-asm}
+\begin_inset LatexCommand \index{-\\/-i-code-in-asm}
 
 \end_inset
 
@@ -9782,7 +10294,7 @@ status collapsed
 \end_inset
 
 
-\begin_inset LatexCommand \index{-\/-less-pedantic}
+\begin_inset LatexCommand \index{-\\/-less-pedantic}
 
 \end_inset
 
@@ -9826,7 +10338,7 @@ status collapsed
 
 -disable-warning\InsetSpace ~
 <nnnn>
-\begin_inset LatexCommand \index{-\/-disable-warning}
+\begin_inset LatexCommand \index{-\\/-disable-warning}
 
 \end_inset
 
@@ -9853,7 +10365,7 @@ status collapsed
 \end_inset
 
 -print-search-dirs
-\begin_inset LatexCommand \index{-\/-print-search-dirs}
+\begin_inset LatexCommand \index{-\\/-print-search-dirs}
 
 \end_inset
 
@@ -9880,7 +10392,7 @@ status collapsed
 \end_inset
 
 -vc
-\begin_inset LatexCommand \index{-\/-vc}
+\begin_inset LatexCommand \index{-\\/-vc}
 
 \end_inset
 
@@ -9920,7 +10432,7 @@ status collapsed
 \end_inset
 
 -use-stdout
-\begin_inset LatexCommand \index{-\/-use-stdout}
+\begin_inset LatexCommand \index{-\\/-use-stdout}
 
 \end_inset
 
@@ -9974,7 +10486,7 @@ status collapsed
 \end_inset
 
 -std-sdcc89
-\begin_inset LatexCommand \index{-\/-std-sdcc89}
+\begin_inset LatexCommand \index{-\\/-std-sdcc89}
 
 \end_inset
 
@@ -10002,7 +10514,7 @@ status collapsed
 \end_inset
 
 -std-c89
-\begin_inset LatexCommand \index{-\/-std-c89}
+\begin_inset LatexCommand \index{-\\/-std-c89}
 
 \end_inset
 
@@ -10030,7 +10542,7 @@ status collapsed
 \end_inset
 
 -std-sdcc99
-\begin_inset LatexCommand \index{-\/-std-sdcc99}
+\begin_inset LatexCommand \index{-\\/-std-sdcc99}
 
 \end_inset
 
@@ -10058,7 +10570,7 @@ status collapsed
 \end_inset
 
 -std-c99
-\begin_inset LatexCommand \index{-\/-std-sdcc99}
+\begin_inset LatexCommand \index{-\\/-std-sdcc99}
 
 \end_inset
 
@@ -10088,7 +10600,7 @@ status collapsed
 -codeseg
 \series default
 
-\begin_inset LatexCommand \index{-\/-codeseg <Value>}
+\begin_inset LatexCommand \index{-\\/-codeseg <Value>}
 
 \end_inset
 
@@ -10126,7 +10638,7 @@ status collapsed
 -constseg
 \series default
 
-\begin_inset LatexCommand \index{-\/-constseg <Value>}
+\begin_inset LatexCommand \index{-\\/-constseg <Value>}
 
 \end_inset
 
@@ -10162,7 +10674,7 @@ status collapsed
 \end_inset
 
 -fdollars-in-identifiers
-\begin_inset LatexCommand \index{-\/-fdollars-in-identifiers}
+\begin_inset LatexCommand \index{-\\/-fdollars-in-identifiers}
 
 \end_inset
 
@@ -10191,7 +10703,7 @@ status collapsed
 -more-pedantic
 \series default
 
-\begin_inset LatexCommand \index{-\/-more-pedantic}
+\begin_inset LatexCommand \index{-\\/-more-pedantic}
 
 \end_inset
 
@@ -10312,7 +10824,7 @@ status collapsed
 -short-is-8bits
 \series default
 
-\begin_inset LatexCommand \index{-\/-short-is-8bits}
+\begin_inset LatexCommand \index{-\\/-short-is-8bits}
 
 \end_inset
 
@@ -10400,7 +10912,7 @@ status collapsed
 \end_inset
 
 -dumpraw
-\begin_inset LatexCommand \index{-\/-dumpraw}
+\begin_inset LatexCommand \index{-\\/-dumpraw}
 
 \end_inset
 
@@ -10440,13 +10952,13 @@ status collapsed
 \end_inset
 
 -dumpgcse
-\begin_inset LatexCommand \index{-\/-dumpgcse}
+\begin_inset LatexCommand \index{-\\/-dumpgcse}
 
 \end_inset
 
 
 \series default
- Will create a dump of iCode's, after global subexpression elimination
+ Will create a dump of iCodes, after global subexpression elimination
 \begin_inset LatexCommand \index{Global subexpression elimination}
 
 \end_inset
@@ -10474,13 +10986,13 @@ status collapsed
 \end_inset
 
 -dumpdeadcode
-\begin_inset LatexCommand \index{-\/-dumpdeadcode}
+\begin_inset LatexCommand \index{-\\/-dumpdeadcode}
 
 \end_inset
 
 
 \series default
- Will create a dump of iCode's, after deadcode elimination
+ Will create a dump of iCodes, after deadcode elimination
 \begin_inset LatexCommand \index{Dead-code elimination}
 
 \end_inset
@@ -10508,7 +11020,7 @@ status collapsed
 \end_inset
 
 -dumploop
-\begin_inset LatexCommand \index{-\/-dumploop}
+\begin_inset LatexCommand \index{-\\/-dumploop}
 
 \end_inset
 
@@ -10517,7 +11029,7 @@ status collapsed
 \size large
  
 \size default
-Will create a dump of iCode's, after loop optimizations
+Will create a dump of iCodes, after loop optimizations
 \begin_inset LatexCommand \index{Loop optimization}
 
 \end_inset
@@ -10545,7 +11057,7 @@ status collapsed
 \end_inset
 
 -dumprange
-\begin_inset LatexCommand \index{-\/-dumprange}
+\begin_inset LatexCommand \index{-\\/-dumprange}
 
 \end_inset
 
@@ -10554,7 +11066,7 @@ status collapsed
 \size large
  
 \size default
-Will create a dump of iCode's, after live range analysis
+Will create a dump of iCodes, after live range analysis
 \begin_inset LatexCommand \index{Live range analysis}
 
 \end_inset
@@ -10582,7 +11094,7 @@ status collapsed
 \end_inset
 
 -dumlrange
-\begin_inset LatexCommand \index{-\/-dumlrange}
+\begin_inset LatexCommand \index{-\\/-dumlrange}
 
 \end_inset
 
@@ -10614,16 +11126,13 @@ status collapsed
 \end_inset
 
 -dumpregassign
-\begin_inset LatexCommand \index{-\/-dumpregassign}
+\begin_inset LatexCommand \index{-\\/-dumpregassign}
 
 \end_inset
 
-
-\bar under
  
 \series default
-\bar default
-Will create a dump of iCode's, after register assignment
+Will create a dump of iCodes, after register assignment
 \begin_inset LatexCommand \index{Register assignment}
 
 \end_inset
@@ -10651,7 +11160,7 @@ status collapsed
 \end_inset
 
 -dumplrange
-\begin_inset LatexCommand \index{-\/-dumplrange}
+\begin_inset LatexCommand \index{-\\/-dumplrange}
 
 \end_inset
 
@@ -10678,17 +11187,15 @@ status collapsed
 \end_inset
 
 -dumpall
-\begin_inset LatexCommand \index{-\/-dumpall}
+\begin_inset LatexCommand \index{-\\/-dumpall}
 
 \end_inset
 
 
 \size large
-\bar under
  
 \series default
 \size default
-\bar default
 Will cause all the above mentioned dumps to be created.
 \end_layout
 
@@ -10704,7 +11211,7 @@ Redirecting output on Windows Shells
 \end_layout
 
 \begin_layout Standard
-By default SDCC writes it's error messages to 
+By default SDCC writes its error messages to 
 \begin_inset Quotes sld
 \end_inset
 
@@ -10745,7 +11252,7 @@ status collapsed
 -
 \series default
 use-stdout
-\begin_inset LatexCommand \index{-\/-use-stdout}
+\begin_inset LatexCommand \index{-\\/-use-stdout}
 
 \end_inset
 
@@ -10770,7 +11277,7 @@ status collapsed
 
 \emph default
 -vc
-\begin_inset LatexCommand \index{-\/-vc}
+\begin_inset LatexCommand \index{-\\/-vc}
 
 \end_inset
 
@@ -10852,7 +11359,7 @@ SDCC recognizes the following environment variables:
 
 \series bold
 SDCC_LEAVE_SIGNALS
-\begin_inset LatexCommand \index{SDCC\_LEAVE\_SIGNALS}
+\begin_inset LatexCommand \index{SDCC\\_LEAVE\\_SIGNALS}
 
 \end_inset
 
@@ -10893,7 +11400,7 @@ TMPDIR
 
 \series bold
 SDCC_HOME
-\begin_inset LatexCommand \index{SDCC\_HOME}
+\begin_inset LatexCommand \index{SDCC\\_HOME}
 
 \end_inset
 
@@ -10921,7 +11428,7 @@ SDCC_HOME
 
 \series bold
 SDCC_INCLUDE
-\begin_inset LatexCommand \index{SDCC\_INCLUDE}
+\begin_inset LatexCommand \index{SDCC\\_INCLUDE}
 
 \end_inset
 
@@ -10949,7 +11456,7 @@ Search Paths
 
 \series bold
 SDCC_LIB
-\begin_inset LatexCommand \index{SDCC\_LIB}
+\begin_inset LatexCommand \index{SDCC\\_LIB}
 
 \end_inset
 
@@ -11007,7 +11514,7 @@ data
 \end_inset
 
 
-\begin_inset LatexCommand \index{\_\_data (mcs51, ds390 storage class)}
+\begin_inset LatexCommand \index{\\_\\_data (mcs51, ds390 storage class)}
 
 \end_inset
 
@@ -11017,7 +11524,7 @@ data
 \end_inset
 
 
-\begin_inset LatexCommand \index{\_\_near (storage class)}
+\begin_inset LatexCommand \index{\\_\\_near (storage class)}
 
 \end_inset
 
@@ -11078,7 +11585,7 @@ xdata
 \end_inset
 
 
-\begin_inset LatexCommand \index{\_\_xdata (mcs51, ds390 storage class)}
+\begin_inset LatexCommand \index{\\_\\_xdata (mcs51, ds390 storage class)}
 
 \end_inset
 
@@ -11088,7 +11595,7 @@ xdata
 \end_inset
 
 
-\begin_inset LatexCommand \index{\_\_far (storage class)}
+\begin_inset LatexCommand \index{\\_\\_far (storage class)}
 
 \end_inset
 
@@ -11156,7 +11663,7 @@ idata
 \end_inset
 
 
-\begin_inset LatexCommand \index{\_\_idata (mcs51, ds390 storage class)}
+\begin_inset LatexCommand \index{\\_\\_idata (mcs51, ds390 storage class)}
 
 \end_inset
 
@@ -11225,7 +11732,7 @@ pdata
 \end_inset
 
 
-\begin_inset LatexCommand \index{\_\_pdata (mcs51, ds390 storage class)}
+\begin_inset LatexCommand \index{\\_\\_pdata (mcs51, ds390 storage class)}
 
 \end_inset
 
@@ -11314,7 +11821,7 @@ status collapsed
 \end_inset
 
 -xstack
-\begin_inset LatexCommand \index{-\/-xstack}
+\begin_inset LatexCommand \index{-\\/-xstack}
 
 \end_inset
 
@@ -11329,7 +11836,7 @@ code
 \end_inset
 
 
-\begin_inset LatexCommand \index{\_\_code}
+\begin_inset LatexCommand \index{\\_\\_code}
 
 \end_inset
 
@@ -11444,7 +11951,7 @@ bit
 \end_inset
 
 
-\begin_inset LatexCommand \index{\_\_bit}
+\begin_inset LatexCommand \index{\\_\\_bit}
 
 \end_inset
 
@@ -11515,7 +12022,7 @@ sfr
 \end_inset
 
 
-\begin_inset LatexCommand \index{\_\_sfr}
+\begin_inset LatexCommand \index{\\_\\_sfr}
 
 \end_inset
 
@@ -11525,7 +12032,7 @@ sfr
 \end_inset
 
 
-\begin_inset LatexCommand \index{\_\_sfr16}
+\begin_inset LatexCommand \index{\\_\\_sfr16}
 
 \end_inset
 
@@ -11535,12 +12042,12 @@ sfr
 \end_inset
 
 
-\begin_inset LatexCommand \index{\_\_sfr32}
+\begin_inset LatexCommand \index{\\_\\_sfr32}
 
 \end_inset
 
  / sbit
-\begin_inset LatexCommand \index{\_\_sbit}
+\begin_inset LatexCommand \index{\\_\\_sbit}
 
 \end_inset
 
@@ -11555,9 +12062,9 @@ sfr
 \begin_layout Standard
 Like the bit keyword, 
 \emph on
-sfr / sfr16 / sfr32 / sbit 
+sfr / sfr16 / sfr32 / sbit
 \emph default
-signify both a data-type and storage class, they are used to describe the
+ signify both a data-type and storage class, they are used to describe the
  
 \emph on
 s
@@ -11590,7 +12097,7 @@ __sfr __at
 \end_inset
 
 
-\begin_inset LatexCommand \index{\_\_at}
+\begin_inset LatexCommand \index{\\_\\_at}
 
 \end_inset
 
@@ -11618,7 +12125,7 @@ __sbit __at
 \end_inset
 
 
-\begin_inset LatexCommand \index{\_\_at}
+\begin_inset LatexCommand \index{\\_\\_at}
 
 \end_inset
 
@@ -11638,9 +12145,9 @@ __sbit __at
 
 \begin_layout Standard
 Special function registers which are located on an address dividable by
- 8 are bit-addressable, an
+ 8 are bit-addressable, an 
 \emph on
- sbit
+sbit
 \emph default
  addresses a specific bit within these sfr.
 \newline
@@ -11666,9 +12173,9 @@ Please note, if you use a header file which was written for another compiler
  then the sfr / sfr16 / sfr32 / sbit Storage Class extensions will most
  likely be 
 \emph on
-not 
+not
 \emph default
-compatible.
+ compatible.
  Specifically the syntax 
 \family typewriter
 \InsetSpace ~
@@ -11695,8 +12202,10 @@ status collapsed
 \end_inset
 
 .
+
 \family default
+\series bold
 Nevertheless it is possible to write header files
 \begin_inset LatexCommand \index{Header files}
 
@@ -11886,7 +12395,7 @@ idata
 \end_inset
 
 
-\begin_inset LatexCommand \index{\_\_idata (mcs51, ds390 storage class)}
+\begin_inset LatexCommand \index{\\_\\_idata (mcs51, ds390 storage class)}
 
 \end_inset
 
@@ -11901,7 +12410,7 @@ xdata
 \end_inset
 
 
-\begin_inset LatexCommand \index{\_\_xdata (mcs51, ds390 storage class)}
+\begin_inset LatexCommand \index{\\_\\_xdata (mcs51, ds390 storage class)}
 
 \end_inset
 
@@ -11916,7 +12425,7 @@ data
 \end_inset
 
 
-\begin_inset LatexCommand \index{\_\_data (mcs51, ds390 storage class)}
+\begin_inset LatexCommand \index{\\_\\_data (mcs51, ds390 storage class)}
 
 \end_inset
 
@@ -11955,7 +12464,7 @@ using
 \end_inset
 
 
-\begin_inset LatexCommand \index{\_\_using (mcs51, ds390 register bank)}
+\begin_inset LatexCommand \index{\\_\\_using (mcs51, ds390 register bank)}
 
 \end_inset
 
@@ -11967,7 +12476,7 @@ using
 \end_inset
 
 
-\begin_inset LatexCommand \index{\_\_interrupt}
+\begin_inset LatexCommand \index{\\_\\_interrupt}
 
 \end_inset
 
@@ -12011,7 +12520,7 @@ status collapsed
 \end_inset
 
 -data-loc
-\begin_inset LatexCommand \index{-\/-data-loc <Value>}
+\begin_inset LatexCommand \index{-\\/-data-loc <Value>}
 
 \end_inset
 
@@ -12033,7 +12542,7 @@ status collapsed
 \end_inset
 
 -iram-size
-\begin_inset LatexCommand \index{-\/-iram-size <Value>}
+\begin_inset LatexCommand \index{-\\/-iram-size <Value>}
 
 \end_inset
 
@@ -12068,7 +12577,7 @@ status collapsed
 \end_inset
 
 -stack-loc
-\begin_inset LatexCommand \index{-\/-stack-loc <Value>}
+\begin_inset LatexCommand \index{-\\/-stack-loc <Value>}
 
 \end_inset
 
@@ -12094,7 +12603,7 @@ status collapsed
 \end_inset
 
 -xdata-loc
-\begin_inset LatexCommand \index{-\/-xdata-loc<Value>}
+\begin_inset LatexCommand \index{-\\/-xdata-loc<Value>}
 
 \end_inset
 
@@ -12116,7 +12625,7 @@ status collapsed
 \end_inset
 
 -xram-size
-\begin_inset LatexCommand \index{-\/-xram-size <Value>}
+\begin_inset LatexCommand \index{-\\/-xram-size <Value>}
 
 \end_inset
 
@@ -12135,7 +12644,7 @@ status collapsed
 \end_inset
 
 -code-loc
-\begin_inset LatexCommand \index{-\/-code-loc <Value>}
+\begin_inset LatexCommand \index{-\\/-code-loc <Value>}
 
 \end_inset
 
@@ -12153,7 +12662,7 @@ status collapsed
 \end_inset
 
 -code-size
-\begin_inset LatexCommand \index{-\/-code-size <Value>}
+\begin_inset LatexCommand \index{-\\/-code-size <Value>}
 
 \end_inset
 
@@ -12204,7 +12713,7 @@ sfr
 \end_inset
 
 
-\begin_inset LatexCommand \index{\_\_sfr}
+\begin_inset LatexCommand \index{\\_\\_sfr}
 
 \end_inset
 
@@ -12284,7 +12793,7 @@ banked sfr
 \end_inset
 
 
-\begin_inset LatexCommand \index{\_\_sfr}
+\begin_inset LatexCommand \index{\\_\\_sfr}
 
 \end_inset
 
@@ -12308,7 +12817,7 @@ sfr banked at
 \end_inset
 
 
-\begin_inset LatexCommand \index{\_\_at}
+\begin_inset LatexCommand \index{\\_\\_at}
 
 \end_inset
 
@@ -12351,7 +12860,7 @@ sfr
 \end_inset
 
 
-\begin_inset LatexCommand \index{\_\_sfr}
+\begin_inset LatexCommand \index{\\_\\_sfr}
 
 \end_inset
 
@@ -12383,13 +12892,13 @@ status collapsed
 \end_inset
 
 -portmode
-\begin_inset LatexCommand \index{Z180!Options!-\/-portmode}
+\begin_inset LatexCommand \index{Z180!Options!-\\/-portmode}
 
 \end_inset
 
 =180 (80) and a compiler #pragma\InsetSpace ~
 portmode
-\begin_inset LatexCommand \index{Z180!Pragmas!\#pragma portmode}
+\begin_inset LatexCommand \index{Z180!Pragmas!\\#pragma portmode}
 
 \end_inset
 
@@ -12426,7 +12935,7 @@ data
 \end_inset
 
 
-\begin_inset LatexCommand \index{\_\_data (hc08 storage class)}
+\begin_inset LatexCommand \index{\\_\\_data (hc08 storage class)}
 
 \end_inset
 
@@ -12451,7 +12960,7 @@ xdata
 \end_inset
 
 
-\begin_inset LatexCommand \index{\_\_xdata (hc08 storage class)}
+\begin_inset LatexCommand \index{\\_\\_xdata (hc08 storage class)}
 
 \end_inset
 
@@ -12487,7 +12996,7 @@ at
 \end_inset
 
 
-\begin_inset LatexCommand \index{\_\_at}
+\begin_inset LatexCommand \index{\\_\\_at}
 
 \end_inset
 
@@ -12505,7 +13014,7 @@ xdata
 \end_inset
 
 
-\begin_inset LatexCommand \index{\_\_xdata (mcs51, ds390 storage class)}
+\begin_inset LatexCommand \index{\\_\\_xdata (mcs51, ds390 storage class)}
 
 \end_inset
 
@@ -12515,7 +13024,7 @@ xdata
 \end_inset
 
 
-\begin_inset LatexCommand \index{\_\_at}
+\begin_inset LatexCommand \index{\\_\\_at}
 
 \end_inset
 
@@ -12571,29 +13080,36 @@ status collapsed
 \end_inset
 
 ) are good places to look for such overlaps.
- Variables with an absolute address are 
-\emph on
-not
-\begin_inset Marginal
-status collapsed
+\end_layout
 
 \begin_layout Standard
-
-\series bold
-\InsetSpace ~
-!
-\end_layout
+If however you provide an initializer
+\begin_inset LatexCommand \index{Variable initialization}
 
 \end_inset
 
+ actual memory allocation will take place and overlaps will be detected
+ by the linker.
+ E.g.:
+\end_layout
 
-\emph default
- initialized
-\begin_inset LatexCommand \index{Variable initialization}
+\begin_layout Verse
 
+\family typewriter
+__code __at (0x7ff0) char Id[5] = 
+\begin_inset Quotes sld
 \end_inset
 
-.
+SDCC
+\begin_inset Quotes srd
+\end_inset
+
+;
+\end_layout
+
+\begin_layout Standard
+In the above example the variable Id will be located from 0x7ff0 to 0x7ff4
+ in code memory.
 \end_layout
 
 \begin_layout Standard
@@ -12851,7 +13367,7 @@ __bit __at
 \end_inset
 
 
-\begin_inset LatexCommand \index{\_\_at}
+\begin_inset LatexCommand \index{\\_\\_at}
 
 \end_inset
 
@@ -12946,7 +13462,7 @@ Parameters
 Automatic (local) variables and parameters to functions can either be placed
  on the stack or in data-space.
  The default action of the compiler is to place these variables in the internal
- RAM (for small model) or external RAM (for large model).
+ RAM (for small model) or external RAM (for medium or large model).
  This in fact makes them similar to 
 \emph on
 static
@@ -12971,9 +13487,9 @@ They can be placed on the stack
 
 \end_inset
 
- by using the
+ by using the 
 \emph on
- -
+-
 \begin_inset ERT
 status collapsed
 
@@ -12987,7 +13503,7 @@ status collapsed
 \end_inset
 
 -stack-auto
-\begin_inset LatexCommand \index{-\/-stack-auto}
+\begin_inset LatexCommand \index{-\\/-stack-auto}
 
 \end_inset
 
@@ -12999,7 +13515,7 @@ status collapsed
 stackauto
 \emph default
 
-\begin_inset LatexCommand \index{\#pragma stackauto}
+\begin_inset LatexCommand \index{\\#pragma stackauto}
 
 \end_inset
 
@@ -13035,11 +13551,11 @@ unsigned char foo(char i) __reentrant
 \begin_layout Standard
 Since stack space on 8051 is limited, the 
 \emph on
-reentrant 
+reentrant
 \emph default
-keyword or the
+ keyword or the 
 \emph on
- -
+-
 \begin_inset ERT
 status collapsed
 
 \emph on
 bvar
 \emph default
- in bit addressable space and
+ in bit addressable space and 
 \emph on
- j
+j
 \emph default
  in internal ram.
  When compiled with 
@@ -13251,7 +13767,7 @@ status collapsed
 
  should be preceded by a #pragma\InsetSpace ~
 nooverlay
-\begin_inset LatexCommand \index{\#pragma nooverlay}
+\begin_inset LatexCommand \index{\\#pragma nooverlay}
 
 \end_inset
 
@@ -13289,7 +13805,7 @@ tion
 #pragma save 
 \newline
 #pragma nooverlay
-\begin_inset LatexCommand \index{\#pragma nooverlay}
+\begin_inset LatexCommand \index{\\#pragma nooverlay}
 
 \end_inset
 
@@ -13420,7 +13936,7 @@ interrupt
 \end_inset
 
 
-\begin_inset LatexCommand \index{\_\_interrupt}
+\begin_inset LatexCommand \index{\\_\\_interrupt}
 
 \end_inset
 
@@ -13449,7 +13965,7 @@ using
 \end_inset
 
 
-\begin_inset LatexCommand \index{\_\_using (mcs51, ds390 register bank)}
+\begin_inset LatexCommand \index{\\_\\_using (mcs51, ds390 register bank)}
 
 \end_inset
 
@@ -13657,9 +14173,9 @@ A special note here, int (16 bit) and long (32 bit) integer division
  operations are implemented using external support routines.
  If an interrupt service routine needs to do any of these operations then
  the support routines (as mentioned in a following section) will have to
- be recompiled using the
+ be recompiled using the 
 \emph on
- -
+-
 \begin_inset ERT
 status collapsed
 
@@ -13673,7 +14189,7 @@ status collapsed
 \end_inset
 
 -stack-auto
-\begin_inset LatexCommand \index{-\/-stack-auto}
+\begin_inset LatexCommand \index{-\\/-stack-auto}
 
 \end_inset
 
@@ -13697,7 +14213,7 @@ status collapsed
 -int-long-reent
 \emph default
 
-\begin_inset LatexCommand \index{-\/-int-long-reent}
+\begin_inset LatexCommand \index{-\\/-int-long-reent}
 
 \end_inset
 
@@ -13726,9 +14242,13 @@ status collapsed
  See f.e.
  the cast 
 \family typewriter
+\series bold
 (unsigned char)(tail-1)
 \family default
- within the if clause in section 
+\series default
+\series bold
+within the if clause in section 
 \begin_inset LatexCommand \ref{sub:A-Step-by Assembler Introduction}
 
 \end_inset
@@ -13742,7 +14262,7 @@ Calling other functions from an interrupt service routine is not recommended,
  Note that when some function is called from an interrupt service routine
  it should be preceded by a #pragma\InsetSpace ~
 nooverlay
-\begin_inset LatexCommand \index{\#pragma nooverlay}
+\begin_inset LatexCommand \index{\\#pragma nooverlay}
 
 \end_inset
 
@@ -13751,9 +14271,9 @@ nooverlay
  while the interrupt service routine might be active.
  They also must not be called from low priority interrupt service routines
  while a high priority interrupt service routine might be active.
- You could use semaphores or make the function
+ You could use semaphores or make the function 
 \emph on
- critical
+critical
 \emph default
  if all parameters are passed in registers.
 \newline
@@ -14085,7 +14605,7 @@ using
 \end_inset
 
 
-\begin_inset LatexCommand \index{\_\_using (mcs51, ds390 register bank)}
+\begin_inset LatexCommand \index{\\_\\_using (mcs51, ds390 register bank)}
 
 \end_inset
 
@@ -14259,7 +14779,7 @@ int foo () __critical
 \end_inset
 
 
-\begin_inset LatexCommand \index{\_\_critical}
+\begin_inset LatexCommand \index{\\_\\_critical}
 
 \end_inset
 
@@ -14476,7 +14996,7 @@ On other architectures which have seperate opcodes for enabling and disabling
 
 \family typewriter
 #define CLI _asm
-\begin_inset LatexCommand \index{\_asm}
+\begin_inset LatexCommand \index{\\_asm}
 
 \end_inset
 
@@ -14485,7 +15005,7 @@ On other architectures which have seperate opcodes for enabling and disabling
 cli\InsetSpace ~
 \InsetSpace ~
 _endasm
-\begin_inset LatexCommand \index{\_endasm}
+\begin_inset LatexCommand \index{\\_endasm}
 
 \end_inset
 
@@ -14594,15 +15114,7 @@ Some architectures (mcs51/ds390) have an atomic
 
 \end_inset
 
- bit test and
-\emph on
-\emph default
-clear
-\emph on
-\emph default
-instruction.
+ bit test and clear instruction.
  These type of instructions are typically used in preemptive multitasking
  systems, where a routine f.e.
  claims the use of a data structure ('acquires a lock
@@ -14703,7 +15215,7 @@ using
 \end_inset
 
 
-\begin_inset LatexCommand \index{\_\_using (mcs51, ds390 register bank)}
+\begin_inset LatexCommand \index{\\_\\_using (mcs51, ds390 register bank)}
 
 \end_inset
 
@@ -14758,19 +15270,19 @@ possible exception: if a function is called ONLY from 'interrupt' functions
 \newline
 
 \emph on
-(pending: Note, nowadays the 
+(pending: Note, nowadays the
 \emph default
-using
+ using 
 \emph on
- attribute has an effect on
+attribute has an effect on
 \emph default
  
 \emph on
-the generated code for a 
+the generated code for a
 \emph default
-non-interrupt
+ non-interrupt 
 \emph on
- function
+function
 \emph default
 .
 \emph on
@@ -14857,7 +15369,24 @@ The compiler triggers the linker to link certain initialization modules
 
  called crt<something>.
  Only the necessary ones are linked, for instance crtxstack.asm (GSINIT1,
- GSINIT5) is not linked unless the --xstack option is used.
+ GSINIT5) is not linked unless the -
+\series bold
+
+\begin_inset ERT
+status open
+
+\begin_layout Standard
+
+
+\backslash
+/
+\end_layout
+
+\end_inset
+
+
+\series default
+-xstack option is used.
  These modules are highly entangled by the use of special segments/areas,
  but a common layout is shown below:
 \end_layout
@@ -15686,16 +16215,13 @@ sjmp .
 One of these modules (crtstart.asm) contains a call to the C routine 
 \emph on
 _sdcc_external_startup()
-\begin_inset LatexCommand \index{\_sdcc\_external\_startup()}
+\begin_inset LatexCommand \index{\\_sdcc\\_external\\_startup()}
 
 \end_inset
 
 
-\series bold
 \emph default
-\series default
-at the start of the CODE area.
+ at the start of the CODE area.
  This routine is also in the runtime library
 \begin_inset LatexCommand \index{Runtime library}
 
@@ -15747,7 +16273,7 @@ status collapsed
 \end_inset
 
 -iram-size
-\begin_inset LatexCommand \index{-\/-iram-size <Value>}
+\begin_inset LatexCommand \index{-\\/-iram-size <Value>}
 
 \end_inset
 
@@ -15780,7 +16306,7 @@ status collapsed
 opt
 \emph default
 
-\begin_inset LatexCommand \index{-\/-no-xinit-opt}
+\begin_inset LatexCommand \index{-\\/-no-xinit-opt}
 
 \end_inset
 
@@ -15802,7 +16328,7 @@ status collapsed
 -main-return
 \emph default
 
-\begin_inset LatexCommand \index{-\/-main-return}
+\begin_inset LatexCommand \index{-\\/-main-return}
 
 \end_inset
 
@@ -15871,7 +16397,7 @@ status collapsed
 -no-std-crt0
 \emph default
 
-\begin_inset LatexCommand \index{-\/-no-std-crt0}
+\begin_inset LatexCommand \index{-\\/-no-std-crt0}
 
 \end_inset
 
@@ -15919,7 +16445,7 @@ unsigned char __far
 \end_inset
 
 
-\begin_inset LatexCommand \index{\_\_far (storage class)}
+\begin_inset LatexCommand \index{\\_\\_far (storage class)}
 
 \end_inset
 
@@ -15929,7 +16455,7 @@ unsigned char __far
 \end_inset
 
 
-\begin_inset LatexCommand \index{\_\_at}
+\begin_inset LatexCommand \index{\\_\\_at}
 
 \end_inset
 
@@ -16015,10 +16541,16 @@ section
 \end_inset
 
  about
+\family default
+\family typewriter
 \series bold
- volatile
+volatile
+\family default
 \series default
- */
+\family typewriter
+*/
 \newline
 
 \newline
@@ -16032,11 +16564,17 @@ void to_buffer( unsigned char c )
 \InsetSpace ~
 if( head != (unsigned char)(tail-1)
  )\InsetSpace ~
-/* cast 
+/* cast
+\family default
+\family typewriter
 \series bold
 needed
+\family default
 \series default
- to avoid promotion
+\family typewriter
+to avoid promotion
 \begin_inset LatexCommand \index{promotion to signed int}
 
 \end_inset
@@ -16161,12 +16699,12 @@ void to_buffer_asm(
 \InsetSpace ~
 \InsetSpace ~
 _asm
-\begin_inset LatexCommand \index{\_asm}
+\begin_inset LatexCommand \index{\\_asm}
 
 \end_inset
 
 
-\begin_inset LatexCommand \index{\_\_asm}
+\begin_inset LatexCommand \index{\\_\\_asm}
 
 \end_inset
 
@@ -16181,11 +16719,17 @@ mov\InsetSpace ~
 r2,dpl 
 \newline
 ;buffer.c if( head != (unsigned char)(tail-1) ) \InsetSpace ~
-/* cast 
+/* cast
+\family default
+\family typewriter
 \series bold
 needed
+\family default
 \series default
- to avoid promotion
+\family typewriter
+to avoid promotion
 \begin_inset LatexCommand \index{promotion to signed int}
 
 \end_inset
@@ -16311,12 +16855,12 @@ ret
 \InsetSpace ~
 \InsetSpace ~
 _endasm
-\begin_inset LatexCommand \index{\_endasm}
+\begin_inset LatexCommand \index{\\_endasm}
 
 \end_inset
 
 
-\begin_inset LatexCommand \index{\_\_endasm}
+\begin_inset LatexCommand \index{\\_\\_endasm}
 
 \end_inset
 
@@ -16394,12 +16938,12 @@ c; // to avoid warning: unreferenced function argument
 \InsetSpace ~
 \InsetSpace ~
 _asm
-\begin_inset LatexCommand \index{\_asm}
+\begin_inset LatexCommand \index{\\_asm}
 
 \end_inset
 
 
-\begin_inset LatexCommand \index{\_\_asm}
+\begin_inset LatexCommand \index{\\_\\_asm}
 
 \end_inset
 
@@ -16592,12 +17136,12 @@ t_b_end$:
 \InsetSpace ~
 \InsetSpace ~
 _endasm
-\begin_inset LatexCommand \index{\_endasm}
+\begin_inset LatexCommand \index{\\_endasm}
 
 \end_inset
 
 
-\begin_inset LatexCommand \index{\_\_endasm}
+\begin_inset LatexCommand \index{\\_\\_endasm}
 
 \end_inset
 
@@ -16635,12 +17179,12 @@ The inline assembler code can contain any valid code understood by the assembler
 The compiler does not do any validation of the code within the 
 \family typewriter
 _asm
-\begin_inset LatexCommand \index{\_asm}
+\begin_inset LatexCommand \index{\\_asm}
 
 \end_inset
 
 
-\begin_inset LatexCommand \index{\_\_asm}
+\begin_inset LatexCommand \index{\\_\\_asm}
 
 \end_inset
 
@@ -16648,12 +17192,12 @@ _asm
  _endasm
 \size footnotesize
 
-\begin_inset LatexCommand \index{\_endasm}
+\begin_inset LatexCommand \index{\\_endasm}
 
 \end_inset
 
 
-\begin_inset LatexCommand \index{\_\_endasm}
+\begin_inset LatexCommand \index{\\_\\_endasm}
 
 \end_inset
 
@@ -16691,7 +17235,7 @@ status collapsed
 -
 \emph on
 peep-asm
-\begin_inset LatexCommand \index{-\/-peep-asm}
+\begin_inset LatexCommand \index{-\\/-peep-asm}
 
 \end_inset
 
@@ -16731,19 +17275,19 @@ Naked Functions
 A special keyword may be associated with a function declaring it as 
 \emph on
 _naked
-\begin_inset LatexCommand \index{\_naked}
+\begin_inset LatexCommand \index{\\_naked}
 
 \end_inset
 
 
-\begin_inset LatexCommand \index{\_\_naked}
+\begin_inset LatexCommand \index{\\_\\_naked}
 
 \end_inset
 
 .
+
 \emph default
-The 
+ The 
 \emph on
 _naked
 \emph default
@@ -16790,7 +17334,7 @@ void simpleInterrupt(void) __interrupt
 \end_inset
 
 
-\begin_inset LatexCommand \index{\_\_interrupt}
+\begin_inset LatexCommand \index{\\_\\_interrupt}
 
 \end_inset
 
@@ -16817,12 +17361,12 @@ void nakedInterrupt(void) __interrupt (2) __naked
 \InsetSpace ~
 \InsetSpace ~
 _asm
-\begin_inset LatexCommand \index{\_asm}
+\begin_inset LatexCommand \index{\\_asm}
 
 \end_inset
 
 
-\begin_inset LatexCommand \index{\_\_asm}
+\begin_inset LatexCommand \index{\\_\\_asm}
 
 \end_inset
 
@@ -16859,12 +17403,12 @@ reti\InsetSpace ~
 \InsetSpace ~
 \InsetSpace ~
 _endasm
-\begin_inset LatexCommand \index{\_endasm}
+\begin_inset LatexCommand \index{\\_endasm}
 
 \end_inset
 
 
-\begin_inset LatexCommand \index{\_\_endasm}
+\begin_inset LatexCommand \index{\\_\\_endasm}
 
 \end_inset
 
@@ -16880,17 +17424,29 @@ For an 8051 target, the generated simpleInterrupt looks like:
 \begin_layout Verse
 
 \family typewriter
-Note, this is an 
+Note, this is an
+\family default
+\family typewriter
 \emph on
 outdated
+\family default
 \emph default
- example, recent versions of SDCC generate
+\family typewriter
+example, recent versions of SDCC generate
 \newline
-the 
+the
+\family default
+\family typewriter
 \emph on
 same
+\family default
 \emph default
- code for simpleInterrupt() and nakedInterrupt()!
+\family typewriter
+code for simpleInterrupt() and nakedInterrupt()!
 \newline
 
 \newline
 \InsetSpace ~
 \InsetSpace ~
 \InsetSpace ~
-pu
-sh\InsetSpace ~
+pus
+h\InsetSpace ~
 \InsetSpace ~
 \InsetSpace ~
 \InsetSpace ~
@@ -17072,7 +17628,7 @@ reti\InsetSpace ~
 
 \begin_layout Standard
 The related directive #pragma exclude
-\begin_inset LatexCommand \index{\#pragma exclude}
+\begin_inset LatexCommand \index{\\#pragma exclude}
 
 \end_inset
 
@@ -17100,8 +17656,8 @@ Use of Labels within Inline Assembler
 \begin_layout Standard
 SDCC allows the use of in-line assembler with a few restrictions regarding
  labels.
- In older versions of the compiler all labels defined within inline assembler
- code had to be of the form 
+ All labels defined within inline assembler code have to be of the form
 \emph on
 nnnnn$
 \emph default
@@ -17114,6 +17670,33 @@ per function
 )
 \noun default
 .
+\begin_inset Foot
+status open
+
+\begin_layout Standard
+This is a slightly more stringent rule than absolutely necessary, but stays
+ always on the safe side.
+ Labels in the form of nnnnn$ are local labels in the assembler, locality
+ of which is confined within two labels of the standard form.
+ The compiler uses the same form for labels within a function (but starting
+ from nnnnn=00100); and places always a standard label at the beginning
+ of a function, thus limiting the locality of labels within the scope of
+ the function.
+ So, if the inline assembler part would be embedded into C-code, an improperly
+ placed non-local label in the assembler would break up the reference space
+ for labels created by the compiler for the C-code, leading to an assembling
+ error.
+\end_layout
+
+\begin_layout Standard
+The numeric part of local labels does not need to have 5 digits (although
+ this is the form of labels output by the compiler), any valid integer will
+ do.
+ Please refer to the assemblers documentation for further details.
+\end_layout
+
+\end_inset
+
  
 \end_layout
 
@@ -17121,12 +17704,12 @@ per function
 
 \family typewriter
 _asm
-\begin_inset LatexCommand \index{\_asm}
+\begin_inset LatexCommand \index{\\_asm}
 
 \end_inset
 
 
-\begin_inset LatexCommand \index{\_\_asm}
+\begin_inset LatexCommand \index{\\_\\_asm}
 
 \end_inset
 
@@ -17156,12 +17739,12 @@ djnz\InsetSpace ~
 b,00001$ 
 \newline
 _endasm
-\begin_inset LatexCommand \index{\_endasm}
+\begin_inset LatexCommand \index{\\_endasm}
 
 \end_inset
 
 
-\begin_inset LatexCommand \index{\_\_endasm}
+\begin_inset LatexCommand \index{\\_\\_endasm}
 
 \end_inset
 
@@ -17209,7 +17792,7 @@ _asm
 \InsetSpace ~
 \InsetSpace ~
 \InsetSpace ~
-ljmp $0003 
+ljmp 0003$ 
 \newline
 \InsetSpace ~
 \InsetSpace ~
@@ -17228,6 +17811,21 @@ clabel:\InsetSpace ~
 \InsetSpace ~
 /* inline assembler cannot reference this
  label */ 
+\begin_inset Foot
+status open
+
+\begin_layout Standard
+Here, the C-label 
+\family typewriter
+clabel
+\family default
+ is translated by the compiler into a local label, so the locality of labels
+ within the function is not broken.
+\end_layout
+
+\end_inset
+
+
 \newline
 \InsetSpace ~
 \InsetSpace ~
@@ -17239,20 +17837,19 @@ _asm
 \InsetSpace ~
 \InsetSpace ~
 \InsetSpace ~
-$0003: ;label (can be referenced by inline assembler only)
+0003$: ;label (can be referenced by inline assembler only) 
 \newline
 \InsetSpace ~
 \InsetSpace ~
 \InsetSpace ~
 \InsetSpace ~
 _endasm
-\begin_inset LatexCommand \index{\_endasm}
+\begin_inset LatexCommand \index{\\_endasm}
 
 \end_inset
 
 
-\begin_inset LatexCommand \index{\_\_endasm}
+\begin_inset LatexCommand \index{\\_\\_endasm}
 
 \end_inset
 
@@ -17310,19 +17907,19 @@ DPL, DPH
 
 \end_inset
 
+
 \emph default
-and
+ and 
 \emph on
- ACC
+ACC
 \begin_inset LatexCommand \index{ACC (mcs51, ds390 register)}
 
 \end_inset
 
 
 \emph default
- to pass the first parameter to a function, and also to pass the return
- value 
+ to pass the first (non-bit) parameter to a function, and also to pass the
return value 
 \begin_inset LatexCommand \index{return value}
 
 \end_inset
@@ -17361,9 +17958,9 @@ DPH
 \emph on
 DPL
 \emph default
-,
+, 
 \emph on
- B
+B
 \emph default
  and 
 \emph on
@@ -17424,7 +18021,21 @@ status collapsed
 \end_inset
 
 -stack-auto is used) or in data/xdata memory (depending on the memory model).
+\end_layout
+
+\begin_layout Standard
+Bit parameters are passed in a virtual register called 'bits' in bit-addressable
+ space for reentrant functions or allocated directly in bit memory otherwise.
+\end_layout
+
+\begin_layout Standard
+Functions (with two or more parameters or bit parameters) that are called
+ through function pointers
+\begin_inset LatexCommand \index{function pointers}
+
+\end_inset
+
+ must therefor be reentrant so the compiler knows how to pass the parameters.
 \end_layout
 
 \begin_layout Subsection
@@ -17455,7 +18066,7 @@ status collapsed
 \end_inset
 
 -callee-saves
-\begin_inset LatexCommand \index{-\/-callee-saves}
+\begin_inset LatexCommand \index{-\\/-callee-saves}
 
 \end_inset
 
@@ -18303,7 +18914,7 @@ status collapsed
 \end_inset
 
 -stack-auto
-\begin_inset LatexCommand \index{-\/-stack-auto}
+\begin_inset LatexCommand \index{-\\/-stack-auto}
 
 \end_inset
 
@@ -18325,7 +18936,7 @@ status collapsed
 \end_inset
 
 -int-long-reent
-\begin_inset LatexCommand \index{-\/-int-long-reent}
+\begin_inset LatexCommand \index{-\\/-int-long-reent}
 
 \end_inset
 
@@ -19093,9 +19704,9 @@ getchar()
 
 \end_inset
 
+
 \family default
-and 
+ and 
 \family typewriter
 putchar()
 \begin_inset LatexCommand \index{putchar()}
@@ -19174,18 +19785,18 @@ printf()
 \end_layout
 
 \begin_layout Standard
-The default
+The default 
 \family typewriter
- printf()
+printf()
 \begin_inset LatexCommand \index{printf()}
 
 \end_inset
 
 
 \family default
- implementation in
+ implementation in 
 \family typewriter
- printf_large.c
+printf_large.c
 \family default
  does not support float (except on ds390).
  To enable this recompile it with the option 
@@ -19204,16 +19815,16 @@ status collapsed
 \end_inset
 
 DUSE_FLOATS=1
-\begin_inset LatexCommand \index{USE\_FLOATS}
+\begin_inset LatexCommand \index{USE\\_FLOATS}
 
 \end_inset
 
 
 \emph default
  on the command line.
- Use
+ Use 
 \emph on
- -
+-
 \begin_inset ERT
 status collapsed
 
@@ -19227,7 +19838,7 @@ status collapsed
 \end_inset
 
 -model-large
-\begin_inset LatexCommand \index{-\/-model-large}
+\begin_inset LatexCommand \index{-\\/-model-large}
 
 \end_inset
 
@@ -19240,7 +19851,7 @@ status collapsed
 If you're short on code memory you might want to use 
 \family typewriter
 printf_small()
-\begin_inset LatexCommand \index{printf\_small()}
+\begin_inset LatexCommand \index{printf\\_small()}
 
 \end_inset
 
@@ -19250,15 +19861,15 @@ printf_small()
 \emph on
 instead
 \emph default
- of
+ of 
 \family typewriter
- printf().
+printf().
 
 \family default
  For the mcs51 there additionally are assembly versions 
 \family typewriter
 printf_tiny()
-\begin_inset LatexCommand \index{printf\_tiny() (mcs51)}
+\begin_inset LatexCommand \index{printf\\_tiny() (mcs51)}
 
 \end_inset
 
@@ -19267,16 +19878,16 @@ printf_tiny()
  (subset of printf using less than 270 bytes) and 
 \family typewriter
 printf_fast()
-\begin_inset LatexCommand \index{printf\_fast() (mcs51)}
+\begin_inset LatexCommand \index{printf\\_fast() (mcs51)}
 
 \end_inset
 
+
 \family default
-and
+ and 
 \family typewriter
- printf_fast_f()
-\begin_inset LatexCommand \index{printf\_fast\_f() (mcs51)}
+printf_fast_f()
+\begin_inset LatexCommand \index{printf\\_fast\\_f() (mcs51)}
 
 \end_inset
 
@@ -20673,7 +21284,7 @@ status collapsed
 \end_inset
 
 -xstack option
-\begin_inset LatexCommand \index{-\/-xstack}
+\begin_inset LatexCommand \index{-\\/-xstack}
 
 \end_inset
 
@@ -20720,7 +21331,7 @@ status collapsed
 \end_inset
 
 -stack-auto
-\begin_inset LatexCommand \index{-\/-stack-auto}
+\begin_inset LatexCommand \index{-\\/-stack-auto}
 
 \end_inset
 
@@ -20887,7 +21498,7 @@ SDCC supports the
 save
 \series default
 
-\begin_inset LatexCommand \index{\#pragma save}
+\begin_inset LatexCommand \index{\\#pragma save}
 
 \end_inset
 
@@ -20902,7 +21513,7 @@ restore.
 restore
 \series default
 
-\begin_inset LatexCommand \index{\#pragma restore}
+\begin_inset LatexCommand \index{\\#pragma restore}
 
 \end_inset
 
@@ -20922,7 +21533,7 @@ save.
 callee_saves
 \series default
 
-\begin_inset LatexCommand \index{\#pragma callee\_saves}
+\begin_inset LatexCommand \index{\\#pragma callee\\_saves}
 
 \end_inset
 
@@ -20972,7 +21583,7 @@ status collapsed
 
 ), the function names specified in #pragma\InsetSpace ~
 callee_saves
-\begin_inset LatexCommand \index{\#pragma callee\_saves}
+\begin_inset LatexCommand \index{\\#pragma callee\\_saves}
 
 \end_inset
 
@@ -20985,7 +21596,7 @@ callee_saves
 exclude
 \series default
 
-\begin_inset LatexCommand \index{\#pragma exclude}
+\begin_inset LatexCommand \index{\\#pragma exclude}
 
 \end_inset
 
@@ -21018,18 +21629,18 @@ outines.
  To enable the normal register saving for ISR functions use #pragma\InsetSpace ~
 exclude\InsetSpace ~
 none
-\begin_inset LatexCommand \index{\#pragma exclude}
+\begin_inset LatexCommand \index{\\#pragma exclude}
 
 \end_inset
 
 .
  See also the related keyword _naked
-\begin_inset LatexCommand \index{\_naked}
+\begin_inset LatexCommand \index{\\_naked}
 
 \end_inset
 
 
-\begin_inset LatexCommand \index{\_\_naked}
+\begin_inset LatexCommand \index{\\_\\_naked}
 
 \end_inset
 
@@ -21047,7 +21658,7 @@ less_pedantic
 \end_inset
 
 
-\begin_inset LatexCommand \index{\#pragma less\_pedantic}
+\begin_inset LatexCommand \index{\\#pragma less\\_pedantic}
 
 \end_inset
 
@@ -21056,7 +21667,7 @@ less_pedantic
 
 \end_inset
 
-- the compiler will not warn you anymore for obvious mistakes, you'r on
+- the compiler will not warn you anymore for obvious mistakes, you're on
  your own now ;-( .
  See also the command line option -
 \begin_inset ERT
@@ -21168,7 +21779,7 @@ function '[function name]', # edges [number] , # nodes [number] , cyclomatic
 disable_warning
 \series default
  <nnnn>
-\begin_inset LatexCommand \index{\#pragma disable\_warning}
+\begin_inset LatexCommand \index{\\#pragma disable\\_warning}
 
 \end_inset
 
@@ -21181,7 +21792,7 @@ disable_warning
 nogcse
 \series default
 
-\begin_inset LatexCommand \index{\#pragma nogcse}
+\begin_inset LatexCommand \index{\\#pragma nogcse}
 
 \end_inset
 
@@ -21194,7 +21805,7 @@ nogcse
 noinduction
 \series default
 
-\begin_inset LatexCommand \index{\#pragma noinduction}
+\begin_inset LatexCommand \index{\\#pragma noinduction}
 
 \end_inset
 
@@ -21207,7 +21818,7 @@ noinduction
 noinvariant
 \series default
 
-\begin_inset LatexCommand \index{\#pragma noinvariant}
+\begin_inset LatexCommand \index{\\#pragma noinvariant}
 
 \end_inset
 
@@ -21226,7 +21837,7 @@ noinvariant
 noiv
 \series default
 
-\begin_inset LatexCommand \index{\#pragma noiv}
+\begin_inset LatexCommand \index{\\#pragma noiv}
 
 \end_inset
 
@@ -21261,7 +21872,7 @@ about interrupts.
 nojtbound
 \series default
 
-\begin_inset LatexCommand \index{\#pragma nojtbound}
+\begin_inset LatexCommand \index{\\#pragma nojtbound}
 
 \end_inset
 
@@ -21281,7 +21892,7 @@ nojtbound
 noloopreverse
 \series default
 
-\begin_inset LatexCommand \index{\#pragma noloopreverse}
+\begin_inset LatexCommand \index{\\#pragma noloopreverse}
 
 \end_inset
 
@@ -21294,7 +21905,7 @@ noloopreverse
 nooverlay
 \series default
 
-\begin_inset LatexCommand \index{\#pragma nooverlay}
+\begin_inset LatexCommand \index{\\#pragma nooverlay}
 
 \end_inset
 
@@ -21308,7 +21919,7 @@ nooverlay
 stackauto
 \series default
 
-\begin_inset LatexCommand \index{\#pragma stackauto}
+\begin_inset LatexCommand \index{\\#pragma stackauto}
 
 \end_inset
 
@@ -21326,7 +21937,7 @@ status collapsed
 \end_inset
 
 -stack-auto
-\begin_inset LatexCommand \index{-\/-stack-auto}
+\begin_inset LatexCommand \index{-\\/-stack-auto}
 
 \end_inset
 
@@ -21344,7 +21955,7 @@ status collapsed
 opt_code_speed
 \series default
  
-\begin_inset LatexCommand \index{\#pragma opt\_code\_speed}
+\begin_inset LatexCommand \index{\\#pragma opt\\_code\\_speed}
 
 \end_inset
 
@@ -21359,7 +21970,7 @@ opt_code_speed
 opt_code_size
 \series default
  
-\begin_inset LatexCommand \index{\#pragma opt\_code\_size}
+\begin_inset LatexCommand \index{\\#pragma opt\\_code\\_size}
 
 \end_inset
 
@@ -21374,7 +21985,7 @@ opt_code_size
 opt_code_balanced
 \series default
  
-\begin_inset LatexCommand \index{\#pragma opt\_code\_balanced}
+\begin_inset LatexCommand \index{\\#pragma opt\\_code\\_balanced}
 
 \end_inset
 
@@ -21390,7 +22001,7 @@ opt_code_balanced
 std_sdcc89
 \series default
  
-\begin_inset LatexCommand \index{\#pragma std\_sdcc89}
+\begin_inset LatexCommand \index{\\#pragma std\\_sdcc89}
 
 \end_inset
 
@@ -21404,7 +22015,7 @@ std_sdcc89
 std_c89
 \series default
  
-\begin_inset LatexCommand \index{\#pragma std\_c89}
+\begin_inset LatexCommand \index{\\#pragma std\\_c89}
 
 \end_inset
 
@@ -21418,7 +22029,7 @@ std_c89
 std_sdcc99
 \series default
  
-\begin_inset LatexCommand \index{\#pragma std\_sdcc99}
+\begin_inset LatexCommand \index{\\#pragma std\\_sdcc99}
 
 \end_inset
 
@@ -21432,7 +22043,7 @@ std_sdcc99
 std_c99
 \series default
  
-\begin_inset LatexCommand \index{\#pragma std\_c99}
+\begin_inset LatexCommand \index{\\#pragma std\\_c99}
 
 \end_inset
 
@@ -21446,7 +22057,7 @@ std_c99
 codeseg
 \series default
  <name>
-\begin_inset LatexCommand \index{\#pragma codeseg}
+\begin_inset LatexCommand \index{\\#pragma codeseg}
 
 \end_inset
 
@@ -21474,7 +22085,7 @@ status collapsed
 constseg
 \series default
  <name>
-\begin_inset LatexCommand \index{\#pragma constseg}
+\begin_inset LatexCommand \index{\\#pragma constseg}
 
 \end_inset
 
@@ -21516,7 +22127,7 @@ pedantic_parse_number
 \end_inset
 
 
-\begin_inset LatexCommand \index{\#pragma pedantic\_parse\_number}
+\begin_inset LatexCommand \index{\\#pragma pedantic\\_parse\\_number}
 
 \end_inset
 
@@ -21550,16 +22161,16 @@ status collapsed
  
 \newline
 Below is an example on how to use this pragma.
-
 \emph on
- Note: this functionality is not in conformance with standard!
+Note: this functionality is not in conformance with standard!
 \end_layout
 
 \begin_layout Verse
 
 \family typewriter
 #pragma pedantic_parse_number +
-\begin_inset LatexCommand \index{\#pragma pedantic\_parse\_number}
+\begin_inset LatexCommand \index{\\#pragma pedantic\\_parse\\_number}
 
 \end_inset
 
@@ -21599,7 +22210,7 @@ return c;
 preproc_asm
 \series default
 
-\begin_inset LatexCommand \index{\#pragma preproc\_asm}
+\begin_inset LatexCommand \index{\\#pragma preproc\\_asm}
 
 \end_inset
 
@@ -21615,7 +22226,7 @@ preproc_asm
 
 \family typewriter
 #pragma preproc_asm -
-\begin_inset LatexCommand \index{\#pragma preproc\_asm}
+\begin_inset LatexCommand \index{\\#pragma preproc\\_asm}
 
 \end_inset
 
@@ -21677,7 +22288,7 @@ void foo (void)
 sdcc_hash
 \series default
 
-\begin_inset LatexCommand \index{\#pragma sdcc\_hash}
+\begin_inset LatexCommand \index{\\#pragma sdcc\\_hash}
 
 \end_inset
 
@@ -21699,7 +22310,7 @@ Default is off.
 #pragma preproc_asm +
 \newline
 #pragma sdcc_hash +
-\begin_inset LatexCommand \index{\#pragma sdcc\_hash}
+\begin_inset LatexCommand \index{\\#pragma sdcc\\_hash}
 
 \end_inset
 
@@ -21759,7 +22370,7 @@ ons which might cause the compiler to generate extra stack and/or data space
 
 \family typewriter
 #pragma save
-\begin_inset LatexCommand \index{\#pragma save}
+\begin_inset LatexCommand \index{\\#pragma save}
 
 \end_inset
 
@@ -21773,7 +22384,7 @@ ons which might cause the compiler to generate extra stack and/or data space
 /* save the current settings */ 
 \newline
 #pragma nogcse
-\begin_inset LatexCommand \index{\#pragma nogcse}
+\begin_inset LatexCommand \index{\\#pragma nogcse}
 
 \end_inset
 
@@ -21785,7 +22396,7 @@ ons which might cause the compiler to generate extra stack and/or data space
 /* turnoff global subexpression elimination */ 
 \newline
 #pragma noinduction
-\begin_inset LatexCommand \index{\#pragma noinduction}
+\begin_inset LatexCommand \index{\\#pragma noinduction}
 
 \end_inset
 
@@ -21812,7 +22423,7 @@ int foo ()
 } 
 \newline
 #pragma restore
-\begin_inset LatexCommand \index{\#pragma restore}
+\begin_inset LatexCommand \index{\\#pragma restore}
 
 \end_inset
 
@@ -21821,7 +22432,7 @@ int foo ()
 
 \begin_layout Standard
 The compiler will generate a warning message when extra space is allocated.
- It is strongly recommended that the save and restore pragma's be used when
+ It is strongly recommended that the save and restore pragmas be used when
  changing options for a function.
 \newline
 
@@ -21837,7 +22448,7 @@ Defines Created by the Compiler
 
 \begin_layout Standard
 The compiler creates the following #defines
-\begin_inset LatexCommand \index{\#defines}
+\begin_inset LatexCommand \index{\\#defines}
 
 \end_inset
 
@@ -21914,17 +22525,17 @@ Always defined.
 
 \begin_layout Standard
 SDCC_mcs51
-\begin_inset LatexCommand \index{SDCC\_mcs51}
+\begin_inset LatexCommand \index{SDCC\\_mcs51}
 
 \end_inset
 
  or SDCC_ds390
-\begin_inset LatexCommand \index{SDCC\_ds390}
+\begin_inset LatexCommand \index{SDCC\\_ds390}
 
 \end_inset
 
  or SDCC_z80
-\begin_inset LatexCommand \index{SDCC\_z80}
+\begin_inset LatexCommand \index{SDCC\\_z80}
 
 \end_inset
 
@@ -21949,22 +22560,22 @@ depending on the model used (e.g.: -mds390)
 
 \begin_layout Standard
 __mcs51
-\begin_inset LatexCommand \index{\_\_mcs51}
+\begin_inset LatexCommand \index{\\_\\_mcs51}
 
 \end_inset
 
 , __ds390
-\begin_inset LatexCommand \index{\_\_ds390}
+\begin_inset LatexCommand \index{\\_\\_ds390}
 
 \end_inset
 
 , __hc08
-\begin_inset LatexCommand \index{\_\_hc08}
+\begin_inset LatexCommand \index{\\_\\_hc08}
 
 \end_inset
 
 , __z80
-\begin_inset LatexCommand \index{\_\_z80}
+\begin_inset LatexCommand \index{\\_\\_z80}
 
 \end_inset
 
@@ -21990,7 +22601,7 @@ depending on the model used (e.g.
 
 \begin_layout Standard
 SDCC_STACK_AUTO
-\begin_inset LatexCommand \index{SDCC\_STACK\_AUTO}
+\begin_inset LatexCommand \index{SDCC\\_STACK\\_AUTO}
 
 \end_inset
 
@@ -22032,7 +22643,7 @@ status collapsed
 
 \begin_layout Standard
 SDCC_MODEL_SMALL
-\begin_inset LatexCommand \index{SDCC\_MODEL\_SMALL}
+\begin_inset LatexCommand \index{SDCC\\_MODEL\\_SMALL}
 
 \end_inset
 
@@ -22074,7 +22685,7 @@ status collapsed
 
 \begin_layout Standard
 SDCC_MODEL_MEDIUM
-\begin_inset LatexCommand \index{SDCC\_MODEL\_MEDIUM}
+\begin_inset LatexCommand \index{SDCC\\_MODEL\\_MEDIUM}
 
 \end_inset
 
@@ -22116,7 +22727,7 @@ status collapsed
 
 \begin_layout Standard
 SDCC_MODEL_LARGE
-\begin_inset LatexCommand \index{SDCC\_MODEL\_LARGE}
+\begin_inset LatexCommand \index{SDCC\\_MODEL\\_LARGE}
 
 \end_inset
 
@@ -22158,7 +22769,7 @@ status collapsed
 
 \begin_layout Standard
 SDCC_USE_XSTACK
-\begin_inset LatexCommand \index{SDCC\_USE\_XSTACK}
+\begin_inset LatexCommand \index{SDCC\\_USE\\_XSTACK}
 
 \end_inset
 
@@ -22200,7 +22811,7 @@ status collapsed
 
 \begin_layout Standard
 SDCC_STACK_TENBIT
-\begin_inset LatexCommand \index{SDCC\_STACK\_TENBIT}
+\begin_inset LatexCommand \index{SDCC\\_STACK\\_TENBIT}
 
 \end_inset
 
@@ -22229,7 +22840,7 @@ when
 
 \begin_layout Standard
 SDCC_MODEL_FLAT24
-\begin_inset LatexCommand \index{SDCC\_MODEL\_FLAT24}
+\begin_inset LatexCommand \index{SDCC\\_MODEL\\_FLAT24}
 
 \end_inset
 
@@ -22319,7 +22930,7 @@ sfr
  should define an sfr with the name _XPAGE
 \family typewriter
 
-\begin_inset LatexCommand \index{\_XPAGE (mcs51)}
+\begin_inset LatexCommand \index{\\_XPAGE (mcs51)}
 
 \end_inset
 
@@ -22525,37 +23136,101 @@ The HC08 port passes the regression test suite (see section
 \end_layout
 
 \begin_layout Section
-The PIC14 port
+The PIC14
+\begin_inset LatexCommand \index{PIC14}
+
+\end_inset
+
+ port
 \end_layout
 
 \begin_layout Standard
-The 14bit PIC
+The PIC14 port adds support for Microchip
+\begin_inset LatexCommand \index{Microchip}
+
+\end_inset
+
+
+\begin_inset Formula $^{\text{TM}}$
+\end_inset
+
+ PIC
 \begin_inset LatexCommand \index{PIC14}
 
 \end_inset
 
- port still requires a major effort from the development community.
- However it can work for simple code.
- It passes its (smaller set of) regression tests
-\begin_inset LatexCommand \index{Regression test (PIC14)}
 
+\begin_inset Formula $^{\text{TM}}$
 \end_inset
 
- in the directory 
-\shape italic
-sdcc/src/regression
-\shape default
-.
+ MCUs with 14 bit wide instructions.
+ This port is not yet mature and still lacks many features.
+ However, it can work for simple code.
+\end_layout
+
+\begin_layout Standard
+Currently supported devices include:
+\end_layout
+
+\begin_layout Standard
+12F: 629, 635, 675, 683
+\end_layout
+
+\begin_layout Standard
+16C: 432, 433
+\end_layout
+
+\begin_layout Standard
+16C: 554, 557, 558
+\end_layout
+
+\begin_layout Standard
+16C: 62, 620, 620a, 621, 621a, 622, 622a, 63a, 65b
+\end_layout
+
+\begin_layout Standard
+16C: 71, 710, 711, 715, 717, 72, 73b, 745, 74b, 765, 770, 771, 773, 774,
+ 781, 782
+\end_layout
+
+\begin_layout Standard
+16C: 925, 926
+\end_layout
+
+\begin_layout Standard
+16F: 627, 627a, 628, 628a, 630, 636, 639, 648a, 676, 684, 685, 687, 688,
+ 689, 690
+\end_layout
+
+\begin_layout Standard
+16F: 716, 72, 73, 737, 74, 76, 767, 77, 777, 785
+\end_layout
+
+\begin_layout Standard
+16F: 818, 819, 84, 84a, 87, 870, 871, 872, 873, 873a, 874, 874a, 876, 876a,
+ 877, 877a, 88
+\end_layout
+
+\begin_layout Standard
+16F: 913, 914, 916, 917
+\end_layout
+
+\begin_layout Standard
+An up-to-date list of currently supported devices can be obtained via 
+\family typewriter
+sdcc -mpic14 -phelp foo.c
+\family default
+ (foo.c must exist...).
 \end_layout
 
 \begin_layout Subsection
-C code and 14bit PIC code page
+PIC Code Pages
 \begin_inset LatexCommand \index{code page (pic14)}
 
 \end_inset
 
- and RAM banks
-\begin_inset LatexCommand \index{RAM bank (pic14)}
+ and Memory Banks
+\begin_inset LatexCommand \index{Memory bank (pic14)}
 
 \end_inset
 
@@ -22565,56 +23240,116 @@ C code and 14bit PIC code page
 \begin_layout Standard
 The linker organizes allocation for the code page and RAM banks.
  It does not have intimate knowledge of the code flow.
- It will put all the code section of a single asm file into a single code
+ It will put all the code section of a single .asm file into a single code
  page.
  In order to make use of multiple code pages, separate asm files must be
  used.
- The compiler treats all functions of a single C file as being in the same
- code page unless it is non static.
+ The compiler assigns all 
+\emph on
+static
+\emph default
+ functions of a single .c file into the same code page.
 \newline
 
 \newline
-To get the best follow these guide lines:
+To get the best results,
+ follow these guidelines:
 \end_layout
 
 \begin_layout Enumerate
 Make local functions static, as non static functions require code page selection
  overhead.
+\newline
+Due to the way sdcc handles functions, place called functions prior
+ to calling functions in the file wherever possible: Otherwise sdcc will
+ insert unneccessary pagesel directives around the call, believing that
+ the called function is externally defined.
 \end_layout
 
 \begin_layout Enumerate
 For devices that have multiple code pages it is more efficient to use the
- same number of files as pages, i.e.
- for the 16F877 use 4 separate files and i.e.
- for the 16F874 use 2 separate files.
+ same number of files as pages: Use up to 4 separate .c files for the 16F877,
+ but only 2 files for the 16F874.
  This way the linker can put the code for each file into different code
- pages and there's less page selection overhead.
+ pages and there will be less page selection overhead.
 \end_layout
 
 \begin_layout Enumerate
-And as for any 8 bit micro (especially for PIC 14 as they have a very simple
- instruction set), use 'unsigned char' whereever possible instead of 'int'.
+And as for any 8 bit micro (especially for PIC14 as they have a very simple
+ instruction set), use `unsigned char' wherever possible instead of `int'.
 \end_layout
 
 \begin_layout Subsection
-Creating a device include file 
+Adding New Devices to the Port 
 \end_layout
 
 \begin_layout Standard
-For generating a device include file
-\begin_inset LatexCommand \index{PIC14!Header files}
+Adding support for a new 14
+\begin_inset ERT
+status open
+
+\begin_layout Standard
+
+
+\backslash
+,
+\end_layout
 
 \end_inset
 
- use the support perl script inc2h.pl kept in directory support/script.
+bit PIC MCU requires the following steps:
+\end_layout
+
+\begin_layout Enumerate
+Create a new device description.
+\newline
+Each device is described in two files: pic16f*.h
+ and pic16f*.c.
+ These files primarily define SFRs, structs to access their bits, and symbolic
+ configuration options.
+ Both files can be generated from gputils' .inc files using the perl script
+\family typewriter
+support/scripts/inc2h.pl
+\family default
+.
+ This file also contains further instructions on how to proceed.
+\end_layout
+
+\begin_layout Enumerate
+Copy the .h file into SDCC's include path and either add the .c file to your
+ project or copy it to 
+\family typewriter
+device/lib/pic/libdev
+\family default
+.
+ Afterwards, rebuild and install the libraries.
+\end_layout
+
+\begin_layout Enumerate
+Edit pic14devices.txt in SDCC's include path (
+\family typewriter
+device/include/pic/
+\family default
+ in the source tree or 
+\family typewriter
+/usr/local/share/sdcc/include/pic
+\family default
+ after installation).
+\newline
+You need to add a device specification here to make
+ the memory layout (code banks, RAM, aliased memory regions, ...) known to
+ the compiler.
+ Probably you can copy and modify an existing entry.
+ The file format is documented at the top of the file.
 \end_layout
 
 \begin_layout Subsection
-Interrupt code
+Interrupt Code
 \end_layout
 
 \begin_layout Standard
-For the interrupt function, use the keyword '__interrupt'
+For the interrupt function, use the keyword `__interrupt'
 \begin_inset LatexCommand \index{PIC14!interrupt}
 
 \end_inset
@@ -22639,7 +23374,7 @@ T0IF = 0; /* Clear timer interrupt */
 \end_layout
 
 \begin_layout Subsection
-Linking and assembling
+Linking and Assembling
 \end_layout
 
 \begin_layout Standard
@@ -22649,13 +23384,13 @@ For assembling you can use either GPUTILS'
 \end_inset
 
  gpasm.exe or MPLAB's mpasmwin.exe.
- GPUTILS is available from 
+ GPUTILS are available from 
 \begin_inset LatexCommand \url{http://sourceforge.net/projects/gputils}
 
 \end_inset
 
 .
- For linking you can use either GPUTIL's gplink or MPLAB's mplink.exe.
+ For linking you can use either GPUTILS' gplink or MPLAB's mplink.exe.
  If you use MPLAB and an interrupt function then the linker script file
  vectors section will need to be enlarged to link with mplink.
 \newline
@@ -22681,17 +23416,7 @@ Makefile
 \InsetSpace ~
 \InsetSpace ~
 \InsetSpace ~
-sdcc -S -V -mpic14 -p16F877 $< 
-\newline
-\InsetSpace ~
-\InsetSpace ~
-\InsetSpace ~
-\InsetSpace ~
-\InsetSpace ~
-\InsetSpace ~
-\InsetSpace ~
-\InsetSpace ~
-gpasm -c $*.asm
+sdcc -V -mpic14 -p16f877 -c $< 
 \newline
 
 \newline
@@ -22705,8 +23430,8 @@ $(PRJ).hex: $(OBJS)
 \InsetSpace ~
 \InsetSpace ~
 \InsetSpace ~
-gplink
- -m -s $(PRJ).lkr -o $(PRJ).hex $(OBJS) libsdcc.lib
+gplink -m -s $(PRJ).lkr
+ -o $(PRJ).hex $(OBJS) libsdcc.lib
 \end_layout
 
 \begin_layout Standard
@@ -22730,7 +23455,7 @@ Makefile
 \InsetSpace ~
 \InsetSpace ~
 \InsetSpace ~
-sdcc -S -V -mpic14 -p16F877 $< 
+sdcc -S -V -mpic14 -p16f877 $< 
 \newline
 \InsetSpace ~
 \InsetSpace ~
@@ -22759,15 +23484,15 @@ mplink /v $(PRJ).lkr /m $(PRJ).map /o $(PRJ).hex $(OBJS) libsdcc.lib
 \end_layout
 
 \begin_layout Standard
-Please note that indentations within a
+Please note that indentations within a 
 \family typewriter
- Makefile
+Makefile
 \family default
  have to be done with a tabulator character.
 \end_layout
 
 \begin_layout Subsection
-Command-line options
+Command-Line Options
 \end_layout
 
 \begin_layout Standard
@@ -22788,8 +23513,7 @@ status collapsed
 -help):
 \end_layout
 
-\begin_layout List
-\labelwidthstring 00.00.0000
+\begin_layout Description
 -
 \begin_inset ERT
 status collapsed
@@ -22804,15 +23528,14 @@ status collapsed
 \end_inset
 
 -debug-xtra
-\begin_inset LatexCommand \index{PIC14!Options!-\/-debug-extra}
+\begin_inset LatexCommand \index{PIC14!Options!-\\/-debug-extra}
 
 \end_inset
 
  emit debug info in assembly output
 \end_layout
 
-\begin_layout List
-\labelwidthstring 00.00.0000
+\begin_layout Description
 -
 \begin_inset ERT
 status collapsed
@@ -22827,15 +23550,14 @@ status collapsed
 \end_inset
 
 -no-pcode-opt
-\begin_inset LatexCommand \index{PIC14!Options!-\/-no-pcode-opt}
+\begin_inset LatexCommand \index{PIC14!Options!-\\/-no-pcode-opt}
 
 \end_inset
 
  disable (slightly faulty) optimization on pCode
 \end_layout
 
-\begin_layout List
-\labelwidthstring 00.00.0000
+\begin_layout Description
 -
 \begin_inset ERT
 status collapsed
@@ -22850,7 +23572,7 @@ status collapsed
 \end_inset
 
 -stack-loc
-\begin_inset LatexCommand \index{PIC14!Options!-\/-stack-loc}
+\begin_inset LatexCommand \index{PIC14!Options!-\\/-stack-loc}
 
 \end_inset
 
@@ -22858,8 +23580,7 @@ status collapsed
  large shared databank to reduce BANKSEL overhead)
 \end_layout
 
-\begin_layout List
-\labelwidthstring 00.00.0000
+\begin_layout Description
 -
 \begin_inset ERT
 status collapsed
@@ -22874,7 +23595,7 @@ status collapsed
 \end_inset
 
 -stack-size
-\begin_inset LatexCommand \index{PIC14!Options!-\/-stack-size}
+\begin_inset LatexCommand \index{PIC14!Options!-\\/-stack-size}
 
 \end_inset
 
@@ -22882,19 +23603,37 @@ status collapsed
 \end_layout
 
 \begin_layout Subsection
-The library
+Environment Variables
 \end_layout
 
-\begin_layout Subsubsection
-error: missing definition for symbol 
-\begin_inset Quotes sld
-\end_inset
+\begin_layout Standard
+The PIC14 port recognizes the following environment variables:
+\end_layout
 
-__gptrget1
-\begin_inset Quotes srd
-\end_inset
+\begin_layout Description
+SDCC_PIC14_SPLIT_LOCALS If set and not empty, sdcc will allocate each temporary
+ register (the ones called r0xNNNN) in a section of its own.
+ By default (if this variable is unset), sdcc tries to cluster registers
+ in sections in order to reduce the BANKSEL overhead when accessing them.
+\end_layout
 
+\begin_layout Subsection
+The Library
+\end_layout
+
+\begin_layout Standard
+The PIC14 library currently only contains support routines required by the
+ compiler to implement multiplication, division, and floating point support.
+ No libc-like replacement is available at the moment, though many of the
+ common sdcc library sources (in 
+\family typewriter
+device/lib
+\family default
+) should also compile with the PIC14 port.
+\end_layout
 
+\begin_layout Subsubsection
+error: missing definition for symbol ``__gptrget1''
 \end_layout
 
 \begin_layout Standard
@@ -22917,20 +23656,25 @@ libsdcc.lib
 \end_layout
 
 \begin_layout Subsubsection
-Processor mismatch in file 
-\begin_inset Quotes sld
-\end_inset
-
-XXX
-\begin_inset Quotes srd
-\end_inset
-
-.
+Processor mismatch in file ``XXX''.
 \end_layout
 
 \begin_layout Standard
 This warning can usually be ignored due to the very good compatibility amongst
- 14 bit PIC
+ 14
+\begin_inset ERT
+status open
+
+\begin_layout Standard
+
+
+\backslash
+,
+\end_layout
+
+\end_inset
+
+bit PIC
 \begin_inset LatexCommand \index{PIC14}
 
 \end_inset
@@ -22950,46 +23694,37 @@ device/lib/pic/Makefile
 \family default
  to reflect your device.
  This might even improve performance for smaller devices as unneccesary
- BANKSELs migth be removed.
+ BANKSELs might be removed.
 \end_layout
 
 \begin_layout Subsection
-Known bugs
+Known Bugs
 \end_layout
 
 \begin_layout Subsubsection
-initialized data
+Function arguments
 \end_layout
 
 \begin_layout Standard
-Currently, data can only be initialized if it resides in the source file
- together with 
-\emph on
-main()
-\emph default
-.
- Data in other source files will silently 
-\series bold
-not
-\series default
- be initialized.
-\family typewriter
-\size footnotesize
+Functions with variable argument lists (like printf) are not yet supported.
+ Similarly, taking the argument of the first argument passed into a function
+ does not work: It is currently passed in WREG and has no address...
+\end_layout
 
-\begin_inset Marginal
-status collapsed
+\begin_layout Subsubsection
+Regression tests fail
+\end_layout
 
 \begin_layout Standard
-
-\series bold
-\InsetSpace ~
-!
+Though the small subset of regression tests in src/regression passes, SDCC
+ regression test suite does not, indicating that there are still major bugs
+ in the port.
+ However, many smaller projects have successfully used SDCC in the past...
 \end_layout
 
-\end_inset
-
+\begin_layout Standard
 
-\family default
+\size footnotesize
 
 \newpage
 
@@ -23005,262 +23740,53 @@ The PIC16
 \end_layout
 
 \begin_layout Standard
-The PIC16
-\begin_inset LatexCommand \index{PIC16}
-
-\end_inset
-
- port is the portion of SDCC that is responsible to produce code for the
- Microchip
+The PIC16 port adds support for Microchip
 \begin_inset LatexCommand \index{Microchip}
 
 \end_inset
 
-(TM) microcontrollers with 16 bit core.
- Currently this family of microcontrollers contains the PIC18Fxxx and PIC18Fxxxx.
- Currently supported devices are:
-\end_layout
-
-\begin_layout Standard
-\align center
-\begin_inset Tabular
-<lyxtabular version="3" rows="4" columns="6">
-<features>
-<column alignment="center" valignment="top" leftline="true" width="0">
-<column alignment="center" valignment="top" leftline="true" width="0">
-<column alignment="center" valignment="top" leftline="true" width="0">
-<column alignment="center" valignment="top" leftline="true" width="0">
-<column alignment="center" valignment="top" leftline="true" width="0">
-<column alignment="center" valignment="top" leftline="true" rightline="true" width="0">
-<row topline="true">
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-18F242
-\end_layout
 
+\begin_inset Formula $^{\text{TM}}$
 \end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
 
-\begin_layout Standard
-18F248
-\end_layout
+ PIC
+\begin_inset LatexCommand \index{PIC}
 
 \end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
 
-\begin_layout Standard
-18F252
-\end_layout
 
+\begin_inset Formula $^{\text{TM}}$
 \end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
 
-\begin_layout Standard
-18F258
+ MCUs with 16 bit wide instructions.
+ Currently this family of microcontrollers contains the PIC18Fxxx and PIC18Fxxxx
+; devices supported by the port include:
 \end_layout
 
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
 \begin_layout Standard
-18F442
+18F: 242, 248, 252, 258, 442, 448, 452, 458
 \end_layout
 
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-18F448
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row topline="true">
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-18F452
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-18F458
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-18F1220
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-18F2220
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-18F2550
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-18F4331
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row topline="true">
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-18F4455
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-18F6520
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-18F6620
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-18F6680
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-18F6720
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-18F8520
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row topline="true" bottomline="true">
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-18F8620
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
 \begin_layout Standard
-18F8680
+18F: 1220, 1320
 \end_layout
 
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
 \begin_layout Standard
-18F8720
+18F: 2220, 2221, 2320, 2321, 2331, 2431, 2455, 24j10, 2525, 2550, 25j10,
+ 2620
 \end_layout
 
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
 \begin_layout Standard
-
+18F: 4220, 4221, 4320, 4321, 4331, 4431, 4455, 44j10, 4520, 4525, 4550,
+ 45j10, 4620
 \end_layout
 
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
 \begin_layout Standard
-
+18F: 6520, 6620, 6680, 6720
 \end_layout
 
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
 \begin_layout Standard
-
-\end_layout
-
-\end_inset
-</cell>
-</row>
-</lyxtabular>
-
-\end_inset
-
-
+18F: 8520, 8620, 8680, 8720
 \end_layout
 
 \begin_layout Subsection
@@ -23273,8 +23799,7 @@ PIC16 port supports the standard command line arguments as supposed, with
  list:
 \end_layout
 
-\begin_layout List
-\labelwidthstring 00.00.0000
+\begin_layout Description
 -
 \begin_inset ERT
 status collapsed
@@ -23289,7 +23814,7 @@ status collapsed
 \end_inset
 
 -callee-saves
-\begin_inset LatexCommand \index{PIC16!Options!-\/-callee-saves}
+\begin_inset LatexCommand \index{PIC16!Options!-\\/-callee-saves}
 
 \end_inset
 
@@ -23309,8 +23834,7 @@ status collapsed
 -all-callee-saves
 \end_layout
 
-\begin_layout List
-\labelwidthstring 00.00.0000
+\begin_layout Description
 -
 \begin_inset ERT
 status collapsed
@@ -23325,7 +23849,7 @@ status collapsed
 \end_inset
 
 -fommit-frame-pointer
-\begin_inset LatexCommand \index{PIC16!Options!-\/-fommit-frame-pointer}
+\begin_inset LatexCommand \index{PIC16!Options!-\\/-fommit-frame-pointer}
 
 \end_inset
 
@@ -23342,20 +23866,31 @@ Port Specific Options
 \end_layout
 
 \begin_layout Standard
-The port specific options appear after the global options in the sdcc --help
- output.
+The port specific options appear after the global options in the sdcc -
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+/
+\end_layout
+
+\end_inset
+
+-help output.
 \end_layout
 
 \begin_layout Subsubsection
-General Options
+Code Generation Options
 \end_layout
 
 \begin_layout Standard
-General options enable certain port features and optimizations.
+These options influence the generated assembler code.
 \end_layout
 
-\begin_layout List
-\labelwidthstring 00.00.0000
+\begin_layout Description
 -
 \begin_inset ERT
 status collapsed
@@ -23370,7 +23905,7 @@ status collapsed
 \end_inset
 
 -pstack-model=[model] Used in conjuction with the command above.
- Defines the stack model to be used, valid stack models are : 
+ Defines the stack model to be used, valid stack models are:
 \end_layout
 
 \begin_deeper
@@ -23397,8 +23932,7 @@ large
 \end_layout
 
 \end_deeper
-\begin_layout List
-\labelwidthstring 00.00.0000
+\begin_layout Description
 -
 \begin_inset ERT
 status collapsed
@@ -23412,13 +23946,10 @@ status collapsed
 
 \end_inset
 
--preplace-udata-with=[kword] Replaces the default udata keyword for allocating
- unitialized data variables with [kword].
- Valid keywords are: "udata_acs", "udata_shr", "udata_ovr".
+-pno-banksel Do not generate BANKSEL assembler directives.
 \end_layout
 
-\begin_layout List
-\labelwidthstring 00.00.0000
+\begin_layout Description
 -
 \begin_inset ERT
 status collapsed
@@ -23432,12 +23963,15 @@ status collapsed
 
 \end_inset
 
--ivt-loc <nnnn> positions the Interrupt Vector Table at location <nnnn>.
- Useful for bootloaders.
+-extended Enable extended instruction set/literal offset addressing mode.
+ Use with care!
 \end_layout
 
-\begin_layout List
-\labelwidthstring 00.00.0000
+\begin_layout Subsubsection
+Optimization Options
+\end_layout
+
+\begin_layout Description
 -
 \begin_inset ERT
 status collapsed
@@ -23451,11 +23985,37 @@ status collapsed
 
 \end_inset
 
--asm= sets the full path and name of an external assembler to call.
+-obanksel=n Set optimization level for inserting BANKSELs.
+\newline
+
+\end_layout
+
+\begin_deeper
+\begin_layout List
+\labelwidthstring 00.00.0000
+0 no optimization
+\end_layout
+
+\begin_layout List
+\labelwidthstring 00.00.0000
+1 checks previous used register and if it is the same then does not emit
+ BANKSEL, accounts only for labels.
 \end_layout
 
 \begin_layout List
 \labelwidthstring 00.00.0000
+2 tries to check the location of (even different) symbols and removes BANKSELs
+ if they are in the same bank.
+\newline
+
+\emph on
+Important: There might be problems if the linker script has data sections
+ across bank borders!
+\end_layout
+
+\end_deeper
+\begin_layout Description
 -
 \begin_inset ERT
 status collapsed
@@ -23469,11 +24029,11 @@ status collapsed
 
 \end_inset
 
--link= sets the full path and name of an external linker to call.
+-denable-peeps Force the usage of peepholes.
+ Use with care.
 \end_layout
 
-\begin_layout List
-\labelwidthstring 00.00.0000
+\begin_layout Description
 -
 \begin_inset ERT
 status collapsed
@@ -23487,21 +24047,27 @@ status collapsed
 
 \end_inset
 
--mplab-comp MPLAB
-\begin_inset LatexCommand \index{PIC16!MPLAB}
+-optimize-goto Try to use (conditional) BRA instead of GOTO.
+\end_layout
 
-\end_inset
+\begin_layout Description
+-
+\begin_inset ERT
+status collapsed
 
- compatibility option.
- Currently only suppresses special gpasm directives.
+\begin_layout Standard
+
+
+\backslash
+/
 \end_layout
 
-\begin_layout Subsubsection
-Optimization Options
+\end_inset
+
+-optimize-cmp Try to optimize some compares.
 \end_layout
 
-\begin_layout List
-\labelwidthstring 00.00.0000
+\begin_layout Description
 -
 \begin_inset ERT
 status collapsed
@@ -23515,11 +24081,14 @@ status collapsed
 
 \end_inset
 
--optimize-goto Try to use (conditional) BRA instead of GOTO
+-optimize-df Analyze the dataflow of the generated code and improve it.
 \end_layout
 
-\begin_layout List
-\labelwidthstring 00.00.0000
+\begin_layout Subsubsection
+Assembling Options
+\end_layout
+
+\begin_layout Description
 -
 \begin_inset ERT
 status collapsed
@@ -23533,11 +24102,10 @@ status collapsed
 
 \end_inset
 
--optimize-cmp Try to optimize some compares.
+-asm= Sets the full path and name of an external assembler to call.
 \end_layout
 
-\begin_layout List
-\labelwidthstring 00.00.0000
+\begin_layout Description
 -
 \begin_inset ERT
 status collapsed
@@ -23551,11 +24119,20 @@ status collapsed
 
 \end_inset
 
--optimize-df Analyze the dataflow of the generated code and improve it.
+-mplab-comp MPLAB
+\begin_inset LatexCommand \index{PIC16!MPLAB}
+
+\end_inset
+
+ compatibility option.
+ Currently only suppresses special gpasm directives.
 \end_layout
 
-\begin_layout List
-\labelwidthstring 00.00.0000
+\begin_layout Subsubsection
+Linking Options
+\end_layout
+
+\begin_layout Description
 -
 \begin_inset ERT
 status collapsed
@@ -23569,42 +24146,51 @@ status collapsed
 
 \end_inset
 
--obanksel=nn Set optimization level for inserting BANKSELs.
-\newline
-
+-link= Sets the full path and name of an external linker to call.
 \end_layout
 
-\begin_deeper
-\begin_layout List
-\labelwidthstring 00.00.0000
-0 no optimization
+\begin_layout Description
+-
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+/
 \end_layout
 
-\begin_layout List
-\labelwidthstring 00.00.0000
-1 checks previous used register and if it is the same then does not emit
- BANKSEL, accounts only for labels.
+\end_inset
+
+-preplace-udata-with=[kword] Replaces the default udata keyword for allocating
+ unitialized data variables with [kword].
+ Valid keywords are: "udata_acs", "udata_shr", "udata_ovr".
 \end_layout
 
-\begin_layout List
-\labelwidthstring 00.00.0000
-2 tries to check the location of (even different) symbols and removes BANKSELs
- if they are in the same bank.
-\newline
+\begin_layout Description
+-
+\begin_inset ERT
+status collapsed
 
-\emph on
-Important: There might be problems if the linker script has data sections
- across bank borders!
+\begin_layout Standard
+
+
+\backslash
+/
 \end_layout
 
-\end_deeper
-\begin_layout Subsubsection
-Linking Options
+\end_inset
+
+-ivt-loc=n Place the interrupt vector table at address 
+\emph on
+n
+\emph default
+.
+ Useful for bootloaders.
 \end_layout
 
-\begin_layout List
-\labelwidthstring 00.00.0000
+\begin_layout Description
 -
 \begin_inset ERT
 status collapsed
@@ -23618,11 +24204,10 @@ status collapsed
 
 \end_inset
 
--nodefaultlibs do not link default libraries when linking
+-nodefaultlibs Do not link default libraries when linking.
 \end_layout
 
-\begin_layout List
-\labelwidthstring 00.00.0000
+\begin_layout Description
 -
 \begin_inset ERT
 status collapsed
@@ -23636,11 +24221,10 @@ status collapsed
 
 \end_inset
 
--no-crt Don't link the default run-time modules
+-use-crt= Use a custom run-time module instead of the defaults.
 \end_layout
 
-\begin_layout List
-\labelwidthstring 00.00.0000
+\begin_layout Description
 -
 \begin_inset ERT
 status collapsed
@@ -23654,7 +24238,7 @@ status collapsed
 
 \end_inset
 
--use-crt= Use a custom run-time module instead of the defaults.
+-no-crt Don't link the default run-time modules
 \end_layout
 
 \begin_layout Subsubsection
@@ -23665,8 +24249,7 @@ Debugging Options
 Debugging options enable extra debugging information in the output files.
 \end_layout
 
-\begin_layout List
-\labelwidthstring 00.00.0000
+\begin_layout Description
 -
 \begin_inset ERT
 status collapsed
@@ -23694,15 +24277,14 @@ status collapsed
 \end_inset
 
 -debug
-\begin_inset LatexCommand \index{-\/-debug}
+\begin_inset LatexCommand \index{-\\/-debug}
 
 \end_inset
 
 , but dumps more information.
 \end_layout
 
-\begin_layout List
-\labelwidthstring 00.00.0000
+\begin_layout Description
 -
 \begin_inset ERT
 status collapsed
@@ -23718,11 +24300,10 @@ status collapsed
 
 -debug-ralloc Force register allocator to dump <source>.d file with debugging
  information.
- <source> is the name of the file compiled.
+ <source> is the name of the file being compiled.
 \end_layout
 
-\begin_layout List
-\labelwidthstring 00.00.0000
+\begin_layout Description
 -
 \begin_inset ERT
 status collapsed
@@ -23739,8 +24320,7 @@ status collapsed
 -pcode-verbose Enable pcode debugging information in translation.
 \end_layout
 
-\begin_layout List
-\labelwidthstring 00.00.0000
+\begin_layout Description
 -
 \begin_inset ERT
 status collapsed
@@ -23754,12 +24334,10 @@ status collapsed
 
 \end_inset
 
--denable-peeps Force the usage of peepholes.
- Use with care.
+-calltree Dump call tree in .calltree file.
 \end_layout
 
-\begin_layout List
-\labelwidthstring 00.00.0000
+\begin_layout Description
 -
 \begin_inset ERT
 status collapsed
@@ -23773,29 +24351,11 @@ status collapsed
 
 \end_inset
 
--gstack Trace push/pops for stack pointer overflow
-\end_layout
-
-\begin_layout List
-\labelwidthstring 00.00.0000
--
-\begin_inset ERT
-status collapsed
-
-\begin_layout Standard
-
-
-\backslash
-/
-\end_layout
-
-\end_inset
-
--call-tree dump call tree in .calltree file
+-gstack Trace push/pops for stack pointer overflow.
 \end_layout
 
 \begin_layout Subsection
-Enviromental Variables
+Enviroment Variables
 \end_layout
 
 \begin_layout Standard
@@ -23809,26 +24369,24 @@ abled at will.
 Currently there is only two such variables available:
 \end_layout
 
-\begin_layout List
-\labelwidthstring 00.00.0000
-OPTIMIZE_BITFIELD_POINTER_GET when this variable exists reading of structure
+\begin_layout Description
+OPTIMIZE_BITFIELD_POINTER_GET When this variable exists, reading of structure
  bitfields is optimized by directly loading FSR0 with the address of the
  bitfield structure.
  Normally SDCC will cast the bitfield structure to a bitfield pointer and
  then load FSR0.
- This step saves data ram and code space for functions that perform heavy
use of bitfields.
- (ie.
80 bytes of code space are saved when compiling malloc.c with this option).
+ This step saves data ram and code space for functions that make heavy use
+ of bitfields.
+ (i.e., 80 bytes of code space are saved when compiling malloc.c with this
+ option).
  
 \end_layout
 
-\begin_layout List
-\labelwidthstring 00.00.0000
-NO_REG_OPT do not perform pCode registers optimization.
+\begin_layout Description
+NO_REG_OPT Do not perform pCode registers optimization.
  This should be used for debugging purposes.
- In some where bugs in the pcode optimizer are found, users can benefit
from temporarily disabling the optimizer until the bug is fixed.
+ If bugs in the pcode optimizer are found, users can benefit from temporarily
+ disabling the optimizer until the bug is fixed.
 \end_layout
 
 \begin_layout Subsection
@@ -24268,7 +24826,7 @@ Pragmas
 \end_layout
 
 \begin_layout Standard
-PIC16
+The PIC16
 \begin_inset LatexCommand \index{PIC16}
 
 \end_inset
@@ -24276,21 +24834,15 @@ PIC16
  port currently supports the following pragmas:
 \end_layout
 
-\begin_layout List
-\labelwidthstring 00.00.0000
+\begin_layout Description
 stack
-\begin_inset LatexCommand \index{PIC16!Pragmas!\#pragma stack}
+\begin_inset LatexCommand \index{PIC16!Pragmas!\\#pragma stack}
 
 \end_inset
 
- pragma stack
-\begin_inset LatexCommand \index{PIC16!stack}
-
-\end_inset
-
- forces the code generator to initialize the stack & frame pointers at a
- specific address.
- This is an adhoc solution for cases where no STACK directive is available
+ This forces the code generator to initialize the stack & frame pointers
+ at a specific address.
+ This is an ad hoc solution for cases where no STACK directive is available
  in the linker script or gplink is not instructed to create a stack section.
 \newline
 The
@@ -24313,10 +24865,14 @@ The old format (ie.
 
 \newline
 The format is as follows:
+\newline
+
 \end_layout
 
 \begin_layout LyX-Code
 #pragma stack bottom_address [stack_size]
+\newline
+
 \end_layout
 
 \begin_layout Standard
@@ -24351,14 +24907,13 @@ If the stack_size field is omitted then a stack is created with the default
  with deep function nesting or excessive stack usage.
 \end_layout
 
-\begin_layout List
-\labelwidthstring 00.00.0000
+\begin_layout Description
 code
-\begin_inset LatexCommand \index{PIC16!Pragmas!\#pragma code}
+\begin_inset LatexCommand \index{PIC16!Pragmas!\\#pragma code}
 
 \end_inset
 
- place a function symbol at static FLASH address
+ Force a function to a static FLASH address.
 \end_layout
 
 \begin_layout LyX-Code
@@ -24381,8 +24936,7 @@ Example:
 
 \end_layout
 
-\begin_layout List
-\labelwidthstring 00.00.0000
+\begin_layout Description
 library instructs the linker to use a library module.
 \newline
 Usage:
@@ -24632,10 +25186,9 @@ ignore
  keyword will reject all modules specified by the library pragma.
 \end_layout
 
-\begin_layout List
-\labelwidthstring 00.00.0000
-udata pragma udata instructs the compiler to emit code so that linker will
- place a variable at a specific memory bank
+\begin_layout Description
+udata The pragma udata instructs the compiler to emit code so that linker
+ will place a variable at a specific memory bank.
 \end_layout
 
 \begin_layout LyX-Code
@@ -24925,6 +25478,118 @@ device/lib/pic16/pics.build
 make lib-io
 \end_layout
 
+\begin_layout Subsection
+Adding New Devices to the Port
+\end_layout
+
+\begin_layout Standard
+Adding support for a new 16
+\begin_inset ERT
+status open
+
+\begin_layout Standard
+
+
+\backslash
+,
+\end_layout
+
+\end_inset
+
+bit PIC MCU requires the following steps:
+\end_layout
+
+\begin_layout Enumerate
+Create picDEVICE.c and picDEVICE.h from pDEVICE.inc using
+\newline
+
+\family typewriter
+perl /path/to/sdcc/support/scripts/inc2h-pic16.pl /path/to/gputils/header/pDEVICE.
+inc
+\end_layout
+
+\begin_layout Enumerate
+
+\family typewriter
+mv picDEVICE.h /path/to/sdcc/device/include/pic16
+\end_layout
+
+\begin_layout Enumerate
+
+\family typewriter
+mv picDEVICE.c /path/to/sdcc/device/lib/pic16/libdev
+\end_layout
+
+\begin_layout Enumerate
+Add DEVICE to 
+\family typewriter
+/path/to/sdcc/device/lib/pics.all
+\family default
+ (and 
+\family typewriter
+.build
+\family default
+).
+\newline
+Note: No 18f prefix here!
+\end_layout
+
+\begin_layout Enumerate
+Adjust 
+\family typewriter
+/path/to/sdcc/device/lib/pic16/libio/*.ignore
+\family default
+
+\newline
+Add your DEVICE if it does not compile in 
+\family typewriter
+adc
+\family default
+, 
+\family typewriter
+i2c
+\family default
+, or 
+\family typewriter
+usart
+\family default
+.
+\end_layout
+
+\begin_layout Enumerate
+Edit 
+\family typewriter
+/path/to/sdcc/device/include/pic16/pic18fregs.h
+\family default
+.
+ The file format is self-explanatory, just add
+\newline
+
+\family typewriter
+#elif defined(picDEVICE)
+\newline
+# include <picDEVICE.h>
+\family default
+
+\newline
+at the right place (keep it sorted).
+\end_layout
+
+\begin_layout Enumerate
+Edit 
+\family typewriter
+/path/to/sdcc/src/pic16/devices.inc
+\family default
+.
+ Copy and modify an existing entry and insert it at the correct place (keep
+ the file sorted).
+ The file is hardly documented, look at the entries for the 18f2221...
+\end_layout
+
+\begin_layout Enumerate
+Recompile SDCC, including the pic16 libraries.
+\end_layout
+
 \begin_layout Subsection
 Memory Models
 \end_layout
@@ -25089,13 +25754,11 @@ The stack
  FSR2.
 \end_layout
 
-\begin_layout List
-\labelwidthstring 00.00.0000
+\begin_layout Description
 FSR1 is assigned as stack pointer
 \end_layout
 
-\begin_layout List
-\labelwidthstring 00.00.0000
+\begin_layout Description
 FSR2 is assigned as frame pointer
 \end_layout
 
@@ -25279,8 +25942,7 @@ In addition to the standard SDCC function keywords, PIC16
  port makes available two more:
 \end_layout
 
-\begin_layout List
-\labelwidthstring 00.00.0000
+\begin_layout Description
 wparam
 \begin_inset LatexCommand \index{PIC16!wparam}
 
@@ -25318,8 +25980,7 @@ void func_wparam(int a) wparam
 }
 \end_layout
 
-\begin_layout List
-\labelwidthstring 00.00.0000
+\begin_layout Description
 shadowregs
 \begin_inset LatexCommand \index{PIC16!shadowregs}
 
@@ -25729,7 +26390,7 @@ not
  Address of the specific interrupt.
  This is not a problem for the LOW priority interrupts, but it is a problem
  for the RESET and the HIGH priority interrupts because code may be written
- at the next interrupt´s vector address and cause undeterminate program
+ at the next interrupt's vector address and cause undeterminate program
  behaviour if that interrupt is raised.
 \begin_inset Foot
 status open
@@ -25747,7 +26408,7 @@ disabled
 \end_layout
 
 \begin_layout Enumerate
-when the ISR is small enough not to reach the next interrupt´s vector address.
+when the ISR is small enough not to reach the next interrupt's vector address.
 \end_layout
 
 \end_inset
@@ -25760,7 +26421,7 @@ when the ISR is small enough not to reach the next interrupt
 \emph on
 n
 \emph default
is possible to be omitted.
may be omitted.
  This way a function is generated similar to an ISR, but it is not assigned
  to any interrupt.
 \end_layout
@@ -26131,9 +26792,9 @@ extern FILE * stdout;
 The FILE type is actually a generic pointer which defines one more type
  of generic pointers, the 
 \emph on
-stream 
+stream
 \emph default
-pointer.
+ pointer.
  This new type has the format:
 \end_layout
 
@@ -26478,8 +27139,7 @@ In the libc library there exist the functions that are used to write to
  These are
 \end_layout
 
-\begin_layout List
-\labelwidthstring 00.00.0000
+\begin_layout Description
 _
 \begin_inset ERT
 status collapsed
@@ -26496,8 +27156,7 @@ status collapsed
 _stream_usart_putchar writes a character at the USART stream
 \end_layout
 
-\begin_layout List
-\labelwidthstring 00.00.0000
+\begin_layout Description
 _
 \begin_inset ERT
 status collapsed
@@ -26514,8 +27173,7 @@ status collapsed
 _stream_mssp_putchar writes a character at the MSSP stream
 \end_layout
 
-\begin_layout List
-\labelwidthstring 00.00.0000
+\begin_layout Description
 putchar dummy function.
  This writes a character to a user specified manner.
 \end_layout
@@ -26523,9 +27181,9 @@ putchar dummy function.
 \begin_layout Standard
 In order to increase performance 
 \emph on
-putchar 
+putchar
 \emph default
-is declared in stdio.h as having its parameter in WREG (it has the wparam
+ is declared in stdio.h as having its parameter in WREG (it has the wparam
  keyword).
  In stdio.h exists the macro PUTCHAR(arg) that defines the putchar function
  in a user-friendly way.
@@ -26576,9 +27234,17 @@ void main(void)
 \end_layout
 
 \begin_layout LyX-Code
-    printf (¨This is a printf test
+    printf (
+\begin_inset Quotes sld
+\end_inset
+
+This is a printf test
 \backslash
-n¨);
+n
+\begin_inset Quotes srd
+\end_inset
+
+);
 \end_layout
 
 \begin_layout LyX-Code
@@ -26633,9 +27299,9 @@ extern unsigned int vfprintf(FILE *fp, char *fmt, va_list ap);
 \begin_layout Standard
 For sprintf and vsprintf 
 \emph on
-buf 
+buf
 \emph default
-should normally be a data pointer where the resulting string will be placed.
+ should normally be a data pointer where the resulting string will be placed.
  No range checking is done so the user should allocate the necessery buffer.
  For fprintf and vfprintf 
 \emph on
@@ -27143,9 +27809,9 @@ Additionally there are two more macros to simplify the declaration of the
 \labelwidthstring 00.00.0000
 
 \series medium
-SIGHANDLER(handler) 
+SIGHANDLER(handler)
 \series default
-this declares the function prototype for the 
+ this declares the function prototype for the 
 \emph on
 handler
 \emph default
@@ -27303,7 +27969,7 @@ status collapsed
 \end_layout
 
 \begin_layout Subsection
-Known bugs
+Known Bugs
 \end_layout
 
 \begin_layout Standard
@@ -27658,7 +28324,7 @@ status collapsed
 \end_inset
 
 -debug
-\begin_inset LatexCommand \index{-\/-debug}
+\begin_inset LatexCommand \index{-\\/-debug}
 
 \end_inset
 
@@ -28190,9 +28856,9 @@ ion is complete.
 \newline
 
 \family typewriter
-(load-file sdcdbsrc.el) 
+(load-file sdcdbsrc.el)
 \family default
-
 \newline
 
 \newline
@@ -29322,16 +29988,16 @@ int
  more often than other compilers.
  Eventually insert explicit casts to 
 \family typewriter
-(char) 
+(char)
 \family default
-or
+ or 
 \family typewriter
- (unsigned char)
+(unsigned char)
 \family default
 .
  Also check that the ~\InsetSpace ~
 operator
-\begin_inset LatexCommand \index{\~\/ Operator}
+\begin_inset LatexCommand \index{\\~\\/ Operator}
 
 \end_inset
 
@@ -29371,7 +30037,7 @@ check whether timing loops result in proper timing (or preferably consider
 
 \begin_layout Itemize
 check for differences in printf parameters (some compilers push (va_arg
-\begin_inset LatexCommand \index{vararg, va\_arg}
+\begin_inset LatexCommand \index{vararg, va\\_arg}
 
 \end_inset
 
@@ -29930,9 +30596,9 @@ SDCC Compiler User Guide
 \begin_inset Text
 
 \begin_layout Standard
-You're reading it right now
+You're reading it right now 
 \emph on
- \InsetSpace ~
+\InsetSpace ~
 \InsetSpace ~
 \InsetSpace ~
 
@@ -29966,9 +30632,9 @@ Changelog of SDCC
 \begin_inset Text
 
 \begin_layout Standard
-sdcc/Changelog
+sdcc/Changelog 
 \emph on
- \InsetSpace ~
+\InsetSpace ~
 \InsetSpace ~
 \InsetSpace ~
 
@@ -30294,9 +30960,9 @@ cdbfileformat.pd
 \emph default
 \bar default
 \noun default
-f
+f 
 \emph on
- \InsetSpace ~
+\InsetSpace ~
 \InsetSpace ~
 \InsetSpace ~
 
@@ -31636,7 +32302,7 @@ status collapsed
 \end_inset
 
 -dumpall
-\begin_inset LatexCommand \index{-\/-dumpall}
+\begin_inset LatexCommand \index{-\\/-dumpall}
 
 \end_inset
 
@@ -31802,10 +32468,9 @@ diff -u sourcefile.c.orig sourcefile.c >my_changes.patch
 \end_inset
 
 
-\series default
 \family default
-will do.
+\series default
+ will do.
 \end_layout
 
 \begin_layout Section
@@ -31879,7 +32544,24 @@ Subversion Source Code Repository
 The output of 
 \family sans
 \series bold
-sdcc --version
+sdcc -
+\family default
+
+\begin_inset ERT
+status open
+
+\begin_layout Standard
+
+
+\backslash
+/
+\end_layout
+
+\end_inset
+
+
+\family sans
+-version
 \family default
 \series default
  or the filenames of the snapshot versions of SDCC include date and its
@@ -31936,18 +32618,18 @@ Historically there often were long delays between official releases and
 \end_inset
 
 .
A release wiki
The SDCC Wiki
 \begin_inset LatexCommand \index{wiki}
 
 \end_inset
 
 
-\begin_inset LatexCommand \index{Release wiki}
+\begin_inset LatexCommand \index{SDCC Wiki}
 
 \end_inset
 
  at 
-\begin_inset LatexCommand \url{http://sdcc.sf.net/release_wiki/}
+\begin_inset LatexCommand \url{http://sdcc.wiki.sourceforge.net/}
 
 \end_inset
 
@@ -31967,18 +32649,18 @@ Examples
 You'll find some small examples in the directory 
 \emph on
 sdcc/device/examples/.
+
 \emph default
-More examples and libraries are available at
+ More examples and libraries are available at 
 \emph on
- The SDCC Open Knowledge Resource 
+The SDCC Open Knowledge Resource 
 \begin_inset LatexCommand \url{http://sdccokr.dl9sec.de/}
 
 \end_inset
 
+
 \emph default
-web site or at 
+ web site or at 
 \begin_inset LatexCommand \url{http://www.pjrc.com/tech/8051/}
 
 \end_inset
@@ -32107,7 +32789,7 @@ make test-mcs51
 \end_layout
 
 \begin_layout Standard
-The 14bit pic port uses a different set of regression tests 
+The PIC14 port uses a different set of regression tests 
 \begin_inset LatexCommand \index{Regression test (PIC14)}
 
 \end_inset
@@ -32521,9 +33203,9 @@ Two types of loop optimizations are done by SDCC
 \emph on
 loop invariant
 \emph default
- lifting and
+ lifting and 
 \emph on
- strength reduction
+strength reduction
 \emph default
  of loop induction variables.
  In addition to the strength reduction the optimizer marks the induction
@@ -32559,7 +33241,7 @@ status collapsed
 
 -noinduction option) or for a given function only using #pragma\InsetSpace ~
 noinduction
-\begin_inset LatexCommand \index{\#pragma noinduction}
+\begin_inset LatexCommand \index{\\#pragma noinduction}
 
 \end_inset
 
@@ -33432,7 +34114,7 @@ There might be reasons which SDCC cannot know about to either favour or
 
 \begin_layout Standard
 The pragma nojtbound
-\begin_inset LatexCommand \index{\#pragma nojtbound}
+\begin_inset LatexCommand \index{\\#pragma nojtbound}
 
 \end_inset
 
@@ -33595,9 +34277,9 @@ char i;\InsetSpace ~
 ...
  
 \newline
-i = ((i << 1) | (i >> 7)); 
+i = ((i << 1) | (i >> 7));
 \family default
-
 \newline
 
 \family typewriter
@@ -33670,9 +34352,9 @@ int j;
 ...
  
 \newline
-i = ((i << 4) | (i >> 4)); 
+i = ((i << 4) | (i >> 4));
 \family default
-
 \newline
 
 \family typewriter
@@ -33728,11 +34410,7 @@ dptr
 
 \end_inset
 
--datapointer
-\emph on
-\emph default
-so little-endian is the more efficient byte order.
+-datapointer so little-endian is the more efficient byte order.
 \end_layout
 
 \end_inset
@@ -34967,7 +35645,7 @@ status collapsed
 \end_inset
 
 -peep-file
-\begin_inset LatexCommand \index{-\/-peep-file}
+\begin_inset LatexCommand \index{-\\/-peep-file}
 
 \end_inset
 
@@ -35107,6 +35785,34 @@ replace { lcall %1 } by { acall %1 }
 replace { ljmp %1 } by { ajmp %1 }
 \end_layout
 
+\begin_layout Standard
+(NOTE: from version 2.7.3 on, you can use option -
+\emph on
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+/
+\end_layout
+
+\end_inset
+
+
+\emph default
+-acall-ajmp
+\begin_inset LatexCommand \index{ajmp}
+
+\end_inset
+
+, which also takes care of aligning the interrupt vectors properly.)
+\newline
+
+\end_layout
+
 \begin_layout Standard
 The 
 \emph on
@@ -35332,11 +36038,11 @@ g the variable bindings is passed as a parameter).
  Currently implemented are 
 \emph on
 labelInRange, labelRefCount, labelIsReturnOnly, operandsNotSame, xramMovcOption,
- 24bitMode, portIsDS390, 24bitModeAndPortDS390 
+ 24bitMode, portIsDS390, 24bitModeAndPortDS390
 \emph default
-and
+ and 
 \emph on
- notVolatile
+notVolatile
 \emph default
 .
 \end_layout
@@ -35417,7 +36123,7 @@ status collapsed
 \end_inset
 
 -stack-auto
-\begin_inset LatexCommand \index{-\/-stack-auto}
+\begin_inset LatexCommand \index{-\\/-stack-auto}
 
 \end_inset
 
@@ -35484,12 +36190,18 @@ s1 = s2 ; /* is invalid in SDCC although allowed in ANSI */
 
 \series bold
 struct
+\family default
 \series default
- s foo1 (
+\family typewriter
+s foo1 (
 \series bold
 struct
+\family default
 \series default
- s parms) /* invalid in SDCC although allowed in ANSI */
+\family typewriter
+s parms) /* invalid in SDCC although allowed in ANSI */
 \newline
 { 
 \newline
@@ -35567,7 +36279,7 @@ not supported.
 
 \begin_layout Itemize
 Old K&R style
-\begin_inset LatexCommand \index{K\&R style}
+\begin_inset LatexCommand \index{K\\&R style}
 
 \end_inset
 
@@ -35580,7 +36292,7 @@ Old K&R style
 \family typewriter
 foo(i,j) /* this old style of function declarations */ 
 \newline
-int i,j; /* are valid
+int i,j; /* is valid
  in ANSI but not valid in SDCC */ 
 \newline
 { 
@@ -35597,7 +36309,27 @@ int i,j; /* are valid
 
 \end_deeper
 \begin_layout Itemize
-Most enhancements in C99 are not supported, f.e.:
+Most enhancements in C99 are not supported, e.g.:
+\end_layout
+
+\begin_deeper
+\begin_layout Verse
+
+\family typewriter
+for (
+\series bold
+int
+\family default
+\series default
+\family typewriter
+i=0; i<10; i++) /* is invalid in SDCC although allowed in C99 */
+\end_layout
+
+\end_deeper
+\begin_layout Itemize
+But some have been added recently in SDCC 2.7.0.
+ They must be considered alpha quality however.
 \end_layout
 
 \begin_deeper
@@ -35611,22 +36343,29 @@ inline
 \end_inset
 
 
+\family default
 \series default
- int increment (int a) { return a+1; } /* is invalid in SDCC although allowed
- in C99.
- An empty define 
-\emph on
-#define inline
-\emph default
- can be used as a work around */
-\newline
-
+\family typewriter
+int increment (int a) { return a+1; } /* inlines the increment without function
+ call overhead */
 \newline
-for (
+int *
+\family default
+\family typewriter
 \series bold
-int
+restrict
+\begin_inset LatexCommand \index{inline (not supported)}
+
+\end_inset
+
+
+\family default
 \series default
- i=0; i<10; i++) /* is invalid in SDCC although allowed in C99 */
+\family typewriter
+p; /* accepted but ignored */
 \end_layout
 
 \end_deeper
@@ -35648,7 +36387,7 @@ status collapsed
 \end_inset
 
 -std-c89
-\begin_inset LatexCommand \index{-\/-std-c89}
+\begin_inset LatexCommand \index{-\\/-std-c89}
 
 \end_inset
 
@@ -35666,7 +36405,7 @@ status collapsed
 \end_inset
 
 -std-c99
-\begin_inset LatexCommand \index{-\/-std-c99}
+\begin_inset LatexCommand \index{-\\/-std-c99}
 
 \end_inset
 
@@ -35680,7 +36419,7 @@ t', 'near', 'nonbanked', 'pdata', 'reentrant', 'sbit', 'sfr', 'shadowregs',
  '_naked'.
  Compliant equivalents of these keywords are always available in a form
  that begin with two underscores
-\begin_inset LatexCommand \index{\_\_ (prefix for extended keywords)}
+\begin_inset LatexCommand \index{\\_\\_ (prefix for extended keywords)}
 
 \end_inset
 
@@ -35846,13 +36585,13 @@ As mentioned in the optimization section the peep-hole optimizer is rule
 \end_layout
 
 \begin_layout Standard
-More information is available in a wiki
+More information is available on SDCC Wiki
 \begin_inset LatexCommand \index{wiki}
 
 \end_inset
 
  (preliminary link 
-\begin_inset LatexCommand \url{http://sdcc.sourceforge.net/release_wiki/index.php?page=SDCC+internals+and+porting}
+\begin_inset LatexCommand \url{http://sdcc.wiki.sourceforge.net/SDCC+internals+and+porting}
 
 \end_inset
 
@@ -35886,8 +36625,11 @@ The anatomy of the compiler
 
 \shape italic
 This is an excerpt from an article published in Circuit Cellar Magazine
- in 
+ in
+\shape default
 \series bold
+\shape italic
 August 2000
 \series default
 .
@@ -37870,12 +38612,21 @@ None
 \shape slanted
 \size footnotesize
 see f.e.
+
+\shape default
  
 \family typewriter
+\shape slanted
 gen51Code()
 \family default
- in 
+\shape default
+\shape slanted
+in
+\shape default
 \family typewriter
+\shape slanted
 src/mcs51/gen.c
 \end_layout
 
@@ -39359,38 +40110,23 @@ Thanks to all the other volunteer developers who have helped with coding,
 \newline
 
 \emph on
-Also thanks to Sourceforge 
+Thanks to Sourceforge 
 \begin_inset LatexCommand \url{http://www.sf.net}
 
 \end_inset
 
  which has hosted the project since 1999 and donates significant download
- bandwidth and probably more than 
-\begin_inset ERT
-status collapsed
-
-\begin_layout Standard
-
-$10^{13}$
-\end_layout
-
-\end_inset
+ bandwidth.
+\emph default
 
-CPU cycles per day.
 \newline
-\begin_inset Note Note
-status open
 
-\begin_layout Standard
-more than 10^13 is an estimate: on my Athlon 2800+ it takes about (0.5+6.5+20)
- minutes for (configure+make+regression test), and there is (i386, amd64,
- alpha, ppc64, (mingw32), sparc, Mac OS X).
-\end_layout
-
-\end_inset
+\newline
 
+\emph on
+Also thanks to all SDCC Distributed Compile Farm members for donating CPU
+ cycles and bandwidth for snapshot builds.
+\newline
 
 \end_layout