mirror of
https://github.com/dingusdev/dingusppc.git
synced 2024-09-27 04:54:42 +00:00
superdrive: Add name.
This commit is contained in:
parent
3483bebdb4
commit
62e80c0c2f
@ -30,9 +30,9 @@ along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|||||||
|
|
||||||
using namespace MacSuperdrive;
|
using namespace MacSuperdrive;
|
||||||
|
|
||||||
MacSuperDrive::MacSuperDrive()
|
MacSuperDrive::MacSuperDrive(std::string name)
|
||||||
{
|
{
|
||||||
this->name = "Superdrive";
|
this->set_name(name);
|
||||||
this->supported_types = HWCompType::FLOPPY_DRV;
|
this->supported_types = HWCompType::FLOPPY_DRV;
|
||||||
|
|
||||||
this->eject_latch = 0; // eject latch is off
|
this->eject_latch = 0; // eject latch is off
|
||||||
@ -57,7 +57,7 @@ void MacSuperDrive::command(uint8_t addr, uint8_t value)
|
|||||||
{
|
{
|
||||||
uint8_t new_motor_stat;
|
uint8_t new_motor_stat;
|
||||||
|
|
||||||
LOG_F(9, "Superdrive: command addr=0x%X, value=%d", addr, value);
|
LOG_F(9, "%s: command addr=0x%X, value=%d", this->get_name().c_str(), addr, value);
|
||||||
|
|
||||||
switch(addr) {
|
switch(addr) {
|
||||||
case CommandAddr::Step_Direction:
|
case CommandAddr::Step_Direction:
|
||||||
@ -81,17 +81,17 @@ void MacSuperDrive::command(uint8_t addr, uint8_t value)
|
|||||||
this->sector_start_time = 0;
|
this->sector_start_time = 0;
|
||||||
this->init_track_search(-1);
|
this->init_track_search(-1);
|
||||||
this->is_ready = 1;
|
this->is_ready = 1;
|
||||||
LOG_F(INFO, "Superdrive: turn spindle motor on");
|
LOG_F(INFO, "%s: turn spindle motor on", this->get_name().c_str());
|
||||||
} else {
|
} else {
|
||||||
this->motor_on_time = 0;
|
this->motor_on_time = 0;
|
||||||
this->is_ready = 0;
|
this->is_ready = 0;
|
||||||
LOG_F(INFO, "Superdrive: turn spindle motor off");
|
LOG_F(INFO, "%s: turn spindle motor off", this->get_name().c_str());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case CommandAddr::Eject_Disk:
|
case CommandAddr::Eject_Disk:
|
||||||
if (value) {
|
if (value) {
|
||||||
LOG_F(INFO, "Superdrive: disk ejected");
|
LOG_F(INFO, "%s: disk ejected", this->get_name().c_str());
|
||||||
this->eject_latch = 1;
|
this->eject_latch = 1;
|
||||||
this->reset_params();
|
this->reset_params();
|
||||||
}
|
}
|
||||||
@ -107,13 +107,13 @@ void MacSuperDrive::command(uint8_t addr, uint8_t value)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
LOG_F(WARNING, "Superdrive: unimplemented command, addr=0x%X", addr);
|
LOG_F(WARNING, "%s: unimplemented command, addr=0x%X", this->get_name().c_str(), addr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t MacSuperDrive::status(uint8_t addr)
|
uint8_t MacSuperDrive::status(uint8_t addr)
|
||||||
{
|
{
|
||||||
LOG_F(9, "Superdrive: status request, addr = 0x%X", addr);
|
LOG_F(9, "%s: status request, addr = 0x%X", this->get_name().c_str(), addr);
|
||||||
|
|
||||||
switch(addr) {
|
switch(addr) {
|
||||||
case StatusAddr::Step_Status:
|
case StatusAddr::Step_Status:
|
||||||
@ -145,7 +145,7 @@ uint8_t MacSuperDrive::status(uint8_t addr)
|
|||||||
case StatusAddr::Media_Kind:
|
case StatusAddr::Media_Kind:
|
||||||
return this->media_kind ^ 1; // reverse logic!
|
return this->media_kind ^ 1; // reverse logic!
|
||||||
default:
|
default:
|
||||||
LOG_F(WARNING, "Superdrive: unimplemented status request, addr=0x%X", addr);
|
LOG_F(WARNING, "%s: unimplemented status request, addr=0x%X", this->get_name().c_str(), addr);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -153,7 +153,7 @@ uint8_t MacSuperDrive::status(uint8_t addr)
|
|||||||
int MacSuperDrive::insert_disk(std::string& img_path, int write_flag = 0)
|
int MacSuperDrive::insert_disk(std::string& img_path, int write_flag = 0)
|
||||||
{
|
{
|
||||||
if (this->has_disk) {
|
if (this->has_disk) {
|
||||||
LOG_F(ERROR, "Superdrive: drive is not empty!");
|
LOG_F(ERROR, "%s: drive is not empty!", this->get_name().c_str());
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -250,7 +250,7 @@ void MacSuperDrive::init_track_search(int pos)
|
|||||||
// pick random sector number
|
// pick random sector number
|
||||||
uint64_t seed = TimerManager::get_instance()->current_time_ns() >> 8;
|
uint64_t seed = TimerManager::get_instance()->current_time_ns() >> 8;
|
||||||
this->cur_sector = seed % this->sectors_per_track[this->cur_track];
|
this->cur_sector = seed % this->sectors_per_track[this->cur_track];
|
||||||
LOG_F(9, "Superdrive: current sector number set to %d", this->cur_sector);
|
LOG_F(9, "%s: current sector number set to %d", this->get_name().c_str(), this->cur_sector);
|
||||||
} else {
|
} else {
|
||||||
this->cur_sector = pos;
|
this->cur_sector = pos;
|
||||||
}
|
}
|
||||||
|
@ -96,7 +96,7 @@ typedef struct SectorHdr {
|
|||||||
|
|
||||||
class MacSuperDrive : public HWComponent {
|
class MacSuperDrive : public HWComponent {
|
||||||
public:
|
public:
|
||||||
MacSuperDrive();
|
MacSuperDrive(std::string name);
|
||||||
~MacSuperDrive() = default;
|
~MacSuperDrive() = default;
|
||||||
|
|
||||||
void command(uint8_t addr, uint8_t value);
|
void command(uint8_t addr, uint8_t value);
|
||||||
|
@ -57,7 +57,7 @@ Swim3Ctrl::Swim3Ctrl()
|
|||||||
// Attach virtual Superdrive to the internal drive connector
|
// Attach virtual Superdrive to the internal drive connector
|
||||||
// TODO: make SWIM3/drive wiring user selectable
|
// TODO: make SWIM3/drive wiring user selectable
|
||||||
this->int_drive = std::unique_ptr<MacSuperdrive::MacSuperDrive>
|
this->int_drive = std::unique_ptr<MacSuperdrive::MacSuperDrive>
|
||||||
(new MacSuperdrive::MacSuperDrive());
|
(new MacSuperdrive::MacSuperDrive("Superdrive1"));
|
||||||
}
|
}
|
||||||
|
|
||||||
int Swim3Ctrl::device_postinit()
|
int Swim3Ctrl::device_postinit()
|
||||||
|
Loading…
Reference in New Issue
Block a user