mirror of
https://github.com/deater/dos33fsprogs.git
synced 2025-01-08 03:31:10 +00:00
scroll: work on smaller version
This commit is contained in:
parent
0d9db2963f
commit
4715dfaf85
@ -12,14 +12,14 @@ all: scroller.dsk
|
||||
$(DOS33):
|
||||
cd ../../../utils/dos33fs-utils && make
|
||||
|
||||
scroller.dsk: $(DOS33) HELLO DIAMOND DIAMOND_BOT RANDOM RANDOM_BOT
|
||||
scroller.dsk: $(DOS33) HELLO DIAMOND DIAMOND_BOT RANDOM RANDOM_BOT RANDOM_128
|
||||
cp $(EMPTY_DISK)/empty.dsk scroller.dsk
|
||||
$(DOS33) -y scroller.dsk SAVE A HELLO
|
||||
$(DOS33) -y scroller.dsk BSAVE -a 0xc00 DIAMOND
|
||||
$(DOS33) -y scroller.dsk BSAVE -a 0x36B DIAMOND_BOT
|
||||
$(DOS33) -y scroller.dsk BSAVE -a 0xc00 RANDOM
|
||||
$(DOS33) -y scroller.dsk BSAVE -a 0x36B RANDOM_BOT
|
||||
|
||||
$(DOS33) -y scroller.dsk BSAVE -a 0x70 RANDOM_128
|
||||
###
|
||||
|
||||
HELLO: hello.bas
|
||||
@ -51,6 +51,14 @@ random.o: random.s
|
||||
|
||||
###
|
||||
|
||||
RANDOM_128: random_128.o
|
||||
ld65 -o RANDOM_128 random_128.o -C $(LINKERSCRIPTS)/apple2_70_zp.inc
|
||||
|
||||
random_128.o: random_128.s
|
||||
ca65 -o random_128.o random_128.s -l random_128.lst
|
||||
|
||||
###
|
||||
|
||||
|
||||
RANDOM_BOT: random_bot.o
|
||||
ld65 -o RANDOM_BOT random_bot.o -C $(LINKERSCRIPTS)/apple2_36b.inc
|
||||
|
236
graphics/gr/scroll/random_128.s
Normal file
236
graphics/gr/scroll/random_128.s
Normal file
@ -0,0 +1,236 @@
|
||||
; random scroll bot 128
|
||||
|
||||
; 141 bytes -- bot version
|
||||
; 138 bytes -- no need for back jump
|
||||
; 140 bytes -- load at 0x70
|
||||
; 134 bytes -- enforce ZP addresses
|
||||
; 133 bytes -- convert JMP to BPL
|
||||
; 131 bytes -- make OUTL live in program
|
||||
; 130 bytes -- use EOR instead of ADD
|
||||
; 127 bytes -- don't wrap pattern lookup at 8
|
||||
; 126 bytes -- use X for loop
|
||||
|
||||
; ***** *****
|
||||
; ***** *****
|
||||
; ** ** @@ @@@@@@
|
||||
; ** ** @@ @@
|
||||
; ** ** @@@@@@ @@@@@@ @@@@@@
|
||||
; ***** ***** @@ @@ @@ @@
|
||||
; ***** ***** @@@@@@ @@@@@@ @@
|
||||
|
||||
|
||||
; by Vince `deater` Weaver
|
||||
|
||||
SETTEXT = $C051
|
||||
FULLGR = $C052
|
||||
PAGE1 = $C054
|
||||
PAGE2 = $C055
|
||||
LORES = $C056 ; Enable LORES graphics
|
||||
|
||||
HGR2 = $F3D8
|
||||
PLOT = $F800 ; PLOT AT Y,A (A colors output, Y preserved)
|
||||
GBASCALC = $F847 ; Y in A, put addr in GBASL/GBASH
|
||||
SETGR = $FB40
|
||||
WAIT = $FCA8 ; delay 1/2(26+27A+5A^2) us
|
||||
|
||||
GBASL = $26
|
||||
GBASH = $27
|
||||
|
||||
OUTL = $74
|
||||
OUTH = $75
|
||||
|
||||
PAGE = $6E
|
||||
LINE = $6F
|
||||
|
||||
pattern1 = $f000 ; location in memory
|
||||
|
||||
|
||||
.zeropage
|
||||
.globalzp pattern_smc
|
||||
.globalzp bitmap
|
||||
.globalzp bitmap2
|
||||
|
||||
|
||||
|
||||
random:
|
||||
|
||||
jsr SETGR ; set LORES ; 70 71 72
|
||||
|
||||
lda #0 ; also OUTL=0/OUTH ; 73 74
|
||||
|
||||
bit FULLGR ; set FULL 48x40 ; 75 76 77
|
||||
|
||||
; bit SETTEXT
|
||||
|
||||
main_loop:
|
||||
sta PAGE ; start at page 1
|
||||
|
||||
asl ; make OUTH $4 or $8 depending on value in PAGE
|
||||
; which we have in A above or at end of loop
|
||||
asl ; C is 0
|
||||
adc #4
|
||||
|
||||
sta OUTH
|
||||
|
||||
lda #200
|
||||
jsr WAIT
|
||||
|
||||
|
||||
;============================
|
||||
; draw an interleaved line
|
||||
full_loop:
|
||||
ldx #3
|
||||
|
||||
line_loop:
|
||||
ldy #119
|
||||
|
||||
screen_loop:
|
||||
|
||||
tya ; extrapolate X from Y
|
||||
; and #$7 ; could be bigger?
|
||||
; tax
|
||||
|
||||
pattern_smc:
|
||||
lda pattern1,Y
|
||||
|
||||
inner_loop_smc:
|
||||
|
||||
sta (OUTL),Y
|
||||
|
||||
dey
|
||||
bpl screen_loop
|
||||
|
||||
;=================================
|
||||
; move to next pattern
|
||||
|
||||
scroll_pattern:
|
||||
clc
|
||||
lda pattern_smc+1
|
||||
adc #8
|
||||
and #$1f
|
||||
sta pattern_smc+1
|
||||
|
||||
; move to next line by adding $80
|
||||
; we save a byte by using EOR instead
|
||||
|
||||
lda OUTL
|
||||
eor #$80 ; add $80
|
||||
sta OUTL
|
||||
|
||||
bne line_loop
|
||||
|
||||
; we overflowed, so increment OUTH
|
||||
|
||||
inc OUTH
|
||||
|
||||
; lda OUTH ; check if at end
|
||||
; and #$3
|
||||
; bne line_loop
|
||||
|
||||
dex
|
||||
bpl line_loop
|
||||
|
||||
|
||||
done_bg:
|
||||
|
||||
;=======================================
|
||||
; done drawing frame
|
||||
;=======================================
|
||||
|
||||
|
||||
;======================
|
||||
; draw bitmap
|
||||
|
||||
ldx #7
|
||||
boxloop:
|
||||
txa
|
||||
jsr GBASCALC ; calc address of X
|
||||
; note we center to middle of screen
|
||||
; by noting the middle 8 lines
|
||||
; are offset by $28 from first 8 lines
|
||||
|
||||
; GBASL is in A at this point
|
||||
|
||||
clc
|
||||
adc #12+$28
|
||||
sta GBASL ; center x-coord and y-coord at same time
|
||||
|
||||
|
||||
lda PAGE ; want to add 0 or 4 (not 0 or 1)
|
||||
asl
|
||||
asl ; this sets C to 0
|
||||
adc GBASH
|
||||
sta GBASH
|
||||
|
||||
|
||||
ldy #15
|
||||
draw_line_loop:
|
||||
|
||||
lda bitmap2,X ; get low bit of bitmap2 into carry
|
||||
lsr
|
||||
|
||||
lda #$00 ; black is default color
|
||||
|
||||
ror bitmap,X ; 16-bit rotate (in memory)
|
||||
ror bitmap2,X
|
||||
|
||||
bcc its_black
|
||||
|
||||
lda #$ff
|
||||
its_black:
|
||||
sta (GBASL),Y ; partway down screen
|
||||
|
||||
dey
|
||||
bpl draw_line_loop
|
||||
|
||||
dex
|
||||
bpl boxloop
|
||||
|
||||
|
||||
;=========================
|
||||
; scroll one line
|
||||
|
||||
; to scroll up need to add 8?
|
||||
inc pattern_smc+1
|
||||
|
||||
|
||||
; switch page
|
||||
lda PAGE
|
||||
|
||||
tax
|
||||
ldy PAGE1,X ; flip page
|
||||
|
||||
eor #$1
|
||||
|
||||
bpl main_loop ; bra
|
||||
|
||||
|
||||
;01234567|01234567
|
||||
;
|
||||
; @@@@ @@@@
|
||||
; @@ @@
|
||||
; @@ @@
|
||||
; @@ @@
|
||||
; @@@@ @@@@
|
||||
;
|
||||
;@@@@@@@@@@@@@@@@
|
||||
bitmap:
|
||||
.byte $FF ;,$FF
|
||||
.byte $E1 ;,$87
|
||||
.byte $F9 ;,$9F
|
||||
.byte $F9 ;,$9F
|
||||
.byte $F9 ;,$9F
|
||||
.byte $E1 ;,$87
|
||||
.byte $FF ;,$FF
|
||||
.byte $00 ;,$00
|
||||
|
||||
bitmap2:
|
||||
.byte $FF
|
||||
.byte $87
|
||||
.byte $9F
|
||||
.byte $9F
|
||||
.byte $9F
|
||||
.byte $87
|
||||
.byte $FF
|
||||
.byte $00
|
||||
|
Loading…
Reference in New Issue
Block a user