127 |
NetDriverState nd_table[MAX_NICS]; |
NetDriverState nd_table[MAX_NICS]; |
128 |
QEMUTimer *gui_timer; |
QEMUTimer *gui_timer; |
129 |
int vm_running; |
int vm_running; |
130 |
|
#ifdef HAS_AUDIO |
131 |
int audio_enabled = 0; |
int audio_enabled = 0; |
132 |
int sb16_enabled = 1; |
int sb16_enabled = 0; |
133 |
int adlib_enabled = 1; |
int adlib_enabled = 0; |
134 |
int gus_enabled = 1; |
int gus_enabled = 0; |
135 |
|
int es1370_enabled = 0; |
136 |
|
#endif |
137 |
int pci_enabled = 1; |
int pci_enabled = 1; |
138 |
int prep_enabled = 0; |
int prep_enabled = 0; |
139 |
int rtc_utc = 1; |
int rtc_utc = 1; |
933 |
#ifdef _WIN32 |
#ifdef _WIN32 |
934 |
{ |
{ |
935 |
int count=0; |
int count=0; |
936 |
timerID = timeSetEvent(10, // interval (ms) |
timerID = timeSetEvent(1, // interval (ms) |
937 |
0, // resolution |
0, // resolution |
938 |
host_alarm_handler, // function |
host_alarm_handler, // function |
939 |
(DWORD)&count, // user parameter |
(DWORD)&count, // user parameter |
2840 |
#ifndef _WIN32 |
#ifndef _WIN32 |
2841 |
"-k language use keyboard layout (for example \"fr\" for French)\n" |
"-k language use keyboard layout (for example \"fr\" for French)\n" |
2842 |
#endif |
#endif |
2843 |
|
#ifdef HAS_AUDIO |
2844 |
"-enable-audio enable audio support\n" |
"-enable-audio enable audio support\n" |
2845 |
|
"-audio-help print list of audio drivers and their options\n" |
2846 |
|
"-soundhw c1,... comma separated list of sound card names\n" |
2847 |
|
" use -soundhw ? to get the list of supported sound cards\n" |
2848 |
|
#endif |
2849 |
"-localtime set the real time clock to local time [default=utc]\n" |
"-localtime set the real time clock to local time [default=utc]\n" |
2850 |
"-full-screen start in full screen\n" |
"-full-screen start in full screen\n" |
2851 |
#ifdef TARGET_I386 |
#ifdef TARGET_I386 |
2943 |
QEMU_OPTION_snapshot, |
QEMU_OPTION_snapshot, |
2944 |
QEMU_OPTION_m, |
QEMU_OPTION_m, |
2945 |
QEMU_OPTION_nographic, |
QEMU_OPTION_nographic, |
2946 |
|
#ifdef HAS_AUDIO |
2947 |
QEMU_OPTION_enable_audio, |
QEMU_OPTION_enable_audio, |
2948 |
|
QEMU_OPTION_audio_help, |
2949 |
|
QEMU_OPTION_soundhw, |
2950 |
|
#endif |
2951 |
|
|
2952 |
QEMU_OPTION_nics, |
QEMU_OPTION_nics, |
2953 |
QEMU_OPTION_macaddr, |
QEMU_OPTION_macaddr, |
3010 |
{ "m", HAS_ARG, QEMU_OPTION_m }, |
{ "m", HAS_ARG, QEMU_OPTION_m }, |
3011 |
{ "nographic", 0, QEMU_OPTION_nographic }, |
{ "nographic", 0, QEMU_OPTION_nographic }, |
3012 |
{ "k", HAS_ARG, QEMU_OPTION_k }, |
{ "k", HAS_ARG, QEMU_OPTION_k }, |
3013 |
|
#ifdef HAS_AUDIO |
3014 |
{ "enable-audio", 0, QEMU_OPTION_enable_audio }, |
{ "enable-audio", 0, QEMU_OPTION_enable_audio }, |
3015 |
|
{ "audio-help", 0, QEMU_OPTION_audio_help }, |
3016 |
|
{ "soundhw", HAS_ARG, QEMU_OPTION_soundhw }, |
3017 |
|
#endif |
3018 |
|
|
3019 |
{ "nics", HAS_ARG, QEMU_OPTION_nics}, |
{ "nics", HAS_ARG, QEMU_OPTION_nics}, |
3020 |
{ "macaddr", HAS_ARG, QEMU_OPTION_macaddr}, |
{ "macaddr", HAS_ARG, QEMU_OPTION_macaddr}, |
3133 |
#endif |
#endif |
3134 |
} |
} |
3135 |
|
|
3136 |
|
#ifdef HAS_AUDIO |
3137 |
|
static void select_soundhw (const char *optarg) |
3138 |
|
{ |
3139 |
|
if (*optarg == '?') { |
3140 |
|
show_valid_cards: |
3141 |
|
printf ("Valid sound card names (comma separated):\n"); |
3142 |
|
printf ("sb16 Creative Sound Blaster 16\n"); |
3143 |
|
#ifdef CONFIG_ADLIB |
3144 |
|
#ifdef HAS_YMF262 |
3145 |
|
printf ("adlib Ymaha YMF262 (OPL3)\n"); |
3146 |
|
#else |
3147 |
|
printf ("adlib Ymaha YM3812 (OPL2)\n"); |
3148 |
|
#endif |
3149 |
|
#endif |
3150 |
|
#ifdef CONFIG_GUS |
3151 |
|
printf ("gus Gravis Ultrasound GF1\n"); |
3152 |
|
#endif |
3153 |
|
printf ("es1370 ENSONIQ AudioPCI ES1370\n"); |
3154 |
|
exit (*optarg != '?'); |
3155 |
|
} |
3156 |
|
else { |
3157 |
|
struct { |
3158 |
|
char *name; |
3159 |
|
int *enabledp; |
3160 |
|
} soundhw_tab[] = { |
3161 |
|
{ "sb16", &sb16_enabled }, |
3162 |
|
#ifdef CONFIG_ADLIB |
3163 |
|
{ "adlib", &adlib_enabled }, |
3164 |
|
#endif |
3165 |
|
#ifdef CONFIG_GUS |
3166 |
|
{ "gus", &gus_enabled }, |
3167 |
|
#endif |
3168 |
|
{ "es1370", &es1370_enabled }, |
3169 |
|
}; |
3170 |
|
size_t tablen, l, i; |
3171 |
|
const char *p; |
3172 |
|
char *e; |
3173 |
|
int bad_card = 0; |
3174 |
|
|
3175 |
|
p = optarg; |
3176 |
|
tablen = sizeof (soundhw_tab) / sizeof (soundhw_tab[0]); |
3177 |
|
|
3178 |
|
while (*p) { |
3179 |
|
e = strchr (p, ','); |
3180 |
|
l = !e ? strlen (p) : (size_t) (e - p); |
3181 |
|
for (i = 0; i < tablen; ++i) { |
3182 |
|
if (!strncmp (soundhw_tab[i].name, p, l)) { |
3183 |
|
audio_enabled = 1; |
3184 |
|
*soundhw_tab[i].enabledp = 1; |
3185 |
|
break; |
3186 |
|
} |
3187 |
|
} |
3188 |
|
if (i == tablen) { |
3189 |
|
if (l > 80) { |
3190 |
|
fprintf (stderr, |
3191 |
|
"Unknown sound card name (too big to show)\n"); |
3192 |
|
} |
3193 |
|
else { |
3194 |
|
fprintf (stderr, "Unknown sound card name `%.*s'\n", |
3195 |
|
(int) l, p); |
3196 |
|
} |
3197 |
|
bad_card = 1; |
3198 |
|
} |
3199 |
|
p += l + (e != NULL); |
3200 |
|
} |
3201 |
|
|
3202 |
|
if (bad_card) |
3203 |
|
goto show_valid_cards; |
3204 |
|
} |
3205 |
|
} |
3206 |
|
#endif |
3207 |
|
|
3208 |
#define NET_IF_TUN 0 |
#define NET_IF_TUN 0 |
3209 |
#define NET_IF_USER 1 |
#define NET_IF_USER 1 |
3210 |
#define NET_IF_DUMMY 2 |
#define NET_IF_DUMMY 2 |
3489 |
case QEMU_OPTION_dummy_net: |
case QEMU_OPTION_dummy_net: |
3490 |
net_if_type = NET_IF_DUMMY; |
net_if_type = NET_IF_DUMMY; |
3491 |
break; |
break; |
3492 |
|
#ifdef HAS_AUDIO |
3493 |
case QEMU_OPTION_enable_audio: |
case QEMU_OPTION_enable_audio: |
3494 |
audio_enabled = 1; |
audio_enabled = 1; |
3495 |
|
sb16_enabled = 1; |
3496 |
|
adlib_enabled = 1; |
3497 |
|
gus_enabled = 1; |
3498 |
|
es1370_enabled = 1; |
3499 |
|
break; |
3500 |
|
case QEMU_OPTION_audio_help: |
3501 |
|
AUD_help (); |
3502 |
|
exit (0); |
3503 |
|
break; |
3504 |
|
case QEMU_OPTION_soundhw: |
3505 |
|
select_soundhw (optarg); |
3506 |
break; |
break; |
3507 |
|
#endif |
3508 |
case QEMU_OPTION_h: |
case QEMU_OPTION_h: |
3509 |
help(); |
help(); |
3510 |
break; |
break; |