Assorted FDC and PCjr video fixes, fixes #4659.

This commit is contained in:
OBattler
2024-07-28 01:00:58 +02:00
parent 3f3c2c802a
commit 760c720352
4 changed files with 43 additions and 78 deletions

View File

@@ -1298,7 +1298,16 @@ d86f_find_address_mark_fm(int drive, int side, find_t *find, uint16_t req_am, ui
find->sync_pos = 0xFFFFFFFF;
if (ignore_other_am & 1) {
/* Skip mode, let's go back to finding ID. */
dev->state -= 2;
fdc_set_wrong_am(d86f_fdc);
dev->data_find.sync_marks = dev->data_find.bits_obtained = dev->data_find.bytes_obtained = 0;
dev->error_condition = 0;
dev->state = STATE_IDLE;
if (dev->state == STATE_02_READ_DATA)
fdc_track_finishread(d86f_fdc, dev->error_condition);
else if (dev->state == STATE_11_SCAN_DATA)
fdc_sector_finishcompare(d86f_fdc, (dev->satisfying_bytes == ((128 << ((uint32_t) dev->last_sector.id.n)) - 1)) ? 1 : 0);
else
fdc_sector_finishread(d86f_fdc);
} else {
/* Not skip mode, process the sector anyway. */
fdc_set_wrong_am(d86f_fdc);
@@ -1377,7 +1386,16 @@ d86f_find_address_mark_mfm(int drive, int side, find_t *find, uint16_t req_am, u
find->sync_pos = 0xFFFFFFFF;
if (ignore_other_am & 1) {
/* Skip mode, let's go back to finding ID. */
dev->state -= 2;
fdc_set_wrong_am(d86f_fdc);
dev->data_find.sync_marks = dev->data_find.bits_obtained = dev->data_find.bytes_obtained = 0;
dev->error_condition = 0;
dev->state = STATE_IDLE;
if (dev->state == STATE_02_READ_DATA)
fdc_track_finishread(d86f_fdc, dev->error_condition);
else if (dev->state == STATE_11_SCAN_DATA)
fdc_sector_finishcompare(d86f_fdc, (dev->satisfying_bytes == ((128 << ((uint32_t) dev->last_sector.id.n)) - 1)) ? 1 : 0);
else
fdc_sector_finishread(d86f_fdc);
} else {
/* Not skip mode, process the sector anyway. */
fdc_set_wrong_am(d86f_fdc);