Index: /trunk/Assembly_Library/Src/Display/DisplayFormatCompressed.asm
===================================================================
--- /trunk/Assembly_Library/Src/Display/DisplayFormatCompressed.asm	(revision 201)
+++ /trunk/Assembly_Library/Src/Display/DisplayFormatCompressed.asm	(revision 202)
@@ -1,23 +1,16 @@
 ; Project name	:	Assembly Library
 ; Description	:	Functions for displaying formatted strings.
-;                   ** Compressed Strings edition **
-;
-; Authors   	:	Greg Lindhorst
-;				:	gregli@hotmail.com
-;               :		
-;				:	Tomi Tilli
-;				:	aitotat@gmail.com
-;				:
-; Description	:	This is a plug replacement for DisplayFormat.asm,
-;                   working instead with precompiled and slightly compressed strings.
+;					** Compressed Strings edition **
+;					This is a plug replacement for DisplayFormat.asm,
+;					working instead with precompiled and slightly compressed strings.
 ;
 ; Strings are compressed in a simple manner:
 ;	1. The two most common characters, space and null, are removed
-;   2. Format specifiers are reduced to a single byte, including length information
+;	2. Format specifiers are reduced to a single byte, including length information
 ;
 ; Format of bytes in the string are:
 ;     01 xxxxxx     Character in x plus StringsCompressed_NormalBase
 ;     10 xxxxxx     Character in x plus StringsCompressed_NormalBase, followed by a null (last character)
-;     11 xxxxxx     Character in x plus StringsCompressed_NormalBase, followed by a space		
+;     11 xxxxxx     Character in x plus StringsCompressed_NormalBase, followed by a space
 ;     00 1 yyyyy    Character/Format in lookup table StringsCopmressed_TranslatesAndFormats
 ;     00 0 yyyyy    Character/Format in lookup table StringsCompressed_TranslatesAndFormats, followed by a null
@@ -31,8 +24,8 @@
 ;
 ; The assignments of the first two bits above is not by accident.  The translates/format branch is 00
-; which is easy to test for.  The '01' for "normal" (no null or space) and '001' for translates/format "normal" 
+; which is easy to test for.  The '01' for "normal" (no null or space) and '001' for translates/format "normal"
 ; match, allowing the translates/format codes to be shifted left by 1 and then tested with the same instructions.
 ;
-; It is always possible to say that a null character follows the current character - thus there is 
+; It is always possible to say that a null character follows the current character - thus there is
 ; no way (nor need) to specify a zero character.
 ;
@@ -41,5 +34,5 @@
 ; much "preload", just in case a branch is taken, but that is cheaper (in size) than adding additional branches.
 ;
-		
+
 ; Section containing code
 SECTION .text
@@ -49,5 +42,5 @@
 ;
 ; Names of format handlers are DisplayFormatCompressed_Format_* where * is
-; replaced with the format code after the '%' in the original string, 
+; replaced with the format code after the '%' in the original string,
 ; with '-' replaced with '_'.
 ;
@@ -87,9 +80,9 @@
 	jz		DisplayFormat_ParseCharacters
 	; fall through
-		
+
 DisplayFormatCompressed_Format_2_u:
 	mov		bh,2						; only two characters (instead of the default 5)
 	; fall through
-		
+
 DisplayFormatCompressed_Format_u:
 DisplayFormatCompressed_Format_5_u:
@@ -101,6 +94,6 @@
 	div		si							; DX:AX / 10 => AX=quot, DX=rem
  	push	dx							; Push digit
-		
-	dec		bh							
+
+	dec		bh
 	jnz		.DivLoop
 
@@ -114,18 +107,17 @@
 												; if it is zero, DisplayPrint_CharacterFromAL will not emit
 
-	or		bh, al						; skip leading zeros, bh keeps track if we have emitted anythng non-zero
+	or		bh, al						; skip leading zeros, bh keeps track if we have emitted anything non-zero
 	jnz		.PrintDigit					; note that bh starts at zero, from the loop above
 
-	test	ch,2						; are we padding with leading spaces?  
+	test	ch,2						; are we padding with leading spaces?
 	jnz		.PrintLoop					; test the even/odd of the format byte in the string
 
-	mov		al,' '-'0'					; emit space, but let the following instuctions add '0'
-
-.PrintDigit:	
-	add		al,'0'						; Digit to character
-	cmp		al,'9'						; for hex output, greater than '9'?
-	jle		.NoHexAdjustment
-	add		al,'A'-'9'-1				; adjust for hex output ('A' to 'F')
-.NoHexAdjustment:		
+	mov		al, 89h						; emit space
+
+.PrintDigit:
+	add		al, 90h						; Convert binary digit in AL to ASCII hex digit (0 - 9 or A - F)
+	daa
+	adc		al, 40h
+	daa
 
 	call	DisplayPrint_CharacterFromAL
@@ -133,5 +125,5 @@
 	jmp		.PrintLoop
 
-		
+
 ;--------------------------------------------------------------------
 ; DisplayFormat_ParseCharacters
@@ -146,16 +138,16 @@
 ;	Corrupts registers:
 ;		AX, BX, CX, DX, BP
-;--------------------------------------------------------------------		
+;--------------------------------------------------------------------
 
 DisplayFormatCompressed_BaseFormatOffset:
-		
+
 DisplayFormat_ParseCharacters_FromAX:
 	mov		si,ax
 	; fall through to DisplayFormat_ParseCharacters
 
-ALIGN JUMP_ALIGN		
-DisplayFormat_ParseCharacters:	
-;
-; This routine is used to outptu all strings from the ROM.  The strings in ROMVARS are not compressed, 
+ALIGN JUMP_ALIGN
+DisplayFormat_ParseCharacters:
+;
+; This routine is used to output all strings from the ROM.  The strings in ROMVARS are not compressed,
 ; and must be handled differently.
 ;
@@ -165,6 +157,6 @@
 
 .decode:
-	mov		al,[cs:si]			; load next byte of the string
-	inc		si
+	eSEG	cs
+	lodsb						; load next byte of the string
 
 	mov		ch,al				; save a copy for later processing of high order bits
@@ -175,7 +167,7 @@
 	and		al,03fh								; "Normal" character, mask off high order bits
 	add		al,StringsCompressed_NormalBase		; and add character offset (usually around 0x40)
-		
+
 .output:
-	call 	DisplayPrint_CharacterFromAL		
+	call 	DisplayPrint_CharacterFromAL
 
 .process_after_output:
@@ -189,5 +181,5 @@
 
 ALIGN JUMP_ALIGN
-DisplayFormatCompressed_TranslatesAndFormats:		
+DisplayFormatCompressed_TranslatesAndFormats:
 ;
 ; This routine is here (above DisplayFormat_ParseCharacters) to reduce the amount of code between
@@ -201,5 +193,5 @@
 
 	cmp		al,StringsCompressed_FormatsBegin			; determine if this is a translation or a format
-														
+
 	mov		al,[cs:bx]									; fetch translation/formats byte
 
@@ -208,5 +200,5 @@
 														; note that the flags for this conditional jump were
 														; set with the cmp al,StringsCompressed_FormatsBegin
-		
+
 	mov		dx,DisplayFormatCompressed_BaseFormatOffset   ; calculate address to jump to for format handler
 	sub		dx,ax
@@ -231,13 +223,2 @@
 	jmp		DisplayFormat_ParseCharacters.process_after_output	; continue postprocessing, check for end of string
 
-
-
-
-
-
-		
-
-		
-	
-
-
Index: /trunk/XTIDE_Universal_BIOS/Src/Boot/BootMenuEvent.asm
===================================================================
--- /trunk/XTIDE_Universal_BIOS/Src/Boot/BootMenuEvent.asm	(revision 201)
+++ /trunk/XTIDE_Universal_BIOS/Src/Boot/BootMenuEvent.asm	(revision 202)
@@ -18,7 +18,7 @@
 ALIGN JUMP_ALIGN
 BootMenuEvent_Handler:
-		
+
 %ifdef MENUEVENT_INLINE_OFFSETS
-		
+
 	add		bx, BootMenuEvent_Handler
 	jmp		bx
@@ -32,11 +32,11 @@
 MENUEVENT_RefreshInformation equ (BootMenuEvent_Handler.RefreshInformation - BootMenuEvent_Handler)
 MENUEVENT_RefreshItemFromCX equ (BootMenuEvent_Handler.RefreshItemFromCX - BootMenuEvent_Handler)
-; 
-; Note that there is no entry for MENUEVENT_IdleProcessing.  If MENUEVENT_IDLEPROCESSING_ENABLE is not %defined, 
+;
+; Note that there is no entry for MENUEVENT_IdleProcessing.  If MENUEVENT_IDLEPROCESSING_ENABLE is not %defined,
 ; then the entry point will not be called (saving memory on this end and at the CALL point).
 ;
-		
+
 %else
-		
+
 	cmp		bx, BYTE MENUEVENT.RefreshItemFromCX	; Above last supported item?
 	ja		SHORT .EventNotHandled
@@ -46,5 +46,5 @@
 	clc
 	ret
-		
+
 ALIGN WORD_ALIGN
 .rgfnEventSpecificHandlers:
@@ -58,5 +58,5 @@
 	dw		.RefreshInformation			; MENUEVENT.RefreshInformation
 	dw		.RefreshItemFromCX			; MENUEVENT.RefreshItemFromCX
-		
+
 %endif
 
@@ -153,8 +153,8 @@
 ALIGN JUMP_ALIGN
 .RefreshItemFromCX:
-	mov		bl,00h		; will result in SF being clear in .RefreshItemOrInformation...
+	xor		bl, bl		; will result in SF being clear in .RefreshItemOrInformation...
 	SKIP2B  dx			; dx corrupted below by BootMenu_GetDriveToDXforMenuitemInCX
 	; Fall to .RefreshInformation
-		
+
 ; Parameters:
 ;	CX:			Index of highlighted item
@@ -183,10 +183,10 @@
 	jc		SHORT BootMenuPrint_HardDiskMenuitem
 	; fall through to BootMenuEvent_FallThroughToFloppyMenuitem
-		
-;;; 
+
+;;;
 ;;; Fall-through (to BootMenuPrint_FloppyMenuitem)
 ;;; (checked at assembler time with the code after BootMenuPrint_FloppyMenuitem)
 ;;;
 ALIGN JUMP_ALIGN
-BootMenuEvent_FallThroughToFloppyMenuitem:	
+BootMenuEvent_FallThroughToFloppyMenuitem:
 	; fall through to BootMenuPrint_FloppyMenuitem
Index: /trunk/XTIDE_Universal_BIOS_Configurator_v2/Inc/Help/Bootmenu_SerialDetect.txt
===================================================================
--- /trunk/XTIDE_Universal_BIOS_Configurator_v2/Inc/Help/Bootmenu_SerialDetect.txt	(revision 201)
+++ /trunk/XTIDE_Universal_BIOS_Configurator_v2/Inc/Help/Bootmenu_SerialDetect.txt	(revision 202)
@@ -1,2 +1,1 @@
 Set to Yes, at the end of normal drive detection, COM ports 1-7 (in reverse order) will be scanned for a connection to a serial drive server. This option provides flexibility with the COM port and baud rate to be used, it need not be configured ahead of time, but at the expense of a slower boot process. Even when this option is set to No, this functionality can still be invoked by holding down the ALT key at the end of normal drive detection. Note that if any serial drives are detected during the normal drive detection, no scan will take place (to avoid finding the same drive twice).
-
Index: /trunk/XTIDE_Universal_BIOS_Configurator_v2/Inc/Help/IDE_SerialBaud.txt
===================================================================
--- /trunk/XTIDE_Universal_BIOS_Configurator_v2/Inc/Help/IDE_SerialBaud.txt	(revision 201)
+++ /trunk/XTIDE_Universal_BIOS_Configurator_v2/Inc/Help/IDE_SerialBaud.txt	(revision 202)
@@ -1,3 +1,1 @@
 Supported baud rates are 2400, 9600, 38.4K, and 115.2K. The server must also be set to this same speed. Older UARTs may only support 2400 and 9600 baud, but sometimes can be pushed to 38.4K. 115.2K will likely only be possible with a newer UART that inclues a FIFO. Some high speed serial ports include UART clock multipliers, allowing for speeds at 230.4K (2x multiplier) and 460.8K (4x multiplier). These high speeds are supported by these BIOS, even on original 4.77MHz 8088 systems. Note that UART clock multipliers are not detectable by the software and 115.2K will still be used during configuration for high speeds; but if a multiplier is used, the actual speed (including the multiplier) will need to be used on the server.
-
-
Index: /trunk/XTIDE_Universal_BIOS_Configurator_v2/Inc/Help/IDE_SerialCOM.txt
===================================================================
--- /trunk/XTIDE_Universal_BIOS_Configurator_v2/Inc/Help/IDE_SerialCOM.txt	(revision 201)
+++ /trunk/XTIDE_Universal_BIOS_Configurator_v2/Inc/Help/IDE_SerialCOM.txt	(revision 202)
Index: /trunk/XTIDE_Universal_BIOS_Configurator_v2/Inc/Help/IDE_SerialPort.txt
===================================================================
--- /trunk/XTIDE_Universal_BIOS_Configurator_v2/Inc/Help/IDE_SerialPort.txt	(revision 201)
+++ /trunk/XTIDE_Universal_BIOS_Configurator_v2/Inc/Help/IDE_SerialPort.txt	(revision 202)
@@ -1,1 +1,1 @@
-Select a serial port by I/O address. Supported values are between 240h and 438h, and must be on an 8-byte boundary. If the entered value corresponds to one fo the established COM port numbers, then the selection of serial port will use COM numbers instead.
+Select a serial port by I/O address. Supported values are between 240h and 438h, and must be on an 8-byte boundary. If the entered value corresponds to one of the established COM port numbers, then the selection of serial port will use COM numbers instead.
