Mon, 13 Dec 2010 03:00:43 +0000
disable floppy interrupts (to CPU), force HDD int flag on (i.e. command always complete)
src/main.c | file | annotate | diff | revisions | |
src/memory.c | file | annotate | diff | revisions |
1.1 diff -r ba6b8e570062 -r b3f309d46e97 src/main.c 1.2 --- a/src/main.c Sun Dec 12 23:47:35 2010 +0000 1.3 +++ b/src/main.c Mon Dec 13 03:00:43 2010 +0000 1.4 @@ -262,18 +262,19 @@ 1.5 // Turn off DMA engine if we finished this cycle 1.6 if (state.dma_count >= 0x4000) { 1.7 printf("\tDMATRAN: transfer complete! dmaa=%06X, dmac=%04X\n", state.dma_address, state.dma_count); 1.8 - state.dma_count = 0; 1.9 + // apparently this isn't required...? 1.10 +// state.dma_count = 0; 1.11 state.dmaen = false; 1.12 } 1.13 } 1.14 1.15 - // Any interrupts? 1.16 - if (wd2797_get_irq(&state.fdc_ctx)) { 1.17 + // Any interrupts? --> TODO: masking 1.18 +/* if (wd2797_get_irq(&state.fdc_ctx)) { 1.19 m68k_set_irq(2); 1.20 } else { 1.21 m68k_set_irq(0); 1.22 } 1.23 - 1.24 +*/ 1.25 // Is it time to run the 60Hz periodic interrupt yet? 1.26 if (clock_cycles > CLOCKS_PER_60HZ) { 1.27 // Refresh the screen
2.1 diff -r ba6b8e570062 -r b3f309d46e97 src/memory.c 2.2 --- a/src/memory.c Sun Dec 12 23:47:35 2010 +0000 2.3 +++ b/src/memory.c Mon Dec 13 03:00:43 2010 +0000 2.4 @@ -596,6 +596,7 @@ 2.5 if (address & 1) { 2.6 data = 0x12; // no parity error, no line printer error, no irqs from FDD or HDD 2.7 data |= (state.fdc_ctx.irql) ? 0x08 : 0; // FIXME! HACKHACKHACK! shouldn't peek inside FDC structs like this 2.8 + data |= 0x04; // HDD interrupt, i.e. command complete -- HACKHACKHACK! 2.9 } else { 2.10 data = 0; 2.11 }