Cassette improvements and fixes.
This commit is contained in:
28
src/config.c
28
src/config.c
@@ -808,6 +808,10 @@ load_machine(void)
|
|||||||
/* Remove this after a while.. */
|
/* Remove this after a while.. */
|
||||||
config_delete_var(cat, "nvr_path");
|
config_delete_var(cat, "nvr_path");
|
||||||
config_delete_var(cat, "enable_sync");
|
config_delete_var(cat, "enable_sync");
|
||||||
|
|
||||||
|
/* Set up the architecture flags. */
|
||||||
|
AT = IS_AT(machine);
|
||||||
|
PCI = IS_ARCH(machine, MACHINE_BUS_PCI);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -1095,17 +1099,22 @@ load_storage_controllers(void)
|
|||||||
ide_ter_enabled = !!config_get_int(cat, "ide_ter", 0);
|
ide_ter_enabled = !!config_get_int(cat, "ide_ter", 0);
|
||||||
ide_qua_enabled = !!config_get_int(cat, "ide_qua", 0);
|
ide_qua_enabled = !!config_get_int(cat, "ide_qua", 0);
|
||||||
|
|
||||||
cassette_enable = !!config_get_int(cat, "cassette_enabled", 1);
|
cassette_enable = !!config_get_int(cat, "cassette_enabled", AT ? 0 : 1);
|
||||||
p = config_get_string(cat, "cassette_file", "");
|
p = config_get_string(cat, "cassette_file", "");
|
||||||
if (strlen(p) > 511)
|
if (strlen(p) > 511)
|
||||||
fatal("load_storage_controllers(): strlen(p) > 511\n");
|
fatal("load_storage_controllers(): strlen(p) > 511\n");
|
||||||
else
|
else
|
||||||
strncpy(cassette_fname, p, strlen(p) + 1);
|
strncpy(cassette_fname, p, strlen(p) + 1);
|
||||||
cassette_mode = config_get_string(cat, "cassette_mode", "load");
|
p = config_get_string(cat, "cassette_mode", "");
|
||||||
|
if (strlen(p) > 511)
|
||||||
|
fatal("load_storage_controllers(): strlen(p) > 511\n");
|
||||||
|
else
|
||||||
|
strncpy(cassette_mode, p, strlen(p) + 1);
|
||||||
cassette_pos = config_get_int(cat, "cassette_position", 0);
|
cassette_pos = config_get_int(cat, "cassette_position", 0);
|
||||||
cassette_srate = config_get_int(cat, "cassette_srate", 44100);
|
cassette_srate = config_get_int(cat, "cassette_srate", 44100);
|
||||||
cassette_append = !!config_get_int(cat, "cassette_append", 0);
|
cassette_append = !!config_get_int(cat, "cassette_append", 0);
|
||||||
cassette_pcm = config_get_int(cat, "cassette_pcm", 0);
|
cassette_pcm = config_get_int(cat, "cassette_pcm", 0);
|
||||||
|
cassette_ui_writeprot = !!config_get_int(cat, "cassette_writeprot", 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -1937,6 +1946,11 @@ config_load(void)
|
|||||||
kbd_req_capture = 0;
|
kbd_req_capture = 0;
|
||||||
scale = 1;
|
scale = 1;
|
||||||
machine = machine_get_machine_from_internal_name("ibmpc");
|
machine = machine_get_machine_from_internal_name("ibmpc");
|
||||||
|
|
||||||
|
/* Set up the architecture flags. */
|
||||||
|
AT = IS_AT(machine);
|
||||||
|
PCI = IS_ARCH(machine, MACHINE_BUS_PCI);
|
||||||
|
|
||||||
fpu_type = fpu_get_type(cpu_f, cpu, "none");
|
fpu_type = fpu_get_type(cpu_f, cpu, "none");
|
||||||
gfxcard = video_get_video_from_internal_name("cga");
|
gfxcard = video_get_video_from_internal_name("cga");
|
||||||
vid_api = plat_vidapi("default");
|
vid_api = plat_vidapi("default");
|
||||||
@@ -1967,13 +1981,14 @@ config_load(void)
|
|||||||
for (i = 0; i < ISAMEM_MAX; i++)
|
for (i = 0; i < ISAMEM_MAX; i++)
|
||||||
isamem_type[i] = 0;
|
isamem_type[i] = 0;
|
||||||
|
|
||||||
cassette_enable = 1;
|
cassette_enable = AT ? 0 : 1;
|
||||||
memset(cassette_fname, 0x00, sizeof(cassette_fname));
|
memset(cassette_fname, 0x00, sizeof(cassette_fname));
|
||||||
cassette_mode = "load";
|
memcpy(cassette_mode, "load", strlen("load") + 1);
|
||||||
cassette_pos = 0;
|
cassette_pos = 0;
|
||||||
cassette_srate = 44100;
|
cassette_srate = 44100;
|
||||||
cassette_append = 0;
|
cassette_append = 0;
|
||||||
cassette_pcm = 0;
|
cassette_pcm = 0;
|
||||||
|
cassette_ui_writeprot = 0;
|
||||||
|
|
||||||
config_log("Config file not present or invalid!\n");
|
config_log("Config file not present or invalid!\n");
|
||||||
return;
|
return;
|
||||||
@@ -2527,6 +2542,11 @@ save_storage_controllers(void)
|
|||||||
config_delete_var(cat, "cassette_pcm");
|
config_delete_var(cat, "cassette_pcm");
|
||||||
else
|
else
|
||||||
config_set_int(cat, "cassette_pcm", cassette_pcm);
|
config_set_int(cat, "cassette_pcm", cassette_pcm);
|
||||||
|
|
||||||
|
if (cassette_ui_writeprot == 0)
|
||||||
|
config_delete_var(cat, "cassette_writeprot");
|
||||||
|
else
|
||||||
|
config_set_int(cat, "cassette_writeprot", cassette_ui_writeprot);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -47,7 +47,7 @@
|
|||||||
pc_cassette_t * cassette;
|
pc_cassette_t * cassette;
|
||||||
|
|
||||||
char cassette_fname[512];
|
char cassette_fname[512];
|
||||||
char * cassette_mode;
|
char cassette_mode[512];
|
||||||
unsigned long cassette_pos, cassette_srate;
|
unsigned long cassette_pos, cassette_srate;
|
||||||
int cassette_enable;
|
int cassette_enable;
|
||||||
int cassette_append, cassette_pcm;
|
int cassette_append, cassette_pcm;
|
||||||
@@ -270,6 +270,12 @@ void pc_cas_set_mode (pc_cassette_t *cas, int save)
|
|||||||
|
|
||||||
cas->save = save;
|
cas->save = save;
|
||||||
|
|
||||||
|
memset(cassette_mode, 0x00, sizeof(cassette_mode));
|
||||||
|
if (save)
|
||||||
|
memcpy(cassette_mode, "save", strlen("save") + 1);
|
||||||
|
else
|
||||||
|
memcpy(cassette_mode, "load", strlen("load") + 1);
|
||||||
|
|
||||||
if (cas->fp != NULL) {
|
if (cas->fp != NULL) {
|
||||||
fflush (cas->fp);
|
fflush (cas->fp);
|
||||||
|
|
||||||
|
|||||||
@@ -161,7 +161,7 @@ void pc_cas_advance (pc_cassette_t *cas);
|
|||||||
extern pc_cassette_t * cassette;
|
extern pc_cassette_t * cassette;
|
||||||
|
|
||||||
extern char cassette_fname[512];
|
extern char cassette_fname[512];
|
||||||
extern char * cassette_mode;
|
extern char cassette_mode[512];
|
||||||
extern unsigned long cassette_pos, cassette_srate;
|
extern unsigned long cassette_pos, cassette_srate;
|
||||||
extern int cassette_enable;
|
extern int cassette_enable;
|
||||||
extern int cassette_append, cassette_pcm;
|
extern int cassette_append, cassette_pcm;
|
||||||
|
|||||||
@@ -383,9 +383,11 @@
|
|||||||
#define IDM_CASSETTE_IMAGE_NEW 0x1200
|
#define IDM_CASSETTE_IMAGE_NEW 0x1200
|
||||||
#define IDM_CASSETTE_IMAGE_EXISTING 0x1300
|
#define IDM_CASSETTE_IMAGE_EXISTING 0x1300
|
||||||
#define IDM_CASSETTE_IMAGE_EXISTING_WP 0x1400
|
#define IDM_CASSETTE_IMAGE_EXISTING_WP 0x1400
|
||||||
#define IDM_CASSETTE_REWIND 0x1500
|
#define IDM_CASSETTE_RECORD 0x1500
|
||||||
#define IDM_CASSETTE_FAST_FORWARD 0x1600
|
#define IDM_CASSETTE_PLAY 0x1600
|
||||||
#define IDM_CASSETTE_EJECT 0x1700
|
#define IDM_CASSETTE_REWIND 0x1700
|
||||||
|
#define IDM_CASSETTE_FAST_FORWARD 0x1800
|
||||||
|
#define IDM_CASSETTE_EJECT 0x1900
|
||||||
|
|
||||||
#define IDM_FLOPPY_IMAGE_NEW 0x2200
|
#define IDM_FLOPPY_IMAGE_NEW 0x2200
|
||||||
#define IDM_FLOPPY_IMAGE_EXISTING 0x2300
|
#define IDM_FLOPPY_IMAGE_EXISTING 0x2300
|
||||||
|
|||||||
@@ -196,6 +196,8 @@ BEGIN
|
|||||||
MENUITEM "&Existing image...", IDM_CASSETTE_IMAGE_EXISTING
|
MENUITEM "&Existing image...", IDM_CASSETTE_IMAGE_EXISTING
|
||||||
MENUITEM "Existing image (&Write-protected)...", IDM_CASSETTE_IMAGE_EXISTING_WP
|
MENUITEM "Existing image (&Write-protected)...", IDM_CASSETTE_IMAGE_EXISTING_WP
|
||||||
MENUITEM SEPARATOR
|
MENUITEM SEPARATOR
|
||||||
|
MENUITEM "&Record", IDM_CASSETTE_RECORD
|
||||||
|
MENUITEM "&Play", IDM_CASSETTE_PLAY
|
||||||
MENUITEM "&Rewind to the beginning", IDM_CASSETTE_REWIND
|
MENUITEM "&Rewind to the beginning", IDM_CASSETTE_REWIND
|
||||||
MENUITEM "&Fast forward to the end", IDM_CASSETTE_FAST_FORWARD
|
MENUITEM "&Fast forward to the end", IDM_CASSETTE_FAST_FORWARD
|
||||||
MENUITEM SEPARATOR
|
MENUITEM SEPARATOR
|
||||||
|
|||||||
@@ -34,7 +34,7 @@
|
|||||||
|
|
||||||
|
|
||||||
static HMENU media_menu, stbar_menu;
|
static HMENU media_menu, stbar_menu;
|
||||||
static HMENU menus[FDD_NUM + CDROM_NUM + ZIP_NUM + MO_NUM];
|
static HMENU menus[1 + FDD_NUM + CDROM_NUM + ZIP_NUM + MO_NUM];
|
||||||
|
|
||||||
static char index_map[255];
|
static char index_map[255];
|
||||||
|
|
||||||
@@ -216,10 +216,23 @@ media_menu_update_cassette(void)
|
|||||||
|
|
||||||
if (strlen(cassette_fname) == 0) {
|
if (strlen(cassette_fname) == 0) {
|
||||||
EnableMenuItem(menus[i], IDM_CASSETTE_EJECT, MF_BYCOMMAND | MF_GRAYED);
|
EnableMenuItem(menus[i], IDM_CASSETTE_EJECT, MF_BYCOMMAND | MF_GRAYED);
|
||||||
|
EnableMenuItem(menus[i], IDM_CASSETTE_RECORD, MF_BYCOMMAND | MF_GRAYED);
|
||||||
|
EnableMenuItem(menus[i], IDM_CASSETTE_PLAY, MF_BYCOMMAND | MF_GRAYED);
|
||||||
|
CheckMenuItem(menus[i], IDM_CASSETTE_RECORD, MF_BYCOMMAND | MF_UNCHECKED);
|
||||||
|
CheckMenuItem(menus[i], IDM_CASSETTE_PLAY, MF_BYCOMMAND | MF_UNCHECKED);
|
||||||
EnableMenuItem(menus[i], IDM_CASSETTE_REWIND, MF_BYCOMMAND | MF_GRAYED);
|
EnableMenuItem(menus[i], IDM_CASSETTE_REWIND, MF_BYCOMMAND | MF_GRAYED);
|
||||||
EnableMenuItem(menus[i], IDM_CASSETTE_FAST_FORWARD, MF_BYCOMMAND | MF_GRAYED);
|
EnableMenuItem(menus[i], IDM_CASSETTE_FAST_FORWARD, MF_BYCOMMAND | MF_GRAYED);
|
||||||
} else {
|
} else {
|
||||||
EnableMenuItem(menus[i], IDM_CASSETTE_EJECT, MF_BYCOMMAND | MF_ENABLED);
|
EnableMenuItem(menus[i], IDM_CASSETTE_EJECT, MF_BYCOMMAND | MF_ENABLED);
|
||||||
|
EnableMenuItem(menus[i], IDM_CASSETTE_RECORD, MF_BYCOMMAND | MF_ENABLED);
|
||||||
|
EnableMenuItem(menus[i], IDM_CASSETTE_PLAY, MF_BYCOMMAND | MF_ENABLED);
|
||||||
|
if (strcmp(cassette_mode, "save") == 0) {
|
||||||
|
CheckMenuItem(menus[i], IDM_CASSETTE_RECORD, MF_BYCOMMAND | MF_CHECKED);
|
||||||
|
CheckMenuItem(menus[i], IDM_CASSETTE_PLAY, MF_BYCOMMAND | MF_UNCHECKED);
|
||||||
|
} else {
|
||||||
|
CheckMenuItem(menus[i], IDM_CASSETTE_RECORD, MF_BYCOMMAND | MF_UNCHECKED);
|
||||||
|
CheckMenuItem(menus[i], IDM_CASSETTE_PLAY, MF_BYCOMMAND | MF_CHECKED);
|
||||||
|
}
|
||||||
EnableMenuItem(menus[i], IDM_CASSETTE_REWIND, MF_BYCOMMAND | MF_ENABLED);
|
EnableMenuItem(menus[i], IDM_CASSETTE_REWIND, MF_BYCOMMAND | MF_ENABLED);
|
||||||
EnableMenuItem(menus[i], IDM_CASSETTE_FAST_FORWARD, MF_BYCOMMAND | MF_ENABLED);
|
EnableMenuItem(menus[i], IDM_CASSETTE_FAST_FORWARD, MF_BYCOMMAND | MF_ENABLED);
|
||||||
}
|
}
|
||||||
@@ -501,6 +514,12 @@ media_menu_proc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case IDM_CASSETTE_RECORD:
|
||||||
|
pc_cas_set_mode(cassette, 1);
|
||||||
|
break;
|
||||||
|
case IDM_CASSETTE_PLAY:
|
||||||
|
pc_cas_set_mode(cassette, 0);
|
||||||
|
break;
|
||||||
case IDM_CASSETTE_REWIND:
|
case IDM_CASSETTE_REWIND:
|
||||||
pc_cas_rewind(cassette);
|
pc_cas_rewind(cassette);
|
||||||
break;
|
break;
|
||||||
|
|||||||
Reference in New Issue
Block a user