; generated by ARM C/C++ Compiler, 5.03 [Build 24]
; commandline ArmCC [--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.\ -I..\..\..\..\Library\CMSIS\Include -I..\..\..\..\Library\Device\Nuvoton\NUC200Series\Include -I..\..\..\..\Library\StdDriver\inc -IC:\Keil\ARM\RV31\INC -IC:\Keil\ARM\CMSIS\Include -IC:\Keil\ARM\Inc\?ST\STM32F10x -D__MICROLIB --omf_browse=.\obj\retarget.crf ..\..\..\..\Library\StdDriver\src\retarget.c]
                          THUMB

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

                  Flush PROC
;;;263    
;;;264    void Flush(void)
000000  b570              PUSH     {r4-r6,lr}
;;;265    {
;;;266        int32_t ch;
;;;267        int32_t i32Tmp;
;;;268        
;;;269        do
;;;270        {
;;;271            if(DEBUG_PORT->FSR & UART_FSR_TX_FULL_Msk)
;;;272                break;
;;;273    
;;;274            if(g_i32DbgTxBufTail != g_i32DbgTxBufHead)
;;;275            {
;;;276                ch = g_au8DbgTxBuf[g_i32DbgTxBufTail++];
000002  4c0d              LDR      r4,|L1.56|
000004  2500              MOVS     r5,#0
000006  490d              LDR      r1,|L1.60|
000008  4b0d              LDR      r3,|L1.64|
;;;277                if(g_i32DbgTxBufTail >= TXBUF_SIZE)
;;;278                    g_i32DbgTxBufTail = 0;
;;;279                DEBUG_PORT->DATA = ch;
;;;280                if(ch == '\n'){
;;;281                    DEBUG_PORT->DATA = '\r';
00000a  260d              MOVS     r6,#0xd
                  |L1.12|
00000c  6998              LDR      r0,[r3,#0x18]         ;271
00000e  0200              LSLS     r0,r0,#8              ;271
000010  d411              BMI      |L1.54|
000012  6848              LDR      r0,[r1,#4]            ;274  ; g_i32DbgTxBufTail
000014  680a              LDR      r2,[r1,#0]            ;274  ; g_i32DbgTxBufHead
000016  4290              CMP      r0,r2                 ;274
000018  d00d              BEQ      |L1.54|
00001a  6848              LDR      r0,[r1,#4]            ;276  ; g_i32DbgTxBufTail
00001c  1822              ADDS     r2,r4,r0              ;276
00001e  1c40              ADDS     r0,r0,#1              ;276
000020  6048              STR      r0,[r1,#4]            ;276  ; g_i32DbgTxBufTail
000022  7810              LDRB     r0,[r2,#0]            ;276
000024  684a              LDR      r2,[r1,#4]            ;277  ; g_i32DbgTxBufTail
000026  2aff              CMP      r2,#0xff              ;277
000028  dd00              BLE      |L1.44|
00002a  604d              STR      r5,[r1,#4]            ;278  ; g_i32DbgTxBufTail
                  |L1.44|
00002c  6018              STR      r0,[r3,#0]            ;279
00002e  280a              CMP      r0,#0xa               ;280
000030  d1ec              BNE      |L1.12|
000032  601e              STR      r6,[r3,#0]
000034  e7ea              B        |L1.12|
                  |L1.54|
;;;282                }
;;;283            }
;;;284            else
;;;285                break;
;;;286        }while(1);
;;;287    
;;;288    }
000036  bd70              POP      {r4-r6,pc}
;;;289    
                          ENDP

                  |L1.56|
                          DCD      ||.bss||
                  |L1.60|
                          DCD      ||.data||
                  |L1.64|
                          DCD      0x40050000

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

                  GetChar PROC
;;;337     */
;;;338    char GetChar(void)
000000  4803              LDR      r0,|L2.16|
                  |L2.2|
;;;339    {
;;;340    #ifdef DEBUG_ENABLE_SEMIHOST
;;;341    # if defined ( __CC_ARM   )
;;;342        int nRet;
;;;343        while(SH_DoCommand(0x101, 0, &nRet) != 0)
;;;344        {
;;;345            if(nRet != 0)
;;;346            {
;;;347                SH_DoCommand(0x07, 0, &nRet);
;;;348                return (char)nRet;
;;;349            }
;;;350        }
;;;351    # else
;;;352        int nRet;
;;;353        while(SH_DoCommand(0x7, 0, &nRet) != 0)  
;;;354        {
;;;355            if(nRet != 0)
;;;356                return (char)nRet;
;;;357        }
;;;358    # endif 
;;;359    	return (0); 
;;;360    #else
;;;361    
;;;362        while (1){
;;;363            if((DEBUG_PORT->FSR & UART_FSR_RX_EMPTY_Msk) == 0 )
000002  6981              LDR      r1,[r0,#0x18]
000004  0449              LSLS     r1,r1,#17
000006  d4fc              BMI      |L2.2|
;;;364            {
;;;365                return (DEBUG_PORT->DATA);
000008  6800              LDR      r0,[r0,#0]
00000a  b2c0              UXTB     r0,r0
;;;366            }
;;;367        }
;;;368    
;;;369    #endif
;;;370    }
00000c  4770              BX       lr
;;;371    
                          ENDP

00000e  0000              DCW      0x0000
                  |L2.16|
                          DCD      0x40050000

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

                  IsDebugFifoEmpty PROC
;;;397    
;;;398    int IsDebugFifoEmpty(void)
000000  4802              LDR      r0,|L3.12|
;;;399    {
;;;400        return ((DEBUG_PORT->FSR&UART_FSR_TE_FLAG_Msk) != 0);
000002  6980              LDR      r0,[r0,#0x18]
000004  00c0              LSLS     r0,r0,#3
000006  0fc0              LSRS     r0,r0,#31
;;;401    }
000008  4770              BX       lr
;;;402    
                          ENDP

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

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

                  SendChar PROC
;;;301     */
;;;302    void SendChar(int ch)
000000  b500              PUSH     {lr}
;;;303    {
;;;304    #if defined(DEBUG_ENABLE_SEMIHOST)
;;;305        g_buf[g_buf_len++] = ch;
;;;306        g_buf[g_buf_len] = '\0';
;;;307        if(g_buf_len + 1 >= sizeof(g_buf) || ch == '\n' || ch == '\0')
;;;308        {
;;;309            /* Send the char */
;;;310            if(SH_DoCommand(0x04, (int)g_buf, NULL) != 0)
;;;311            {
;;;312                g_buf_len = 0;
;;;313                return;
;;;314            }
;;;315            else
;;;316            {
;;;317                int i;
;;;318    
;;;319                for(i=0;i<g_buf_len;i++)
;;;320                    SendChar_ToUART(g_buf[i]);
;;;321                g_buf_len = 0;
;;;322            }
;;;323        }
;;;324    #else
;;;325        SendChar_ToUART(ch);
000002  f7fffffe          BL       SendChar_ToUART
;;;326    #endif
;;;327    }
000006  bd00              POP      {pc}
;;;328    
                          ENDP


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

                  SendChar_ToUART PROC
;;;202    
;;;203    void SendChar_ToUART(int ch)
000000  b510              PUSH     {r4,lr}
;;;204    {
;;;205        int32_t i32Tmp;
;;;206        
;;;207        i32Tmp = g_i32DbgTxBufHead + 1;
000002  4a0e              LDR      r2,|L5.60|
000004  6811              LDR      r1,[r2,#0]  ; g_i32DbgTxBufHead
000006  1c49              ADDS     r1,r1,#1
;;;208        if(i32Tmp>=TXBUF_SIZE)
000008  29ff              CMP      r1,#0xff
00000a  dd00              BLE      |L5.14|
;;;209            i32Tmp = 0;
00000c  2100              MOVS     r1,#0
                  |L5.14|
;;;210        
;;;211        if(i32Tmp != g_i32DbgTxBufTail)
00000e  6854              LDR      r4,[r2,#4]  ; g_i32DbgTxBufTail
;;;212        {
;;;213            g_au8DbgTxBuf[g_i32DbgTxBufHead] = ch;
000010  4b0b              LDR      r3,|L5.64|
000012  42a1              CMP      r1,r4                 ;211
000014  d002              BEQ      |L5.28|
000016  6814              LDR      r4,[r2,#0]  ; g_i32DbgTxBufHead
000018  5518              STRB     r0,[r3,r4]
;;;214            g_i32DbgTxBufHead = i32Tmp;
00001a  6011              STR      r1,[r2,#0]  ; g_i32DbgTxBufHead
                  |L5.28|
;;;215        }
;;;216        
;;;217        if(ch == '\n')
00001c  280a              CMP      r0,#0xa
00001e  d10b              BNE      |L5.56|
;;;218        {
;;;219            i32Tmp = g_i32DbgTxBufHead + 1;
000020  6810              LDR      r0,[r2,#0]  ; g_i32DbgTxBufHead
000022  1c40              ADDS     r0,r0,#1
;;;220            if(i32Tmp>=TXBUF_SIZE)
000024  28ff              CMP      r0,#0xff
000026  dd00              BLE      |L5.42|
;;;221                i32Tmp = 0;
000028  2000              MOVS     r0,#0
                  |L5.42|
;;;222            
;;;223            if(i32Tmp != g_i32DbgTxBufTail)
00002a  6851              LDR      r1,[r2,#4]  ; g_i32DbgTxBufTail
00002c  4288              CMP      r0,r1
00002e  d003              BEQ      |L5.56|
;;;224            {
;;;225                g_au8DbgTxBuf[g_i32DbgTxBufHead] = '\r';
000030  6814              LDR      r4,[r2,#0]  ; g_i32DbgTxBufHead
000032  210d              MOVS     r1,#0xd
000034  5519              STRB     r1,[r3,r4]
;;;226                g_i32DbgTxBufHead = i32Tmp;
000036  6010              STR      r0,[r2,#0]  ; g_i32DbgTxBufHead
                  |L5.56|
;;;227            }
;;;228        }
;;;229        
;;;230        
;;;231        
;;;232    #if 0    
;;;233        do
;;;234        {
;;;235            if(DEBUG_PORT->FSR & UART_FSR_TX_FULL_Msk)
;;;236                break;
;;;237    
;;;238            if(g_i32DbgTxBufTail != g_i32DbgTxBufHead)
;;;239            {
;;;240                ch = g_au8DbgTxBuf[g_i32DbgTxBufTail++];
;;;241                if(g_i32DbgTxBufTail >= TXBUF_SIZE)
;;;242                    g_i32DbgTxBufTail = 0;
;;;243                DEBUG_PORT->DATA = ch;
;;;244                if(ch == '\n'){
;;;245                    DEBUG_PORT->DATA = '\r';
;;;246                }
;;;247            }
;;;248            else
;;;249                break;
;;;250        }while(1);
;;;251    #endif
;;;252        
;;;253    #if 0
;;;254        while(DEBUG_PORT->FSR & UART_FSR_TX_FULL_Msk);
;;;255        DEBUG_PORT->DATA = ch;
;;;256        if(ch == '\n'){
;;;257            while(DEBUG_PORT->FSR & UART_FSR_TX_FULL_Msk);
;;;258            DEBUG_PORT->DATA = '\r';
;;;259        }
;;;260    #endif    
;;;261    }
000038  bd10              POP      {r4,pc}
;;;262    
                          ENDP

00003a  0000              DCW      0x0000
                  |L5.60|
                          DCD      ||.data||
                  |L5.64|
                          DCD      ||.bss||

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

                  _ttywrch PROC
;;;412    
;;;413    void _ttywrch(int ch)
000000  b500              PUSH     {lr}
000002  f7fffffe          BL       SendChar_ToUART
;;;414    {
;;;415      SendChar(ch);
;;;416      return;
;;;417    }
000006  bd00              POP      {pc}
;;;418    
                          ENDP


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

                  ferror PROC
;;;474    
;;;475    int ferror(FILE *stream) {
000000  2000              MOVS     r0,#0
;;;476      return EOF;
000002  43c0              MVNS     r0,r0
;;;477    }
000004  4770              BX       lr
;;;478    
                          ENDP


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

                  fgetc PROC
;;;455    
;;;456    int fgetc(FILE *stream) {
000000  b500              PUSH     {lr}
;;;457       return (GetChar());
000002  f7fffffe          BL       GetChar
;;;458    }
000006  bd00              POP      {pc}
;;;459    
                          ENDP


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

                  fputc PROC
;;;437    
;;;438    int fputc(int ch, FILE *stream)
000000  b510              PUSH     {r4,lr}
;;;439    {
000002  4604              MOV      r4,r0
000004  f7fffffe          BL       SendChar_ToUART
;;;440      SendChar(ch);
;;;441      return ch;
000008  4620              MOV      r0,r4
;;;442    }
00000a  bd10              POP      {r4,pc}
;;;443    
                          ENDP


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

                  kbhit PROC
;;;382    
;;;383    int kbhit(void)
000000  4802              LDR      r0,|L10.12|
;;;384    {
;;;385        return !((DEBUG_PORT->FSR&UART_FSR_RX_EMPTY_Msk) == 0);
000002  6980              LDR      r0,[r0,#0x18]
000004  0440              LSLS     r0,r0,#17
000006  0fc0              LSRS     r0,r0,#31
;;;386    }
000008  4770              BX       lr
;;;387    /**
                          ENDP

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

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

                  g_au8DbgTxBuf
                          %        256

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

                  g_i32DbgTxBufHead
                          DCD      0x00000000
                  g_i32DbgTxBufTail
                          DCD      0x00000000

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

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

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

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

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

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

;*** Start embedded assembler ***

#line 1 "..\\..\\..\\..\\Library\\StdDriver\\src\\retarget.c"
	AREA ||.rev16_text||, CODE, READONLY
	THUMB
	EXPORT |__asm___10_retarget_c_b894c470____REV16|
#line 118 "..\\..\\..\\..\\Library\\CMSIS\\Include\\core_cmInstr.h"
|__asm___10_retarget_c_b894c470____REV16| PROC
#line 119

 rev16 r0, r0
 bx lr
	ENDP
	AREA ||.revsh_text||, CODE, READONLY
	THUMB
	EXPORT |__asm___10_retarget_c_b894c470____REVSH|
#line 132
|__asm___10_retarget_c_b894c470____REVSH| PROC
#line 133

 revsh r0, r0
 bx lr
	ENDP

;*** End   embedded assembler ***
