]> git.sur5r.net Git - cc65/blobdiff - doc/funcref.sgml
Switch for vice label file has changed
[cc65] / doc / funcref.sgml
index 6659fd790c1e2dd934673b8adc54d6e840ade847..4c87a757f57ddb122ded1d0bd2495e36ca6f2db9 100644 (file)
@@ -64,11 +64,14 @@ function.
 
 <sect1><tt/apple2.h/<label id="apple2.h"><p>
 
+<itemize>
+<item><ref id="get_ostype" name="get_ostype">
+</itemize>
 
-<sect1><tt/atari.h/<label id="atari.h"><p>
 
+<sect1><tt/apple2enh.h/<label id="apple2enh.h"><p>
 
-<sect1><tt/atmos.h/<label id="atmos.h"><p>
+(incomplete)
 
 
 <sect1><tt/assert.h/<label id="assert.h"><p>
@@ -78,6 +81,20 @@ function.
 </itemize>
 
 
+<sect1><tt/atari.h/<label id="atari.h"><p>
+
+<itemize>
+<item><ref id="get_ostype" name="get_ostype">
+</itemize>
+
+(incomplete)
+
+
+<sect1><tt/atmos.h/<label id="atmos.h"><p>
+
+(incomplete)
+
+
 <sect1><tt/c128.h/<label id="c128.h"><p>
 
 <itemize>
@@ -90,9 +107,35 @@ function.
 
 <sect1><tt/c16.h/<label id="c16.h"><p>
 
+(incomplete)
+
 
 <sect1><tt/c64.h/<label id="c64.h"><p>
 
+<itemize>
+<item><ref id="get_ostype" name="get_ostype">
+</itemize>
+
+
+<sect1><tt/cbm510.h/<label id="cbm510.h"><p>
+
+<itemize>
+<item><ref id="peekbsys" name="peekbsys">
+<item><ref id="peekwsys" name="peekwsys">
+<item><ref id="pokebsys" name="pokebsys">
+<item><ref id="pokewsys" name="pokewsys">
+</itemize>
+
+
+<sect1><tt/cbm610.h/<label id="cbm610.h"><p>
+
+<itemize>
+<item><ref id="peekbsys" name="peekbsys">
+<item><ref id="peekwsys" name="peekwsys">
+<item><ref id="pokebsys" name="pokebsys">
+<item><ref id="pokewsys" name="pokewsys">
+</itemize>
+
 
 <sect1><tt/conio.h/<label id="conio.h"><p>
 
@@ -105,11 +148,11 @@ function.
 <item><ref id="chline" name="chline">
 <item><ref id="chlinexy" name="chlinexy">
 <item><ref id="clrscr" name="clrscr">
-<!-- <item><ref id="cprintf" name="cprintf"> -->
-<!-- <item><ref id="cputc" name="cputc"> -->
-<!-- <item><ref id="cputcxy" name="cputcxy"> -->
-<!-- <item><ref id="cputs" name="cputs"> -->
-<!-- <item><ref id="cputsxy" name="cputsxy"> -->
+<item><ref id="cprintf" name="cprintf">
+<item><ref id="cputc" name="cputc">
+<item><ref id="cputcxy" name="cputcxy">
+<item><ref id="cputs" name="cputs">
+<item><ref id="cputsxy" name="cputsxy">
 <item><ref id="cursor" name="cursor">
 <item><ref id="cvline" name="cvline">
 <item><ref id="cvlinexy" name="cvlinexy">
@@ -120,7 +163,7 @@ function.
 <item><ref id="revers" name="revers">
 <item><ref id="screensize" name="screensize">
 <item><ref id="textcolor" name="textcolor">
-<!-- <item><ref id="vcprintf" name="vcprintf"> -->
+<item><ref id="vcprintf" name="vcprintf">
 <item><ref id="wherex" name="wherex">
 <item><ref id="wherey" name="wherey">
 </itemize>
@@ -149,9 +192,13 @@ function.
 
 <sect1><tt/dbg.h/<label id="dbg.h"><p>
 
+(incomplete)
+
 
 <sect1><tt/dio.h/<label id="dio.h"><p>
 
+(incomplete)
+
 
 <sect1><tt/em.h/<label id="em.h"><p>
 
@@ -159,9 +206,11 @@ function.
 <item><ref id="em_commit" name="em_commit">
 <item><ref id="em_copyfrom" name="em_copyfrom">
 <item><ref id="em_copyto" name="em_copyto">
+<item><ref id="em_install" name="em_install">
 <item><ref id="em_load_driver" name="em_load_driver">
 <item><ref id="em_map" name="em_map">
 <item><ref id="em_pagecount" name="em_pagecount">
+<item><ref id="em_uninstall" name="em_uninstall">
 <item><ref id="em_unload" name="em_unload">
 <item><ref id="em_use" name="em_use">
 </itemize>
@@ -169,6 +218,8 @@ function.
 
 <sect1><tt/errno.h/<label id="errno.h"><p>
 
+(incomplete)
+
 
 <sect1><tt/fcntl.h/<label id="fcntl.h"><p>
 
@@ -181,21 +232,69 @@ function.
 
 <sect1><tt/geos.h/<label id="geos.h"><p>
 
+(incomplete)
+
 
 <sect1><tt/joystick.h/<label id="joystick.h"><p>
 
+<itemize>
+<item><ref id="joy_count" name="joy_count">
+<item><ref id="joy_install" name="joy_install">
+<item><ref id="joy_load_driver" name="joy_load_driver">
+<item><ref id="joy_read" name="joy_read">
+<item><ref id="joy_uninstall" name="joy_uninstall">
+<item><ref id="joy_unload" name="joy_unload">
+</itemize>
+
 
 <sect1><tt/locale.h/<label id="locale.h"><p>
 
+<itemize>
+<item><ref id="localeconv" name="localeconv">
+<item><ref id="setlocale" name="setlocale">
+</itemize>
+
 
 <sect1><tt/modload.h/<label id="modload.h"><p>
 
+<itemize>
+<item><ref id="mod_load" name="mod_load">
+<item><ref id="mod_free" name="mod_free">
+</itemize>
+
+
+<sect1><tt/mouse.h/<label id="mouse.h"><p>
+
+<itemize>
+<item><ref id="mouse_load_driver" name="mouse_load_driver">
+<item><ref id="mouse_unload" name="mouse_unload">
+<item><ref id="mouse_install" name="mouse_install">
+<item><ref id="mouse_uninstall" name="mouse_uninstall">
+<item><ref id="mouse_hide" name="mouse_hide">
+<item><ref id="mouse_show" name="mouse_show">
+<item><ref id="mouse_box" name="mouse_box">
+<item><ref id="mouse_move" name="mouse_move">
+<item><ref id="mouse_buttons" name="mouse_buttons">
+<item><ref id="mouse_pos" name="mouse_pos">
+<item><ref id="mouse_info" name="mouse_info">
+<item><ref id="mouse_ioctl" name="mouse_ioctl">
+</itemize>
+
+(incomplete)
+
 
 <sect1><tt/nes.h/<label id="nes.h"><p>
 
+(incomplete)
+
 
 <sect1><tt/o65.h/<label id="o65.h"><p>
 
+The <tt/o65.h/ header file contains structure and constant definitions that
+may be used when dealing with files in <htmlurl
+url="http://www.6502.org/users/andre/o65/fileformat.html" name="o65 format">.
+It does not declare any functions.
+
 
 <sect1><tt/peekpoke.h/<label id="peekpoke.h"><p>
 
@@ -209,15 +308,41 @@ function.
 
 <sect1><tt/pet.h/<label id="pet.h"><p>
 
+(incomplete)
+
 
 <sect1><tt/plus4.h/<label id="plus4.h"><p>
 
+(incomplete)
+
 
 <sect1><tt/serial.h/<label id="serial.h"><p>
 
+<!--
+<itemize>
+<item><ref id="ser_load_driver" name="ser_load_driver">
+<item><ref id="ser_unload" name="ser_unload">
+<item><ref id="ser_install" name="ser_install">
+<item><ref id="ser_uninstall" name="ser_uninstall">
+<item><ref id="ser_open" name="ser_open">
+<item><ref id="ser_close" name="ser_close">
+<item><ref id="ser_get" name="ser_get">
+<item><ref id="ser_put" name="ser_put">
+<item><ref id="ser_status" name="ser_status">
+<item><ref id="ser_ioctl" name="ser_ioctl">
+</itemize>
+-->
+
+(incomplete)
+
 
 <sect1><tt/setjmp.h/<label id="setjmp.h"><p>
 
+<itemize>
+<item><ref id="setjmp" name="setjmp">
+<item><ref id="longjmp" name="longjmp">
+</itemize>
+
 
 <sect1><tt/signal.h/<label id="signal.h"><p>
 
@@ -229,9 +354,13 @@ function.
 
 <sect1><tt/stdarg.h/<label id="stdarg.h"><p>
 
+(incomplete)
+
 
 <sect1><tt/stdbool.h/<label id="stdbool.h"><p>
 
+(incomplete)
+
 
 <sect1><tt/stddef.h/<label id="stddef.h"><p>
 
@@ -242,13 +371,60 @@ function.
 
 <sect1><tt/stdio.h/<label id="stdio.h"><p>
 
+<itemize>
+<item><ref id="clearerr" name="clearerr">
+<!-- <item><ref id="fclose" name="fclose"> -->
+<!-- <item><ref id="fdopen" name="fdopen"> -->
+<item><ref id="feof" name="feof">
+<item><ref id="ferror" name="ferror">
+<!-- <item><ref id="fflush" name="fflush"> -->
+<!-- <item><ref id="fgetc" name="fgetc"> -->
+<!-- <item><ref id="fgetpos" name="fgetpos"> -->
+<!-- <item><ref id="fgets" name="fgets"> -->
+<item><ref id="fileno" name="fileno">
+<!-- <item><ref id="flushall" name="flushall"> -->
+<!-- <item><ref id="fopen" name="fopen"> -->
+<!-- <item><ref id="fprintf" name="fprintf"> -->
+<!-- <item><ref id="fputc" name="fputc"> -->
+<!-- <item><ref id="fputs" name="fputs"> -->
+<!-- <item><ref id="fread" name="fread"> -->
+<!-- <item><ref id="freopen" name="freopen"> -->
+<!-- <item><ref id="fscanf" name="fscanf"> -->
+<!-- <item><ref id="fseek" name="fseek"> -->
+<!-- <item><ref id="fsetpos" name="fsetpos"> -->
+<!-- <item><ref id="ftell" name="ftell"> -->
+<!-- <item><ref id="fwrite" name="fwrite"> -->
+<!-- <item><ref id="getc" name="getc"> -->
+<!-- <item><ref id="getchar" name="getchar"> -->
+<!-- <item><ref id="gets" name="gets"> -->
+<!-- <item><ref id="printf" name="printf"> -->
+<!-- <item><ref id="putc" name="putc"> -->
+<!-- <item><ref id="putchar" name="putchar"> -->
+<!-- <item><ref id="puts" name="puts"> -->
+<!-- <item><ref id="rename" name="rename"> -->
+<!-- <item><ref id="rewind" name="rewind"> -->
+<!-- <item><ref id="scanf" name="scanf"> -->
+<!-- <item><ref id="sprintf" name="sprintf"> -->
+<!-- <item><ref id="sscanf" name="sscanf"> -->
+<!-- <item><ref id="vfprintf" name="vfprintf"> -->
+<!-- <item><ref id="vfscanf" name="vfscanf"> -->
+<!-- <item><ref id="vprintf" name="vprintf"> -->
+<!-- <item><ref id="vscanf" name="vscanf"> -->
+<!-- <item><ref id="vsprintf" name="vsprintf"> -->
+<!-- <item><ref id="vsscanf" name="vsscanf"> -->
+</itemize>
+
+(incomplete)
+
 
 <sect1><tt/stdlib.h/<label id="stdlib.h"><p>
 
 <itemize>
 <item><ref id="_heapadd" name="_heapadd">
+<item><ref id="_heapblocksize" name="_heapblocksize">
 <item><ref id="_heapmaxavail" name="_heapmaxavail">
 <item><ref id="_heapmemavail" name="_heapmemavail">
+<item><ref id="_poserror" name="_poserror">
 <item><ref id="_randomize" name="_randomize">
 <item><ref id="_swap" name="_swap">
 <item><ref id="abort" name="abort">
@@ -256,9 +432,9 @@ function.
 <item><ref id="atexit" name="atexit">
 <item><ref id="atoi" name="atoi">
 <item><ref id="atol" name="atol">
-<!-- <item><ref id="bsearch" name="bsearch"> -->
+<item><ref id="bsearch" name="bsearch">
 <item><ref id="calloc" name="calloc">
-<!-- <item><ref id="div" name="div"> -->
+<item><ref id="div" name="div">
 <item><ref id="exit" name="exit">
 <item><ref id="free" name="free">
 <item><ref id="getenv" name="getenv">
@@ -266,9 +442,11 @@ function.
 <item><ref id="labs" name="labs">
 <item><ref id="ltoa" name="ltoa">
 <item><ref id="malloc" name="malloc">
-<!-- <item><ref id="qsort" name="qsort"> -->
+<item><ref id="perror" name="perror">
+<item><ref id="qsort" name="qsort">
 <item><ref id="rand" name="rand">
 <item><ref id="realloc" name="realloc">
+<item><ref id="remove" name="remove">
 <item><ref id="srand" name="srand">
 <item><ref id="ultoa" name="ultoa">
 <item><ref id="utoa" name="utoa">
@@ -278,43 +456,61 @@ function.
 <sect1><tt/string.h/<label id="string.h"><p>
 
 <itemize>
-<!-- <item><ref id="_stroserror" name="_stroserror"> -->
+<item><ref id="_stroserror" name="_stroserror">
 <item><ref id="bzero" name="bzero">
-<!-- <item><ref id="memchr" name="memchr"> -->
+<item><ref id="memchr" name="memchr">
 <item><ref id="memcpy" name="memcpy">
 <item><ref id="memmove" name="memmove">
 <item><ref id="memset" name="memset">
-<!-- <item><ref id="strcasecmp" name="strcasecmp"> -->
+<item><ref id="strcasecmp" name="strcasecmp">
 <item><ref id="strcat" name="strcat">
 <item><ref id="strchr" name="strchr">
-<!-- <item><ref id="strcmp" name="strcmp"> -->
-<!-- <item><ref id="strcoll" name="strcoll"> -->
+<item><ref id="strcmp" name="strcmp">
+<item><ref id="strcoll" name="strcoll">
 <item><ref id="strcpy" name="strcpy">
-<!-- <item><ref id="strcspn" name="strcspn"> -->
-<!-- <item><ref id="strdup" name="strdup"> -->
-<!-- <item><ref id="strerror" name="strerror"> -->
-<!-- <item><ref id="stricmp" name="stricmp"> -->
+<item><ref id="strcspn" name="strcspn">
+<item><ref id="strdup" name="strdup">
+<item><ref id="strerror" name="strerror">
+<item><ref id="stricmp" name="stricmp">
 <item><ref id="strlen" name="strlen">
 <item><ref id="strlower" name="strlower">
 <item><ref id="strlwr" name="strlwr">
-<!-- <item><ref id="strncat" name="strncat"> -->
-<!-- <item><ref id="strncmp" name="strncmp"> -->
+<item><ref id="strncat" name="strncat">
+<item><ref id="strncmp" name="strncmp">
 <item><ref id="strncpy" name="strncpy">
 <item><ref id="strrchr" name="strrchr">
-<!-- <item><ref id="strspn" name="strspn"> -->
-<!-- <item><ref id="strstr" name="strstr"> -->
-<!-- <item><ref id="strtok" name="strtok"> -->
+<item><ref id="strspn" name="strspn">
+<item><ref id="strstr" name="strstr">
+<item><ref id="strtok" name="strtok">
 <!-- <item><ref id="strxfrm" name="strxfrm"> -->
 <item><ref id="strupper" name="strupper">
 <item><ref id="strupr" name="strupr">
 </itemize>
 
+(incomplete)
+
 
 <sect1><tt/tgi.h/<label id="tgi.h"><p>
 
+(incomplete)
+
 
 <sect1><tt/time.h/<label id="time.h"><p>
 
+<itemize>
+<!-- <item><ref id="_systime" name="_systime"> -->
+<!-- <item><ref id="asctime" name="asctime"> -->
+<!-- <item><ref id="clock" name="clock"> -->
+<!-- <item><ref id="ctime" name="ctime"> -->
+<!-- <item><ref id="gmtime" name="gmtime"> -->
+<!-- <item><ref id="localtime" name="localtime"> -->
+<!-- <item><ref id="mktime" name="mktime"> -->
+<!-- <item><ref id="strftime" name="strftime"> -->
+<item><ref id="time" name="time">
+</itemize>
+
+(incomplete)
+
 
 <sect1><tt/unistd.h/<label id="unistd.h"><p>
 
@@ -326,17 +522,21 @@ function.
 <!-- <item><ref id="read" name="read"> -->
 <!-- <item><ref id="rmdir" name="rmdir"> -->
 <item><ref id="sleep" name="sleep">
-<!-- <item><ref id="unlink" name="unlink"> -->
+<item><ref id="unlink" name="unlink">
 <!-- <item><ref id="write" name="write"> -->
 </itemize>
 
+(incomplete)
+
 
 <sect1><tt/vic20.h/<label id="vic20.h"><p>
 
+(incomplete)
 
-<sect1><tt/zlib.h/<label id="zlib.h"><p>
 
+<sect1><tt/zlib.h/<label id="zlib.h"><p>
 
+(incomplete)
 
 
 <sect>Alphabetical function reference<p>
@@ -352,10 +552,40 @@ function.
 <tag/Limits/
 <itemize>
 <item>The minimum blocksize that can be added is 6 bytes; the function will
-ignore blocks with smaller sizes.
+ignore smaller blocks.
+</itemize>
+<tag/Availability/cc65
+<tag/See also/
+<ref id="_heapblocksize" name="_heapblocksize">,
+<ref id="_heapmaxavail" name="_heapmaxavail">,
+<ref id="_heapmemavail" name="_heapmemavail">,
+<ref id="calloc" name="calloc">,
+<ref id="free" name="free">,
+<ref id="malloc" name="malloc">,
+<ref id="realloc" name="realloc">
+<tag/Example/None.
+</descrip>
+</quote>
+
+
+<sect1>_heapblocksize<label id="_heapblocksize"><p>
+
+<quote>
+<descrip>
+<tag/Function/Return the size of an allocated block.
+<tag/Header/<tt/<ref id="stdlib.h" name="stdlib.h">/
+<tag/Declaration/<tt/size_t __fastcall__ _heapblocksize (const void* block);/
+<tag/Description/The function returns the size of a block that must have
+previously been allocated by <tt/<ref id="malloc" name="malloc">/, <tt/<ref
+id="calloc" name="calloc">/ or <tt/<ref id="realloc" name="realloc">/.
+<tag/Limits/
+<itemize>
+<item>Passing a pointer to a block that was is not the result of one of the
+allocation functions, or that has been free'd will give unpredicable results.
 </itemize>
 <tag/Availability/cc65
 <tag/See also/
+<ref id="_heapadd" name="_heapadd">,
 <ref id="_heapmaxavail" name="_heapmaxavail">,
 <ref id="_heapmemavail" name="_heapmemavail">,
 <ref id="calloc" name="calloc">,
@@ -379,6 +609,7 @@ be allocated from the heap using <tt/<ref id="malloc" name="malloc">/.
 <tag/Availability/cc65
 <tag/See also/
 <ref id="_heapadd" name="_heapadd">,
+<ref id="_heapblocksize" name="_heapblocksize">,
 <ref id="_heapmemavail" name="_heapmemavail">,
 <ref id="calloc" name="calloc">,
 <ref id="free" name="free">,
@@ -408,6 +639,7 @@ id="malloc" name="malloc"> may still return <tt/NULL/.
 <tag/Availability/cc65
 <tag/See also/
 <ref id="_heapadd" name="_heapadd">,
+<ref id="_heapblocksize" name="_heapblocksize">,
 <ref id="_heapmaxavail" name="_heapmaxavail">,
 <ref id="calloc" name="calloc">,
 <ref id="free" name="free">,
@@ -418,6 +650,36 @@ id="malloc" name="malloc"> may still return <tt/NULL/.
 </quote>
 
 
+<sect1>_poserror<label id="_poserror"><p>
+
+<quote>
+<descrip>
+<tag/Function/Print an error message for the error in <tt/_oserrno/.
+<tag/Header/<tt/<ref id="stdio.h" name="stdio.h">/
+<tag/Declaration/<tt/void __fastcall__ _poserror (const char* msg);/
+<tag/Description/<tt/_poserror/ prints an error message to <tt/stderr/. If
+<tt/msg/ is not <tt/NULL/ and not an empty string, it is printed followed by
+a colon and a blank. Then the error message for the current contents of
+<tt/_oserrno/ are printed followed by a newline. The message output is the
+same as returned by <tt/<ref id="_stroserror" name="_stroserror">/ with an
+argument of <tt/_oserrno/.
+<tag/Limits/
+<itemize>
+<item>Since operating system specific error code are - you guessed it -
+operating system specific, the value in <tt/_oserror/ and the message that is
+printed depend on the cc65 target.
+<item>The function is only available as fastcall function, so it may only
+be used in presence of a prototype.
+</itemize>
+<tag/Availability/cc65
+<tag/See also/
+<ref id="_stroserror" name="_stroserror">,
+<ref id="perror" name="perror">
+<tag/Example/None.
+</descrip>
+</quote>
+
+
 <sect1>_randomize<label id="_randomize"><p>
 
 <quote>
@@ -440,6 +702,30 @@ considered random to a certain degree.
 </quote>
 
 
+<sect1>_stroserror<label id="_stroserror"><p>
+
+<quote>
+<descrip>
+<tag/Function/Return a string describing an OS specific error code.
+<tag/Header/<tt/<ref id="string.h" name="string.h">/
+<tag/Declaration/<tt/const char* __fastcall__ _stroserror (unsigned char errcode);/
+<tag/Description/<tt/_stroserror/ will return a string describing the given
+operating system specific error code.
+<tag/Limits/<itemize>
+<item>Since operating system specific error code are - you guessed it -
+operating system specific, the parameter and the string returned depend on the
+cc65 target.
+<item>The function is only available as fastcall function, so it may only be
+used in presence of a prototype.
+</itemize>
+<tag/Availability/cc65
+<tag/See also/
+<ref id="strerror" name="strerror">
+<tag/Example/None.
+</descrip>
+</quote>
+
+
 <sect1>_swap<label id="_swap"><p>
 
 <quote>
@@ -805,8 +1091,9 @@ used in presence of a prototype.
 <tag/Function/Set the background text color.
 <tag/Header/<tt/<ref id="conio.h" name="conio.h">/
 <tag/Declaration/<tt/unsigned char __fastcall__ bgcolor (unsigned char color);/
-<tag/Description/The function will set a new background text color. It returns
-the old (current) background color.
+<tag/Description/The function will set a new background color and return the
+old (current) one. The background color is valid for the whole text output
+area of the screen, not just for new text.
 <tag/Limits/<itemize>
 <item>Background colors are system dependent. The function may have no effect
 on systems where the background color cannot be changed.
@@ -846,6 +1133,37 @@ be used in presence of a prototype.
 </quote>
 
 
+<sect1>bsearch<label id="bsearch"><p>
+
+<quote>
+<descrip>
+<tag/Function/Do a binary search in a sorted array.
+<tag/Header/<tt/<ref id="stdlib.h" name="stdlib.h">/
+<tag/Declaration/<tt/void* __fastcall__ bsearch (const void* key,
+const void* base, size_t n, size_t size,
+int (*cmp) (const void*, const void*));/
+<tag/Description/<tt/bsearch/ searches a sorted array for a member that
+matches the one pointed to by <tt/key/. <tt/base/ is the address of the array,
+<tt/n/ is the number of elements, <tt/size/ the size of an element and <tt/cmp/
+the function used to compare the members against the key. The function returns
+a pointer to the member found, or <tt/NULL/ if there was no match.
+<tag/Limits/
+<itemize>
+<item>The contents of the array must be sorted in ascending order according to
+the compare function given.
+<item>If there are multiple members that match the key, the function will
+return one of the members.
+<item>The function is only available as fastcall function, so it may only
+be used in presence of a prototype.
+</itemize>
+<tag/Availability/ISO 9899
+<tag/See also/
+<ref id="qsort" name="qsort">
+<tag/Example/None.
+</descrip>
+</quote>
+
+
 <sect1>bzero<label id="bzero"><p>
 
 <quote>
@@ -914,6 +1232,7 @@ be used in presence of a prototype.
 <tag/Availability/ISO 9899
 <tag/See also/
 <ref id="_heapadd" name="_heapadd">,
+<ref id="_heapblocksize" name="_heapblocksize">,
 <ref id="_heapmaxavail" name="_heapmaxavail">,
 <ref id="_heapmemavail" name="_heapmemavail">,
 <ref id="free" name="free">,
@@ -928,7 +1247,7 @@ be used in presence of a prototype.
 
 <quote>
 <descrip>
-<tag/Function/Clear part of a line (write a given amount of spaces).
+<tag/Function/Clear part of a line (write a given number of spaces).
 <tag/Header/<tt/<ref id="conio.h" name="conio.h">/
 <tag/Declaration/<tt/void __fastcall__ cclear (unsigned char length);/
 <tag/Description/The function clears part of a line by writing <tt/length/
@@ -950,10 +1269,10 @@ only be used in presence of a prototype.
 
 <quote>
 <descrip>
-<tag/Function/Clear part of a line (write a given amount of spaces) starting
+<tag/Function/Clear part of a line (write a given number of spaces) starting
 at a specific screen position.
 <tag/Header/<tt/<ref id="conio.h" name="conio.h">/
-<tag/Declaration/<tt/void __fastcall__ cclearxy (unsigned char length);/
+<tag/Declaration/<tt/void __fastcall__ cclearxy (unsigned char x, unsigned char y, unsigned char length);/
 <tag/Description/The function moves the cursor to a specific position, and
 will then clear part of the line by writing <tt/length/ spaces in the current
 text color.
@@ -1046,6 +1365,28 @@ used in presence of a prototype.
 </quote>
 
 
+<sect1>clearerr<label id="clearerr"><p>
+
+<quote>
+<descrip>
+<tag/Function/Clear error and end-of-file status of a stream.
+<tag/Header/<tt/<ref id="stdio.h" name="stdio.h">/
+<tag/Declaration/<tt/void __fastcall__ clearerr (FILE* f);/
+<tag/Description/<tt/clearerr/ clears the error and end-of-file status
+indicators for the stream <tt/f/.
+<tag/Limits/<itemize>
+<item>The function is only available as fastcall function, so it may only be
+used in presence of a prototype.
+</itemize>
+<tag/Availability/ISO 9899
+<tag/See also/
+<ref id="feof" name="feof">,
+<ref id="ferror" name="ferror">
+<tag/Example/None.
+</descrip>
+</quote>
+
+
 <sect1>clrscr<label id="clrscr"><p>
 
 <quote>
@@ -1078,7 +1419,7 @@ reading the <tt/errno/ variable.
 <item>The function is only available as fastcall function, so it may only
 be used in presence of a prototype.
 </itemize>
-<tag/Availability/POSIX
+<tag/Availability/POSIX 1003.1
 <tag/See also/
 <ref id="creat" name="creat">,
 <ref id="open" name="open">
@@ -1103,7 +1444,7 @@ associated with it. On error, -1 is returned and an error code is stored in
 <item>The function is only available as fastcall function, so it may only
 be used in presence of a prototype.
 </itemize>
-<tag/Availability/POSIX
+<tag/Availability/POSIX 1003.1
 <tag/See also/
 <ref id="close" name="close">,
 <ref id="open" name="open">
@@ -1112,6 +1453,141 @@ be used in presence of a prototype.
 </quote>
 
 
+<sect1>cprintf<label id="cprintf"><p>
+
+<quote>
+<descrip>
+<tag/Function/Formatted output to the console.
+<tag/Header/<tt/<ref id="conio.h" name="conio.h">/
+<tag/Declaration/<tt/int cprintf (const char* format, ...);/
+<tag/Description/The arguments are converted to text where necessary and
+formatted according to the format string given. The resulting string is output
+to the console. <tt/cprintf/ supports the same format specifiers as
+<tt/printf/. <!-- <tt/<ref id="printf" name="printf">/. -->
+<tag/Limits/<itemize>
+<item>Like all other <tt/conio/ output functions, <tt/cprintf/ distinguishes
+between <tt/\r/ and <tt/\n/.
+</itemize>
+<tag/Availability/cc65
+<tag/See also/
+<ref id="cputc" name="cputc">,
+<ref id="cputcxy" name="cputcxy">,
+<ref id="cputs" name="cputs">,
+<ref id="cputsxy" name="cputsxy">,
+<ref id="vcprintf" name="vcprintf">
+<tag/Example/None.
+</descrip>
+</quote>
+
+
+<sect1>cputc<label id="cputc"><p>
+
+<quote>
+<descrip>
+<tag/Function/Output a character directly to the console.
+<tag/Header/<tt/<ref id="conio.h" name="conio.h">/
+<tag/Declaration/<tt/void __fastcall__ cputc (char c);/
+<tag/Description/Output one character to the console at the current cursor
+position.
+<tag/Limits/<itemize>
+<item>Like all other <tt/conio/ output functions, <tt/cputc/ distinguishes
+between <tt/\r/ and <tt/\n/.
+<item>The function is only available as fastcall function, so it may only
+be used in presence of a prototype.
+</itemize>
+<tag/Availability/cc65
+<tag/See also/
+<ref id="cprintf" name="cprintf">,
+<ref id="cputcxy" name="cputcxy">,
+<ref id="cputs" name="cputs">,
+<ref id="cputsxy" name="cputsxy">,
+<ref id="vcprintf" name="vcprintf">
+<tag/Example/None.
+</descrip>
+</quote>
+
+
+<sect1>cputcxy<label id="cputcxy"><p>
+
+<quote>
+<descrip>
+<tag/Function/Output a character at a specific screen position.
+<tag/Header/<tt/<ref id="conio.h" name="conio.h">/
+<tag/Declaration/<tt/void __fastcall__ cputcxy (unsigned char x, unsigned char y, char c);/
+<tag/Description/<tt/cputcxy/ moves the cursor to the given x/y position on
+the screen and outputs one character.
+<tag/Limits/<itemize>
+<item>Like all other <tt/conio/ output functions, <tt/cputcxy/ distinguishes
+between <tt/\r/ and <tt/\n/.
+<item>The function is only available as fastcall function, so it may only
+be used in presence of a prototype.
+</itemize>
+<tag/Availability/cc65
+<tag/See also/
+<ref id="cprintf" name="cprintf">,
+<ref id="cputc" name="cputc">,
+<ref id="cputs" name="cputs">,
+<ref id="cputsxy" name="cputsxy">,
+<ref id="vcprintf" name="vcprintf">
+<tag/Example/None.
+</descrip>
+</quote>
+
+
+<sect1>cputs<label id="cputs"><p>
+
+<quote>
+<descrip>
+<tag/Function/Output a string directly to the console.
+<tag/Header/<tt/<ref id="conio.h" name="conio.h">/
+<tag/Declaration/<tt/void __fastcall__ cputs (const char* s);/
+<tag/Description/The function outputs the given string on the console at the
+current cursor position.
+<tag/Limits/<itemize>
+<item>Like all other <tt/conio/ output functions, <tt/cputs/ distinguishes
+between <tt/\r/ and <tt/\n/.
+<item>The function is only available as fastcall function, so it may only
+be used in presence of a prototype.
+</itemize>
+<tag/Availability/cc65
+<tag/See also/
+<ref id="cprintf" name="cprintf">,
+<ref id="cputc" name="cputc">,
+<ref id="cputcxy" name="cputcxy">,
+<ref id="cputsxy" name="cputsxy">,
+<ref id="vcprintf" name="vcprintf">
+<tag/Example/None.
+</descrip>
+</quote>
+
+
+<sect1>cputsxy<label id="cputsxy"><p>
+
+<quote>
+<descrip>
+<tag/Function/Output a string to the console at a given position.
+<tag/Header/<tt/<ref id="conio.h" name="conio.h">/
+<tag/Declaration/<tt/void __fastcall__ cputsxy (unsigned char x, unsigned char y, const char* s);/
+<tag/Description/<tt/cputsxy/ moves the cursor to the given x/y position,
+and outputs the string <tt/s/.
+<tag/Limits/<itemize>
+<item>Like all other <tt/conio/ output functions, <tt/cputsxy/ distinguishes
+between <tt/\r/ and <tt/\n/.
+<item>The function is only available as fastcall function, so it may only
+be used in presence of a prototype.
+</itemize>
+<tag/Availability/cc65
+<tag/See also/
+<ref id="cprintf" name="cprintf">,
+<ref id="cputc" name="cputc">,
+<ref id="cputcxy" name="cputcxy">,
+<ref id="cputs" name="cputs">,
+<ref id="vcprintf" name="vcprintf">
+<tag/Example/None.
+</descrip>
+</quote>
+
+
 <sect1>cursor<label id="cursor"><p>
 
 <quote>
@@ -1187,6 +1663,28 @@ used in presence of a prototype.
 </quote>
 
 
+<sect1>div<label id="div"><p>
+
+<quote>
+<descrip>
+<tag/Function/Divide two ints and return quotient and remainder.
+<tag/Header/<tt/<ref id="stdlib.h" name="stdlib.h">/
+<tag/Declaration/<tt/div_t __fastcall__ div (int numer, int denom);/
+<tag/Description/<tt/div/ divides <tt/numer/ by <tt/denom/ and returns the
+quotient and remainder in a <tt/div_t/ structure.
+<tag/Limits/
+<itemize>
+<item>The function is only available as fastcall function, so it may only
+be used in presence of a prototype.
+</itemize>
+<tag/Availability/ISO 9899
+<tag/See also/
+ldiv
+<tag/Example/None.
+</descrip>
+</quote>
+
+
 <sect1>em_commit<label id="em_commit"><p>
 
 <quote>
@@ -1276,37 +1774,63 @@ loaded.
 </quote>
 
 
-<sect1>em_load_driver<label id="em_load_driver"><p>
+<sect1>em_install<label id="em_install"><p>
 
 <quote>
 <descrip>
-<tag/Function/Load and initialize an extended memory driver.
+<tag/Function/Install an already loaded extended memory driver.
 <tag/Header/<tt/<ref id="em.h" name="em.h">/
-<tag/Declaration/<tt/void __fastcall__ em_load_driver (const char* name);/
-<tag/Description/Load an extended memory driver into memory and initialize
-it. The function returns an error code that tells if all this has been
-successful.
+<tag/Declaration/<tt/unsigned char _fastcall__ em_install (void* driver);/
+<tag/Description/The function installs an already loaded extended memory driver
+and returns an error code. The function may be used to install a driver linked
+statically to the program.
 <tag/Limits/<itemize>
 <item>Not all drivers are able to detect if the supported hardware is really
 present.
 <item>The function is only available as fastcall function, so it may only be
 used in presence of a prototype.
-<item>The driver is loaded by name, so currently you must know the type of
-extended memory that should be supported. There is no autodetect capability.
 </itemize>
 <tag/Availability/cc65
 <tag/See also/
+<ref id="em_load_driver" name="em_load_driver">,
+<ref id="em_uninstall" name="em_uninstall">,
 <ref id="em_unload" name="em_unload">
 <tag/Example/None.
 </descrip>
 </quote>
 
 
-<sect1>em_map<label id="em_map"><p>
+<sect1>em_load_driver<label id="em_load_driver"><p>
 
 <quote>
 <descrip>
-<tag/Function/Make a page of extended memory accessible.
+<tag/Function/Load and initialize an extended memory driver.
+<tag/Header/<tt/<ref id="em.h" name="em.h">/
+<tag/Declaration/<tt/void __fastcall__ em_load_driver (const char* name);/
+<tag/Description/Load an extended memory driver into memory and initialize
+it. The function returns an error code that tells if all this has been
+successful.
+<tag/Limits/<itemize>
+<item>Not all drivers are able to detect if the supported hardware is really
+present.
+<item>The function is only available as fastcall function, so it may only be
+used in presence of a prototype.
+<item>The driver is loaded by name, so currently you must know the type of
+extended memory that should be supported. There is no autodetect capability.
+</itemize>
+<tag/Availability/cc65
+<tag/See also/
+<ref id="em_unload" name="em_unload">
+<tag/Example/None.
+</descrip>
+</quote>
+
+
+<sect1>em_map<label id="em_map"><p>
+
+<quote>
+<descrip>
+<tag/Function/Make a page of extended memory accessible.
 <tag/Header/<tt/<ref id="em.h" name="em.h">/
 <tag/Declaration/<tt/void* __fastcall__ em_map (unsigned page);/
 <tag/Description/The function maps one page of extended memory into linear
@@ -1356,13 +1880,40 @@ by the driver in 256 byte pages.
 </quote>
 
 
+<sect1>em_uninstall<label id="em_uninstall"><p>
+
+<quote>
+<descrip>
+<tag/Function/Uninstall an already loaded extended memory driver.
+<tag/Header/<tt/<ref id="em.h" name="em.h">/
+<tag/Declaration/<tt/unsigned char __fastcall__ em_install (void);/
+<tag/Description/The function uninstalls an already loaded extended memory
+driver but doesn't remove it from memory.
+<tag/Limits/<itemize>
+<item>If the driver has been loaded using <tt/<ref id="em_load_driver"
+name="em_load_driver">/, <tt/<ref id="em_unload" name="em_unload">/
+should be used instead of <tt/em_uninstall/ so the driver is also removed
+from memory.
+<item>The function is only available as fastcall function, so it may only be
+used in presence of a prototype.
+</itemize>
+<tag/Availability/cc65
+<tag/See also/
+<ref id="em_install" name="em_install">,
+<ref id="em_load_driver" name="em_load_driver">,
+<ref id="em_unload" name="em_unload">
+<tag/Example/None.
+</descrip>
+</quote>
+
+
 <sect1>em_unload<label id="em_unload"><p>
 
 <quote>
 <descrip>
 <tag/Function/Unload an extended memory driver.
 <tag/Header/<tt/<ref id="em.h" name="em.h">/
-<tag/Declaration/<tt/void __fastcall__ em_unload (void);/
+<tag/Declaration/<tt/unsigned char __fastcall__ em_unload (void);/
 <tag/Description/The function unloads a loaded extended memory driver and
 frees all memory allocated for the driver.
 <tag/Limits/<itemize>
@@ -1457,6 +2008,79 @@ will nearly double the speed compared to slow mode.
 </quote>
 
 
+<sect1>feof<label id="feof"><p>
+
+<quote>
+<descrip>
+<tag/Function/Return the end-of-file indicator of a stream.
+<tag/Header/<tt/<ref id="stdio.h" name="stdio.h">/
+<tag/Declaration/<tt/int __fastcall__ feof (FILE* f);/
+<tag/Description/<tt/feof/ tests the end-of-file indicator ofthe stream
+<tt/f/, and returns a non zero value if it is set.
+<tag/Limits/<itemize>
+<item>The indicator is set only after a read past the end of a file is
+attempted.
+<item>The function is only available as fastcall function, so it may only be
+used in presence of a prototype.
+</itemize>
+<tag/Availability/ISO 9899
+<tag/See also/
+<ref id="feof" name="clearerr">,
+<ref id="ferror" name="ferror">
+<tag/Example/None.
+</descrip>
+</quote>
+
+
+<sect1>ferror<label id="ferror"><p>
+
+<quote>
+<descrip>
+<tag/Function/Return the error indicator of a stream.
+<tag/Header/<tt/<ref id="stdio.h" name="stdio.h">/
+<tag/Declaration/<tt/int __fastcall__ ferror (FILE* f);/
+<tag/Description/<tt/ferror/ tests the error indicator of the stream
+<tt/f/, and returns a non zero value if it is set.
+<tag/Limits/<itemize>
+<item>The function is only available as fastcall function, so it may only be
+used in presence of a prototype.
+</itemize>
+<tag/Availability/ISO 9899
+<tag/See also/
+<ref id="feof" name="clearerr">,
+<ref id="ferror" name="feof">
+<tag/Example/None.
+</descrip>
+</quote>
+
+
+<sect1>fileno<label id="fileno"><p>
+
+<quote>
+<descrip>
+<tag/Function/Return the file handle used by a stream.
+<tag/Header/<tt/<ref id="stdio.h" name="stdio.h">/
+<tag/Declaration/<tt/int __fastcall__ fileno (FILE* f);/
+<tag/Description/The <tt/fileno/ function returns the file handle used
+internally by a C stream. This file handle (an integer) can be used as a
+handle for the POSIX input/output functions.
+<tag/Limits/<itemize>
+<item>The function is only available as fastcall function, so it may only be
+used in presence of a prototype.
+<item>Mixing C file I/O functions and POSIX file I/O functions for the same
+file may have unpredictable results.
+</itemize>
+<tag/Availability/POSIX 1003.1
+<tag/See also/
+<ref id="creat" name="creat">,
+<ref id="open" name="open"> <!-- , -->
+<!-- <ref id="read" name="read">, -->
+<!-- <ref id="write" name="write"> -->
+<tag/Example/None.
+</descrip>
+</quote>
+
+
 <sect1>free<label id="free"><p>
 
 <quote>
@@ -1478,6 +2102,7 @@ be used in presence of a prototype.
 <tag/Availability/ISO 9899
 <tag/See also/
 <ref id="_heapadd" name="_heapadd">,
+<ref id="_heapblocksize" name="_heapblocksize">,
 <ref id="_heapmaxavail" name="_heapmaxavail">,
 <ref id="_heapmemavail" name="_heapmemavail">,
 <ref id="calloc" name="calloc">,
@@ -1488,6 +2113,28 @@ be used in presence of a prototype.
 </quote>
 
 
+<sect1>get_ostype<label id="get_ostype"><p>
+
+<quote>
+<descrip>
+<tag/Function/The function returns the operating system, the program runs on.
+<tag/Header/<tt/<ref id="apple2.h" name="apple2.h">,
+<ref id="atari.h" name="atari.h">, <ref id="c64.h" name="c64.h">/
+<tag/Declaration/<tt/unsigned char get_ostype (void);/
+<tag/Description/<tt/get_ostype/ is machine dependent and does not exist for
+all supported targets. If it exists, it returns a number that identifies the
+operating system or machine type, the program runs on. The machine dependent
+header files define constants that can be used to check the return code.
+<tag/Limits/<itemize>
+<item>The function does not exist on all platforms.
+<item>The return codes are platform dependent.
+</itemize>
+<tag/Availability/cc65 (not all platforms)
+<tag/Example/None.
+</descrip>
+</quote>
+
+
 <sect1>getenv<label id="getenv"><p>
 
 <quote>
@@ -1735,7 +2382,7 @@ fastcall function, so it may only be used in presence of a prototype.
 <tag/Header/<tt/<ref id="ctype.h" name="ctype.h">/
 <tag/Declaration/<tt/int __fastcall__ isblank (int c);/
 <tag/Description/The function returns a value of zero if the given argument
-is a blank or space character. The return value is non zero if the character
+is a space or tab character. The return value is non zero if the character
 is anything else.
 <tag/Limits/<itemize>
 <item>When compiling with <tt/-Os/ the function is actually a macro. The
@@ -2139,6 +2786,156 @@ used in presence of a prototype.
 </quote>
 
 
+<sect1>joy_count<label id="joy_count"><p>
+
+<quote>
+<descrip>
+<tag/Function/Return the number of joysticks supported by the current driver.
+<tag/Header/<tt/<ref id="joystick.h" name="joystick.h">/
+<tag/Declaration/<tt/unsigned char __fastcall__ joy_count (void);/
+<tag/Description/The function returns a the number of joysticks supported
+by the current joystick driver.
+<tag/Limits/<itemize>
+<item>A joystick driver must be loaded using <ref id="joy_load_driver"
+name="joy_load_driver"> before calling this function.
+<item>The function returns the number of joysticks supported by the driver.
+There's no way to check for the number of actually connected joysticks.
+<item>The function is only available as fastcall function, so it may only be
+used in presence of a prototype.
+</itemize>
+<tag/Availability/cc65
+<tag/See also/
+<ref id="joy_load_driver" name="joy_load_driver">,
+<ref id="joy_read" name="joy_read">
+<tag/Example/None.
+</descrip>
+</quote>
+
+
+<sect1>joy_install<label id="joy_install"><p>
+
+<quote>
+<descrip>
+<tag/Function/Install an already loaded driver and return an error code.
+<tag/Header/<tt/<ref id="joystick.h" name="joystick.h">/
+<tag/Declaration/<tt/unsigned char __fastcall__ joy_install (void* driver);/
+<tag/Description/The function installs a driver that was already loaded into
+memory (or linked statically to the program). It returns an error code
+(<tt/JOY_ERR_OK/ in case of success).
+<tag/Limits/<itemize>
+<item>The function is only available as fastcall function, so it may only be
+used in presence of a prototype.
+</itemize>
+<tag/Availability/cc65
+<tag/See also/
+<ref id="joy_load_driver" name="joy_load_driver">,
+<ref id="joy_uninstall" name="joy_uninstall">,
+<ref id="joy_unload" name="joy_unload">
+<tag/Example/None.
+</descrip>
+</quote>
+
+
+<sect1>joy_load_driver<label id="joy_load_driver"><p>
+
+<quote>
+<descrip>
+<tag/Function/Load a driver from disk and install it.
+<tag/Header/<tt/<ref id="joystick.h" name="joystick.h">/
+<tag/Declaration/<tt/unsigned char __fastcall__ joy_load_driver (const char* driver);/
+<tag/Description/The function loads a driver with the given name from disk
+and installs it. An error code is returned, which is <tt/JOY_ERR_OK/ if the
+driver was successfully loaded and installed.
+<tag/Limits/<itemize>
+<item>The function is only available as fastcall function, so it may only be
+used in presence of a prototype.
+</itemize>
+<tag/Availability/cc65
+<tag/See also/
+<ref id="joy_install" name="joy_install">,
+<ref id="joy_uninstall" name="joy_uninstall">,
+<ref id="joy_unload" name="joy_unload">
+<tag/Example/None.
+</descrip>
+</quote>
+
+
+<sect1>joy_read<label id="joy_read"><p>
+
+<quote>
+<descrip>
+<tag/Function/Read the status of a joystick.
+<tag/Header/<tt/<ref id="joystick.h" name="joystick.h">/
+<tag/Declaration/<tt/unsigned char __fastcall__ joy_read (unsigned char joystick);/
+<tag/Description/The function reads the status bits for a joystick. The number
+of the joystick is passed as parameter. The result may be examined by using one
+of the <tt/JOY_xxx/ macros from <ref id="joystick.h" name="joystick.h">.
+<tag/Limits/<itemize>
+<item>A joystick driver must be loaded using <ref id="joy_load_driver"
+name="joy_load_driver"> before calling this function.
+<item>The function is only available as fastcall function, so it may only be
+used in presence of a prototype.
+</itemize>
+<tag/Availability/cc65
+<tag/See also/
+<ref id="joy_count" name="joy_count">,
+<ref id="joy_load_driver" name="joy_load_driver">,
+<ref id="joy_unload" name="joy_unload">
+<tag/Example/None.
+</descrip>
+</quote>
+
+
+<sect1>joy_uninstall<label id="joy_uninstall"><p>
+
+<quote>
+<descrip>
+<tag/Function/Uninstall the current joystick driver.
+<tag/Header/<tt/<ref id="joystick.h" name="joystick.h">/
+<tag/Declaration/<tt/unsigned char __fastcall__ joy_uninstall (void);/
+<tag/Description/The function uninstalls the currently installed joystick
+driver. It does not remove the driver from memory. The function returns an
+error code, which is <tt/JOY_ERR_OK/ if the driver was successfully uninstalled.
+<tag/Limits/<itemize>
+<item>A joystick driver must be installed using <ref id="joy_install"
+name="joy_install"> before calling this function.
+<item>The function is only available as fastcall function, so it may only be
+used in presence of a prototype.
+</itemize>
+<tag/Availability/cc65
+<tag/See also/
+<ref id="joy_install" name="joy_install">,
+<ref id="joy_load_driver" name="joy_load_driver">,
+<ref id="joy_unload" name="joy_unload">
+<tag/Example/None.
+</descrip>
+</quote>
+
+
+<sect1>joy_unload<label id="joy_unload"><p>
+
+<quote>
+<descrip>
+<tag/Function/Uninstall, then unload the current joystick driver.
+<tag/Header/<tt/<ref id="joystick.h" name="joystick.h">/
+<tag/Declaration/<tt/unsigned char __fastcall__ joy_unload (void);/
+<tag/Description/The function uninstalls the currently installed joystick
+driver and removes it from memory. An error code is returned, which is
+<tt/JOY_ERR_OK/ if the driver was successfully uninstalled.
+<tag/Limits/<itemize>
+<item>A joystick driver must be loaded using <ref id="joy_load_driver"
+name="joy_load_driver"> before calling this function.
+<item>The function is only available as fastcall function, so it may only be
+used in presence of a prototype.
+</itemize>
+<tag/Availability/cc65
+<tag/See also/
+<ref id="joy_load_driver" name="joy_load_driver">
+<tag/Example/None.
+</descrip>
+</quote>
+
+
 <sect1>kbhit<label id="kbhit"><p>
 
 <quote>
@@ -2212,6 +3009,55 @@ used in presence of a prototype.
 </quote>
 
 
+<sect1>localeconv<label id="localeconv"><p>
+
+<quote>
+<descrip>
+<tag/Function/Returns a pointer to the current locale structure.
+<tag/Header/<tt/<ref id="locale.h" name="locale.h">/
+<tag/Declaration/<tt/struct lconv* localeconv (void);/
+<tag/Description/<tt/localeconv/ returns a pointer to the current locale
+structure.
+<tag/Limits/<itemize>
+<item>cc65 supports only the "C" locale, so even after setting a new locale
+using <tt/<ref id="setlocale" name="setlocale">/, the structure returned will
+always be the same.
+</itemize>
+<tag/Availability/ISO 9899
+<tag/See also/
+<ref id="setlocale" name="setlocale">
+<tag/Example/None.
+</descrip>
+</quote>
+
+
+<sect1>longjmp<label id="longjmp"><p>
+
+<quote>
+<descrip>
+<tag/Function/Non local goto.
+<tag/Header/<tt/<ref id="setjmp.h" name="setjmp.h">/
+<tag/Declaration/<tt/void __fastcall__ longjmp (jmp_buf buf, int retval);/
+<tag/Description/The <tt/longjmp/ function restores a program context from the
+data in <tt/buf/, which must have been set by a preceeding call to
+<tt/<ref id="setjmp" name="setjmp">/. Program execution continues as if the
+call to <tt/<ref id="setjmp" name="setjmp">/ has just returned the value
+<tt/retval/.
+<tag/Limits/
+<itemize>
+<item>If the parameter <tt/retval/ is zero, the function will behave as if it
+was called with a value of one.
+<item>The function is only available as fastcall function, so it may only
+be used in presence of a prototype.
+</itemize>
+<tag/Availability/ISO 9899
+<tag/See also/
+<ref id="setjmp" name="setjmp">
+<tag/Example/None.
+</descrip>
+</quote>
+
+
 <sect1>malloc<label id="malloc"><p>
 
 <quote>
@@ -2230,11 +3076,36 @@ be used in presence of a prototype.
 <tag/Availability/ISO 9899
 <tag/See also/
 <ref id="_heapadd" name="_heapadd">,
+<ref id="_heapblocksize" name="_heapblocksize">,
 <ref id="_heapmaxavail" name="_heapmaxavail">,
 <ref id="_heapmemavail" name="_heapmemavail">,
 <ref id="calloc" name="calloc">,
 <ref id="free" name="free">,
-<ref id="realloc" name="realloc">
+<ref id="realloc" name="realloc">,
+<ref id="strdup" name="strdup">
+<tag/Example/None.
+</descrip>
+</quote>
+
+
+<sect1>memchr<label id="memchr"><p>
+
+<quote>
+<descrip>
+<tag/Function/Search for a character in a block of raw memory.
+<tag/Header/<tt/<ref id="string.h" name="string.h">/
+<tag/Declaration/<tt/void* __fastcall__ strchr (const void* mem, int c, size_t count);/
+<tag/Description/The <tt/memchr/ function locates the first occurrence of <tt/c/
+(converted to a char) in the block of raw memory string pointed to by <tt/mem/
+that is of size <tt/count/. Upon completion, the function returns a pointer to
+the character found, or a null pointer if the character was not found.
+<tag/Limits/<itemize>
+<item>The function is only available as fastcall function, so it may only
+be used in presence of a prototype.
+</itemize>
+<tag/Availability/ISO 9899
+<tag/See also/
+<ref id="strchr" name="strchr">
 <tag/Example/None.
 </descrip>
 </quote>
@@ -2319,58 +3190,615 @@ be used in presence of a prototype.
 </quote>
 
 
-<sect1>offsetof<label id="offsetof"><p>
+<sect1>mod_free<label id="mod_free"><p>
 
 <quote>
 <descrip>
-<tag/Function/Calculate the offset of a struct or union member.
-<tag/Header/<tt/<ref id="stddef.h" name="stddef.h">/
-<tag/Declaration/<tt/size_t offsetof (type, member);/
-<tag/Description/<tt/offsetof/ calculates the address offset of a <tt/struct/
-or <tt/union/ member.
+<tag/Function/Free a relocatable module.
+<tag/Header/<tt/<ref id="modload.h" name="modload.h">/
+<tag/Declaration/<tt/void __fastcall__ mod_free (void* module);/
+<tag/Description/The function will free a module loaded into memory by use of
+the <tt/<ref id="mod_load" name="mod_load">/ function.
 <tag/Limits/<itemize>
-<item>The function is actually a macro.
+<item>The pointer passed as parameter is the pointer to the module memory,
+not the pointer to the control structure.
 </itemize>
-<tag/Availability/ISO 9899
+<tag/Availability/cc65
+<tag/See also/
+<ref id="mod_load" name="mod_load">
 <tag/Example/None.
 </descrip>
 </quote>
 
 
-<sect1>open<label id="open"><p>
+<sect1>mod_load<label id="mod_load"><p>
 
 <quote>
 <descrip>
-<tag/Function/Open and possibly create a file.
-<tag/Header/<tt/<ref id="fcntl.h" name="fcntl.h">/
-<tag/Declaration/<tt/int open (const char* name, int flags, ...);/
-<tag/Description/<tt/open/ opens a file and returns the file descriptor
-associated with it. On error, -1 is returned and an error code is stored in
-<tt/errno/. Several flags may be passed to <tt/open/ that change the behaviour.
+<tag/Function/Load a relocatable module.
+<tag/Header/<tt/<ref id="modload.h" name="modload.h">/
+<tag/Declaration/<tt/unsigned char mod_load (struct mod_ctrl* ctrl);/
+<tag/Description/The function will load a code module into memory and relocate
+it. The function will return an error code. If <tt/MLOAD_OK/ is returned, the
+outgoing fields in the passed <tt/mod_ctrl/ struct contain information about
+the module just loaded. Possible error codes are:
+<itemize>
+<item><tt/MLOAD_OK/ - Module load successful
+<item><tt/MLOAD_ERR_READ/ - Read error
+<item><tt/MLOAD_ERR_HDR/ - Header error
+<item><tt/MLOAD_ERR_OS/ - Wrong operating system
+<item><tt/MLOAD_ERR_FMT/ - Data format error
+<item><tt/MLOAD_ERR_MEM/ - Not enough memory
+</itemize>
 <tag/Limits/<itemize>
-<item>POSIX specifies an additional <tt/mode/ argument that may be passed to
-open, which is used as the permission mask when a new file is created. While
-cc65 allows to pass this argument, it is ignored.
+<item>The <htmlurl url="ld65.html" name="ld65"> linker is needed to create
+relocatable o65 modules for use with this function.
 </itemize>
-<tag/Availability/POSIX
+<tag/Availability/cc65
 <tag/See also/
-<ref id="close" name="close">,
-<ref id="creat" name="creat">
+<ref id="mod_free" name="mod_free">
 <tag/Example/None.
 </descrip>
 </quote>
 
 
-<sect1>raise<label id="raise"><p>
+<sect1>mouse_box<label id="mouse_box"><p>
 
 <quote>
 <descrip>
-<tag/Function/Send a signal to the executing program.
-<tag/Header/<tt/<ref id="signal.h" name="signal.h">/
-<tag/Declaration/<tt/int __fastcall__ raise (int sig);/
-<tag/Description/<tt/raise/ sends the given signal to the program. If the
-program has installed a signal handler for the signal, this signal handler
-will be executed. If no handler has been installed, the default action for
+<tag/Function/Specify a bounding box for the mouse cursor.
+<tag/Header/<tt/<ref id="mouse.h" name="mouse.h">/
+<tag/Declaration/<tt/void __fastcall__ mouse_box (int minx, int miny,
+int maxx, int maxy);/
+<tag/Description/The function allows to set a bounding box for mouse movement.
+<tag/Limits/<itemize>
+<item>The function does not check if the mouse cursor is currently within the
+given rectangle. Placing the mouse cursor within the bounding box is the
+responsibility of the programmer.
+<item>While the bounding box may be larger than the actual screen size, the
+standard mouse cursor draw routines may fail to set the cursor to coordinates
+outside of the screen area. Depending on the platform, you may have to supply
+your own mouse cursor routines.
+<item>The function is only available as fastcall function, so it may only be
+used in presence of a prototype.
+</itemize>
+<tag/Availability/cc65
+<tag/See also/
+<ref id="mouse_move" name="mouse_move">
+<tag/Example/None.
+</descrip>
+</quote>
+
+
+<sect1>mouse_buttons<label id="mouse_buttons"><p>
+
+<quote>
+<descrip>
+<tag/Function/Return a bit mask encoding the state of the mouse buttons.
+<tag/Header/<tt/<ref id="mouse.h" name="mouse.h">/
+<tag/Declaration/<tt/unsigned char __fastcall__ mouse_buttons (void);/
+<tag/Description/The function returns a bit mask that encodes the state of the
+mouse buttons. You may use the <tt/MOUSE_BTN_XXX/ flags to decode the function
+return value.
+<tag/Limits/<itemize>
+<item>The function is only available as fastcall function, so it may only be
+used in presence of a prototype.
+</itemize>
+<tag/Availability/cc65
+<tag/See also/
+<ref id="mouse_info" name="mouse_info">,
+<ref id="mouse_pos" name="mouse_pos">
+<tag/Example/None.
+</descrip>
+</quote>
+
+
+<sect1>mouse_geterrormsg<label id="mouse_geterrormsg"><p>
+
+<quote>
+<descrip>
+<tag/Function/Return a readable error message for an error code.
+<tag/Header/<tt/<ref id="mouse.h" name="mouse.h">/
+<tag/Declaration/<tt/const char* __fastcall__ mouse_geterrormsg (unsigned char
+code);/
+<tag/Description/The function returns an error message (in english) for the
+error code passed parameter.
+<tag/Limits/<itemize>
+<item>The function will return "Unknown error" for invalid error codes.
+<item>The function is only available as fastcall function, so it may only be
+used in presence of a prototype.
+</itemize>
+<tag/Availability/cc65
+<tag/See also/
+<ref id="mouse_load_driver" name="mouse_load_driver">,
+<ref id="mouse_uninstall" name="mouse_uninstall">,
+<ref id="mouse_unload" name="mouse_unload">
+<tag/Example/None.
+</descrip>
+</quote>
+
+
+<sect1>mouse_hide<label id="mouse_hide"><p>
+
+<quote>
+<descrip>
+<tag/Function/Hide the mouse pointer.
+<tag/Header/<tt/<ref id="mouse.h" name="mouse.h">/
+<tag/Declaration/<tt/void __fastcall__ mouse_hide (void);/
+<tag/Description/The function hides the mouse pointer. It manages a counter
+that is shared between <tt/<ref id="mouse_show" name="mouse_show">/ and
+<tt/mouse_hide/ so that every call call to <tt/mouse_hide/ must be followed by
+a call to <tt/<ref id="mouse_show" name="mouse_show">/ to make the mouse cursor
+visible.
+<tag/Limits/<itemize>
+<item>The function is only available as fastcall function, so it may only be
+used in presence of a prototype.
+</itemize>
+<tag/Availability/cc65
+<tag/See also/
+<ref id="mouse_show" name="mouse_show">
+<tag/Example/None.
+</descrip>
+</quote>
+
+
+<sect1>mouse_info<label id="mouse_info"><p>
+
+<quote>
+<descrip>
+<tag/Function/Return the state of the mouse buttons and the position of the
+mouse.
+<tag/Header/<tt/<ref id="mouse.h" name="mouse.h">/
+<tag/Declaration/<tt/void __fastcall__ mouse_info (struct mouse_info* info);/
+<tag/Description/The function returns the state of the mouse buttons and the
+position of the mouse in the <tt/mouse_info/ structure passed as parameter.
+<tag/Limits/<itemize>
+<item>The <tt/mouse_info/ struct is a superset of the <tt/mouse_pos/ struct,
+so if you just need the mouse position, call <tt/<ref id="mouse_pos"
+name="mouse_pos">/ instead.
+<item>The function is only available as fastcall function, so it may only be
+used in presence of a prototype.
+</itemize>
+<tag/Availability/cc65
+<tag/See also/
+<ref id="mouse_buttons" name="mouse_buttons">,
+<ref id="mouse_pos" name="mouse_pos">
+<tag/Example/None.
+</descrip>
+</quote>
+
+
+<sect1>mouse_install<label id="mouse_install"><p>
+
+<quote>
+<descrip>
+<tag/Function/Install an already loaded mouse driver.
+<tag/Header/<tt/<ref id="mouse.h" name="mouse.h">/
+<tag/Declaration/<tt/unsigned char __fastcall__ mouse_install (const struct
+mouse_callbacks* c, void* driver);/
+<tag/Description/The function installs an already loaded mouse driver and
+returns an error code. The <tt/mouse_callbacks/ structure passed as first
+parameter contains pointers to routines needed to move or hide/show the mouse
+pointer. Defaults for these routines are supplied by the library, so if you
+can live with these defaults (which are platform specific), just pass a
+pointer to <tt/mouse_def_callbacks/. The function may be used to install a
+driver linked statically to the program.
+<tag/Limits/<itemize>
+<item>Not all drivers are able to detect if the supported hardware is really
+present.
+<item>After installing a driver, the mouse cursor is hidden.
+<item>The function is only available as fastcall function, so it may only be
+used in presence of a prototype.
+</itemize>
+<tag/Availability/cc65
+<tag/See also/
+<ref id="mouse_load_driver" name="mouse_load_driver">,
+<ref id="mouse_uninstall" name="mouse_uninstall">,
+<ref id="mouse_unload" name="mouse_unload">
+<tag/Example/None.
+</descrip>
+</quote>
+
+
+<sect1>mouse_ioctl<label id="mouse_ioctl"><p>
+
+<quote>
+<descrip>
+<tag/Function/Call the driver specific ioctl function.
+<tag/Header/<tt/<ref id="mouse.h" name="mouse.h">/
+<tag/Declaration/<tt/unsigned char __fastcall__ mouse_ioctl (unsigned char code, void* data);/
+<tag/Description/The function calls the IOCTL entry in the mouse driver,
+which is driver specific. The <tt/code/ parameter will choose between
+different IOCTL functions, and the <tt/data/ depends on code. The
+function returns an error code. The purpose of this function is to allow
+for driver specific extensions. See the documentation for a specific mouse
+driver for supported ioctl calls.
+<tag/Limits/<itemize>
+<item>Calling this function is non portable, because each driver may
+implement different ioctl calls (or none at all).
+<item>The function is only available as fastcall function, so it may only be
+used in presence of a prototype.
+</itemize>
+<tag/Availability/cc65
+<tag/Example/None.
+</descrip>
+</quote>
+
+
+<sect1>mouse_load_driver<label id="mouse_load_driver"><p>
+
+<quote>
+<descrip>
+<tag/Function/Load and initialize a mouse driver.
+<tag/Header/<tt/<ref id="mouse.h" name="mouse.h">/
+<tag/Declaration/<tt/unsigned char __fastcall__ mouse_load_driver (const struct
+mouse_callbacks* c, const char* driver);/
+<tag/Description/Load a mouse driver into memory and initialize it. The
+function returns an error code that tells if the call has been successful. The
+<tt/mouse_callbacks/ structure passed as first parameter contains pointers to
+routines needed to move or hide/show the mouse pointer. Defaults for these
+routines are supplied by the library, so if you can live with these defaults
+(which are platform specific), just pass a pointer to <tt/mouse_def_callbacks/.
+<tag/Limits/<itemize>
+<item>The driver is loaded by name, so currently you must know the type of
+mouse that should be supported. There is no autodetect capability.
+<item>Not all drivers are able to detect if the supported hardware is really
+present.
+<item>After installing a driver, the mouse cursor is hidden.
+<item>The function is only available as fastcall function, so it may only be
+used in presence of a prototype.
+</itemize>
+<tag/Availability/cc65
+<tag/See also/
+<ref id="mouse_install" name="mouse_install">,
+<ref id="mouse_uninstall" name="mouse_uninstall">,
+<ref id="mouse_unload" name="mouse_unload">
+<tag/Example/None.
+</descrip>
+</quote>
+
+
+<sect1>mouse_move<label id="mouse_move"><p>
+
+<quote>
+<descrip>
+<tag/Function/Move the mouse cursor to a specific position.
+<tag/Header/<tt/<ref id="mouse.h" name="mouse.h">/
+<tag/Declaration/<tt/void __fastcall__ mouse_move (int x, int y);/
+<tag/Description/The function updates the mouse position. If the mouse cursor
+is visible, it is shown at the new position.
+<tag/Limits/<itemize>
+<item>The function does not check if the new position is within the bounding
+box specified with <tt/<ref id="mouse_box" name="mouse_box">/.
+<item>The function is only available as fastcall function, so it may only be
+used in presence of a prototype.
+</itemize>
+<tag/Availability/cc65
+<tag/See also/
+<ref id="mouse_box" name="mouse_box">
+<tag/Example/None.
+</descrip>
+</quote>
+
+
+<sect1>mouse_pos<label id="mouse_pos"><p>
+
+<quote>
+<descrip>
+<tag/Function/Return the position of the mouse.
+<tag/Header/<tt/<ref id="mouse.h" name="mouse.h">/
+<tag/Declaration/<tt/void __fastcall__ mouse_pos (struct mouse_pos* pos);/
+<tag/Description/The function returns the position of the mouse in the
+<tt/mouse_pos/ structure passed as parameter.
+<tag/Limits/<itemize>
+<item>The <tt/mouse_pos/ struct is a subset of the <tt/mouse_info/ struct,
+so if you do also need the mouse buttons, call <tt/<ref id="mouse_info"
+name="mouse_info">/ instead.
+<item>The function is only available as fastcall function, so it may only be
+used in presence of a prototype.
+</itemize>
+<tag/Availability/cc65
+<tag/See also/
+<ref id="mouse_buttons" name="mouse_buttons">,
+<ref id="mouse_info" name="mouse_info">
+<tag/Example/None.
+</descrip>
+</quote>
+
+
+<sect1>mouse_show<label id="mouse_show"><p>
+
+<quote>
+<descrip>
+<tag/Function/Show the mouse pointer.
+<tag/Header/<tt/<ref id="mouse.h" name="mouse.h">/
+<tag/Declaration/<tt/void __fastcall__ mouse_show (void);/
+<tag/Description/The function shows the mouse pointer. It manages a counter
+that is shared between <tt/<ref id="mouse_hide" name="mouse_hide">/ and
+<tt/mouse_show/. The mouse cursor is visible if there was one more call to
+<tt/mouse_show/ than to <tt/<ref id="mouse_hide" name="mouse_hide">/.
+<tag/Limits/<itemize>
+<item>The function is only available as fastcall function, so it may only be
+used in presence of a prototype.
+</itemize>
+<tag/Availability/cc65
+<tag/See also/
+<ref id="mouse_hide" name="mouse_hide">
+<tag/Example/None.
+</descrip>
+</quote>
+
+
+<sect1>mouse_uninstall<label id="mouse_uninstall"><p>
+
+<quote>
+<descrip>
+<tag/Function/Uninstall an already loaded mouse driver.
+<tag/Header/<tt/<ref id="mouse.h" name="mouse.h">/
+<tag/Declaration/<tt/unsigned char __fastcall__ mouse_install (void);/
+<tag/Description/The function uninstalls an already loaded mouse driver but
+don't removes it from memory.
+<tag/Limits/<itemize>
+<item>If the driver has been loaded using <tt/<ref id="mouse_load_driver"
+name="mouse_load_driver">/, <tt/<ref id="mouse_unload" name="mouse_unload">/
+should be used instead of <tt/mouse_uninstall/ so the driver is also removed
+from memory.
+<item>The function is only available as fastcall function, so it may only be
+used in presence of a prototype.
+</itemize>
+<tag/Availability/cc65
+<tag/See also/
+<ref id="mouse_install" name="mouse_install">,
+<ref id="mouse_load_driver" name="mouse_load_driver">,
+<ref id="mouse_unload" name="mouse_unload">
+<tag/Example/None.
+</descrip>
+</quote>
+
+
+<sect1>mouse_unload<label id="mouse_unload"><p>
+
+<quote>
+<descrip>
+<tag/Function/Unload a mouse driver.
+<tag/Header/<tt/<ref id="mouse.h" name="mouse.h">/
+<tag/Declaration/<tt/unsigned char __fastcall__ mouse_unload (void);/
+<tag/Description/The function unloads a loaded mouse driver and frees all
+memory allocated for the driver.
+<tag/Limits/<itemize>
+<item>The function does nothing if no driver is loaded.
+</itemize>
+<tag/Availability/cc65
+<tag/See also/
+<ref id="mouse_install" name="mouse_install">,
+<ref id="mouse_load_driver" name="mouse_load_driver">,
+<ref id="mouse_uninstall" name="mouse_uninstall">
+<tag/Example/None.
+</descrip>
+</quote>
+
+
+<sect1>offsetof<label id="offsetof"><p>
+
+<quote>
+<descrip>
+<tag/Function/Calculate the offset of a struct or union member.
+<tag/Header/<tt/<ref id="stddef.h" name="stddef.h">/
+<tag/Declaration/<tt/size_t offsetof (type, member);/
+<tag/Description/<tt/offsetof/ calculates the address offset of a <tt/struct/
+or <tt/union/ member.
+<tag/Limits/<itemize>
+<item>The function is actually a macro.
+</itemize>
+<tag/Availability/ISO 9899
+<tag/Example/None.
+</descrip>
+</quote>
+
+
+<sect1>open<label id="open"><p>
+
+<quote>
+<descrip>
+<tag/Function/Open and possibly create a file.
+<tag/Header/<tt/<ref id="fcntl.h" name="fcntl.h">/
+<tag/Declaration/<tt/int open (const char* name, int flags, ...);/
+<tag/Description/<tt/open/ opens a file and returns the file descriptor
+associated with it. On error, -1 is returned and an error code is stored in
+<tt/errno/. Several flags may be passed to <tt/open/ that change the behaviour.
+<tag/Limits/<itemize>
+<item>POSIX specifies an additional <tt/mode/ argument that may be passed to
+open, which is used as the permission mask when a new file is created. While
+cc65 allows to pass this argument, it is ignored.
+</itemize>
+<tag/Availability/POSIX 1003.1
+<tag/See also/
+<ref id="close" name="close">,
+<ref id="creat" name="creat">
+<tag/Example/None.
+</descrip>
+</quote>
+
+
+<sect1>peekbsys<label id="peekbsys"><p>
+
+<quote>
+<descrip>
+<tag/Function/Read one byte from a location in the system bank.
+<tag/Header/<tt/<ref id="cbm610.h" name="cbm610.h">/,
+<tt/<ref id="cbm510.h" name="cbm510.h">/
+<tag/Declaration/<tt/unsigned char __fastcall__ peekbsys (unsigned addr);/
+<tag/Description/<tt/peekbsys/ reads one byte from the given address in the
+system bank (bank 15) of the CBM PET-II machines and returns it.
+<tag/Limits/
+<itemize>
+<item>The function is only available as fastcall function, so it may only
+be used in presence of a prototype.
+<item>This function may be a macro depending on the compiler options. The
+actual function is accessible by #undef'ing the macro.
+</itemize>
+<tag/Availability/cc65
+<tag/See also/
+<ref id="PEEK" name="PEEK">,
+<ref id="PEEKW" name="PEEKW">,
+<ref id="peekwsys" name="peekwsys">,
+<ref id="pokebsys" name="pokebsys">,
+<ref id="pokewsys" name="pokewsys">
+<tag/Example/None.
+</descrip>
+</quote>
+
+
+<sect1>peekwsys<label id="peekwsys"><p>
+
+<quote>
+<descrip>
+<tag/Function/Read one word from a location in the system bank.
+<tag/Header/<tt/<ref id="cbm610.h" name="cbm610.h">/,
+<tt/<ref id="cbm510.h" name="cbm510.h">/
+<tag/Declaration/<tt/unsigned __fastcall__ peekwsys (unsigned addr);/
+<tag/Description/<tt/peekwsys/ reads one word from the given address in the
+system bank (bank 15) of the CBM PET-II machines and returns it. Following
+the usual 6502 conventions, the low byte is read from <tt/addr/, and the
+high byte is read from <tt/addr+1/.
+<tag/Limits/
+<itemize>
+<item>The function is only available as fastcall function, so it may only
+be used in presence of a prototype.
+<item>The order in which the two bytes are read is undefined.
+</itemize>
+<tag/Availability/cc65
+<tag/See also/
+<ref id="PEEK" name="PEEK">,
+<ref id="PEEKW" name="PEEKW">,
+<ref id="peekbsys" name="peekbsys">,
+<ref id="pokebsys" name="pokebsys">,
+<ref id="pokewsys" name="pokewsys">
+<tag/Example/None.
+</descrip>
+</quote>
+
+
+<sect1>perror<label id="perror"><p>
+
+<quote>
+<descrip>
+<tag/Function/Print an error message for the error in <tt/errno/.
+<tag/Header/<tt/<ref id="stdio.h" name="stdio.h">/
+<tag/Declaration/<tt/void __fastcall__ perror (const char* s);/
+<tag/Description/<tt/perror/ prints an error message to <tt/stderr/. If <tt/s/
+is not <tt/NULL/ and not an empty string, it is printed followed by a colon and
+a blank. Then the error message for the current contents of <tt/errno/ is
+printed followed by a newline. The message output is the same as returned by
+<tt/<ref id="strerror" name="strerror">/ with an argument of <tt/errno/.
+<tag/Limits/
+<itemize>
+<item>The function is only available as fastcall function, so it may only
+be used in presence of a prototype.
+</itemize>
+<tag/Availability/ISO 9899
+<tag/See also/
+<ref id="_poserror" name="_poserror">,
+<ref id="strerror" name="strerror">
+<tag/Example/None.
+</descrip>
+</quote>
+
+
+<sect1>pokebsys<label id="pokebsys"><p>
+
+<quote>
+<descrip>
+<tag/Function/Write one byte to a location in the system bank.
+<tag/Header/<tt/<ref id="cbm610.h" name="cbm610.h">/,
+<tt/<ref id="cbm510.h" name="cbm510.h">/
+<tag/Declaration/<tt/void __fastcall__ pokebsys (unsigned addr, unsigned char val);/
+<tag/Description/<tt/pokebsys/ writes one byte to the given address in the
+system bank (bank 15) of the CBM PET-II machines.
+<tag/Limits/
+<itemize>
+<item>The function is only available as fastcall function, so it may only
+be used in presence of a prototype.
+</itemize>
+<tag/Availability/cc65
+<tag/See also/
+<ref id="POKE" name="POKE">,
+<ref id="POKEW" name="POKEW">,
+<ref id="peekbsys" name="peekbsys">,
+<ref id="peekwsys" name="peekwsys">,
+<ref id="pokewsys" name="pokewsys">
+<tag/Example/None.
+</descrip>
+</quote>
+
+
+<sect1>pokewsys<label id="pokewsys"><p>
+
+<quote>
+<descrip>
+<tag/Function/Write one word to a location in the system bank.
+<tag/Header/<tt/<ref id="cbm610.h" name="cbm610.h">/,
+<tt/<ref id="cbm510.h" name="cbm510.h">/
+<tag/Declaration/<tt/void __fastcall__ pokewsys (unsigned addr, unsigned val);/
+<tag/Description/<tt/pokewsys/ writes one word to the given address in the
+system bank (bank 15) of the CBM PET-II machines. Following the usual 6502
+conventions, the low byte of <tt/val/ is written to <tt/addr/, and the
+high byte is written to <tt/addr+1/.
+<tag/Limits/
+<itemize>
+<item>The function is only available as fastcall function, so it may only
+be used in presence of a prototype.
+<item>The order in which the two bytes are written is undefined.
+</itemize>
+<tag/Availability/cc65
+<tag/See also/
+<ref id="POKE" name="POKE">,
+<ref id="POKEW" name="POKEW">,
+<ref id="peekbsys" name="peekbsys">,
+<ref id="peekwsys" name="peekwsys">,
+<ref id="pokebsys" name="pokebsys">
+<tag/Example/None.
+</descrip>
+</quote>
+
+
+<sect1>qsort<label id="qsort"><p>
+
+<quote>
+<descrip>
+<tag/Function/Sort an array.
+<tag/Header/<tt/<ref id="stdlib.h" name="stdlib.h">/
+<tag/Declaration/<tt/void __fastcall__ qsort (void* base, size_t count,
+size_t size, int (*compare) (const void*, const void*));/
+<tag/Description/<tt/qsort/ sorts an array according to a given compare
+function <tt/compare/. <tt/base/ is the address of the array, <tt/count/
+is the number of elements, <tt/size/ the size of an element and <tt/compare/
+the function used to compare the members.
+<tag/Limits/
+<itemize>
+<item>If there are multiple members with the same key, the order after calling
+the function is undefined.
+<item>The function is only available as fastcall function, so it may only
+be used in presence of a prototype.
+</itemize>
+<tag/Availability/ISO 9899
+<tag/See also/
+<ref id="bsearch" name="bsearch">
+<tag/Example/None.
+</descrip>
+</quote>
+
+
+<sect1>raise<label id="raise"><p>
+
+<quote>
+<descrip>
+<tag/Function/Send a signal to the executing program.
+<tag/Header/<tt/<ref id="signal.h" name="signal.h">/
+<tag/Declaration/<tt/int __fastcall__ raise (int sig);/
+<tag/Description/<tt/raise/ sends the given signal to the program. If the
+program has installed a signal handler for the signal, this signal handler
+will be executed. If no handler has been installed, the default action for
 the raised signal will be taken. The function returns zero on success,
 nonzero otherwise.
 <tag/Limits/<itemize>
@@ -2438,6 +3866,7 @@ be used in presence of a prototype.
 <tag/Availability/ISO 9899
 <tag/See also/
 <ref id="_heapadd" name="_heapadd">,
+<ref id="_heapblocksize" name="_heapblocksize">,
 <ref id="_heapmaxavail" name="_heapmaxavail">,
 <ref id="_heapmemavail" name="_heapmemavail">,
 <ref id="calloc" name="calloc">,
@@ -2448,6 +3877,40 @@ be used in presence of a prototype.
 </quote>
 
 
+<sect1>remove<label id="remove"><p>
+
+<quote>
+<descrip>
+<tag/Function/Delete a file.
+<tag/Header/<tt/<ref id="stdio.h" name="stdio.h">/
+<tag/Declaration/<tt/int __fastcall__ remove (const char* name);/
+<tag/Description/<tt/remove/ deletes the file with the given name. On success,
+zero is returned. On error, -1 is returned and <tt/errno/ is set to an error
+code describing the reason for the failure.
+<tag/Limits/
+<itemize>
+<item>This function is not available on all cc65 targets (depends on the
+availability of file I/O).
+<item>The function is only available as fastcall function, so it may only
+be used in presence of a prototype.
+</itemize>
+<tag/Availability/ISO 9899
+<tag/See also/
+<ref id="unlink" name="unlink">
+<tag/Example/
+#include &lt;stdio.h&gt;
+
+#define FILENAME "helloworld"
+
+if (remove (FILENAME) == 0) {
+    printf ("We deleted %s successfully\n", FILENAME);
+} else {
+    printf ("There was a problem deleting %s\n", FILENAME);
+}
+</descrip>
+</quote>
+
+
 <sect1>reset_brk<label id="reset_brk"><p>
 
 <quote>
@@ -2519,36 +3982,85 @@ be used in presence of a prototype.
 </quote>
 
 
-<sect1>set_brk<label id="set_brk"><p>
+<sect1>set_brk<label id="set_brk"><p>
+
+<quote>
+<descrip>
+<tag/Function/Set the break vector to a user function.
+<tag/Header/<tt/<ref id="6502.h" name="6502.h">/
+<tag/Declaration/<tt/void __fastcall__ set_brk (brk_handler func);/
+<tag/Description/<tt/set_brk/ allows a user program to handle breaks within the
+program code by letting the vector point to a user written C function. The
+runtime library installs a small stub that saves the registers into global
+variables that may be accessed (and changed) by the break handler.
+<tag/Limits/
+<itemize>
+<item>The function is only available as fastcall function, so it may only
+be used in presence of a prototype.
+<item>The stub saves the zero page registers used by the C runtime and switches
+to a small break handler stack. This means that it is safe to execute C code,
+even if C code was interrupted. Be careful however not to use too many local
+variables, and do not enable stack checks for the handler function or any other
+function called from it.
+<item>The <tt/brk_pc/ variable points to the <tt/BRK/ instruction. If you want
+the continue with the interrupted code, you have to adjust <tt/brk_pc/,
+otherwise the <tt/BRK/ instruction will get executed over and over again.
+<item>Since <tt/set_brk/ installs an exit handler, it is not strictly necessary
+to call <tt/<ref id="reset_brk" name="reset_brk">/ as part of the cleanup when
+the program terminates.
+</itemize>
+<tag/Availability/cc65
+<tag/See also/
+<ref id="reset_brk" name="reset_brk">
+<tag/Example/None.
+</descrip>
+</quote>
+
+
+<sect1>setjmp<label id="setjmp"><p>
+
+<quote>
+<descrip>
+<tag/Function/Save the context for use with <tt/longjmp/.
+<tag/Header/<tt/<ref id="setjmp.h" name="setjmp.h">/
+<tag/Declaration/<tt/int __fastcall__ setjmp (jmp_buf buf);/
+<tag/Description/The <tt/setjmp/ function saves the current context in <tt/buf/
+for subsequent use by the <tt/<ref id="longjmp" name="longjmp">/ function and
+returns zero.
+<tag/Limits/
+<itemize>
+<item>The function is only available as fastcall function, so it may only
+be used in presence of a prototype.
+<item><tt/setjmp/ is actually a macro as required by the ISO standard.
+<item><tt/setjmp/ will not save the signal context.
+</itemize>
+<tag/Availability/ISO 9899
+<tag/See also/
+<ref id="longjmp" name="longjmp">
+<tag/Example/None.
+</descrip>
+</quote>
+
+
+<sect1>setlocale<label id="setlocale"><p>
 
 <quote>
 <descrip>
-<tag/Function/Set the break vector to a user function.
-<tag/Header/<tt/<ref id="6502.h" name="6502.h">/
-<tag/Declaration/<tt/void __fastcall__ set_brk (brk_handler func);/
-<tag/Description/<tt/set_brk/ allows a user program to handle breaks within the
-program code by letting the vector point to a user written C function. The
-runtime library installs a small stub that saves the registers into global
-variables that may be accessed (and changed) by the break handler.
+<tag/Function/Selects a locale.
+<tag/Header/<tt/<ref id="locale.h" name="locale.h">/
+<tag/Declaration/<tt/char* __fastcall__ setlocale (int category, const char* locale);/
+<tag/Description/<tt/setlocale/ sets or queries the program's locale.
 <tag/Limits/
 <itemize>
 <item>The function is only available as fastcall function, so it may only
 be used in presence of a prototype.
-<item>The stub saves the zero page registers used by the C runtime and switches
-to a small break handler stack. This means that it is safe to execute C code,
-even if C code was interrupted. Be careful however not to use too many local
-variables, and do not enable stack checks for the handler function or any other
-function called from it.
-<item>The <tt/brk_pc/ variable points to the <tt/BRK/ instruction. If you want
-the continue with the interrupted code, you have to adjust <tt/brk_pc/,
-otherwise the <tt/BRK/ instruction will get executed over and over again.
-<item>Since <tt/set_brk/ installs an exit handler, it is not strictly necessary
-to call <tt/<ref id="reset_brk" name="reset_brk">/ as part of the cleanup when
-the program terminates.
+<item>cc65 supports only the "C" locale, so calling this function to set a
+different locale has no effect.
 </itemize>
-<tag/Availability/cc65
+<tag/Availability/ISO 9899
 <tag/See also/
-<ref id="reset_brk" name="reset_brk">
+<ref id="localeconv" name="localeconv">,
+<ref id="strcoll" name="strcoll">
 <tag/Example/None.
 </descrip>
 </quote>
@@ -2592,7 +4104,7 @@ seconds have elapsed.
 <item>The function is only available as fastcall function, so it may only
 be used in presence of a prototype.
 </itemize>
-<tag/Availability/POSIX
+<tag/Availability/POSIX 1003.1
 <tag/Example/None.
 </descrip>
 </quote>
@@ -2642,6 +4154,33 @@ be used in presence of a prototype.
 </quote>
 
 
+<sect1>strcasecmp<label id="strcasecmp"><p>
+
+<quote>
+<descrip>
+<tag/Function/Compare two strings case insensitive.
+<tag/Header/<tt/<ref id="string.h" name="string.h">/
+<tag/Declaration/<tt/int __fastcall__ strcasecmp (const char* s1, const char* s2);/
+<tag/Description/The <tt/strcasecmp/ function compares the two strings passed
+as parameters without case sensitivity. It returns a value that is less than
+zero if <tt/s1/ is less than <tt/s2/, zero if <tt/s1/ is the same as <tt/s2/,
+and a value greater than zero if <tt/s1/ is greater than <tt/s2/.
+<tag/Limits/<itemize>
+<item>The function is only available as fastcall function, so it may only
+be used in presence of a prototype.
+<item>The function is not available in strict ANSI mode.
+</itemize>
+<tag/Availability/cc65
+<tag/See also/
+<ref id="strcmp" name="strcmp">,
+<ref id="strcoll" name="strcoll">,
+<ref id="stricmp" name="stricmp">,
+<ref id="strncmp" name="strncmp">
+<tag/Example/None.
+</descrip>
+</quote>
+
+
 <sect1>strcat<label id="strcat"><p>
 
 <quote>
@@ -2656,12 +4195,13 @@ the end of s1.
 <tag/Limits/<itemize>
 <item>The function is only available as fastcall function, so it may only
 be used in presence of a prototype.
-<item>If copying takes place between objects that overlap, the behavior
+<item>If copying takes place between objects that overlap, the behaviour
 is undefined.
 </itemize>
 <tag/Availability/ISO 9899
 <tag/See also/
-<ref id="strcpy" name="strcpy">
+<ref id="strcpy" name="strcpy">,
+<ref id="strncat" name="strncat">,
 <ref id="strncpy" name="strncpy">
 <tag/Example/None.
 </descrip>
@@ -2685,12 +4225,67 @@ be used in presence of a prototype.
 </itemize>
 <tag/Availability/ISO 9899
 <tag/See also/
+<ref id="memchr" name="memchr">,
 <ref id="strrchr" name="strrchr">
 <tag/Example/None.
 </descrip>
 </quote>
 
 
+<sect1>strcmp<label id="strcmp"><p>
+
+<quote>
+<descrip>
+<tag/Function/Compare two strings.
+<tag/Header/<tt/<ref id="string.h" name="string.h">/
+<tag/Declaration/<tt/int __fastcall__ strcmp (const char* s1, const char* s2);/
+<tag/Description/The <tt/strcmp/ function compares the two strings passed as
+parameters. It returns a value that is less than zero if <tt/s1/ is less than
+<tt/s2/, zero if <tt/s1/ is the same as <tt/s2/, and a value greater than zero
+if <tt/s1/ is greater than <tt/s2/.
+<tag/Limits/<itemize>
+<item>The function is only available as fastcall function, so it may only
+be used in presence of a prototype.
+</itemize>
+<tag/Availability/ISO 9899
+<tag/See also/
+<ref id="strcasecmp" name="strcasecmp">,
+<ref id="strcoll" name="strcoll">,
+<ref id="stricmp" name="stricmp">,
+<ref id="strncmp" name="strncmp">
+<tag/Example/None.
+</descrip>
+</quote>
+
+
+<sect1>strcoll<label id="strcoll"><p>
+
+<quote>
+<descrip>
+<tag/Function/Compare two strings.
+<tag/Header/<tt/<ref id="string.h" name="string.h">/
+<tag/Declaration/<tt/int __fastcall__ strcoll (const char* s1, const char* s2);/
+<tag/Description/The <tt/strcoll/ function compares the two strings passed as
+parameters, according to the collating sequence set by <tt/<ref id="setlocale"
+name="setlocale">/. It returns a value that is less than zero if <tt/s1/ is
+less than <tt/s2/, zero if <tt/s1/ is the same as <tt/s2/, and a value greater
+than zero if <tt/s1/ is greater than <tt/s2/.
+<tag/Limits/<itemize>
+<item>The function is only available as fastcall function, so it may only
+be used in presence of a prototype.
+</itemize>
+<tag/Availability/ISO 9899
+<tag/See also/
+<ref id="setlocale" name="setlocale">,
+<ref id="strcasecmp" name="strcasecmp">,
+<ref id="strcmp" name="strcmp">,
+<ref id="stricmp" name="stricmp">,
+<ref id="strncmp" name="strncmp">
+<tag/Example/None.
+</descrip>
+</quote>
+
+
 <sect1>strcpy<label id="strcpy"><p>
 
 <quote>
@@ -2704,16 +4299,17 @@ be used in presence of a prototype.
 <tag/Limits/<itemize>
 <item>The function is only available as fastcall function, so it may only
 be used in presence of a prototype.
-<item>If copying takes place between objects that overlap, the behavior
+<item>If copying takes place between objects that overlap, the behaviour
 is undefined.
 </itemize>
 <tag/Availability/ISO 9899
 <tag/See also/
-<ref id="strcat" name="strcat">
+<ref id="strcat" name="strcat">,
+<ref id="strncat" name="strncat">,
 <ref id="strncpy" name="strncpy">
 <tag/Example/
 <verb>
-#include <string.h>
+#include &lt;string.h&gt;
 
 static char hello[14];
 
@@ -2723,6 +4319,107 @@ strcpy (hello, "Hello world!\n");
 </quote>
 
 
+<sect1>strcspn<label id="strcspn"><p>
+
+<quote>
+<descrip>
+<tag/Function/Compute the length of a substring.
+<tag/Header/<tt/<ref id="string.h" name="string.h">/
+<tag/Declaration/<tt/size_t __fastcall__ strcspn (const char* s, const char* set);/
+<tag/Description/The <tt/strcspn/ function computes and returns the length of
+the substring pointed to by <tt/s/ which does <em>not</em> consist of
+characters contained in the string <tt/set/.
+<tag/Limits/<itemize>
+<item>The function is only available as fastcall function, so it may only
+be used in presence of a prototype.
+</itemize>
+<tag/Availability/ISO 9899
+<tag/See also/
+<ref id="strspn" name="strspn">,
+<ref id="strstr" name="strstr">,
+<ref id="strtok" name="strtok">
+<tag/Example/None.
+</descrip>
+</quote>
+
+
+<sect1>strdup<label id="strdup"><p>
+
+<quote>
+<descrip>
+<tag/Function/Allocate a copy of a string on the heap.
+<tag/Header/<tt/<ref id="string.h" name="string.h">/
+<tag/Declaration/<tt/char* __fastcall__ strdup (const char* s);/
+<tag/Description/<tt/strdup/ allocates a memory block on the heap, big enough
+to hold a copy of <tt/s/ including the terminating zero. If the allocation
+fails, <tt/NULL/ is returned, otherwise <tt/s/ is copied into the allocated
+memory block, and a pointer to the block is returned.
+<tag/Limits/<itemize>
+<item>The function is only available as fastcall function, so it may only
+be used in presence of a prototype.
+<item>It is up to the caller to free the allocated memory block.
+</itemize>
+<tag/Availability/ISO 9899
+<tag/See also/
+<ref id="free" name="free">,
+<ref id="malloc" name="malloc">
+<tag/Example/None.
+</descrip>
+</quote>
+
+
+<sect1>strerror<label id="strerror"><p>
+
+<quote>
+<descrip>
+<tag/Function/Return a string describing an error code.
+<tag/Header/<tt/<ref id="string.h" name="string.h">/
+<tag/Declaration/<tt/char* __fastcall__ strerror (int errcode);/
+<tag/Description/The <tt/strerror/ function returns a string describing the
+given error code. If an invalid error code is passed, the string "Unknown
+error" is returned, and <tt/errno/ is set to <tt/EINVAL/. In all other cases,
+<tt/errno/ is left untouched.
+<tag/Limits/<itemize>
+<item>The function is only available as fastcall function, so it may only
+be used in presence of a prototype.
+<item>While the return type of the function is a <tt/char*/, the returned
+string must not be modified by the caller!
+</itemize>
+<tag/Availability/ISO 9899
+<tag/See also/
+<ref id="_stroserror" name="_stroserror">
+<tag/Example/None.
+</descrip>
+</quote>
+
+
+<sect1>stricmp<label id="stricmp"><p>
+
+<quote>
+<descrip>
+<tag/Function/Compare two strings case insensitive.
+<tag/Header/<tt/<ref id="string.h" name="string.h">/
+<tag/Declaration/<tt/int __fastcall__ stricmp (const char* s1, const char* s2);/
+<tag/Description/The <tt/stricmp/ function compares the two strings passed as
+parameters without case sensitivity. It returns a value that is less than zero
+if <tt/s1/ is less than <tt/s2/, zero if <tt/s1/ is the same as <tt/s2/, and a
+value greater than zero if <tt/s1/ is greater than <tt/s2/.
+<tag/Limits/<itemize>
+<item>The function is only available as fastcall function, so it may only
+be used in presence of a prototype.
+<item>The function is not available in strict ANSI mode.
+</itemize>
+<tag/Availability/cc65
+<tag/See also/
+<ref id="strcasecmp" name="strcasecmp">,
+<ref id="strcmp" name="strcmp">,
+<ref id="strcoll" name="strcoll">,
+<ref id="strncmp" name="strncmp">
+<tag/Example/None.
+</descrip>
+</quote>
+
+
 <sect1>strlen<label id="strlen"><p>
 
 <quote>
@@ -2763,7 +4460,7 @@ be used in presence of a prototype.
 </itemize>
 <tag/Availability/cc65
 <tag/See also/
-<ref id="strupper" name="strupper">
+<ref id="strupper" name="strupper">,
 <ref id="tolower" name="tolower">
 <tag/Example/None.
 </descrip>
@@ -2777,6 +4474,60 @@ See <tt/strlower/.
 </quote>
 
 
+<sect1>strncat<label id="strncat"><p>
+
+<quote>
+<descrip>
+<tag/Function/Concatentate two strings.
+<tag/Header/<tt/<ref id="string.h" name="string.h">/
+<tag/Declaration/<tt/char* __fastcall__ strncat (char* s1, const char* s2, size_t n);/
+<tag/Description/The <tt/strncat/ function appends not more than n characters
+of the string pointed to by s2 to the end of the string pointed to by s1. The
+terminating null character at the end of s1 is overwritten. A terminating null
+character is appended to the result, even if not all of s2 is appended to s1.
+<tag/Limits/<itemize>
+<item>The function is only available as fastcall function, so it may only
+be used in presence of a prototype.
+<item>If copying takes place between objects that overlap, the behaviour
+is undefined.
+</itemize>
+<tag/Availability/ISO 9899
+<tag/See also/
+<ref id="strcpy" name="strcpy">,
+<ref id="strncat" name="strncat">,
+<ref id="strncpy" name="strncpy">
+<tag/Example/None.
+</descrip>
+</quote>
+
+
+<sect1>strncmp<label id="strncmp"><p>
+
+<quote>
+<descrip>
+<tag/Function/Compare two strings.
+<tag/Header/<tt/<ref id="string.h" name="string.h">/
+<tag/Declaration/<tt/int __fastcall__ strncmp (const char* s1, const char* s2, size_t count);/
+<tag/Description/The <tt/strncmp/ function compares not more than <tt/count/
+characters of the two strings passed as parameters. It returns a value that is
+less than zero if the first <tt/count/ characters of <tt/s1/ are less than
+<tt/s2/, zero if they are identical, and a value greater than zero they are
+greater.
+<tag/Limits/<itemize>
+<item>The function is only available as fastcall function, so it may only
+be used in presence of a prototype.
+</itemize>
+<tag/Availability/ISO 9899
+<tag/See also/
+<ref id="strcasecmp" name="strcasecmp">,
+<ref id="strcmp" name="strcmp">,
+<ref id="strcoll" name="strcoll">,
+<ref id="stricmp" name="stricmp">
+<tag/Example/None.
+</descrip>
+</quote>
+
+
 <sect1>strncpy<label id="strncpy"><p>
 
 <quote>
@@ -2793,13 +4544,14 @@ written. The function will always return <tt/s1/.
 <item>The function is only available as fastcall function, so it may only
 be used in presence of a prototype. If there is no null byte in the first <tt/n/
 bytes of the array pointed to by <tt/s2/, the result is not null-terminated.
-<item>If copying takes place between objects that overlap, the behavior is
+<item>If copying takes place between objects that overlap, the behaviour is
 undefined.
 </itemize>
 <tag/Availability/ISO 9899
 <tag/See also/
-<ref id="strcat" name="strcat">
-<ref id="strcpy" name="strcpy">
+<ref id="strcat" name="strcat">,
+<ref id="strcpy" name="strcpy">,
+<ref id="strncat" name="strncat">
 <tag/Example/
 <verb>
 #include <string.h>
@@ -2836,6 +4588,79 @@ be used in presence of a prototype.
 </quote>
 
 
+<sect1>strspn<label id="strspn"><p>
+
+<quote>
+<descrip>
+<tag/Function/Compute the length of a substring.
+<tag/Header/<tt/<ref id="string.h" name="string.h">/
+<tag/Declaration/<tt/size_t __fastcall__ strspn (const char* s, const char* set);/
+<tag/Description/The <tt/strspn/ function computes and returns the length of
+the substring pointed to by <tt/s/ which does consist only of characters
+contained in the string <tt/set/.
+<tag/Limits/<itemize>
+<item>The function is only available as fastcall function, so it may only
+be used in presence of a prototype.
+</itemize>
+<tag/Availability/ISO 9899
+<tag/See also/
+<ref id="strcspn" name="strcspn">,
+<ref id="strstr" name="strstr">
+<tag/Example/None.
+</descrip>
+</quote>
+
+
+<sect1>strstr<label id="strstr"><p>
+
+<quote>
+<descrip>
+<tag/Function/Find a substring.
+<tag/Header/<tt/<ref id="string.h" name="string.h">/
+<tag/Declaration/<tt/char* __fastcall__ strstr (const char* str, const char* substr);/
+<tag/Description/<tt/strstr/ searches for the first occurance of the string
+<tt/substr/ within <tt/str/. If found, it returns a pointer to the copy,
+otherwise it returns <tt/NULL/.
+<tag/Limits/<itemize>
+<item>The function is only available as fastcall function, so it may only
+be used in presence of a prototype.
+</itemize>
+<tag/Availability/ISO 9899
+<tag/See also/
+<ref id="strcspn" name="strcspn">,
+<ref id="strspn" name="strspn">
+<tag/Example/None.
+</descrip>
+</quote>
+
+
+<sect1>strtok<label id="strtok"><p>
+
+<quote>
+<descrip>
+<tag/Function/Break a string into tokens.
+<tag/Header/<tt/<ref id="string.h" name="string.h">/
+<tag/Declaration/<tt/char* __fastcall__ strtok (char* s1, const char* s2);/
+<tag/Description/<tt/strtok/ will break the string s1 into a sequence of
+tokens, which are delimited by characters from the string s2. The first call
+to <tt/strtok/ will return a pointer to the first token in the string s1.
+Following calls must pass a <tt/NULL/ pointer as s1 in order to get the next
+token in the string. Different sets of delimiters may be used for the
+subsequent calls to <tt/strtok/.
+<tag/Limits/<itemize>
+<item>The function is only available as fastcall function, so it may only
+be used in presence of a prototype.
+<item><tt/strtok/ will modify the string s1.
+</itemize>
+<tag/Availability/ISO 9899
+<tag/See also/
+<ref id="strcspn" name="strcspn">,
+<!-- <ref id="strpbrk" name="strpbrk"> -->
+<tag/Example/None.
+</descrip>
+</quote>
+
+
 <sect1>strupper<label id="strupper"><p>
 
 <quote>
@@ -2892,6 +4717,29 @@ be used in presence of a prototype.
 </quote>
 
 
+<sect1>time<label id="time"><p>
+
+<quote>
+<descrip>
+<tag/Function/Get the time.
+<tag/Header/<tt/<ref id="time.h" name="time.h">/
+<tag/Declaration/<tt/time_t __fastcall__ time (time_t* t);/
+<tag/Description/The function returns the time since the 1970-01-01 00:00:00
+measured in seconds. If the pointer <tt/t/ is not <tt/NULL/, the function
+result will also be stored there. If no time is available, <tt/(time_t)-1/ is
+returned and <tt/errno/ is set to <tt/ENOSYS/.
+<tag/Limits/<itemize>
+<item>The function is only available as fastcall function, so it may
+only be used in presence of a prototype.
+<item>Many platforms supported by cc65 do not have a realtime clock, so the
+returned value may not be valid.
+</itemize>
+<tag/Availability/ISO 9899
+<tag/Example/None.
+</descrip>
+</quote>
+
+
 <sect1>toggle_videomode<label id="toggle_videomode"><p>
 
 <quote>
@@ -2988,6 +4836,46 @@ used in presence of a prototype.
 </quote>
 
 
+<sect1>unlink<label id="unlink"><p>
+
+<quote>
+<descrip>
+<tag/Function/Delete a file.
+<tag/Header/<tt/<ref id="unistd.h" name="unistd.h">/
+<tag/Declaration/<tt/int __fastcall__ unlink (const char* name);/
+<tag/Description/<tt/unlink/ deletes the file with the given name. On success,
+zero is returned. On error, -1 is returned and <tt/errno/ is set to an error
+code describing the reason for the failure.
+<tag/Limits/
+<itemize>
+<item>The use of this function is discouraged. Please use <tt/<ref id="remove"
+name="remove">/ instead, which is a native ANSI C function and does the same.
+<item>This function is not available on all cc65 targets (depends on the
+availability of file I/O).
+<item>The function is only available as fastcall function, so it may only
+be used in presence of a prototype.
+<item>Instead of <tt/unlink/, <tt/<ref id="remove" name="remove">/ should be
+used, which has the same semantics, but is more portable, because it conforms
+to the ISO C standard.
+</itemize>
+<tag/Availability/POSIX 1003.1
+<tag/See also/
+<ref id="remove" name="remove">
+<tag/Example/
+#include &lt;stdio.h&gt;
+#include &lt;unistd.h&gt;
+
+#define FILENAME "helloworld"
+
+if (unlink (FILENAME) == 0) {
+    printf ("We deleted %s successfully\n", FILENAME);
+} else {
+    printf ("There was a problem deleting %s\n", FILENAME);
+}
+</descrip>
+</quote>
+
+
 <sect1>utoa<label id="utoa"><p>
 
 <quote>
@@ -3016,6 +4904,35 @@ used in presence of a prototype.
 </quote>
 
 
+<sect1>vcprintf<label id="vcprintf"><p>
+
+<quote>
+<descrip>
+<tag/Function/Formatted output to the console.
+<tag/Header/<tt/<ref id="conio.h" name="conio.h">/
+<tag/Declaration/<tt/int __fastcall__ vcprintf (const char* format, va_list ap);/
+<tag/Description/The arguments specified as a <tt/va_list/ are converted to
+text where necessary and formatted according to the format string given. The
+resulting string is output to the console. <tt/vcprintf/ supports the same
+format specifiers as <tt/vprintf/. <!-- <tt/<ref id="vprintf" name="vprintf">/. -->
+<tag/Limits/<itemize>
+<item>Like all other <tt/conio/ output functions, <tt/vcprintf/ distinguishes
+between <tt/\r/ and <tt/\n/.
+<item>The function is only available as fastcall function, so it may only be
+used in presence of a prototype.
+</itemize>
+<tag/Availability/cc65
+<tag/See also/
+<ref id="cprintf" name="cprintf">,
+<ref id="cputc" name="cputc">,
+<ref id="cputcxy" name="cputcxy">,
+<ref id="cputs" name="cputs">,
+<ref id="cputsxy" name="cputsxy">
+<tag/Example/None.
+</descrip>
+</quote>
+
+
 <sect1>wherex<label id="wherex"><p>
 
 <quote>