STAA TEMP
BCS BMOVEDN
BMOVEUP
-
+****** Working in here to make it go both ways.
+****** Also need to check multiply and divide.
LDX PSP
LDX CELLSZ+ADRWDSZ,X
WARM JMP.S WARMENT
+****** Working in here to make it go both ways.
+****** Also need to check multiply and divide.
+****** And need to convert the stuff past multiply and divide to 68000
+
+
* Entry point below.
* SMOVEL
* MOVE.B (A2)+,(A3)+
* _WORD_ Move up to 32K bytes ( src dest count --- ):
* Copies zero when count >= 2^15
* Compare CMOVE in Forth.
+
+****** Working in here to make it go both ways.
+****** Also need to check multiply and divide.
+
BMOVE
LDX PSP
- LDX 0,X
- STX GCOUNT
- LDX PSP
- LDX ADRWDSZ,X
- STX IXDEST
- LDX PSP
- LDX 2*ADRWDSZ,X
- STX IXSRC
- LDD GCOUNT ; Pre-test for zero, too big.
+ LDD 0,X
+ STD GCOUNT
BEQ BMOVEX ; Do nothing if zero.
BMI BMOVEX ; Do nothing if too big.
+ LDD ADRWDSZ,X
+ STD IXDEST
+ LDD 2*ADRWDSZ,X
+ STD IXSRC
LDAB 1+GCOUNT ; Get low byte for partial block.
CLR 1+GCOUNT ; To avoid debugging confusion.
BMOVEL BSR SMOVE ; partial block and full blocks
DEC GCOUNT ; count high byte down (blocks)
BPL BMOVEL ; This limits the count.
LDD PSP
- SUBD #3*ADRWDSZ
+ ADDD #3*ADRWDSZ
STD PSP
BMOVEX RTS
* compare:
* LDX PSP
-* LDB #3*ADRWDSZ ; SUBD #3*ADRWDSZ is probably faster. Byte count is same.
+* LDB #3*ADRWDSZ ; ADDD #3*ADRWDSZ is probably faster. Byte count is same.
* ABX
* STX PSP
*
WARM JMP WARMENT
+****
+Need to convert the whole thing to 6805,
+Need to decide on whether the runtime sees more than 8 address bytes, etc.
+
+
* _LOWORD_ Move 256 bytes or less:
* 0=256, do not enter without pretesting for 0 count!
* source in IXSRC, destination in IXDEST, count in B:
WARM JMP WARMENT
+****** Working in here to make it go both ways.
+****** Also need to check multiply and divide.
+
+
* _LOWORD_ Move 256 bytes or less:
* 0=256, do not enter without pretesting for 0 count!
* source in X, destination in Y, count in B: