diff --git a/README.md b/README.md index 032b235..af98e1e 100644 --- a/README.md +++ b/README.md @@ -2,16 +2,16 @@ ## What is this? -This is my attempt to get Samba 2.2.x ported to the Amiga. My first Amiga port required SAS/C and a number of strange tricks had to be pulled to get it to support the kind of environment Samba needed. But with the introduction of Samba 2.2.x many of those tricks did not work any more, which is why I decided to attack the problem at the root, namely the runtime library. +This is my attempt to get Samba 2.2.x ported to the Amiga. My first Amiga port required *SAS/C* and a number of strange tricks had to be pulled to get it to support the kind of environment Samba needed. But with the introduction of Samba 2.2.x many of those tricks did not work any more, which is why I decided to attack the problem at the root, namely the runtime library. -Because it was no longer possible to build Samba with SAS/C on the new Amiga platform, the idea came up to move development to the GNU 'C' compiler. This turned out to be a challenge due to its somewhat underdeveloped runtime library and header files. Eventually, I decided to rewrite that library from scratch. +Because it was no longer possible to build Samba with *SAS/C* on the new Amiga platform, the idea came up to move development to the GNU 'C' compiler. This turned out to be a challenge due to its somewhat underdeveloped runtime library and header files. Eventually, I decided to rewrite that library from scratch. ## What does it do? Using *'C' - A reference manual* (4th edition) as a reference I wrote a set of header files, then proceeded to implement each single function referenced in them. With few exceptions in the area of wide character support, the result should be a feature complete implementation of the ISO 'C' (1994) runtime library. The library was subsequently updated to offer functionality defined in *ISO/IEC 9899:1999*, also known as *C99*. -Because Samba needs a few POSIX-like routines to be supported, the library functionality is complemented by a set of routines described in *Advanced programming in the Unix environent*. +Because Samba needs a few POSIX-like routines to be supported, the library functionality is complemented by a set of routines described in *Advanced programming in the Unix environment*. This is not a portable implementation of the library in the sense that you could move it from one 'C' compiler on one operating system to another. This is an Amiga specific implementation. @@ -21,27 +21,27 @@ For the PowerPC platform, the library uses code borrowed from fdlibm 5.3 library. Unless your software is linked against `libm.a` no floating point functions will be available to it, possibly causing a linker error. When using the GNU 'C' compiler, you will want to add the option `-lm -lc` to the linker command line. @@ -153,7 +153,7 @@ Processing of the `Ctrl+C` event involves the internal `__check_abort()` functio No new line characters are written unless specifically requested. -Space characters in a text stream before a new line character are read in and not discarded. +Space characters in a text stream before a new line character are read in and are not discarded. When data is read from a file, the last character does not have to be a new line character. @@ -244,13 +244,13 @@ By default all library routines follow the ISO 'C' conventions in that where imp ## The startup code -There are three program startup files provided. The most simplistic is in `startup.c` which I use for SAS/C. It just invokes the setup routine which eventually calls `main()` and drops straight into `exit()`. +There are three program startup files provided. The most simplistic is in `startup.c` which I use for *SAS/C*. It just invokes the setup routine which eventually calls `main()` and drops straight into `exit()`. -The `ncrt0.S` file was adapted from the libnix startup code which sets up the base relative data area, if necessary (the `SMALL_DATA` preprocessor symbol must be defined). +The `ncrt0.S` file was adapted from the *libnix* startup code which sets up the base relative data area, if necessary (the `SMALL_DATA` preprocessor symbol must be defined). -The `nrcrt0.S` file was adapted from libnix startup code, too, and sets up the base relative data area for programs to be made resident. Note that the `geta4()` stub is missing here; it wouldn't work in a resident program anyway. +The `nrcrt0.S` file was adapted from *libnix* startup code, too, and sets up the base relative data area for programs to be made resident. Note that the `geta4()` stub is missing here; it wouldn't work in a resident program anyway. -The `ncrt0.S` and `nrcrt0.S` files are considerably smaller and less complex than the libnix code they are based on. This is because in this library design all the more complex tasks are performed in the `stdlib_main.c` file rather than in assembly language. +The `ncrt0.S` and `nrcrt0.S` files are considerably smaller and less complex than the *libnix* code they are based on. This is because in this library design all the more complex tasks are performed in the `stdlib_main.c` file rather than in assembly language. ## Documentation