mirror of
https://github.com/Pecusx/scorch_src.git
synced 2026-05-20 22:33:43 +02:00
174 lines
2.6 KiB
NASM
174 lines
2.6 KiB
NASM
|
|
.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 |