Skip to content

Commit

Permalink
Add convenience macros.
Browse files Browse the repository at this point in the history
  • Loading branch information
dillof committed Aug 3, 2024
1 parent 106ccc1 commit b5e08a3
Show file tree
Hide file tree
Showing 5 changed files with 72 additions and 2 deletions.
35 changes: 34 additions & 1 deletion share/lib/c64.s
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
.target "6502"
.cpu "6502" ; XLR8

.visibility public

DEVICE_NUMBER = $BA

COLOR_BLACK = 0
COLOR_WHITE = 1
COLOR_RED = 2
Expand Down Expand Up @@ -39,7 +42,7 @@ VIC_SPRITE_7_Y = VIC + $0f
VIC_SPRITE_X_MSB = VIC + $10
VIC_CONTROL_1 = VIC + $11
VIC_SCROLL_MASK = $7
VIC_SCROLL(x) = (x & VIC_SCROLL_MASK)
VIC_SCROLL(xx) = (xx & VIC_SCROLL_MASK)
VIC_SCREEN_HEIGHT = $8
VIC_SCREEN_HEIGHT_25 = VIC_SCREEN_HEIGHT
VIC_SCREEN_HEIGHT_24 = $0
Expand Down Expand Up @@ -152,3 +155,33 @@ CIA2_SERIAL_DATA = CIA2 + $0c
CIA2_INTERRUPT = CIA2 + $0d
CIA2_TIMER_A_CONTROL = CIA2 + $0e
CIA2_TIMER_B_CONTROL = CIA2 + $0f

.pre_if !.defined(MEGA65)
.macro set_vic_bank base_address {
lda CIA2_PRA ; switch VIC bank
.if (base_address >> 14) ^ 3 != 3 {
and #$fc
}
.if (base_address >> 14) ^ 3 != 0 {
ora #(base_address >> 14) ^ 3
}
sta CIA2_PRA
}

.macro set_vic_text screen, charset {
lda #VIC_VIDEO_ADDRESS(screen, charset)
sta VIC_VIDEO_ADDRESS
}
.pre_end

.macro set_vic_24_lines {
lda VIC_CONTROL_1
and #$08 ^ $ff
sta VIC_CONTROL_1
}

.macro set_vic_25_lines {
lda VIC_CONTROL_1
ora #$08
sta VIC_CONTROL_1
}
16 changes: 16 additions & 0 deletions share/lib/mega65.s
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
.define MEGA65

.include "c64.s"

VIC_KEY = VIC + $2F
Expand Down Expand Up @@ -41,3 +43,17 @@ VIC_CHARSET_PTR = VIC_CHARSET_POINTER

VIC_KNOCK_IV_1 = $47
VIC_KNOCK_IV_2 = $53

.macro set_vic_bank {
}

.macro set_vic_text screen, charset {
lda #<screen
sta VIC_SCREEN_POINTER
lda #>screen
sta VIC_SCREEN_POINTER + 1
lda #<charset
sta VIC_CHARSET_POINTER
lda #>charset
sta VIC_CHARSET_POINTER + 1
}
5 changes: 5 additions & 0 deletions share/lib/pet.s
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
.target "6502"

.visibility public

DEVICE_NUMBER = $D4
8 changes: 8 additions & 0 deletions share/lib/plus4.s
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
.target "6502"
.cpu "6502" ; XLR8

.visibility public

DEVICE_NUMBER = $AE

ACIA = $fd00
ACIA_DATA = ACIA
ACIA_STATUS = ACIA + $1
Expand Down Expand Up @@ -109,3 +112,8 @@ TED_CONTROL_5 = TED + $1f
TED_CONTROL_5_FLASH(n) = (n << 3) & TED_FLASH_MASK
TED_PAGE_ROM = TED + $3e
TED_PAGE_RAM = TED + $3f

.macro set_ted_charset charset {
lda #TED_CHARACTER_ADDRESS(charset)
sta TED_CONTROL_4
}
10 changes: 9 additions & 1 deletion share/lib/vic20.s
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
.target "6502"
.cpu "6502" ; XLR8

.visibility public

DEVICE_NUMBER = $BA

VIC = $9000
VIC_CONTROL_1 = VIC
VIC_HORIZONTAL_ORIGIN_MASK = $7f
Expand All @@ -23,7 +26,7 @@ VIC_CONTROL_3 = VIC + $3
VIC_RASTER_BIT_8 = $80
VIC_RASTER = VIC + $4
VIC_ADDRESS = VIC + $5
VIC_ADDRESS(screen, charset) = ((screen & $7800) >> (11 - 4)) | ((charset & $f000) >> 12)
VIC_ADDRESS(screen, charset) = (((screen & $8000) ^ $8000) >> 8) | ((screen & $1c00) >> 6) | (((charset & $8000) ^ $8000) >> 12) | ((charset & $1c00) >> 10)
VIC_LIGHT_PEN_X = VIC + $6
VIC_LIGHT_PEN_Y = VIC + $7
VIC_POT_X = VIC + $8
Expand Down Expand Up @@ -109,3 +112,8 @@ VIA2_CONTROL_2 = VIA2 + $c
VIA2_INTERRUPT_REQUEST = VIA2 + $d
VIA2_INTERRUPT_MASK = VIA2 + $e
VIA2_PRA_RAW = VIA2 + $f

.macro set_vic_text screen, charset {
lda #VIC_ADDRESS(screen, charset)
sta VIC_ADDRESS
}

0 comments on commit b5e08a3

Please sign in to comment.