mirror of
https://github.com/TomHarte/CLK.git
synced 2024-11-03 08:05:40 +00:00
Added read/write escape clauses if faced with a read-only disk.
This commit is contained in:
parent
334872d374
commit
0da02d3902
@ -302,8 +302,6 @@ void i8272::posit_event(int event_type) {
|
|||||||
read_write_find_header:
|
read_write_find_header:
|
||||||
// Establishes the drive and head being addressed, and whether in double density mode; populates the internal
|
// Establishes the drive and head being addressed, and whether in double density mode; populates the internal
|
||||||
// cylinder, head, sector and size registers from the command stream.
|
// cylinder, head, sector and size registers from the command stream.
|
||||||
if(!dma_mode_) SetNonDMAExecution();
|
|
||||||
SET_DRIVE_HEAD_MFM();
|
|
||||||
LOAD_HEAD();
|
LOAD_HEAD();
|
||||||
cylinder_ = command_[2];
|
cylinder_ = command_[2];
|
||||||
head_ = command_[3];
|
head_ = command_[3];
|
||||||
@ -347,6 +345,8 @@ void i8272::posit_event(int event_type) {
|
|||||||
// Performs the read data or read deleted data command.
|
// Performs the read data or read deleted data command.
|
||||||
read_data:
|
read_data:
|
||||||
printf("Read data [%02x %02x %02x %02x ... %02x]\n", command_[2], command_[3], command_[4], command_[5], command_[8]);
|
printf("Read data [%02x %02x %02x %02x ... %02x]\n", command_[2], command_[3], command_[4], command_[5], command_[8]);
|
||||||
|
if(!dma_mode_) SetNonDMAExecution();
|
||||||
|
SET_DRIVE_HEAD_MFM();
|
||||||
read_next_data:
|
read_next_data:
|
||||||
goto read_write_find_header;
|
goto read_write_find_header;
|
||||||
|
|
||||||
@ -412,7 +412,14 @@ void i8272::posit_event(int event_type) {
|
|||||||
goto post_st012chrn;
|
goto post_st012chrn;
|
||||||
|
|
||||||
write_data:
|
write_data:
|
||||||
printf("Write [deleted] data\n");
|
printf("Write [deleted] data\n");
|
||||||
|
if(!dma_mode_) SetNonDMAExecution();
|
||||||
|
SET_DRIVE_HEAD_MFM();
|
||||||
|
|
||||||
|
if(drives_[active_drive_].drive->get_is_read_only()) {
|
||||||
|
SetNotWriteable();
|
||||||
|
goto abort_read_write;
|
||||||
|
}
|
||||||
|
|
||||||
write_next_data:
|
write_next_data:
|
||||||
goto read_write_find_header;
|
goto read_write_find_header;
|
||||||
@ -512,6 +519,11 @@ void i8272::posit_event(int event_type) {
|
|||||||
printf("Format track\n");
|
printf("Format track\n");
|
||||||
if(!dma_mode_) SetNonDMAExecution();
|
if(!dma_mode_) SetNonDMAExecution();
|
||||||
SET_DRIVE_HEAD_MFM();
|
SET_DRIVE_HEAD_MFM();
|
||||||
|
if(drives_[active_drive_].drive->get_is_read_only()) {
|
||||||
|
SetNotWriteable();
|
||||||
|
goto abort_read_write;
|
||||||
|
}
|
||||||
|
|
||||||
LOAD_HEAD();
|
LOAD_HEAD();
|
||||||
|
|
||||||
// Wait for the index hole.
|
// Wait for the index hole.
|
||||||
|
Loading…
Reference in New Issue
Block a user