code: def load_DragonDosBinary(self, data, strip_padding=True):
          
          data = bytearray(data)
  
          log.debug("Load Dragon DOS Binary Format.")
  
          meta_data = struct.unpack(">BBHHHB", data[:9])
  
          machine_type = meta_data[0]
          if machine_type != 0x55:
              log.error("ERROR: Machine type wrong: is $%02X but should be $55!", machine_type)
  
          self.file_type = meta_data[1]
          self.load_address = meta_data[2]
          self.length = meta_data[3]
          self.exec_address = meta_data[4]
          terminator = meta_data[5]
          if terminator != 0xAA:
              log.error("ERROR: Terminator byte is $%02X but should be $AA!", terminator)
  
          # print("before strip:")
          # print("\n".join(bin2hexline(data, width=16)))
          if strip_padding:
              self.data = data[9:self.length + 9]
          else:
              self.data = data[9:]
          # print("after strip:")
          # print("\n".join(bin2hexline(self.data, width=16)))
  
          log.debug(
              "File type: $%02X Load Address: $%04X Exec Address: $%04X Length: %iBytes",
              self.file_type, self.load_address, self.exec_address, self.length
          )
          if self.length != len(self.data):
              log.error("ERROR: Wrong data size: should be: %i Bytes but is %i Bytes!", self.length, len(self.data))
  
          # log_bytes(self.data, "data in hex: %s", level=logging.DEBUG)
          self.debug2log(level=logging.DEBUG)
docs: Dragon DOS Binary Format
  
          http://dragon32.info/info/binformt.html
  
          Offset:  Type:   Value:
            0       byte    $55           Constant
            1       byte    Filetype
            2:3     word    Load Address
            4:5     word    Length
            6:7     word    Exec Address
            8       byte    $AA           Constant
            9-xxx   byte[]  Data