use copydata instead of own routine
This commit is contained in:
@@ -6,8 +6,7 @@
|
|||||||
|
|
||||||
.export cartstart
|
.export cartstart
|
||||||
|
|
||||||
.import start
|
.import start, copydata
|
||||||
.import __DATA_LOAD__, __DATA_SIZE__, __DATA_RUN__
|
|
||||||
.importzp ptr1, ptr2, tmp1, tmp2
|
.importzp ptr1, ptr2, tmp1, tmp2
|
||||||
|
|
||||||
.include "atari.inc"
|
.include "atari.inc"
|
||||||
@@ -17,51 +16,8 @@
|
|||||||
; start routine of cartridge
|
; start routine of cartridge
|
||||||
; copy data segment to RAM and chain to entry point of crt0.s
|
; copy data segment to RAM and chain to entry point of crt0.s
|
||||||
|
|
||||||
cartstart: lda #<__DATA_LOAD__
|
cartstart: jsr copydata
|
||||||
sta ptr1
|
|
||||||
lda #>__DATA_LOAD__
|
|
||||||
sta ptr1+1
|
|
||||||
lda #<__DATA_RUN__
|
|
||||||
sta ptr2
|
|
||||||
lda #>__DATA_RUN__
|
|
||||||
sta ptr2+1
|
|
||||||
lda #>__DATA_SIZE__
|
|
||||||
sta tmp2
|
|
||||||
lda #<__DATA_SIZE__
|
|
||||||
sta tmp1
|
|
||||||
jsr memcopy
|
|
||||||
jsr start ; run program
|
jsr start ; run program
|
||||||
jmp (DOSVEC) ; return to DOS
|
jmp (DOSVEC) ; return to DOS
|
||||||
|
|
||||||
|
|
||||||
; routine taken from http://www.obelisk.demon.co.uk/6502/algorithms.html
|
|
||||||
;
|
|
||||||
; copy memory
|
|
||||||
; ptr1 - source
|
|
||||||
; ptr2 - destination
|
|
||||||
; tmp2:tmp1 - len
|
|
||||||
|
|
||||||
.proc memcopy
|
|
||||||
|
|
||||||
ldy #0
|
|
||||||
ldx tmp2
|
|
||||||
beq last
|
|
||||||
pagecp: lda (ptr1),y
|
|
||||||
sta (ptr2),y
|
|
||||||
iny
|
|
||||||
bne pagecp
|
|
||||||
inc ptr1+1
|
|
||||||
inc ptr2+1
|
|
||||||
dex
|
|
||||||
bne pagecp
|
|
||||||
last: cpy tmp1
|
|
||||||
beq done
|
|
||||||
lda (ptr1),y
|
|
||||||
sta (ptr2),y
|
|
||||||
iny
|
|
||||||
bne last
|
|
||||||
done: rts
|
|
||||||
|
|
||||||
.endproc
|
|
||||||
|
|
||||||
.endif ; .ifndef __ATARIXL__
|
.endif ; .ifndef __ATARIXL__
|
||||||
|
|||||||
Reference in New Issue
Block a user