.define .cms
.sect .text
.sect .rom
.sect .data
.sect .bss
.sect .text

! Any size compare
! Expects:	size in de-registers
!		operands on stack
! Yields in de-registers: 0 if operands are equal
!			  1 if operands are not equal

.cms:
	pop h
	shld .retadr

	mov l,e
	mov h,d
	mov a,l
	rar
	cc eoddz	!trap is size is odd
	dad sp		!now hl points to second operand
			!and sp points to the first.
1:	dcx sp
	pop psw		!get next byte in accumulator
	cmp m
	inx h
	dcx d
	jnz 2f		!jump if bytes are not equal
	mov a,d
	ora e
	jnz 1b
	jmp 3f
2:	dad d
	lxi d,1
3:	sphl

	lhld .retadr
	pchl