Quelltext /~heha/ewa/Kram/igr-251008.zip/mymacros.i15

;Bügelt die lästige C-Inversion bei Subtraktion
;und verwendet die modernen bra-Sprünge, nicht goto

#define skpb skpnc	;Aussetzen wenn Subtraktion Überlauf generierte
#define skpnb skpc	;Aussetzen wenn Subtraktion keinen Überlauf generierte
brb	macro	lbl	;Springen wenn Subtraktion Überlauf generierte
	skpnb
	 bra	lbl
	endm
brc	macro	lbl	;Springen wenn Addition Überlauf generierte
	skpnc
	 bra	lbl
	endm
brnb	macro	lbl	;Springen wenn Subtraktion keinen Überlauf generierte
	skpb
	 bra	lbl
	endm
brnc	macro	lbl	;Springen wenn Addition keinen Überlauf generierte
	skpc
	 bra	lbl
	endm
brz	macro	lbl	;Springen wenn Null
	skpnz
	 bra	lbl
	endm
brnz	macro	lbl	;Springen wenn nicht Null
	skpz
	 bra	lbl
	endm
loop	macro	reg,lbl	;Schleifenfuß
	decfsz	reg,f
	 bra	lbl
	endm
movlwf	macro	co,reg	;Konstante in Register laden
	movlw	co
	movwf	reg
	endm
movlwf2	macro	co,reg	;16-Bit-Konstante laden, erst H, dann L
	movlwf	high(co),reg+1
	movlwf	low(co),reg
	endm
addlwf2	macro	co,d	;16-Bit-Konstante + W laden
	addlw	low(co)
	movwf	d
	movlwf	high(co),d+1
	skpnc
	 incf	d+1,f
	endm
movfwf	macro	s,d
	movfw	s
	movwf	d
	endm
movfwf2	macro	s,d	;wichtig: Erst H, dann L
	movfwf	s+1,d+1
	movfwf	s,d
	endm
addwf2	macro	d	;w (8 Bit vzl.) auf 16-Bit-Wert addieren
	addwf	d,f
	skpnc
	 incf	d+1,f
	endm
addlf2	macro	co,d	;d += co: Konstante addieren (via w)
	movlw	low(co)
	addwf	d,f
	movfw	high(co)
	addwfc	d+1,f
	endm
addff2	macro	s,d	;d += s
	movfw	s
	addwf	d,f
	movfw	s+1
	addwfc	d+1,f
	endm
subff2	macro	s,d	;d -= s
	movfw	s
	subwf	d,f
	movfw	s+1
	subwfb	d+1,f
	endm
clrf2	macro	d	;d = 0
	clrf	d+1
	clrf	d
	endm
Vorgefundene Kodierung: UTF-80