Index: wiki/BuildInstructions.wiki
===================================================================
--- wiki/BuildInstructions.wiki	(revision 385)
+++ wiki/BuildInstructions.wiki	(revision 387)
@@ -8,5 +8,5 @@
 = Programs needed =
 
-  * [http://tortoisesvn.tigris.org/ TortoiseSVN]
+  * [http://tortoisesvn.tigris.org/ TortoiseSVN] (or any SVN client)
   * [http://tdm-gcc.tdragon.net/ MinGW] (only mingw32-make.exe is needed)
   * [http://www.nasm.us/ NASM]
@@ -72,5 +72,87 @@
 == Including and excluding optional modules ==
 
-This will be done soon.
+There are few optional modules (most of them are included in official release builds). Reason for modules is simple: it is not possible to get all features to fit in 8k ROM. Official builds are designed so that they include the features most users prefer.
+
+It is easy to include and exclude modules but it must be done by editing makefile. Makefile specifies how the binaries are build when you execute _mingw32-make_.
+
+Open makefile with Windows Notepad (or [http://notepad-plus-plus.org/ Notepad++]). You will now see all the modules and short description about them. When writing this, the makefile looks like below:
+{{{
+##################################################################################################
+# Makefile to build XTIDE Universal BIOS.                                                        #
+#                                                                                                #
+# Valid makefile targets are:                                                                    #
+# all       Removes existing files and builds binary files in \Build                             #
+# small     Builds 8 kiB binaries only (without checksum)                                        #
+# large     Builds 15 kiB binaries only (without checksum)                                       #
+# clean     Removes all files from \Build                                                        #
+# checksum* Builds all and then generates checksum byte to all binary files                      #
+# strings*  Compress src\Strings.asm to src\StringsCompressed.asm                                #
+#                                                                                                #
+# * at the end of target name means that Perl is required for the job.                           #
+# Build directory must be created manually if it does not exist.                                 #
+#                                                                                                #
+#                                                                                                #
+# Following modules can be included or excluded:                                                 #
+# MODULE_ADVANCED_ATA       Native support for some VLB IDE controllers                          #
+# MODULE_BOOT_MENU          Boot Menu for selection of drive to boot from                        #
+# MODULE_EBIOS              Enhanced functions for accessing drives over 8.4 GB                  #
+# MODULE_JRIDE              Support for JR-IDE/ISA                                               #
+# MODULE_SERIAL             Virtual hard disks using serial port                                 #
+# MODULE_SERIAL_FLOPPY      Virtual floppy drives using serial port (requires MODULE_SERIAL)     #
+# MODULE_STRINGS_COMPRESSED Use compressed strings to save space                                 #
+#                                                                                                #
+# Not modules but these affect the assembly:                                                     #
+# ELIMINATE_CGA_SNOW        Prevents CGA snowing at the cost of a few bytes                      #
+# USE_186                   Use instructions supported by 80188/80186 and V20/V30 and later      #
+# USE_286                   Use instructions supported by 286 and later                          #
+# USE_386                   Use instructions supported by 386 and later                          #
+# USE_AT                    Use features supported on AT and later systems (not available on XT) #
+#                                                                                                #
+##################################################################################################
+}}}
+
+I'm sure there will be more modules in the future so always read up to date makefile for all available modules.
+
+Scroll down the makefile to find Assembler preprocessor defines and other variables:
+{{{
+#################################################################
+# Assembler preprocessor defines.                               #
+#################################################################
+DEFINES_COMMON = MODULE_BOOT_MENU MODULE_EBIOS MODULE_STRINGS_COMPRESSED
+
+DEFINES_XT = ELIMINATE_CGA_SNOW MODULE_SERIAL MODULE_SERIAL_FLOPPY
+DEFINES_XTPLUS = ELIMINATE_CGA_SNOW USE_186 MODULE_SERIAL MODULE_SERIAL_FLOPPY
+DEFINES_AT = USE_286 USE_AT MODULE_SERIAL MODULE_SERIAL_FLOPPY
+
+DEFINES_XT_LARGE = $(DEFINES_XT) MODULE_JRIDE MODULE_ADVANCED_ATA
+DEFINES_XTPLUS_LARGE = $(DEFINES_XTPLUS) MODULE_JRIDE MODULE_ADVANCED_ATA
+DEFINES_AT_LARGE = $(DEFINES_AT) MODULE_JRIDE MODULE_ADVANCED_ATA
+
+DEFINES_JRIDE_8K = ELIMINATE_CGA_SNOW MODULE_JRIDE
+DEFINES_386_8K = USE_386 USE_AT MODULE_ADVANCED_ATA
+
+
+###################
+# Other variables #
+###################
+
+# Target size of the ROM, used in main.asm for number of 512B blocks and by checksum Perl script below
+ROMSIZE = 8192
+ROMSIZE_LARGE = 15360
+}}}
+
+These are the only parts in the makefile that you need to edit. The defines tell what modules are included in what builds.
+
+DEFINES_COMMON define the modules that are included in all builds.
+
+DEFINES_XT, DEFINES_XTPLUS and DEFINES_AT define what modules are included in the 8k XT/XT+ and AT builds in addition to the ones in DEFINES_COMMON.
+
+DEFINES_XT_LARGE, DEFINES_XTPLUS_LARGE and DEFINES_AT_LARGE are for large builds (15k by default).
+
+Finally there are DEFINES_JRIDE_8K (8k JR-IDE/ISA build) and DEFINES_386_8K (AT build for 386+ with VLB controller support).
+
+If you want to make your own 8k AT build, modify DEFINES_COMMON and DEFINES_AT to include the modules you want. Then rebuild with _mingw32-make all_ or _mingw32-make checksum_.
+
+One more thing you might want to change is the size of large build. It is 15k by default (15360 bytes). If you want 16k binary, set ROMSIZE_LARGE to 16384. For 32k build set it to 32768.
 
 
