<title>cc65 function reference
<author><url url="mailto:uz@cc65.org" name="Ullrich von Bassewitz">,<newline>
<url url="mailto:greg.king5@verizon.net" name="Greg King">
-<date>2017-12-09
+<date>2018-02-07
<abstract>
cc65 is a C compiler for 6502 based systems. This function reference describes
<sect1><tt/atmos.h/<label id="atmos.h"><p>
<itemize>
+<item><ref id="atmos_explode" name="atmos_explode">
<item><ref id="atmos_load" name="atmos_load">
+<item><ref id="atmos_ping" name="atmos_ping">
<item><ref id="atmos_save" name="atmos_save">
-<!-- <item><ref id="atmos_explode" name="atmos_explode"> -->
-<!-- <item><ref id="atmos_ping" name="atmos_ping"> -->
-<!-- <item><ref id="atmos_shoot" name="atmos_shoot"> -->
-<!-- <item><ref id="atmos_tick" name="atmos_tick"> -->
-<!-- <item><ref id="atmos_tock" name="atmos_tock"> -->
-<!-- <item><ref id="atmos_zap" name="atmos_zap"> -->
+<item><ref id="atmos_shoot" name="atmos_shoot">
+<item><ref id="atmos_tick" name="atmos_tick">
+<item><ref id="atmos_tock" name="atmos_tock">
+<item><ref id="atmos_zap" name="atmos_zap">
</itemize>
-(incomplete)
-
<sect1><tt/c128.h/<label id="c128.h"><p>
(incomplete)
+<sect1><tt/device.h/<label id="device.h"><p>
+
+<itemize>
+<item><ref id="getcurrentdevice" name="getcurrentdevice">
+<item><ref id="getdevicedir" name="getdevicedir">
+<item><ref id="getfirstdevice" name="getfirstdevice">
+<item><ref id="getnextdevice" name="getnextdevice">
+</itemize>
+
+
<sect1><tt/dio.h/<label id="dio.h"><p>
<url url="dio.html" name="Low-level disk I/O API">.
<item><ref id="telldir" name="telldir">
</itemize>
-(incomplete)
-
<sect1><tt/em.h/<label id="em.h"><p>
<item><ref id="strlen" name="strlen">
<item><ref id="strlower" name="strlower">
<item><ref id="strlwr" name="strlwr">
+<item><ref id="strncasecmp" name="strncasecmp">
<item><ref id="strncat" name="strncat">
<item><ref id="strncmp" name="strncmp">
<item><ref id="strncpy" name="strncpy">
+<item><ref id="strnicmp" name="strnicmp">
<item><ref id="strqtok" name="strqtok">
<item><ref id="strrchr" name="strrchr">
<item><ref id="strspn" name="strspn">
<item><ref id="strupr" name="strupr">
</itemize>
+
+<sect1><tt/telestrat.h/<label id="telestrat.h"><p>
+
+<itemize>
+<item><ref id="atmos_explode" name="explode">
+<item><ref id="atmos_ping" name="ping">
+<item><ref id="atmos_shoot" name="shoot">
+<item><ref id="atmos_zap" name="zap">
+<!-- <item><ref id="kbdclick1" name="kbdclick1"> -->
+<!-- <item><ref id="oups" name="oups"> -->
+</itemize>
+
(incomplete)
<itemize>
<!-- <item><ref id="chdir" name="chdir"> -->
<item><ref id="exec" name="exec">
-<!-- <item><ref id="getcwd" name="getcwd"> -->
+<item><ref id="getcwd" name="getcwd">
<item><ref id="getopt" name="getopt">
<!-- <item><ref id="lseek" name="lseek"> -->
<!-- <item><ref id="mkdir" name="mkdir"> -->
</quote>
+<sect1>atmos_explode<label id="atmos_explode"><p>
+
+<quote>
+<descrip>
+<tag/Function/Bomb sound effect.
+<tag/Header/<tt/<ref id="atmos.h" name="atmos.h">/
+<tag/Declaration/<tt/void __fastcall__ atmos_explode(void);/
+<tag/Description/<tt/atmos_explode/ plays the BASIC sound.
+<tag/Notes/<itemize>
+<item>The function is available only as a fastcall function; so, it may be used
+only in the presence of a prototype.
+</itemize>
+<tag/Availability/cc65
+<tag/See also/
+<ref id="atmos_ping" name="atmos_ping">,
+<ref id="atmos_shoot" name="atmos_shoot">,
+<ref id="atmos_tick" name="atmos_tick">,
+<ref id="atmos_tock" name="atmos_tock">,
+<ref id="atmos_zap" name="atmos_zap">
+<tag/Example/None.
+</descrip>
+</quote>
+
+
<sect1>atmos_load<label id="atmos_load"><p>
<quote>
</quote>
+<sect1>atmos_ping<label id="atmos_ping"><p>
+
+<quote>
+<descrip>
+<tag/Function/Bell or ricochet sound effect.
+<tag/Header/<tt/<ref id="atmos.h" name="atmos.h">/
+<tag/Declaration/<tt/void __fastcall__ atmos_ping(void);/
+<tag/Description/<tt/atmos_ping/ plays the BASIC sound.
+<tag/Notes/<itemize>
+<item>The function is available only as a fastcall function; so, it may be used
+only in the presence of a prototype.
+</itemize>
+<tag/Availability/cc65
+<tag/See also/
+<ref id="atmos_explode" name="atmos_explode">,
+<ref id="atmos_shoot" name="atmos_shoot">,
+<ref id="atmos_tick" name="atmos_tick">,
+<ref id="atmos_tock" name="atmos_tock">,
+<ref id="atmos_zap" name="atmos_zap">
+<tag/Example/None.
+</descrip>
+</quote>
+
+
<sect1>atmos_save<label id="atmos_save"><p>
<quote>
</quote>
+<sect1>atmos_shoot<label id="atmos_shoot"><p>
+
+<quote>
+<descrip>
+<tag/Function/Pistol sound effect.
+<tag/Header/<tt/<ref id="atmos.h" name="atmos.h">/
+<tag/Declaration/<tt/void __fastcall__ atmos_shoot(void);/
+<tag/Description/<tt/atmos_shoot/ plays the BASIC sound.
+<tag/Notes/<itemize>
+<item>The function is available only as a fastcall function; so, it may be used
+only in the presence of a prototype.
+</itemize>
+<tag/Availability/cc65
+<tag/See also/
+<ref id="atmos_explode" name="atmos_explode">,
+<ref id="atmos_ping" name="atmos_ping">,
+<ref id="atmos_tick" name="atmos_tick">,
+<ref id="atmos_tock" name="atmos_tock">,
+<ref id="atmos_zap" name="atmos_zap">
+<tag/Example/None.
+</descrip>
+</quote>
+
+
+<sect1>atmos_tick<label id="atmos_tick"><p>
+
+<quote>
+<descrip>
+<tag/Function/High-pitch click.
+<tag/Header/<tt/<ref id="atmos.h" name="atmos.h">/
+<tag/Declaration/<tt/void __fastcall__ atmos_tick(void);/
+<tag/Description/<tt/atmos_tick/ plays the system sound.
+<tag/Notes/<itemize>
+<item>The function is available only as a fastcall function; so, it may be used
+only in the presence of a prototype.
+</itemize>
+<tag/Availability/cc65
+<tag/See also/
+<ref id="atmos_explode" name="atmos_explode">,
+<ref id="atmos_ping" name="atmos_ping">,
+<ref id="atmos_shoot" name="atmos_shoot">,
+<ref id="atmos_tock" name="atmos_tock">,
+<ref id="atmos_zap" name="atmos_zap">
+<tag/Example/None.
+</descrip>
+</quote>
+
+
+<sect1>atmos_tock<label id="atmos_tock"><p>
+
+<quote>
+<descrip>
+<tag/Function/Low-pitch click.
+<tag/Header/<tt/<ref id="atmos.h" name="atmos.h">/
+<tag/Declaration/<tt/void __fastcall__ atmos_tock(void);/
+<tag/Description/<tt/atmos_tock/ plays the system sound.
+<tag/Notes/<itemize>
+<item>The function is available only as a fastcall function; so, it may be used
+only in the presence of a prototype.
+</itemize>
+<tag/Availability/cc65
+<tag/See also/
+<ref id="atmos_explode" name="atmos_explode">,
+<ref id="atmos_ping" name="atmos_ping">,
+<ref id="atmos_shoot" name="atmos_shoot">,
+<ref id="atmos_tick" name="atmos_tick">,
+<ref id="atmos_zap" name="atmos_zap">
+<tag/Example/None.
+</descrip>
+</quote>
+
+
+<sect1>atmos_zap<label id="atmos_zap"><p>
+
+<quote>
+<descrip>
+<tag/Function/Raygun sound effect.
+<tag/Header/<tt/<ref id="atmos.h" name="atmos.h">/
+<tag/Declaration/<tt/void __fastcall__ atmos_zap(void);/
+<tag/Description/<tt/atmos_zap/ plays the BASIC sound.
+<tag/Notes/<itemize>
+<item>The function is available only as a fastcall function; so, it may be used
+only in the presence of a prototype.
+</itemize>
+<tag/Availability/cc65
+<tag/See also/
+<ref id="atmos_explode" name="atmos_explode">,
+<ref id="atmos_ping" name="atmos_ping">,
+<ref id="atmos_shoot" name="atmos_shoot">,
+<ref id="atmos_tick" name="atmos_tick">,
+<ref id="atmos_tock" name="atmos_tock">
+<tag/Example/None.
+</descrip>
+</quote>
+
+
<sect1>atoi<label id="atoi"><p>
<quote>
<tag/Availability/cc65
<tag/Example/<verb>
/* Hello World */
-#include <stdio.h>
-#include <unistd.h>
-#include <cc65.h>
+#include <stdio.h>
+#include <unistd.h>
+#include <cc65.h>
int main(void)
{
printf("Hello World\n");
</quote>
+<sect1>getcurrentdevice<label id="getcurrentdevice"><p>
+
+<quote>
+<descrip>
+<tag/Function/Get current device.
+<tag/Header/<tt/<ref id="device.h" name="device.h">/
+<tag/Declaration/<tt/unsigned char getcurrentdevice (void);/
+<tag/Description/The function returns the current device.
+It allows to access the current device with the <ref id="dio.h"
+name="Low-level disk I/O API"> or <ref id="cbm.h" name="cbm_* I/O
+functions"> requiring a 'device' parameter.
+<tag/Availability/cc65
+<tag/See also/
+<ref id="getdevicedir" name="getdevicedir">,
+<ref id="getfirstdevice" name="getfirstdevice">,
+<ref id="getnextdevice" name="getnextdevice">
+<tag/Example/<verb>
+dio_open (getcurrentdevice ());
+</verb>
+</descrip>
+</quote>
+
+
+<sect1>getcwd<label id="getcwd"><p>
+
+<quote>
+<descrip>
+<tag/Function/Get current working directory.
+<tag/Header/<tt/<ref id="unistd.h" name="unistd.h">/
+<tag/Declaration/<tt/char* __fastcall__ getcwd (char* buf, size_t size);/
+<tag/Description/The function will return the current working directory.
+<tag/Notes/<itemize>
+<item>The function is only available as fastcall function, so it may only
+be used in presence of a prototype.
+</itemize>
+<tag/Availability/POSIX 1003.1
+<tag/Example/None.
+</descrip>
+</quote>
+
+
+<sect1>getdevicedir<label id="getdevicedir"><p>
+
+<quote>
+<descrip>
+<tag/Function/Get device directory.
+<tag/Header/<tt/<ref id="device.h" name="device.h">/
+<tag/Declaration/<tt/char* __fastcall__ getdevicedir (unsigned char device, char* buf, size_t size);/
+<tag/Description/The function returns the directory representing <tt/device/.
+It allows to access the device on filesystem level by calling chdir() with
+the directory returned.
+<tag/Notes/<itemize>
+<item>Calling getdevicedir() <em/does/ check for a (formatted) disk in a
+floppy-disk-type device and returns NULL if that check fails.
+<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="getcwd" name="getcwd">,
+<ref id="getcurrentdevice" name="getcurrentdevice">,
+<ref id="getfirstdevice" name="getfirstdevice">,
+<ref id="getnextdevice" name="getnextdevice">
+<tag/Example/<verb>
+chdir (getdevicedir (device, buf, sizeof buf));
+</verb>
+cf. <tt/samples/enumdevdir.c/
+</descrip>
+</quote>
+
+
<sect1>getenv<label id="getenv"><p>
<quote>
</quote>
+<sect1>getfirstdevice<label id="getfirstdevice"><p>
+
+<quote>
+<descrip>
+<tag/Function/Get first device.
+<tag/Header/<tt/<ref id="device.h" name="device.h">/
+<tag/Declaration/<tt/unsigned char getfirstdevice (void);/
+<tag/Description/The function returns the first device.
+The constant <tt/INVALID_DEVICE/ indicates no device.
+<tag/Availability/cc65
+<tag/See also/
+<ref id="getcurrentdevice" name="getcurrentdevice">,
+<ref id="getdevicedir" name="getdevicedir">,
+<ref id="getnextdevice" name="getnextdevice">
+<tag/Example/<verb>
+unsigned char dev = getfirstdevice ();
+while (dev != INVALID_DEVICE) {
+ printf ("%d\n", dev);
+ dev = getnextdevice (dev);
+ }
+</verb>
+</descrip>
+</quote>
+
+
+<sect1>getnextdevice<label id="getnextdevice"><p>
+
+<quote>
+<descrip>
+<tag/Function/Get next device.
+<tag/Header/<tt/<ref id="device.h" name="device.h">/
+<tag/Declaration/<tt/unsigned char __fastcall__ getnextdevice (unsigned char device);/
+<tag/Description/The function returns the next device after <tt/device/.
+The constant <tt/INVALID_DEVICE/ indicates no further device.
+<tag/Notes/<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="getcurrentdevice" name="getcurrentdevice">,
+<ref id="getdevicedir" name="getdevicedir">,
+<ref id="getfirstdevice" name="getfirstdevice">
+<tag/Example/<verb>
+unsigned char dev = getfirstdevice ();
+while (dev != INVALID_DEVICE) {
+ printf ("%d\n", dev);
+ dev = getnextdevice (dev);
+ }
+</verb>
+</descrip>
+</quote>
+
+
<sect1>getopt<label id="getopt"><p>
<quote>
</quote>
+<sect1>strncasecmp<label id="strncasecmp"><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__ strncasecmp (const char* s1, const char* s2, size_t count);/
+<tag/Description/The <tt/strncasecmp/ 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/Notes/<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">,
+<ref id="strxfrm" name="strxfrm">
+<tag/Example/None.
+</descrip>
+</quote>
+
+
<sect1>strncat<label id="strncat"><p>
<quote>
</quote>
+<sect1>strnicmp<label id="strnicmp"><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__ strnicmp (const char* s1, const char* s2, size_t count);/
+<tag/Description/The <tt/strnicmp/ 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/Notes/<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">,
+<ref id="strxfrm" name="strxfrm">
+<tag/Example/None.
+</descrip>
+</quote>
+
+
<sect1>strqtok<label id="strqtok"><p>
<quote>