Index: trunk/XTIDE_Universal_BIOS/Inc/ATA_ID.inc
===================================================================
--- trunk/XTIDE_Universal_BIOS/Inc/ATA_ID.inc	(revision 368)
+++ trunk/XTIDE_Universal_BIOS/Inc/ATA_ID.inc	(revision 370)
@@ -21,6 +21,6 @@
 PIO_3_MIN_ADDRESS_VALID_NS	EQU		30
 PIO_4_MIN_ADDRESS_VALID_NS	EQU		25
-PIO_5_MIN_ADDRESS_VALID_NS	EQU		25		; Could not find info
-PIO_6_MIN_ADDRESS_VALID_NS	EQU		25		; Could not find info
+PIO_5_MIN_ADDRESS_VALID_NS	EQU		15
+PIO_6_MIN_ADDRESS_VALID_NS	EQU		10
 
 ; PIO Minimum Active Times (t2)
@@ -30,9 +30,9 @@
 PIO_3_MIN_ACTIVE_TIME_NS	EQU		80
 PIO_4_MIN_ACTIVE_TIME_NS	EQU		70
-PIO_5_MIN_ACTIVE_TIME_NS	EQU		70		; Could not find info
-PIO_6_MIN_ACTIVE_TIME_NS	EQU		70		; Could not find info
+PIO_5_MIN_ACTIVE_TIME_NS	EQU		65
+PIO_6_MIN_ACTIVE_TIME_NS	EQU		55
 
 ; PIO Minimum Recovery Times or Inactive Times (t2i) can be calculated
-; from Minimum Cycle Time (t0) - Minimum Active Time (t2) - Address Valid Time (t1). 
+; from Minimum Cycle Time (t0) - Minimum Active Time (t2) - Address Valid Time (t1).
 ; I'm not sure about this calculation so correct me if I'm wrong!
 ; Recovery time should be calculated at run time since Cycle Time t0 can be
@@ -54,5 +54,5 @@
 	.wBpTrck	resw 1	; 4F, Number of unformatted bytes per track
 	.wBpSect	resw 1	; 5F, Number of unformatted bytes per sector
-	.wSPT		resw 1	; 6F, Number of sectors per track 
+	.wSPT		resw 1	; 6F, Number of sectors per track
 				resw 3	; 7...9X
 	.strSerial	resb 20	; 10...19F, Serial number (20 ASCII characters, 0000h=not specified)
@@ -136,5 +136,5 @@
 				resw 1	; 4X
 				resw 1	; 5X
-	.wSPT		resw 1	; 6F, Number of logical sectors per track 
+	.wSPT		resw 1	; 6F, Number of logical sectors per track
 				resw 3	; 7...9X
 	.strSerial	resb 20	; 10...19F, Serial number (20 ASCII characters, 0000h=not specified)
@@ -166,5 +166,5 @@
 	.bBlockSel	resb 1	; 59[0-7]V, Current setting for number of sectors that
 						;           can be transferred per interrupt on R/W multiple command
-	.bBlockFlgs	resb 1	; 59[8-15]VR, bit 0 set if Multiple sector setting is valid	
+	.bBlockFlgs	resb 1	; 59[8-15]VR, bit 0 set if Multiple sector setting is valid
 	.dwLBACnt	resd 1	; 60...61F, Total number of user addressable sectors (LBA mode only)
 	.bSDMASupp	resb 1	; 62[0-7]F, Single word DMA transfer modes supported
@@ -172,5 +172,5 @@
 	.bMDMASupp	resb 1	; 63[0-7]F, Multiword DMA transfer modes supported
 	.bMDMAAct	resb 1	; 63[8-15]V, Multiword DMA transfer mode active
-	
+
 	; Words 64-70 are valid only if bit1 is set in .wFields (ATA2+)
 	.bPIOSupp	resb 1	; 64[0-7]F, Advanced PIO Transfer Modes Supported
@@ -220,5 +220,5 @@
 				resw 1	; 4X
 				resw 1	; 5X
-				resw 1	; 6X, Obsolete (Number of logical sectors per track) 
+				resw 1	; 6X, Obsolete (Number of logical sectors per track)
 				resw 2	; 7...8V, Reserved for assignment by the CompactFlash Association
 				resw 1	; 9X
Index: trunk/XTIDE_Universal_BIOS/Inc/CustomDPT.inc
===================================================================
--- trunk/XTIDE_Universal_BIOS/Inc/CustomDPT.inc	(revision 368)
+++ trunk/XTIDE_Universal_BIOS/Inc/CustomDPT.inc	(revision 370)
@@ -91,5 +91,4 @@
 struc DPT_SERIAL
 	.dpt						resb	DPT_size
-
 	.wSerialPortAndBaud:
 	.bSerialPort				resb	1	; Serial connection I/O port address, divided by 4
@@ -126,5 +125,5 @@
 	jnz		SHORT %%LoadMaxValueToAX
 	cmp		ax, MAX_LCHS_CYLINDERS
-	jbe		SHORT %%NoNeedToModify
+	jb		SHORT %%NoNeedToModify
 %%LoadMaxValueToAX:
 	mov		ax, MAX_LCHS_CYLINDERS
Index: trunk/XTIDE_Universal_BIOS/Inc/IDE_8bit.inc
===================================================================
--- trunk/XTIDE_Universal_BIOS/Inc/IDE_8bit.inc	(revision 368)
+++ trunk/XTIDE_Universal_BIOS/Inc/IDE_8bit.inc	(revision 370)
@@ -30,5 +30,5 @@
 ; XTIDE_INSW
 ;	Parameters:
-;		BX:		Bit mask for toggling XTIDE data low/high reg
+;		BL:		Bit mask for toggling XTIDE data low/high reg
 ;		DX:		XTIDE Data Low Register address
 ;		ES:DI:	Ptr to destination buffer
@@ -41,13 +41,13 @@
 %ifdef USE_186	; INS instruction available
 	insb						; Load low byte from port DX to [ES:DI]
-	xor		dx, bx				; IDE Data Reg to XTIDE Data High Reg
+	xor		dl, bl				; IDE Data Reg to XTIDE Data High Reg
 	insb						; Load high byte from port DX to [ES:DI]
-	xor		dx, bx				; Restore to IDE Data Register
+	xor		dl, bl				; Restore to IDE Data Register
 %else	; If 8088/8086
 	in		al, dx				; Load low byte from port
-	xor		dx, bx				; IDE Data Reg to XTIDE Data High Reg
+	xor		dl, bl				; IDE Data Reg to XTIDE Data High Reg
 	stosb						; Store byte to [ES:DI]
 	in		al, dx				; Load high byte from port
-	xor		dx, bx				; Restore to IDE Data Register
+	xor		dl, bl				; Restore to IDE Data Register
 	stosb						; Store byte to [ES:DI]
 %endif
@@ -60,5 +60,5 @@
 ; XTIDE_OUTSW
 ;	Parameters:
-;		BX:		Bit mask for toggling XTIDE data low/high reg
+;		BL:		Bit mask for toggling XTIDE data low/high reg
 ;		DX:		XTIDE Data Low Register address
 ;		DS:SI:	Ptr to source buffer
@@ -71,14 +71,14 @@
 %ifdef USE_186	; OUTS instruction available
 	lodsb						; Load low byte from [DS:SI] to AL
-	xor		dx, bx				; IDE Data Reg to XTIDE Data High Reg
+	xor		dl, bl				; IDE Data Reg to XTIDE Data High Reg
 	outsb						; Output high byte from [DS:SI]
-	xor		dx, bx				; XTIDE Data High Reg to Data Low Reg
+	xor		dl, bl				; XTIDE Data High Reg to Data Low Reg
 	out		dx, al				; Output low byte from AL
 %else	; If 8088/8086
 	lodsw						; Load word from [DS:SI]
-	xor		dx, bx				; IDE Data Reg to XTIDE Data High Reg
+	xor		dl, bl				; IDE Data Reg to XTIDE Data High Reg
 	xchg	al, ah				; => AL=high byte, AH=low byte
 	out		dx, al				; Output high byte
-	xor		dx, bx				; XTIDE Data High Reg to Data Low Reg
+	xor		dl, bl				; XTIDE Data High Reg to Data Low Reg
 	mov		al, ah				; Copy low byte to AL
 	out		dx, al				; Output low byte
