;
; GRDB
;
; Copyright(c) LADsoft
;
; David Lindauer, gclind01@starbase.spd.louisville.edu
;
;
; MOVE.ASM
;
; Function: move memory regions
;
	;MASM MODE
	.MODEL SMALL
	.386


include  prints.ase 
include  input.ase 
include  mtrap.ase 

	PUBLIC move


	.CODE
;
; move command
;
move	PROC
	call	WadeSpace
	jz	errx
	call	ReadAddress 			; read source
	jc	errx
	call	WadeSpace
	jz	errx
	call	ReadNumber		; read end of source
	jc	errx
	mov	ecx,eax
	sub	ecx,ebx
	jb	errx
	call	WadeSpace
	jz	errx
	mov	edx,ebx
	call	ReadAddress			; read dest
	jc	errx
	call	WadeSpace
	jnz	errx
	mov	edi,ebx
	mov	esi,edx
	cmp	esi,edi
	jz	noop
	jl	sld
sgd:
	rep	movsb
	jmp	noop
sld:
	lea	esi,[esi+ecx-1]
	lea	edi,[edi+ecx-1]
	std
	rep	movsb
	cld
noop:
	clc				; to clean up stack
	ret
errx:
	stc
	ret
move	endp
end