
; Comment out the orginal code
                .IF     0               

;------------------------------------------------------------------------
;                                                                       |
;   FILE        :lowlvl.src                                             |
;   DATE        :Wed, Jun 16, 2010                                      |
;   DESCRIPTION :Program of Low level                                   |
;   CPU TYPE    :Other                                                  |
;                                                                       |
;   This file is generated by Renesas Project Generator (Ver.4.50).     |
;   NOTE:THIS IS A TYPICAL EXAMPLE.                                     |
;                                                                       |
;------------------------------------------------------------------------
                  

         .GLB    _charput
         .GLB    _charget

SIM_IO   .EQU 0h

         .SECTION   P,CODE
;-----------------------------------------------------------------------
;  _charput:
;-----------------------------------------------------------------------
_charput:
         MOV.L      #IO_BUF,R2
         MOV.B      R1,[R2]
         MOV.L      #1220000h,R1
         MOV.L      #PARM,R3
         MOV.L      R2,[R3]
         MOV.L      R3,R2
         MOV.L      #SIM_IO,R3
         JSR        R3
         RTS

;-----------------------------------------------------------------------
;  _charget:
;-----------------------------------------------------------------------  
_charget:
        MOV.L       #1210000h,R1
        MOV.L       #IO_BUF,R2
        MOV.L       #PARM,R3
        MOV.L       R2,[R3]
        MOV.L       R3,R2
        MOV.L       #SIM_IO,R3
        JSR         R3
        MOV.L       #IO_BUF,R2
        MOVU.B      [R2],R1
        RTS

;-----------------------------------------------------------------------
;  I/O Buffer
;-----------------------------------------------------------------------
         .SECTION  B,DATA,ALIGN=4
PARM:    .BLKL     1
         .SECTION  B_1,DATA
IO_BUF:  .BLKB     1
;         .END                          ; Commented out for conditional assembly

; Code below is for debug console
                .ELSE           

;-----------------------------------------------------------------------
;
; FILE :lowlvl.src
; DATE :Wed, Jul 01, 2009
; DESCRIPTION :Program of Low level
; CPU TYPE :RX
;
;-----------------------------------------------------------------------
                .GLB    _charput
                .GLB    _charget

FC2E0           .EQU    00084080h
FE2C0           .EQU    00084090h
DBGSTAT         .EQU    000840C0h
RXFL0EN         .EQU    00001000h
TXFL0EN         .EQU    00000100h

                .SECTION P,CODE

;-----------------------------------------------------------------------
; _charput:
;-----------------------------------------------------------------------
_charput:
                .STACK  _charput = 00000000h
__C2ESTART:     MOV.L   #TXFL0EN,R3
                MOV.L   #DBGSTAT,R4
__TXLOOP:       MOV.L   [R4],R5
                AND     R3,R5
                BNZ     __TXLOOP
__WRITEFC2E0:   MOV.L   #FC2E0,R2
                MOV.L   R1,[R2]
__CHARPUTEXIT:  RTS

;-----------------------------------------------------------------------
; _charget:
;-----------------------------------------------------------------------
_charget:
                .STACK  _charget = 00000000h
__E2CSTART:     MOV.L   #RXFL0EN,R3
                MOV.L   #DBGSTAT,R4
__RXLOOP:       MOV.L   [R4],R5
                AND     R3,R5
                BZ      __RXLOOP
__READFE2C0:    MOV.L   #FE2C0,R2
                MOV.L   [R2],R1
__CHARGETEXIT:  RTS

;-----------------------------------------------------------------------

; End of conditional code
                .ENDIF          

                .END



