summaryrefslogtreecommitdiff
path: root/ROMs/logictest.c
blob: f2ef6d93a193ab45c3eebad815301a2985074fb9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include "std.c"
#include "screen.c"

int main()
{
    // Test values
    char a = 0b10101010;   // 170
    char b = 0b11001100;   // 204
    char c;

    // AND
    c = a & b;              // expect 0b10001000 = 136
    *((char*)0x7100) = c;

    // OR
    c = a | b;              // expect 0b11101110 = 238
    *((char*)0x7101) = c;

    // XOR
    c = a ^ b;              // expect 0b01100110 = 102
    *((char*)0x7102) = c;

    // NOT
    c = ~a;                 // expect 0b01010101 = 85
    *((char*)0x7103) = c;

    // SHL
    c = a << 2;             // expect 0b10101000 = 168
    *((char*)0x7104) = c;

    // SHR
    c = a >> 2;             // expect 0b00101010 = 42
    *((char*)0x7105) = c;

    // Program ends cleanly
    return 0;
}