TITLE	BFILL
	ENTRY	BFILL
;
;	Speicherbereich mit identischen Bytes fuellen
;
;	Aufruf: CALL = BFILL(start,count,fill)
;
;	<start> = Startadresse (Variablenname)
;	<count> = Anzahl Bytes (2-Byte-Integer !)
;	<fill>  = Fuellbyte
;
BFILL:	LD (SADR),HL	; Startadresse sichern
	LD (CADR),DE	; Count-Adresse retten
	LD (FADR),BC	; Fill-Adresse sichern
;
	LD A,(DE)
	LD L,A
	INC DE
	LD A,(DE)
	LD H,A		; HL = <count>
	LD (COUNT),HL	; <count> sichern
	LD BC,0
	AND A
	SBC HL,BC	; <count> = 0 ?
	JR Z,ENDE	; Ja: fertig!
;
	LD HL,(COUNT)	; Nein: weiter
	LD BC,(FADR)
	LD A,(BC)	; A = <fill>
	LD BC,(SADR)	; BC = Pointer
	LD DE,1
;
LOOP:	LD (BC),A	; ein Byte speichern
	AND A		; Carry-Flag loeschen
	SBC HL,DE	; <count> = <count> - 1
	JR Z,ENDE	; fertig ?
	INC BC		; Nein: Pointer = Pointer + 1
	JR LOOP		; weiter mit dem naechsten
;
ENDE:	LD HL,1		; RETURN-STATUS
	RET
;
;	Arbeitsspeicher:
;
SADR:	DS 2		; Startadresse
CADR:	DS 2		; Count-Adresse
FADR:	DS 2		; Fill-Adresse
COUNT:	DS 2		; Count
;
	END
Bild 2. Speicherbereich füllen
[Hier als Z80-Quelldatei]