
ALMY.elf:     file format elf32-littlearm

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .text         000009f4  00080000  00080000  00008000  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  1 .rodata       00000145  000809f4  000809f4  000089f4  2**1
                  CONTENTS, ALLOC, LOAD, READONLY, DATA
  2 .rodata.str1.4 00000048  00080b3c  00080b3c  00008b3c  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, DATA
  3 .data         00000004  00010000  00080b84  00010000  2**2
                  CONTENTS, ALLOC, LOAD, DATA
  4 .bss          00000260  00010004  00080b88  00010004  2**2
                  ALLOC
  5 .comment      000000de  00000000  00000000  00010004  2**0
                  CONTENTS, READONLY
  6 .debug_aranges 00000100  00000000  00000000  000100e8  2**3
                  CONTENTS, READONLY, DEBUGGING
  7 .debug_pubnames 00000321  00000000  00000000  000101e8  2**0
                  CONTENTS, READONLY, DEBUGGING
  8 .debug_info   00000d78  00000000  00000000  00010509  2**0
                  CONTENTS, READONLY, DEBUGGING
  9 .debug_abbrev 00000661  00000000  00000000  00011281  2**0
                  CONTENTS, READONLY, DEBUGGING
 10 .debug_line   00000497  00000000  00000000  000118e2  2**0
                  CONTENTS, READONLY, DEBUGGING
 11 .debug_frame  0000028c  00000000  00000000  00011d7c  2**2
                  CONTENTS, READONLY, DEBUGGING
 12 .debug_str    00000351  00000000  00000000  00012008  2**0
                  CONTENTS, READONLY, DEBUGGING
 13 .debug_loc    000006c9  00000000  00000000  00012359  2**0
                  CONTENTS, READONLY, DEBUGGING
 14 .ARM.attributes 00000010  00000000  00000000  00012a22  2**0
                  CONTENTS, READONLY
 15 .debug_ranges 00000048  00000000  00000000  00012a32  2**0
                  CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:

00080000 <_startup>:
#  Mapped to Address 0.
#  Absolute addressing mode must be used.
#  Dummy Handlers are implemented as infinite loops which can be modified.

Vectors:        LDR     PC, Reset_Address
   80000:	e59ff018 	ldr	pc, [pc, #24]	; 80020 <Reset_Address>
                LDR     PC, Undef_Addr
   80004:	e59ff018 	ldr	pc, [pc, #24]	; 80024 <Undef_Addr>
                LDR     PC, SWI_Addr
   80008:	e59ff018 	ldr	pc, [pc, #24]	; 80028 <SWI_Addr>
                LDR     PC, PAbt_Addr
   8000c:	e59ff018 	ldr	pc, [pc, #24]	; 8002c <PAbt_Addr>
                LDR     PC, DAbt_Addr
   80010:	e59ff018 	ldr	pc, [pc, #24]	; 80030 <DAbt_Addr>
                NOP                            /* Reserved Vector */
   80014:	e1a00000 	nop			(mov r0,r0)
                LDR     PC, IRQ_Addr
   80018:	e59ff014 	ldr	pc, [pc, #20]	; 80034 <IRQ_Addr>
                LDR     PC, FIQ_Addr
   8001c:	e59ff014 	ldr	pc, [pc, #20]	; 80038 <FIQ_Addr>

00080020 <Reset_Address>:
   80020:	0008003c 	andeq	r0, r8, ip, lsr r0

00080024 <Undef_Addr>:
   80024:	00080188 	andeq	r0, r8, r8, lsl #3

00080028 <SWI_Addr>:
   80028:	00080164 	andeq	r0, r8, r4, ror #2

0008002c <PAbt_Addr>:
   8002c:	000801ac 	andeq	r0, r8, ip, lsr #3

00080030 <DAbt_Addr>:
   80030:	000801d8 	ldreqd	r0, [r8], -r8

00080034 <IRQ_Addr>:
   80034:	000800f4 	streqd	r0, [r8], -r4

00080038 <FIQ_Addr>:
   80038:	00080134 	andeq	r0, r8, r4, lsr r1

0008003c <Reset_Handler>:

Reset_Address:  .word   Reset_Handler
Undef_Addr:     .word   ADI_UNDEF_Interrupt_Setup 
SWI_Addr:       .word   ADI_SWI_Interrupt_Setup 
PAbt_Addr:      .word   ADI_PABORT_Interrupt_Setup 
DAbt_Addr:      .word   ADI_DABORT_Interrupt_Setup 
@ IRQ_Addr:       .word   ADI_IRQ_Interrupt_Setup 
IRQ_Addr:       .word   ADI_IRQ_Interrupt_Wrapper
FIQ_Addr:       .word   ADI_FIQ_Interrupt_Setup 

# Reset Handler

Reset_Handler:  

.if PLL_SETUP
                LDR     R0, =MMR_BASE_0
   8003c:	e59f00d0 	ldr	r0, [pc, #208]	; 80114 <.text+0x114>
                MOV     R1, #0x01         
   80040:	e3a01001 	mov	r1, #1	; 0x1
                STR     R1, [R0,#POWKEY1_OFFSET]          
   80044:	e5801404 	str	r1, [r0, #1028]
                MOV     R1, #PLLCFG_Val      
   80048:	e3a01000 	mov	r1, #0	; 0x0
                STR     R1, [R0,#POWCON_OFFSET]    
   8004c:	e5801408 	str	r1, [r0, #1032]
                MOV     R1, #0xF4
   80050:	e3a010f4 	mov	r1, #244	; 0xf4
                STR     R1, [R0,#POWKEY2_OFFSET]
   80054:	e580140c 	str	r1, [r0, #1036]
.endif

# Setup Stack for each mode 
                LDR     R0, =Top_Stack 
   80058:	e3a00a12 	mov	r0, #73728	; 0x12000
 
#  Enter Undefined Instruction Mode and set its Stack Pointer 
                MSR     CPSR_c, #Mode_UNDEF|I_Bit|F_Bit 
   8005c:	e321f0db 	msr	CPSR_c, #219	; 0xdb
                MOV     SP, R0 
   80060:	e1a0d000 	mov	sp, r0
                SUB     R0, R0, #UNDEF_Stack_Size 
   80064:	e2400004 	sub	r0, r0, #4	; 0x4
 
#  Enter Abort Mode and set its Stack Pointer 
                MSR     CPSR_c, #Mode_ABT|I_Bit|F_Bit 
   80068:	e321f0d7 	msr	CPSR_c, #215	; 0xd7
                MOV     SP, R0 
   8006c:	e1a0d000 	mov	sp, r0
                SUB     R0, R0, #ABT_Stack_Size 
   80070:	e2400004 	sub	r0, r0, #4	; 0x4
 
#  Enter FIQ Mode and set its Stack Pointer 
                MSR     CPSR_c, #Mode_FIQ|I_Bit|F_Bit 
   80074:	e321f0d1 	msr	CPSR_c, #209	; 0xd1
                MOV     SP, R0 
   80078:	e1a0d000 	mov	sp, r0
                SUB     R0, R0, #FIQ_Stack_Size 
   8007c:	e2400080 	sub	r0, r0, #128	; 0x80
 
#  Enter IRQ Mode and set its Stack Pointer 
                MSR     CPSR_c, #Mode_IRQ|I_Bit|F_Bit 
   80080:	e321f0d2 	msr	CPSR_c, #210	; 0xd2
                MOV     SP, R0 
   80084:	e1a0d000 	mov	sp, r0
                SUB     R0, R0, #IRQ_Stack_Size 
   80088:	e2400080 	sub	r0, r0, #128	; 0x80
 
#  Enter Supervisor Mode and set its Stack Pointer 
                MSR     CPSR_c, #Mode_SVC|I_Bit|F_Bit 
   8008c:	e321f0d3 	msr	CPSR_c, #211	; 0xd3
                MOV     SP, R0 
   80090:	e1a0d000 	mov	sp, r0
                SUB     R0, R0, #SVC_Stack_Size 
   80094:	e2400004 	sub	r0, r0, #4	; 0x4
 
#  Enter User Mode and set its Stack Pointer 
                MSR     CPSR_c, #Mode_USR 
   80098:	e321f010 	msr	CPSR_c, #16	; 0x10
                MOV     SP, R0 
   8009c:	e1a0d000 	mov	sp, r0
 
#  Setup a default Stack Limit (when compiled with -mapcs-stack-check) 
                mov     R0,#USR_Stack_Size
   800a0:	e3a00b01 	mov	r0, #1024	; 0x400
                SUB     SL, SP,R0         /* USER STACK SIZE SL = R10 */ 
   800a4:	e04da000 	sub	sl, sp, r0

/* mt: ifdef / else / endif */
#ifdef ROM_RUN
# Relocate .data section (Copy from ROM to RAM) 
                LDR     R1, =_etext 
   800a8:	e59f1068 	ldr	r1, [pc, #104]	; 80118 <.text+0x118>
                LDR     R2, =_data 
   800ac:	e59f2068 	ldr	r2, [pc, #104]	; 8011c <.text+0x11c>
                LDR     R3, =_edata 
   800b0:	e59f3068 	ldr	r3, [pc, #104]	; 80120 <.text+0x120>
				CMP     R2, R3 /* mt */
   800b4:	e1520003 	cmp	r2, r3
				BEQ		DataIsEmpty /* mt */				
   800b8:	0a000003 	beq	800cc <DataIsEmpty>

000800bc <LoopRel>:
LoopRel:        CMP     R2, R3 
   800bc:	e1520003 	cmp	r2, r3
                LDRLO   R0, [R1], #4 
   800c0:	34910004 	ldrcc	r0, [r1], #4
                STRLO   R0, [R2], #4 
   800c4:	34820004 	strcc	r0, [r2], #4
                BLO     LoopRel 
   800c8:	3afffffb 	bcc	800bc <LoopRel>

000800cc <DataIsEmpty>:
DataIsEmpty: /* mt */
#else
#warning RAM_RUN - .data will not be copied
#endif
 
# Clear .bss section (Zero init)                 
                MOV     R0, #0 
   800cc:	e3a00000 	mov	r0, #0	; 0x0
                LDR     R1, =__bss_start__ 
   800d0:	e59f104c 	ldr	r1, [pc, #76]	; 80124 <.text+0x124>
                LDR     R2, =__bss_end__ 
   800d4:	e59f204c 	ldr	r2, [pc, #76]	; 80128 <.text+0x128>

000800d8 <LoopZI>:
LoopZI:         CMP     R1, R2 
   800d8:	e1510002 	cmp	r1, r2
                STRLO   R0, [R1], #4 
   800dc:	34810004 	strcc	r0, [r1], #4
                BLO     LoopZI 
   800e0:	3afffffc 	bcc	800d8 <LoopZI>

000800e4 <Jump_To_Main>:
 

.if En_StdIO
            
# Enter the standard system startup code required for stdlib I/O  
              B       _start	
			      
.endif
 
# Enter the C code 
           	 


Jump_To_Main:   
                ADR     LR, __Return_from_Main           
   800e4:	e28fe004 	add	lr, pc, #4	; 0x4
                LDR     R0, =main
   800e8:	e59f003c 	ldr	r0, [pc, #60]	; 8012c <.text+0x12c>
                BX      R0
   800ec:	e12fff10 	bx	r0

000800f0 <__Return_from_Main>:

__Return_from_Main:
                B       __Return_from_Main	 
   800f0:	eafffffe 	b	800f0 <__Return_from_Main>

000800f4 <ADI_IRQ_Interrupt_Wrapper>:


        .size   _startup, . - _startup 
        .endfunc 

		
		.func ADI_IRQ_Interrupt_Wrapper
ADI_IRQ_Interrupt_Wrapper:

@ adjust return-address
		sub lr, lr, #4
   800f4:	e24ee004 	sub	lr, lr, #4	; 0x4
@ save registers
		stmdb sp!, {r0-r3, ip, lr}
   800f8:	e92d500f 	stmdb	sp!, {r0, r1, r2, r3, ip, lr}
@ r0 = *IRQ
		.extern IRQ
		ldr r0, =IRQ
   800fc:	e59f002c 	ldr	r0, [pc, #44]	; 80130 <.text+0x130>
		ldr r0, [r0]
   80100:	e5900000 	ldr	r0, [r0]
@ if *IRQ != 0 call IRQ()
		cmp r0, #0
   80104:	e3500000 	cmp	r0, #0	; 0x0
		movne lr, pc
   80108:	11a0e00f 	movne	lr, pc
		bxne r0
   8010c:	112fff10 	bxne	r0
@ restore registers and exit from wrapper (PC=saved LR)
		ldmia sp!, {r0-r3, ip, pc}^
   80110:	e8fd900f 	ldmia	sp!, {r0, r1, r2, r3, ip, pc}^
   80114:	ffff0000 	undefined instruction 0xffff0000
   80118:	00080b84 	andeq	r0, r8, r4, lsl #23
   8011c:	00010000 	andeq	r0, r1, r0
   80120:	00010004 	andeq	r0, r1, r4
   80124:	00010004 	andeq	r0, r1, r4
   80128:	00010264 	andeq	r0, r1, r4, ror #4
   8012c:	000802b1 	streqh	r0, [r8], -r1
   80130:	00010018 	andeq	r0, r1, r8, lsl r0

00080134 <ADI_FIQ_Interrupt_Setup>:
}
#endif

void	ADI_FIQ_Interrupt_Setup(void) 
{
   80134:	e24ee004 	sub	lr, lr, #4	; 0x4
   80138:	e92d400f 	stmdb	sp!, {r0, r1, r2, r3, lr}
	if ( *FIQ !=0x00)
   8013c:	e59f301c 	ldr	r3, [pc, #28]	; 80160 <.text+0x160>
   80140:	e5933000 	ldr	r3, [r3]
   80144:	e3530000 	cmp	r3, #0	; 0x0
   80148:	e24dd004 	sub	sp, sp, #4	; 0x4
	{
		FIQ();
   8014c:	11a0e00f 	movne	lr, pc
   80150:	112fff13 	bxne	r3
	}
}
   80154:	e28dd004 	add	sp, sp, #4	; 0x4
   80158:	e8bd400f 	ldmia	sp!, {r0, r1, r2, r3, lr}
   8015c:	e25ef004 	subs	pc, lr, #4	; 0x4
   80160:	0001001c 	andeq	r0, r1, ip, lsl r0

00080164 <ADI_SWI_Interrupt_Setup>:

void	ADI_SWI_Interrupt_Setup(void) 
{
   80164:	e92d500f 	stmdb	sp!, {r0, r1, r2, r3, ip, lr}
	if ( *SWI !=0x00)
   80168:	e59f3014 	ldr	r3, [pc, #20]	; 80184 <.text+0x184>
   8016c:	e5933000 	ldr	r3, [r3]
   80170:	e3530000 	cmp	r3, #0	; 0x0
	{
		SWI();
   80174:	11a0e00f 	movne	lr, pc
   80178:	112fff13 	bxne	r3
	}
}
   8017c:	e8bd500f 	ldmia	sp!, {r0, r1, r2, r3, ip, lr}
   80180:	e1b0f00e 	movs	pc, lr
   80184:	0001000c 	andeq	r0, r1, ip

00080188 <ADI_UNDEF_Interrupt_Setup>:

void	ADI_UNDEF_Interrupt_Setup(void) 
{
   80188:	e92d500f 	stmdb	sp!, {r0, r1, r2, r3, ip, lr}
	if ( *UNDEF !=0x00)
   8018c:	e59f3014 	ldr	r3, [pc, #20]	; 801a8 <.text+0x1a8>
   80190:	e5933000 	ldr	r3, [r3]
   80194:	e3530000 	cmp	r3, #0	; 0x0
	{
		UNDEF();
   80198:	11a0e00f 	movne	lr, pc
   8019c:	112fff13 	bxne	r3
	}
}
   801a0:	e8bd500f 	ldmia	sp!, {r0, r1, r2, r3, ip, lr}
   801a4:	e1b0f00e 	movs	pc, lr
   801a8:	00010008 	andeq	r0, r1, r8

000801ac <ADI_PABORT_Interrupt_Setup>:

void	ADI_PABORT_Interrupt_Setup(void) 
{
   801ac:	e52de004 	str	lr, [sp, #-4]!
	if ( *PABORT !=0x00)
   801b0:	e59f301c 	ldr	r3, [pc, #28]	; 801d4 <.text+0x1d4>
   801b4:	e5933000 	ldr	r3, [r3]
   801b8:	e3530000 	cmp	r3, #0	; 0x0
   801bc:	e24dd004 	sub	sp, sp, #4	; 0x4
	{
		PABORT();
   801c0:	11a0e00f 	movne	lr, pc
   801c4:	112fff13 	bxne	r3
	}
}
   801c8:	e28dd004 	add	sp, sp, #4	; 0x4
   801cc:	e49de004 	ldr	lr, [sp], #4
   801d0:	e12fff1e 	bx	lr
   801d4:	00010010 	andeq	r0, r1, r0, lsl r0

000801d8 <ADI_DABORT_Interrupt_Setup>:

void	ADI_DABORT_Interrupt_Setup(void) 
{
   801d8:	e52de004 	str	lr, [sp, #-4]!
	if ( *DABORT !=0x00)
   801dc:	e59f301c 	ldr	r3, [pc, #28]	; 80200 <.text+0x200>
   801e0:	e5933000 	ldr	r3, [r3]
   801e4:	e3530000 	cmp	r3, #0	; 0x0
   801e8:	e24dd004 	sub	sp, sp, #4	; 0x4
	{
		DABORT();
   801ec:	11a0e00f 	movne	lr, pc
   801f0:	112fff13 	bxne	r3
	}
}
   801f4:	e28dd004 	add	sp, sp, #4	; 0x4
   801f8:	e49de004 	ldr	lr, [sp], #4
   801fc:	e12fff1e 	bx	lr
   80200:	00010014 	andeq	r0, r1, r4, lsl r0

00080204 <GetInt>:
char InStr[InStrLen + 1];
char *SPtr;

static int GetInt(void)
{
   80204:	b5f0      	push	{r4, r5, r6, r7, lr}
  int result;
  BYTE neg;
  
  result = 0;
  neg = 0;
  if (*SPtr == '-') {
   80206:	4913      	ldr	r1, [pc, #76]	(80254 <.text+0x254>)
   80208:	680b      	ldr	r3, [r1, #0]
   8020a:	781a      	ldrb	r2, [r3, #0]
   8020c:	2a2d      	cmp	r2, #45
   8020e:	d103      	bne.n	80218 <GetInt+0x14>
    neg = 1;
    SPtr++;
   80210:	3301      	adds	r3, #1
   80212:	2501      	movs	r5, #1
   80214:	600b      	str	r3, [r1, #0]
   80216:	e004      	b.n	80222 <GetInt+0x1e>
  }
  else if (*SPtr == '+')
   80218:	2a2b      	cmp	r2, #43
   8021a:	d101      	bne.n	80220 <GetInt+0x1c>
    SPtr++;
   8021c:	3301      	adds	r3, #1
   8021e:	600b      	str	r3, [r1, #0]
   80220:	2500      	movs	r5, #0
  while (isdigit(*SPtr))
   80222:	4b0d      	ldr	r3, [pc, #52]	(80258 <.text+0x258>)
   80224:	681e      	ldr	r6, [r3, #0]
   80226:	2000      	movs	r0, #0
   80228:	e007      	b.n	8023a <GetInt+0x36>
    result = 10*result + (*SPtr++ - '0');
   8022a:	1c13      	adds	r3, r2, #0
   8022c:	0082      	lsls	r2, r0, #2
   8022e:	1812      	adds	r2, r2, r0
   80230:	3b30      	subs	r3, #48
   80232:	0052      	lsls	r2, r2, #1
   80234:	1898      	adds	r0, r3, r2
   80236:	1c4b      	adds	r3, r1, #1
   80238:	6023      	str	r3, [r4, #0]
   8023a:	4c06      	ldr	r4, [pc, #24]	(80254 <.text+0x254>)
   8023c:	6821      	ldr	r1, [r4, #0]
   8023e:	780a      	ldrb	r2, [r1, #0]
   80240:	5cb3      	ldrb	r3, [r6, r2]
   80242:	075f      	lsls	r7, r3, #29
   80244:	d4f1      	bmi.n	8022a <GetInt+0x26>
  return neg ? -result : result;
   80246:	2d00      	cmp	r5, #0
   80248:	d000      	beq.n	8024c <GetInt+0x48>
   8024a:	4240      	negs	r0, r0
}
   8024c:	bcf0      	pop	{r4, r5, r6, r7}
   8024e:	bc02      	pop	{r1}
   80250:	4708      	bx	r1
   80252:	0000      	lsls	r0, r0, #0
   80254:	0020      	lsls	r0, r4, #0
   80256:	0001      	lsls	r1, r0, #0
   80258:	0000      	lsls	r0, r0, #0
   8025a:	0001      	lsls	r1, r0, #0

0008025c <GetString>:

static void GetStringEcho(char *str, BYTE len)
{
  BYTE cpos;
  char ch;

  for(cpos = 0; cpos < len;) {
    ch = toupper(getchar());
    switch (ch) {
    case ESC :
      cpos = 0;
    case '\r' :
      goto gsout;
    case '\b' :
      if (cpos > 0)
        cpos--;
      putchar(ch);
    break;
    default :
      str[cpos++] = ch;
      putchar(ch);
    }
  }
gsout:
  str[cpos] = 0;
  rprintf("\n");
}

static void GetString(char *str, BYTE len)
{
   8025c:	b570      	push	{r4, r5, r6, lr}
   8025e:	1c05      	adds	r5, r0, #0
   80260:	1c0e      	adds	r6, r1, #0
   80262:	2400      	movs	r4, #0
   80264:	e01a      	b.n	8029c <GetString+0x40>
  BYTE cpos;
  char ch;

  for(cpos = 0; cpos < len;) {
    ch = toupper(getchar());
   80266:	f000 f963 	bl	80530 <getchar>
   8026a:	4b10      	ldr	r3, [pc, #64]	(802ac <.text+0x2ac>)
   8026c:	681b      	ldr	r3, [r3, #0]
   8026e:	5c1b      	ldrb	r3, [r3, r0]
   80270:	079a      	lsls	r2, r3, #30
   80272:	d500      	bpl.n	80276 <GetString+0x1a>
   80274:	3820      	subs	r0, #32
   80276:	0603      	lsls	r3, r0, #24
   80278:	0e18      	lsrs	r0, r3, #24
    switch (ch) {
   8027a:	280d      	cmp	r0, #13
   8027c:	d010      	beq.n	802a0 <GetString+0x44>
   8027e:	281b      	cmp	r0, #27
   80280:	d002      	beq.n	80288 <GetString+0x2c>
   80282:	2808      	cmp	r0, #8
   80284:	d106      	bne.n	80294 <GetString+0x38>
   80286:	e001      	b.n	8028c <GetString+0x30>
   80288:	2400      	movs	r4, #0
   8028a:	e009      	b.n	802a0 <GetString+0x44>
    case ESC :
      cpos = 0;
    case '\r' :
      goto gsout;
    case '\b' :
      if (cpos > 0)
   8028c:	2c00      	cmp	r4, #0
   8028e:	d005      	beq.n	8029c <GetString+0x40>
        cpos--;
   80290:	1e63      	subs	r3, r4, #1
   80292:	e001      	b.n	80298 <GetString+0x3c>
    break;
    default :
      str[cpos++] = ch;
   80294:	5528      	strb	r0, [r5, r4]
   80296:	1c63      	adds	r3, r4, #1
   80298:	061b      	lsls	r3, r3, #24
   8029a:	0e1c      	lsrs	r4, r3, #24
   8029c:	42b4      	cmp	r4, r6
   8029e:	d3e2      	bcc.n	80266 <GetString+0xa>
    }
  }
gsout:
  str[cpos] = 0;
   802a0:	2300      	movs	r3, #0
   802a2:	552b      	strb	r3, [r5, r4]
}
   802a4:	bc70      	pop	{r4, r5, r6}
   802a6:	bc01      	pop	{r0}
   802a8:	4700      	bx	r0
   802aa:	0000      	lsls	r0, r0, #0
   802ac:	0000      	lsls	r0, r0, #0
   802ae:	0001      	lsls	r1, r0, #0

000802b0 <main>:

DWORD Error;

DWORD MyAddress;

//BYTE ResetSource;
DWORD ErrorCode;
#define BadCommand 1

//#define _echo_
//#define _Standalone_

static void InitController(void)
{
  GP0DAT = 0xF0000000;		//	Configure P0.4 - P0.7 as output
  GP1DAT = 0xF0000000;		//	Configure P1.4 - P1.7 as output
  GP4DAT = 0x04000000;		// LED output
  GP4DAT |= 0x00040000;		// Switch off LED  
  T1CON = 0x180;
}

int main(void)
{
   802b0:	b570      	push	{r4, r5, r6, lr}
   802b2:	4a81      	ldr	r2, [pc, #516]	(804b8 <.text+0x4b8>)
   802b4:	4b81      	ldr	r3, [pc, #516]	(804bc <.text+0x4bc>)
   802b6:	601a      	str	r2, [r3, #0]
   802b8:	3310      	adds	r3, #16
   802ba:	601a      	str	r2, [r3, #0]
   802bc:	4980      	ldr	r1, [pc, #512]	(804c0 <.text+0x4c0>)
   802be:	2380      	movs	r3, #128
   802c0:	04db      	lsls	r3, r3, #19
   802c2:	600b      	str	r3, [r1, #0]
   802c4:	2380      	movs	r3, #128
   802c6:	680a      	ldr	r2, [r1, #0]
   802c8:	02db      	lsls	r3, r3, #11
   802ca:	431a      	orrs	r2, r3
   802cc:	600a      	str	r2, [r1, #0]
   802ce:	23c0      	movs	r3, #192
   802d0:	4a7c      	ldr	r2, [pc, #496]	(804c4 <.text+0x4c4>)
   802d2:	005b      	lsls	r3, r3, #1
   802d4:	6013      	str	r3, [r2, #0]
  char ch;
  WORD w;
  BYTE i;

//Start:  

  InitController();
  InitADC();
   802d6:	f000 f98f 	bl	805f8 <InitADC>
  InitSerial();
   802da:	f000 f937 	bl	8054c <InitSerial>

  MyAddress = 1;//ReadEEPROM_WORD(aMyAddress);
   802de:	4a7a      	ldr	r2, [pc, #488]	(804c8 <.text+0x4c8>)
   802e0:	2301      	movs	r3, #1
   802e2:	6013      	str	r3, [r2, #0]

#ifdef _ExcelTest_
  while (1) {
    switch (rand() & 3) {
	case 0:
	  rprintf("99\r");
	break;
	case 1:
	  rprintf("101\r");
	break;
	default:
	  rprintf("100\r");
	}
	delay(2000);
  }
#endif

  delay(10000);
   802e4:	4879      	ldr	r0, [pc, #484]	(804cc <.text+0x4cc>)
   802e6:	f000 f997 	bl	80618 <delay>

//  ChDel = ReadEEPROM_WORD(aChDel);
//  Averaging = ReadEEPROM_WORD(aAveraging);

//Unselect:
  IamSelected = 0;
   802ea:	4a79      	ldr	r2, [pc, #484]	(804d0 <.text+0x4d0>)
   802ec:	2300      	movs	r3, #0
   802ee:	6013      	str	r3, [r2, #0]

#ifdef _Standalone_
  rprintf("Started\n");
#endif

#ifdef _echo_
  while (1) {
    ch = getchar();
    putchar(ch);
  }
#endif

  while (1) {
//    FeedWatchdog();
    if (IamSelected) {
   802f0:	4b77      	ldr	r3, [pc, #476]	(804d0 <.text+0x4d0>)
   802f2:	681b      	ldr	r3, [r3, #0]
   802f4:	4c77      	ldr	r4, [pc, #476]	(804d4 <.text+0x4d4>)
   802f6:	2b00      	cmp	r3, #0
   802f8:	d100      	bne.n	802fc <main+0x4c>
   802fa:	e094      	b.n	80426 <main+0x176>
      ch = toupper(getchar());
   802fc:	f000 f918 	bl	80530 <getchar>
   80300:	6823      	ldr	r3, [r4, #0]
   80302:	5c1b      	ldrb	r3, [r3, r0]
   80304:	079a      	lsls	r2, r3, #30
   80306:	d500      	bpl.n	8030a <main+0x5a>
   80308:	3820      	subs	r0, #32
   8030a:	0603      	lsls	r3, r0, #24
   8030c:	0e1c      	lsrs	r4, r3, #24
      switch (ch) {
   8030e:	2c52      	cmp	r4, #82
   80310:	d00a      	beq.n	80328 <main+0x78>
   80312:	2c52      	cmp	r4, #82
   80314:	d802      	bhi.n	8031c <main+0x6c>
   80316:	2c4d      	cmp	r4, #77
   80318:	d117      	bne.n	8034a <main+0x9a>
   8031a:	e0ae      	b.n	8047a <main+0x1ca>
   8031c:	2c53      	cmp	r4, #83
   8031e:	d100      	bne.n	80322 <main+0x72>
   80320:	e0ae      	b.n	80480 <main+0x1d0>
   80322:	2c5a      	cmp	r4, #90
   80324:	d111      	bne.n	8034a <main+0x9a>
   80326:	e7fe      	b.n	80326 <main+0x76>
      case 'S' :
        goto Select;
      case 'M' :
        goto Measure;
      case 'Z' :
//	    IOCLR0 = Bit(21);
		while(1);
//	    IODIR0 |= Bit(21);
//        goto Start; 
      case 'R' :      
        putchar(ch);
   80328:	2052      	movs	r0, #82
   8032a:	f000 f8f3 	bl	80514 <putchar>
   8032e:	2400      	movs	r4, #0
        for (i = 0; i < 64; i++) {
          rprintf("%u %u\n", xs[i], ys[i]);
   80330:	4b69      	ldr	r3, [pc, #420]	(804d8 <.text+0x4d8>)
   80332:	58e1      	ldr	r1, [r4, r3]
   80334:	4b69      	ldr	r3, [pc, #420]	(804dc <.text+0x4dc>)
   80336:	486a      	ldr	r0, [pc, #424]	(804e0 <.text+0x4e0>)
   80338:	58e2      	ldr	r2, [r4, r3]
   8033a:	f000 fa61 	bl	80800 <rprintf>
   8033e:	2380      	movs	r3, #128
   80340:	3404      	adds	r4, #4
   80342:	005b      	lsls	r3, r3, #1
   80344:	429c      	cmp	r4, r3
   80346:	d0d3      	beq.n	802f0 <main+0x40>
   80348:	e7f2      	b.n	80330 <main+0x80>
        }       
        continue;
      }
      putchar(ch);
   8034a:	1c20      	adds	r0, r4, #0
   8034c:	f000 f8e2 	bl	80514 <putchar>
   80350:	2600      	movs	r6, #0
   80352:	f000 f8ed 	bl	80530 <getchar>
   80356:	4b5f      	ldr	r3, [pc, #380]	(804d4 <.text+0x4d4>)
   80358:	681b      	ldr	r3, [r3, #0]
   8035a:	5c1b      	ldrb	r3, [r3, r0]
   8035c:	079a      	lsls	r2, r3, #30
   8035e:	d500      	bpl.n	80362 <main+0xb2>
   80360:	3820      	subs	r0, #32
   80362:	0603      	lsls	r3, r0, #24
   80364:	0e18      	lsrs	r0, r3, #24
   80366:	280d      	cmp	r0, #13
   80368:	d016      	beq.n	80398 <main+0xe8>
   8036a:	281b      	cmp	r0, #27
   8036c:	d002      	beq.n	80374 <main+0xc4>
   8036e:	2808      	cmp	r0, #8
   80370:	d109      	bne.n	80386 <main+0xd6>
   80372:	e001      	b.n	80378 <main+0xc8>
   80374:	2600      	movs	r6, #0
   80376:	e00f      	b.n	80398 <main+0xe8>
   80378:	2e00      	cmp	r6, #0
   8037a:	d002      	beq.n	80382 <main+0xd2>
   8037c:	1e73      	subs	r3, r6, #1
   8037e:	061b      	lsls	r3, r3, #24
   80380:	0e1e      	lsrs	r6, r3, #24
   80382:	2008      	movs	r0, #8
   80384:	e004      	b.n	80390 <main+0xe0>
   80386:	4b57      	ldr	r3, [pc, #348]	(804e4 <.text+0x4e4>)
   80388:	54f0      	strb	r0, [r6, r3]
   8038a:	1c73      	adds	r3, r6, #1
   8038c:	061b      	lsls	r3, r3, #24
   8038e:	0e1e      	lsrs	r6, r3, #24
   80390:	f000 f8c0 	bl	80514 <putchar>
   80394:	2e17      	cmp	r6, #23
   80396:	d9dc      	bls.n	80352 <main+0xa2>
   80398:	4d52      	ldr	r5, [pc, #328]	(804e4 <.text+0x4e4>)
   8039a:	2300      	movs	r3, #0
   8039c:	5573      	strb	r3, [r6, r5]
   8039e:	4852      	ldr	r0, [pc, #328]	(804e8 <.text+0x4e8>)
   803a0:	f000 fa2e 	bl	80800 <rprintf>
      GetStringEcho(InStr, InStrLen);
      SPtr = InStr;
   803a4:	4b51      	ldr	r3, [pc, #324]	(804ec <.text+0x4ec>)
   803a6:	601d      	str	r5, [r3, #0]
      switch (ch) {
   803a8:	2c4c      	cmp	r4, #76
   803aa:	d02a      	beq.n	80402 <main+0x152>
   803ac:	2c4c      	cmp	r4, #76
   803ae:	d804      	bhi.n	803ba <main+0x10a>
   803b0:	2c41      	cmp	r4, #65
   803b2:	d007      	beq.n	803c4 <main+0x114>
   803b4:	2c44      	cmp	r4, #68
   803b6:	d12f      	bne.n	80418 <main+0x168>
   803b8:	e012      	b.n	803e0 <main+0x130>
   803ba:	2c56      	cmp	r4, #86
   803bc:	d025      	beq.n	8040a <main+0x15a>
   803be:	2c5a      	cmp	r4, #90
   803c0:	d12a      	bne.n	80418 <main+0x168>
   803c2:	e021      	b.n	80408 <main+0x158>
      case 'A' :		// Set Averaging value
        w = GetInt();
   803c4:	f7ff ff1e 	bl	80204 <GetInt>
   803c8:	0400      	lsls	r0, r0, #16
   803ca:	0c00      	lsrs	r0, r0, #16
        if (w && (w != Averaging)) {
   803cc:	2800      	cmp	r0, #0
   803ce:	d004      	beq.n	803da <main+0x12a>
   803d0:	4a47      	ldr	r2, [pc, #284]	(804f0 <.text+0x4f0>)
   803d2:	6813      	ldr	r3, [r2, #0]
   803d4:	4298      	cmp	r0, r3
   803d6:	d000      	beq.n	803da <main+0x12a>
          Averaging = w;
   803d8:	6010      	str	r0, [r2, #0]
        }
        rprintf("A%u\n", Averaging);
   803da:	4846      	ldr	r0, [pc, #280]	(804f4 <.text+0x4f4>)
   803dc:	4b44      	ldr	r3, [pc, #272]	(804f0 <.text+0x4f0>)
   803de:	e00c      	b.n	803fa <main+0x14a>
      break;
      case 'D' :		// Set Delay value
        w = GetInt();
   803e0:	f7ff ff10 	bl	80204 <GetInt>
   803e4:	0400      	lsls	r0, r0, #16
   803e6:	0c00      	lsrs	r0, r0, #16
        if (w && (w != ChDel)) {
   803e8:	2800      	cmp	r0, #0
   803ea:	d004      	beq.n	803f6 <main+0x146>
   803ec:	4a42      	ldr	r2, [pc, #264]	(804f8 <.text+0x4f8>)
   803ee:	6813      	ldr	r3, [r2, #0]
   803f0:	4298      	cmp	r0, r3
   803f2:	d000      	beq.n	803f6 <main+0x146>
          ChDel = w;
   803f4:	6010      	str	r0, [r2, #0]
        }
        rprintf("D%u\n", ChDel);
   803f6:	4841      	ldr	r0, [pc, #260]	(804fc <.text+0x4fc>)
   803f8:	4b3f      	ldr	r3, [pc, #252]	(804f8 <.text+0x4f8>)
   803fa:	6819      	ldr	r1, [r3, #0]
   803fc:	f000 fa00 	bl	80800 <rprintf>
   80400:	e776      	b.n	802f0 <main+0x40>
      break;       
      case 'L' :
        DumpXY();
   80402:	f000 f92d 	bl	80660 <DumpXY>
   80406:	e773      	b.n	802f0 <main+0x40>
   80408:	e7fe      	b.n	80408 <main+0x158>
      break;
      case 'Z' :		// Reset microcontroller
//	    IOCLR0 = Bit(21);
//	    IODIR0 |= Bit(21);
//        goto Start;
        while(1);		// WDT to be added !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!  
      case 'V' :		// Read firmware version
        w = Version;
        if (*SPtr == 0)
   8040a:	782b      	ldrb	r3, [r5, #0]
   8040c:	2b00      	cmp	r3, #0
   8040e:	d000      	beq.n	80412 <main+0x162>
   80410:	e76e      	b.n	802f0 <main+0x40>
          rprintf("V%u\n", w);
   80412:	483b      	ldr	r0, [pc, #236]	(80500 <.text+0x500>)
   80414:	2103      	movs	r1, #3
   80416:	e7f1      	b.n	803fc <main+0x14c>
      break;
      default :
        ErrorCode = BadCommand;
   80418:	4a3a      	ldr	r2, [pc, #232]	(80504 <.text+0x504>)
   8041a:	2301      	movs	r3, #1
   8041c:	6013      	str	r3, [r2, #0]
        putchar('?');
   8041e:	203f      	movs	r0, #63
   80420:	f000 f878 	bl	80514 <putchar>
   80424:	e764      	b.n	802f0 <main+0x40>
      }
    }
    else {
      ch = toupper(getchar());
   80426:	f000 f883 	bl	80530 <getchar>
   8042a:	6823      	ldr	r3, [r4, #0]
   8042c:	5c1b      	ldrb	r3, [r3, r0]
   8042e:	079a      	lsls	r2, r3, #30
   80430:	d500      	bpl.n	80434 <main+0x184>
   80432:	3820      	subs	r0, #32
      switch (ch) {
   80434:	0603      	lsls	r3, r0, #24
   80436:	0e18      	lsrs	r0, r3, #24
   80438:	284d      	cmp	r0, #77
   8043a:	d01e      	beq.n	8047a <main+0x1ca>
   8043c:	284d      	cmp	r0, #77
   8043e:	d802      	bhi.n	80446 <main+0x196>
   80440:	2849      	cmp	r0, #73
   80442:	d133      	bne.n	804ac <main+0x1fc>
   80444:	e004      	b.n	80450 <main+0x1a0>
   80446:	2853      	cmp	r0, #83
   80448:	d01a      	beq.n	80480 <main+0x1d0>
   8044a:	285a      	cmp	r0, #90
   8044c:	d12e      	bne.n	804ac <main+0x1fc>
   8044e:	e02c      	b.n	804aa <main+0x1fa>
      // Should be called only when single sensor is connected to the RS485 line!
      case 'I' :
        GetString(InStr, InStrLen);
   80450:	4c24      	ldr	r4, [pc, #144]	(804e4 <.text+0x4e4>)
   80452:	2118      	movs	r1, #24
   80454:	1c20      	adds	r0, r4, #0
   80456:	f7ff ff01 	bl	8025c <GetString>
        SPtr = InStr;
   8045a:	4924      	ldr	r1, [pc, #144]	(804ec <.text+0x4ec>)
        if (*SPtr++ == 'D') {
   8045c:	7822      	ldrb	r2, [r4, #0]
   8045e:	1c63      	adds	r3, r4, #1
   80460:	600b      	str	r3, [r1, #0]
   80462:	2a44      	cmp	r2, #68
   80464:	d000      	beq.n	80468 <main+0x1b8>
   80466:	e743      	b.n	802f0 <main+0x40>
          if (*SPtr++ == 'N') {
   80468:	7862      	ldrb	r2, [r4, #1]
   8046a:	1ca3      	adds	r3, r4, #2
   8046c:	600b      	str	r3, [r1, #0]
   8046e:	2a4e      	cmp	r2, #78
   80470:	d000      	beq.n	80474 <main+0x1c4>
   80472:	e73d      	b.n	802f0 <main+0x40>
//            w = GetInt();
//            if (w) {
//              MyAddress = w;
//			  WriteEEPROM_WORD(aMyAddress, MyAddress);
//            }
//            else
//              MyAddress = ReadEEPROM_WORD(aMyAddress);
            rprintf("IDN%u\n", MyAddress);
   80474:	4824      	ldr	r0, [pc, #144]	(80508 <.text+0x508>)
   80476:	4b14      	ldr	r3, [pc, #80]	(804c8 <.text+0x4c8>)
   80478:	e7bf      	b.n	803fa <main+0x14a>
          }
        }
      break;
      case 'M' :
Measure:
        ScanXY();
   8047a:	f000 f90b 	bl	80694 <ScanXY>
   8047e:	e737      	b.n	802f0 <main+0x40>
      break; 
      case 'S' :				// address Select
Select:
        GetString(InStr, InStrLen);
   80480:	4c18      	ldr	r4, [pc, #96]	(804e4 <.text+0x4e4>)
   80482:	2118      	movs	r1, #24
   80484:	1c20      	adds	r0, r4, #0
   80486:	f7ff fee9 	bl	8025c <GetString>
        SPtr = InStr;
   8048a:	4b18      	ldr	r3, [pc, #96]	(804ec <.text+0x4ec>)
   8048c:	601c      	str	r4, [r3, #0]
        w = GetInt();
   8048e:	f7ff feb9 	bl	80204 <GetInt>
        if (w == MyAddress) {
   80492:	4b0d      	ldr	r3, [pc, #52]	(804c8 <.text+0x4c8>)
   80494:	0400      	lsls	r0, r0, #16
   80496:	681b      	ldr	r3, [r3, #0]
   80498:	0c01      	lsrs	r1, r0, #16
   8049a:	4a0d      	ldr	r2, [pc, #52]	(804d0 <.text+0x4d0>)
   8049c:	4299      	cmp	r1, r3
   8049e:	d000      	beq.n	804a2 <main+0x1f2>
   804a0:	e724      	b.n	802ec <main+0x3c>
          IamSelected = 1;
          rprintf("S%u\n", w);            
   804a2:	481a      	ldr	r0, [pc, #104]	(8050c <.text+0x50c>)
   804a4:	2301      	movs	r3, #1
   804a6:	6013      	str	r3, [r2, #0]
   804a8:	e7a8      	b.n	803fc <main+0x14c>
   804aa:	e7fe      	b.n	804aa <main+0x1fa>
        }
        else
          IamSelected = 0;
      break;
      case 'Z' :
		while(1);
      default :
        Error |= BadCommand; 
   804ac:	4b18      	ldr	r3, [pc, #96]	(80510 <.text+0x510>)
   804ae:	681a      	ldr	r2, [r3, #0]
   804b0:	2101      	movs	r1, #1
   804b2:	430a      	orrs	r2, r1
   804b4:	601a      	str	r2, [r3, #0]
   804b6:	e71b      	b.n	802f0 <main+0x40>
   804b8:	0000      	lsls	r0, r0, #0
   804ba:	f000 f420 	bl	480cfe <_etext+0x40017a>
   804be:	ffff f460 	vmls.i<illegal width 64>	<illegal reg q15.5>, <illegal reg q7.5>, d16[0]
   804c2:	ffff 0328 	vsubw.u<illegal width 64>	q8, <illegal reg q7.5>, d24
   804c6:	ffff 0048 	vmla.i<illegal width 64>	q8, <illegal reg q7.5>, d8[0]
   804ca:	0001      	lsls	r1, r0, #0
   804cc:	2710      	movs	r7, #16
   804ce:	0000      	lsls	r0, r0, #0
   804d0:	0024      	lsls	r4, r4, #0
   804d2:	0001      	lsls	r1, r0, #0
   804d4:	0000      	lsls	r0, r0, #0
   804d6:	0001      	lsls	r1, r0, #0
   804d8:	0164      	lsls	r4, r4, #5
   804da:	0001      	lsls	r1, r0, #0
   804dc:	0058      	lsls	r0, r3, #1
   804de:	0001      	lsls	r1, r0, #0
   804e0:	0b3c      	lsrs	r4, r7, #12
   804e2:	0008      	lsls	r0, r1, #0
   804e4:	0028      	lsls	r0, r5, #0
   804e6:	0001      	lsls	r1, r0, #0
   804e8:	0b44      	lsrs	r4, r0, #13
   804ea:	0008      	lsls	r0, r1, #0
   804ec:	0020      	lsls	r0, r4, #0
   804ee:	0001      	lsls	r1, r0, #0
   804f0:	0050      	lsls	r0, r2, #1
   804f2:	0001      	lsls	r1, r0, #0
   804f4:	0b48      	lsrs	r0, r1, #13
   804f6:	0008      	lsls	r0, r1, #0
   804f8:	015c      	lsls	r4, r3, #5
   804fa:	0001      	lsls	r1, r0, #0
   804fc:	0b50      	lsrs	r0, r2, #13
   804fe:	0008      	lsls	r0, r1, #0
   80500:	0b58      	lsrs	r0, r3, #13
   80502:	0008      	lsls	r0, r1, #0
   80504:	004c      	lsls	r4, r1, #1
   80506:	0001      	lsls	r1, r0, #0
   80508:	0b60      	lsrs	r0, r4, #13
   8050a:	0008      	lsls	r0, r1, #0
   8050c:	0b68      	lsrs	r0, r5, #13
   8050e:	0008      	lsls	r0, r1, #0
   80510:	0044      	lsls	r4, r0, #1
   80512:	0001      	lsls	r1, r0, #0

00080514 <putchar>:

  rprintf_devopen(putchar);
}

int putchar(int ch)  {                   /* Write character to Serial Port  */
   80514:	b500      	push	{lr}
/*
	if (ch == '\n')  {
    while(!(0x020==(COMSTA0 & 0x020))) {}
		COMTX = '\r';
	}
*/
  while(!(0x020==(COMSTA0 & 0x020))) {}
   80516:	4b04      	ldr	r3, [pc, #16]	(80528 <.text+0x528>)
   80518:	681b      	ldr	r3, [r3, #0]
   8051a:	069a      	lsls	r2, r3, #26
   8051c:	d5fb      	bpl.n	80516 <putchar+0x2>
 
 	return (COMTX = ch);
   8051e:	4b03      	ldr	r3, [pc, #12]	(8052c <.text+0x52c>)
   80520:	6018      	str	r0, [r3, #0]
   80522:	6818      	ldr	r0, [r3, #0]
}
   80524:	bc02      	pop	{r1}
   80526:	4708      	bx	r1
   80528:	0714      	lsls	r4, r2, #28
   8052a:	ffff 0700 	vcvt.s<illegal width 64>.f<illegal width 64>	d16, d0
   8052e:	ffff b500 	vabal.u<illegal width 64>	<illegal reg q13.5>, d15, d0

00080530 <getchar>:


int getchar (void)
{                      /* Read character from Serial Port */
   80530:	b500      	push	{lr}
 	while(!(0x01==(COMSTA0 & 0x01))) {}
   80532:	4b04      	ldr	r3, [pc, #16]	(80544 <.text+0x544>)
   80534:	681b      	ldr	r3, [r3, #0]
   80536:	07da      	lsls	r2, r3, #31
   80538:	d5fb      	bpl.n	80532 <getchar+0x2>
 	return (COMRX);
   8053a:	4b03      	ldr	r3, [pc, #12]	(80548 <.text+0x548>)
   8053c:	6818      	ldr	r0, [r3, #0]
}
   8053e:	bc02      	pop	{r1}
   80540:	4708      	bx	r1
   80542:	0000      	lsls	r0, r0, #0
   80544:	0714      	lsls	r4, r2, #28
   80546:	ffff 0700 	vcvt.s<illegal width 64>.f<illegal width 64>	d16, d0
   8054a:	ffff b500 	vabal.u<illegal width 64>	<illegal reg q13.5>, d15, d0

0008054c <InitSerial>:
   8054c:	b500      	push	{lr}
   8054e:	4b0c      	ldr	r3, [pc, #48]	(80580 <.text+0x580>)
   80550:	490c      	ldr	r1, [pc, #48]	(80584 <.text+0x584>)
   80552:	2211      	movs	r2, #17
   80554:	601a      	str	r2, [r3, #0]
   80556:	2380      	movs	r3, #128
   80558:	600b      	str	r3, [r1, #0]
   8055a:	4b0b      	ldr	r3, [pc, #44]	(80588 <.text+0x588>)
   8055c:	2208      	movs	r2, #8
   8055e:	601a      	str	r2, [r3, #0]
   80560:	2200      	movs	r2, #0
   80562:	3304      	adds	r3, #4
   80564:	601a      	str	r2, [r3, #0]
   80566:	4a09      	ldr	r2, [pc, #36]	(8058c <.text+0x58c>)
   80568:	3328      	adds	r3, #40
   8056a:	601a      	str	r2, [r3, #0]
   8056c:	2303      	movs	r3, #3
   8056e:	b081      	sub	sp, #4
   80570:	600b      	str	r3, [r1, #0]
   80572:	4807      	ldr	r0, [pc, #28]	(80590 <.text+0x590>)
   80574:	f000 f92a 	bl	807cc <rprintf_devopen>
   80578:	b001      	add	sp, #4
   8057a:	bc01      	pop	{r0}
   8057c:	4700      	bx	r0
   8057e:	0000      	lsls	r0, r0, #0
   80580:	f404 ffff 	bl	ffc85582 <_etext+0xffc049fe>
   80584:	070c      	lsls	r4, r1, #28
   80586:	ffff 0700 	vcvt.s<illegal width 64>.f<illegal width 64>	d16, d0
   8058a:	ffff 8b55 	undefined
   8058e:	0000      	lsls	r0, r0, #0
   80590:	0515      	lsls	r5, r2, #20
   80592:	0008      	lsls	r0, r1, #0

00080594 <write>:

int write (int file, char * ptr, int len)
{
   80594:	b530      	push	{r4, r5, lr}
   80596:	1c0c      	adds	r4, r1, #0
   80598:	2000      	movs	r0, #0
   8059a:	1c11      	adds	r1, r2, #0
   8059c:	e00a      	b.n	805b4 <write+0x20>
  int i;

  for (i = 0; i < len; i++)
    if (*ptr)
   8059e:	5d02      	ldrb	r2, [r0, r4]
   805a0:	2a00      	cmp	r2, #0
   805a2:	d009      	beq.n	805b8 <write+0x24>
   805a4:	4b06      	ldr	r3, [pc, #24]	(805c0 <.text+0x5c0>)
   805a6:	681b      	ldr	r3, [r3, #0]
   805a8:	069d      	lsls	r5, r3, #26
   805aa:	d5fb      	bpl.n	805a4 <write+0x10>
   805ac:	4b05      	ldr	r3, [pc, #20]	(805c4 <.text+0x5c4>)
   805ae:	601a      	str	r2, [r3, #0]
   805b0:	681b      	ldr	r3, [r3, #0]
   805b2:	3001      	adds	r0, #1
   805b4:	4288      	cmp	r0, r1
   805b6:	dbf2      	blt.n	8059e <write+0xa>
      putchar (*ptr++);
		else
		  break;
  return i;
}
   805b8:	bc30      	pop	{r4, r5}
   805ba:	bc02      	pop	{r1}
   805bc:	4708      	bx	r1
   805be:	0000      	lsls	r0, r0, #0
   805c0:	0714      	lsls	r4, r2, #28
   805c2:	ffff 0700 	vcvt.s<illegal width 64>.f<illegal width 64>	d16, d0
   805c6:	ffff b500 	vabal.u<illegal width 64>	<illegal reg q13.5>, d15, d0

000805c8 <ReadADC>:
}


DWORD ReadADC(DWORD adcnum)
{
   805c8:	b500      	push	{lr}
 	ADCCP = adcnum + 1;				// Selecting ADC Channel - With prototype 1 and 2 used !!!!!!!!!!! 
   805ca:	4b07      	ldr	r3, [pc, #28]	(805e8 <.text+0x5e8>)
   805cc:	3001      	adds	r0, #1

	ADCCON = 0x6A3;				// ADC config: fADC/2, acq. time = 16 clocks => ADC Speed = 1MSPS
   805ce:	4a07      	ldr	r2, [pc, #28]	(805ec <.text+0x5ec>)
   805d0:	6018      	str	r0, [r3, #0]
   805d2:	3b04      	subs	r3, #4
   805d4:	601a      	str	r2, [r3, #0]
	while (!ADCSTA);			// wait for end of conversion
   805d6:	4b06      	ldr	r3, [pc, #24]	(805f0 <.text+0x5f0>)
   805d8:	681b      	ldr	r3, [r3, #0]
   805da:	2b00      	cmp	r3, #0
   805dc:	d0fb      	beq.n	805d6 <ReadADC+0xe>
	return (ADCDAT >> 16);
   805de:	4b05      	ldr	r3, [pc, #20]	(805f4 <.text+0x5f4>)
   805e0:	6818      	ldr	r0, [r3, #0]
   805e2:	0c00      	lsrs	r0, r0, #16
}
   805e4:	bc02      	pop	{r1}
   805e6:	4708      	bx	r1
   805e8:	0504      	lsls	r4, r0, #20
   805ea:	ffff 06a3 	vcvt.f<illegal width 64>.u<illegal width 64>	d16, d19
   805ee:	0000      	lsls	r0, r0, #0
   805f0:	050c      	lsls	r4, r1, #20
   805f2:	ffff 0510 	vsli.32	d16, d0, #31
   805f6:	ffff 4904 	vtbl.8	d20, {d15-d16}, d4

000805f8 <InitADC>:

void InitADC(void)
{
	int time;

	time = 20000;
	ADCCON = 0x20;	 					// power-on the ADC
   805f8:	4904      	ldr	r1, [pc, #16]	(8060c <.text+0x60c>)
   805fa:	2320      	movs	r3, #32
   805fc:	600b      	str	r3, [r1, #0]
	while (time >=0)	  				// wait for ADC to be fully powered on
		time--;

	REFCON = 0x01;				// connect internal 2.5V reference to Vref pin
   805fe:	4b04      	ldr	r3, [pc, #16]	(80610 <.text+0x610>)
   80600:	2201      	movs	r2, #1
   80602:	601a      	str	r2, [r3, #0]
	ADCCON = 0x623;				// ADC config: fADC/2, acq. time = 16 clocks => ADC Speed = 1MSPS
   80604:	4b03      	ldr	r3, [pc, #12]	(80614 <.text+0x614>)
   80606:	600b      	str	r3, [r1, #0]
}
   80608:	4770      	bx	lr
   8060a:	0000      	lsls	r0, r0, #0
   8060c:	0500      	lsls	r0, r0, #20
   8060e:	ffff 048c 	vraddhn.i<illegal width 128>	d16, <illegal reg q15.5>, q6
   80612:	ffff 0623 	vcvt.f<illegal width 64>.s<illegal width 64>	d16, d19
	...

00080618 <delay>:

void delay(DWORD duration /*us*/)
{
   80618:	b500      	push	{lr}
  DWORD i;

  i = (duration-1)*TiksPerUs;
   8061a:	0083      	lsls	r3, r0, #2
   8061c:	181b      	adds	r3, r3, r0
   8061e:	00db      	lsls	r3, r3, #3
  if ((DWORD)T1VAL > 0x80000000L) {
   80620:	490d      	ldr	r1, [pc, #52]	(80658 <.text+0x658>)
   80622:	181b      	adds	r3, r3, r0
   80624:	1c18      	adds	r0, r3, #0
   80626:	680a      	ldr	r2, [r1, #0]
   80628:	4b0c      	ldr	r3, [pc, #48]	(8065c <.text+0x65c>)
   8062a:	3829      	subs	r0, #41
   8062c:	429a      	cmp	r2, r3
   8062e:	d90a      	bls.n	80646 <delay+0x2e>
    i += T1VAL - 0x80000000L;
   80630:	680b      	ldr	r3, [r1, #0]
   80632:	490a      	ldr	r1, [pc, #40]	(8065c <.text+0x65c>)
   80634:	185b      	adds	r3, r3, r1
   80636:	181a      	adds	r2, r3, r0
	while ((DWORD)(T1VAL - 0x80000000L) < i);
   80638:	4b07      	ldr	r3, [pc, #28]	(80658 <.text+0x658>)
   8063a:	4908      	ldr	r1, [pc, #32]	(8065c <.text+0x65c>)
   8063c:	681b      	ldr	r3, [r3, #0]
   8063e:	185b      	adds	r3, r3, r1
   80640:	4293      	cmp	r3, r2
   80642:	d206      	bcs.n	80652 <delay+0x3a>
   80644:	e7f8      	b.n	80638 <delay+0x20>
  }
  else {
    i += T1VAL;
   80646:	680b      	ldr	r3, [r1, #0]
   80648:	18c2      	adds	r2, r0, r3
    while (T1VAL < i);
   8064a:	4b03      	ldr	r3, [pc, #12]	(80658 <.text+0x658>)
   8064c:	681b      	ldr	r3, [r3, #0]
   8064e:	4293      	cmp	r3, r2
   80650:	d3fb      	bcc.n	8064a <delay+0x32>
  } 
}
   80652:	bc01      	pop	{r0}
   80654:	4700      	bx	r0
   80656:	0000      	lsls	r0, r0, #0
   80658:	0324      	lsls	r4, r4, #12
   8065a:	ffff 0000 	vaddl.u<illegal width 64>	q8, d15, d0
   8065e:	8000      	strh	r0, [r0, #0]

00080660 <DumpXY>:
   80660:	b530      	push	{r4, r5, lr}
   80662:	b081      	sub	sp, #4
   80664:	2500      	movs	r5, #0
   80666:	2400      	movs	r4, #0
   80668:	4b07      	ldr	r3, [pc, #28]	(80688 <.text+0x688>)
   8066a:	58e2      	ldr	r2, [r4, r3]
   8066c:	4b07      	ldr	r3, [pc, #28]	(8068c <.text+0x68c>)
   8066e:	1c29      	adds	r1, r5, #0
   80670:	58e3      	ldr	r3, [r4, r3]
   80672:	4807      	ldr	r0, [pc, #28]	(80690 <.text+0x690>)
   80674:	3501      	adds	r5, #1
   80676:	f000 f8c3 	bl	80800 <rprintf>
   8067a:	3404      	adds	r4, #4
   8067c:	2d40      	cmp	r5, #64
   8067e:	d1f3      	bne.n	80668 <DumpXY+0x8>
   80680:	b001      	add	sp, #4
   80682:	bc30      	pop	{r4, r5}
   80684:	bc01      	pop	{r0}
   80686:	4700      	bx	r0
   80688:	0164      	lsls	r4, r4, #5
   8068a:	0001      	lsls	r1, r0, #0
   8068c:	0058      	lsls	r0, r3, #1
   8068e:	0001      	lsls	r1, r0, #0
   80690:	0b70      	lsrs	r0, r6, #13
   80692:	0008      	lsls	r0, r1, #0

00080694 <ScanXY>:
   80694:	b5f0      	push	{r4, r5, r6, r7, lr}
   80696:	b081      	sub	sp, #4
   80698:	2100      	movs	r1, #0
   8069a:	4b3f      	ldr	r3, [pc, #252]	(80798 <.text+0x798>)
   8069c:	2200      	movs	r2, #0
   8069e:	50ca      	str	r2, [r1, r3]
   806a0:	4b3e      	ldr	r3, [pc, #248]	(8079c <.text+0x79c>)
   806a2:	18cb      	adds	r3, r1, r3
   806a4:	601a      	str	r2, [r3, #0]
   806a6:	2380      	movs	r3, #128
   806a8:	3104      	adds	r1, #4
   806aa:	005b      	lsls	r3, r3, #1
   806ac:	4299      	cmp	r1, r3
   806ae:	d1f4      	bne.n	8069a <ScanXY+0x6>
   806b0:	493b      	ldr	r1, [pc, #236]	(807a0 <.text+0x7a0>)
   806b2:	2380      	movs	r3, #128
   806b4:	680a      	ldr	r2, [r1, #0]
   806b6:	02db      	lsls	r3, r3, #11
   806b8:	405a      	eors	r2, r3
   806ba:	2700      	movs	r7, #0
   806bc:	600a      	str	r2, [r1, #0]
   806be:	e045      	b.n	8074c <ScanXY+0xb8>
   806c0:	4838      	ldr	r0, [pc, #224]	(807a4 <.text+0x7a4>)
   806c2:	7832      	ldrb	r2, [r6, #0]
   806c4:	6801      	ldr	r1, [r0, #0]
   806c6:	4c38      	ldr	r4, [pc, #224]	(807a8 <.text+0x7a8>)
   806c8:	230f      	movs	r3, #15
   806ca:	4013      	ands	r3, r2
   806cc:	4021      	ands	r1, r4
   806ce:	051b      	lsls	r3, r3, #20
   806d0:	430b      	orrs	r3, r1
   806d2:	6003      	str	r3, [r0, #0]
   806d4:	3010      	adds	r0, #16
   806d6:	6801      	ldr	r1, [r0, #0]
   806d8:	23f0      	movs	r3, #240
   806da:	401a      	ands	r2, r3
   806dc:	4021      	ands	r1, r4
   806de:	0412      	lsls	r2, r2, #16
   806e0:	430a      	orrs	r2, r1
   806e2:	4b32      	ldr	r3, [pc, #200]	(807ac <.text+0x7ac>)
   806e4:	6002      	str	r2, [r0, #0]
   806e6:	2201      	movs	r2, #1
   806e8:	601a      	str	r2, [r3, #0]
   806ea:	4b31      	ldr	r3, [pc, #196]	(807b0 <.text+0x7b0>)
   806ec:	6818      	ldr	r0, [r3, #0]
   806ee:	f7ff ff93 	bl	80618 <delay>
   806f2:	4b2a      	ldr	r3, [pc, #168]	(8079c <.text+0x79c>)
   806f4:	4a2f      	ldr	r2, [pc, #188]	(807b4 <.text+0x7b4>)
   806f6:	58e9      	ldr	r1, [r5, r3]
   806f8:	4b2f      	ldr	r3, [pc, #188]	(807b8 <.text+0x7b8>)
   806fa:	601a      	str	r2, [r3, #0]
   806fc:	4b2f      	ldr	r3, [pc, #188]	(807bc <.text+0x7bc>)
   806fe:	681b      	ldr	r3, [r3, #0]
   80700:	2b00      	cmp	r3, #0
   80702:	d0fb      	beq.n	806fc <ScanXY+0x68>
   80704:	4b2e      	ldr	r3, [pc, #184]	(807c0 <.text+0x7c0>)
   80706:	681b      	ldr	r3, [r3, #0]
   80708:	4a24      	ldr	r2, [pc, #144]	(8079c <.text+0x79c>)
   8070a:	0c1b      	lsrs	r3, r3, #16
   8070c:	185b      	adds	r3, r3, r1
   8070e:	50ab      	str	r3, [r5, r2]
   80710:	4a26      	ldr	r2, [pc, #152]	(807ac <.text+0x7ac>)
   80712:	2302      	movs	r3, #2
   80714:	6013      	str	r3, [r2, #0]
   80716:	4b26      	ldr	r3, [pc, #152]	(807b0 <.text+0x7b0>)
   80718:	6818      	ldr	r0, [r3, #0]
   8071a:	08c0      	lsrs	r0, r0, #3
   8071c:	f7ff ff7c 	bl	80618 <delay>
   80720:	4b1d      	ldr	r3, [pc, #116]	(80798 <.text+0x798>)
   80722:	4a24      	ldr	r2, [pc, #144]	(807b4 <.text+0x7b4>)
   80724:	58e9      	ldr	r1, [r5, r3]
   80726:	4b24      	ldr	r3, [pc, #144]	(807b8 <.text+0x7b8>)
   80728:	601a      	str	r2, [r3, #0]
   8072a:	4b24      	ldr	r3, [pc, #144]	(807bc <.text+0x7bc>)
   8072c:	681b      	ldr	r3, [r3, #0]
   8072e:	2b00      	cmp	r3, #0
   80730:	d0fb      	beq.n	8072a <ScanXY+0x96>
   80732:	4b23      	ldr	r3, [pc, #140]	(807c0 <.text+0x7c0>)
   80734:	681b      	ldr	r3, [r3, #0]
   80736:	4a18      	ldr	r2, [pc, #96]	(80798 <.text+0x798>)
   80738:	0c1b      	lsrs	r3, r3, #16
   8073a:	185b      	adds	r3, r3, r1
   8073c:	50ab      	str	r3, [r5, r2]
   8073e:	2380      	movs	r3, #128
   80740:	3504      	adds	r5, #4
   80742:	005b      	lsls	r3, r3, #1
   80744:	3601      	adds	r6, #1
   80746:	429d      	cmp	r5, r3
   80748:	d1ba      	bne.n	806c0 <ScanXY+0x2c>
   8074a:	3701      	adds	r7, #1
   8074c:	4b1d      	ldr	r3, [pc, #116]	(807c4 <.text+0x7c4>)
   8074e:	6818      	ldr	r0, [r3, #0]
   80750:	043a      	lsls	r2, r7, #16
   80752:	2301      	movs	r3, #1
   80754:	0c12      	lsrs	r2, r2, #16
   80756:	4083      	lsls	r3, r0
   80758:	429a      	cmp	r2, r3
   8075a:	da02      	bge.n	80762 <ScanXY+0xce>
   8075c:	4e1a      	ldr	r6, [pc, #104]	(807c8 <.text+0x7c8>)
   8075e:	2500      	movs	r5, #0
   80760:	e7ae      	b.n	806c0 <ScanXY+0x2c>
   80762:	490f      	ldr	r1, [pc, #60]	(807a0 <.text+0x7a0>)
   80764:	2380      	movs	r3, #128
   80766:	680a      	ldr	r2, [r1, #0]
   80768:	02db      	lsls	r3, r3, #11
   8076a:	431a      	orrs	r2, r3
   8076c:	600a      	str	r2, [r1, #0]
   8076e:	2100      	movs	r1, #0
   80770:	4a0a      	ldr	r2, [pc, #40]	(8079c <.text+0x79c>)
   80772:	188a      	adds	r2, r1, r2
   80774:	6813      	ldr	r3, [r2, #0]
   80776:	40c3      	lsrs	r3, r0
   80778:	6013      	str	r3, [r2, #0]
   8077a:	4a07      	ldr	r2, [pc, #28]	(80798 <.text+0x798>)
   8077c:	188a      	adds	r2, r1, r2
   8077e:	6813      	ldr	r3, [r2, #0]
   80780:	40c3      	lsrs	r3, r0
   80782:	6013      	str	r3, [r2, #0]
   80784:	2380      	movs	r3, #128
   80786:	3104      	adds	r1, #4
   80788:	005b      	lsls	r3, r3, #1
   8078a:	4299      	cmp	r1, r3
   8078c:	d1f0      	bne.n	80770 <ScanXY+0xdc>
   8078e:	b001      	add	sp, #4
   80790:	bcf0      	pop	{r4, r5, r6, r7}
   80792:	bc01      	pop	{r0}
   80794:	4700      	bx	r0
   80796:	0000      	lsls	r0, r0, #0
   80798:	0058      	lsls	r0, r3, #1
   8079a:	0001      	lsls	r1, r0, #0
   8079c:	0164      	lsls	r4, r4, #5
   8079e:	0001      	lsls	r1, r0, #0
   807a0:	f460 ffff 	bl	ffce17a2 <_etext+0xffc60c1e>
   807a4:	f420 ffff 	bl	ffca17a6 <_etext+0xffc20c22>
   807a8:	ffff ff0f 	undefined
   807ac:	0504      	lsls	r4, r0, #20
   807ae:	ffff 015c 	vsra.u32	q8, q6, #1
   807b2:	0001      	lsls	r1, r0, #0
   807b4:	06a3      	lsls	r3, r4, #26
   807b6:	0000      	lsls	r0, r0, #0
   807b8:	0500      	lsls	r0, r0, #20
   807ba:	ffff 050c 	vabal.u<illegal width 64>	q8, d15, d12
   807be:	ffff 0510 	vsli.32	d16, d0, #31
   807c2:	ffff 0050 	vshr.u32	q8, q0, #1
   807c6:	0001      	lsls	r1, r0, #0
   807c8:	09f6      	lsrs	r6, r6, #7
   807ca:	0008      	lsls	r0, r1, #0

000807cc <rprintf_devopen>:
static int (*putcharfunc)(int c);

void rprintf_devopen( int(*put)(int) )
{
   putcharfunc = put;
   807cc:	4b01      	ldr	r3, [pc, #4]	(807d4 <.text+0x7d4>)
   807ce:	6018      	str	r0, [r3, #0]
}
   807d0:	4770      	bx	lr
   807d2:	0000      	lsls	r0, r0, #0
   807d4:	0004      	lsls	r4, r0, #0
   807d6:	0001      	lsls	r1, r0, #0

000807d8 <myputchar>:

static void myputchar(unsigned char c)
{
   807d8:	b510      	push	{r4, lr}
   807da:	1c04      	adds	r4, r0, #0
	if(c == '\n') putcharfunc('\r');
   807dc:	280a      	cmp	r0, #10
   807de:	d104      	bne.n	807ea <myputchar+0x12>
   807e0:	4b06      	ldr	r3, [pc, #24]	(807fc <.text+0x7fc>)
   807e2:	200d      	movs	r0, #13
   807e4:	681b      	ldr	r3, [r3, #0]
   807e6:	f000 f8bb 	bl	80960 <rprintf+0x160>
	putcharfunc(c);
   807ea:	4b04      	ldr	r3, [pc, #16]	(807fc <.text+0x7fc>)
   807ec:	1c20      	adds	r0, r4, #0
   807ee:	681b      	ldr	r3, [r3, #0]
   807f0:	f000 f8b6 	bl	80960 <rprintf+0x160>
}
   807f4:	bc10      	pop	{r4}
   807f6:	bc01      	pop	{r0}
   807f8:	4700      	bx	r0
   807fa:	0000      	lsls	r0, r0, #0
   807fc:	0004      	lsls	r4, r0, #0
   807fe:	0001      	lsls	r1, r0, #0

00080800 <rprintf>:

void rprintf(char const *format, ...)
{
   80800:	b40f      	push	{r0, r1, r2, r3}
   80802:	b5f0      	push	{r4, r5, r6, r7, lr}
   80804:	b087      	sub	sp, #28
   80806:	ab0c      	add	r3, sp, #48
   80808:	cb20      	ldmia	r3!, {r5}
  unsigned char scratch[SCRATCH];
  unsigned char format_flag;
  unsigned short base;
  unsigned char *ptr;
  unsigned char issigned=0;
  va_list ap;

#ifdef USE_LONG
// #warning "use long"
  unsigned char islong=0;
  unsigned long u_val=0;
  long s_val=0;
#else
  unsigned int u_val=0;
  int s_val=0;
#endif

  unsigned char fill;
  unsigned char width;

  va_start (ap, format);
   8080a:	9305      	str	r3, [sp, #20]
   8080c:	e004      	b.n	80818 <rprintf+0x18>
  for (;;){
    while ((format_flag = *(format++)) != '%'){      // Until '%' or '\0' 
      if (!format_flag){va_end (ap); return;}
   8080e:	2800      	cmp	r0, #0
   80810:	d100      	bne.n	80814 <rprintf+0x14>
   80812:	e0a0      	b.n	80956 <rprintf+0x156>
      myputchar(format_flag);
   80814:	f7ff ffe0 	bl	807d8 <myputchar>
   80818:	7828      	ldrb	r0, [r5, #0]
   8081a:	3501      	adds	r5, #1
   8081c:	2825      	cmp	r0, #37
   8081e:	d1f6      	bne.n	8080e <rprintf+0xe>
    }

    issigned=0; //default unsigned
    base = 10;

    format_flag = *format++; //get char after '%'
   80820:	782a      	ldrb	r2, [r5, #0]
   80822:	3501      	adds	r5, #1

#ifdef PADDING
    width=0; //no formatting
    fill=0;  //no formatting
    if(format_flag=='0' || format_flag==' ') //SPACE or ZERO padding  ?
   80824:	2a30      	cmp	r2, #48
   80826:	d004      	beq.n	80832 <rprintf+0x32>
   80828:	2a20      	cmp	r2, #32
   8082a:	d002      	beq.n	80832 <rprintf+0x32>
   8082c:	1c10      	adds	r0, r2, #0
   8082e:	2200      	movs	r2, #0
   80830:	e007      	b.n	80842 <rprintf+0x42>
     {
      fill=format_flag;
      format_flag = *format++; //get char after padding char
   80832:	7828      	ldrb	r0, [r5, #0]
      if(format_flag>='0' && format_flag<='9')
   80834:	1c03      	adds	r3, r0, #0
   80836:	3b30      	subs	r3, #48
   80838:	061b      	lsls	r3, r3, #24
   8083a:	0e1f      	lsrs	r7, r3, #24
   8083c:	3501      	adds	r5, #1
   8083e:	2f09      	cmp	r7, #9
   80840:	d902      	bls.n	80848 <rprintf+0x48>
   80842:	2700      	movs	r7, #0
   80844:	9201      	str	r2, [sp, #4]
   80846:	e002      	b.n	8084e <rprintf+0x4e>
       {
        width=format_flag-'0';
        format_flag = *format++; //get char after width char
   80848:	7828      	ldrb	r0, [r5, #0]
   8084a:	9201      	str	r2, [sp, #4]
   8084c:	3501      	adds	r5, #1
       }
     }
#endif

#ifdef USE_LONG
    islong=0; //default int value
#ifdef USE_UPPER
    if(format_flag=='l' || format_flag=='L') //Long value 
   8084e:	286c      	cmp	r0, #108
   80850:	d001      	beq.n	80856 <rprintf+0x56>
   80852:	284c      	cmp	r0, #76
   80854:	d101      	bne.n	8085a <rprintf+0x5a>
#else
    if(format_flag=='l') //Long value 
#endif
     {
      islong=1;
      format_flag = *format++; //get char after 'l' or 'L'
   80856:	7828      	ldrb	r0, [r5, #0]
   80858:	3501      	adds	r5, #1
     }
#endif

    switch (format_flag)
   8085a:	2858      	cmp	r0, #88
   8085c:	d030      	beq.n	808c0 <rprintf+0xc0>
   8085e:	2858      	cmp	r0, #88
   80860:	d80d      	bhi.n	8087e <rprintf+0x7e>
   80862:	2849      	cmp	r0, #73
   80864:	d02e      	beq.n	808c4 <rprintf+0xc4>
   80866:	2849      	cmp	r0, #73
   80868:	d804      	bhi.n	80874 <rprintf+0x74>
   8086a:	2843      	cmp	r0, #67
   8086c:	d017      	beq.n	8089e <rprintf+0x9e>
   8086e:	2844      	cmp	r0, #68
   80870:	d1d0      	bne.n	80814 <rprintf+0x14>
   80872:	e027      	b.n	808c4 <rprintf+0xc4>
   80874:	2853      	cmp	r0, #83
   80876:	d017      	beq.n	808a8 <rprintf+0xa8>
   80878:	2855      	cmp	r0, #85
   8087a:	d1cb      	bne.n	80814 <rprintf+0x14>
   8087c:	e069      	b.n	80952 <rprintf+0x152>
   8087e:	2869      	cmp	r0, #105
   80880:	d020      	beq.n	808c4 <rprintf+0xc4>
   80882:	2869      	cmp	r0, #105
   80884:	d804      	bhi.n	80890 <rprintf+0x90>
   80886:	2863      	cmp	r0, #99
   80888:	d009      	beq.n	8089e <rprintf+0x9e>
   8088a:	2864      	cmp	r0, #100
   8088c:	d1c2      	bne.n	80814 <rprintf+0x14>
   8088e:	e019      	b.n	808c4 <rprintf+0xc4>
   80890:	2875      	cmp	r0, #117
   80892:	d05e      	beq.n	80952 <rprintf+0x152>
   80894:	2878      	cmp	r0, #120
   80896:	d013      	beq.n	808c0 <rprintf+0xc0>
   80898:	2873      	cmp	r0, #115
   8089a:	d1bb      	bne.n	80814 <rprintf+0x14>
   8089c:	e004      	b.n	808a8 <rprintf+0xa8>
    {
#ifdef USE_CHAR
    case 'c':
#ifdef USE_UPPER
    case 'C':
#endif
      format_flag = va_arg(ap,int);
   8089e:	9a05      	ldr	r2, [sp, #20]
   808a0:	7810      	ldrb	r0, [r2, #0]
   808a2:	1d13      	adds	r3, r2, #4
   808a4:	9305      	str	r3, [sp, #20]
   808a6:	e7b5      	b.n	80814 <rprintf+0x14>
      // no break -> run into default
#endif

    default:
      myputchar(format_flag);
      continue;

#ifdef USE_STRING
#ifdef USE_UPPER
    case 'S':
#endif
    case 's':
      ptr = (unsigned char*)va_arg(ap,char *);
   808a8:	9a05      	ldr	r2, [sp, #20]
   808aa:	6814      	ldr	r4, [r2, #0]
   808ac:	1d13      	adds	r3, r2, #4
   808ae:	9305      	str	r3, [sp, #20]
   808b0:	e002      	b.n	808b8 <rprintf+0xb8>
      while(*ptr) { myputchar(*ptr); ptr++; }
   808b2:	f7ff ff91 	bl	807d8 <myputchar>
   808b6:	3401      	adds	r4, #1
   808b8:	7820      	ldrb	r0, [r4, #0]
   808ba:	2800      	cmp	r0, #0
   808bc:	d1f9      	bne.n	808b2 <rprintf+0xb2>
   808be:	e7ab      	b.n	80818 <rprintf+0x18>
   808c0:	2010      	movs	r0, #16
   808c2:	e00c      	b.n	808de <rprintf+0xde>
   808c4:	9a05      	ldr	r2, [sp, #20]
      continue;
#endif

#ifdef USE_OCTAL
    case 'o':
#ifdef USE_UPPER
    case 'O':
#endif
      base = 8;
      myputchar('0');
      goto CONVERSION_LOOP;
#endif

#ifdef USE_INTEGER //don't use %i, is same as %d
    case 'i':
#ifdef USE_UPPER
    case 'I':
#endif
#endif
    case 'd':
#ifdef USE_UPPER
    case 'D':
#endif
      issigned=1;
      // no break -> run into next case
    case 'u':
#ifdef USE_UPPER
    case 'U':
#endif

//don't insert some case below this if USE_HEX is undefined !
//or put       goto CONVERSION_LOOP;  before next case.
#ifdef USE_HEX
      goto CONVERSION_LOOP;
    case 'x':
#ifdef USE_UPPER
    case 'X':
#endif
      base = 16;
#endif

    CONVERSION_LOOP:

      if(issigned) //Signed types
       {
#ifdef USE_LONG
        if(islong) { s_val = va_arg(ap,long); }
        else { s_val = va_arg(ap,int); }
   808c6:	1d13      	adds	r3, r2, #4
   808c8:	9305      	str	r3, [sp, #20]
   808ca:	6814      	ldr	r4, [r2, #0]
#else
        s_val = va_arg(ap,int);
#endif

        if(s_val < 0) //Value negativ ?
   808cc:	2c00      	cmp	r4, #0
   808ce:	da03      	bge.n	808d8 <rprintf+0xd8>
         {
          s_val = - s_val; //Make it positiv
          myputchar('-');    //Output sign
   808d0:	202d      	movs	r0, #45
   808d2:	4264      	negs	r4, r4
   808d4:	f7ff ff80 	bl	807d8 <myputchar>
         }

        u_val = (unsigned long)s_val;
   808d8:	220a      	movs	r2, #10
   808da:	9200      	str	r2, [sp, #0]
   808dc:	e004      	b.n	808e8 <rprintf+0xe8>
       }
      else //Unsigned types
       {
#ifdef USE_LONG
        if(islong) { u_val = va_arg(ap,unsigned long); }
        else { u_val = va_arg(ap,unsigned int); }
   808de:	9a05      	ldr	r2, [sp, #20]
   808e0:	1d13      	adds	r3, r2, #4
#else
        u_val = va_arg(ap,unsigned int);
#endif
       }
    
      ptr = scratch + SCRATCH;
      *--ptr = 0;
      do
       {
        char ch = u_val % base + '0';
#ifdef USE_HEX
        if (ch > '9')
         {
          ch += 'a' - '9' - 1;
#ifdef USE_UPPERHEX
          ch-=0x20;
#endif
         }
#endif          
        *--ptr = ch;
        u_val /= base;

#ifdef PADDING
        if(width) width--; //calculate number of padding chars
#endif
      } while (u_val);

#ifdef PADDING
     while(width--) *--ptr = fill; //insert padding chars		      
#endif

      while(*ptr) { myputchar(*ptr); ptr++; }
   808e2:	9000      	str	r0, [sp, #0]
   808e4:	9305      	str	r3, [sp, #20]
   808e6:	6814      	ldr	r4, [r2, #0]
   808e8:	2200      	movs	r2, #0
   808ea:	ab02      	add	r3, sp, #8
   808ec:	466e      	mov	r6, sp
   808ee:	72da      	strb	r2, [r3, #11]
   808f0:	3613      	adds	r6, #19
   808f2:	1c20      	adds	r0, r4, #0
   808f4:	9900      	ldr	r1, [sp, #0]
   808f6:	f000 f873 	bl	809e0 <__aeabi_uidivmod>
   808fa:	3130      	adds	r1, #48
   808fc:	0609      	lsls	r1, r1, #24
   808fe:	0e09      	lsrs	r1, r1, #24
   80900:	2939      	cmp	r1, #57
   80902:	d902      	bls.n	8090a <rprintf+0x10a>
   80904:	1dcb      	adds	r3, r1, #7
   80906:	061b      	lsls	r3, r3, #24
   80908:	0e19      	lsrs	r1, r3, #24
   8090a:	3e01      	subs	r6, #1
   8090c:	7031      	strb	r1, [r6, #0]
   8090e:	1c20      	adds	r0, r4, #0
   80910:	9900      	ldr	r1, [sp, #0]
   80912:	f000 f827 	bl	80964 <__aeabi_uidiv>
   80916:	1c04      	adds	r4, r0, #0
   80918:	2f00      	cmp	r7, #0
   8091a:	d002      	beq.n	80922 <rprintf+0x122>
   8091c:	1e7b      	subs	r3, r7, #1
   8091e:	061b      	lsls	r3, r3, #24
   80920:	0e1f      	lsrs	r7, r3, #24
   80922:	2c00      	cmp	r4, #0
   80924:	d1e5      	bne.n	808f2 <rprintf+0xf2>
   80926:	1c39      	adds	r1, r7, #0
   80928:	1c32      	adds	r2, r6, #0
   8092a:	e004      	b.n	80936 <rprintf+0x136>
   8092c:	466b      	mov	r3, sp
   8092e:	1d18      	adds	r0, r3, #4
   80930:	7803      	ldrb	r3, [r0, #0]
   80932:	3e01      	subs	r6, #1
   80934:	7033      	strb	r3, [r6, #0]
   80936:	1e7b      	subs	r3, r7, #1
   80938:	061b      	lsls	r3, r3, #24
   8093a:	0e1f      	lsrs	r7, r3, #24
   8093c:	2fff      	cmp	r7, #255
   8093e:	d1f5      	bne.n	8092c <rprintf+0x12c>
   80940:	1a54      	subs	r4, r2, r1
   80942:	e002      	b.n	8094a <rprintf+0x14a>
   80944:	f7ff ff48 	bl	807d8 <myputchar>
   80948:	3401      	adds	r4, #1
   8094a:	7820      	ldrb	r0, [r4, #0]
   8094c:	2800      	cmp	r0, #0
   8094e:	d1f9      	bne.n	80944 <rprintf+0x144>
   80950:	e762      	b.n	80818 <rprintf+0x18>
   80952:	200a      	movs	r0, #10
   80954:	e7c3      	b.n	808de <rprintf+0xde>
    }
  }
}
   80956:	b007      	add	sp, #28
   80958:	bcf0      	pop	{r4, r5, r6, r7}
   8095a:	bc08      	pop	{r3}
   8095c:	b004      	add	sp, #16
   8095e:	4718      	bx	r3
   80960:	4718      	bx	r3
   80962:	46c0      	nop			(mov r8, r8)

00080964 <__aeabi_uidiv>:
   80964:	2900      	cmp	r1, #0
   80966:	d034      	beq.n	809d2 <__aeabi_uidiv+0x6e>
   80968:	2301      	movs	r3, #1
   8096a:	2200      	movs	r2, #0
   8096c:	b410      	push	{r4}
   8096e:	4288      	cmp	r0, r1
   80970:	d32c      	bcc.n	809cc <__aeabi_uidiv+0x68>
   80972:	2401      	movs	r4, #1
   80974:	0724      	lsls	r4, r4, #28
   80976:	42a1      	cmp	r1, r4
   80978:	d204      	bcs.n	80984 <__aeabi_uidiv+0x20>
   8097a:	4281      	cmp	r1, r0
   8097c:	d202      	bcs.n	80984 <__aeabi_uidiv+0x20>
   8097e:	0109      	lsls	r1, r1, #4
   80980:	011b      	lsls	r3, r3, #4
   80982:	e7f8      	b.n	80976 <__aeabi_uidiv+0x12>
   80984:	00e4      	lsls	r4, r4, #3
   80986:	42a1      	cmp	r1, r4
   80988:	d204      	bcs.n	80994 <__aeabi_uidiv+0x30>
   8098a:	4281      	cmp	r1, r0
   8098c:	d202      	bcs.n	80994 <__aeabi_uidiv+0x30>
   8098e:	0049      	lsls	r1, r1, #1
   80990:	005b      	lsls	r3, r3, #1
   80992:	e7f8      	b.n	80986 <__aeabi_uidiv+0x22>
   80994:	4288      	cmp	r0, r1
   80996:	d301      	bcc.n	8099c <__aeabi_uidiv+0x38>
   80998:	1a40      	subs	r0, r0, r1
   8099a:	431a      	orrs	r2, r3
   8099c:	084c      	lsrs	r4, r1, #1
   8099e:	42a0      	cmp	r0, r4
   809a0:	d302      	bcc.n	809a8 <__aeabi_uidiv+0x44>
   809a2:	1b00      	subs	r0, r0, r4
   809a4:	085c      	lsrs	r4, r3, #1
   809a6:	4322      	orrs	r2, r4
   809a8:	088c      	lsrs	r4, r1, #2
   809aa:	42a0      	cmp	r0, r4
   809ac:	d302      	bcc.n	809b4 <__aeabi_uidiv+0x50>
   809ae:	1b00      	subs	r0, r0, r4
   809b0:	089c      	lsrs	r4, r3, #2
   809b2:	4322      	orrs	r2, r4
   809b4:	08cc      	lsrs	r4, r1, #3
   809b6:	42a0      	cmp	r0, r4
   809b8:	d302      	bcc.n	809c0 <__aeabi_uidiv+0x5c>
   809ba:	1b00      	subs	r0, r0, r4
   809bc:	08dc      	lsrs	r4, r3, #3
   809be:	4322      	orrs	r2, r4
   809c0:	2800      	cmp	r0, #0
   809c2:	d003      	beq.n	809cc <__aeabi_uidiv+0x68>
   809c4:	091b      	lsrs	r3, r3, #4
   809c6:	d001      	beq.n	809cc <__aeabi_uidiv+0x68>
   809c8:	0909      	lsrs	r1, r1, #4
   809ca:	e7e3      	b.n	80994 <__aeabi_uidiv+0x30>
   809cc:	1c10      	adds	r0, r2, #0
   809ce:	bc10      	pop	{r4}
   809d0:	4770      	bx	lr
   809d2:	b502      	push	{r1, lr}
   809d4:	f000 f80c 	bl	809f0 <__aeabi_idiv0>
   809d8:	2000      	movs	r0, #0
   809da:	bc06      	pop	{r1, r2}
   809dc:	4710      	bx	r2
	...

000809e0 <__aeabi_uidivmod>:
   809e0:	b503      	push	{r0, r1, lr}
   809e2:	f7ff ffbf 	bl	80964 <__aeabi_uidiv>
   809e6:	bc0e      	pop	{r1, r2, r3}
   809e8:	4342      	muls	r2, r0
   809ea:	1a89      	subs	r1, r1, r2
   809ec:	4718      	bx	r3
   809ee:	46c0      	nop			(mov r8, r8)

000809f0 <__aeabi_idiv0>:
   809f0:	4770      	bx	lr
   809f2:	46c0      	nop			(mov r8, r8)
