;: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 sta x sty x+1 lda #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