Index: /trunk/Assembly_Library/Inc/Emulate.inc
===================================================================
--- /trunk/Assembly_Library/Inc/Emulate.inc	(revision 622)
+++ /trunk/Assembly_Library/Inc/Emulate.inc	(revision 623)
@@ -60,6 +60,11 @@
 	%endif
 %else ; XT
-	JUMP_ALIGN		EQU		1	; 2 is optimal for 8086 and NEC V30 CPUs but it's not worth the ROM space for most XT machines with 8088 or NEC V20 CPUs.
-	WORD_ALIGN		EQU		2	; The same applies here but the cost of ROM space is negligible.
+	%ifndef USE_086 ; 8088/V20 CPUs
+		JUMP_ALIGN		EQU		1	; 2 is optimal for 8086 and NEC V30 CPUs but it's not worth the ROM space for most XT machines with 8088 or NEC V20 CPUs.
+		WORD_ALIGN		EQU		2	; The same applies here but the cost of ROM space is negligible.
+	%else ; 8086/V30 CPUs
+		JUMP_ALIGN		EQU		2
+		WORD_ALIGN		EQU		2
+	%endif
 %endif
 
Index: /trunk/Assembly_Library/Src/Util/Memory.asm
===================================================================
--- /trunk/Assembly_Library/Src/Util/Memory.asm	(revision 622)
+++ /trunk/Assembly_Library/Src/Util/Memory.asm	(revision 623)
@@ -66,29 +66,4 @@
 
 ;--------------------------------------------------------------------
-; Memory_ZeroSSBPwithSizeInCX
-;	Parameters
-;		CX:		Number of bytes to zero
-;		SS:BP:	Ptr to buffer to zero
-;	Returns:
-;		Nothing
-;	Corrupts registers:
-;		CX
-;--------------------------------------------------------------------
-%ifdef INCLUDE_MENU_LIBRARY
-ALIGN JUMP_ALIGN
-Memory_ZeroSSBPwithSizeInCX:
-	push	es
-	push	di
-	push	ax
-	call	Registers_CopySSBPtoESDI
-	call	Memory_ZeroESDIwithSizeInCX
-	pop		ax
-	pop		di
-	pop		es
-	ret
-%endif
-
-
-;--------------------------------------------------------------------
 ; Memory_ZeroESDIwithSizeInCX
 ;	Parameters
@@ -119,4 +94,29 @@
 	OPTIMIZE_STRING_OPERATION stos
 	ret
+
+
+;--------------------------------------------------------------------
+; Memory_ZeroSSBPwithSizeInCX
+;	Parameters
+;		CX:		Number of bytes to zero
+;		SS:BP:	Ptr to buffer to zero
+;	Returns:
+;		Nothing
+;	Corrupts registers:
+;		CX
+;--------------------------------------------------------------------
+%ifdef INCLUDE_MENU_LIBRARY
+ALIGN JUMP_ALIGN
+Memory_ZeroSSBPwithSizeInCX:
+	push	es
+	push	di
+	push	ax
+	call	Registers_CopySSBPtoESDI
+	call	Memory_ZeroESDIwithSizeInCX
+	pop		ax
+	pop		di
+	pop		es
+	ret
+%endif
 
 
Index: /trunk/XTIDE_Universal_BIOS/Inc/IdeIO.inc
===================================================================
--- /trunk/XTIDE_Universal_BIOS/Inc/IdeIO.inc	(revision 622)
+++ /trunk/XTIDE_Universal_BIOS/Inc/IdeIO.inc	(revision 623)
@@ -146,4 +146,24 @@
 %endmacro
 
+%macro UNROLL_SECTORS_IN_CX_TO_16WORDS 0
+%ifdef USE_186
+	shl		cx, 4
+%else
+	mov		ch, cl
+	mov		cl, 4
+	shr		cx, cl
+%endif
+%endmacro
+
+%macro UNROLL_SECTORS_IN_CX_TO_32WORDS 0
+%ifdef USE_186
+	shl		cx, 3
+%else
+	shl		cx, 1
+	shl		cx, 1
+	shl		cx, 1
+%endif
+%endmacro
+
 
 %endif ; IDE_IO_INC
Index: /trunk/XTIDE_Universal_BIOS/Src/Device/IDE/IdeDPT.asm
===================================================================
--- /trunk/XTIDE_Universal_BIOS/Src/Device/IDE/IdeDPT.asm	(revision 622)
+++ /trunk/XTIDE_Universal_BIOS/Src/Device/IDE/IdeDPT.asm	(revision 623)
@@ -133,14 +133,10 @@
 	mov		[di+DPT_ADVANCED_ATA.wMinPioCycleTime], bx
 
-	; We have detected 32-bit controller so change Device Type since
-	; it might have been set to 16-bit on IDEVARS
-	;
-	; Change to 32-bit on 386 builds only. We leave AT builds unchanged for faster troubleshooting
-	; and for uncommon systems, like IBM 486SLC2 processors that can have VLB motherboard even though
-	; the IBM 486SLC2 is externally 16-bit CPU
+	; We have detected 32-bit controller so change Device Type
+	; since it might have been set to 16-bit on IDEVARS
 .ChangeTo32bitDevice:
-%ifdef USE_386
+	; *FIXME* We might need to add code to detect the IBM 486SLC2 CPU (and possibly other
+	; 386+ class CPUs with a 16-bit external bus?) to avoid changing to DEVICE_32BIT_ATA.
 	mov		BYTE [di+DPT_ATA.bDevice], DEVICE_32BIT_ATA
-%endif
 .NoAdvancedControllerDetected:
 %endif	; MODULE_ADVANCED_ATA
Index: /trunk/XTIDE_Universal_BIOS/Src/Device/IDE/IdePioBlock.asm
===================================================================
--- /trunk/XTIDE_Universal_BIOS/Src/Device/IDE/IdePioBlock.asm	(revision 622)
+++ /trunk/XTIDE_Universal_BIOS/Src/Device/IDE/IdePioBlock.asm	(revision 623)
@@ -43,12 +43,48 @@
 ALIGN JUMP_ALIGN
 IdePioBlock_ReadFromXtideRev1:
-	UNROLL_SECTORS_IN_CX_TO_OWORDS
+%ifdef EXTRA_LOOP_UNROLLING_LARGE
+	UNROLL_SECTORS_IN_CX_TO_32WORDS
+%elifdef EXTRA_LOOP_UNROLLING_SMALL
+	UNROLL_SECTORS_IN_CX_TO_16WORDS
+%else
+	UNROLL_SECTORS_IN_CX_TO_OWORDS
+%endif
 	mov		bl, 8		; Bit mask for toggling data low/high reg
 ALIGN JUMP_ALIGN
-.InswLoop:
-	%rep 8	; WORDs
+.NextIteration:
+%ifdef EXTRA_LOOP_UNROLLING_LARGE
+	%rep 32	; WORDs
 		XTIDE_INSW
 	%endrep
-	loop	.InswLoop
+	dec		cx
+%ifdef USE_386
+	jnz		.NextIteration
+%else
+	jz		SHORT .BlockTransferred
+	jmp		.NextIteration
+
+ALIGN JUMP_ALIGN
+.BlockTransferred:
+%endif
+%elifdef EXTRA_LOOP_UNROLLING_SMALL
+	%rep 16	; WORDs
+		XTIDE_INSW
+	%endrep
+%ifdef USE_186
+	loop	.NextIteration
+%else
+	dec		cx
+	jz		SHORT .BlockTransferred
+	jmp		.NextIteration
+
+ALIGN JUMP_ALIGN
+.BlockTransferred:
+%endif
+%else
+	%rep 8	; WORDs
+		XTIDE_INSW
+	%endrep
+	loop	.NextIteration
+%endif
 	ret
 
@@ -67,11 +103,38 @@
 ALIGN JUMP_ALIGN
 IdePioBlock_ReadFromXtideRev2_Olivetti:
-	UNROLL_SECTORS_IN_CX_TO_OWORDS
-ALIGN JUMP_ALIGN
-.InswLoop:
-	%rep 8	; WORDs
+%ifdef EXTRA_LOOP_UNROLLING_LARGE
+	UNROLL_SECTORS_IN_CX_TO_32WORDS
+%elifdef EXTRA_LOOP_UNROLLING_SMALL
+	UNROLL_SECTORS_IN_CX_TO_16WORDS
+%else
+	UNROLL_SECTORS_IN_CX_TO_OWORDS
+%endif
+ALIGN JUMP_ALIGN
+.NextIteration:
+%ifdef EXTRA_LOOP_UNROLLING_LARGE
+	%rep 32	; WORDs
 		XTIDE_MOD_OLIVETTI_INSW
 	%endrep
-	loop	.InswLoop
+	dec		cx
+%ifdef USE_386
+	jnz		.NextIteration
+%else
+	jz		SHORT .BlockTransferred
+	jmp		.NextIteration
+
+ALIGN JUMP_ALIGN
+.BlockTransferred:
+%endif
+%elifdef EXTRA_LOOP_UNROLLING_SMALL
+	%rep 16	; WORDs
+		XTIDE_MOD_OLIVETTI_INSW
+	%endrep
+	loop	.NextIteration
+%else
+	%rep 8	; WORDs
+		XTIDE_MOD_OLIVETTI_INSW
+	%endrep
+	loop	.NextIteration
+%endif
 	ret
 
@@ -96,13 +159,39 @@
 	rep insb
 	ret
+
 %else ; 808x
-	UNROLL_SECTORS_IN_CX_TO_OWORDS
-ALIGN JUMP_ALIGN
-.ReadNextOword:
+%ifdef EXTRA_LOOP_UNROLLING_LARGE
+	UNROLL_SECTORS_IN_CX_TO_32WORDS
+%elifdef EXTRA_LOOP_UNROLLING_SMALL
+	UNROLL_SECTORS_IN_CX_TO_16WORDS
+%else
+	UNROLL_SECTORS_IN_CX_TO_OWORDS
+%endif
+ALIGN JUMP_ALIGN
+.NextIteration:
+%ifdef EXTRA_LOOP_UNROLLING_LARGE
+	%rep 64	; BYTEs
+		in		al, dx	; Read BYTE
+		stosb			; Store BYTE to [ES:DI]
+	%endrep
+	dec		cx
+	jz		SHORT .BlockTransferred
+	jmp		.NextIteration
+
+ALIGN JUMP_ALIGN
+.BlockTransferred:
+%elifdef EXTRA_LOOP_UNROLLING_SMALL
+	%rep 32	; BYTEs
+		in		al, dx	; Read BYTE
+		stosb			; Store BYTE to [ES:DI]
+	%endrep
+	loop	.NextIteration
+%else
 	%rep 16	; BYTEs
 		in		al, dx	; Read BYTE
 		stosb			; Store BYTE to [ES:DI]
 	%endrep
-	loop	.ReadNextOword
+	loop	.NextIteration
+%endif
 	ret
 %endif
@@ -132,12 +221,30 @@
 
 %else ; 808x
-	UNROLL_SECTORS_IN_CX_TO_OWORDS
-ALIGN JUMP_ALIGN
-.ReadNextOword:
-	%rep 8	; WORDs
+%ifdef EXTRA_LOOP_UNROLLING_LARGE
+	UNROLL_SECTORS_IN_CX_TO_32WORDS
+%elifdef EXTRA_LOOP_UNROLLING_SMALL
+	UNROLL_SECTORS_IN_CX_TO_16WORDS
+%else
+	UNROLL_SECTORS_IN_CX_TO_OWORDS
+%endif
+ALIGN JUMP_ALIGN
+.NextIteration:
+%ifdef EXTRA_LOOP_UNROLLING_LARGE
+	%rep 32	; WORDs
 		in		ax, dx	; Read WORD
 		stosw			; Store WORD to [ES:DI]
 	%endrep
-	loop	.ReadNextOword
+%elifdef EXTRA_LOOP_UNROLLING_SMALL
+	%rep 16	; WORDs
+		in		ax, dx	; Read WORD
+		stosw			; Store WORD to [ES:DI]
+	%endrep
+%else
+	%rep 8	; WORDs
+		in		ax, dx	; Read WORD
+		stosw			; Store WORD to [ES:DI]
+	%endrep
+%endif
+	loop	.NextIteration
 	ret
 %endif
@@ -174,12 +281,39 @@
 ALIGN JUMP_ALIGN
 IdePioBlock_WriteToXtideRev1:
+%ifdef EXTRA_LOOP_UNROLLING_LARGE
+	UNROLL_SECTORS_IN_CX_TO_16WORDS
+%elifdef EXTRA_LOOP_UNROLLING_SMALL
+	UNROLL_SECTORS_IN_CX_TO_OWORDS
+%else
 	UNROLL_SECTORS_IN_CX_TO_QWORDS
+%endif
 	mov		bl, 8		; Bit mask for toggling data low/high reg
 ALIGN JUMP_ALIGN
-.OutswLoop:
+.NextIteration:
+%ifdef EXTRA_LOOP_UNROLLING_LARGE
+	%rep 16	; WORDs
+		XTIDE_OUTSW
+	%endrep
+%ifdef USE_186
+	loop	.NextIteration
+%else
+	dec		cx
+	jz		SHORT .BlockTransferred
+	jmp		.NextIteration
+
+ALIGN JUMP_ALIGN
+.BlockTransferred:
+%endif
+%elifdef EXTRA_LOOP_UNROLLING_SMALL
+	%rep 8	; WORDs
+		XTIDE_OUTSW
+	%endrep
+	loop	.NextIteration
+%else
 	%rep 4	; WORDs
 		XTIDE_OUTSW
 	%endrep
-	loop	.OutswLoop
+	loop	.NextIteration
+%endif
 	ret
 
@@ -198,11 +332,38 @@
 ALIGN JUMP_ALIGN
 IdePioBlock_WriteToXtideRev2:
+%ifdef EXTRA_LOOP_UNROLLING_LARGE
+	UNROLL_SECTORS_IN_CX_TO_16WORDS
+%elifdef EXTRA_LOOP_UNROLLING_SMALL
+	UNROLL_SECTORS_IN_CX_TO_OWORDS
+%else
 	UNROLL_SECTORS_IN_CX_TO_QWORDS
-ALIGN JUMP_ALIGN
-.WriteNextQword:
+%endif
+ALIGN JUMP_ALIGN
+.NextIteration:
+%ifdef EXTRA_LOOP_UNROLLING_LARGE
+	%rep 16	; WORDs
+		XTIDE_MOD_OUTSW
+	%endrep
+%ifdef USE_186
+	loop	.NextIteration
+%else
+	dec		cx
+	jz		SHORT .BlockTransferred
+	jmp		.NextIteration
+
+ALIGN JUMP_ALIGN
+.BlockTransferred:
+%endif
+%elifdef EXTRA_LOOP_UNROLLING_SMALL
+	%rep 8	; WORDs
+		XTIDE_MOD_OUTSW
+	%endrep
+	loop	.NextIteration
+%else
 	%rep 4	; WORDs
 		XTIDE_MOD_OUTSW
 	%endrep
-	loop	.WriteNextQword
+	loop	.NextIteration
+%endif
 	ret
 
@@ -227,12 +388,30 @@
 
 %else ; 808x
+%ifdef EXTRA_LOOP_UNROLLING_LARGE
+	UNROLL_SECTORS_IN_CX_TO_16WORDS
+%elifdef EXTRA_LOOP_UNROLLING_SMALL
+	UNROLL_SECTORS_IN_CX_TO_OWORDS
+%else
 	UNROLL_SECTORS_IN_CX_TO_QWORDS
-ALIGN JUMP_ALIGN
-.WriteNextQword:
+%endif
+ALIGN JUMP_ALIGN
+.NextIteration:
+%ifdef EXTRA_LOOP_UNROLLING_LARGE
+	%rep 32	; BYTEs
+		lodsb			; Load BYTE from [DS:SI]
+		out		dx, al	; Write BYTE
+	%endrep
+%elifdef EXTRA_LOOP_UNROLLING_SMALL
+	%rep 16	; BYTEs
+		lodsb			; Load BYTE from [DS:SI]
+		out		dx, al	; Write BYTE
+	%endrep
+%else
 	%rep 8	; BYTEs
 		lodsb			; Load BYTE from [DS:SI]
 		out		dx, al	; Write BYTE
 	%endrep
-	loop	.WriteNextQword
+%endif
+	loop	.NextIteration
 	ret
 %endif
@@ -260,12 +439,30 @@
 
 %else ; 808x
+%ifdef EXTRA_LOOP_UNROLLING_LARGE
+	UNROLL_SECTORS_IN_CX_TO_16WORDS
+%elifdef EXTRA_LOOP_UNROLLING_SMALL
+	UNROLL_SECTORS_IN_CX_TO_OWORDS
+%else
 	UNROLL_SECTORS_IN_CX_TO_QWORDS
-ALIGN JUMP_ALIGN
-.WriteNextQword:
+%endif
+ALIGN JUMP_ALIGN
+.NextIteration:
+%ifdef EXTRA_LOOP_UNROLLING_LARGE
+	%rep 16	; WORDs
+		lodsw			; Load WORD from [DS:SI]
+		out		dx, ax	; Write WORD
+	%endrep
+%elifdef EXTRA_LOOP_UNROLLING_SMALL
+	%rep 8	; WORDs
+		lodsw			; Load WORD from [DS:SI]
+		out		dx, ax	; Write WORD
+	%endrep
+%else
 	%rep 4	; WORDs
 		lodsw			; Load WORD from [DS:SI]
 		out		dx, ax	; Write WORD
 	%endrep
-	loop	.WriteNextQword
+%endif
+	loop	.NextIteration
 	ret
 %endif
Index: /trunk/XTIDE_Universal_BIOS/Src/Initialization/AdvancedAta/AdvAtaInit.asm
===================================================================
--- /trunk/XTIDE_Universal_BIOS/Src/Initialization/AdvancedAta/AdvAtaInit.asm	(revision 622)
+++ /trunk/XTIDE_Universal_BIOS/Src/Initialization/AdvancedAta/AdvAtaInit.asm	(revision 623)
@@ -188,5 +188,5 @@
 ; as I/O delay.
 ;
-; AdvAtaInit_InWithDelay
+; AdvAtaInit_InputWithDelay
 ;	Parameters:
 ;		DX:		Port to read from
@@ -195,5 +195,5 @@
 ;	Corrupts registers:
 ;		Nothing
-;--------------------------------------------------------------------	
+;--------------------------------------------------------------------
 AdvAtaInit_InputWithDelay:
 	in		al, dx
Index: /trunk/XTIDE_Universal_BIOS/Src/VariablesAndDPTs/FindDPT.asm
===================================================================
--- /trunk/XTIDE_Universal_BIOS/Src/VariablesAndDPTs/FindDPT.asm	(revision 622)
+++ /trunk/XTIDE_Universal_BIOS/Src/VariablesAndDPTs/FindDPT.asm	(revision 623)
@@ -65,7 +65,7 @@
 
 	cmp		ah, dl								; Check second drive if two, first drive if only one
-	jz		SHORT .CalcDPTForDriveNumber
+	je		SHORT .CalcDPTForDriveNumber
 	cmp		al, dl								; Check first drive in all cases, redundant but OK to repeat
-	jnz		SHORT .DiskIsNotHandledByThisBIOS
+	jne		SHORT .DiskIsNotHandledByThisBIOS
 %else
 	cmp		dl, ah								; Above last supported?
@@ -100,5 +100,5 @@
 
 	test	dl, dl
-	js		.harddisk
+	js		SHORT .Harddisk
 
 	call	RamVars_UnpackFlopCntAndFirstToAL
@@ -106,5 +106,5 @@
 
 ALIGN JUMP_ALIGN
-.harddisk:
+.Harddisk:
 	sub		dl, al						; subtract off beginning of either hard disk or floppy list (as appropriate)
 %else
@@ -114,5 +114,4 @@
 .CalcDPTForNewDrive:
 	mov		al, LARGEST_DPT_SIZE
-
 	mul		dl
 	add		ax, RAMVARS_size			; Clears CF (will not overflow)
Index: /trunk/XTIDE_Universal_BIOS/Src/VariablesAndDPTs/RamVars.asm
===================================================================
--- /trunk/XTIDE_Universal_BIOS/Src/VariablesAndDPTs/RamVars.asm	(revision 622)
+++ /trunk/XTIDE_Universal_BIOS/Src/VariablesAndDPTs/RamVars.asm	(revision 623)
@@ -135,35 +135,4 @@
 
 
-;--------------------------------------------------------------------
-; RamVars_GetCountOfKnownDrivesToAX
-;	Parameters:
-;		DS:		RAMVARS segment
-;	Returns:
-;		AX:		Total hard disk count
-;	Corrupts registers:
-;		None
-;--------------------------------------------------------------------
-ALIGN JUMP_ALIGN
-RamVars_GetCountOfKnownDrivesToAX:
-	mov		ax, [RAMVARS.wFirstDrvAndCount]
-	add		al, ah
-	and		ax, BYTE 7fh
-	ret
-
-;--------------------------------------------------------------------
-; RamVars_GetIdeControllerCountToCX
-;	Parameters:
-;		Nothing
-;	Returns:
-;		CX:		Number of IDE controllers to handle
-;	Corrupts registers:
-;		Nothing
-;--------------------------------------------------------------------
-ALIGN JUMP_ALIGN
-RamVars_GetIdeControllerCountToCX:
-	eMOVZX	cx, [cs:ROMVARS.bIdeCnt]
-	ret
-
-
 %ifdef MODULE_SERIAL_FLOPPY
 ;--------------------------------------------------------------------
@@ -184,2 +153,34 @@
 	ret
 %endif
+
+
+;--------------------------------------------------------------------
+; RamVars_GetIdeControllerCountToCX
+;	Parameters:
+;		Nothing
+;	Returns:
+;		CX:		Number of IDE controllers to handle
+;	Corrupts registers:
+;		Nothing
+;--------------------------------------------------------------------
+ALIGN JUMP_ALIGN
+RamVars_GetIdeControllerCountToCX:
+	eMOVZX	cx, [cs:ROMVARS.bIdeCnt]
+	ret
+
+
+;--------------------------------------------------------------------
+; RamVars_GetCountOfKnownDrivesToAX
+;	Parameters:
+;		DS:		RAMVARS segment
+;	Returns:
+;		AX:		Total hard disk count
+;	Corrupts registers:
+;		None
+;--------------------------------------------------------------------
+ALIGN JUMP_ALIGN
+RamVars_GetCountOfKnownDrivesToAX:
+	mov		ax, [RAMVARS.wFirstDrvAndCount]
+	add		al, ah
+	and		ax, BYTE 7Fh
+	ret
Index: /trunk/XTIDE_Universal_BIOS/makefile
===================================================================
--- /trunk/XTIDE_Universal_BIOS/makefile	(revision 622)
+++ /trunk/XTIDE_Universal_BIOS/makefile	(revision 623)
@@ -31,6 +31,6 @@
 # MODULE_POWER_MANAGEMENT     Power Management support                                             #
 # MODULE_WIN9X_CMOS_HACK      Hack for Windows 9x compatibility                                    #
-# MODULE_MFM_COMPATIBILITY    Restores BDA drive count for MFM controllers that expect to be the   #
-#                             only hard drive controller on the system                             #
+# MODULE_MFM_COMPATIBILITY    Restores BDA drive count for MFM/SCSI controllers that expect to be  #
+#                             the only hard drive controller in the system                         #
 #                                                                                                  #
 # Not modules but these affect the assembly:                                                       #
@@ -39,11 +39,14 @@
 # NO_ATAID_VALIDATION ***     Excludes code that tries to ensure proper communication with drives  #
 # NO_ATAID_CORRECTION         Excludes code that corrects illegal CHS values from some CF cards    #
+# USE_086                     Applies WORD alignment padding for use with 8086/V30 CPUs only       #
 # USE_186                     Use instructions supported by 80188/80186 and V20/V30 and later      #
 # USE_286                     Use instructions supported by 286 and later (defines USE_UNDOC_INTEL)#
 # USE_386                     Use instructions supported by 386 and later (defines USE_286)        #
 # USE_AT                      Use features supported on AT and later systems (not available on XT) #
-# USE_UNDOC_INTEL             Optimizations for Intel CPU:s - do NOT use on NEC V20/V30/Sony CPU:s #
-# USE_NEC_V                   Optimizations for use with NEC V20/V30 processors only               #
+# USE_UNDOC_INTEL             Optimizations for Intel CPUs - do NOT use on NEC V20/V30/Sony CPUs   #
+# USE_NEC_V                   Optimizations for use with NEC V20/V30 CPUs only                     #
 # CLD_NEEDED                  Only needed for compatibility with buggy software/BIOSes             #
+# EXTRA_LOOP_UNROLLING_SMALL  Improves transfer speed on some CPU + IDE controller combinations    #
+# EXTRA_LOOP_UNROLLING_LARGE  Same as above but faster and uses more ROM space                     #
 #                                                                                                  #
 # ** AT Builds only (when USE_AT is defined)                                                       #
@@ -108,6 +111,6 @@
 # Assembler preprocessor defines #
 ##################################
-DEFINES_COMMON = MODULE_STRINGS_COMPRESSED MODULE_HOTKEYS MODULE_8BIT_IDE MODULE_EBIOS MODULE_SERIAL MODULE_SERIAL_FLOPPY MODULE_POWER_MANAGEMENT NO_ATAID_VALIDATION CLD_NEEDED
-DEFINES_COMMON_LARGE = MODULE_BOOT_MENU MODULE_8BIT_IDE_ADVANCED MODULE_COMPATIBLE_TABLES
+DEFINES_COMMON = MODULE_STRINGS_COMPRESSED MODULE_HOTKEYS MODULE_8BIT_IDE MODULE_EBIOS MODULE_SERIAL MODULE_SERIAL_FLOPPY MODULE_POWER_MANAGEMENT NO_ATAID_VALIDATION CLD_NEEDED EXTRA_LOOP_UNROLLING_SMALL
+DEFINES_COMMON_LARGE = MODULE_BOOT_MENU MODULE_8BIT_IDE_ADVANCED MODULE_COMPATIBLE_TABLES EXTRA_LOOP_UNROLLING_LARGE
 
 DEFINES_XT = $(DEFINES_COMMON) ELIMINATE_CGA_SNOW MODULE_8BIT_IDE_ADVANCED
Index: /trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/Strings.asm
===================================================================
--- /trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/Strings.asm	(revision 622)
+++ /trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/Strings.asm	(revision 623)
@@ -98,5 +98,5 @@
 g_szNfoMainLicense:		db	"XTIDE Universal BIOS and XTIDECFG Copyright (C) 2009-2010 by Tomi Tilli, 2011-2021 by XTIDE Universal BIOS Team."
 						db	" Released under GNU GPL v2, with ABSOLUTELY NO WARRANTY. Press ENTER for more details...",NULL
-g_szNfoMainHomePage:	db	"Visit http://xtideuniversalbios.org (home page) and http://vcfed.org/forum (support)",NULL
+g_szNfoMainHomePage:	db	"Visit http://xtideuniversalbios.org (home page) and http://forum.vcfed.org (support)",NULL
 
 g_szHelpMainLicense:	db	"XTIDE Universal BIOS and XTIDECFG Configuration program are Copyright 2009-2010 by Tomi Tilli,"
