#if not(CBM_VIC)
#warn vic20_hardware module should be only used on VIC-20-compatible targets
#endif

volatile byte vic_raster @$9004
byte vic_freq1  @$900a
byte vic_freq2  @$900b
byte vic_freq3  @$900c
byte vic_volume @$900e
byte vic_colors @$900f

macro void set_volume(byte volume) {
    vic_volume &= $f0
    vic_volume |= volume & $f
}

macro void set_bg_color(byte color) {
    vic_colors &= $f
    vic_colors |= color << 4
}

macro void set_border(byte color) {
    vic_colors &= $f8
    vic_colors |= color & 7
}

const byte black = 0
const byte white = 1
const byte red = 2
const byte cyan = 3
const byte purple = 4
const byte green  = 5
const byte blue = 6
const byte yellow = 7
const byte orange = 8
const byte light_orange = 9
const byte light_red = 10
const byte light_cyan = 11
const byte light_purple = 12
const byte light_green = 13
const byte light_blue = 14
const byte light_yellow = 15
