1
0

DTC and SCI improvements

This commit is contained in:
Aiden
2026-05-25 14:22:32 +10:00
parent 62d1c3c876
commit 80819448cf
21 changed files with 13823 additions and 86 deletions

View File

@@ -0,0 +1,50 @@
import unittest
from h8536.decoder import H8536Decoder
from h8536.rom import Rom
def decode(data: list[int]):
return H8536Decoder(Rom(bytes(data), base=0)).decode(0)
def mov_b_immediate_to_abs16(address: int, value: int):
return decode([0x15, (address >> 8) & 0xFF, address & 0xFF, 0x06, value])
def bit_op_abs16(address: int, op: int):
return decode([0x15, (address >> 8) & 0xFF, address & 0xFF, op])
class InterruptAnnotationTest(unittest.TestCase):
def test_ipra_write_decodes_irq_priority_levels(self):
instruction = mov_b_immediate_to_abs16(0xFF00, 0x75)
self.assertEqual(instruction.text, "MOV:G.B #H'75, @IPRA")
self.assertEqual(instruction.comment, "IPRA = H'75 (irq0 priority=7; irq1 priority=5)")
def test_iprf_write_decodes_ad_priority_and_reserved_bits(self):
instruction = mov_b_immediate_to_abs16(0xFF05, 0xF8)
self.assertEqual(instruction.text, "MOV:G.B #H'F8, @IPRF")
self.assertEqual(instruction.comment, "IPRF = H'F8 (A/D priority=7; reserved bits 7, 3 should be 0)")
def test_dtee_write_decodes_dtc_routing_by_interrupt_source(self):
instruction = mov_b_immediate_to_abs16(0xFF0C, 0x24)
self.assertEqual(instruction.text, "MOV:G.B #H'24, @DTEE")
self.assertEqual(
instruction.comment,
"DTEE = H'24 (SCI1 TXI CPU interrupt; SCI1 RXI DTC enabled; "
"SCI2 TXI DTC enabled; SCI2 RXI CPU interrupt)",
)
def test_dtea_bit_set_names_dtc_enable_source(self):
instruction = bit_op_abs16(0xFF08, 0xC4)
self.assertEqual(instruction.text, "BSET.B #4, @DTEA")
self.assertEqual(instruction.comment, "set irq0 DTC enable (bit 4) of DTEA")
if __name__ == "__main__":
unittest.main()