67 lines
1.1 KiB
PHP
67 lines
1.1 KiB
PHP
|
comment "subroutine prologue"
|
||
|
.macro gdbasm_enter
|
||
|
ldx _.frame
|
||
|
pshx
|
||
|
sts _.frame
|
||
|
.endm
|
||
|
|
||
|
comment "subroutine epilogue"
|
||
|
.macro gdbasm_leave
|
||
|
pulx
|
||
|
stx _.frame
|
||
|
rts
|
||
|
.endm
|
||
|
|
||
|
.macro gdbasm_call subr
|
||
|
jsr \subr
|
||
|
.endm
|
||
|
|
||
|
.macro gdbasm_several_nops
|
||
|
nop
|
||
|
nop
|
||
|
nop
|
||
|
nop
|
||
|
.endm
|
||
|
|
||
|
comment "exit (0)"
|
||
|
.macro gdbasm_exit0
|
||
|
clra
|
||
|
clrb
|
||
|
wai
|
||
|
.endm
|
||
|
|
||
|
comment "crt0 startup"
|
||
|
.macro gdbasm_startup
|
||
|
.sect .data
|
||
|
.globl _.frame
|
||
|
_.frame: .word 0
|
||
|
.previous
|
||
|
lds #0x2000
|
||
|
; the linker script maps the data section in ROM (LMA) for its initial
|
||
|
; content and in RAM (VMA) for its runtime value. We have to do
|
||
|
; what the default crt0 does: copy the ROM part in RAM.
|
||
|
; (otherwise any 'globalvar' appears uninitialized)
|
||
|
ldx #__data_image
|
||
|
ldy #__data_section_start
|
||
|
bra Start_map
|
||
|
Loop:
|
||
|
ldaa 0,x
|
||
|
staa 0,y
|
||
|
inx
|
||
|
iny
|
||
|
Start_map:
|
||
|
cpx #__data_image_end
|
||
|
blo Loop
|
||
|
Done:
|
||
|
clr _.frame
|
||
|
clr _.frame+1
|
||
|
.endm
|
||
|
|
||
|
comment "Declare a data variable"
|
||
|
.purgem gdbasm_datavar
|
||
|
.macro gdbasm_datavar name value
|
||
|
.data
|
||
|
\name:
|
||
|
.word \value
|
||
|
.endm
|