Source file: /~heha/basteln/PC/USB2LPT/lpt2usb.zip/avrstr.i90

;Stringausgabe aus Kode-Speicher
#ifndef AVRSTR_I90
#define AVRSTR_I90

;Benötigt:
;	putchar(r16)	Zeichen schreiben (blockierend)

;Bietet (diverses):
;	SendStr(Z)	konstanten String ausgeben
;	SendStrAfter	konstanten String nach RCALL ausgeben
;	JumpZ(Z)	Byteadresse Z in Wort aufrunden und anspringen

ss1:	rcall	putchar
SendStr:	;konstanten String ausgeben
;PE: Z = Zeiger auf nullterminierte Zeichenkette im Kode-Speicher
;PA: -
;VR: Z (zeigt hinter die Null), R0=0
	lpm	r16,z+
	tst	r16
	brne	ss1
	ret

SendStrAfter:	;konstanten String nach CALL ausgeben
;PE: Nullterminierte Zeichenkette hinter dem CALL-Befehl
;PA: -
;VR: R0=0
	pophl	Z	;eigentliche Rückkehradresse holen,
			;da steht der String
	lslhl	Z	;verdoppeln (Byte-Adresse)
	rcall	SendStr
JumpZ:
	adiw	ZH:ZL,1	;aufrunden
	lsrhl	Z	;halbieren (Wort-Adresse)
	ijmp		;springt nach Z (ZH:ZL)

#endif//AVRSTR_I90
Detected encoding: ANSI (CP1252)4
Wrong umlauts? - Assume file is ANSI (CP1252) encoded