mirror of
https://github.com/deater/dos33fsprogs.git
synced 2024-06-26 00:29:29 +00:00
hgr: update sample programs
This commit is contained in:
parent
446fb3b163
commit
2dfed8f5db
|
@ -2,17 +2,20 @@ include ../../Makefile.inc
|
||||||
|
|
||||||
DOS33 = ../../utils/dos33fs-utils/dos33
|
DOS33 = ../../utils/dos33fs-utils/dos33
|
||||||
TOKENIZE = ../../utils/asoft_basic-utils/tokenize_asoft
|
TOKENIZE = ../../utils/asoft_basic-utils/tokenize_asoft
|
||||||
|
B2D = ../../utils/bmp2dhr/b2d
|
||||||
|
LZSA = ~/research/lzsa/lzsa/lzsa
|
||||||
|
|
||||||
all: dhgr.dsk
|
all: dhgr.dsk
|
||||||
|
|
||||||
|
|
||||||
dhgr.dsk: HELLO RASTER RASTER2 RASTER3 RASTER4 BITS LOTS
|
dhgr.dsk: HELLO RASTER RASTER2 RASTER3 RASTER4 BITS LOTS DHR_LOAD
|
||||||
cp empty.dsk dhgr.dsk
|
cp empty.dsk dhgr.dsk
|
||||||
$(DOS33) -y plasma.dsk SAVE A HELLO
|
$(DOS33) -y dhgr.dsk SAVE A HELLO
|
||||||
$(DOS33) -y dhgr.dsk BSAVE -a 0x0300 RASTER
|
$(DOS33) -y dhgr.dsk BSAVE -a 0x0300 RASTER
|
||||||
$(DOS33) -y dhgr.dsk BSAVE -a 0x0300 RASTER2
|
$(DOS33) -y dhgr.dsk BSAVE -a 0x0300 RASTER2
|
||||||
$(DOS33) -y dhgr.dsk BSAVE -a 0x0300 RASTER3
|
$(DOS33) -y dhgr.dsk BSAVE -a 0x0300 RASTER3
|
||||||
$(DOS33) -y dhgr.dsk BSAVE -a 0x0300 RASTER4
|
$(DOS33) -y dhgr.dsk BSAVE -a 0x0300 RASTER4
|
||||||
|
$(DOS33) -y dhgr.dsk BSAVE -a 0x1000 DHR_LOAD
|
||||||
$(DOS33) -y dhgr.dsk BSAVE -a 0x0300 BITS
|
$(DOS33) -y dhgr.dsk BSAVE -a 0x0300 BITS
|
||||||
$(DOS33) -y dhgr.dsk BSAVE -a 0x0300 LOTS
|
$(DOS33) -y dhgr.dsk BSAVE -a 0x0300 LOTS
|
||||||
|
|
||||||
|
@ -21,6 +24,20 @@ dhgr.dsk: HELLO RASTER RASTER2 RASTER3 RASTER4 BITS LOTS
|
||||||
HELLO: hello.bas
|
HELLO: hello.bas
|
||||||
$(TOKENIZE) < hello.bas > HELLO
|
$(TOKENIZE) < hello.bas > HELLO
|
||||||
|
|
||||||
|
|
||||||
|
###
|
||||||
|
|
||||||
|
C64.AUX.lzsa: C64.AUX
|
||||||
|
$(LZSA) -r -f2 C64.AUX C64.AUX.lzsa
|
||||||
|
|
||||||
|
C64.BIN.lzsa: C64.BIN
|
||||||
|
$(LZSA) -r -f2 C64.BIN C64.BIN.lzsa
|
||||||
|
|
||||||
|
###
|
||||||
|
|
||||||
|
C64.AUX: c64.bmp
|
||||||
|
$(B2D) c64.bmp A
|
||||||
|
|
||||||
###
|
###
|
||||||
|
|
||||||
RASTER: raster.o
|
RASTER: raster.o
|
||||||
|
@ -55,6 +72,15 @@ RASTER4: raster4.o
|
||||||
raster4.o: raster4.s
|
raster4.o: raster4.s
|
||||||
ca65 -o raster4.o raster4.s -l raster4.lst
|
ca65 -o raster4.o raster4.s -l raster4.lst
|
||||||
|
|
||||||
|
###
|
||||||
|
|
||||||
|
DHR_LOAD: dhr_load.o
|
||||||
|
ld65 -o DHR_LOAD dhr_load.o -C ../../linker_scripts/apple2_1000.inc
|
||||||
|
|
||||||
|
dhr_load.o: dhr_load.s C64.AUX.lzsa C64.BIN.lzsa
|
||||||
|
ca65 -o dhr_load.o dhr_load.s -l dhr_load.lst
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
###
|
###
|
||||||
|
|
||||||
|
|
|
@ -1,39 +1,21 @@
|
||||||
include ../../Makefile.inc
|
include ../../../Makefile.inc
|
||||||
|
|
||||||
DOS33 = ../../utils/dos33fs-utils/dos33
|
DOS33 = ../../../utils/dos33fs-utils/dos33
|
||||||
TOKENIZE = ../../utils/asoft_basic-utils/tokenize_asoft
|
TOKENIZE = ../../../utils/asoft_basic-utils/tokenize_asoft
|
||||||
|
LINKER_SCRIPTS = ../../../linker_scripts
|
||||||
|
|
||||||
all: hgr.dsk
|
all: snowflake.dsk
|
||||||
|
|
||||||
hgr.dsk: SNOW SNOW2 SNOW3 STARS FASTAR
|
snowflake.dsk: SNOW SNOW2 SNOW3
|
||||||
cp empty.dsk hgr.dsk
|
cp empty.dsk snowflake.dsk
|
||||||
$(DOS33) -y hgr.dsk BSAVE -a 0x0300 SNOW
|
$(DOS33) -y snowflake.dsk BSAVE -a 0x0300 SNOW
|
||||||
$(DOS33) -y hgr.dsk BSAVE -a 0x0300 SNOW2
|
$(DOS33) -y snowflake.dsk BSAVE -a 0x0300 SNOW2
|
||||||
$(DOS33) -y hgr.dsk BSAVE -a 0x0367 SNOW3
|
$(DOS33) -y snowflake.dsk BSAVE -a 0x0367 SNOW3
|
||||||
$(DOS33) -y hgr.dsk BSAVE -a 0x0300 STARS
|
|
||||||
$(DOS33) -y hgr.dsk BSAVE -a 0x0C00 FASTAR
|
|
||||||
|
|
||||||
###
|
|
||||||
|
|
||||||
FASTAR: fastar.o
|
|
||||||
ld65 -o FASTAR fastar.o -C ../../linker_scripts/apple2_c00.inc
|
|
||||||
|
|
||||||
fastar.o: fastar.s
|
|
||||||
ca65 -o fastar.o fastar.s -l fastar.lst
|
|
||||||
|
|
||||||
|
|
||||||
###
|
|
||||||
|
|
||||||
STARS: stars.o
|
|
||||||
ld65 -o STARS stars.o -C ../../linker_scripts/apple2_300.inc
|
|
||||||
|
|
||||||
stars.o: stars.s
|
|
||||||
ca65 -o stars.o stars.s -l stars.lst
|
|
||||||
|
|
||||||
###
|
###
|
||||||
|
|
||||||
SNOW: snow.o
|
SNOW: snow.o
|
||||||
ld65 -o SNOW snow.o -C ../../linker_scripts/apple2_300.inc
|
ld65 -o SNOW snow.o -C $(LINKER_SCRIPTS)/apple2_300.inc
|
||||||
|
|
||||||
snow.o: snow.s
|
snow.o: snow.s
|
||||||
ca65 -o snow.o snow.s -l snow.lst
|
ca65 -o snow.o snow.s -l snow.lst
|
||||||
|
@ -41,7 +23,7 @@ snow.o: snow.s
|
||||||
###
|
###
|
||||||
|
|
||||||
SNOW2: snow2.o
|
SNOW2: snow2.o
|
||||||
ld65 -o SNOW2 snow2.o -C ../../linker_scripts/apple2_300.inc
|
ld65 -o SNOW2 snow2.o -C $(LINKER_SCRIPTS)/apple2_300.inc
|
||||||
|
|
||||||
snow2.o: snow2.s
|
snow2.o: snow2.s
|
||||||
ca65 -o snow2.o snow2.s -l snow2.lst
|
ca65 -o snow2.o snow2.s -l snow2.lst
|
||||||
|
@ -58,4 +40,4 @@ snow3.o: snow3.s
|
||||||
###
|
###
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f *~ *.o *.lst SNOW SNOW2 SNOW3 STARS
|
rm -f *~ *.o *.lst SNOW SNOW2 SNOW3
|
||||||
|
|
|
@ -1,257 +0,0 @@
|
||||||
DRAW_PAGE = $E6
|
|
||||||
ZL = $06
|
|
||||||
ZH = $07
|
|
||||||
SEEDLO = $4E
|
|
||||||
SEEDHI = $4F
|
|
||||||
|
|
||||||
NUM1 = $F0
|
|
||||||
NUM1L = $F1
|
|
||||||
NUM2 = $F2
|
|
||||||
NUM2L = $F3
|
|
||||||
RESULT = $F4
|
|
||||||
RESULT2 = $F5
|
|
||||||
RESULT3 = $F6
|
|
||||||
RESULT4 = $F7
|
|
||||||
XL = $F8
|
|
||||||
XH = $F9
|
|
||||||
YL = $FA
|
|
||||||
YH = $FB
|
|
||||||
MINUS = $FC
|
|
||||||
Z = $FD
|
|
||||||
|
|
||||||
HGR2 = $F3D8
|
|
||||||
HPLOT0 = $F457 ; plot (Y,X), (A)
|
|
||||||
HGLIN = $F53A ; plot to (A,X), (Y)
|
|
||||||
HCLEAR0 = $F3F2 ; clear current hgr page to blackh
|
|
||||||
HCOLOR = $F6F0 ; color in X (must be 0..7)
|
|
||||||
|
|
||||||
|
|
||||||
lda #$ff
|
|
||||||
sta XH
|
|
||||||
|
|
||||||
ldx #0
|
|
||||||
|
|
||||||
jmp check_bounds
|
|
||||||
populate_loop:
|
|
||||||
; Z = XXYY YYYY
|
|
||||||
; C=Z*.125
|
|
||||||
; A=A+(A-64)*C
|
|
||||||
; B=B+(B-64)*C
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
; X is in NUM1 for this
|
|
||||||
|
|
||||||
lda #0
|
|
||||||
sta MINUS
|
|
||||||
|
|
||||||
sec
|
|
||||||
lda XH
|
|
||||||
sbc #64
|
|
||||||
bpl no_minus
|
|
||||||
set_minus:
|
|
||||||
inc MINUS
|
|
||||||
|
|
||||||
sec
|
|
||||||
lda #0
|
|
||||||
sbc XL
|
|
||||||
sta NUM1
|
|
||||||
lda #0
|
|
||||||
sbc XH
|
|
||||||
sta NUM1+1
|
|
||||||
jmp do_mult
|
|
||||||
|
|
||||||
no_minus:
|
|
||||||
sta NUM1+1
|
|
||||||
lda XL
|
|
||||||
sta NUM1
|
|
||||||
|
|
||||||
do_mult:
|
|
||||||
lda #0
|
|
||||||
sta NUM2+1
|
|
||||||
lda Z
|
|
||||||
sta NUM2
|
|
||||||
|
|
||||||
txa
|
|
||||||
pha
|
|
||||||
|
|
||||||
jsr mult16
|
|
||||||
|
|
||||||
pla
|
|
||||||
tax
|
|
||||||
|
|
||||||
; result has result but due to our fixed point
|
|
||||||
; we want to shift the whole thing left by 2
|
|
||||||
; then grab RESULT+2 as high and RESULT+1 as low
|
|
||||||
|
|
||||||
rol RESULT+1
|
|
||||||
rol RESULT+2
|
|
||||||
ror RESULT+1
|
|
||||||
lda RESULT+2
|
|
||||||
|
|
||||||
lda RESULT+1 ; low
|
|
||||||
sta NUM1
|
|
||||||
lda RESULT+2 ; hight
|
|
||||||
sta NUM1+1
|
|
||||||
|
|
||||||
; add to X; subtract if minus
|
|
||||||
lda MINUS
|
|
||||||
beq not_minus
|
|
||||||
|
|
||||||
sec
|
|
||||||
lda #00
|
|
||||||
sbc NUM1
|
|
||||||
sta NUM1
|
|
||||||
lda #00
|
|
||||||
sbc NUM1+1
|
|
||||||
sta NUM1+1
|
|
||||||
|
|
||||||
not_minus:
|
|
||||||
clc
|
|
||||||
lda XL
|
|
||||||
adc NUM1
|
|
||||||
sta XL
|
|
||||||
lda XH
|
|
||||||
adc NUM1+1
|
|
||||||
sta XH
|
|
||||||
|
|
||||||
; Z=Z+.125
|
|
||||||
|
|
||||||
clc
|
|
||||||
lda Z
|
|
||||||
adc #$8
|
|
||||||
sta Z
|
|
||||||
|
|
||||||
|
|
||||||
; check to see if out of bounds
|
|
||||||
check_bounds:
|
|
||||||
lda XH
|
|
||||||
bmi redo_point
|
|
||||||
lda YH
|
|
||||||
bpl all_good
|
|
||||||
|
|
||||||
redo_point:
|
|
||||||
; store a break in the lines
|
|
||||||
lda #0
|
|
||||||
sta $1000,X
|
|
||||||
sta $1100,X
|
|
||||||
sta Z ; needed?
|
|
||||||
inx
|
|
||||||
|
|
||||||
jsr rand16
|
|
||||||
sta XH
|
|
||||||
jsr rand16
|
|
||||||
sta YH
|
|
||||||
|
|
||||||
all_good:
|
|
||||||
|
|
||||||
|
|
||||||
; write out
|
|
||||||
|
|
||||||
lda XH
|
|
||||||
sta $1000,X
|
|
||||||
lda YH
|
|
||||||
sta $1100,X
|
|
||||||
|
|
||||||
inx
|
|
||||||
beq done_pop
|
|
||||||
jmp populate_loop
|
|
||||||
done_pop:
|
|
||||||
;=========================
|
|
||||||
;=========================
|
|
||||||
;=========================
|
|
||||||
|
|
||||||
jsr HGR2
|
|
||||||
ldx #3
|
|
||||||
jsr HCOLOR
|
|
||||||
|
|
||||||
ldx #0
|
|
||||||
star_loop:
|
|
||||||
txa
|
|
||||||
and #$1
|
|
||||||
beq page2
|
|
||||||
page1: ; draw page1, show page2
|
|
||||||
bit $C055
|
|
||||||
lda #$20
|
|
||||||
bne adjust_page
|
|
||||||
page2:
|
|
||||||
bit $C054
|
|
||||||
lda #$40
|
|
||||||
adjust_page:
|
|
||||||
sta DRAW_PAGE
|
|
||||||
|
|
||||||
; clear background
|
|
||||||
jsr HCLEAR0
|
|
||||||
|
|
||||||
txa
|
|
||||||
pha
|
|
||||||
|
|
||||||
lda $1100,X ; ycoord
|
|
||||||
beq skip_draw
|
|
||||||
pha
|
|
||||||
ldy $1000,X ; xcoord
|
|
||||||
tya
|
|
||||||
tax
|
|
||||||
ldy #0
|
|
||||||
pla
|
|
||||||
|
|
||||||
jsr HPLOT0 ; plot (Y,X), (A)
|
|
||||||
|
|
||||||
skip_draw:
|
|
||||||
|
|
||||||
pla
|
|
||||||
tax
|
|
||||||
|
|
||||||
inx
|
|
||||||
jmp star_loop
|
|
||||||
|
|
||||||
|
|
||||||
; make sure seed isn't 0000
|
|
||||||
rand16:
|
|
||||||
; batari rand16
|
|
||||||
lda SEEDHI
|
|
||||||
lsr
|
|
||||||
rol SEEDLO
|
|
||||||
bcc noeor
|
|
||||||
eor #$B4
|
|
||||||
noeor:
|
|
||||||
sta SEEDHI
|
|
||||||
eor SEEDLO
|
|
||||||
|
|
||||||
; we only want 127 bits
|
|
||||||
and #$7f
|
|
||||||
|
|
||||||
rts
|
|
||||||
|
|
||||||
|
|
||||||
;=====================
|
|
||||||
;=====================
|
|
||||||
; 16x16 -> 32 multiply
|
|
||||||
;=====================
|
|
||||||
;=====================
|
|
||||||
; destroys NUM2
|
|
||||||
mult16:
|
|
||||||
lda #0 ; Initialize RESULT to 0
|
|
||||||
sta RESULT+2
|
|
||||||
ldx #16 ; There are 16 bits in NUM2
|
|
||||||
L1:
|
|
||||||
lsr NUM2+1 ; top part of 16 bit shift right
|
|
||||||
ror NUM2
|
|
||||||
bcc L2 ; 0 or 1?
|
|
||||||
tay ; If 1, add NUM1 (hi byte of RESULT is in A)
|
|
||||||
clc
|
|
||||||
lda NUM1
|
|
||||||
adc RESULT+2
|
|
||||||
sta RESULT+2
|
|
||||||
tya
|
|
||||||
adc NUM1+1
|
|
||||||
L2:
|
|
||||||
ror ; "Stairstep" shift
|
|
||||||
ror RESULT+2
|
|
||||||
ror RESULT+1
|
|
||||||
ror RESULT
|
|
||||||
dex
|
|
||||||
bne L1
|
|
||||||
sta RESULT+3
|
|
||||||
|
|
||||||
rts
|
|
|
@ -1,49 +0,0 @@
|
||||||
GBASL = $26
|
|
||||||
GBASH = $27
|
|
||||||
HGRPAGE = $E6
|
|
||||||
|
|
||||||
PAGE0 = $C054
|
|
||||||
PAGE1 = $C055
|
|
||||||
|
|
||||||
HGR = $F3E2
|
|
||||||
HGR2 = $F3D8
|
|
||||||
HCLR = $F3F2
|
|
||||||
HPOSN = $F411
|
|
||||||
WAIT = $FCA8 ;; delay 1/2(26+27A+5A^2) us
|
|
||||||
|
|
||||||
stars:
|
|
||||||
jsr HGR
|
|
||||||
jsr HGR2
|
|
||||||
; lda #0
|
|
||||||
; sta ybase
|
|
||||||
lda #$20
|
|
||||||
sta HGRPAGE
|
|
||||||
|
|
||||||
move_stars:
|
|
||||||
lda HGRPAGE
|
|
||||||
cmp #$20
|
|
||||||
beq show_page1
|
|
||||||
show_page2:
|
|
||||||
bit PAGE1
|
|
||||||
lsr HGRPAGE
|
|
||||||
bne doit
|
|
||||||
|
|
||||||
show_page1:
|
|
||||||
bit PAGE0
|
|
||||||
asl HGRPAGE
|
|
||||||
|
|
||||||
doit:
|
|
||||||
jsr HCLR
|
|
||||||
|
|
||||||
; FORI=1TO10
|
|
||||||
; A=X(I)
|
|
||||||
; B=Y(I)
|
|
||||||
; C=Z(I)*.1
|
|
||||||
; X(I)=A+(A-140)*C
|
|
||||||
; Y(I)=B+(B-96)*C
|
|
||||||
; Z(I)=Z(I)+.1
|
|
||||||
; IFX(I)<0ORX(I)>279ORY(I)<0ORY(I)>191THENX(I)=RND(1)*280:Y(I)=RND(1)*192:Z(I)=0:GOTO7
|
|
||||||
;HPLOTA,BTOX(I),Y(I)
|
|
||||||
;NEXTI
|
|
||||||
|
|
||||||
jmp move_stars
|
|
Loading…
Reference in New Issue
Block a user