B0 Compiler Package - IA32 port
(c) Darran Kartaschew 2000-2006

Released under a BSD licence.

This package contains the b0 compiler and basic libraries needed
to produce linux 32bit (i386) or Windows 32bit based applications. 
The compiler must be compiled from source code before it can be used.
To differentiate this version from the 64bit version, the executable
is called 'b0-ia32'.

NOTE: THIS IS A ONE TIME PORT OF B0 TO PRODUCE i386 BINARY CODE.
THIS VERSION IS NOT SUPPORTED IN ANY WAY, EXCEPT IF YOU FIND A BUG
THAT ALSO IMPACTS ON THE 64BIT VERSION AS WELL. (THEY BOTH SHARE A
COMMON CODE BASE).

THIS VERSION WILL NEVER BE UPGRADED IN ANY WAY, SO DO NOT ASK.

Pre-requisites:
b0 only requires gcc 3.x and glibc (Development packages). Most
Linux distro's have these installed by default. GNU Make is 
also needed to compile the compilers source, but you can build
it manually if you so desire.

For Windows, you'll need VC++ and then you'll need to compile it 
manually, see ./doc/b0.html for further instructions.

To install (linux):
>$ make
>$ su -c "make install"
>$ make clean

Then add the environment variable B0_INCLUDE=/usr/local/include/b0
eg.
>$ SET B0_INCLUDE=/usr/local/include/b0

or alternatively within ~/.profile add:

export B0_INCLUDE="/usr/local/include/b0"

To Uninstall (as root):
># make uninstall

Once installed, runtime configuration can be viewed by
>$ man b0


The following examples are provided:

1. le.b0   -- Basic ELF64 executable. 
2. le2.b0  -- ELF64 executable providing UTF8 output test.
              Build using: make test
                           ./le
                           ./le2

6. win32.b0 -- Windows Demo program.
              Build using: make win_demo.exe
                           ./win_demo
						   
For further documentation see: ./doc/b0.html

Note: The primary differences between this IA-32 verion and the
AMD64 version, is simply the registers available, and the fact
that the registers are now 32bit in size, and not 64bit in size. 
Also the m64 memory type is no longer available. (If you need 64bit
integer variables, then you'll need to use the 'asm' keyword).

in summary the following registers are now available:
r0 - r7 (eax - esp)
r0w - r7w (ax - sp)
r0b - r3b (al - dl).

And m64 is no longer a valid variable type.

And on a final note: If you wish to maintain the IA-32 version, 
then you are quite welcome to. I will also include any submitted
work into the main b0 distribution as well, including both patches
and other demos which you may provide.
