TITLE	UPCASE
	ENTRY	UPCASE
;
;	Verwandlung in von Klein- in Grossbuchstaben
;
;	Aufruf: CALL UPCASE(buffer,count)
;
;	<buffer> = Startadresse des Textpuffers
;	<count> = Anzahl Bytes (2-Byte-Integer !)
;
UPCASE:	LD (BUFADR),HL	; Startadresse sichern
	LD (CADR),DE	; Count-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		; Carry-Flag loeschen
	SBC HL,BC	; <count> = 0 ?
	JR Z,ENDE	; Ja: fertig !
	LD HL,(COUNT)	; Nein: weiter
	LD BC,(BUFADR)	; BC = Pointer
	LD DE,1
LOOP:	LD A,(BC)	; ein Zeichen lesen
	BIT 6,A		; Buchstabe?
	JR Z,CONT	; Nein:  weiter
	AND 11011111B	; Ja: Bit 5 loeschen
	LD (BC),A	; zurueckschreiben
CONT:	AND A
	SBC HL,DE	; <count> = <count> - 1
	JR Z,ENDE	; fertig ?
	INC BC		; Nein: Pointer = Pointer+ 1
	JR LOOP		; Weiter
ENDE:	LD HL,1
	RET		; RETURN-STATUS
;
;	Arbeitsspeicher:
;
BUFADR:	DS 2		; Startadresse
CADR:	DS 2		; Count-Adresse
COUNT:	DS 2		; Count
;
	END
Bild 6. Aus kleinen Buchstaben werden große
[Z80 source listing]