Index: trunk/XTIDE_Universal_BIOS/Inc/Controllers/ADP50L.inc
===================================================================
--- trunk/XTIDE_Universal_BIOS/Inc/Controllers/ADP50L.inc	(revision 536)
+++ trunk/XTIDE_Universal_BIOS/Inc/Controllers/ADP50L.inc	(revision 536)
@@ -0,0 +1,50 @@
+; Project name	:	XTIDE Universal BIOS
+; Description	:	Silicon Valley Computer ADP50L specifications.
+
+;
+; XTIDE Universal BIOS and Associated Tools
+; Copyright (C) 2009-2010 by Tomi Tilli, 2011-2013 by XTIDE Universal BIOS Team.
+;
+; This program is free software; you can redistribute it and/or modify
+; it under the terms of the GNU General Public License as published by
+; the Free Software Foundation; either version 2 of the License, or
+; (at your option) any later version.
+;
+; This program is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+; GNU General Public License for more details.
+; Visit http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+;
+
+%ifndef ADP50L_INC
+%define ADP50L_INC
+
+; | BIOS Segment --------- | Unknown - | ROM Chip ---------- |
+;	Jumper:		J1	J2	J3	J4	J5	J6	J7
+;	Disabled	N/A	N/A	OFF	OFF	OFF	OFF	OFF	= 2764 / 27C64 *
+;	C800h *		OFF	OFF	ON				ON	= 27256 / 27C256
+;	CA00h		ON	OFF	ON
+;	CC00h		OFF	ON	ON
+;	CE00h		ON	ON	ON
+;
+; * Defaults
+; Unknown = "Factory configured - do not alter"
+; Bits 11...9 of the segment address corresponds to jumpers J3...J1.
+
+ADP50L_BIOS_SEGMENT_ADDRESS_1		EQU		0C800h	; Default
+ADP50L_BIOS_SEGMENT_ADDRESS_2		EQU		0CA00h
+ADP50L_BIOS_SEGMENT_ADDRESS_3		EQU		0CC00h
+ADP50L_BIOS_SEGMENT_ADDRESS_4		EQU		0CE00h
+ADP50L_DEFAULT_BIOS_SEGMENT_ADDRESS	EQU		ADP50L_BIOS_SEGMENT_ADDRESS_1
+
+; Offsets from BIOS segment address
+ADP50L_COMMAND_BLOCK_REGISTER_WINDOW_OFFSET	EQU	1D00h
+ADP50L_CONTROL_BLOCK_REGISTER_WINDOW_OFFSET	EQU	1D10h	; The low byte is (8 SHL 1)
+ADP50L_SECTOR_ACCESS_WINDOW_OFFSET			EQU	1E00h	; 512 byte IDE Sector Access Window
+
+; All IDE register offsets are SHL 1 compared to the standard offsets.
+; Example 1: STATUS_REGISTER_in = ADP50L_COMMAND_BLOCK_REGISTER_WINDOW_OFFSET + (STATUS_REGISTER_in << 1)
+; Example 2: DEVICE_CONTROL_REGISTER_out = ADP50L_CONTROL_BLOCK_REGISTER_WINDOW_OFFSET + (DEVICE_CONTROL_REGISTER_out << 1)
+
+%endif ; ADP50L_INC
Index: trunk/XTIDE_Universal_BIOS/Inc/CustomDPT.inc
===================================================================
--- trunk/XTIDE_Universal_BIOS/Inc/CustomDPT.inc	(revision 535)
+++ trunk/XTIDE_Universal_BIOS/Inc/CustomDPT.inc	(revision 536)
@@ -30,5 +30,5 @@
 	.bIdevarsOffset			resb	1	; Offset to IDEVARS for this drive
 	.bInitError				resb	1	; Flags for AH=09h initialization errors
-	.wBasePort				resb	2	; Segment for JR-IDE/ISA
+	.wBasePort				resb	2	; Segment for JR-IDE/ISA and ADP50L
 
 	; CHS variables
Index: trunk/XTIDE_Universal_BIOS/Inc/EBIOS.inc
===================================================================
--- trunk/XTIDE_Universal_BIOS/Inc/EBIOS.inc	(revision 535)
+++ trunk/XTIDE_Universal_BIOS/Inc/EBIOS.inc	(revision 536)
@@ -74,9 +74,9 @@
 
 ; Flags for DPTE.wFlags
-FLG_FAST_PIO_ENABLED		EQU	(1<<0)	; Set is using PIO mode 1 or above (DPTE.bPioMode is valid when set)
+FLG_FAST_PIO_ENABLED		EQU	(1<<0)	; Set if using PIO mode 1 or above (DPTE.bPioMode is valid when set)
 FLG_DMA_ENABLED				EQU	(1<<1)	; Set if DMA enabled (DPTE.bDmaChannelAndType is valid when set)
 FLG_BLOCK_MODE_ENABLED		EQU	(1<<2)	; Set if Block Mode transfers are enabled (DPTE.bBlockSize is valid when set)
 FLG_CHS_TRANSLATION_ENABLED	EQU	(1<<3)	; Set for drives with more than 1024 cylinders
-FLG_LBA_TRANSLATION_ENABLED	EQU	(1<<4)	; Set when LBA addersses from DAP are passed directly to the drive
+FLG_LBA_TRANSLATION_ENABLED	EQU	(1<<4)	; Set when LBA addresses from DAP are passed directly to the drive
 FLG_REMOVABLE_MEDIA			EQU	(1<<5)
 FLG_ATAPI_DEVICE			EQU	(1<<6)
Index: trunk/XTIDE_Universal_BIOS/Inc/ModuleDependency.inc
===================================================================
--- trunk/XTIDE_Universal_BIOS/Inc/ModuleDependency.inc	(revision 535)
+++ trunk/XTIDE_Universal_BIOS/Inc/ModuleDependency.inc	(revision 536)
@@ -38,4 +38,5 @@
 	%include "XTCF.inc"				; For Lo-tech XT-CF
 	%include "JRIDE_ISA.inc"		; For JR-IDE/ISA
+	%include "ADP50L.inc"			; For SVC ADP50L
 %endif
 
Index: trunk/XTIDE_Universal_BIOS/Inc/RomVars.inc
===================================================================
--- trunk/XTIDE_Universal_BIOS/Inc/RomVars.inc	(revision 535)
+++ trunk/XTIDE_Universal_BIOS/Inc/RomVars.inc	(revision 536)
@@ -122,5 +122,6 @@
 STANDARD_CONTROL_BLOCK_OFFSET			EQU		200h
 XTIDE_CONTROL_BLOCK_OFFSET				EQU		8h
-XTCF_CONTROL_BLOCK_OFFSET				EQU		(XTIDE_CONTROL_BLOCK_OFFSET << 1)
+XTCF_CONTROL_BLOCK_OFFSET				EQU		10h
+ADP50L_CONTROL_BLOCK_OFFSET				EQU		10h
 
 ; Default values for Port and PortCtrl, shared with the configurator
@@ -146,5 +147,5 @@
 ;
 COUNT_OF_STANDARD_IDE_DEVICES			EQU	2	; 16- and 32-bit controllers
-COUNT_OF_8BIT_IDE_DEVICES				EQU	7
+COUNT_OF_8BIT_IDE_DEVICES				EQU	8
 COUNT_OF_ALL_IDE_DEVICES				EQU	(COUNT_OF_8BIT_IDE_DEVICES + COUNT_OF_STANDARD_IDE_DEVICES)
 ; Standard port mapped I/O
@@ -161,4 +162,5 @@
 ; Memory Mapped I/O
 DEVICE_8BIT_JRIDE_ISA					EQU	((COUNT_OF_STANDARD_IDE_DEVICES+6)<<1)	; JR-IDE/ISA (Memory Mapped I/O)
+DEVICE_8BIT_ADP50L						EQU	((COUNT_OF_STANDARD_IDE_DEVICES+7)<<1)	; SVC ADP50L (Memory Mapped I/O)
 ; Virtual devices
 DEVICE_SERIAL_PORT						EQU	(COUNT_OF_ALL_IDE_DEVICES<<1)
Index: trunk/XTIDE_Universal_BIOS/Src/Device/IDE/IdeCommand.asm
===================================================================
--- trunk/XTIDE_Universal_BIOS/Src/Device/IDE/IdeCommand.asm	(revision 535)
+++ trunk/XTIDE_Universal_BIOS/Src/Device/IDE/IdeCommand.asm	(revision 536)
@@ -175,5 +175,5 @@
 %ifdef MODULE_8BIT_IDE_ADVANCED
 	cmp		BYTE [di+DPT_ATA.bDevice], DEVICE_8BIT_XTCF_MEMMAP
-	jae		SHORT JrIdeTransfer_StartWithCommandInAL	; DEVICE_8BIT_XTCF_MEMMAP or DEVICE_8BIT_JRIDE_ISA
+	jae		SHORT JrIdeTransfer_StartWithCommandInAL	; DEVICE_8BIT_XTCF_MEMMAP, DEVICE_8BIT_JRIDE_ISA or DEVICE_8BIT_ADP50L
 %endif
 	jmp		IdeTransfer_StartWithCommandInAL
Index: trunk/XTIDE_Universal_BIOS/Src/Device/IDE/IdeIO.asm
===================================================================
--- trunk/XTIDE_Universal_BIOS/Src/Device/IDE/IdeIO.asm	(revision 535)
+++ trunk/XTIDE_Universal_BIOS/Src/Device/IDE/IdeIO.asm	(revision 536)
@@ -61,12 +61,16 @@
 	je		SHORT .ReverseA0andA3fromRegisterIndexInDX
 
+	eSHL_IM	dx, 1	; ADP50L and XT-CF
 	cmp		al, DEVICE_8BIT_JRIDE_ISA
-	jne		SHORT .ShlRegisterIndexInDX			; All XT-CF modes
-	; Fall to .InputToALfromMemoryMappedRegisterInDX
-
-.InputToALfromMemoryMappedRegisterInDX:
+	jb		SHORT .InputToALfromRegisterInDX	; All XT-CF modes
+	mov		bh, JRIDE_COMMAND_BLOCK_REGISTER_WINDOW_OFFSET >> 8
+	je		SHORT .InputToALfromMemoryMappedRegisterInBX
+	mov		bl, dl
+	mov		bh,	ADP50L_COMMAND_BLOCK_REGISTER_WINDOW_OFFSET >> 8
+
+.InputToALfromMemoryMappedRegisterInBX:
 	push	ds
-	mov		ds, [di+DPT.wBasePort]	; Segment for JR-IDE/ISA
-	mov		al, [bx+JRIDE_COMMAND_BLOCK_REGISTER_WINDOW_OFFSET]
+	mov		ds, [di+DPT.wBasePort]	; Segment for JR-IDE/ISA and ADP50L
+	mov		al, [bx]
 	pop		ds
 	ret
@@ -75,9 +79,4 @@
 .ReverseA0andA3fromRegisterIndexInDX:
 	mov		dl, [cs:bx+g_rgbSwapA0andA3fromIdeRegisterIndex]
-	SKIP2B	bx	; Skip shl dx, 1
-
-.ShlRegisterIndexInDX:
-	eSHL_IM	dx, 1
-	; Fall to .InputToALfromRegisterInDX
 
 .InputToALfromRegisterInDX:
@@ -108,11 +107,17 @@
 	je		SHORT .ReverseA0andA3fromRegisterIndexInDX
 
+	; At this point remaining controllers (JRIDE, XTCF and ADP50L) all have a control
+	; block offset of 8 or (8<<1) so we add 8 here and do the SHL 1 later if needed.
+	add		dx, 8
 	cmp		bl, DEVICE_8BIT_JRIDE_ISA
-	jne		SHORT .ShlRegisterIndexInDX		; All XT-CF modes
-	; Fall to .OutputALtoMemoryMappedRegisterInDX
-
-.OutputALtoMemoryMappedRegisterInDX:
-	mov		bx, JRIDE_CONTROL_BLOCK_REGISTER_WINDOW_OFFSET
-	jmp 	SHORT IdeIO_OutputALtoIdeRegisterInDL.OutputALtoMemoryMappedRegisterInDXwithWindowOffsetInBX
+	jb		SHORT IdeIO_OutputALtoIdeRegisterInDL.ShlRegisterIndexInDXandOutputAL	; All XT-CF modes
+	mov		bx, JRIDE_CONTROL_BLOCK_REGISTER_WINDOW_OFFSET - 8			; Zeroes BL. -8 compensates for the ADD
+	je		SHORT IdeIO_OutputALtoIdeRegisterInDL.OutputALtoMemoryMappedRegisterInDXwithWindowOffsetInBX
+	; The commented instructions below shows what happens next (saved for clarity) but as an optimization
+	; we can accomplish the same thing with this jump.
+	jmp		SHORT IdeIO_OutputALtoIdeRegisterInDL.ShlDXandMovHighByteOfADP50LoffsetsToBH
+;	eSHL_IM	dx, 1
+;	mov		bh, (ADP50L_CONTROL_BLOCK_REGISTER_WINDOW_OFFSET - 16) >> 8	; -16 compensates for the ADD and SHL
+;	jmp 	SHORT IdeIO_OutputALtoIdeRegisterInDL.OutputALtoMemoryMappedRegisterInDXwithWindowOffsetInBX
 %endif
 
@@ -122,17 +127,15 @@
 	; a small trick since we only access Device Control Register at
 	; offset 6h: Always clear A3 and set A0.
+	mov		bh, dh	; Zero BH
 	add		dx, [cs:bx+IDEVARS.wControlBlockPort]
 	xor		dl, 1001b						; Clear A3, Set A0
-	jmp		SHORT OutputALtoPortInDX
-
-.ShlRegisterIndexInDX:
-	eSHL_IM	dx, 1
-	add		dx, BYTE XTCF_CONTROL_BLOCK_OFFSET
-	jmp		SHORT OutputALtoRegisterInDX
+	out		dx, al
+	ret
 
 .OutputALtoControlBlockRegisterInDX:
-	call	AccessDPT_GetIdevarsToCSBX
+	call	AccessDPT_GetIdevarsToCSBX		; *FIXME* Why is this call here but not in the above block?
 	add		dx, [cs:bx+IDEVARS.wControlBlockPort]
-	jmp		SHORT OutputALtoPortInDX
+	out		dx, al
+	ret
 
 
@@ -160,13 +163,15 @@
 
 	cmp		bl, DEVICE_8BIT_JRIDE_ISA
-	jne		SHORT .ShlRegisterIndexInDX		; All XT-CF modes
-	; Fall to .OutputALtoMemoryMappedRegisterInDX
-
-.OutputALtoMemoryMappedRegisterInDX:
-	mov		bx, JRIDE_COMMAND_BLOCK_REGISTER_WINDOW_OFFSET
+	jb		SHORT .ShlRegisterIndexInDXandOutputAL	; All XT-CF modes
+	mov		bx, JRIDE_COMMAND_BLOCK_REGISTER_WINDOW_OFFSET	; Zeroes BL
+	je		SHORT .OutputALtoMemoryMappedRegisterInDXwithWindowOffsetInBX
+.ShlDXandMovHighByteOfADP50LoffsetsToBH:
+	eSHL_IM	dx, 1
+	mov		bh, ADP50L_COMMAND_BLOCK_REGISTER_WINDOW_OFFSET >> 8	; BL is zero so we only need to change BH
+
 .OutputALtoMemoryMappedRegisterInDXwithWindowOffsetInBX:
 	add		bx, dx
 	push	ds
-	mov		ds, [di+DPT.wBasePort]	; Segment for JR-IDE/ISA
+	mov		ds, [di+DPT.wBasePort]	; Segment for JR-IDE/ISA and ADP50L
 	mov		[bx], al
 	pop		ds
@@ -177,7 +182,7 @@
 	mov		bx, dx
 	mov		dl, [cs:bx+g_rgbSwapA0andA3fromIdeRegisterIndex]
-	SKIP2B	bx	; Skip shl dx, 1
-
-.ShlRegisterIndexInDX:
+	SKIP2B	bx	; Skip eSHL_IM dx, 1
+
+.ShlRegisterIndexInDXandOutputAL:
 	eSHL_IM	dx, 1
 	; Fall to OutputALtoRegisterInDX
@@ -186,5 +191,4 @@
 OutputALtoRegisterInDX:
 	add		dx, [di+DPT.wBasePort]
-OutputALtoPortInDX:
 	out		dx, al
 	ret
Index: trunk/XTIDE_Universal_BIOS/Src/Device/IDE/JrIdeTransfer.asm
===================================================================
--- trunk/XTIDE_Universal_BIOS/Src/Device/IDE/JrIdeTransfer.asm	(revision 535)
+++ trunk/XTIDE_Universal_BIOS/Src/Device/IDE/JrIdeTransfer.asm	(revision 536)
@@ -27,6 +27,4 @@
 	.bSectorsDone			resb	1	; 8, Number of sectors xferred
 endstruc
-
-SECTOR_ACCESS_WINDOW_SIZE	EQU		512	; 512 bytes
 
 
@@ -68,9 +66,11 @@
 	mov		dx, [di+DPT.wBasePort]
 	cmp		BYTE [di+DPT_ATA.bDevice], DEVICE_8BIT_JRIDE_ISA
-	jne		SHORT .GetSectorAccessWindowForXTCF
-
-	; Get Sector Access Window for JR-IDE/ISA
+	jb		SHORT .GetSectorAccessWindowForXTCF
+
+	; Get Sector Access Window for JR-IDE/ISA and ADP50L
+	mov		ds, dx		; Segment for JR-IDE/ISA and ADP50L
 	mov		di, JRIDE_SECTOR_ACCESS_WINDOW_OFFSET
-	mov		ds, dx		; Segment for JR-IDE/ISA
+	je		SHORT .SectorAccessWindowLoadedToDSDI
+	mov		di, ADP50L_SECTOR_ACCESS_WINDOW_OFFSET
 	jmp		SHORT .SectorAccessWindowLoadedToDSDI
 
@@ -231,8 +231,8 @@
 	mov		bx, di
 	mov		dx, cx
-	xor		cl, cl
+	xor		cx, cx
 ALIGN JUMP_ALIGN
 .WriteNextSector:
-	mov		ch, SECTOR_ACCESS_WINDOW_SIZE >> 9
+	inc		ch
 	rep movsw
 	mov		di, bx	; Reset for next sector
@@ -258,8 +258,8 @@
 	mov		bx, si
 	mov		dx, cx
-	xor		cl, cl
+	xor		cx, cx
 ALIGN JUMP_ALIGN
 .ReadNextSector:
-	mov		ch, SECTOR_ACCESS_WINDOW_SIZE >> 9
+	inc		ch
 	rep movsw
 	mov		si, bx	; Reset for next sector
@@ -289,8 +289,2 @@
 	ret
 
-
-%ifndef CHECK_FOR_UNUSED_ENTRYPOINTS
-%if SECTOR_ACCESS_WINDOW_SIZE <> 512
-	%error "SECTOR_ACCESS_WINDOW_SIZE is no longer equal to 512. JrIdeTransfer.asm needs changes."
-%endif
-%endif
Index: trunk/XTIDE_Universal_BIOS/Src/Main.asm
===================================================================
--- trunk/XTIDE_Universal_BIOS/Src/Main.asm	(revision 535)
+++ trunk/XTIDE_Universal_BIOS/Src/Main.asm	(revision 536)
@@ -147,10 +147,8 @@
 	at	ROMVARS.ideVars1+IDEVARS.bXTCFcontrolRegister,	db	XTCF_8BIT_PIO_MODE
 	at	ROMVARS.ideVars1+IDEVARS.bDevice,				db	DEVICE_8BIT_XTCF_PIO8
+%endif
+
 	at	ROMVARS.ideVars1+IDEVARS.drvParamsMaster+DRVPARAMS.wFlags,	db	DISABLE_WRITE_CACHE | FLG_DRVPARAMS_BLOCKMODE | (TRANSLATEMODE_AUTO<<TRANSLATEMODE_FIELD_POSITION)
 	at	ROMVARS.ideVars1+IDEVARS.drvParamsSlave+DRVPARAMS.wFlags,	db	DISABLE_WRITE_CACHE | FLG_DRVPARAMS_BLOCKMODE | (TRANSLATEMODE_AUTO<<TRANSLATEMODE_FIELD_POSITION)
-%else
-	at	ROMVARS.ideVars1+IDEVARS.drvParamsMaster+DRVPARAMS.wFlags,	db	DISABLE_WRITE_CACHE | FLG_DRVPARAMS_BLOCKMODE | (TRANSLATEMODE_AUTO<<TRANSLATEMODE_FIELD_POSITION)
-	at	ROMVARS.ideVars1+IDEVARS.drvParamsSlave+DRVPARAMS.wFlags,	db	DISABLE_WRITE_CACHE | FLG_DRVPARAMS_BLOCKMODE | (TRANSLATEMODE_AUTO<<TRANSLATEMODE_FIELD_POSITION)
-%endif
 
 	at	ROMVARS.ideVars2+IDEVARS.drvParamsMaster+DRVPARAMS.wFlags,	db	DISABLE_WRITE_CACHE | FLG_DRVPARAMS_BLOCKMODE | (TRANSLATEMODE_AUTO<<TRANSLATEMODE_FIELD_POSITION)
Index: trunk/XTIDE_Universal_BIOS/Src/Strings.asm
===================================================================
--- trunk/XTIDE_Universal_BIOS/Src/Strings.asm	(revision 535)
+++ trunk/XTIDE_Universal_BIOS/Src/Strings.asm	(revision 536)
@@ -144,4 +144,5 @@
 g_szDeviceTypeValues_XTCFmem:	db	"M8 ",NULL	; Memory Mapped 8-bit
 g_szDeviceTypeValues_JrIde:		db	"M8 ",NULL
+g_szDeviceTypeValues_ADP50L:	db	"M8 ",NULL
 g_szDeviceTypeValues_Serial:	db	"SER",NULL
 
@@ -178,19 +179,14 @@
 		%error "g_szDeviceTypeValues Displacement Incorrect 8"
 	%endif
-	%if g_szDeviceTypeValues_Serial <> g_szDeviceTypeValues_JrIde + g_szDeviceTypeValues_Displacement
+	%if g_szDeviceTypeValues_ADP50L <> g_szDeviceTypeValues_JrIde + g_szDeviceTypeValues_Displacement
 		%error "g_szDeviceTypeValues Displacement Incorrect 9"
 	%endif
+	%if g_szDeviceTypeValues_Serial <> g_szDeviceTypeValues_ADP50L + g_szDeviceTypeValues_Displacement
+		%error "g_szDeviceTypeValues Displacement Incorrect 10"
+	%endif
 %endif
 
 
 g_szSelectionTimeout:	db	DOUBLE_BOTTOM_LEFT_CORNER,DOUBLE_LEFT_HORIZONTAL_TO_SINGLE_VERTICAL,"%ASelection in %2-u s",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
 
 
@@ -220,4 +216,12 @@
 	%endif
 %endif
+
+
+; 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
 
 %endif ; MODULE_BOOT_MENU
Index: trunk/XTIDE_Universal_BIOS/Src/StringsCompressed.asm
===================================================================
--- trunk/XTIDE_Universal_BIOS/Src/StringsCompressed.asm	(revision 535)
+++ trunk/XTIDE_Universal_BIOS/Src/StringsCompressed.asm	(revision 536)
@@ -289,4 +289,8 @@
                            		  db	 53h,  30h,  00h          ; compressed
 
+g_szDeviceTypeValues_ADP50L:	; db	"M8 ",NULL
+                            	; db	 4dh,  38h,  20h,  00h    ; uncompressed
+                            	  db	 53h,  30h,  00h          ; compressed
+
 g_szDeviceTypeValues_Serial:	; db	"SER",NULL
                             	; db	 53h,  45h,  52h,  00h    ; uncompressed
@@ -326,6 +330,9 @@
 %error "g_szDeviceTypeValues Displacement Incorrect 8"
 %endif
-%if g_szDeviceTypeValues_Serial <> g_szDeviceTypeValues_JrIde + g_szDeviceTypeValues_Displacement
+%if g_szDeviceTypeValues_ADP50L <> g_szDeviceTypeValues_JrIde + g_szDeviceTypeValues_Displacement
 %error "g_szDeviceTypeValues Displacement Incorrect 9"
+%endif
+%if g_szDeviceTypeValues_Serial <> g_szDeviceTypeValues_ADP50L + g_szDeviceTypeValues_Displacement
+%error "g_szDeviceTypeValues Displacement Incorrect 10"
 %endif
 %endif
@@ -335,27 +342,4 @@
                      	; 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	 31h,  32h,  3bh,  59h,  6bh,  72h,  6bh,  69h,  7ah,  6fh,  75h, 0f4h,  6fh, 0f4h,  3ah,  20h, 0b9h                                              ; 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,  1dh                            ; 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	 36h,  29h,  35h,  20h,  3ch,  6fh,  88h                                        ; compressed
-
-g_szInformation:		; db	"%s",LF,CR
-                		; db	 25h,  73h,  0ah,  0dh    ; uncompressed
-                		  db	 3dh,  39h                ; compressed
-
-	; db	"Addr. ",SINGLE_VERTICAL,"Block",SINGLE_VERTICAL,"Bus",SINGLE_VERTICAL,"IRQ",SINGLE_VERTICAL,"Reset",LF,CR
-	; db	 41h,  64h,  64h,  72h,  2eh,  20h, 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,  20h,  23h,  48h,  72h,  75h,  69h,  71h,  23h,  48h,  7bh,  79h,  23h,  4fh,  58h,  57h,  23h,  58h,  6bh,  79h,  6bh,  7ah,  39h          ; 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	 3dh,  23h,  36h,  23h,  3dh,  23h,  20h,  34h,  23h,  18h                                                                            ; compressed
 
 
@@ -404,4 +388,27 @@
 %endif
 %endif
+
+
+; 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,  1dh                            ; 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	 36h,  29h,  35h,  20h,  3ch,  6fh,  88h                                        ; compressed
+
+g_szInformation:		; db	"%s",LF,CR
+                		; db	 25h,  73h,  0ah,  0dh    ; uncompressed
+                		  db	 3dh,  39h                ; compressed
+
+	; db	"Addr. ",SINGLE_VERTICAL,"Block",SINGLE_VERTICAL,"Bus",SINGLE_VERTICAL,"IRQ",SINGLE_VERTICAL,"Reset",LF,CR
+	; db	 41h,  64h,  64h,  72h,  2eh,  20h, 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,  20h,  23h,  48h,  72h,  75h,  69h,  71h,  23h,  48h,  7bh,  79h,  23h,  4fh,  58h,  57h,  23h,  58h,  6bh,  79h,  6bh,  7ah,  39h          ; 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	 3dh,  23h,  36h,  23h,  3dh,  23h,  20h,  34h,  23h,  18h                                                                            ; compressed
+
 
 %endif ; MODULE_BOOT_MENU
@@ -554,5 +561,5 @@
 ;; translated usage stats
 ;; 33:1
-;; 32:34
+;; 32:35
 ;; 181:1
 ;; 53:2
@@ -568,5 +575,5 @@
 ;; 34:3
 ;; 49:1
-;; 56:7
+;; 56:8
 ;; 45:2
 ;; 175:1
@@ -609,5 +616,5 @@
 ;; 75,K:1
 ;; 76,L:4
-;; 77,M:7
+;; 77,M:8
 ;; 78,N:2
 ;; 79,O:2
