From 9848a0d53cadc1bf40d9ea2c4ed88e5b019fdbc4 Mon Sep 17 00:00:00 2001 From: Vince Weaver Date: Sat, 28 Jan 2023 18:37:06 -0500 Subject: [PATCH] shape_table: more attempts at small --- graphics/hgr/shape_table/Makefile | 35 +++++++-- graphics/hgr/shape_table/cats16.s | 110 +++++++++++++++++++++++++++ graphics/hgr/shape_table/columns16.s | 45 +++++++++++ graphics/hgr/shape_table/herring16.s | 43 +---------- 4 files changed, 186 insertions(+), 47 deletions(-) create mode 100644 graphics/hgr/shape_table/cats16.s create mode 100644 graphics/hgr/shape_table/columns16.s diff --git a/graphics/hgr/shape_table/Makefile b/graphics/hgr/shape_table/Makefile index 753dc22a..d22226aa 100644 --- a/graphics/hgr/shape_table/Makefile +++ b/graphics/hgr/shape_table/Makefile @@ -10,7 +10,7 @@ all: shape_table.dsk shape_table.dsk: HELLO APPLE.BAS GEARS.BAS \ APPLE2 GEARS LINE32 PATTERN PATTERN_LOGO SQUARE_WAVE \ AGONY17 HERRING16 STRIPE17 COOL_WAVE TEETH32 TICK_TOCK \ - GEARS_TINY AGONY2 + GEARS_TINY WEAVE15 COLUMNS16 CATS16 cp $(EMPTYDISK) shape_table.dsk $(DOS33) -y shape_table.dsk SAVE A HELLO $(DOS33) -y shape_table.dsk SAVE A GEARS.BAS @@ -20,7 +20,7 @@ shape_table.dsk: HELLO APPLE.BAS GEARS.BAS \ $(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 AGONY17 - $(DOS33) -y shape_table.dsk BSAVE -a 0xe7 AGONY2 + $(DOS33) -y shape_table.dsk BSAVE -a 0xe7 WEAVE15 $(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 @@ -29,6 +29,8 @@ shape_table.dsk: HELLO APPLE.BAS GEARS.BAS \ $(DOS33) -y shape_table.dsk BSAVE -a 0xe7 COOL_WAVE $(DOS33) -y shape_table.dsk BSAVE -a 0xe7 TEETH32 $(DOS33) -y shape_table.dsk BSAVE -a 0xe7 TICK_TOCK + $(DOS33) -y shape_table.dsk BSAVE -a 0xe7 COLUMNS16 + $(DOS33) -y shape_table.dsk BSAVE -a 0xe7 CATS16 ### @@ -90,6 +92,23 @@ teeth32.o: teeth32.s ### +COLUMNS16: columns16.o + ld65 -o COLUMNS16 columns16.o -C $(LINKERSCRIPTS)/apple2_e7_zp.inc + +columns16.o: columns16.s + ca65 -o columns16.o columns16.s -l columns16.lst + +### + +CATS16: cats16.o + ld65 -o CATS16 cats16.o -C $(LINKERSCRIPTS)/apple2_e7_zp.inc + +cats16.o: cats16.s + ca65 -o cats16.o cats16.s -l cats16.lst + + +### + TICK_TOCK: tick_tock.o ld65 -o TICK_TOCK tick_tock.o -C $(LINKERSCRIPTS)/apple2_e7_zp.inc @@ -126,11 +145,11 @@ agony17.o: agony17.s ### -AGONY2: agony2.o - ld65 -o AGONY2 agony2.o -C $(LINKERSCRIPTS)/apple2_e7_zp.inc +WEAVE15: weave15.o + ld65 -o WEAVE15 weave15.o -C $(LINKERSCRIPTS)/apple2_e7_zp.inc -agony2.o: agony2.s - ca65 -o agony2.o agony2.s -l agony2.lst +weave15.o: weave15.s + ca65 -o weave15.o weave15.s -l weave15.lst ### @@ -173,4 +192,6 @@ pattern_logo.o: pattern_logo.s clean: rm -f *~ *.o *.lst HELLO GEAR.BAS GEARS PATTERN APPLE.BAS \ PATTERN_LOGO COOL_WAVE SQUARE_WAVE TEETH32 TICK_TOCK \ - HERRING16 STRIPE17 AGONY17 LINE32 APPLE2 GEARS_TINY AGONY2 + HERRING16 STRIPE17 AGONY17 LINE32 APPLE2 GEARS_TINY WEAVE15 \ + COLUMNS16 CATS16 + diff --git a/graphics/hgr/shape_table/cats16.s b/graphics/hgr/shape_table/cats16.s new file mode 100644 index 00000000..5ec9cb73 --- /dev/null +++ b/graphics/hgr/shape_table/cats16.s @@ -0,0 +1,110 @@ +; 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 + + + 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 top byte of shape address + +; ldy #$e8 +; ldx #$0e + +; tay + ldy #$00 ; uses the text window + ldx #$21 + + ; 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 diff --git a/graphics/hgr/shape_table/columns16.s b/graphics/hgr/shape_table/columns16.s new file mode 100644 index 00000000..9d4bc751 --- /dev/null +++ b/graphics/hgr/shape_table/columns16.s @@ -0,0 +1,45 @@ +; 16B looks like columns + +; zero page locations +HGR_SHAPE = $1A +HGR_SHAPE2 = $1B +GBASL = $26 +GBASH = $27 + +; ROM calls +HGR2 = $F3D8 +HGR = $F3E2 +HPOSN = $F411 +XDRAW0 = $F65D +XDRAW1 = $F661 + + + +tiny_xdraw: + + ; loads at E7 (HGR_SCALE) which is $20 (jsr instruction) + + jsr HGR2 ; Hi-res, full screen ; 3 + ; Y=0, A=0 after this call + + ; we really have to call this, otherwise it won't run + ; on some real hardware + + + 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 #$e3 + inx ; X is 1 + + 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 + diff --git a/graphics/hgr/shape_table/herring16.s b/graphics/hgr/shape_table/herring16.s index b23e89e4..393f39fa 100644 --- a/graphics/hgr/shape_table/herring16.s +++ b/graphics/hgr/shape_table/herring16.s @@ -3,35 +3,8 @@ ; FIXME: depends on memory init ; 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 @@ -42,32 +15,22 @@ XDRAW1 = $F661 RESTORE = $FF3F -tiny_xdraw: +herring: + + ; $E7 HGR_SCALE is $00 from memory not initialized 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 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 top byte of shape address - - ; ROT in A - ; this will be 0 2nd time through loop, arbitrary otherwise ; lda #1 ; ROT=1 jsr XDRAW0 ; XDRAW 1 AT X,Y