-/******************************************************************\r
-*** ***\r
-*** crt0 for __BELOW100__ attribute test with SID ***\r
-*** ***\r
-******************************************************************/\r
-\r
- /*************************************/\r
- /** Interrupt vectors at 0x8000 **/\r
- /*************************************/\r
- .section .int_vec,"ax"\r
- .global _start\r
- .align 1\r
-_start:\r
- jmpf _int_reset\r
- //jmpf _int_basetimer\r
- //jmpf _int_timer0\r
- //jmpf _int_timer1\r
- //jmpf _int_irq_4\r
- //jmpf _int_irq_5\r
- //jmpf _int_port0\r
- //jmpf _int_port1\r
- //jmpf _int_irq_8\r
- //jmpf _int_irq_9\r
- //jmpf _int_irq_a\r
- //jmpf _int_irq_b\r
- //jmpf _int_irq_c\r
- //jmpf _int_irq_d\r
- //jmpf _int_irq_e\r
- //jmpf _int_irq_f\r
- /*************************************/\r
- /** reset code **/\r
- /*************************************/\r
- .text\r
-_int_reset:\r
- /*************************************/\r
- /** setup stack pointer **/\r
- /*************************************/\r
- mov sp,#__stack\r
- /*************************************/\r
- /** zero .bss section **/\r
- /*************************************/\r
- mov r0,#__bss_start\r
- mov r1,#__bss_end\r
- mov r2,#0\r
-1: mov.w (r0++),r2\r
- blt r0,r1,1b\r
- /*************************************/\r
- /** copy inital value for .data **/\r
- /*************************************/\r
- mov r1,#__data_start\r
- mov r3,#__data_end\r
- mov r0,#@lo(__rdata)\r
- mov r8,#@hi(__rdata)\r
-2: movf.w r2,(r0++)\r
- bnz r0,#0,3f\r
- add r8,#1\r
-3: mov.w (r1++),r2\r
- blt r1,r3,2b\r
- /*************************************/\r
- /** call hardware init routine **/\r
- /*************************************/\r
- callf _hwinit\r
- /*************************************/\r
- /** call initializaton routines **/\r
- /*************************************/\r
- callf _init\r
- /*************************************/\r
- /** setup fini routines to be **/\r
- /** called from exit **/\r
- /*************************************/\r
- mov r2,#@fptr(_fini)\r
- callf atexit\r
- /*************************************/\r
- /** call main() with empty **/\r
- /** argc/argv/envp **/\r
- /*************************************/\r
- mov r2,#0\r
- mov r3,#0\r
- mov r4,#0\r
- callf main\r
- /*************************************/\r
- /** return from main() **/\r
- /*************************************/\r
- callf exit\r
- /*************************************/\r
- /** should never reach this code **/\r
- /*************************************/\r
- jmpf _start\r
- /*************************************/\r
- /** default h/w initialize routine **/\r
- /** and default _init/_finit for **/\r
- /** -nostartfiles option **/\r
- /*************************************/\r
- .globl _hwinit\r
- .weak _hwinit\r
-_hwinit:\r
- .globl _init\r
- .weak _init\r
-_init:\r
- .globl _fini\r
- .weak _fini\r
-_fini:\r
- ret\r
-\r
-/******************************************************************\r
-*******************************************************************\r
-*** ***\r
-*** Chip information data for LC59_32K ***\r
-*** Written by T.Matsukawa ***\r
-*** ***\r
-*******************************************************************\r
-******************************************************************/\r
-\r
- /*************************************/\r
- /** Define convenient macros **/\r
- /*************************************/\r
-#define BCD(x) (((x)/10)%10)*0x10+((x)%10)\r
-#define BCD4(x) BCD((x)/100),BCD(x)\r
-#define BCD6(x) BCD((x)/10000),BCD((x)/100),BCD(x)\r
- /*************************************/\r
- /** Define memory sizes **/\r
- /*************************************/\r
-#define RAM_SIZE 0x7E00\r
-#define ROM_SIZE 0x78000\r
-#define VRAM_SIZE 0x0000\r
-#define VRAM_ROW 0\r
-#define VRAM_COLUMN 0\r
-#define CGROM_SIZE 0x0000\r
-#define PROTECT_SIZE 0x0000\r
-\r
- /*************************************/\r
- /** section ".chip_info" **/\r
- /*************************************/\r
- .section .chip_info,"a"\r
- .space 0xb8,0x00\r
- /*************************************/\r
- /** B8-BB : User option address **/\r
- /*************************************/\r
- .word 0x00000\r
- .global __reset_vector\r
-#if 0x00000==0\r
- .equ __reset_vector,0x08000\r
-#else\r
- .equ __reset_vector,0x00000\r
-#endif\r
- /*************************************/\r
- /** BC-BF : Flash Protect address **/\r
- /*************************************/\r
-#if PROTECT_SIZE==0\r
- .word 0x00000000\r
-#else\r
- .word 0x08000+ROM_SIZE-PROTECT_SIZE\r
-#endif\r
- /*************************************/\r
- /** C0-CF : Fixed string **/\r
- /*************************************/\r
- .ascii "CHIPINFORMATION"\r
-1: .space (0xd0-1b),0x00\r
- /*************************************/\r
- /** D0-DF : Chipname **/\r
- /*************************************/\r
- .ascii "LC59_32K"\r
-2: .space (0xe0-2b),0x00\r
- /*************************************/\r
- /** E0-E1 : Format version(BCD4) **/\r
- /*************************************/\r
- .byte 0x10, 0x00\r
- .space 6, 0x00\r
- /*************************************/\r
- /** E8-F5 : Memory sizes **/\r
- /*************************************/\r
- .byte BCD4(ROM_SIZE/1024)\r
- .byte BCD6(RAM_SIZE)\r
- .byte BCD6(VRAM_SIZE)\r
- .byte BCD4(VRAM_ROW)\r
- .byte BCD4(VRAM_COLUMN)\r
- .byte BCD4(CGROM_SIZE/1024)\r
- .space 3, 0x00\r
- /*************************************/\r
- /** F9 : Package type **/\r
- /*************************************/\r
- .byte 0xff\r
- .space 6, 0x00\r
-\r
- /*************************************/\r
- /** In order to link BIOS in library**/\r
- /*************************************/\r
- .equ dummy,__bios_entry\r
+/******************************************************************
+*** ***
+*** 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 **/
+ /*************************************/
+ .ascii "CHIPINFORMATION"
+1: .space (0xd0-1b),0x00
+ /*************************************/
+ /** D0-DF : Chipname **/
+ /*************************************/
+ .ascii "LC59_32K"
+2: .space (0xe0-2b),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