Index: trunk/Assembly_Library/Inc/Macros.inc
===================================================================
--- trunk/Assembly_Library/Inc/Macros.inc	(revision 601)
+++ trunk/Assembly_Library/Inc/Macros.inc	(revision 602)
@@ -4,4 +4,43 @@
 %ifndef MACROS_INC
 %define MACROS_INC
+
+
+;--------------------------------------------------------------------
+; Skips the immediately following 1 byte instruction by using it
+; as an immediate value to a dummy instruction.
+; Destroys the contents of %1.
+;
+; SKIP1B
+;	Parameters:
+;		%1:		Any 8 bit general purpose register or F for flags.
+;	Returns:
+;		Nothing
+;	Corrupts registers:
+;		%1
+;--------------------------------------------------------------------
+%macro SKIP1B 1.nolist
+	%ifidni		%1, f
+		db	03Ch					; Opcode byte for CMP AL, <immed>
+		;db	0A8h					; Alt. version TEST AL, <immed>
+	%elifidni	%1, al
+		db	0B0h					; Opcode byte for MOV AL, <immed>
+	%elifidni	%1, ah
+		db	0B4h					; Opcode byte for MOV AH, <immed>
+	%elifidni	%1, bl
+		db	0B3h					; Opcode byte for MOV BL, <immed>
+	%elifidni	%1, bh
+		db	0B7h					; Opcode byte for MOV BH, <immed>
+	%elifidni	%1, cl
+		db	0B1h					; Opcode byte for MOV CL, <immed>
+	%elifidni	%1, ch
+		db	0B5h					; Opcode byte for MOV CH, <immed>
+	%elifidni	%1, dl
+		db	0B2h					; Opcode byte for MOV DL, <immed>
+	%elifidni	%1, dh
+		db	0B6h					; Opcode byte for MOV DH, <immed>
+	%else
+		%error "Invalid parameter passed to SKIP1B"
+	%endif
+%endmacro
 
 ;--------------------------------------------------------------------
Index: trunk/Assembly_Library/Src/Keyboard/Keyboard.asm
===================================================================
--- trunk/Assembly_Library/Src/Keyboard/Keyboard.asm	(revision 601)
+++ trunk/Assembly_Library/Src/Keyboard/Keyboard.asm	(revision 602)
@@ -44,6 +44,6 @@
 	push	cx
 
-	mov		cx, BUFFER_SIZE_FOR_WORD_INPUT
-	call	Memory_ReserveCXbytesFromStackToDSSI
+	mov		cl, BUFFER_SIZE_FOR_WORD_INPUT
+	call	Memory_ReserveCLbytesFromStackToDSSI
 
 	call	Char_GetFilterFunctionToDXforNumericBaseInBX
Index: trunk/Assembly_Library/Src/Menu/Dialog/DialogFile.asm
===================================================================
--- trunk/Assembly_Library/Src/Menu/Dialog/DialogFile.asm	(revision 601)
+++ trunk/Assembly_Library/Src/Menu/Dialog/DialogFile.asm	(revision 602)
@@ -612,6 +612,6 @@
 	jz		SHORT ReturnWithoutHandlingKeystroke
 
-	mov		cx, STRING_DIALOG_IO_size
-	call	Memory_ReserveCXbytesFromStackToDSSI
+	mov		cl, STRING_DIALOG_IO_size
+	call	Memory_ReserveCLbytesFromStackToDSSI
 
 ;;;	InitializeStringDialogIoInDSSIforInputtingFileName
@@ -682,6 +682,6 @@
 
 	call	DisplayLoadingMessageInInformationArea
-	mov		cx, DRIVE_DIALOG_IO_size
-	call	Memory_ReserveCXbytesFromStackToDSSI
+	mov		cl, DRIVE_DIALOG_IO_size
+	call	Memory_ReserveCLbytesFromStackToDSSI
 	call	.DisplayDriveSelectionDialogWithIoInDSSI
 	call	.ChangeDriveToUserSelectionFromIoInDSSI
@@ -741,5 +741,5 @@
 	push	ss
 	pop		ds
-	ePUSH_T	ax, CURRENTDIR_CHARACTERS
+	ePUSH_T	ax, CURRENTDIR_CHARACTERS			; The high byte is zero
 	mov		cx, FLG_FILEATTR_DIRECTORY
 	mov		dx, sp
Index: trunk/Assembly_Library/Src/Util/Memory.asm
===================================================================
--- trunk/Assembly_Library/Src/Util/Memory.asm	(revision 601)
+++ trunk/Assembly_Library/Src/Util/Memory.asm	(revision 602)
@@ -122,7 +122,8 @@
 
 ;--------------------------------------------------------------------
+; Memory_ReserveCLbytesFromStackToDSSI
 ; Memory_ReserveCXbytesFromStackToDSSI
 ;	Parameters
-;		CX:		Number of bytes to reserve
+;		CL/CX:	Number of bytes to reserve
 ;	Returns:
 ;		DS:SI:	Ptr to reserved buffer
@@ -132,4 +133,6 @@
 %ifndef EXCLUDE_FROM_XUB
 ALIGN JUMP_ALIGN
+Memory_ReserveCLbytesFromStackToDSSI:
+	xor		ch, ch
 Memory_ReserveCXbytesFromStackToDSSI:
 	pop		ax
Index: trunk/Assembly_Library/Src/Util/Sort.asm
===================================================================
--- trunk/Assembly_Library/Src/Util/Sort.asm	(revision 601)
+++ trunk/Assembly_Library/Src/Util/Sort.asm	(revision 602)
@@ -32,5 +32,5 @@
 ;		ES:DI:	Ptr to second item to compare
 ;	Returns:
-;		FLAGS:	Signed comparition between first and second item
+;		FLAGS:	Signed comparison between first and second item
 ;	Corrupts registers:
 ;		Nothing
@@ -56,15 +56,13 @@
 Sort_ItemsFromDSSIwithCountInDXsizeInCXandComparatorInBX:
 	push	es
-	push	di
-	mov		di, cx
-	eSHL_IM	cx, 1						; Reserve temp and pivot items
-	add		cx, BYTE QSORT_PARAMS_size
-	eENTER_STRUCT cx
-	push	cx
+	mov		ax, cx
+	eSHL_IM	ax, 1						; Reserve temp and pivot items
+	add		ax, BYTE QSORT_PARAMS_size
+	eENTER_STRUCT ax
+	push	ax
 
 %ifdef CLD_NEEDED
 	cld
 %endif
-	mov		cx, di						; Restore item size to CX
 	xor		ax, ax						; Zero starting index
 	dec		dx							; Count to index of last item
@@ -76,5 +74,4 @@
 	pop		ax
 	eLEAVE_STRUCT ax
-	pop		di
 	pop		es
 	ret
Index: trunk/Serial_Server/library/Image.cpp
===================================================================
--- trunk/Serial_Server/library/Image.cpp	(revision 601)
+++ trunk/Serial_Server/library/Image.cpp	(revision 602)
@@ -30,11 +30,12 @@
 struct floppyInfo floppyInfos[] =
 {
+//	{ 0, 2969600 / 512, 6, 80, 2, 36 },   		// 2.88MB 3.5" (alternate spelling with 2.9)
 	{ 1, 2949120 / 512, 6, 80, 2, 36 },   		// 2.88MB 3.5"
-	{ 0, 2867200 / 512, 6, 80, 2, 36 },   		// 2.88MB 3.5" (alternate spelling with 2.8)
-	{ 0, 2969600 / 512, 6, 80, 2, 36 },   		// 2.88MB 3.5" (alternate spelling with 2.9)
+//	{ 0, 2867200 / 512, 6, 80, 2, 36 },   		// 2.88MB 3.5" (alternate spelling with 2.8)
+	{ 1, 1720320 / 512, 4, 80, 2, 21 },         // 1.44MB 3.5" Microsoft DMF (Distribution Media Format)
 	{ 1, 1474560 / 512, 4, 80, 2, 18 },         // 1.44MB 3.5"
-	{ 0, 1433600 / 512, 4, 80, 2, 18 },         // 1.44MB 3.5" (alternate spelling with 1.4)
+//	{ 0, 1433600 / 512, 4, 80, 2, 18 },         // 1.44MB 3.5" (alternate spelling with 1.4)
 	{ 1, 1228800 / 512, 2, 80, 2, 15 },     	// 1.2MB 5.25"
-	{ 1, 737280 / 512, 3, 80, 1, 18 },    		// 720KB 3.5"
+	{ 1, 737280 / 512, 3, 80, 2, 9 },    		// 720KB 3.5"
 	{ 1, 368640 / 512, 1, 40, 2, 9 }, 			// 360KB 5.25"
 	{ 1, 327680 / 512, 0, 40, 2, 8 }, 			// 320KB 5.25"
Index: trunk/Serial_Server/win32/Win32.cpp
===================================================================
--- trunk/Serial_Server/win32/Win32.cpp	(revision 601)
+++ trunk/Serial_Server/win32/Win32.cpp	(revision 602)
@@ -37,5 +37,5 @@
 char *bannerStrings[] = {
 	"SerDrive - XTIDE Universal BIOS Serial Drive Server",
-	"Copyright (C) 2012-2018 by XTIDE Universal BIOS Team",
+	"Copyright (C) 2012-2019 by XTIDE Universal BIOS Team",
 	"Released under GNU GPL v2, with ABSOLUTELY NO WARRANTY",
 	ROM_VERSION_STRING,
@@ -91,4 +91,5 @@
 	"Floppy images may also be used.  Image size must be exactly the same size",
 	"as a 2.88MB, 1.44MB, 1.2MB, 720KB, 360KB, 320KB, 180KB, or 160KB disk.",
+	"Microsoft DMF (Distribution Media Format) images are also supported.",
 	"Floppy images must be the last disks discovered by the BIOS, and only",
 	"two floppy drives are supported by the BIOS at a time.",
Index: trunk/XTIDE_Universal_BIOS/Src/Device/IDE/IdeTransfer.asm
===================================================================
--- trunk/XTIDE_Universal_BIOS/Src/Device/IDE/IdeTransfer.asm	(revision 601)
+++ trunk/XTIDE_Universal_BIOS/Src/Device/IDE/IdeTransfer.asm	(revision 602)
@@ -253,4 +253,14 @@
 
 %elifdef USE_186
+%ifdef USE_NEC_V
+	mov		dx, es
+	xor		ax, ax
+	eROL4	dl
+	eROL4	dh
+	add		si, dx
+	adc		al, ah
+	mov		es, ax
+
+%else
 	mov		ax, es
 	rol		ax, 4
@@ -262,4 +272,5 @@
 	mov		es, ax
 
+%endif
 %else ; 808x
 	mov		al, 4
Index: trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/Dialogs.asm
===================================================================
--- trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/Dialogs.asm	(revision 601)
+++ trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/Dialogs.asm	(revision 602)
@@ -21,4 +21,29 @@
 SECTION .text
 
+
+;--------------------------------------------------------------------
+; Dialogs_DisplayNotificationFromCSDX
+; Dialogs_DisplayErrorFromCSDX
+;	Parameters:
+;		CS:DX:	Ptr to notification/error string to display
+;		SS:BP:	Menu handle
+;	Returns:
+;		Nothing
+;	Corrupts registers:
+;		AX
+;--------------------------------------------------------------------
+ALIGN JUMP_ALIGN
+Dialogs_DisplayNotificationFromCSDX:
+	push	di
+	mov		di, g_szNotificationDialog
+	jmp		SHORT DisplayMessageDialogWithMessageInCSDXandDialogInputInDSSI
+
+ALIGN JUMP_ALIGN
+Dialogs_DisplayErrorFromCSDX:
+	push	di
+	mov		di, g_szErrorDialog
+	SKIP1B	al
+	; Fall to DisplayMessageDialogWithMessageInCSDXandDialogInputInDSSI
+
 ;--------------------------------------------------------------------
 ; Dialogs_DisplayHelpFromCSDXwithTitleInCSDI
@@ -32,52 +57,16 @@
 ;		AX
 ;--------------------------------------------------------------------
-ALIGN JUMP_ALIGN
 Dialogs_DisplayHelpFromCSDXwithTitleInCSDI:
+	push	di
+
+DisplayMessageDialogWithMessageInCSDXandDialogInputInDSSI:
 	push	ds
 	push	si
-	push	di
 	push	cx
 
-	mov		cx, DIALOG_INPUT_size
-	call	Memory_ReserveCXbytesFromStackToDSSI
+	mov		cl, DIALOG_INPUT_size
+	call	Memory_ReserveCLbytesFromStackToDSSI
+	call	InitializeDialogInputFromDSSI
 	mov		[si+DIALOG_INPUT.fszTitle], di
-	jmp		SHORT DisplayMessageDialogWithMessageInCSDXandDialogInputInDSSI
-
-;--------------------------------------------------------------------
-; Dialogs_DisplayNotificationFromCSDX
-; Dialogs_DisplayErrorFromCSDX
-;	Parameters:
-;		CS:DX:	Ptr to notification string to display
-;		SS:BP:	Menu handle
-;	Returns:
-;		Nothing
-;	Corrupts registers:
-;		AX
-;--------------------------------------------------------------------
-ALIGN JUMP_ALIGN
-Dialogs_DisplayNotificationFromCSDX:
-	push	ds
-	push	si
-	push	di
-	push	cx
-
-	mov		cx, DIALOG_INPUT_size
-	call	Memory_ReserveCXbytesFromStackToDSSI
-	mov		WORD [si+DIALOG_INPUT.fszTitle], g_szNotificationDialog
-	jmp		SHORT DisplayMessageDialogWithMessageInCSDXandDialogInputInDSSI
-
-ALIGN JUMP_ALIGN
-Dialogs_DisplayErrorFromCSDX:
-	push	ds
-	push	si
-	push	di
-	push	cx
-
-	mov		cx, DIALOG_INPUT_size
-	call	Memory_ReserveCXbytesFromStackToDSSI
-	mov		WORD [si+DIALOG_INPUT.fszTitle], g_szErrorDialog
-ALIGN JUMP_ALIGN
-DisplayMessageDialogWithMessageInCSDXandDialogInputInDSSI:
-	call	InitializeDialogInputFromDSSI
 	mov		[si+DIALOG_INPUT.fszItems], dx
 	CALL_MENU_LIBRARY DisplayMessageWithInputInDSSI
@@ -85,7 +74,8 @@
 	add		sp, BYTE DIALOG_INPUT_size
 	pop		cx
-	pop		di
 	pop		si
 	pop		ds
+
+	pop		di
 	ret
 
@@ -135,6 +125,6 @@
 	push	ds
 
-	mov		cx, DIALOG_INPUT_size
-	call	Memory_ReserveCXbytesFromStackToDSSI
+	mov		cl, DIALOG_INPUT_size
+	call	Memory_ReserveCLbytesFromStackToDSSI
 	call	InitializeDialogInputFromDSSI
 	mov		[si+DIALOG_INPUT.fszTitle], bx
Index: trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/Menuitem.asm
===================================================================
--- trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/Menuitem.asm	(revision 601)
+++ trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/Menuitem.asm	(revision 602)
@@ -50,6 +50,6 @@
 	call	Registers_CopyDSSItoESDI
 
-	mov		cx, DIALOG_INPUT_size
-	call	Memory_ReserveCXbytesFromStackToDSSI
+	mov		cl, DIALOG_INPUT_size
+	call	Memory_ReserveCLbytesFromStackToDSSI
 	call	InitializeDialogInputInDSSIfromMenuitemInESDI
 	mov		ax, [es:di+MENUITEM.itemValue+ITEM_VALUE.szMultichoice]
@@ -87,6 +87,6 @@
 
 	call	Registers_CopyDSSItoESDI
-	mov		cx, WORD_DIALOG_IO_size
-	call	Memory_ReserveCXbytesFromStackToDSSI
+	mov		cl, WORD_DIALOG_IO_size
+	call	Memory_ReserveCLbytesFromStackToDSSI
 	call	InitializeDialogInputInDSSIfromMenuitemInESDI
 	mov		[si+WORD_DIALOG_IO.bNumericBase], bl
Index: trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/Menupages/FlashMenu.asm
===================================================================
--- trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/Menupages/FlashMenu.asm	(revision 601)
+++ trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/Menupages/FlashMenu.asm	(revision 602)
@@ -221,6 +221,6 @@
 
 	call	.PrepareBuffersForFlashing
-	mov		cx, FLASHVARS_size + PROGRESS_DIALOG_IO_size
-	call	Memory_ReserveCXbytesFromStackToDSSI
+	mov		cl, FLASHVARS_size + PROGRESS_DIALOG_IO_size
+	call	Memory_ReserveCLbytesFromStackToDSSI
 	call	.InitializeFlashvarsFromDSSI
 	mov		bx, si							; DS:BX now points to FLASHVARS
Index: trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/Menupages/MainMenu.asm
===================================================================
--- trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/Menupages/MainMenu.asm	(revision 601)
+++ trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/Menupages/MainMenu.asm	(revision 602)
@@ -249,6 +249,6 @@
 LoadBiosFromFile:
 	call	Buffers_SaveChangesIfFileLoaded
-	mov		cx, FILE_DIALOG_IO_size
-	call	Memory_ReserveCXbytesFromStackToDSSI
+	mov		cl, FILE_DIALOG_IO_size
+	call	Memory_ReserveCLbytesFromStackToDSSI
 	call	Dialogs_DisplayFileDialogWithDialogIoInDSSI
 	cmp		BYTE [si+FILE_DIALOG_IO.bUserCancellation], TRUE
Index: trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/Strings.asm
===================================================================
--- trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/Strings.asm	(revision 601)
+++ trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/Strings.asm	(revision 602)
@@ -293,5 +293,5 @@
 g_szValueCfgDevice8b:						db	"8-bit",NULL
 g_szValueCfgDeviceRev1:						db	"XTIDE r1",NULL
-g_szValueCfgDeviceRev2:						db	"XTIDE r2",NULL
+g_szValueCfgDeviceRev2:
 g_szValueCfgDeviceRev2Olivetti:				db	"XTIDE r2",NULL
 g_szValueCfgDeviceXTCFPio8:					db	"XTCF PIO",NULL
