Changeset 387 in xtideuniversalbios


Ignore:
Timestamp:
Apr 12, 2012, 2:47:33 PM (13 years ago)
Author:
aitotat@…
google:author:
aitotat@gmail.com
Message:

Edited wiki page BuildInstructions through web user interface.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • wiki/BuildInstructions.wiki

    r385 r387  
    88= Programs needed =
    99
    10   * [http://tortoisesvn.tigris.org/ TortoiseSVN]
     10  * [http://tortoisesvn.tigris.org/ TortoiseSVN] (or any SVN client)
    1111  * [http://tdm-gcc.tdragon.net/ MinGW] (only mingw32-make.exe is needed)
    1212  * [http://www.nasm.us/ NASM]
     
    7272== Including and excluding optional modules ==
    7373
    74 This will be done soon.
     74There 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.
     75
     76It 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_.
     77
     78Open 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:
     79{{{
     80##################################################################################################
     81# Makefile to build XTIDE Universal BIOS.                                                        #
     82#                                                                                                #
     83# Valid makefile targets are:                                                                    #
     84# all       Removes existing files and builds binary files in \Build                             #
     85# small     Builds 8 kiB binaries only (without checksum)                                        #
     86# large     Builds 15 kiB binaries only (without checksum)                                       #
     87# clean     Removes all files from \Build                                                        #
     88# checksum* Builds all and then generates checksum byte to all binary files                      #
     89# strings*  Compress src\Strings.asm to src\StringsCompressed.asm                                #
     90#                                                                                                #
     91# * at the end of target name means that Perl is required for the job.                           #
     92# Build directory must be created manually if it does not exist.                                 #
     93#                                                                                                #
     94#                                                                                                #
     95# Following modules can be included or excluded:                                                 #
     96# MODULE_ADVANCED_ATA       Native support for some VLB IDE controllers                          #
     97# MODULE_BOOT_MENU          Boot Menu for selection of drive to boot from                        #
     98# MODULE_EBIOS              Enhanced functions for accessing drives over 8.4 GB                  #
     99# MODULE_JRIDE              Support for JR-IDE/ISA                                               #
     100# MODULE_SERIAL             Virtual hard disks using serial port                                 #
     101# MODULE_SERIAL_FLOPPY      Virtual floppy drives using serial port (requires MODULE_SERIAL)     #
     102# MODULE_STRINGS_COMPRESSED Use compressed strings to save space                                 #
     103#                                                                                                #
     104# Not modules but these affect the assembly:                                                     #
     105# ELIMINATE_CGA_SNOW        Prevents CGA snowing at the cost of a few bytes                      #
     106# USE_186                   Use instructions supported by 80188/80186 and V20/V30 and later      #
     107# USE_286                   Use instructions supported by 286 and later                          #
     108# USE_386                   Use instructions supported by 386 and later                          #
     109# USE_AT                    Use features supported on AT and later systems (not available on XT) #
     110#                                                                                                #
     111##################################################################################################
     112}}}
     113
     114I'm sure there will be more modules in the future so always read up to date makefile for all available modules.
     115
     116Scroll down the makefile to find Assembler preprocessor defines and other variables:
     117{{{
     118#################################################################
     119# Assembler preprocessor defines.                               #
     120#################################################################
     121DEFINES_COMMON = MODULE_BOOT_MENU MODULE_EBIOS MODULE_STRINGS_COMPRESSED
     122
     123DEFINES_XT = ELIMINATE_CGA_SNOW MODULE_SERIAL MODULE_SERIAL_FLOPPY
     124DEFINES_XTPLUS = ELIMINATE_CGA_SNOW USE_186 MODULE_SERIAL MODULE_SERIAL_FLOPPY
     125DEFINES_AT = USE_286 USE_AT MODULE_SERIAL MODULE_SERIAL_FLOPPY
     126
     127DEFINES_XT_LARGE = $(DEFINES_XT) MODULE_JRIDE MODULE_ADVANCED_ATA
     128DEFINES_XTPLUS_LARGE = $(DEFINES_XTPLUS) MODULE_JRIDE MODULE_ADVANCED_ATA
     129DEFINES_AT_LARGE = $(DEFINES_AT) MODULE_JRIDE MODULE_ADVANCED_ATA
     130
     131DEFINES_JRIDE_8K = ELIMINATE_CGA_SNOW MODULE_JRIDE
     132DEFINES_386_8K = USE_386 USE_AT MODULE_ADVANCED_ATA
     133
     134
     135###################
     136# Other variables #
     137###################
     138
     139# Target size of the ROM, used in main.asm for number of 512B blocks and by checksum Perl script below
     140ROMSIZE = 8192
     141ROMSIZE_LARGE = 15360
     142}}}
     143
     144These are the only parts in the makefile that you need to edit. The defines tell what modules are included in what builds.
     145
     146DEFINES_COMMON define the modules that are included in all builds.
     147
     148DEFINES_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.
     149
     150DEFINES_XT_LARGE, DEFINES_XTPLUS_LARGE and DEFINES_AT_LARGE are for large builds (15k by default).
     151
     152Finally there are DEFINES_JRIDE_8K (8k JR-IDE/ISA build) and DEFINES_386_8K (AT build for 386+ with VLB controller support).
     153
     154If 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_.
     155
     156One 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.
    75157
    76158
Note: See TracChangeset for help on using the changeset viewer.