lovebyte2023: some lovebyte nonsense

This commit is contained in:
Vince Weaver 2023-01-20 01:57:51 -05:00
parent cb06209b80
commit 75bb600623
15 changed files with 456 additions and 123 deletions

View File

@ -0,0 +1,46 @@
include ../../../Makefile.inc
DOS33 = ../../../utils/dos33fs-utils/dos33
TOKENIZE = ../../../utils/asoft_basic-utils/tokenize_asoft
EMPTYDISK = ../../../empty_disk/empty.dsk
all: agony17.dsk
agony17.dsk: HELLO AGONY17
cp $(EMPTYDISK) agony17.dsk
$(DOS33) -y agony17.dsk SAVE A HELLO
$(DOS33) -y agony17.dsk BSAVE -a 0xE7 AGONY17
###
submit: agony17.zip
agony1732.zip: AGONY17 agony17.s file_id.diz agony17.dsk
mkdir -p lovebyte2022_agony17
cp AGONY17 ./lovebyte2022_agony17
cp agony17.s ./lovebyte2022_agony17
cp file_id.diz ./lovebyte2022_agony17
cp agony17.dsk ./lovebyte2022_agony17
cp agony17_720p.mp4 ./lovebyte2022_agony17
zip -r agony1732.zip lovebyte2022_agony17
####
####
HELLO: hello.bas
$(TOKENIZE) < hello.bas > HELLO
###
AGONY17: agony17.o
ld65 -o AGONY17 agony17.o -C ./apple2_e7_zp.inc
agony17.o: agony17.s
ca65 -o agony17.o agony17.s -l agony17.lst
####
clean:
rm -f *~ *.o *.lst HELLO AGONY17 *.zip

View File

@ -0,0 +1,50 @@
; 17B weird line pattern
; Really wanted this to be 16B :(
; zero page locations
GBASL = $26
GBASH = $27
HGR_SCALE = $E7
HGR_COLLISIONS = $EA
; ROM locations
HGR2 = $F3D8
HPOSN = $F411
XDRAW0 = $F65D
XDRAW1 = $F661
agony17:
; we load at zero page $E7 which is HGR_SCALE
; this means the scale is $20 (JSR)
jsr HGR2 ; Hi-res, full screen ; 3
; Y=0, A=0 after this call
; A and Y are 0 here.
; X is left behind by the boot process?
; set GBASL/GBASH
; we really have to call this, otherwise it won't run
; on some real hardware depending on setup of zero page at boot
jsr HPOSN ; set screen position to X= (y,x) Y=(a)
; saves X,Y,A to zero page
; after Y= orig X/7
; A and X are ??
tiny_loop:
ldy #$e8 ; point to shape table value of $04,$00
ldx #$0e ; in ROM
lda #2 ; ROT=2
jsr XDRAW0 ; XDRAW 1 AT X,Y
; Both A and X are 0 at exit
; Z flag set on exit
; Y varies
beq tiny_loop ; bra

View File

@ -0,0 +1,7 @@
Agony17
-
Hi-res Xdraw Pattern
17-byte Intro for Apple II, Lovebyte 2023
by Deater / dSr
Really wanted to fit this in 16-bytes, but alas

View File

@ -0,0 +1,9 @@
5 HOME
10 PRINT " AGONY17 -- A 17 BYTE APPLE II INTRO"
12 PRINT " FOR LOVEBYTE 2023"
15 PRINT " BY DEATER / DSR"
20 PRINT CHR$(4)"CATALOG"
25 PRINT:PRINT "PRESS ANY KEY TO 'BRUN AGONY17'"
30 GET A$
35 PRINT
40 PRINT CHR$(4)"BRUN AGONY17"

View File

@ -0,0 +1,3 @@
CALL -151
E7: 20 d8 f3 20 11 f4 a0 e8 a2 0e a9 02 20 5d f6 f0 f5
E7G

View File

@ -0,0 +1,46 @@
include ../../../Makefile.inc
DOS33 = ../../../utils/dos33fs-utils/dos33
TOKENIZE = ../../../utils/asoft_basic-utils/tokenize_asoft
EMPTYDISK = ../../../empty_disk/empty.dsk
all: pied64.dsk
pied64.dsk: HELLO PIED57
cp $(EMPTYDISK) pied64.dsk
$(DOS33) -y pied64.dsk SAVE A HELLO
$(DOS33) -y pied64.dsk BSAVE -a 0x80 PIED57
###
submit: pied.zip
pied32.zip: PIED57 pied57.s file_id.diz pied64.dsk
mkdir -p lovebyte2022_pied
cp PIED57 ./lovebyte2022_pied
cp pied57.s ./lovebyte2022_pied
cp file_id.diz ./lovebyte2022_pied
cp pied64.dsk ./lovebyte2022_pied
cp pied_720p.mp4 ./lovebyte2022_pied
zip -r pied32.zip lovebyte2022_pied
####
####
HELLO: hello.bas
$(TOKENIZE) < hello.bas > HELLO
###
PIED57: pied57.o
ld65 -o PIED57 pied57.o -C ./apple2_80_zp.inc
pied57.o: pied57.s
ca65 -o pied57.o pied57.s -l pied57.lst
####
clean:
rm -f *~ *.o *.lst HELLO PIED57 *.zip

View File

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

View File

@ -0,0 +1,6 @@
Pied57
-
Lo-res scrolling colors
57-byte Intro for Apple II, Lovebyte 2023
by Deater / dSr

View File

@ -0,0 +1,9 @@
5 HOME
10 PRINT " PIED57 -- A 57 BYTE APPLE II INTRO"
12 PRINT " FOR LOVEBYTE 2023"
15 PRINT " BY DEATER / DSR"
20 PRINT CHR$(4)"CATALOG"
25 PRINT:PRINT "PRESS ANY KEY TO 'BRUN PIED57'"
30 GET A$
35 PRINT
40 PRINT CHR$(4)"BRUN PIED57"

View File

@ -0,0 +1,100 @@
; scrolling boxes (62 bytes)
; by deater (Vince Weaver) <vince@deater.net>
; Lovebyte 2023
; Zero Page
GBASL = $26
GBASH = $27
X2 = $FB
FRAME = $FC
PAGE = $FD
; Soft Switches
FULLGR = $C052 ; Full screen, no text
PAGE1 = $C054 ; Page1
;PAGE2 = $C055 ; Page2
LORES = $C056 ; Enable LORES graphics
; ROM routines
HGR2 = $F3D8
GBASCALC= $F847 ;; take Y-coord/2 in A, put address in GBASL/H ( a trashed, C clear)
SETGR = $FB40
.zeropage
.globalzp page_smc
boxes:
;===================
; init screen
jsr HGR2 ; set hires graphics
; full screen, page2
; A=0, Y=0
bit LORES ; switch to lores
boxes_forever:
inc FRAME ; increment frame
ldx #23 ; YPos in X (0..48)
; flip page
lda page_smc+1
pha
lsr
lsr
tay
lda PAGE1,Y
pla
eor #$4
sta page_smc+1
yloop:
txa
jsr GBASCALC ; get graphics line in GBASL/H
; YPOS/2 in A, C clear after
lda GBASH ; adjust for page flip
page_smc:
adc #0 ; start at page0
sta GBASH
ldy #39 ; Xpos: 0..39
xloop:
; calculate color for each X
; color = (XX-FRAME)^(A)
sec ; subtract frame from Xpos in Y
tya
sbc FRAME
sta X2
txa
and #$FC ; add border?
eor X2 ; color in A
sta (GBASL),Y ; plot pixel
dey ; count down Xpos
bpl xloop ; loop until done
dex ; count down YPos
bpl yloop ; loop until done
bmi boxes_forever ; continue

View File

@ -8,11 +8,12 @@ TOKENIZE = ../../../utils/asoft_basic-utils/tokenize_asoft
all: paralax.dsk
paralax.dsk: HELLO BOXES BOXES_BOT LARGE LARGE_BOT PAR PAR_BOT
paralax.dsk: HELLO BOXES BOXES_BOT LARGE LARGE_BOT PAR PAR_BOT BOXES_TINY
cp $(EMPTY_DISK) paralax.dsk
$(DOS33) -y paralax.dsk SAVE A HELLO
$(DOS33) -y paralax.dsk BSAVE -a 0xc00 BOXES
$(DOS33) -y paralax.dsk BSAVE -a 0x3B7 BOXES_BOT
$(DOS33) -y paralax.dsk BSAVE -a 0x80 BOXES_TINY
$(DOS33) -y paralax.dsk BSAVE -a 0xc00 LARGE
$(DOS33) -y paralax.dsk BSAVE -a 0x386 LARGE_BOT
$(DOS33) -y paralax.dsk BSAVE -a 0xc00 PAR
@ -28,6 +29,14 @@ boxes.o: boxes.s
###
BOXES_TINY: boxes_tiny.o
ld65 -o BOXES_TINY boxes_tiny.o -C $(LINKER_DIR)/apple2_80_zp.inc
boxes_tiny.o: boxes_tiny.s
ca65 -o boxes_tiny.o boxes_tiny.s -l boxes_tiny.lst
###
LARGE: large.o
ld65 -o LARGE large.o -C $(LINKER_DIR)/apple2_c00.inc
@ -80,5 +89,5 @@ HELLO: hello.bas
clean:
rm -f *~ *.o *.lst HELLO BOXES BOXES_BOT LARGE LARGE_BOT PAR PAR_BOT
rm -f *~ *.o *.lst HELLO BOXES BOXES_BOT LARGE LARGE_BOT PAR PAR_BOT BOXES_TINY

View File

@ -0,0 +1,100 @@
; scrolling boxes (62 bytes)
; by deater (Vince Weaver) <vince@deater.net>
; Lovebyte 2023
; Zero Page
GBASL = $26
GBASH = $27
X2 = $FB
FRAME = $FC
PAGE = $FD
; Soft Switches
FULLGR = $C052 ; Full screen, no text
PAGE1 = $C054 ; Page1
;PAGE2 = $C055 ; Page2
LORES = $C056 ; Enable LORES graphics
; ROM routines
HGR2 = $F3D8
GBASCALC= $F847 ;; take Y-coord/2 in A, put address in GBASL/H ( a trashed, C clear)
SETGR = $FB40
.zeropage
.globalzp page_smc
boxes:
;===================
; init screen
jsr HGR2 ; set hires graphics
; full screen, page2
; A=0, Y=0
bit LORES ; switch to lores
boxes_forever:
inc FRAME ; increment frame
ldx #23 ; YPos in X (0..48)
; flip page
lda page_smc+1
pha
lsr
lsr
tay
lda PAGE1,Y
pla
eor #$4
sta page_smc+1
yloop:
txa
jsr GBASCALC ; get graphics line in GBASL/H
; YPOS/2 in A, C clear after
lda GBASH ; adjust for page flip
page_smc:
adc #0 ; start at page0
sta GBASH
ldy #39 ; Xpos: 0..39
xloop:
; calculate color for each X
; color = (XX-FRAME)^(A)
sec ; subtract frame from Xpos in Y
tya
sbc FRAME
sta X2
txa
and #$FC ; add border?
eor X2 ; color in A
sta (GBASL),Y ; plot pixel
dey ; count down Xpos
bpl xloop ; loop until done
dex ; count down YPos
bpl yloop ; loop until done
bmi boxes_forever ; continue

View File

@ -9,7 +9,7 @@ all: shape_table.dsk
shape_table.dsk: HELLO APPLE.BAS GEAR.BAS \
APPLE2 GEAR LINE32 PATTERN PATTERN_LOGO SQUARE_WAVE \
LINE16 HERRING16 STRIPE17 COOL_WAVE TEETH32 TICK_TOCK
AGONY17 HERRING16 STRIPE17 COOL_WAVE TEETH32 TICK_TOCK
cp $(EMPTYDISK) shape_table.dsk
$(DOS33) -y shape_table.dsk SAVE A HELLO
$(DOS33) -y shape_table.dsk SAVE A GEAR.BAS
@ -17,7 +17,7 @@ shape_table.dsk: HELLO APPLE.BAS GEAR.BAS \
$(DOS33) -y shape_table.dsk BSAVE -a 0x3f5 GEAR
$(DOS33) -y shape_table.dsk BSAVE -a 0xc00 APPLE2
$(DOS33) -y shape_table.dsk BSAVE -a 0xc00 LINE32
$(DOS33) -y shape_table.dsk BSAVE -a 0xe7 LINE16
$(DOS33) -y shape_table.dsk BSAVE -a 0xe7 AGONY17
$(DOS33) -y shape_table.dsk BSAVE -a 0xe7 STRIPE17
$(DOS33) -y shape_table.dsk BSAVE -a 0xc00 HERRING16
$(DOS33) -y shape_table.dsk BSAVE -a 0xc00 PATTERN
@ -106,11 +106,11 @@ line32.o: line32.s
###
LINE16: line16.o
ld65 -o LINE16 line16.o -C $(LINKERSCRIPTS)/apple2_e7_zp.inc
AGONY17: agony17.o
ld65 -o AGONY17 agony17.o -C $(LINKERSCRIPTS)/apple2_e7_zp.inc
line16.o: line16.s
ca65 -o line16.o line16.s -l line16.lst
agony17.o: agony17.s
ca65 -o agony17.o agony17.s -l agony17.lst
###
@ -152,4 +152,4 @@ pattern_logo.o: pattern_logo.s
clean:
rm -f *~ *.o *.lst HELLO GEAR.BAS GEAR PATTERN APPLE.BAS \
PATTERN_LOGO COOL_WAVE SQUARE_WAVE TEETH32 TICK_TOCK \
HERRING16 STRIPE17 LINE16 LINE32 APPLE2
HERRING16 STRIPE17 AGONY17 LINE32 APPLE2

View File

@ -0,0 +1,50 @@
; 17B weird line pattern
; Really wanted this to be 16B :(
; zero page locations
GBASL = $26
GBASH = $27
HGR_SCALE = $E7
HGR_COLLISIONS = $EA
; ROM locations
HGR2 = $F3D8
HPOSN = $F411
XDRAW0 = $F65D
XDRAW1 = $F661
agony17:
; we load at zero page $E7 which is HGR_SCALE
; this means the scale is $20 (JSR)
jsr HGR2 ; Hi-res, full screen ; 3
; Y=0, A=0 after this call
; A and Y are 0 here.
; X is left behind by the boot process?
; set GBASL/GBASH
; we really have to call this, otherwise it won't run
; on some real hardware depending on setup of zero page at boot
jsr HPOSN ; set screen position to X= (y,x) Y=(a)
; saves X,Y,A to zero page
; after Y= orig X/7
; A and X are ??
tiny_loop:
ldy #$e8 ; point to shape table value of $04,$00
ldx #$0e ; in ROM
lda #2 ; ROT=2
jsr XDRAW0 ; XDRAW 1 AT X,Y
; Both A and X are 0 at exit
; Z flag set on exit
; Y varies
beq tiny_loop ; bra

View File

@ -1,114 +0,0 @@
; 16B weird line pattern
; note this depends on GBASL/GBASH and other values set by HPOSN
; being vaguely reasonable at boot(?) could vary by system
; it also means some garbage on screen for first XDRAW but
; maybe that's OK as otherwise we are 18 bytes
; zero page locations
HGR_SHAPE = $1A
HGR_SHAPE2 = $1B
HGR_BITS = $1C
GBASL = $26
GBASH = $27
A5H = $45
XREG = $46
YREG = $47
; C0-CF should be clear
; D0-DF?? D0-D5 = HGR scratch?
HGR_DX = $D0 ; HGLIN
HGR_DX2 = $D1 ; HGLIN
HGR_DY = $D2 ; HGLIN
HGR_QUADRANT = $D3
HGR_E = $D4
HGR_E2 = $D5
HGR_X = $E0
HGR_X2 = $E1
HGR_Y = $E2
HGR_COLOR = $E4
HGR_HORIZ = $E5
HGR_SCALE = $E7
HGR_SHAPE_TABLE = $E8
HGR_SHAPE_TABLE2= $E9
HGR_COLLISIONS = $EA
HGR_ROTATION = $F9
FRAME = $FC
XPOS = $FD
YPOS = $FF
; ROM calls
HGR2 = $F3D8
HGR = $F3E2
HPOSN = $F411
XDRAW0 = $F65D
XDRAW1 = $F661
RESTORE = $FF3F
tiny_xdraw:
; .byte $0A ; scale at $E7 (also harmless asl)
jsr HGR2 ; Hi-res, full screen ; 3
; Y=0, A=0 after this call
; lda #10
; sta HGR_SCALE
; A and Y are 0 here.
; X is left behind by the boot process?
; ldy #0
; ldx #100
; lda #100
; we really have to call this, otherwise it won't run
; on some real hardware
; getting GBASH between $40-$5F might actually be enough
; dey
; tya
; lda #$40
; sta GBASH
jsr HPOSN ; set screen position to X= (y,x) Y=(a)
; saves X,Y,A to zero page
; after Y= orig X/7
; A and X are ??
tiny_loop:
; ldx #<shape_table ; point to bottom byte of shape address
; ldy #>shape_table ; point to top byte of shape address
ldy #$e8
ldx #$0e
; tay
; ROT in A
; this will be 0 2nd time through loop, arbitrary otherwise
lda #2 ; ROT=1
jsr XDRAW0 ; XDRAW 1 AT X,Y
; Both A and X are 0 at exit
; Z flag set on exit
; Y varies
; jsr $F666 ; rot in X, a=0
; inx
; inx ; X=1
; txa ; A=1
; tay ; Y=1
beq tiny_loop ; bra
; be sure this is at address $0101, easy to set address
;shape_table:
; .byte $04,$00