@---------------------------------------------------------------------------------
	.section ".init"
@---------------------------------------------------------------------------------
	.align	4
	.arm
	.global _io_dlmi
	.global _start
@---------------------------------------------------------------------------------
.equ FEATURE_MEDIA,	0x00000001	@ is a media adapter
.equ FEATURE_RAMRW,	0x00000002	@ has writable ram
.equ FEATURE_RAMRO,	0x00000004	@ ram can be set to read-only
.equ FEATURE_FLASHRW,	0x00000008	@ has writable firmware
.equ FEATURE_FLASHRO,	0x00000010	@ flash can be set to read-only 
.equ FEATURE_SRAM,	0x00000020	@ has SRAM
.equ FEATURE_RUMBLE,	0x00000040	@ has rumble motor
.equ FEATURE_MOTION,	0x00000080	@ has motion sensor(s)
.equ FEATURE_BOOT,	0x00000100	@ can be booted
.equ FEATURE_SERIAL,	0x00000200	@ has serial port

_dlmi_start:

@-- 0x0000 - 0x0007 --------------------------------------------------------------
@ Driver file standard header -- 8 bytes
	.word	0x494D4C44		@ Magic number to identify this region
	.word	0x00010000		@ Version number

@-- 0x0008 - 0x001F --------------------------------------------------------------
@ Text identifier - can be anything up to 23 chars + terminating null
	.asciz "Default (No Device)"

@-- 0x0020 - 0x003F --------------------------------------------------------------
@ Card Identifiers - upto 8 cards
	.align  5
	.word	0x00000000

@-- 0x0040 - 0x004F --------------------------------------------------------------
@ DLMI Data
	.align  6

_dlmi_data:
	.word	0x00000000			@ Features
	.word	0x00000000			@ RAM Base
	.word	0x00000000			@ RAM Size
	.word	0x00000000			@ Flash Base
	.word	0x00000000			@ Flash Size
	.word	0x00000000			@ SRAM Base
	.word	0x00000000			@ SRAM Size

@-- 0x0050 - 0x005F --------------------------------------------------------------
@ DLMI Pointers -- 
	.align 4

	.word	_Return_Error	@ Unlock Media
	.word	_Return_Error	@ Unlock RAM R/W
	.word	_Return_Error	@ Unlock RAM R/O

	.word	_Return_Error	@ Flash Write
	.word	_Return_Error	@ Flash Read
	.word	_Return_Error	@ SRAM Unlock

	.word	_Return_Error	@ Rumble
	.word	_Return_Error	@ Motion
	.word	_Return_Error	@ Boot

	.word	_Return_Error	@ Serial Write
	.word	_Return_Error	@ Serial Read

_Return_Error:
	mov		r0, #0			@ Return -1 on error
	sub		r0, r0, #1
	bx		lr

@---------------------------------------------------------------------------------
	.align
	.pool
_dlmi_end:
_start:
	.end
@---------------------------------------------------------------------------------

