Annotation of nono/m680x0/testop.cpp, revision 1.1

1.1     ! root        1: //
        !             2: // nono
        !             3: // Copyright (C) 2017 [email protected]
        !             4: //
        !             5: 
        !             6: #include "header.h"
        !             7: #include "m68030core.h"
        !             8: #include "bus.h"
        !             9: 
        !            10: #define OP_PROTO(name) extern void __CONCAT(op_,name)(m68kcpu *cpu)
        !            11: 
        !            12: #include "m68030ops.h"
        !            13: 
        !            14: uint8 mem[32];
        !            15: uint32 pc;
        !            16: 
        !            17: void
        !            18: set_8(uint32 addr, uint32 data)
        !            19: {
        !            20:        mem[HLB(addr)] = data;
        !            21: }
        !            22: 
        !            23: void
        !            24: set_16(uint32 addr, uint32 data)
        !            25: {
        !            26:        *(uint16 *)&mem[HLW(addr)] = data;
        !            27: }
        !            28: 
        !            29: void
        !            30: set_32(uint32 addr, uint32 data)
        !            31: {
        !            32:        *(uint32 *)&mem[addr] = data;
        !            33: }
        !            34: 
        !            35: uint32
        !            36: m68030_phys_read_8(uint32 addr)
        !            37: {
        !            38:        return mem[HLB(addr)];
        !            39: }
        !            40: 
        !            41: uint32
        !            42: m68030_phys_read_16(uint32 addr)
        !            43: {
        !            44:        return *(uint16 *)&mem[HLW(addr)];
        !            45: }
        !            46: 
        !            47: uint32
        !            48: m68030_phys_read_32(uint32 addr)
        !            49: {
        !            50:        return *(uint32 *)&mem[addr];
        !            51: }
        !            52: 
        !            53: void
        !            54: m68030_phys_write_8(uint32 addr, uint32 data)
        !            55: {
        !            56: }
        !            57: 
        !            58: void
        !            59: m68030_phys_write_16(uint32 addr, uint32 data)
        !            60: {
        !            61: }
        !            62: 
        !            63: void
        !            64: m68030_phys_write_32(uint32 addr, uint32 data)
        !            65: {
        !            66: }
        !            67: 
        !            68: // バイトデータ
        !            69: uint8 data_8[] = {
        !            70:        0x00,
        !            71:        0x01,
        !            72:        0x55,
        !            73:        0x7f,
        !            74:        0x80,
        !            75:        0xaa,
        !            76:        0xff,
        !            77: };
        !            78: // ワードデータ
        !            79: uint16 data_16[] = {
        !            80:        0x0000,
        !            81:        0x0001,
        !            82:        0x007f,
        !            83:        0x0080,
        !            84:        0x00ff,
        !            85:        0x5555,
        !            86:        0x7fff,
        !            87:        0x8000,
        !            88:        0xaaaa,
        !            89:        0xfffe,
        !            90:        0xffff,
        !            91: };
        !            92: // ロングデータ
        !            93: uint32 data_32[] = {
        !            94:        0x00000000,
        !            95:        0x00000001,
        !            96:        0x0000007f,
        !            97:        0x00000080,
        !            98:        0x000000ff,
        !            99:        0x00007fff,
        !           100:        0x00008000,
        !           101:        0x0000ffff,
        !           102:        0x55555555,
        !           103:        0x7fffffff,
        !           104:        0x80000000,
        !           105:        0xaaaaaaaa,
        !           106:        0xffffffff,
        !           107: };
        !           108: 
        !           109: //
        !           110: //
        !           111: //
        !           112: 
        !           113: m68kcpu *cpu;
        !           114: 
        !           115: void
        !           116: Init()
        !           117: {
        !           118:        cpu->prev = cpu->reg;
        !           119:        RegA(0) = 0x10;
        !           120:        RegPC = 0;
        !           121: }
        !           122: 
        !           123: #define Test(expr)     do {    \
        !           124:        if (!(expr))    \
        !           125:                printf(#expr " failed at %d\n", __LINE__);      \
        !           126: } while (0)
        !           127: 
        !           128: 
        !           129: //
        !           130: //
        !           131: //
        !           132: void
        !           133: test_ori_b()
        !           134: {
        !           135:        // ORI.B #<data>,D0
        !           136:        int x = 0;
        !           137:        for (int i = 0; i < countof(data_8); i++) {
        !           138:                for (int j = 0; j < countof(data_32); i++) {
        !           139:                        set_16(0, data_8[i]);
        !           140:                        RegD(0) = data_32[j];
        !           141:                        Init();
        !           142:                        op_ori_b(cpu);
        !           143:                        Test(RegD(0) == (data_32[j] | (data_32[i] & 0xff)));
        !           144:                        Test(ccr.IsX() == cpu->prev.ccr.IsX());
        !           145:                        Test(ccr.IsN() == (((data_32[j] | data_32[i]) & 0x80) != 0));
        !           146:                        Test(ccr.IsZ() == (((data_32[j] | data_32[i]) & 0xff) == 0));
        !           147:                        Test(ccr.IsV() == 0);
        !           148:                        Test(ccr.IsC() == 0);
        !           149:                }
        !           150:        }
        !           151: }
        !           152: 
        !           153: int
        !           154: main(int ac, char *av[])
        !           155: {
        !           156:        cpu = (m68kcpu *)malloc(sizeof(*cpu));
        !           157:        memset(&cpu, 0, sizeof(cpu));
        !           158: 
        !           159:        test_ori_b();
        !           160: 
        !           161:        return 0;
        !           162: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.