mirror of
https://github.com/JohnSnape/6502code.git
synced 2024-12-22 15:30:25 +00:00
29 lines
1000 B
Plaintext
29 lines
1000 B
Plaintext
;THIS SUBROUTINE MOVES A BLOCK OF DATA IN MEMORY. THE STARTING
|
|
;ADDRESS OF THE DATA IS CONTAINED IN LOCATIONS $40 (LOW ADDRESS
|
|
;BYTE) AND $41 (HIGH ADDRESS BYTE). THE STARTING ADDRESS OF
|
|
;THE DESTINATION OF THE DATA IS CONTAINED IN LOCATIONS $42 (LOW
|
|
;ADDRESS BYTE) AND $43 (HIGH ADDRESS BYTE). THE NUMBER OF BYTES
|
|
;TO BE MOVED IS CONTAINED IN LOCATION $44.
|
|
|
|
MOVE8 LDX $44 /LOAD BYTE COUNT INTO X REGISTER
|
|
SEC /CALCULATE MOVE DISPLACEMENT
|
|
LDA $42
|
|
SBC $40
|
|
LDA $43
|
|
SBC $41
|
|
BMI DISPN /DISPLACEMENT NEGATIVE?
|
|
LDY $44 /NO. START MOVE WITH LAST BYTE
|
|
CONTI DEY
|
|
LDA ($40),Y /LOAD BYTE FROM SOURCE LOCATION
|
|
STA ($42),Y / AND STORE IT AT DESTINATION LOCATION
|
|
DEX /DECREMENT BYTE COUNT
|
|
BNE CONTI /LOOP UNTIL ALL BYTES MOVED
|
|
RTS
|
|
DISPN LDY #00 /START MOVE WITH FIRST BYTE
|
|
CONT2 LDA ($40),Y /LOAD BYTE FROM SOURCE LOCATION
|
|
STA ($42),Y / AND STORE IT AT DESTINATION LOCATION
|
|
INY /INDEX TO NEXT BYTE
|
|
DEX /DECREMENT BYTE COUNT
|
|
BNE CONT2 /LOOP UNTIL ALL BYTES MOVED
|
|
RTS
|