Add status bar for magneto-optical.

This commit is contained in:
2020-03-28 01:27:27 +00:00
parent 9175a1b636
commit 2b0588073e
3 changed files with 97 additions and 16 deletions

View File

@@ -72,6 +72,7 @@
#define SB_DISK 0x10 #define SB_DISK 0x10
#define SB_CDROM 0x20 #define SB_CDROM 0x20
#define SB_ZIP 0x30 #define SB_ZIP 0x30
#define SB_MO 0x40
#define SB_NETWORK 0x50 #define SB_NETWORK 0x50
#define SB_SOUND 0x60 #define SB_SOUND 0x60
#define SB_TEXT 0x70 #define SB_TEXT 0x70
@@ -141,6 +142,10 @@ extern void ui_zip_mount(uint8_t drive, int part, int8_t wp,
const wchar_t* fn); const wchar_t* fn);
extern void ui_zip_eject(uint8_t id); extern void ui_zip_eject(uint8_t id);
extern void ui_zip_reload(uint8_t id); extern void ui_zip_reload(uint8_t id);
extern void ui_mo_mount(uint8_t drive, int part, int8_t wp,
const wchar_t* fn);
extern void ui_mo_eject(uint8_t id);
extern void ui_mo_reload(uint8_t id);
extern void ui_disk_mount(uint8_t drive, int part, int8_t wp, extern void ui_disk_mount(uint8_t drive, int part, int8_t wp,
const wchar_t *fn); const wchar_t *fn);
extern void ui_disk_unload(uint8_t id); extern void ui_disk_unload(uint8_t id);
@@ -211,6 +216,7 @@ extern void plat_endblit(void);
extern int floppy_create_86f(const wchar_t *, int8_t sz, int8_t rpm_mode); extern int floppy_create_86f(const wchar_t *, int8_t sz, int8_t rpm_mode);
extern int floppy_create_image(const wchar_t *, int8_t sz, int8_t is_fdi); extern int floppy_create_image(const wchar_t *, int8_t sz, int8_t is_fdi);
extern int zip_create_image(const wchar_t *, int8_t sz, int8_t is_zdi); extern int zip_create_image(const wchar_t *, int8_t sz, int8_t is_zdi);
extern int mo_create_image(const wchar_t*, int8_t sz);
#ifdef __cplusplus #ifdef __cplusplus
} }

View File

@@ -58,6 +58,7 @@
#include "../devices/scsi/scsi_device.h" #include "../devices/scsi/scsi_device.h"
#include "../devices/scsi/scsi_disk.h" #include "../devices/scsi/scsi_disk.h"
#include "../devices/disk/zip.h" #include "../devices/disk/zip.h"
#include "../devices/disk/mo.h"
#include "../devices/cdrom/cdrom.h" #include "../devices/cdrom/cdrom.h"
#include "ui.h" #include "ui.h"
@@ -190,7 +191,8 @@ ui_zip_reload(uint8_t id)
if (wcslen(zip_drives[id].image_path) == 0) { if (wcslen(zip_drives[id].image_path) == 0) {
ui_sb_menu_enable_item(SB_ZIP | id, IDM_ZIP_EJECT | id, 0); ui_sb_menu_enable_item(SB_ZIP | id, IDM_ZIP_EJECT | id, 0);
ui_sb_icon_state(SB_ZIP | id, 1); ui_sb_icon_state(SB_ZIP | id, 1);
} else { }
else {
ui_sb_menu_enable_item(SB_ZIP | id, IDM_ZIP_EJECT | id, 1); ui_sb_menu_enable_item(SB_ZIP | id, IDM_ZIP_EJECT | id, 1);
ui_sb_icon_state(SB_ZIP | id, 0); ui_sb_icon_state(SB_ZIP | id, 0);
} }
@@ -202,6 +204,74 @@ ui_zip_reload(uint8_t id)
} }
void
ui_mo_mount(uint8_t id, int part, int8_t wp, const wchar_t* fn)
{
mo_t* dev = (mo_t*)mo_drives[id].priv;
int len;
mo_disk_close(dev);
mo_drives[id].ui_writeprot = wp;
mo_load(dev, fn);
mo_insert(dev);
len = (int)wcslen(mo_drives[id].image_path);
ui_sb_icon_state(SB_MO | id, len ? 0 : 1);
sb_menu_enable_item(part, IDM_MO_EJECT | id, len ? 1 : 0);
sb_menu_enable_item(part, IDM_MO_RELOAD | id, len ? 0 : 1);
ui_sb_tip_update(SB_MO | id);
config_save();
}
void
ui_mo_eject(uint8_t id)
{
mo_t* dev = (mo_t*)mo_drives[id].priv;
mo_disk_close(dev);
if (mo_drives[id].bus_type) {
/* Signal disk change to the emulated machine. */
mo_insert(dev);
}
ui_sb_icon_state(SB_MO | id, 1);
ui_sb_menu_enable_item(SB_MO | id, IDM_MO_EJECT | id, 0);
ui_sb_menu_enable_item(SB_MO | id, IDM_MO_RELOAD | id, 1);
ui_sb_tip_update(SB_MO | id);
config_save();
}
void
ui_mo_reload(uint8_t id)
{
mo_t* dev = (mo_t*)mo_drives[id].priv;
mo_disk_reload(dev);
if (wcslen(mo_drives[id].image_path) == 0) {
ui_sb_menu_enable_item(SB_MO | id, IDM_MO_EJECT | id, 0);
ui_sb_icon_state(SB_MO | id, 1);
}
else {
ui_sb_menu_enable_item(SB_MO | id, IDM_MO_EJECT | id, 1);
ui_sb_icon_state(SB_MO | id, 0);
}
ui_sb_menu_enable_item(SB_MO | id, IDM_MO_RELOAD | id, 0);
ui_sb_tip_update(SB_MO | id);
config_save();
}
void void
ui_disk_mount(uint8_t drive, int part, int8_t wp, const wchar_t *fn) ui_disk_mount(uint8_t drive, int part, int8_t wp, const wchar_t *fn)
{ {

View File

@@ -186,6 +186,11 @@
#define IDM_ZIP_EJECT (IDM_SBAR + 0x1200) #define IDM_ZIP_EJECT (IDM_SBAR + 0x1200)
#define IDM_ZIP_RELOAD (IDM_SBAR + 0x1300) #define IDM_ZIP_RELOAD (IDM_SBAR + 0x1300)
#define IDM_MO_IMAGE_NEW (IDM_SBAR + 0x1400)
#define IDM_MO_IMAGE_EXIST (IDM_SBAR + 0x1500)
#define IDM_MO_EJECT (IDM_SBAR + 0x1600)
#define IDM_MO_RELOAD (IDM_SBAR + 0x1700)
#define IDM_DISK_IMAGE_NEW (IDM_SBAR + 0x1800) #define IDM_DISK_IMAGE_NEW (IDM_SBAR + 0x1800)
#define IDM_DISK_IMAGE_EXIST (IDM_SBAR + 0x1900) #define IDM_DISK_IMAGE_EXIST (IDM_SBAR + 0x1900)
#define IDM_DISK_EJECT (IDM_SBAR + 0x1a00) #define IDM_DISK_EJECT (IDM_SBAR + 0x1a00)