📄 cstartup.s34
字号:
jmp udata2_loop
done_udata2
; 6. Give initialized huge variables its default values
mov.w #lwrd(sfb(IDATA2)),a0
mov.w #hwrd(sfb(IDATA2)),a1
mov.w #lwrd(sfb(CDATA2)),r0
mov.w #hwrd(sfb(CDATA2)),r2
mov.w #lwrd(sizeof(CDATA2)),r1
mov.w #hwrd(sizeof(CDATA2)),r3
jsr.a ?GENERIC_MOVE_LONG_L08
#endif /* IGNORE_HUGE_DATA */
#ifndef IGNORE_STRING
;---------------------------------------------------------------;
; Perform segment initialization of writable strings ;
; Copy CCSTR --> ECSTR ;
;---------------------------------------------------------------;
mov.w #sizeof(CCSTR),r3
jeq skip_string
mov.w #sfb(ECSTR),a1
mov.w #low(sfb(CCSTR)),a0
mov.b #byte3(sfb(CCSTR)),r1h
smovf.b
skip_string
#endif /* IGNORE_STRING */
skip_segment_initialization
#endif /* IGNORE_SEG_INIT */
;---------------------------------------------------------------;
; Call main() ;
;---------------------------------------------------------------;
mov.w #0,r0 ; call main with argc == 0
jsr.a main ; execute main()
;---------------------------------------------------------------;
; Now when we are ready with our C program we must perform a ;
; system-dependent action. In this case we just stop. ;
;---------------------------------------------------------------;
; DO NOT CHANGE THE NEXT LINE OF CSTARTUP IF YOU WANT TO RUN ;
; YOUR SOFTWARE WITH THE HELP OF THE C-SPY HLL DEBUGGER. ;
;---------------------------------------------------------------;
jmp.a ?C_EXIT
;---------------------------------------------------------------;
; Fixed interrupt table. We install all fixed interrupts in ;
; a segment called INTVEC1. All fixed interrupts have a ;
; hard coded name that is default handled in module `fixed_X' ;
; in this file. See fixedint.c for information how to replace ;
; them with handlers written in C. ;
;---------------------------------------------------------------;
.common INTVEC1
.extern __undefined_instruction_handler
.extern __overflow_handler
.extern __break_instruction_handler
.extern __address_match_handler
.extern __single_step_handler
.extern __watchdog_timer_handler
.extern __DBC_handler
.extern __NMI_handler
.lword __undefined_instruction_handler
.lword __overflow_handler
.lword __break_instruction_handler
.lword __address_match_handler
.lword __single_step_handler
.lword __watchdog_timer_handler
.lword __DBC_handler
.lword __NMI_handler
.lword init_C ; reset vector
;---------------------------------------------------------------;
; Flexible interrupt table. All interrupts are pre-defined as ;
; reset interrupts. In module interrpt.c they are replaced by ;
; C interrupt handlers. ;
; CAUTION: PLEASE LINK CSTARTUP BEFORE INTERRPT ;
;---------------------------------------------------------------;
.common INTVEC
.extern dma0_interrupt,dma1_interrupt,uart0tx_interrupt
.extern timer_a0_interrupt,timer_a1_interrupt
int_UART1_T EQU 0fcb6bh
int_UART1_R EQU int_UART1_T
.lword init_C ; reset vector 0- 3
.lword init_C ; reset vector 4- 7
.lword init_C ; reset vector 8- 11
.lword init_C ; reset vector 12- 15
.lword init_C ; reset vector 16- 19
.lword init_C ; reset vector 20- 23
.lword init_C ; reset vector 24- 27
.lword init_C ; reset vector 28- 31
.lword init_C ; reset vector 32- 35
.lword init_C ; reset vector 36- 39
.lword init_C ; reset vector 40- 43
.lword dma0_interrupt ; reset vector 44- 47
.lword dma1_interrupt ; reset vector 48- 51
.lword init_C ; reset vector 52- 55
.lword init_C ; reset vector 56- 59
.lword init_C ; reset vector 60- 63
.lword init_C ; reset vector 64- 67
.lword uart0tx_interrupt ; reset vector 68- 71
.lword init_C ; reset vector 72- 75
.lword int_UART1_T ; reset vector 76- 79
.lword int_UART1_R ; reset vector 80- 83
.lword timer_a0_interrupt ; reset vector 84- 87
.lword timer_a1_interrupt ; reset vector 88- 91
.lword init_C ; reset vector 92- 95
.lword init_C ; reset vector 96- 99
.lword init_C ; reset vector 100-103
.lword init_C ; reset vector 104-107
.lword init_C ; reset vector 108-111
.lword init_C ; reset vector 112-115
.lword init_C ; reset vector 116-119
.lword init_C ; reset vector 120-123
.lword init_C ; reset vector 124-127
.lword init_C ; reset vector 128-131
.lword init_C ; reset vector 132-135
.lword init_C ; reset vector 136-139
.lword init_C ; reset vector 140-143
.lword init_C ; reset vector 144-147
.lword init_C ; reset vector 148-151
.lword init_C ; reset vector 152-155
.lword init_C ; reset vector 156-159
.lword init_C ; reset vector 160-163
.lword init_C ; reset vector 164-167
.lword init_C ; reset vector 168-171
.lword init_C ; reset vector 172-175
.lword init_C ; reset vector 176-179
.lword init_C ; reset vector 180-183
.lword init_C ; reset vector 184-187
.lword init_C ; reset vector 188-191
.lword init_C ; reset vector 192-195
.lword init_C ; reset vector 196-199
.lword init_C ; reset vector 200-203
.lword init_C ; reset vector 204-207
.lword init_C ; reset vector 208-211
.lword init_C ; reset vector 212-215
.lword init_C ; reset vector 216-219
.lword init_C ; reset vector 220-223
.lword init_C ; reset vector 224-227
.lword init_C ; reset vector 228-231
.lword init_C ; reset vector 232-235
.lword init_C ; reset vector 236-239
.lword init_C ; reset vector 240-243
.lword init_C ; reset vector 244-247
.lword init_C ; reset vector 248-251
.lword init_C ; reset vector 251-255
.endmod
; Module that generates a reit instruction if needed
.module __reit
.public ??__reit
.rseg CODE
??__reit
reit
.endmod
;---------------------------------------------------------------;
; Function/module: exit ;
; ;
; When C-SPY is used this code will automatically be replaced ;
; by a 'debug' version of exit(). ;
;---------------------------------------------------------------;
.module exit
.public exit
.public ?C_EXIT
.rseg CODE
?C_EXIT
exit .equ ?C_EXIT
;--------------------------------------------------------------;
; The next line can be replaced by user defined code. ;
;--------------------------------------------------------------;
jmp $
.endmod
;---------------------------------------------------------------;
; Function/module: default __low_level_init ;
; You can replace this routine by linking with your own version.;
; The default action is to do nothing and return 1. ;
;---------------------------------------------------------------;
.module lowinit
.public __low_level_init
.rseg CODE
__low_level_init
mov.b #1,r0l
rts
.end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -