# Path: h800/instruction.py
# class Instruction:
# class GeneralMasked(Instruction):
# class GeneralUnmasked(Instruction):
# class Peripheral(Instruction):
# class Simulator(Instruction):
# class Scientific(Instruction):
# class Constant(Word):
# class PseudoInstruction(Instruction):
# class AssemblyControl(PseudoInstruction):
#     def __init__(self, opcode, sequence=None, mask=None, a=None, b=None,
#                  c=None, paddr=None, pseudo=False):
#     def _check(self):
#     def value(self):
#     def __init__(self, opcode, sequence, mask):
#     def __init__(self, opcode, sequence, a, b, c):
#     def __init__(self, opcode, paddr):
#     def __init__(self, opcode, sequence):
#     def __init__(self, opcode, sequence, a, b, c):
#     def __init__(self, mnemonic, data):
#     def __init__(self, mnemonic, a, b, c):
#     def __init__(self, mnemonic, a, b, c):


from collections import namedtuple
from h800 import instruction

class ShiftAndSelect(instruction.GeneralUnmasked):

    def __init__(self, sequence, a, b, c):
        super().__init__(opcode=OPCODES["SSL"], sequence=sequence,
                         a=a, b=b, c=c)


class Substitute(instruction.GeneralUnmasked):

    def __init__(self, sequence, a, b, c):
        super().__init__(opcode=OPCODES["SS"], sequence=sequence,
                         a=a, b=b, c=c)


class Extract(instruction.GeneralUnmasked):

    def __init__(self, sequence, a, b, c):
        super().__init__(opcode=OPCODES["EX"], sequence=sequence,
                         a=a, b=b, c=c)


# Peripheral and print.

class ReadForward(instruction.Peripheral):

    def __init__(self, paddr):
        super().__init__(opcode=OPCODES["RF"], paddr=paddr)



# Path: h800/instruction.py
# class Instruction:
# class GeneralMasked(Instruction):
# class GeneralUnmasked(Instruction):
# class Peripheral(Instruction):
# class Simulator(Instruction):
# class Scientific(Instruction):
# class Constant(Word):
# class PseudoInstruction(Instruction):
# class AssemblyControl(PseudoInstruction):
#     def __init__(self, opcode, sequence=None, mask=None, a=None, b=None,
#                  c=None, paddr=None, pseudo=False):
#     def _check(self):
#     def value(self):
#     def __init__(self, opcode, sequence, mask):
#     def __init__(self, opcode, sequence, a, b, c):
#     def __init__(self, opcode, paddr):
#     def __init__(self, opcode, sequence):
#     def __init__(self, opcode, sequence, a, b, c):
#     def __init__(self, mnemonic, data):
#     def __init__(self, mnemonic, a, b, c):
#     def __init__(self, mnemonic, a, b, c):


# Path: h800/instructions.py
from collections import namedtuple
from h800 import instruction


class ShiftAndSelect(instruction.GeneralUnmasked):

    def __init__(self, sequence, a, b, c):
        super().__init__(opcode=OPCODES["SSL"], sequence=sequence,
                         a=a, b=b, c=c)


class Substitute(instruction.GeneralUnmasked):

    def __init__(self, sequence, a, b, c):
        super().__init__(opcode=OPCODES["SS"], sequence=sequence,
                         a=a, b=b, c=c)


class Extract(instruction.GeneralUnmasked):

    def __init__(self, sequence, a, b, c):
        super().__init__(opcode=OPCODES["EX"], sequence=sequence,
                         a=a, b=b, c=c)


# Peripheral and print.

class ReadForward(instruction.Peripheral):

    def __init__(self, paddr):
        super().__init__(opcode=OPCODES["RF"], paddr=paddr)



class ReadBackward(instruction.Peripheral):