# Path: skoolkit/components.py
# def get_component(name, *args):
#     """Return a component declared in the ``[skoolkit]`` section of
#     `skoolkit.ini`.
# 
#     :param name: The component name.
#     :param args: Arguments passed to the component's constructor.
#     """
#     obj = get_object(get_value(name))
#     if callable(obj):
#         return obj(*args)
#     return obj
# 
# Path: skoolkit/ctlparser.py
# DEFAULT_BASE = 'n'


from skoolkit.components import get_component
from skoolkit.ctlparser import DEFAULT_BASE

        :param start: The start address.
        :param end: The end address.
        :param sublengths: Sequence of sublength identifiers.
        :return: A list of tuples of the form ``(address, operation, bytes)``.
        """
        if sublengths[0][0]:
            return self._defw_lines(start, end, sublengths)
        instructions = []
        size, base = self.defw_size * 2, sublengths[0][1]
        for address in range(start, end, size):
            if address + size > end:
                size = end - address
                if size % 2:
                    size += 1
            instructions.extend(self._defw_lines(address, address + size, ((size, base),)))
        return instructions

    # Component API
    def defs_range(self, start, end, sublengths):
        """Produce a sequence of DEFS statements for an address range.

        :param start: The start address.
        :param end: The end address.
        :param sublengths: Sequence of sublength identifiers.
        :return: A list of tuples of the form ``(address, operation, bytes)``.
        """
        data = self.snapshot[start:end]
        values = set(data)
        if len(values) > 1:

# Path: skoolkit/components.py
# def get_component(name, *args):
#     """Return a component declared in the ``[skoolkit]`` section of
#     `skoolkit.ini`.
# 
#     :param name: The component name.
#     :param args: Arguments passed to the component's constructor.
#     """
#     obj = get_object(get_value(name))
#     if callable(obj):
#         return obj(*args)
#     return obj
# 
# Path: skoolkit/ctlparser.py
# DEFAULT_BASE = 'n'


# Path: skoolkit/disassembler.py
from skoolkit.components import get_component
from skoolkit.ctlparser import DEFAULT_BASE


        :param start: The start address.
        :param end: The end address.
        :param sublengths: Sequence of sublength identifiers.
        :return: A list of tuples of the form ``(address, operation, bytes)``.
        """
        if sublengths[0][0]:
            return self._defw_lines(start, end, sublengths)
        instructions = []
        size, base = self.defw_size * 2, sublengths[0][1]
        for address in range(start, end, size):
            if address + size > end:
                size = end - address
                if size % 2:
                    size += 1
            instructions.extend(self._defw_lines(address, address + size, ((size, base),)))
        return instructions

    # Component API
    def defs_range(self, start, end, sublengths):
        """Produce a sequence of DEFS statements for an address range.

        :param start: The start address.
        :param end: The end address.
        :param sublengths: Sequence of sublength identifiers.
        :return: A list of tuples of the form ``(address, operation, bytes)``.
        """
        data = self.snapshot[start:end]
        values = set(data)
        if len(values) > 1:

            return self.defb_range(start, end, ((0, DEFAULT_BASE),))