diff --git a/common/cmd_fdc.c b/common/cmd_fdc.c
index 40d12f6..4fe410d 100644
--- a/common/cmd_fdc.c
+++ b/common/cmd_fdc.c
@@ -428,8 +428,8 @@
 int fdc_read_data(unsigned char *buffer, unsigned long blocks,FDC_COMMAND_STRUCT *pCMD, FD_GEO_STRUCT *pFG)
 {
   /* first seek to start address */
-	unsigned long len,lastblk,readblk,i,timeout,ii,offset;
-	unsigned char pcn,c,retriesrw,retriescal;
+	unsigned long len,readblk,i,timeout,ii,offset;
+	unsigned char c,retriesrw,retriescal;
 	unsigned char *bufferw; /* working buffer */
 	int sect_size;
 	int flags;
@@ -442,18 +442,19 @@
 	offset=0;
 	if(fdc_seek(pCMD,pFG)==FALSE) {
 		stop_fdc_drive(pCMD);
-		enable_interrupts();
+		if (flags)
+			enable_interrupts();
 		return FALSE;
 	}
 	if((pCMD->result[STATUS_0]&0x20)!=0x20) {
 		printf("Seek error Status: %02X\n",pCMD->result[STATUS_0]);
 		stop_fdc_drive(pCMD);
-		enable_interrupts();
+		if (flags)
+			enable_interrupts();
 		return FALSE;
 	}
-	pcn=pCMD->result[STATUS_PCN]; /* current track */
 	/* now determine the next seek point */
-	lastblk=pCMD->blnr + blocks;
+	/*	lastblk=pCMD->blnr + blocks; */
 	/*	readblk=(pFG->head*pFG->sect)-(pCMD->blnr%(pFG->head*pFG->sect)); */
 	readblk=pFG->sect-(pCMD->blnr%pFG->sect);
 	PRINTF("1st nr of block possible read %ld start %ld\n",readblk,pCMD->blnr);
@@ -467,7 +468,8 @@
 		pCMD->cmd[COMMAND]=FDC_CMD_READ;
 		if(fdc_issue_cmd(pCMD,pFG)==FALSE) {
 			stop_fdc_drive(pCMD);
-			enable_interrupts();
+			if (flags)
+				enable_interrupts();
 			return FALSE;
 		}
 		for (i=0;i<len;i++) {
@@ -488,14 +490,16 @@
 					if(retriesrw++>FDC_RW_RETRIES) {
 						if (retriescal++>FDC_CAL_RETRIES) {
 							stop_fdc_drive(pCMD);
-							enable_interrupts();
+							if (flags)
+								enable_interrupts();
 							return FALSE;
 						}
 						else {
 							PRINTF(" trying to recalibrate Try %d\n",retriescal);
 							if(fdc_recalibrate(pCMD,pFG)==FALSE) {
 								stop_fdc_drive(pCMD);
-								enable_interrupts();
+								if (flags)
+									enable_interrupts();
 								return FALSE;
 							}
 							retriesrw=0;
@@ -528,7 +532,8 @@
 		/* a seek is necessary */
 		if(fdc_seek(pCMD,pFG)==FALSE) {
 			stop_fdc_drive(pCMD);
-			enable_interrupts();
+			if (flags)
+				enable_interrupts();
 			return FALSE;
 		}
 		if((pCMD->result[STATUS_0]&0x20)!=0x20) {
@@ -536,10 +541,10 @@
 			stop_fdc_drive(pCMD);
 			return FALSE;
 		}
-		pcn=pCMD->result[STATUS_PCN]; /* current track */
 	}while(TRUE); /* start over */
 	stop_fdc_drive(pCMD); /* switch off drive */
-	enable_interrupts();
+	if (flags)
+		enable_interrupts();
 	return TRUE;
 }
 
