use c64_assembler::{
generator::{Generator, ProgramGenerator},
validator::AssemblerResult,
};
use c64_assembler_macro::application;
use mos6502::{
cpu::CPU,
instruction::Nmos6502,
memory::{Bus, Memory},
};
#[test]
fn set_black_border() -> AssemblerResult<()> {
let application = application!(
name="Set black border"
include_vic2_defines
module!(
name="main"
instructions!(
main_entry_point:
"Load black color into accumulator"
lda #$00
sta VIC2_BORDER_COLOR
rts
)
)
)?;
let bytes = ProgramGenerator::default().generate(application)?;
let mut cpu = CPU::new(Memory::new(), Nmos6502);
cpu.memory.set_bytes(0x0800, &bytes[2..]);
cpu.memory.set_byte(0xd020, 0xFF);
cpu.registers.program_counter = 0x0800;
cpu.single_step();
assert_eq!(0xFF, cpu.memory.get_byte(0xd020));
cpu.single_step();
assert_eq!(0x00, cpu.memory.get_byte(0xd020));
cpu.single_step();
Ok(())
}