disable floppy interrupts (to CPU), force HDD int flag on (i.e. command always complete)

Mon, 13 Dec 2010 03:00:43 +0000

author
Philip Pemberton <philpem@philpem.me.uk>
date
Mon, 13 Dec 2010 03:00:43 +0000
changeset 56
b3f309d46e97
parent 55
ba6b8e570062
child 57
feb84193a43a

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