Skip to content

Commit

Permalink
Fix CTRL_CMD_GET_DRVINFO
Browse files Browse the repository at this point in the history
  • Loading branch information
markusC64 authored and markusC64 committed Apr 13, 2023
1 parent 59b5cb4 commit 858d5ed
Show file tree
Hide file tree
Showing 5 changed files with 18 additions and 2 deletions.
7 changes: 7 additions & 0 deletions software/drive/c1541.cc
Expand Up @@ -367,6 +367,13 @@ int C1541 :: get_current_iec_address(void)
return iec_address;
}

int C1541 :: get_effective_iec_address(void)
{
if(registers[C1541_POWER]) // if powered, read actual address from its ram
return int(memory_map[0x78] & 0x1F);
return iec_address;
}

bool C1541 :: check_if_save_needed(SubsysCommand *cmd)
{
if ((disk_state == e_gcr_disk) && (!gcr_image_up_to_date)) {
Expand Down
1 change: 1 addition & 0 deletions software/drive/c1541.h
Expand Up @@ -182,6 +182,7 @@ class C1541 : public SubSystem, ConfigurableObject, ObjectWithMenu

// called from IEC (UltiCopy)
int get_current_iec_address(void);
int get_effective_iec_address(void);
void drive_power(bool on);
bool get_drive_power();
t_drive_type get_drive_type() { return current_drive_type; }
Expand Down
7 changes: 7 additions & 0 deletions software/drive/c1581.cc
Expand Up @@ -232,6 +232,13 @@ int C1581 :: get_current_iec_address(void)
return iec_address;
}

int C1541 :: get_effective_iec_address(void)
{
if(registers[C1541_POWER]) // if powered, read actual address from its ram
return int(memory_map[0x78] & 0x1F);
return iec_address;
}

void C1581 :: remove_disk(void)
{
registers[C1541_INSERTED] = 0;
Expand Down
1 change: 1 addition & 0 deletions software/drive/c1581.h
Expand Up @@ -131,6 +131,7 @@ class C1581 : public SubSystem, ConfigurableObject, ObjectWithMenu

// Misc
int get_current_iec_address(void);
int get_effective_iec_address(void);
bool get_drive_power();

uint8_t IrqHandler(void);
Expand Down
4 changes: 2 additions & 2 deletions software/io/command_interface/control_target.cc
Expand Up @@ -215,14 +215,14 @@ void ControlTarget :: parse_command(Message *command, Message **reply, Message *
if (c1541_A) {
data_message.message[0]++;
data_message.message[offs++] = (uint8_t)c1541_A->get_drive_type();
data_message.message[offs++] = (uint8_t)c1541_A->get_current_iec_address();
data_message.message[offs++] = (uint8_t)c1541_A->get_effective_iec_address();
data_message.message[offs++] = c1541_A->get_drive_power() ? 1 : 0;
data_message.length += 3;
}
if (c1541_B) {
data_message.message[0]++;
data_message.message[offs++] = (uint8_t)c1541_B->get_drive_type();
data_message.message[offs++] = (uint8_t)c1541_B->get_current_iec_address();
data_message.message[offs++] = (uint8_t)c1541_B->get_effective_iec_address();
data_message.message[offs++] = c1541_B->get_drive_power() ? 1 : 0;
data_message.length += 3;
}
Expand Down

0 comments on commit 858d5ed

Please sign in to comment.