;:sys36864
	;.opt oo
	*= $c000
tmp	  =2
adr	  =4
vic	  =$d000
scr	  =1024
table	=$cdff
av	   =247
offx	 =110
x	    =249
y	    =251
mode	 =252
y1	   =253
hu	   =100	;konstante
maxx	 =320	;konstante
fakt	 =254
zw	   =hu*2
erg	  =181
y0	   =170
y2	   =171
flag	 =166
	jmp verzerr
mult	=*
	.word $2000,$2140,$2280,$23c0
	.word $2500,$2640,$2780,$28c0
	.word $2a00,$2b40,$2c80,$2dc0
	.word $2f00,$3040,$3180,$32c0
	.word $3400,$3540,$3680,$37c0
	.word $3900,$3a40,$3b80,$3cc0
	.word $3e00,$3a40,$3b80,$3cc0
grbit	.byt $80,$40,$20,$10,8,4,2,1
show	lda #59
	sta vic+17
	lda #29
	sta vic+24
	ldy #0
	sty tmp
	ldx #4
	stx tmp+1
	lda #1
colin	sta (tmp),y
	iny
	bne colin
	inc tmp+1
	dex
	bne colin
	rts
;
; set point at (x/y)
; mode < 0 => reset, sonst set
;
calc	lda y
	pha
	lsr
	lsr
	lsr
	asl
	tay
	lda mult,y
	sta av
	lda mult+1,y
	sta av+1
	pla
	and #7
	clc
	adc av
	sta av
	lda x
	and #$f8
	sta offx
	lda av
	clc
	adc offx
	sta av
	lda av+1
	adc x+1
	sta av+1
	lda x
	and #7
	tax
	lda grbit,x
	ldy #0
	rts
set	lda y
	pha
	lda flag
	beq qset
	lda #(zw-1)
	sec
	sbc y
	sta y
qset	jsr calc
	bit mode
	bmi setl
	eor #-1
	and (av),y
	.byt $2c
setl	ora (av),y
	sta (av),y
	pla
	sta y
	rts
test	jsr calc
	and (av),y
	beq nul
	lda #-1
nul	sta mode
	rts
fin	cli
	rts
verzerr	sei
	jsr show
	lda #<maxx
	ldy #>maxx
	sta x
	sty x+1
	lda #<table
	ldy #>table
	sta adr
	sty adr+1
xloop	lda x
	bne x2
	dec x+1
	bmi fin
x2	dec x
	inc adr
	bne x3
	inc adr+1
x3	lda #hu
	sta y1
	ldy #0
	sty flag
	lda (adr),y
	bne nonu
	lda #1
nonu	cmp #hu
	bcc gut
	bne gr100
	lda #(hu-1)
	bne gut
gr100	cmp #zw
	bcc kl200
	lda #(zw-1)
kl200	sta y0
	sec
	lda #zw
	sec
	sbc y0
	inc flag
gut	sta y0
	lda #hu
	sec
	sbc y0
	sta y0
yloop	lda #hu
	sec
	sbc y1
	sta fakt
	lda #0
	sta erg
	sta erg+1
	ldx y0
mul	lda erg
	clc
	adc fakt
	sta erg
	bcc noadd
	inc erg+1
noadd	dex
	bne mul
	ldx #-1
div	inx
	lda erg+1
	bne mussnoch
	lda erg
	cmp #hu
	bcc divend
mussnoch	lda erg
	sec
	sbc #hu
	sta erg
	bcs div
	dec erg+1
	jmp div
divend	stx erg
	lda #hu
	sec
	sbc erg
	sta y2
	lda y1
	sta y
	jsr test
	lda y2
	sta y
	jsr set
	lda #zw
	sec
	sbc y1
	sta y
	jsr test
	lda #zw
	sec
	sbc y2
	sta y
	jsr set
	dec y1
	bpl yloop
	sec
	lda #hu
	sbc y0
	beq none
	sta y
	lda #0
	sta mode
yyloop	dec y
	bmi none
	jsr set
	lda #(zw-1)
	sec
	sbc y
	sta y
	jsr set
	sec
	lda #(zw-1)
	sbc y
	sta y
	bpl yyloop
none	jmp xloop
