mirror of
https://github.com/pkali/scorch_src.git
synced 2026-05-20 22:34:21 +02:00
New (faster) Circle proc - 43b saved
This commit is contained in:
+174
@@ -0,0 +1,174 @@
|
||||
|
||||
.IF *>0 ;this is a trick that prevents compiling this file alone
|
||||
|
||||
;--------------------------------------------------
|
||||
.proc circle ;fxxxing good circle drawing :)
|
||||
; xdraw,ydraw (word) - coordinates of circle center
|
||||
; radius (byte) - radius of circle
|
||||
;--------------------------------------------------
|
||||
;Turbo Basic source
|
||||
;XC=0
|
||||
;YC=R
|
||||
;PC=R (FS)
|
||||
;
|
||||
;WHILE XC<=YC
|
||||
;
|
||||
; SPLOT(XC,YC)
|
||||
; IF PC>YC THEN
|
||||
; YC=YC-1
|
||||
; PC=PC-YC
|
||||
; ENDIF
|
||||
; XC=XC+1
|
||||
; PC=PC+XC
|
||||
;
|
||||
;WEND
|
||||
|
||||
mwa xdraw xcircle
|
||||
mwa ydraw ycircle
|
||||
|
||||
; XC=0:YC=R:FS=R
|
||||
mwa #0 xc
|
||||
mva radius yc
|
||||
sta FS
|
||||
|
||||
circleloop
|
||||
;WHILE XC<=YC
|
||||
lda XC
|
||||
cmp YC
|
||||
bcc not_endcircleloop
|
||||
endcircleloop
|
||||
mwa xcircle xdraw
|
||||
mwa ycircle ydraw
|
||||
rts
|
||||
not_endcircleloop
|
||||
; jsr splot8
|
||||
;----
|
||||
; splot8
|
||||
; plot xcircle+XC,ycircle+YC
|
||||
; plot xcircle+XC,ycircle-YC
|
||||
; plot xcircle-XC,ycircle-YC
|
||||
; plot xcircle-XC,ycircle+YC
|
||||
|
||||
; plot xcircle+YC,ycircle+XC
|
||||
; plot xcircle+YC,ycircle-XC
|
||||
; plot xcircle-YC,ycircle-XC
|
||||
; plot xcircle-YC,ycircle+XC
|
||||
|
||||
;clc - allways after BCC
|
||||
lda xcircle
|
||||
adc XC
|
||||
sta xdraw
|
||||
lda xcircle+1
|
||||
adc #0
|
||||
sta xdraw+1
|
||||
;clc
|
||||
lda ycircle
|
||||
adc YC
|
||||
sta ydraw
|
||||
sta ytempDRAW
|
||||
lda ycircle+1
|
||||
adc #$00
|
||||
sta ydraw+1
|
||||
sta ytempDRAW+1
|
||||
; plot xcircle+XC,ycircle+YC
|
||||
jsr plot
|
||||
|
||||
sec
|
||||
lda ycircle
|
||||
sbc YC
|
||||
sta ydraw
|
||||
lda ycircle+1
|
||||
sbc #$00
|
||||
sta ydraw+1
|
||||
; plot xcircle+XC,ycircle-YC
|
||||
jsr plot
|
||||
|
||||
sec
|
||||
lda xcircle
|
||||
sbc XC
|
||||
sta xdraw
|
||||
lda xcircle+1
|
||||
sbc #0
|
||||
sta xdraw+1
|
||||
; plot xcircle-XC,ycircle-YC
|
||||
jsr plot
|
||||
|
||||
lda ytempDRAW
|
||||
sta ydraw
|
||||
lda ytempDRAW+1
|
||||
sta ydraw+1
|
||||
; plot xcircle-XC,ycircle+YC
|
||||
jsr plot
|
||||
;---
|
||||
clc
|
||||
lda xcircle
|
||||
adc YC
|
||||
sta xdraw
|
||||
lda xcircle+1
|
||||
adc #0
|
||||
sta xdraw+1
|
||||
;clc
|
||||
lda ycircle
|
||||
adc XC
|
||||
sta ydraw
|
||||
sta ytempDRAW
|
||||
lda ycircle+1
|
||||
adc #$00
|
||||
sta ydraw+1
|
||||
sta ytempDRAW+1
|
||||
; plot xcircle+YC,ycircle+XC
|
||||
jsr plot
|
||||
|
||||
sec
|
||||
lda ycircle
|
||||
sbc XC
|
||||
sta ydraw
|
||||
lda ycircle+1
|
||||
sbc #$00
|
||||
sta ydraw+1
|
||||
; plot xcircle+YC,ycircle-XC
|
||||
jsr plot
|
||||
|
||||
sec
|
||||
lda xcircle
|
||||
sbc YC
|
||||
sta xdraw
|
||||
lda xcircle+1
|
||||
sbc #0
|
||||
sta xdraw+1
|
||||
; plot xcircle-YC,ycircle-XC
|
||||
jsr plot
|
||||
|
||||
lda ytempDRAW
|
||||
sta ydraw
|
||||
lda ytempDRAW+1
|
||||
sta ydraw+1
|
||||
; plot xcircle-YC,ycircle+XC
|
||||
jsr plot
|
||||
;-----
|
||||
|
||||
; IF FS>YC THEN
|
||||
lda YC
|
||||
cmp FS
|
||||
bcc endif01
|
||||
; YC=YC-1
|
||||
dec YC
|
||||
; FS=FS-YC
|
||||
sec
|
||||
lda FS
|
||||
sbc YC
|
||||
sta FS
|
||||
endif01
|
||||
; ENDIF
|
||||
; XC=XC+1
|
||||
inc XC
|
||||
; FS=FS+XC
|
||||
clc
|
||||
lda FS
|
||||
adc XC
|
||||
sta FS
|
||||
jmp circleloop
|
||||
; WEND
|
||||
.endp
|
||||
|
||||
.endif
|
||||
Reference in New Issue
Block a user