From 984230e8fa4c5f6cd7ea7c37106a76ae3e23b86e Mon Sep 17 00:00:00 2001 From: Irmen de Jong Date: Fri, 15 Nov 2024 02:05:12 +0100 Subject: [PATCH] removed txt.VERA_TEXTMATRIX_BANK/VERA_TEXTMATRIX_ADDR it's now just txt.VERA_TEXTMATRIX (long const) --- compiler/res/prog8lib/cx16/textio.p8 | 60 +++++++++---------- .../prog8/ast/expressions/AstExpressions.kt | 2 +- examples/cx16/balloonflight.p8 | 2 +- examples/cx16/sprites/dragon.p8 | 10 ++-- examples/cx16/sprites/dragons.p8 | 10 ++-- 5 files changed, 39 insertions(+), 45 deletions(-) diff --git a/compiler/res/prog8lib/cx16/textio.p8 b/compiler/res/prog8lib/cx16/textio.p8 index c5d66eb5b..95e40df6d 100644 --- a/compiler/res/prog8lib/cx16/textio.p8 +++ b/compiler/res/prog8lib/cx16/textio.p8 @@ -12,9 +12,7 @@ txt { const ubyte DEFAULT_WIDTH = 80 const ubyte DEFAULT_HEIGHT = 60 - -const ubyte VERA_TEXTMATRIX_BANK = 1 -const uword VERA_TEXTMATRIX_ADDR = $b000 +const long VERA_TEXTMATRIX = $1b000 extsub $FFD2 = chrout(ubyte character @ A) ; for consistency. You can also use cbm.CHROUT directly ofcourse. Note: takes a PETSCII encoded character. @@ -131,10 +129,10 @@ _ly ldy #1 ; modified set_vera_textmatrix_addresses: stz cx16.VERA_CTRL - ora #VERA_TEXTMATRIX_BANK + ora #VERA_TEXTMATRIX>>16 sta cx16.VERA_ADDR_H stz cx16.VERA_ADDR_L ; start at (0,0) - lda #>VERA_TEXTMATRIX_ADDR + lda #>VERA_TEXTMATRIX sta cx16.VERA_ADDR_M rts @@ -280,18 +278,18 @@ asmsub scroll_left() clobbers(A, X, Y) { _nextline stz cx16.VERA_CTRL ; data port 0: source column - lda #%00010000 | VERA_TEXTMATRIX_BANK ; auto increment 1 + lda #%00010000 | VERA_TEXTMATRIX>>16 ; auto increment 1 sta cx16.VERA_ADDR_H lda #2 sta cx16.VERA_ADDR_L ; begin in column 1 lda P8ZP_SCRATCH_B1 clc - adc #>VERA_TEXTMATRIX_ADDR + adc #>VERA_TEXTMATRIX tay sty cx16.VERA_ADDR_M lda #1 sta cx16.VERA_CTRL ; data port 1: destination column - lda #%00010000 | VERA_TEXTMATRIX_BANK ; auto increment 1 + lda #%00010000 | VERA_TEXTMATRIX>>16 ; auto increment 1 sta cx16.VERA_ADDR_H stz cx16.VERA_ADDR_L sty cx16.VERA_ADDR_M @@ -331,18 +329,18 @@ asmsub scroll_right() clobbers(A,X,Y) { _nextline stz cx16.VERA_CTRL ; data port 0: source column - lda #%00011000 | VERA_TEXTMATRIX_BANK ; auto decrement 1 + lda #%00011000 | VERA_TEXTMATRIX>>16 ; auto decrement 1 sta cx16.VERA_ADDR_H _rcol lda #79*2-1 ; modified sta cx16.VERA_ADDR_L ; begin in rightmost column minus one lda P8ZP_SCRATCH_B1 clc - adc #>VERA_TEXTMATRIX_ADDR + adc #>VERA_TEXTMATRIX tay sty cx16.VERA_ADDR_M lda #1 sta cx16.VERA_CTRL ; data port 1: destination column - lda #%00011000 | VERA_TEXTMATRIX_BANK ; auto decrement 1 + lda #%00011000 | VERA_TEXTMATRIX>>16 ; auto decrement 1 sta cx16.VERA_ADDR_H _rcol2 lda #79*2+1 ; modified sta cx16.VERA_ADDR_L @@ -373,18 +371,18 @@ asmsub scroll_up() clobbers(A, X, Y) { dey sty P8ZP_SCRATCH_B1 stz cx16.VERA_CTRL ; data port 0 is source - lda #1 | (>VERA_TEXTMATRIX_ADDR) + lda #1 | (>VERA_TEXTMATRIX) sta cx16.VERA_ADDR_M ; start at second line stz cx16.VERA_ADDR_L - lda #%00010000 | VERA_TEXTMATRIX_BANK + lda #%00010000 | VERA_TEXTMATRIX>>16 sta cx16.VERA_ADDR_H ; enable auto increment by 1, bank 0. lda #1 sta cx16.VERA_CTRL ; data port 1 is destination - lda #>VERA_TEXTMATRIX_ADDR + lda #>VERA_TEXTMATRIX sta cx16.VERA_ADDR_M ; start at top line stz cx16.VERA_ADDR_L - lda #%00010000 | VERA_TEXTMATRIX_BANK + lda #%00010000 | VERA_TEXTMATRIX>>16 sta cx16.VERA_ADDR_H ; enable auto increment by 1, bank 0. _nextline @@ -424,10 +422,10 @@ asmsub scroll_down() clobbers(A, X, Y) { dey tya clc - adc #>VERA_TEXTMATRIX_ADDR + adc #>VERA_TEXTMATRIX sta cx16.VERA_ADDR_M ; start at line before bottom line stz cx16.VERA_ADDR_L - lda #%00010000 | VERA_TEXTMATRIX_BANK + lda #%00010000 | VERA_TEXTMATRIX>>16 sta cx16.VERA_ADDR_H ; enable auto increment by 1, bank 0. lda #1 @@ -435,10 +433,10 @@ asmsub scroll_down() clobbers(A, X, Y) { iny tya clc - adc #>VERA_TEXTMATRIX_ADDR + adc #>VERA_TEXTMATRIX sta cx16.VERA_ADDR_M ; start at bottom line stz cx16.VERA_ADDR_L - lda #%00010000 | VERA_TEXTMATRIX_BANK + lda #%00010000 | VERA_TEXTMATRIX>>16 sta cx16.VERA_ADDR_H ; enable auto increment by 1, bank 0. _nextline @@ -471,14 +469,14 @@ asmsub setchr (ubyte col @X, ubyte row @Y, ubyte character @A) clobbers(A) { %asm {{ pha stz cx16.VERA_CTRL - lda #VERA_TEXTMATRIX_BANK + lda #VERA_TEXTMATRIX>>16 sta cx16.VERA_ADDR_H txa asl a sta cx16.VERA_ADDR_L tya ; clc - adc #>VERA_TEXTMATRIX_ADDR + adc #>VERA_TEXTMATRIX sta cx16.VERA_ADDR_M pla sta cx16.VERA_DATA0 @@ -492,13 +490,13 @@ asmsub getchr (ubyte col @A, ubyte row @Y) -> ubyte @ A { asl a pha stz cx16.VERA_CTRL - lda #VERA_TEXTMATRIX_BANK + lda #VERA_TEXTMATRIX>>16 sta cx16.VERA_ADDR_H pla sta cx16.VERA_ADDR_L tya ; clc - adc #>VERA_TEXTMATRIX_ADDR + adc #>VERA_TEXTMATRIX sta cx16.VERA_ADDR_M lda cx16.VERA_DATA0 rts @@ -512,7 +510,7 @@ asmsub setclr (ubyte col @X, ubyte row @Y, ubyte color @A) clobbers(A) { %asm {{ pha stz cx16.VERA_CTRL - lda #VERA_TEXTMATRIX_BANK + lda #VERA_TEXTMATRIX>>16 sta cx16.VERA_ADDR_H txa asl a @@ -520,7 +518,7 @@ asmsub setclr (ubyte col @X, ubyte row @Y, ubyte color @A) clobbers(A) { sta cx16.VERA_ADDR_L tya ; clc - adc #>VERA_TEXTMATRIX_ADDR + adc #>VERA_TEXTMATRIX sta cx16.VERA_ADDR_M pla sta cx16.VERA_DATA0 @@ -535,13 +533,13 @@ asmsub getclr (ubyte col @A, ubyte row @Y) -> ubyte @ A { ina pha stz cx16.VERA_CTRL - lda #VERA_TEXTMATRIX_BANK + lda #VERA_TEXTMATRIX>>16 sta cx16.VERA_ADDR_H pla sta cx16.VERA_ADDR_L tya ; clc - adc #>VERA_TEXTMATRIX_ADDR + adc #>VERA_TEXTMATRIX sta cx16.VERA_ADDR_M lda cx16.VERA_DATA0 rts @@ -558,12 +556,12 @@ sub setcc (ubyte col, ubyte row, ubyte character, ubyte charcolor) { tax ldy row stz cx16.VERA_CTRL - lda #VERA_TEXTMATRIX_BANK + lda #VERA_TEXTMATRIX>>16 sta cx16.VERA_ADDR_H stx cx16.VERA_ADDR_L tya ;clc - adc #>VERA_TEXTMATRIX_ADDR + adc #>VERA_TEXTMATRIX sta cx16.VERA_ADDR_M lda character sta cx16.VERA_DATA0 @@ -589,12 +587,12 @@ sub setcc2 (ubyte col, ubyte row, ubyte character, ubyte colors) { tax ldy row stz cx16.VERA_CTRL - lda #VERA_TEXTMATRIX_BANK + lda #VERA_TEXTMATRIX>>16 sta cx16.VERA_ADDR_H stx cx16.VERA_ADDR_L tya ; clc - adc #>VERA_TEXTMATRIX_ADDR + adc #>VERA_TEXTMATRIX sta cx16.VERA_ADDR_M lda character sta cx16.VERA_DATA0 diff --git a/compilerAst/src/prog8/ast/expressions/AstExpressions.kt b/compilerAst/src/prog8/ast/expressions/AstExpressions.kt index c907cf75a..fe8568abc 100644 --- a/compilerAst/src/prog8/ast/expressions/AstExpressions.kt +++ b/compilerAst/src/prog8/ast/expressions/AstExpressions.kt @@ -737,7 +737,7 @@ class NumericLiteral(val type: DataType, // only numerical types allowed throw FatalAstException("type cast of weird type $type") } } - return ValueAfterCast(false, "no cast available from $type to $targettype", null) + return ValueAfterCast(false, "no cast available from $type to $targettype number=$number", null) } fun convertTypeKeepValue(targetDt: DataType): ValueAfterCast { diff --git a/examples/cx16/balloonflight.p8 b/examples/cx16/balloonflight.p8 index 3e5f9a270..43d45e341 100644 --- a/examples/cx16/balloonflight.p8 +++ b/examples/cx16/balloonflight.p8 @@ -18,7 +18,7 @@ main { word balloon_y = 120 ; clear the screen (including all the tiles outside of the visible area) - cx16.vaddr(txt.VERA_TEXTMATRIX_BANK, txt.VERA_TEXTMATRIX_ADDR, 0, 1) + cx16.vaddr(txt.VERA_TEXTMATRIX>>16, txt.VERA_TEXTMATRIX & $ffff, 0, 1) repeat 128 * txt.DEFAULT_HEIGHT { cx16.VERA_DATA0 = sc:' ' cx16.VERA_DATA0 = $00 diff --git a/examples/cx16/sprites/dragon.p8 b/examples/cx16/sprites/dragon.p8 index b43106e96..9edf89a6e 100644 --- a/examples/cx16/sprites/dragon.p8 +++ b/examples/cx16/sprites/dragon.p8 @@ -8,9 +8,7 @@ ; an example that displays and moves a single dragon (actually 2 sprites). main { - ; we choose arbitrary unused vram location for sprite data: $12000 - const ubyte SPRITE_DATA_BANK = 1 - const uword SPRITE_DATA_ADDR = $2000 + const long SPRITE_DATA = $12000 const ubyte SPRITE_PALETTE_OFFSET = 1 ; sprite palette at color index 16 sub start() { @@ -18,12 +16,12 @@ main { txt.print("there be dragons!") ; load the sprite data and color palette directly into Vera ram - void diskio.vload_raw("dragonsprite.bin", SPRITE_DATA_BANK, SPRITE_DATA_ADDR) + void diskio.vload_raw("dragonsprite.bin", SPRITE_DATA>>16, SPRITE_DATA & $ffff) void diskio.vload_raw("dragonsprite.pal", 1, $fa00 + SPRITE_PALETTE_OFFSET*16*2) ; initialize the dragon sprites - sprites.init(1, SPRITE_DATA_BANK, SPRITE_DATA_ADDR, sprites.SIZE_64, sprites.SIZE_64, sprites.COLORS_16, SPRITE_PALETTE_OFFSET) - sprites.init(2, SPRITE_DATA_BANK, SPRITE_DATA_ADDR + 64*64/2, sprites.SIZE_64, sprites.SIZE_64, sprites.COLORS_16,SPRITE_PALETTE_OFFSET) + sprites.init(1, SPRITE_DATA>>16, SPRITE_DATA & $ffff, sprites.SIZE_64, sprites.SIZE_64, sprites.COLORS_16, SPRITE_PALETTE_OFFSET) + sprites.init(2, SPRITE_DATA>>16, (SPRITE_DATA & $ffff) + 64*64/2, sprites.SIZE_64, sprites.SIZE_64, sprites.COLORS_16,SPRITE_PALETTE_OFFSET) ubyte tt = 0 word xpos = -64 diff --git a/examples/cx16/sprites/dragons.p8 b/examples/cx16/sprites/dragons.p8 index 94f6955ce..79f0044c6 100644 --- a/examples/cx16/sprites/dragons.p8 +++ b/examples/cx16/sprites/dragons.p8 @@ -8,9 +8,7 @@ ; an example that displays and then moves many sprites at once. main { - ; we choose arbitrary unused vram location for sprite data: $12000 - const ubyte SPRITE_DATA_BANK = 1 - const uword SPRITE_DATA_ADDR = $2000 + const long SPRITE_DATA = $12000 const ubyte SPRITE_PALETTE_OFFSET = 1 ; sprite palette at color index 16 const ubyte NUM_DRAGONS = 25 @@ -22,14 +20,14 @@ main { txt.print("there be many dragons!") ; load the sprite data and color palette directly into Vera ram - void diskio.vload_raw("dragonsprite.bin", SPRITE_DATA_BANK, SPRITE_DATA_ADDR) + void diskio.vload_raw("dragonsprite.bin", SPRITE_DATA>>16, SPRITE_DATA & $ffff) void diskio.vload_raw("dragonsprite.pal", 1, $fa00 + SPRITE_PALETTE_OFFSET*16*2) ; initialize the dragon sprites (every dragon needs 2 sprites, top and bottom half) ubyte sprite_num for sprite_num in 0 to NUM_DRAGONS*2-2 step 2 { - sprites.init(sprite_num+1, SPRITE_DATA_BANK, SPRITE_DATA_ADDR, sprites.SIZE_64, sprites.SIZE_64, sprites.COLORS_16, SPRITE_PALETTE_OFFSET) - sprites.init(sprite_num+2, SPRITE_DATA_BANK, SPRITE_DATA_ADDR + 64*64/2, sprites.SIZE_64, sprites.SIZE_64, sprites.COLORS_16, SPRITE_PALETTE_OFFSET) + sprites.init(sprite_num+1, SPRITE_DATA>>16, SPRITE_DATA & $ffff, sprites.SIZE_64, sprites.SIZE_64, sprites.COLORS_16, SPRITE_PALETTE_OFFSET) + sprites.init(sprite_num+2, SPRITE_DATA>>16, (SPRITE_DATA & $ffff) + 64*64/2, sprites.SIZE_64, sprites.SIZE_64, sprites.COLORS_16, SPRITE_PALETTE_OFFSET) xpositions[sprite_num] = math.rndw() % (640-64) as word xpositions[sprite_num+1] = xpositions[sprite_num]