Coverage for MC6809/core/memory_info.py: 10%
39 statements
« prev ^ index » next coverage.py v7.2.1, created at 2023-03-06 19:50 +0100
« prev ^ index » next coverage.py v7.2.1, created at 2023-03-06 19:50 +0100
1#!/usr/bin/env python
3"""
4 DragonPy - base memory info
5 ~~~~~~~~~~~~~~~~~~~~~~~~~~~
7 :created: 2013 by Jens Diemer - www.jensdiemer.de
8 :copyleft: 2013 by the MC6809 team, see AUTHORS for more details.
9 :license: GNU GPL v3 or above, see LICENSE for more details.
10"""
13import sys
16class BaseMemoryInfo:
17 def __init__(self, out_func):
18 self.out_func = out_func
20 def get_shortest(self, addr):
21 shortest = None
22 size = sys.maxsize
23 for start, end, txt in self.MEM_INFO:
24 if not start <= addr <= end:
25 continue
27 current_size = abs(end - start)
28 if current_size < size:
29 size = current_size
30 shortest = start, end, txt
32 if shortest is None:
33 return f"${addr:x}: UNKNOWN"
35 start, end, txt = shortest
36 if start == end:
37 return f"${addr:x}: {txt}"
38 else:
39 return f"${addr:x}: ${start:x}-${end:x} - {txt}"
41 def __call__(self, addr, info="", shortest=True):
42 if shortest:
43 mem_info = self.get_shortest(addr)
44 if info:
45 self.out_func(f"{info}: {mem_info}")
46 else:
47 self.out_func(mem_info)
48 return
50 mem_info = []
51 for start, end, txt in self.MEM_INFO:
52 if start <= addr <= end:
53 mem_info.append(
54 (start, end, txt)
55 )
57 if not mem_info:
58 self.out_func(f"{info} ${addr:x}: UNKNOWN")
59 else:
60 self.out_func(f"{info} ${addr:x}:")
61 for start, end, txt in mem_info:
62 if start == end:
63 self.out_func(f" * ${start:x} - {txt}")
64 else:
65 self.out_func(f" * ${start:x}-${end:x} - {txt}")