========
 Acess2
========

Acess2 is [TPG]'s hobby operating system.

It's mostly a learning experiment, but I've tried to keep the source simple
and have a _nearly_ POSIX compliant userland.

=== Source Tree ===
--- /KernelLand ---
The /KernelLand folder contains the kernel code
  Kernel/
    - Core kernel
    arch/<archname>/
      - Architecture dependent code (memory management and process switching)
    bin/
      - Binary file loaders
    vfs/
      - Virtual Filesystem layer
    drv/
      - Core system drivers (PCI, VTerm, FIFO)
  Modules/
    - All manner of drivers and helper code, capable of being build-time and runtime linked

--- Usermode ---
The Usermode folder contains the user-land portion of the Acess OS
  Applications/
    - Usermode applications (Shell, IRC Client, GUI, ...)
  Libraries/
    - Dynamic linker, and nearly all shared libraries used
  Filesystem/
    - Default filesystem contents (config files)

--- AcessNative ---
This folder contains a rather hacky emulation framework for the Acess Userland
(and to an extent, the kernel). It combines parts of the kernel code, IPC and
thread emulation to allow Acess applications to be run on Linux/Windows without
recompilation.
  acesskernel_src/
    - The kernel emulation framework
  ld-acess_src/
    - Replacement ld-acess.so to load programs and translate syscalls into IPC
  libacess-native.so_src/
    - Library version of the above (for nativly compiled Acess programs)

--- BuildConf ---
Build configuration settings (compiler options, module selection)

--- Externals ---
External programs (e.g. ACPICA, SDL), packaged as makefiles and patches (source archives must
be downloaded by the user)

=== Building ===
Required Tools: GNU cross toolchain (GCC,Gas,binutils), NASM, mtools, PHP
Targets used:
 > x86 uses i586-elf
 > x86_64 uses x86_64-none-elf
 > armv7 uses arm-eabi

1. Edit Makefile.user.cfg and set options (a few are listed below, see Makefile.cfg for the rest)
 > DISTROOT : Location to install to (by default this is an existing FAT Floppy image)
 > xCP/xMKDIR : Commands to call when installing
  # There is a script in Tools/BootFloppy to create an empty disk image
2. Either download a copy of ACPICA to Externals/ACPICA or set 'USE_ACPICA=0' before running make
3. Run `make all install` (default architecture is x86)

Other make invocations
`make`
- Build and install the kernel (x86)
`PLATFORM=smp make`
- Build and install the x86:smp kernel
`ARCH=x86_64 make all`
- Build (but don't install) the entire x86_64 kernel and userland
`ARCH=armv7 PLATFORM=tegra2 make all install`
- Build and install the entire armv7 kernel and userland (with the kernel targeting a Tegra2)


