From f6406d9d60610e995dd9c459e1adcca25d214ee1 Mon Sep 17 00:00:00 2001 From: Vince Weaver Date: Sat, 4 Feb 2023 00:38:10 -0500 Subject: [PATCH] lovebyte: work on 512 --- .../{1k => blueflame_1k}/Makefile | 0 .../{1k => blueflame_1k}/SmallLove1.s | 0 .../{1k => blueflame_1k}/SmallLove2.s | 0 .../{1k => blueflame_1k}/ay3_write_regs.s | 0 demos/lovebyte2023/{1k => blueflame_1k}/bf.s | 0 .../{1k => blueflame_1k}/blue_flame.s | 0 .../{1k => blueflame_1k}/file_id.diz | 2 +- .../lovebyte2023/{1k => blueflame_1k}/flame.s | 0 .../{1k => blueflame_1k}/hardware.inc | 0 .../{1k => blueflame_1k}/hello.bas | 2 +- .../{1k => blueflame_1k}/interrupt_handler.s | 0 .../{1k => blueflame_1k}/letters.s | 0 .../{1k => blueflame_1k}/letters_routines.s | 0 .../mockingboard_constants.s | 0 .../{1k => blueflame_1k}/mockingboard_init.s | 0 .../{1k => blueflame_1k}/play_frame.s | 0 .../lovebyte2023/{1k => blueflame_1k}/sier.s | 0 .../{1k => blueflame_1k}/static_column.s | 0 .../{1k => blueflame_1k}/tracker_init.s | 0 .../lovebyte2023/{1k => blueflame_1k}/zp.inc | 0 .../{1k => blueflame_1k}/zx02_optim.s | 0 .../{1k => blueflame_1k}/zx02_small.s | 0 demos/lovebyte2023/loveduck_512/Makefile | 54 ++++ demos/lovebyte2023/loveduck_512/file_id.diz | 11 + demos/lovebyte2023/loveduck_512/hello.bas | 9 + demos/lovebyte2023/loveduck_512/love_duck.s | 239 ++++++++++++++++++ 26 files changed, 315 insertions(+), 2 deletions(-) rename demos/lovebyte2023/{1k => blueflame_1k}/Makefile (100%) rename demos/lovebyte2023/{1k => blueflame_1k}/SmallLove1.s (100%) rename demos/lovebyte2023/{1k => blueflame_1k}/SmallLove2.s (100%) rename demos/lovebyte2023/{1k => blueflame_1k}/ay3_write_regs.s (100%) rename demos/lovebyte2023/{1k => blueflame_1k}/bf.s (100%) rename demos/lovebyte2023/{1k => blueflame_1k}/blue_flame.s (100%) rename demos/lovebyte2023/{1k => blueflame_1k}/file_id.diz (88%) rename demos/lovebyte2023/{1k => blueflame_1k}/flame.s (100%) rename demos/lovebyte2023/{1k => blueflame_1k}/hardware.inc (100%) rename demos/lovebyte2023/{1k => blueflame_1k}/hello.bas (76%) rename demos/lovebyte2023/{1k => blueflame_1k}/interrupt_handler.s (100%) rename demos/lovebyte2023/{1k => blueflame_1k}/letters.s (100%) rename demos/lovebyte2023/{1k => blueflame_1k}/letters_routines.s (100%) rename demos/lovebyte2023/{1k => blueflame_1k}/mockingboard_constants.s (100%) rename demos/lovebyte2023/{1k => blueflame_1k}/mockingboard_init.s (100%) rename demos/lovebyte2023/{1k => blueflame_1k}/play_frame.s (100%) rename demos/lovebyte2023/{1k => blueflame_1k}/sier.s (100%) rename demos/lovebyte2023/{1k => blueflame_1k}/static_column.s (100%) rename demos/lovebyte2023/{1k => blueflame_1k}/tracker_init.s (100%) rename demos/lovebyte2023/{1k => blueflame_1k}/zp.inc (100%) rename demos/lovebyte2023/{1k => blueflame_1k}/zx02_optim.s (100%) rename demos/lovebyte2023/{1k => blueflame_1k}/zx02_small.s (100%) create mode 100644 demos/lovebyte2023/loveduck_512/Makefile create mode 100644 demos/lovebyte2023/loveduck_512/file_id.diz create mode 100644 demos/lovebyte2023/loveduck_512/hello.bas create mode 100644 demos/lovebyte2023/loveduck_512/love_duck.s diff --git a/demos/lovebyte2023/1k/Makefile b/demos/lovebyte2023/blueflame_1k/Makefile similarity index 100% rename from demos/lovebyte2023/1k/Makefile rename to demos/lovebyte2023/blueflame_1k/Makefile diff --git a/demos/lovebyte2023/1k/SmallLove1.s b/demos/lovebyte2023/blueflame_1k/SmallLove1.s similarity index 100% rename from demos/lovebyte2023/1k/SmallLove1.s rename to demos/lovebyte2023/blueflame_1k/SmallLove1.s diff --git a/demos/lovebyte2023/1k/SmallLove2.s b/demos/lovebyte2023/blueflame_1k/SmallLove2.s similarity index 100% rename from demos/lovebyte2023/1k/SmallLove2.s rename to demos/lovebyte2023/blueflame_1k/SmallLove2.s diff --git a/demos/lovebyte2023/1k/ay3_write_regs.s b/demos/lovebyte2023/blueflame_1k/ay3_write_regs.s similarity index 100% rename from demos/lovebyte2023/1k/ay3_write_regs.s rename to demos/lovebyte2023/blueflame_1k/ay3_write_regs.s diff --git a/demos/lovebyte2023/1k/bf.s b/demos/lovebyte2023/blueflame_1k/bf.s similarity index 100% rename from demos/lovebyte2023/1k/bf.s rename to demos/lovebyte2023/blueflame_1k/bf.s diff --git a/demos/lovebyte2023/1k/blue_flame.s b/demos/lovebyte2023/blueflame_1k/blue_flame.s similarity index 100% rename from demos/lovebyte2023/1k/blue_flame.s rename to demos/lovebyte2023/blueflame_1k/blue_flame.s diff --git a/demos/lovebyte2023/1k/file_id.diz b/demos/lovebyte2023/blueflame_1k/file_id.diz similarity index 88% rename from demos/lovebyte2023/1k/file_id.diz rename to demos/lovebyte2023/blueflame_1k/file_id.diz index 40b8ef15..ca741631 100644 --- a/demos/lovebyte2023/1k/file_id.diz +++ b/demos/lovebyte2023/blueflame_1k/file_id.diz @@ -5,7 +5,7 @@ BlueFLame by Deater / dSr music by mA2E -ZX02 code by DMSC +ZX02 compression code by DMSC Note: assumes Mockingboard in Slot#4. Music only plays on left speaker diff --git a/demos/lovebyte2023/1k/flame.s b/demos/lovebyte2023/blueflame_1k/flame.s similarity index 100% rename from demos/lovebyte2023/1k/flame.s rename to demos/lovebyte2023/blueflame_1k/flame.s diff --git a/demos/lovebyte2023/1k/hardware.inc b/demos/lovebyte2023/blueflame_1k/hardware.inc similarity index 100% rename from demos/lovebyte2023/1k/hardware.inc rename to demos/lovebyte2023/blueflame_1k/hardware.inc diff --git a/demos/lovebyte2023/1k/hello.bas b/demos/lovebyte2023/blueflame_1k/hello.bas similarity index 76% rename from demos/lovebyte2023/1k/hello.bas rename to demos/lovebyte2023/blueflame_1k/hello.bas index b08df572..956cf91b 100644 --- a/demos/lovebyte2023/1k/hello.bas +++ b/demos/lovebyte2023/blueflame_1k/hello.bas @@ -1,5 +1,5 @@ 5 HOME -10 PRINT "BLUE_FLAME -- A 1K BYTE APPLE II INTRO" +10 PRINT " BLUE_FLAME -- A 1K BYTE APPLE II INTRO" 15 PRINT " BY DEATER & MA2E / DSR" 20 PRINT CHR$(4)"CATALOG" 25 PRINT:PRINT "PRESS ANY KEY TO 'BRUN BF'" diff --git a/demos/lovebyte2023/1k/interrupt_handler.s b/demos/lovebyte2023/blueflame_1k/interrupt_handler.s similarity index 100% rename from demos/lovebyte2023/1k/interrupt_handler.s rename to demos/lovebyte2023/blueflame_1k/interrupt_handler.s diff --git a/demos/lovebyte2023/1k/letters.s b/demos/lovebyte2023/blueflame_1k/letters.s similarity index 100% rename from demos/lovebyte2023/1k/letters.s rename to demos/lovebyte2023/blueflame_1k/letters.s diff --git a/demos/lovebyte2023/1k/letters_routines.s b/demos/lovebyte2023/blueflame_1k/letters_routines.s similarity index 100% rename from demos/lovebyte2023/1k/letters_routines.s rename to demos/lovebyte2023/blueflame_1k/letters_routines.s diff --git a/demos/lovebyte2023/1k/mockingboard_constants.s b/demos/lovebyte2023/blueflame_1k/mockingboard_constants.s similarity index 100% rename from demos/lovebyte2023/1k/mockingboard_constants.s rename to demos/lovebyte2023/blueflame_1k/mockingboard_constants.s diff --git a/demos/lovebyte2023/1k/mockingboard_init.s b/demos/lovebyte2023/blueflame_1k/mockingboard_init.s similarity index 100% rename from demos/lovebyte2023/1k/mockingboard_init.s rename to demos/lovebyte2023/blueflame_1k/mockingboard_init.s diff --git a/demos/lovebyte2023/1k/play_frame.s b/demos/lovebyte2023/blueflame_1k/play_frame.s similarity index 100% rename from demos/lovebyte2023/1k/play_frame.s rename to demos/lovebyte2023/blueflame_1k/play_frame.s diff --git a/demos/lovebyte2023/1k/sier.s b/demos/lovebyte2023/blueflame_1k/sier.s similarity index 100% rename from demos/lovebyte2023/1k/sier.s rename to demos/lovebyte2023/blueflame_1k/sier.s diff --git a/demos/lovebyte2023/1k/static_column.s b/demos/lovebyte2023/blueflame_1k/static_column.s similarity index 100% rename from demos/lovebyte2023/1k/static_column.s rename to demos/lovebyte2023/blueflame_1k/static_column.s diff --git a/demos/lovebyte2023/1k/tracker_init.s b/demos/lovebyte2023/blueflame_1k/tracker_init.s similarity index 100% rename from demos/lovebyte2023/1k/tracker_init.s rename to demos/lovebyte2023/blueflame_1k/tracker_init.s diff --git a/demos/lovebyte2023/1k/zp.inc b/demos/lovebyte2023/blueflame_1k/zp.inc similarity index 100% rename from demos/lovebyte2023/1k/zp.inc rename to demos/lovebyte2023/blueflame_1k/zp.inc diff --git a/demos/lovebyte2023/1k/zx02_optim.s b/demos/lovebyte2023/blueflame_1k/zx02_optim.s similarity index 100% rename from demos/lovebyte2023/1k/zx02_optim.s rename to demos/lovebyte2023/blueflame_1k/zx02_optim.s diff --git a/demos/lovebyte2023/1k/zx02_small.s b/demos/lovebyte2023/blueflame_1k/zx02_small.s similarity index 100% rename from demos/lovebyte2023/1k/zx02_small.s rename to demos/lovebyte2023/blueflame_1k/zx02_small.s diff --git a/demos/lovebyte2023/loveduck_512/Makefile b/demos/lovebyte2023/loveduck_512/Makefile new file mode 100644 index 00000000..c5b420e7 --- /dev/null +++ b/demos/lovebyte2023/loveduck_512/Makefile @@ -0,0 +1,54 @@ +include ../../../Makefile.inc + +DOS33 = ../../../utils/dos33fs-utils/dos33 +TOKENIZE = ../../../utils/asoft_basic-utils/tokenize_asoft +EMPTYDISK = ../../../empty_disk/empty.dsk +PICTUREDSK = ~/research/picturedsk.git/picturedsk +LINKER_SCRIPTS = ../../../linker_scripts/ +ZX02 = ~/research/6502_compression/zx02.git/build/zx02 + +all: love_duck.dsk + +### + +love_duck.dsk: HELLO LOVE_DUCK + cp $(EMPTYDISK) love_duck.dsk + $(DOS33) -y love_duck.dsk SAVE A HELLO + $(DOS33) -y love_duck.dsk BSAVE -a 0xc00 LOVE_DUCK + +### + +HELLO: hello.bas + $(TOKENIZE) < hello.bas > HELLO + + +### + +submit: love_duck.zip + +love_duck.zip: LOVE_DUCK love_duck.dsk + mkdir -p lovebyte2023_love_duck + mkdir -p lovebyte2023_love_duck/src + cp LOVE_DUCK ./lovebyte2023_love_duck + cp *.s ./lovebyte2023_love_duck/src + cp *.inc ./lovebyte2023_love_duck/src + cp file_id.diz ./lovebyte2023_love_duck + cp love_duck.dsk ./lovebyte2023_love_duck + cp love_duck.mp4 ./lovebyte2023_love_duck + cp love_duck_screen.png ./lovebyte2023_love_duck + zip -r love_duck.zip lovebyte2023_love_duck + +#### + +LOVE_DUCK: love_duck.o + ld65 -o LOVE_DUCK love_duck.o -C $(LINKER_SCRIPTS)/apple2_c00.inc + +love_duck.o: love_duck.s + ca65 -o love_duck.o love_duck.s -l love_duck.lst + + +#### + +clean: + rm -f *~ *.o *.lst HELLO LOVE_DUCK *.zip + diff --git a/demos/lovebyte2023/loveduck_512/file_id.diz b/demos/lovebyte2023/loveduck_512/file_id.diz new file mode 100644 index 00000000..ca741631 --- /dev/null +++ b/demos/lovebyte2023/loveduck_512/file_id.diz @@ -0,0 +1,11 @@ +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +BlueFLame +--------------------------------------- +1k Apple II demo for Lovebyte 2023 + +by Deater / dSr +music by mA2E +ZX02 compression code by DMSC + +Note: assumes Mockingboard in Slot#4. +Music only plays on left speaker diff --git a/demos/lovebyte2023/loveduck_512/hello.bas b/demos/lovebyte2023/loveduck_512/hello.bas new file mode 100644 index 00000000..24e3e21a --- /dev/null +++ b/demos/lovebyte2023/loveduck_512/hello.bas @@ -0,0 +1,9 @@ +5 HOME +10 PRINT "LOVE_DUCK -- A 512B BYTE APPLE II INTRO" +15 PRINT " BY DEATER & MA2E / DSR" +20 PRINT CHR$(4)"CATALOG" +25 PRINT:PRINT "PRESS ANY KEY TO 'BRUN LOVE_DUCK'" +30 GET A$ +35 PRINT +40 PRINT CHR$(4)"BRUN LOVE_DUCK" + diff --git a/demos/lovebyte2023/loveduck_512/love_duck.s b/demos/lovebyte2023/loveduck_512/love_duck.s new file mode 100644 index 00000000..bd0f6858 --- /dev/null +++ b/demos/lovebyte2023/loveduck_512/love_duck.s @@ -0,0 +1,239 @@ +; bouncing hearts + +; by Vince `deater` Weaver +; -- dSr-- + +; Lovebyte 2023 + + +SPEAKER = $C030 +SET_GR = $C050 +SET_TEXT = $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 (what is C?) +SETGR = $FB40 +WAIT = $FCA8 ; delay 1/2(26+27A+5A^2) us + +GBASL = $26 +GBASH = $27 + +YPOS = $56 +XPOS = $57 +PO = $58 +FRAME = $5D +;PAGE = $5E + + + +stars: + bit SET_GR ; switch to lo-res mode + bit FULLGR ; set full screen + +main_loop: + + + ;====================== + ; flip page + ;====================== + +page_smc: + lda #0 ; 0 or 1 + + tax + ldy PAGE1,X ; flip page + + eor #$1 ; invert (leaving in A) + + sta page_smc+1 ; save PAGE value (PAGE in A here) + + + asl ; make OUTH $4 or $8 depending on value in PAGE + ; which we have in A above or at end of loop + asl ; (this also sets C to 0) + adc #4 + + sta GBASH + + inc FRAME ; increment frame # + lda FRAME + and #$1f ; cycle colors ever 32 frames + bne no_color_cycle + + inc bg_smc+1 + +no_color_cycle: + + lda #100 ; pause a bit + jsr WAIT + + sta GBASL ; A is 0 + + + ;================================= + ; clear lo-res screen, page1/page2 + ;================================= + ; proper with avoiding screen holes is ~25 instructions + ; this is more like 16 + ; assume GBASL/GBASH already points to proper $400 or $800 + + ldx #4 ; lores is 1k, so 4 pages +full_loop: + ldy #$00 ; clear whole page +bg_smc: + lda #$54 ; color +inner_loop: + sta (GBASL),Y + dey + bne inner_loop + + inc GBASH ; point to next page + dex + bne full_loop + + ; X=0 + ; Y=0 + ; A=color + + ;==================== + ; draw the stars + ;==================== + + lda #32 ; start from right to save a byte + + ;====================== + ; draw 8x8 bitmap star + ;====================== + ; A is XPOS on entry +draw_star: + + ; calculate YPOS + sta XPOS + + lsr ; make middle star offset+4 from others + lsr + + adc FRAME ; look up bounce amount + and #$7 + tax + lda bounce,X + sta YPOS + + + ldx #7 ; draw 7 lines +boxloop: + txa + clc + adc YPOS + jsr GBASCALC ; calc address of line in X (Y-coord) + + ; GBASL is in A at this point + ; is C always 0? + +; clc + adc XPOS ; adjust to X-coord + sta GBASL + + ; adjust for proper page + + lda page_smc+1 ; want to add 0 or 4 (not 0 or 1) + asl + asl ; this sets C to 0 + adc GBASH + sta GBASH + + ;================= + ; draw line + + + ldy #7 ; 8-bits wide + lda bitmap,X ; get low bit of bitmap into carry +draw_line_loop: + lsr + + pha + + bcc its_transparent + + lda #$11 ; red + sta (GBASL),Y ; draw on screen +its_transparent: + + pla + + dey + bpl draw_line_loop + + dex + bpl boxloop + + lda XPOS ; move to next position + ; going right to left saves 2 bytes for cmp + sec + sbc #16 + + ; X is $FF here + ; Y is $FF here + ; A is -16 here + + bpl draw_star + bmi main_loop + + + + + + +;================= +; star bitmap +;================= + +;012|456| +; @ ; +; @@ ; +; @@@@@ ; +;@@@@@@@ ; +; @@@@@ ; +; @@@@@ ; +; @@ @@ ; +;@@ @@ ; + +;bitmap: +; .byte $10 +; .byte $18 +; .byte $1f +; .byte $fe +; .byte $7c +; .byte $3e +; .byte $66 +; .byte $C3 + +;012|456| +; @ @@ ; +;@@@ @@@@ ; +;@@@@@@@@ ; +;@@@@@@@@ ; +; @@@@@@@ ; +; @@@@@ ; +; @@@ ; +; @ ; + +bitmap: + .byte $46 + .byte $EF + .byte $FF + .byte $FF + .byte $7f + .byte $3e + .byte $1c + .byte $08 + +bounce: + .byte 10,11,12,13,13,12,11,10 + +