Updated the applescript documentation for te new framework, and replaced the Eudora example with one that uses Disk Copy (which everyone running MacOS 8 or
higher should have).
diff --git a/Mac/Demo/applescript/Disk_Copy/Special_Events.py b/Mac/Demo/applescript/Disk_Copy/Special_Events.py
new file mode 100644
index 0000000..9538706
--- /dev/null
+++ b/Mac/Demo/applescript/Disk_Copy/Special_Events.py
@@ -0,0 +1,424 @@
+"""Suite Special Events: Commands for mounting Disk Copy images
+Level 1, version 1
+
+Generated from Macintosh HD:Hulpprogramma's:Disk Copy
+AETE/AEUT resource version 1/0, language 0, script 0
+"""
+
+import aetools
+import MacOS
+
+_code = 'ddsk'
+
+class Special_Events_Events:
+
+	_argmap_mount = {
+		'access_mode' : 'Acss',
+		'checksum_verification' : 'VChk',
+		'signature_verification' : 'VSig',
+		'RAM_caching' : 'Cach',
+	}
+
+	def mount(self, _object, _attributes={}, **_arguments):
+		"""mount: Mounts an Disk Copy image as a disk volume
+		Required argument: a reference to the disk image to be mounted
+		Keyword argument access_mode: the access mode for mounted volume (default is "any", i.e. best possible)
+		Keyword argument checksum_verification: Verify the checksum before mounting?
+		Keyword argument signature_verification: Verify the DigiSign signature before mounting?
+		Keyword argument RAM_caching: Cache the disk image in RAM? (if omitted, don't cache)
+		Keyword argument _attributes: AppleEvent attribute dictionary
+		Returns: a reference to mounted disk
+		"""
+		_code = 'ddsk'
+		_subcode = 'Moun'
+
+		aetools.keysubst(_arguments, self._argmap_mount)
+		_arguments['----'] = _object
+
+		aetools.enumsubst(_arguments, 'Acss', _Enum_Acss)
+		aetools.enumsubst(_arguments, 'VChk', _Enum_bool)
+		aetools.enumsubst(_arguments, 'VSig', _Enum_bool)
+		aetools.enumsubst(_arguments, 'Cach', _Enum_bool)
+
+		_reply, _arguments, _attributes = self.send(_code, _subcode,
+				_arguments, _attributes)
+		if _arguments.has_key('errn'):
+			raise aetools.Error, aetools.decodeerror(_arguments)
+		# XXXX Optionally decode result
+		if _arguments.has_key('----'):
+			return _arguments['----']
+
+	_argmap_execute_DiskScript = {
+		'checksum_verification' : 'VChk',
+		'signature_verification' : 'VSig',
+	}
+
+	def execute_DiskScript(self, _object, _attributes={}, **_arguments):
+		"""execute DiskScript: Executes a Disk Copy-specific DiskScript
+		Required argument: a reference to the DiskScript to execute
+		Keyword argument checksum_verification: Should checksums be verified when mounting images referenced in the DiskScript?
+		Keyword argument signature_verification: Should the DigiSign signature of the DiskScript and the images it references be verified?
+		Keyword argument _attributes: AppleEvent attribute dictionary
+		"""
+		_code = 'ddsk'
+		_subcode = 'XEQd'
+
+		aetools.keysubst(_arguments, self._argmap_execute_DiskScript)
+		_arguments['----'] = _object
+
+		aetools.enumsubst(_arguments, 'VChk', _Enum_bool)
+		aetools.enumsubst(_arguments, 'VSig', _Enum_bool)
+
+		_reply, _arguments, _attributes = self.send(_code, _subcode,
+				_arguments, _attributes)
+		if _arguments.has_key('errn'):
+			raise aetools.Error, aetools.decodeerror(_arguments)
+		# XXXX Optionally decode result
+		if _arguments.has_key('----'):
+			return _arguments['----']
+
+	def unmount(self, _object, _attributes={}, **_arguments):
+		"""unmount: Unmount and eject (if necessary) a volume
+		Required argument: a reference to disk to be unmounted (and ejected)
+		Keyword argument _attributes: AppleEvent attribute dictionary
+		"""
+		_code = 'ddsk'
+		_subcode = 'Umnt'
+
+		if _arguments: raise TypeError, 'No optional args expected'
+		_arguments['----'] = _object
+
+
+		_reply, _arguments, _attributes = self.send(_code, _subcode,
+				_arguments, _attributes)
+		if _arguments.has_key('errn'):
+			raise aetools.Error, aetools.decodeerror(_arguments)
+		# XXXX Optionally decode result
+		if _arguments.has_key('----'):
+			return _arguments['----']
+
+	_argmap_create = {
+		'saving_as' : 'SvAs',
+		'logical_blocks' : 'Blks',
+		'zeroing' : 'Zero',
+		'leave_image_mounted' : 'Moun',
+		'filesystem' : 'Fsys',
+	}
+
+	def create(self, _object, _attributes={}, **_arguments):
+		"""create: Create a new Disk Copy document
+		Required argument: the name of the volume to create
+		Keyword argument saving_as: the disk image to be created
+		Keyword argument logical_blocks: the number of logical blocks
+		Keyword argument zeroing: Should all blocks on the disk be set to zero?
+		Keyword argument leave_image_mounted: Should the image be mounted after it is created?
+		Keyword argument filesystem: file system to use (Mac OS Standard/compatible, Mac OS Enhanced)
+		Keyword argument _attributes: AppleEvent attribute dictionary
+		Returns: a reference to newly created disk image (or newly mounted disk)
+		"""
+		_code = 'ddsk'
+		_subcode = 'Crea'
+
+		aetools.keysubst(_arguments, self._argmap_create)
+		_arguments['----'] = _object
+
+		aetools.enumsubst(_arguments, 'SvAs', _Enum_fss_)
+		aetools.enumsubst(_arguments, 'Blks', _Enum_long)
+		aetools.enumsubst(_arguments, 'Zero', _Enum_bool)
+		aetools.enumsubst(_arguments, 'Moun', _Enum_bool)
+		aetools.enumsubst(_arguments, 'Fsys', _Enum_Fsys)
+
+		_reply, _arguments, _attributes = self.send(_code, _subcode,
+				_arguments, _attributes)
+		if _arguments.has_key('errn'):
+			raise aetools.Error, aetools.decodeerror(_arguments)
+		# XXXX Optionally decode result
+		if _arguments.has_key('----'):
+			return _arguments['----']
+
+	def verify_checksum(self, _object, _attributes={}, **_arguments):
+		"""verify checksum: Verify the checksum of a Disk Copy 4.2 or a Disk Copy 6.0 read-only document
+		Required argument: the disk image to be verified
+		Keyword argument _attributes: AppleEvent attribute dictionary
+		Returns: the result of the checksum verification
+		"""
+		_code = 'ddsk'
+		_subcode = 'Vcrc'
+
+		if _arguments: raise TypeError, 'No optional args expected'
+		_arguments['----'] = _object
+
+
+		_reply, _arguments, _attributes = self.send(_code, _subcode,
+				_arguments, _attributes)
+		if _arguments.has_key('errn'):
+			raise aetools.Error, aetools.decodeerror(_arguments)
+		# XXXX Optionally decode result
+		if _arguments.has_key('----'):
+			return _arguments['----']
+
+	def verify_signature(self, _object, _attributes={}, **_arguments):
+		"""verify signature: Verify the DigiSign signature for a Disk Copy document
+		Required argument: the disk image to be verified
+		Keyword argument _attributes: AppleEvent attribute dictionary
+		Returns: Is the DigiSign signature valid?
+		"""
+		_code = 'ddsk'
+		_subcode = 'Vsig'
+
+		if _arguments: raise TypeError, 'No optional args expected'
+		_arguments['----'] = _object
+
+
+		_reply, _arguments, _attributes = self.send(_code, _subcode,
+				_arguments, _attributes)
+		if _arguments.has_key('errn'):
+			raise aetools.Error, aetools.decodeerror(_arguments)
+		# XXXX Optionally decode result
+		if _arguments.has_key('----'):
+			return _arguments['----']
+
+	_argmap_sign_image = {
+		'using_signer' : 'Sinr',
+	}
+
+	def sign_image(self, _object, _attributes={}, **_arguments):
+		"""sign image: Add a DigiSign signature to a Disk Copy document
+		Required argument: the disk image to be signed
+		Keyword argument using_signer: a reference to signer file to use
+		Keyword argument _attributes: AppleEvent attribute dictionary
+		"""
+		_code = 'ddsk'
+		_subcode = 'Asig'
+
+		aetools.keysubst(_arguments, self._argmap_sign_image)
+		_arguments['----'] = _object
+
+		aetools.enumsubst(_arguments, 'Sinr', _Enum_alis)
+
+		_reply, _arguments, _attributes = self.send(_code, _subcode,
+				_arguments, _attributes)
+		if _arguments.has_key('errn'):
+			raise aetools.Error, aetools.decodeerror(_arguments)
+		# XXXX Optionally decode result
+		if _arguments.has_key('----'):
+			return _arguments['----']
+
+	_argmap_create_a_floppy_from = {
+		'signature_verification' : 'VSig',
+		'erase_confirmation' : 'Cfrm',
+		'make_multiple_floppies' : 'Mult',
+	}
+
+	def create_a_floppy_from(self, _object, _attributes={}, **_arguments):
+		"""create a floppy from: create a floppy disk from a Disk Copy document
+		Required argument: the disk image to make a floppy from
+		Keyword argument signature_verification: Should the DigiSign signature be verified before creating a floppy disk?
+		Keyword argument erase_confirmation: Should the user be asked to confirm the erasure of the previous contents of floppy disks?
+		Keyword argument make_multiple_floppies: Should the user be prompted to create multiple floppy disks?
+		Keyword argument _attributes: AppleEvent attribute dictionary
+		"""
+		_code = 'ddsk'
+		_subcode = 'Bfpy'
+
+		aetools.keysubst(_arguments, self._argmap_create_a_floppy_from)
+		_arguments['----'] = _object
+
+		aetools.enumsubst(_arguments, 'VSig', _Enum_bool)
+		aetools.enumsubst(_arguments, 'Cfrm', _Enum_bool)
+		aetools.enumsubst(_arguments, 'Mult', _Enum_bool)
+
+		_reply, _arguments, _attributes = self.send(_code, _subcode,
+				_arguments, _attributes)
+		if _arguments.has_key('errn'):
+			raise aetools.Error, aetools.decodeerror(_arguments)
+		# XXXX Optionally decode result
+		if _arguments.has_key('----'):
+			return _arguments['----']
+
+	_argmap_check_image = {
+		'details' : 'ChDe',
+	}
+
+	def check_image(self, _object, _attributes={}, **_arguments):
+		"""check image: Check the disk image¹s internal data structures for any inconsistencies.  Works on NDIF, Disk Copy 4.2, DART, or DiskSet images.
+		Required argument: the disk image to be verified
+		Keyword argument details: Should the disk image details be displayed?
+		Keyword argument _attributes: AppleEvent attribute dictionary
+		Returns: a record containing a boolean (true/false) value if the image passes consistency tests, and the numbers of warnings and errors
+		"""
+		_code = 'ddsk'
+		_subcode = 'Chek'
+
+		aetools.keysubst(_arguments, self._argmap_check_image)
+		_arguments['----'] = _object
+
+		aetools.enumsubst(_arguments, 'ChDe', _Enum_bool)
+
+		_reply, _arguments, _attributes = self.send(_code, _subcode,
+				_arguments, _attributes)
+		if _arguments.has_key('errn'):
+			raise aetools.Error, aetools.decodeerror(_arguments)
+		# XXXX Optionally decode result
+		if _arguments.has_key('----'):
+			return _arguments['----']
+
+	_argmap_segment_image = {
+		'segment_count' : 'SGCT',
+		'segment_size' : 'SGSZ',
+		'segment_name' : 'SGNM',
+		'image_ID' : 'SGID',
+	}
+
+	def segment_image(self, _object, _attributes={}, **_arguments):
+		"""segment image: Segment a NDIF R/W or R/O image into smaller pieces
+		Required argument: the disk image to be segmented
+		Keyword argument segment_count: the number of image segments to create
+		Keyword argument segment_size: the size of image segments (in blocks) to create
+		Keyword argument segment_name: the root name for each image segment file
+		Keyword argument image_ID: string used to generate a unique image ID to group the segments
+		Keyword argument _attributes: AppleEvent attribute dictionary
+		Returns: a list of references to the image segments created
+		"""
+		_code = 'ddsk'
+		_subcode = 'SGMT'
+
+		aetools.keysubst(_arguments, self._argmap_segment_image)
+		_arguments['----'] = _object
+
+
+		_reply, _arguments, _attributes = self.send(_code, _subcode,
+				_arguments, _attributes)
+		if _arguments.has_key('errn'):
+			raise aetools.Error, aetools.decodeerror(_arguments)
+		# XXXX Optionally decode result
+		if _arguments.has_key('----'):
+			return _arguments['----']
+
+	_argmap_create_SMI = {
+		'source_images' : 'SMI1',
+		'launching_application' : 'SMI2',
+		'launching_document' : 'SMI3',
+		'version_string' : 'SMI4',
+		'checksum_verification' : 'VChk',
+		'signature_verification' : 'VSig',
+		'image_signing' : 'SImg',
+	}
+
+	def create_SMI(self, _object, _attributes={}, **_arguments):
+		"""create SMI: Creates a self-mounting image (SMI) from a list of NDIF disk images
+		Required argument: the self-mounting image to create
+		Keyword argument source_images: a list of references to sources images
+		Keyword argument launching_application: the path to an application to launch
+		Keyword argument launching_document: the path to a document to open
+		Keyword argument version_string: sets the 'vers' 1 resource of the self-mounting image
+		Keyword argument checksum_verification: Should the checksum of the source images be verified before creating the SMI?
+		Keyword argument signature_verification: Should the DigiSign signature of the source images be verified before creating the SMI?
+		Keyword argument image_signing: Should the SMI be given a digital signature when it is created?
+		Keyword argument _attributes: AppleEvent attribute dictionary
+		Returns: a reference to the self-mounting image created
+		"""
+		_code = 'ddsk'
+		_subcode = 'MSMI'
+
+		aetools.keysubst(_arguments, self._argmap_create_SMI)
+		_arguments['----'] = _object
+
+		aetools.enumsubst(_arguments, 'VChk', _Enum_bool)
+		aetools.enumsubst(_arguments, 'VSig', _Enum_bool)
+		aetools.enumsubst(_arguments, 'SImg', _Enum_bool)
+
+		_reply, _arguments, _attributes = self.send(_code, _subcode,
+				_arguments, _attributes)
+		if _arguments.has_key('errn'):
+			raise aetools.Error, aetools.decodeerror(_arguments)
+		# XXXX Optionally decode result
+		if _arguments.has_key('----'):
+			return _arguments['----']
+
+
+class Verify_Checksum_reply_record(aetools.ComponentItem):
+	"""Verify Checksum reply record -  """
+	want = 'Rcrc'
+class validity(aetools.NProperty):
+	"""validity - true if checksum is valid """
+	which = 'Vlid'
+	want = 'bool'
+class expected_checksum(aetools.NProperty):
+	"""expected checksum - checksum value stored in the image header (in hexadecimal) """
+	which = 'crcE'
+	want = 'TEXT'
+class calculated_checksum(aetools.NProperty):
+	"""calculated checksum - checksum value actually calculated (in hexadecimal) """
+	which = 'crcA'
+	want = 'TEXT'
+
+class Check_Image_reply_record(aetools.ComponentItem):
+	"""Check Image reply record -  """
+	want = 'Rchk'
+class consistency(aetools.NProperty):
+	"""consistency - Does the image pass consistency checks? """
+	which = 'Rch1'
+	want = 'bool'
+class error_count(aetools.NProperty):
+	"""error count - the number of errors recorded """
+	which = 'Rch2'
+	want = 'long'
+class warning_count(aetools.NProperty):
+	"""warning count - the number of warnings recorded """
+	which = 'Rch3'
+	want = 'long'
+Verify_Checksum_reply_record._propdict = {
+	'validity' : validity,
+	'expected_checksum' : expected_checksum,
+	'calculated_checksum' : calculated_checksum,
+}
+Verify_Checksum_reply_record._elemdict = {
+}
+Check_Image_reply_record._propdict = {
+	'consistency' : consistency,
+	'error_count' : error_count,
+	'warning_count' : warning_count,
+}
+Check_Image_reply_record._elemdict = {
+}
+_Enum_Acss = {
+	'read_and_write' : 'RdWr',	# read/write access
+	'read_only' : 'Rdxx',	# read-only access
+	'any' : 'Anyx',	# best possible access
+}
+
+_Enum_Fsys = {
+	'Mac_OS_Standard' : 'Fhfs',	# classic HFS file system
+	'compatible_Mac_OS_Extended' : 'Fhf+',	# new HFS+ file system
+}
+
+_Enum_alis = None # XXXX enum alis not found!!
+_Enum_fss_ = None # XXXX enum fss  not found!!
+_Enum_long = None # XXXX enum long not found!!
+_Enum_bool = None # XXXX enum bool not found!!
+
+#
+# Indices of types declared in this module
+#
+_classdeclarations = {
+	'Rchk' : Check_Image_reply_record,
+	'Rcrc' : Verify_Checksum_reply_record,
+}
+
+_propdeclarations = {
+	'crcE' : expected_checksum,
+	'Rch2' : error_count,
+	'crcA' : calculated_checksum,
+	'Rch3' : warning_count,
+	'Vlid' : validity,
+	'Rch1' : consistency,
+}
+
+_compdeclarations = {
+}
+
+_enumdeclarations = {
+	'Acss' : _Enum_Acss,
+	'Fsys' : _Enum_Fsys,
+}
diff --git a/Mac/Demo/applescript/Disk_Copy/Standard_Suite.py b/Mac/Demo/applescript/Disk_Copy/Standard_Suite.py
new file mode 100644
index 0000000..1211ec1
--- /dev/null
+++ b/Mac/Demo/applescript/Disk_Copy/Standard_Suite.py
@@ -0,0 +1,477 @@
+"""Suite Standard Suite: Common terms for most applications
+Level 1, version 1
+
+Generated from Macintosh HD:Hulpprogramma's:Disk Copy
+AETE/AEUT resource version 1/0, language 0, script 0
+"""
+
+import aetools
+import MacOS
+
+_code = 'Core'
+
+class Standard_Suite_Events:
+
+	_argmap_save = {
+		'_in' : 'kfil',
+		'using_format' : 'SvAs',
+		'checksum_verification' : 'VChk',
+		'signature_verification' : 'VSig',
+		'image_signing' : 'SImg',
+		'leave_image_mounted' : 'Moun',
+		'percent_free_space' : 'Slop',
+		'logical_blocks' : 'Blks',
+		'zeroing' : 'Zero',
+	}
+
+	def save(self, _object, _attributes={}, **_arguments):
+		"""save: Save an object
+		Required argument: the source object
+		Keyword argument _in: the target object
+		Keyword argument using_format: the format for the target
+		Keyword argument checksum_verification: Should the checksum be verified before saving?
+		Keyword argument signature_verification: Should the DigiSign signature be verified before saving?
+		Keyword argument image_signing: Should the image be signed?
+		Keyword argument leave_image_mounted: Should the image be mounted after saving?
+		Keyword argument percent_free_space: percent free space to reserve (for image folder operation, 0-255%)
+		Keyword argument logical_blocks: number of logical blocks in the image (for image folder operation)
+		Keyword argument zeroing: Should all the blocks in the image be set to zeros? (for image folder operation)
+		Keyword argument _attributes: AppleEvent attribute dictionary
+		Returns: the result of the save operation
+		"""
+		_code = 'core'
+		_subcode = 'save'
+
+		aetools.keysubst(_arguments, self._argmap_save)
+		_arguments['----'] = _object
+
+		aetools.enumsubst(_arguments, 'kfil', _Enum_obj_)
+		aetools.enumsubst(_arguments, 'SvAs', _Enum_SvAs)
+		aetools.enumsubst(_arguments, 'VChk', _Enum_bool)
+		aetools.enumsubst(_arguments, 'VSig', _Enum_bool)
+		aetools.enumsubst(_arguments, 'SImg', _Enum_bool)
+		aetools.enumsubst(_arguments, 'Moun', _Enum_bool)
+		aetools.enumsubst(_arguments, 'Slop', _Enum_long)
+		aetools.enumsubst(_arguments, 'Blks', _Enum_long)
+		aetools.enumsubst(_arguments, 'Zero', _Enum_bool)
+
+		_reply, _arguments, _attributes = self.send(_code, _subcode,
+				_arguments, _attributes)
+		if _arguments.has_key('errn'):
+			raise aetools.Error, aetools.decodeerror(_arguments)
+		# XXXX Optionally decode result
+		if _arguments.has_key('----'):
+			return _arguments['----']
+
+	def do_script(self, _object, _attributes={}, **_arguments):
+		"""do script: Execute an attached script located in the folder "Scripts"
+		Required argument: the script to be executed
+		Keyword argument _attributes: AppleEvent attribute dictionary
+		"""
+		_code = 'core'
+		_subcode = 'dosc'
+
+		if _arguments: raise TypeError, 'No optional args expected'
+		_arguments['----'] = _object
+
+
+		_reply, _arguments, _attributes = self.send(_code, _subcode,
+				_arguments, _attributes)
+		if _arguments.has_key('errn'):
+			raise aetools.Error, aetools.decodeerror(_arguments)
+		# XXXX Optionally decode result
+		if _arguments.has_key('----'):
+			return _arguments['----']
+
+
+class application(aetools.ComponentItem):
+	"""application - The Disk Copy application """
+	want = 'capp'
+class version(aetools.NProperty):
+	"""version - the version of this application """
+	which = 'vers'
+	want = 'vers'
+class name(aetools.NProperty):
+	"""name - the name of this application """
+	which = 'pnam'
+	want = 'TEXT'
+class comment(aetools.NProperty):
+	"""comment - the comment associated with the application """
+	which = 'comt'
+	want = 'TEXT'
+class driver_version(aetools.NProperty):
+	"""driver version - the version of the disk image driver """
+	which = 'dVer'
+	want = 'vers'
+class nonejectable_mode(aetools.NProperty):
+	"""nonejectable mode - Should mounted images be non-ejectable? """
+	which = 'otto'
+	want = 'bool'
+class save_log_file(aetools.NProperty):
+	"""save log file - Should the log file be saved on disk? """
+	which = 'PSaL'
+	want = 'bool'
+class use_speech(aetools.NProperty):
+	"""use speech - Should Disk Copy use spoken feedback? """
+	which = 'PTlk'
+	want = 'bool'
+class smart_Save_As(aetools.NProperty):
+	"""smart Save As - Should the Save As... dialog box automatically go to the right folder? """
+	which = 'PSSP'
+	want = 'bool'
+class checksum_verification(aetools.NProperty):
+	"""checksum verification - Should image checksums be verified? """
+	which = 'PVeC'
+	want = 'bool'
+class signature_verification(aetools.NProperty):
+	"""signature verification - Should digital signatures be verified? """
+	which = 'PVeS'
+	want = 'bool'
+class exclude_DiskScripts(aetools.NProperty):
+	"""exclude DiskScripts - Should images referenced in DiskScripts/DiskSets be excluded from verification? """
+	which = 'PExD'
+	want = 'bool'
+class exclude_remote_images(aetools.NProperty):
+	"""exclude remote images - Should images that are located on network volumes be excluded from verification? """
+	which = 'PExR'
+	want = 'bool'
+class image_signing(aetools.NProperty):
+	"""image signing - Should images be signed with a digital signature? """
+	which = 'PSiI'
+	want = 'bool'
+class leave_image_mounted(aetools.NProperty):
+	"""leave image mounted - Should images be mounted after they are created? """
+	which = 'PMoA'
+	want = 'bool'
+class erase_confirmation(aetools.NProperty):
+	"""erase confirmation - Should the user be required to confirm commands that erase disks? """
+	which = 'PCoE'
+	want = 'bool'
+class zeroing(aetools.NProperty):
+	"""zeroing - Should all blocks of a new image be set to zero? """
+	which = 'PZeB'
+	want = 'bool'
+class default_create_size(aetools.NProperty):
+	"""default create size - the default size for a new image, in blocks (512 bytes per block) """
+	which = 'PDeS'
+	want = 'long'
+class default_create_name(aetools.NProperty):
+	"""default create name - the default volume name for a new image """
+	which = 'PDeN'
+	want = 'TEXT'
+class make_multiple_floppies(aetools.NProperty):
+	"""make multiple floppies - Should the user be prompted to make multiple floppy disk images at a time? """
+	which = 'PBuM'
+	want = 'bool'
+class auto_image_upon_insert(aetools.NProperty):
+	"""auto image upon insert - Should a newly-inserted disk automatically be processed into an image? """
+	which = 'Paim'
+	want = 'bool'
+class eject_after_auto_image(aetools.NProperty):
+	"""eject after auto image - Should auto-imaged disks be ejected afterwards? """
+	which = 'Pejc'
+	want = 'bool'
+class auto_copy_upon_floppy_insert(aetools.NProperty):
+	"""auto copy upon floppy insert - Instead of auto-imaging, should newly-inserted floppy disks be copied? """
+	which = 'Pcpf'
+	want = 'bool'
+class volume_suffix(aetools.NProperty):
+	"""volume suffix - the default volume name suffix """
+	which = 'PDiE'
+	want = 'TEXT'
+class image_suffix(aetools.NProperty):
+	"""image suffix - the default image name suffix """
+	which = 'PImE'
+	want = 'TEXT'
+class default_file_system(aetools.NProperty):
+	"""default file system - the default file system type for new blank images """
+	which = 'Pfsy'
+	want = 'Fsys'
+class default_image_format(aetools.NProperty):
+	"""default image format - the default image file format """
+	which = 'Pdfm'
+	want = 'SvAs'
+
+class disk(aetools.ComponentItem):
+	"""disk - A mounted volume """
+	want = 'Disk'
+
+name = name
+
+comment = comment
+class locked(aetools.NProperty):
+	"""locked - Is the disk locked? """
+	which = 'islk'
+	want = 'bool'
+class creation_date(aetools.NProperty):
+	"""creation date - the creation date of disk """
+	which = 'ascd'
+	want = 'ldt '
+class modification_date(aetools.NProperty):
+	"""modification date - the modification date of disk """
+	which = 'asmo'
+	want = 'ldt '
+class crc32_checksum(aetools.NProperty):
+	"""crc32 checksum - the crc-32 checksum of the disk """
+	which = 'Xcrc'
+	want = 'TEXT'
+class disk_copy_4_2e_2_checksum(aetools.NProperty):
+	"""disk copy 4.2 checksum - the Disk Copy 4.2 checksum of the disk """
+	which = 'Xc42'
+	want = 'TEXT'
+class block_count(aetools.NProperty):
+	"""block count - the number of blocks on disk """
+	which = 'Xblk'
+	want = 'long'
+class file_system(aetools.NProperty):
+	"""file system - the file system used on disk """
+	which = 'Xfsi'
+	want = 'TEXT'
+
+class folder(aetools.ComponentItem):
+	"""folder - A folder or directory on a disk """
+	want = 'Fold'
+
+name = name
+
+comment = comment
+
+creation_date = creation_date
+
+modification_date = modification_date
+
+class disk_image(aetools.ComponentItem):
+	"""disk image - A disk image file """
+	want = 'DImg'
+
+name = name
+
+comment = comment
+
+locked = locked
+
+creation_date = creation_date
+
+modification_date = modification_date
+class file_format(aetools.NProperty):
+	"""file format - the format of the disk image file """
+	which = 'Ifmt'
+	want = 'TEXT'
+class signed(aetools.NProperty):
+	"""signed - Does the disk image have a DigiSign signature? """
+	which = 'Isin'
+	want = 'bool'
+class compressed(aetools.NProperty):
+	"""compressed - Is the disk image compressed? """
+	which = 'Icom'
+	want = 'bool'
+class segmented(aetools.NProperty):
+	"""segmented - Is the disk image segmented? """
+	which = 'Iseg'
+	want = 'bool'
+class segments(aetools.NProperty):
+	"""segments - a list of references to other segments that make up a complete image """
+	which = 'Isg#'
+	want = 'fss '
+class disk_name(aetools.NProperty):
+	"""disk name - the name of the disk this image represents """
+	which = 'Idnm'
+	want = 'TEXT'
+
+crc32_checksum = crc32_checksum
+
+disk_copy_4_2e_2_checksum = disk_copy_4_2e_2_checksum
+
+block_count = block_count
+
+file_system = file_system
+class data_fork_size(aetools.NProperty):
+	"""data fork size - the size (in bytes) of the data fork of the disk image """
+	which = 'Idfk'
+	want = 'long'
+class resource_fork_size(aetools.NProperty):
+	"""resource fork size - the size (in bytes) of the resource fork of the disk image """
+	which = 'Irfk'
+	want = 'long'
+
+class Save_reply_record(aetools.ComponentItem):
+	"""Save reply record - Result from the save operation """
+	want = 'cpyR'
+class resulting_target_object(aetools.NProperty):
+	"""resulting target object - a reference to the target object after it has been saved """
+	which = 'rcpO'
+	want = 'obj '
+class copy_type(aetools.NProperty):
+	"""copy type - the way in which the target object was saved """
+	which = 'rcpT'
+	want = 'rcpT'
+application._propdict = {
+	'version' : version,
+	'name' : name,
+	'comment' : comment,
+	'driver_version' : driver_version,
+	'nonejectable_mode' : nonejectable_mode,
+	'save_log_file' : save_log_file,
+	'use_speech' : use_speech,
+	'smart_Save_As' : smart_Save_As,
+	'checksum_verification' : checksum_verification,
+	'signature_verification' : signature_verification,
+	'exclude_DiskScripts' : exclude_DiskScripts,
+	'exclude_remote_images' : exclude_remote_images,
+	'image_signing' : image_signing,
+	'leave_image_mounted' : leave_image_mounted,
+	'erase_confirmation' : erase_confirmation,
+	'zeroing' : zeroing,
+	'default_create_size' : default_create_size,
+	'default_create_name' : default_create_name,
+	'make_multiple_floppies' : make_multiple_floppies,
+	'auto_image_upon_insert' : auto_image_upon_insert,
+	'eject_after_auto_image' : eject_after_auto_image,
+	'auto_copy_upon_floppy_insert' : auto_copy_upon_floppy_insert,
+	'volume_suffix' : volume_suffix,
+	'image_suffix' : image_suffix,
+	'default_file_system' : default_file_system,
+	'default_image_format' : default_image_format,
+}
+application._elemdict = {
+}
+disk._propdict = {
+	'name' : name,
+	'comment' : comment,
+	'locked' : locked,
+	'creation_date' : creation_date,
+	'modification_date' : modification_date,
+	'crc32_checksum' : crc32_checksum,
+	'disk_copy_4_2e_2_checksum' : disk_copy_4_2e_2_checksum,
+	'block_count' : block_count,
+	'file_system' : file_system,
+}
+disk._elemdict = {
+}
+folder._propdict = {
+	'name' : name,
+	'comment' : comment,
+	'creation_date' : creation_date,
+	'modification_date' : modification_date,
+}
+folder._elemdict = {
+}
+disk_image._propdict = {
+	'name' : name,
+	'comment' : comment,
+	'locked' : locked,
+	'creation_date' : creation_date,
+	'modification_date' : modification_date,
+	'file_format' : file_format,
+	'signed' : signed,
+	'compressed' : compressed,
+	'segmented' : segmented,
+	'segments' : segments,
+	'disk_name' : disk_name,
+	'crc32_checksum' : crc32_checksum,
+	'disk_copy_4_2e_2_checksum' : disk_copy_4_2e_2_checksum,
+	'block_count' : block_count,
+	'file_system' : file_system,
+	'data_fork_size' : data_fork_size,
+	'resource_fork_size' : resource_fork_size,
+}
+disk_image._elemdict = {
+}
+Save_reply_record._propdict = {
+	'resulting_target_object' : resulting_target_object,
+	'copy_type' : copy_type,
+}
+Save_reply_record._elemdict = {
+}
+_Enum_UIAc = {
+	'never_interact' : 'eNvr',	# Don¹t allow any interaction at all
+	'interact_with_self' : 'eInS',	# Only allow interaction from internal events
+	'interact_with_local' : 'eInL',	# Allow interaction from any event originating on this machine
+	'interact_with_all' : 'eInA',	# Allow interaction from network events
+}
+
+_Enum_SvAs = {
+	'NDIF_RW' : 'RdWr',	# read/write NDIF disk image
+	'NDIF_RO' : 'Rdxx',	# read-only NDIF disk image
+	'NDIF_Compressed' : 'ROCo',	# compressed NDIF disk image
+	'Disk_Copy_4_2e_2' : 'DC42',	# Disk Copy 4.2 disk image
+}
+
+_Enum_rcpT = {
+	'block_disk_copy' : 'cpBl',	# block-by-block disk-level copy
+	'files_and_file_ID_copy' : 'cpID',	# all files including desktop databases and file ID¹s
+	'files_and_desktop_info' : 'cpDT',	# all files and most desktop information
+	'files_only' : 'cpFI',	# all files but no desktop information
+	'disk_image_conversion' : 'cpCV',	# disk image format conversion
+	'disk_image_creation' : 'cpCR',	# disk image creation
+}
+
+_Enum_long = None # XXXX enum long not found!!
+_Enum_bool = None # XXXX enum bool not found!!
+_Enum_obj_ = None # XXXX enum obj  not found!!
+
+#
+# Indices of types declared in this module
+#
+_classdeclarations = {
+	'DImg' : disk_image,
+	'capp' : application,
+	'Disk' : disk,
+	'Fold' : folder,
+	'cpyR' : Save_reply_record,
+}
+
+_propdeclarations = {
+	'Xcrc' : crc32_checksum,
+	'PDeS' : default_create_size,
+	'Idnm' : disk_name,
+	'PSSP' : smart_Save_As,
+	'Pcpf' : auto_copy_upon_floppy_insert,
+	'pnam' : name,
+	'Isin' : signed,
+	'otto' : nonejectable_mode,
+	'PExD' : exclude_DiskScripts,
+	'Iseg' : segmented,
+	'islk' : locked,
+	'asmo' : modification_date,
+	'PTlk' : use_speech,
+	'Pfsy' : default_file_system,
+	'PVeC' : checksum_verification,
+	'Xc42' : disk_copy_4_2e_2_checksum,
+	'rcpO' : resulting_target_object,
+	'Paim' : auto_image_upon_insert,
+	'comt' : comment,
+	'PCoE' : erase_confirmation,
+	'dVer' : driver_version,
+	'PDeN' : default_create_name,
+	'PBuM' : make_multiple_floppies,
+	'rcpT' : copy_type,
+	'PDiE' : volume_suffix,
+	'Ifmt' : file_format,
+	'Pdfm' : default_image_format,
+	'ascd' : creation_date,
+	'Pejc' : eject_after_auto_image,
+	'PZeB' : zeroing,
+	'PExR' : exclude_remote_images,
+	'PImE' : image_suffix,
+	'PVeS' : signature_verification,
+	'PSaL' : save_log_file,
+	'Xblk' : block_count,
+	'PMoA' : leave_image_mounted,
+	'Isg#' : segments,
+	'Irfk' : resource_fork_size,
+	'Icom' : compressed,
+	'Xfsi' : file_system,
+	'Idfk' : data_fork_size,
+	'vers' : version,
+	'PSiI' : image_signing,
+}
+
+_compdeclarations = {
+}
+
+_enumdeclarations = {
+	'SvAs' : _Enum_SvAs,
+	'UIAc' : _Enum_UIAc,
+	'rcpT' : _Enum_rcpT,
+}
diff --git a/Mac/Demo/applescript/Disk_Copy/Utility_Events.py b/Mac/Demo/applescript/Disk_Copy/Utility_Events.py
new file mode 100644
index 0000000..edac8f4
--- /dev/null
+++ b/Mac/Demo/applescript/Disk_Copy/Utility_Events.py
@@ -0,0 +1,213 @@
+"""Suite Utility Events: Commands that allow the user to select Disk Copy files
+Level 1, version 1
+
+Generated from Macintosh HD:Hulpprogramma's:Disk Copy
+AETE/AEUT resource version 1/0, language 0, script 0
+"""
+
+import aetools
+import MacOS
+
+_code = 'ddsk'
+
+class Utility_Events_Events:
+
+	_argmap_select_disk_image = {
+		'with_prompt' : 'SELp',
+	}
+
+	def select_disk_image(self, _no_object=None, _attributes={}, **_arguments):
+		"""select disk image: Prompt the user to select a disk image
+		Keyword argument with_prompt: the prompt string to be displayed
+		Keyword argument _attributes: AppleEvent attribute dictionary
+		Returns: a reference to a disk image
+		"""
+		_code = 'UTIL'
+		_subcode = 'SEL1'
+
+		aetools.keysubst(_arguments, self._argmap_select_disk_image)
+		if _no_object != None: raise TypeError, 'No direct arg expected'
+
+		aetools.enumsubst(_arguments, 'SELp', _Enum_TEXT)
+
+		_reply, _arguments, _attributes = self.send(_code, _subcode,
+				_arguments, _attributes)
+		if _arguments.has_key('errn'):
+			raise aetools.Error, aetools.decodeerror(_arguments)
+		# XXXX Optionally decode result
+		if _arguments.has_key('----'):
+			return _arguments['----']
+
+	_argmap_select_DiskScript = {
+		'with_prompt' : 'SELp',
+	}
+
+	def select_DiskScript(self, _no_object=None, _attributes={}, **_arguments):
+		"""select DiskScript: Prompt the user to select a DiskScript
+		Keyword argument with_prompt: the prompt string to be displayed
+		Keyword argument _attributes: AppleEvent attribute dictionary
+		Returns: a reference to a DiskScript
+		"""
+		_code = 'UTIL'
+		_subcode = 'SEL2'
+
+		aetools.keysubst(_arguments, self._argmap_select_DiskScript)
+		if _no_object != None: raise TypeError, 'No direct arg expected'
+
+		aetools.enumsubst(_arguments, 'SELp', _Enum_TEXT)
+
+		_reply, _arguments, _attributes = self.send(_code, _subcode,
+				_arguments, _attributes)
+		if _arguments.has_key('errn'):
+			raise aetools.Error, aetools.decodeerror(_arguments)
+		# XXXX Optionally decode result
+		if _arguments.has_key('----'):
+			return _arguments['----']
+
+	_argmap_select_disk_image_or_DiskScript = {
+		'with_prompt' : 'SELp',
+	}
+
+	def select_disk_image_or_DiskScript(self, _no_object=None, _attributes={}, **_arguments):
+		"""select disk image or DiskScript: Prompt the user to select a disk image or DiskScript
+		Keyword argument with_prompt: the prompt string to be displayed
+		Keyword argument _attributes: AppleEvent attribute dictionary
+		Returns: a reference to disk image or a DiskScript
+		"""
+		_code = 'UTIL'
+		_subcode = 'SEL3'
+
+		aetools.keysubst(_arguments, self._argmap_select_disk_image_or_DiskScript)
+		if _no_object != None: raise TypeError, 'No direct arg expected'
+
+		aetools.enumsubst(_arguments, 'SELp', _Enum_TEXT)
+
+		_reply, _arguments, _attributes = self.send(_code, _subcode,
+				_arguments, _attributes)
+		if _arguments.has_key('errn'):
+			raise aetools.Error, aetools.decodeerror(_arguments)
+		# XXXX Optionally decode result
+		if _arguments.has_key('----'):
+			return _arguments['----']
+
+	_argmap_select_floppy_disk_image = {
+		'with_prompt' : 'SELp',
+	}
+
+	def select_floppy_disk_image(self, _no_object=None, _attributes={}, **_arguments):
+		"""select floppy disk image: Prompt the user to select a floppy disk image
+		Keyword argument with_prompt: the prompt string to be displayed
+		Keyword argument _attributes: AppleEvent attribute dictionary
+		Returns: a reference to a floppy disk image
+		"""
+		_code = 'UTIL'
+		_subcode = 'SEL4'
+
+		aetools.keysubst(_arguments, self._argmap_select_floppy_disk_image)
+		if _no_object != None: raise TypeError, 'No direct arg expected'
+
+		aetools.enumsubst(_arguments, 'SELp', _Enum_TEXT)
+
+		_reply, _arguments, _attributes = self.send(_code, _subcode,
+				_arguments, _attributes)
+		if _arguments.has_key('errn'):
+			raise aetools.Error, aetools.decodeerror(_arguments)
+		# XXXX Optionally decode result
+		if _arguments.has_key('----'):
+			return _arguments['----']
+
+	_argmap_select_disk = {
+		'with_prompt' : 'SELp',
+	}
+
+	def select_disk(self, _no_object=None, _attributes={}, **_arguments):
+		"""select disk: Prompt the user to select a disk volume
+		Keyword argument with_prompt: the prompt string to be displayed
+		Keyword argument _attributes: AppleEvent attribute dictionary
+		Returns: a reference to the disk
+		"""
+		_code = 'UTIL'
+		_subcode = 'SEL5'
+
+		aetools.keysubst(_arguments, self._argmap_select_disk)
+		if _no_object != None: raise TypeError, 'No direct arg expected'
+
+		aetools.enumsubst(_arguments, 'SELp', _Enum_TEXT)
+
+		_reply, _arguments, _attributes = self.send(_code, _subcode,
+				_arguments, _attributes)
+		if _arguments.has_key('errn'):
+			raise aetools.Error, aetools.decodeerror(_arguments)
+		# XXXX Optionally decode result
+		if _arguments.has_key('----'):
+			return _arguments['----']
+
+	_argmap_select_folder = {
+		'with_prompt' : 'SELp',
+	}
+
+	def select_folder(self, _no_object=None, _attributes={}, **_arguments):
+		"""select folder: Prompt the user to select a folder
+		Keyword argument with_prompt: the prompt string to be displayed
+		Keyword argument _attributes: AppleEvent attribute dictionary
+		Returns: a reference to the folder
+		"""
+		_code = 'UTIL'
+		_subcode = 'SEL6'
+
+		aetools.keysubst(_arguments, self._argmap_select_folder)
+		if _no_object != None: raise TypeError, 'No direct arg expected'
+
+		aetools.enumsubst(_arguments, 'SELp', _Enum_TEXT)
+
+		_reply, _arguments, _attributes = self.send(_code, _subcode,
+				_arguments, _attributes)
+		if _arguments.has_key('errn'):
+			raise aetools.Error, aetools.decodeerror(_arguments)
+		# XXXX Optionally decode result
+		if _arguments.has_key('----'):
+			return _arguments['----']
+
+	_argmap_log = {
+		'time_stamp' : 'TSMP',
+	}
+
+	def log(self, _object, _attributes={}, **_arguments):
+		"""log: Add a string to the log window
+		Required argument: the string to add to the log window
+		Keyword argument time_stamp: Should the log entry be time-stamped? (false if not supplied)
+		Keyword argument _attributes: AppleEvent attribute dictionary
+		"""
+		_code = 'UTIL'
+		_subcode = 'LOG '
+
+		aetools.keysubst(_arguments, self._argmap_log)
+		_arguments['----'] = _object
+
+		aetools.enumsubst(_arguments, 'TSMP', _Enum_bool)
+
+		_reply, _arguments, _attributes = self.send(_code, _subcode,
+				_arguments, _attributes)
+		if _arguments.has_key('errn'):
+			raise aetools.Error, aetools.decodeerror(_arguments)
+		# XXXX Optionally decode result
+		if _arguments.has_key('----'):
+			return _arguments['----']
+
+_Enum_TEXT = None # XXXX enum TEXT not found!!
+_Enum_bool = None # XXXX enum bool not found!!
+
+#
+# Indices of types declared in this module
+#
+_classdeclarations = {
+}
+
+_propdeclarations = {
+}
+
+_compdeclarations = {
+}
+
+_enumdeclarations = {
+}
diff --git a/Mac/Demo/applescript/Disk_Copy/__init__.py b/Mac/Demo/applescript/Disk_Copy/__init__.py
new file mode 100644
index 0000000..b814056
--- /dev/null
+++ b/Mac/Demo/applescript/Disk_Copy/__init__.py
@@ -0,0 +1,36 @@
+"""
+Package generated from Macintosh HD:Hulpprogramma's:Disk Copy
+Resource aete resid 0 
+"""
+import aetools
+Error = aetools.Error
+import Standard_Suite
+import Special_Events
+import Utility_Events
+
+
+_code_to_module = {
+	'Core' : Standard_Suite,
+	'ddsk' : Special_Events,
+	'ddsk' : Utility_Events,
+}
+
+
+
+_code_to_fullname = {
+	'Core' : ('Disk_Copy.Standard_Suite', 'Standard_Suite'),
+	'ddsk' : ('Disk_Copy.Special_Events', 'Special_Events'),
+	'ddsk' : ('Disk_Copy.Utility_Events', 'Utility_Events'),
+}
+
+from Standard_Suite import *
+from Special_Events import *
+from Utility_Events import *
+
+
+class Disk_Copy(Standard_Suite_Events,
+		Special_Events_Events,
+		Utility_Events_Events,
+		aetools.TalkTo):
+	_signature = 'ddsk'
+
diff --git a/Mac/Demo/applescript/makedisk.py b/Mac/Demo/applescript/makedisk.py
new file mode 100644
index 0000000..3016964
--- /dev/null
+++ b/Mac/Demo/applescript/makedisk.py
@@ -0,0 +1,15 @@
+import Disk_Copy
+import macfs
+import sys
+
+talker = Disk_Copy.Disk_Copy(start=1)
+talker.activate()
+filespec = macfs.FSSpec('my disk image.img')
+try:
+	objref = talker.create('my disk image', saving_as=filespec, leave_image_mounted=1)
+except Disk_Copy.Error, arg:
+	print "ERROR: my disk image:", arg
+else:
+	print 'objref=', objref
+print 'Type return to exit-'
+sys.stdin.readline()