| [190] | 1 | ===============================================================================
 | 
|---|
 | 2 | Information on AiR-BOOT Development                                [2017-04-13]
 | 
|---|
 | 3 | ===============================================================================
 | 
|---|
 | 4 | 
 | 
|---|
 | 5 | 
 | 
|---|
 | 6 | This is the AiR-BOOT Development Build Directory
 | 
|---|
 | 7 | ------------------------------------------------
 | 
|---|
 | 8 | AiR-BOOT roughly consists of the following components:
 | 
|---|
 | 9 | o The BootLoader
 | 
|---|
 | 10 | o The Installer Program
 | 
|---|
 | 11 | o The SetABoot Program
 | 
|---|
 | 12 | 
 | 
|---|
 | 13 | Required Tools
 | 
|---|
 | 14 | --------------
 | 
|---|
 | 15 | o Open Watcom -- v1.9 is the version used by the maintainer
 | 
|---|
 | 16 | o JWasm       -- v2.06d (July 9 2011) is the version used by the maintainer
 | 
|---|
 | 17 | o GNU Make    -- v3.81 or higher
 | 
|---|
 | 18 | 
 | 
|---|
 | 19 | A note on supported Assemblers and Build Utilities
 | 
|---|
 | 20 | --------------------------------------------------
 | 
|---|
 | 21 | The (earlier) support for TASM/MASM and WASM was actually an excercise
 | 
|---|
 | 22 | investigating assembler capabilities and code-generation. This has not been
 | 
|---|
 | 23 | maintained and the relevant sections and files will be removed. The only
 | 
|---|
 | 24 | supported assembler is JWasm, specifically v2.06d for OS/2. Also, the Watcom
 | 
|---|
 | 25 | Make utility (wmake) is about to be replaced by GNU Make to enhance the overall
 | 
|---|
 | 26 | build-system.
 | 
|---|
 | 27 | 
 | 
|---|
 | 28 | The BootLoader
 | 
|---|
 | 29 | --------------
 | 
|---|
 | 30 | The main source file is 'airboot.asm', from which other sources are included
 | 
|---|
 | 31 | at the source level. Building the BootLoader results in a 16-bit binary image
 | 
|---|
 | 32 | called 'airboot.bin' which is the stuff that gets installed in TRACK0 of the
 | 
|---|
 | 33 | boot-disk.
 | 
|---|
 | 34 | 
 | 
|---|
 | 35 | Post Processing of the BootLoader
 | 
|---|
 | 36 | ---------------------------------
 | 
|---|
 | 37 | When 'airboot.asm' is assembled, the resulting binary is not ready yet.
 | 
|---|
 | 38 | The 'mbr-prot' module is a seperatedly built module that has to be embedded
 | 
|---|
 | 39 | to form the final loader-image. This is done by the 'fixcode' utility.
 | 
|---|
 | 40 | Even when this embedding is done, the resulting image is not ready yet because
 | 
|---|
 | 41 | the CRC that protects the code-section has not been calculated yet, because
 | 
|---|
 | 42 | that is done by the installer when the loader-imaged is installed. This means
 | 
|---|
 | 43 | that a regular built loader-image cannot be manually merged to TRACK0 of a disk
 | 
|---|
 | 44 | and be functional. The moment AiR-BOOT starts it will halt on the invalid
 | 
|---|
 | 45 | code-section CRC. See the para below on how to circumvent that.
 | 
|---|
 | 46 | 
 | 
|---|
 | 47 | The 'CRC_IGNORE' build-option
 | 
|---|
 | 48 | -----------------------------
 | 
|---|
 | 49 | If you look at 'fc.mnu' you see the use of the 'CRC_IGNORE' build-option.
 | 
|---|
 | 50 | This option disables the CRC check for the code-section in the resulting
 | 
|---|
 | 51 | loader-image so that it is now possible to manually merge the loader-image to
 | 
|---|
 | 52 | TRACK0 of a disk. This is handy when using virtual machines for development.
 | 
|---|
 | 53 | Of course you cannot blindly copy the loader-image to TRACK0, because that
 | 
|---|
 | 54 | would overwrite the partition-table of the disk.
 | 
|---|
 | 55 | 
 | 
|---|
 | 56 | The Internal Mini Debugger
 | 
|---|
 | 57 | --------------------------
 | 
|---|
 | 58 | If AUX_DEBUG (airboot.asm:~97) is enabled, rudimentary COM-port debugging is
 | 
|---|
 | 59 | possible. If a terminal is attached to the COM-port, AiR-BOOT will dump
 | 
|---|
 | 60 | information there when it is loading and a few 'hotkeys' exist to dump some
 | 
|---|
 | 61 | internal stuff when the MAIN MENU is active. Press 'h' to have AiR-BOOT dump
 | 
|---|
 | 62 | de hotkeys to the COM-port.
 | 
|---|
 | 63 | 
 | 
|---|
 | 64 | Adjusting the Mini Debugger to your needs
 | 
|---|
 | 65 | -----------------------------------------
 | 
|---|
 | 66 | The debugger hooks into the main keyboard loop to check if the key pressed is
 | 
|---|
 | 67 | one of its hotkeys. These hotkeys are defined in 'debug.asm'. More precisely,
 | 
|---|
 | 68 | they are part of a dispatch-table where each hotkey maps to a pointer that
 | 
|---|
 | 69 | points to the function to be executed. This makes it easy to redefine existing
 | 
|---|
 | 70 | hotkeys or add new ones and their corresponding functions to suit your needs.
 | 
|---|
 | 71 | 
 | 
|---|
 | 72 | The need for the '/forcecode' flag
 | 
|---|
 | 73 | ----------------------------------
 | 
|---|
 | 74 | When developing, if the regular installer is used to install a new build,
 | 
|---|
 | 75 | the '/forcecode' option is required. This is because the installer checks the
 | 
|---|
 | 76 | version, which is most probably the same as the previously installed build,
 | 
|---|
 | 77 | so the installer assumes the installed version 'up-to-date'. The '/forcecode'
 | 
|---|
 | 78 | flag forces the installer to write the new code-section to TRACK0 of the disk.
 | 
|---|
 | 79 | 
 | 
|---|
 | 80 | CAUTION when developing on a Real System
 | 
|---|
 | 81 | ----------------------------------------
 | 
|---|
 | 82 | Remember that AiR-BOOT always accesses all disks and modifies the boot-flags
 | 
|---|
 | 83 | in the MBRs it finds. A small bug can render disks unusable. This also involves
 | 
|---|
 | 84 | attached USB mass storage devices (accidently) left plugged-in. Needless to say
 | 
|---|
 | 85 | that a virtual machine environment is the safest and both Qemu and VirtualBox
 | 
|---|
 | 86 | are very suitable for that.
 | 
|---|
 | 87 | 
 | 
|---|
 | 88 | The Installer Program
 | 
|---|
 | 89 | ---------------------
 | 
|---|
 | 90 | This is a cross-platform program written in C.
 | 
|---|
 | 91 | It takes the 'airboot.bin' loader-image and installs it into TRACK0 of the
 | 
|---|
 | 92 | boot-disk. Needless to say that the OS/2 version of the installer,
 | 
|---|
 | 93 | 'airboot2.exe', is the most tested version. Versions for the other platforms
 | 
|---|
 | 94 | are tested occasionally but not intensively.
 | 
|---|
 | 95 | 
 | 
|---|
 | 96 | The SetABoot Program
 | 
|---|
 | 97 | --------------------
 | 
|---|
 | 98 | This is the AiR-BOOT replacement for 'setboot.exe'.
 | 
|---|
 | 99 | If offers roughly the same functionality, but instead of acting on IBM-BM,
 | 
|---|
 | 100 | it of course acts on AiR-BOOT. If AiR-BOOT is not found, it delegates to
 | 
|---|
 | 101 | 'setbm.exe' which it assumes is the original 'setboot.exe' renamed.
 | 
|---|
 | 102 | 
 | 
|---|
 | 103 | The FixCode Utility
 | 
|---|
 | 104 | -------------------
 | 
|---|
 | 105 | This utility is used to embed the 'mbr-prot' module into the loader-image.
 | 
|---|
 | 106 | It is only used when developing and not part of the AiR-BOOT distribution.
 | 
|---|
 | 107 | 
 | 
|---|
 | 108 | The File Commander Build Menu
 | 
|---|
 | 109 | -----------------------------
 | 
|---|
 | 110 | The Swiss Army Knife used to provide Build Menus.
 | 
|---|
 | 111 | Just press F2 here for the Developer Build Menu.
 | 
|---|
 | 112 | 
 | 
|---|
 | 113 | Resources:
 | 
|---|
 | 114 | ----------
 | 
|---|
 | 115 | Netlabs Project Page  : http://trac.netlabs.org/air-boot
 | 
|---|
 | 116 | Netlabs Respository   : http://trac.netlabs.org/air-boot/browser/trunk
 | 
|---|
 | 117 | Netlabs Revision Log  : http://trac.netlabs.org/air-boot/log
 | 
|---|
 | 118 | Bug tracking:         : http://trac.netlabs.org/air-boot/report
 | 
|---|
 | 119 | GitHub Project Portal : http://rousseaux.github.io/netlabs.air-boot
 | 
|---|
 | 120 | GitHub Repository     : http://github.com/rousseaux/netlabs.air-boot
 | 
|---|
 | 121 | Contact e-mail        : rousseau.os2dev@gmx.com
 | 
|---|
 | 122 | 
 | 
|---|
 | 123 | 
 | 
|---|
 | 124 | 
 | 
|---|
 | 125 | Ben Rietbroek <rousseau.os2dev@gmx.com>,
 | 
|---|
 | 126 | 
 | 
|---|
 | 127 |   AiR-BOOT maintainer.
 | 
|---|