hgr: web: get bot version working

This commit is contained in:
Vince Weaver 2021-06-23 09:35:40 -04:00
parent d597b5210b
commit 7b733e1509
5 changed files with 120 additions and 156 deletions

View File

@ -17,7 +17,7 @@ appleiibot.dsk: E2.BAS FLAME.BAS FLAME2.BAS HELLO \
COMBO.BAS WIRES.BAS PATTERN.BAS BALL.BAS LINES.BAS MOD9.BAS \ COMBO.BAS WIRES.BAS PATTERN.BAS BALL.BAS LINES.BAS MOD9.BAS \
XOR_ZOOM.BAS MOD9_HGR.BAS SIER_HGR.BAS MOVE.BAS SINE.BAS XDRAW128.BAS \ XOR_ZOOM.BAS MOD9_HGR.BAS SIER_HGR.BAS MOVE.BAS SINE.BAS XDRAW128.BAS \
GATOR.BAS CURSOR.BAS STARGATE.BAS TUNNEL.BAS STARFIELD.BAS \ GATOR.BAS CURSOR.BAS STARGATE.BAS TUNNEL.BAS STARFIELD.BAS \
STAROOPS.BAS HGRSTARFIELD.BAS COOL_BOT.BAS STAROOPS.BAS HGRSTARFIELD.BAS COOL_BOT.BAS WEB.BAS
# cp $(EMPTY_DISK)/empty.dsk appleiibot.dsk # cp $(EMPTY_DISK)/empty.dsk appleiibot.dsk
cp empty.dsk appleiibot.dsk cp empty.dsk appleiibot.dsk
@ -90,6 +90,7 @@ appleiibot.dsk: E2.BAS FLAME.BAS FLAME2.BAS HELLO \
$(DOS33) -y appleiibot.dsk SAVE A STAROOPS.BAS $(DOS33) -y appleiibot.dsk SAVE A STAROOPS.BAS
$(DOS33) -y appleiibot.dsk SAVE A HGRSTARFIELD.BAS $(DOS33) -y appleiibot.dsk SAVE A HGRSTARFIELD.BAS
$(DOS33) -y appleiibot.dsk SAVE A COOL_BOT.BAS $(DOS33) -y appleiibot.dsk SAVE A COOL_BOT.BAS
$(DOS33) -y appleiibot.dsk SAVE A WEB.BAS
#### ####
@ -509,5 +510,10 @@ COOL_BOT.BAS: cool_bot.bas
#### ####
WEB.BAS: web.bas
$(TOKENIZE) < web.bas > WEB.BAS
####
clean: clean:
rm -f *~ *.o *.lst convert_to convert_from convert_qkumba convert_vmw make_boxes convert_back convert_tgreene LOAD *.BAS rm -f *~ *.o *.lst convert_to convert_from convert_qkumba convert_vmw make_boxes convert_back convert_tgreene LOAD *.BAS

2
basic/appleiibot/web.bas Normal file
View File

@ -0,0 +1,2 @@
1FORI=0TO139:POKE1013+I,4*PEEK(2126+I)-192+(PEEK(2266+I/3)-35)/4^(I-INT(I/3)*3):NEXT
2&",clNDQnZ0FkQaW0=ioenQfA;#fmVn<-`nVm>`l2.5J*A:$Vm026D0IaNnRlBnQnemYa?oGliaW1KlYl:1>YYkBT,aZL5Ne.ZOkB@0ZZH6Km0X08=kam4fTmaeZWQmb`b4P8ZmR8ZoCj0SM'PX'4F[0>0H5EW-<Z@*5XLY<)5-43FL,$0#F%8FE-&+#0

View File

@ -22,7 +22,7 @@ circles.dsk: HELLO CIRCLES CIRCLES_FILL ARCS WEB PAC ROSE \
$(DOS33) -y circles.dsk BSAVE -a 0x0C00 CIRCLES $(DOS33) -y circles.dsk BSAVE -a 0x0C00 CIRCLES
$(DOS33) -y circles.dsk BSAVE -a 0x0C00 CIRCLES_FILL $(DOS33) -y circles.dsk BSAVE -a 0x0C00 CIRCLES_FILL
$(DOS33) -y circles.dsk BSAVE -a 0x0C00 ARCS $(DOS33) -y circles.dsk BSAVE -a 0x0C00 ARCS
$(DOS33) -y circles.dsk BSAVE -a 0x0C00 WEB $(DOS33) -y circles.dsk BSAVE -a 0x03f5 WEB
$(DOS33) -y circles.dsk BSAVE -a 0x0C00 PAC $(DOS33) -y circles.dsk BSAVE -a 0x0C00 PAC
$(DOS33) -y circles.dsk BSAVE -a 0x0C00 ROSE $(DOS33) -y circles.dsk BSAVE -a 0x0C00 ROSE
@ -96,7 +96,7 @@ arcs.o: arcs.s
# #
WEB: web.o WEB: web.o
ld65 -o WEB web.o -C $(LINKER_SCRIPTS)/apple2_c00.inc ld65 -o WEB web.o -C $(LINKER_SCRIPTS)/apple2_3f5.inc
web.o: web.s web.o: web.s
ca65 -o web.o web.s -l web.lst ca65 -o web.o web.s -l web.lst

View File

@ -1,4 +1,5 @@
; circles tiny -- Apple II Hires ; web -- Apple II Hires
; D0+ used by HGR routines ; D0+ used by HGR routines
@ -6,9 +7,17 @@
HGR_COLOR = $E4 HGR_COLOR = $E4
HGR_PAGE = $E6 HGR_PAGE = $E6
D = $F9 BLAH = $F5
XX = $FA COUNT = $F6
YY = $FB
XX = $F7
MINUSXX = $F8
YY = $F9
MINUSYY = $FA
D = $FB
R = $FC R = $FC
CX = $FD CX = $FD
CY = $FE CY = $FE
@ -16,6 +25,9 @@ FRAME = $FF
; soft-switches ; soft-switches
KEYPRESS = $C000
KEYRESET = $C010
; ROM routines ; ROM routines
HGR2 = $F3D8 ; set hires page2 and clear $4000-$5fff HGR2 = $F3D8 ; set hires page2 and clear $4000-$5fff
@ -30,69 +42,44 @@ SETGR = $FB40 ; set graphics and clear LO-RES screen
BELL2 = $FBE4 BELL2 = $FBE4
WAIT = $FCA8 ; delay 1/2(26+27A+5A^2) us WAIT = $FCA8 ; delay 1/2(26+27A+5A^2) us
circles: web:
jsr HGR2 jsr HGR2
lda #0 ldx #90
sta R
draw_next: draw_next:
.if 0
inc FRAME
ldy FRAME
; Random Color stx R
; HCOLOR=1+RND(1)*7
lda $F000,Y
and #$7 ; mask to 0...7
tax
lda COLORTBL,X
sta HGR_COLOR
; CX ; center
lda $F100,Y
and #$7f
clc
adc #$40
sta CX
; CY ; lda #128
lda $F200,Y ; sta CX
and #$7f ; lda #96
clc ; sta CY
adc #$20
sta CY
; R
lda $F300,Y
and #$3f
sta R
.endif
; A=40+RND(1)*200:B=40+RND(1)*100:Y=RND(1)*40
lda #128
sta CX
lda #96
sta CY
;===============================
; draw circle
;===============================
; draw circle at (CX,CY) of radius R
; signed 8-bit math so problems if R > 64?
; XX=0 YY=R ; XX=0 YY=R
; D=3-2*R ; D=3-2*R
; GOTO6 ; GOTO6
lda #0 lda #0
sta XX sta XX
lda R ; lda R
sta YY stx YY
asl
sta D
lda #3 lda #3
sec sec
sbc D sbc R
sbc R
sta D sta D
jmp do_plots jmp do_plots
@ -114,7 +101,6 @@ circle_loop:
asl asl
asl asl
clc clc
adc D
adc #10 adc #10
jmp store_D jmp store_D
@ -124,134 +110,95 @@ else:
asl asl
asl asl
clc clc
adc D
adc #6 adc #6
store_D: store_D:
adc D
sta D sta D
do_plots: do_plots:
; setup constants
lda XX
eor #$FF
sta MINUSXX
inc MINUSXX
lda YY
eor #$FF
sta MINUSYY
inc MINUSYY
; HPLOT CX+X,CY+Y ; 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 ; 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 ; 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 ; 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 ; 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 ; 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 ; 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 ; HPLOT CX-Y,CY-X
lda CX ; calc X co-ord
sec
sbc YY lda #7
sta COUNT
pos_loop:
lda COUNT
and #$4
lsr
tay
lda COUNT
lsr
bcc xnoc
iny
xnoc:
; lda CX
lda #128
clc
adc XX,Y
tax tax
; calc y co-ord
lda COUNT
lsr
eor #$2
tay
; lda CY
lda #96
clc
adc XX,Y
ldy #0 ldy #0
lda CY
sec
sbc XX
jsr HPLOT0 ; plot at (Y,X), (A) jsr HPLOT0 ; plot at (Y,X), (A)
dec COUNT
bpl pos_loop
; IFY>=XTHEN4 ; IFY>=XTHEN4
lda YY lda YY
cmp XX cmp XX
; bcs circle_loop bcs circle_loop
bcc done
jmp circle_loop
done: done:
lda R ldx R
clc ; sec
adc #3 ; sbc #3
sta R
stop:
cmp #90
beq stop
; GOTO1 dex
jmp draw_next dex
dex
bpl draw_next
stop:
jsr WAIT
txa
jsr WAIT
; for once we get this for free, even though we don't need it
jmp web

View File

@ -156,3 +156,12 @@ VGI End (15)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Size comparison:
VGI data Captured+Compressed compressed autoconvert
======== =================== ======================
clock 385B 1228B
rocket 623B
door 189B
book 212B
firep 486B