Index: /trunk/Assembly_Library/Inc/SerialServer.inc
===================================================================
--- /trunk/Assembly_Library/Inc/SerialServer.inc	(revision 333)
+++ /trunk/Assembly_Library/Inc/SerialServer.inc	(revision 334)
@@ -29,5 +29,5 @@
 ;
 SerialServer_ATA_wServerVersion			EQU		(157*2)
-SerialServer_ATA_wFloppyFlagAndType		EQU		(158*2)
+SerialServer_ATA_wDriveFlags			EQU		(158*2)
 SerialServer_ATA_wPortAndBaud			EQU		(159*2)
 
Index: /trunk/Serial_Server/library/Image.cpp
===================================================================
--- /trunk/Serial_Server/library/Image.cpp	(revision 333)
+++ /trunk/Serial_Server/library/Image.cpp	(revision 334)
@@ -205,5 +205,5 @@
 //
 #define ATA_wSerialServerVersion 157
-#define ATA_wSerialFloppyFlagAndType 158
+#define ATA_wSerialDriveFlags 158
 #define ATA_wSerialPortAndBaud 159
 
@@ -214,6 +214,10 @@
 #define ATA_wGenCfg_FIXED 0x40
 
-#define ATA_wSerialFloppyFlagAndType_Flag 0x10
-#define ATA_wSerialFloppyFlagAndType_TypePosition 5
+// These are all shifted by 1 bit to the right, so that SerialDPT_Finalize can shift them into proper position
+// and shift the high order bit into the carry flag to indicate a floppy drive is present.
+//
+#define ATA_wSerialDriveFlags_Floppy    0x88
+#define ATA_wSerialDriveFlags_Present   0x02
+#define ATA_wSerialDriveFlags_FloppyType_FieldPosition   4
 
 struct comPorts {
@@ -298,7 +302,8 @@
 	buff[ ATA_wSerialServerVersion ] = (SERIAL_SERVER_MAJORVERSION << 8) | SERIAL_SERVER_MINORVERSION;
 
+	buff[ ATA_wSerialDriveFlags ] = ATA_wSerialDriveFlags_Present;
 	if( floppy )
-		buff[ ATA_wSerialFloppyFlagAndType ] = 
-			ATA_wSerialFloppyFlagAndType_Flag | (floppyType << ATA_wSerialFloppyFlagAndType_TypePosition);
+		buff[ ATA_wSerialDriveFlags ] |= 
+			ATA_wSerialDriveFlags_Floppy | (floppyType << ATA_wSerialDriveFlags_FloppyType_FieldPosition);
 
 	// we always set this, so that the bulk of the BIOS will consider this disk as a hard disk
Index: /trunk/Tools/StringsCompress.pl
===================================================================
--- /trunk/Tools/StringsCompress.pl	(revision 333)
+++ /trunk/Tools/StringsCompress.pl	(revision 334)
@@ -66,4 +66,5 @@
 print ";;;======================================================================\n\n";
 
+print "%ifdef STRINGSCOMPRESSED_STRINGS\n\n";
 
 #
@@ -182,4 +183,7 @@
 #
 
+print "%endif ; STRINGSCOMPRESSED_STRINGS\n\n";
+print "%ifdef STRINGSCOMPRESSED_TABLES\n\n";
+
 print "StringsCompressed_NormalBase     equ   ".$normal_base."\n\n";
 
@@ -263,4 +267,6 @@
 print ";; alphabet used count: ".$used_count."\n";
 
+print "%endif ; STRINGSCOMPRESSED_TABLES\n\n";
+
 #--------------------------------------------------------------------------------
 #
Index: /trunk/XTIDE_Universal_BIOS/Src/Device/Serial/SerialCommand.asm
===================================================================
--- /trunk/XTIDE_Universal_BIOS/Src/Device/Serial/SerialCommand.asm	(revision 333)
+++ /trunk/XTIDE_Universal_BIOS/Src/Device/Serial/SerialCommand.asm	(revision 334)
@@ -54,6 +54,8 @@
 %include "SerialServer.asm"
 
-%if SerialCommand_FallThroughToSerialServer_SendReceive <> SerialServer_SendReceive
-%error "SerialServer_SendReceive must be the first routine at the top of SerialServer.asm in the Assembly_Library"
+%ifndef CHECK_FOR_UNUSED_ENTRYPOINTS		
+	%if SerialCommand_FallThroughToSerialServer_SendReceive <> SerialServer_SendReceive
+		%error "SerialServer_SendReceive must be the first routine at the top of SerialServer.asm in the Assembly_Library"
+	%endif
 %endif
 
@@ -163,7 +165,9 @@
 %include "SerialServerScan.asm"
 
-%if SerialCommand_FallThroughToSerialServerScan_ScanForServer <> SerialServerScan_ScanForServer
-%error "SerialServerScan_ScanForServer must be the first routine at the top of SerialServerScan.asm in the Assembly_Library"
-%endif				
+%ifndef CHECK_FOR_UNUSED_ENTRYPOINTS				
+	%if SerialCommand_FallThroughToSerialServerScan_ScanForServer <> SerialServerScan_ScanForServer
+		%error "SerialServerScan_ScanForServer must be the first routine at the top of SerialServerScan.asm in the Assembly_Library"
+	%endif
+%endif
 
 
Index: /trunk/XTIDE_Universal_BIOS/Src/Device/Serial/SerialDPT.asm
===================================================================
--- /trunk/XTIDE_Universal_BIOS/Src/Device/Serial/SerialDPT.asm	(revision 333)
+++ /trunk/XTIDE_Universal_BIOS/Src/Device/Serial/SerialDPT.asm	(revision 334)
@@ -25,13 +25,13 @@
 ; if the floppy support is disabled.
 ;
-		mov		al, [es:si+SerialServer_ATA_wFloppyFlagAndType]
-		or		al, FLGH_DPT_SERIAL_DEVICE
-		or		byte [di+DPT.bFlagsHigh], al
-
-		test	al, FLGH_DPT_SERIAL_FLOPPY           ; clears CF
-		jz		.notfloppy
-		stc		
-.notfloppy:		
+		mov		al, [es:si+SerialServer_ATA_wDriveFlags]
+		shl		al, 1
+		mov		byte [di+DPT.bFlagsHigh], al
 		
 		ret
 
+%ifndef CHECK_FOR_UNUSED_ENTRYPOINTS
+	%if FLGH_DPT_SERIAL_DEVICE != 0x4 || FLGH_DPT_SERIAL_FLOPPY != 0x10 || FLGH_DPT_SERIAL_FLOPPY_TYPE_MASK != 0xe0 || FLGH_DPT_SERIAL_FLOPPY_TYPE_FIELD_POSITION != 5
+		%error "The serial server passes FLGH values into SerialDPT_Finalize directly.  If the flag positions are changed, corresponding changes will need to be made in the serial server, and likely a version check put in to deal with servers talking to incompatible clients"
+	%endif
+%endif
Index: /trunk/XTIDE_Universal_BIOS/Src/Initialization/DetectPrint.asm
===================================================================
--- /trunk/XTIDE_Universal_BIOS/Src/Initialization/DetectPrint.asm	(revision 333)
+++ /trunk/XTIDE_Universal_BIOS/Src/Initialization/DetectPrint.asm	(revision 334)
@@ -46,6 +46,4 @@
 	eCMOVE	ax, cs							; Use segment address for JR-IDE/ISA
 %endif
-
-	mov		si, g_szDetectOuter				; Load SI with default wrapper string "IDE %s at %s: "
 
 	push	bp								; setup stack for call to
@@ -99,6 +97,4 @@
 
 .pushAndPrintSerial:
-	mov		si, g_szDetectOuterSerial		; Finally load SI with wrapper string "Serial %s on %s: "
-
 .pushAndPrint:
 %endif
@@ -107,4 +103,6 @@
 	push	ax								; Push high order digits, or port address, or N/A
 	push	dx								; Push low order digit, or N/A
+
+	mov		si, g_szDetectOuter				; Load SI with default wrapper string "IDE %s at %s: "
 
 	jmp		short DetectPrint_BootMenuPrint_FormatCSSIfromParamsInSSBP_Relay
Index: /trunk/XTIDE_Universal_BIOS/Src/Main.asm
===================================================================
--- /trunk/XTIDE_Universal_BIOS/Src/Main.asm	(revision 333)
+++ /trunk/XTIDE_Universal_BIOS/Src/Main.asm	(revision 334)
@@ -158,6 +158,27 @@
 iend
 
+	; Strings are first to avoid them moving unnessarily when code is turned on and off with %ifdef's
+	; since some groups of strings need to be on the same 256-byte page.
+	;
+%ifdef MODULE_STRINGS_COMPRESSED
+	%define STRINGSCOMPRESSED_STRINGS
+	%include "StringsCompressed.asm" 
+%else
+	%include "Strings.asm"			; For BIOS message strings
+%endif
+
 	; Libraries, data, Initialization and drive detection
+
 	%include "AssemblyLibrary.asm"
+
+	; String compression tables need to come after the AssemblyLibrary (since they depend on addresses
+	; established in the assembly library), and are unncessary if strings are not compressed.
+	;
+%ifdef MODULE_STRINGS_COMPRESSED
+	%undef  STRINGSCOMPRESSED_STRINGS		
+	%define STRINGSCOMPRESSED_TABLES
+	%include "StringsCompressed.asm"
+%endif
+		
 	%include "Initialize.asm"		; For BIOS initialization
 	%include "Interrupts.asm"		; For Interrupt initialization
@@ -165,9 +186,4 @@
 	%include "CreateDPT.asm"		; For creating DPTs
 	%include "FindDPT.asm"			; For finding DPTs
-%ifdef MODULE_STRINGS_COMPRESSED
-	%include "StringsCompressed.asm"
-%else
-	%include "Strings.asm"			; For BIOS message strings
-%endif
 	%include "AccessDPT.asm"		; For accessing DPTs
 	%include "BootMenuInfo.asm"		; For creating BOOTMENUINFO structs
Index: /trunk/XTIDE_Universal_BIOS/Src/Strings.asm
===================================================================
--- /trunk/XTIDE_Universal_BIOS/Src/Strings.asm	(revision 333)
+++ /trunk/XTIDE_Universal_BIOS/Src/Strings.asm	(revision 334)
@@ -9,34 +9,24 @@
 SECTION .text
 
-; POST drive detection strings
-g_szRomAt:		db	"%s @ %x",LF,CR,NULL
-
-; Boot loader strings
-g_szTryToBoot:			db	"Booting from %s %x",ANGLE_QUOTE_RIGHT,"%x",LF,CR,NULL
-g_szBootSectorNotFound:	db	"Boot sector "
-g_szNotFound:			db	"not found",LF,CR,NULL
-g_szReadError:			db	"Error %x!",LF,CR,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 (g_szPCHS - g_szAddressingModes)
-;
-; Ensure that addressing modes are correctly spaced in memory
-;
-%ifndef CHECK_FOR_UNUSED_ENTRYPOINTS
-	%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"
+; The following strings are used by DetectPrint_StartDetectWithMasterOrSlaveStringInCXandIdeVarsInCSBP
+; To support an optimization in that code, these strings must start on the same 256 byte page,
+; which is checked at assembly time below.
+;
+g_szDetectStart:
+g_szDetectMaster:		db	"Master",NULL
+g_szDetectSlave:		db	"Slave ",NULL
+g_szDetectOuter:		db	"%s at %s: ",NULL
+;%%; %ifdef MODULE_SERIAL		;%%; is stripped off after string compression, %ifdef won't compress properly
+g_szDetectCOM:			db  "COM%c%s",NULL
+g_szDetectCOMAuto:		db	" Detect",NULL
+g_szDetectCOMSmall:		db	"/%u%u00",NULL					; IDE Master at COM1/9600:
+g_szDetectCOMLarge:		db	"/%u.%uK",NULL					; IDE Master at COM1/19.2K:
+;%%; %endif						;%%; is stripped off after string compression, %ifdef won't compress properly
+g_szDetectEnd:
+g_szDetectPort:			db	"%x",NULL					   	; IDE Master at 1F0h:
+
+%ifndef CHECK_FOR_UNUSED_ENTRYPOINTS
+	%if ((g_szDetectEnd-$$) & 0xff00) <> ((g_szDetectStart-$$) & 0xff00)
+		%error "g_szDetect* strings must start on the same 256 byte page, required by DetectPrint_StartDetectWithMasterOrSlaveStringInCXandIdeVarsInCSBP.  Please move this block up or down within strings.asm"
 	%endif
 %endif
@@ -59,4 +49,38 @@
 	%if ((g_szFddStart-$$) & 0xff00) <> ((g_szFddEnd-$$) & 0xff00)
 		%error "g_szFdd* strings must start on the same 256 byte page, required by the BootMenuPrint_RefreshInformation routines for floppy drives.  Please move this block up or down within strings.asm"
+	%endif
+%endif
+
+; POST drive detection strings
+g_szRomAt:		db	"%s @ %x",LF,CR
+				db  "Released under GNU GPL v2",LF,CR,LF,CR,NULL
+
+; Boot loader strings
+g_szTryToBoot:			db	"Booting from %s %x",ANGLE_QUOTE_RIGHT,"%x",LF,CR,NULL
+g_szBootSectorNotFound:	db	"Boot sector "
+g_szNotFound:			db	"not found",LF,CR,NULL
+g_szReadError:			db	"Error %x!",LF,CR,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 (g_szPCHS - g_szAddressingModes)
+;
+; Ensure that addressing modes are correctly spaced in memory
+;
+%ifndef CHECK_FOR_UNUSED_ENTRYPOINTS
+	%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
 %endif
@@ -102,4 +126,17 @@
 g_szDashForZero:		db		"- ",NULL
 
+; Boot menu bottom of screen strings
+g_szFDD:		db	"FDD     ",NULL
+g_szHDD:		db	"HDD     ",NULL
+g_szRomBoot:	db	"ROM Boot",NULL
+g_szHotkey:		db	"%A%c%c%A%s%A ",NULL
+
+; Boot Menu information strings
+g_szCapacity:			db	"Capacity : %s",NULL
+g_szCapacityNum:		db	"%5-u.%u %ciB",NULL
+g_szInformation:		db	"%s",LF,CR
+	db	"Addr.",SINGLE_VERTICAL,"Block",SINGLE_VERTICAL,"Bus",SINGLE_VERTICAL,  "IRQ",SINGLE_VERTICAL,"Reset",LF,CR
+	db	   "%s",SINGLE_VERTICAL, "%5-u",SINGLE_VERTICAL, "%s",SINGLE_VERTICAL," %2-I",SINGLE_VERTICAL,"%5-x" ,NULL
+
 ; Boot Menu menuitem strings
 ;
@@ -120,42 +157,5 @@
 	%endif
 %endif
-
-; Boot menu bottom of screen strings
-g_szFDD:		db	"FDD     ",NULL
-g_szHDD:		db	"HDD     ",NULL
-g_szRomBoot:	db	"ROM Boot",NULL
-g_szHotkey:		db	"%A%c%c%A%s%A ",NULL
-
-; Boot Menu information strings
-g_szCapacity:			db	"Capacity : %s",NULL
-g_szCapacityNum:		db	"%5-u.%u %ciB",NULL
-g_szInformation:		db	"%s",LF,CR
-	db	"Addr.",SINGLE_VERTICAL,"Block",SINGLE_VERTICAL,"Bus",SINGLE_VERTICAL,  "IRQ",SINGLE_VERTICAL,"Reset",LF,CR
-	db	   "%s",SINGLE_VERTICAL, "%5-u",SINGLE_VERTICAL, "%s",SINGLE_VERTICAL," %2-I",SINGLE_VERTICAL,"%5-x" ,NULL
-
-; The following strings are used by DetectPrint_StartDetectWithMasterOrSlaveStringInCXandIdeVarsInCSBP
-; To support an optimization in that code, these strings must start on the same 256 byte page,
-; which is checked at assembly time below.
-;
-g_szDetectStart:
-g_szDetectMaster:		db	"Master",NULL
-g_szDetectSlave:		db	"Slave ",NULL
-g_szDetectOuter:		db	"IDE %s at %s: ",NULL
-;%%; %ifdef MODULE_SERIAL		;%%; is stripped off after string compression, %ifdef won't compress properly
-g_szDetectOuterSerial:	db	"Serial %s on %s: ",NULL
-g_szDetectCOM:			db  "COM%c%s",NULL
-g_szDetectCOMAuto:		db	" Detect",NULL
-g_szDetectCOMSmall:		db	"/%u%u00",NULL					; IDE Master at COM1/9600:
-g_szDetectCOMLarge:		db	"/%u.%uK",NULL					; IDE Master at COM1/19.2K:
-;%%; %endif						;%%; is stripped off after string compression, %ifdef won't compress properly
-g_szDetectEnd:
-g_szDetectPort:			db	"%x",NULL					   	; IDE Master at 1F0h:
-
-%ifndef CHECK_FOR_UNUSED_ENTRYPOINTS
-	%if ((g_szDetectEnd-$$) & 0xff00) <> ((g_szDetectStart-$$) & 0xff00)
-		%error "g_szDetect* strings must start on the same 256 byte page, required by DetectPrint_StartDetectWithMasterOrSlaveStringInCXandIdeVarsInCSBP.  Please move this block up or down within strings.asm"
-	%endif
-%endif
-
+		
 ;------------------------------------------------------------------------------------------
 ;
Index: /trunk/XTIDE_Universal_BIOS/Src/StringsCompressed.asm
===================================================================
--- /trunk/XTIDE_Universal_BIOS/Src/StringsCompressed.asm	(revision 333)
+++ /trunk/XTIDE_Universal_BIOS/Src/StringsCompressed.asm	(revision 334)
@@ -7,4 +7,6 @@
 ;;;======================================================================
 
+%ifdef STRINGSCOMPRESSED_STRINGS
+
 ; Project name	:	XTIDE Universal BIOS
 ; Description	:	Strings and equates for BIOS messages.
@@ -16,237 +18,4 @@
 ; Section containing code
 SECTION .text
-
-; POST drive detection strings
-g_szRomAt:		; db	"%s @ %x",LF,CR,NULL
-          		; db	 25h,  73h,  20h,  40h,  20h,  25h,  78h,  0ah,  0dh,  00h    ; uncompressed
-          		  db	 3eh,  20h, 0c6h,  39h,  1bh                                  ; compressed
-
-
-; Boot loader strings
-g_szTryToBoot:			; db	"Booting from %s %x",ANGLE_QUOTE_RIGHT,"%x",LF,CR,NULL
-              			; db	 42h,  6fh,  6fh,  74h,  69h,  6eh,  67h,  20h,  66h,  72h,  6fh,  6dh,  20h,  25h,  73h,  20h,  25h,  78h, 0afh,  25h,  78h,  0ah,  0dh,  00h    ; uncompressed
-              			  db	 48h,  75h,  75h,  7ah,  6fh,  74h, 0edh,  6ch,  78h,  75h, 0f3h,  3eh,  20h,  39h,  24h,  39h,  1bh                                              ; compressed
-
-g_szBootSectorNotFound:	; db	"Boot sector "
-                       	; db	 42h,  6fh,  6fh,  74h,  20h,  73h,  65h,  63h,  74h,  6fh,  72h,  20h    ; uncompressed
-                       	  db	 48h,  75h,  75h, 0fah,  79h,  6bh,  69h,  7ah,  75h, 0f8h                ; compressed
-
-g_szNotFound:			; db	"not found",LF,CR,NULL
-             			; db	 6eh,  6fh,  74h,  20h,  66h,  6fh,  75h,  6eh,  64h,  0ah,  0dh,  00h    ; uncompressed
-             			  db	 74h,  75h, 0fah,  6ch,  75h,  7bh,  74h,  6ah,  1bh                      ; compressed
-
-g_szReadError:			; db	"Error %x!",LF,CR,NULL
-              			; db	 45h,  72h,  72h,  6fh,  72h,  20h,  25h,  78h,  21h,  0ah,  0dh,  00h    ; uncompressed
-              			  db	 4bh,  78h,  78h,  75h, 0f8h,  39h,  25h,  1bh                            ; compressed
-
-
-g_szAddressingModes:
-g_szLCHS:		; db	"L-CHS",NULL
-         		; db	 4ch,  2dh,  43h,  48h,  53h,  00h    ; uncompressed
-         		  db	 52h,  28h,  49h,  4eh,  99h          ; compressed
-
-g_szPCHS:		; db	"P-CHS",NULL
-         		; db	 50h,  2dh,  43h,  48h,  53h,  00h    ; uncompressed
-         		  db	 56h,  28h,  49h,  4eh,  99h          ; compressed
-
-g_szLBA28:		; db	"LBA28",NULL
-          		; db	 4ch,  42h,  41h,  32h,  38h,  00h    ; uncompressed
-          		  db	 52h,  48h,  47h,  2ch,  11h          ; compressed
-
-g_szLBA48:		; db	"LBA48",NULL
-          		; db	 4ch,  42h,  41h,  34h,  38h,  00h    ; uncompressed
-          		  db	 52h,  48h,  47h,  2eh,  11h          ; compressed
-
-g_szAddressingModes_Displacement equ (g_szPCHS - g_szAddressingModes)
-;
-; Ensure that addressing modes are correctly spaced in memory
-;
-%ifndef CHECK_FOR_UNUSED_ENTRYPOINTS
-%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
-%endif
-
-; Boot Menu Floppy Disk strings
-;
-; The following strings are used by BootMenuPrint_RefreshInformation
-; To support optimizations in that code, these strings must start on the same 256 byte page,
-; which is checked at assembly time below.
-;
-g_szFddStart:
-g_szFddUnknown:	; db	"Unknown",NULL
-               	; db	 55h,  6eh,  6bh,  6eh,  6fh,  77h,  6eh,  00h    ; uncompressed
-               	  db	 5bh,  74h,  71h,  74h,  75h,  7dh, 0b4h          ; compressed
-
-g_szFddSizeOr:	; db	"5",ONE_QUARTER,QUOTATION_MARK," or 3",ONE_HALF,QUOTATION_MARK," DD",NULL
-              	; db	 35h, 0ach,  22h,  20h,  6fh,  72h,  20h,  33h, 0abh,  22h,  20h,  44h,  44h,  00h    ; uncompressed
-              	  db	 2fh,  21h,  26h,  20h,  75h, 0f8h,  2dh,  22h,  26h,  20h,  4ah,  8ah                ; compressed
-
-g_szFddSize:	; db	"%s",QUOTATION_MARK,", %u kiB",NULL	; 3½", 1440 kiB
-            	; db	 25h,  73h,  22h,  2ch,  20h,  25h,  75h,  20h,  6bh,  69h,  42h,  00h    ; uncompressed
-            	  db	 3eh,  26h,  27h,  20h,  37h,  20h,  71h,  6fh,  88h                      ; compressed
-
-g_szFddThreeHalf:		; db  "3",ONE_HALF,NULL
-                 		; db   33h, 0abh,  00h    ; uncompressed
-                 		  db   2dh,  02h          ; compressed
-
-g_szFddEnd:
-g_szFddFiveQuarter:		; db  "5",ONE_QUARTER,NULL
-                   		; db   35h, 0ach,  00h    ; uncompressed
-                   		  db   2fh,  01h          ; compressed
-
-
-%ifndef CHECK_FOR_UNUSED_ENTRYPOINTS
-%if ((g_szFddStart-$$) & 0xff00) <> ((g_szFddEnd-$$) & 0xff00)
-%error "g_szFdd* strings must start on the same 256 byte page, required by the BootMenuPrint_RefreshInformation routines for floppy drives.  Please move this block up or down within strings.asm"
-%endif
-%endif
-
-g_szBusTypeValues:
-g_szBusTypeValues_8Dual:		; db		"D8 ",NULL
-                        		; db		 44h,  38h,  20h,  00h    ; uncompressed
-                        		  db		 4ah,  31h,  00h          ; compressed
-
-g_szBusTypeValues_8Reversed:	; db		"X8 ",NULL
-                            	; db		 58h,  38h,  20h,  00h    ; uncompressed
-                            	  db		 5eh,  31h,  00h          ; compressed
-
-g_szBusTypeValues_8Single:		; db		"S8 ",NULL
-                          		; db		 53h,  38h,  20h,  00h    ; uncompressed
-                          		  db		 59h,  31h,  00h          ; compressed
-
-g_szBusTypeValues_16:			; db		" 16",NULL
-                     			; db		 20h,  31h,  36h,  00h    ; uncompressed
-                     			  db		 20h,  2bh,  10h          ; compressed
-
-g_szBusTypeValues_32:			; db		" 32",NULL
-                     			; db		 20h,  33h,  32h,  00h    ; uncompressed
-                     			  db		 20h,  2dh,  0ch          ; compressed
-
-g_szBusTypeValues_Serial:		; db		"SER",NULL
-                         		; db		 53h,  45h,  52h,  00h    ; uncompressed
-                         		  db		 59h,  4bh,  98h          ; compressed
-
-g_szBusTypeValues_8MemMapped:	; db		"M8 ",NULL
-                             	; db		 4dh,  38h,  20h,  00h    ; uncompressed
-                             	  db		 53h,  31h,  00h          ; compressed
-
-g_szBusTypeValues_Displacement equ (g_szBusTypeValues_8Reversed - g_szBusTypeValues)
-;
-; Ensure that bus type strings are correctly spaced in memory
-;
-%ifndef CHECK_FOR_UNUSED_ENTRYPOINTS
-%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
-%if g_szBusTypeValues_8MemMapped <> g_szBusTypeValues_Serial + g_szBusTypeValues_Displacement
-%error "g_szBusTypeValues Displacement Incorrect 7"
-%endif
-%endif
-
-g_szSelectionTimeout:	; db		DOUBLE_BOTTOM_LEFT_CORNER,DOUBLE_LEFT_HORIZONTAL_TO_SINGLE_VERTICAL,"%ASelection in %2-u s",NULL
-                     	; db		0c8h, 0b5h,  25h,  41h,  53h,  65h,  6ch,  65h,  63h,  74h,  69h,  6fh,  6eh,  20h,  69h,  6eh,  20h,  25h,  32h,  2dh,  75h,  20h,  73h,  00h    ; uncompressed
-                     	  db		 32h,  33h,  3dh,  59h,  6bh,  72h,  6bh,  69h,  7ah,  6fh,  75h, 0f4h,  6fh, 0f4h,  3ch,  20h, 0b9h                                              ; compressed
-
-
-g_szDashForZero:		; db		"- ",NULL
-                		; db		 2dh,  20h,  00h    ; uncompressed
-                		  db		 28h,  00h          ; compressed
-
-
-; Boot Menu menuitem strings
-;
-; The following strings are used by BootMenuPrint_* routines.
-; To support optimizations in that code, these strings must start on the same 256 byte page,
-; which is checked at assembly time below.
-;
-g_szBootMenuPrintStart:
-g_szDriveNum:			; db	"%x %s",NULL
-             			; db	 25h,  78h,  20h,  25h,  73h,  00h    ; uncompressed
-             			  db	 39h,  20h,  1eh                      ; compressed
-
-g_szDriveNumBOOTNFO:	; db	"%x %z",NULL
-                    	; db	 25h,  78h,  20h,  25h,  7ah,  00h    ; uncompressed
-                    	  db	 39h,  20h,  1fh                      ; compressed
-
-g_szFloppyDrv:			; db	"Floppy Drive %c",NULL
-              			; db	 46h,  6ch,  6fh,  70h,  70h,  79h,  20h,  44h,  72h,  69h,  76h,  65h,  20h,  25h,  63h,  00h    ; uncompressed
-              			  db	 4ch,  72h,  75h,  76h,  76h, 0ffh,  4ah,  78h,  6fh,  7ch, 0ebh,  15h                            ; compressed
-
-g_szBootMenuPrintEnd:
-g_szForeignHD:			; db	"Foreign Hard Disk",NULL
-              			; db	 46h,  6fh,  72h,  65h,  69h,  67h,  6eh,  20h,  48h,  61h,  72h,  64h,  20h,  44h,  69h,  73h,  6bh,  00h    ; uncompressed
-              			  db	 4ch,  75h,  78h,  6bh,  6fh,  6dh, 0f4h,  4eh,  67h,  78h, 0eah,  4ah,  6fh,  79h, 0b1h                      ; compressed
-
-
-%ifndef CHECK_FOR_UNUSED_ENTRYPOINTS
-%if ((g_szBootMenuPrintStart-$$) & 0xff00) <> ((g_szBootMenuPrintEnd-$$) & 0xff00)
-%error "g_szBootMenuPrint* strings must start on the same 256 byte page, required by the BootMenuPrint_* routines.  Please move this block up or down within strings.asm"
-%endif
-%endif
-
-; Boot menu bottom of screen strings
-g_szFDD:		; db	"FDD     ",NULL
-        		; db	 46h,  44h,  44h,  20h,  20h,  20h,  20h,  20h,  00h    ; uncompressed
-        		  db	 4ch,  4ah, 0cah,  20h,  20h,  20h,  00h                ; compressed
-
-g_szHDD:		; db	"HDD     ",NULL
-        		; db	 48h,  44h,  44h,  20h,  20h,  20h,  20h,  20h,  00h    ; uncompressed
-        		  db	 4eh,  4ah, 0cah,  20h,  20h,  20h,  00h                ; compressed
-
-g_szRomBoot:	; db	"ROM Boot",NULL
-            	; db	 52h,  4fh,  4dh,  20h,  42h,  6fh,  6fh,  74h,  00h    ; uncompressed
-            	  db	 58h,  55h, 0d3h,  48h,  75h,  75h, 0bah                ; compressed
-
-g_szHotkey:		; db	"%A%c%c%A%s%A ",NULL
-           		; db	 25h,  41h,  25h,  63h,  25h,  63h,  25h,  41h,  25h,  73h,  25h,  41h,  20h,  00h    ; uncompressed
-           		  db	 3dh,  35h,  35h,  3dh,  3eh,  3dh,  00h                                              ; compressed
-
-
-; Boot Menu information strings
-g_szCapacity:			; db	"Capacity : %s",NULL
-             			; db	 43h,  61h,  70h,  61h,  63h,  69h,  74h,  79h,  20h,  3ah,  20h,  25h,  73h,  00h    ; uncompressed
-             			  db	 49h,  67h,  76h,  67h,  69h,  6fh,  7ah, 0ffh, 0c0h,  1eh                            ; compressed
-
-g_szCapacityNum:		; db	"%5-u.%u %ciB",NULL
-                		; db	 25h,  35h,  2dh,  75h,  2eh,  25h,  75h,  20h,  25h,  63h,  69h,  42h,  00h    ; uncompressed
-                		  db	 38h,  29h,  37h,  20h,  35h,  6fh,  88h                                        ; compressed
-
-g_szInformation:		; db	"%s",LF,CR
-                		; db	 25h,  73h,  0ah,  0dh    ; uncompressed
-                		  db	 3eh,  3bh                ; compressed
-
-	; db	"Addr.",SINGLE_VERTICAL,"Block",SINGLE_VERTICAL,"Bus",SINGLE_VERTICAL,  "IRQ",SINGLE_VERTICAL,"Reset",LF,CR
-	; db	 41h,  64h,  64h,  72h,  2eh, 0b3h,  42h,  6ch,  6fh,  63h,  6bh, 0b3h,  42h,  75h,  73h, 0b3h,  49h,  52h,  51h, 0b3h,  52h,  65h,  73h,  65h,  74h,  0ah,  0dh    ; uncompressed
-	  db	 47h,  6ah,  6ah,  78h,  29h,  23h,  48h,  72h,  75h,  69h,  71h,  23h,  48h,  7bh,  79h,  23h,  4fh,  58h,  57h,  23h,  58h,  6bh,  79h,  6bh,  7ah,  3bh          ; compressed
-
-	; db	   "%s",SINGLE_VERTICAL, "%5-u",SINGLE_VERTICAL, "%s",SINGLE_VERTICAL," %2-I",SINGLE_VERTICAL,"%5-x" ,NULL
-	; db	    25h,  73h, 0b3h,  25h,  35h,  2dh,  75h, 0b3h,  25h,  73h, 0b3h,  20h,  25h,  32h,  2dh,  49h, 0b3h,  25h,  35h,  2dh,  78h,  00h    ; uncompressed
-	  db	    3eh,  23h,  38h,  23h,  3eh,  23h,  20h,  36h,  23h,  1ah                                                                            ; compressed
-
 
 ; The following strings are used by DetectPrint_StartDetectWithMasterOrSlaveStringInCXandIdeVarsInCSBP
@@ -263,13 +32,9 @@
                 		  db	 59h,  72h,  67h,  7ch,  6bh,  00h          ; compressed
 
-g_szDetectOuter:		; db	"IDE %s at %s: ",NULL
-                		; db	 49h,  44h,  45h,  20h,  25h,  73h,  20h,  61h,  74h,  20h,  25h,  73h,  3ah,  20h,  00h    ; uncompressed
-                		  db	 4fh,  4ah, 0cbh,  3eh,  20h,  67h, 0fah,  3eh,  40h,  00h                                  ; compressed
+g_szDetectOuter:		; db	"%s at %s: ",NULL
+                		; db	 25h,  73h,  20h,  61h,  74h,  20h,  25h,  73h,  3ah,  20h,  00h    ; uncompressed
+                		  db	 3eh,  20h,  67h, 0fah,  3eh,  40h,  00h                            ; compressed
 
 %ifdef MODULE_SERIAL		;%%; is stripped off after string compression, %ifdef won't compress properly
-g_szDetectOuterSerial:	; db	"Serial %s on %s: ",NULL
-                      	; db	 53h,  65h,  72h,  69h,  61h,  6ch,  20h,  25h,  73h,  20h,  6fh,  6eh,  20h,  25h,  73h,  3ah,  20h,  00h    ; uncompressed
-                      	  db	 59h,  6bh,  78h,  6fh,  67h, 0f2h,  3eh,  20h,  75h, 0f4h,  3eh,  40h,  00h                                  ; compressed
-
 g_szDetectCOM:			; db  "COM%c%s",NULL
               			; db   43h,  4fh,  4dh,  25h,  63h,  25h,  73h,  00h    ; uncompressed
@@ -298,4 +63,241 @@
 %if ((g_szDetectEnd-$$) & 0xff00) <> ((g_szDetectStart-$$) & 0xff00)
 %error "g_szDetect* strings must start on the same 256 byte page, required by DetectPrint_StartDetectWithMasterOrSlaveStringInCXandIdeVarsInCSBP.  Please move this block up or down within strings.asm"
+%endif
+%endif
+
+; Boot Menu Floppy Disk strings
+;
+; The following strings are used by BootMenuPrint_RefreshInformation
+; To support optimizations in that code, these strings must start on the same 256 byte page,
+; which is checked at assembly time below.
+;
+g_szFddStart:
+g_szFddUnknown:	; db	"Unknown",NULL
+               	; db	 55h,  6eh,  6bh,  6eh,  6fh,  77h,  6eh,  00h    ; uncompressed
+               	  db	 5bh,  74h,  71h,  74h,  75h,  7dh, 0b4h          ; compressed
+
+g_szFddSizeOr:	; db	"5",ONE_QUARTER,QUOTATION_MARK," or 3",ONE_HALF,QUOTATION_MARK," DD",NULL
+              	; db	 35h, 0ach,  22h,  20h,  6fh,  72h,  20h,  33h, 0abh,  22h,  20h,  44h,  44h,  00h    ; uncompressed
+              	  db	 2fh,  21h,  26h,  20h,  75h, 0f8h,  2dh,  22h,  26h,  20h,  4ah,  8ah                ; compressed
+
+g_szFddSize:	; db	"%s",QUOTATION_MARK,", %u kiB",NULL	; 3½", 1440 kiB
+            	; db	 25h,  73h,  22h,  2ch,  20h,  25h,  75h,  20h,  6bh,  69h,  42h,  00h    ; uncompressed
+            	  db	 3eh,  26h,  27h,  20h,  37h,  20h,  71h,  6fh,  88h                      ; compressed
+
+g_szFddThreeHalf:		; db  "3",ONE_HALF,NULL
+                 		; db   33h, 0abh,  00h    ; uncompressed
+                 		  db   2dh,  02h          ; compressed
+
+g_szFddEnd:
+g_szFddFiveQuarter:		; db  "5",ONE_QUARTER,NULL
+                   		; db   35h, 0ach,  00h    ; uncompressed
+                   		  db   2fh,  01h          ; compressed
+
+
+%ifndef CHECK_FOR_UNUSED_ENTRYPOINTS
+%if ((g_szFddStart-$$) & 0xff00) <> ((g_szFddEnd-$$) & 0xff00)
+%error "g_szFdd* strings must start on the same 256 byte page, required by the BootMenuPrint_RefreshInformation routines for floppy drives.  Please move this block up or down within strings.asm"
+%endif
+%endif
+
+; POST drive detection strings
+g_szRomAt:		; db	"%s @ %x",LF,CR
+          		; db	 25h,  73h,  20h,  40h,  20h,  25h,  78h,  0ah,  0dh    ; uncompressed
+          		  db	 3eh,  20h, 0c6h,  39h,  3bh                            ; compressed
+
+	; db  "Released under GNU GPL v2",LF,CR,LF,CR,NULL
+	; db   52h,  65h,  6ch,  65h,  61h,  73h,  65h,  64h,  20h,  75h,  6eh,  64h,  65h,  72h,  20h,  47h,  4eh,  55h,  20h,  47h,  50h,  4ch,  20h,  76h,  32h,  0ah,  0dh,  0ah,  0dh,  00h    ; uncompressed
+	  db   58h,  6bh,  72h,  6bh,  67h,  79h,  6bh, 0eah,  7bh,  74h,  6ah,  6bh, 0f8h,  4dh,  54h, 0dbh,  4dh,  56h, 0d2h,  7ch,  2ch,  3bh,  1bh                                              ; compressed
+
+
+; Boot loader strings
+g_szTryToBoot:			; db	"Booting from %s %x",ANGLE_QUOTE_RIGHT,"%x",LF,CR,NULL
+              			; db	 42h,  6fh,  6fh,  74h,  69h,  6eh,  67h,  20h,  66h,  72h,  6fh,  6dh,  20h,  25h,  73h,  20h,  25h,  78h, 0afh,  25h,  78h,  0ah,  0dh,  00h    ; uncompressed
+              			  db	 48h,  75h,  75h,  7ah,  6fh,  74h, 0edh,  6ch,  78h,  75h, 0f3h,  3eh,  20h,  39h,  24h,  39h,  1bh                                              ; compressed
+
+g_szBootSectorNotFound:	; db	"Boot sector "
+                       	; db	 42h,  6fh,  6fh,  74h,  20h,  73h,  65h,  63h,  74h,  6fh,  72h,  20h    ; uncompressed
+                       	  db	 48h,  75h,  75h, 0fah,  79h,  6bh,  69h,  7ah,  75h, 0f8h                ; compressed
+
+g_szNotFound:			; db	"not found",LF,CR,NULL
+             			; db	 6eh,  6fh,  74h,  20h,  66h,  6fh,  75h,  6eh,  64h,  0ah,  0dh,  00h    ; uncompressed
+             			  db	 74h,  75h, 0fah,  6ch,  75h,  7bh,  74h,  6ah,  1bh                      ; compressed
+
+g_szReadError:			; db	"Error %x!",LF,CR,NULL
+              			; db	 45h,  72h,  72h,  6fh,  72h,  20h,  25h,  78h,  21h,  0ah,  0dh,  00h    ; uncompressed
+              			  db	 4bh,  78h,  78h,  75h, 0f8h,  39h,  25h,  1bh                            ; compressed
+
+
+g_szAddressingModes:
+g_szLCHS:		; db	"L-CHS",NULL
+         		; db	 4ch,  2dh,  43h,  48h,  53h,  00h    ; uncompressed
+         		  db	 52h,  28h,  49h,  4eh,  99h          ; compressed
+
+g_szPCHS:		; db	"P-CHS",NULL
+         		; db	 50h,  2dh,  43h,  48h,  53h,  00h    ; uncompressed
+         		  db	 56h,  28h,  49h,  4eh,  99h          ; compressed
+
+g_szLBA28:		; db	"LBA28",NULL
+          		; db	 4ch,  42h,  41h,  32h,  38h,  00h    ; uncompressed
+          		  db	 52h,  48h,  47h,  2ch,  11h          ; compressed
+
+g_szLBA48:		; db	"LBA48",NULL
+          		; db	 4ch,  42h,  41h,  34h,  38h,  00h    ; uncompressed
+          		  db	 52h,  48h,  47h,  2eh,  11h          ; compressed
+
+g_szAddressingModes_Displacement equ (g_szPCHS - g_szAddressingModes)
+;
+; Ensure that addressing modes are correctly spaced in memory
+;
+%ifndef CHECK_FOR_UNUSED_ENTRYPOINTS
+%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
+%endif
+
+g_szBusTypeValues:
+g_szBusTypeValues_8Dual:		; db		"D8 ",NULL
+                        		; db		 44h,  38h,  20h,  00h    ; uncompressed
+                        		  db		 4ah,  31h,  00h          ; compressed
+
+g_szBusTypeValues_8Reversed:	; db		"X8 ",NULL
+                            	; db		 58h,  38h,  20h,  00h    ; uncompressed
+                            	  db		 5eh,  31h,  00h          ; compressed
+
+g_szBusTypeValues_8Single:		; db		"S8 ",NULL
+                          		; db		 53h,  38h,  20h,  00h    ; uncompressed
+                          		  db		 59h,  31h,  00h          ; compressed
+
+g_szBusTypeValues_16:			; db		" 16",NULL
+                     			; db		 20h,  31h,  36h,  00h    ; uncompressed
+                     			  db		 20h,  2bh,  10h          ; compressed
+
+g_szBusTypeValues_32:			; db		" 32",NULL
+                     			; db		 20h,  33h,  32h,  00h    ; uncompressed
+                     			  db		 20h,  2dh,  0ch          ; compressed
+
+g_szBusTypeValues_Serial:		; db		"SER",NULL
+                         		; db		 53h,  45h,  52h,  00h    ; uncompressed
+                         		  db		 59h,  4bh,  98h          ; compressed
+
+g_szBusTypeValues_8MemMapped:	; db		"M8 ",NULL
+                             	; db		 4dh,  38h,  20h,  00h    ; uncompressed
+                             	  db		 53h,  31h,  00h          ; compressed
+
+g_szBusTypeValues_Displacement equ (g_szBusTypeValues_8Reversed - g_szBusTypeValues)
+;
+; Ensure that bus type strings are correctly spaced in memory
+;
+%ifndef CHECK_FOR_UNUSED_ENTRYPOINTS
+%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
+%if g_szBusTypeValues_8MemMapped <> g_szBusTypeValues_Serial + g_szBusTypeValues_Displacement
+%error "g_szBusTypeValues Displacement Incorrect 7"
+%endif
+%endif
+
+g_szSelectionTimeout:	; db		DOUBLE_BOTTOM_LEFT_CORNER,DOUBLE_LEFT_HORIZONTAL_TO_SINGLE_VERTICAL,"%ASelection in %2-u s",NULL
+                     	; db		0c8h, 0b5h,  25h,  41h,  53h,  65h,  6ch,  65h,  63h,  74h,  69h,  6fh,  6eh,  20h,  69h,  6eh,  20h,  25h,  32h,  2dh,  75h,  20h,  73h,  00h    ; uncompressed
+                     	  db		 32h,  33h,  3dh,  59h,  6bh,  72h,  6bh,  69h,  7ah,  6fh,  75h, 0f4h,  6fh, 0f4h,  3ch,  20h, 0b9h                                              ; compressed
+
+
+g_szDashForZero:		; db		"- ",NULL
+                		; db		 2dh,  20h,  00h    ; uncompressed
+                		  db		 28h,  00h          ; compressed
+
+
+; Boot menu bottom of screen strings
+g_szFDD:		; db	"FDD     ",NULL
+        		; db	 46h,  44h,  44h,  20h,  20h,  20h,  20h,  20h,  00h    ; uncompressed
+        		  db	 4ch,  4ah, 0cah,  20h,  20h,  20h,  00h                ; compressed
+
+g_szHDD:		; db	"HDD     ",NULL
+        		; db	 48h,  44h,  44h,  20h,  20h,  20h,  20h,  20h,  00h    ; uncompressed
+        		  db	 4eh,  4ah, 0cah,  20h,  20h,  20h,  00h                ; compressed
+
+g_szRomBoot:	; db	"ROM Boot",NULL
+            	; db	 52h,  4fh,  4dh,  20h,  42h,  6fh,  6fh,  74h,  00h    ; uncompressed
+            	  db	 58h,  55h, 0d3h,  48h,  75h,  75h, 0bah                ; compressed
+
+g_szHotkey:		; db	"%A%c%c%A%s%A ",NULL
+           		; db	 25h,  41h,  25h,  63h,  25h,  63h,  25h,  41h,  25h,  73h,  25h,  41h,  20h,  00h    ; uncompressed
+           		  db	 3dh,  35h,  35h,  3dh,  3eh,  3dh,  00h                                              ; compressed
+
+
+; Boot Menu information strings
+g_szCapacity:			; db	"Capacity : %s",NULL
+             			; db	 43h,  61h,  70h,  61h,  63h,  69h,  74h,  79h,  20h,  3ah,  20h,  25h,  73h,  00h    ; uncompressed
+             			  db	 49h,  67h,  76h,  67h,  69h,  6fh,  7ah, 0ffh, 0c0h,  1eh                            ; compressed
+
+g_szCapacityNum:		; db	"%5-u.%u %ciB",NULL
+                		; db	 25h,  35h,  2dh,  75h,  2eh,  25h,  75h,  20h,  25h,  63h,  69h,  42h,  00h    ; uncompressed
+                		  db	 38h,  29h,  37h,  20h,  35h,  6fh,  88h                                        ; compressed
+
+g_szInformation:		; db	"%s",LF,CR
+                		; db	 25h,  73h,  0ah,  0dh    ; uncompressed
+                		  db	 3eh,  3bh                ; compressed
+
+	; db	"Addr.",SINGLE_VERTICAL,"Block",SINGLE_VERTICAL,"Bus",SINGLE_VERTICAL,  "IRQ",SINGLE_VERTICAL,"Reset",LF,CR
+	; db	 41h,  64h,  64h,  72h,  2eh, 0b3h,  42h,  6ch,  6fh,  63h,  6bh, 0b3h,  42h,  75h,  73h, 0b3h,  49h,  52h,  51h, 0b3h,  52h,  65h,  73h,  65h,  74h,  0ah,  0dh    ; uncompressed
+	  db	 47h,  6ah,  6ah,  78h,  29h,  23h,  48h,  72h,  75h,  69h,  71h,  23h,  48h,  7bh,  79h,  23h,  4fh,  58h,  57h,  23h,  58h,  6bh,  79h,  6bh,  7ah,  3bh          ; compressed
+
+	; db	   "%s",SINGLE_VERTICAL, "%5-u",SINGLE_VERTICAL, "%s",SINGLE_VERTICAL," %2-I",SINGLE_VERTICAL,"%5-x" ,NULL
+	; db	    25h,  73h, 0b3h,  25h,  35h,  2dh,  75h, 0b3h,  25h,  73h, 0b3h,  20h,  25h,  32h,  2dh,  49h, 0b3h,  25h,  35h,  2dh,  78h,  00h    ; uncompressed
+	  db	    3eh,  23h,  38h,  23h,  3eh,  23h,  20h,  36h,  23h,  1ah                                                                            ; compressed
+
+
+; Boot Menu menuitem strings
+;
+; The following strings are used by BootMenuPrint_* routines.
+; To support optimizations in that code, these strings must start on the same 256 byte page,
+; which is checked at assembly time below.
+;
+g_szBootMenuPrintStart:
+g_szDriveNum:			; db	"%x %s",NULL
+             			; db	 25h,  78h,  20h,  25h,  73h,  00h    ; uncompressed
+             			  db	 39h,  20h,  1eh                      ; compressed
+
+g_szDriveNumBOOTNFO:	; db	"%x %z",NULL
+                    	; db	 25h,  78h,  20h,  25h,  7ah,  00h    ; uncompressed
+                    	  db	 39h,  20h,  1fh                      ; compressed
+
+g_szFloppyDrv:			; db	"Floppy Drive %c",NULL
+              			; db	 46h,  6ch,  6fh,  70h,  70h,  79h,  20h,  44h,  72h,  69h,  76h,  65h,  20h,  25h,  63h,  00h    ; uncompressed
+              			  db	 4ch,  72h,  75h,  76h,  76h, 0ffh,  4ah,  78h,  6fh,  7ch, 0ebh,  15h                            ; compressed
+
+g_szBootMenuPrintEnd:
+g_szForeignHD:			; db	"Foreign Hard Disk",NULL
+              			; db	 46h,  6fh,  72h,  65h,  69h,  67h,  6eh,  20h,  48h,  61h,  72h,  64h,  20h,  44h,  69h,  73h,  6bh,  00h    ; uncompressed
+              			  db	 4ch,  75h,  78h,  6bh,  6fh,  6dh, 0f4h,  4eh,  67h,  78h, 0eah,  4ah,  6fh,  79h, 0b1h                      ; compressed
+
+
+%ifndef CHECK_FOR_UNUSED_ENTRYPOINTS
+%if ((g_szBootMenuPrintStart-$$) & 0xff00) <> ((g_szBootMenuPrintEnd-$$) & 0xff00)
+%error "g_szBootMenuPrint* strings must start on the same 256 byte page, required by the BootMenuPrint_* routines.  Please move this block up or down within strings.asm"
 %endif
 %endif
@@ -356,4 +358,8 @@
 
 ;;; end of input stream
+
+%endif ; STRINGSCOMPRESSED_STRINGS
+
+%ifdef STRINGSCOMPRESSED_TABLES
 
 StringsCompressed_NormalBase     equ   58
@@ -433,5 +439,5 @@
 ;; translated usage stats
 ;; 33:1
-;; 32:33
+;; 32:31
 ;; 181:1
 ;; 53:2
@@ -441,5 +447,5 @@
 ;; 179:8
 ;; 44:1
-;; 50:2
+;; 50:3
 ;; 51:3
 ;; 47:2
@@ -460,7 +466,7 @@
 ;; 5-u:2
 ;; x:7
-;; s:14
+;; s:12
 ;; 5-x:1
-;; nl:6
+;; nl:8
 ;; 2-I:1
 ;; c:5
@@ -470,5 +476,5 @@
 
 ;; alphabet usage stats
-;; 58,::3
+;; 58,::2
 ;; 59,;:
 ;; 60,<:
@@ -480,22 +486,22 @@
 ;; 66,B:9
 ;; 67,C:4
-;; 68,D:11
-;; 69,E:3
+;; 68,D:10
+;; 69,E:2
 ;; 70,F:3
-;; 71,G:
+;; 71,G:2
 ;; 72,H:4
-;; 73,I:2
+;; 73,I:1
 ;; 74,J:
 ;; 75,K:1
-;; 76,L:3
+;; 76,L:4
 ;; 77,M:4
-;; 78,N:
+;; 78,N:1
 ;; 79,O:2
-;; 80,P:1
+;; 80,P:2
 ;; 81,Q:1
-;; 82,R:4
-;; 83,S:7
+;; 82,R:5
+;; 83,S:6
 ;; 84,T:
-;; 85,U:1
+;; 85,U:2
 ;; 86,V:
 ;; 87,W:
@@ -512,10 +518,10 @@
 ;; 98,b:
 ;; 99,c:5
-;; 100,d:4
-;; 101,e:12
+;; 100,d:6
+;; 101,e:15
 ;; 102,f:2
 ;; 103,g:2
 ;; 104,h:
-;; 105,i:10
+;; 105,i:9
 ;; 106,j:
 ;; 107,k:4
@@ -523,14 +529,16 @@
 ;; 109,m:1
 ;; 110,n:10
-;; 111,o:18
+;; 111,o:17
 ;; 112,p:3
 ;; 113,q:
 ;; 114,r:12
-;; 115,s:6
+;; 115,s:7
 ;; 116,t:12
-;; 117,u:2
-;; 118,v:2
+;; 117,u:3
+;; 118,v:3
 ;; 119,w:1
 ;; 120,x:
 ;; 121,y:2
-;; alphabet used count: 40
+;; alphabet used count: 42
+%endif ; STRINGSCOMPRESSED_TABLES
+
