Index: trunk/Assembly_Library/Inc/AssemblyLibrary.inc
===================================================================
--- trunk/Assembly_Library/Inc/AssemblyLibrary.inc	(revision 602)
+++ trunk/Assembly_Library/Inc/AssemblyLibrary.inc	(revision 603)
@@ -21,5 +21,5 @@
 
 ; Library dependencies
-%ifdef INCLUDE_MENU_LIBRARY or INCLUDE_MENU_DIALOGS	; To prevent warnings with Nasm 2.13.xx
+%ifdef INCLUDE_MENU_LIBRARY OR INCLUDE_MENU_DIALOGS	; To prevent warnings with Nasm 2.13.xx
 	%include "Menu.inc"
 	%include "MenuEvents.inc"
Index: trunk/Assembly_Library/Inc/BiosFunctions.inc
===================================================================
--- trunk/Assembly_Library/Inc/BiosFunctions.inc	(revision 602)
+++ trunk/Assembly_Library/Inc/BiosFunctions.inc	(revision 603)
@@ -5,4 +5,5 @@
 
 ; BIOS interrupts
+BIOS_SYSTEM_TIMER_TICK_INTERRUPT_08h	EQU		08h
 BIOS_VIDEO_INTERRUPT_10h				EQU		10h
 BIOS_EQUIPMENT_INTERRUPT_11h			EQU		11h
@@ -13,5 +14,5 @@
 BIOS_BOOT_LOADER_INTERRUPT_19h			EQU		19h
 BIOS_TIME_PCI_PNP_INTERRUPT_1Ah			EQU		1Ah
-BIOS_SYSTEM_TIMER_TICK_INTERRUPT_1Ch	EQU		1Ch
+BIOS_USER_TIMER_TICK_INTERRUPT_1Ch		EQU		1Ch
 BIOS_DISKETTE_INTERRUPT_40h				EQU		40h
 HD0_DPT_POINTER_41h						EQU		41h
Index: trunk/Assembly_Library/Src/Serial/SerialServer.asm
===================================================================
--- trunk/Assembly_Library/Src/Serial/SerialServer.asm	(revision 602)
+++ trunk/Assembly_Library/Src/Serial/SerialServer.asm	(revision 603)
@@ -25,5 +25,5 @@
 
 ;--------------------------------------------------------------------
-; SerialServer_SendReceive:
+; SerialServer_SendReceive
 ;	Parameters:
 ;		DX:		Packed I/O port and baud rate
Index: trunk/XTIDE_Universal_BIOS/Src/Handlers/Int19h.asm
===================================================================
--- trunk/XTIDE_Universal_BIOS/Src/Handlers/Int19h.asm	(revision 602)
+++ trunk/XTIDE_Universal_BIOS/Src/Handlers/Int19h.asm	(revision 603)
@@ -106,7 +106,7 @@
 	cli
 	mov		ax, [es:BOOTVARS.hotkeyVars+HOTKEYVARS.fpPrevTimerHandler]
-	mov		[es:BIOS_SYSTEM_TIMER_TICK_INTERRUPT_1Ch*4], ax
+	mov		[es:BIOS_USER_TIMER_TICK_INTERRUPT_1Ch*4], ax
 	mov		ax, [es:BOOTVARS.hotkeyVars+HOTKEYVARS.fpPrevTimerHandler+2]
-	mov		[es:BIOS_SYSTEM_TIMER_TICK_INTERRUPT_1Ch*4+2], ax
+	mov		[es:BIOS_USER_TIMER_TICK_INTERRUPT_1Ch*4+2], ax
 	sti
 %endif
Index: trunk/XTIDE_Universal_BIOS/Src/Initialization/DetectPrint.asm
===================================================================
--- trunk/XTIDE_Universal_BIOS/Src/Initialization/DetectPrint.asm	(revision 602)
+++ trunk/XTIDE_Universal_BIOS/Src/Initialization/DetectPrint.asm	(revision 603)
@@ -32,19 +32,4 @@
 DetectPrint_InitializeDisplayContext:
 	JMP_DISPLAY_LIBRARY InitializeDisplayContext
-
-
-%ifdef MODULE_HOTKEYS
-;--------------------------------------------------------------------
-; DetectPrint_GetSoftwareCoordinatesToAX
-;	Parameters:
-;		Nothing
-;	Returns:
-;		Nothing
-;	Corrupts registers:
-;		AX, DI
-;--------------------------------------------------------------------
-DetectPrint_GetSoftwareCoordinatesToAX:
-	JMP_DISPLAY_LIBRARY GetSoftwareCoordinatesToAX
-%endif
 
 
Index: trunk/XTIDE_Universal_BIOS/Src/Menus/HotkeyBar.asm
===================================================================
--- trunk/XTIDE_Universal_BIOS/Src/Menus/HotkeyBar.asm	(revision 602)
+++ trunk/XTIDE_Universal_BIOS/Src/Menus/HotkeyBar.asm	(revision 603)
@@ -23,11 +23,10 @@
 
 ;--------------------------------------------------------------------
-; Handler for INT 1Ch System Timer Tick.
+; Handler for INT 1Ch User Timer Tick.
 ; Reads key presses and draws hotkey bar.
 ;
 ; HotkeyBar_TimerTickHandler
 ;	Parameters:
-;		DS:		RAMVARS segment
-;		ES:		BDA segment (zero)
+;		Nothing
 ;	Returns:
 ;		Nothing
@@ -38,7 +37,24 @@
 HotkeyBar_TimerTickHandler:
 	push	es
+%ifndef USE_186		; LOAD_BDA_SEGMENT_TO will corrupt AX on 8088/8086
+	push	ax
+%endif
+
+	;!!! Keep interrupts disabled so there won't be another
+	; timer tick call before we are ready
+
+	LOAD_BDA_SEGMENT_TO es, ax
+
+	; Call previous handler
+	pushf
+	call	FAR [es:BOOTVARS.hotkeyVars+HOTKEYVARS.fpPrevTimerHandler]
+
+	; Update Hotkeybar (process key input and draw) every fourth tick
+	test	BYTE [es:BDA.dwTimerTicks], 11b
+	jnz		SHORT .ReturnFromHandler
+
 	push	ds
 %ifdef USE_186
-	ePUSHA
+	pusha
 %else
 	push	di
@@ -46,27 +62,10 @@
 	push	dx
 	push	cx
-	push	ax
-%endif
-
-	;!!! Keep interrupts disabled so there won't be another
-	; timer tick call before we are ready
-
-	LOAD_BDA_SEGMENT_TO es, ax
+%endif
 	call	RamVars_GetSegmentToDS
-
-	; Call previous handler
-	pushf
-	call	FAR [es:BOOTVARS.hotkeyVars+HOTKEYVARS.fpPrevTimerHandler]
-
-	; Update Hotkeybar (process key input and draw) every fourth tick
-	test	BYTE [es:BDA.dwTimerTicks], 11b
-	jnz		SHORT .ReturnFromHandler
-	call	UpdateDuringDriveDetection
-
-.ReturnFromHandler:
+	call	HotkeyBar_UpdateDuringDriveDetection
 %ifdef USE_186
-	ePOPA
+	popa
 %else
-	pop		ax
 	pop		cx
 	pop		dx
@@ -75,4 +74,9 @@
 %endif
 	pop		ds
+
+.ReturnFromHandler:
+%ifndef USE_186
+	pop		ax
+%endif
 	pop		es
 	iret
@@ -91,5 +95,5 @@
 ;		AX, CX, DX, SI, DI
 ;--------------------------------------------------------------------
-UpdateDuringDriveDetection:
+HotkeyBar_UpdateDuringDriveDetection:
 	call	ScanHotkeysFromKeyBufferAndStoreToBootvars
 
@@ -113,10 +117,12 @@
 ;--------------------------------------------------------------------
 HotkeyBar_DrawToTopOfScreen:
-	; Store current screen coordinates to be restored
-	; when Hotkey Bar is rendered
-	call	DetectPrint_GetSoftwareCoordinatesToAX
+	; Store current screen coordinates to stack
+	; (to be restored when Hotkey Bar is rendered)
+	CALL_DISPLAY_LIBRARY GetSoftwareCoordinatesToAX
 	push	ax
 
-	call	MoveCursorToScreenTopLeftCorner
+	; Move cursor to top left corner (0, 0)
+	xor		ax, ax
+	call	HotkeyBar_SetCursorCoordinatesFromAX
 	; Fall to .PrintFloppyDriveHotkeys
 
@@ -230,19 +236,5 @@
 ;--------------------------------------------------------------------
 .EndHotkeyBarRendering:
-	call	HotkeyBar_ClearRestOfTopRow
-	pop		ax
-	jmp		SHORT HotkeyBar_RestoreCursorCoordinatesFromAX
-
-
-;--------------------------------------------------------------------
-; HotkeyBar_ClearRestOfTopRow
-;	Parameters:
-;		Nothing
-;	Returns:
-;		Nothing
-;	Corrupts registers:
-;		AX, CX, DI
-;--------------------------------------------------------------------
-HotkeyBar_ClearRestOfTopRow:
+	; Clear the rest of the top row
 	CALL_DISPLAY_LIBRARY GetColumnsToALandRowsToAH
 	eMOVZX	cx, al
@@ -250,5 +242,22 @@
 	sub		cl, al
 	mov		al, ' '
-	JMP_DISPLAY_LIBRARY PrintRepeatedCharacterFromALwithCountInCX
+	CALL_DISPLAY_LIBRARY PrintRepeatedCharacterFromALwithCountInCX
+
+	; Restore the saved coordinates from stack
+	pop		ax
+	; Fall to HotkeyBar_SetCursorCoordinatesFromAX
+
+
+;--------------------------------------------------------------------
+; HotkeyBar_SetCursorCoordinatesFromAX
+;	Parameters:
+;		Nothing
+;	Returns:
+;		Nothing
+;	Corrupts registers:
+;		AX, DI
+;--------------------------------------------------------------------
+HotkeyBar_SetCursorCoordinatesFromAX:
+	JMP_DISPLAY_LIBRARY SetCursorCoordinatesFromAX
 
 
@@ -373,31 +382,4 @@
 
 ;--------------------------------------------------------------------
-; MoveCursorToScreenTopLeftCorner
-;	Parameters:
-;		Nothing
-;	Returns:
-;		Nothing
-;	Corrupts registers:
-;		AX, DI
-;--------------------------------------------------------------------
-MoveCursorToScreenTopLeftCorner:
-	xor		ax, ax			; Top left corner (0, 0)
-	; Fall to HotkeyBar_RestoreCursorCoordinatesFromAX
-
-
-;--------------------------------------------------------------------
-; HotkeyBar_RestoreCursorCoordinatesFromAX
-;	Parameters:
-;		Nothing
-;	Returns:
-;		Nothing
-;	Corrupts registers:
-;		AX, DI
-;--------------------------------------------------------------------
-HotkeyBar_RestoreCursorCoordinatesFromAX:
-	JMP_DISPLAY_LIBRARY SetCursorCoordinatesFromAX
-
-
-;--------------------------------------------------------------------
 ; HotkeyBar_StoreDefaultDriveLettersToHotkeyVars
 ;	Parameters:
@@ -432,9 +414,9 @@
 
 	; Store system 1Ch Timer Tick handler and install our hotkeybar handler
-	mov		ax, [BIOS_SYSTEM_TIMER_TICK_INTERRUPT_1Ch*4]
+	mov		ax, [BIOS_USER_TIMER_TICK_INTERRUPT_1Ch*4]
 	mov		[BOOTVARS.hotkeyVars+HOTKEYVARS.fpPrevTimerHandler], ax
-	mov		ax, [BIOS_SYSTEM_TIMER_TICK_INTERRUPT_1Ch*4+2]
+	mov		ax, [BIOS_USER_TIMER_TICK_INTERRUPT_1Ch*4+2]
 	mov		[BOOTVARS.hotkeyVars+HOTKEYVARS.fpPrevTimerHandler+2], ax
-	mov		al, BIOS_SYSTEM_TIMER_TICK_INTERRUPT_1Ch
+	mov		al, BIOS_USER_TIMER_TICK_INTERRUPT_1Ch
 	mov		si, HotkeyBar_TimerTickHandler
 	call	Interrupts_InstallHandlerToVectorInALFromCSSI
Index: trunk/XTIDE_Universal_BIOS/Src/Strings.asm
===================================================================
--- trunk/XTIDE_Universal_BIOS/Src/Strings.asm	(revision 602)
+++ trunk/XTIDE_Universal_BIOS/Src/Strings.asm	(revision 603)
@@ -54,5 +54,9 @@
 					db	"%s @ %x",LF,CR						; -=XTIDE ... =- @ Segment
 					db	"%s",LF,CR							; version string
+%ifdef MODULE_STRINGS_COMPRESSED
 					db	"Released under GNU GPL v2",LF,CR
+%else
+					db	"Released under GNU GPL v2",LF
+%endif
 					db	LF,CR,NULL
 %ifdef MODULE_BOOT_MENU
@@ -157,6 +161,9 @@
 %endif ; MODULE_ADVANCED_ATA OR MODULE_8BIT_IDE OR MODULE_8BIT_IDE_ADVANCED OR MODULE_SERIAL
 
-g_szDeviceTypeValues_Displacement equ 3		; 3 compressed, 4 uncompressed
-;g_szDeviceTypeValues_Displacement equ (g_szDeviceTypeValues_32bit - g_szDeviceTypeValues)
+%ifdef MODULE_STRINGS_COMPRESSED
+	g_szDeviceTypeValues_Displacement equ 3
+%else
+	g_szDeviceTypeValues_Displacement equ 4
+%endif
 ;
 ; Ensure that device type strings are correctly spaced in memory
Index: trunk/XTIDE_Universal_BIOS/Src/StringsCompressed.asm
===================================================================
--- trunk/XTIDE_Universal_BIOS/Src/StringsCompressed.asm	(revision 602)
+++ trunk/XTIDE_Universal_BIOS/Src/StringsCompressed.asm	(revision 603)
@@ -100,8 +100,12 @@
 	  db	 3dh,  39h                ; compressed
 
+%ifdef MODULE_STRINGS_COMPRESSED
 	; db	"Released under GNU GPL v2",LF,CR
 	; 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    ; uncompressed
 	  db	 58h,  6bh,  72h,  6bh,  67h,  79h,  6bh, 0eah,  7bh,  74h,  6ah,  6bh, 0f8h,  4dh,  54h, 0dbh,  4dh,  56h, 0d2h,  7ch,  2ch,  39h                                  ; compressed
 
+%else
+db	"Released under GNU GPL v2",LF
+%endif
 	; db	LF,CR,NULL
 	; db	 0ah,  0dh,  00h    ; uncompressed
@@ -314,6 +318,9 @@
 %endif ; MODULE_ADVANCED_ATA OR MODULE_8BIT_IDE OR MODULE_8BIT_IDE_ADVANCED OR MODULE_SERIAL
 
-g_szDeviceTypeValues_Displacement equ 3		; 3 compressed, 4 uncompressed
-;g_szDeviceTypeValues_Displacement equ (g_szDeviceTypeValues_32bit - g_szDeviceTypeValues)
+%ifdef MODULE_STRINGS_COMPRESSED
+g_szDeviceTypeValues_Displacement equ 3
+%else
+g_szDeviceTypeValues_Displacement equ 4
+%endif
 ;
 ; Ensure that device type strings are correctly spaced in memory
@@ -601,38 +608,38 @@
 
 ;; translated usage stats
+;; 181:1
+;; 48:2
+;; 172:2
+;; 50:2
+;; 171:2
+;; 45:2
+;; 51:3
+;; 200:1
+;; 34:3
+;; 179:8
+;; 33:1
+;; 53:2
+;; 47:2
 ;; 54:2
-;; 172:2
-;; 171:2
-;; 47:2
-;; 53:2
+;; 46:3
+;; 32:34
+;; 56:9
 ;; 175:1
-;; 56:9
-;; 45:2
-;; 50:2
-;; 200:1
-;; 33:1
-;; 51:3
-;; 179:8
-;; 46:3
-;; 48:2
-;; 34:3
 ;; 49:2
-;; 181:1
 ;; 44:1
-;; 32:34
 ;; total translated: 20
 
 ;; format usage stats
+;; 5-x:1
+;; s:14
+;; z:2
+;; u:6
+;; 2-u:1
+;; nl:12
+;; 2-I:1
+;; c:13
 ;; 5-u:2
-;; z:2
-;; nl:12
 ;; x:5
 ;; A:4
-;; 2-u:1
-;; s:14
-;; 2-I:1
-;; 5-x:1
-;; u:6
-;; c:13
 ;; total format: 11
 
Index: trunk/XTIDE_Universal_BIOS/makefile
===================================================================
--- trunk/XTIDE_Universal_BIOS/makefile	(revision 602)
+++ trunk/XTIDE_Universal_BIOS/makefile	(revision 603)
@@ -127,5 +127,5 @@
 ###################
 
-# Target size of the BIOS, used in main.asm for number of 512B blocks (CNT_ROM_BLOCKS) and by checksum Perl script below ('make checksum').
+# Target size of the BIOS, used in Main.asm for number of 512B blocks (CNT_ROM_BLOCKS) and by checksum Perl script below ('make checksum').
 # Note! The size must be a multiple of 2 KB for compatibility reasons.
 BIOS_SIZE_TINY = 4096
Index: trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/Menuitem.asm
===================================================================
--- trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/Menuitem.asm	(revision 602)
+++ trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/Menuitem.asm	(revision 603)
@@ -226,5 +226,5 @@
 	mov		bx, [si+MENUITEM.itemValue+ITEM_VALUE.rgwChoiceToValueLookup]
 	test	bx, bx
-	jz		.StoreByteOrWordValueFromAXtoESDIwithItemInDSSI
+	jz		SHORT .StoreByteOrWordValueFromAXtoESDIwithItemInDSSI
 
 	eSHL_IM	ax, 1			; Shift for WORD lookup
