mirror of
https://github.com/deater/dos33fsprogs.git
synced 2024-09-28 17:55:04 +00:00
sierpinski: ready for the bot
This commit is contained in:
parent
79e68968be
commit
2728bfc23a
@ -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 \
|
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 \
|
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 \
|
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
|
cp empty.dsk appleiibot.dsk
|
||||||
$(DOS33) -y appleiibot.dsk BSAVE -a 0x0300 LOAD
|
$(DOS33) -y appleiibot.dsk BSAVE -a 0x0300 LOAD
|
||||||
# $(DOS33) -y appleiibot.dsk BSAVE -a 0x0C00 FASTAR2
|
# $(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 C64.BAS
|
||||||
$(DOS33) -y appleiibot.dsk SAVE A SIERPINSKI.BAS
|
$(DOS33) -y appleiibot.dsk SAVE A SIERPINSKI.BAS
|
||||||
$(DOS33) -y appleiibot.dsk SAVE A FAKES.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
|
FAKES.BAS: fakes.bas
|
||||||
$(TOKENIZE) < fakes.bas > FAKES.BAS
|
$(TOKENIZE) < fakes.bas > FAKES.BAS
|
||||||
|
|
||||||
|
####
|
||||||
|
|
||||||
|
SIER.BAS: sier.bas
|
||||||
|
$(TOKENIZE) < sier.bas > SIER.BAS
|
||||||
|
|
||||||
|
|
||||||
####
|
####
|
||||||
|
|
||||||
|
@ -105,6 +105,9 @@ int main(int argc, char **argv) {
|
|||||||
"192+(PEEK(%d+I/3)-%d)/4^(I-INT(I/3)*3):NEXT\n",
|
"192+(PEEK(%d+I/3)-%d)/4^(I-INT(I/3)*3):NEXT\n",
|
||||||
filesize-1,2128,2128+filesize,OFFSET2);
|
filesize-1,2128,2128+filesize,OFFSET2);
|
||||||
printf("2CALL768\"%s%s\n",enc2,enc);
|
printf("2CALL768\"%s%s\n",enc2,enc);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if 1
|
||||||
// if using & to the end then jumping back
|
// if using & to the end then jumping back
|
||||||
printf("1FORI=0TO%d:POKE%d+I,4*PEEK(%d+I)-"
|
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",
|
"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,
|
0x3f5-filesize+3,
|
||||||
2125,2125+filesize,OFFSET2);
|
2125,2125+filesize,OFFSET2);
|
||||||
printf("2&\"%s%s\n",enc2,enc);
|
printf("2&\"%s%s\n",enc2,enc);
|
||||||
#else
|
#endif
|
||||||
|
|
||||||
|
#if 0
|
||||||
// if using & to jump to beginning (over-writing text page)
|
// if using & to jump to beginning (over-writing text page)
|
||||||
printf("1FORI=0TO%d:POKE%d+I,4*PEEK(%d+I)-"
|
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",
|
"192+(PEEK(%d+I/3)-%d)/4^(I-INT(I/3)*3):NEXT\n",
|
||||||
|
2
basic/appleiibot/sier.bas
Normal file
2
basic/appleiibot/sier.bas
Normal 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//
|
@ -9,7 +9,7 @@ all: sier.dsk
|
|||||||
sier.dsk: HELLO SIER SIER_TINY
|
sier.dsk: HELLO SIER SIER_TINY
|
||||||
cp empty.dsk sier.dsk
|
cp empty.dsk sier.dsk
|
||||||
$(DOS33) -y sier.dsk SAVE A HELLO
|
$(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
|
$(DOS33) -y sier.dsk BSAVE -a 0x300 SIER_TINY
|
||||||
|
|
||||||
###
|
###
|
||||||
@ -20,7 +20,7 @@ HELLO: hello.bas
|
|||||||
###
|
###
|
||||||
|
|
||||||
SIER: sier.o
|
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
|
sier.o: sier.s
|
||||||
ca65 -o sier.o sier.s -l sier.lst
|
ca65 -o sier.o sier.s -l sier.lst
|
||||||
|
12
graphics/gr/sier/apple2_36c.inc
Normal file
12
graphics/gr/sier/apple2_36c.inc
Normal 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;
|
||||||
|
}
|
@ -1,5 +1,8 @@
|
|||||||
; fake sierpinski
|
; fake sierpinski
|
||||||
|
|
||||||
|
; 143 bytes -- sorta working
|
||||||
|
|
||||||
|
|
||||||
; x=0..39
|
; x=0..39
|
||||||
; T =0 XX_T = 0 .. 0
|
; T =0 XX_T = 0 .. 0
|
||||||
; T =1 XX_T = 0 .. 39 ($0027)
|
; T =1 XX_T = 0 .. 39 ($0027)
|
||||||
@ -17,16 +20,14 @@
|
|||||||
GBASH = $27
|
GBASH = $27
|
||||||
MASK = $2E
|
MASK = $2E
|
||||||
COLOR = $30
|
COLOR = $30
|
||||||
XX = $F5
|
;XX = $F7
|
||||||
XX_TH = $F6
|
XX_TH = $F8
|
||||||
XX_TL = $F7
|
XX_TL = $F9
|
||||||
YY = $F8
|
;YY = $FA
|
||||||
YY_TH = $F9
|
YY_TH = $FB
|
||||||
YY_TL = $FA
|
YY_TL = $FC
|
||||||
T_L = $FB
|
T_L = $FD
|
||||||
T_H = $FC
|
T_H = $FE
|
||||||
FACTOR1 = $FD
|
|
||||||
FACTOR2 = $FE
|
|
||||||
SAVED = $FF
|
SAVED = $FF
|
||||||
|
|
||||||
|
|
||||||
@ -44,23 +45,21 @@ sier:
|
|||||||
|
|
||||||
sier_outer:
|
sier_outer:
|
||||||
|
|
||||||
lda #0
|
ldx #0 ; YY
|
||||||
sta YY
|
stx YY_TL
|
||||||
sta YY_TL
|
stx YY_TH
|
||||||
sta YY_TH
|
|
||||||
|
|
||||||
sier_yloop:
|
sier_yloop:
|
||||||
|
|
||||||
; reset XX to 0
|
; reset XX to 0
|
||||||
|
|
||||||
lda #0
|
; ldy #0 ; XX
|
||||||
sta XX
|
; sty XX_TL
|
||||||
sta XX_TL
|
; sty XX_TH
|
||||||
sta XX_TH
|
|
||||||
|
|
||||||
|
|
||||||
; calc YY_T
|
; calc YY_T (8.8 fixed point add)
|
||||||
clc
|
; clc
|
||||||
lda YY_TL
|
lda YY_TL
|
||||||
adc T_L
|
adc T_L
|
||||||
sta YY_TL
|
sta YY_TL
|
||||||
@ -68,20 +67,30 @@ sier_yloop:
|
|||||||
adc T_H
|
adc T_H
|
||||||
sta YY_TH
|
sta YY_TH
|
||||||
|
|
||||||
lda YY
|
txa ; YY
|
||||||
|
|
||||||
lsr
|
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)
|
jsr GBASCALC ; take Y-coord/2 in A, put address in GBASL/H ( a trashed, C clear)
|
||||||
|
|
||||||
lda GBASH
|
lda GBASH
|
||||||
|
|
||||||
|
|
||||||
|
; reset XX to 0
|
||||||
|
|
||||||
|
ldy #0 ; XX
|
||||||
|
sty XX_TL
|
||||||
|
sty XX_TH
|
||||||
|
|
||||||
|
|
||||||
draw_page_smc:
|
draw_page_smc:
|
||||||
adc #0
|
adc #0
|
||||||
sta GBASH
|
sta GBASH
|
||||||
@ -93,14 +102,14 @@ sier_xloop:
|
|||||||
|
|
||||||
|
|
||||||
; SAVED = XX+(Y*T)
|
; SAVED = XX+(Y*T)
|
||||||
clc
|
; clc
|
||||||
lda XX ; XX
|
tya ; XX
|
||||||
adc YY_TH
|
adc YY_TH
|
||||||
sta SAVED
|
sta SAVED
|
||||||
|
|
||||||
|
|
||||||
; calc XX*T
|
; calc XX*T
|
||||||
clc
|
; clc
|
||||||
lda XX_TL
|
lda XX_TL
|
||||||
adc T_L
|
adc T_L
|
||||||
sta XX_TL
|
sta XX_TL
|
||||||
@ -110,7 +119,7 @@ sier_xloop:
|
|||||||
|
|
||||||
|
|
||||||
; calc (YY-X_T)
|
; calc (YY-X_T)
|
||||||
lda YY
|
txa ; lda YY
|
||||||
sec
|
sec
|
||||||
sbc XX_TH
|
sbc XX_TH
|
||||||
|
|
||||||
@ -118,42 +127,45 @@ sier_xloop:
|
|||||||
|
|
||||||
and SAVED
|
and SAVED
|
||||||
|
|
||||||
; and #$ff
|
and #$f0
|
||||||
beq red
|
|
||||||
|
|
||||||
|
beq red
|
||||||
black:
|
black:
|
||||||
lda #00 ; black
|
lda #00 ; black
|
||||||
.byte $2C ; bit trick
|
.byte $2C ; bit trick
|
||||||
red:
|
red:
|
||||||
lda #$11 ; red
|
lda #$CC ; red
|
||||||
|
|
||||||
sta COLOR
|
sta COLOR
|
||||||
|
|
||||||
ldy XX
|
|
||||||
|
|
||||||
|
; ldy XX
|
||||||
|
|
||||||
jsr PLOT1 ; PLOT AT (GBASL),Y
|
jsr PLOT1 ; PLOT AT (GBASL),Y
|
||||||
|
|
||||||
inc XX
|
iny ; XX
|
||||||
lda XX
|
cpy #40
|
||||||
cmp #40
|
|
||||||
bne sier_xloop
|
bne sier_xloop
|
||||||
|
|
||||||
inc YY
|
inx
|
||||||
lda YY
|
cpx #48
|
||||||
cmp #48
|
|
||||||
bne sier_yloop
|
bne sier_yloop
|
||||||
|
|
||||||
; inc T
|
; inc T
|
||||||
clc
|
; clc
|
||||||
lda T_L
|
lda T_L
|
||||||
|
blah_smc:
|
||||||
adc #1
|
adc #1
|
||||||
sta T_L
|
sta T_L
|
||||||
lda T_H
|
lda T_H
|
||||||
adc #0
|
adc #0
|
||||||
sta T_H
|
sta T_H
|
||||||
|
|
||||||
|
; speed up the zoom
|
||||||
|
inc blah_smc+1
|
||||||
|
|
||||||
flip_pages:
|
flip_pages:
|
||||||
; X already 0
|
ldx #0
|
||||||
|
|
||||||
lda draw_page_smc+1 ; DRAW_PAGE
|
lda draw_page_smc+1 ; DRAW_PAGE
|
||||||
beq done_page
|
beq done_page
|
||||||
@ -164,5 +176,8 @@ done_page:
|
|||||||
eor #$4 ; flip draw page between $400/$800
|
eor #$4 ; flip draw page between $400/$800
|
||||||
sta draw_page_smc+1 ; DRAW_PAGE
|
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 &
|
||||||
|
Loading…
Reference in New Issue
Block a user