Index: trunk/XTIDE_Universal_BIOS/Src/Initialization/AtaID.asm
===================================================================
--- trunk/XTIDE_Universal_BIOS/Src/Initialization/AtaID.asm	(revision 98)
+++ trunk/XTIDE_Universal_BIOS/Src/Initialization/AtaID.asm	(revision 99)
@@ -1,7 +1,3 @@
-; File name		:	AtaID.asm
-; Project name	:	IDE BIOS
-; Created date	:	6.4.2010
-; Last update	:	9.4.2010
-; Author		:	Tomi Tilli
+; Project name	:	XTIDE Universal BIOS
 ; Description	:	Functions for accessing ATA information read with
 ;					IDENTIFY DEVICE command.
@@ -11,6 +7,4 @@
 
 ;--------------------------------------------------------------------
-; Returns P-CHS values from ATA information.
-;
 ; AtaID_GetPCHS
 ;	Parameters:
@@ -18,20 +12,17 @@
 ;	Returns:
 ;		AX:		Number of user specified P-CHS cylinders
-;		BL:		Number of user specified P-CHS sectors per track
-;		BH:		Number of user specified P-CHS heads
+;		BH:		Number of user specified P-CHS sectors per track
+;		BL:		Number of user specified P-CHS heads
 ;	Corrupts registers:
 ;		Nothing
 ;--------------------------------------------------------------------
-ALIGN JUMP_ALIGN
 AtaID_GetPCHS:
 	mov		ax, [es:si+ATA1.wCylCnt]	; Cylinders (1...16383)
-	mov		bh, [es:si+ATA1.wHeadCnt]	; Heads (1...16)
-	mov		bl, [es:si+ATA1.wSPT]		; Sectors per Track (1...63)
+	mov		bl, [es:si+ATA1.wHeadCnt]	; Heads (1...16)
+	mov		bh, [es:si+ATA1.wSPT]		; Sectors per Track (1...63)
 	ret
 
 
 ;--------------------------------------------------------------------
-; Returns total number of available sectors from ATA information.
-;
 ; AtaID_GetTotalSectorCount
 ;	Parameters:
@@ -42,18 +33,19 @@
 ;		Nothing
 ;--------------------------------------------------------------------
-ALIGN JUMP_ALIGN
 AtaID_GetTotalSectorCount:
+	push	ds
+
+	push	es
+	pop		ds
 	xor		bx, bx
-	test	WORD [es:si+ATA1.wCaps], A1_wCaps_LBA
-	jz		SHORT AtaID_GetChsSectorCount
-	; Fall to AtaID_GetLbaSectorCount
+	test	WORD [si+ATA1.wCaps], A1_wCaps_LBA
+	jz		SHORT .GetChsSectorCount
+	; Fall to .GetLbaSectorCount
 
 ;--------------------------------------------------------------------
-; Returns total number of available sectors for LBA addressing.
-;
-; AtaID_GetLbaSectorCount
+; .GetLbaSectorCount
 ;	Parameters:
 ;		BX:		Zero
-;		ES:SI:	Ptr to 512-byte ATA information read from the drive
+;		DS:SI:	Ptr to 512-byte ATA information read from the drive
 ;	Returns:
 ;		BX:DX:AX:	48-bit sector count
@@ -61,24 +53,22 @@
 ;		Nothing
 ;--------------------------------------------------------------------
-;ALIGN JUMP_ALIGN
-AtaID_GetLbaSectorCount:
-	test	WORD [es:si+ATA6.wSetSup83], A6_wSetSup83_LBA48
+.GetLbaSectorCount:
+	test	WORD [si+ATA6.wSetSup83], A6_wSetSup83_LBA48
 	jz		SHORT .GetLba28SectorCount
-	mov		ax, [es:si+ATA6.qwLBACnt]
-	mov		dx, [es:si+ATA6.qwLBACnt+2]
-	mov		bx, [es:si+ATA6.qwLBACnt+4]
+	mov		ax, [si+ATA6.qwLBACnt]
+	mov		dx, [si+ATA6.qwLBACnt+2]
+	mov		bx, [si+ATA6.qwLBACnt+4]
+	pop		ds
 	ret
-ALIGN JUMP_ALIGN
 .GetLba28SectorCount:
-	mov		ax, [es:si+ATA1.dwLBACnt]
-	mov		dx, [es:si+ATA1.dwLBACnt+2]
+	mov		ax, [si+ATA1.dwLBACnt]
+	mov		dx, [si+ATA1.dwLBACnt+2]
+	pop		ds
 	ret
 
 ;--------------------------------------------------------------------
-; Returns total number of available sectors for P-CHS addressing.
-;
-; AtaID_GetChsSectorCount
+; .GetChsSectorCount
 ;	Parameters:
-;		ES:SI:	Ptr to 512-byte ATA information read from the drive
+;		DS:SI:	Ptr to 512-byte ATA information read from the drive
 ;	Returns:
 ;		DX:AX:	24-bit sector count
@@ -86,8 +76,8 @@
 ;		Nothing
 ;--------------------------------------------------------------------
-ALIGN JUMP_ALIGN
-AtaID_GetChsSectorCount:
-	mov		al, [es:si+ATA1.wSPT]		; AL=Sectors per track
-	mul		BYTE [es:si+ATA1.wHeadCnt]	; AX=Sectors per track * number of heads
-	mul		WORD [es:si+ATA1.wCylCnt]	; DX:AX=Sectors per track * number of heads * number of cylinders
+.GetChsSectorCount:
+	mov		al, [si+ATA1.wSPT]		; AL=Sectors per track
+	mul		BYTE [si+ATA1.wHeadCnt]	; AX=Sectors per track * number of heads
+	mul		WORD [si+ATA1.wCylCnt]	; DX:AX=Sectors per track * number of heads * number of cylinders
+	pop		ds
 	ret
Index: trunk/XTIDE_Universal_BIOS/Src/Initialization/DriveXlate.asm
===================================================================
--- trunk/XTIDE_Universal_BIOS/Src/Initialization/DriveXlate.asm	(revision 98)
+++ trunk/XTIDE_Universal_BIOS/Src/Initialization/DriveXlate.asm	(revision 99)
@@ -1,7 +1,3 @@
-; File name		:	DriveXlate.asm
-; Project name	:	IDE BIOS
-; Created date	:	15.3.2010
-; Last update	:	24.8.2010
-; Author		:	Tomi Tilli
+; Project name	:	XTIDE Universal BIOS
 ; Description	:	Functions for swapping drive letters.
 
@@ -100,46 +96,39 @@
 DriveXlate_SwapFloppyDriveOrHardDisk:
 	test	dl, 80h							; Hard disk?
-	jnz		SHORT DriveXlate_SwapHardDisk	; If so, jump to swap
-	; Fall to DriveXlate_SwapFloppyDrive
-
-;--------------------------------------------------------------------
-; Swaps Floppy Drive number.
-;
-; DriveXlate_SwapFloppyDrive
-;	Parameters:
-;		DL:		Drive number to be possibly swapped
-;		DS:		RAMVARS segment
-;	Returns:
-;		DL:		Translated drive number
-;	Corrupts registers:
-;		AX
-;--------------------------------------------------------------------
-;ALIGN JUMP_ALIGN
-DriveXlate_SwapFloppyDrive:
+	jnz		SHORT .SwapHardDisk	; If so, jump to swap
+	; Fall to .SwapFloppyDrive
+
+;--------------------------------------------------------------------
+; .SwapFloppyDrive
+;	Parameters:
+;		DL:		Drive number to be possibly swapped
+;		DS:		RAMVARS segment
+;	Returns:
+;		DL:		Translated drive number
+;	Corrupts registers:
+;		AX
+;--------------------------------------------------------------------
+.SwapFloppyDrive:
 	eMOVZX	ax, BYTE [RAMVARS.xlateVars+XLATEVARS.bFDSwap]
-	jmp		SHORT DriveXlate_SwapDrive
-
-;--------------------------------------------------------------------
-; Swaps Hard Disk number.
-;
-; DriveXlate_SwapHardDisk
-;	Parameters:
-;		DL:		Drive number to be possibly swapped
-;		DS:		RAMVARS segment
-;	Returns:
-;		DL:		Translated drive number
-;	Corrupts registers:
-;		AX
-;--------------------------------------------------------------------
-ALIGN JUMP_ALIGN
-DriveXlate_SwapHardDisk:
+	jmp		SHORT SwapDrive
+
+;--------------------------------------------------------------------
+; .SwapHardDisk
+;	Parameters:
+;		DL:		Drive number to be possibly swapped
+;		DS:		RAMVARS segment
+;	Returns:
+;		DL:		Translated drive number
+;	Corrupts registers:
+;		AX
+;--------------------------------------------------------------------
+ALIGN JUMP_ALIGN
+.SwapHardDisk:
 	mov		ah, 80h
 	mov		al, BYTE [RAMVARS.xlateVars+XLATEVARS.bHDSwap]
-	; Fall to DriveXlate_SwapDrive
-
-;--------------------------------------------------------------------
-; Swaps Hard Disk or Floppy Drive number.
-;
-; DriveXlate_SwapDrive
+	; Fall to SwapDrive
+
+;--------------------------------------------------------------------
+; SwapDrive
 ;	Parameters:
 ;		AL:		Drive number to swap to 00h/80h
@@ -151,6 +140,5 @@
 ;		Nothing
 ;--------------------------------------------------------------------
-;ALIGN JUMP_ALIGN
-DriveXlate_SwapDrive:
+SwapDrive:
 	cmp		ah, dl				; Swap DL from 00h/80h to xxh?
 	je		SHORT .SwapToXXhInAL
@@ -201,38 +189,10 @@
 DriveXlate_SetDriveToSwap:
 	test	dl, 80h				; Floppy drive?
-	jnz		SHORT DriveXlate_SetHardDiskToSwap
-	; Fall to DriveXlate_SetFloppyDriveToSwap
-
-;--------------------------------------------------------------------
-; Stores floppy drive to be swapped.
-;
-; DriveXlate_SetFloppyDriveToSwap
-;	Parameters:
-;		DL:		Drive to swap to 00h
-;		DS:		RAMVARS segment
-;	Returns:
-;		Nothing
-;	Corrupts registers:
-;		Nothing
-;--------------------------------------------------------------------	
-ALIGN JUMP_ALIGN
-DriveXlate_SetFloppyDriveToSwap:
+	jnz		SHORT .SetHardDiskToSwap
+.SetFloppyDriveToSwap:
 	mov		[RAMVARS.xlateVars+XLATEVARS.bFDSwap], dl
 	ret
-
-;--------------------------------------------------------------------
-; Stores hard disk to be swapped.
-;
-; DriveXlate_SetHardDiskToSwap
-;	Parameters:
-;		DL:		Drive to swap to 80h
-;		DS:		RAMVARS segment
-;	Returns:
-;		Nothing
-;	Corrupts registers:
-;		Nothing
-;--------------------------------------------------------------------	
-ALIGN JUMP_ALIGN
-DriveXlate_SetHardDiskToSwap:
+ALIGN JUMP_ALIGN
+.SetHardDiskToSwap:
 	mov		[RAMVARS.xlateVars+XLATEVARS.bHDSwap], dl
 	ret
Index: trunk/XTIDE_Universal_BIOS/Src/Initialization/FloppyDrive.asm
===================================================================
--- trunk/XTIDE_Universal_BIOS/Src/Initialization/FloppyDrive.asm	(revision 98)
+++ trunk/XTIDE_Universal_BIOS/Src/Initialization/FloppyDrive.asm	(revision 99)
@@ -18,9 +18,12 @@
 ;		BX, CX, DI
 ;--------------------------------------------------------------------
-;ALIGN JUMP_ALIGN
 FloppyDrive_IsInt40hInstalled:
 	cmp		WORD [es:INTV_FLOPPY_FUNC*4+2], 0C000h	; Any ROM segment?
 	jb		SHORT .Int40hHandlerIsNotInstalled
+%ifdef USE_AT
 	call	.VerifyInt40hHandlerSinceSomeBiosesSimplyReturnFromInt40h
+%else
+	clc		; INT 40h installed. No need to verify on XT systems.
+%endif
 .Int40hHandlerIsNotInstalled:
 	cmc
@@ -37,5 +40,5 @@
 ;		BX, CX, DI
 ;--------------------------------------------------------------------
-;ALIGN JUMP_ALIGN
+%ifdef USE_AT
 .VerifyInt40hHandlerSinceSomeBiosesSimplyReturnFromInt40h:
 	push	es
@@ -45,7 +48,7 @@
 	call	.LoadInt40hVerifyParameters
 	int		INTV_DISK_FUNC
-	jc		SHORT .AH08hNotSupported	; AH=08h not supported on XTs but that doesn't
-	push	es							; matter since INT 40h does not need to be verified
-	push	di							; on XTs
+	jc		SHORT .Int40hIsInstalled	; Maybe there are not any floppy drives at all
+	push	es
+	push	di
 
 	call	.LoadInt40hVerifyParameters
@@ -58,8 +61,5 @@
 	mov		dx, es
 	cmp		cx, dx						; Difference in segments?
-	jne		SHORT .Int40hNotInstalled
-.AH08hNotSupported:
-	clc
-	jmp		SHORT .Int40hIsInstalled
+	je		SHORT .Int40hIsInstalled
 .Int40hNotInstalled:
 	stc
@@ -81,5 +81,4 @@
 ;		DH
 ;--------------------------------------------------------------------
-;ALIGN JUMP_ALIGN
 .LoadInt40hVerifyParameters:
 	mov		ah, 08h				; Get Drive Parameters
@@ -88,4 +87,5 @@
 	mov		es, dx				; ES:DI = 0000:0000h to guard against BIOS bugs
 	ret
+%endif
 
 
@@ -133,9 +133,9 @@
 FloppyDrive_GetCount:
 	push	es
+%ifdef USE_AT
 	call	FloppyDrive_GetCountFromBIOS
-	jnc		SHORT .CompareToUserMinimum
+%else
 	call	FloppyDrive_GetCountFromBDA
-ALIGN JUMP_ALIGN
-.CompareToUserMinimum:
+%endif
 	MAX_U	cl, [cs:ROMVARS.bMinFddCnt]
 	xor		ch, ch
@@ -159,4 +159,5 @@
 ;		CH, ES
 ;--------------------------------------------------------------------
+%ifdef USE_AT
 ALIGN JUMP_ALIGN
 FloppyDrive_GetCountFromBIOS:
@@ -176,4 +177,5 @@
 	pop		di
 	ret
+%endif
 
 
@@ -190,4 +192,5 @@
 ;		CH, ES
 ;--------------------------------------------------------------------
+%ifndef USE_AT
 ALIGN JUMP_ALIGN
 FloppyDrive_GetCountFromBDA:
@@ -199,2 +202,3 @@
 	add		cl, ch							; CL = Floppy Drive count
 	ret
+%endif
