Merge pull request #5825 from Cacodemon345/mke
Panasonic/MKE CD-ROM interface backport from PicoGUS
This commit is contained in:
@@ -52,15 +52,18 @@ Harddrives::populateRemovableBuses(QAbstractItemModel *model)
|
||||
{
|
||||
model->removeRows(0, model->rowCount());
|
||||
#ifdef USE_CDROM_MITSUMI
|
||||
model->insertRows(0, 4);
|
||||
model->insertRows(0, 5);
|
||||
#else
|
||||
model->insertRows(0, 3);
|
||||
model->insertRows(0, 4);
|
||||
#endif
|
||||
model->setData(model->index(0, 0), QObject::tr("Disabled"));
|
||||
model->setData(model->index(1, 0), QObject::tr("ATAPI"));
|
||||
model->setData(model->index(2, 0), QObject::tr("SCSI"));
|
||||
#ifdef USE_CDROM_MITSUMI
|
||||
model->setData(model->index(3, 0), QObject::tr("Mitsumi"));
|
||||
model->setData(model->index(4, 0), QObject::tr("Panasonic/MKE"));
|
||||
#else
|
||||
model->setData(model->index(3, 0), QObject::tr("Panasonic/MKE"));
|
||||
#endif
|
||||
|
||||
model->setData(model->index(0, 0), HDD_BUS_DISABLED, Qt::UserRole);
|
||||
@@ -68,6 +71,9 @@ Harddrives::populateRemovableBuses(QAbstractItemModel *model)
|
||||
model->setData(model->index(2, 0), HDD_BUS_SCSI, Qt::UserRole);
|
||||
#ifdef USE_CDROM_MITSUMI
|
||||
model->setData(model->index(3, 0), CDROM_BUS_MITSUMI, Qt::UserRole);
|
||||
model->setData(model->index(4, 0), CDROM_BUS_MKE, Qt::UserRole);
|
||||
#else
|
||||
model->setData(model->index(3, 0), CDROM_BUS_MKE, Qt::UserRole);
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -189,6 +195,9 @@ Harddrives::BusChannelName(uint8_t bus, uint8_t channel)
|
||||
case CDROM_BUS_MITSUMI:
|
||||
busName = QString("Mitsumi");
|
||||
break;
|
||||
case CDROM_BUS_MKE:
|
||||
busName = QString("Panasonic/MKE");
|
||||
break;
|
||||
}
|
||||
|
||||
return busName;
|
||||
|
||||
@@ -388,7 +388,7 @@ MachineStatus::iterateCDROM(const std::function<void(int)> &cb)
|
||||
(scsi_card_current[0] == 0) && (scsi_card_current[1] == 0) &&
|
||||
(scsi_card_current[2] == 0) && (scsi_card_current[3] == 0))
|
||||
continue;
|
||||
if ((cdrom[i].bus_type == CDROM_BUS_MITSUMI) && (cdrom_interface_current == 0))
|
||||
if ((cdrom[i].bus_type == CDROM_BUS_MITSUMI || cdrom[i].bus_type == CDROM_BUS_MKE) && (cdrom_interface_current == 0))
|
||||
continue;
|
||||
if (cdrom[i].bus_type != 0) {
|
||||
cb(i);
|
||||
|
||||
@@ -834,8 +834,11 @@ MediaMenu::cdromUpdateMenu(int i)
|
||||
busName = "SCSI";
|
||||
break;
|
||||
case CDROM_BUS_MITSUMI:
|
||||
busName = "Mitsumi";
|
||||
break;
|
||||
busName = "Mitsumi";
|
||||
break;
|
||||
case CDROM_BUS_MKE:
|
||||
busName = "Panasonic/MKE";
|
||||
break;
|
||||
}
|
||||
|
||||
menu->setTitle(tr("CD-ROM %1 (%2): %3").arg(QString::number(i+1), busName, name.isEmpty() ? tr("(empty)") : name2));
|
||||
|
||||
@@ -23,10 +23,14 @@
|
||||
|
||||
#include "86box/hdd.h"
|
||||
#include "86box/scsi.h"
|
||||
#include "86box/cdrom.h"
|
||||
#include "qt_settings_bus_tracking.hpp"
|
||||
|
||||
SettingsBusTracking::SettingsBusTracking()
|
||||
{
|
||||
mitsumi_tracking = false;
|
||||
mke_tracking = false;
|
||||
|
||||
mfm_tracking = 0x0000000000000000ULL;
|
||||
esdi_tracking = 0x0000000000000000ULL;
|
||||
xta_tracking = 0x0000000000000000ULL;
|
||||
@@ -204,6 +208,14 @@ QList<int> SettingsBusTracking::busChannelsInUse(const int bus) {
|
||||
int element;
|
||||
uint64_t mask;
|
||||
switch (bus) {
|
||||
case CDROM_BUS_MKE:
|
||||
if (mke_tracking)
|
||||
channelsInUse.append(0);
|
||||
break;
|
||||
case CDROM_BUS_MITSUMI:
|
||||
if (mitsumi_tracking)
|
||||
channelsInUse.append(0);
|
||||
break;
|
||||
case HDD_BUS_MFM:
|
||||
for (uint8_t i = 0; i < 32; i++) {
|
||||
mask = 0xffULL << ((uint64_t) ((i << 3) & 0x3f));
|
||||
@@ -263,6 +275,12 @@ SettingsBusTracking::device_track(int set, uint8_t dev_type, int bus, int channe
|
||||
uint64_t mask;
|
||||
|
||||
switch (bus) {
|
||||
case CDROM_BUS_MKE:
|
||||
mke_tracking = set;
|
||||
break;
|
||||
case CDROM_BUS_MITSUMI:
|
||||
mitsumi_tracking = set;
|
||||
break;
|
||||
case HDD_BUS_MFM:
|
||||
mask = ((uint64_t) dev_type) << ((uint64_t) ((channel << 3) & 0x3f));
|
||||
|
||||
|
||||
@@ -61,6 +61,9 @@ private:
|
||||
8 bits per device (future-proofing) = 2048 bits. */
|
||||
uint64_t scsi_tracking[32] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
|
||||
|
||||
bool mitsumi_tracking;
|
||||
bool mke_tracking;
|
||||
};
|
||||
|
||||
#endif // QT_SETTINGS_BUS_TRACKING_HPP
|
||||
|
||||
@@ -69,6 +69,7 @@ setCDROMBus(QAbstractItemModel *model, const QModelIndex &idx, uint8_t bus, uint
|
||||
case CDROM_BUS_ATAPI:
|
||||
case CDROM_BUS_SCSI:
|
||||
case CDROM_BUS_MITSUMI:
|
||||
case CDROM_BUS_MKE:
|
||||
icon = QIcon(":/settings/qt/icons/cdrom.ico");
|
||||
break;
|
||||
}
|
||||
@@ -104,7 +105,8 @@ setCDROMType(QAbstractItemModel *model, const QModelIndex &idx, int type)
|
||||
auto i = idx.siblingAtColumn(2);
|
||||
if (idx.siblingAtColumn(0).data(Qt::UserRole).toUInt() == CDROM_BUS_DISABLED)
|
||||
model->setData(i, QCoreApplication::translate("", "None"));
|
||||
else if (idx.siblingAtColumn(0).data(Qt::UserRole).toUInt() != CDROM_BUS_MITSUMI)
|
||||
else if (idx.siblingAtColumn(0).data(Qt::UserRole).toUInt() != CDROM_BUS_MITSUMI &&
|
||||
idx.siblingAtColumn(0).data(Qt::UserRole).toUInt() != CDROM_BUS_MKE)
|
||||
model->setData(i, CDROMName(type));
|
||||
model->setData(i, type, Qt::UserRole);
|
||||
}
|
||||
@@ -175,7 +177,7 @@ SettingsFloppyCDROM::SettingsFloppyCDROM(QWidget *parent)
|
||||
else if (cdrom[i].bus_type == CDROM_BUS_SCSI)
|
||||
Harddrives::busTrackClass->device_track(1, DEV_CDROM, cdrom[i].bus_type,
|
||||
cdrom[i].scsi_device_id);
|
||||
else if (cdrom[i].bus_type == CDROM_BUS_MITSUMI)
|
||||
else if (cdrom[i].bus_type == CDROM_BUS_MITSUMI || cdrom[i].bus_type == CDROM_BUS_MKE)
|
||||
Harddrives::busTrackClass->device_track(1, DEV_CDROM, cdrom[i].bus_type, 0);
|
||||
}
|
||||
ui->tableViewCDROM->resizeColumnsToContents();
|
||||
@@ -341,9 +343,9 @@ SettingsFloppyCDROM::on_comboBoxBus_currentIndexChanged(int index)
|
||||
if (index >= 0) {
|
||||
int bus = ui->comboBoxBus->currentData().toInt();
|
||||
bool enabled = (bus != CDROM_BUS_DISABLED);
|
||||
ui->comboBoxChannel->setEnabled((bus == CDROM_BUS_MITSUMI) ? 0 : enabled);
|
||||
ui->comboBoxSpeed->setEnabled((bus == CDROM_BUS_MITSUMI) ? 0 : enabled);
|
||||
ui->comboBoxCDROMType->setEnabled((bus == CDROM_BUS_MITSUMI) ? 0 : enabled);
|
||||
ui->comboBoxChannel->setEnabled((bus == CDROM_BUS_MITSUMI || bus == CDROM_BUS_MKE) ? 0 : enabled);
|
||||
ui->comboBoxSpeed->setEnabled((bus == CDROM_BUS_MITSUMI || bus == CDROM_BUS_MKE) ? 0 : enabled);
|
||||
ui->comboBoxCDROMType->setEnabled((bus == CDROM_BUS_MITSUMI || bus == CDROM_BUS_MKE) ? 0 : enabled);
|
||||
|
||||
Harddrives::populateBusChannels(ui->comboBoxChannel->model(), bus, Harddrives::busTrackClass);
|
||||
}
|
||||
@@ -370,7 +372,7 @@ SettingsFloppyCDROM::on_comboBoxBus_activated(int)
|
||||
ui->comboBoxChannel->setCurrentIndex(Harddrives::busTrackClass->next_free_ide_channel());
|
||||
else if (bus_type == CDROM_BUS_SCSI)
|
||||
ui->comboBoxChannel->setCurrentIndex(Harddrives::busTrackClass->next_free_scsi_id());
|
||||
else if (bus_type == CDROM_BUS_MITSUMI)
|
||||
else if (bus_type == CDROM_BUS_MITSUMI || bus_type == CDROM_BUS_MKE)
|
||||
ui->comboBoxChannel->setCurrentIndex(0);
|
||||
|
||||
setCDROMBus(ui->tableViewCDROM->model(),
|
||||
|
||||
@@ -124,6 +124,7 @@ SettingsOtherRemovable::SettingsOtherRemovable(QWidget *parent)
|
||||
ui->setupUi(this);
|
||||
|
||||
Harddrives::populateRemovableBuses(ui->comboBoxMOBus->model());
|
||||
ui->comboBoxMOBus->model()->removeRows(3, ui->comboBoxMOBus->model()->rowCount() - 3);
|
||||
auto *model = ui->comboBoxMOType->model();
|
||||
for (uint32_t i = 0; i < KNOWN_MO_DRIVE_TYPES; i++) {
|
||||
Models::AddEntry(model, moDriveTypeName(i), i);
|
||||
@@ -147,6 +148,8 @@ SettingsOtherRemovable::SettingsOtherRemovable(QWidget *parent)
|
||||
ui->tableViewMO->setCurrentIndex(model->index(0, 0));
|
||||
|
||||
Harddrives::populateRemovableBuses(ui->comboBoxRDiskBus->model());
|
||||
if ((ui->comboBoxRDiskBus->model()->rowCount() - 3) > 0)
|
||||
ui->comboBoxRDiskBus->model()->removeRows(3, ui->comboBoxRDiskBus->model()->rowCount() - 3);
|
||||
model = ui->comboBoxRDiskType->model();
|
||||
for (uint32_t i = 0; i < KNOWN_RDISK_DRIVE_TYPES; i++) {
|
||||
Models::AddEntry(model, rdiskDriveTypeName(i), i);
|
||||
|
||||
Reference in New Issue
Block a user