| 3945 | } |
| 3946 | |
| 3947 | uae_u16 DSKDATR(int slot) |
| 3948 | { |
| 3949 | int i; |
| 3950 | uae_u16 v = 0; |
| 3951 | |
| 3952 | for (i = 2; i >= 0; i--) { |
| 3953 | if (fifo_inuse[i]) { |
| 3954 | fifo_inuse[i] = 0; |
| 3955 | v = fifo[i]; |
| 3956 | break; |
| 3957 | } |
| 3958 | } |
| 3959 | |
| 3960 | #if DISK_DEBUG_X > 1 |
| 3961 | write_log("datr %d %d\n", dsklength, floppy[0].mfmpos); |
| 3962 | #endif |
| 3963 | |
| 3964 | if (i < 0) { |
| 3965 | write_log(_T("DSKDATR: FIFO underflow!\n")); |
| 3966 | } else if (dskdmaen == DSKDMA_READ && dsklength == 0) { |
| 3967 | // len==0 and (all slots empty or last slot read and one slot in use) |
| 3968 | if (disk_fifostatus() < 0 || (slot == 2 && fifo_inuse[0] && !fifo_inuse[1] && !fifo_inuse[2])) { |
| 3969 | disk_dmafinished(); |
| 3970 | } |
| 3971 | } |
| 3972 | disk_strobe = false; |
| 3973 | return v; |
| 3974 | } |
| 3975 | |
| 3976 | static void do_disk_index (void) |
| 3977 | { |
no test coverage detected