RAM Move Routine#

01 ; MOVE$ RAM MOVER SUBROUTINE
02 ; BY D.W. HOWERTON
03 ; CALL FROM BASIC WITH THE FORM:
04 ; X=USR(ADR(MOVE$),FROM,TO,#BYTES)
05 ; WHERE: FROM=MEM. LOCATION TO MOVE
06 ;          TO=TARGET LOCATION
07 ;      #BYTES=NO. OF BYTES TO MOVE
08 ;
10       *=  $0600   ;RELOCATABLE
20 FROM  =   $D2     ;ZERO PGE STORAGE
30 TO    =   $D4     ;FOR LOC USED IN
40 NUM   =   $D6     ;SUBROUTINE
50       PLA         ;UNUSED-DISCARD
60       PLA         ;HI BYTE OF FROM
70       STA FROM+1  ;STORE IT
80       PLA         ;LOW BYTE OF FROM
90       STA FROM    ;STORE IT
0100     PLA         ;HIGH BYTE OF TO
0110     STA TO+1    ;STORE IT
0120     PLA         ;LOW BYTE OF TO
0130     STA TO      ;STORE IT
0140     PLA         ;HI BYTE #BYTES
0150     STA NUM     ;STORE IT
0160     PLA         ;LO BYTE #BYTES
0170     TAX         ;X IS COUNTER
0190     BNE START   ;GO AHEAD
0200     DEC NUM     ;PREVENT MOVING
0205     ;           EXTRA PAGE OF MEM
0210 START LDY #0    ;USE FOR INDEXING
0220 MOVE LDA (FROM),Y ;BYTE TO MOVE
0230     STA (TO),Y  ;MOVE IT
0240     INY         ;INCREMENT INDEX
0250     BNE NEXT    ;IF<>0 A PAGE
0255     ;           HASN'T BEEN MOVED
0260     INC FROM+1  ;INCREMENT THE
0270     INC TO+1    ;HIGH BYTES
0280 NEXT DEX        ;-LO BYTE COUNTER
0290     BNE MOVE    ;MOVE ANOTHR BYTE
0300     DEC NUM     ;-HI BYTE COUNTER
0310     BPL MOVE    ;IF POS DO MORE
0320     RTS         ;RETURN TO BASIC

Add new attachment

Only authorized users are allowed to upload new attachments.

List of attachments

Kind Attachment Name Size Version Date Modified Author Change note
atr
RAMMOVE.ATR 133.1 kB 1 26-Oct-2015 19:05 Florian Dingler
« This page (revision-1) was last changed on 20-Dec-2010 20:55 by Carsten Strotmann