;:sys36864 ;.opt oo *= $c000 xcoord =$14 illquan =$b248 av =251 status =2 gralo2 =$e000 flag =$97 konf =1 tmp2 =253 clrscr =$e544 sprite =704 tmp =av sprptr =2040 irqalt =$ea31 irqvec =$314 key =203 collo =$400 tab =$eb81 shtab =$ebc2 shft =$28d nmkey =198 vic =$d000 gralo =$2000 getx =$b7f1 chkcom =$aefd getpar =$b7eb jmp init ; sys 49152 jmp clear ; sys 49155 jmp color ; sys 49158,co jmp revers ;sys 49161 jmp set ; sys 49164,x,y jmp reset ; sys 49167,x,y jmp test ; sys 49170,x,y -> peek(2) jmp verkl ; sys 49173,x,y jmp tr12 ; sys 49176 jmp tr21 ; sys 49179 jmp test2 ; sys 49182,x,y -> (2) jmp vergr ; sys 49185,x1,y1,x2,y2 jmp groff ; sys 49188 jmp setm ; sys 49191 -> 828-830 jmp setm2 ; sys 49194 -> 828-830 grbit .byt 1,2,4,8,$10,$20,$40,$80 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 offy .word 0 offx brk erg .word 0 nenner .word 0 zaehler .word 0 xx =828 yy =830 px .word 0 py .word 0 hx .word 0 hy .word 0 x1 .word 0 y1 brk x2 .word 0 y2 brk mx .word 0 my brk lx .word 0 ly .word 0 nx .word 0 ny .word 0 sx .word 0 sy .word 0 cntdwn brk currcol brk init lda #59 sta vic+17 lda #29 sta vic+24 ldx #$10 bne col color jsr getx col ldy #0 lda #>collo sty tmp sta tmp+1 txa ldx #4 coll sta (tmp),y iny bne coll inc tmp+1 dex bne coll rts clear ldy #0 ldx #>gralo sty tmp stx tmp+1 tya clr sta (tmp),y iny bne clr inc tmp+1 dex bne clr rts revers ldy #0 ldx #>gralo sty tmp stx tmp+1 rvs lda (tmp),y eor #-1 sta (tmp),y iny bne rvs inc tmp+1 dex bne rvs rts getkoor jsr chkcom jmp getpar punkt jsr safety txa lsr lsr lsr asl tay lda mult,y sta offy lda mult+1,y sta offy+1 txa and #7 clc adc offy sta offy lda xcoord and #$f8 sta offx clc lda offx adc offy sta av lda offy+1 adc xcoord+1 sta 1+av lda xcoord and #7 eor #7 tax lda grbit,x ldy #0 rts reset lda #$80 .byt $2c set lda #0 sta flag jsr getkoor plot jsr punkt bit flag bpl setl eor #-1 and (av),y .byt $2c setl ora (av),y sta (av),y rts test jsr getkoor check jsr punkt and (av),y sta status rts teile lda #0 sta erg sta erg+1 jsr testnenn comp lda zaehler+1 cmp nenner+1 bcc fertig bne weiter lda zaehler cmp nenner bcc fertig weiter inc erg bne wei2 inc erg+1 wei2 lda zaehler sec sbc nenner sta zaehler lda zaehler+1 sbc nenner+1 sta zaehler+1 jmp comp fertig rts testnenn lda nenner bne nennok lda nenner+1 bne nennok jmp ill nennok rts safety cpx #200 bcs ill lda xcoord+1 cmp #>320 bcc ok bne ill lda xcoord cmp #<320 bcs ill ok rts ill jmp illquan clrvar lda #0 sta px sta px+1 sta py sta hx sta hx+1 sta hy sta hy+1 rts setcheck ldx #3 lda hx sta xcoord lda hx+1 sta xcoord+1 du8 lsr xcoord+1 ror xcoord dex bne du8 ldx #3 lda hy sta tmp lda hy+1 sta tmp+1 dr8 lsr tmp+1 ror tmp dex bne dr8 ldx tmp rts groff lda #27 sta vic+17 lda #21 sta vic+24 jmp clrscr verkl jsr getkoor jsr safety lda xcoord sta nenner lda xcoord+1 sta nenner+1 lda #<2560 sta zaehler lda #>2560 sta zaehler+1 jsr teile lda erg sta xx lda erg+1 sta xx+1 stx nenner lda #0 sta nenner+1 lda #<1600 sta zaehler lda #>1600 sta zaehler+1 jsr teile lda erg sta yy lda erg+1 sta yy+1 jsr init jsr clrvar loop jsr setcheck jsr check bne aus lda #128 .byt $2c aus lda #0 sta flag lda px+1 sta xcoord+1 lda px sta xcoord ldx py jsr plot lda hx clc adc xx sta hx lda hx+1 adc xx+1 sta hx+1 inc px bne nocy inc px+1 nocy lda hx+1 cmp #>2560 bcc cont bne endx lda hx cmp #<2560 bcs endx cont jmp loop endx lda #0 sta hx sta hx+1 sta px sta px+1 inc py lda hy clc adc yy sta hy lda hy+1 adc yy+1 sta hy+1 lda hy+1 cmp #>1600 bcc cont bne stop lda hy cmp #<1600 bcc cont stop rts tr12 lda #>gralo ldx #>gralo2 bne trans tr21 lda #53 sei sta konf ldx #>gralo lda #>gralo2 trans sta tmp+1 stx tmp2+1 ldy #0 sty tmp sty tmp2 ldx #32 trlp lda (tmp),y sta (tmp2),y iny bne trlp inc tmp+1 inc tmp2+1 dex bne trlp lda #55 sta konf cli rts add2 lda av+1 clc adc #$e0-$20 sta av+1 rts test2 jsr getkoor check2 jsr punkt pha lda #53 sei sta konf jsr add2 pla and (av),y sta status pha lda #55 sta konf cli pla rts tausch lda y1 cmp y2 bcc tst2 pha lda y2 sta y1 pla sta y2 tst2 lda x1+1 cmp x2+1 bcc tst3 bne tst4 lda x1 cmp x2 bcc tst3 tst4 lda x1 pha lda x1+1 pha lda x2 sta x1 lda x2+1 sta x1+1 pla sta x2+1 pla sta x2 tst3 rts sethx lda x1 sta hx lda x1+1 sta hx+1 rts testpy lda py+1 cmp #>3200 bcc goon bne goon lda py cmp #<3200 goon rts testpx lda px+1 cmp #>20480 bcc goon bne goon lda px cmp #<20480 rts vergr jsr getkoor jsr safety lda xcoord sta x1 lda xcoord+1 sta x1+1 stx y1 jsr getkoor jsr safety lda xcoord sta x2 lda xcoord+1 sta x2+1 stx y2 jsr tausch lda x2 sec sbc x1 sta mx lda x2+1 sbc x1+1 sta mx+1 lda y2 sec sbc y1 sta my lda #0 sta py sta py+1 jsr tr12 jsr sethx lda y1 sta hy lda #<20480 sta zaehler lda #>20480 sta zaehler+1 lda mx sta nenner lda mx+1 sta nenner+1 jsr teile lda erg sta sx lda erg+1 sta sx+1 lda #<3200 sta zaehler lda #>3200 sta zaehler+1 lda my sta nenner lda #0 sta nenner+1 jsr teile lda erg sta sy lda erg+1 sta sy+1 jsr init yloop lda py sta ly clc adc sy sta ny lda py+1 sta ly+1 adc sy+1 sta ny+1 lda #0 sta px sta px+1 xloop lda px sta lx clc adc sx sta nx lda px+1 sta lx+1 adc sx+1 sta nx+1 ldx hy lda hx sta xcoord lda hx+1 sta xcoord+1 jsr check2 jmp tloop qnp jmp np tloop jsr testpx bcs qnp lda px sta xcoord lda px+1 sta xcoord+1 jsr testpy bcs qnp lda py sta yy lda py+1 sta yy+1 ldx #4 drc16 lsr xcoord+1 ror xcoord lsr yy+1 ror yy dex bne drc16 lsr xcoord+1 ror xcoord lsr xcoord+1 ror xcoord lda status bne an lda #128 .byt $2c an lda #0 sta flag ldx yy jsr plot lda px clc adc #8 sta px lda px+1 adc #0 sta px+1 cmp nx+1 bcc tloop bne cloop lda px cmp nx bcc tloop cloop lda lx sta px lda lx+1 sta px+1 lda py clc adc #8 sta py lda py+1 adc #0 sta py+1 cmp ny+1 bcc qtloop bne ccloop lda py cmp ny bcs ccloop qtloop jmp tloop ccloop lda nx sta px lda nx+1 sta px+1 lda ly sta py lda ly+1 sta py+1 inc hx bne nono inc hx+1 nono jsr testpx bcs np jmp xloop np jsr sethx lda ny sta py lda ny+1 sta py+1 inc hy bne no2 inc hy+1 no2 jsr testpy bcs aaus jmp yloop aaus rts setm jsr irqinit jsr clrspr sta xx sta xx+1 sta yy lda #1 sta sprite+21 wl lda key cmp #64 bne wl lda #254 sta sprite+22 lda #1 ldx #24 ldy #7 ccps sta sprite,x inx inx inx dey bne ccps keyloop jsr get beq keyloop jsr pause cmp #13 bne nocr jsr irqoff lda #0 sta vic+21 sta nmkey rts nocr cmp #"\x91" bne noup lda yy beq keyloop dec yy jmp keyloop noup cmp #"\x11" bne nodwn lda yy cmp #199 bcs keyloop inc yy bne keyloop nodwn cmp #"\x1d" bne norig lda xx+1 cmp #>319 bcc gorig bne keyloop lda xx cmp #<319 bcs keyloop gorig inc xx bne keyloop inc xx+1 bne keyloop norig cmp #"\x9d" bne keyloop lda xx+1 bne golft lda xx beq keyloop golft lda xx sec sbc #1 sta xx lda xx+1 sbc #0 sta xx+1 jmp keyloop setm2 jsr irqinit jsr clrspr lda #199 sta yy lda #-1 sta sprite+21 wl2 lda key cmp #64 bne wl2 lda #1 ldx #0 ldy #7 ccpss sta sprite,x inx inx inx dey bne ccpss lda #1 sta xx+1 lda #<319 sta xx jmp keyloop irqinit lda #irqneu setirq sei sta irqvec sty irqvec+1 lda #1 sta currcol sta cntdwn cli rts irqoff lda #irqalt bne setirq irqneu dec cntdwn bne quitirq lda #20 sta cntdwn lda currcol eor #1 sta vic+39 sta currcol quitirq lda xx clc adc #17 sta vic lda xx+1 adc #0 sta vic+16 lda yy clc adc #43 sta 1+vic jmp irqalt clrspr lda #1 sta vic+21 lda #11 sta sprptr ldx #63 lda #0 cps sta sprite,x dex bpl cps rts get ldx key cpx #64 bne nonull lda #0 rts nonull ldy shft bne stab lda tab,x rts stab lda shtab,x rts pause ldx #255 ldy #10 ps dex bne ps dey bne ps rts