3000 572e 0000 S ... PAINT.A
	PN	VOLLGRAFIK
	ORG	0E000H
DEMO:	CALL	CLS
	LD	HL,08080H
	LD	(LANF),HL
	LD	HL,03070H
	LD	(LEND),HL
	CALL	ELLY
	RST	038H
;
TEILE:	JMP	PIXEL
	JMP	NPSET
	JMP	PTEST
	JMP	LINE
	JMP	ELLY
;
	JMP	CLS
	JMP	PRINT
	JMP	PRST7
;
	JMP	LINK
	JMP	RECH
	JMP	TIEF
	JMP	HOCH
	JMP	FSL
	JMP	FSR
	JMP	FSD
	JMP	FSU
;
	JMP	MIRR
	JMP	DREH
	JMP	DOPP
	JMP	JOYST
	JMP	MAUS
;
	JMP	HCPY
	JMP	READ
	JMP	WRIT
	JMP	BSAVE
	JMP	BLOAD
PIX:	DB	1
PPOS:	DB	0
YPOS:	DB	0
LANF:	DB	0
YANF:	DB	0
LEND:	DB	0
YEND:	DB	0
BMEM:	DA	08000H
ZANF:	DA	0A000H
;
PIXEL:	PUSH	HL
	PUSH	DE
	PUSH	BC
	PUSH	AF
	LD	DE,(PPOS)
	CALL	PIX1
	POP	AF
	POP	BC
	POP	DE
	POP	HL
	RET
PIX1:	CALL	ARG
PRVG:	PUSH	AF
	LD	A,(PIX)
	OR	A
	JRZ	PRES-#
	DEC	A
	JRZ	PSET-#
PINV:	POP	AF
	XOR	M
	LD	M,A
	RET
PRES:	POP	AF
	CPL
	AND	M
	LD	M,A
	RET
PSET:	POP	AF
	OR	M
	LD	M,A
	RET	
; HEX 0XXH => 0x+.x-.y+.y-....B
NPSET:	PUSH	HL
	PUSH	AF
	LD	HL,(PPOS)
	LD	A,(LANF)
EPS:	SLA	A
	JRNC	XNA-#
	INC	L
XNA:	SLA	A
	JRNC	XNS-#
	DEC	L
XNS:	SLA	A
	JRNC	YNA-#
	INC	H
YNA:	SLA	A
	JRNC	YNS-#
	DEC	H
YNS:	LD	(PPOS),HL
	CALL	PIXEL
	OR	A
	JRNZ	EPS-#
	POP	AF
	POP	HL
	RET
PTEST:	CALL	ARG
	LD	C,M
PM3:	RLA
	JRC	PM2-#
	RLC	C
	JR	PM3-#
PM2:	RLC	C
	RET	
ARG:	LD	A,E
	AND	7
	LD	B,A
	INC	B
	SRL	E
	SRL	E
	SRL	E
	LD	L,E
	LD	A,D
	CPL
	LD	D,A
	AND	7
	OR	8
	OUT	018H
	LD	A,D
	LD	H,03BH
	RLA
	RL	H
	RLA
	RL	H
	AND	0E0H
	OR	L
	LD	L,A
	XOR	A
	SCF
BIT:	RRA
	DJNZ	BIT-#
	RET	
;
ELLY:	PUSH	HL
	PUSH	DE
	PUSH	BC
	PUSH	AF
	LD	HL,(LANF)
	LD	DE,(LEND)
	LD	A,E
	EXX
	LD	C,A
ZUG:	LD	A,C
	CALL	QUAD
	EX	DE,HL
	EXX
	LD	A,E
	EXX
	CALL	QUAD
	OR	A
	SBC	HL,DE
	CALL	SQR
	LD	H,0
	LD	L,A
	EXX
	LD	A,D
	EXX
	LD	D,H
	LD	E,A
	CALL	MULT
	EXX
	LD	A,E
	EXX
	LD	D,0
	LD	E,A
	CALL	DIV
	LD	B,L
	EXX
	PUSH	HL
	EXX
	POP	HL
;
	LD	D,B
	LD	E,C
	ADD	HL,DE
	LD	(PPOS),HL
;
	CALL	PIXEL
	OR	A
	SBC	HL,DE
	OR	A
	SBC	HL,DE
	LD	(PPOS),HL
;
	CALL	PIXEL
	LD	D,0
	ADD	HL,DE
	ADD	HL,DE
	LD	(PPOS),HL
;
	CALL	PIXEL
	OR	A
	SBC	HL,DE
	OR	A
	SBC	HL,DE
	LD	D,B
	LD	E,0
	ADD	HL,DE
	ADD	HL,DE
	LD	(PPOS),HL
;
	CALL	PIXEL
	LD	A,C
	SUB	1
	LD	C,A
	JRNC	ZUG-#
	POP	AF
	POP	BC
	POP	DE
	POP	HL
	RET
MULT:	PUSH	DE
	PUSH	BC
	PUSH	AF
	LD	B,H
	LD	C,L
	LD	HL,0
MADD:	LD	A,D
	OR	E
	JRZ	MEX-#
	ADD	HL,BC
	DEC	DE
	JR	MADD-#
MEX:	POP	AF
	POP	BC
	POP	DE
	RET
DIV:	PUSH	BC
	LD	BC,0
DSUB:	OR	A
	SBC	HL,DE
	JRC	DEX-#
	INC	BC
	JR	DSUB-#
DEX:	ADD	HL,DE
	SLA	L
	RL	H
	SBC	HL,DE
	JRC	DEX2-#
	INC	BC
DEX2:	LD	H,B
	LD	L,C
	POP	BC
	RET
QUAD:	PUSH	DE
	PUSH	BC
	LD	B,A
	LD	DE,1
	LD	HL,0
QADD:	ADD	HL,DE
	INC	DE
	INC	DE
	DJNZ	QADD-#
	POP	BC
	POP	DE
	RET
SQR:	PUSH	HL
	PUSH	DE
	PUSH	BC
	LD	DE,1
	LD	C,0FFH
SQS:	INC	C
	XOR	A
	SBC	HL,DE
	INC	DE
	INC	DE
	JRNC	SQS-#
	ADD	HL,DE
	DEC	HL
	SLA	L
	RL	H
	SBC	HL,DE
	JRC	SQ2-#
	INC	C
SQ2:	LD	A,C
	POP	BC
	POP	DE
	POP	HL
	RET
LINE:	PUSH	HL
	PUSH	DE
	PUSH	BC
	PUSH	AF
	LD	A,(YANF)
	LD	L,A
	LD	A,(YEND)
	LD	E,A
	XOR	A
	LD	H,A
	LD	D,A
	EXX
	LD	H,A
	LD	D,A
	LD	A,(LANF)
	LD	L,A
	LD	A,(LEND)
	LD	E,A
LCHP:	XOR	A
	SBC	HL,DE
	JRNC	LMA1-#
	ADD	HL,DE
	EX	DE,HL
	EXX
	EX	DE,HL
	EXX
	JR	LCHP-#
LMA1:	EXX
	PUSH	DE
LRTG:	SBC	HL,DE
	JRNC	LMA3-#
	ADD	HL,DE
	EX	DE,HL
	OR	1
	JR	LRTG-#
LMA3:	PUSH	HL
	EXX
	POP	BC
	PUSH	HL
	SBC	HL,BC
	POP	HL
	PUSH	BC
	JRNC	LMA5-#
	EX	(SP),HL
	OR	2
LMA5:	PUSH	HL
	LD	B,H
	LD	C,L
	EXX
	POP	BC
	POP	DE
	LD	H,B
	LD	L,C
	SRL	H
	RR	L
	EXX
	POP	HL
	EX	DE,HL
DRAW:	LD	H,E
	LD	(PPOS),HL
	LD	H,D
	CALL	PIXEL
	EXX
	AND	A
	SBC	HL,DE
	JRNC	LMA6-#
	ADD	HL,BC
LMA6:	EXX
	BIT	1,A
	JRNZ	LMA7-#
	INC	HL
	JRNC	LMA8-#
	OR	A
LMA7:	BIT	0,A
	INC	DE
	JRZ	LMA9-#
	DEC	DE
	DEC	DE
LMA9:	JRNC	LMA8-#
	INC	HL
LMA8:	EXAF
	LD	A,B
	OR	C
	JRZ	LRET-#
	DEC	BC
	EXAF
	JR	DRAW-#
LRET:	POP	AF
	POP	BC
	POP	DE
	POP	HL
	RET
CLS:	LD	A,8
CLS1:	OUT	018H
	LD	HL,0EC00H
	LD	DE,0EC01H
	LD	BC,00400H
	LD	M,0
	LDIR	
	INC	A
	CMP	010H
	JRC	CLS1-#
	RET
LINK:	LD	A,8
LS2:	LD	HL,0EC01H
	LD	DE,0EC00H
	LD	B,32
	OUT	018H
LS3:	PUSH	BC
	LD	BC,31
	LDIR
	DEC	HL
	LD	M,0
	INC	HL
	INC	HL
	INC	DE
	POP	BC
	DJNZ	LS3-#
	INC	A
	CMP	010H
	JRC	LS2-#
	RET
RECH:	LD	A,8
RS2:	LD	HL,0EFFEH
	LD	DE,0EFFFH
	LD	B,32
	OUT	018H
RS3:	PUSH	BC
	LD	BC,31
	LDDR
	INC	HL
	LD	M,0
	DEC	HL
	DEC	HL
	DEC	DE
	POP	BC
	DJNZ	RS3-#
	INC	A
	CMP	010H
	JRC	RS2-#
	RET
HOCH:	LD	A,8
HO2:	OUT	018H
	LD	HL,0EC20H
	LD	DE,0EC00H
	LD	BC,003E0H
	LDIR
	EX	DE,HL
	LD	B,32
DLZ:	LD	M,0
	INC	HL
	DJNZ	DLZ-#
	INC	A
	CMP	010H
	JRC	HO2-#
	RET
TIEF:	LD	A,8
TI2:	OUT	018H
	LD	HL,0EFDFH
	LD	DE,0EFFFH
	LD	BC,003E0H
	LDDR
	EX	DE,HL
	LD	B,32
DEZ:	LD	M,0
	DEC	HL
	DJNZ	DEZ-#
	INC	A
	CMP	010H
	JRC	TI2-#
	RET
MIRR:	LD	HL,0EC00H
	LD	DE,0EFE0H
CZEI:	LD	B,8
MZEI:	LD	A,7
	ADD	B
	PUSH	AF
	OUT	018H
	LD	A,(DE)
	LD	C,A
	LD	A,16
	SUB	B
	OUT	018H
	LD	A,M
	LD	M,C
	LD	C,A
	POP	AF
	OUT	018H
	LD	A,C
	LD	(DE),A
	INC	HL
	INC	DE
	LD	A,L
	AND	01FH
	JRNZ	MZEI-#
	PUSH	BC
	LD	BC,32
	SBC	HL,BC
	EX	DE,HL
	SBC	HL,BC
	EX	DE,HL
	POP	BC
	DJNZ	MZEI-#
	LD	BC,32
	ADD	HL,BC
	EX	DE,HL
	SBC	HL,BC
	EX	DE,HL
	LD	A,H
	CMP	0EEH
	JRC	CZEI-#
	RET
READ:	LD	DE,(BMEM)
	LD	A,8
RE2:	OUT	018H
	LD	HL,0EC00H
	LD	BC,00400H
	LDIR
	INC	A
	CMP	16
	JRC	RE2-#
	RET
WRIT:	LD	HL,(BMEM)
	LD	A,8
WR2:	OUT	018H
	LD	DE,0EC00H
	LD	BC,00400H
	LDIR
	INC	A
	CMP	16
	JRC	WR2-#
	RET
BSAVE:	CALL	READ
	XOR	A
	OUT	018H
	LD	HL,(BMEM)
	LD	(01BH),HL
	LD	DE,01FFFH
	ADD	HL,DE
	LD	(01DH),HL
	LD	IY,0
	LD	(023H),IY
	JMP	0FFF4H
BLOAD:	LD	IY,0
	LD	HL,(BMEM)
	LD	(01BH),HL
	XOR	A
	OUT	018H
	LD	A,'N'
	CALL	0FFF1H
	JR	WRIT-#
DREH:	LD	HL,0
AT1:	LD	DE,MP1
	LD	B,H
	LD	A,31
	SUB	H
	SUB	L
	LD	C,A
	CALL	PUSH
AT2:	LD	DE,MP2
	LD	A,H
	ADD	L
	LD	B,A
	LD	C,H
	PUSH	BC
	CALL	PUSH
AT3:	LD	DE,MP1
	POP	BC
	PUSH	DE
	CALL	DGET
AT4:	POP	DE
	LD	A,31
	SUB	H
	LD	B,A
	LD	A,H
	ADD	L
	LD	C,A
	PUSH	BC
	CALL	PUSH
AT5:	LD	DE,MP2
	POP	BC
	PUSH	DE
	CALL	DGET
AT6:	POP	DE
	LD	A,31
	SUB	H
	LD	C,A
	SUB	L
	LD	B,A
	PUSH	BC
	CALL	PUSH
AT7:	LD	DE,MP1
	POP	BC
	CALL	DGET
AT8:	LD	DE,MP2
	LD	B,H
	LD	A,31
	SUB	H
	SUB	L
	LD	C,A
	CALL	DGET
LOOP:	INC	L
	LD	A,31
	SUB	H
	SUB	H
	CMP	L
	JRNZ	AT1-#
	INC	H
	LD	L,0
	LD	A,H
	CMP	16
	JRNZ	AT1-#
	RET
ZELL:	PUSH	DE
	LD	HL,0EBE0H
	LD	DE,32
	INC	B
ZADD:	ADD	HL,DE
	DJNZ	ZADD-#
	ADD	HL,BC
	POP	DE
	RET
PUSH:	PUSH	HL
	CALL	ZELL
	LD	A,8
PUW:	OUT	018H
	PUSH	AF
	LD	A,M
	LD	(DE),A
	INC	DE
	POP	AF
	INC	A
	CMP	16
	JRC	PUW-#
	POP	HL
	RET
DGET:	PUSH	HL
	CALL	ZELL
	LD	C,1
DG2:	PUSH	HL
	PUSH	DE
	PUSH	BC
	CALL	DKV
	LD	A,H
	POP	BC
	POP	DE
	POP	HL
	PUSH	AF
	LD	A,16
	SUB	C
	OUT	018H
	POP	AF
	LD	M,A
	INC	C
	LD	A,C
	CMP	9
	JRNZ	DG2-#
	POP	HL
	RET
DKV:	LD	B,8
DK3:	PUSH	BC
	LD	A,(DE)
	INC	DE
DK2:	RLA
	DEC	C
	JRNZ	DK2-#
	RL	H
	POP	BC
	DJNZ	DK3-#
	RET
HCPY:	LD	A,(PIX)
	OR	A
	RZ
	CMP	3
	RNC
	LD	HL,0EC00H
	LD	A,15
	OUT	1
	LD	B,5
	LD	DE,DINI
	CALL	INGT
	JR	PRST-#
NEXT:	CALL	OUTZ
	INC	HL
	INC	C
	LD	A,(PIX)
	CMP	2
	LD	A,C
	JRNZ	HCN-#
	CMP	64
	JRZ	PRST-#
	CMP	32
	JRNZ	NEXT-#
	LD	DE,32
	SBC	HL,DE
	JR	PRS2-#
HCN:	CMP	32
	JRC	NEXT-#
PRST:	LD	C,0
PRS2:	LD	B,6
	LD	DE,ITAB
	LD	A,H
	CMP	0F0H
	JRNC	BRKS-#
	RST	020H
	DB	4
	CMP	3
	JRZ	BRKS-#
	CALL	INGT
	LD	A,(PIX)
	CALL	OUT
	JR	NEXT-#	
BRKS:	LD	B,2
	JR	INGT-#
OUTZ:	LD	E,C
	PUSH	BC
	LD	C,1
IGET:	LD	B,8
PDK3:	LD	A,16
	SUB	B
	OUT	018H
	PUSH	BC
	LD	A,M
PDK2:	RLA
	DEC	C
	JRNZ	PDK2-#
	RL	D
	POP	BC
	DJNZ	PDK3-#
	LD	A,(PIX)
	CMP	2
	JRNZ	PDN-#
	LD	A,E
	CMP	32
	JRNC	UTHA-#
	SRL	D
	SRL	D
	SRL	D
	SRL	D
UTHA:	LD	B,4
UT2:	RRC	D
	RRA
	RLC	D
	RRA
	SRL	D
	DJNZ	UT2-#
	LD	D,A
	CALL	OUT
PDN:	LD	A,D
	CALL	OUT
	INC	C
	LD	A,C
	CMP	9
	JRC	IGET-#
	POP	BC
	RET
INGT:	LD	A,(DE)
	CALL	OUT
	INC	DE
	DJNZ	INGT-#
	RET
OUT:	PUSH	AF
WAIT:	IN	2
	BIT	4,A
	JRNZ	WAIT-#
	POP	AF
	OUT	0
	RET
DOPP:	LD	A,8
DO2:	OUT	018H
	LD	HL,0EC00H
	LD	DE,0EE00H
	LD	BC,00200H
	LDIR	
	INC	A
	CMP	010H
	JRC	DO2-#
	RET
FSL:	LD	C,8
FSL2:	LD	HL,0EC01H
	LD	DE,0EC00H
	LD	A,C
	CMP	16
	RNC
	OUT	018H
	LD	B,32
SCBL:	PUSH	BC
	CALL	SCL
	POP	BC
	DJNZ	SCBL-#
	INC	C
	JR	FSL2-#
SCL:	LD	B,31
SCL2:	LD	A,(DE)
	LD	C,M
	RL	C
	RLA
	LD	(DE),A
	INC	HL
	INC	DE
	DJNZ	SCL2-#
	LD	A,(DE)
	RLA
	AND	0FEH
	LD	(DE),A
	INC	HL
	INC	DE
	RET
FSR:	LD	C,8
FSR2:	LD	HL,0EFFEH
	LD	DE,0EFFFH
	LD	A,C
	CMP	16
	RNC
	OUT	018H
	LD	B,32
SCBR:	PUSH	BC
	CALL	SCR
	POP	BC
	DJNZ	SCBR-#
	INC	C
	JR	FSR2-#
SCR:	LD	B,31
SCR2:	LD	A,(DE)
	LD	C,M
	RR	C
	RRA
	LD	(DE),A
	DEC	HL
	DEC	DE
	DJNZ	SCR2-#
	LD	A,(DE)
	RRA
	AND	07FH
	LD	(DE),A
	DEC	HL
	DEC	DE
	RET
FSU:	LD	HL,0EC00H
	LD	B,32
NZT:	LD	C,9
GZT:	PUSH	HL
	PUSH	BC
	CALL	STHI
	POP	BC
	POP	HL
	INC	C
	LD	A,C
	CMP	17
	JRC	GZT-#
	LD	DE,32
	ADD	HL,DE
	DJNZ	NZT-#
	SBC	HL,DE
CLZ2:	LD	B,32
CLZ:	LD	M,0
	INC	HL
	DJNZ	CLZ-#
	RET
STHI:	LD	A,C
	PUSH	HL
	CMP	16
	JRNZ	GLZ-#
	LD	DE,32
	ADD	HL,DE
	LD	A,8
GLZ:	CALL	STZ
	POP	DE
	DEC	A
	CMP	7
	JRNZ	POPZ-#
	LD	A,15
POPZ:	LD	HL,MP1
	JR	STPZ-#
STZ:	LD	DE,MP1
STPZ:	OUT	018H
	LD	BC,32
	LDIR
	RET
FSD:	LD	HL,0EFE0H
	LD	B,32
NZTD:	LD	C,14
GZTD:	PUSH	HL
	PUSH	BC
	CALL	STLO
	POP	BC
	POP	HL
	DEC	C
	LD	A,C
	CMP	6
	JRNZ	GZTD-#
	LD	DE,32
	SBC	HL,DE
	DJNZ	NZTD-#
	ADD	HL,DE
	JR	CLZ2-#
STLO:	LD	A,C
	PUSH	HL
	CMP	7
	JRNZ	GLZD-#
	LD	DE,32
	SBC	HL,DE
	LD	A,15
GLZD:	CALL	STZ
	POP	DE
	INC	A
	CMP	16
	JRC	POPZ-#
	LD	A,8
	JR	POPZ-#
PRST7:	LD	A,M
	AND	07FH
	CALL	PRINT
	LD	A,M
	INC	HL
	OR	A
	RZ
	CMP	080H
	RNC
	JR	PRST7-#
PRINT:	PUSH	HL
	PUSH	DE
	PUSH	BC
	PUSH	AF
	CMP	14
	CANC	PRCA
	LD	HL,(02BH)
	LD	BC,32
	SUB	8
	JRNZ	PN9-#
	DEC	HL
PREX:	LD	(02BH),HL
PNE:	POP	AF
	POP	BC
	POP	DE
	POP	HL
	RET
PN9:	DEC	A
	JRNZ	PNA-#
	INC	HL
	JR	PREX-#
PNA:	DEC	A
	JRNZ	PNB-#
PNA2:	ADD	HL,BC
	JR	PREX-#
PNB:	DEC	A
	JRNZ	PNC-#
	SBC	HL,BC
	JR	PREX-#
PNC:	DEC	A
	JRNZ	PND-#
	CALL	CLS
	LD	HL,0EC00H
	JR	PREX-#
PND:	DEC	A
	JRNZ	PNE-#
	LD	A,L
	AND	0E0H
	LD	L,A
	JR	PNA2-#
PRCA:	LD	HL,(ZANF)
	LD	B,0
	SLA	A
	RL	B
	RLA
	RL	B
	RLA
	RL	B
	LD	C,A
	ADD	HL,BC
	EX	DE,HL
	LD	HL,(02BH)
	LD	C,8
NSVS:	LD	A,C
	CMP	16
	JRC	NS3-#
	LD	A,9
	RET
NS3:	OUT	018H
	LD	A,(DE)
	CALL	PRVG
	INC	DE
	INC	C
	JR	NSVS-#
JOYST:	PUSH	HL
	PUSH	BC
	LD	HL,02500H
	CALL	MJGET
	LD	B,01FH
NJOY:	XOR	A
	OUT	0
	LD	A,C
	CPL
	AND	B
	POP	BC
	POP	HL
	RET
MJGET:	LD	A,0CFH
	OUT	1
	LD	A,07FH
	OUT	1
	CPL
	OUT	0
MJG2:	IN	0
	LD	C,A
WJG:	IN	0
	LD	B,A
	CMP	C
	RNZ
	DEC	HL
	LD	A,H
	OR	L
	RZ
	JR	WJG-#
MAUS:	PUSH	HL
	PUSH	BC
	LD	HL,02000H
	CALL	MJGET
	JRNZ	MBW-#
FTB:	LD	A,B
	AND	070H
	LD	C,A
	JR	NJOY-#
MBW:	LD	A,C	
	AND	01FH
	LD	C,A
	LD	A,B
	AND	01FH
	CMP	C
	JRZ	FTB-#
	JR	FTB-#
DINI:	DB	27,'3',24
	DB	27,'O'
ITAB:	DB	10,13
IT2:	DB	27,'*',5,0
MP1:	DB	'        '
MP2:	DB	'        '
	DB	'        '
	DB	'        '
	END
;
	END