/* */
/* */
/* */
-/* (C) 1998-2012, Ullrich von Bassewitz */
+/* (C) 1998-2015, Ullrich von Bassewitz */
/* Roemerstrasse 52 */
/* D-70794 Filderstadt */
/* EMail: uz@cc65.org */
/* We need NULL. */
-
-#if !defined(_STDDEF_H)
-# include <stddef.h>
-#endif
+#include <stddef.h>
/* Load the system-specific files here, if needed. */
#if defined(__C64__) && !defined(_C64_H)
+#define JOY_FIRE_MASK JOY_BTN_1_MASK
+#define JOY_FIRE(v) ((v) & JOY_FIRE_MASK)
+
+
+
/*****************************************************************************/
/* Variables */
/*****************************************************************************/
/* The file stream implementation and the POSIX I/O functions will
- * use the following variable to determine the file type to use.
- */
+** use the following variable to determine the file type to use.
+*/
extern char _filetype; /* Defaults to 's' */
unsigned char get_tv (void);
/* Return the video mode the machine is using. */
+#define KBREPEAT_CURSOR 0x00
+#define KBREPEAT_NONE 0x40
+#define KBREPEAT_ALL 0x80
+
+unsigned char __fastcall__ kbrepeat (unsigned char mode);
+/* Changes which keys have automatic repeat. */
+#if !defined(__CBM610__) && !defined(__PET__)
+void waitvsync (void);
+/* Wait for the start of the next frame */
+#endif
/*****************************************************************************/
/* CBM kernal functions */
/* Constants to use with cbm_open() for openning a file for reading or
- * writing without the need to append ",r" or ",w" to the filename.
- *
- * e.g., cbm_open(2, 8, CBM_READ, "0:data,s");
- */
+** writing without the need to append ",r" or ",w" to the filename.
+**
+** e.g., cbm_open(2, 8, CBM_READ, "0:data,s");
+*/
#define CBM_READ 0 /* default is ",p" */
#define CBM_WRITE 1 /* ditto */
#define CBM_SEQ 2 /* default is ",r" -- or ",s" when writing */
unsigned char cbm_k_open (void);
unsigned char cbm_k_readst (void);
unsigned char __fastcall__ cbm_k_save(unsigned int start, unsigned int end);
+void cbm_k_scnkey (void);
void __fastcall__ cbm_k_setlfs (unsigned char LFN, unsigned char DEV,
unsigned char SA);
void __fastcall__ cbm_k_setnam (const char* Name);
void __fastcall__ cbm_k_talk (unsigned char dev);
+void cbm_k_udtim (void);
void cbm_k_unlsn (void);
+void cbm_k_untlk (void);
/* The cbm_* I/O functions below set _oserror (see errno.h),
- * in case of an error.
- *
- * error-code BASIC error
- * ---------- -----------
- * 1 = too many files
- * 2 = file open
- * 3 = file not open
- * 4 = file not found
- * 5 = device not present
- * 6 = not input-file
- * 7 = not output-file
- * 8 = missing file-name
- * 9 = illegal device-number
- *
- * 10 = STOP-key pushed
- * 11 = general I/O-error
- */
-
-
-
-unsigned int cbm_load (const char* name, unsigned char device, void* data);
+** in case of an error.
+**
+** error-code BASIC error
+** ---------- -----------
+** 1 = too many files
+** 2 = file open
+** 3 = file not open
+** 4 = file not found
+** 5 = device not present
+** 6 = not input-file
+** 7 = not output-file
+** 8 = missing file-name
+** 9 = illegal device-number
+**
+** 10 = STOP-key pushed
+** 11 = general I/O-error
+*/
+
+
+
+unsigned int __fastcall__ cbm_load (const char* name, unsigned char device, void* data);
/* Loads file "name", from given device, to given address -- or, to the load
- * address of the file if "data" is the null pointer (like load"name",8,1
- * in BASIC).
- * Returns number of bytes that were loaded if loading was successful;
- * otherwise 0, "_oserror" contains an error-code, then (see table above).
- */
+** address of the file if "data" is the null pointer (like load"name",8,1
+** in BASIC).
+** Returns number of bytes that were loaded if loading was successful;
+** otherwise 0, "_oserror" contains an error-code, then (see table above).
+*/
unsigned char __fastcall__ cbm_save (const char* name, unsigned char device,
const void* addr, unsigned int size);
/* Saves "size" bytes, starting at "addr", to a file.
- * Returns 0 if saving was successful, otherwise an error-code (see table
- * above).
- */
+** Returns 0 if saving was successful, otherwise an error-code (see table
+** above).
+*/
unsigned char __fastcall__ cbm_open (unsigned char lfn, unsigned char device,
unsigned char sec_addr, const char* name);
/* Opens a file. Works just like the BASIC command.
- * Returns 0 if openning was successful, otherwise an error-code (see table
- * above).
- */
+** Returns 0 if openning was successful, otherwise an error-code (see table
+** above).
+*/
void __fastcall__ cbm_close (unsigned char lfn);
/* Closes a file */
int __fastcall__ cbm_read (unsigned char lfn, void* buffer, unsigned int size);
/* Reads up to "size" bytes from a file into "buffer".
- * Returns the number of actually-read bytes, 0 if there are no bytes left.
- * -1 in case of an error; then, _oserror contains an error-code (see table
- * above). (Remember: 0 means end-of-file; -1 means error.)
- */
+** Returns the number of actually-read bytes, 0 if there are no bytes left.
+** -1 in case of an error; then, _oserror contains an error-code (see table
+** above). (Remember: 0 means end-of-file; -1 means error.)
+*/
int __fastcall__ cbm_write (unsigned char lfn, const void* buffer,
unsigned int size);
/* Writes up to "size" bytes from "buffer" to a file.
- * Returns the number of actually-written bytes, or -1 in case of an error;
- * _oserror contains an error-code, then (see above table).
- */
+** Returns the number of actually-written bytes, or -1 in case of an error;
+** _oserror contains an error-code, then (see above table).
+*/
unsigned char cbm_opendir (unsigned char lfn, unsigned char device, ...);
/* Opens directory listing. Returns 0 if opening directory was successful;
- * otherwise, an error-code corresponding to cbm_open(). As an optional
- * argument, the name of the directory may be passed to the function. If
- * no explicit name is specified, "$" is used.
- */
+** otherwise, an error-code corresponding to cbm_open(). As an optional
+** argument, the name of the directory may be passed to the function. If
+** no explicit name is specified, "$" is used.
+*/
unsigned char __fastcall__ cbm_readdir (unsigned char lfn,
struct cbm_dirent* l_dirent);
/* Reads one directory line into cbm_dirent structure.
- * Returns 0 if reading directory-line was successful.
- * Returns non-zero if reading directory failed, or no more file-names to read.
- * Returns 2 on last line. Then, l_dirent->size = the number of "blocks free."
- */
+** Returns 0 if reading directory-line was successful.
+** Returns non-zero if reading directory failed, or no more file-names to read.
+** Returns 2 on last line. Then, l_dirent->size = the number of "blocks free."
+*/
void __fastcall__ cbm_closedir (unsigned char lfn);
/* Closes directory by cbm_close(lfn) */