                               Foundational Library
                               --------------------

DESCRIPTION
-----------
A foundational library written in GNU Assembly that uses the C calling
convention. Features:

 * No procedure accepts varadic arguments.
 * No procedure contains more than 200 instructions.
 * All procedures that can catch an error will let you know directly.
 * All procedures except _start are self-contained.
 * All the code is commented for learners.

Currently, declarations are available for GNU Assembly, NQC, and Free Pascal.
Where applicable, procedure declarations that don't depend on the Linux kernel
are seperated from the rest.

Many procedures operating on strings expect the first byte to contain the
length. This limits their maximum string length to 255.

The procedure strlen and count are implented for procedures that need to
convert a null-terminated string from the Linux kernel to a counted string,
such as start and getdents.

The main procedure is passed argc, argv, and file (in that order). The first
string in argv is program-defined like any other string in argv. All strings
passed to the main procedure are counted. The maximum number of strings in argv
is configurable at assemble time, but defaults to 8, the same as Old DOS.

Its possible to write a program linked with start.o to support legacy shells
by testing if the first command line argument is redundant. See some of my
other software for an example.

BUILDING
--------
To build, you'll need to install the GNU Assembler and GNU Archiver. If you
want to use any of the do-files, you'll addtionally need the Redo executable.

To manually build the library with Ash for the i386 architecture, run:

  as arch/i386/*.s
  mv arch/i386/start.o .
  ar -rcs libfndn.a arch/i386/*.o

To automatically build the library with Redo, run:

  redo

NOTES
-----
* The zero padding byte after d_name in the dirent record serves as the null
  terminating byte in d_name when the maximum length is reached.
* The first of the 4 null bytes after file in the start procedure serves as the
  terminating byte of file.

COPYING & CREDIT
----------------
Written by Stone Fox. This work is dedicated to the public domain. Do with it
what you please.

CONTACT
-------
You can contact me by sending a letter to the below mail address. To meet me
in-person, please refer to the bulletin board at St. Johns Park for upcoming
events I'll be hosting and/or attending.

  7114 North Lancaster Avenue
  Portland, Oregon 97217
