Ejemplo n.º 1
0
    def test_sza_zero(self):
        self.reg.ip = ADDR1
        self.alu.zero_flag = True
        self.instr.sza(memory.Address(0x00))

        addr2 = memory.Address(ADDR1.num + 2)
        self.assertEqual(self.reg.ip, addr2)
Ejemplo n.º 2
0
    def test_display_range(self):
        value = memory.Value(VALUE_0A_HEX)
        addr1 = memory.Address(ADDR_20_HEX - 1)
        addr2 = memory.Address(ADDR_20_HEX + 2)
        addr = memory.Address(ADDR_20_HEX)
        self.mem.write(addr, value)

        self.assertEqual(self.mem.display_range(addr1, addr2),
                         '0x1f 0x00\n0x20 0x0a\n0x21 0x00')
Ejemplo n.º 3
0
    def __init__(self):
        """Initialize the registers."""

        self.accum = memory.Value(0)
        self.ip = memory.Address(0)
        self.idx = memory.Address(0)

        self.run_flag = False
        self.zerox_flag = False
Ejemplo n.º 4
0
    def display_list(self, a_list, printable=False):
        """Display a list of address value tuple pairs."""

        start_num = a_list[0][0]
        end_num = a_list[-1][0] + 1

        start_addr = memory.Address(start_num)
        end_addr = memory.Address(end_num)

        return self.mem.display_range(start_addr, end_addr, printable)
Ejemplo n.º 5
0
    def test_read_index(self):
        value = memory.Value(0x0a)
        addr = memory.Address(0x10)
        addr_idx = memory.Address(0x20)
        index_val = memory.Value(0x10)
        self.mem_if.write(addr_idx, value)

        read_value = self.mem_if.read(addr, index=index_val)

        self.assertEqual(read_value, value)
Ejemplo n.º 6
0
    def test_szx_zero(self):
        self.reg.ip = ADDR1
        self.reg.zerox_flag = True
        self.instr.szx(ZERO)

        addr2 = memory.Address(ADDR1.num + 2)
        self.assertEqual(self.reg.ip, addr2)
Ejemplo n.º 7
0
    def test_fetch_execute(self):
        fake_obj = FakeInstruction()
        self.decoder.op_codes[0x01] = fake_obj.instr

        # The op code.
        self.mem.write(memory.Address(0x10), memory.Value(0x01))

        # The addr argument.
        self.mem.write(memory.Address(0x11), memory.Value(0x22))

        self.reg.ip = memory.Address(0x10)

        self.decoder.fetch_execute()

        self.assertEqual(self.reg.ip, memory.Address(0x12))
        self.assertEqual(fake_obj.addr, memory.Address(0x22))
Ejemplo n.º 8
0
    def test_read_neg(self):
        value = memory.Value(-VALUE_0A_HEX)
        addr = memory.Address(ADDR_20_HEX)
        self.mem.write(addr, value)

        value_expected = memory.Value(-VALUE_0A_HEX)
        self.assertEqual(self.mem.read(addr), value_expected)
Ejemplo n.º 9
0
 def setUp(self):
     self.addr = memory.Address(VALUE_0A_HEX)
Ejemplo n.º 10
0
 def test_read_zero_value(self):
     addr = memory.Address(ADDR_20_HEX)
     value = memory.Value(0)
     self.assertEqual(self.mem.read(addr), value)
Ejemplo n.º 11
0
    def test_sza_not_zero(self):
        self.reg.ip = ADDR1
        self.alu.zero_flag = False
        self.instr.sza(memory.Address(0x00))

        self.assertEqual(self.reg.ip, ADDR1)
Ejemplo n.º 12
0
 def test_write_value(self):
     value = memory.Value(0x0a)
     addr = memory.Address(0x20)
     self.mem_if.write(addr, value)
     self.assertEqual(self.mem_if.read(addr), value)
Ejemplo n.º 13
0
 def test_read_zero_value(self):
     addr = memory.Address(0x20)
     value = memory.Value(0)
     self.assertEqual(self.mem_if.read(addr), value)
Ejemplo n.º 14
0
#!/usr/bin/env python3
# coding: utf-8
# © 2018 by Ken Guyton.  All rights reserved.
"""Test the instruction decoder."""

import unittest
import cpu
import decoder
import memory

ADDR1 = memory.Address(0x10)
ADDR2 = memory.Address(0x20)

INDEX = memory.Value(0x05)
ADDR_IDX_1 = memory.Address(0x15)
ADDR_IDX_2 = memory.Address(0x25)

ZERO = memory.Value(0)
ONE = memory.Value(1)
VAL1 = memory.Value(2)
VAL2 = memory.Value(3)


class TestInstructions(unittest.TestCase):
    def setUp(self):
        self.reg = cpu.Registers()
        self.mem = memory.Memory()
        self.alu = cpu.ArithmeticLogicUnit()
        self.mem_if = decoder.MemoryInterface(self.mem)

        self.instr = decoder.Instructions(reg=self.reg,
Ejemplo n.º 15
0
 def test_inc(self):
     self.assertEqual(self.addr.inc(), memory.Address(VALUE_0A_HEX + 1))
Ejemplo n.º 16
0
#!/usr/bin/env python3
# coding: utf-8
# © 2018 by Ken Guyton.  All rights reserved.
"""Test the CPU."""

import unittest
import cpu
import decoder
import memory

VALUE_0A_HEX = 0x0a
ADDR_20_HEX = 0x20
SIZE = 255

ZERO_ADDR = memory.Address(0)
ZERO_VAL = memory.Value(0)


class TestRegisters(unittest.TestCase):
    def setUp(self):
        self.reg = cpu.Registers()

    def test_create(self):
        self.assertTrue(self.reg is not None)

    def test_values(self):
        self.assertEqual(self.reg.accum, ZERO_VAL)
        self.assertEqual(self.reg.idx, ZERO_VAL)
        self.assertEqual(self.reg.ip, ZERO_ADDR)

        self.assertFalse(self.reg.run_flag)
Ejemplo n.º 17
0
 def test_write_value(self):
     value = memory.Value(VALUE_0A_HEX)
     addr = memory.Address(ADDR_20_HEX)
     self.mem.write(addr, value)
     self.assertEqual(self.mem.read(addr), value)
Ejemplo n.º 18
0
    def test_display_addr_printable(self):
        value = memory.Value(0x43)
        addr = memory.Address(ADDR_20_HEX)
        self.mem.write(addr, value)

        self.assertEqual(self.mem.display_printable(addr), '0x20 0x43  C')
Ejemplo n.º 19
0
    def test_display_addr_not_printable(self):
        value = memory.Value(VALUE_0A_HEX)
        addr = memory.Address(ADDR_20_HEX)
        self.mem.write(addr, value)

        self.assertEqual(self.mem.display_printable(addr), '0x20 0x0a   ')