sierpinski: ready for the bot

This commit is contained in:
Vince Weaver 2021-01-31 16:07:12 -05:00
parent 79e68968be
commit 2728bfc23a
6 changed files with 91 additions and 51 deletions

View File

@ -12,7 +12,7 @@ appleiibot.dsk: E2.BAS FLAME.BAS FLAME2.BAS \
A2.BAS FOURAM.BAS FLOPPY.BAS QR.BAS A2_4EVER.BAS RLE.BAS RLE2.BAS \
RLEASM.BAS HORIZON.BAS FLYER.BAS STAR.BAS HYPER.BAS FASTAR.BAS \
FASTAR2.BAS BIN.BAS FALLING.BAS SNOW.BAS XMAS.BAS AN3.BAS PLASMA.BAS \
C64.BAS SIERPINSKI.BAS FAKES.BAS
C64.BAS SIERPINSKI.BAS FAKES.BAS SIER.BAS
cp empty.dsk appleiibot.dsk
$(DOS33) -y appleiibot.dsk BSAVE -a 0x0300 LOAD
# $(DOS33) -y appleiibot.dsk BSAVE -a 0x0C00 FASTAR2
@ -59,6 +59,7 @@ appleiibot.dsk: E2.BAS FLAME.BAS FLAME2.BAS \
$(DOS33) -y appleiibot.dsk SAVE A C64.BAS
$(DOS33) -y appleiibot.dsk SAVE A SIERPINSKI.BAS
$(DOS33) -y appleiibot.dsk SAVE A FAKES.BAS
$(DOS33) -y appleiibot.dsk SAVE A SIER.BAS
###
@ -343,6 +344,11 @@ HYPER.BAS: hyper.bas
FAKES.BAS: fakes.bas
$(TOKENIZE) < fakes.bas > FAKES.BAS
####
SIER.BAS: sier.bas
$(TOKENIZE) < sier.bas > SIER.BAS
####

View File

@ -105,6 +105,9 @@ int main(int argc, char **argv) {
"192+(PEEK(%d+I/3)-%d)/4^(I-INT(I/3)*3):NEXT\n",
filesize-1,2128,2128+filesize,OFFSET2);
printf("2CALL768\"%s%s\n",enc2,enc);
#endif
#if 1
// if using & to the end then jumping back
printf("1FORI=0TO%d:POKE%d+I,4*PEEK(%d+I)-"
"192+(PEEK(%d+I/3)-%d)/4^(I-INT(I/3)*3):NEXT\n",
@ -112,7 +115,9 @@ int main(int argc, char **argv) {
0x3f5-filesize+3,
2125,2125+filesize,OFFSET2);
printf("2&\"%s%s\n",enc2,enc);
#else
#endif
#if 0
// if using & to jump to beginning (over-writing text page)
printf("1FORI=0TO%d:POKE%d+I,4*PEEK(%d+I)-"
"192+(PEEK(%d+I/3)-%d)/4^(I-INT(I/3)*3):NEXT\n",

View File

@ -0,0 +1,2 @@
1FORI=0TO139:POKE876+I,4*PEEK(2125+I)-192+(PEEK(2265+I/3)-35)/4^(I-INT(I/3)*3):NEXT
2&",=n9D`V/QfOoP.QaNnUnInQoRmIbNnPBT0XlTU3O;8=mY9X0PnQmJ0N9VBmQjXnDnQmYnCnQlR>em9n:le/Z,:ZbQ<63nb`:bejh<dUXoE/QfWoF/Qeie.X0NU0k0j_E`>0SU0CK0CH0S+4HE[4(@Y-&U+6&''0@:8(<+4*?3'+#+#:8H4M.X'#40//

View File

@ -9,7 +9,7 @@ all: sier.dsk
sier.dsk: HELLO SIER SIER_TINY
cp empty.dsk sier.dsk
$(DOS33) -y sier.dsk SAVE A HELLO
$(DOS33) -y sier.dsk BSAVE -a 0x300 SIER
$(DOS33) -y sier.dsk BSAVE -a 0x36C SIER
$(DOS33) -y sier.dsk BSAVE -a 0x300 SIER_TINY
###
@ -20,7 +20,7 @@ HELLO: hello.bas
###
SIER: sier.o
ld65 -o SIER sier.o -C $(LINKERSCRIPTS)/apple2_300.inc
ld65 -o SIER sier.o -C ./apple2_36c.inc
sier.o: sier.s
ca65 -o sier.o sier.s -l sier.lst

View File

@ -0,0 +1,12 @@
MEMORY {
ZP: start = $00, size = $1A, type = rw;
RAM: start = $36C, size = $8E00, file = %O;
}
SEGMENTS {
CODE: load = RAM, type = ro, align = $1;
RODATA: load = RAM, type = ro;
DATA: load = RAM, type = rw;
BSS: load = RAM, type = bss, define = yes;
ZEROPAGE: load = ZP, type = zp;
}

View File

@ -1,5 +1,8 @@
; fake sierpinski
; 143 bytes -- sorta working
; x=0..39
; T =0 XX_T = 0 .. 0
; T =1 XX_T = 0 .. 39 ($0027)
@ -17,16 +20,14 @@
GBASH = $27
MASK = $2E
COLOR = $30
XX = $F5
XX_TH = $F6
XX_TL = $F7
YY = $F8
YY_TH = $F9
YY_TL = $FA
T_L = $FB
T_H = $FC
FACTOR1 = $FD
FACTOR2 = $FE
;XX = $F7
XX_TH = $F8
XX_TL = $F9
;YY = $FA
YY_TH = $FB
YY_TL = $FC
T_L = $FD
T_H = $FE
SAVED = $FF
@ -44,23 +45,21 @@ sier:
sier_outer:
lda #0
sta YY
sta YY_TL
sta YY_TH
ldx #0 ; YY
stx YY_TL
stx YY_TH
sier_yloop:
; reset XX to 0
lda #0
sta XX
sta XX_TL
sta XX_TH
; ldy #0 ; XX
; sty XX_TL
; sty XX_TH
; calc YY_T
clc
; calc YY_T (8.8 fixed point add)
; clc
lda YY_TL
adc T_L
sta YY_TL
@ -68,20 +67,30 @@ sier_yloop:
adc T_H
sta YY_TH
lda YY
txa ; YY
lsr
bcc even_mask
ldx #$f0
bne set_mask
even_mask:
ldx #$0f
set_mask:
stx MASK
bcc even_mask
ldy #$f0
.byte $C2 ; bit hack
even_mask:
ldy #$0f
sty MASK
; txa ; YY
; lsr
jsr GBASCALC ; take Y-coord/2 in A, put address in GBASL/H ( a trashed, C clear)
lda GBASH
; reset XX to 0
ldy #0 ; XX
sty XX_TL
sty XX_TH
draw_page_smc:
adc #0
sta GBASH
@ -93,14 +102,14 @@ sier_xloop:
; SAVED = XX+(Y*T)
clc
lda XX ; XX
; clc
tya ; XX
adc YY_TH
sta SAVED
; calc XX*T
clc
; clc
lda XX_TL
adc T_L
sta XX_TL
@ -110,7 +119,7 @@ sier_xloop:
; calc (YY-X_T)
lda YY
txa ; lda YY
sec
sbc XX_TH
@ -118,42 +127,45 @@ sier_xloop:
and SAVED
; and #$ff
beq red
and #$f0
beq red
black:
lda #00 ; black
.byte $2C ; bit trick
red:
lda #$11 ; red
lda #$CC ; red
sta COLOR
ldy XX
; ldy XX
jsr PLOT1 ; PLOT AT (GBASL),Y
inc XX
lda XX
cmp #40
iny ; XX
cpy #40
bne sier_xloop
inc YY
lda YY
cmp #48
inx
cpx #48
bne sier_yloop
; inc T
clc
; clc
lda T_L
blah_smc:
adc #1
sta T_L
lda T_H
adc #0
sta T_H
; speed up the zoom
inc blah_smc+1
flip_pages:
; X already 0
ldx #0
lda draw_page_smc+1 ; DRAW_PAGE
beq done_page
@ -164,5 +176,8 @@ done_page:
eor #$4 ; flip draw page between $400/$800
sta draw_page_smc+1 ; DRAW_PAGE
jmp sier_outer
jmp sier_outer ; just slightly too far???
; this is at 389
; we want to be at 3F5, so load program at 36C?
jmp sier ; entry point from &