mirror of
https://github.com/deater/dos33fsprogs.git
synced 2025-02-05 21:34:30 +00:00
hgr: circles: almost there
This commit is contained in:
parent
96536158c4
commit
a7de63b39f
@ -7,7 +7,7 @@ EMPTY_DISK = ../../../empty_disk
|
||||
|
||||
all: circles.dsk
|
||||
|
||||
circles.dsk: HELLO CIRCLES ARCS \
|
||||
circles.dsk: HELLO CIRCLES ARCS WEB \
|
||||
BRES.BAS BRESBOT.BAS BRESCOOL.BAS \
|
||||
MID.BAS MIDBOT.BAS MIDCOOL.BAS
|
||||
cp $(EMPTY_DISK)/empty.dsk circles.dsk
|
||||
@ -20,6 +20,7 @@ circles.dsk: HELLO CIRCLES ARCS \
|
||||
$(DOS33) -y circles.dsk SAVE A MIDCOOL.BAS
|
||||
$(DOS33) -y circles.dsk BSAVE -a 0x0C00 CIRCLES
|
||||
$(DOS33) -y circles.dsk BSAVE -a 0x0C00 ARCS
|
||||
$(DOS33) -y circles.dsk BSAVE -a 0x0C00 WEB
|
||||
|
||||
###
|
||||
|
||||
@ -66,7 +67,7 @@ CIRCLES: circles.o
|
||||
circles.o: circles.s
|
||||
ca65 -o circles.o circles.s -l circles.lst
|
||||
|
||||
###
|
||||
#
|
||||
|
||||
ARCS: arcs.o
|
||||
ld65 -o ARCS arcs.o -C $(LINKER_SCRIPTS)/apple2_c00.inc
|
||||
@ -74,10 +75,19 @@ ARCS: arcs.o
|
||||
arcs.o: arcs.s
|
||||
ca65 -o arcs.o arcs.s -l arcs.lst
|
||||
|
||||
#
|
||||
|
||||
WEB: web.o
|
||||
ld65 -o WEB web.o -C $(LINKER_SCRIPTS)/apple2_c00.inc
|
||||
|
||||
web.o: web.s
|
||||
ca65 -o web.o web.s -l web.lst
|
||||
|
||||
|
||||
|
||||
###
|
||||
|
||||
clean:
|
||||
rm -f *~ *.o *.lst CIRCLES ARCS \
|
||||
rm -f *~ *.o *.lst CIRCLES ARCS WEB \
|
||||
BRES.BAS BRESBOT.BAS BRESCOOL.BAS \
|
||||
MID.BAS MIDBOT.BAS MIDCOOL.BAS
|
||||
|
@ -49,36 +49,42 @@ draw_next:
|
||||
; CX
|
||||
lda $F100,Y
|
||||
and #$7f
|
||||
sta CX
|
||||
clc
|
||||
adc #$40
|
||||
sta CX
|
||||
|
||||
; CY
|
||||
lda $F100,Y
|
||||
lda $F200,Y
|
||||
and #$7f
|
||||
sta CY
|
||||
clc
|
||||
adc #$40
|
||||
adc #$20
|
||||
sta CY
|
||||
|
||||
; R
|
||||
lda $F100,Y
|
||||
lda $F300,Y
|
||||
and #$3f
|
||||
sta R
|
||||
|
||||
; A=40+RND(1)*200:B=40+RND(1)*100:Y=RND(1)*40
|
||||
|
||||
; 3X=0:D=3-2*Y:GOTO6
|
||||
; XX=0 YY=R
|
||||
; D=3-2*R
|
||||
; GOTO6
|
||||
lda #0
|
||||
sta XX
|
||||
|
||||
lda R
|
||||
asl
|
||||
sta YY
|
||||
|
||||
asl
|
||||
sta D
|
||||
lda #3
|
||||
sec
|
||||
sbc YY
|
||||
sbc D
|
||||
sta D
|
||||
|
||||
jmp do_plots
|
||||
|
||||
circle_loop:
|
||||
; X=X+1
|
||||
|
||||
@ -111,6 +117,7 @@ else:
|
||||
store_D:
|
||||
sta D
|
||||
|
||||
do_plots:
|
||||
; HPLOT CX+X,CY+Y
|
||||
|
||||
lda CX
|
||||
@ -125,17 +132,106 @@ store_D:
|
||||
jsr HPLOT0 ; plot at (Y,X), (A)
|
||||
|
||||
; HPLOT CX-X,CY+Y
|
||||
|
||||
lda CX
|
||||
sec
|
||||
sbc XX
|
||||
tax
|
||||
ldy #0
|
||||
lda CY
|
||||
clc
|
||||
adc YY
|
||||
|
||||
jsr HPLOT0 ; plot at (Y,X), (A)
|
||||
|
||||
; HPLOT CX+X,CY-Y
|
||||
|
||||
lda CX
|
||||
clc
|
||||
adc XX
|
||||
tax
|
||||
ldy #0
|
||||
lda CY
|
||||
sec
|
||||
sbc YY
|
||||
|
||||
jsr HPLOT0 ; plot at (Y,X), (A)
|
||||
|
||||
|
||||
; HPLOT CX-X,CY-Y
|
||||
|
||||
lda CX
|
||||
sec
|
||||
sbc XX
|
||||
tax
|
||||
ldy #0
|
||||
lda CY
|
||||
sec
|
||||
sbc YY
|
||||
|
||||
jsr HPLOT0 ; plot at (Y,X), (A)
|
||||
|
||||
; HPLOT CX+Y,CY+X
|
||||
|
||||
lda CX
|
||||
clc
|
||||
adc YY
|
||||
tax
|
||||
ldy #0
|
||||
lda CY
|
||||
clc
|
||||
adc XX
|
||||
|
||||
jsr HPLOT0 ; plot at (Y,X), (A)
|
||||
|
||||
|
||||
; HPLOT CX-Y,CY+X
|
||||
|
||||
lda CX
|
||||
sec
|
||||
sbc YY
|
||||
tax
|
||||
ldy #0
|
||||
lda CY
|
||||
clc
|
||||
adc XX
|
||||
|
||||
jsr HPLOT0 ; plot at (Y,X), (A)
|
||||
|
||||
; HPLOT CX+Y,CY-X
|
||||
|
||||
lda CX
|
||||
clc
|
||||
adc YY
|
||||
tax
|
||||
ldy #0
|
||||
lda CY
|
||||
sec
|
||||
sbc XX
|
||||
|
||||
jsr HPLOT0 ; plot at (Y,X), (A)
|
||||
|
||||
; HPLOT CX-Y,CY-X
|
||||
|
||||
lda CX
|
||||
sec
|
||||
sbc YY
|
||||
tax
|
||||
ldy #0
|
||||
lda CY
|
||||
sec
|
||||
sbc XX
|
||||
|
||||
jsr HPLOT0 ; plot at (Y,X), (A)
|
||||
|
||||
|
||||
; IFY>=XTHEN4
|
||||
lda YY
|
||||
cmp XX
|
||||
bcs circle_loop
|
||||
; bcs circle_loop
|
||||
bcc done
|
||||
|
||||
jmp circle_loop
|
||||
done:
|
||||
; GOTO1
|
||||
bcc draw_next
|
||||
jmp draw_next
|
||||
|
237
graphics/hgr/circles/web.s
Normal file
237
graphics/hgr/circles/web.s
Normal file
@ -0,0 +1,237 @@
|
||||
; circles tiny -- Apple II Hires
|
||||
|
||||
|
||||
; D0+ used by HGR routines
|
||||
|
||||
HGR_COLOR = $E4
|
||||
HGR_PAGE = $E6
|
||||
|
||||
D = $F9
|
||||
XX = $FA
|
||||
YY = $FB
|
||||
R = $FC
|
||||
CX = $FD
|
||||
CY = $FE
|
||||
FRAME = $FF
|
||||
|
||||
; soft-switches
|
||||
|
||||
; ROM routines
|
||||
|
||||
HGR2 = $F3D8 ; set hires page2 and clear $4000-$5fff
|
||||
HGR = $F3E2 ; set hires page1 and clear $2000-$3fff
|
||||
HPLOT0 = $F457 ; plot at (Y,X), (A)
|
||||
HCOLOR1 = $F6F0 ; set HGR_COLOR to value in X
|
||||
COLORTBL = $F6F6
|
||||
PLOT = $F800 ; PLOT AT Y,A (A colors output, Y preserved)
|
||||
NEXTCOL = $F85F ; COLOR=COLOR+3
|
||||
SETCOL = $F864 ; COLOR=A
|
||||
SETGR = $FB40 ; set graphics and clear LO-RES screen
|
||||
BELL2 = $FBE4
|
||||
WAIT = $FCA8 ; delay 1/2(26+27A+5A^2) us
|
||||
|
||||
circles:
|
||||
|
||||
jsr HGR2
|
||||
|
||||
draw_next:
|
||||
inc FRAME
|
||||
ldy FRAME
|
||||
|
||||
; Random Color
|
||||
; HCOLOR=1+RND(1)*7
|
||||
lda $F000,Y
|
||||
and #$7 ; mask to 0...7
|
||||
tax
|
||||
lda COLORTBL,X
|
||||
sta HGR_COLOR
|
||||
|
||||
; CX
|
||||
lda $F100,Y
|
||||
and #$7f
|
||||
clc
|
||||
adc #$40
|
||||
sta CX
|
||||
|
||||
; CY
|
||||
lda $F200,Y
|
||||
and #$7f
|
||||
clc
|
||||
adc #$20
|
||||
sta CY
|
||||
|
||||
; R
|
||||
lda $F300,Y
|
||||
and #$3f
|
||||
sta R
|
||||
|
||||
; A=40+RND(1)*200:B=40+RND(1)*100:Y=RND(1)*40
|
||||
|
||||
; XX=0 YY=R
|
||||
; D=3-2*R
|
||||
; GOTO6
|
||||
lda #0
|
||||
sta XX
|
||||
|
||||
lda R
|
||||
sta YY
|
||||
|
||||
asl
|
||||
sta D
|
||||
lda #3
|
||||
sec
|
||||
sbc D
|
||||
sta D
|
||||
|
||||
jmp do_plots
|
||||
|
||||
circle_loop:
|
||||
; X=X+1
|
||||
|
||||
inc XX
|
||||
|
||||
; IF D>0 THEN Y=Y-1:D=D+4*(X-Y)+10
|
||||
lda D
|
||||
bmi else
|
||||
|
||||
dec YY
|
||||
|
||||
lda XX
|
||||
sec
|
||||
sbc YY
|
||||
asl
|
||||
asl
|
||||
clc
|
||||
adc D
|
||||
adc #10
|
||||
jmp store_D
|
||||
|
||||
else:
|
||||
; ELSE D=D+4*X+6
|
||||
lda XX
|
||||
asl
|
||||
asl
|
||||
clc
|
||||
adc D
|
||||
adc #6
|
||||
store_D:
|
||||
sta D
|
||||
|
||||
do_plots:
|
||||
; HPLOT CX+X,CY+Y
|
||||
|
||||
lda CX
|
||||
clc
|
||||
adc XX
|
||||
tax
|
||||
ldy #0
|
||||
lda CY
|
||||
clc
|
||||
adc YY
|
||||
|
||||
jsr HPLOT0 ; plot at (Y,X), (A)
|
||||
|
||||
; HPLOT CX-X,CY+Y
|
||||
|
||||
lda CX
|
||||
sec
|
||||
sbc XX
|
||||
tax
|
||||
ldy #0
|
||||
lda CY
|
||||
clc
|
||||
adc YY
|
||||
|
||||
jsr HPLOT0 ; plot at (Y,X), (A)
|
||||
|
||||
; HPLOT CX+X,CY-Y
|
||||
|
||||
lda CX
|
||||
clc
|
||||
adc XX
|
||||
tax
|
||||
ldy #0
|
||||
lda CY
|
||||
sec
|
||||
sbc YY
|
||||
|
||||
jsr HPLOT0 ; plot at (Y,X), (A)
|
||||
|
||||
|
||||
; HPLOT CX-X,CY-Y
|
||||
|
||||
lda CX
|
||||
sec
|
||||
sbc XX
|
||||
tax
|
||||
ldy #0
|
||||
lda CY
|
||||
sec
|
||||
sbc YY
|
||||
|
||||
jsr HPLOT0 ; plot at (Y,X), (A)
|
||||
|
||||
; HPLOT CX+Y,CY+X
|
||||
|
||||
lda CX
|
||||
clc
|
||||
adc YY
|
||||
tax
|
||||
ldy #0
|
||||
lda CY
|
||||
clc
|
||||
adc XX
|
||||
|
||||
jsr HPLOT0 ; plot at (Y,X), (A)
|
||||
|
||||
|
||||
; HPLOT CX-Y,CY+X
|
||||
|
||||
lda CX
|
||||
sec
|
||||
sbc YY
|
||||
tax
|
||||
ldy #0
|
||||
lda CY
|
||||
clc
|
||||
adc XX
|
||||
|
||||
jsr HPLOT0 ; plot at (Y,X), (A)
|
||||
|
||||
; HPLOT CX+Y,CY-X
|
||||
|
||||
lda CX
|
||||
clc
|
||||
adc YY
|
||||
tax
|
||||
ldy #0
|
||||
lda CY
|
||||
sec
|
||||
sbc XX
|
||||
|
||||
jsr HPLOT0 ; plot at (Y,X), (A)
|
||||
|
||||
; HPLOT CX-Y,CY-X
|
||||
|
||||
lda CX
|
||||
sec
|
||||
sbc YY
|
||||
tax
|
||||
ldy #0
|
||||
lda CY
|
||||
sec
|
||||
sbc XX
|
||||
|
||||
jsr HPLOT0 ; plot at (Y,X), (A)
|
||||
|
||||
|
||||
; IFY>=XTHEN4
|
||||
lda YY
|
||||
cmp XX
|
||||
; bcs circle_loop
|
||||
bcc done
|
||||
|
||||
jmp circle_loop
|
||||
done:
|
||||
; GOTO1
|
||||
jmp draw_next
|
Loading…
x
Reference in New Issue
Block a user