Index: trunk/XTIDE_Universal_BIOS/Src/Boot/BootMenuPrint.asm
===================================================================
--- trunk/XTIDE_Universal_BIOS/Src/Boot/BootMenuPrint.asm	(revision 181)
+++ trunk/XTIDE_Universal_BIOS/Src/Boot/BootMenuPrint.asm	(revision 182)
@@ -186,10 +186,17 @@
 	call	BootMenuPrint_ClearInformationArea
 	call	FloppyDrive_GetType			; Get Floppy Drive type to BX
-	test	bx, bx						; Two possibilities? (FLOPPY_TYPE_525_OR_35_DD)
-	push	bp
-	mov		bp, sp
-	jz		SHORT .PrintXTFloppyType
+
+	push	bp
+	mov		bp, sp
+	ePUSH_T	ax, g_szCapacity
+		
+	mov		si, g_szFddSizeOr	        ; .PrintXTFloppyType
+	test	bx, bx						; Two possibilities? (FLOPPY_TYPE_525_OR_35_DD)		
+	jz		SHORT .output
+
+	mov		si, g_szFddUnknown	        ; .PrintUnknownFloppyType
 	cmp		bl, FLOPPY_TYPE_35_ED
-	ja		SHORT .PrintUnknownFloppyType
+	ja		SHORT .output
+		
 	; Fall to .PrintKnownFloppyType
 
@@ -203,40 +210,49 @@
 ;	Corrupts registers:
 ;		AX, BX, SI, DI
+; 
+; Floppy Drive Types:
+;
+;   0  Handled above 
+;   1  FLOPPY_TYPE_525_DD          5 1/4   360K
+;   2  FLOPPY_TYPE_525_HD          5 1/4   1.2M
+;   3  FLOPPY_TYPE_35_DD           3 1/2   720K
+;   4  FLOPPY_TYPE_35_HD           3 1/2   1.44M
+;   5  3.5" ED on some BIOSes      3 1/2   2.88M
+;   6  FLOPPY_TYPE_35_ED		   3 1/2   2.88M
+;   >6 Unknwon, handled above
+; 
 ;--------------------------------------------------------------------
 .PrintKnownFloppyType:
 	mov		si, g_szFddSize
-	ePUSH_T	ax, g_szCapacity
-	dec		bx						; Cannot be 0 (FLOPPY_TYPE_525_OR_35_DD)
-	shl		bx, 1					; Shift for WORD lookup
-	mov		ax, [cs:bx+FloppyTypes.rgwPhysicalSize]
-	push	ax						; '5' or '3'
-	mov		al, ah
-	push	ax						; '1/4' or '1/2'
-	push	WORD [cs:bx+FloppyTypes.rgwCapacity]
+		
+	mov		ax, g_szFddThreeHalf
+	cmp		bl, FLOPPY_TYPE_525_HD
+	ja		.ThreeHalf
+	add		ax, g_szFddThreeFive_Displacement
+.ThreeHalf:		
+	push	ax						; "5 1/4" or "3 1/2"
+
+	mov		al,FloppyTypes.rgbCapacityMultiplier
+	mul		byte [cs:bx+FloppyTypes.rgbCapacity - 1]    ; -1 since 0 is handled above and not in the table
+	push	ax
+
+ALIGN JUMP_ALIGN		
+.output:		
 	jmp		SHORT BootMenuPrint_FormatCSSIfromParamsInSSBP
-
-
-;--------------------------------------------------------------------
-; .PrintXTFloppyType
-; .PrintUnknownFloppyType
-;	Parameters:
-;		Nothing
-;	Returns:
-;		CF:		Set since menu event was handled successfully
-;	Corrupts registers:
-;		AX, SI, DI
-;--------------------------------------------------------------------
-ALIGN JUMP_ALIGN
-.PrintXTFloppyType:
-	mov		si, g_szFddSizeOr
-	jmp		SHORT .FormatXTorUnknownTypeFloppyDrive
-ALIGN JUMP_ALIGN
-.PrintUnknownFloppyType:
-	mov		si, g_szFddUnknown
-.FormatXTorUnknownTypeFloppyDrive:
-	ePUSH_T	ax, g_szCapacity
-	jmp		SHORT BootMenuPrint_FormatCSSIfromParamsInSSBP
-
-
+		
+FloppyTypes:
+.rgbCapacityMultiplier equ 20	        ; Multiplier to reduce word sized values to byte size
+.rgbCapacity:
+	db		360   / FloppyTypes.rgbCapacityMultiplier    ;  type 1
+	db		1200  / FloppyTypes.rgbCapacityMultiplier    ;  type 2
+	db		720   / FloppyTypes.rgbCapacityMultiplier    ;  type 3
+	db		1440  / FloppyTypes.rgbCapacityMultiplier    ;  type 4
+	db		2880  / FloppyTypes.rgbCapacityMultiplier    ;  type 5
+	db		2880  / FloppyTypes.rgbCapacityMultiplier    ;  type 6
+
+%if g_szFddFiveQuarter <> g_szFddThreeHalf+g_szFddThreeFive_Displacement
+%error "FddThreeFive_Displacement incorrect"
+%endif
+				
 ;--------------------------------------------------------------------
 ; Prints Hard Disk Menuitem information strings.
@@ -480,18 +496,3 @@
 	jmp		SHORT BootMenuPrint_FormatCSSIfromParamsInSSBP
 
-ALIGN WORD_ALIGN
-FloppyTypes:
-.rgwCapacity:
-	dw		360
-	dw		1200
-	dw		720
-	dw		1440
-	dw		2880
-	dw		2880
-.rgwPhysicalSize:
-	db		'5', 172	; 1, FLOPPY_TYPE_525_DD
-	db		'5', 172	; 2, FLOPPY_TYPE_525_HD
-	db		'3', 171	; 3, FLOPPY_TYPE_35_DD
-	db		'3', 171	; 4, FLOPPY_TYPE_35_HD
-	db		'3', 171	; 5, 3.5" ED on some BIOSes
-	db		'3', 171	; 6, FLOPPY_TYPE_35_ED
+
Index: trunk/XTIDE_Universal_BIOS/Src/Boot/BootMenuPrintCfg.asm
===================================================================
--- trunk/XTIDE_Universal_BIOS/Src/Boot/BootMenuPrintCfg.asm	(revision 181)
+++ trunk/XTIDE_Universal_BIOS/Src/Boot/BootMenuPrintCfg.asm	(revision 182)
@@ -55,6 +55,24 @@
 PushAddressingMode:
 	call	AccessDPT_GetAddressingModeForWordLookToBX
-	push	WORD [cs:bx+rgszAddressingModeString]
-
+	mov		al,g_szAddressingModes_Displacement
+	mul		bl
+	add		ax,g_szAddressingModes
+	push	ax
+;
+; Ensure that addressing modes are correctly spaced in memory
+;
+%if g_szLCHS <> g_szAddressingModes
+%error "g_szAddressingModes Displacement Incorrect 1"
+%endif
+%if g_szPCHS <> g_szLCHS + g_szAddressingModes_Displacement
+%error "g_szAddressingModes Displacement Incorrect 2"
+%endif
+%if g_szLBA28 <> g_szPCHS + g_szAddressingModes_Displacement		
+%error "g_szAddressingModes Displacement Incorrect 3"
+%endif
+%if g_szLBA48 <> g_szLBA28 + g_szAddressingModes_Displacement		
+%error "g_szAddressingModes Displacement Incorrect 4"
+%endif				
+		
 ;--------------------------------------------------------------------
 ; PushBlockMode
@@ -86,13 +104,32 @@
 ;--------------------------------------------------------------------
 ;PushBusType:
-	cwd					; Clear DX using sign extension
-	xchg	ax, bx		; Store BX to AX
-	eMOVZX	bx, BYTE [cs:si+IDEVARS.bDevice]
-	mov		bx, [cs:bx+rgwBusTypeValues]	; Char to BL, Int to BH
-	mov		dl, bh
-	push	bx			; Push character
-	push	dx			; Push 1, 8, 16 or 32
-	xchg	bx, ax		; Restore BX
+	mov		al,g_szBusTypeValues_Displacement
+	mul		BYTE [cs:si+IDEVARS.bDevice]
+	shr		ax,1
+	add		ax,g_szBusTypeValues
+	push	ax	
 
+;
+; Ensure that bus type strings are correctly spaced in memory
+;
+%if g_szBusTypeValues_8Dual <> g_szBusTypeValues
+%error "g_szBusTypeValues Displacement Incorrect 1"
+%endif
+%if g_szBusTypeValues_8Reversed <> g_szBusTypeValues + g_szBusTypeValues_Displacement
+%error "g_szBusTypeValues Displacement Incorrect 2"		
+%endif
+%if g_szBusTypeValues_8Single <> g_szBusTypeValues_8Reversed + g_szBusTypeValues_Displacement
+%error "g_szBusTypeValues Displacement Incorrect 3"				
+%endif
+%if g_szBusTypeValues_16 <> g_szBusTypeValues_8Single + g_szBusTypeValues_Displacement		
+%error "g_szBusTypeValues Displacement Incorrect 4"				
+%endif
+%if g_szBusTypeValues_32 <> g_szBusTypeValues_16 + g_szBusTypeValues_Displacement
+%error "g_szBusTypeValues Displacement Incorrect 5"				
+%endif
+%if g_szBusTypeValues_Serial <> g_szBusTypeValues_32 + g_szBusTypeValues_Displacement
+%error "g_szBusTypeValues Displacement Incorrect 6"				
+%endif				
+				
 ;--------------------------------------------------------------------
 ; PushIRQ
@@ -155,17 +192,2 @@
 	jmp		BootMenuPrint_FormatCSSIfromParamsInSSBP
 
-
-ALIGN WORD_ALIGN
-rgszAddressingModeString:
-	dw		g_szLCHS
-	dw		g_szPCHS
-	dw		g_szLBA28
-	dw		g_szLBA48
-
-rgwBusTypeValues:
-	db		'D', 8		; DEVICE_8BIT_DUAL_PORT_XTIDE
-	db		'X', 8		; DEVICE_XTIDE_WITH_REVERSED_A3_AND_A0
-	db		'S', 8		; DEVICE_8BIT_SINGLE_PORT
-	db		' ', 16		; DEVICE_16BIT_ATA
-	db		' ', 32		; DEVICE_32BIT_ATA
-	db		' ', 1		; DEVICE_SERIAL_PORT
Index: trunk/XTIDE_Universal_BIOS/Src/Strings.asm
===================================================================
--- trunk/XTIDE_Universal_BIOS/Src/Strings.asm	(revision 181)
+++ trunk/XTIDE_Universal_BIOS/Src/Strings.asm	(revision 182)
@@ -36,10 +36,30 @@
 g_szSizeDual:	db	"%s%4-u.%u %ciB / %4-u.%u %ciB",LF,CR,NULL
 g_szCfgHeader:	db	"Addr.",SINGLE_VERTICAL,"Block",SINGLE_VERTICAL,"Bus",  SINGLE_VERTICAL,"IRQ",  SINGLE_VERTICAL,"Reset",LF,CR,NULL
-g_szCfgFormat:	db	"%s"   ,SINGLE_VERTICAL,"%5-u", SINGLE_VERTICAL,"%c%2u",SINGLE_VERTICAL," %c%c",SINGLE_VERTICAL,"%5-x",  NULL
+g_szCfgFormat:	db	"%s"   ,SINGLE_VERTICAL,"%5-u", SINGLE_VERTICAL,"%s",SINGLE_VERTICAL," %c%c",SINGLE_VERTICAL,"%5-x",  NULL
+		
+g_szAddressingModes:					
 g_szLCHS:		db	"L-CHS",NULL
 g_szPCHS:		db	"P-CHS",NULL
 g_szLBA28:		db	"LBA28",NULL
 g_szLBA48:		db	"LBA48",NULL
+g_szAddressingModes_Displacement equ 6
+		
 g_szFddUnknown:	db	"%sUnknown",NULL
 g_szFddSizeOr:	db	"%s5",ONE_QUARTER,QUOTATION_MARK," or 3",ONE_HALF,QUOTATION_MARK," DD",NULL
-g_szFddSize:	db	"%s%c%c",QUOTATION_MARK,", %u kiB",NULL	; 3½", 1440 kiB
+g_szFddSize:	db	"%s%s",QUOTATION_MARK,", %u kiB",NULL	; 3½", 1440 kiB
+
+g_szFddThreeHalf:		db  "3",ONE_HALF,NULL
+g_szFddFiveQuarter:		db  "5",ONE_QUARTER,NULL		
+g_szFddThreeFive_Displacement equ 3
+
+g_szBusTypeValues:		
+g_szBusTypeValues_8Dual:		db		"D8 ",NULL
+g_szBusTypeValues_8Reversed:	db		"X8 ",NULL
+g_szBusTypeValues_8Single:		db		"S8 ",NULL
+g_szBusTypeValues_16:			db		" 16",NULL
+g_szBusTypeValues_32:			db		" 32",NULL
+g_szBusTypeValues_Serial:		db		"SER",NULL
+g_szBusTypeValues_Displacement equ 4
+		
+g_szSelectionTimeout:	db		DOUBLE_BOTTOM_LEFT_CORNER,DOUBLE_LEFT_HORIZONTAL_TO_SINGLE_VERTICAL,"%ASelection in %2u s",NULL
+
