навскидку, как-то так бы накарябал

Код:
	ld	hl,buff
	call	space1
;...

;
space1:
	ld	a,h		;a>#20 anyway, not space )))
	ld	d,h
	ld	e,l

lp_spc1:
	ld	c,a		;prev char
	ld	a,(hl)
	ld	(de),a
	inc	hl
	cp	#0a
	ret	z
;	jr	z,clearline

	cp	#20
	jr	nz,go_spc1	;current char not space

	cp	c
	jr	z,lp_spc1	;prev and current char = space, skip one

go_spc1:
	inc	de		;moved ok
	jr	lp_spc1
- - - Добавлено - - -

вместо ld a,h, наверное, лучше просто xor a, да и все )))