/******************************************************************
***                                                             ***
***     crt0 for __BELOW100__ attribute test with SID           ***
***                                                             ***
******************************************************************/

                                /*************************************/
                                /** Interrupt vectors at 0x8000     **/
                                /*************************************/
        .section .int_vec,"ax"
        .global _start
        .align 1
_start:
        jmpf _int_reset
        //jmpf _int_basetimer
        //jmpf _int_timer0
        //jmpf _int_timer1
        //jmpf _int_irq_4
        //jmpf _int_irq_5
        //jmpf _int_port0
        //jmpf _int_port1
        //jmpf _int_irq_8
        //jmpf _int_irq_9
        //jmpf _int_irq_a
        //jmpf _int_irq_b
        //jmpf _int_irq_c
        //jmpf _int_irq_d
        //jmpf _int_irq_e
        //jmpf _int_irq_f
                                /*************************************/
                                /** reset code                      **/
                                /*************************************/
        .text
_int_reset:
                                /*************************************/
                                /** setup stack pointer             **/
                                /*************************************/
        mov sp,#__stack
                                /*************************************/
                                /** zero .bss section               **/
                                /*************************************/
        mov r0,#__bss_start
        mov r1,#__bss_end
        mov r2,#0
1:      mov.w (r0++),r2
        blt r0,r1,1b
                                /*************************************/
                                /** copy inital value for .data     **/
                                /*************************************/
        mov r1,#__data_start
        mov r3,#__data_end
        mov r0,#@lo(__rdata)
        mov r8,#@hi(__rdata)
2:      movf.w r2,(r0++)
        bnz r0,#0,3f
        add r8,#1
3:      mov.w (r1++),r2
        blt r1,r3,2b
                                /*************************************/
                                /** call hardware init routine      **/
                                /*************************************/
        callf _hwinit
                                /*************************************/
                                /** call initializaton routines     **/
                                /*************************************/
        callf _init
                                /*************************************/
                                /** setup fini routines to be       **/
                                /**  called from exit               **/
                                /*************************************/
        mov r2,#@fptr(_fini)
        callf atexit
                                /*************************************/
                                /** call main() with empty          **/
                                /**  argc/argv/envp                 **/
                                /*************************************/
        mov r2,#0
        mov r3,#0
        mov r4,#0
        callf main
                                /*************************************/
                                /** return from main()              **/
                                /*************************************/
        callf exit
                                /*************************************/
                                /** should never reach this code    **/
                                /*************************************/
        jmpf _start
                                /*************************************/
                                /** default h/w initialize routine  **/
                                /** and default _init/_finit for    **/
                                /**  -nostartfiles option           **/
                                /*************************************/
        .globl _hwinit
        .weak _hwinit
_hwinit:
        .globl _init
        .weak _init
_init:
        .globl _fini
        .weak _fini
_fini:
        ret

/******************************************************************
*******************************************************************
***                                                             ***
***       Chip information data for LC59_32K                    ***
***                 Written by T.Matsukawa                      ***
***                                                             ***
*******************************************************************
******************************************************************/

                                /*************************************/
                                /** Define convenient macros        **/
                                /*************************************/
#define BCD(x)  (((x)/10)%10)*0x10+((x)%10)
#define BCD4(x) BCD((x)/100),BCD(x)
#define BCD6(x) BCD((x)/10000),BCD((x)/100),BCD(x)
                                /*************************************/
                                /** Define memory sizes             **/
                                /*************************************/
#define RAM_SIZE 0x7E00
#define ROM_SIZE 0x78000
#define VRAM_SIZE 0x0000
#define VRAM_ROW 0
#define VRAM_COLUMN 0
#define CGROM_SIZE 0x0000
#define PROTECT_SIZE 0x0000

                                /*************************************/
                                /** section ".chip_info"            **/
                                /*************************************/
        .section .chip_info,"a"
        .space  0xb8,0x00
                                /*************************************/
                                /** B8-BB : User option address     **/
                                /*************************************/
        .word   0x00000
        .global __reset_vector
#if 0x00000==0
        .equ    __reset_vector,0x08000
#else
        .equ    __reset_vector,0x00000
#endif
                                /*************************************/
                                /** BC-BF : Flash Protect address   **/
                                /*************************************/
#if PROTECT_SIZE==0
        .word   0x00000000
#else
        .word   0x08000+ROM_SIZE-PROTECT_SIZE
#endif
                                /*************************************/
                                /** C0-CF : Fixed string            **/
                                /*************************************/
1:	.ascii  "CHIPINFORMATION"
2:	.space  (0x10-(2b-1b)),0x00
                                /*************************************/
                                /** D0-DF : Chipname                **/
                                /*************************************/
1:	.ascii  "LC59_32K"
2:	.space  (0x10-(2b-1b)),0x00
                                /*************************************/
                                /** E0-E1 : Format version(BCD4)    **/
                                /*************************************/
        .byte   0x10, 0x00
        .space  6, 0x00
                                /*************************************/
                                /** E8-F5 : Memory sizes            **/
                                /*************************************/
        .byte   BCD4(ROM_SIZE/1024)
        .byte   BCD6(RAM_SIZE)
        .byte   BCD6(VRAM_SIZE)
        .byte   BCD4(VRAM_ROW)
        .byte   BCD4(VRAM_COLUMN)
        .byte   BCD4(CGROM_SIZE/1024)
        .space  3, 0x00
                                /*************************************/
                                /** F9 : Package type               **/
                                /*************************************/
        .byte   0xff
        .space  6, 0x00

                                /*************************************/
                                /** In order to link BIOS in library**/
                                /*************************************/
        .equ    dummy,__bios_entry
