; generated by ARM C/C++ Compiler, 4.1 [Build 894]
; commandline ArmCC [--c99 --list --split_sections --debug -c --asm --interleave -o.\obj\nano1xx_retarget.o --asm_dir=.\lst\ --list_dir=.\lst\ --depend=.\obj\nano1xx_retarget.d --cpu=Cortex-M0 --apcs=interwork -I..\inc -I..\drv -I..\bsp -I..\bsp\Cmsis -I..\bsp\Driver -I..\bsp\system -I..\lib -I..\lib\libtk -IC:\Keil\ARM\RV31\Inc -IC:\Keil\ARM\CMSIS\Include -D__MICROLIB -D__LCDDISPLAY_BTL001_H --omf_browse=.\obj\nano1xx_retarget.crf ..\bsp\Driver\nano1xx_retarget.c]
                          THUMB

                          AREA ||i.GetChar||, CODE, READONLY, ALIGN=2

                  GetChar PROC
;;;117    /*---------------------------------------------------------------------------------------------------------*/
;;;118    char GetChar(void)
000000  b538              PUSH     {r3-r5,lr}
;;;119    {
;;;120    #if defined(DEBUG_ENABLE_SEMIHOST) && !defined(__ICCARM__) /* IAR don't support semihosted getchar */
;;;121    	int nRet;
;;;122    	while(SH_DoCommand(0x101, 0, &nRet) != 0)
000002  25ff              MOVS     r5,#0xff
000004  3502              ADDS     r5,#2
;;;123    	{
;;;124    		if(nRet != 0)
;;;125    		{
;;;126    			SH_DoCommand(0x07, 0, &nRet);
;;;127    			return (char)nRet;
;;;128    		}
;;;129    	}
;;;130    #endif
;;;131    
;;;132    	if(DEBUG_PORT == 1)
;;;133    	{
;;;134    		while (1){
;;;135    			if((UART1->FSR & UART_FSR_RX_EMPTY_F) == 0 )
;;;136    			{
;;;137    				return (UART1->RBR);
;;;138    				
;;;139    		    }
;;;140    		}
;;;141    	}
;;;142    	else if(DEBUG_PORT == 0)
;;;143    	{
;;;144    		while (1){
;;;145    			if((UART0->FSR & UART_FSR_RX_EMPTY_F) == 0 )
000006  4c0c              LDR      r4,|L1.56|
000008  e009              B        |L1.30|
                  |L1.10|
00000a  9800              LDR      r0,[sp,#0]            ;124
00000c  2800              CMP      r0,#0                 ;124
00000e  d006              BEQ      |L1.30|
000010  466a              MOV      r2,sp                 ;126
000012  2100              MOVS     r1,#0                 ;126
000014  2007              MOVS     r0,#7                 ;126
000016  f7fffffe          BL       SH_DoCommand
00001a  9800              LDR      r0,[sp,#0]            ;127
00001c  e00a              B        |L1.52|
                  |L1.30|
00001e  466a              MOV      r2,sp                 ;122
000020  2100              MOVS     r1,#0                 ;122
000022  4628              MOV      r0,r5                 ;122
000024  f7fffffe          BL       SH_DoCommand
000028  2800              CMP      r0,#0                 ;122
00002a  d1ee              BNE      |L1.10|
                  |L1.44|
00002c  69a0              LDR      r0,[r4,#0x18]
00002e  0780              LSLS     r0,r0,#30
000030  d4fc              BMI      |L1.44|
;;;146    			{
;;;147    				return (UART0->RBR);
000032  6820              LDR      r0,[r4,#0]
                  |L1.52|
000034  b2c0              UXTB     r0,r0
;;;148    				
;;;149    		    }
;;;150    		}
;;;151    	}
;;;152    	else 
;;;153    		return NULL;
;;;154    
;;;155    }
000036  bd38              POP      {r3-r5,pc}
;;;156    
                          ENDP

                  |L1.56|
                          DCD      0x40050000

                          AREA ||i.IsDebugFifoEmpty||, CODE, READONLY, ALIGN=2

                  IsDebugFifoEmpty PROC
;;;181    /*---------------------------------------------------------------------------------------------------------*/
;;;182    int IsDebugFifoEmpty(void)
000000  4803              LDR      r0,|L2.16|
;;;183    {
;;;184    #if(DEBUG_PORT == 0)
;;;185        if (UART0->FSR & UART_FSR_TE_F)
000002  6980              LDR      r0,[r0,#0x18]
000004  0500              LSLS     r0,r0,#20
000006  d501              BPL      |L2.12|
;;;186    	   return 1;
000008  2001              MOVS     r0,#1
;;;187    	else
;;;188    		return 0;
;;;189    #elif(DEBUG_PORT == 1)
;;;190        if (UART1->FSR & UART_FSR_TE_F)
;;;191    	   return 1;
;;;192    	else
;;;193    	   return 0;
;;;194    #else
;;;195        if (UART2->FSR & UART_FSR_TE_F)
;;;196    	   return 1;
;;;197    	else
;;;198    	   return 0;
;;;199    #endif    
;;;200    }
00000a  4770              BX       lr
                  |L2.12|
00000c  2000              MOVS     r0,#0                 ;188
00000e  4770              BX       lr
;;;201    
                          ENDP

                  |L2.16|
                          DCD      0x40050000

                          AREA ||i.SendChar||, CODE, READONLY, ALIGN=2

                  SendChar PROC
;;;85     
;;;86     void SendChar(int ch)
000000  b570              PUSH     {r4-r6,lr}
;;;87     {
;;;88     #if defined(DEBUG_ENABLE_SEMIHOST)
;;;89     	g_buf[g_buf_len++] = ch;
000002  4c12              LDR      r4,|L3.76|
000004  4e10              LDR      r6,|L3.72|
000006  7821              LDRB     r1,[r4,#0]  ; g_buf_len
;;;90     	g_buf[g_buf_len] = '\0';
000008  2500              MOVS     r5,#0
00000a  5470              STRB     r0,[r6,r1]            ;89
00000c  1c49              ADDS     r1,r1,#1              ;89
00000e  b2c9              UXTB     r1,r1                 ;89
000010  7021              STRB     r1,[r4,#0]            ;89
000012  5475              STRB     r5,[r6,r1]
;;;91     	if(g_buf_len + 1 >= sizeof(g_buf) || ch == '\n' || ch == '\0')
000014  1c49              ADDS     r1,r1,#1
000016  2910              CMP      r1,#0x10
000018  d203              BCS      |L3.34|
00001a  280a              CMP      r0,#0xa
00001c  d001              BEQ      |L3.34|
00001e  2800              CMP      r0,#0
000020  d110              BNE      |L3.68|
                  |L3.34|
;;;92     	{
;;;93     
;;;94     		/* Send the char */
;;;95     		if(SH_DoCommand(0x04, (int)g_buf, NULL) != 0)
000022  2200              MOVS     r2,#0
000024  4908              LDR      r1,|L3.72|
000026  2004              MOVS     r0,#4
000028  f7fffffe          BL       SH_DoCommand
00002c  2800              CMP      r0,#0
00002e  d108              BNE      |L3.66|
;;;96             {
;;;97                 g_buf_len = 0;
;;;98     			return;
;;;99             }
;;;100            else
;;;101            {
;;;102                int i;
;;;103    
;;;104                for(i=0;i<g_buf_len;i++)
000030  2300              MOVS     r3,#0
000032  e003              B        |L3.60|
                  |L3.52|
;;;105                    SendChar_ToUART(g_buf[i]);
000034  5cf0              LDRB     r0,[r6,r3]
000036  f7fffffe          BL       SendChar_ToUART
00003a  1c5b              ADDS     r3,r3,#1              ;104
                  |L3.60|
00003c  7820              LDRB     r0,[r4,#0]            ;104  ; g_buf_len
00003e  4283              CMP      r3,r0                 ;104
000040  dbf8              BLT      |L3.52|
                  |L3.66|
;;;106    		    g_buf_len = 0;
000042  7025              STRB     r5,[r4,#0]
                  |L3.68|
;;;107            }
;;;108    	}
;;;109    #else
;;;110        SendChar_ToUART(ch);
;;;111    #endif
;;;112    }
000044  bd70              POP      {r4-r6,pc}
;;;113    
                          ENDP

000046  0000              DCW      0x0000
                  |L3.72|
                          DCD      ||.bss||
                  |L3.76|
                          DCD      ||.data||

                          AREA ||i.SendChar_ToUART||, CODE, READONLY, ALIGN=2

                  SendChar_ToUART PROC
;;;60     
;;;61     void SendChar_ToUART(int ch)
000000  4906              LDR      r1,|L4.28|
                  |L4.2|
;;;62     {
;;;63     	if(DEBUG_PORT == 1)
;;;64     	{
;;;65     	    while(UART1->FSR & UART_FSR_TX_FULL_F);
;;;66     		UART1->THR = ch;
;;;67     	    if(ch == '\n'){
;;;68     	        while(UART1->FSR & UART_FSR_TX_FULL_F);
;;;69     	        UART1->THR = '\r';
;;;70     	    }
;;;71     	}
;;;72     	else if(DEBUG_PORT == 0)
;;;73     	{
;;;74     		while(UART0->FSR & UART_FSR_TX_FULL_F);
000002  698a              LDR      r2,[r1,#0x18]
000004  0552              LSLS     r2,r2,#21
000006  d4fc              BMI      |L4.2|
;;;75     		UART0->THR = ch;
000008  6008              STR      r0,[r1,#0]
;;;76     	    if(ch == '\n'){
00000a  280a              CMP      r0,#0xa
00000c  d104              BNE      |L4.24|
                  |L4.14|
;;;77     	        while(UART0->FSR & UART_FSR_TX_FULL_F);
00000e  6988              LDR      r0,[r1,#0x18]
000010  0540              LSLS     r0,r0,#21
000012  d4fc              BMI      |L4.14|
;;;78     	        UART0->THR = '\r';
000014  200d              MOVS     r0,#0xd
000016  6008              STR      r0,[r1,#0]
                  |L4.24|
;;;79     	    }
;;;80     	}
;;;81     	else 
;;;82     		;
;;;83     }
000018  4770              BX       lr
;;;84     
                          ENDP

00001a  0000              DCW      0x0000
                  |L4.28|
                          DCD      0x40050000

                          AREA ||i._sys_exit||, CODE, READONLY, ALIGN=2

                  _sys_exit PROC
;;;238    # else
;;;239    void _sys_exit(int return_code) {
000000  2200              MOVS     r2,#0
;;;240    
;;;241        /* Check if link with ICE */
;;;242    	if(SH_DoCommand(0x18, 0x20026, NULL) == 0)
000002  4905              LDR      r1,|L5.24|
000004  2018              MOVS     r0,#0x18
000006  f7fffffe          BL       SH_DoCommand
00000a  e001              B        |L5.16|
                  |L5.12|
;;;243        {
;;;244            /* Make sure all message is print out */
;;;245            while(IsDebugFifoEmpty() == 0);
00000c  f7fffffe          BL       IsDebugFifoEmpty
                  |L5.16|
000010  2800              CMP      r0,#0                 ;242
000012  d0fb              BEQ      |L5.12|
                  |L5.20|
;;;246        }
;;;247    label:  goto label;  /* endless loop */
000014  e7fe              B        |L5.20|
;;;248    }
;;;249    # endif
                          ENDP

000016  0000              DCW      0x0000
                  |L5.24|
                          DCD      0x00020026

                          AREA ||i._ttywrch||, CODE, READONLY, ALIGN=1

                  _ttywrch PROC
;;;204    /*---------------------------------------------------------------------------------------------------------*/
;;;205    void _ttywrch(int ch)
000000  b510              PUSH     {r4,lr}
;;;206    {
;;;207      SendChar(ch);
000002  f7fffffe          BL       SendChar
;;;208      return;
;;;209    }
000006  bd10              POP      {r4,pc}
;;;210    
                          ENDP


                          AREA ||i.ferror||, CODE, READONLY, ALIGN=1

                  ferror PROC
;;;221    
;;;222    int ferror(FILE *f) {
000000  2000              MOVS     r0,#0
;;;223      return EOF;
000002  43c0              MVNS     r0,r0
;;;224    }
000004  4770              BX       lr
;;;225    
                          ENDP


                          AREA ||i.fgetc||, CODE, READONLY, ALIGN=1

                  fgetc PROC
;;;216    
;;;217    int fgetc(FILE *f) {
000000  b510              PUSH     {r4,lr}
;;;218      return (GetChar());
000002  f7fffffe          BL       GetChar
;;;219    }
000006  bd10              POP      {r4,pc}
;;;220    
                          ENDP


                          AREA ||i.fputc||, CODE, READONLY, ALIGN=1

                  fputc PROC
;;;210    
;;;211    int fputc(int ch, FILE *f)
000000  b510              PUSH     {r4,lr}
;;;212    {
000002  4604              MOV      r4,r0
;;;213      SendChar(ch);
000004  f7fffffe          BL       SendChar
;;;214      return ch;
000008  4620              MOV      r0,r4
;;;215    }
00000a  bd10              POP      {r4,pc}
;;;216    
                          ENDP


                          AREA ||i.kbhit||, CODE, READONLY, ALIGN=2

                  kbhit PROC
;;;159    /*---------------------------------------------------------------------------------------------------------*/
;;;160    int kbhit(void)
000000  4803              LDR      r0,|L10.16|
;;;161    {
;;;162    #if(DEBUG_PORT == 0)
;;;163        if (UART0->FSR & UART_FSR_RX_EMPTY_F)
000002  6980              LDR      r0,[r0,#0x18]
000004  0780              LSLS     r0,r0,#30
000006  d501              BPL      |L10.12|
;;;164    	    return 0;
000008  2000              MOVS     r0,#0
;;;165    	else
;;;166    		return 1;
;;;167    #elif(DEBUG_PORT == 1)
;;;168        if (UART1->FSR & UART_FSR_RX_EMPTY_F)
;;;169    	    return 0;
;;;170    	else
;;;171    		return 1;
;;;172    #else
;;;173        if (UART2->FSR & UART_FSR_RX_EMPTY_F)
;;;174    	    return 0;
;;;175    	else
;;;176    		return 1;
;;;177    #endif    
;;;178    }
00000a  4770              BX       lr
                  |L10.12|
00000c  2001              MOVS     r0,#1                 ;166
00000e  4770              BX       lr
;;;179    /*---------------------------------------------------------------------------------------------------------*/
                          ENDP

                  |L10.16|
                          DCD      0x40050000

                          AREA ||.bss||, DATA, NOINIT, ALIGN=0

                  g_buf
                          %        16

                          AREA ||.data||, DATA, ALIGN=0

                  g_buf_len
000000  00                DCB      0x00

                          AREA ||area_number.15||, DATA, ALIGN=2

                          EXPORTAS ||area_number.15||, ||.data||
                  __stdout
                          DCD      0x00000000

                          AREA ||area_number.16||, DATA, ALIGN=2

                          EXPORTAS ||area_number.16||, ||.data||
                  __stdin
                          DCD      0x00000000

;*** Start embedded assembler ***

#line 1 "..\\bsp\\Driver\\nano1xx_retarget.c"
	AREA ||.rev16_text||, CODE, READONLY
	THUMB
	EXPORT |__asm___18_nano1xx_retarget_c_871f546e____REV16|
#line 115 "C:\\Keil\\ARM\\CMSIS\\Include\\core_cmInstr.h"
|__asm___18_nano1xx_retarget_c_871f546e____REV16| PROC
#line 116

 rev16 r0, r0
 bx lr
	ENDP
	AREA ||.revsh_text||, CODE, READONLY
	THUMB
	EXPORT |__asm___18_nano1xx_retarget_c_871f546e____REVSH|
#line 130
|__asm___18_nano1xx_retarget_c_871f546e____REVSH| PROC
#line 131

 revsh r0, r0
 bx lr
	ENDP

;*** End   embedded assembler ***
