FLAGS   ASM;
; --------------------------------
; Beobachtung der Flagstellung
; bei numerischen und logischen
; Operationen
; --------------------------------
;
	ORG	4000H
;
	DEFW	7F7FH
	DEFM	'FLAGS'
	DEFB	1
;
; Parameteruebergabe
;	Startwert -> B
;	Endwert   -> C
;
	LD	A,(0B782H)  ; 1. Param.
	LD	B,A
	LD	A,(0B784H)  ; 2. Param.
	LD	C,A
;
; Vorbereitung der Schleife
;
	CALL	TEXT	; Bildschirm
;
	INC	C	; Endwert + 1
;
; die zentrale Schleife
;
LOOP:
	LD	A,B	; B -> Akku
;
;	Akku vor der Operation
;
	LD	HL,0A0FH
	LD	(0B7A0H),HL
	CALL	BINOUT
	CALL	HEXOUT
;
; ------------------------------------
;	die zu untersuchende Operation
;	-> hier das Programm aendern!
;
	ADD	33H
;
; ------------------------------------
;
;	Akku nach der Operation
;
	LD	HL,0C0FH
	LD	(0B7A0H),HL
	CALL	BINOUT
	CALL	HEXOUT
;
;	Flags nach der Operation
;
	PUSH	AF	; F -> A
	POP	HL
	LD	A,L
;
	LD	HL,110FH
	LD	(0B7A0H),HL
	CALL	BINOUT
;
;	Schleifensteuerung
;
TASTE:	CALL	0F003H
	DB	0EH
	JR	NC,TASTE
;
	CP	03H	; BRK ?
	JR	Z,EXIT
;
	INC	B
	LD	A,B
	CP	C
	JR	NZ,LOOP
;
;	Schleifenabbruch
;
EXIT:	CALL	0F003H	; neue Zeile
	DB	23H,0AH,0DH,0
;
	RET	; zurueck zum CAOS
;
; Vorbereitung des Bildschirms
; PE:	-
; PA:	-
; VR:	AF, HL
;
TEXT:	LD	A,0CH		; CLS
	CALL	0F003H
	DB	0
;
	LD	HL,0A04H	; C-Pos
	LD	(0B7A0H),HL
;
	CALL	0F003H
	DB	23H,'A vorher:',0
;
	LD	HL,0C04H
	LD	(0B7A0H),HL
;
	CALL	0F003H
	DB	23H,'A nachher:',0
;
	LD	HL,0F04H
	LD	(0B7A0H),HL
;
	CALL	0F003H
	DB	23H,'Flags:     '
	DB	'S Z x H x V N C',0
	RET
;
; Ausgabe einer 8-Bit-Hexadezimalzahl
; an der aktuellen Cursorposition
; PE:	A ... auszugebende Zahl
; PA:	-
; VR:	keine
;
HEXOUT:	PUSH	AF
	CALL	0F003H
	DB	23H,' =  ',0
	POP	AF
	PUSH	AF
	CALL	0F003H
	DB	1CH
	POP	AF
	RET
;
; Ausgabe einer 8-Bit-Binaerzahl an
; der aktuellen Cursorposition
; PE:	A ... auszugebende Zahl
; PA:	-
; VR:	keine
;
BINOUT:	PUSH	AF
	PUSH	BC
	LD	C,A
	LD	B,8
S1:	XOR	A
	RL	C
	RLA
	ADD	30H
	CALL	0F003H	; 1 oder 0
	DB	0
	LD	A,20H	; Leerzeichen
	CALL	0F003H
	DB	0
	DJNZ	S1
	POP	BC
	POP	AF
	RET
;
	END
ž@
S1:š@
BINOUT:§@
HEX oder 0
	DB	0
	LD	A,20H	; Leerzeichen
	CALL	0F003H
	DB	0
	DJNZ	S1
	POP	BC
	POP	AF
	RET
;
	END
ž@
S1:š@
BINOUT:§@
HEX