	PAGE 60
	ENTRY CLWIN
	EXT XMIN,YMIN,XMAX,YMAX,MULTAC
	.Z80
	.COMMENT #

CLWIN

loescht das momentane Plott-Fenster im Video-RAM.

Einsprung ueber Entry  CLWIN

Das Loeschen erfolgt von YMAX nach YMIN und von XMIN nach XMAX, also zeilen-
weise von oben nach unten und von links nach rechts.
Da das zugehoerige Character-Byte im Video-RAM geloescht wird, werden immer 
2er-Gruppen von Spalten und 4er-Gruppen von Zeilen geloescht.
Im Attribut-Byte wird das Invert-Bit geloescht, das Character-Byte wird auf 0
gesetzt.

Die Byte-Position jeder Zeile im Video-RAM wird wie folgt bestimmt:
x' = XMIN	x"=[x'/2]
B  = [XMAX/2]-[XMIN/2]+1		Spaltenzaehler
y' = YMAX	y"=[y'/4]
C  = [YMAX/4]-[YMIN/4]+1		Zeilenzaehler
HL = VRAMA + (LINES - 1 - y")*COLS + x"	Attribut-Byte-Pos. im Video RAM
DE = COFFS + HL				Char.-Byte-Pos.
HL = HL+1 usw. bis B=0
y' = y'-4 usw. bis C=0

Die externen Variablen XMIN,YMIN und XMAX,YMAX im Modul PUTP enthalten
die Grenzen des momentanen Plott-Fensters. Sie werden mit der Routine
WINDOW gesetzt.

A.Herrmann	23.12.83
#
LINES	EQU 24		; Zeilen auf Bildschirm
COLS	EQU 80		; Spalten auf Bildschirm
VRAMA	EQU 0E000H	; Video RAM Adresse der Attribute
COFFS	EQU 00800H	; Offset zur Video RAM Adresse der Zeichen
VPORT	EQU 28H		; Video Port Adresse
;
CLWIN:	LD A,(XMIN)
	SRL A
	LD B,A
	LD A,(XMAX)
	SRL A
	SUB B
	INC A
	LD B,A		; B = x-Count
	LD A,(YMIN)
	SRL A
	SRL A
	LD C,A
	LD A,(YMAX)
	SRL A
	SRL A
	SUB C
	INC A
	LD C,A		; C = y-Count
;
	LD HL,XMIN
	LD E,(HL)	; xmin in E
	LD HL,YMAX
	LD D,(HL)	; ymax in D
;
CLWIN1:	PUSH DE		; Rette Anf'koord des Fensters
	PUSH BC		; Rette Anf'stand der Counter
	LD A,D
	AND 3
	NEG
	ADD A,3
	SRL D
	SRL D		; D = y"
	SRL E		; E = x"
	LD A,LINES-1
	SUB D
	PUSH BC
	LD C,COLS
	CALL MULTAC	; HL = A*C
	POP BC
	LD D,0
	ADD HL,DE
	LD DE,VRAMA
	ADD HL,DE	; 1.Attribut-Byte Adresse nach HL
	PUSH HL
	LD DE,COFFS
	ADD HL,DE	; 1.Char-Byte Adresse nach DE
	POP DE
	EX DE,HL
	XOR A		; Char.Byte=0
;
CLWIN2:	DI		; Spalten Loop
	OUT (VPORT),A
	LD (DE),A	; Schreibe Character Byte
	RES 0,(HL)	; Reset Invert-Bit
	OUT (VPORT),A
	EI
	INC HL
	INC DE
	DJNZ CLWIN2	; Naechste Spalte
	LD A,C
	POP BC
	LD C,A
	POP DE
	LD A,-4
	ADD A,D
	LD D,A
	DEC C
	JP NZ,CLWIN1	; Naechste Zeile
	RET		; Exit
;
	END
