1 /** \file   archdep.h
2  * \brief   Miscellaneous system-specific stuff - header
3  *
4  * \author  Marco van den Heuvel <blackystardust68@yahoo.com>
5  *
6  * \note    Do NOT \#include stdbool.h here, that will lead to weird bugs in
7  *          the monitor code.
8  */
9 
10 /*
11  * This file is part of VICE, the Versatile Commodore Emulator.
12  * See README for copyright notice.
13  *
14  *  This program is free software; you can redistribute it and/or modify
15  *  it under the terms of the GNU General Public License as published by
16  *  the Free Software Foundation; either version 2 of the License, or
17  *  (at your option) any later version.
18  *
19  *  This program is distributed in the hope that it will be useful,
20  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
21  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
22  *  GNU General Public License for more details.
23  *
24  *  You should have received a copy of the GNU General Public License
25  *  along with this program; if not, write to the Free Software
26  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
27  *  02111-1307  USA.
28  *
29  */
30 
31 #ifndef VICE_ARCHDEP_H
32 #define VICE_ARCHDEP_H
33 
34 /* XXX: do NOT include <stdbool.h>, causes bugs in monitor code */
35 #include "vice.h"
36 #include "sound.h"
37 
38 /* Extra functions for SDL UI */
39 char *archdep_default_hotkey_file_name(void);
40 char *archdep_default_joymap_file_name(void);
41 
42 /* returns a NULL terminated list of strings. Both the list and the strings
43  * must be freed by the caller using lib_free(void*) */
44 char **archdep_list_drives(void);
45 
46 /* returns a string that corresponds to the current drive. The string must
47  * be freed by the caller using lib_free(void*) */
48 char *archdep_get_current_drive(void);
49 
50 /* sets the current drive to the given string */
51 void archdep_set_current_drive(const char *drive);
52 
53 /* Virtual keyboard handling */
54 int archdep_require_vkbd(void);
55 
56 /* Video chip scaling.  */
57 #define ARCHDEP_VICII_DSIZE   1
58 #define ARCHDEP_VICII_DSCAN   1
59 #define ARCHDEP_VICII_HWSCALE 1
60 #define ARCHDEP_VDC_DSIZE     1
61 #define ARCHDEP_VDC_DSCAN     1
62 #define ARCHDEP_VDC_HWSCALE   1
63 #define ARCHDEP_VIC_DSIZE     1
64 #define ARCHDEP_VIC_DSCAN     1
65 #define ARCHDEP_VIC_HWSCALE   1
66 #define ARCHDEP_CRTC_DSIZE    1
67 #define ARCHDEP_CRTC_DSCAN    1
68 #define ARCHDEP_CRTC_HWSCALE  1
69 #define ARCHDEP_TED_DSIZE     1
70 #define ARCHDEP_TED_DSCAN     1
71 #define ARCHDEP_TED_HWSCALE   1
72 
73 /* Video chip double buffering.  */
74 #define ARCHDEP_VICII_DBUF 0
75 #define ARCHDEP_VDC_DBUF   0
76 #define ARCHDEP_VIC_DBUF   0
77 #define ARCHDEP_CRTC_DBUF  0
78 #define ARCHDEP_TED_DBUF   0
79 
80 /* No key symcode.  */
81 #define ARCHDEP_KEYBOARD_SYM_NONE 0
82 
83 /* Default sound output mode */
84 #define ARCHDEP_SOUND_OUTPUT_MODE SOUND_OUTPUT_SYSTEM
85 
86 /* define if the platform supports the monitor in a seperate window */
87 #define ARCHDEP_SEPERATE_MONITOR_WINDOW
88 
89 #ifdef UNIX_COMPILE
90 #include "archdep_unix.h"
91 #endif
92 
93 #ifdef WIN32_COMPILE
94 #include "archdep_win32.h"
95 #endif
96 
97 /*
98  * New additions (since the Gtk3-native port)
99  */
100 
101 /* Get user configuration directory */
102 /* FIXME: why does this need to be here as well as in
103  * arch/shared/archdep_user_config_path?
104  */
105 char *archdep_user_config_path(void);
106 void  archdep_user_config_path_free(void);
107 /* Get the absolute path to the directory that contains resources, icons, etc */
108 char *archdep_get_vice_datadir(void);
109 /* Get the absolute path to the directory that contains the documentation */
110 char *archdep_get_vice_docsdir(void);
111 
112 /* Register CBM font with the OS without installing */
113 int archdep_register_cbmfont(void);
114 /* Unregister CBM font */
115 void archdep_unregister_cbmfont(void);
116 
117 #endif
118