1
0
mirror of https://gitlab.com/camelot/kickc.git synced 2025-08-07 22:25:13 +00:00
Files
kickc/src/test/kc/processor-port-test-writethrough.kc
2020-04-10 01:10:18 +02:00

56 lines
1.3 KiB
C

// Test the write through to RAM when writing to VIC/CIA/colorram
#include <c64>
#include <print>
void main() {
// Avoid interrupts
asm { sei }
// Setup DDR-register
*PROCPORT_DDR = PROCPORT_DDR_MEMORY_MASK;
print_cls();
print_str("testing ram write through on i/o");
print_ln();
print_ln();
print_str("name address writethrough");
print_ln();
testWritethrough("vic ", 0xd000);
testWritethrough("sid ", 0xd400);
testWritethrough("cia ", 0xd800);
testWritethrough("color", 0xdc00);
// Enable interrupts
asm { cli }
// Return to normal settings
*PROCPORT = PROCPORT_BASIC_KERNEL_IO;
}
void testWritethrough(char* name, char* address) {
// Test the write-through
const char RAM_VALUE = 0x55;
const char IO_VALUE = 0xaa;
// Write known value to RAM
*PROCPORT = PROCPORT_RAM_ALL;
*address = RAM_VALUE;
// Write another value to I/O
*PROCPORT = PROCPORT_RAM_IO;
*address = IO_VALUE;
// Read value from RAM
*PROCPORT = PROCPORT_RAM_ALL;
char ramValue = *address;
print_str(name);
print_str(" ");
print_word((unsigned int)address);
print_str(" ");
if(ramValue==IO_VALUE)
print_str("yes");
else
print_str("no");
print_ln();
}