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_CDROM 0x20
#define SB_ZIP 0x30
#define SB_MO 0x40
#define SB_NETWORK 0x50
#define SB_SOUND 0x60
#define SB_TEXT 0x70
@@ -138,9 +139,13 @@ extern void ui_floppy_mount(uint8_t drive, int part, int8_t wp,
extern void ui_cdrom_eject(uint8_t id);
extern void ui_cdrom_reload(uint8_t id);
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_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,
const wchar_t *fn);
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_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 mo_create_image(const wchar_t*, int8_t sz);
#ifdef __cplusplus
}

View File

@@ -58,6 +58,7 @@
#include "../devices/scsi/scsi_device.h"
#include "../devices/scsi/scsi_disk.h"
#include "../devices/disk/zip.h"
#include "../devices/disk/mo.h"
#include "../devices/cdrom/cdrom.h"
#include "ui.h"
@@ -136,9 +137,9 @@ ui_cdrom_reload(uint8_t id)
void
ui_zip_mount(uint8_t id, int part, int8_t wp, const wchar_t *fn)
ui_zip_mount(uint8_t id, int part, int8_t wp, const wchar_t* fn)
{
zip_t *dev = (zip_t *)zip_drives[id].priv;
zip_t* dev = (zip_t*)zip_drives[id].priv;
int len;
zip_disk_close(dev);
@@ -162,7 +163,7 @@ ui_zip_mount(uint8_t id, int part, int8_t wp, const wchar_t *fn)
void
ui_zip_eject(uint8_t id)
{
zip_t *dev = (zip_t *)zip_drives[id].priv;
zip_t* dev = (zip_t*)zip_drives[id].priv;
zip_disk_close(dev);
@@ -172,8 +173,8 @@ ui_zip_eject(uint8_t id)
}
ui_sb_icon_state(SB_ZIP | id, 1);
ui_sb_menu_enable_item(SB_ZIP|id, IDM_ZIP_EJECT | id, 0);
ui_sb_menu_enable_item(SB_ZIP|id, IDM_ZIP_RELOAD | id, 1);
ui_sb_menu_enable_item(SB_ZIP | id, IDM_ZIP_EJECT | id, 0);
ui_sb_menu_enable_item(SB_ZIP | id, IDM_ZIP_RELOAD | id, 1);
ui_sb_tip_update(SB_ZIP | id);
config_save();
@@ -183,20 +184,89 @@ ui_zip_eject(uint8_t id)
void
ui_zip_reload(uint8_t id)
{
zip_t *dev = (zip_t *)zip_drives[id].priv;
zip_t* dev = (zip_t*)zip_drives[id].priv;
zip_disk_reload(dev);
if (wcslen(zip_drives[id].image_path) == 0) {
ui_sb_menu_enable_item(SB_ZIP|id, IDM_ZIP_EJECT | id, 0);
ui_sb_icon_state(SB_ZIP|id, 1);
} else {
ui_sb_menu_enable_item(SB_ZIP|id, IDM_ZIP_EJECT | id, 1);
ui_sb_icon_state(SB_ZIP|id, 0);
ui_sb_menu_enable_item(SB_ZIP | id, IDM_ZIP_EJECT | id, 0);
ui_sb_icon_state(SB_ZIP | id, 1);
}
else {
ui_sb_menu_enable_item(SB_ZIP | id, IDM_ZIP_EJECT | id, 1);
ui_sb_icon_state(SB_ZIP | id, 0);
}
ui_sb_menu_enable_item(SB_ZIP|id, IDM_ZIP_RELOAD | id, 0);
ui_sb_tip_update(SB_ZIP|id);
ui_sb_menu_enable_item(SB_ZIP | id, IDM_ZIP_RELOAD | id, 0);
ui_sb_tip_update(SB_ZIP | id);
config_save();
}
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();
}

View File

@@ -186,6 +186,11 @@
#define IDM_ZIP_EJECT (IDM_SBAR + 0x1200)
#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_EXIST (IDM_SBAR + 0x1900)
#define IDM_DISK_EJECT (IDM_SBAR + 0x1a00)