; generated by ARM C/C++ Compiler, 4.1 [Build 894]
; commandline ArmCC [--c99 --list --split_sections --debug -c --asm --interleave -o.\obj\retarget.o --asm_dir=.\lst\ --list_dir=.\lst\ --depend=.\obj\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\retarget.crf ..\bsp\Driver\retarget.c]
                          THUMB

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

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

                  |L1.56|
                          DCD      0x40050000

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

                  IsDebugFifoEmpty PROC
;;;165    /*---------------------------------------------------------------------------------------------------------*/
;;;166    int IsDebugFifoEmpty(void)
000000  4802              LDR      r0,|L2.12|
;;;167    {
;;;168    #if(DEBUG_PORT == 0)
;;;169        return UART0->FSR_BITS.TE_F;
000002  6980              LDR      r0,[r0,#0x18]
000004  0500              LSLS     r0,r0,#20
000006  0fc0              LSRS     r0,r0,#31
;;;170    #elif(DEBUG_PORT == 1)
;;;171        return UART1->FSR_BITS.TE_F;
;;;172    #else
;;;173        return UART2->FSR_BITS.TE_F;
;;;174    #endif    
;;;175    }
000008  4770              BX       lr
;;;176    
                          ENDP

00000a  0000              DCW      0x0000
                  |L2.12|
                          DCD      0x40050000

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

                  SendChar PROC
;;;78     
;;;79     void SendChar(int ch)
000000  b570              PUSH     {r4-r6,lr}
;;;80     {
;;;81     #if defined(DEBUG_ENABLE_SEMIHOST)
;;;82     	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
;;;83     	g_buf[g_buf_len] = '\0';
000008  2500              MOVS     r5,#0
00000a  5470              STRB     r0,[r6,r1]            ;82
00000c  1c49              ADDS     r1,r1,#1              ;82
00000e  b2c9              UXTB     r1,r1                 ;82
000010  7021              STRB     r1,[r4,#0]            ;82
000012  5475              STRB     r5,[r6,r1]
;;;84     	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|
;;;85     	{
;;;86     
;;;87     		/* Send the char */
;;;88     		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|
;;;89             {
;;;90                 g_buf_len = 0;
;;;91     			return;
;;;92             }
;;;93             else
;;;94             {
;;;95                 int i;
;;;96     
;;;97                 for(i=0;i<g_buf_len;i++)
000030  2300              MOVS     r3,#0
000032  e003              B        |L3.60|
                  |L3.52|
;;;98                     SendChar_ToUART(g_buf[i]);
000034  5cf0              LDRB     r0,[r6,r3]
000036  f7fffffe          BL       SendChar_ToUART
00003a  1c5b              ADDS     r3,r3,#1              ;97
                  |L3.60|
00003c  7820              LDRB     r0,[r4,#0]            ;97  ; g_buf_len
00003e  4283              CMP      r3,r0                 ;97
000040  dbf8              BLT      |L3.52|
                  |L3.66|
;;;99     		    g_buf_len = 0;
000042  7025              STRB     r5,[r4,#0]
                  |L3.68|
;;;100            }
;;;101    	}
;;;102    #else
;;;103        SendChar_ToUART(ch);
;;;104    #endif
;;;105    }
000044  bd70              POP      {r4-r6,pc}
;;;106    
                          ENDP

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

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

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

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

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

                  _sys_exit PROC
;;;213    # else
;;;214    void _sys_exit(int return_code) {
000000  2200              MOVS     r2,#0
;;;215    
;;;216        /* Check if link with ICE */
;;;217    	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|
;;;218        {
;;;219            /* Make sure all message is print out */
;;;220            while(IsDebugFifoEmpty() == 0);
00000c  f7fffffe          BL       IsDebugFifoEmpty
                  |L5.16|
000010  2800              CMP      r0,#0                 ;217
000012  d0fb              BEQ      |L5.12|
                  |L5.20|
;;;221        }
;;;222    label:  goto label;  /* endless loop */
000014  e7fe              B        |L5.20|
;;;223    }
;;;224    # endif
                          ENDP

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

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

                  _ttywrch PROC
;;;179    /*---------------------------------------------------------------------------------------------------------*/
;;;180    void _ttywrch(int ch)
000000  b510              PUSH     {r4,lr}
;;;181    {
;;;182      SendChar(ch);
000002  f7fffffe          BL       SendChar
;;;183      return;
;;;184    }
000006  bd10              POP      {r4,pc}
;;;185    
                          ENDP


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

                  ferror PROC
;;;196    
;;;197    int ferror(FILE *f) {
000000  2000              MOVS     r0,#0
;;;198      return EOF;
000002  43c0              MVNS     r0,r0
;;;199    }
000004  4770              BX       lr
;;;200    
                          ENDP


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

                  fgetc PROC
;;;191    
;;;192    int fgetc(FILE *f) {
000000  b510              PUSH     {r4,lr}
;;;193      return (GetChar());
000002  f7fffffe          BL       GetChar
;;;194    }
000006  bd10              POP      {r4,pc}
;;;195    
                          ENDP


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

                  fputc PROC
;;;185    
;;;186    int fputc(int ch, FILE *f)
000000  b510              PUSH     {r4,lr}
;;;187    {
000002  4604              MOV      r4,r0
;;;188      SendChar(ch);
000004  f7fffffe          BL       SendChar
;;;189      return ch;
000008  4620              MOV      r0,r4
;;;190    }
00000a  bd10              POP      {r4,pc}
;;;191    
                          ENDP


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

                  kbhit PROC
;;;152    /*---------------------------------------------------------------------------------------------------------*/
;;;153    int kbhit(void)
000000  4802              LDR      r0,|L10.12|
;;;154    {
;;;155    #if(DEBUG_PORT == 0)
;;;156        return !UART0->FSR_BITS.RX_EMPTY_F;
000002  6980              LDR      r0,[r0,#0x18]
000004  0780              LSLS     r0,r0,#30
000006  17c0              ASRS     r0,r0,#31
000008  1c40              ADDS     r0,r0,#1
;;;157    #elif(DEBUG_PORT == 1)
;;;158        return !UART1->FSR_BITS.RX_EMPTY_F;
;;;159    #else
;;;160        return !UART2->FSR_BITS.RX_EMPTY_F;
;;;161    #endif    
;;;162    }
00000a  4770              BX       lr
;;;163    /*---------------------------------------------------------------------------------------------------------*/
                          ENDP

                  |L10.12|
                          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
