MCPcopy Create free account
hub / github.com/BlitterStudio/amiberry / DISK_start

Function DISK_start

src/disk.cpp:4629–4706  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

4627}
4628
4629static void DISK_start(void)
4630{
4631 int dr;
4632
4633 if (disk_debug_logging > 1) {
4634 dumpdisk(_T("DSKLEN"));
4635 }
4636
4637 for (int i = 0; i < 3; i++) {
4638 fifo_inuse[i] = false;
4639 }
4640 fifo_filled = 0;
4641 dskpt_start = dskpt;
4642
4643 if (dskdmaen == DSKDMA_WRITE) {
4644 word = 0;
4645 dskbytr_val &= ~0x8000;
4646 }
4647
4648 for (dr = 0; dr < MAX_FLOPPY_DRIVES; dr++) {
4649 drive *drv = &floppy[dr];
4650 if (!((selected | disabled) & (1 << dr))) {
4651 int tr = drv->cyl * 2 + side;
4652 trackid *ti = drv->trackdata + tr;
4653
4654#if DISK_DEBUG_X
4655 write_log("DMA start %d %08x %08x\n", drv->mfmpos, dskpt, M68K_GETPC);
4656#endif
4657
4658 if (drv->dskchange_time == -1) {
4659 drv->dskchange_time = -2;
4660 write_log(_T("Accessing state restored non-existing disk '%s'!\n"), drv->newname);
4661 if (gui_ask_disk(dr, drv->newname)) {
4662 if (drive_insert(drv, &currprefs, dr, drv->newname, false, false)) {
4663 write_log(_T("Replacement disk '%s' inserted.\n"), drv->newname);
4664 drv->dskready_up_time = 0;
4665 drv->dskchange_time = 0;
4666 }
4667 }
4668 }
4669
4670 if (dskdmaen == DSKDMA_WRITE) {
4671 drv->tracklen = floppy_writemode > 0 ? FLOPPY_WRITE_MAXLEN : FLOPPY_WRITE_LEN * drv->ddhd * 8 * 2;
4672 drv->trackspeed = get_floppy_speed();
4673 drv->skipoffset = -1;
4674 updatemfmpos (drv);
4675 }
4676 /* Ugh. A nasty hack. Assume ADF_EXT1 tracks are always read
4677 from the start. */
4678 if (ti->type == TRACK_RAW1) {
4679 drv->mfmpos = 0;
4680 bitoffset = 0;
4681 word = 0;
4682 }
4683#ifdef CATWEASEL
4684 if (drv->catweasel) {
4685 word = 0;
4686 drive_fill_bigbuf (drv, side, 1);

Callers 1

disk.cppFile · 0.85

Calls 6

dumpdiskFunction · 0.85
get_floppy_speedFunction · 0.85
updatemfmposFunction · 0.85
wordsync_detectedFunction · 0.85
write_logFunction · 0.70
gui_ask_diskFunction · 0.50

Tested by

no test coverage detected