home *** CD-ROM | disk | FTP | other *** search
Text File | 1987-01-01 | 27.4 KB | 1,337 lines |
-
- * = $801
-
- ; speicherbelegung:
- ; $e000 - $ffff : bild 1
- ; dend - $dfff : daten
- ; $c800 - dend-1 : programm
- ; $c780 - $c7ff : variablen
- ; $c700 - $c77f : vartab (defaults)
- ; $c400 - $c6ff : cosinustabelle
- ; $c000 - $c3ff : farben 1
- ; $a000 - $bfff : bild 2
- ; $9000 - $9fff : programm
- ; $8c00 - $8fff : farben 2
- ; $8800 - $8bff : programm
-
- panf = $37 ;anfang der punkte
- pvek = $59 ;zeiger auf punkt
- lvek = $5b ; " " linie
- fac = $61 ;3bytes
- arg = $69 ;3bytes
- hilf = $64 ;arithmetisches
- ;hilfsregister (3bytes)
- basis = $29
- zero = fac
- vic = $d000
- vonx = $5d
- vony = $5f
- nachx = $6c
- nachy = $67
- dx = fac
- dy = fac+2
- ds = hilf+1
- sp = hilf+2
-
- vb = $c780 ;anfang variablen
- zw = vb
- ba = zw+2
- bi = ba+1
- eventl = bi+2
- immer = eventl+2
-
- lanf = immer+2 ;anfang der linien
- wa = lanf+2 ;winkel a
- wb = wa+3 ;winkel b
- dwa = wb+3 ;delta winkel a
- dwb = dwa+3 ;delta einkel b
- x = dwb+3 ;verschiebung x
- y = x+2 ;verschiebung y
- z = y+2 ;verschiebung z
- delx = z+2 ;delta x
- dely = delx+2 ;delta y
- delz = dely+2 ;delta z
- dimflag = delz+2 ;flag dimensionrng.
- autoflg = dimflag+1;flag automatische
- ;basic -
- ;interpretation
- joyflg = autoflg+1;flag joystick-
- ;steuerung
- ;0=joystick
- ;1=automatisch
- perspflg = joyflg+1 ;0=parallelp.
- ;1=fluchtp.
- aug = perspflg+1;augpunkt
- s = aug+2 ;schirm
- as = s+2 ;s-aug
- xmin = as+2 ;minimum von x
- ymin = xmin+2 ; " " y
- zmin = ymin+2 ; " " z
- xmax = zmin+2 ;maximum von x
- ymax = xmax+2 ; " " y
- zmax = ymax+2 ; " " z
- vonz = zmax+2
- nachz = vonz+2
- neg = nachz+2 ;negativflag
- winkel = neg+1
- pmax = winkel+3 ;max. punktnr.
- lmax = pmax+2 ;max. liniennr.
- sa = lmax+2 ;sin(wa)
- sb = sa+3 ;sin(wb)
- ca = sb+3 ;cos(wa)
- cb = ca+3 ;cos(wb)
- puff = cb+3 ;puffer
-
-
- frmnum = $ad8a
- getadr = $b7f7
- illegal = $b248
-
- move .segment a,b
- lda &a&
- sta &b&
- lda &a&+1
- sta &b&+1
- .mend
- movew .segment a,b
- #move &a&,&b&
- lda &a&+2
- sta &b&+2
- .mend
- movei .segment im,b
- lda #<[&im&]
- sta &b&
- lda #>[&im&]
- sta &b&+1
- .mend
- movevin .segment vek,offset,ad
- ldy #&offset&
- lda (&vek&),y
- sta &ad&
- iny
- lda (&vek&),y
- sta &ad&+1
- .mend
- movenin .segment ad,offset,vek
- ldy #&offset&
- lda &ad&
- sta (&vek&),y
- iny
- lda &ad&+1
- sta (&vek&),y
- .mend
- add .segment a,b,c
- clc
- lda &a&
- adc &b&
- sta &c&
- lda &a&+1
- adc &b&+1
- sta &c&+1
- .mend
- addi .segment a,b,c
- clc
- lda #<&a&
- adc &b&
- sta &c&
- lda #>&a&
- adc &b&+1
- sta &c&+1
- .mend
- sub .segment a,b,c
- sec
- lda &a&
- sbc &b&
- sta &c&
- lda &a&+1
- sbc &b&+1
- sta &c&+1
- .mend
- subi .segment a,b,c
- sec
- lda #<&a&
- sbc &b&
- sta &c&
- lda #>&a&
- sbc &b&+1
- sta &c&+1
- .mend
- shiftr .macro a
- clc
- bvs l1
- bpl l3
- bmi l2
- l1 bmi l3
- l2 sec
- l3 ror &a&+1
- ror &a&
- .mend
- sladd .segment a,b,c
- asl &a&
- rol &a&+1
- #add &a&,&b&,&c&
- .mend
- subsr .segment a,b,c
- #sub &a&,&b&,&c&
- #shiftr &c&
- .mend
- subsri .segment a,b,c
- #subi &a&,&b&,&c&
- #shiftr &c&
- .mend
- ashl .segment a
- asl &a&
- rol &a&+1
- .mend
- swap .segment a,b
- lda &a&
- ldx &b&
- sta &b&
- stx &a&
- .mend
- swapw .segment a,b
- #swap &a&,&b&
- #swap &a&+1,&b&+1
- .mend
- rotr .segment a
- lda &a&+1
- asl
- ror &a&+1
- ror &a&
- .mend
- t8 .segment a
- lda &a&+1
- tax
- asl
- ror &a&+1
- ror &a&
- txa
- asl
- ror &a&+1
- ror &a&
- txa
- asl
- ror &a&+1
- ror &a&
- .mend
-
- .byte $0f,$08,$0a,$00,$9e,$20,$32,$30
- .byte $36,$35,$20,$20,$20,$00,$00,$00
- #movei [anfang+offset],$5f
- #movei [end1+offset],$5a
- #movei end1,$58
- jsr $a3bf
- #movei [$c500+offset1],$5f
- #movei [meldend+offset1],$5a
- #movei meldend,$58
- jsr $a3bf
- #movei [$c800+offset2],$5f
- #movei [dend+offset2],$5a
- #movei dend,$58
- jsr $a3bf
- #movei [giga+offset3],$5f
- #movei [gigaend+offset3],$5a
- #movei gigaend,$58
- jsr $a3bf
- jsr initsub
- jsr $e3bf ;basic init
- lda $2b
- ldy $2c
- jsr $a408
- lda #<meldung
- ldy #>meldung
- jsr $e42d ;meldung,new
- jmp $a474 ;ready
-
- offset = *-$9000
- * = $9000
- .offs offset
-
- anfang ;
-
- komma lda 1
- pha
- lda #$37
- sta 1
- jsr $aefd
- pla
- sta 1
- rts
-
- memon #movei nmi,$fffa ;nmi-vek
- lda #$34
- sei
- sta 1
- rts
- nmi jsr memoff
- jmp $e37b ;warmstart
- memoff lda #$37
- sta 1
- cli
- rts
-
- g .var 1
- k .var 2
- gg .var 3
- kg .var 4
- comp .macro ad,con,num,lab,weit
- c .var &con&
- ldx &ad&+1
- n .var &num&
- .if c .= 3
- n .set n-1
- c .set 1
- .cend
- .if c .= 4
- n .set n+1
- c .set 2
- .cend
- .ifpl n
- .if c .= 1
- bmi end
- .if &weit&
- beq l2
- jmp &lab&
- .else
- bne &lab&
- .cend
- .else
- .if &weit&
- bpl l1
- jmp &lab&
- .else
- bmi &lab&
- .cend
- l1 bne end
- .cend
- .else
- .if c .= 2
- bpl end
- inx
- .if &weit&
- bpl l2
- jmp &lab&
- .else
- bmi &lab&
- .cend
- .else
- .if &weit&
- bmi l1
- jmp &lab&
- .else
- bpl &lab&
- .cend
- l1 inx
- bmi end
- .cend
- .cend
- l2 ;
- .if c .= 1
- lda #n
- cmp &ad&
- .else
- lda &ad&
- cmp #n
- .cend
- .if not &weit&
- bcc &lab&
- .else
- bcs end
- jmp &lab&
- .cend
- end .mend
-
- ;anfang graf
-
- clrscreen lda ba
- sta zero+1
- ldy #0
- sty zero
- ldx #31
- lda #0
- lcr1 sta (zero),y
- dey
- bne lcr1
- inc zero+1
- dex
- bne lcr1
- ldy #64
- lcr2 sta (zero),y
- dey
- bpl lcr2
- rts
-
- gran lda #$e0 ;anfangsseite
- sta ba
- lda #$10
-
- farben ldx #0
- farben1 sta $c000,x
- sta $c100,x
- sta $c200,x
- sta $c300,x
- sta $8c00,x
- sta $8d00,x
- sta $8e00,x
- sta $8f00,x
- dex
- bne farben1
- rts
-
- graus lda #27
- sta vic+17
- lda #200
- sta vic+22
- lda #21
- sta vic+24
- lda #3
- sta $dd00
- rts
-
- anzeigen lda #$37 ;i/o einblenden
- sta 1
- lan2 lda vic+18 ;warten auf
- bne lan2 ;rasterzeile=0
- lda vic+17
- and #$80
- bne lan2
- lda #$bb
- sta vic+17
- lda ba
- cmp #$a0
- bne lan1
- lda #$e0 ;ba=$a0
- sta ba
- lda #$38
- sta vic+24
- lda #1
- sta $dd00
- lda #$34
- sta 1
- rts
- lan1 lda #$a0 ;ba=$e0
- sta ba
- lda #$08
- sta vic+24
- lda #0
- sta $dd00
- lda #$34
- sta 1
- rts
-
- pktset .segment
- lda bi
- ora (basis),y
- sta (basis),y
- .mend
-
- plot .blck
- lda vony
- lsr
- lsr
- lsr
- tay
- clc
- lda vony
- and #7
- adc maltab,y
- sta basis
- lda vonx
- and #$f8
- adc basis
- sta basis
- lda maltab1,y
- adc ba
- adc vonx+1
- sta basis+1
- lda vonx
- and #7
- tay
- lda hochtab,y
- sta bi
- ldy #0
- #pktset
- rts
- maltab .byte $00,$40,$80,$c0
- .byte $00,$40,$80,$c0
- .byte $00,$40,$80,$c0
- .byte $00,$40,$80,$c0
- .byte $00,$40,$80,$c0
- .byte $00,$40,$80,$c0
- .byte $00
- maltab1 .byte $00,$01,$02,$03
- .byte $05,$06,$07,$08
- .byte $0a,$0b,$0c,$0d
- .byte $0f,$10,$11,$12
- .byte $14,$15,$16,$17
- .byte $19,$1a,$1b,$1c
- .byte $1e
- hochtab .byte $80,$40,$20,$10
- .byte $08,$04,$02,$01
- .bend
-
- xp lsr bi
- bcs lxp1
- rts
- lxp1 ror bi
- clc
- lda basis
- adc #8
- sta basis
- bcc lxp2
- inc basis+1
- lxp2 rts
- yp inc basis
- bne lyp1
- inc basis+1
- lyp1 lda basis
- and #$07
- beq lyp2
- rts
- lyp2 #addi $138,basis,basis
- rts
- xm asl bi
- bcs lxm1
- rts
- lxm1 rol bi
- sec
- lda basis
- sbc #8
- sta basis
- lda basis+1
- sbc #0
- sta basis+1
- rts
- ym lda basis
- and #$7
- beq lym1
- dec basis
- rts
- lym1 sec
- lda basis
- sbc #$39
- sta basis
- lda basis+1
- sbc #1
- sta basis+1
- rts
-
- cut .blck
- lab1 jsr cutsub ;von
- #swapw vonx,nachx
- #swapw vony,nachy
- jsr cutsub ;nach
- rts
- noline pla ;keine linie ->
- pla ;zwei ruecksprung-
- pla ;adressen holen
- pla
- rts
- cutsub #comp vony,k,100,l12,$ffff
- #comp nachy,g,99,noline,0
- l13 #comp vonx,gg,$ff60,l15,0
- #comp nachx,k,$ff60,noline,0
- l16 jsr doya
- l20 #comp fac,k,$ff9c,noline,0
- #comp fac,g,99,l17,0
- #move fac,vony
- #movei $ff60,vonx
- rts
- l17 jsr doxd
- #comp fac,g,159,noline,$ffff
- #move fac,vonx
- #movei 99,vony
- rts
- l15 #comp vonx,k,160,l18,$ffff
- #comp nachx,k,160,l19,0
- jmp noline
- l19 jsr doyc
- l25 #comp fac,k,$ff9c,noline,$ffff
- #comp fac,g,99,l26,0
- #move fac,vony
- #movei 159,vonx
- rts
- l26 jsr doxd
- #comp fac,k,$ff60,noline,$ffff
- #move fac,vonx
- #movei 99,vony
- rts
- l18 jsr doxd
- #move fac,vonx
- #movei 99,vony
- rts
- l12 #comp vony,gg,$ff9c,l21,$ffff
- #comp nachy,gg,$ff9c,l22,0
- jmp noline
- l22 #comp vonx,gg,$ff60,l23,0
- #comp nachx,gg,$ff60,l24,0
- jmp noline
- l24 jsr doya
- l33 #comp fac,k,$ff9c,l34,0
- #comp fac,g,99,noline,$ffff
- #move fac,vony
- #movei $ff60,vonx
- rts
- l34 jsr doxb
- #comp fac,g,159,noline,$ffff
- #move fac,vonx
- #movei $ff9c,vony
- rts
- l23 #comp vonx,k,160,l27,0
- #comp nachx,k,160,l28,0
- jmp noline
- l28 jsr doyc
- l35 #comp fac,k,$ff9c,l36,0
- #comp fac,g,99,noline,$ffff
- #move fac,vony
- #movei 159,vonx
- rts
- l36 jsr doxb
- #comp fac,k,$ff60,noline,$ffff
- #move fac,vonx
- #movei $ff9c,vony
- rts
- l27 jsr doxb
- #move fac,vonx
- #movei $ff9c,vony
- rts
- l21 #comp vonx,gg,$ff60,l29,0
- #comp nachx,k,$ff60,noline,$ffff
- l30 jsr doya
- #comp fac,k,$ff9c,noline,$ffff
- #comp fac,g,99,noline,$ffff
- #move fac,vony
- #movei $ff60,vonx
- rts
- l29 #comp vonx,g,159,l31,0
- rts
- l31 #comp nachx,g,159,noline,$ffff
- l32 jsr doyc
- #comp fac,k,$ff9c,noline,$ffff
- #comp fac,g,99,noline,$ffff
- #move fac,vony
- #movei 159,vonx
- rts
-
- negarg .macro
- ldy #0
- lda arg+1
- bpl lab
- sec
- tya
- sbc arg
- sta arg
- tya
- sbc arg+1
- sta arg+1
- dey
- tya
- eor neg
- sta neg ;negativflag
- lab .mend
-
- mul .blck ;fac hilf:=fac*arg
- ldy #0
- sty hilf
- sty hilf+1
- lda fac+1
- sta neg ;vorzeichen
- bpl l1
- sec ;fac<0
- tya
- sbc fac
- sta fac
- tya
- sbc fac+1
- sta fac+1
- l1 #negarg
- ldx #13
- #ashl fac
- #ashl fac
- #ashl fac
- bcc l4 ;unbedingt
- l3 asl hilf
- rol hilf+1
- l4 rol fac
- rol fac+1
- bcc l2
- #add hilf,arg,hilf
- bcc l2
- inc fac
- bne l2
- inc fac+1
- l2 dex
- bne l3
- rts
- .bend
-
- div .blck ;fac:=(neg)fac hilf/arg
- #negarg
- lda fac+1
- bne l1
- lda fac
- bne l1
- lda hilf+1
- cmp arg+1
- bcs l1
- lda hilf
- cmp arg
- bcs l1
- sty fac+1 ;arg>hilf -> fac:=0
- sty fac
- rts
- l1 ldx #16
- clc
- l6 rol hilf
- rol hilf+1
- rol fac
- rol fac+1
- sec
- lda fac
- sbc arg
- tay
- lda fac+1
- sbc arg+1
- bcc l5 ;unterlauf
- sta fac+1
- sty fac
- l5 dex
- bne l6
- rol hilf
- rol hilf+1
- lda neg ;vorzeichen
- bpl l7 ;positiv
- #subi 0,hilf,fac ;negativ
- rts
- l7 #move hilf,fac ;positiv
- rts
- .bend
-
- doya #subi $ff60,vonx,fac
- #sub nachy,vony,arg
- jsr mul
- #sub nachx,vonx,arg
- jsr div
- #add fac,vony,fac
- rts
- doxb #subi $ff9c,vony,fac
- #sub nachx,vonx,arg
- jsr mul
- #sub nachy,vony,arg
- jsr div
- #add fac,vonx,fac
- rts
- doyc #subi 159,vonx,fac
- #sub nachy,vony,arg
- jsr mul
- #sub nachx,vonx,arg
- jsr div
- #add fac,vony,fac
- rts
- doxd #subi 99,vony,fac
- #sub nachx,vonx,arg
- jsr mul
- #sub nachy,vony,arg
- jsr div
- #add fac,vonx,fac
- rts
- .bend
-
- vek .blck
- #t8 vonx
- #t8 vony
- #t8 nachx
- #t8 nachy
- jsr cut
- #addi 160,vonx,vonx ;mitte
- #addi 160,nachx,nachx
- #subi 99,vony,vony
- #subi 99,nachy,nachy
- l15 lda nachx+1
- cmp vonx+1
- bcc l4
- bne l5
- lda nachx
- cmp vonx
- bne l21
- lda vony
- cmp nachy
- bne l21
- jmp plot ;von=nach
- l21 bcs l5
- l4 lda vonx ;vonx > nachx
- #swapw vonx,nachx
- #swap vony,nachy
- l5 jsr plot
- #sub nachx,vonx,dx
- sec ;dy:=nachy-vony
- lda nachy
- sbc vony
- sta dy
- bcc l6 ;vony>nachy
- lda dx+1
- bne l7 ;dx>dy
- lda dx
- cmp dy
- bcc l8 ;dy>dx
- l7 #movei yp,eventl ;dx>dy
- #movei xp,immer
- ldx #0 ;flag algo1
- jmp l9
- l8 #movei xp,eventl
- #movei yp,immer
- ldx #1 ;flag algo2
- jmp l9
- l6 sec
- lda #0 ;neg dy
- sbc dy
- sta dy
- lda dx+1
- bne l10 ;dx>dy
- lda dx
- cmp dy
- bcc l11 ;dy>dx
- l10 #movei ym,eventl ;dx>dy
- #movei xp,immer
- ldx #0 ;flag algo1
- jmp l9
- l11 #movei xp,eventl ;dy>dx
- #movei ym,immer
- ldx #1 ;flag algo2
- l9 ldy #0 ;fuer pktset loeschen
- lda dx+1
- beq l16 ;dx high=0
- lda dx ;linie halbieren
- sec
- ror
- sta nachx
- sta dx
- bcc l19
- inc nachx
- l19 lda dy
- lsr
- sta nachy
- sta dy
- bcc l20
- inc nachy
- l20 jsr l16 ;erste haelfte
- lda nachx
- sta dx
- lda nachy
- sta dy
- l16 txa ;flag holen
- bne algo2
- .bend
- algo1 .blck
- lda dx
- sta sp
- lsr
- sta ds
- l1 clc
- lda ds
- adc dy
- sta ds
- bcs l22
- cmp dx
- bcc l2
- l22 lda ds
- sbc dx
- sta ds
- jsr l13
- #pktset
- l2 jsr l14
- l3 #pktset
- dec sp
- bne l1
- rts
- .bend
- algo2 .blck
- lda dy
- sta sp
- lsr
- sta ds
- l17 clc
- lda ds
- adc dx
- sta ds
- bcs l23
- cmp dy
- bcc l18
- l23 lda ds
- sbc dy
- sta ds
- jsr l13
- #pktset
- l18 jsr l14
- #pktset
- dec sp
- bne l17
- rts
- .bend
-
- l13 jmp (eventl)
- l14 jmp (immer)
-
- ;anfang dreh
-
- muldreh .blck ;fac:=fac*arg
- ldy #0 ; fac:koordinate
- sty hilf ; arg:sin v cos
- sty hilf+1
- lda fac+1
- sta hilf+2
- bpl l6 ;fac positiv
- sec
- tya
- sbc fac
- sta fac
- tya
- sbc fac+1
- sta fac+1
- l6 lda arg+2
- lsr
- bcs l4 ;arg=1
- ldx #16
- clc
- jmp l5
- l2 asl hilf
- rol hilf+1
- l5 rol fac
- rol fac+1
- bcc l1
- clc
- lda hilf
- adc arg
- sta hilf
- lda hilf+1
- adc arg+1
- sta hilf+1
- bcc l1
- inc fac
- bne l1
- inc fac+1
- l1 dex
- bne l2
- l4 lda arg+2
- eor hilf+2
- bpl l3
- sec
- tya
- sbc fac
- sta fac
- tya
- sbc fac+1
- sta fac+1
- l3 rts
- .bend
-
- divdreh .blck ;hilf:=fac/arg
- ldy #0 ;hilf:sin v cos
- sty hilf ;fac,arg:positiv
- sty hilf+1 ;arg>=fac
- sty hilf+2
- lda fac+1
- cmp arg+1
- bne l1
- lda fac
- cmp arg
- bne l1
- inc hilf+2 ;fac=arg
- rts
- l1 ldx #16
- lda arg+1
- bpl l2
- lsr arg+1
- ror arg
- jmp l8
- l2 asl fac
- rol fac+1
- jmp l8
- l5 rol hilf
- rol hilf+1
- rol fac
- rol fac+1
- l8 sec
- lda fac
- sbc arg
- tay
- lda fac+1
- sbc arg+1
- bcc l4
- sta fac+1
- sty fac
- l4 dex
- bne l5
- rol hilf
- rol hilf+1
- rts
- .bend
-
- cos .blck ;fac:=cos(fac)
- lda fac+1
- lsr
- bcs l1
- lsr
- bcs l2
- ldx fac ;i
- l5 lda costab,x
- l3 sta fac+2
- lda costab2,x
- sta fac
- lda costab3,x
- sta fac+1
- rts
- l1 lsr
- bcs l4
- sec ;ii
- lda #0
- sbc fac
- bne l6
- l7 sta fac
- sta fac+1
- sta fac+2
- rts
- l6 tax
- lda costab,x
- ora #$80
- jmp l3
- l2 ldx fac ;iii
- lda costab,x
- ora #$80
- jmp l3
- l4 lda #0 ;iv
- sbc fac
- tax
- beq l7
- jmp l5
- .bend
- sin .blck ;fac:=sin(fac)
- sec ;fac:=fac-90 grad
- lda fac+1
- sbc #1
- sta fac+1
- jmp cos
- .bend
-
- zerr .blck
- lda fac+1 ;fac+=fac/4
- bmi l3
- l1 lsr
- tay
- lda fac
- ror
- tax
- tya
- lsr
- l2 tay
- txa
- ror
- clc
- adc fac
- sta fac
- tya
- adc fac+1
- sta fac+1
- rts
- l3 sec
- ror
- tay
- lda fac
- ror
- tax
- tya
- sec
- ror
- jmp l2
- .bend
-
- perspsub .blck
- lda perspflg
- bne fluchtp
- parallel #movevin pvek,6,fac ;fac:=xd
- jsr zerr
- #movenin fac,12,pvek ;xdp:=fac
- #movevin pvek,8,fac ;fac:=yd
- #movenin fac,14,pvek ;ydp:=fac
- rts
- fluchtp ldy #10 ;arg:=zd-aug
- sec
- lda (pvek),y
- sbc aug
- sta arg
- iny
- lda (pvek),y
- sbc aug+1
- sta arg+1
- #move as,fac ;fac:=as
- jsr divdreh
- #movew hilf,arg ;arg:=fac/arg
- #movevin pvek,6,fac ;fac:=xd
- jsr muldreh ;fac:=fac*arg
- jsr zerr
- #movenin fac,12,pvek ;xdp:=fac
- #movevin pvek,8,fac ;fac:=yd
- jsr muldreh ;yd:=fac*arg
- #movenin fac,14,pvek ;ydp:=fac
- rts
- .bend
-
- zw1 = vonx
- zw2 = vony
- zw3 = nachx
- zwx = nachy
- zwy = lvek
- zwz = $6e
- addob .segment a,b,c
- ldy #&a&
- clc
- lda (pvek),y
- adc &b&
- sta &c&
- iny
- lda (pvek),y
- adc &b&+1
- sta &c&+1
- .mend
- drehen .blck
- #subi 0,wa,fac ;sa
- jsr sin
- #movew fac,sa
- #move wb,fac ;sb
- jsr sin
- #movew fac,sb
- #subi 0,wa,fac ;ca
- jsr cos
- #movew fac,ca
- #move wb,fac ;cb
- jsr cos
- #movew fac,cb
- #movei 0,$14
- jsr pumrech
- l1 ldy #1
- lda (pvek),y
- cmp #$80
- bne l8
- jmp inpvek ;punkt unbelegt
- l8 #addob 0,x,zwx
- #addob 2,y,zwy
- #addob 4,z,zwz
- #movew ca,arg
- #move zwx,fac
- jsr muldreh
- #move fac,zw1
- #move zwz,fac
- jsr muldreh
- #move fac,zw2
- #movew sa,arg
- #move zwz,fac
- jsr muldreh
- ldy #6 ;xd
- lda fac
- adc zw1
- sta (pvek),y
- iny
- lda fac+1
- adc zw1+1
- sta (pvek),y
- #move zwx,fac
- jsr muldreh
- sec
- lda zw2
- sbc fac
- sta fac
- sta zw3
- lda zw2+1
- sbc fac+1
- sta fac+1
- sta zw3+1
- #movew cb,arg
- jsr muldreh
- #move fac,zw1
- #move zwy,fac
- jsr muldreh
- #move fac,zw2
- #movew sb,arg
- #move zwy,fac
- jsr muldreh
- clc
- ldy #10 ;zd
- lda zw1
- adc fac
- sta (pvek),y
- iny
- lda zw1+1
- adc fac+1
- sta (pvek),y
- #move zw3,fac
- jsr muldreh
- sec
- ldy #8 ;yd
- lda zw2
- sbc fac
- sta (pvek),y
- iny
- lda zw2+1
- sbc fac+1
- sta (pvek),y
- ldy #10 ;zd-s
- lda (pvek),y
- cmp s
- iny
- lda (pvek),y
- sbc s+1
- bvs l5
- bmi inpvek ;zd<s
- bpl l6
- l5 bpl inpvek ;zd<s
- l6 jsr perspsub
- inpvek clc
- lda pvek
- adc #16
- sta pvek
- bcc l2
- inc pvek+1
- l2 lda pvek+1
- cmp #$87
- bne l3
- lda #>dend+1
- sta pvek+1
- l3 cmp lanf+1
- bne l7
- lda pvek
- cmp lanf
- beq l4
- l7 jmp l1
- l4 rts
- .bend
-
- bild .blck ;erzeugt das bild
- #move lmax,$14
- jsr lumrech
- l1 #movevin lvek,0,pvek
- cmp #$ff
- bne l12
- jmp delvek ;nicht belegt
- l12 #movevin pvek,12,vonx
- #movevin pvek,14,vony
- #movevin pvek,10,vonz
- #movevin lvek,2,$14
- ldy #1
- lda (pvek),y
- cmp #$80 ;belegt?
- bne l17
- l18 jmp notbel ;nicht belegt
- l17 lda ($14),y
- cmp #$80
- beq l18
- #movevin $14,12,nachx
- #movevin $14,14,nachy
- #movevin $14,10,nachz
- lda vonz
- cmp s
- lda vonz+1
- sbc s+1
- bvs l2
- bmi l3
- bpl l4
- l2 bpl l3
- l4 jmp l5 ;vonz>=s
- l3 lda nachz ;vonz<s
- cmp s
- lda nachz+1
- sbc s+1
- bvs l6
- bmi l7
- bpl l8
- l6 bmi l8
- l7 jmp delvek ;nachz<s
- l8 #movevin pvek,6,vonx ;nachz>=s
- #movevin pvek,8,vony
- #sub s,vonz,fac
- #sub nachz,vonz,arg
- jsr divdreh ;hilf:=fac/arg
- #movew hilf,arg
- #movevin $14,6,hilf ;nachx
- #sub hilf,vonx,fac
- jsr d2
- jsr muldreh
- asl fac
- rol fac+1
- #add vonx,fac,fac
- jsr zerr
- #move fac,vonx
- #movevin $14,8,hilf ;nachy
- #sub hilf,vony,fac
- jsr d2
- jsr muldreh
- asl fac
- rol fac+1
- #add vony,fac,vony
- jmp lab1
- l5 #sub s,nachz,fac
- bvs l14
- bmi l16 ;nachz>s
- bpl l15
- l14 bmi l15
- l16 jmp lab1 ;nachz>s
- l15 #movevin $14,6,nachx
- #movevin $14,8,nachy
- #sub vonz,nachz,arg
- jsr divdreh
- #movew hilf,arg
- #movevin pvek,6,hilf ;vonx
- #sub hilf,nachx,fac
- jsr d2
- jsr muldreh
- asl fac
- rol fac+1
- #add nachx,fac,fac
- jsr zerr
- #move fac,nachx
- #movevin pvek,8,hilf ;vony
- #sub hilf,nachy,fac
- jsr d2
- jsr muldreh
- asl fac
- rol fac+1
- #add nachy,fac,nachy
- lab1 jsr vek
- delvek sec
- lda lvek
- sbc #4
- sta lvek
- bcs l11
- dec lvek+1
- l11 lda lvek+1
- cmp #>dend
- bne l9 ;lvek>=dend+1
- lda #$86
- sta lvek+1
- l9 lda lvek+1
- cmp lanf+1
- beq l13
- bcs l10 ;lvek>lanf
- l19 rts
- l13 lda lvek
- cmp lanf
- bcc l19 ;lvek<lanf
- l10 jmp l1
-
- d2 .blck
- clc
- bvs l1
- bpl l3
- bmi l2
- l1 bmi l3
- l2 sec
- l3 ror fac+1
- ror fac
- rts
- .bend
-
- .bend
-
- .file source.teil2
-
-
-