
;  CIRCLE RTN

	DB	"ZX82",3,0
	DB	THE-START/256,THE-START&255
	DB	START/256,START&255
	DW	-1

	ORG 50000

START:
	LD DE,0F000H
	LD A,32
SET:	LD HL,PLOTDA
	LD BC,8
	LDIR
	DEC A
	JR NZ,SET

LLO2:	LD B,5
LLO:	PUSH BC
	LD A,R
	LD DE,(23672)
	XOR D
	AND 31
	LD D,A
	LD A,(DE)
	LD (X),A
	INC DE
	LD A,(DE)
	LD (Y),A
	INC DE
	LD A,(DE)
	AND 31
	LD (RAD),A
	CALL CIR
	LD A,127
	IN A,(254)
	RRCA
	POP BC
	RET NC
	DJNZ LLO
	LD HL,22527
	LD DE,22526
	LD BC,6143
	LD (HL),0
	LDDR 
	JR LLO2


; MIKE'S CIRCLE ROUTINE

CIR:	LD C,255
	LD A,(RAD)
	LD B,A
	LD L,B
	SRL L
	LOOP:INC C
	LD A,L
	SUB C
	LD L,A
	JR NC,OVER
	LD A,L
	ADD B
	LD L,A
	DEC B
OVER:	LD A,(X)
	ADD C
	LD E,A
	LD A,(Y)
	ADD B
	LD D,A
	CALL PLOT
	LD A,(X)
	ADD C
	LD E,A
	LD A,(Y)
	SUB B
	LD D,A
	CALL PLOT
	LD A,(X)
	SUB C
	LD E,A
	LD A,(Y)
	SUB B
	LD D,A
	CALL PLOT
	LD A,(X)
	SUB C
	LD E,A
	LD A,(Y)
	ADD B
	LD D,A
	CALL PLOT
	LD A,(X)
	ADD B
	LD E,A
	LD A,(Y)
	ADD C
	LD D,A
	CALL PLOT
	LD A,(X)
	ADD B
	LD E,A
	LD A,(Y)
	SUB C
	LD D,A
	CALL PLOT
	LD A,(X)
	SUB B
	LD E,A
	LD A,(Y)
	ADD C
	LD D,A
	CALL PLOT
	LD A,(X)
	SUB B
	LD E,A
	LD A,(Y)
	SUB C
	LD D,A
	CALL PLOT
	LD A,C
	CP B
	JR C,LOOP
	RET

PLOT:
	LD A,D
	CP 192
	RET NC
	PUSH HL
	PUSH DE
	SRL E
	SRL E
	SRL E
	LD A,D
	RLCA
	RLCA
	AND 0E0H
	OR E
	LD L,A
	LD A,D
	RRCA
	RRCA
	RRCA
	AND 018H
	OR 040H
	LD H,A
	LD A,D
	AND 7
	OR H
	LD H,A
	POP DE
	LD D,0F0H
	LD A,(DE)
	OR (HL)
	LD (HL),A
	POP HL
	RET

PLOTDA:	DB 128,64,32,16,8,4,2,1

X:	DB 0
Y:	DB 0
RAD:	DB 0

THE:	END

